configuration for my mac and linux workstations
  • Nix 74.7%
  • Shell 13.3%
  • TypeScript 5.1%
  • Lua 4.5%
  • Just 2.4%
Find a file
2026-07-02 11:34:41 -04:00
.github/workflows chore(deps): update actions/checkout digest to df4cb1c (#194) 2026-06-30 22:15:25 -04:00
home chore(claude): default to claude-sonnet-5 2026-07-02 11:34:41 -04:00
hosts feat(hephaestus): mount tank nfs shares 2026-06-24 20:16:39 -04:00
.envrc Add azure-cli-extensions.fzf 2026-04-24 11:17:06 -04:00
.gitignore feat(helios): add ente auth 2026-06-13 15:11:01 -04:00
AGENTS.md ci: build helios in cachix workflow 2026-06-04 00:20:48 -04:00
darwin.nix feat(darwin): add cyberduck 2026-06-17 22:16:05 -04:00
flake.lock chore: flake.lock update (#197) 2026-07-01 07:21:48 -04:00
flake.nix chore: flake.lock update (#193) 2026-06-30 09:41:22 -04:00
justfile fix(hephaestus): use latest kernel and preserve generations 2026-06-06 20:12:46 -04:00
LICENSE Create LICENSE 2023-09-30 21:20:12 -04:00
nixos.nix feat(hephaestus): replace opensnitch with connection logging 2026-06-18 14:54:58 -04:00
packages.nix feat(packages): add czkawka 2026-06-30 11:01:28 -04:00
README.md refactor: remove local litellm proxy and all references 2026-06-03 13:23:37 -04:00
renovate.json chore(home): remove obsidian config 2026-06-16 18:51:15 -04:00
statix.toml ci: simplify renovate config and add nix linting 2026-06-01 10:50:49 -04:00
wallpaper.png Add niri 2026-04-14 17:05:00 -04:00

nix-config

This repo stores nix configuration to manage my hosts running NixOS and macOS.

The configuration is very specific to my own machines and setup, but it may be a useful reference for anyone else learning or experimenting with nix, whether it be on a personal workstation or a server environment.

 macchina

        a8888b.           Host        -  dave@hephaestus
       d888888b.          Machine     -  Micro-Star International Co., Ltd MS-7C02 1.0
       8P"YP"Y88          Kernel      -  6.12.81
       8|o||o|88          Distro      -  NixOS 25.11 (Xantusia)
       8'    .88          DE          -  Niri
       8`._.' Y8.         Packages    -  1 (cargo), 6 (flatpak), 9299 (nix)
      d/      `8b.        Shell       -  fish
     dP        Y8b.       Terminal    -  .ghostty-wrappe
    d8:       ::88b.      Resolution  -  3840x2160
   d8"         'Y88b      Uptime      -  11h 32m
  :8P           :888      CPU         -  AMD Ryzen 7 5700X 8-Core Processor (16)
   8a.         _a88P      CPU Load    -  3%
 ._/"Yaa     .| 88P|      Memory      -  10.2 GB / 32.8 GB
 \    YP"    `|     `.
 /     \.___.d|    .'
 `--..__)     `._.'

Prerequisites

Build

To run a build/rebuild:

just rebuild

Updates

Updates are proposed by renovate. To build the system, checkout the renovate PR and run just rebuild.

If the build is stable, run just merge-pr.

Common Recipes

Run just to view all recipes and associated descriptions:

 just
Available recipes:
    clean                    # run nix garbage collection (user + root)
    fmt                      # format all nix files [alias: f]
    merge-pr                 # squash-merge current branch's PR with nvd diff in body
    rebuild                  # build, show nvd diff, then switch [alias: r]
    rebuild-boot             # rebuild and install bootloader
    rollback                 # switch to previous generation
    update-claude *version   # usage: just update-claude [VERSION]  (VERSION without leading 'v'; defaults to latest)
    update-pi *version       # usage: just update-pi [VERSION]  (VERSION without leading 'v'; defaults to latest)

Restoring from a live USB

If the bootloader for some reason breaks (i.e. motherboard firmware upgrade), restore it from a live USB by running the following commands:

$ sudo cryptsetup luksOpen /dev/nvme0n1p2 crypted-nixos
Enter passphrase for /dev/nvme0n1p2: ********
$ sudo mount /dev/vg/root /mnt
$ sudo mount /dev/nvme0n1p1 /mnt/boot/efi
$ sudo nixos-enter --root /mnt
$ hostname <hostname>

Navigate to the nix-config directory and run:

just rebuild-boot