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.

FIX: rename noah-home.nix to home.nix, update lock

+309 -390
+12 -12
flake.lock
··· 44 44 ] 45 45 }, 46 46 "locked": { 47 - "lastModified": 1745557122, 48 - "narHash": "sha256-eqSo9ugzsqhFgaDFYUZj943nurlX4L6f+AW0skJ4W+M=", 47 + "lastModified": 1746171682, 48 + "narHash": "sha256-EyXUNSa+H+YvGVuQJP1nZskXAowxKYp79RNUsNdQTj4=", 49 49 "owner": "nix-community", 50 50 "repo": "home-manager", 51 - "rev": "dd26f75fb4ec1c731d4b1396eaf4439ce40a91c1", 51 + "rev": "50eee705bbdbac942074a8c120e8194185633675", 52 52 "type": "github" 53 53 }, 54 54 "original": { ··· 60 60 }, 61 61 "nixpkgs": { 62 62 "locked": { 63 - "lastModified": 1746055187, 64 - "narHash": "sha256-3dqArYSMP9hM7Qpy5YWhnSjiqniSaT2uc5h2Po7tmg0=", 63 + "lastModified": 1746422338, 64 + "narHash": "sha256-NTtKOTLQv6dPfRe00OGSywg37A1FYqldS6xiNmqBUYc=", 65 65 "owner": "nixos", 66 66 "repo": "nixpkgs", 67 - "rev": "3e362ce63e16b9572d8c2297c04f7c19ab6725a5", 67 + "rev": "5b35d248e9206c1f3baf8de6a7683fee126364aa", 68 68 "type": "github" 69 69 }, 70 70 "original": { ··· 76 76 }, 77 77 "nixpkgs-unstable": { 78 78 "locked": { 79 - "lastModified": 1745930157, 80 - "narHash": "sha256-y3h3NLnzRSiUkYpnfvnS669zWZLoqqI6NprtLQ+5dck=", 79 + "lastModified": 1746461020, 80 + "narHash": "sha256-7+pG1I9jvxNlmln4YgnlW4o+w0TZX24k688mibiFDUE=", 81 81 "owner": "nixos", 82 82 "repo": "nixpkgs", 83 - "rev": "46e634be05ce9dc6d4db8e664515ba10b78151ae", 83 + "rev": "3730d8a308f94996a9ba7c7138ede69c1b9ac4ae", 84 84 "type": "github" 85 85 }, 86 86 "original": { ··· 113 113 "nixpkgs": "nixpkgs_2" 114 114 }, 115 115 "locked": { 116 - "lastModified": 1742649964, 117 - "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=", 116 + "lastModified": 1746537231, 117 + "narHash": "sha256-Wb2xeSyOsCoTCTj7LOoD6cdKLEROyFAArnYoS+noCWo=", 118 118 "owner": "cachix", 119 119 "repo": "git-hooks.nix", 120 - "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82", 120 + "rev": "fa466640195d38ec97cf0493d6d6882bc4d14969", 121 121 "type": "github" 122 122 }, 123 123 "original": {
+1 -1
flake.nix
··· 24 24 25 25 # Specify your home configuration modules here, for example, 26 26 # the path to your home.nix. 27 - modules = [ ./noah-home.nix ]; 27 + modules = [ ./home.nix ]; 28 28 29 29 # Optionally use extraSpecialArgs 30 30 # to pass through arguments to home.nix
+296 -59
home.nix
··· 1 - { config, pkgs, ... }: 2 - 1 + { pkgs, unstable, ... }: 3 2 { 4 3 # Home Manager needs a bit of information about you and the paths it should 5 4 # manage. 6 5 home.username = "noah"; 7 6 home.homeDirectory = "/Users/noah"; 7 + nix = { 8 + package = pkgs.nix; 9 + settings = { 10 + experimental-features = [ "nix-command" "flakes" ]; 11 + #substituters = [ 12 + # "http://cache.misaki.local" 13 + #]; 14 + #trusted-public-keys = [ 15 + # "misaki.packetlost.dev:y5Z/utaVBozpL0UAbUQDWLjpm2sVMOoKzyG76n/167A=" 16 + #]; 17 + }; 18 + }; 19 + home.packages = with pkgs; [ 20 + # main tool 21 + direnv 22 + #fish 23 + tree 24 + btop 25 + # Apple Silicon top monitoring 26 + asitop 27 + htop 28 + mtr 29 + moreutils 30 + rsync 31 + bash 32 + tmux 33 + coreutils 34 + util-linux 8 35 9 - # This value determines the Home Manager release that your configuration is 10 - # compatible with. This helps avoid breakage when a new Home Manager release 11 - # introduces backwards incompatible changes. 12 - # 13 - # You should not change this value, even if you update Home Manager. If you do 14 - # want to update the value, then make sure to first check the Home Manager 15 - # release notes. 16 - home.stateVersion = "24.11"; # Please read the comment before changing. 36 + unzip 37 + fd 38 + jq 39 + ripgrep 40 + bat 41 + netcat 42 + stunnel 43 + iperf3 44 + entr 45 + ncdu 46 + # broken? 47 + #unstable.bitwarden-cli 48 + sqlite 49 + age 50 + just 51 + unstable.catgirl 52 + plan9port 53 + unstable.rc 54 + unstable.glow 55 + unstable.vis 56 + # Tcl/Tk 57 + #unstable.tcl 58 + #unstable.tk 59 + #unstable.tclPackages.tclx 17 60 18 - # The home.packages option allows you to install Nix packages into your 19 - # environment. 20 - home.packages = [ 21 - # # Adds the 'hello' command to your environment. It prints a friendly 22 - # # "Hello, world!" when run. 23 - # pkgs.hello 24 61 25 - # # It is sometimes useful to fine-tune packages, for example, by applying 26 - # # overrides. You can do that directly here, just don't forget the 27 - # # parentheses. Maybe you want to install Nerd Fonts with a limited number of 28 - # # fonts? 29 - # (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; }) 62 + # Dev tools 63 + git 64 + unstable.ruff 65 + # Rust REPL 66 + evcxr 67 + #unstable.gcc 68 + #unstable.clang 69 + # Swift stuff 70 + #swift 71 + #swift-format 72 + # Swift LSP 73 + #sourcekit-lsp 74 + unstable.go 75 + unstable.gopls 76 + gnumake 77 + #unstable.babashka 78 + unstable.ccls 79 + unstable.clojure 80 + unstable.cljfmt 81 + unstable.clojure-lsp 82 + unstable.janet 83 + unstable.jpm 84 + unstable.fennel-ls 85 + unstable.graalvm-ce 86 + cmake 87 + ctags 88 + #kotlin 89 + #nodejs 90 + #yarn 91 + #node2nix 92 + #opam 93 + # Scala stuff 94 + #unstable.scala_3 95 + #unstable.scalafmt 96 + #unstable.metals 97 + # Scala / Java build tool 98 + #unstable.sbt 99 + # Haskell 100 + #cabal-install 101 + #ghc 30 102 31 - # # You can also create simple shell scripts directly inside your 32 - # # configuration. For example, this adds a command 'my-hello' to your 33 - # # environment: 34 - # (pkgs.writeShellScriptBin "my-hello" '' 35 - # echo "Hello, ${config.home.username}!" 36 - # '') 103 + # Lua 104 + luarocks 105 + luajit 106 + unstable.lua-language-server 107 + luaformatter 108 + libressl 109 + # Erlang 110 + #erlang 111 + #elixir 112 + unstable.nil # nix language server 113 + #typescript 114 + # This is currently broken 115 + #vscode-langservers-extracted 116 + scdoc 117 + #dockerfile-language-server-nodejs 118 + # BROKEN 119 + #yaml-language-server 120 + mkcert 121 + natscli 122 + python312Full 123 + python312Packages.psycopg 124 + unstable.uv 125 + sqlite 126 + #unstable.gleam 127 + #unstable.rebar3 128 + #unstable.flyctl 129 + unstable.bun 130 + unstable.gh 131 + unstable.kraft 132 + unstable.doctl 133 + 134 + # GUI tools 135 + zathura 136 + 137 + # Python dev tools 138 + ruff-lsp 139 + #unstable.pyright 140 + #unstable.python311Packages.python-lsp-server 141 + #unstable.python311Packages.python-lsp-ruff 142 + unstable.pyright 143 + unstable.python311Packages.python-lsp-server 144 + unstable.python311Packages.python-lsp-ruff 145 + 146 + # JavaScript tools 147 + #typescript-language-server 148 + 149 + # Certificate Management 150 + minica 151 + mkcert 152 + step-cli 153 + 154 + # Fish Plugins 155 + #fishPlugins.fzf 156 + #fishPlugins.pure 157 + 158 + # Libraries because MacOS is kinda stupid 159 + ncurses 37 160 ]; 38 161 39 - # Home Manager is pretty good at managing dotfiles. The primary way to manage 40 - # plain files is through 'home.file'. 41 - home.file = { 42 - # # Building this configuration will create a copy of 'dotfiles/screenrc' in 43 - # # the Nix store. Activating the configuration will then make '~/.screenrc' a 44 - # # symlink to the Nix store copy. 45 - # ".screenrc".source = dotfiles/screenrc; 162 + #programs.fish = { 163 + # enable = true; 164 + # package = unstable.fish; 165 + #}; 166 + programs.fzf = { 167 + enable = true; 168 + enableFishIntegration = true; 169 + }; 170 + programs.pistol.enable = true; 171 + programs.lf.enable = true; 172 + programs.home-manager.enable = true; 173 + programs.neovim = { 174 + #package = unstable.neovim-unwrapped; 175 + enable = true; 176 + defaultEditor = true; 177 + withNodeJs = false; 178 + withPython3 = true; 179 + extraPackages = with pkgs; [ fzf ripgrep luarocks tree-sitter ]; 180 + }; 181 + programs.git = { 182 + enable = true; 183 + lfs.enable = true; 184 + userName = "Noah Pederson"; 185 + userEmail = "noah@packetlost.dev"; 186 + extraConfig = { 187 + sendemail = { 188 + smtpserver = "smtp.migadu.com"; 189 + smtpuser = "noah@packetlost.dev"; 190 + smtpencryption = "ssl"; 191 + smtpserverport = 465; 192 + }; 193 + init = { 194 + defaultBranch = "master"; 195 + }; 196 + pull = { 197 + rebase = true; 198 + }; 199 + push = { 200 + default = "simple"; 201 + autoSetupRemote = true; 202 + followTags = true; 203 + }; 204 + credential = { 205 + helper = "cache"; 206 + }; 207 + alias = { 208 + out = "log @{u}.."; 209 + }; 210 + column = { 211 + ui = "auto"; 212 + }; 213 + branch = { 214 + sort = "-committerdate"; 215 + }; 216 + tag = { 217 + sort = "version:refname"; 218 + }; 219 + diff = { 220 + algorithm = "histogram"; 221 + colorMoved = "plain"; 222 + mnemonicPrefix = true; 223 + renames = true; 224 + }; 225 + fetch = { 226 + prune = true; 227 + pruneTags = true; 228 + all = true; 229 + }; 230 + help = { 231 + autocorrect = "prompt"; 232 + }; 233 + commit = { 234 + verbose = true; 235 + }; 236 + rerere = { 237 + enabled = true; 238 + autoupdate = true; 239 + }; 240 + rebase = { 241 + autoSquash = true; 242 + autoStash = true; 243 + updateRefs = true; 244 + }; 245 + merge = { 246 + conflictStyle = "zdiff3"; 247 + }; 248 + }; 249 + ignores = [ 250 + ".direnv/" 251 + ".envrc" 252 + "flake.nix" 253 + "shell.nix" 254 + ".env/" 255 + ".clj-kondo/" 256 + ]; 257 + }; 258 + programs.aerc = { 259 + # BROKEN 260 + enable = false; 261 + }; 262 + programs.ssh = { 263 + enable = true; 264 + extraConfig = builtins.readFile ./ssh/extra; 265 + addKeysToAgent = "yes"; 266 + forwardAgent = true; 267 + }; 46 268 47 - # # You can also set the file content immediately. 48 - # ".gradle/gradle.properties".text = '' 49 - # org.gradle.console=verbose 50 - # org.gradle.daemon.idletimeout=3600000 51 - # ''; 269 + programs.direnv = { 270 + enable = true; 271 + nix-direnv.enable = true; 52 272 }; 53 273 54 - # Home Manager can also manage your environment variables through 55 - # 'home.sessionVariables'. These will be explicitly sourced when using a 56 - # shell provided by Home Manager. If you don't want to manage your shell 57 - # through Home Manager then you have to manually source 'hm-session-vars.sh' 58 - # located at either 59 - # 60 - # ~/.nix-profile/etc/profile.d/hm-session-vars.sh 61 - # 62 - # or 63 - # 64 - # ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh 65 - # 66 - # or 67 - # 68 - # /etc/profiles/per-user/noah/etc/profile.d/hm-session-vars.sh 69 - # 70 - home.sessionVariables = { 71 - # EDITOR = "emacs"; 274 + programs.nix-index = { 275 + enable = true; 276 + enableFishIntegration = true; 72 277 }; 73 278 74 - # Let Home Manager install and manage itself. 75 - programs.home-manager.enable = true; 279 + # Independent config files. 280 + xdg.configFile.nvim = { 281 + source = ./nvim; 282 + recursive = true; 283 + }; 284 + 285 + xdg.configFile.vis = { 286 + source = ./vis; 287 + recursive = true; 288 + }; 289 + 290 + xdg.configFile.fish = { 291 + source = ./fish; 292 + recursive = true; 293 + }; 294 + xdg.configFile."fish/completions/nix.fish".source = "${pkgs.nix}/share/fish/vendor_completions.d/nix.fish"; 295 + 296 + xdg.configFile.aerc = { 297 + source = ./aerc; 298 + recursive = true; 299 + }; 300 + 301 + xdg.configFile.ghostty = { 302 + source = ./ghostty; 303 + recursive = true; 304 + }; 305 + 306 + home.file.".local/bin" = { 307 + source = ./scripts; 308 + recursive = true; 309 + }; 310 + 311 + home.stateVersion = "24.11"; 312 + 76 313 }
-318
noah-home.nix
··· 1 - { pkgs, unstable, ... }: 2 - { 3 - # Home Manager needs a bit of information about you and the paths it should 4 - # manage. 5 - home.username = "noah"; 6 - home.homeDirectory = "/Users/noah"; 7 - nix = { 8 - package = pkgs.nix; 9 - settings = { 10 - substituters = [ 11 - "http://cache.misaki.local" 12 - ]; 13 - trusted-public-keys = [ 14 - "misaki.packetlost.dev:y5Z/utaVBozpL0UAbUQDWLjpm2sVMOoKzyG76n/167A=" 15 - ]; 16 - }; 17 - }; 18 - home.packages = with pkgs; [ 19 - # main tool 20 - direnv 21 - #fish 22 - tree 23 - btop 24 - # Apple Silicon top monitoring 25 - asitop 26 - htop 27 - mtr 28 - moreutils 29 - rsync 30 - bash 31 - tmux 32 - coreutils 33 - util-linux 34 - 35 - unzip 36 - fd 37 - jq 38 - ripgrep 39 - bat 40 - netcat 41 - stunnel 42 - iperf3 43 - entr 44 - ncdu 45 - # broken? 46 - #unstable.bitwarden-cli 47 - sqlite 48 - age 49 - just 50 - unstable.catgirl 51 - devenv 52 - plan9port 53 - unstable.rc 54 - unstable.glow 55 - unstable.vis 56 - # Tcl/Tk 57 - #unstable.tcl 58 - #unstable.tk 59 - #unstable.tclPackages.tclx 60 - 61 - 62 - # Dev tools 63 - git 64 - unstable.ruff 65 - # Rust REPL 66 - evcxr 67 - #unstable.gcc 68 - swift 69 - swift-format 70 - sourcekit-lsp 71 - #unstable.clang 72 - unstable.go 73 - unstable.gopls 74 - gnumake 75 - #unstable.babashka 76 - ccls 77 - #unstable.clojure 78 - #unstable.cljfmt 79 - #unstable.clojure-lsp 80 - #unstable.janet 81 - #unstable.jpm 82 - unstable.fennel-ls 83 - #graalvm-ce 84 - cmake 85 - ctags 86 - #kotlin 87 - #nodejs 88 - yarn 89 - #node2nix 90 - #opam 91 - # Scala stuff 92 - #unstable.scala_3 93 - #unstable.scalafmt 94 - #unstable.metals 95 - # Scala / Java build tool 96 - #unstable.sbt 97 - # Haskell 98 - #cabal-install 99 - #ghc 100 - 101 - # Lua 102 - luarocks 103 - luajit 104 - lua-language-server 105 - luaformatter 106 - libressl 107 - # Erlang 108 - #erlang 109 - #elixir 110 - nil # nix language server 111 - typescript 112 - # This is currently broken 113 - #vscode-langservers-extracted 114 - scdoc 115 - dockerfile-language-server-nodejs 116 - # BROKEN 117 - #yaml-language-server 118 - mkcert 119 - natscli 120 - python312Full 121 - python312Packages.psycopg 122 - unstable.uv 123 - sqlite 124 - #unstable.gleam 125 - #unstable.rebar3 126 - #unstable.flyctl 127 - unstable.bun 128 - unstable.gh 129 - unstable.kraft 130 - unstable.doctl 131 - 132 - # GUI tools 133 - zathura 134 - 135 - # Python dev tools 136 - ruff-lsp 137 - unstable.pyright 138 - unstable.python311Packages.python-lsp-server 139 - unstable.python311Packages.python-lsp-ruff 140 - 141 - # JavaScript tools 142 - typescript-language-server 143 - 144 - # Certificate Management 145 - minica 146 - mkcert 147 - step-cli 148 - 149 - # Fish Plugins 150 - #fishPlugins.fzf 151 - #fishPlugins.pure 152 - 153 - # Libraries because MacOS is kinda stupid 154 - ncurses 155 - # Unfree 156 - #unstable.discord 157 - #unstable.spotify 158 - # Work related stuff 159 - solana-cli 160 - google-cloud-sdk 161 - ]; 162 - 163 - nix = { 164 - settings.experimental-features = [ "nix-command" "flakes" ]; 165 - }; 166 - 167 - #programs.fish = { 168 - # enable = true; 169 - # package = unstable.fish; 170 - #}; 171 - programs.fzf = { 172 - enable = true; 173 - enableFishIntegration = true; 174 - }; 175 - programs.pistol.enable = true; 176 - programs.lf.enable = true; 177 - programs.home-manager.enable = true; 178 - programs.neovim = { 179 - package = unstable.neovim-unwrapped; 180 - enable = true; 181 - defaultEditor = true; 182 - withNodeJs = true; 183 - withPython3 = true; 184 - extraPackages = with pkgs; [ fzf ripgrep luarocks tree-sitter ]; 185 - }; 186 - programs.git = { 187 - enable = true; 188 - lfs.enable = true; 189 - userName = "Noah Pederson"; 190 - userEmail = "noah@packetlost.dev"; 191 - extraConfig = { 192 - sendemail = { 193 - smtpserver = "smtp.migadu.com"; 194 - smtpuser = "noah@packetlost.dev"; 195 - smtpencryption = "ssl"; 196 - smtpserverport = 465; 197 - }; 198 - init = { 199 - defaultBranch = "master"; 200 - }; 201 - pull = { 202 - rebase = true; 203 - }; 204 - push = { 205 - default = "simple"; 206 - autoSetupRemote = true; 207 - followTags = true; 208 - }; 209 - credential = { 210 - helper = "cache"; 211 - }; 212 - alias = { 213 - out = "log @{u}.."; 214 - }; 215 - column = { 216 - ui = "auto"; 217 - }; 218 - branch = { 219 - sort = "-committerdate"; 220 - }; 221 - tag = { 222 - sort = "version:refname"; 223 - }; 224 - diff = { 225 - algorithm = "histogram"; 226 - colorMoved = "plain"; 227 - mnemonicPrefix = true; 228 - renames = true; 229 - }; 230 - fetch = { 231 - prune = true; 232 - pruneTags = true; 233 - all = true; 234 - }; 235 - help = { 236 - autocorrect = "prompt"; 237 - }; 238 - commit = { 239 - verbose = true; 240 - }; 241 - rerere = { 242 - enabled = true; 243 - autoupdate = true; 244 - }; 245 - rebase = { 246 - autoSquash = true; 247 - autoStash = true; 248 - updateRefs = true; 249 - }; 250 - merge = { 251 - conflictStyle = "zdiff3"; 252 - }; 253 - }; 254 - ignores = [ 255 - ".direnv/" 256 - ".envrc" 257 - "flake.nix" 258 - "shell.nix" 259 - ".env/" 260 - ".clj-kondo/" 261 - ]; 262 - }; 263 - programs.aerc = { 264 - # BROKEN 265 - enable = false; 266 - }; 267 - programs.ssh = { 268 - enable = true; 269 - extraConfig = builtins.readFile ./ssh/extra; 270 - addKeysToAgent = "yes"; 271 - forwardAgent = true; 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 - 284 - # Independent config files. 285 - xdg.configFile.nvim = { 286 - source = ./nvim; 287 - recursive = true; 288 - }; 289 - 290 - xdg.configFile.vis = { 291 - source = ./vis; 292 - recursive = true; 293 - }; 294 - 295 - xdg.configFile.fish = { 296 - source = ./fish; 297 - recursive = true; 298 - }; 299 - xdg.configFile."fish/completions/nix.fish".source = "${pkgs.nix}/share/fish/vendor_completions.d/nix.fish"; 300 - 301 - xdg.configFile.aerc = { 302 - source = ./aerc; 303 - recursive = true; 304 - }; 305 - 306 - xdg.configFile.ghostty = { 307 - source = ./ghostty; 308 - recursive = true; 309 - }; 310 - 311 - home.file.".local/bin" = { 312 - source = ./scripts; 313 - recursive = true; 314 - }; 315 - 316 - home.stateVersion = "24.11"; 317 - 318 - }