nixos-conf/default.nix

31 lines
897 B
Nix

{ lib, ... }:
with lib;
let
# Recursively constructs an attrset of a given folder, recursing on directories, value of attrs is the filetype
getDir =
dir:
mapAttrs (file: type: if type == "directory" then getDir "${dir}/${file}" else type) (
builtins.readDir dir
);
# Collects all files of a directory as a list of strings of paths
files =
dir: collect isString (mapAttrsRecursive (path: type: concatStringsSep "/" path) (getDir dir));
# Filters out directories that don't end with .nix or are this file or the flake, also makes the strings absolute
validFiles =
dir:
map (file: ./. + "/${file}") (
filter (
file:
hasSuffix ".nix" file
&& file != "default.nix"
&& file != "flake.nix"
&& !hasPrefix "hosts" file
&& !hasPrefix "disko" file
) (files dir)
);
in
{
imports = validFiles ./.;
}