97 lines
3.6 KiB
Nix
97 lines
3.6 KiB
Nix
{ inputs, ... }: {
|
|
|
|
flake.nixosModules.default = { config, lib, pkgs, ... }: {
|
|
|
|
imports = [
|
|
inputs.sops-nix.nixosModules.sops
|
|
];
|
|
|
|
config = {
|
|
|
|
nix = {
|
|
nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
|
|
channel.enable = false;
|
|
settings = {
|
|
experimental-features = [ "nix-command" "flakes" ];
|
|
builders-use-substitutes = (config.sops.secrets ? "remoteBuildKey");
|
|
|
|
substituters = lib.mkIf config.programs.hyprland.enable ["https://hyprland.cachix.org"];
|
|
trusted-substituters = lib.mkIf config.programs.hyprland.enable ["https://hyprland.cachix.org"];
|
|
trusted-public-keys = lib.mkIf config.programs.hyprland.enable ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="];
|
|
};
|
|
|
|
distributedBuilds = lib.mkDefault (config.sops.secrets ? "remoteBuildKey");
|
|
buildMachines = lib.mkIf (config.sops.secrets ? "remoteBuildKey") [
|
|
{
|
|
hostName = "esotericbytes.com";
|
|
sshUser = "remote-builder";
|
|
sshKey = config.sops.secrets."remoteBuildKey".path;
|
|
supportedFeatures = [
|
|
"nixos-test"
|
|
"benchmark"
|
|
"big-parallel"
|
|
"kvm"
|
|
];
|
|
systems = [ "x86_64-linux" "aarch64-linux" ];
|
|
}
|
|
];
|
|
};
|
|
|
|
users.users."remote-builder" = lib.mkIf (builtins.any
|
|
(x: (builtins.match "^remoteBuildClientKeys/.+" x) != null)
|
|
(builtins.attrNames config.sops.secrets)
|
|
) {
|
|
isNormalUser = true;
|
|
createHome = false;
|
|
};
|
|
|
|
sops.templates."remote-builder" = lib.mkIf (builtins.any
|
|
(x: (builtins.match "^remoteBuildClientKeys/.+" x) != null)
|
|
(builtins.attrNames config.sops.secrets)
|
|
) {
|
|
content = builtins.concatStringsSep ''''\n'' (builtins.map
|
|
(y: config.sops.placeholder.${y})
|
|
(builtins.filter
|
|
(x: (builtins.match "^remoteBuildClientKeys/.+" x) != null)
|
|
(builtins.attrNames config.sops.secrets)
|
|
)
|
|
);
|
|
path = "/etc/ssh/authorized_keys.d/remote-builder";
|
|
owner = "remote-builder";
|
|
};
|
|
|
|
sops = {
|
|
age.keyFile = "/var/lib/sops/age/keys.txt";
|
|
defaultSopsFormat = "yaml";
|
|
};
|
|
|
|
programs.fuse.userAllowOther = true;
|
|
|
|
home-manager = {
|
|
backupFileExtension = "backup";
|
|
useUserPackages = true;
|
|
sharedModules = [];
|
|
};
|
|
|
|
time.timeZone = lib.mkDefault "America/Chicago";
|
|
|
|
i18n = lib.mkDefault {
|
|
defaultLocale = "en_US.UTF-8";
|
|
|
|
extraLocaleSettings = {
|
|
LC_ADDRESS = "en_US.UTF-8";
|
|
LC_IDENTIFICATION = "en_US.UTF-8";
|
|
LC_MEASUREMENT = "en_US.UTF-8";
|
|
LC_MONETARY = "en_US.UTF-8";
|
|
LC_NAME = "en_US.UTF-8";
|
|
LC_NUMERIC = "en_US.UTF-8";
|
|
LC_PAPER = "en_US.UTF-8";
|
|
LC_TELEPHONE = "en_US.UTF-8";
|
|
LC_TIME = "en_US.UTF-8";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|
|
|