A declarative home environment configuration using Home Manager and Nix Flakes.
This configuration manages development tools, shell environment, and applications for my work as an engineer on ROSA as well as my personal packages and configuration as a terminal-focused developer (helix editor, tmux, etc)
.
├── flake.nix # Flake configuration and inputs
├── home.nix # Main home manager configuration
├── programs/ # Program-specific configurations
│ ├── default.nix # Program imports and basic configs
│ └── *.nix # Individual program configurations
├── overlay/ # Custom package overlays
│ ├── overlay.nix # Overlay entry point
│ └── backplane.nix # Custom ocm-backplane package
└── README.md # This file
- Go Development: Go compiler, language server (gopls), debugger (delve), testing framework (ginkgo)
- Node.js Development: Node.js 24, TypeScript language server
- Python Development: Python 3.13 with pip, ty type checker
- Ruby Development: Ruby with Solargraph language server
- Nix Development: Nix language server (nil)
- Web Development: HTML (superhtml), CSS language servers, Prettier formatter
- Fish Shell: Fish language server
- Build Tools: GNU Make, GCC compiler
- Container Tools: Podman for container management
- ROSA CLI: Red Hat OpenShift Service on AWS command-line tool
- OCM: OpenShift Cluster Manager CLI
- OpenShift CLI: OpenShift command-line interface
- OCM Backplane: Custom-built backplane CLI for cluster access
- Jira CLI: Command-line interface for Jira
- SAML2AWS: AWS CLI authentication via SAML
- Terraform: Infrastructure as code tool
- AWS CLI v2: Amazon Web Services command-line interface
- Google Cloud SDK: Google Cloud Platform tools
- Helix: Modern modal text editor with LSP support (configured in
programs/helix.nix)aotheme- Vi-style keybindings (jk to escape insert mode)
- Auto-completion and formatting enabled
- Custom statusline configuration
- Zsh: Shell with Oh My Zsh framework (configured in
programs/zsh.nix)eastwoodtheme- Git plugin enabled
- Aliases:
hme(home-manager edit),hms(home-manager switch)
- Fish: Modern shell with intelligent autosuggestions (configured in
programs/fish.nix) - Tmux: Terminal multiplexer with Zsh as default shell (configured in
programs/tmux.nix) - Neomutt: Terminal-based email client
- zk: Note-taking tool
- SSH: Secure shell client
- ripgrep: Fast text search tool
- jq: JSON processor
- yq: YAML processor
- xclip: X11 clipboard utility
- asciinema: Terminal session recorder
- codespell: Spell checker for code
- sops: Secrets management tool
- Claude Code: AI-powered code assistant
- Crush: Interactive CLI tool from Charm Bracelet
- Git: Configured with user details and main as default branch (configured in
programs/git.nix)
NIXPKGS_ALLOW_UNFREE=1: Allow unfree packagesCLAUDE_CODE_USE_VERTEX=1: Configure Claude Code for Vertex AICLOUD_ML_REGION=us-east5: Set ML region for cloud servicesANTHROPIC_VERTEX_PROJECT_ID: Project ID for Anthropic Vertex integrationVERTEXAI_PROJECT: Vertex AI project configurationVERTEXAI_LOCATION: Vertex AI location setting
-
Install Nix with flakes support:
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install
-
Install Home Manager:
nix run home-manager/master -- init --switch
-
Clone or copy this configuration to
~/.config/home-manager/ -
Apply the configuration:
home-manager switch --flake ~/.config/home-manager#btroutma
Update the flake inputs and rebuild:
nix flake update ~/.config/home-manager
home-manager switch --flake ~/.config/home-manager#btroutmaAdd packages to the home.packages list in home.nix:
home.packages = [
pkgs.your-package
# ... existing packages
];Program configurations are modularized in the programs/ directory:
- Each program has its own
.nixfile for specific configuration programs/default.niximports all program modules and enables basic programs like neomutt, zk, and ssh- Modify individual program files to customize specific tools (helix, zsh, fish, git, tmux)
- The main
home.niximports the entire programs directory via./programs
Add custom package definitions to the overlay/ directory and import them in overlay.nix.
hme: Edit home manager configurationhms: Switch to new home manager configuration
This configuration is provided as-is for personal use and reference.