No description
  • Nix 74.4%
  • Lua 14.2%
  • Python 11.4%
Find a file
2026-08-31 09:25:05 -05:00
assets Cleaning 2026-08-30 17:48:56 -05:00
modules added fetch and disabled plasma 2026-08-31 09:25:05 -05:00
templates/generic Whole Rewrite 2026-08-09 16:28:35 -05:00
.gitignore Whole Rewrite 2026-08-09 16:28:35 -05:00
flake.lock Added Waterfox to the Configuration 2026-08-26 16:53:14 -05:00
flake.nix Added Waterfox to the Configuration 2026-08-26 16:53:14 -05:00
README.md Updated FF, Changed README, Cursors 2026-08-12 07:06:38 -05:00

Chad's NixOS Config

A dendritic-style, flake-parts-based NixOS configuration. Based on JackJohn7's dendritic Nix setup — the module structure and tooling (boilerplate generator, import-tree wiring) are his; the package choices, host configs, and defaults are mine.

Every .nix file under modules/ is auto-discovered via import-tree, so new files just need to declare a flake.nixosModules.<name> (or nixosConfigurations, packages, etc.) and they're picked up automatically — no manual list of imports to maintain at the top level.

Hosts

Host Notes
remus AMD CPU + Nvidia MX350 (Optimus/PRIME hybrid graphics), KDE Plasma desktop (Niri available as a switchable session).
severus Intel CPU + NVMe, mango/Noctalia desktop.

Hardware config for each host lives in modules/hosts/<host>/hardware-configuration.nix and is exported as <host>Hardwaredo not share a hardware module between hosts, since it hardcodes filesystem UUIDs and kernel modules specific to that machine's disks and CPU.

Structure

modules/
  hosts/<name>/          # per-host: default.nix (nixosSystem), configuration.nix, hardware-configuration.nix
  features/               # reusable modules (apps, services, desktop layers, etc.)
    layers/                # base system layers (user, base, wallpapers, icons, cursors...)
  packages/                # custom packages built for this flake (ghostty, myNoctalia, zen, boilerplate...)
  options.nix              # shared options (e.g. global `username`)
  parts.nix                # flake-parts systems list
  shell.nix                # devShell for working on this repo
  templates.nix             # exposes the `generic` flake template
templates/generic/         # standalone starter template for a new dendritic flake
assets/                    # wallpapers, profile picture

The global username used across modules (home directory, git config, hjem file placement, etc.) is set once via config.username in modules/features/layers/base.nix.

Rebuilding

sudo nixos-rebuild switch --flake .#remus
sudo nixos-rebuild switch --flake .#severus

Generating new modules

A small Python-based boilerplate generator (self'.packages.boilerplate, available in the repo's devShell) scaffolds new modules in the right place with the right shape:

boilerplate host my-host        # modules/hosts/my-host/
boilerplate feature my-feature  # modules/features/my-feature.nix
boilerplate layer my-layer      # modules/features/layers/my-layer.nix
boilerplate package my-package  # modules/packages/my-package/

Enter the devShell first (nix develop) if boilerplate isn't on your $PATH.

Known gaps / TODO

  • Gaming module (modules/features/gaming.nix) has a hardcoded /home/user path in STEAM_EXTRA_COMPAT_TOOLS_PATH instead of ${config.username} — fix before enabling it on any host.
  • General cleanup pass for leftover inconsistencies from the original template.