run nix format on this repository
This commit is contained in:
parent
1b5b697dfb
commit
d281a23a8a
17 changed files with 354 additions and 165 deletions
101
lib/flake.nix
101
lib/flake.nix
|
|
@ -1,36 +1,81 @@
|
|||
let
|
||||
scan = import ./scan.nix;
|
||||
|
||||
flake' = self: { imports, exports , base }@schema: { ... }@inputs: { ... }@imports: let
|
||||
lib = {
|
||||
inherit scan schema inputs imports;
|
||||
extend = flake schema inputs imports;
|
||||
new = flake {} {} {};
|
||||
# TODO: override
|
||||
};
|
||||
convert = attr: value: value self inputs imports;
|
||||
flake' =
|
||||
self:
|
||||
{
|
||||
imports,
|
||||
exports,
|
||||
base,
|
||||
}@schema:
|
||||
{ ... }@inputs:
|
||||
{ ... }@imports:
|
||||
let
|
||||
lib = {
|
||||
inherit
|
||||
scan
|
||||
schema
|
||||
inputs
|
||||
imports
|
||||
;
|
||||
extend = flake schema inputs imports;
|
||||
new = flake { } { } { };
|
||||
# TODO: override
|
||||
};
|
||||
convert = attr: value: value self inputs imports;
|
||||
|
||||
result = (builtins.mapAttrs convert schema.exports);
|
||||
in {
|
||||
formatter = builtins.mapAttrs (_: pkgs: pkgs.nixfmt-tree) inputs.nixpkgs.legacyPackages;
|
||||
} // result // { lib = lib // (result.lib or {}); };
|
||||
|
||||
flake = { imports?{}, exports?{}, base?[] }@schema'old: { ... }@inputs'old: { ... }@imports'old: { ... }@inputs'new: base: let
|
||||
schema = {
|
||||
imports = (schema'old.imports or {}) // scan { base = base + "/import"; recursive = true; };
|
||||
exports = (schema'old.exports or {}) // scan { base = base + "/export"; };
|
||||
base = [ base ] ++ (schema'old.base or []);
|
||||
result = (builtins.mapAttrs convert schema.exports);
|
||||
in
|
||||
{
|
||||
formatter = builtins.mapAttrs (_: pkgs: pkgs.nixfmt-tree) inputs.nixpkgs.legacyPackages;
|
||||
}
|
||||
// result
|
||||
// {
|
||||
lib = lib // (result.lib or { });
|
||||
};
|
||||
|
||||
merge = attr: let
|
||||
old = imports'old.${attr} or {};
|
||||
new = imports'new.${attr} or {};
|
||||
in builtins.mapAttrs (attr: _: (old.${attr} or []) ++ (new.${attr} or [])) (old//new);
|
||||
flake =
|
||||
{
|
||||
imports ? { },
|
||||
exports ? { },
|
||||
base ? [ ],
|
||||
}@schema'old:
|
||||
{ ... }@inputs'old:
|
||||
{ ... }@imports'old:
|
||||
{ ... }@inputs'new:
|
||||
base:
|
||||
let
|
||||
schema = {
|
||||
imports =
|
||||
(schema'old.imports or { })
|
||||
// scan {
|
||||
base = base + "/import";
|
||||
recursive = true;
|
||||
};
|
||||
exports = (schema'old.exports or { }) // scan { base = base + "/export"; };
|
||||
base = [ base ] ++ (schema'old.base or [ ]);
|
||||
};
|
||||
|
||||
imports'new = builtins.mapAttrs (name: value: scan { base = base + "/${name}"; convert = name: content: [ (value name content) ]; }) schema.imports;
|
||||
result = flake' result schema
|
||||
(inputs'old // (builtins.removeAttrs inputs'new ["self"]))
|
||||
(builtins.mapAttrs (attr: _: merge attr) schema.imports);
|
||||
in result;
|
||||
merge =
|
||||
attr:
|
||||
let
|
||||
old = imports'old.${attr} or { };
|
||||
new = imports'new.${attr} or { };
|
||||
in
|
||||
builtins.mapAttrs (attr: _: (old.${attr} or [ ]) ++ (new.${attr} or [ ])) (old // new);
|
||||
|
||||
in flake {} {} {}
|
||||
imports'new = builtins.mapAttrs (
|
||||
name: value:
|
||||
scan {
|
||||
base = base + "/${name}";
|
||||
convert = name: content: [ (value name content) ];
|
||||
}
|
||||
) schema.imports;
|
||||
result = flake' result schema (inputs'old // (builtins.removeAttrs inputs'new [ "self" ])) (
|
||||
builtins.mapAttrs (attr: _: merge attr) schema.imports
|
||||
);
|
||||
in
|
||||
result;
|
||||
|
||||
in
|
||||
flake { } { } { }
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
self:
|
||||
53
lib/scan.nix
53
lib/scan.nix
|
|
@ -1,23 +1,42 @@
|
|||
{ base, convert ? name: value: value, recursive ? false }:
|
||||
{
|
||||
base,
|
||||
convert ? name: value: value,
|
||||
recursive ? false,
|
||||
}:
|
||||
let
|
||||
scan = sub: let
|
||||
all = builtins.readDir (base + "/${builtins.concatStringsSep "/" sub}");
|
||||
names = filter: builtins.filter filter (builtins.attrNames all);
|
||||
nix = name: all.${name} == "regular" && builtins.stringLength name > 4 && builtins.substring (builtins.stringLength name - 4) 4 name == ".nix";
|
||||
dir = name: all.${name} == "directory";
|
||||
files = map (name: sub ++ [ (builtins.substring 0 (builtins.stringLength name - 4) name) ]) (names nix);
|
||||
dirs = builtins.concatLists (map (name: scan (sub ++ [name])) (names dir));
|
||||
in if recursive then files ++ dirs else files;
|
||||
scan =
|
||||
sub:
|
||||
let
|
||||
all = builtins.readDir (base + "/${builtins.concatStringsSep "/" sub}");
|
||||
names = filter: builtins.filter filter (builtins.attrNames all);
|
||||
nix =
|
||||
name:
|
||||
all.${name} == "regular"
|
||||
&& builtins.stringLength name > 4
|
||||
&& builtins.substring (builtins.stringLength name - 4) 4 name == ".nix";
|
||||
dir = name: all.${name} == "directory";
|
||||
files = map (name: sub ++ [ (builtins.substring 0 (builtins.stringLength name - 4) name) ]) (
|
||||
names nix
|
||||
);
|
||||
dirs = builtins.concatLists (map (name: scan (sub ++ [ name ])) (names dir));
|
||||
in
|
||||
if recursive then files ++ dirs else files;
|
||||
|
||||
root = scan [];
|
||||
root = scan [ ];
|
||||
|
||||
item = relative: let
|
||||
name = builtins.concatStringsSep "/" relative;
|
||||
absolute = base + "/${name}.nix";
|
||||
content = import absolute;
|
||||
value = convert name content;
|
||||
in { inherit name value; };
|
||||
item =
|
||||
relative:
|
||||
let
|
||||
name = builtins.concatStringsSep "/" relative;
|
||||
absolute = base + "/${name}.nix";
|
||||
content = import absolute;
|
||||
value = convert name content;
|
||||
in
|
||||
{
|
||||
inherit name value;
|
||||
};
|
||||
|
||||
items = map item root;
|
||||
|
||||
in if builtins.pathExists base then builtins.listToAttrs (map item root) else {}
|
||||
in
|
||||
if builtins.pathExists base then builtins.listToAttrs (map item root) else { }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue