summaryrefslogtreecommitdiff
path: root/machines/kj-laptop01/home.nix
diff options
context:
space:
mode:
authorKj Tsanaktsidis <kjtsanaktsidis@groq.com>2026-01-09 11:58:31 +1100
committerKj Tsanaktsidis <kjtsanaktsidis@groq.com>2026-01-09 11:58:31 +1100
commit98e94297af73c583c9636c99772b2c1c34f98743 (patch)
tree1ac244e55b6d544d556b2327308d07708350e824 /machines/kj-laptop01/home.nix
parentf5686b8e377ce3ecbf617783b4f2398423cb19fd (diff)
some refactor
Diffstat (limited to 'machines/kj-laptop01/home.nix')
-rw-r--r--machines/kj-laptop01/home.nix109
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"
+ '';
+}