refactor(home-manager): refine CLI feature configurations

- Add direnv module with nix-direnv integration, replacing manual hook
- Disable starship's add_newline for more compact prompt
- Clean up comments across CLI features for better readability
This commit is contained in:
♥ Minnie ♥ 2025-10-27 13:56:01 +08:00
parent bdf7c14c6c
commit e18635be43
Signed by: jasmine
GPG key ID: 8563E358D4E8040E
5 changed files with 26 additions and 22 deletions

View file

@ -0,0 +1,15 @@
{
# Automatic environment variable management per-directory
programs.direnv = {
enable = true;
# Faster nix-shell integration with dependency caching
nix-direnv.enable = true;
# Hook into zsh
enableZshIntegration = true;
# Suppress logging output
silent = true;
};
}

View file

@ -3,13 +3,13 @@
enable = true; enable = true;
enableZshIntegration = true; enableZshIntegration = true;
settings = { settings = {
# Left prompt: username@hostname directory git ♥ add_newline = false;
format = "$username$hostname$directory$git_branch$git_status$character";
# Right prompt: language indicators # Prompt layout
format = "$username$hostname$directory$git_branch$git_status$character";
right_format = "$c$direnv$haskell$bun$python$rust"; right_format = "$c$direnv$haskell$bun$python$rust";
# Blue username # Always show username
username = { username = {
style_user = "blue"; style_user = "blue";
style_root = "red"; style_root = "red";
@ -17,14 +17,14 @@
show_always = true; show_always = true;
}; };
# Blue @hostname # Show hostname even when not over SSH
hostname = { hostname = {
ssh_only = false; ssh_only = false;
format = "[@$hostname]($style) "; format = "[@$hostname]($style) ";
style = "blue"; style = "blue";
}; };
# Cyan directory # Full path, no truncation
directory = { directory = {
style = "cyan"; style = "cyan";
format = "[$path]($style) "; format = "[$path]($style) ";
@ -32,12 +32,10 @@
truncate_to_repo = false; truncate_to_repo = false;
}; };
# Git branch (purple, no bold) # Git configuration
git_branch = { git_branch.style = "purple";
style = "purple";
};
# Git status with semantic colors (no bold, no brackets) # Semantic colors for git status indicators
git_status = { git_status = {
format = "$conflicted$stashed$deleted$renamed$modified$staged$untracked$ahead_behind"; format = "$conflicted$stashed$deleted$renamed$modified$staged$untracked$ahead_behind";
conflicted = "[=$count](red) "; conflicted = "[=$count](red) ";
@ -52,19 +50,14 @@
deleted = "[$count](red) "; deleted = "[$count](red) ";
}; };
# Heart prompt character (red in insert mode, blue in normal mode) # Vi-mode aware prompt character
character = { character = {
success_symbol = "[](red)"; success_symbol = "[](red)";
error_symbol = "[](red)"; error_symbol = "[](red)";
vicmd_symbol = "[](blue)"; vicmd_symbol = "[](blue)";
}; };
# Language modules for right prompt (only configure non-defaults)
# Enable direnv (disabled by default)
direnv.disabled = false; direnv.disabled = false;
# C, Python, Haskell, Bun, Rust: use defaults
}; };
}; };
} }

View file

@ -1,5 +1,6 @@
{pkgs, ...}: { {pkgs, ...}: {
imports = [ imports = [
./direnv.nix
./starship.nix ./starship.nix
]; ];
@ -47,7 +48,6 @@
# Extra commands that should be added to '.zshrc' # Extra commands that should be added to '.zshrc'
initContent = '' initContent = ''
eval "$(direnv hook zsh)"
bindkey "^[[1;5C" forward-word bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word bindkey "^[[1;5D" backward-word
export PATH export PATH

View file

@ -27,8 +27,6 @@
# Configure programs # Configure programs
programs = { programs = {
zsh.enable = true; zsh.enable = true;
# Load and unload environment variables
direnv.enable = true;
# Android debug bridge: communicate with devices # Android debug bridge: communicate with devices
adb.enable = true; adb.enable = true;
}; };

View file

@ -37,8 +37,6 @@
# Configure programs # Configure programs
programs = { programs = {
zsh.enable = true; zsh.enable = true;
# Load and unload environment variables
direnv.enable = true;
}; };
# Manage linux containers # Manage linux containers