Skip to content

usrrname/dotfiles

Repository files navigation

dotfiles

Dotfiles managed with Nix flakes, Home Manager, and nix-darwin for macOS.

AI agents: AGENTS.md has actionable guidance for working in this repo.

Quick Start

macOS

git clone https://github.com/usrrname/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
sudo darwin-rebuild switch --flake .#mac-jenc

NixOS

git clone https://github.com/usrrname/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
sudo cp /etc/nixos/hardware-configuration.nix hosts/nixos-box/
sudo nixos-rebuild switch --flake .#nixos-box

Fedora/Ubuntu/Debian (standalone Home Manager)

curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install
git clone https://github.com/usrrname/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
./setup.sh

Raspberry Pi (Debian aarch64)

git clone https://github.com/usrrname/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
./setup.sh                                  # installs apt pkgs + HM config

# One-time manual steps:
sudo tailscale up && sudo tailscale set --operator=$USER   # auth + delegate
systemctl --user enable --now syncthing.service            # start syncthing
systemctl --user start tailscale-serve.service             # start tailscale serve

See setup-pi.md for full details.

Updating

cd ~/.dotfiles
./update.sh    # git pull + submodule update + setup (auto-detects platform)

Structure

├── flake.nix              # Nix flake entry point
├── hosts/
│   ├── mac-jenc/          # macOS system config (nix-darwin)
│   ├── nixos-box/         # NixOS system config
│   ├── fedora/            # Fedora (standalone HM)
│   ├── ubuntu/            # Ubuntu (standalone HM)
│   └── pi-nas/            # Raspberry Pi 4B NAS (standalone HM)
├── home/                  # Shared Home Manager config (packages, programs)
├── modules/               # Reusable Nix modules (bash, claude, direnv, gh, git, nvim, opencode, tmux, starship, wezterm)
├── common/                # Shared config sources (claude, nvim, opencode, git, ssh, wezterm)
├── .claude/               # Project-local Claude Code config
└── docs/plans/            # Migration plans + open issues

What's managed by Nix

  • System packages: git, curl, ripgrep, fzf, neovim, go, nodejs, pnpm, yarn, bun, gcc, tmux, direnv
  • Homebrew casks (macOS only): wezterm, obsidian, 1password, orbstack, slack, spotify, brave-browser, tailscale, gpg-suite, claude-code
  • Programs: git, bash, zsh, direnv, gh, tmux, starship, nvim (LazyVim)
  • AI tools: opencode (nixpkgs on Linux, anomalyco/tap brew on Mac), claude-code (brew cask)
  • Sandbox tools: sandbox-repo (bubblewrap-isolated environments)
  • Configs: git, SSH, Wezterm, nvim/LazyVim, bash/zsh aliases, environment variables, Claude Code settings + statusline, actrc, starship

Adding a Config or Homebrew Package

Edit home/default.nix or modules/ for Nix-managed programs. For macOS Homebrew casks/brews, edit hosts/mac-jenc/default.nix under homebrew. Rebuild:

sudo darwin-rebuild switch --flake .#mac-jenc   # macOS
home-manager switch --flake .#<host>             # Linux standalone HM

Validation (no real host needed):

nix build .#homeConfigurations.test-x86_64-linux
nix build .#homeConfigurations.test-aarch64-linux

Neovim (LazyVim)

~/.config/nvim is an out-of-store symlink to common/nvim/.config/nvim, so edits take effect on reload without a rebuild. Rebuild plugins:

nvim --headless -c "Lazy sync" -c "qa"
nvim --headless -c "lua require('lazy').clean()" -c "lua require('lazy').sync()" -c "qa"   # clean + reinstall

Troubleshooting

  • Nix flakes only see git-tracked filesgit add path/to/file before darwin-rebuild
  • "Existing file would be clobbered" — remove the old path (rm ~/.config/nvim), then re-run
  • 64B Homebrew cask stub — app shows installed but won't launch: brew reinstall --cask <name>
  • Rollback: sudo darwin-rebuild switch --rollback
  • Dry run: nix build .#darwinConfigurations.mac-jenc.system --dry-run
  • Common gotchas: docs/plans/migration-open-issues.md

About

There was an attempt to store my configs

Topics

Resources

Stars

Watchers

Forks

Contributors