109 lines
3.8 KiB
Nix
109 lines
3.8 KiB
Nix
{ config, lib, pkgs, inputs, ... }: {
|
|
|
|
imports = [
|
|
./services
|
|
./packages
|
|
./programs
|
|
./users
|
|
];
|
|
|
|
options.sysconfig = with lib; {
|
|
host = mkOption {
|
|
type = with types; nullOr str;
|
|
default = null;
|
|
};
|
|
graphical = mkOption {
|
|
type = with types; bool;
|
|
default = config.hardware.graphics.enable;
|
|
};
|
|
remoteBuildHost = mkOption {
|
|
type = with types; bool;
|
|
default = false;
|
|
};
|
|
remoteBuildClient = mkOption {
|
|
type = with types; bool;
|
|
default = false;
|
|
};
|
|
};
|
|
|
|
config = {
|
|
|
|
sops.secrets = (if config.sysconfig.remoteBuildHost then (
|
|
builtins.listToAttrs
|
|
(builtins.map
|
|
(y: {
|
|
name = "remoteBuildClientKeys/${y}";
|
|
value = {
|
|
format = "yaml";
|
|
sopsFile = ./secrets.yaml;
|
|
};
|
|
})
|
|
(builtins.partition
|
|
(z: let
|
|
cfg = if
|
|
((builtins.readDir ./configuration).${z} == "directory" && z != config.sysconfig.host)
|
|
then (import ./configuration/${z} {
|
|
inherit config lib pkgs inputs;
|
|
}).config
|
|
else null;
|
|
test = if cfg == null then false
|
|
else if !(cfg ? sysconfig) then false
|
|
else if !(cfg.sysconfig ? remoteBuildClient) then false
|
|
else cfg.sysconfig.remoteBuildClient;
|
|
in test)
|
|
(builtins.attrNames (builtins.readDir ./configuration))
|
|
).right
|
|
)
|
|
) else {}) // {
|
|
"remoteBuildKey" = lib.mkIf config.sysconfig.remoteBuildClient {};
|
|
};
|
|
|
|
networking.hostName = lib.mkDefault config.sysconfig.host;
|
|
|
|
programs.bash.completion.enable = true;
|
|
|
|
nix = {
|
|
nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
|
|
channel.enable = false;
|
|
settings = {
|
|
experimental-features = [ "nix-command" "flakes" ];
|
|
builders-use-substitutes = lib.mkIf config.sysconfig.remoteBuildClient true;
|
|
};
|
|
|
|
distributedBuilds = config.sysconfig.remoteBuildClient;
|
|
buildMachines = lib.mkIf config.sysconfig.remoteBuildClient [
|
|
{
|
|
hostName = "blunkall.us";
|
|
sshUser = "remote-builder";
|
|
sshKey = config.sops.secrets."remoteBuildKey".path;
|
|
supportedFeatures = [
|
|
"nixos-test"
|
|
"benchmark"
|
|
"big-parallel"
|
|
"kvm"
|
|
];
|
|
systems = [ "x86_64-linux" "aarch64-linux" ];
|
|
}
|
|
];
|
|
};
|
|
|
|
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";
|
|
};
|
|
};
|
|
};
|
|
}
|