{ pkgs ? import {} , dir , rebuildarg , moreargs ? "" }: let diskId = (import ((builtins.getEnv "PWD")+"/${dir}/hw.nix") {}).hardware.encryptedDisk.diskId; GIT_ROOT=''''$(git rev-parse --show-toplevel)''; in { rebuild = pkgs.writeScript "script" '' #!/usr/bin/env bash set -xe pushd ${GIT_ROOT}/${dir} export NIXOS_CONFIG="$PWD"/configuration.nix export INSTALL_ROOT="/mnt/$ID-root" [[ -e "''${NIXOS_CONFIG}" ]] nixos-rebuild -I nixos-config=''${NIXOS_CONFIG} ${rebuildarg} ${moreargs} 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 ${GIT_ROOT}/${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}" ''; }