60 lines
1.9 KiB
Nix
60 lines
1.9 KiB
Nix
{ lib, ... }:
|
|
|
|
let
|
|
inherit (lib) mkDefault mkForce;
|
|
in
|
|
|
|
{
|
|
# nyx module
|
|
security = {
|
|
sudo-rs.enable = mkForce false; # we don't want the rust sudo fork
|
|
sudo = {
|
|
enable = true;
|
|
wheelNeedsPassword = mkDefault false; # only use false here if the extraRules below are enabled
|
|
execWheelOnly = mkForce true; # only allow wheel to execute sudo
|
|
extraConfig = /* shell */ ''
|
|
Defaults lecture = never # disable sudo lecture
|
|
Defaults pwfeedback # password feedback
|
|
Defaults env_keep += "EDITOR PATH DISPLAY" # variables to be passes to root
|
|
Defaults timestamp_timeout = 300 # asks for sudo password ever 300s
|
|
'';
|
|
extraRules = [
|
|
{
|
|
# allow wheel group to run nixos-rebuild without password
|
|
groups = ["wheel"];
|
|
commands = let
|
|
currentSystem = "/run/current-system/";
|
|
storePath = "/nix/store/";
|
|
in [
|
|
{
|
|
command = "${storePath}/*/bin/switch-to-configuration";
|
|
options = ["SETENV" "NOPASSWD"];
|
|
}
|
|
{
|
|
command = "${currentSystem}/sw/bin/nix-store";
|
|
options = ["SETENV" "NOPASSWD"];
|
|
}
|
|
{
|
|
command = "${currentSystem}/sw/bin/nix-env";
|
|
options = ["SETENV" "NOPASSWD"];
|
|
}
|
|
{
|
|
command = "${currentSystem}/sw/bin/nixos-rebuild";
|
|
options = ["NOPASSWD"];
|
|
}
|
|
{
|
|
# let wheel group collect garbage without password
|
|
command = "${currentSystem}/sw/bin/nix-collect-garbage";
|
|
options = ["SETENV" "NOPASSWD"];
|
|
}
|
|
{
|
|
# let wheel group interact with systemd without password
|
|
command = "${currentSystem}/sw/bin/systemctl";
|
|
options = ["NOPASSWD"];
|
|
}
|
|
];
|
|
}
|
|
];
|
|
};
|
|
};
|
|
}
|