summaryrefslogtreecommitdiff
path: root/modules/core/security/sudo.nix
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-09-20 05:36:20 -0700
committerFuwn <[email protected]>2024-09-20 05:36:20 -0700
commitd9747c64b038943253eaafdc59a49d5face46dab (patch)
treeb452d15a7f20e9f4bb70ec9f9040137bec1072f8 /modules/core/security/sudo.nix
parenthimeji: move containers over from seti (diff)
downloadnixos-config-d9747c64b038943253eaafdc59a49d5face46dab.tar.xz
nixos-config-d9747c64b038943253eaafdc59a49d5face46dab.zip
modules: server and core modules
Diffstat (limited to 'modules/core/security/sudo.nix')
-rw-r--r--modules/core/security/sudo.nix75
1 files changed, 75 insertions, 0 deletions
diff --git a/modules/core/security/sudo.nix b/modules/core/security/sudo.nix
new file mode 100644
index 0000000..6623b71
--- /dev/null
+++ b/modules/core/security/sudo.nix
@@ -0,0 +1,75 @@
+{ pkgs, lib, ... }:
+let
+ inherit (lib.modules) mkForce;
+in
+{
+ security = {
+ sudo-rs.enable = mkForce false;
+
+ sudo = {
+ enable = true;
+ execWheelOnly = mkForce true;
+ wheelNeedsPassword = lib.modules.mkDefault false;
+
+ extraConfig = ''
+ Defaults lecture = never
+ Defaults pwfeedback
+ Defaults env_keep += "EDITOR PATH DISPLAY"
+ Defaults timestamp_timeout = 300
+ '';
+
+ extraRules = [
+ {
+ groups = [ "wheel" ];
+ commands =
+ map
+ (rule: {
+ command = lib.meta.getExe' rule.package rule.command;
+ options = [ "NOPASSWD" ];
+ })
+ (
+ with pkgs;
+ [
+ {
+ package = coreutils;
+ command = "sync";
+ }
+ {
+ package = hdparm;
+ command = "hdparm";
+ }
+ {
+ package = nixos-rebuild;
+ command = "nixos-rebuild";
+ }
+ {
+ package = nvme-cli;
+ command = "nvme";
+ }
+ {
+ package = systemd;
+ command = "poweroff";
+ }
+ {
+ package = systemd;
+ command = "reboot";
+ }
+ {
+ package = systemd;
+ command = "shutdown";
+ }
+ {
+ package = systemd;
+ command = "systemctl";
+ }
+ {
+ package = util-linux;
+ command = "dmesg";
+ }
+ ]
+ );
+ }
+ ];
+ };
+ };
+}