Personal development environment configuration using NixOS, home-manager, and flakes.
flake.nix # Pinned nixpkgs + home-manager inputs
flake.lock # Auto-generated dependency lock
nix/
home.nix # Home-manager entry point (services, file symlinks)
sessionVariables.nix # Environment variables (EDITOR, FZF, LSP paths)
pkgs/
default.nix # Core packages (coreutils, search, git)
lang/default.nix # Language runtimes + LSPs (Go, Python, Rust, Node, etc.)
tools/default.nix # Dev tools (docker-compose, lazygit, k9s, nemo)
tools/tmux-fuzzyclaw.nix # Custom Go binary (local build)
programs/ # Per-program home-manager modules
neovim/ zsh/ bash/ tmux/ git/ fzf/ direnv/ alacritty/ ranger/
scripts/ # Tmux activity tracking, task dashboard, bar/status tooling
cmd/install.sh # Activation script
mkdir -p ~/workspace && cd ~/workspace- Clone this repo
- First-time setup (no home-manager in PATH yet):
nix run github:nix-community/home-manager -- switch --flake ./devrc --impure
- Subsequent rebuilds:
cd devrc && ./cmd/install.sh # or directly: home-manager switch --flake . --impure
The --impure flag is required because the config references local paths outside the flake (tmux-fuzzyclaw source, optional ~/.devrc).
If you cloned devrc somewhere other than ~/workspace, set DEVRC_DIR:
export DEVRC_DIR="$HOME/other-path/devrc"# Update nixpkgs and home-manager to latest
nix flake update
# Rebuild
home-manager switch --flake . --impureCreate ~/.devrc to add shell customizations without editing the repo. Home-manager sources this file automatically if it exists.