Revert "Add heterogeneousAttrsOf option type"

Moving recent types work to a separate branch for now

This reverts commit 3f70dabad3.
This commit is contained in:
Shea Levy 2014-02-13 12:07:43 -05:00
parent 5857e5c4f8
commit 220654e205
2 changed files with 20 additions and 11 deletions

View File

@ -124,17 +124,6 @@ rec {
getSubOptions = prefix: elemType.getSubOptions (prefix ++ ["<name>"]); getSubOptions = prefix: elemType.getSubOptions (prefix ++ ["<name>"]);
}; };
heterogeneousAttrsOf = elemTypeFn: mkOptionType {
name = "attribute set of values of many types, including ${(elemTypeFn "<name>").name}";
check = x: isAttrs x && all (name: (elemTypeFn name).check (getAttr name x)) (attrNames x);
merge = loc: defs:
zipAttrsWith (name: (elemTypeFn name).merge (loc ++ [name]))
# Push down position info.
(map (def: listToAttrs (mapAttrsToList (n: def':
{ name = n; value = { inherit (def) file; value = def'; }; }) def.value)) defs);
getSubOptions = prefix: (elemTypeFn "<name>").getSubOptions (prefix ++ ["<name>"]);
};
# List or attribute set of ... # List or attribute set of ...
loaOf = elemType: loaOf = elemType:
let let
@ -209,6 +198,25 @@ rec {
submodule = submoduleWithExtraArgs {}; submodule = submoduleWithExtraArgs {};
nixosSubmodule = nixos: args: mkOptionType rec {
name = "submodule containing a NixOS config";
check = x: isAttrs x || isFunction x;
merge = loc: defs:
let
coerce = def: if isFunction def then def else { config = def; };
in (import (nixos + "/lib/eval-config.nix") (args // {
modules = (args.modules or []) ++
map (def: { _file = def.file; imports = [(coerce def.value)]; }) defs;
prefix = loc;
})).config;
getSubOptions = prefix: (import (nixos + "/lib/eval-config.nix") (args // {
modules = (args.modules or []);
inherit prefix;
})).options;
};
# Obsolete alternative to configOf. It takes its option # Obsolete alternative to configOf. It takes its option
# declarations from the options attribute of containing option # declarations from the options attribute of containing option
# declaration. # declaration.

View File

@ -15,6 +15,7 @@ with pkgs.lib;
}; };
systemd.containers = mkOption { systemd.containers = mkOption {
# !!! Should probably use nixosSubmodule here
type = types.attrsOf (types.submodule ( type = types.attrsOf (types.submodule (
{ config, options, name, ... }: { config, options, name, ... }:
{ {