blob: 7a0d5be365da400091ba5b6b5001ea99644ace02 (
plain) (
tree)
|
|
#!/run/current-system/sw/bin/bash
# SPDX-FileCopyrightText: 2022 Alyssa Ross <hi@alyssa.is>
# SPDX-License-Identifier: EUPL-1.2+
set -uexo pipefail
export PATH=/run/wrappers/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin
mkfs.ext4 /dev/vda
mount /dev/vda /mnt
mkdir /mnt/tmp
cp -R /nix /mnt
mount --bind /mnt/nix /nix
for o in $(</proc/cmdline); do
case $o in
configuration=*)
configuration="${o#configuration=}"
;;
userdata=*)
userdata="${o#userdata=}"
;;
esac
done
# --ignore-garbage because provider might e.g. insert carriage returns.
curl -fLsS --retry-all-errors --retry 5 "$userdata" | base64 -d --ignore-garbage > user-data.tar.zst
tar -Pxvf user-data.tar.zst
rm user-data.tar.zst
curl -fLsSo /mnt/tmp/spectrum-main.tar.gz https://spectrum-os.org/git/spectrum/snapshot/spectrum-main.tar.gz
tar -C /mnt/tmp -xf /mnt/tmp/spectrum-main.tar.gz
curl -fLsSo /etc/nixos/configuration.nix "$configuration"
systemctl start dbus.socket
nixos-rebuild switch -I nixos-config=/etc/nixos/configuration.nix \
--show-trace \
-I nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixos
systemctl start --no-block multi-user.target systemd-journal-gatewayd.socket
exec systemd-run --wait -u nix-build \
-p BindPaths=/mnt/tmp:/tmp \
-p Restart=on-failure \
-p StartLimitBurst=5 \
-p StartLimitIntervalSec=1d \
nix-build --keep-going /tmp/spectrum-main/release.nix \
-I nixpkgs=https://spectrum-os.org/git/nixpkgs/snapshot/nixpkgs-rootfs.tar.gz
|