Merge pull request #236 from nix-community/refactor

This commit is contained in:
Lassulus 2023-05-21 14:41:34 +02:00 committed by GitHub
commit 627bbe1870
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
23 changed files with 190 additions and 171 deletions

68
cli.nix
View file

@ -14,31 +14,51 @@ let
inherit lib; inherit lib;
}; };
diskFormat = diskoAttr =
if flake != null then if noDeps then
(lib.attrByPath [ "diskoConfigurations" flakeAttr ] (builtins.abort "${flakeAttr} does not exist") (builtins.getFlake flake)) args {
create = "createScriptNoDeps";
mount = "mountScriptNoDeps";
zap_create_mount = "diskoNoDeps";
disko = "diskoNoDeps";
}.${mode}
else else
import diskoFile ({ inherit lib; } // args); {
create = "createScript";
mount = "mountScript";
zap_create_mount = "diskoScript";
disko = "diskoScript";
}.${mode};
hasDiskoConfigFlake =
diskoFile != null || lib.hasAttrByPath [ "diskoConfigurations" flakeAttr ] (builtins.getFlake flake);
hasDiskoModuleFlake =
lib.hasAttrByPath [ "nixosConfigurations" flakeAttr "config" "disko" "devices" ] (builtins.getFlake flake);
diskFormat =
let
diskoConfig =
if diskoFile != null then
import diskoFile
else
(builtins.getFlake flake).diskoConfigurations.${flakeAttr};
in
if builtins.isFunction diskoConfig then
diskoConfig ({ inherit lib; } // args)
else
diskoConfig;
diskoEval = diskoEval =
if noDeps then disko.${diskoAttr} diskFormat pkgs;
if (mode == "create") then
disko.createScriptNoDeps diskFormat pkgs diskoScript =
else if (mode == "mount") then if hasDiskoConfigFlake then
disko.mountScriptNoDeps diskFormat pkgs
else if (mode == "zap_create_mount") then
disko.zapCreateMountScriptNoDeps diskFormat pkgs
else
builtins.abort "invalid mode"
else
if (mode == "create") then
disko.createScript diskFormat pkgs
else if (mode == "mount") then
disko.mountScript diskFormat pkgs
else if (mode == "zap_create_mount") then
disko.zapCreateMountScript diskFormat pkgs
else
builtins.abort "invalid mode"
;
in
diskoEval diskoEval
else if (lib.traceValSeq hasDiskoModuleFlake) then
(builtins.getFlake flake).nixosConfigurations.${flakeAttr}.config.system.build.${diskoAttr}
else
(builtins.abort "neither diskoConfigurations.${flakeAttr} nor nixosConfigurations.${flakeAttr} found");
in
diskoScript

View file

@ -3,45 +3,45 @@
, checked ? false , checked ? false
}: }:
let let
types = import ./types { inherit lib rootMountPoint; }; diskoLib = import ./lib { inherit lib rootMountPoint; };
eval = cfg: lib.evalModules { eval = cfg: lib.evalModules {
modules = lib.singleton { modules = lib.singleton {
# _file = toString input; # _file = toString input;
imports = lib.singleton { disko.devices = cfg.disko.devices; }; imports = lib.singleton { disko.devices = cfg.disko.devices; };
options = { options = {
disko.devices = lib.mkOption { disko.devices = lib.mkOption {
type = types.devices; type = diskoLib.devices;
}; };
}; };
}; };
}; };
in in
{ {
types = types; lib = diskoLib;
create = cfg: types.diskoLib.create (eval cfg).config.disko.devices; create = cfg: diskoLib.create (eval cfg).config.disko.devices;
createScript = cfg: pkgs: (types.diskoLib.writeCheckedBash { inherit pkgs checked; }) "disko-create" '' createScript = cfg: pkgs: (diskoLib.writeCheckedBash { inherit pkgs checked; }) "disko-create" ''
export PATH=${lib.makeBinPath (types.diskoLib.packages (eval cfg).config.disko.devices pkgs)}:$PATH export PATH=${lib.makeBinPath (diskoLib.packages (eval cfg).config.disko.devices pkgs)}:$PATH
${types.diskoLib.create (eval cfg).config.disko.devices} ${diskoLib.create (eval cfg).config.disko.devices}
''; '';
createScriptNoDeps = cfg: pkgs: (types.diskoLib.writeCheckedBash { inherit pkgs checked; noDeps = true; }) "disko-create" '' createScriptNoDeps = cfg: pkgs: (diskoLib.writeCheckedBash { inherit pkgs checked; noDeps = true; }) "disko-create" ''
${types.diskoLib.create (eval cfg).config.disko.devices} ${diskoLib.create (eval cfg).config.disko.devices}
''; '';
mount = cfg: types.diskoLib.mount (eval cfg).config.disko.devices; mount = cfg: diskoLib.mount (eval cfg).config.disko.devices;
mountScript = cfg: pkgs: (types.diskoLib.writeCheckedBash { inherit pkgs checked; }) "disko-mount" '' mountScript = cfg: pkgs: (diskoLib.writeCheckedBash { inherit pkgs checked; }) "disko-mount" ''
export PATH=${lib.makeBinPath (types.diskoLib.packages (eval cfg).config.disko.devices pkgs)}:$PATH export PATH=${lib.makeBinPath (diskoLib.packages (eval cfg).config.disko.devices pkgs)}:$PATH
${types.diskoLib.mount (eval cfg).config.disko.devices} ${diskoLib.mount (eval cfg).config.disko.devices}
''; '';
mountScriptNoDeps = cfg: pkgs: (types.diskoLib.writeCheckedBash { inherit pkgs checked; noDeps = true; }) "disko-mount" '' mountScriptNoDeps = cfg: pkgs: (diskoLib.writeCheckedBash { inherit pkgs checked; noDeps = true; }) "disko-mount" ''
${types.diskoLib.mount (eval cfg).config.disko.devices} ${diskoLib.mount (eval cfg).config.disko.devices}
''; '';
zapCreateMount = cfg: types.diskoLib.zapCreateMount (eval cfg).config.disko.devices; disko = cfg: diskoLib.zapCreateMount (eval cfg).config.disko.devices;
zapCreateMountScript = cfg: pkgs: (types.diskoLib.writeCheckedBash { inherit pkgs checked; }) "disko-zap-create-mount" '' diskoScript = cfg: pkgs: (diskoLib.writeCheckedBash { inherit pkgs checked; }) "disko-zap-create-mount" ''
export PATH=${lib.makeBinPath (types.diskoLib.packages (eval cfg).config.disko.devices pkgs)}:$PATH export PATH=${lib.makeBinPath (diskoLib.packages (eval cfg).config.disko.devices pkgs)}:$PATH
${types.diskoLib.zapCreateMount (eval cfg).config.disko.devices} ${diskoLib.zapCreateMount (eval cfg).config.disko.devices}
''; '';
zapCreateMountScriptNoDeps = cfg: pkgs: (types.diskoLib.writeCheckedBash { inherit pkgs checked; noDeps = true; }) "disko-zap-create-mount" '' diskoNoDeps = cfg: pkgs: (diskoLib.writeCheckedBash { inherit pkgs checked; noDeps = true; }) "disko-zap-create-mount" ''
${types.diskoLib.zapCreateMount (eval cfg).config.disko.devices} ${diskoLib.zapCreateMount (eval cfg).config.disko.devices}
''; '';
config = cfg: { imports = types.diskoLib.config (eval cfg).config.disko.devices; }; config = cfg: { imports = diskoLib.config (eval cfg).config.disko.devices; };
packages = cfg: types.diskoLib.packages (eval cfg).config.disko.devices; packages = cfg: diskoLib.packages (eval cfg).config.disko.devices;
} }

View file

@ -1,7 +1,7 @@
{ lib, nixosOptionsDoc, runCommand, fetchurl, pandoc }: { lib, nixosOptionsDoc, runCommand, fetchurl, pandoc }:
let let
types = import ./types { diskoLib = import ./lib {
inherit lib; inherit lib;
rootMountPoint = "/mnt"; rootMountPoint = "/mnt";
}; };
@ -10,7 +10,7 @@ let
{ {
options.disko = { options.disko = {
devices = lib.mkOption { devices = lib.mkOption {
type = types.devices; type = diskoLib.devices;
default = { }; default = { };
description = "The devices to set up"; description = "The devices to set up";
}; };

View file

@ -2,7 +2,7 @@
with lib; with lib;
with builtins; with builtins;
rec { let
diskoLib = { diskoLib = {
# like lib.types.oneOf but instead of a list takes an attrset # like lib.types.oneOf but instead of a list takes an attrset
@ -17,14 +17,14 @@ rec {
# option for valid contents of partitions (basically like devices, but without tables) # option for valid contents of partitions (basically like devices, but without tables)
partitionType = lib.mkOption { partitionType = lib.mkOption {
type = lib.types.nullOr (diskoLib.subType { inherit (subTypes) btrfs filesystem zfs mdraid luks lvm_pv swap; }); type = lib.types.nullOr (diskoLib.subType { inherit (diskoLib.types) btrfs filesystem zfs mdraid luks lvm_pv swap; });
default = null; default = null;
description = "The type of partition"; description = "The type of partition";
}; };
# option for valid contents of devices # option for valid contents of devices
deviceType = lib.mkOption { deviceType = lib.mkOption {
type = lib.types.nullOr (diskoLib.subType { inherit (subTypes) table btrfs filesystem zfs mdraid luks lvm_pv swap; }); type = lib.types.nullOr (diskoLib.subType { inherit (diskoLib.types) table btrfs filesystem zfs mdraid luks lvm_pv swap; });
default = null; default = null;
description = "The type of device"; description = "The type of device";
}; };
@ -160,7 +160,7 @@ rec {
postMountHook = diskoLib.mkHook "shell commands to run after mount"; postMountHook = diskoLib.mkHook "shell commands to run after mount";
}; };
config._module.args = { config._module.args = {
inherit diskoLib optionTypes subTypes rootMountPoint; inherit diskoLib rootMountPoint;
}; };
} }
]; ];
@ -274,7 +274,6 @@ rec {
packages :: lib.types.devices -> pkgs -> [ derivation ] packages :: lib.types.devices -> pkgs -> [ derivation ]
*/ */
packages = devices: pkgs: unique (flatten (map (dev: dev._pkgs pkgs) (flatten (map attrValues (attrValues devices))))); packages = devices: pkgs: unique (flatten (map (dev: dev._pkgs pkgs) (flatten (map attrValues (attrValues devices)))));
};
optionTypes = rec { optionTypes = rec {
filename = lib.mkOptionType { filename = lib.mkOptionType {
@ -311,50 +310,43 @@ rec {
devices = lib.types.submodule { devices = lib.types.submodule {
options = { options = {
disk = lib.mkOption { disk = lib.mkOption {
type = lib.types.attrsOf subTypes.disk; type = lib.types.attrsOf diskoLib.types.disk;
default = { }; default = { };
description = "Block device"; description = "Block device";
}; };
mdadm = lib.mkOption { mdadm = lib.mkOption {
type = lib.types.attrsOf subTypes.mdadm; type = lib.types.attrsOf diskoLib.types.mdadm;
default = { }; default = { };
description = "mdadm device"; description = "mdadm device";
}; };
zpool = lib.mkOption { zpool = lib.mkOption {
type = lib.types.attrsOf subTypes.zpool; type = lib.types.attrsOf diskoLib.types.zpool;
default = { }; default = { };
description = "ZFS pool device"; description = "ZFS pool device";
}; };
lvm_vg = lib.mkOption { lvm_vg = lib.mkOption {
type = lib.types.attrsOf subTypes.lvm_vg; type = lib.types.attrsOf diskoLib.types.lvm_vg;
default = { }; default = { };
description = "LVM VG device"; description = "LVM VG device";
}; };
nodev = lib.mkOption { nodev = lib.mkOption {
type = lib.types.attrsOf subTypes.nodev; type = lib.types.attrsOf diskoLib.types.nodev;
default = { }; default = { };
description = "A non-block device"; description = "A non-block device";
}; };
}; };
}; };
subTypes = lib.mapAttrs (_: diskoLib.mkSubType) { # import all tge types from the types directory
nodev = ./nodev.nix; types = lib.listToAttrs (
btrfs = ./btrfs.nix; map
btrfs_subvol = ./btrfs_subvol.nix; (file: lib.nameValuePair
filesystem = ./filesystem.nix; (lib.removeSuffix ".nix" file)
table = ./table.nix; (diskoLib.mkSubType ./types/${file})
swap = ./swap.nix; )
lvm_pv = ./lvm_pv.nix; (lib.attrNames (builtins.readDir ./types))
lvm_vg = ./lvm_vg.nix; );
zfs = ./zfs.nix;
zpool = ./zpool.nix;
zfs_dataset = ./zfs_dataset.nix;
zfs_fs = ./zfs_fs.nix;
zfs_volume = ./zfs_volume.nix;
mdadm = ./mdadm.nix;
mdraid = ./mdraid.nix;
luks = ./luks.nix;
disk = ./disk.nix;
}; };
} in
diskoLib

View file

@ -1,4 +1,4 @@
({ config, options, diskoLib, lib, subTypes, optionTypes, rootMountPoint, ... }: { config, options, diskoLib, lib, rootMountPoint, ... }:
{ {
options = { options = {
type = lib.mkOption { type = lib.mkOption {
@ -17,12 +17,12 @@
description = "A list of options to pass to mount."; description = "A list of options to pass to mount.";
}; };
subvolumes = lib.mkOption { subvolumes = lib.mkOption {
type = lib.types.attrsOf subTypes.btrfs_subvol; type = lib.types.attrsOf diskoLib.types.btrfs_subvol;
default = { }; default = { };
description = "Subvolumes to define for BTRFS."; description = "Subvolumes to define for BTRFS.";
}; };
mountpoint = lib.mkOption { mountpoint = lib.mkOption {
type = lib.types.nullOr optionTypes.absolute-pathname; type = lib.types.nullOr diskoLib.optionTypes.absolute-pathname;
default = null; default = null;
description = "A path to mount the BTRFS filesystem to."; description = "A path to mount the BTRFS filesystem to.";
}; };
@ -83,4 +83,4 @@
description = "Packages"; description = "Packages";
}; };
}; };
}) }

View file

@ -1,4 +1,4 @@
{ config, options, diskoLib, lib, optionTypes, rootMountPoint, ... }: { config, options, diskoLib, lib, rootMountPoint, ... }:
{ {
options = { options = {
name = lib.mkOption { name = lib.mkOption {
@ -23,7 +23,7 @@
description = "Options to pass to mount"; description = "Options to pass to mount";
}; };
mountpoint = lib.mkOption { mountpoint = lib.mkOption {
type = lib.types.nullOr optionTypes.absolute-pathname; type = lib.types.nullOr diskoLib.optionTypes.absolute-pathname;
default = null; default = null;
description = "Location to mount the subvolume to."; description = "Location to mount the subvolume to.";
}; };

View file

@ -1,4 +1,4 @@
{ config, options, lib, diskoLib, optionTypes, ... }: { config, options, lib, diskoLib, ... }:
{ {
options = { options = {
name = lib.mkOption { name = lib.mkOption {
@ -13,7 +13,7 @@
description = "Type"; description = "Type";
}; };
device = lib.mkOption { device = lib.mkOption {
type = optionTypes.absolute-pathname; # TODO check if subpath of /dev ? - No! eg: /.swapfile type = diskoLib.optionTypes.absolute-pathname; # TODO check if subpath of /dev ? - No! eg: /.swapfile
description = "Device path"; description = "Device path";
}; };
content = diskoLib.deviceType; content = diskoLib.deviceType;

View file

@ -1,4 +1,4 @@
{ config, options, lib, diskoLib, optionTypes, rootMountPoint, ... }: { config, options, lib, diskoLib, rootMountPoint, ... }:
{ {
options = { options = {
type = lib.mkOption { type = lib.mkOption {
@ -17,7 +17,7 @@
description = "Options to pass to mount"; description = "Options to pass to mount";
}; };
mountpoint = lib.mkOption { mountpoint = lib.mkOption {
type = lib.types.nullOr optionTypes.absolute-pathname; type = lib.types.nullOr diskoLib.optionTypes.absolute-pathname;
default = null; default = null;
description = "Path to mount the filesystem to"; description = "Path to mount the filesystem to";
}; };

View file

@ -1,4 +1,4 @@
{ config, options, lib, diskoLib, optionTypes, ... }: { config, options, lib, diskoLib, ... }:
{ {
options = { options = {
type = lib.mkOption { type = lib.mkOption {
@ -11,7 +11,7 @@
description = "Name of the LUKS"; description = "Name of the LUKS";
}; };
keyFile = lib.mkOption { keyFile = lib.mkOption {
type = lib.types.nullOr optionTypes.absolute-pathname; type = lib.types.nullOr diskoLib.optionTypes.absolute-pathname;
default = null; default = null;
description = "Path to the key for encryption"; description = "Path to the key for encryption";
example = "/tmp/disk.key"; example = "/tmp/disk.key";

View file

@ -1,4 +1,4 @@
{ config, options, lib, diskoLib, subTypes, ... }: { config, options, lib, diskoLib, ... }:
{ {
options = { options = {
name = lib.mkOption { name = lib.mkOption {

View file

@ -1,4 +1,4 @@
{ lib, config, options, diskoLib, optionTypes, rootMountPoint, ... }: { lib, config, options, diskoLib, rootMountPoint, ... }:
{ {
options = { options = {
type = lib.mkOption { type = lib.mkOption {
@ -17,7 +17,7 @@
description = "Device to use"; description = "Device to use";
}; };
mountpoint = lib.mkOption { mountpoint = lib.mkOption {
type = lib.types.nullOr optionTypes.absolute-pathname; type = lib.types.nullOr diskoLib.optionTypes.absolute-pathname;
default = config._module.args.name; default = config._module.args.name;
description = "Location to mount the file system at"; description = "Location to mount the file system at";
}; };

View file

@ -1,4 +1,4 @@
{ config, options, lib, diskoLib, subTypes, ... }: { config, options, lib, diskoLib, ... }:
{ {
options = { options = {
type = lib.mkOption { type = lib.mkOption {

View file

@ -1,4 +1,4 @@
{ config, options, lib, diskoLib, optionTypes, rootMountPoint, ... }: { config, options, lib, diskoLib, rootMountPoint, ... }:
{ {
options = { options = {
name = lib.mkOption { name = lib.mkOption {
@ -24,7 +24,7 @@
}; };
mountpoint = lib.mkOption { mountpoint = lib.mkOption {
type = lib.types.nullOr optionTypes.absolute-pathname; type = lib.types.nullOr diskoLib.optionTypes.absolute-pathname;
default = null; default = null;
description = "Path to mount the dataset to"; description = "Path to mount the dataset to";
}; };

View file

@ -1,4 +1,4 @@
{ config, options, lib, diskoLib, optionTypes, rootMountPoint, ... }: { config, options, lib, diskoLib, rootMountPoint, ... }:
{ {
options = { options = {
name = lib.mkOption { name = lib.mkOption {

View file

@ -1,4 +1,4 @@
{ config, options, lib, diskoLib, optionTypes, subTypes, rootMountPoint, ... }: { config, options, lib, diskoLib, rootMountPoint, ... }:
{ {
options = { options = {
name = lib.mkOption { name = lib.mkOption {
@ -28,7 +28,7 @@
description = "Options for the root filesystem"; description = "Options for the root filesystem";
}; };
mountpoint = lib.mkOption { mountpoint = lib.mkOption {
type = lib.types.nullOr optionTypes.absolute-pathname; type = lib.types.nullOr diskoLib.optionTypes.absolute-pathname;
default = null; default = null;
description = "The mountpoint of the pool"; description = "The mountpoint of the pool";
}; };
@ -49,8 +49,7 @@
''; '';
}; };
datasets = lib.mkOption { datasets = lib.mkOption {
type = lib.types.attrsOf (diskoLib.subType { inherit (subTypes) zfs_fs zfs_volume; }); type = lib.types.attrsOf (diskoLib.subType { inherit (diskoLib.types) zfs_fs zfs_volume; });
# type = lib.types.attrsOf subTypes.zfs_fs;
description = "List of datasets to define"; description = "List of datasets to define";
}; };
_meta = lib.mkOption { _meta = lib.mkOption {

View file

@ -1,6 +1,6 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
let let
types = import ./types { diskoLib = import ./lib {
inherit lib; inherit lib;
rootMountPoint = config.disko.rootMountPoint; rootMountPoint = config.disko.rootMountPoint;
}; };
@ -10,7 +10,7 @@ in
{ {
options.disko = { options.disko = {
devices = lib.mkOption { devices = lib.mkOption {
type = types.devices; type = diskoLib.devices;
default = { }; default = { };
description = "The devices to set up"; description = "The devices to set up";
}; };
@ -37,29 +37,37 @@ in
}; };
}; };
config = lib.mkIf (cfg.devices.disk != { }) { config = lib.mkIf (cfg.devices.disk != { }) {
system.build.formatScript = (types.diskoLib.writeCheckedBash { inherit pkgs checked; }) "disko-create" '' system.build.formatScript = (diskoLib.writeCheckedBash { inherit pkgs checked; }) "disko-create" ''
export PATH=${lib.makeBinPath (types.diskoLib.packages cfg.devices pkgs)}:$PATH export PATH=${lib.makeBinPath (diskoLib.packages cfg.devices pkgs)}:$PATH
${types.diskoLib.create cfg.devices} ${diskoLib.create cfg.devices}
''; '';
system.build.mountScript = (types.diskoLib.writeCheckedBash { inherit pkgs checked; }) "disko-mount" '' system.build.mountScript = (diskoLib.writeCheckedBash { inherit pkgs checked; }) "disko-mount" ''
export PATH=${lib.makeBinPath (types.diskoLib.packages cfg.devices pkgs)}:$PATH export PATH=${lib.makeBinPath (diskoLib.packages cfg.devices pkgs)}:$PATH
${types.diskoLib.mount cfg.devices} ${diskoLib.mount cfg.devices}
''; '';
system.build.disko = (types.diskoLib.writeCheckedBash { inherit pkgs checked; }) "disko" '' system.build.disko = (diskoLib.writeCheckedBash { inherit pkgs checked; }) "disko" ''
export PATH=${lib.makeBinPath (types.diskoLib.packages cfg.devices pkgs)}:$PATH export PATH=${lib.makeBinPath (diskoLib.packages cfg.devices pkgs)}:$PATH
${types.diskoLib.zapCreateMount cfg.devices} ${diskoLib.zapCreateMount cfg.devices}
''; '';
# This is useful to skip copying executables uploading a script to an in-memory installer # These are useful to skip copying executables uploading a script to an in-memory installer
system.build.diskoNoDeps = (types.diskoLib.writeCheckedBash { inherit pkgs checked; noDeps = true; }) "disko" '' system.build.formatScriptNoDeps = (diskoLib.writeCheckedBash { inherit pkgs checked; noDeps = true; }) "disko-create" ''
${types.diskoLib.zapCreateMount cfg.devices} ${diskoLib.create cfg.devices}
'';
system.build.mountScriptNoDeps = (diskoLib.writeCheckedBash { inherit pkgs checked; noDeps = true; }) "disko-mount" ''
${diskoLib.mount cfg.devices}
'';
system.build.diskoNoDeps = (diskoLib.writeCheckedBash { inherit pkgs checked; noDeps = true; }) "disko" ''
${diskoLib.zapCreateMount cfg.devices}
''; '';
# Remember to add config keys here if they are added to types # Remember to add config keys here if they are added to types
fileSystems = lib.mkIf cfg.enableConfig (lib.mkMerge (lib.catAttrs "fileSystems" (types.diskoLib.config cfg.devices))); fileSystems = lib.mkIf cfg.enableConfig (lib.mkMerge (lib.catAttrs "fileSystems" (diskoLib.config cfg.devices)));
boot = lib.mkIf cfg.enableConfig (lib.mkMerge (lib.catAttrs "boot" (types.diskoLib.config cfg.devices))); boot = lib.mkIf cfg.enableConfig (lib.mkMerge (lib.catAttrs "boot" (diskoLib.config cfg.devices)));
swapDevices = lib.mkIf cfg.enableConfig (lib.mkMerge (lib.catAttrs "swapDevices" (types.diskoLib.config cfg.devices))); swapDevices = lib.mkIf cfg.enableConfig (lib.mkMerge (lib.catAttrs "swapDevices" (diskoLib.config cfg.devices)));
}; };
} }

View file

@ -8,7 +8,7 @@ stdenvNoCC.mkDerivation rec {
]; ];
installPhase = '' installPhase = ''
mkdir -p $out/bin $out/share/disko mkdir -p $out/bin $out/share/disko
cp -r cli.nix default.nix disk-deactivate types $out/share/disko cp -r cli.nix default.nix disk-deactivate lib $out/share/disko
sed \ sed \
-e "s|libexec_dir=\".*\"|libexec_dir=\"$out/share/disko\"|" \ -e "s|libexec_dir=\".*\"|libexec_dir=\"$out/share/disko\"|" \
-e "s|#!/usr/bin/env.*|#!/usr/bin/env bash|" \ -e "s|#!/usr/bin/env.*|#!/usr/bin/env bash|" \

View file

@ -28,7 +28,7 @@
tsp-generator = pkgs.callPackage ../. { checked = true; }; tsp-generator = pkgs.callPackage ../. { checked = true; };
tsp-create = (tsp-generator.createScript (import disko-config { disks = builtins.tail disks; inherit lib; })) pkgs; tsp-create = (tsp-generator.createScript (import disko-config { disks = builtins.tail disks; inherit lib; })) pkgs;
tsp-mount = (tsp-generator.mountScript (import disko-config { disks = builtins.tail disks; inherit lib; })) pkgs; tsp-mount = (tsp-generator.mountScript (import disko-config { disks = builtins.tail disks; inherit lib; })) pkgs;
tsp-disko = (tsp-generator.zapCreateMountScript (import disko-config { disks = builtins.tail disks; inherit lib; })) pkgs; tsp-disko = (tsp-generator.diskoScript (import disko-config { disks = builtins.tail disks; inherit lib; })) pkgs;
tsp-config = tsp-generator.config (import disko-config { inherit disks; inherit lib; }); tsp-config = tsp-generator.config (import disko-config { inherit disks; inherit lib; });
num-disks = builtins.length (lib.attrNames (import disko-config { inherit lib; }).disko.devices.disk); num-disks = builtins.length (lib.attrNames (import disko-config { inherit lib; }).disko.devices.disk);
installed-system = { modulesPath, ... }: { installed-system = { modulesPath, ... }: {