⚙️ Configuration and Deployment of qo.is infrastructure. https://docs-ops.qo.is
  • Nix 81.4%
  • Python 11.9%
  • Shell 6.3%
  • Vim Script 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Renovate Bot addf9a6eae
All checks were successful
CI / build (push) Successful in 1m22s
CI / deploy (docs-ops.qo.is) (push) Successful in 26s
CI / deploy (system-vm) (push) Successful in 39s
CI / deploy (system-physical) (push) Successful in 1m19s
CI / deploy-ci (push) Successful in 26s
Lock file maintenance
2026-11-12 18:00:20 +00:00
.github/workflows Limit CI eval concurrency and add a nix runner 2026-10-09 13:03:23 +00:00
.vscode Apply treefmt 2025-03-25 14:10:54 +02:00
checks Generate the network diagrams with nix-topology 2026-10-01 18:06:53 +00:00
defaults Disable fwupd uefi_dbx plugin on APU boards 2026-10-09 12:48:00 +03:00
deploy Move static-page nix profile to user home 2026-01-09 16:17:16 +08:00
dev-shells Add grafana-mcp launcher with keyring token login 2026-10-07 19:07:17 +00:00
lib Apply treefmt 2025-03-25 14:10:54 +02:00
nixos-configurations Enable prometheus SSO on lindberg-webapps 2026-10-09 13:33:23 +00:00
nixos-modules Repeat alert notifications every 12h 2026-11-01 15:39:20 +02:00
packages Add grafana-mcp launcher with keyring token login 2026-10-07 19:07:17 +00:00
private@18d733b931 Update private repo 2026-11-01 23:18:51 +02:00
topology Distinguish physical and virtual networks in the diagrams 2026-10-01 18:06:53 +00:00
.envrc Add small docs improvements and add CLAUDE.md 2026-04-25 19:15:47 +03:00
.gitignore Update main agents files 2026-10-03 19:29:01 +00:00
.gitmodules Commit files for public release 2024-10-02 16:57:36 +03:00
.mcp.json Add grafana-mcp launcher with keyring token login 2026-10-07 19:07:17 +00:00
.nixd.json Apply treefmt 2025-03-25 14:10:54 +02:00
AGENTS.md Use sops set/unset in AGENTS.md secrets section 2026-10-03 19:29:01 +00:00
backups.md Commit files for public release 2024-10-02 16:57:36 +03:00
book.toml Drop mdBook multilingual option removed in nixos-26.05 2026-07-10 12:43:40 +03:00
CODESTYLE.md Add small docs improvements and add CLAUDE.md 2026-04-25 19:15:47 +03:00
email.md Apply treefmt 2025-03-25 14:10:54 +02:00
flake.lock Lock file maintenance 2026-11-12 18:00:20 +00:00
flake.nix Generate the network diagrams with nix-topology 2026-10-01 18:06:53 +00:00
README.md Add small docs improvements and add CLAUDE.md 2026-04-25 19:15:47 +03:00
renovate.json Exclude private submodule from renovate nix manager 2026-08-20 17:31:54 +03:00
robots.txt Commit files for public release 2024-10-02 16:57:36 +03:00
SUMMARY.md Update readme 2026-10-02 20:41:24 +03:00
treefmt.nix Fix fmt 2025-07-23 22:55:39 +03:00
updates.md Split kanidm-grafana config per service and unpin kanidm in the module 2026-10-01 19:48:11 +00:00

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: Static/Meta configurations, e.g. list of host and keys
nixos-modules: Custom modules (all configurations that are not host specific live here)
private: Private configuration values (like users, sops-encrypted secrets and keys)

Development

This repository requires nix flakes

  • nix flake check
    Execute the project's checks, which includes building all configurations and packages. See Tests.

  • nix build .#nixosConfigurations.<hostname>.config.system.build.toplevel
    Build a single host configuration.

  • nix build .#docs
    Build the documentation website.

  • nix develop
    Development environment

  • nix fmt
    Autofix formatting

Secrets and private Submodule

Secret management is done with nix-sops and a git submodule in private.
Make sure you have the submodule correctly available. To clone with submodules (if you have access):

git clone --recurse-submodules https://git.qo.is/qo.is/infrastructure.git
# See below for how to commit changes.

Secrets are stored in private/passwords.sops.yaml (sysadmin passwords), private/nixos-modules/shared-secrets/default.sops.yaml (shared secrets for all hosts) and private/nixos-configurations/<hostname>/secrets.sops.yaml (host specific secrets).

To modify secrets:

sops $file # To edit a file
sops-rekey # To rekey all secrets, e.g. after a key rollover or new host

After changing secrets:

# Commit changes in subrepo
pushd private
  git commit
  git push
  nix flake prefetch . # Make subrepo available in nix store. Required until nix 2.27.
popd

git add private
nix flake lock --update-input private

Deployment

See Deployment for details.

Deployments are triggered automatically via CI on git.qo.is. Open a pull request to trigger the pipeline; merging to main deploys to all hosts.