Configuration for my NixOS based systems and Home Manager
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add Aleister specific config

+350
configuration.nix common.nix
+350
host-specific/aleister-noah.nix
··· 1 + { 2 + pkgs, 3 + unstable, 4 + lib, 5 + ... 6 + }: 7 + { 8 + # Home Manager needs a bit of information about you and the paths it should 9 + # manage. 10 + home.username = "noah"; 11 + home.homeDirectory = "/Users/noah"; 12 + nix = { 13 + package = pkgs.nix; 14 + settings = { 15 + experimental-features = [ 16 + "nix-command" 17 + "flakes" 18 + ]; 19 + }; 20 + }; 21 + home.packages = with pkgs; [ 22 + # main tool 23 + direnv 24 + tree 25 + btop 26 + # Apple Silicon top monitoring 27 + macpm 28 + htop 29 + mtr 30 + moreutils 31 + rsync 32 + bash 33 + tmux 34 + coreutils 35 + util-linux 36 + p7zip 37 + unar 38 + 39 + unzip 40 + fd 41 + jq 42 + ripgrep 43 + bat 44 + netcat 45 + stunnel 46 + iperf3 47 + entr 48 + ncdu 49 + # broken? 50 + #unstable.bitwarden-cli 51 + sqlite 52 + age 53 + just 54 + mdr 55 + unstable.catgirl 56 + plan9port 57 + unstable.rc 58 + unstable.glow 59 + unstable.vis 60 + nodejs 61 + 62 + # Dev tools 63 + git 64 + unstable.ruff 65 + # Rust REPL 66 + evcxr 67 + # Swift LSP 68 + unstable.go 69 + unstable.gopls 70 + gnumake 71 + #unstable.ccls 72 + unstable.cljfmt 73 + unstable.clojure 74 + unstable.clojure-lsp 75 + unstable.babashka 76 + unstable.janet 77 + unstable.jpm 78 + unstable.fennel-ls 79 + unstable.graalvmPackages.graalvm-ce 80 + unstable.crystal 81 + unstable.crystalline 82 + cmake 83 + ctags 84 + 85 + # Lua 86 + luarocks 87 + luajit 88 + unstable.lua-language-server 89 + luaformatter 90 + libressl 91 + unstable.nil # nix language server 92 + unstable.nixd 93 + scdoc 94 + dockerfile-language-server 95 + # BROKEN 96 + yaml-language-server 97 + mkcert 98 + natscli 99 + python314 100 + unstable.uv 101 + sqlite 102 + unstable.gleam 103 + #unstable.rebar3 104 + #unstable.flyctl 105 + unstable.bun 106 + unstable.gh 107 + #unstable.kraft 108 + #unstable.doctl 109 + 110 + # Python dev tools 111 + #unstable.pyright 112 + unstable.basedpyright 113 + unstable.python313Packages.python-lsp-server 114 + unstable.python313Packages.python-lsp-ruff 115 + 116 + # JavaScript tools 117 + #typescript-language-server 118 + 119 + # Certificate Management 120 + minica 121 + mkcert 122 + step-cli 123 + 124 + # Fish Plugins 125 + #fishPlugins.fzf 126 + #fishPlugins.pure 127 + 128 + # Libraries because MacOS is kinda stupid 129 + ncurses 130 + ]; 131 + 132 + #programs.fish = { 133 + # enable = true; 134 + # package = unstable.fish; 135 + #}; 136 + programs.fzf = { 137 + enable = true; 138 + enableFishIntegration = true; 139 + }; 140 + programs.pistol.enable = true; 141 + programs.home-manager.enable = true; 142 + programs.neovim = { 143 + #package = unstable.neovim-unwrapped; 144 + enable = true; 145 + defaultEditor = true; 146 + withNodeJs = false; 147 + withPython3 = true; 148 + extraPackages = with pkgs; [ 149 + fzf 150 + ripgrep 151 + luarocks 152 + tree-sitter 153 + ]; 154 + }; 155 + programs.git = { 156 + enable = true; 157 + lfs.enable = true; 158 + userName = "Noah Pederson"; 159 + userEmail = "noah@packetlost.dev"; 160 + extraConfig = { 161 + sendemail = { 162 + smtpserver = "smtp.migadu.com"; 163 + smtpuser = "noah@packetlost.dev"; 164 + smtpauth = "plain"; 165 + smtpencryption = "tls"; 166 + smtpserverport = 465; 167 + }; 168 + init = { 169 + defaultBranch = "master"; 170 + }; 171 + pull = { 172 + rebase = true; 173 + }; 174 + push = { 175 + default = "simple"; 176 + autoSetupRemote = true; 177 + followTags = true; 178 + }; 179 + credential = { 180 + helper = "cache"; 181 + }; 182 + alias = { 183 + out = "log @{u}.."; 184 + }; 185 + column = { 186 + ui = "auto"; 187 + }; 188 + branch = { 189 + sort = "-committerdate"; 190 + }; 191 + tag = { 192 + sort = "version:refname"; 193 + }; 194 + diff = { 195 + algorithm = "histogram"; 196 + colorMoved = "plain"; 197 + mnemonicPrefix = true; 198 + renames = true; 199 + }; 200 + fetch = { 201 + prune = true; 202 + pruneTags = true; 203 + all = true; 204 + }; 205 + help = { 206 + autocorrect = "prompt"; 207 + }; 208 + commit = { 209 + verbose = true; 210 + }; 211 + rerere = { 212 + enabled = true; 213 + autoupdate = true; 214 + }; 215 + rebase = { 216 + autoSquash = true; 217 + autoStash = true; 218 + updateRefs = true; 219 + }; 220 + merge = { 221 + conflictStyle = "zdiff3"; 222 + }; 223 + }; 224 + ignores = [ 225 + ".direnv/" 226 + ".envrc" 227 + ".env/" 228 + ".clj-kondo/" 229 + ]; 230 + }; 231 + programs.aerc = { 232 + enable = true; 233 + }; 234 + programs.ssh = { 235 + enable = true; 236 + extraConfig = builtins.readFile ../ssh/extra; 237 + addKeysToAgent = "yes"; 238 + forwardAgent = true; 239 + }; 240 + 241 + programs.yazi = 242 + let 243 + localPkgs = pkgs; 244 + yaziPlugins = localPkgs.yaziPlugins; 245 + plugins = lib.attrsets.getAttrs [ 246 + "rsync" 247 + "piper" 248 + "nord" 249 + "mediainfo" 250 + "glow" 251 + "git" 252 + "diff" 253 + "duckdb" 254 + ] yaziPlugins; 255 + in 256 + { 257 + inherit plugins; 258 + enable = true; 259 + package = localPkgs.yazi; 260 + enableFishIntegration = true; 261 + settings = { 262 + preview = { 263 + image_quality = 90; 264 + }; 265 + tasks = { 266 + image_bound = [ 267 + 0 268 + 0 269 + ]; 270 + }; 271 + }; 272 + }; 273 + 274 + programs.direnv = { 275 + enable = true; 276 + nix-direnv.enable = true; 277 + }; 278 + 279 + programs.nix-index = { 280 + enable = true; 281 + enableFishIntegration = true; 282 + }; 283 + programs.helix = { 284 + enable = true; 285 + settings = { 286 + theme = "everforest_dark"; 287 + editor.cursor-shape = { 288 + normal = "block"; 289 + insert = "bar"; 290 + select = "underline"; 291 + }; 292 + }; 293 + languages.language = [ 294 + { 295 + name = "nix"; 296 + auto-format = true; 297 + formatter.command = "${pkgs.nixfmt}/bin/nixfmt"; 298 + } 299 + { 300 + name = "rust"; 301 + auto-format = true; 302 + formatter.command = "${pkgs.rustfmt}/bin/rustfmt"; 303 + } 304 + ]; 305 + }; 306 + 307 + # Independent config files. 308 + xdg.configFile.nvim = { 309 + source = ../nvim; 310 + recursive = true; 311 + }; 312 + 313 + xdg.configFile.vis = { 314 + source = ../vis; 315 + recursive = true; 316 + }; 317 + 318 + xdg.configFile.fish = { 319 + source = ../fish; 320 + recursive = true; 321 + }; 322 + xdg.configFile."fish/completions/nix.fish".source = 323 + "${pkgs.nix}/share/fish/vendor_completions.d/nix.fish"; 324 + 325 + xdg.configFile.aerc = { 326 + source = ../aerc; 327 + recursive = true; 328 + }; 329 + 330 + xdg.configFile.ghostty = { 331 + source = ../ghostty; 332 + recursive = true; 333 + }; 334 + 335 + home.file.".local/bin" = { 336 + source = ../scripts; 337 + recursive = true; 338 + }; 339 + home.file.".luacheckrc" = { 340 + text = '' 341 + globals = { 342 + "vim", 343 + "vis", 344 + } 345 + ''; 346 + }; 347 + 348 + home.stateVersion = "24.11"; 349 + 350 + }