modules/README.md (9865B)
Rendered
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.
The core Home Manager profiles default and cli compose the standard and
CLI base modules respectively.
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"
Code
1# Configuration Modules
2
3The `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](https://github.com/mightyiam/dendritic) pattern:
4
5- Directories are purely organizational
6- Files prefixed with `_` are not auto-imported
7- [`core`](./core): `flake-parts` plumbing that wires everything together
8- [`lib`](./lib/README.md): custom utility functions exposed through `util`, with helper files excluded from auto-import
9- [`hosts`](./hosts): per-device configuration, declared as `configurations.nixos.<host>` and `configurations.homeManager.<user@host>`, composing the modules below
10- [`users`](./users/): user accounts and user-specific Home Manager configurations
11
12## Module List
13
14An overview of every configuration module in this repository.
15
16- **Type** indicates whether a module extends `flake.modules.nixos`, `flake.modules.homeManager`, or both
17- **★** marks modules imported by default
18- **◇** marks WSL-compatible modules (' for HM-only)
19
20#### WSL
21
22The [`wsl` host](./hosts/wsl) provides [NixOS-WSL](https://github.com/nix-community/NixOS-WSL) configuration.
23`<name>-cli` holds reusable command-line settings when `<name>` also includes desktop/native-host configuration.
24
25### [`apps`](./apps)
26
27| Module | Type | Description |
28| ------------------- | ------------ | ---------------------------------- |
29| `auth` | Home Manager | Authentication credential managers |
30| `discord` | Home Manager | Discord chat client |
31| `firefox` | Home Manager | Firefox browser |
32| `internet` | Home Manager | Internet apps |
33| `notes` | Home Manager | Obsidian note-taking |
34| `spotify` | Home Manager | Spotify music client |
35| `stream` | Home Manager | Streaming tools |
36| `syncthing` ◇ | Home Manager | Syncthing file sync |
37| `youtube` | Home Manager | YouTube Music & TUI |
38| `vscode` | Home Manager | Visual Studio Code editor |
39| `zed` | Home Manager | Zed Editor |
40| `antigravity-cli` ◇ | Home Manager | Google Antigravity CLI |
41| `antigravity` | Home Manager | Antigravity CLI + IDE |
42| `codex-cli` ◇ | Home Manager | OpenAI Codex CLI |
43| `codex` | Home Manager | Codex CLI + Desktop |
44| `claude` | Home Manager | Anthropic Claude |
45| `flatpak` | Both | Flatpak app sandboxing |
46| `latex` | Both | LaTeX typesetting |
47| `office` | Both | Office suite environment |
48| `tools` | Both | General CLI/GUI tools |
49| `wine` | Both | Wine Windows compatibility |
50| `git` ◇ | Both | `git` version control |
51| `git-hosting` ◇ | NixOS | Gitea code hosting |
52| `git-runner` ◇ | NixOS | GitHub/GitLab CI runner |
53
54### [`desktop`](./desktop)
55
56| Module | Type | Description |
57| ---------- | ---- | ------------------------- |
58| `gnome` | Both | GNOME desktop environment |
59| `hyprland` | Both | Hyprland window manager |
60| `niri` | Both | Niri window manager |
61
62### [`games`](./games)
63
64| Module | Type | Description |
65| ----------- | ------------ | ---------------------------------- |
66| `games` | Both | Gaming environment (Lutris, Steam) |
67| `minecraft` | Home Manager | Minecraft client |
68| `osu` | Home Manager | osu! rhythm game |
69| `mc-server` | NixOS | Minecraft server |
70| `roblox` | NixOS | Roblox client |
71
72### [`gui`](./gui)
73
74| Module | Type | Description |
75| ------------- | ----- | ------------------- |
76| `theme` ★ | Both | System-wide theming |
77| `theme-cli` ◇ | Both | CLI/TUI theming |
78| `fonts` ★ | NixOS | System fonts |
79| `gtk` | Both | GTK theming |
80| `qt` | Both | Qt theming |
81
82### [`hardware`](./hardware)
83
84| Module | Type | Description |
85| -------------- | ----- | ------------------- |
86| `cpu` ★ | NixOS | CPU configuration |
87| `gpu` ★ | NixOS | GPU configuration |
88| `laptop` | Both | Laptop tweaks |
89| `mouse` | Both | Mouse configuration |
90| `mobile` | NixOS | Mobile firmware |
91| `printer` | NixOS | Printer firmware |
92| `blockchain` ◇ | NixOS | Blockchain support |
93
94### [`shell`](./shell)
95
96| Module | Type | Description |
97| --------------- | ----- | ------------------- |
98| `shell` ★ ◇' | Both | Shell configuration |
99| `shell-cli` ◇ | NixOS | Shells & TUIs |
100| `shell-utils` ◇ | Both | Shell utilities |
101| `prompt` ◇ | NixOS | Shell prompt |
102
103### [`system`](./system)
104
105| Module | Type | Description |
106| ----------------- | ----- | ------------------------------------ |
107| `base` ★ ◇' | Both | Base system configuration |
108| `base-cli` ◇ | NixOS | Shared base utilities & declarations |
109| `extbase` | NixOS | Extended base configuration |
110| `extbase-cli` ◇ | NixOS | Extended base CLI configuration |
111| `crypt` ◇ | Both | GPG agent & SSH client/server |
112| `boot` ★ | NixOS | Boot loader configuration |
113| `filesystem` ★ ◇' | Both | File system layout |
114| `nix` ★ ◇ | Both | Nix daemon & settings |
115| `user-cli` ◇ | Both | User CLI setup |
116| `user` ★ | Both | User accounts & Home Manager wiring |
117| `security` | Both | Security & hardening |
118
119### [`users`](./users)
120
121The `core` Home Manager profiles `default` and `cli` compose the standard and
122CLI base modules respectively.
123
124### [`virt`](./virt)
125
126| Module | Type | Description |
127| --------- | ----- | --------------------------- |
128| `android` | NixOS | Android virtualisation |
129| `docker` | NixOS | Docker containers |
130| `libvirt` | Both | Libvirt/QEMU virtualisation |
131| `vfio` | NixOS | VFIO GPU passthrough |
132
133### [`secrets`](../secrets)
134
135| Module | Type | Description |
136| ------------- | ---- | ------------------ |
137| `secrets` ★ ◇ | Both | Secrets management |
138
139## Options
140
141The following are the custom configuration options exposed by the modules above:
142
143- [`apps`](./apps) -
144 - `git` -
145 - `package`: System `git` package - Ex. `pkgs.gitFull`
146 - `hosting` -
147 - `enable`: Enable Gitea Code Hosting - `true / false`
148 - `domain`: Website Domain Name - Ex. `maydayv7.dev`
149 - `secret`: Path to Cloudflare Authentication Credentials
150 - `runner` -
151 - `support`: Enable Support for `git` Runners - `null / "github" / "gitlab"`
152 - `secret`: Path to Secret for `git` Runner
153 - `wine` - Package to use for `wine` - Ex. `pkgs.wineWow64Packages.stagingFull`
154
155- [`games`](./games) -
156 - `mc-servers`: List of Minecraft Servers -
157 - `name`: Unique server name
158 - `type`: Server Type - `"fabric" / "skyblock"`
159 - `memory`: Memory (GB) allocated to server - Ex. `12`
160 - `config`: Server Properties (See [here](https://minecraft.fandom.com/wiki/Server.properties))
161 - `port`: Main server TCP port - Ex. `25565`
162 - `vc-port`: Port for [Simple Voice Chat](https://modrinth.com/plugin/simple-voice-chat) - Ex. `24454`
163
164- [`gui`](./gui) -
165 - `enable`: Enable Graphical Desktop Session - `true / false`
166 - `fancy`: Enable Fancy GUI Effects - `true / false`
167 - `display`: Main GUI Display - Ex. `"HDMI-A-1"`
168 - `wallpaper`: Desktop Wallpaper Choice (taken from `files.wallpapers`)
169
170- [`hardware`](./hardware) -
171 - `cpu` -
172 - `model`: CPU Model - `"" / "amd" / "intel"`
173 - `cores`: Number of CPU Cores - Ex. `4`
174 - `mode`: CPU Frequency Governor Mode - `"ondemand" / "performance" / "powersave"`
175 - `gpu` -
176 - `enable`: Discrete GPU Support - `true / false`
177 - `model`: Discrete GPU Model - `null / "nvidia"`
178
179- [`system`](./system) -
180 - `kernel`: Linux Kernel Variant to be used - `"lts"` or a suffix from `pkgs.linuxKernel.kernels`
181 - `kernelModules`: Linux Kernel Modules to load
182 - `scheme`: Supported Boot Firmware Scheme - `null / "mbr" / "efi" / "secure"`
183 - `fs` -
184 - `scheme`: Disk Filesystem Scheme - `null / "simple" / "advanced"`
185 - `swap`: Size of SWAP Partition - Ex. `"8G"`
186 - `disk`: Target Disk for Installation (Use `ls -l /dev/disk/by-id`) - Ex. `"/dev/disk/by-id/nvme-..."`
187 - `persist`: System Files to preserve across reboots (while using the `advanced` File System Layout)
188 - `nix` -
189 - `index`: Enable Package Indexer - `true / false`
190 - `tools`: Enable Additional Nix Tools - `true / false`
191
192- [`virt`](./virt) -
193 - `vfio` -
194 - `setup`: Enable VFIO Setup Mode - `true / false`
195 - `passthrough`: PCI Device IDs for VFIO - Ex. `[ "10de:28e0" "10de:22be" ]`
196 - `isolate`: Host CPU set to isolate for pinned vCPUs - Ex. `"2-4,10-12"`
197 - `hugepages`: Number of 1 GiB hugepages to reserve - Ex. `16`
198
199- [`user`](./system/user) -
200 - `credentials`: Individual User Credentials -
201 - `name`: Alternative (Work) User Name
202 - `fullname`: Full User Name
203 - `mail`: User Mail ID - Ex. `"user@email.com"`
204 - `key`: User GPG Key - Ex. `"CF616EB19C2765E4"`