Skip to content

Repository files navigation

dotfiles

Declarative, reproducible system configuration powered by Nix

Nix Flakes nix-darwin home-manager Platform


Overview

Personal dotfiles management system combining Nix Flakes, nix-darwin, and home-manager for fully declarative and reproducible environments across macOS and Linux.

System Profiles

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

Key Features

  • 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
  • Formattedtreefmt-nix with pre-commit hooks (nixfmt, stylua, shfmt, biome, yamlfmt, mdformat, fish_indent)

Getting Started

Prerequisites

Install Nix:

curl -sSfL https://artifacts.nixos.org/nix-installer | sh -s -- install --enable-flakes

Installation

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

Development

# Enter development shell (also installs pre-commit hooks)
nix develop

# Format all files
nix fmt

Maintenance

# Garbage collection
nix store gc

# Uninstall Nix
/nix/nix-installer uninstall

Configuration

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.

Editors

Program Module Path Notes
Neovim nix/programs/vim/ Configured via Nixvim
Vim nix/programs/vim/ Shares module with Neovim
Emacs nix/programs/emacs/
Helix nix/programs/helix/
Neovide nix/programs/neovide/ Neovim GUI frontend
VS Code nix/programs/vscode/

Shells

Program Module Path
Bash nix/programs/bash/
Zsh nix/programs/zsh/
Fish nix/programs/fish/

Terminals

Program Module Path
Kitty nix/programs/kitty/
WezTerm nix/programs/wezterm/
Ghostty nix/programs/ghostty/

Dev Tools

Program Module Path Notes
Git nix/programs/git/
Tmux nix/programs/tmux/
Zellij nix/programs/zellij/
Yazi nix/programs/yazi/ File manager
Direnv nix/programs/direnv/
Starship nix/programs/starship/ Prompt
Mise nix/programs/mise/ Runtime version manager
fzf nix/programs/fzf/
Zoxide nix/programs/zoxide/
bat nix/programs/bat/
Difftastic nix/programs/difftastic/ Structural diff
bottom nix/programs/bottom/ System monitor
Atuin nix/programs/atuin/ Shell history
GitUI nix/programs/gitui/
gh-dash nix/programs/gh-dash/ GitHub dashboard
Lazydocker nix/programs/lazydocker/
fastfetch nix/programs/fastfetch/

AI Agents

Program Module Path
Claude, Gemini, Codex, OpenCode nix/programs/coding-agents/

Project Structure

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/)

Flake Inputs

Input Description
nixpkgs Nix packages (unstable)
nix-darwin macOS system configuration
home-manager User environment management
nixvim Neovim configuration in Nix
treefmt-nix Multi-language formatting
nix-index-database Pre-built nix-index database
git-personas.nix Per-persona git identity, credential confinement, and .envrc

License

This repository is for personal use. Feel free to reference or adapt any configuration for your own setup.

About

siraken's dotfiles

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Contributors

Languages