Files
dotfiles/home.nix
T

83 lines
2.5 KiB
Nix
Raw Normal View History

{ 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";
2026-07-18 22:54:23 -04:00
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";
# High-agency agent launchers (same idea across tools)
2026-07-18 22:54:23 -04:00
cc = "claude --dangerously-skip-permissions";
co = "codex --full-auto";
gb = "grok --yolo";
2026-07-18 22:54:23 -04:00
};
};
2026-07-18 22:54:23 -04:00
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, the live path just points at it.
2026-07-18 22:54:23 -04:00
home.file.".config/wezterm".source =
config.lib.file.mkOutOfStoreSymlink "${dotfiles}/home/.config/wezterm";
2026-07-18 22:54:23 -04:00
home.file.".config/nvim".source =
config.lib.file.mkOutOfStoreSymlink "${dotfiles}/home/.config/nvim";
home.file.".config/herdr".source =
2026-07-18 22:54:23 -04:00
config.lib.file.mkOutOfStoreSymlink "${dotfiles}/home/.config/herdr";
# Claude Code settings (also read by Grok for permissions/compat)
home.file.".claude/settings.json".source =
config.lib.file.mkOutOfStoreSymlink "${dotfiles}/home/.claude/settings.json";
# Shared agent policy - one file, many harnesses
home.file.".claude/CLAUDE.md".source =
config.lib.file.mkOutOfStoreSymlink "${dotfiles}/home/AGENTS.md";
home.file.".codex/AGENTS.md".source =
config.lib.file.mkOutOfStoreSymlink "${dotfiles}/home/AGENTS.md";
home.file.".config/opencode/AGENTS.md".source =
config.lib.file.mkOutOfStoreSymlink "${dotfiles}/home/AGENTS.md";
home.file.".grok/AGENTS.md".source =
config.lib.file.mkOutOfStoreSymlink "${dotfiles}/home/AGENTS.md";
# Grok Build native config
home.file.".grok/config.toml".source =
config.lib.file.mkOutOfStoreSymlink "${dotfiles}/home/.grok/config.toml";
}