No description
  • Nix 81.9%
  • Shell 13.8%
  • Go 4.3%
Find a file
2026-08-10 21:33:40 -05:00
assets/backgrounds refactor flake into host and module layout 2026-04-20 13:39:26 -05:00
hosts Remove nebula from tito 2026-08-10 21:31:45 -05:00
modules remove nebula from abra, add ssh config 2026-08-10 21:33:40 -05:00
scripts Add nebula pull automation 2026-04-24 10:57:20 -05:00
tools/nixctl fix nixctl runtime checks and flake root execution 2026-04-21 21:31:19 -05:00
.gitignore refactor flake into host and module layout 2026-04-20 13:39:26 -05:00
FILE_PATHS.md refactor flake into host and module layout 2026-04-20 13:39:26 -05:00
flake.lock Add ollama for tito, setup ssh keys 2026-08-09 13:08:50 -05:00
flake.nix Actually use merged config on tito, fix Nvidia / docker stuff 2026-04-27 07:42:55 -05:00
README.md fix nixctl runtime checks and flake root execution 2026-04-21 21:31:19 -05:00

Nix Config

Unified NixOS flake with host-specific entry points in hosts/ and reusable logic in modules/.

Quick map

  • flake.nix wires all hosts, shared NixOS modules, and Home Manager profiles.
  • hosts/<host>/default.nix contains machine-specific settings only.
  • hosts/<host>/hardware.nix contains generated hardware config.
  • modules/nixos/common/* contains baseline shared NixOS defaults.
  • modules/nixos/tito/* contains Tito-specific NixOS modules.
  • modules/nixos/alakazam/* contains Alakazam-specific NixOS modules.
  • modules/nixos/abra/* contains Abra-specific NixOS modules.
  • modules/home-manager/common/* contains shared Home Manager modules.
  • modules/home-manager/tito/*, modules/home-manager/alakazam/*, and modules/home-manager/abra/* contain profile-specific HM config.
  • assets/ stores shared static files (wallpaper), scripts/ stores helper scripts.

Shared NixOS defaults

Defined in modules/nixos/common/default.nix and imported by both host families:

  • Bootloader defaults (systemd-boot, EFI) in modules/nixos/common/boot-systemd.nix.
  • Locale/timezone defaults in modules/nixos/common/locale.nix.
  • Nix settings (flakes, GC, unfree enabled) in modules/nixos/common/nix.nix.
  • NetworkManager enabled in modules/nixos/common/networkmanager.nix.
  • Base services in modules/nixos/common/base-services.nix:
    • printing, tailscale, pipewire, pulseaudio off, bluetooth, graphics, rtkit.
  • Shared Nebula lighthouse/static map in modules/nixos/common/nebula-base.nix.

Host differences at a glance

tito

Entry point: hosts/tito/default.nix

  • Desktop/server-style GNOME + XFCE + XRDP setup.
  • NVIDIA stack via modules/nixos/tito/nvidia.nix.
  • Nebula mesh cert/key and firewall policy via modules/nixos/tito/nebula.nix.
  • Bridge config on br0 over enp12s0.
  • Virtualization-heavy: libvirt + docker + virt-manager.
  • Extra AI/remote packages (e.g. ollama-cuda, llmfit, rustdesk).

alakazam

Entry point: hosts/alakazam/default.nix

  • Sway/Wayland-first system profile.
  • SDDM + seatd + libinput tuning in modules/nixos/alakazam/services.nix.
  • Wayland environment/session variables in modules/nixos/alakazam/programs.nix.
  • Nebula mesh cert/key + DNS behavior in modules/nixos/alakazam/nebula.nix.
  • Host-specific static DNS/hosts map in hosts/alakazam/default.nix.
  • Additional user and package set in modules/nixos/alakazam/users.nix and modules/nixos/alakazam/packages.nix.

abra

Entry point: hosts/abra/default.nix

  • Cinnamon + LightDM desktop profile in modules/nixos/abra/desktop.nix.
  • Multi-user workstation setup (jared and sara) in modules/nixos/abra/users.nix.
  • Auto-upgrade + podman-focused service config in modules/nixos/abra/system-services.nix.
  • Uses common base defaults but overrides tailscale off for this host.
  • Includes helper scripts under scripts/abra/.

Home Manager profiles

Shared (modules/home-manager/common/default.nix)

  • direnv + nix-direnv.
  • yazi + shell integration.

Tito profile (modules/home-manager/tito/default.nix)

  • Terminal/shell-focused profile (zsh, bash, zellij, kitty, alacritty).
  • GNOME keybinding tweaks via dconf.
  • Personal package set (spotify, strawberry, prettier).

Alakazam profile (modules/home-manager/alakazam/default.nix)

  • Sway desktop user stack with dedicated modules under modules/home-manager/alakazam/programs/.
  • Waybar/Sway/Zed/git configs and Wayland desktop utilities.

Abra profiles (modules/home-manager/abra/jared.nix and modules/home-manager/abra/sara.nix)

  • Shared HM base imported from modules/home-manager/abra/default.nix.
  • Separate user entrypoints for jared and sara.
  • Includes sway/waybar/git/neovim profile modules under modules/home-manager/abra/programs/.

Build all hosts

nix build .#nixosConfigurations.tito.config.system.build.toplevel --no-link
nix build .#nixosConfigurations.alakazam.config.system.build.toplevel --no-link
nix build .#nixosConfigurations.abra.config.system.build.toplevel --no-link

Interactive rebuild helper

  • tools/nixctl/ contains a small interactive Go TUI (Charm's huh) for common operations.
  • It supports selecting host + action and wraps common Nix commands (build, switch, test, update, gc).
  • scripts/nixctl.sh auto-checks Go and module dependencies before launching.
  • If go is missing, it transparently runs with nix shell nixpkgs#go.
  • Commands execute from the repository flake root automatically.
  • Run with:
./scripts/nixctl.sh