summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--example/default.nix52
1 files changed, 22 insertions, 30 deletions
diff --git a/example/default.nix b/example/default.nix
index 69ef936..08d0b94 100644
--- a/example/default.nix
+++ b/example/default.nix
@@ -5,50 +5,42 @@ with builtins;
let
+ f = q: x: fun.${x.type} q x;
+
fun.filesystem = q: x: ''
mkfs.${x.format} ${q.device}
'';
- fun.lvm = q: x: ''
- pvcreate ${q.device}
- vgcreate ${x.name} ${q.device}
- ${concatStringsSep "\n" (mapAttrsToList (name: f (q // { inherit name; vgname = x.name; device = null; /* ??? */ })) x.lvs)}
- '';
-
fun.luks = q: x: ''
cryptsetup -q luksFormat ${q.device} ${x.keyfile}
cryptsetup luksOpen ${q.device} ${x.name} --key-file ${x.keyfile}
-
- ${f (q // { device = "/dev/mapper/${x.name}"; }) x.content}
- '';
-
- fun.partition = q: x:
- "(part ${toString (map (f q) (children x))})";
-
- fun.table = q: x: ''
- parted -s -a optimal ${q.device} mklabel ${x.format}
- ${concatStrings (imap (i: part: " \nparted -s -a optimal ${q.device} mkpart ${part.part-type} ${part.fs-type or ""} ${part.start} ${part.end} ${optionalString (part.bootable or false) "\nparted -s -a optimal ${q.device} set ${toString i} boot on "}") x.partitions)}
-
- ${concatStrings (imap (i: x: f (q // { device = q.device + toString i; }) x.content) x.partitions)}
+ ${f { device = "/dev/mapper/${x.name}"; } x.content}
'';
fun.lv = q: x: ''
lvcreate -L ${x.size} -n ${q.name} ${q.vgname}
+ ${f { device = "/dev/${q.vgname}/${q.name}"; } x.content}
+ '';
- ${f (q // { device = "/dev/${q.vgname}/${q.name}"; }) x.content}
+ fun.lvm = q: x: ''
+ pvcreate ${q.device}
+ vgcreate ${x.name} ${q.device}
+ ${concatStrings (mapAttrsToList (name: f { inherit name; vgname = x.name; }) x.lvs)}
'';
- children = x: {
- lvm = attrValues x.lvs;
- luks = [x.content];
- partition = [x.content];
- table = x.partitions;
- lv = [x.content];
- }.${x.type};
+ fun.partition = q: x: ''
+ parted -s ${q.device} mkpart ${x.part-type} ${x.fs-type or ""} ${x.start} ${x.end}
+ ${optionalString (x.bootable or false) ''
+ parted -s ${q.device} set ${toString q.index} boot on
+ ''}
+ ${f { device = q.device + toString q.index; } x.content}
+ '';
- f = q: x: fun.${x.type} q x;
+ fun.table = q: x: ''
+ parted -s -a optimal ${q.device} mklabel ${x.format}
+ ${concatStrings (imap (index: f (q // { inherit index; })) x.partitions)}
+ '';
- q0.device = "/dev/sda";
- x0 = import ./config.nix;
in
- f q0 x0
+
+ f { device = "/dev/sda"; } (import ./config.nix)