⚙️ Configuration and Deployment of qo.is infrastructure. https://docs-ops.qo.is
  • Nix 89.8%
  • Shell 5.6%
  • Python 3.9%
  • Vim Script 0.7%
Find a file
Renovate Bot 745c1c67a7
Some checks failed
CI / build (push) Successful in 1m0s
CI / deploy (docs-ops.qo.is) (push) Successful in 33s
CI / deploy (system-physical) (push) Successful in 1m21s
CI / deploy (system-vm) (push) Failing after 1m4s
CI / deploy-ci (push) Has been skipped
chore(deps): lock file maintenance
2026-05-16 19:20:14 +00:00
.github/workflows Deploy CI hosts after all other deployments 2025-06-29 21:01:54 +03:00
.vscode Apply treefmt 2025-03-25 14:10:54 +02:00
checks Update some docs around tests 2026-04-25 19:15:47 +03:00
defaults Update lindberg-webapps configurations 2025-06-14 21:07:20 +03:00
deploy Move static-page nix profile to user home 2026-01-09 16:17:16 +08:00
dev-shells Add closure diffing scripts 2026-04-15 20:13:55 +03:00
lib Apply treefmt 2025-03-25 14:10:54 +02:00
nixos-configurations Upgrade nextcloud to 33 2026-05-07 16:28:40 +03:00
nixos-modules Add gitea dashboard 2026-04-25 19:54:20 +03:00
packages Add closure diffing scripts 2026-04-15 20:13:55 +03:00
private@812af3d998 Add static admin user for grafana 2026-04-11 20:30:40 +02:00
.envrc Add small docs improvements and add CLAUDE.md 2026-04-25 19:15:47 +03:00
.gitignore Add small docs improvements and add CLAUDE.md 2026-04-25 19:15:47 +03:00
.gitmodules Commit files for public release 2024-10-02 16:57:36 +03:00
.nixd.json Apply treefmt 2025-03-25 14:10:54 +02:00
backups.md Commit files for public release 2024-10-02 16:57:36 +03:00
book.toml Commit files for public release 2024-10-02 16:57:36 +03:00
CLAUDE.md Add small docs improvements and add CLAUDE.md 2026-04-25 19:15:47 +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 chore(deps): lock file maintenance 2026-05-16 19:20:14 +00:00
flake.nix feat: integrate srvos server profile 2026-04-15 20:13:55 +03:00
README.md Add small docs improvements and add CLAUDE.md 2026-04-25 19:15:47 +03:00
renovate.json Switch renovate automerge to branch to prevent noise 2025-05-18 20:18:58 +03:00
robots.txt Commit files for public release 2024-10-02 16:57:36 +03:00
SUMMARY.md Remove host stompert 2025-05-18 23:11:52 +03:00
treefmt.nix Fix fmt 2025-07-23 22:55:39 +03:00
updates.md Add note about nextcloud update checking. 2025-04-19 19:44:08 +03: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.