devos/configurations/default.nix
2019-12-05 02:15:30 -07:00

72 lines
1.3 KiB
Nix

{ nix, nixpkgs, flake, ... }:
let
inherit (builtins)
isAttrs
readDir
;
inherit (nixpkgs.lib)
filterAttrs
hasSuffix
mapAttrs'
nameValuePair
removeSuffix
;
configs = let
configs' = let
config = this:
nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
modules = let
coreConfig = ../profiles/core.nix;
globalConfig = {
system.configurationRevision = flake.rev;
networking.hostName = "${this}";
nix.package = nix.defaultPackage."${system}";
};
thisConfig = ./. + "/${this}.nix";
in
[
coreConfig
globalConfig
thisConfig
];
};
dot = readDir ./.;
in
mapAttrs'
(
name: value:
if
name != "default.nix"
&& hasSuffix ".nix" name
&& value == "regular"
then let
name' = removeSuffix ".nix" name;
in
nameValuePair (name') (config name')
else
nameValuePair ("") (null)
)
dot;
removeInvalid =
filterAttrs (_: value: isAttrs value);
in
removeInvalid configs';
in
configs