A portable development environment — one flake, any machine, at home in minutes.
- Shell: zsh + starship, fzf, zoxide, atuin, eza, bat, fd
- Editor: Neovim via nixvim — LSP, treesitter, telescope, dashboard (manual)
- Git: delta, lazygit, sensible defaults
- Terminal: ghostty, zellij, yazi, btop
- Toolbox: gh, jq, yq, ripgrep, bun, node, uv, just, watchexec, sd, xh
Catppuccin everywhere — Mocha in the dark, Latte in the light.
# 1. Install Nix (skip if present)
curl -fsSL https://install.determinate.systems/nix | sh -s -- install
# 2. Apply the environment (use trevato@aarch64-linux on ARM/Pi)
nix run home-manager -- switch -b backup --flake github:trevato/dotfiles#trevato@x86_64-linuxThat's it — open a new shell and you're home.
git clone https://github.com/trevato/dotfiles ~/dotfiles
sudo darwin-rebuild switch --flake ~/dotfilesAfter the first switch: nrs rebuilds, nfu updates flake inputs.
Anything private or machine-specific stays out of this repo. Three local files are sourced/included if they exist — create them per machine:
| File | Purpose |
|---|---|
~/.zshrc.local |
machine-specific shell config, sourced last |
~/.gitconfig.local |
credentials, work identities (includeIf), remotes |
~/.ssh/config.local |
hosts, users, and keys |
This is the portability contract: the repo carries the environment, the machine carries its secrets.
Fork, then update:
modules/home.nix—home.username,home.homeDirectory, anduser.name/user.emailunderprograms.gitflake.nix— thetrevato@…keys inhomeConfigurations, and the darwin hostname (otavert-mac)modules/nixvim.nix—dashboardNameanddashboardSubtitlein the top-levelletblockhosts/mac.nix— Mac-only packages and macOS defaults (or delete if Linux-only)
flake.nix # Entry point: darwin system + per-arch home-manager configs
modules/
home.nix # Portable user environment — shell, git, tools (all platforms)
nixvim.nix # Neovim configuration
darwin.nix # macOS system packages, services, defaults
minecraft.nix # Optional: Prism Launcher + JDK
hosts/mac.nix # Mac host specifics
lib/ascii-banner.nix # Dashboard banner renderer
docs/ # Neovim manual, local k8s guide
- Formatting:
nixfmt-rfc-stylevianix fmt - Commit style: lowercase, concise, imperative