My dotfiles, managed with Nix and Home Manager.
See nix/README.md for the Nix/Home Manager setup, concepts,
and activation steps.
flake.nixdefines the Home Manager configurations.nix/home-manager/common.nixlinks shared home config.nix/home-manager/linux.nixlinks Linux/Omarchy-only home config.nix/home-manager/darwin.nixlinks macOS-only home config.nix/files/holds repo-managed config files that Home Manager links into$HOME(e.g.nix/files/fish,nix/files/hypr,nix/files/mpv,nix/files/agents/skills).emacs.d/is the Emacs config submodule, linked to~/.emacs.das a live out-of-store tree.linux/holds Linux/Omarchy host provisioning kept outside Nix: native package inventories (packages.txt,aur.txt) and privileged/etcfiles (etc/, deployed byinstall.sh). Seelinux/README.md.
A Makefile wraps the platform-specific workflow and auto-detects the host.
Run targets from the repo root:
make # list targets
make switch # build + activate this machine's config
make dry-run # build + dry-run activation (applies nothing)
make check # sanity-check both hosts
make update # update flake inputs (flake.lock)
make rollback # roll back to the previous generationUnderneath, make switch runs the right command per platform:
# Linux / Omarchy (standalone Home Manager)
home-manager switch --flake ~/src/mark/tilde#linux
# macOS (nix-darwin; activates system + Home Manager, needs root)
sudo darwin-rebuild switch --flake ~/src/mark/tilde#macDo not run home-manager switch ...#mac while nix-darwin owns the Home Manager
profile. Edit files here, then switch. Do not edit generated symlinks in
$HOME directly.
Home Manager owns the home-directory links. Do not use stow for $HOME.
linux/packages.txt— official-repo package inventory (install withmake pkgs, orsudo pacman -S --needed - < linux/packages.txt).linux/aur.txt— AUR package inventory (install withmake pkgs, orparu -S --needed - < linux/aur.txt).make pkgs-difflists explicitly-installed packages not yet curated into those files.- Privileged Linux
/etcfiles live inlinux/etc/and are deployed withmake system(wrapssudo linux/install.sh);make system-diffshows drift. Seelinux/README.md. These remain outside Home Manager. - Submodule:
emacs.d(the Emacs config repo, linked to~/.emacs.d). Rungit submodule update --init --recursiveon a fresh clone.