thunar: improvements (close #10306)
Add the possibility to specify plugin set to be used as overridable `thunar` derivation argument. New nixos config attribute: `services.xserver.desktopManager.xfce.thunarPlugins` that allows user to specify plugins in the context of nixos. Tests: - With and without plugins. - Using the nixos attributes.
This commit is contained in:
parent
b2409581f8
commit
662bbb526c
|
@ -18,6 +18,14 @@ in
|
||||||
description = "Enable the Xfce desktop environment.";
|
description = "Enable the Xfce desktop environment.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
services.xserver.desktopManager.xfce.thunarPlugins = mkOption {
|
||||||
|
default = [];
|
||||||
|
type = types.listOf types.package;
|
||||||
|
example = literalExample "[ pkgs.xfce.thunar-archive-plugin ]";
|
||||||
|
description = ''
|
||||||
|
A list of plugin that should be installed with Thunar.
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -49,7 +57,7 @@ in
|
||||||
pkgs.xfce.mousepad
|
pkgs.xfce.mousepad
|
||||||
pkgs.xfce.ristretto
|
pkgs.xfce.ristretto
|
||||||
pkgs.xfce.terminal
|
pkgs.xfce.terminal
|
||||||
pkgs.xfce.thunar
|
(pkgs.xfce.thunar.override { thunarPlugins = cfg.thunarPlugins; })
|
||||||
pkgs.xfce.xfce4icontheme
|
pkgs.xfce.xfce4icontheme
|
||||||
pkgs.xfce.xfce4panel
|
pkgs.xfce.xfce4panel
|
||||||
pkgs.xfce.xfce4session
|
pkgs.xfce.xfce4session
|
||||||
|
|
38
pkgs/desktops/xfce/core/thunar-build.nix
Normal file
38
pkgs/desktops/xfce/core/thunar-build.nix
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
{ stdenv, fetchurl, pkgconfig, intltool
|
||||||
|
, gtk, dbus_glib, libstartup_notification, libnotify, libexif, pcre, udev
|
||||||
|
, exo, libxfce4util, xfconf, xfce4panel
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
p_name = "thunar";
|
||||||
|
ver_maj = "1.6";
|
||||||
|
ver_min = "10";
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/Thunar-${ver_maj}.${ver_min}.tar.bz2";
|
||||||
|
sha256 = "7e9d24067268900e5e44d3325e60a1a2b2f8f556ec238ec12574fbea15fdee8a";
|
||||||
|
};
|
||||||
|
|
||||||
|
name = "${p_name}-build-${ver_maj}.${ver_min}";
|
||||||
|
|
||||||
|
patches = [ ./thunarx_plugins_directory.patch ];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
pkgconfig intltool
|
||||||
|
gtk dbus_glib libstartup_notification libnotify libexif pcre udev
|
||||||
|
exo libxfce4util xfconf xfce4panel
|
||||||
|
];
|
||||||
|
# TODO: optionality?
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
preFixup = "rm $out/share/icons/hicolor/icon-theme.cache";
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
homepage = http://thunar.xfce.org/;
|
||||||
|
description = "Xfce file manager";
|
||||||
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
|
platforms = stdenv.lib.platforms.linux;
|
||||||
|
maintainers = [ stdenv.lib.maintainers.eelco ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,37 +1,68 @@
|
||||||
{ stdenv, fetchurl, pkgconfig, intltool
|
{ stdenv, buildEnv, runCommand, makeWrapper, lndir, thunar-build
|
||||||
, gtk, dbus_glib, libstartup_notification, libnotify, libexif, pcre, udev
|
, thunarPlugins ? []
|
||||||
, exo, libxfce4util, xfconf, xfce4panel
|
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
with stdenv.lib;
|
||||||
p_name = "thunar";
|
|
||||||
ver_maj = "1.6";
|
|
||||||
ver_min = "10";
|
|
||||||
|
|
||||||
src = fetchurl {
|
let
|
||||||
url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/Thunar-${ver_maj}.${ver_min}.tar.bz2";
|
|
||||||
sha256 = "7e9d24067268900e5e44d3325e60a1a2b2f8f556ec238ec12574fbea15fdee8a";
|
|
||||||
};
|
|
||||||
name = "${p_name}-${ver_maj}.${ver_min}";
|
|
||||||
|
|
||||||
patches = [ ./thunarx_plugins_directory.patch ];
|
build = thunar-build;
|
||||||
|
|
||||||
buildInputs = [
|
replaceLnExeListWithWrapped = exeDir: exeNameList: mkWrapArgs: ''
|
||||||
pkgconfig intltool
|
exeDir="${exeDir}"
|
||||||
gtk dbus_glib libstartup_notification libnotify libexif pcre udev
|
oriDir=`realpath -e "$exeDir"`
|
||||||
exo libxfce4util xfconf xfce4panel
|
unlink "$exeDir"
|
||||||
];
|
mkdir -p "$exeDir"
|
||||||
# TODO: optionality?
|
lndir "$oriDir" "$exeDir"
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
exeList="${concatStrings (intersperse " " (map (x: "${exeDir}/${x}") exeNameList))}"
|
||||||
|
|
||||||
preFixup = "rm $out/share/icons/hicolor/icon-theme.cache";
|
for exe in $exeList; do
|
||||||
|
oriExe=`realpath -e "$exe"`
|
||||||
|
rm -f "$exe"
|
||||||
|
makeWrapper "$oriExe" "$exe" ${concatStrings (intersperse " " mkWrapArgs)}
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
|
||||||
|
name = "${build.p_name}-${build.ver_maj}.${build.ver_min}";
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
homepage = http://thunar.xfce.org/;
|
inherit (build.meta) homepage license platforms;
|
||||||
description = "Xfce file manager";
|
|
||||||
license = stdenv.lib.licenses.gpl2Plus;
|
description = build.meta.description + optionalString
|
||||||
platforms = stdenv.lib.platforms.linux;
|
(0 != length thunarPlugins)
|
||||||
maintainers = [ stdenv.lib.maintainers.eelco ];
|
" (with plugins: ${concatStrings (intersperse ", " (map (x: x.name) thunarPlugins))})";
|
||||||
|
maintainers = build.meta.maintainers /*++ [ jraygauthier ]*/;
|
||||||
};
|
};
|
||||||
}
|
|
||||||
|
in
|
||||||
|
|
||||||
|
# TODO: To be replaced with `buildEnv` awaiting missing features.
|
||||||
|
runCommand name {
|
||||||
|
inherit build;
|
||||||
|
inherit meta;
|
||||||
|
|
||||||
|
nativeBuildInputs = [ makeWrapper lndir ];
|
||||||
|
|
||||||
|
dontPatchELF = true;
|
||||||
|
dontStrip = true;
|
||||||
|
|
||||||
|
}
|
||||||
|
(let
|
||||||
|
buildWithPlugins = buildEnv {
|
||||||
|
name = "thunar-build-with-plugins";
|
||||||
|
paths = [ build ] ++ thunarPlugins;
|
||||||
|
};
|
||||||
|
|
||||||
|
in ''
|
||||||
|
mkdir -p $out
|
||||||
|
pushd ${buildWithPlugins} > /dev/null
|
||||||
|
for d in `find . -maxdepth 1 -name "*" -printf "%f\n" | tail -n+2`; do
|
||||||
|
ln -s "${buildWithPlugins}/$d" "$out/$d"
|
||||||
|
done
|
||||||
|
popd > /dev/null
|
||||||
|
|
||||||
|
${replaceLnExeListWithWrapped "$out/bin" [ "thunar" "thunar-settings" ] [
|
||||||
|
"--set THUNARX_MODULE_DIR \"${buildWithPlugins}/lib/thunarx-2\""
|
||||||
|
]}
|
||||||
|
'')
|
||||||
|
|
|
@ -26,7 +26,9 @@ xfce_self = rec { # the lines are very long but it seems better than the even-od
|
||||||
libxfce4ui_gtk3 = libxfce4ui.override { withGtk3 = true; };
|
libxfce4ui_gtk3 = libxfce4ui.override { withGtk3 = true; };
|
||||||
libxfce4util = callPackage ./core/libxfce4util.nix { };
|
libxfce4util = callPackage ./core/libxfce4util.nix { };
|
||||||
libxfcegui4 = callPackage ./core/libxfcegui4.nix { };
|
libxfcegui4 = callPackage ./core/libxfcegui4.nix { };
|
||||||
|
thunar-build = callPackage ./core/thunar-build.nix { };
|
||||||
thunar = callPackage ./core/thunar.nix { };
|
thunar = callPackage ./core/thunar.nix { };
|
||||||
|
thunarx-2-dev = thunar-build; # Plugins need only the `thunarx-2` part of the package. Awaiting multiple outputs.
|
||||||
thunar_volman = callPackage ./core/thunar-volman.nix { }; # ToDo: probably inside Thunar now
|
thunar_volman = callPackage ./core/thunar-volman.nix { }; # ToDo: probably inside Thunar now
|
||||||
thunar-archive-plugin
|
thunar-archive-plugin
|
||||||
= callPackage ./thunar-plugins/archive { };
|
= callPackage ./thunar-plugins/archive { };
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{ stdenv, fetchFromGitHub, pkgconfig, xfce4_dev_tools
|
{ stdenv, fetchFromGitHub, pkgconfig, xfce4_dev_tools
|
||||||
, gtk
|
, gtk
|
||||||
, thunar
|
, thunarx-2-dev
|
||||||
, exo, libxfce4util, libxfce4ui
|
, exo, libxfce4util, libxfce4ui
|
||||||
, xfconf, udev, libnotify
|
, xfconf, udev, libnotify
|
||||||
}:
|
}:
|
||||||
|
@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
pkgconfig
|
pkgconfig
|
||||||
xfce4_dev_tools
|
xfce4_dev_tools
|
||||||
thunar
|
thunarx-2-dev
|
||||||
exo gtk libxfce4util libxfce4ui
|
exo gtk libxfce4util libxfce4ui
|
||||||
xfconf udev libnotify
|
xfconf udev libnotify
|
||||||
];
|
];
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{ stdenv, fetchurl, pkgconfig
|
{ stdenv, fetchurl, pkgconfig
|
||||||
, gtk
|
, gtk
|
||||||
, thunar, python2
|
, thunarx-2-dev, python2
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
|
@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
pkgconfig
|
pkgconfig
|
||||||
gtk
|
gtk
|
||||||
thunar python2
|
thunarx-2-dev python2
|
||||||
];
|
];
|
||||||
|
|
||||||
configurePhase = "python2 waf configure --prefix=$out";
|
configurePhase = "python2 waf configure --prefix=$out";
|
||||||
|
|
Loading…
Reference in a new issue