{ pkgs , ownLib , dir , gitRoot , diskId ? (import ((builtins.getEnv "PWD")+"/${dir}/hw.nix") {}).hardware.opinionatedDisk.diskId , encrypted ? (import ((builtins.getEnv "PWD")+"/${dir}/hw.nix") {}).hardware.opinionatedDisk.encrypted , previousDiskId ? "" , ... }: let mntRootVol="/mnt/${diskId}-root"; in rec { diskMount = pkgs.writeScript "script" '' #!/usr/bin/env bash set -xe echo Mounting ${diskId} ${pkgs.lib.strings.optionalString encrypted '' sudo cryptsetup luksOpen ${ownLib.disk.bootLuksDevice diskId} ${ownLib.disk.luksName diskId} ''} sleep 1 sudo vgchange -ay ${ownLib.disk.volumeGroup diskId} sudo mkdir -p /mnt sudo mkdir ${mntRootVol} sudo mount ${ownLib.disk.rootFsDevice diskId} ${mntRootVol} sudo mount ${ownLib.disk.rootFsDevice diskId} ${mntRootVol}/nixos/home -o subvol=home sudo mount ${ownLib.disk.bootFsDevice diskId} ${mntRootVol}/nixos/boot ''; diskUmount = pkgs.writeScript "script" '' #!/usr/bin/env bash set -x sudo umount -Rl ${mntRootVol} sudo rmdir ${mntRootVol} sudo vgchange -an ${ownLib.disk.volumeGroup diskId} ${pkgs.lib.strings.optionalString encrypted '' sudo cryptsetup close ${ownLib.disk.luksName diskId} ''} sync ''; diskInstall = pkgs.writeScript "script" '' #!/usr/bin/env bash set -xe pushd ${gitRoot}/${dir} export NIXOS_CONFIG="$PWD"/configuration.nix [[ -e "''${NIXOS_CONFIG}" ]] [[ -e "${mntRootVol}/nixos" ]] sudo -E $SHELL <