diff --git a/nixos/doc/manual/release-notes/rl-2505.section.md b/nixos/doc/manual/release-notes/rl-2505.section.md index ac019ce754e4..595f86be13c0 100644 --- a/nixos/doc/manual/release-notes/rl-2505.section.md +++ b/nixos/doc/manual/release-notes/rl-2505.section.md @@ -186,6 +186,11 @@ - Cinnamon has been updated to 6.4, please check the [upstream announcement](https://www.linuxmint.com/rel_xia_whatsnew.php) for more details. - Following [changes in Mint 22](https://github.com/linuxmint/mintupgrade/commit/f239cde908288b8c250f938e7311c7ffbc16bd59) we are no longer overriding Qt application styles. You can still restore the previous default with `qt.style = "gtk2"` and `qt.platformTheme = "gtk2"`. +- Xfce has been updated to 4.20, please check the [upstream feature tour](https://www.xfce.org/about/tour420) for more details. + - Wayland session is still [experimental](https://wiki.xfce.org/releng/wayland_roadmap) and requires opt-in using `enableWaylandSession` option. + - Overriding Wayland compositor is possible using `enableWaylandSession` option, but you might need to take care [`xfce4-session`](https://gitlab.xfce.org/xfce/xfce4-session/-/merge_requests/49), [`dbus-update-activation-environment`](https://github.com/labwc/labwc/blob/eaf11face68ee1f1bcc7ce1498304ca8c108c8ba/src/config/session.c#L234) and [`systemctl --user import-environment`](https://github.com/labwc/labwc/blob/eaf11face68ee1f1bcc7ce1498304ca8c108c8ba/src/config/session.c#L239) on startup. + - For new Xfce installations, default panel layout has [changed](https://gitlab.xfce.org/xfce/xfce4-panel/-/merge_requests/158/diffs) to not include external panel plugins by default. You can still add them yourself using the "Panel Preferences" dialog. + - `networking.wireguard` now has an optional networkd backend. It is enabled by default when `networking.useNetworkd` is enabled, and it can be enabled alongside scripted networking with `networking.wireguard.useNetworkd`. Some `networking.wireguard` options have slightly different behavior with the networkd and script-based backends, documented in each option. - `services.avahi.ipv6` now defaults to true. diff --git a/nixos/modules/services/x11/desktop-managers/xfce.nix b/nixos/modules/services/x11/desktop-managers/xfce.nix index 8810b5f8c8b0..81f51e315ad8 100644 --- a/nixos/modules/services/x11/desktop-managers/xfce.nix +++ b/nixos/modules/services/x11/desktop-managers/xfce.nix @@ -69,6 +69,22 @@ in default = true; description = "Enable the XFCE screensaver."; }; + + enableWaylandSession = mkEnableOption "the experimental Xfce Wayland session"; + + waylandSessionCompositor = mkOption { + type = lib.types.str; + default = ""; + example = "wayfire"; + description = '' + Command line to run a Wayland compositor, defaults to `labwc --startup` + if not specified. Note that `xfce4-session` will be passed to it as an + argument, see `startxfce4 --help` for details. + + Some compositors do not have an option equivalent to labwc's `--startup` + and you might have to add xfce4-session somewhere in their configurations. + ''; + }; }; environment.xfce.excludePackages = mkOption { @@ -134,6 +150,8 @@ in programs.gnupg.agent.pinentryPackage = mkDefault pkgs.pinentry-gtk2; programs.xfconf.enable = true; programs.thunar.enable = true; + programs.labwc.enable = mkDefault (cfg.enableWaylandSession && ( + cfg.waylandSessionCompositor == "" || lib.substring 0 5 cfg.waylandSessionCompositor == "labwc")); environment.pathsToLink = [ "/share/xfce4" @@ -144,6 +162,7 @@ in services.xserver.desktopManager.session = [{ name = "xfce"; + prettyName = "Xfce Session"; desktopNames = [ "XFCE" ]; bgSupport = !cfg.noDesktop; start = '' @@ -152,6 +171,22 @@ in ''; }]; + # Copied from https://gitlab.xfce.org/xfce/xfce4-session/-/blob/xfce4-session-4.19.2/xfce-wayland.desktop.in + # to maintain consistent l10n state with X11 session file and to support the waylandSessionCompositor option. + services.displayManager.sessionPackages = optionals cfg.enableWaylandSession [ + ((pkgs.writeTextDir "share/wayland-sessions/xfce-wayland.desktop" '' + [Desktop Entry] + Version=1.0 + Name=Xfce Session (Wayland) + Comment=Use this session to run Xfce as your desktop environment + Exec=startxfce4 --wayland ${cfg.waylandSessionCompositor} + Icon= + Type=Application + DesktopNames=XFCE + Keywords=xfce;wayland;desktop;environment;session; + '').overrideAttrs (_: { passthru.providedSessions = [ "xfce-wayland" ]; })) + ]; + services.xserver.updateDbusEnvironment = true; programs.gdk-pixbuf.modulePackages = [ pkgs.librsvg ]; diff --git a/nixos/modules/services/x11/display-managers/default.nix b/nixos/modules/services/x11/display-managers/default.nix index 87331a6658d3..7b8c8a661c95 100644 --- a/nixos/modules/services/x11/display-managers/default.nix +++ b/nixos/modules/services/x11/display-managers/default.nix @@ -279,6 +279,11 @@ in lib.mapCartesianProduct ({dm, wm}: let sessionName = "${dm.name}${optionalString (wm.name != "none") ("+" + wm.name)}"; + prettyName = + if dm.name != "none" then + "${dm.prettyName or dm.name}${optionalString (wm.name != "none") (" (" + (wm.prettyName or wm.name) + ")")}" + else + (wm.prettyName or wm.name); script = xsession dm wm; desktopNames = if dm ? desktopNames then lib.concatStringsSep ";" dm.desktopNames @@ -297,7 +302,7 @@ in Type=XSession TryExec=${script} Exec=${script} - Name=${sessionName} + Name=${prettyName} DesktopNames=${desktopNames} ''; } // { diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 74d98935e54d..db89304691f8 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -1164,6 +1164,7 @@ in { xandikos = handleTest ./xandikos.nix {}; xautolock = handleTest ./xautolock.nix {}; xfce = handleTest ./xfce.nix {}; + xfce-wayland = handleTest ./xfce-wayland.nix {}; xmonad = handleTest ./xmonad.nix {}; xmonad-xdg-autostart = handleTest ./xmonad-xdg-autostart.nix {}; xpadneo = handleTest ./xpadneo.nix {}; diff --git a/nixos/tests/xfce-wayland.nix b/nixos/tests/xfce-wayland.nix new file mode 100644 index 000000000000..5f835528c851 --- /dev/null +++ b/nixos/tests/xfce-wayland.nix @@ -0,0 +1,73 @@ +import ./make-test-python.nix ( + { pkgs, ... }: + { + name = "xfce-wayland"; + + nodes.machine = + { pkgs, ... }: + + { + imports = [ + ./common/user-account.nix + ]; + + services.xserver.enable = true; + services.xserver.displayManager.lightdm.enable = true; + services.displayManager = { + defaultSession = "xfce-wayland"; + autoLogin = { + enable = true; + user = "alice"; + }; + }; + + services.xserver.desktopManager.xfce.enable = true; + services.xserver.desktopManager.xfce.enableWaylandSession = true; + # https://gitlab.xfce.org/apps/xfce4-screensaver/-/merge_requests/28 + services.xserver.desktopManager.xfce.enableScreensaver = false; + environment.systemPackages = [ pkgs.wlrctl ]; + }; + + enableOCR = true; + + testScript = + { nodes, ... }: + let + user = nodes.machine.users.users.alice; + rtdir = "XDG_RUNTIME_DIR=/run/user/${toString user.uid}"; + in + '' + machine.wait_for_unit("display-manager.service") + + with subtest("Wait for Wayland server"): + machine.wait_for_file("/run/user/${toString user.uid}/wayland-0") + + with subtest("Check that logging in has given the user ownership of devices"): + machine.succeed("getfacl -p /dev/snd/timer | grep -q ${user.name}") + + with subtest("Check if Xfce components actually start"): + for p in ["labwc", "xfdesktop", "xfce4-notifyd", "xfconfd", "xfce4-panel"]: + machine.wait_until_succeeds(f"pgrep {p}") + + with subtest("Open Xfce terminal"): + machine.succeed("su - ${user.name} -c '${rtdir} xfce4-terminal >&2 &'") + machine.wait_until_succeeds("su - ${user.name} -c '${rtdir} wlrctl toplevel list | grep xfce4-terminal'") + + with subtest("Open Thunar"): + machine.succeed("su - ${user.name} -c '${rtdir} thunar >&2 &'") + machine.wait_until_succeeds("su - ${user.name} -c '${rtdir} wlrctl toplevel list | grep Thunar'") + machine.wait_for_text('(Pictures|Public|Templates|Videos)') + + with subtest("Check if various environment variables are set"): + cmd = "xargs --null --max-args=1 echo < /proc/$(pgrep -xf xfce4-panel)/environ" + machine.succeed(f"{cmd} | grep 'XDG_SESSION_TYPE' | grep 'wayland'") + machine.succeed(f"{cmd} | grep 'XFCE4_SESSION_COMPOSITOR' | grep 'labwc'") + machine.succeed(f"{cmd} | grep 'XDG_CURRENT_DESKTOP' | grep 'XFCE'") + + with subtest("Check if any coredumps are found"): + machine.succeed("(coredumpctl --json=short 2>&1 || true) | grep 'No coredumps found'") + machine.sleep(10) + machine.screenshot("screen") + ''; + } +) diff --git a/pkgs/applications/display-managers/lightdm/gtk-greeter.nix b/pkgs/applications/display-managers/lightdm/gtk-greeter.nix index 8bf003d37194..77e26c1777f5 100644 --- a/pkgs/applications/display-managers/lightdm/gtk-greeter.nix +++ b/pkgs/applications/display-managers/lightdm/gtk-greeter.nix @@ -45,6 +45,11 @@ stdenv.mkDerivation rec { "--sbindir=${placeholder "out"}/bin" # for wrapGAppsHook3 to wrap automatically ]; + postPatch = '' + # https://github.com/Xubuntu/lightdm-gtk-greeter/pull/178 + cp data/badges/xfce{,-wayland}_badge-symbolic.svg + ''; + preConfigure = '' configureFlagsArray+=( --enable-at-spi-command="${at-spi2-core}/libexec/at-spi-bus-launcher --launch-immediately" ) ''; diff --git a/pkgs/by-name/bu/budgie-desktop/package.nix b/pkgs/by-name/bu/budgie-desktop/package.nix index 74d9d2c35a94..eb4627dc504e 100644 --- a/pkgs/by-name/bu/budgie-desktop/package.nix +++ b/pkgs/by-name/bu/budgie-desktop/package.nix @@ -2,6 +2,7 @@ lib, stdenv, fetchFromGitHub, + fetchpatch, accountsservice, alsa-lib, budgie-screensaver, @@ -60,7 +61,16 @@ stdenv.mkDerivation (finalAttrs: { "man" ]; - patches = [ ./plugins.patch ]; + patches = [ + ./plugins.patch + + # Adapt to libxfce4windowing v4.19.8 + # https://github.com/BuddiesOfBudgie/budgie-desktop/pull/627 + (fetchpatch { + url = "https://github.com/BuddiesOfBudgie/budgie-desktop/commit/ba8170b4f3108f9de28331b6a98a9d92bb0ed4de.patch"; + hash = "sha256-T//1/NmaV81j0jiIYK7vEp8sgKCgF2i10D+Rk9qAAeE="; + }) + ]; nativeBuildInputs = [ docbook-xsl-nons diff --git a/pkgs/by-name/gr/greybird/package.nix b/pkgs/by-name/gr/greybird/package.nix index 0462a28d34fb..e78d49eff4de 100644 --- a/pkgs/by-name/gr/greybird/package.nix +++ b/pkgs/by-name/gr/greybird/package.nix @@ -1,6 +1,7 @@ { lib , stdenv , fetchFromGitHub +, fetchpatch , meson , ninja , pkg-config @@ -22,6 +23,15 @@ stdenv.mkDerivation rec { sha256 = "+MZQ3FThuRFEfoARsF09B7POwytS5RgTs9zYzIHVtfg="; }; + patches = [ + # Fix label styles for xfdesktop 4.19 + # https://github.com/shimmerproject/Greybird/pull/338 + (fetchpatch { + url = "https://github.com/shimmerproject/Greybird/commit/7e4507d7713b2aaf41f8cfef2a1a9e214a4d8b6f.patch"; + hash = "sha256-awXM2RgFIK/Ik5cJSy4IQYl+ic+XGQV0YwbL3SPclzQ="; + }) + ]; + nativeBuildInputs = [ meson ninja diff --git a/pkgs/desktops/xfce/core/exo/default.nix b/pkgs/desktops/xfce/core/exo/default.nix index e5d34969d4c8..8567100f076b 100644 --- a/pkgs/desktops/xfce/core/exo/default.nix +++ b/pkgs/desktops/xfce/core/exo/default.nix @@ -4,9 +4,9 @@ mkXfceDerivation { category = "xfce"; pname = "exo"; - version = "4.18.0"; + version = "4.20.0"; - sha256 = "sha256-oWlKeUD1v2qqb8vY+2Cu9VJ1iThFPVboP12m/ob5KSQ="; + sha256 = "sha256-mlGsFaKy96eEAYgYYqtEI4naq5ZSEe3V7nsWGAEucn0="; nativeBuildInputs = [ libxslt @@ -18,13 +18,9 @@ mkXfceDerivation { glib libxfce4ui libxfce4util - (perl.withPackages(ps: with ps; [ URI ])) # for $out/lib/xfce4/exo/exo-compose-mail ]; - # Workaround https://bugzilla.xfce.org/show_bug.cgi?id=15825 - env.NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0"; - meta = with lib; { description = "Application library for Xfce"; maintainers = with maintainers; [ ] ++ teams.xfce.members; diff --git a/pkgs/desktops/xfce/core/garcon/default.nix b/pkgs/desktops/xfce/core/garcon/default.nix index ec0d76bfe7ff..6f40696c3d44 100644 --- a/pkgs/desktops/xfce/core/garcon/default.nix +++ b/pkgs/desktops/xfce/core/garcon/default.nix @@ -3,9 +3,9 @@ mkXfceDerivation { category = "xfce"; pname = "garcon"; - version = "4.18.2"; + version = "4.20.0"; - sha256 = "sha256-J9f9MzZ1I9XIyvwuyINkvXDuXY6/MkjlH2Ct4yaEXsY="; + sha256 = "sha256-MeZkDb2QgGMaloO6Nwlj9JmZByepd6ERqpAWqrVv1xw="; nativeBuildInputs = [ gobject-introspection ]; diff --git a/pkgs/desktops/xfce/core/libxfce4ui/default.nix b/pkgs/desktops/xfce/core/libxfce4ui/default.nix index 862d4f8cbc94..780c3ca990f8 100644 --- a/pkgs/desktops/xfce/core/libxfce4ui/default.nix +++ b/pkgs/desktops/xfce/core/libxfce4ui/default.nix @@ -1,16 +1,45 @@ -{ lib, mkXfceDerivation, gobject-introspection, vala, gtk3, libICE, libSM -, libstartup_notification, libgtop, libepoxy, libxfce4util, xfconf }: +{ + mkXfceDerivation, + lib, + gobject-introspection, + vala, + libICE, + libSM, + libepoxy, + libgtop, + libgudev, + libstartup_notification, + xfconf, + gtk3, + libxfce4util, +}: mkXfceDerivation { category = "xfce"; pname = "libxfce4ui"; - version = "4.18.6"; + version = "4.20.0"; - sha256 = "sha256-ojmI745tKLHv26uL1qS/v6hAcLmAV/WF2NAtAhQRUkg="; + sha256 = "sha256-M+OapPHQ/WxlkUzHPx+ELstVyGoZanCxCL0N8hDWSN8="; - nativeBuildInputs = [ gobject-introspection vala ]; - buildInputs = [ gtk3 libstartup_notification libgtop libepoxy xfconf ]; - propagatedBuildInputs = [ libxfce4util libICE libSM ]; + nativeBuildInputs = [ + gobject-introspection + vala + ]; + + buildInputs = [ + libICE + libSM + libepoxy + libgtop + libgudev + libstartup_notification + xfconf + ]; + + propagatedBuildInputs = [ + gtk3 + libxfce4util + ]; configureFlags = [ "--with-vendor-info=NixOS" @@ -19,7 +48,10 @@ mkXfceDerivation { meta = with lib; { description = "Widgets library for Xfce"; mainProgram = "xfce4-about"; - license = with licenses; [ lgpl2Plus lgpl21Plus ]; + license = with licenses; [ + lgpl2Plus + lgpl21Plus + ]; maintainers = with maintainers; [ ] ++ teams.xfce.members; }; } diff --git a/pkgs/desktops/xfce/core/libxfce4util/default.nix b/pkgs/desktops/xfce/core/libxfce4util/default.nix index 02a4b98309a3..d2486d2fd256 100644 --- a/pkgs/desktops/xfce/core/libxfce4util/default.nix +++ b/pkgs/desktops/xfce/core/libxfce4util/default.nix @@ -1,13 +1,26 @@ -{ lib, mkXfceDerivation, gobject-introspection, vala }: +{ + mkXfceDerivation, + lib, + gobject-introspection, + vala, + glib, +}: mkXfceDerivation { category = "xfce"; pname = "libxfce4util"; - version = "4.18.2"; + version = "4.20.0"; - sha256 = "sha256-JQ6biE1gxtB6+LWxRGfbUhgJhhITGhLr+8BxFW4/8SU="; + sha256 = "sha256-0qbJSCXHsVz3XILHICFhciyz92LgMZiR7XFLAESHRGQ="; - nativeBuildInputs = [ gobject-introspection vala ]; + nativeBuildInputs = [ + gobject-introspection + vala + ]; + + propagatedBuildInputs = [ + glib + ]; meta = with lib; { description = "Extension library for Xfce"; diff --git a/pkgs/desktops/xfce/core/libxfce4windowing/default.nix b/pkgs/desktops/xfce/core/libxfce4windowing/default.nix index c83cf06d4384..8dddaf866637 100644 --- a/pkgs/desktops/xfce/core/libxfce4windowing/default.nix +++ b/pkgs/desktops/xfce/core/libxfce4windowing/default.nix @@ -4,18 +4,21 @@ , wayland-scanner , glib , gtk3 +, libdisplay-info , libwnck , libX11 +, libXrandr , wayland +, wayland-protocols , wlr-protocols }: mkXfceDerivation { category = "xfce"; pname = "libxfce4windowing"; - version = "4.19.3"; + version = "4.20.0"; - sha256 = "sha256-nsobRyGeagUq1WHzYBq6vd9g5A65KEQC4cX+m7w0pqg="; + sha256 = "sha256-t/GbsGipc0Ts2tZJaDJBuDF+9XMp8+Trq78NPAuHEpU="; nativeBuildInputs = [ gobject-introspection @@ -25,9 +28,12 @@ mkXfceDerivation { buildInputs = [ glib gtk3 + libdisplay-info libwnck libX11 + libXrandr wayland + wayland-protocols wlr-protocols ]; diff --git a/pkgs/desktops/xfce/core/thunar-volman/default.nix b/pkgs/desktops/xfce/core/thunar-volman/default.nix index 33b34e5beee8..ec2f37f31cec 100644 --- a/pkgs/desktops/xfce/core/thunar-volman/default.nix +++ b/pkgs/desktops/xfce/core/thunar-volman/default.nix @@ -3,11 +3,11 @@ mkXfceDerivation { category = "xfce"; pname = "thunar-volman"; - version = "4.18.0"; + version = "4.20.0"; buildInputs = [ exo gtk3 libgudev libxfce4ui libxfce4util xfconf ]; - sha256 = "sha256-NRVoakU8jTCJVe+iyJQwW1xPti2vjd/8n8CYrIYGII0="; + sha256 = "sha256-XIVs/vRwy3QJQW/U7eLBvGdzplWlhdxn3f1lyTQsmpE="; odd-unstable = false; diff --git a/pkgs/desktops/xfce/core/thunar/default.nix b/pkgs/desktops/xfce/core/thunar/default.nix index e7c5c30089c2..74318b3622d3 100644 --- a/pkgs/desktops/xfce/core/thunar/default.nix +++ b/pkgs/desktops/xfce/core/thunar/default.nix @@ -23,9 +23,9 @@ let unwrapped = mkXfceDerivation { category = "xfce"; pname = "thunar"; - version = "4.18.11"; + version = "4.20.0"; - sha256 = "sha256-B417gkrU9EG4ZsEdeuH8P2v4FqYUiTwqgKcO4cSi4SI="; + sha256 = "sha256-TCroFesFD0IKGdfuootd1BwEsWVECE2XQfUovJqPEh0="; nativeBuildInputs = [ docbook_xsl diff --git a/pkgs/desktops/xfce/core/tumbler/default.nix b/pkgs/desktops/xfce/core/tumbler/default.nix index fd0e375033c0..98c94858be2b 100644 --- a/pkgs/desktops/xfce/core/tumbler/default.nix +++ b/pkgs/desktops/xfce/core/tumbler/default.nix @@ -19,9 +19,9 @@ mkXfceDerivation { category = "xfce"; pname = "tumbler"; - version = "4.18.2"; + version = "4.20.0"; - sha256 = "sha256-thioE0q2qnV4weJFPz8OWoHIRuUcXnQEviwBtCWsSV4="; + sha256 = "sha256-GmEMdG8Ikd4Tq/1ntCHiN0S7ehUXqzMX7OtXsycLd6E="; buildInputs = [ libxfce4util diff --git a/pkgs/desktops/xfce/core/xfce4-appfinder/default.nix b/pkgs/desktops/xfce/core/xfce4-appfinder/default.nix index e716fab959a0..da32f4cda098 100644 --- a/pkgs/desktops/xfce/core/xfce4-appfinder/default.nix +++ b/pkgs/desktops/xfce/core/xfce4-appfinder/default.nix @@ -3,9 +3,9 @@ mkXfceDerivation { category = "xfce"; pname = "xfce4-appfinder"; - version = "4.18.1"; + version = "4.20.0"; - sha256 = "sha256-CZEX1PzFsVt72Fkb4+5PiZjAcDisvYnbzFGFXjFL4sc="; + sha256 = "sha256-HovQnkfv5BOsRPowgMkMEWQmESkivVK0Xb7I15ZaOMc="; nativeBuildInputs = [ exo ]; buildInputs = [ garcon gtk3 libxfce4ui libxfce4util xfconf ]; diff --git a/pkgs/desktops/xfce/core/xfce4-dev-tools/default.nix b/pkgs/desktops/xfce/core/xfce4-dev-tools/default.nix index 7504c8e09d4c..f2a8e6fcd1ee 100644 --- a/pkgs/desktops/xfce/core/xfce4-dev-tools/default.nix +++ b/pkgs/desktops/xfce/core/xfce4-dev-tools/default.nix @@ -1,27 +1,48 @@ -{ lib -, mkXfceDerivation -, autoreconfHook -, libxslt -, docbook_xsl -, autoconf -, automake -, glib -, gtk-doc -, intltool -, libtool +{ + stdenv, + lib, + fetchFromGitLab, + autoreconfHook, + docbook_xsl, + libxslt, + meson, + pkg-config, + wrapGAppsHook3, + python3, + autoconf, + automake, + glib, + gtk-doc, + libtool, + intltool, + gitUpdater, }: -mkXfceDerivation { - category = "xfce"; +stdenv.mkDerivation (finalAttrs: { pname = "xfce4-dev-tools"; - version = "4.18.1"; + version = "4.20.0"; - sha256 = "sha256-JUyFlifNVhSnIMaI9qmgCtGIgkpmzYybMfuhPgJiDOg="; + src = fetchFromGitLab { + domain = "gitlab.xfce.org"; + owner = "xfce"; + repo = "xfce4-dev-tools"; + rev = "xfce4-dev-tools-${finalAttrs.version}"; + hash = "sha256-eUfNa/9ksLCKtVwBRtHaVl7Yl95tukUaDdoLNfeR+Ew="; + }; nativeBuildInputs = [ autoreconfHook - libxslt docbook_xsl + libxslt # for xsltproc + # x-d-t itself is not a meson project, but the xfce-do-release script wants + # `meson rewrite kwargs`, thus this is checked by `AC_CHECK_PROGS`. + meson + pkg-config + wrapGAppsHook3 + ]; + + buildInputs = [ + python3 # for xdt-gen-visibility ]; propagatedBuildInputs = [ @@ -33,10 +54,23 @@ mkXfceDerivation { libtool ]; + dontUseMesonConfigure = true; + configureFlags = [ "--enable-maintainer-mode" ]; + + enableParallelBuilding = true; + setupHook = ./setup-hook.sh; - meta = with lib; { - description = "Autoconf macros and scripts to augment app build systems"; - maintainers = with maintainers; [ ] ++ teams.xfce.members; + passthru.updateScript = gitUpdater { + rev-prefix = "xfce4-dev-tools-"; + odd-unstable = true; }; -} + + meta = with lib; { + homepage = "https://gitlab.xfce.org/xfce/xfce4-dev-tools"; + description = "Autoconf macros and scripts to augment app build systems"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ ] ++ teams.xfce.members; + platforms = platforms.linux; + }; +}) diff --git a/pkgs/desktops/xfce/core/xfce4-panel/default.nix b/pkgs/desktops/xfce/core/xfce4-panel/default.nix index 3d96f682dbca..cf664c9c6e7d 100644 --- a/pkgs/desktops/xfce/core/xfce4-panel/default.nix +++ b/pkgs/desktops/xfce/core/xfce4-panel/default.nix @@ -1,24 +1,28 @@ { lib , mkXfceDerivation +, cairo , exo , garcon , gobject-introspection +, gtk-layer-shell , gtk3 , libdbusmenu-gtk3 , libwnck , libxfce4ui , libxfce4util +, libxfce4windowing , tzdata , vala +, wayland , xfconf }: mkXfceDerivation { category = "xfce"; pname = "xfce4-panel"; - version = "4.18.6"; + version = "4.20.0"; - sha256 = "sha256-eQLz/LJIx2WkzcSLytRdJdhtGv0woT48mdqG7eHB0U4="; + sha256 = "sha256-oB7mlU7RZtRuCQAKgv5I7ZRRu703Za7Ki9+AkHSELRE="; nativeBuildInputs = [ gobject-introspection @@ -26,13 +30,17 @@ mkXfceDerivation { ]; buildInputs = [ + cairo exo garcon + gtk-layer-shell libdbusmenu-gtk3 libxfce4ui + libxfce4windowing libwnck - xfconf tzdata + wayland + xfconf ]; propagatedBuildInputs = [ @@ -40,8 +48,6 @@ mkXfceDerivation { libxfce4util ]; - patches = [ ./xfce4-panel-datadir.patch ]; - postPatch = '' substituteInPlace plugins/clock/clock.c \ --replace-fail "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo" diff --git a/pkgs/desktops/xfce/core/xfce4-panel/xfce4-panel-datadir.patch b/pkgs/desktops/xfce/core/xfce4-panel/xfce4-panel-datadir.patch deleted file mode 100644 index ed9df9ef36f3..000000000000 --- a/pkgs/desktops/xfce/core/xfce4-panel/xfce4-panel-datadir.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff --git a/panel/panel-module-factory.c b/panel/panel-module-factory.c -index 529fe85..8c792b7 100644 ---- a/panel/panel-module-factory.c -+++ b/panel/panel-module-factory.c -@@ -39,6 +39,7 @@ - #include - #include - -+#define DATADIR "/run/current-system/sw/share/xfce4" - #define PANEL_PLUGINS_DATA_DIR (DATADIR G_DIR_SEPARATOR_S "panel" G_DIR_SEPARATOR_S "plugins") - #define PANEL_PLUGINS_DATA_DIR_OLD (DATADIR G_DIR_SEPARATOR_S "panel-plugins") - -diff --git a/panel/panel-module.c b/panel/panel-module.c -index ba39320..519440b 100644 ---- a/panel/panel-module.c -+++ b/panel/panel-module.c -@@ -35,6 +35,7 @@ - #include - #include - -+#define LIBDIR "/run/current-system/sw/lib/xfce4" - #define PANEL_PLUGINS_LIB_DIR (LIBDIR G_DIR_SEPARATOR_S "panel" G_DIR_SEPARATOR_S "plugins") - #define PANEL_PLUGINS_LIB_DIR_OLD (LIBDIR G_DIR_SEPARATOR_S "panel-plugins") - diff --git a/pkgs/desktops/xfce/core/xfce4-power-manager/default.nix b/pkgs/desktops/xfce/core/xfce4-power-manager/default.nix index 7c6d58d84bff..f2827a3458de 100644 --- a/pkgs/desktops/xfce/core/xfce4-power-manager/default.nix +++ b/pkgs/desktops/xfce/core/xfce4-power-manager/default.nix @@ -1,10 +1,14 @@ { lib , mkXfceDerivation +, wayland-scanner , gtk3 , libnotify , libxfce4ui , libxfce4util +, polkit , upower +, wayland-protocols +, wlr-protocols , xfconf , xfce4-panel }: @@ -12,16 +16,23 @@ mkXfceDerivation { category = "xfce"; pname = "xfce4-power-manager"; - version = "4.18.4"; + version = "4.20.0"; - sha256 = "sha256-aybY+B8VC/XS6FO3XRpYuJd9Atr9Tc/Uo45q9fh3YLE="; + sha256 = "sha256-qKUdrr+giLzNemhT3EQsOKTSiIx50NakmK14Ak7ZOCE="; + + nativeBuildInputs = [ + wayland-scanner + ]; buildInputs = [ gtk3 libnotify libxfce4ui libxfce4util + polkit upower + wayland-protocols + wlr-protocols xfconf xfce4-panel ]; @@ -29,8 +40,8 @@ mkXfceDerivation { # using /run/current-system/sw/bin instead of nix store path prevents polkit permission errors on # rebuild. See https://github.com/NixOS/nixpkgs/issues/77485 postPatch = '' - substituteInPlace src/org.xfce.power.policy.in2 --replace-fail "@sbindir@" "/run/current-system/sw/bin" - substituteInPlace common/xfpm-brightness.c --replace-fail "SBINDIR" "\"/run/current-system/sw/bin\"" + substituteInPlace src/org.xfce.power.policy.in.in --replace-fail "@sbindir@" "/run/current-system/sw/bin" + substituteInPlace common/xfpm-brightness-polkit.c --replace-fail "SBINDIR" "\"/run/current-system/sw/bin\"" substituteInPlace src/xfpm-suspend.c --replace-fail "SBINDIR" "\"/run/current-system/sw/bin\"" ''; diff --git a/pkgs/desktops/xfce/core/xfce4-session/default.nix b/pkgs/desktops/xfce/core/xfce4-session/default.nix index 5d2e21598d4f..79d131723e6f 100644 --- a/pkgs/desktops/xfce/core/xfce4-session/default.nix +++ b/pkgs/desktops/xfce/core/xfce4-session/default.nix @@ -4,9 +4,11 @@ , exo , libxfce4util , libxfce4ui +, libxfce4windowing , xfconf , iceauth , gtk3 +, gtk-layer-shell , glib , libwnck , xfce4-session @@ -15,23 +17,28 @@ mkXfceDerivation { category = "xfce"; pname = "xfce4-session"; - version = "4.18.4"; + version = "4.20.0"; - sha256 = "sha256-YxIHxb8mRggHLJ9TQ+KGb9qjt+DMZrxMn+oFuFRL8GI="; + sha256 = "sha256-mn3ky1NzrpQZRkhc605mj+GFhbFq26eW59YKUfnX9X8="; buildInputs = [ exo gtk3 + gtk-layer-shell glib libxfce4ui libxfce4util + libxfce4windowing libwnck xfconf polkit iceauth ]; - configureFlags = [ "--with-xsession-prefix=${placeholder "out"}" ]; + configureFlags = [ + "--with-xsession-prefix=${placeholder "out"}" + "--with-wayland-session-prefix=${placeholder "out"}" + ]; passthru.xinitrc = "${xfce4-session}/etc/xdg/xfce4/xinitrc"; diff --git a/pkgs/desktops/xfce/core/xfce4-settings/default.nix b/pkgs/desktops/xfce/core/xfce4-settings/default.nix index 73f22d35f0fd..53b026f8be4d 100644 --- a/pkgs/desktops/xfce/core/xfce4-settings/default.nix +++ b/pkgs/desktops/xfce/core/xfce4-settings/default.nix @@ -1,8 +1,10 @@ { lib , mkXfceDerivation +, wayland-scanner , exo , garcon , gtk3 +, gtk-layer-shell , glib , libnotify , libxfce4ui @@ -12,6 +14,7 @@ # Disabled by default on upstream and actually causes issues: # https://gitlab.xfce.org/xfce/xfce4-settings/-/issues/222 , withUpower ? false +, wlr-protocols , xfconf , xf86inputlibinput , colord @@ -21,19 +24,25 @@ mkXfceDerivation { category = "xfce"; pname = "xfce4-settings"; - version = "4.18.6"; + version = "4.20.0"; - sha256 = "sha256-xiu26B3dbWu+/AtF/iUC6Wo2U5ZZyzN9RfdbBaQRJ1M="; + sha256 = "sha256-0fMuAucyxLr2VzQqAB0CL+HgkHNJctiVNZmUmTNzaPc="; + + nativeBuildInputs = [ + wayland-scanner + ]; buildInputs = [ exo garcon glib gtk3 + gtk-layer-shell libnotify libxfce4ui libxfce4util libxklavier + wlr-protocols xf86inputlibinput xfconf ] diff --git a/pkgs/desktops/xfce/core/xfconf/default.nix b/pkgs/desktops/xfce/core/xfconf/default.nix index 45873f7ef248..82a33a4b458e 100644 --- a/pkgs/desktops/xfce/core/xfconf/default.nix +++ b/pkgs/desktops/xfce/core/xfconf/default.nix @@ -8,9 +8,9 @@ mkXfceDerivation { category = "xfce"; pname = "xfconf"; - version = "4.18.3"; + version = "4.20.0"; - sha256 = "sha256-Iu/LHyk/lOvu8uJuJRDxIkabiX0vZB4H99vVKRiugVo="; + sha256 = "sha256-U+Sk7ubBr1ZD1GLQXlxrx0NQdhV/WpVBbnLcc94Tjcw="; nativeBuildInputs = [ gobject-introspection vala ]; diff --git a/pkgs/desktops/xfce/core/xfdesktop/default.nix b/pkgs/desktops/xfce/core/xfdesktop/default.nix index ed36d2b92b73..ab6900c28e1f 100644 --- a/pkgs/desktops/xfce/core/xfdesktop/default.nix +++ b/pkgs/desktops/xfce/core/xfdesktop/default.nix @@ -1,21 +1,37 @@ -{ lib, mkXfceDerivation, exo, gtk3, libxfce4ui, libxfce4util, libwnck, xfconf, libnotify, garcon, thunar }: +{ + lib, + mkXfceDerivation, + exo, + gtk3, + libxfce4ui, + libxfce4util, + libxfce4windowing, + libyaml, + xfconf, + libnotify, + garcon, + gtk-layer-shell, + thunar, +}: mkXfceDerivation { category = "xfce"; pname = "xfdesktop"; - version = "4.18.1"; + version = "4.20.0"; - sha256 = "sha256-33G7X5kA3MCNJ9Aq9ZCafP0Qm/46iUmLFB8clhKwDz8="; + sha256 = "sha256-80g3lk1TkQI0fbYf2nXs36TrPlaGTHgH6k/TGOzRd3w="; buildInputs = [ exo gtk3 libxfce4ui libxfce4util - libwnck + libxfce4windowing + libyaml xfconf libnotify garcon + gtk-layer-shell thunar ]; diff --git a/pkgs/desktops/xfce/core/xfwm4/default.nix b/pkgs/desktops/xfce/core/xfwm4/default.nix index abd08f5a6f3d..82c895cd41b1 100644 --- a/pkgs/desktops/xfce/core/xfwm4/default.nix +++ b/pkgs/desktops/xfce/core/xfwm4/default.nix @@ -5,9 +5,9 @@ mkXfceDerivation { category = "xfce"; pname = "xfwm4"; - version = "4.18.0"; + version = "4.20.0"; - sha256 = "sha256-nTPgxC0XMBJ48lPCeQgCvWWK1/2ZIoQOYsMeaxDpE1c="; + sha256 = "sha256-5UZQrAH0oz+G+7cvXCLDJ4GSXNJcyl4Ap9umb7h0f5Q="; nativeBuildInputs = [ exo librsvg ]; diff --git a/pkgs/desktops/xfce/default.nix b/pkgs/desktops/xfce/default.nix index 5d0efd28bfe9..dabfe761a7ba 100644 --- a/pkgs/desktops/xfce/default.nix +++ b/pkgs/desktops/xfce/default.nix @@ -61,11 +61,7 @@ makeScopeWithSplicing' { xfce4-appfinder = callPackage ./core/xfce4-appfinder { }; - xfce4-dev-tools = callPackage ./core/xfce4-dev-tools { - mkXfceDerivation = self.mkXfceDerivation.override { - xfce4-dev-tools = null; - }; - }; + xfce4-dev-tools = callPackage ./core/xfce4-dev-tools { }; #### APPLICATIONS diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-docklike-plugin/default.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-docklike-plugin/default.nix index 3f9b414e7713..b4f6121033d0 100644 --- a/pkgs/desktops/xfce/panel-plugins/xfce4-docklike-plugin/default.nix +++ b/pkgs/desktops/xfce/panel-plugins/xfce4-docklike-plugin/default.nix @@ -3,32 +3,33 @@ , cairo , glib , gtk3 +, gtk-layer-shell , libX11 , libxfce4ui , libxfce4util , xfce4-panel -, libwnck +, libxfce4windowing }: mkXfceDerivation { category = "panel-plugins"; pname = "xfce4-docklike-plugin"; - version = "0.4.2"; - sha256 = "sha256-M/V8cnEU/nSEDjQ3k8fWiklF5OuNg3uzzJMHBSZBiLU="; + version = "0.4.2-unstable-2024-11-04"; + rev = "1154bf1c9f291d5699663910d5aac71bb3ab2227"; + sha256 = "sha256-uno3qNyuesK/hJMdAxHZS6XMysr7ySOgJ5ACXGcIWFs="; buildInputs = [ cairo glib gtk3 + gtk-layer-shell libX11 libxfce4ui libxfce4util xfce4-panel - libwnck + libxfce4windowing ]; - NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0"; - meta = with lib; { homepage = "https://docs.xfce.org/panel-plugins/xfce4-docklike-plugin/start"; description = "Modern, minimalist taskbar for Xfce"; diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-pulseaudio-plugin/default.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-pulseaudio-plugin/default.nix index b14ebb67374a..71e604ddc5f0 100644 --- a/pkgs/desktops/xfce/panel-plugins/xfce4-pulseaudio-plugin/default.nix +++ b/pkgs/desktops/xfce/panel-plugins/xfce4-pulseaudio-plugin/default.nix @@ -7,6 +7,7 @@ , libnotify , libxfce4ui , libxfce4util +, libxfce4windowing , xfce4-panel , xfconf , keybinder3 @@ -16,12 +17,8 @@ mkXfceDerivation { category = "panel-plugins"; pname = "xfce4-pulseaudio-plugin"; - version = "0.4.8"; - sha256 = "sha256-7vcjARm0O+/hVNFzOpxcgAnqD+wRNg5/eqXLcq4t/iU="; - - postPatch = '' - substituteInPlace configure.ac.in --replace gio-2.0 gio-unix-2.0 - ''; + version = "0.4.9"; + sha256 = "sha256-bJp4HicAFPuRATDHus0DfJFy1c6gw6Tkpd2UN7SXqsI="; buildInputs = [ exo @@ -33,6 +30,7 @@ mkXfceDerivation { libpulseaudio libxfce4ui libxfce4util + libxfce4windowing xfce4-panel xfconf ];