28 lines
716 B
Nix
28 lines
716 B
Nix
{ lib, ... }:
|
|
|
|
with lib;
|
|
let
|
|
regular-files = path: let
|
|
is-regular-file = filename: type: type == "regular" || type == "link";
|
|
in attrNames (filterAttrs is-regular-file (builtins.readDir path));
|
|
|
|
nix-files = path: let
|
|
is-nix-file = filename: (builtins.match "^(.+)\.nix$" filename) != null;
|
|
in
|
|
map
|
|
(file: path + "/${file}")
|
|
(filter is-nix-file (regular-files path));
|
|
|
|
strip-ext = filename: head (builtins.match "^(.+)[.]nix$" filename);
|
|
|
|
basename-to-map = path:
|
|
listToAttrs
|
|
(map
|
|
(file:
|
|
nameValuePair (strip-ext file)
|
|
(import (path + "${file}")))
|
|
(nix-files path));
|
|
in {
|
|
inherit regular-files nix-files strip-ext basename-to-map;
|
|
}
|