diff --git a/AGENTS.md b/AGENTS.md index f94dbce..0c2ac0d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -30,13 +30,15 @@ CI runs `nix flake check --all-systems` then builds the `erik@darter` home confi The flake uses `flake-parts` with these categorical module directories imported as `flake.modules.flake`: +- `ai/` — claude-code, github-copilot-cli, cursor-cli (shared by both users) - `browsers/` — Brave - `desktops/` — GNOME - `editors/` — VS Code (with profiles per host), Neovim (via nixvim), Zed, Helix, Emacs -- `shells/` — Zsh (Prezto + Powerlevel10k) +- `gnupg/` — gpg + gpg-agent (shared by both users; pinentry only on Linux) +- `shells/` — Zsh (Prezto, or oh-my-zsh as an alt via `dotfiles.zsh.ohMyZsh.enable`; Powerlevel10k) - `terminals/` — Kitty, Ghostty - `toolchain/` — per-language dev tool configs: c, containers, dotnet, git, go, javascript, kubernetes (with k9s and openshift submodules), nix, ocaml, python -- `users/erik/` — Linux (x86_64) home config; includes `ai.nix` (enables claude-code, github-copilot-cli, cursor-cli) +- `users/erik/` — Linux (x86_64) home config - `users/erasmussen/` — macOS (aarch64-darwin) home config Three home configurations are defined: `erik@darter` and `erik@hades` (both x86_64-linux), and `erasmussen@Eriks-MacBook-Pro.local` (aarch64-darwin). diff --git a/users/erik/ai.nix b/ai/default.nix similarity index 99% rename from users/erik/ai.nix rename to ai/default.nix index 18b496c..50f5012 100644 --- a/users/erik/ai.nix +++ b/ai/default.nix @@ -6,6 +6,7 @@ }: { options.dotfiles.ai.enable = lib.mkEnableOption "Slop"; + config = lib.mkIf config.dotfiles.ai.enable { programs.claude-code.enable = true; home.packages = with pkgs; [ diff --git a/users/erik/gnupg.nix b/gnupg/default.nix similarity index 77% rename from users/erik/gnupg.nix rename to gnupg/default.nix index 730455e..57c5df8 100644 --- a/users/erik/gnupg.nix +++ b/gnupg/default.nix @@ -1,11 +1,11 @@ -{ pkgs, ... }: +{ pkgs, lib, ... }: { programs.gpg.enable = true; services.gpg-agent = { enable = true; enableSshSupport = true; enableZshIntegration = true; - pinentry = { + pinentry = lib.mkIf pkgs.stdenv.isLinux { package = pkgs.pinentry-all; program = "pinentry-gnome3"; }; diff --git a/shells/zsh/default.nix b/shells/zsh/default.nix index 6ffd7a4..a5ff4db 100644 --- a/shells/zsh/default.nix +++ b/shells/zsh/default.nix @@ -5,7 +5,10 @@ ... }: { - imports = [ ./prezto ]; + imports = [ + ./prezto + ./oh-my-zsh + ]; options.dotfiles.zsh.enable = lib.mkEnableOption "zsh"; diff --git a/shells/zsh/oh-my-zsh/default.nix b/shells/zsh/oh-my-zsh/default.nix index fb4734e..aa0364b 100644 --- a/shells/zsh/oh-my-zsh/default.nix +++ b/shells/zsh/oh-my-zsh/default.nix @@ -1,7 +1,9 @@ +{ lib, config, ... }: { - programs.zsh = { - enable = true; - oh-my-zsh = { + options.dotfiles.zsh.ohMyZsh.enable = lib.mkEnableOption "oh-my-zsh (alt to prezto)"; + + config = lib.mkIf config.dotfiles.zsh.ohMyZsh.enable { + programs.zsh.oh-my-zsh = { enable = true; plugins = [ "sudo" diff --git a/toolchain/git/default.nix b/toolchain/git/default.nix index 04f5513..b90bcd0 100644 --- a/toolchain/git/default.nix +++ b/toolchain/git/default.nix @@ -1,59 +1,68 @@ -{ pkgs, ... }: { - programs.git = { - enable = true; - package = pkgs.git; - lfs.enable = true; - - settings = { - core = { - editor = "nvim"; - }; + pkgs, + lib, + config, + ... +}: +{ + options.dotfiles.git.enable = lib.mkEnableOption "git Toolchain"; - user = { - name = "UnstoppableMango"; - email = "erik.rasmussen@unmango.dev"; - }; + config = lib.mkIf config.dotfiles.git.enable { + programs.git = { + enable = true; + package = pkgs.git; + lfs.enable = true; - commit = { - gpgsign = true; - }; + settings = { + core = { + editor = "nvim"; + }; - tag = { - # I think gpgsign=true is what was forcing annotated tags - gpgsign = false; - }; + user = { + name = "UnstoppableMango"; + email = "erik.rasmussen@unmango.dev"; + }; + + commit = { + gpgsign = true; + }; - alias = { - co = "checkout"; - ff = "merge --ff-only"; - last = "log -1 HEAD"; - unstage = "reset HEAD --"; + tag = { + # I think gpgsign=true is what was forcing annotated tags + gpgsign = false; + }; + + alias = { + co = "checkout"; + ff = "merge --ff-only"; + last = "log -1 HEAD"; + unstage = "reset HEAD --"; + }; + + push.autoSetupRemote = true; }; - push.autoSetupRemote = true; + ignores = [ + "**/node_modules/" + ".DS_Store" + ".direnv/" + ".envrc" + ".idea/**/discord.xml" + ".worktree/" + ]; }; - ignores = [ - "**/node_modules/" - ".DS_Store" - ".direnv/" - ".envrc" - ".idea/**/discord.xml" - ".worktree/" - ]; - }; + # Still fiddling with these + # https://github.com/git/git/blob/master/contrib/diff-highlight/README + programs.diff-highlight = { + enable = true; + enableGitIntegration = true; + }; + # https://github.com/so-fancy/diff-so-fancy + # programs.diff-so-fancy.enable = true; + # https://github.com/Wilfred/difftastic + # programs.difftastic.enable = true; - # Still fiddling with these - # https://github.com/git/git/blob/master/contrib/diff-highlight/README - programs.diff-highlight = { - enable = true; - enableGitIntegration = true; + programs.gh.enable = true; }; - # https://github.com/so-fancy/diff-so-fancy - # programs.diff-so-fancy.enable = true; - # https://github.com/Wilfred/difftastic - # programs.difftastic.enable = true; - - programs.gh.enable = true; } diff --git a/toolchain/nix/default.nix b/toolchain/nix/default.nix index 9237698..d941624 100644 --- a/toolchain/nix/default.nix +++ b/toolchain/nix/default.nix @@ -1,9 +1,18 @@ -{ pkgs, ... }: { - home.packages = with pkgs; [ - nil - nixd - nix-init - nurl - ]; + pkgs, + lib, + config, + ... +}: +{ + options.dotfiles.nix.enable = lib.mkEnableOption "nix Toolchain"; + + config = lib.mkIf config.dotfiles.nix.enable { + home.packages = with pkgs; [ + nil + nixd + nix-init + nurl + ]; + }; } diff --git a/users/erasmussen/default.nix b/users/erasmussen/default.nix index 9293182..a108fb3 100644 --- a/users/erasmussen/default.nix +++ b/users/erasmussen/default.nix @@ -4,12 +4,12 @@ let in { imports = [ - ../../shells/zsh + ../../ai ../../editors + ../../gnupg + ../../shells/zsh ../../terminals ../../toolchain - - ./gnupg.nix ]; home = { @@ -24,9 +24,7 @@ in bat buf crane - cursor-cli fnm - github-copilot-cli gitkraken glow pay-respects @@ -37,6 +35,7 @@ in }; dotfiles = { + ai.enable = true; neovim.enable = true; vscode.enable = true; zsh.enable = true; @@ -47,9 +46,11 @@ in containers.enable = true; containers.podmanAutostart = true; dotnet.enable = true; + git.enable = true; go.enable = true; javascript.enable = true; kubernetes.enable = true; + nix.enable = true; openshift.enable = false; ocaml.enable = true; python.enable = true; @@ -84,8 +85,6 @@ in # enableZshIntegration = true; # enableKittyIntegration = config.dotfiles.kitty.enable; # }; - - claude-code.enable = true; }; programs.git = { diff --git a/users/erasmussen/gnupg.nix b/users/erasmussen/gnupg.nix deleted file mode 100644 index b27ebb3..0000000 --- a/users/erasmussen/gnupg.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ - programs.gpg.enable = true; - services.gpg-agent = { - enable = true; - enableSshSupport = true; - enableZshIntegration = true; - }; -} diff --git a/users/erik/default.nix b/users/erik/default.nix index 66ade7f..42cb0f8 100644 --- a/users/erik/default.nix +++ b/users/erik/default.nix @@ -4,15 +4,14 @@ let in { imports = [ + ../../ai ../../browsers ../../desktops ../../editors + ../../gnupg ../../shells ../../terminals ../../toolchain - - ./ai.nix - ./gnupg.nix ]; home = { @@ -32,13 +31,16 @@ in }; dotfiles = { + ai.enable = true; emacs.enable = true; neovim.enable = true; zsh.enable = true; c.enable = true; + git.enable = true; go.enable = true; javascript.enable = true; kubernetes.enable = true; + nix.enable = true; python.enable = true; };