Skip to content

Instantly share code, notes, and snippets.

@johnrichardrinehart
Last active October 11, 2021 08:36
Show Gist options
  • Save johnrichardrinehart/862ec48a88ea4be9e9a3f09a4fe66f48 to your computer and use it in GitHub Desktop.
Save johnrichardrinehart/862ec48a88ea4be9e9a3f09a4fe66f48 to your computer and use it in GitHub Desktop.
NixOS swap and MBR install script
#!/usr/bin/env bash
# You can fetch to disk with
# curl -o install.sh <raw_gist_url>
#
# Run with `sudo`
# Environment variables:
# NIXOS_INSTALL_SWAP_SIZE (default: "8GiB")
# NIXOS_INSTALL_ROOT_DRIVE (default: "/dev/sda")
# NIXOS_INSTALL_EDIT_CONFIGURATION_FILE (default: "yes", accepted value: "no")
#
# Example invocation: NIXOS_INSTALL_ROOT_DRIVE="/dev/vda" sudo ./install.sh
# https://stackoverflow.com/a/2013589
NIXOS_INSTALL_SWAP_SIZE="${NIXOS_INSTALL_SWAP_SIZE:=8GiB}"
NIXOS_INSTALL_ROOT_DRIVE="${NIXOS_INSTALL_ROOT_DRIVE:=/dev/sda}"
NIXOS_INSTALL_EDIT_CONFIGURATION_FILE="${NIXOS_INSTALL_EDIT_CONFIGURATION_FILE:=yes}"
parted "${NIXOS_INSTALL_ROOT_DRIVE}" -- mklabel msdos
parted "${NIXOS_INSTALL_ROOT_DRIVE}" -- mkpart primary 1MiB -"${NIXOS_INSTALL_SWAP_SIZE}"
parted "${NIXOS_INSTALL_ROOT_DRIVE}" -- mkpart primary linux-swap -"${NIXOS_INSTALL_SWAP_SIZE}" 100%
mkfs.ext4 -L nixos "${NIXOS_INSTALL_ROOT_DRIVE}"1 # /dev/sda1
sleep 1
mkswap -L swap "${NIXOS_INSTALL_ROOT_DRIVE}"2 # /dev/sda2
sleep 1
mount /dev/disk/by-label/nixos /mnt
swapon "${NIXOS_INSTALL_ROOT_DRIVE}"2
sleep 1
nixos-generate-config --root /mnt
if [ "${NIXOS_INSTALL_EDIT_CONFIGURATION_FILE}" == "yes" ]; then
printf "You are about to enter vim to edit /mnt/etc/nix/configuration.nix\nPress any key to continue...\n"
read
vim /mnt/etc/nixos/configuration.nix
fi
printf "System is prepared for installation... run `sudo nixos-install` when ready to install.\n"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment