My NixOS and Home Manager configurations

add dynamic aspect for adding users to groups

quasigod.xyz 7b03dab6 7cab81f7

verified
+73 -102
+5 -8
modules/apps/adb.nix
··· 1 { 2 - styx.apps.provides.adb = 3 - { user, ... }: 4 - { 5 - nixos = { 6 - users.users.${user.userName}.extraGroups = [ "adbusers" ]; 7 - programs.adb.enable = true; 8 - }; 9 - }; 10 }
··· 1 + { styx, den, ... }: 2 { 3 + styx.apps.provides.adb = den.lib.parametric { 4 + includes = [ (styx.groups "adbusers") ]; 5 + nixos.programs.adb.enable = true; 6 + }; 7 }
+23 -39
modules/boot.nix
··· 1 - { 2 - styx, 3 - lib, 4 - inputs, 5 - ... 6 - }: 7 { 8 - styx = { 9 - boot = { 10 - nixos.boot.loader = { 11 - systemd-boot.enable = lib.mkDefault true; # needs to be overridden for secure boot 12 - efi.canTouchEfiVariables = true; 13 - timeout = 3; 14 - }; 15 - 16 - provides.secure = { 17 - includes = [ styx.boot ]; 18 - nixos = { 19 - imports = [ inputs.lanzaboote.nixosModules.lanzaboote ]; 20 - boot = { 21 - loader.systemd-boot.enable = false; 22 - lanzaboote = { 23 - enable = true; 24 - pkiBundle = "/var/lib/sbctl"; 25 - }; 26 - }; 27 }; 28 }; 29 30 - provides.graphical.nixos.boot = { 31 - plymouth.enable = true; 32 - consoleLogLevel = 3; 33 - initrd.verbose = false; 34 - initrd.systemd.enable = true; 35 - kernelParams = [ 36 - "quiet" 37 - "splash" 38 - "intremap=on" 39 - "boot.shell_on_fail" 40 - "udev.log_priority=3" 41 - "rd.systemd.show_status=auto" 42 - ]; 43 - }; 44 }; 45 }; 46 }
··· 1 + { inputs, ... }: 2 { 3 + styx.boot.provides = { 4 + secure.nixos = { 5 + imports = [ inputs.lanzaboote.nixosModules.lanzaboote ]; 6 + boot = { 7 + loader.systemd-boot.enable = false; 8 + lanzaboote = { 9 + enable = true; 10 + pkiBundle = "/var/lib/sbctl"; 11 }; 12 }; 13 + }; 14 15 + graphical.nixos.boot = { 16 + plymouth.enable = true; 17 + consoleLogLevel = 3; 18 + initrd.verbose = false; 19 + initrd.systemd.enable = true; 20 + kernelParams = [ 21 + "quiet" 22 + "splash" 23 + "intremap=on" 24 + "boot.shell_on_fail" 25 + "udev.log_priority=3" 26 + "rd.systemd.show_status=auto" 27 + ]; 28 }; 29 }; 30 }
+15 -7
modules/default.nix
··· 2 { 3 # Some preferred defaults 4 den.default = { 5 nixos = 6 { pkgs, lib, ... }: 7 { 8 - imports = [ 9 - inputs.nixos-facter-modules.nixosModules.facter 10 - inputs.srvos.nixosModules.desktop 11 ]; 12 13 environment = { ··· 34 stateVersion = "22.05"; 35 }; 36 }; 37 - includes = [ 38 - den.provides.home-manager 39 - den.provides.define-user 40 - ]; 41 }; 42 }
··· 2 { 3 # Some preferred defaults 4 den.default = { 5 + includes = [ 6 + den.provides.home-manager 7 + den.provides.define-user 8 + ( 9 + { host, ... }: 10 + { 11 + ${host.class}.networking.hostName = host.name; 12 + } 13 + ) 14 + ]; 15 + 16 nixos = 17 { pkgs, lib, ... }: 18 { 19 + imports = with inputs; [ 20 + nixos-facter-modules.nixosModules.facter 21 + srvos.nixosModules.desktop 22 + srvos.nixosModules.mixins-systemd-boot 23 ]; 24 25 environment = { ··· 46 stateVersion = "22.05"; 47 }; 48 }; 49 }; 50 }
+1 -3
modules/den.nix
··· 1 { inputs, den, ... }: 2 { 3 imports = [ 4 inputs.den.flakeModule 5 (inputs.den.namespace "styx" true) 6 ]; 7 - _module.args.__findFile = den.lib.__findFile; 8 - den.hosts.x86_64-linux.hades.users.quasi = { }; 9 - den.hosts.x86_64-linux.zagreus.users.quasi = { }; 10 }
··· 1 { inputs, den, ... }: 2 { 3 + _module.args.__findFile = den.lib.__findFile; 4 imports = [ 5 inputs.den.flakeModule 6 (inputs.den.namespace "styx" true) 7 ]; 8 }
+12
modules/groups.nix
···
··· 1 + { 2 + styx.groups = 3 + groups: 4 + { user, ... }: 5 + { 6 + nixos = 7 + { lib, ... }: 8 + { 9 + users.users.${user.userName}.extraGroups = lib.flatten [ groups ]; 10 + }; 11 + }; 12 + }
+9 -8
modules/hacking/default.nix
··· 2 inputs, 3 lib, 4 withSystem, 5 - den, 6 styx, 7 ... 8 }: 9 { 10 - styx.hax = { 11 - includes = [ styx.hax._.subfinder ]; 12 nixos = { 13 environment.etc.hosts.mode = "0644"; 14 # TODO until exegol supports podman 15 virtualisation.docker.enable = true; 16 programs.wireshark.enable = true; 17 - users.users.quasi.extraGroups = [ 18 - # TODO 19 - "wireshark" 20 - "docker" 21 - ]; 22 }; 23 homeManager = 24 { pkgs, config, ... }:
··· 2 inputs, 3 lib, 4 withSystem, 5 styx, 6 + den, 7 ... 8 }: 9 { 10 + styx.hax = den.lib.parametric { 11 + includes = [ 12 + styx.hax._.subfinder 13 + (styx.groups [ 14 + "wireshark" 15 + "docker" 16 + ]) 17 + ]; 18 nixos = { 19 environment.etc.hosts.mode = "0644"; 20 # TODO until exegol supports podman 21 virtualisation.docker.enable = true; 22 programs.wireshark.enable = true; 23 }; 24 homeManager = 25 { pkgs, config, ... }:
+6
modules/quasi.nix
···
··· 1 + { den, ... }: 2 + { 3 + den.aspects.quasi.includes = [ den.provides.primary-user ]; 4 + den.hosts.x86_64-linux.hades.users.quasi = { }; 5 + den.hosts.x86_64-linux.zagreus.users.quasi = { }; 6 + }
+2 -8
modules/toplevel/virtualisation.nix
··· 1 { den, styx, ... }: 2 { 3 styx.virt.provides = { 4 - qemu = { 5 - # includes = [ styx.virt._.qemu._.group ]; 6 - provides.group = 7 - { user, ... }: 8 - { 9 - nixos.users.users.${user.userName}.extraGroups = [ "kvm" ]; 10 - }; 11 nixos = 12 { pkgs, ... }: 13 { 14 - users.users.quasi.extraGroups = [ "kvm" ]; 15 boot.kernelParams = [ "amd_iommu=on" ]; 16 programs.virt-manager.enable = true; 17 environment.systemPackages = with pkgs; [
··· 1 { den, styx, ... }: 2 { 3 styx.virt.provides = { 4 + qemu = den.lib.parametric { 5 + includes = [ (styx.groups "kvm") ]; 6 nixos = 7 { pkgs, ... }: 8 { 9 boot.kernelParams = [ "amd_iommu=on" ]; 10 programs.virt-manager.enable = true; 11 environment.systemPackages = with pkgs; [
-29
modules/users.nix
··· 1 - { den, styx, ... }: 2 - { 3 - den.aspects.quasi = { 4 - includes = [ 5 - den.provides.primary-user 6 - styx.groups 7 - ]; 8 - homeManager.services.ssh-agent.enable = true; 9 - }; 10 - styx.groups = 11 - { user, ... }: 12 - { 13 - nixos.users = { 14 - groups.${user.userName} = { }; 15 - users.${user.userName} = { 16 - isNormalUser = true; 17 - initialPassword = user.userName; 18 - extraGroups = [ 19 - "wheel" 20 - "video" 21 - "audio" 22 - "networkmanager" 23 - "lp" 24 - "scanner" 25 - ]; 26 - }; 27 - }; 28 - }; 29 - }
···