Repository containing our nix infrastructure configuration. It simply provides nixosConfigurations for each host and can be easily deployed using tools like infra-rebuild, bij or even nixos-rebuild.
  • Nix 97.7%
  • Python 2.3%
Find a file
June 3f6e5a30c5
flake.lock: Update
Flake lock file updates:

• Updated input 'authorizedKeysRepo':
    'git+https://git.hamburg.ccc.de/CCCHH/infrastructure-authorized-keys?ref=trunk&rev=7d9c3a683a50d109ed8fd3f75d090d5403967f7f' (2025-10-21)
  → 'git+https://git.hamburg.ccc.de/CCCHH/infrastructure-authorized-keys?ref=trunk&rev=8b7662703635ff7e80b2ee72ce052201fa86010a' (2026-03-06)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/72ac591e737060deab2b86d6952babd1f896d7c5' (2026-01-17)
  → 'github:nixos/nixpkgs/71caefce12ba78d84fe618cf61644dce01cf3a96' (2026-03-06)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/3327b113f2ef698d380df83fbccefad7e83d7769' (2026-01-17)
  → 'github:nixos/nixpkgs/608d0cadfed240589a7eea422407a547ad626a14' (2026-03-08)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/5e8fae80726b66e9fec023d21cd3b3e638597aa9' (2026-01-18)
  → 'github:Mic92/sops-nix/c8e69670b316d6788e435a3aa0bda74eb1b82cc0' (2026-03-08)
2026-03-09 21:31:18 +01:00
config configure staging.diday.org 2026-02-27 22:54:35 +01:00
modules/services/audio audio: fix librespot playback and use avahi for mDNS 2025-08-11 04:18:41 +02:00
patches audio: fix librespot playback and use avahi for mDNS 2025-08-11 04:18:41 +02:00
.editorconfig Add .editorconfig for ensuring some consistency 2024-07-30 01:35:13 +02:00
.gitignore Initial commit. Add configuration for NixOS Proxmox image 2023-09-11 23:20:34 +02:00
.sops.yaml sops update keys 2026-02-17 23:22:16 +01:00
deployment_configuration.json mjolnir: remove mjolnir as it got moved to ansible-infra 2026-02-11 03:15:51 +01:00
flake.lock flake.lock: Update 2026-03-09 21:31:18 +01:00
flake.nix remove public-reverse-proxy (it is now on ansible-infra) 2026-02-18 12:12:18 +01:00
LICENSE license this repo under the MIT license 2024-11-14 22:56:50 +01:00
README.md audio: fix librespot playback and use avahi for mDNS 2025-08-11 04:18:41 +02:00

nix-infra

nix infrastructure configuration for CCCHH.

For deployment we're using infra-rebuild.
To easily get a shell with infra-rebuild going, use the following command:

nix shell git+https://git.hamburg.ccc.de/CCCHH/infra-rebuild#infra-rebuild

After that you can simply run the following to deploy e.g. the git and matrix hosts:

infra-rebuild switch git matrix

By default infra-rebuild tries to use the FQDN from the nixosConfiguration of the host for deployment. However to override individual parts of the deployment target, a deployment_configuration.json can be used. This is exactly what we're doing to set the default deployment user to colmena-deploy and have custom target hostnames for Chaosknoten hosts, since they don't have an FQDN defined in their nixosConfiguration.

Setting up secrets with sops-nix for a host

  1. Convert the hosts SSH host public key to an age public key. This can be done by connecting to the host and running:
    cat /etc/ssh/ssh_host_ed25519_key.pub | ssh-to-age
    
  2. Add the resulting age public key to the .sops.yaml as a YAML anchor in keys. It should be named something like: host_age_hostname
  3. Add a new creation rule for the hosts config directory. It should probably have all admin keys and the hosts age key.
    You can use existing creation rules as a reference.
  4. Create a file containing the relevant secrets in the hosts config directory. This can be accomplished with a command similar to this:
    sops config/hosts/hostname/secrets.yaml
    
    Note: Nested keys don't seem to be compatible with sops-nix.
  5. Add the following entry to the modules of the hosts nixosConfiguration:
    sops-nix.nixosModules.sops
    
  6. Create a sops.nix in the hosts config directory containing the following content to include the secrets.yaml:
    { ... }:
    
    {
      sops = {
        defaultSopsFile = ./secrets.yaml;
      };
    }
    
  7. Make sure the sops.nix gets imported. For example in the default.nix.
  8. To use a secret stored under e.g. forgejo_git_smtp_password, you can then do something like the following:
    sops.secrets."forgejo_git_smtp_password" = {
      mode = "0440";
      owner = "forgejo";
      group = "forgejo";
      restartUnits = [ "forgejo.service" ];
    };
    
    This secret would then be available under /run/secrets/forgejo_git_smtp_password on the host.

Build NixOS Proxmox VE Template

Build a new NixOS Proxmox VE Template for the thinkcccore's:

nix build .#proxmox-nixos-template

Build a new NixOS Proxmox VE Template for the chaosknoten:

nix build .#proxmox-chaosknoten-nixos-template

License

This CCCHH nix-infra repository is licensed under the MIT License.
librespot_PR1528_conflicts_resolved.patch is a modified version of librespot PR 1528 and is licensed under the MIT license.