diff --git a/nixos/tests/xfce.nix b/nixos/tests/xfce.nix index 03921491c7b6..0b88fb18870f 100644 --- a/nixos/tests/xfce.nix +++ b/nixos/tests/xfce.nix @@ -19,6 +19,8 @@ services.xserver.desktopManager.xfce.enable = true; environment.systemPackages = [ pkgs.xfce.xfce4-whiskermenu-plugin ]; + + programs.thunar.plugins = [ pkgs.xfce.thunar-archive-plugin ]; }; enableOCR = true; diff --git a/pkgs/desktops/xfce/core/thunar/default.nix b/pkgs/desktops/xfce/core/thunar/default.nix index 4673cf878abe..e2889789564e 100644 --- a/pkgs/desktops/xfce/core/thunar/default.nix +++ b/pkgs/desktops/xfce/core/thunar/default.nix @@ -16,82 +16,63 @@ pcre2, xfce4-panel, xfconf, - makeWrapper, - symlinkJoin, - thunarPlugins ? [ ], withIntrospection ? false, - buildPackages, gobject-introspection, }: -let - unwrapped = mkXfceDerivation { - category = "xfce"; - pname = "thunar"; - version = "4.20.3"; +mkXfceDerivation { + category = "xfce"; + pname = "thunar"; + version = "4.20.3"; - sha256 = "sha256-YOh7tuCja9F2VvzX+QqsKHJfebXWbhLqvcraq6PBOGo="; + sha256 = "sha256-YOh7tuCja9F2VvzX+QqsKHJfebXWbhLqvcraq6PBOGo="; - nativeBuildInputs = - [ - docbook_xsl - libxslt - ] - ++ lib.optionals withIntrospection [ - gobject-introspection - ]; - - buildInputs = [ - exo - gdk-pixbuf - gtk3 - libX11 - libexif # image properties page - libgudev - libnotify - libxfce4ui - libxfce4util - pcre2 # search & replace renamer - xfce4-panel # trash panel applet plugin - xfconf + nativeBuildInputs = + [ + docbook_xsl + libxslt + ] + ++ lib.optionals withIntrospection [ + gobject-introspection ]; - configureFlags = [ "--with-custom-thunarx-dirs-enabled" ]; + buildInputs = [ + exo + gdk-pixbuf + gtk3 + libX11 + libexif # image properties page + libgudev + libnotify + libxfce4ui + libxfce4util + pcre2 # search & replace renamer + xfce4-panel # trash panel applet plugin + xfconf + ]; - # the desktop file … is in an insecure location» - # which pops up when invoking desktop files that are - # symlinks to the /nix/store - # - # this error was added by this commit: - # https://github.com/xfce-mirror/thunar/commit/1ec8ff89ec5a3314fcd6a57f1475654ddecc9875 - postPatch = '' - sed -i -e 's|thunar_dialogs_show_insecure_program (parent, _(".*"), file, exec)|1|' thunar/thunar-file.c - ''; + configureFlags = [ "--with-custom-thunarx-dirs-enabled" ]; - preFixup = '' - gappsWrapperArgs+=( - # https://github.com/NixOS/nixpkgs/issues/329688 - --prefix PATH : ${lib.makeBinPath [ exo ]} - ) - ''; + # the desktop file … is in an insecure location» + # which pops up when invoking desktop files that are + # symlinks to the /nix/store + # + # this error was added by this commit: + # https://github.com/xfce-mirror/thunar/commit/1ec8ff89ec5a3314fcd6a57f1475654ddecc9875 + postPatch = '' + sed -i -e 's|thunar_dialogs_show_insecure_program (parent, _(".*"), file, exec)|1|' thunar/thunar-file.c + ''; - meta = with lib; { - description = "Xfce file manager"; - mainProgram = "thunar"; - teams = [ teams.xfce ]; - }; + preFixup = '' + gappsWrapperArgs+=( + # https://github.com/NixOS/nixpkgs/issues/329688 + --prefix PATH : ${lib.makeBinPath [ exo ]} + ) + ''; + + meta = with lib; { + description = "Xfce file manager"; + mainProgram = "thunar"; + teams = [ teams.xfce ]; }; - -in -if thunarPlugins == [ ] then - unwrapped -else - import ./wrapper.nix { - inherit - makeWrapper - symlinkJoin - thunarPlugins - lib - ; - thunar = unwrapped; - } +} diff --git a/pkgs/desktops/xfce/core/thunar/wrapper.nix b/pkgs/desktops/xfce/core/thunar/wrapper.nix index e4b3cec39d84..009710ea353e 100644 --- a/pkgs/desktops/xfce/core/thunar/wrapper.nix +++ b/pkgs/desktops/xfce/core/thunar/wrapper.nix @@ -2,53 +2,61 @@ lib, makeWrapper, symlinkJoin, - thunar, - thunarPlugins, + thunar-unwrapped, + thunarPlugins ? [ ], }: -symlinkJoin { - name = "thunar-with-plugins-${thunar.version}"; +let + thunar = thunar-unwrapped; +in - paths = [ thunar ] ++ thunarPlugins; +if thunarPlugins == [ ] then + thunar - nativeBuildInputs = [ makeWrapper ]; +else + symlinkJoin { + name = "thunar-with-plugins-${thunar.version}"; - postBuild = '' - wrapProgram "$out/bin/thunar" \ - --set "THUNARX_DIRS" "$out/lib/thunarx-3" + paths = [ thunar ] ++ thunarPlugins; - wrapProgram "$out/bin/thunar-settings" \ - --set "THUNARX_DIRS" "$out/lib/thunarx-3" + nativeBuildInputs = [ makeWrapper ]; - # NOTE: we need to remove the folder symlink itself and create - # a new folder before trying to substitute any file below. - rm -f "$out/lib/systemd/user" - mkdir -p "$out/lib/systemd/user" + postBuild = '' + wrapProgram "$out/bin/thunar" \ + --set "THUNARX_DIRS" "$out/lib/thunarx-3" - # point to wrapped binary in all service files - for file in "lib/systemd/user/thunar.service" \ - "share/dbus-1/services/org.xfce.FileManager.service" \ - "share/dbus-1/services/org.xfce.Thunar.FileManager1.service" \ - "share/dbus-1/services/org.xfce.Thunar.service" - do - rm -f "$out/$file" - substitute "${thunar}/$file" "$out/$file" \ - --replace "${thunar}" "$out" - done - ''; + wrapProgram "$out/bin/thunar-settings" \ + --set "THUNARX_DIRS" "$out/lib/thunarx-3" - meta = with lib; { - inherit (thunar.meta) - homepage - license - platforms - teams - ; + # NOTE: we need to remove the folder symlink itself and create + # a new folder before trying to substitute any file below. + rm -f "$out/lib/systemd/user" + mkdir -p "$out/lib/systemd/user" - description = - thunar.meta.description - + - optionalString (0 != length thunarPlugins) - " (with plugins: ${concatStringsSep ", " (map (x: x.name) thunarPlugins)})"; - }; -} + # point to wrapped binary in all service files + for file in "lib/systemd/user/thunar.service" \ + "share/dbus-1/services/org.xfce.FileManager.service" \ + "share/dbus-1/services/org.xfce.Thunar.FileManager1.service" \ + "share/dbus-1/services/org.xfce.Thunar.service" + do + rm -f "$out/$file" + substitute "${thunar}/$file" "$out/$file" \ + --replace "${thunar}" "$out" + done + ''; + + meta = with lib; { + inherit (thunar.meta) + homepage + license + platforms + teams + ; + + description = + thunar.meta.description + + + optionalString (0 != length thunarPlugins) + " (with plugins: ${concatStringsSep ", " (map (x: x.name) thunarPlugins)})"; + }; + } diff --git a/pkgs/desktops/xfce/default.nix b/pkgs/desktops/xfce/default.nix index 2a907a4ba39c..bdd3a9aadc84 100644 --- a/pkgs/desktops/xfce/default.nix +++ b/pkgs/desktops/xfce/default.nix @@ -33,9 +33,9 @@ makeScopeWithSplicing' { libxfce4windowing = callPackage ./core/libxfce4windowing { }; - thunar = callPackage ./core/thunar { - thunarPlugins = [ ]; - }; + thunar-unwrapped = callPackage ./core/thunar { }; + + thunar = callPackage ./core/thunar/wrapper.nix { }; thunar-volman = callPackage ./core/thunar-volman { }; @@ -169,7 +169,7 @@ makeScopeWithSplicing' { xinitrc = self.xfce4-session.xinitrc; # added 2019-11-04 - thunar-bare = self.thunar.override { thunarPlugins = [ ]; }; # added 2019-11-04 + thunar-bare = self.thunar-unwrapped; # added 2019-11-04 xfce4-datetime-plugin = throw '' xfce4-datetime-plugin has been removed: this plugin has been merged into the xfce4-panel's built-in clock