mirror of
https://github.com/TECHNOFAB11/disko.git
synced 2026-02-02 17:35:08 +01:00
types: add packages output
This commit is contained in:
parent
89cc8978eb
commit
271b00593f
2 changed files with 112 additions and 11 deletions
|
|
@ -17,4 +17,5 @@ in {
|
||||||
create = cfg: (eval cfg).config.topLevel.create;
|
create = cfg: (eval cfg).config.topLevel.create;
|
||||||
mount = cfg: (eval cfg).config.topLevel.mount;
|
mount = cfg: (eval cfg).config.topLevel.mount;
|
||||||
config = cfg: (eval cfg).config.topLevel.config;
|
config = cfg: (eval cfg).config.topLevel.config;
|
||||||
|
packages = cfg: (eval cfg).config.topLevel.packages;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
122
types.nix
122
types.nix
|
|
@ -223,6 +223,16 @@ rec {
|
||||||
config.devices.zpool
|
config.devices.zpool
|
||||||
])));};
|
])));};
|
||||||
};
|
};
|
||||||
|
packages = mkOption {
|
||||||
|
readOnly = true;
|
||||||
|
# type = types.functionTo (types.listOf types.package);
|
||||||
|
default = pkgs: unique (flatten (map (dev: dev._pkgs pkgs) (flatten (map attrValues [
|
||||||
|
config.devices.disk
|
||||||
|
config.devices.lvm_vg
|
||||||
|
config.devices.mdadm
|
||||||
|
config.devices.zpool
|
||||||
|
]))));
|
||||||
|
};
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -290,6 +300,12 @@ rec {
|
||||||
};
|
};
|
||||||
}];
|
}];
|
||||||
};
|
};
|
||||||
|
_pkgs= mkOption {
|
||||||
|
internal = true;
|
||||||
|
readOnly = true;
|
||||||
|
type = types.functionTo (types.listOf types.package);
|
||||||
|
default = pkgs: [];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -358,6 +374,18 @@ rec {
|
||||||
};
|
};
|
||||||
}];
|
}];
|
||||||
};
|
};
|
||||||
|
_pkgs = mkOption {
|
||||||
|
internal = true;
|
||||||
|
readOnly = true;
|
||||||
|
# type = types.functionTo (types.listOf types.package);
|
||||||
|
default = pkgs:
|
||||||
|
# TODO add many more
|
||||||
|
if (config.format == "xfs") then [ pkgs.xfsprogs ]
|
||||||
|
else if (config.format == "btrfs") then [ pkgs.btrfs-progs ]
|
||||||
|
else if (config.format == "vfat") then [ pkgs.dosfstools ]
|
||||||
|
else if (config.format == "ext2") then [ pkgs.e2fsprogs ]
|
||||||
|
else [];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -411,6 +439,13 @@ rec {
|
||||||
default = dev:
|
default = dev:
|
||||||
map (partition: partition._config dev) config.partitions;
|
map (partition: partition._config dev) config.partitions;
|
||||||
};
|
};
|
||||||
|
_pkgs = mkOption {
|
||||||
|
internal = true;
|
||||||
|
readOnly = true;
|
||||||
|
type = types.functionTo (types.listOf types.package);
|
||||||
|
default = pkgs:
|
||||||
|
[ pkgs.parted ] ++ flatten (map (partition: partition._pkgs pkgs) config.partitions);
|
||||||
|
};
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -497,6 +532,12 @@ rec {
|
||||||
default = dev:
|
default = dev:
|
||||||
optional (!isNull config.content) (config.content._config (diskoLib.deviceNumbering dev config.index));
|
optional (!isNull config.content) (config.content._config (diskoLib.deviceNumbering dev config.index));
|
||||||
};
|
};
|
||||||
|
_pkgs = mkOption {
|
||||||
|
internal = true;
|
||||||
|
readOnly = true;
|
||||||
|
type = types.functionTo (types.listOf types.package);
|
||||||
|
default = pkgs: optionals (!isNull config.content) (config.content._pkgs pkgs);
|
||||||
|
};
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -538,6 +579,12 @@ rec {
|
||||||
readOnly = true;
|
readOnly = true;
|
||||||
default = dev: [];
|
default = dev: [];
|
||||||
};
|
};
|
||||||
|
_pkgs = mkOption {
|
||||||
|
internal = true;
|
||||||
|
readOnly = true;
|
||||||
|
type = types.functionTo (types.listOf types.package);
|
||||||
|
default = pkgs: [ pkgs.lvm2 ];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -591,6 +638,12 @@ rec {
|
||||||
default =
|
default =
|
||||||
map (lv: lv._config config.name) (attrValues config.lvs);
|
map (lv: lv._config config.name) (attrValues config.lvs);
|
||||||
};
|
};
|
||||||
|
_pkgs = mkOption {
|
||||||
|
internal = true;
|
||||||
|
readOnly = true;
|
||||||
|
type = types.functionTo (types.listOf types.package);
|
||||||
|
default = pkgs: flatten (map (lv: lv._pkgs pkgs) (attrValues config.lvs));
|
||||||
|
};
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -656,6 +709,12 @@ rec {
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
_pkgs = mkOption {
|
||||||
|
internal = true;
|
||||||
|
readOnly = true;
|
||||||
|
type = types.functionTo (types.listOf types.package);
|
||||||
|
default = pkgs: lib.optionals (!isNull config.content) (config.content._pkgs pkgs);
|
||||||
|
};
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -696,6 +755,12 @@ rec {
|
||||||
readOnly = true;
|
readOnly = true;
|
||||||
default = dev: [];
|
default = dev: [];
|
||||||
};
|
};
|
||||||
|
_pkgs = mkOption {
|
||||||
|
internal = true;
|
||||||
|
readOnly = true;
|
||||||
|
type = types.functionTo (types.listOf types.package);
|
||||||
|
default = pkgs: [ pkgs.zfs ];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -779,17 +844,22 @@ rec {
|
||||||
_config = mkOption {
|
_config = mkOption {
|
||||||
internal = true;
|
internal = true;
|
||||||
readOnly = true;
|
readOnly = true;
|
||||||
default =
|
default = [
|
||||||
[
|
(map (dataset: dataset._config config.name) (attrValues config.datasets))
|
||||||
(map (dataset: dataset._config config.name) (attrValues config.datasets))
|
(optional (!isNull config.mountpoint) {
|
||||||
(optional (!isNull config.mountpoint) {
|
fileSystems.${config.mountpoint} = {
|
||||||
fileSystems.${config.mountpoint} = {
|
device = config.name;
|
||||||
device = config.name;
|
fsType = "zfs";
|
||||||
fsType = "zfs";
|
options = lib.optional ((config.options.mountpoint or "") != "legacy") "zfsutil";
|
||||||
options = lib.optional ((config.options.mountpoint or "") != "legacy") "zfsutil";
|
};
|
||||||
};
|
})
|
||||||
})
|
];
|
||||||
];
|
};
|
||||||
|
_pkgs = mkOption {
|
||||||
|
internal = true;
|
||||||
|
readOnly = true;
|
||||||
|
type = types.functionTo (types.listOf types.package);
|
||||||
|
default = pkgs: flatten (map (dataset: dataset._pkgs pkgs) (attrValues config.datasets));
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
@ -880,6 +950,12 @@ rec {
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
_pkgs = mkOption {
|
||||||
|
internal = true;
|
||||||
|
readOnly = true;
|
||||||
|
type = types.functionTo (types.listOf types.package);
|
||||||
|
default = pkgs: lib.optionals (!isNull config.content) (config.content._pkgs pkgs);
|
||||||
|
};
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -939,6 +1015,12 @@ rec {
|
||||||
default =
|
default =
|
||||||
optional (!isNull config.content) (config.content._config "/dev/md/${config.name}");
|
optional (!isNull config.content) (config.content._config "/dev/md/${config.name}");
|
||||||
};
|
};
|
||||||
|
_pkgs = mkOption {
|
||||||
|
internal = true;
|
||||||
|
readOnly = true;
|
||||||
|
type = types.functionTo (types.listOf types.package);
|
||||||
|
default = pkgs: (lib.optionals (!isNull config.content) (config.content._pkgs pkgs));
|
||||||
|
};
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -981,6 +1063,12 @@ rec {
|
||||||
readOnly = true;
|
readOnly = true;
|
||||||
default = dev: [];
|
default = dev: [];
|
||||||
};
|
};
|
||||||
|
_pkgs = mkOption {
|
||||||
|
internal = true;
|
||||||
|
readOnly = true;
|
||||||
|
type = types.functionTo (types.listOf types.package);
|
||||||
|
default = pkgs: [ pkgs.mdadm ];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -1045,6 +1133,12 @@ rec {
|
||||||
{ boot.initrd.luks.devices.${config.name}.device = dev; }
|
{ boot.initrd.luks.devices.${config.name}.device = dev; }
|
||||||
] ++ (optional (!isNull config.content) (config.content._config "/dev/mapper/${config.name}"));
|
] ++ (optional (!isNull config.content) (config.content._config "/dev/mapper/${config.name}"));
|
||||||
};
|
};
|
||||||
|
_pkgs = mkOption {
|
||||||
|
internal = true;
|
||||||
|
readOnly = true;
|
||||||
|
type = types.functionTo (types.listOf types.package);
|
||||||
|
default = pkgs: [ pkgs.cryptsetup ] ++ (lib.optionals (!isNull config.content) (config.content._pkgs pkgs));
|
||||||
|
};
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -1087,6 +1181,12 @@ rec {
|
||||||
default =
|
default =
|
||||||
optional (!isNull config.content) (config.content._config config.device);
|
optional (!isNull config.content) (config.content._config config.device);
|
||||||
};
|
};
|
||||||
|
_pkgs = mkOption {
|
||||||
|
internal = true;
|
||||||
|
readOnly = true;
|
||||||
|
type = types.functionTo (types.listOf types.package);
|
||||||
|
default = pkgs: lib.optionals (!isNull config.content) (config.content._pkgs pkgs);
|
||||||
|
};
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue