64 lines
1.5 KiB
Nix
64 lines
1.5 KiB
Nix
{ pkgs ? import <nixpkgs> {}
|
|
, dir
|
|
, rebuildarg ? null
|
|
}:
|
|
|
|
let
|
|
diskId = (import ((builtins.getEnv "PWD")+"/${dir}/hw.nix") {}).hardware.encryptedDisk.diskId;
|
|
|
|
in {
|
|
rebuild = pkgs.writeScript "script" ''
|
|
#!/usr/bin/env bash
|
|
set -xe
|
|
|
|
pushd ${dir}
|
|
export NIXOS_CONFIG="$PWD"/configuration.nix
|
|
export INSTALL_ROOT="/mnt/$ID-root"
|
|
|
|
[[ -e "''${NIXOS_CONFIG}" ]]
|
|
|
|
nixos-rebuild -I nixos-config=''${NIXOS_CONFIG} ${rebuildarg}
|
|
if test -L result; then
|
|
rm result
|
|
fi
|
|
'';
|
|
|
|
diskMount = pkgs.writeScript "script" ''
|
|
#!/usr/bin/env bash
|
|
set -xe
|
|
ID=${diskId}
|
|
echo Mounting $ID
|
|
set -xe
|
|
cryptsetup luksOpen /dev/disk/by-partlabel/$ID-part3 $ID-part3
|
|
vgchange -ay $ID
|
|
mkdir -p /mnt/$ID-root
|
|
mount /dev/$ID/root /mnt/$ID-root -o subvol=nixos
|
|
mount /dev/$ID/root /mnt/$ID-root/home -o subvol=home
|
|
mount /dev/disk/by-partlabel/$ID-part2 /mnt/$ID-root/boot
|
|
'';
|
|
|
|
diskUmount = pkgs.writeScript "script" ''
|
|
#!/usr/bin/env bash
|
|
set -xe
|
|
ID=${diskId}
|
|
umount -R /mnt/$ID-root
|
|
rmdir /mnt/$ID-root
|
|
vgchange -an $ID
|
|
cryptsetup luksClose $ID-part3
|
|
sync
|
|
'';
|
|
|
|
diskInstall = pkgs.writeScript "script" ''
|
|
#!/usr/bin/env bash
|
|
set -xe
|
|
ID=${diskId}
|
|
pushd ${dir}
|
|
export NIXOS_CONFIG="$PWD"/configuration.nix
|
|
export INSTALL_ROOT="/mnt/$ID-root"
|
|
|
|
[[ -e "''${NIXOS_CONFIG}" ]]
|
|
[[ -e "''${INSTALL_ROOT}" ]]
|
|
|
|
nixos-install --max-jobs 5 --cores 4 --no-channel-copy --no-root-passwd --root "''${INSTALL_ROOT}"
|
|
'';
|
|
}
|