move typeChecked into pkgs.liminix.lib
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
{
|
||||
callPackage
|
||||
, lib
|
||||
}:
|
||||
{
|
||||
pseudofile = callPackage ./pseudofile {};
|
||||
@@ -10,6 +11,23 @@
|
||||
squashfs = callPackage ./liminix-tools/builders/squashfs.nix {};
|
||||
kernel = callPackage ./kernel {};
|
||||
};
|
||||
lib = {
|
||||
types = {
|
||||
service =
|
||||
let inherit (lib) types isDerivation hasAttr;
|
||||
in types.package // {
|
||||
name = "service";
|
||||
description = "s6-rc service";
|
||||
check = x: isDerivation x && hasAttr "serviceType" x;
|
||||
};
|
||||
};
|
||||
typeChecked = caller: type: value:
|
||||
let
|
||||
inherit (lib) types mergeDefinitions;
|
||||
defs = [{ file = caller; inherit value; }];
|
||||
type' = types.submodule { options = type; };
|
||||
in (mergeDefinitions [] type' defs).mergedValue;
|
||||
};
|
||||
};
|
||||
writeFennelScript = callPackage ./write-fennel-script {};
|
||||
writeAshScript = callPackage ./write-ash-script {};
|
||||
|
@@ -8,26 +8,23 @@
|
||||
} :
|
||||
let
|
||||
inherit (liminix.services) longrun;
|
||||
inherit (liminix.lib) typeChecked;
|
||||
inherit (lib)
|
||||
mergeDefinitions
|
||||
mkEnableOption mkOption isType types isDerivation hasAttr;
|
||||
t = {
|
||||
interface = mkOption {
|
||||
type = types.package; # actually a service
|
||||
type = liminix.lib.types.service;
|
||||
description = "ethernet interface to run PPPoE over";
|
||||
};
|
||||
ppp-options = mkOption {
|
||||
type = types.listOf types.str;
|
||||
};
|
||||
};
|
||||
t' = types.submodule { options = t; };
|
||||
typeChecked = type: value:
|
||||
let defs = [{ file = "pppoe.nix"; inherit value; }];
|
||||
in (lib.mergeDefinitions [ ] type defs).mergedValue;
|
||||
in
|
||||
params:
|
||||
let
|
||||
inherit (typeChecked t' params) ppp-options interface;
|
||||
inherit (typeChecked "pppoe.nix" t params) ppp-options interface;
|
||||
name = "${interface.device}.pppoe";
|
||||
ip-up = writeAshScript "ip-up" {} ''
|
||||
. ${serviceFns}
|
||||
|
Reference in New Issue
Block a user