From e3945f2507862d0b1d3346e5a0ad177c2e3c223c Mon Sep 17 00:00:00 2001 From: linsui Date: Fri, 21 Jun 2024 17:00:25 +0800 Subject: [PATCH 1/3] gnomeExtensions.systemd-manager: package manually As per https://extensions.gnome.org/extension/4174/systemd-manager/ this is no longer uploaded to e.g.o --- .../gnome/extensions/manuallyPackaged.nix | 1 + .../extensions/systemd-manager/default.nix | 42 +++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 pkgs/desktops/gnome/extensions/systemd-manager/default.nix diff --git a/pkgs/desktops/gnome/extensions/manuallyPackaged.nix b/pkgs/desktops/gnome/extensions/manuallyPackaged.nix index 376a4a09bad8..fa5d72cb1c49 100644 --- a/pkgs/desktops/gnome/extensions/manuallyPackaged.nix +++ b/pkgs/desktops/gnome/extensions/manuallyPackaged.nix @@ -11,6 +11,7 @@ "pidgin@muffinmad" = callPackage ./pidgin-im-integration { }; "pop-shell@system76.com" = callPackage ./pop-shell { }; "sound-output-device-chooser@kgshank.net" = callPackage ./sound-output-device-chooser { }; + "systemd-manager@hardpixel.eu" = callPackage ./systemd-manager { }; "taskwhisperer-extension@infinicode.de" = callPackage ./taskwhisperer { }; "tilingnome@rliang.github.com" = callPackage ./tilingnome { }; "TopIcons@phocean.net" = callPackage ./topicons-plus { }; diff --git a/pkgs/desktops/gnome/extensions/systemd-manager/default.nix b/pkgs/desktops/gnome/extensions/systemd-manager/default.nix new file mode 100644 index 000000000000..148df22805cc --- /dev/null +++ b/pkgs/desktops/gnome/extensions/systemd-manager/default.nix @@ -0,0 +1,42 @@ +{ + lib, + stdenvNoCC, + fetchFromGitHub, + glib, +}: + +stdenvNoCC.mkDerivation rec { + pname = "gnome-shell-extension-systemd-manager"; + version = "16"; + + # Upstream doesn't post new versions in extensions.gnome.org anymore, see also: + # https://github.com/hardpixel/systemd-manager/issues/19 + src = fetchFromGitHub { + owner = "hardpixel"; + repo = "systemd-manager"; + rev = "v${version}"; + hash = "sha256-JecSIRj582jJWdrCQYBWFRkIhosxRhD3BxSAy8/0nVw="; + }; + + nativeBuildInputs = [ glib ]; + + postInstall = '' + rm systemd-manager@hardpixel.eu/schemas/gschemas.compiled + glib-compile-schemas systemd-manager@hardpixel.eu/schemas + + mkdir -p $out/share/gnome-shell/extensions + mv systemd-manager@hardpixel.eu $out/share/gnome-shell/extensions + ''; + + passthru = { + extensionUuid = "systemd-manager@hardpixel.eu"; + extensionPortalSlug = "systemd-manager"; + }; + + meta = with lib; { + description = "GNOME Shell extension to manage systemd services"; + homepage = "https://github.com/hardpixel/systemd-manager"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ linsui ]; + }; +} From 4c0a299d2c685d9180c2928dff0bb6cb53df60fc Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Fri, 21 Jun 2024 13:43:54 +0300 Subject: [PATCH 2/3] gnomeExtensions.systemd-manager: allow install polkit files --- .../gnome/extensions/systemd-manager/default.nix | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pkgs/desktops/gnome/extensions/systemd-manager/default.nix b/pkgs/desktops/gnome/extensions/systemd-manager/default.nix index 148df22805cc..6ccfae4c9c3e 100644 --- a/pkgs/desktops/gnome/extensions/systemd-manager/default.nix +++ b/pkgs/desktops/gnome/extensions/systemd-manager/default.nix @@ -3,8 +3,15 @@ stdenvNoCC, fetchFromGitHub, glib, + # These loosen security a bit, so we don't install them by default. See also: + # https://github.com/hardpixel/systemd-manager?tab=readme-ov-file#without-password-prompt + allowPolkitPolicy ? "none", + config, + systemd ? config.systemd.package, }: +assert lib.elem allowPolkitPolicy [ "none" "pkexec" "systemctl" ]; + stdenvNoCC.mkDerivation rec { pname = "gnome-shell-extension-systemd-manager"; version = "16"; @@ -26,6 +33,15 @@ stdenvNoCC.mkDerivation rec { mkdir -p $out/share/gnome-shell/extensions mv systemd-manager@hardpixel.eu $out/share/gnome-shell/extensions + '' + lib.optionalString (allowPolkitPolicy == "pkexec") '' + local bn=org.freedesktop.policykit.pkexec.systemctl.policy + mkdir -p $out/share/polkit-1/actions + substitute systemd-policies/$bn $out/share/polkit-1/actions/$bn \ + --replace-fail /usr/bin/systemctl ${lib.getBin systemd}/bin/systemctl + '' + lib.optionalString (allowPolkitPolicy == "systemctl") '' + install -Dm0644 \ + systemd-policies/10-service_status.rules \ + $out/share/polkit-1/rules.d/10-gnome-extension-systemd-manager.rules ''; passthru = { From 679224d7c76a17da4ac5e5d6170f8e3023217fea Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Fri, 21 Jun 2024 13:44:31 +0300 Subject: [PATCH 3/3] gnomeExtensions.systemd-manager: nixfmt & add doronbehar as maintainer --- .../extensions/systemd-manager/default.nix | 44 ++++++++++++------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/pkgs/desktops/gnome/extensions/systemd-manager/default.nix b/pkgs/desktops/gnome/extensions/systemd-manager/default.nix index 6ccfae4c9c3e..0b8e52af802b 100644 --- a/pkgs/desktops/gnome/extensions/systemd-manager/default.nix +++ b/pkgs/desktops/gnome/extensions/systemd-manager/default.nix @@ -10,7 +10,11 @@ systemd ? config.systemd.package, }: -assert lib.elem allowPolkitPolicy [ "none" "pkexec" "systemctl" ]; +assert lib.elem allowPolkitPolicy [ + "none" + "pkexec" + "systemctl" +]; stdenvNoCC.mkDerivation rec { pname = "gnome-shell-extension-systemd-manager"; @@ -27,22 +31,25 @@ stdenvNoCC.mkDerivation rec { nativeBuildInputs = [ glib ]; - postInstall = '' - rm systemd-manager@hardpixel.eu/schemas/gschemas.compiled - glib-compile-schemas systemd-manager@hardpixel.eu/schemas + postInstall = + '' + rm systemd-manager@hardpixel.eu/schemas/gschemas.compiled + glib-compile-schemas systemd-manager@hardpixel.eu/schemas - mkdir -p $out/share/gnome-shell/extensions - mv systemd-manager@hardpixel.eu $out/share/gnome-shell/extensions - '' + lib.optionalString (allowPolkitPolicy == "pkexec") '' - local bn=org.freedesktop.policykit.pkexec.systemctl.policy - mkdir -p $out/share/polkit-1/actions - substitute systemd-policies/$bn $out/share/polkit-1/actions/$bn \ - --replace-fail /usr/bin/systemctl ${lib.getBin systemd}/bin/systemctl - '' + lib.optionalString (allowPolkitPolicy == "systemctl") '' - install -Dm0644 \ - systemd-policies/10-service_status.rules \ - $out/share/polkit-1/rules.d/10-gnome-extension-systemd-manager.rules - ''; + mkdir -p $out/share/gnome-shell/extensions + mv systemd-manager@hardpixel.eu $out/share/gnome-shell/extensions + '' + + lib.optionalString (allowPolkitPolicy == "pkexec") '' + local bn=org.freedesktop.policykit.pkexec.systemctl.policy + mkdir -p $out/share/polkit-1/actions + substitute systemd-policies/$bn $out/share/polkit-1/actions/$bn \ + --replace-fail /usr/bin/systemctl ${lib.getBin systemd}/bin/systemctl + '' + + lib.optionalString (allowPolkitPolicy == "systemctl") '' + install -Dm0644 \ + systemd-policies/10-service_status.rules \ + $out/share/polkit-1/rules.d/10-gnome-extension-systemd-manager.rules + ''; passthru = { extensionUuid = "systemd-manager@hardpixel.eu"; @@ -53,6 +60,9 @@ stdenvNoCC.mkDerivation rec { description = "GNOME Shell extension to manage systemd services"; homepage = "https://github.com/hardpixel/systemd-manager"; license = licenses.gpl3Only; - maintainers = with maintainers; [ linsui ]; + maintainers = with maintainers; [ + linsui + doronbehar + ]; }; }