···24242525 # Specify your home configuration modules here, for example,
2626 # the path to your home.nix.
2727- modules = [ ./noah-home.nix ];
2727+ modules = [ ./home.nix ];
28282929 # Optionally use extraSpecialArgs
3030 # to pass through arguments to home.nix
+296-59
home.nix
···11-{ config, pkgs, ... }:
22-11+{ pkgs, unstable, ... }:
32{
43 # Home Manager needs a bit of information about you and the paths it should
54 # manage.
65 home.username = "noah";
76 home.homeDirectory = "/Users/noah";
77+ nix = {
88+ package = pkgs.nix;
99+ settings = {
1010+ experimental-features = [ "nix-command" "flakes" ];
1111+ #substituters = [
1212+ # "http://cache.misaki.local"
1313+ #];
1414+ #trusted-public-keys = [
1515+ # "misaki.packetlost.dev:y5Z/utaVBozpL0UAbUQDWLjpm2sVMOoKzyG76n/167A="
1616+ #];
1717+ };
1818+ };
1919+ home.packages = with pkgs; [
2020+ # main tool
2121+ direnv
2222+ #fish
2323+ tree
2424+ btop
2525+ # Apple Silicon top monitoring
2626+ asitop
2727+ htop
2828+ mtr
2929+ moreutils
3030+ rsync
3131+ bash
3232+ tmux
3333+ coreutils
3434+ util-linux
83599- # This value determines the Home Manager release that your configuration is
1010- # compatible with. This helps avoid breakage when a new Home Manager release
1111- # introduces backwards incompatible changes.
1212- #
1313- # You should not change this value, even if you update Home Manager. If you do
1414- # want to update the value, then make sure to first check the Home Manager
1515- # release notes.
1616- home.stateVersion = "24.11"; # Please read the comment before changing.
3636+ unzip
3737+ fd
3838+ jq
3939+ ripgrep
4040+ bat
4141+ netcat
4242+ stunnel
4343+ iperf3
4444+ entr
4545+ ncdu
4646+ # broken?
4747+ #unstable.bitwarden-cli
4848+ sqlite
4949+ age
5050+ just
5151+ unstable.catgirl
5252+ plan9port
5353+ unstable.rc
5454+ unstable.glow
5555+ unstable.vis
5656+ # Tcl/Tk
5757+ #unstable.tcl
5858+ #unstable.tk
5959+ #unstable.tclPackages.tclx
17601818- # The home.packages option allows you to install Nix packages into your
1919- # environment.
2020- home.packages = [
2121- # # Adds the 'hello' command to your environment. It prints a friendly
2222- # # "Hello, world!" when run.
2323- # pkgs.hello
24612525- # # It is sometimes useful to fine-tune packages, for example, by applying
2626- # # overrides. You can do that directly here, just don't forget the
2727- # # parentheses. Maybe you want to install Nerd Fonts with a limited number of
2828- # # fonts?
2929- # (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
6262+ # Dev tools
6363+ git
6464+ unstable.ruff
6565+ # Rust REPL
6666+ evcxr
6767+ #unstable.gcc
6868+ #unstable.clang
6969+ # Swift stuff
7070+ #swift
7171+ #swift-format
7272+ # Swift LSP
7373+ #sourcekit-lsp
7474+ unstable.go
7575+ unstable.gopls
7676+ gnumake
7777+ #unstable.babashka
7878+ unstable.ccls
7979+ unstable.clojure
8080+ unstable.cljfmt
8181+ unstable.clojure-lsp
8282+ unstable.janet
8383+ unstable.jpm
8484+ unstable.fennel-ls
8585+ unstable.graalvm-ce
8686+ cmake
8787+ ctags
8888+ #kotlin
8989+ #nodejs
9090+ #yarn
9191+ #node2nix
9292+ #opam
9393+ # Scala stuff
9494+ #unstable.scala_3
9595+ #unstable.scalafmt
9696+ #unstable.metals
9797+ # Scala / Java build tool
9898+ #unstable.sbt
9999+ # Haskell
100100+ #cabal-install
101101+ #ghc
301023131- # # You can also create simple shell scripts directly inside your
3232- # # configuration. For example, this adds a command 'my-hello' to your
3333- # # environment:
3434- # (pkgs.writeShellScriptBin "my-hello" ''
3535- # echo "Hello, ${config.home.username}!"
3636- # '')
103103+ # Lua
104104+ luarocks
105105+ luajit
106106+ unstable.lua-language-server
107107+ luaformatter
108108+ libressl
109109+ # Erlang
110110+ #erlang
111111+ #elixir
112112+ unstable.nil # nix language server
113113+ #typescript
114114+ # This is currently broken
115115+ #vscode-langservers-extracted
116116+ scdoc
117117+ #dockerfile-language-server-nodejs
118118+ # BROKEN
119119+ #yaml-language-server
120120+ mkcert
121121+ natscli
122122+ python312Full
123123+ python312Packages.psycopg
124124+ unstable.uv
125125+ sqlite
126126+ #unstable.gleam
127127+ #unstable.rebar3
128128+ #unstable.flyctl
129129+ unstable.bun
130130+ unstable.gh
131131+ unstable.kraft
132132+ unstable.doctl
133133+134134+ # GUI tools
135135+ zathura
136136+137137+ # Python dev tools
138138+ ruff-lsp
139139+ #unstable.pyright
140140+ #unstable.python311Packages.python-lsp-server
141141+ #unstable.python311Packages.python-lsp-ruff
142142+ unstable.pyright
143143+ unstable.python311Packages.python-lsp-server
144144+ unstable.python311Packages.python-lsp-ruff
145145+146146+ # JavaScript tools
147147+ #typescript-language-server
148148+149149+ # Certificate Management
150150+ minica
151151+ mkcert
152152+ step-cli
153153+154154+ # Fish Plugins
155155+ #fishPlugins.fzf
156156+ #fishPlugins.pure
157157+158158+ # Libraries because MacOS is kinda stupid
159159+ ncurses
37160 ];
381613939- # Home Manager is pretty good at managing dotfiles. The primary way to manage
4040- # plain files is through 'home.file'.
4141- home.file = {
4242- # # Building this configuration will create a copy of 'dotfiles/screenrc' in
4343- # # the Nix store. Activating the configuration will then make '~/.screenrc' a
4444- # # symlink to the Nix store copy.
4545- # ".screenrc".source = dotfiles/screenrc;
162162+ #programs.fish = {
163163+ # enable = true;
164164+ # package = unstable.fish;
165165+ #};
166166+ programs.fzf = {
167167+ enable = true;
168168+ enableFishIntegration = true;
169169+ };
170170+ programs.pistol.enable = true;
171171+ programs.lf.enable = true;
172172+ programs.home-manager.enable = true;
173173+ programs.neovim = {
174174+ #package = unstable.neovim-unwrapped;
175175+ enable = true;
176176+ defaultEditor = true;
177177+ withNodeJs = false;
178178+ withPython3 = true;
179179+ extraPackages = with pkgs; [ fzf ripgrep luarocks tree-sitter ];
180180+ };
181181+ programs.git = {
182182+ enable = true;
183183+ lfs.enable = true;
184184+ userName = "Noah Pederson";
185185+ userEmail = "noah@packetlost.dev";
186186+ extraConfig = {
187187+ sendemail = {
188188+ smtpserver = "smtp.migadu.com";
189189+ smtpuser = "noah@packetlost.dev";
190190+ smtpencryption = "ssl";
191191+ smtpserverport = 465;
192192+ };
193193+ init = {
194194+ defaultBranch = "master";
195195+ };
196196+ pull = {
197197+ rebase = true;
198198+ };
199199+ push = {
200200+ default = "simple";
201201+ autoSetupRemote = true;
202202+ followTags = true;
203203+ };
204204+ credential = {
205205+ helper = "cache";
206206+ };
207207+ alias = {
208208+ out = "log @{u}..";
209209+ };
210210+ column = {
211211+ ui = "auto";
212212+ };
213213+ branch = {
214214+ sort = "-committerdate";
215215+ };
216216+ tag = {
217217+ sort = "version:refname";
218218+ };
219219+ diff = {
220220+ algorithm = "histogram";
221221+ colorMoved = "plain";
222222+ mnemonicPrefix = true;
223223+ renames = true;
224224+ };
225225+ fetch = {
226226+ prune = true;
227227+ pruneTags = true;
228228+ all = true;
229229+ };
230230+ help = {
231231+ autocorrect = "prompt";
232232+ };
233233+ commit = {
234234+ verbose = true;
235235+ };
236236+ rerere = {
237237+ enabled = true;
238238+ autoupdate = true;
239239+ };
240240+ rebase = {
241241+ autoSquash = true;
242242+ autoStash = true;
243243+ updateRefs = true;
244244+ };
245245+ merge = {
246246+ conflictStyle = "zdiff3";
247247+ };
248248+ };
249249+ ignores = [
250250+ ".direnv/"
251251+ ".envrc"
252252+ "flake.nix"
253253+ "shell.nix"
254254+ ".env/"
255255+ ".clj-kondo/"
256256+ ];
257257+ };
258258+ programs.aerc = {
259259+ # BROKEN
260260+ enable = false;
261261+ };
262262+ programs.ssh = {
263263+ enable = true;
264264+ extraConfig = builtins.readFile ./ssh/extra;
265265+ addKeysToAgent = "yes";
266266+ forwardAgent = true;
267267+ };
462684747- # # You can also set the file content immediately.
4848- # ".gradle/gradle.properties".text = ''
4949- # org.gradle.console=verbose
5050- # org.gradle.daemon.idletimeout=3600000
5151- # '';
269269+ programs.direnv = {
270270+ enable = true;
271271+ nix-direnv.enable = true;
52272 };
532735454- # Home Manager can also manage your environment variables through
5555- # 'home.sessionVariables'. These will be explicitly sourced when using a
5656- # shell provided by Home Manager. If you don't want to manage your shell
5757- # through Home Manager then you have to manually source 'hm-session-vars.sh'
5858- # located at either
5959- #
6060- # ~/.nix-profile/etc/profile.d/hm-session-vars.sh
6161- #
6262- # or
6363- #
6464- # ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
6565- #
6666- # or
6767- #
6868- # /etc/profiles/per-user/noah/etc/profile.d/hm-session-vars.sh
6969- #
7070- home.sessionVariables = {
7171- # EDITOR = "emacs";
274274+ programs.nix-index = {
275275+ enable = true;
276276+ enableFishIntegration = true;
72277 };
732787474- # Let Home Manager install and manage itself.
7575- programs.home-manager.enable = true;
279279+ # Independent config files.
280280+ xdg.configFile.nvim = {
281281+ source = ./nvim;
282282+ recursive = true;
283283+ };
284284+285285+ xdg.configFile.vis = {
286286+ source = ./vis;
287287+ recursive = true;
288288+ };
289289+290290+ xdg.configFile.fish = {
291291+ source = ./fish;
292292+ recursive = true;
293293+ };
294294+ xdg.configFile."fish/completions/nix.fish".source = "${pkgs.nix}/share/fish/vendor_completions.d/nix.fish";
295295+296296+ xdg.configFile.aerc = {
297297+ source = ./aerc;
298298+ recursive = true;
299299+ };
300300+301301+ xdg.configFile.ghostty = {
302302+ source = ./ghostty;
303303+ recursive = true;
304304+ };
305305+306306+ home.file.".local/bin" = {
307307+ source = ./scripts;
308308+ recursive = true;
309309+ };
310310+311311+ home.stateVersion = "24.11";
312312+76313}