{ lib, inputs, ... }: ## NOTE: Hackish solution mostly taken from `../common/resource.nix`. ## Eventually, `forgejo-ci` should move to a datacentre somewhere and this code ## should be integrated with the code for other machines (in particular VMs). let inherit (lib) attrValues elem; inherit (lib.attrsets) concatMapAttrs optionalAttrs; inherit (lib.strings) removeSuffix; secretsPrefix = ../../secrets; secrets = import (secretsPrefix + "/secrets.nix"); keys = import ../../keys; hostPublicKey = keys.systems.forgejo-ci; sources = import ../../npins; in { nixops4Deployments.forgejo-ci = { providers, ... }: { providers.local = inputs.nixops4.modules.nixops4Provider.local; resources.forgejo-ci = { type = providers.local.exec; imports = [ inputs.nixops4-nixos.modules.nixops4Resource.nixos ]; ssh = { host = "192.168.201.65"; opts = "-i ~/.ssh/procolix-id_rsa"; hostPublicKey = hostPublicKey; }; nixpkgs = inputs.nixpkgs; nixos.module = { imports = with sources; [ "${agenix}/modules/age.nix" "${disko}/module.nix" ./configuration.nix ]; age.secrets = concatMapAttrs ( name: secret: optionalAttrs (elem hostPublicKey secret.publicKeys) ({ ${removeSuffix ".age" name}.file = secretsPrefix + "/${name}"; }) ) secrets; users.users.root.openssh.authorizedKeys.keys = attrValues keys.contributors; }; }; }; }