Refactor: Initial step
- Added library for common functions - Moved machines/ to hosts/ - Automise adding new hosts to the flake
This commit is contained in:
parent
95b9318585
commit
1ea937f884
7 changed files with 54 additions and 5 deletions
13
flake.nix
13
flake.nix
|
@ -22,10 +22,13 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { nixpkgs, impermanence, home-manager, aagl, nur, ... } @ inputs:
|
outputs = { nixpkgs, impermanence, home-manager, aagl, nur, ... } @ inputs:
|
||||||
|
let
|
||||||
|
lib = nixpkgs.lib.extend (final: prev:
|
||||||
|
import ./lib { lib = final; }
|
||||||
|
);
|
||||||
|
in
|
||||||
{
|
{
|
||||||
nixosConfigurations.workstation = nixpkgs.lib.nixosSystem {
|
nixosConfigurations = lib.mkHosts {
|
||||||
system = "x86_64-linux";
|
|
||||||
specialArgs = { inherit inputs; } ;
|
|
||||||
modules = [
|
modules = [
|
||||||
home-manager.nixosModules.home-manager {
|
home-manager.nixosModules.home-manager {
|
||||||
home-manager.sharedModules = [
|
home-manager.sharedModules = [
|
||||||
|
@ -35,9 +38,9 @@
|
||||||
impermanence.nixosModules.impermanence
|
impermanence.nixosModules.impermanence
|
||||||
nur.nixosModules.nur
|
nur.nixosModules.nur
|
||||||
aagl.nixosModules.default
|
aagl.nixosModules.default
|
||||||
|
|
||||||
./machines/workstation/configuration.nix
|
|
||||||
];
|
];
|
||||||
|
nixpkgs = nixpkgs;
|
||||||
|
inputs = inputs;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
10
lib/default.nix
Normal file
10
lib/default.nix
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{ lib }:
|
||||||
|
|
||||||
|
# todo: Write a function to import all of these automatically
|
||||||
|
|
||||||
|
let
|
||||||
|
fs = import ./fs.nix { inherit lib; };
|
||||||
|
hosts = import ./hosts.nix { inherit lib; };
|
||||||
|
in
|
||||||
|
fs // hosts
|
||||||
|
|
10
lib/fs.nix
Normal file
10
lib/fs.nix
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{ lib }:
|
||||||
|
|
||||||
|
{
|
||||||
|
getDirsInDir =
|
||||||
|
path: let
|
||||||
|
dirs = builtins.readDir path;
|
||||||
|
in
|
||||||
|
builtins.filter (name: dirs.${name} == "directory") (builtins.attrNames dirs);
|
||||||
|
}
|
||||||
|
|
26
lib/hosts.nix
Normal file
26
lib/hosts.nix
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
{ lib }:
|
||||||
|
|
||||||
|
{
|
||||||
|
mkHosts = {
|
||||||
|
modules,
|
||||||
|
nixpkgs,
|
||||||
|
inputs,
|
||||||
|
path ? (builtins.toString ../hosts),
|
||||||
|
}: let
|
||||||
|
hosts = lib.getDirsInDir path;
|
||||||
|
common = {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
modules = modules;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
builtins.trace "Hosts found: ${builtins.toString hosts}"
|
||||||
|
builtins.trace "Path being used: ${path}"
|
||||||
|
builtins.listToAttrs (builtins.map (host: {
|
||||||
|
name = host;
|
||||||
|
value = nixpkgs.lib.nixosSystem {
|
||||||
|
system = common.system;
|
||||||
|
modules = common.modules ++ [ ../hosts/${host} ];
|
||||||
|
specialArgs = { inherit inputs; };
|
||||||
|
};
|
||||||
|
}) hosts);
|
||||||
|
}
|
Loading…
Reference in a new issue