My NixOS Configs ❄️
Find a file
2026-03-18 19:25:25 -04:00
.git-crypt pruned 2026-03-15 11:15:52 -04:00
secrets removed yubikey 2026-03-15 11:22:09 -04:00
system added docker, removed cam net isolation 2026-03-18 19:25:25 -04:00
user added docker, removed cam net isolation 2026-03-18 19:25:25 -04:00
.envrc pruned 2026-03-15 11:15:52 -04:00
.gitattributes pruned 2026-03-15 11:15:52 -04:00
.gitignore pruned 2026-03-15 11:15:52 -04:00
.gitmodules pruned 2026-03-15 11:15:52 -04:00
.sops.yaml pruned 2026-03-15 11:15:52 -04:00
flake.lock pruned 2026-03-15 11:15:52 -04:00
flake.nix tooling improved 2026-03-15 11:51:06 -04:00
justfile pruned 2026-03-15 11:15:52 -04:00
LICENSE pruned 2026-03-15 11:15:52 -04:00
README.md pruned 2026-03-15 11:15:52 -04:00

NixOS Configuration

Modular NixOS flake configuration with home-manager integration.

Requirements

Flake Outputs

Configuration Description
desktop Primary workstation
server Home server
wsl Windows Subsystem for Linux

Fresh Install

From the NixOS live installer:

# Enable flakes
echo "experimental-features = nix-command flakes" | sudo tee -a /etc/nix/nix.conf

# Clone repo
nix run nixpkgs#git -- clone --recurse-submodules https://github.com/itme-brain/nixos.git
cd nixos

# Enter dev shell and install
nix develop
just install desktop

Getting Started

git clone --recurse-submodules git@github.com:itme-brain/nixos.git
cd nixos
nix develop
just

Note: Replace hardware.nix in system/machines/<machine> with output from nixos-generate-config for your hardware.

Directory Structure

.
├── flake.nix
├── flake.lock
├── justfile
│
├── system/
│   ├── keys/                      # Machine SSH keys
│   │   └── desktop/
│   └── machines/
│       ├── desktop/
│       │   ├── default.nix        # Machine entry point
│       │   ├── hardware.nix       # Hardware config
│       │   ├── system.nix         # System settings
│       │   └── modules/
│       │       ├── disko/         # Disk partitioning
│       │       └── home-manager/  # Home-manager integration
│       ├── server/                # Server (same structure)
│       └── wsl/                   # WSL (same structure)
│
└── user/
    ├── default.nix                # User options (name, email, keys)
    ├── home.nix                   # Shared home-manager defaults
    ├── bookmarks/
    ├── keys/
    │   ├── age/
    │   ├── pgp/
    │   └── ssh/
    └── modules/
        ├── bash/bash/             # Shell (submodule)
        ├── git/git/               # Git (submodule)
        ├── neovim/nvim/           # Neovim (submodule)
        ├── vim/vim/               # Vim (submodule)
        ├── tmux/
        ├── dev/                   # CLI dev tools
        ├── security/
        │   ├── gpg/
        │   └── yubikey/
        ├── utils/
        │   ├── dev/               # Dev tools (claude-code, direnv, etc.)
        │   ├── email/
        │   ├── irc/
        │   └── writing/
        └── gui/
            ├── default.nix        # Browser-focused mimeApps
            ├── wm/
            │   ├── hyprland/
            │   └── sway/
            ├── browsers/
            ├── alacritty/
            ├── dev/
            │   ├── pcb/           # Arduino, KiCad
            │   └── design/        # Penpot
            ├── corn/
            ├── fun/
            └── utils/

Architecture

flake.nix defines NixOS configurations that reference machines under system/machines/.
Each machine imports its hardware, system settings, and home-manager config.

user/home.nix provides shared defaults for all users:

  • Essential packages
  • Default modules

Machine home.nix imports user defaults and enables machine-specific modules.

Resources