Declarative, reproducible system configuration powered by Nix
Personal dotfiles management system combining Nix Flakes, nix-darwin, and home-manager for fully declarative and reproducible environments across macOS and Linux.
| Profile |
Platform |
Type |
Description |
siraken-mbp |
macOS (aarch64) |
nix-darwin |
MacBook Pro — full configuration (primary) |
siraken-macmini |
macOS (aarch64) |
nix-darwin |
Mac mini — minimal configuration |
wsl-ubuntu |
Linux (x86_64) |
home-manager |
WSL/Ubuntu — user environment only |
wsl-nixos |
Linux (x86_64) |
NixOS |
WSL/NixOS — full system configuration |
nixos-vm |
Linux (x86_64) |
NixOS |
NixOS VM — virtual machine |
- Multi-platform — Single flake manages macOS (nix-darwin) and Linux (NixOS / home-manager)
- Modular — Each program is an independent Nix module under
nix/programs/
- Reproducible — Pinned inputs via
flake.lock ensure consistent builds
- Formatted — treefmt-nix with pre-commit hooks (nixfmt, stylua, shfmt, biome, yamlfmt, mdformat, fish_indent)
Install Nix:
curl -sSfL https://artifacts.nixos.org/nix-installer | sh -s -- install --enable-flakes
macOS (nix-darwin)
# Clone
git clone --depth 1 \
https://github.com/siraken/dotfiles.git \
~/repos/github.com/siraken/dotfiles
cd ~/repos/github.com/siraken/dotfiles
# First-time install
sudo nix run nix-darwin#darwin-rebuild -- switch --flake .#THE_NAME
# After initial setup
sudo darwin-rebuild switch --flake .#THE_NAME
WSL/Ubuntu (home-manager)
home-manager switch --flake .#wsl-ubuntu
WSL/NixOS
sudo nixos-rebuild switch --flake .#wsl-nixos
# Enter development shell (also installs pre-commit hooks)
nix develop
# Format all files
nix fmt
# Garbage collection
nix store gc
# Uninstall Nix
/nix/nix-installer uninstall
All program configurations are managed as Nix modules under nix/programs/. Each tool's native config files live under config/ (mirroring ~/.config) and home/ (mirroring ~ for non-XDG paths), and are linked into place as out-of-store symlinks so they are editable without a rebuild.
dotfiles/
├── flake.nix # Flake entry point
├── flake.lock # Pinned dependencies
├── nix/
│ ├── hosts/ # Per-host system configurations
│ │ ├── siraken-mbp/ # MacBook Pro
│ │ ├── siraken-macmini/ # Mac mini
│ │ ├── wsl-nixos/ # WSL/NixOS
│ │ └── nixos-vm/ # NixOS VM
│ ├── home/ # Per-host home-manager configurations
│ │ └── wsl-ubuntu/ # WSL/Ubuntu
│ ├── modules/ # Shared Nix modules
│ └── programs/ # Program-specific configurations
│ ├── vim/ # Neovim (Nixvim) + Vim
│ ├── git/ # Git
│ ├── zsh/ # Zsh
│ ├── coding-agents/ # AI coding agents
│ └── ... # 30+ more programs
├── config/ # Native config files (mirrors ~/.config)
└── home/ # Native config files (mirrors ~, e.g. .claude/)
This repository is for personal use. Feel free to reference or adapt any configuration for your own setup.