221 lines
7.1 KiB
Nix
221 lines
7.1 KiB
Nix
# Packages module
|
|
#
|
|
# This module manages CLI tools and packages installed via Nix.
|
|
# GUI applications (casks) are managed via Homebrew in the darwin modules.
|
|
#
|
|
# Based on the Brewfile analysis from docs/migration-analysis.md
|
|
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}:
|
|
{
|
|
home.packages = with pkgs; [
|
|
# ========================================================================
|
|
# Shell Tools
|
|
# ========================================================================
|
|
# Note: zsh, atuin, starship, fzf, zoxide, direnv are configured via
|
|
# programs.* in shell.nix for better integration
|
|
|
|
# ========================================================================
|
|
# Modern CLI Replacements
|
|
# These replace traditional Unix tools with modern alternatives
|
|
# ========================================================================
|
|
bat # Modern cat with syntax highlighting (aliased as cat)
|
|
eza # Modern ls with icons and git integration (aliased as ls)
|
|
fd # Modern find
|
|
ripgrep # Modern grep (aliased as grep)
|
|
delta # Modern diff with syntax highlighting (aliased as diff)
|
|
dust # A more intuitive version of du written in rust
|
|
duf # A better df alternative
|
|
hyperfine # A command-line benchmarking tool.
|
|
choose # A human-friendly and fast alternative to cut and (sometimes) awk
|
|
coreutils
|
|
yazi # File manager
|
|
|
|
# ========================================================================
|
|
# File and Text Utilities
|
|
# ========================================================================
|
|
jq # JSON processor
|
|
yq # YAML processor
|
|
tree # Directory tree viewer
|
|
rsync # File synchronization
|
|
unzip # Archive extraction
|
|
curl # HTTP client
|
|
wget # HTTP client
|
|
watch # Execute commands periodically
|
|
|
|
# ========================================================================
|
|
# Git and Version Control
|
|
# ========================================================================
|
|
git # Version control
|
|
gh # GitHub CLI
|
|
# git-delta is included above as 'delta'
|
|
jujutsu # Git-compatible VCS (jj)
|
|
lazygit # Terminal UI for git
|
|
|
|
# ========================================================================
|
|
# Development Tools
|
|
# ========================================================================
|
|
neovim # Text editor
|
|
tmux # Terminal multiplexer
|
|
|
|
# Languages and Runtimes
|
|
nodejs_22 # Node.js LTS (replaces NVM)
|
|
deno # JavaScript/TypeScript runtime
|
|
python313 # Python 3.13
|
|
# pyenv is configured in shell.nix
|
|
uv # Fast Python package installer
|
|
mise # tool manager
|
|
|
|
# Build Tools
|
|
gnumake # Make build tool
|
|
cmake # Cross-platform build system
|
|
|
|
# ========================================================================
|
|
# Container and Kubernetes Tools
|
|
# ========================================================================
|
|
docker # Container runtime (CLI only, daemon via colima)
|
|
docker-buildx # Docker build extensions
|
|
docker-compose # Multi-container Docker applications
|
|
colima # Container runtime for macOS (replaces Docker Desktop)
|
|
|
|
# Kubernetes
|
|
kubectl # Kubernetes CLI
|
|
kubectx # Easy context switcher
|
|
kubernetes-helm # Kubernetes package manager
|
|
helmfile # Declarative Helm chart management
|
|
k9s # Kubernetes TUI
|
|
istioctl # Istio service mesh CLI
|
|
fluxcd # GitOps toolkit
|
|
popeye
|
|
argocd
|
|
kubeseal
|
|
kubebuilder
|
|
kind
|
|
|
|
# ========================================================================
|
|
# Infrastructure and Cloud Tools
|
|
# ========================================================================
|
|
terraform # Infrastructure as code
|
|
ansible # Configuration management
|
|
sshpass # Non-interactive SSH password auth (for ansible)
|
|
awscli2 # AWS CLI v2
|
|
|
|
# ========================================================================
|
|
# Media Tools
|
|
# ========================================================================
|
|
ffmpeg # Media processing
|
|
|
|
# ========================================================================
|
|
# Security Tools
|
|
# ========================================================================
|
|
gnupg # GPG encryption
|
|
age # Modern encryption tool
|
|
sops # Secrets management
|
|
rustscan # The Modern Port Scanner. Find ports quickly (3 seconds at its fastest). nmap alternative.
|
|
|
|
# ========================================================================
|
|
# Miscellaneous Tools
|
|
# ========================================================================
|
|
graphviz # Graph visualization
|
|
tree-sitter # Parser generator (for neovim)
|
|
htop # Process viewer
|
|
ncdu # Disk usage analyzer
|
|
tldr # Simplified man pages
|
|
doggo # Command-line DNS client for humans. dig on steroids
|
|
btop # A monitor of resources
|
|
gh
|
|
mob
|
|
zsh-fast-syntax-highlighting
|
|
jellyfin-tui
|
|
|
|
# ========================================================================
|
|
# Nix Tools
|
|
# ========================================================================
|
|
nixfmt-rfc-style # Nix code formatter
|
|
nil # Nix language server
|
|
|
|
# ========================================================================
|
|
# AAI tools
|
|
# ========================================================================
|
|
gemini-cli
|
|
opencode
|
|
];
|
|
|
|
# ========================================================================
|
|
# Additional Program Configurations
|
|
# ========================================================================
|
|
|
|
# Note: Git is configured in modules/home/git.nix
|
|
# The git module handles all git configuration including delta integration
|
|
|
|
# Bat configuration (modern cat replacement)
|
|
programs.bat = {
|
|
enable = true;
|
|
config = {
|
|
theme = "Catppuccin Mocha";
|
|
style = "numbers,changes,header";
|
|
};
|
|
};
|
|
|
|
# Eza configuration (modern ls replacement)
|
|
programs.eza = {
|
|
enable = true;
|
|
enableZshIntegration = true;
|
|
icons = "auto";
|
|
git = true;
|
|
};
|
|
|
|
# Ripgrep configuration
|
|
programs.ripgrep = {
|
|
enable = true;
|
|
arguments = [
|
|
"--smart-case"
|
|
"--hidden"
|
|
"--glob=!.git/*"
|
|
];
|
|
};
|
|
|
|
# Htop configuration
|
|
programs.htop = {
|
|
enable = true;
|
|
settings = {
|
|
show_program_path = false;
|
|
tree_view = true;
|
|
};
|
|
};
|
|
|
|
# Lazygit configuration
|
|
programs.lazygit = {
|
|
enable = true;
|
|
};
|
|
|
|
programs.k9s = {
|
|
enable = true;
|
|
plugins = {
|
|
"edit-secret" = {
|
|
shortCut = "Ctrl-X";
|
|
confirm = false;
|
|
description = "Edit Decoded Secret";
|
|
scopes = [ "secrets" ];
|
|
command = "sh";
|
|
background = false;
|
|
args = [
|
|
"-c"
|
|
''
|
|
tempfile=$(mktemp);
|
|
secret=$(kubectl get secrets --context $CONTEXT --namespace $NAMESPACE $NAME -o json);
|
|
printf '%s\n' $secret | jq '.data | map_values(@base64d)' > $tempfile;
|
|
vim $tempfile;
|
|
secret_data=$(cat $tempfile | jq -c '. | map_values(@base64)');
|
|
rm $tempfile;
|
|
printf '%s\n' $secret | jq -r --argjson secret_data "$secret_data" '.data = $secret_data' | kubectl apply -f -;
|
|
''
|
|
];
|
|
};
|
|
};
|
|
};
|
|
}
|