forked from emily/nixfiles
41 lines
1.6 KiB
Bash
41 lines
1.6 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
cat /etc/passwd > /root/passwd
|
|
rm -f /etc/passwd
|
|
cp /root/passwd /etc/passwd
|
|
echo "sshd:x:498:65534::/var/empty:/run/current-system/sw/bin/nologin" >> /etc/passwd
|
|
cat /etc/shadow > /root/shadow
|
|
rm -f /etc/shadow
|
|
cp /root/shadow /etc/shadow
|
|
/bin/sed -i "s/root:!/root:*/g" /etc/shadow
|
|
|
|
[[ ! -d "/mnt/data/ssh" ]] && mkdir -p /mnt/data/ssh
|
|
if [[ "$(ls /mnt/data/ssh/*_key)" = "" ]]; then
|
|
ssh-keygen -t "ed25519" -f "/mnt/data/ssh/ssh_host_ed25519_key" -N ""
|
|
fi
|
|
|
|
[[ ! -d "/mnt/data/nix-store" ]] && mkdir -p /mnt/data/nix-store
|
|
[[ ! -d "/mnt/data/workdir" ]] && mkdir -p /mnt/data/workdir
|
|
[[ ! -d "/mnt/data/tmp" ]] && mkdir -p /mnt/data/tmp
|
|
|
|
rm -rf /mnt/data/nix-store/*
|
|
|
|
rm -f /etc/nix/nix.conf
|
|
cp /root/nix.conf /etc/nix/nix.conf
|
|
|
|
/bin/mount -t overlay overlay -o lowerdir=/nix,upperdir=/mnt/data/nix-store,workdir=/mnt/data/workdir /nix
|
|
/bin/mount --bind /mnt/data/tmp /tmp
|
|
|
|
# Register QEMU binaries for user mode emulation
|
|
aarch64_magic='\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00'
|
|
aarch64_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
|
|
|
|
riscv64_magic='\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xf3\x00'
|
|
riscv64_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
|
|
|
|
execPath() { readlink -f "$(which "$1")" }
|
|
|
|
echo ":qemu-aarch64:M::$aarch64_magic:$aarch64_mask:$(execPath qemu-aarch64):POCF" >/proc/sys/fs/binfmt_misc/register
|
|
echo ":qemu-riscv64:M::$riscv64_magic:$riscv64_mask:$(execPath qemu-riscv64):POCF" >/proc/sys/fs/binfmt_misc/register
|
|
|
|
/root/.nix-profile/bin/sshd -D -f /root/sshd_config
|