pantheon/docs
2025-07-07 17:42:30 +08:00
..
cheatsheet.md feat(helpers/text): add headings and descriptions 2025-07-07 17:42:22 +08:00
README.md refactor: move readme to docs dir, update nix file 2025-07-07 17:42:30 +08:00

Pantheon

This flake serves as a monorepo for my systems (using IaC), dotfiles, and scripts. It's hosted at https://git.rrv.sh/rrvsh/pantheon, and mirrored to https://github.com/rrvsh/pantheon.

Structure

The system configurations are defined in flake.manifest. flake.manifest.owner provides the attributes for the administrator user, including username and pubkey. flake.manifest.hosts provides the specifications for the system configurations that should be exposed by the flake as nixosConfigurations. flake.modules.nixos.* provide NixOS options and configurations. The attribute flake.modules.nixos.default provides options that will be applied to every system of that class. You can use it as seen here:

flake.modules.nixos.default.imports = [ inputs.home-manager.nixosModules.default ];

The other attributes under flake.modules.nixos should be opt-in, i.e. provide options that will be set in the profiles. flake.profiles.nixos provides profiles which use the options defined in flake.modules.nixos to define different roles for each system, such as graphical, laptop, headless, etc. Options should not be defined here. flake.contracts.nixos.* will provide contracts, such as reverse proxies or databases, which will configure options on the provider and receiver host.

Acknowledgements

Thanks to the following for inspiring this configuration. I highly recommend you look through their writings and configurations.

  • ornicar which is where I first heard of NixOS
  • No Boilerplate for making me finally try the OS
  • ryan4yin for being an amazing introduction to NixOS, home-manager, and flakes
  • NotAShelf for their blog and for the wonderful NVF
  • mightyiam for their infrastructure repo using flake-parts
  • drupol for this blog post which convinced me to rebase my infra to use flake-parts