diff --git a/cli/home.nix b/cli/home.nix index c9cc9a2..310e844 100644 --- a/cli/home.nix +++ b/cli/home.nix @@ -15,7 +15,10 @@ let shellAliases = { hm = "nix run home-manager/master -- switch --flake github:cupcakearmy/nix?dir=cli#${name} -b backup"; }; + # Lists are not recursively updated, need to do by hand + packages = common.home.packages ++ [ ]; }; }; + merged = lib.recursiveUpdate common overwrite; in -lib.recursiveUpdate common overwrite +merged diff --git a/common/home.nix b/common/home.nix index 9237ab3..5977389 100644 --- a/common/home.nix +++ b/common/home.nix @@ -2,7 +2,6 @@ pkgs, ... }: - { home.stateVersion = "25.11"; @@ -19,12 +18,12 @@ btop rclone rename - tmux tree wget rsync yq delta + kubectl # Rust utils bat @@ -38,15 +37,14 @@ yazi starship - # Dev + # TUI lazydocker + lazygit k9s - kubectl # Editor neovim fzf - lazygit # Fonts nerd-fonts.jetbrains-mono @@ -78,6 +76,7 @@ }; programs = { + home-manager.enable = true; direnv.enable = true; zoxide.enable = true; diff --git a/flake.lock b/flake.lock index 693aab3..601ab24 100644 --- a/flake.lock +++ b/flake.lock @@ -42,11 +42,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1759826507, - "narHash": "sha256-vwXL9H5zDHEQA0oFpww2one0/hkwnPAjc47LRph6d0I=", + "lastModified": 1759917807, + "narHash": "sha256-WoSazth5EXIJmveWf0zbTMycrgpbLYOth6KhmltMuv0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bce5fe2bb998488d8e7e7856315f90496723793c", + "rev": "fb5cf53218b987f2703a5bbc292a030c0fe33443", "type": "github" }, "original": { diff --git a/home/home.nix b/home/home.nix index f9bc63c..47d04ba 100644 --- a/home/home.nix +++ b/home/home.nix @@ -5,103 +5,46 @@ config, ... }: -{ - # https://nix-community.github.io/home-manager - home.stateVersion = "25.05"; - programs.home-manager.enable = true; +let + common = (import ../common/home.nix) { inherit pkgs; }; + overwrite = { + home.username = host.username; + home.homeDirectory = "/Users/${host.username}"; - home.username = host.username; - home.homeDirectory = "/Users/${host.username}"; + home.packages = + common.home.packages + ++ (import ./pkgs.nix { inherit pkgs; }) + ++ ((lib.attrByPath [ "extras" "pkgs" ] (pkgs: [ ]) host) pkgs); - home.packages = - (import ./pkgs.nix { inherit pkgs; }) - ++ ((lib.attrByPath [ "extras" "pkgs" ] (pkgs: [ ]) host) pkgs); + fonts.fontconfig.enable = true; - fonts.fontconfig.enable = true; + home = { - home = { - sessionVariables = { - EDITOR = "nvim"; - }; + file = { + ".config/ghostty/config".source = ../files/ghostty/config; + ".gitconfig".source = ../files/git/gitconfig; + ".gitignore_global".source = ../files/git/gitignore_global; + ".gitconfig.local".source = ../secrets/git/config.${host.hostName}; + ".config/nvim".source = ../files/nvim; + "Library/Application Support/lazydocker/config.yml".source = ../files/lazydocker/config.yml; - file = { - ".config/ghostty/config".source = ../files/ghostty/config; - ".gitconfig".source = ../files/git/gitconfig; - ".gitignore_global".source = ../files/git/gitignore_global; - ".gitconfig.local".source = ../secrets/git/config.${host.hostName}; - ".config/nvim".source = ../files/nvim; - "Library/Application Support/lazydocker/config.yml".source = ../files/lazydocker/config.yml; + # Secrets + ".ssh/config".text = builtins.replaceStrings [ "@SSH_KEY@" ] [ host.sshKey ] ( + builtins.readFile ../secrets/ssh/config.template + ); + }; - # Secrets - ".ssh/config".text = builtins.replaceStrings [ "@SSH_KEY@" ] [ host.sshKey ] ( - builtins.readFile ../secrets/ssh/config.template - ); - }; + shellAliases = { + p = "pnpm"; + px = "pnpm -s dlx"; + n = "fnm use --install-if-missing"; + c = "pwd | pbcopy"; - shellAliases = { - # Rust re-maps - l = "eza -a1lh"; - ls = "eza"; - cat = "bat"; - cd = "z"; - - # QOL - dc = "docker compose"; - rsync = "rsync -az --info=progress2"; - t = "tmux new-session -A -s main"; - e = "nvim"; - g = "lazygit"; - d = "lazydocker"; - p = "pnpm"; - px = "pnpm -s dlx"; - n = "fnm use --install-if-missing"; - c = "pwd | pbcopy"; - k = "kubectl"; - - vai = "sudo darwin-rebuild switch --flake ~/.config/nix-macos#${host.hostName}"; + vai = "sudo darwin-rebuild switch --flake ~/.config/nix-macos#${host.hostName}"; + }; }; }; - programs = { - direnv.enable = true; - zoxide.enable = true; - - fish = { - enable = true; - interactiveShellInit = '' - if type -q starship - starship init fish | source - end - if type -q fnm - fnm env --use-on-cd | source - end - if type -q nvs - nvs env --source | source - end - ''; - }; - bash = { - enable = true; - }; - tmux = { - enable = true; - clock24 = true; - mouse = true; - extraConfig = '' - # switch panes using Alt-arrow without prefix - bind -n M-Left select-pane -L - bind -n M-Right select-pane -R - bind -n M-Up select-pane -U - bind -n M-Down select-pane -D - - # switch panes using jkhl - bind h select-pane -L - bind l select-pane -R - bind j select-pane -U - bind k select-pane -D - ''; - shell = "${pkgs.fish}/bin/fish"; - terminal = "tmux-256color"; - }; - }; -} + merged = lib.recursiveUpdate common overwrite; +in +merged diff --git a/home/pkgs.nix b/home/pkgs.nix index f949e50..0637a0b 100644 --- a/home/pkgs.nix +++ b/home/pkgs.nix @@ -2,56 +2,20 @@ with pkgs; [ # Base - tmux - git - git-lfs - git-crypt gh bfg-repo-cleaner - gnutar - gnupg - htop - btop - rclone - rename - tmux - tree - wget woff2 - rsync - yq - delta - - # Rust utils - bat - eza - fd - ripgrep - ripgrep-all - zoxide - uutils-coreutils-noprefix - dust - yazi - starship # Dev devenv nixpacks - ollama - colima - lazydocker - exercism posting terraform - k9s - kubectl claude-code + opencode # Editor nvs - neovim - fzf - lazygit lua luajitPackages.luarocks ast-grep @@ -71,6 +35,5 @@ with pkgs; go # Fonts - nerd-fonts.jetbrains-mono karla ]