diff --git a/modules/modules.nix b/modules/modules.nix index 07e4cf767..aad4b86e8 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -379,6 +379,7 @@ let ./services/playerctld.nix ./services/plex-mpv-shim.nix ./services/podman-linux + ./services/polkit-gnome.nix ./services/polybar.nix ./services/poweralertd.nix ./services/psd.nix diff --git a/modules/services/polkit-gnome.nix b/modules/services/polkit-gnome.nix new file mode 100644 index 000000000..c65ce1a0b --- /dev/null +++ b/modules/services/polkit-gnome.nix @@ -0,0 +1,32 @@ +{ config, lib, pkgs, ... }: +let + inherit (lib) + mkEnableOption mkPackageOption types literalExpression mkIf maintainers; + cfg = config.services.polkit-gnome; +in { + meta.maintainers = [ maintainers.bobvanderlinden ]; + + options = { + services.polkit-gnome = { + enable = mkEnableOption "GNOME Policykit Agent"; + package = mkPackageOption pkgs "polkit_gnome" { }; + }; + }; + + config = mkIf cfg.enable { + systemd.user.services.polkit-gnome = { + Unit = { + Description = "GNOME PolicyKit Agent"; + After = [ "graphical-session-pre.target" ]; + PartOf = [ "graphical-session.target" ]; + }; + + Install = { WantedBy = [ "graphical-session.target" ]; }; + + Service = { + ExecStart = + "${cfg.package}/libexec/polkit-gnome-authentication-agent-1"; + }; + }; + }; +} diff --git a/tests/default.nix b/tests/default.nix index a9044802b..12ac48ebf 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -527,6 +527,7 @@ in import nmtSrc { ./modules/services/picom ./modules/services/playerctld ./modules/services/podman-linux + ./modules/services/polkit-gnome ./modules/services/polybar ./modules/services/recoll ./modules/services/redshift-gammastep diff --git a/tests/modules/services/polkit-gnome/basic-configuration.nix b/tests/modules/services/polkit-gnome/basic-configuration.nix new file mode 100644 index 000000000..b297e81be --- /dev/null +++ b/tests/modules/services/polkit-gnome/basic-configuration.nix @@ -0,0 +1,23 @@ +{ + services.polkit-gnome.enable = true; + + nmt.script = '' + clientServiceFile=home-files/.config/systemd/user/polkit-gnome.service + + assertFileExists $clientServiceFile + assertFileContent $clientServiceFile ${ + builtins.toFile "expected.service" '' + [Install] + WantedBy=graphical-session.target + + [Service] + ExecStart=@polkit-gnome@/libexec/polkit-gnome-authentication-agent-1 + + [Unit] + After=graphical-session-pre.target + Description=GNOME PolicyKit Agent + PartOf=graphical-session.target + '' + } + ''; +} diff --git a/tests/modules/services/polkit-gnome/default.nix b/tests/modules/services/polkit-gnome/default.nix new file mode 100644 index 000000000..7028eb98b --- /dev/null +++ b/tests/modules/services/polkit-gnome/default.nix @@ -0,0 +1 @@ +{ polkit-gnome-basic-configuration = ./basic-configuration.nix; }