{ config, pkgs, ... }: let dotfiles = "${config.home.homeDirectory}/.dotfiles"; in { home.username = "laptran"; home.homeDirectory = "/Users/laptran"; home.stateVersion = "24.11"; home.packages = with pkgs; [ ripgrep fd fzf jq lazygit neovim nerd-fonts.hack ]; fonts.fontconfig.enable = true; home.sessionVariables.EDITOR = "nvim"; programs.zsh = { enable = true; autosuggestion.enable = true; # ghost text from history syntaxHighlighting.enable = true; # commands turn green when valid initContent = '' bindkey '^f' autosuggest-accept ''; shellAliases = { ".." = "cd .."; ll = "ls -plart"; add = "git add ."; push = "git push"; pull = "git pull"; m = "git switch main"; cc = "claude --dangerously-skip-permissions"; co = "codex --full-auto"; }; }; programs.starship = { enable = true; settings = { add_newline = false; format = "$directory$git_branch$git_status$cmd_duration$line_break$character"; character = { success_symbol = "[❯](purple)"; error_symbol = "[❯](red)"; }; cmd_duration.format = "[$duration]($style) "; }; }; # Edit-in-place: the real file stays in my repo, ~/.config just points at it. home.file.".config/wezterm".source = config.lib.file.mkOutOfStoreSymlink "${dotfiles}/home/.config/wezterm"; home.file.".config/nvim".source = config.lib.file.mkOutOfStoreSymlink "${dotfiles}/home/.config/nvim"; home.file.".config/herdr".source = config.lib.file.mkOutOfStoreSymlink "${dotfiles}/home/.config/herdr"; }