summaryrefslogtreecommitdiffstats
path: root/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'default.nix')
-rw-r--r--default.nix50
1 files changed, 48 insertions, 2 deletions
diff --git a/default.nix b/default.nix
index 6d08b8d..ada33e4 100644
--- a/default.nix
+++ b/default.nix
@@ -1,3 +1,49 @@
-{
- inherit (import ./lib) config create mount;
+{ lib ? import <nixpkgs/lib> }:
+let
+ types = import ./types.nix { inherit lib; };
+ eval = cfg: lib.evalModules {
+ modules = lib.singleton {
+ # _file = toString input;
+ imports = lib.singleton { devices = cfg; };
+ options = {
+ devices = lib.mkOption {
+ type = types.devices;
+ };
+ };
+ };
+ };
+in {
+ types = types;
+ create = cfg: types.diskoLib.create (eval cfg).config.devices;
+ createScript = cfg: pkgs: pkgs.writeScript "disko-create" ''
+ #!/usr/bin/env bash
+ export PATH=${lib.makeBinPath (types.diskoLib.packages (eval cfg).config.devices pkgs)}:$PATH
+ ${types.diskoLib.create (eval cfg).config.devices}
+ '';
+ createScriptNoDeps = cfg: pkgs: pkgs.writeScript "disko-create" ''
+ #!/usr/bin/env bash
+ ${types.diskoLib.create (eval cfg).config.devices}
+ '';
+ mount = cfg: types.diskoLib.mount (eval cfg).config.devices;
+ mountScript = cfg: pkgs: pkgs.writeScript "disko-mount" ''
+ #!/usr/bin/env bash
+ export PATH=${lib.makeBinPath (types.diskoLib.packages (eval cfg).config.devices pkgs)}:$PATH
+ ${types.diskoLib.mount (eval cfg).config.devices}
+ '';
+ mountScriptNoDeps = cfg: pkgs: pkgs.writeScript "disko-mount" ''
+ #!/usr/bin/env bash
+ ${types.diskoLib.mount (eval cfg).config.devices}
+ '';
+ zapCreateMount = cfg: types.diskoLib.zapCreateMount (eval cfg).config.devices;
+ zapCreateMountScript = cfg: pkgs: pkgs.writeScript "disko-zap-create-mount" ''
+ #!/usr/bin/env bash
+ export PATH=${lib.makeBinPath (types.diskoLib.packages (eval cfg).config.devices pkgs)}:$PATH
+ ${types.diskoLib.zapCreateMount (eval cfg).config.devices}
+ '';
+ zapCreateMountScriptNoDeps = cfg: pkgs: pkgs.writeScript "disko-zap-create-mount" ''
+ #!/usr/bin/env bash
+ ${types.diskoLib.zapCreateMount (eval cfg).config.devices}
+ '';
+ config = cfg: { imports = types.diskoLib.config (eval cfg).config.devices; };
+ packages = cfg: types.diskoLib.packages (eval cfg).config.devices;
}