This repository holds the configuration files for all my NixOS systems.
- Full system root-on-tmpfs, using impermanence
- Nftables instead of iptables
- Secret management with agenix
- QEMU user mode emulation for most architectures
- Nix Flakes with Nixpkgs patching
- Additional kernel modules from my NUR repo
- Post-Quantum Cryptography and GOST support for OpenSSL
- Custom Helper Library (
LT
) that provides a wide range of functions and constants for managing the configuration. - DNS Management using a custom Nix-to-DNSControl converter.
My hosts are categorized into three types:
client
: A host running NixOS. Usually a desktop/laptop running a desktop environment.minimal
: A minimal NixOS host, used for special purposes.server
: A host running NixOS without GUI. Usually a VM running on a cloud provider.
-
dns
: My custom Nix-to-DNSControl code that generates a DNSControlconfig.js
file, controlling DNS records for my domains.- Subdirectories
common
: Common records shared across domains.core
: Core component that converts a Nix attribute set into DNSControlconfig.js
format.domains
: Nix definitions controlling individual (groups of) zones.
- Subdirectories
-
helpers
: Definitions for short cuts used by code in this repo. -
home
: My Home Manager configurations.- Subdirectories
common-apps
: Apps used by all nodes.client-apps
: Apps used byclient
nodes.
- Subdirectories
-
hosts
: Host-specific NixOS system definitions. Each subdirectory refers to a host. The list of hosts is automatically obtained inflake.nix
. Configs here usually control networking parameters, and host-specific tunings. -
nixos
: Common NixOS system definitions.-
Used by all nodes
common-apps
: Apps used by all nodes.minimal-apps
: Apps used by all nodes.minimal-components
: System options used by all nodes.- Components differ from "Apps" in that a component is a fundamental part in the system (often by tuning kernel core parameters), while an app provides service on the userspace level.
-
Used by client nodes
client-apps
: Apps specific to client nodes.client-components
: Components specific to client nodes.
-
Used by server nodes
server-apps
: Apps used by server nodes.server-components
: Components used by server nodes.
-
Used by Proxmox VE nodes
pve-components
: Components specific to Proxmox VE nodes.
-
Supplemental files
hardware
: Common hardware configuration snippets, including LVM and QEMU VMs.optional-apps
: Apps that are used by some nodes. Manual imports required in host-specific definitions.optional-cron-jobs
: Cron jobs that are used by some nodes. Manual imports required in host-specific definitions.
-