|
||
---|---|---|
.github/workflows | ||
.vscode | ||
checks | ||
defaults | ||
deploy | ||
dev-shells | ||
lib | ||
nixos-configurations | ||
nixos-modules | ||
overlays | ||
packages | ||
private@18d3b3b703 | ||
.envrc | ||
.gitignore | ||
.gitmodules | ||
.nixd.json | ||
backups.md | ||
book.toml | ||
email.md | ||
flake.lock | ||
flake.nix | ||
README.md | ||
robots.txt | ||
SUMMARY.md | ||
updates.md |
qo.is Infrastructure
This repository contains the infrastructure configuration and documentation sources.
Check out the current rendered documentation.
Structure
nixos-configurations
: Main nixos configuration for every host.
defaults
: Configuration defaults
nixos-modules
: Custom modules (e.g. for vpn and routers)
private
: Private configuration values (like users, sops-encrypted secrets and keys)
Building
This repository requires nix flakes
nix build
Build all host configurations and docsnix build .#nixosConfigurations.<hostname>.config.system.build.toplevel
Build a single host configuration withnix build .#docs
Build the documentation website
Development
nix develop
Development environmentnix flake check
Execute the project's checksnix fmt
Autofix formatting
Working with the private submodule
To clone with submodules (if you have access):
git clone --recurse-submodules https://git.qo.is/qo.is/infrastructure.git
On changes:
git add private
nix flake lock --update-input private
Deployment
nix run .#deploy-qois
See Deployment for details.
Secrets
Secret management is done with nix-sops.
Secrets are stored in private/passwords.sops.yaml
(sysadmin passwords),
private/nixos-configurations/secrets.sops.yaml
(shared secrets for all hosts) and
private/nixos-configurations/<hostname>/secrets.sops.yaml
(host specific secrets).
Usage:
sops $file # To edit a file
sops-rekey # To rekey all secrets, e.g. after a key rollover or new host