This commit is contained in:
Bobby Rong 2024-12-17 08:36:52 +08:00 committed by GitHub
commit d8890db135
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
29 changed files with 360 additions and 115 deletions

View file

@ -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. - 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"`. - 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. - `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. - `services.avahi.ipv6` now defaults to true.

View file

@ -69,6 +69,22 @@ in
default = true; default = true;
description = "Enable the XFCE screensaver."; 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 { environment.xfce.excludePackages = mkOption {
@ -134,6 +150,8 @@ in
programs.gnupg.agent.pinentryPackage = mkDefault pkgs.pinentry-gtk2; programs.gnupg.agent.pinentryPackage = mkDefault pkgs.pinentry-gtk2;
programs.xfconf.enable = true; programs.xfconf.enable = true;
programs.thunar.enable = true; programs.thunar.enable = true;
programs.labwc.enable = mkDefault (cfg.enableWaylandSession && (
cfg.waylandSessionCompositor == "" || lib.substring 0 5 cfg.waylandSessionCompositor == "labwc"));
environment.pathsToLink = [ environment.pathsToLink = [
"/share/xfce4" "/share/xfce4"
@ -144,6 +162,7 @@ in
services.xserver.desktopManager.session = [{ services.xserver.desktopManager.session = [{
name = "xfce"; name = "xfce";
prettyName = "Xfce Session";
desktopNames = [ "XFCE" ]; desktopNames = [ "XFCE" ];
bgSupport = !cfg.noDesktop; bgSupport = !cfg.noDesktop;
start = '' 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; services.xserver.updateDbusEnvironment = true;
programs.gdk-pixbuf.modulePackages = [ pkgs.librsvg ]; programs.gdk-pixbuf.modulePackages = [ pkgs.librsvg ];

View file

@ -279,6 +279,11 @@ in
lib.mapCartesianProduct lib.mapCartesianProduct
({dm, wm}: let ({dm, wm}: let
sessionName = "${dm.name}${optionalString (wm.name != "none") ("+" + wm.name)}"; 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; script = xsession dm wm;
desktopNames = if dm ? desktopNames desktopNames = if dm ? desktopNames
then lib.concatStringsSep ";" dm.desktopNames then lib.concatStringsSep ";" dm.desktopNames
@ -297,7 +302,7 @@ in
Type=XSession Type=XSession
TryExec=${script} TryExec=${script}
Exec=${script} Exec=${script}
Name=${sessionName} Name=${prettyName}
DesktopNames=${desktopNames} DesktopNames=${desktopNames}
''; '';
} // { } // {

View file

@ -1164,6 +1164,7 @@ in {
xandikos = handleTest ./xandikos.nix {}; xandikos = handleTest ./xandikos.nix {};
xautolock = handleTest ./xautolock.nix {}; xautolock = handleTest ./xautolock.nix {};
xfce = handleTest ./xfce.nix {}; xfce = handleTest ./xfce.nix {};
xfce-wayland = handleTest ./xfce-wayland.nix {};
xmonad = handleTest ./xmonad.nix {}; xmonad = handleTest ./xmonad.nix {};
xmonad-xdg-autostart = handleTest ./xmonad-xdg-autostart.nix {}; xmonad-xdg-autostart = handleTest ./xmonad-xdg-autostart.nix {};
xpadneo = handleTest ./xpadneo.nix {}; xpadneo = handleTest ./xpadneo.nix {};

View file

@ -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")
'';
}
)

View file

@ -45,6 +45,11 @@ stdenv.mkDerivation rec {
"--sbindir=${placeholder "out"}/bin" # for wrapGAppsHook3 to wrap automatically "--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 = '' preConfigure = ''
configureFlagsArray+=( --enable-at-spi-command="${at-spi2-core}/libexec/at-spi-bus-launcher --launch-immediately" ) configureFlagsArray+=( --enable-at-spi-command="${at-spi2-core}/libexec/at-spi-bus-launcher --launch-immediately" )
''; '';

View file

@ -2,6 +2,7 @@
lib, lib,
stdenv, stdenv,
fetchFromGitHub, fetchFromGitHub,
fetchpatch,
accountsservice, accountsservice,
alsa-lib, alsa-lib,
budgie-screensaver, budgie-screensaver,
@ -60,7 +61,16 @@ stdenv.mkDerivation (finalAttrs: {
"man" "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 = [ nativeBuildInputs = [
docbook-xsl-nons docbook-xsl-nons

View file

@ -1,6 +1,7 @@
{ lib { lib
, stdenv , stdenv
, fetchFromGitHub , fetchFromGitHub
, fetchpatch
, meson , meson
, ninja , ninja
, pkg-config , pkg-config
@ -22,6 +23,15 @@ stdenv.mkDerivation rec {
sha256 = "+MZQ3FThuRFEfoARsF09B7POwytS5RgTs9zYzIHVtfg="; 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 = [ nativeBuildInputs = [
meson meson
ninja ninja

View file

@ -4,9 +4,9 @@
mkXfceDerivation { mkXfceDerivation {
category = "xfce"; category = "xfce";
pname = "exo"; pname = "exo";
version = "4.18.0"; version = "4.20.0";
sha256 = "sha256-oWlKeUD1v2qqb8vY+2Cu9VJ1iThFPVboP12m/ob5KSQ="; sha256 = "sha256-mlGsFaKy96eEAYgYYqtEI4naq5ZSEe3V7nsWGAEucn0=";
nativeBuildInputs = [ nativeBuildInputs = [
libxslt libxslt
@ -18,13 +18,9 @@ mkXfceDerivation {
glib glib
libxfce4ui libxfce4ui
libxfce4util libxfce4util
(perl.withPackages(ps: with ps; [ URI ])) # for $out/lib/xfce4/exo/exo-compose-mail (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; { meta = with lib; {
description = "Application library for Xfce"; description = "Application library for Xfce";
maintainers = with maintainers; [ ] ++ teams.xfce.members; maintainers = with maintainers; [ ] ++ teams.xfce.members;

View file

@ -3,9 +3,9 @@
mkXfceDerivation { mkXfceDerivation {
category = "xfce"; category = "xfce";
pname = "garcon"; pname = "garcon";
version = "4.18.2"; version = "4.20.0";
sha256 = "sha256-J9f9MzZ1I9XIyvwuyINkvXDuXY6/MkjlH2Ct4yaEXsY="; sha256 = "sha256-MeZkDb2QgGMaloO6Nwlj9JmZByepd6ERqpAWqrVv1xw=";
nativeBuildInputs = [ gobject-introspection ]; nativeBuildInputs = [ gobject-introspection ];

View file

@ -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 { mkXfceDerivation {
category = "xfce"; category = "xfce";
pname = "libxfce4ui"; 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 ]; nativeBuildInputs = [
buildInputs = [ gtk3 libstartup_notification libgtop libepoxy xfconf ]; gobject-introspection
propagatedBuildInputs = [ libxfce4util libICE libSM ]; vala
];
buildInputs = [
libICE
libSM
libepoxy
libgtop
libgudev
libstartup_notification
xfconf
];
propagatedBuildInputs = [
gtk3
libxfce4util
];
configureFlags = [ configureFlags = [
"--with-vendor-info=NixOS" "--with-vendor-info=NixOS"
@ -19,7 +48,10 @@ mkXfceDerivation {
meta = with lib; { meta = with lib; {
description = "Widgets library for Xfce"; description = "Widgets library for Xfce";
mainProgram = "xfce4-about"; mainProgram = "xfce4-about";
license = with licenses; [ lgpl2Plus lgpl21Plus ]; license = with licenses; [
lgpl2Plus
lgpl21Plus
];
maintainers = with maintainers; [ ] ++ teams.xfce.members; maintainers = with maintainers; [ ] ++ teams.xfce.members;
}; };
} }

View file

@ -1,13 +1,26 @@
{ lib, mkXfceDerivation, gobject-introspection, vala }: {
mkXfceDerivation,
lib,
gobject-introspection,
vala,
glib,
}:
mkXfceDerivation { mkXfceDerivation {
category = "xfce"; category = "xfce";
pname = "libxfce4util"; 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; { meta = with lib; {
description = "Extension library for Xfce"; description = "Extension library for Xfce";

View file

@ -4,18 +4,21 @@
, wayland-scanner , wayland-scanner
, glib , glib
, gtk3 , gtk3
, libdisplay-info
, libwnck , libwnck
, libX11 , libX11
, libXrandr
, wayland , wayland
, wayland-protocols
, wlr-protocols , wlr-protocols
}: }:
mkXfceDerivation { mkXfceDerivation {
category = "xfce"; category = "xfce";
pname = "libxfce4windowing"; pname = "libxfce4windowing";
version = "4.19.3"; version = "4.20.0";
sha256 = "sha256-nsobRyGeagUq1WHzYBq6vd9g5A65KEQC4cX+m7w0pqg="; sha256 = "sha256-t/GbsGipc0Ts2tZJaDJBuDF+9XMp8+Trq78NPAuHEpU=";
nativeBuildInputs = [ nativeBuildInputs = [
gobject-introspection gobject-introspection
@ -25,9 +28,12 @@ mkXfceDerivation {
buildInputs = [ buildInputs = [
glib glib
gtk3 gtk3
libdisplay-info
libwnck libwnck
libX11 libX11
libXrandr
wayland wayland
wayland-protocols
wlr-protocols wlr-protocols
]; ];

View file

@ -3,11 +3,11 @@
mkXfceDerivation { mkXfceDerivation {
category = "xfce"; category = "xfce";
pname = "thunar-volman"; pname = "thunar-volman";
version = "4.18.0"; version = "4.20.0";
buildInputs = [ exo gtk3 libgudev libxfce4ui libxfce4util xfconf ]; buildInputs = [ exo gtk3 libgudev libxfce4ui libxfce4util xfconf ];
sha256 = "sha256-NRVoakU8jTCJVe+iyJQwW1xPti2vjd/8n8CYrIYGII0="; sha256 = "sha256-XIVs/vRwy3QJQW/U7eLBvGdzplWlhdxn3f1lyTQsmpE=";
odd-unstable = false; odd-unstable = false;

View file

@ -23,9 +23,9 @@
let unwrapped = mkXfceDerivation { let unwrapped = mkXfceDerivation {
category = "xfce"; category = "xfce";
pname = "thunar"; pname = "thunar";
version = "4.18.11"; version = "4.20.0";
sha256 = "sha256-B417gkrU9EG4ZsEdeuH8P2v4FqYUiTwqgKcO4cSi4SI="; sha256 = "sha256-TCroFesFD0IKGdfuootd1BwEsWVECE2XQfUovJqPEh0=";
nativeBuildInputs = [ nativeBuildInputs = [
docbook_xsl docbook_xsl

View file

@ -19,9 +19,9 @@
mkXfceDerivation { mkXfceDerivation {
category = "xfce"; category = "xfce";
pname = "tumbler"; pname = "tumbler";
version = "4.18.2"; version = "4.20.0";
sha256 = "sha256-thioE0q2qnV4weJFPz8OWoHIRuUcXnQEviwBtCWsSV4="; sha256 = "sha256-GmEMdG8Ikd4Tq/1ntCHiN0S7ehUXqzMX7OtXsycLd6E=";
buildInputs = [ buildInputs = [
libxfce4util libxfce4util

View file

@ -3,9 +3,9 @@
mkXfceDerivation { mkXfceDerivation {
category = "xfce"; category = "xfce";
pname = "xfce4-appfinder"; pname = "xfce4-appfinder";
version = "4.18.1"; version = "4.20.0";
sha256 = "sha256-CZEX1PzFsVt72Fkb4+5PiZjAcDisvYnbzFGFXjFL4sc="; sha256 = "sha256-HovQnkfv5BOsRPowgMkMEWQmESkivVK0Xb7I15ZaOMc=";
nativeBuildInputs = [ exo ]; nativeBuildInputs = [ exo ];
buildInputs = [ garcon gtk3 libxfce4ui libxfce4util xfconf ]; buildInputs = [ garcon gtk3 libxfce4ui libxfce4util xfconf ];

View file

@ -1,27 +1,48 @@
{ lib {
, mkXfceDerivation stdenv,
, autoreconfHook lib,
, libxslt fetchFromGitLab,
, docbook_xsl autoreconfHook,
, autoconf docbook_xsl,
, automake libxslt,
, glib meson,
, gtk-doc pkg-config,
, intltool wrapGAppsHook3,
, libtool python3,
autoconf,
automake,
glib,
gtk-doc,
libtool,
intltool,
gitUpdater,
}: }:
mkXfceDerivation { stdenv.mkDerivation (finalAttrs: {
category = "xfce";
pname = "xfce4-dev-tools"; 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 = [ nativeBuildInputs = [
autoreconfHook autoreconfHook
libxslt
docbook_xsl 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 = [ propagatedBuildInputs = [
@ -33,10 +54,23 @@ mkXfceDerivation {
libtool libtool
]; ];
dontUseMesonConfigure = true;
configureFlags = [ "--enable-maintainer-mode" ];
enableParallelBuilding = true;
setupHook = ./setup-hook.sh; setupHook = ./setup-hook.sh;
meta = with lib; { passthru.updateScript = gitUpdater {
description = "Autoconf macros and scripts to augment app build systems"; rev-prefix = "xfce4-dev-tools-";
maintainers = with maintainers; [ ] ++ teams.xfce.members; 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;
};
})

View file

@ -1,24 +1,28 @@
{ lib { lib
, mkXfceDerivation , mkXfceDerivation
, cairo
, exo , exo
, garcon , garcon
, gobject-introspection , gobject-introspection
, gtk-layer-shell
, gtk3 , gtk3
, libdbusmenu-gtk3 , libdbusmenu-gtk3
, libwnck , libwnck
, libxfce4ui , libxfce4ui
, libxfce4util , libxfce4util
, libxfce4windowing
, tzdata , tzdata
, vala , vala
, wayland
, xfconf , xfconf
}: }:
mkXfceDerivation { mkXfceDerivation {
category = "xfce"; category = "xfce";
pname = "xfce4-panel"; pname = "xfce4-panel";
version = "4.18.6"; version = "4.20.0";
sha256 = "sha256-eQLz/LJIx2WkzcSLytRdJdhtGv0woT48mdqG7eHB0U4="; sha256 = "sha256-oB7mlU7RZtRuCQAKgv5I7ZRRu703Za7Ki9+AkHSELRE=";
nativeBuildInputs = [ nativeBuildInputs = [
gobject-introspection gobject-introspection
@ -26,13 +30,17 @@ mkXfceDerivation {
]; ];
buildInputs = [ buildInputs = [
cairo
exo exo
garcon garcon
gtk-layer-shell
libdbusmenu-gtk3 libdbusmenu-gtk3
libxfce4ui libxfce4ui
libxfce4windowing
libwnck libwnck
xfconf
tzdata tzdata
wayland
xfconf
]; ];
propagatedBuildInputs = [ propagatedBuildInputs = [
@ -40,8 +48,6 @@ mkXfceDerivation {
libxfce4util libxfce4util
]; ];
patches = [ ./xfce4-panel-datadir.patch ];
postPatch = '' postPatch = ''
substituteInPlace plugins/clock/clock.c \ substituteInPlace plugins/clock/clock.c \
--replace-fail "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo" --replace-fail "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo"

View file

@ -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 <panel/panel-module.h>
#include <panel/panel-module-factory.h>
+#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 <panel/panel-plugin-external-wrapper.h>
#include <panel/panel-plugin-external-46.h>
+#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")

View file

@ -1,10 +1,14 @@
{ lib { lib
, mkXfceDerivation , mkXfceDerivation
, wayland-scanner
, gtk3 , gtk3
, libnotify , libnotify
, libxfce4ui , libxfce4ui
, libxfce4util , libxfce4util
, polkit
, upower , upower
, wayland-protocols
, wlr-protocols
, xfconf , xfconf
, xfce4-panel , xfce4-panel
}: }:
@ -12,16 +16,23 @@
mkXfceDerivation { mkXfceDerivation {
category = "xfce"; category = "xfce";
pname = "xfce4-power-manager"; 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 = [ buildInputs = [
gtk3 gtk3
libnotify libnotify
libxfce4ui libxfce4ui
libxfce4util libxfce4util
polkit
upower upower
wayland-protocols
wlr-protocols
xfconf xfconf
xfce4-panel xfce4-panel
]; ];
@ -29,8 +40,8 @@ mkXfceDerivation {
# using /run/current-system/sw/bin instead of nix store path prevents polkit permission errors on # 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 # rebuild. See https://github.com/NixOS/nixpkgs/issues/77485
postPatch = '' postPatch = ''
substituteInPlace src/org.xfce.power.policy.in2 --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.c --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\"" substituteInPlace src/xfpm-suspend.c --replace-fail "SBINDIR" "\"/run/current-system/sw/bin\""
''; '';

View file

@ -4,9 +4,11 @@
, exo , exo
, libxfce4util , libxfce4util
, libxfce4ui , libxfce4ui
, libxfce4windowing
, xfconf , xfconf
, iceauth , iceauth
, gtk3 , gtk3
, gtk-layer-shell
, glib , glib
, libwnck , libwnck
, xfce4-session , xfce4-session
@ -15,23 +17,28 @@
mkXfceDerivation { mkXfceDerivation {
category = "xfce"; category = "xfce";
pname = "xfce4-session"; pname = "xfce4-session";
version = "4.18.4"; version = "4.20.0";
sha256 = "sha256-YxIHxb8mRggHLJ9TQ+KGb9qjt+DMZrxMn+oFuFRL8GI="; sha256 = "sha256-mn3ky1NzrpQZRkhc605mj+GFhbFq26eW59YKUfnX9X8=";
buildInputs = [ buildInputs = [
exo exo
gtk3 gtk3
gtk-layer-shell
glib glib
libxfce4ui libxfce4ui
libxfce4util libxfce4util
libxfce4windowing
libwnck libwnck
xfconf xfconf
polkit polkit
iceauth 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"; passthru.xinitrc = "${xfce4-session}/etc/xdg/xfce4/xinitrc";

View file

@ -1,8 +1,10 @@
{ lib { lib
, mkXfceDerivation , mkXfceDerivation
, wayland-scanner
, exo , exo
, garcon , garcon
, gtk3 , gtk3
, gtk-layer-shell
, glib , glib
, libnotify , libnotify
, libxfce4ui , libxfce4ui
@ -12,6 +14,7 @@
# Disabled by default on upstream and actually causes issues: # Disabled by default on upstream and actually causes issues:
# https://gitlab.xfce.org/xfce/xfce4-settings/-/issues/222 # https://gitlab.xfce.org/xfce/xfce4-settings/-/issues/222
, withUpower ? false , withUpower ? false
, wlr-protocols
, xfconf , xfconf
, xf86inputlibinput , xf86inputlibinput
, colord , colord
@ -21,19 +24,25 @@
mkXfceDerivation { mkXfceDerivation {
category = "xfce"; category = "xfce";
pname = "xfce4-settings"; pname = "xfce4-settings";
version = "4.18.6"; version = "4.20.0";
sha256 = "sha256-xiu26B3dbWu+/AtF/iUC6Wo2U5ZZyzN9RfdbBaQRJ1M="; sha256 = "sha256-0fMuAucyxLr2VzQqAB0CL+HgkHNJctiVNZmUmTNzaPc=";
nativeBuildInputs = [
wayland-scanner
];
buildInputs = [ buildInputs = [
exo exo
garcon garcon
glib glib
gtk3 gtk3
gtk-layer-shell
libnotify libnotify
libxfce4ui libxfce4ui
libxfce4util libxfce4util
libxklavier libxklavier
wlr-protocols
xf86inputlibinput xf86inputlibinput
xfconf xfconf
] ]

View file

@ -8,9 +8,9 @@
mkXfceDerivation { mkXfceDerivation {
category = "xfce"; category = "xfce";
pname = "xfconf"; pname = "xfconf";
version = "4.18.3"; version = "4.20.0";
sha256 = "sha256-Iu/LHyk/lOvu8uJuJRDxIkabiX0vZB4H99vVKRiugVo="; sha256 = "sha256-U+Sk7ubBr1ZD1GLQXlxrx0NQdhV/WpVBbnLcc94Tjcw=";
nativeBuildInputs = [ gobject-introspection vala ]; nativeBuildInputs = [ gobject-introspection vala ];

View file

@ -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 { mkXfceDerivation {
category = "xfce"; category = "xfce";
pname = "xfdesktop"; pname = "xfdesktop";
version = "4.18.1"; version = "4.20.0";
sha256 = "sha256-33G7X5kA3MCNJ9Aq9ZCafP0Qm/46iUmLFB8clhKwDz8="; sha256 = "sha256-80g3lk1TkQI0fbYf2nXs36TrPlaGTHgH6k/TGOzRd3w=";
buildInputs = [ buildInputs = [
exo exo
gtk3 gtk3
libxfce4ui libxfce4ui
libxfce4util libxfce4util
libwnck libxfce4windowing
libyaml
xfconf xfconf
libnotify libnotify
garcon garcon
gtk-layer-shell
thunar thunar
]; ];

View file

@ -5,9 +5,9 @@
mkXfceDerivation { mkXfceDerivation {
category = "xfce"; category = "xfce";
pname = "xfwm4"; pname = "xfwm4";
version = "4.18.0"; version = "4.20.0";
sha256 = "sha256-nTPgxC0XMBJ48lPCeQgCvWWK1/2ZIoQOYsMeaxDpE1c="; sha256 = "sha256-5UZQrAH0oz+G+7cvXCLDJ4GSXNJcyl4Ap9umb7h0f5Q=";
nativeBuildInputs = [ exo librsvg ]; nativeBuildInputs = [ exo librsvg ];

View file

@ -61,11 +61,7 @@ makeScopeWithSplicing' {
xfce4-appfinder = callPackage ./core/xfce4-appfinder { }; xfce4-appfinder = callPackage ./core/xfce4-appfinder { };
xfce4-dev-tools = callPackage ./core/xfce4-dev-tools { xfce4-dev-tools = callPackage ./core/xfce4-dev-tools { };
mkXfceDerivation = self.mkXfceDerivation.override {
xfce4-dev-tools = null;
};
};
#### APPLICATIONS #### APPLICATIONS

View file

@ -3,32 +3,33 @@
, cairo , cairo
, glib , glib
, gtk3 , gtk3
, gtk-layer-shell
, libX11 , libX11
, libxfce4ui , libxfce4ui
, libxfce4util , libxfce4util
, xfce4-panel , xfce4-panel
, libwnck , libxfce4windowing
}: }:
mkXfceDerivation { mkXfceDerivation {
category = "panel-plugins"; category = "panel-plugins";
pname = "xfce4-docklike-plugin"; pname = "xfce4-docklike-plugin";
version = "0.4.2"; version = "0.4.2-unstable-2024-11-04";
sha256 = "sha256-M/V8cnEU/nSEDjQ3k8fWiklF5OuNg3uzzJMHBSZBiLU="; rev = "1154bf1c9f291d5699663910d5aac71bb3ab2227";
sha256 = "sha256-uno3qNyuesK/hJMdAxHZS6XMysr7ySOgJ5ACXGcIWFs=";
buildInputs = [ buildInputs = [
cairo cairo
glib glib
gtk3 gtk3
gtk-layer-shell
libX11 libX11
libxfce4ui libxfce4ui
libxfce4util libxfce4util
xfce4-panel xfce4-panel
libwnck libxfce4windowing
]; ];
NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
meta = with lib; { meta = with lib; {
homepage = "https://docs.xfce.org/panel-plugins/xfce4-docklike-plugin/start"; homepage = "https://docs.xfce.org/panel-plugins/xfce4-docklike-plugin/start";
description = "Modern, minimalist taskbar for Xfce"; description = "Modern, minimalist taskbar for Xfce";

View file

@ -7,6 +7,7 @@
, libnotify , libnotify
, libxfce4ui , libxfce4ui
, libxfce4util , libxfce4util
, libxfce4windowing
, xfce4-panel , xfce4-panel
, xfconf , xfconf
, keybinder3 , keybinder3
@ -16,12 +17,8 @@
mkXfceDerivation { mkXfceDerivation {
category = "panel-plugins"; category = "panel-plugins";
pname = "xfce4-pulseaudio-plugin"; pname = "xfce4-pulseaudio-plugin";
version = "0.4.8"; version = "0.4.9";
sha256 = "sha256-7vcjARm0O+/hVNFzOpxcgAnqD+wRNg5/eqXLcq4t/iU="; sha256 = "sha256-bJp4HicAFPuRATDHus0DfJFy1c6gw6Tkpd2UN7SXqsI=";
postPatch = ''
substituteInPlace configure.ac.in --replace gio-2.0 gio-unix-2.0
'';
buildInputs = [ buildInputs = [
exo exo
@ -33,6 +30,7 @@ mkXfceDerivation {
libpulseaudio libpulseaudio
libxfce4ui libxfce4ui
libxfce4util libxfce4util
libxfce4windowing
xfce4-panel xfce4-panel
xfconf xfconf
]; ];