diff options
| author | Kj Tsanaktsidis <kjtsanaktsidis@groq.com> | 2026-01-09 11:58:31 +1100 |
|---|---|---|
| committer | Kj Tsanaktsidis <kjtsanaktsidis@groq.com> | 2026-01-09 11:58:31 +1100 |
| commit | 98e94297af73c583c9636c99772b2c1c34f98743 (patch) | |
| tree | 1ac244e55b6d544d556b2327308d07708350e824 /machines/kj-laptop01/home.nix | |
| parent | f5686b8e377ce3ecbf617783b4f2398423cb19fd (diff) | |
some refactor
Diffstat (limited to 'machines/kj-laptop01/home.nix')
| -rw-r--r-- | machines/kj-laptop01/home.nix | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/machines/kj-laptop01/home.nix b/machines/kj-laptop01/home.nix new file mode 100644 index 0000000..7d18022 --- /dev/null +++ b/machines/kj-laptop01/home.nix @@ -0,0 +1,109 @@ +{ + config, + pkgs, + ... +}: +{ + home.username = "kjtsanaktsidis"; + home.homeDirectory = "/home/kjtsanaktsidis"; + home.stateVersion = "25.05"; + + programs.home-manager.enable = true; + + # Install packages + home.packages = with pkgs; [ + htop + zellij + tmux + neovim + git-absorb + # LazyVim dependencies + lazygit + ripgrep + fd + nodejs + python3 + ]; + + # Configure sops for home-manager + sops = { + age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ]; + defaultSopsFile = ./secrets.yaml; + secrets = { + kj_id_ed25519 = { + path = "${config.home.homeDirectory}/.ssh/id_ed25519"; + }; + kj_gpg_private_key = { + path = "${config.home.homeDirectory}/.gnupg/private-key.asc"; + }; + }; + }; + + # LazyVim configuration for Neovim + programs.neovim = { + enable = true; + defaultEditor = true; + viAlias = true; + vimAlias = true; + plugins = with pkgs.vimPlugins; [ + LazyVim + ]; + extraLuaConfig = '' + require("lazyvim").setup() + ${builtins.readFile ./lazyvim-config.lua} + ''; + }; + + # Git configuration + programs.git = { + enable = true; + userName = "KJ Tsanaktsidis"; + userEmail = "kj@kjtsanaktsidis.id.au"; + signing = { + key = "7F21FB211E24B02A5DEF86E227CD40EB9B81C726"; + signByDefault = true; + }; + extraConfig = { + pull.rebase = true; + }; + }; + + # SSH public key (private key is managed by sops) + home.file.".ssh/id_ed25519.pub" = { + text = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMtGcEXu5S/0zsF6Suxc65DmGFGt1JWRnqadoVhErOed kjtsanaktsidis@KJMacbookGroq.local"; + }; + + # Zsh configuration + programs.zsh = { + enable = true; + history = { + size = 1000000; + save = 1000000; + append = true; + extended = true; + ignoreSpace = false; + ignoreDups = false; + }; + + initContent = builtins.readFile ./zsh-config.zsh; + }; + + # FZF with standard keybindings + programs.fzf = { + enable = true; + enableZshIntegration = true; + }; + + programs.gpg = { + enable = true; + homedir = "${config.home.homeDirectory}/.gnupg"; + }; + services.gpg-agent = { + enable = true; + }; + home.activation.importGpgPrivateKey = config.lib.dag.entryAfter ["sops-nix" "onFilesChange"] '' + export GNUPGHOME="${config.programs.gpg.homedir}" + $DRY_RUN_CMD ${pkgs.gnupg}/bin/gpg --batch --verbose --trust-model always --import "${config.sops.secrets.kj_gpg_private_key.path}" + echo "GPG private key imported from sops secret" + ''; +} |
