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.jsfile, controlling DNS records for my domains.- Subdirectories
common: Common records shared across domains.core: Core component that converts a Nix attribute set into DNSControlconfig.jsformat.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 byclientnodes.
- 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.
-