clan template: reduce autogenerate code to a minimum

This commit is contained in:
Jörg Thalheim
2023-08-29 15:00:03 +02:00
committed by Mic92
parent bf19e51c9f
commit a4e182debf
6 changed files with 41 additions and 59 deletions

View File

@@ -1,46 +0,0 @@
# AUTOMATICALLY GENERATED by clan
# TODO: move this code to a flakeModule in clan-core and import it via flake input
{ self, lib, inputs, ... }:
let
evalConfig = import (self.inputs.nixpkgs + /lib/eval-config.nix);
evalMachine = machineModule: evalConfig {
modules = [ machineModule ];
};
machinesDirs =
if builtins.pathExists ./machines
then builtins.readDir ./machines
else { };
machineSettings = machineName:
if builtins.pathExists ./machines/${machineName}/settings.json
then (builtins.fromJSON (builtins.readFile ./machines/${machineName}/settings.json))
else { };
# load all clan modules by default
machineModule = machineName: {
imports =
(lib.attrValues inputs.clan.clanModules)
++ [ (machineSettings machineName) ];
};
# autoamtically generate machine modules for all directories under ./machines
machineModulesGenerated =
lib.flip lib.mapAttrs' machinesDirs (name: _: {
name = "machine-${name}";
value = machineModule name;
});
# re-read the machine modules from the flake outputs, to allow amchines being
# defined by custom mechanisms
machineModules =
lib.filterAttrs (name: _: lib.hasPrefix "machine-" name) self.nixosModules;
in
{
flake.nixosModules = machineModulesGenerated;
# generate nixosConfigurations for all machines under self.nixosModules.machines-{machine_name}
flake.nixosConfigurations =
lib.mapAttrs (_: mod: evalMachine mod) machineModules;
}

View File

@@ -1,16 +1,11 @@
{
description = "<Put your description here>";
inputs = {
clan-core.url = "git+https://git.clan.lol/clan/clan-core";
flake-parts.url = "github:hercules-ci/flake-parts";
};
inputs.clan-core.url = "git+https://git.clan.lol/clan/clan-core";
outputs = inputs @ { flake-parts, ... }:
flake-parts.lib.mkFlake { inherit inputs; } {
systems = [ "x86_64-linux" ];
imports = [
./clan-flake-module.nix
];
outputs = { clan-core, ... }: {
nixosConfigurations = clan-core.lib.buildClan {
directory = ./.;
};
};
}

View File

@@ -1 +0,0 @@
["x86_64-linux"]