69 lines
2 KiB
Nix
69 lines
2 KiB
Nix
|
{
|
||
|
lib,
|
||
|
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";
|
||
|
|
||
|
# 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
|
||
|
''
|
||
|
+ 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";
|
||
|
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
|
||
|
doronbehar
|
||
|
];
|
||
|
};
|
||
|
}
|