30 lines
836 B
Nix
30 lines
836 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, also makes the strings absolute
|
|
importAll = dir: map
|
|
(file: ./. + "/${file}")
|
|
(filter
|
|
(file: hasSuffix ".nix" file && file != "default.nix" &&
|
|
! lib.hasPrefix "x/taffybar/" file &&
|
|
! lib.hasSuffix "-hm.nix" file)
|
|
(files dir));
|
|
|
|
in
|
|
{
|
|
|
|
imports = importAll ./.;
|
|
|
|
}
|