2018-10-30 13:38:36 +01:00
|
|
|
{ pkgs ? import <nixpkgs> {}
|
|
|
|
, dir
|
2018-11-03 11:45:40 +01:00
|
|
|
, rebuildarg
|
|
|
|
, moreargs ? ""
|
2018-10-30 13:38:36 +01:00
|
|
|
}:
|
|
|
|
|
|
|
|
let
|
|
|
|
diskId = (import ((builtins.getEnv "PWD")+"/${dir}/hw.nix") {}).hardware.encryptedDisk.diskId;
|
2018-11-03 11:45:40 +01:00
|
|
|
GIT_ROOT=''''$(git rev-parse --show-toplevel)'';
|
2018-10-30 13:38:36 +01:00
|
|
|
|
|
|
|
in {
|
|
|
|
rebuild = pkgs.writeScript "script" ''
|
|
|
|
#!/usr/bin/env bash
|
|
|
|
set -xe
|
|
|
|
|
2018-11-03 11:45:40 +01:00
|
|
|
pushd ${GIT_ROOT}/${dir}
|
2018-10-30 13:38:36 +01:00
|
|
|
export NIXOS_CONFIG="$PWD"/configuration.nix
|
|
|
|
export INSTALL_ROOT="/mnt/$ID-root"
|
|
|
|
|
|
|
|
[[ -e "''${NIXOS_CONFIG}" ]]
|
|
|
|
|
2018-11-03 11:45:40 +01:00
|
|
|
nixos-rebuild -I nixos-config=''${NIXOS_CONFIG} ${rebuildarg} ${moreargs}
|
2018-10-31 19:52:39 +01:00
|
|
|
if test -L result; then
|
|
|
|
rm result
|
|
|
|
fi
|
2018-10-30 13:38:36 +01:00
|
|
|
'';
|
|
|
|
|
|
|
|
diskMount = pkgs.writeScript "script" ''
|
|
|
|
#!/usr/bin/env bash
|
|
|
|
set -xe
|
|
|
|
ID=${diskId}
|
|
|
|
echo Mounting $ID
|
|
|
|
set -xe
|
2018-11-04 23:56:36 +01:00
|
|
|
cryptsetup luksOpen /dev/disk/by-id/$ID-part3 $ID-part3
|
2018-10-30 13:38:36 +01:00
|
|
|
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
|
2018-11-04 23:56:36 +01:00
|
|
|
mount /dev/disk/by-id/$ID-part2 /mnt/$ID-root/boot
|
2018-10-30 13:38:36 +01:00
|
|
|
'';
|
|
|
|
|
|
|
|
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}
|
2018-11-03 11:45:40 +01:00
|
|
|
pushd ${GIT_ROOT}/${dir}
|
2018-10-30 13:38:36 +01:00
|
|
|
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}"
|
|
|
|
'';
|
|
|
|
}
|