Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 67 lines 2.0 kB view raw
1{ 2 lib, 3 stdenvNoCC, 4 fetchFromGitHub, 5 glib, 6 # These loosen security a bit, so we don't install them by default. See also: 7 # https://github.com/hardpixel/systemd-manager?tab=readme-ov-file#without-password-prompt 8 allowPolkitPolicy ? "none", 9 config, 10 systemd ? config.systemd.package, 11}: 12 13assert lib.elem allowPolkitPolicy [ 14 "none" 15 "pkexec" 16 "systemctl" 17]; 18 19stdenvNoCC.mkDerivation rec { 20 pname = "gnome-shell-extension-systemd-manager"; 21 version = "18"; 22 23 # Upstream doesn't post new versions in extensions.gnome.org anymore, see also: 24 # https://github.com/hardpixel/systemd-manager/issues/19 25 src = fetchFromGitHub { 26 owner = "hardpixel"; 27 repo = "systemd-manager"; 28 rev = "v${version}"; 29 hash = "sha256-V4vYv1nAjFjvkSYdOpcpt8h9L+g0ch4V2VZRVSbtSKE="; 30 }; 31 32 nativeBuildInputs = [ glib ]; 33 34 postInstall = '' 35 rm systemd-manager@hardpixel.eu/schemas/gschemas.compiled 36 glib-compile-schemas systemd-manager@hardpixel.eu/schemas 37 38 mkdir -p $out/share/gnome-shell/extensions 39 mv systemd-manager@hardpixel.eu $out/share/gnome-shell/extensions 40 '' 41 + lib.optionalString (allowPolkitPolicy == "pkexec") '' 42 local bn=org.freedesktop.policykit.pkexec.systemctl.policy 43 mkdir -p $out/share/polkit-1/actions 44 substitute systemd-policies/$bn $out/share/polkit-1/actions/$bn \ 45 --replace-fail /usr/bin/systemctl ${lib.getBin systemd}/bin/systemctl 46 '' 47 + lib.optionalString (allowPolkitPolicy == "systemctl") '' 48 install -Dm0644 \ 49 systemd-policies/10-service_status.rules \ 50 $out/share/polkit-1/rules.d/10-gnome-extension-systemd-manager.rules 51 ''; 52 53 passthru = { 54 extensionUuid = "systemd-manager@hardpixel.eu"; 55 extensionPortalSlug = "systemd-manager"; 56 }; 57 58 meta = with lib; { 59 description = "GNOME Shell extension to manage systemd services"; 60 homepage = "https://github.com/hardpixel/systemd-manager"; 61 license = licenses.gpl3Only; 62 maintainers = with maintainers; [ 63 linsui 64 doronbehar 65 ]; 66 }; 67}