forked from pub-solar/os
c012f2f4ed
- [x] refactor lib into separate files, similar to NixOS/nixpkgs/lib. - [x] refactor ci to automatically generate derivations from flake outputs - [x] remove cluttered indirection statements throughout the codebase - [x] refactor hosts to allow for upcoming integration tests - [x] improve ambiguity in the existing docs - [x] add [BORS](https://bors.tech) support - [x] add initial integration test - [x] write tests documentation - [x] test lib - [x] improve version string generation, and do so automatically for pkgs/flake.nix sources Clean up the codebase as best we can in preparation for #152 and add tests. From now on, all PRs will be merged with BORS.
30 lines
833 B
Nix
30 lines
833 B
Nix
{ lib, ... }:
|
|
rec {
|
|
# mapFilterAttrs ::
|
|
# (name -> value -> bool )
|
|
# (name -> value -> { name = any; value = any; })
|
|
# attrs
|
|
mapFilterAttrs = seive: f: attrs:
|
|
lib.filterAttrs
|
|
seive
|
|
(lib.mapAttrs' f attrs);
|
|
|
|
# Generate an attribute set by mapping a function over a list of values.
|
|
genAttrs' = values: f: lib.listToAttrs (map f values);
|
|
|
|
# Convert a list of file paths to attribute set
|
|
# that has the filenames stripped of nix extension as keys
|
|
# and imported content of the file as value.
|
|
#
|
|
pathsToImportedAttrs = paths:
|
|
let
|
|
paths' = lib.filter (lib.hasSuffix ".nix") paths;
|
|
in
|
|
genAttrs' paths' (path: {
|
|
name = lib.removeSuffix ".nix" (baseNameOf path);
|
|
value = import path;
|
|
});
|
|
|
|
concatAttrs = lib.fold (attr: sum: lib.recursiveUpdate sum attr) { };
|
|
}
|