Skip to content

The Project

A multi-user, multi-host, multi-service NixOS configuration :

FeatureDescription
⚙️Fully automatedWith nixos-anywhere 🡕, disko 🡕 and colmena 🡕
👤User profilesProfiles 🡕 and modules Home Manager 🡕 (admin, gamer…)
🖥️Host profilesHost profiles (servers, network nodes, workstations…)
🌐Tailnet VPNMesh VPN 🡕 with headscale 🡕 + tailscale 🡕 + subnets
🛡️Ad BlockerSecure and ad-free internet with AdguardHome 🡕
🧩Unique identitiesSSO with Kanidm 🡕 and Vaultwarden 🡕
🤗Smart servicesImmich 🡕, Nextcloud 🡕, Forgejo 🡕, Matrix 🡕, Jellyfin 🡕, etc.
💻Clean GNOMENixOS hosts with GNOME 🡕 and pre-configured apps
💾3-2-1 BackupsRobust, streamlined, distributed Restic 🡕 backups
🏠Home pageAutomated home page for each zone
SpecificityDescription
❄️Declarative, immutableAnd reproducible thanks to Nix / NixOS 🡕 and its ecosystem
🔑Enhanced securitySimple and reliable security strategy based on sops-nix 🡕
📦Complete modulesHigh-level NixOS modules easy to configure
📐ArchitectureConsistent, extensible, scalable, customizable
✴️Reverse proxyServices distributed across the network via Caddy 🡕 proxies
🛜Automated networkdnsmasq 🡕 zero-conf plumbing (DNS, DHCP, firewall…)
Monitoring & AlertsSupervision with Prometheus 🡕, Grafana 🡕 and Alertmanager 🡕

This configuration manages the entire network and its nodes:

  • Zones each containing a gateway and machines.
  • The VPN that encompasses the zones and other machines on the internet.

The network operation can be summarized as follows:

DNF Network

At the root:

  • dnf → modules, users, hosts (framework)
  • usr → Local project (writable)
  • var → Generated files and logs
  • src → Generator source files
  • doc → Project documentation
  • flake.nix Project flake
  • Justfile Project management with just 🡕
  • Directorydnf/ Framework (modules & common files)
    • Directorymodules/ Framework modules
      • Directorystandard Standard modules
        • Directorysystem/ System & Hardware
        • Directoryconsole/ CLI Applications
        • Directorygraphic/ X Applications
        • Directoryservice/ Network services
        • Directoryadmin/ Administration
        • Directoryuser/ User configurations (non-HM)
      • Directorymixin Macro-modules “Mixins”
        • Directoryhost/ Host profiles (desktop, server…)
        • Directoryprofile/ User profile add-ons
    • Directoryhome Home Manager (HM) configuration
      • Directorymodules/ Nix modules (features, programs)
      • Directoryprofiles/ Profiles: admin, student, advanced…
      • Directorynixos/ Additional NixOS configurations (non-HM)
  • Directoryetc/ Declarative network configuration
  • Directoryusr/ My personal network configuration
    • Directorymodules/ My NixOS modules, same as dnf/modules
    • Directoryhome/ My HM modules, same as dnf/home
    • Directorysecrets/ My passwords
      • secrets.yaml SOPS passwords and keys
    • Directorymachines/ Host-specific configs (hardware, etc.)
    • Directoryusers/ User-specific HM configs
  • Directoryvar/ Generated files
    • Directorylog/ Log files
    • Directorygenerated/ Generated files
      • hosts.nix
      • users.nix
      • network.nix
  • Directorysrc/ Generator sources
  • Directorydoc/ This documentation

Lower levels serve the higher levels.

DNF Project layers

These configurations are organized by category:

  • Oauth2 = supports oauth2 / oidc login
  • Native = no plugin or extra needed, can be configured directly
  • PKCE = supports PKCE
  • Decl. (declarative) = all parameters can be declared in the configuration
  • OK = functional implementation
ApplicationOauth2NativePKCEDecl.OKComments
Outline 🡕Works perfectly
Mealie 🡕Works perfectly
Vaultwarden 🡕Works perfectly
Matrix Synapse 🡕All good (+Element +Coturn)
Open WebUI 🡕All good (+Ollama)
Grafana 🡕All good
LaSuite Docs 🡕⚠️Good except PKCE
Immich 🡕⚠️Manual configuration
Forgejo 🡕Manual configuration
Nextcloud 🡕Plugin + manual config
Oauth2 Proxy 🡕Linked to Caddy and Kanidm
Homepage 🡕🔁🔁🔁🔁Via OAuth2 Proxy
Prometheus 🡕🔁🔁🔁🔁Via OAuth2 Proxy
Jellyfin 🡕ℹ️ℹ️ℹ️ℹ️ℹ️Shared access
AdGuard Home 🡕ℹ️ℹ️ℹ️ℹ️ℹ️Shared access
Geneweb 🡕ℹ️ℹ️ℹ️ℹ️ℹ️Shared access
Mattermost 🡕No more OAuth2 (TEAM)