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"];
 | 
						|
            }
 | 
						|
          ];
 | 
						|
        }
 | 
						|
      ];
 | 
						|
    };
 | 
						|
  };
 | 
						|
}
 |