Configuration Modules

The modules directory contains the custom configuration modules that form the very core of my configuration for multiple PCs and various use-cases, that follows the dendritic pattern:

  • Directories are purely organizational
  • Files prefixed with _ are not auto-imported
  • core: flake-parts plumbing that wires everything together
  • lib: custom utility functions exposed through util, with helper files excluded from auto-import
  • hosts: per-device configuration, declared as configurations.nixos.<host> and configurations.homeManager.<user@host>, composing the modules below
  • users: user accounts and user-specific Home Manager configurations

Module List

An overview of every configuration module in this repository.

  • Type indicates whether a module extends flake.modules.nixos, flake.modules.homeManager, or both
  • ★ marks modules imported by default
  • ◇ marks WSL-compatible modules (' for HM-only)

WSL

The wsl host provides NixOS-WSL configuration.
<name>-cli holds reusable command-line settings when <name> also includes desktop/native-host configuration.

apps

Module Type Description
auth Home Manager Authentication credential managers
discord Home Manager Discord chat client
firefox Home Manager Firefox browser
internet Home Manager Internet apps
notes Home Manager Obsidian note-taking
spotify Home Manager Spotify music client
stream Home Manager Streaming tools
syncthing ◇ Home Manager Syncthing file sync
youtube Home Manager YouTube Music & TUI
vscode Home Manager Visual Studio Code editor
zed Home Manager Zed Editor
antigravity-cli ◇ Home Manager Google Antigravity CLI
antigravity Home Manager Antigravity CLI + IDE
codex-cli ◇ Home Manager OpenAI Codex CLI
codex Home Manager Codex CLI + Desktop
claude Home Manager Anthropic Claude
flatpak Both Flatpak app sandboxing
latex Both LaTeX typesetting
office Both Office suite environment
tools Both General CLI/GUI tools
wine Both Wine Windows compatibility
git ◇ Both git version control
git-hosting ◇ NixOS Gitea code hosting
git-runner ◇ NixOS GitHub/GitLab CI runner

desktop

Module Type Description
gnome Both GNOME desktop environment
hyprland Both Hyprland window manager
niri Both Niri window manager

games

Module Type Description
games Both Gaming environment (Lutris, Steam)
minecraft Home Manager Minecraft client
osu Home Manager osu! rhythm game
mc-server NixOS Minecraft server
roblox NixOS Roblox client

gui

Module Type Description
theme ★ Both System-wide theming
theme-cli ◇ Both CLI/TUI theming
fonts ★ NixOS System fonts
gtk Both GTK theming
qt Both Qt theming

hardware

Module Type Description
cpu ★ NixOS CPU configuration
gpu ★ NixOS GPU configuration
laptop Both Laptop tweaks
mouse Both Mouse configuration
mobile NixOS Mobile firmware
printer NixOS Printer firmware
blockchain ◇ NixOS Blockchain support

shell

Module Type Description
shell ★ ◇' Both Shell configuration
shell-cli ◇ NixOS Shells & TUIs
shell-utils ◇ Both Shell utilities
prompt ◇ NixOS Shell prompt

system

Module Type Description
base ★ ◇' Both Base system configuration
base-cli ◇ NixOS Shared base utilities & declarations
extbase NixOS Extended base configuration
extbase-cli ◇ NixOS Extended base CLI configuration
crypt ◇ Both GPG agent & SSH client/server
boot ★ NixOS Boot loader configuration
filesystem ★ ◇' Both File system layout
nix ★ ◇ Both Nix daemon & settings
user-cli ◇ Both User CLI setup
user ★ Both User accounts & Home Manager wiring
security Both Security & hardening

users

The core Home Manager profiles default and cli compose the standard and CLI base modules respectively.

virt

Module Type Description
android NixOS Android virtualisation
docker NixOS Docker containers
libvirt Both Libvirt/QEMU virtualisation
vfio NixOS VFIO GPU passthrough

secrets

Module Type Description
secrets ★ ◇ Both Secrets management

Options

The following are the custom configuration options exposed by the modules above:

  • apps -
  • git -
    • package: System git package - Ex. pkgs.gitFull
    • hosting -
    • enable: Enable Gitea Code Hosting - true / false
    • domain: Website Domain Name - Ex. maydayv7.dev
    • secret: Path to Cloudflare Authentication Credentials
    • runner -
    • support: Enable Support for git Runners - null / "github" / "gitlab"
    • secret: Path to Secret for git Runner
  • wine - Package to use for wine - Ex. pkgs.wineWow64Packages.stagingFull

  • games -

  • mc-servers: List of Minecraft Servers -

    • name: Unique server name
    • type: Server Type - "fabric" / "skyblock"
    • memory: Memory (GB) allocated to server - Ex. 12
    • config: Server Properties (See here)
    • port: Main server TCP port - Ex. 25565
    • vc-port: Port for Simple Voice Chat - Ex. 24454
  • gui -

  • enable: Enable Graphical Desktop Session - true / false
  • fancy: Enable Fancy GUI Effects - true / false
  • display: Main GUI Display - Ex. "HDMI-A-1"
  • wallpaper: Desktop Wallpaper Choice (taken from files.wallpapers)

  • hardware -

  • cpu -
    • model: CPU Model - "" / "amd" / "intel"
    • cores: Number of CPU Cores - Ex. 4
    • mode: CPU Frequency Governor Mode - "ondemand" / "performance" / "powersave"
  • gpu -

    • enable: Discrete GPU Support - true / false
    • model: Discrete GPU Model - null / "nvidia"
  • system -

  • kernel: Linux Kernel Variant to be used - "lts" or a suffix from pkgs.linuxKernel.kernels
  • kernelModules: Linux Kernel Modules to load
  • scheme: Supported Boot Firmware Scheme - null / "mbr" / "efi" / "secure"
  • fs -
    • scheme: Disk Filesystem Scheme - null / "simple" / "advanced"
    • swap: Size of SWAP Partition - Ex. "8G"
    • disk: Target Disk for Installation (Use ls -l /dev/disk/by-id) - Ex. "/dev/disk/by-id/nvme-..."
    • persist: System Files to preserve across reboots (while using the advanced File System Layout)
  • nix -

    • index: Enable Package Indexer - true / false
    • tools: Enable Additional Nix Tools - true / false
  • virt -

  • vfio -

    • setup: Enable VFIO Setup Mode - true / false
    • passthrough: PCI Device IDs for VFIO - Ex. [ "10de:28e0" "10de:22be" ]
    • isolate: Host CPU set to isolate for pinned vCPUs - Ex. "2-4,10-12"
    • hugepages: Number of 1 GiB hugepages to reserve - Ex. 16
  • user -

  • credentials: Individual User Credentials -
    • name: Alternative (Work) User Name
    • fullname: Full User Name
    • mail: User Mail ID - Ex. "user@email.com"
    • key: User GPG Key - Ex. "CF616EB19C2765E4"