105 lines
4.0 KiB
Markdown
105 lines
4.0 KiB
Markdown
# NixOS Config Flake
|
|
|
|
A Nix flake managing NixOS, nix-darwin, and Home Manager configurations across multiple hosts.
|
|
|
|
## Hosts
|
|
|
|
| Host | Type | Role | Disk Config |
|
|
|------------|-----------------|---------------------------------|-------------|
|
|
| `acheron` | Linux Server | Server | disko |
|
|
| `armaros` | Linux Server | Server | disko |
|
|
| `buildbox` | Linux Server | CI / Build server | disko |
|
|
| `ender-ml` | Linux Server | ML / ComfyUI server | disko |
|
|
| `eva-01` | Linux Desktop | ThinkPad X1 Nano Gen 1 | disko |
|
|
| `eva-02` | macOS | Darwin / Mac | — |
|
|
| `eva-03` | Linux Desktop | Desktop with ComfyUI | disko |
|
|
|
|
Each host gets an auto-generated `<hostname>-iso` rescue/installer ISO (except `eva-02`).
|
|
|
|
## Structure
|
|
|
|
```
|
|
├── flake.nix # Main flake with all host definitions
|
|
├── flake.lock
|
|
├── hosts/
|
|
│ ├── acheron/ # Server #1
|
|
│ │ ├── configuration.nix
|
|
│ │ ├── disko-config.nix
|
|
│ │ ├── hardware-configuration.nix
|
|
│ ├── armaros/ # Server #2
|
|
│ │ └── ...
|
|
│ ├── buildbox/ # CI / Build
|
|
│ │ └── ...
|
|
│ ├── ender-ml/ # ML server with ComfyUI
|
|
│ │ └── ...
|
|
│ ├── eva-01/ # ThinkPad X1 Nano (Linux desktop)
|
|
│ │ └── ...
|
|
│ ├── eva-02/ # macOS
|
|
│ │ └── configuration.nix
|
|
│ ├── eva-03/ # Linux desktop with ComfyUI
|
|
│ │ └── ...
|
|
├── home-manager/
|
|
│ ├── home.nix # Home Manager config for `rogueking`
|
|
│ ├── commands/ # CLI tool modules
|
|
│ │ ├── commands.nix
|
|
│ │ ├── direnv.nix
|
|
│ │ ├── eza.nix
|
|
│ │ ├── git.nix
|
|
│ │ ├── newsboat.nix
|
|
│ │ ├── starship.nix
|
|
│ │ ├── tmux.nix
|
|
│ │ └── zsh.nix
|
|
│ │ └── custom/ # Custom command packages
|
|
│ │ └── fastfetch/
|
|
│ │ └── nixvim/
|
|
│ └── programs/ # GUI / desktop program modules
|
|
│ ├── programs.nix
|
|
│ ├── ghostty/
|
|
│ ├── hypr/
|
|
│ └── rofi/
|
|
└── assets/
|
|
└── pfp/ # Profile pictures
|
|
```
|
|
|
|
## Flake Inputs
|
|
|
|
| Input | Source |
|
|
|--------------------------|----------------------------------------------|
|
|
| `nixpkgs` | `nixos-26.05` |
|
|
| `nixpkgs-unstable` | `nixos-unstable` |
|
|
| `nix-darwin` | `nix-darwin-26.05` |
|
|
| `home-manager` | `release-26.05` (follows `nixpkgs`) |
|
|
| `home-manager-unstable` | `master` (follows `nixpkgs-unstable`) |
|
|
| `nixvim` | `nixos-26.05` |
|
|
| `nixos-hardware` | `master` |
|
|
| `disko` | Latest |
|
|
| `nix-snapd` | Latest |
|
|
| `comfyui-nix` | `main` |
|
|
|
|
## Dev Shell
|
|
|
|
A `direnv`-friendly dev shell is available with `nixd`, `alejandra`, `nil`, `git`, and `bun`.
|
|
|
|
```bash
|
|
# Enter the dev shell
|
|
nix develop
|
|
|
|
# Or with direnv (if you have the .envrc set up)
|
|
direnv allow
|
|
```
|
|
|
|
## Commands
|
|
|
|
```bash
|
|
# Rebuild a host
|
|
sudo nixos-rebuild switch --flake .#eva-01
|
|
|
|
# Darwin rebuild
|
|
darwin-rebuild switch --flake .#eva-02
|
|
|
|
# Update flake inputs
|
|
nix flake update
|
|
|
|
# Build a specific host's ISO
|
|
nix build .#nixosConfigurations.eva-01-iso.config.system.build.isoImage
|
|
``` |