feat: implement Attic binary cache with remote build support and sops-nix integration
Some checks failed
Build / build (Development) (push) Has been skipped
Build / Determining hosts to build (push) Failing after 1s
Build / build (Testing) (push) Has been skipped

This commit is contained in:
Tibo De Peuter 2026-03-17 18:31:43 +01:00
parent 5a031b48ed
commit ffe7572c7d
Signed by: tdpeuter
GPG key ID: 38297DE43F75FFE2
15 changed files with 772 additions and 4 deletions

View file

@ -1,8 +1,13 @@
{
imports = [
./substituters.nix
];
config = {
homelab = {
services.openssh.enable = true;
users.admin.enable = true;
common.substituters.enable = true;
};
nix.settings.experimental-features = [
@ -12,5 +17,10 @@
# Set your time zone.
time.timeZone = "Europe/Brussels";
sops = {
defaultSopsFile = ../../secrets/secrets.yaml;
age.keyFile = "/var/lib/sops-nix/key.txt";
};
};
}

View file

@ -0,0 +1,28 @@
{ config, lib, pkgs, inputs, ... }:
let
cfg = config.homelab.common.substituters;
in {
options.homelab.common.substituters = {
enable = lib.mkEnableOption "Binary cache substituters";
domain = lib.mkOption {
type = lib.types.str;
default = inputs.self.nixosConfigurations.BinaryCache.config.homelab.services.attic.domain;
description = "The domain name of the binary cache.";
};
publicKey = lib.mkOption {
type = lib.types.nullOr lib.types.str;
default = null;
description = "The public key of the Attic cache (e.g., 'homelab:...')";
};
};
config = lib.mkIf cfg.enable {
nix.settings = {
substituters = [
"https://${cfg.domain}"
];
trusted-public-keys = lib.optional (cfg.publicKey != null) cfg.publicKey;
};
};
}