refactor: statix, deadnix, alejandra

This commit is contained in:
Kat Inskip 2023-01-17 14:26:07 -05:00
parent 961ec369ba
commit 53eed4454d
Signed by: kat
GPG key ID: 465E64DECEA8CF0F
57 changed files with 1296 additions and 963 deletions

124
systems/default.nix Normal file
View file

@ -0,0 +1,124 @@
{
inputs,
tree,
lib,
...
}: let
# The purpose of this file is to set up the host module which allows assigning of the system, e.g. aarch64-linux and the builder used with less pain.
inherit (lib.lists) fold;
inherit (lib.attrsets) mapAttrs mapAttrsToList recursiveUpdate;
inherit (lib.strings) toLower;
inherit (lib.options) mkOption;
inherit (lib.types) str listOf attrs unspecified;
inherit (lib.modules) evalModules;
recursiveMergeAttrs = fold recursiveUpdate {};
defaultSpecialArgs = {
inherit inputs tree;
};
hostModule = {
config,
machine,
...
}: {
options = {
arch = mkOption {
description = "Processor architecture of the host";
type = str;
default = "x86_64";
};
type = mkOption {
description = "Operating system type of the host";
type = str;
default = "NixOS";
};
folder = mkOption {
type = str;
internal = true;
};
system = mkOption {
type = str;
internal = true;
};
modules = mkOption {
type = listOf unspecified;
};
specialArgs = mkOption {
type = attrs;
internal = true;
};
builder = mkOption {
type = unspecified;
internal = true;
};
};
config = {
system = let
kernel =
{
nixos = "linux";
macos = "darwin";
darwin = "darwin";
linux = "linux";
}
.${toLower config.type};
in "${config.arch}-${kernel}";
folder =
{
nixos = "nixos";
macos = "darwin";
darwin = "darwin";
linux = "linux";
}
.${toLower config.type};
modules = with tree; [
tree.${config.folder}.modules
system
];
builder =
{
nixos = inputs.nixpkgs.lib.nixosSystem;
darwin = inputs.darwin.lib.darwinSystem;
macos = inputs.darwin.lib.darwinSystem;
}
.${toLower config.type};
specialArgs =
{
inherit machine;
systemType = config.folder;
}
// defaultSpecialArgs;
};
};
hostConfigs = mapAttrs (name: path:
evalModules {
modules = [
hostModule
path
];
specialArgs =
defaultSpecialArgs
// {
machine = name;
};
})
tree.systems;
processHost = name: cfg: let
host = cfg.config;
in {
"${host.folder}Configurations".${name} = let
hostConfig = host.builder {
inherit (host) system modules specialArgs;
};
in
if host.folder == "nixos"
then
hostConfig.extendModules {
modules = [inputs.scalpel.nixosModule];
specialArgs = {
prev = hostConfig;
};
}
else hostConfig;
};
in
recursiveMergeAttrs (mapAttrsToList processHost hostConfigs)

View file

@ -1,8 +1,5 @@
_: let
hostConfig = {
tree,
...
}: {
hostConfig = {tree, ...}: {
imports = with tree; [
nixos.gnome
];

View file

@ -1,5 +1,92 @@
_: let
hostConfig = _: {
hostConfig = {tree, ...}: {
imports = with tree; [
darwin.base
darwin.kat
];
security.pam.enableSudoTouchIdAuth = true;
home-manager.users.root.programs.ssh = {
enable = true;
matchBlocks = {
"daiyousei-build" = {
hostname = "daiyousei.kittywit.ch";
port = 62954;
user = "root";
};
"renko-build" = {
hostname = "192.168.64.3";
port = 62954;
user = "root";
};
};
};
nix = {
envVars = {
"SSH_AUTH_SOCK" = "/Users/kat/.gnupg/S.gpg-agent.ssh";
};
buildMachines = [
{
hostName = "renko-build";
sshUser = "root";
system = "x86_64-linux";
maxJobs = 100;
speedFactor = 1;
supportedFeatures = ["benchmark" "big-parallel" "kvm"];
mandatoryFeatures = [];
}
{
hostName = "daiyousei-build";
sshUser = "root";
system = "aarch64-linux";
maxJobs = 100;
speedFactor = 1;
supportedFeatures = ["benchmark" "big-parallel" "kvm"];
mandatoryFeatures = [];
}
];
distributedBuilds = true;
};
homebrew = {
brewPrefix = "/opt/homebrew/bin";
brews = [
"gnupg"
"pinentry-mac"
];
casks = [
"utm"
"discord"
"mullvadvpn"
"bitwarden"
"deluge"
"telegram-desktop"
"spotify"
"element"
"signal"
"brave-browser"
"disk-inventory-x"
"dozer"
"firefox"
"devtoys"
"cyberduck"
"docker"
"pycharm-ce"
"slack"
"boop"
"obsidian"
"contexts"
];
masApps = {
Tailscale = 1475387142;
Dato = 1470584107;
Lungo = 1263070803;
"Battery Indicator" = 1206020918;
};
};
system.stateVersion = 4;
};
in {