my system configurations ^-^
at main 5.3 kB view raw
1{ 2 lib, 3 config, 4 ... 5}: let 6 inherit (lib) mkEnableOption mkOption types; 7 8 cfg = config.settings; 9in { 10 options.settings = { 11 programs = { 12 enable = 13 mkEnableOption "Enable all programs" 14 // { 15 default = true; 16 }; 17 18 cli = { 19 enable = 20 mkEnableOption "Enable CLI programs" 21 // { 22 default = cfg.programs.enable; 23 }; 24 }; 25 gui = { 26 enable = 27 mkEnableOption "Enable GUI programs" 28 // { 29 default = cfg.desktop.enable; 30 }; 31 }; 32 tui = { 33 enable = 34 mkEnableOption "Enable TUI programs" 35 // { 36 default = cfg.programs.enable; 37 }; 38 }; 39 40 categories = { 41 enable = 42 mkEnableOption "Enable all program categories" 43 // { 44 default = cfg.programs.enable; 45 }; 46 core.enable = 47 mkEnableOption "Enable core programs" 48 // { 49 default = cfg.programs.categories.enable; 50 }; 51 design.enable = 52 mkEnableOption "Enable design programs" 53 // { 54 default = cfg.programs.categories.enable; 55 }; 56 dev.enable = 57 mkEnableOption "Enable development programs" 58 // { 59 default = cfg.programs.categories.enable; 60 }; 61 edu.enable = 62 mkEnableOption "Enable educational programs" 63 // { 64 default = cfg.programs.categories.enable; 65 }; 66 fs.enable = 67 mkEnableOption "Enable file management programs" 68 // { 69 default = cfg.programs.categories.enable; 70 }; 71 fun.enable = 72 mkEnableOption "Enable fun programs" 73 // { 74 default = cfg.programs.categories.enable; 75 }; 76 gaming.enable = 77 mkEnableOption "Enable gaming programs" 78 // { 79 default = cfg.programs.categories.enable; 80 }; 81 mail.enable = 82 mkEnableOption "Enable email programs" 83 // { 84 default = cfg.programs.categories.enable; 85 }; 86 media.enable = 87 mkEnableOption "Enable multimedia programs" 88 // { 89 default = cfg.programs.categories.enable; 90 }; 91 music.enable = 92 mkEnableOption "Enable music programs" 93 // { 94 default = cfg.programs.categories.enable; 95 }; 96 printing.enable = 97 mkEnableOption "Enable 3D printing programs" 98 // { 99 default = cfg.programs.categories.enable; 100 }; 101 privacy.enable = 102 mkEnableOption "Enable privacy programs" 103 // { 104 default = cfg.programs.categories.enable; 105 }; 106 tools.enable = 107 mkEnableOption "Enable QOL programs" 108 // { 109 default = cfg.programs.categories.enable; 110 }; 111 web.enable = 112 mkEnableOption "Enable browsers" 113 // { 114 default = cfg.programs.categories.enable; 115 }; 116 }; 117 }; 118 system = { 119 user = { 120 name = mkOption { 121 type = types.str; 122 description = "The username of the main user for your system"; 123 default = "willow"; 124 }; 125 home = mkOption { 126 type = types.path; 127 description = "The home directory of the main user for your system"; 128 default = "/home/${cfg.system.user.name}"; 129 }; 130 group = mkOption { 131 type = types.str; 132 description = "The group of the main user for your system"; 133 default = "users"; 134 }; 135 }; 136 hostName = mkOption { 137 type = types.str; 138 description = "The hostname of your system"; 139 default = "nixos"; 140 }; 141 services = { 142 enable = 143 mkEnableOption "Enable system services" 144 // { 145 default = true; 146 }; 147 bluetooth.enable = 148 mkEnableOption "Enable Bluetooth" 149 // { 150 default = cfg.system.services.enable; 151 }; 152 sound.enable = 153 mkEnableOption "Enable sound" 154 // { 155 default = cfg.system.services.enable; 156 }; 157 printing.enable = 158 mkEnableOption "Enable printing" 159 // { 160 default = cfg.system.services.enable; 161 }; 162 networking.enable = 163 mkEnableOption "Enable networking" 164 // { 165 default = cfg.system.services.enable; 166 }; 167 security.enable = 168 mkEnableOption "Enable security" 169 // { 170 default = cfg.system.services.enable; 171 }; 172 backups.enable = 173 mkEnableOption "Enable backups" 174 // { 175 default = cfg.system.services.enable; 176 }; 177 }; 178 }; 179 desktop = { 180 enable = 181 mkEnableOption "Enable desktop environment" 182 // { 183 default = true; 184 }; 185 niri.enable = 186 mkEnableOption "Enable Niri twm" 187 // { 188 default = cfg.desktop.enable; 189 }; 190 hyprland.enable = 191 mkEnableOption "Enable Hyprland and its ecosystem" 192 // { 193 default = cfg.desktop.enable; 194 }; 195 }; 196 }; 197}