{ 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") then (import ./configuration/${z} { inherit 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"; }; }; }; }