-
-
Save yogsototh/f729e41f0beb2ba97b50140f40001df1 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This isn't meant to be ran as a script, but line-by-line | |
# Props to Binary (benary.org) for helping me with this | |
# 0: Create a Scaleway instance and SSH into it | |
ssh root@... | |
# 1: Install Nix | |
apt-get install bzip2 | |
adduser user # set a password, doesn't matter what because it's not staying long | |
adduser user sudo | |
su -l user | |
curl https://nixos.org/nix/install | sh | |
source ~/.nix-profile/etc/profile.d/nix.sh | |
# 2: Build a NixOS tarball (this takes a while) | |
nix-build '<nixpkgs/nixos/release-combined.nix>' -A nixos.containerTarball.x86_64-linux | |
cp result/tarball/nixos-system-x86_64-linux.tar.xz nixos.tar.xz | |
# 3: Set Scaleway server to boot in rescue script and reboot | |
# read: https://www.scaleway.com/docs/perform-rescue-action-on-my-server/ | |
exit | |
reboot | |
# -: Wait a bit and reconnect | |
!ssh | |
# 4: Mount your volume and fetch the tarball | |
mount /dev/vda /mnt | |
mv /mnt/home/user/nixos.tar.xz . | |
# 5: Replace volume contents with NixOS | |
rm -rf /mnt/* # takes a few moments | |
tar xf nixos.tar.xz -C /mnt/ # same for this | |
mkdir /mnt/sbin | |
ln -s /mnt/init /mnt/sbin/init | |
# 6: Set the bootscript back to normal (pick whichever option is named stable) | |
reboot | |
# 7: Use the Scaleway terminal to configure your OS | |
# Replace the current configuration with a nixos-generate-config | |
# Delete anything related to grub2 and add those options: | |
boot.isContainer = true; # LOOK UP WHAT THIS DOES (disable kmod and therefore iptables, a bunch of other things) | |
boot.loader.initScript.enable = true; | |
# You also probably should replace the root shell by a nologin -- ONLY AFTER OTHER USERS AND SUDO IS SET UP | |
users.users.root.shell = pkgs.nologin; | |
# Enjoy |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment