Install NixOS on Linode: Difference between revisions

From NixOS Wiki
imported>Fadenb
Created page with "The high level approach that these directions will take is to boot into the Rescue Mode, then mount the partitions we'll install on, install NixOS and NixPkgs on the Rescue Di..."
 
m fix redirect (the section of interest was moved by User:Samueldr in 2017: https://wiki.nixos.org/w/index.php?title=NixOS_Installation_Guide&oldid=2060)
Tag: Redirect target changed
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
The high level approach that these directions will take is to boot into the Rescue Mode, then mount the partitions we'll install on, install NixOS and NixPkgs on the Rescue Disk and then have it install to the mounted partition we actually want it installed on.
#REDIRECT [[NixOS friendly hosters]]
 
== Setup your Disk Image partions. ==
===Create Disk Images in Linode Manager===
You will need:
* A small partition we will call 'boot', it should be ~200 mb this will be ''/dev/xvda''
* Make the rest of your disk space one other parition, we'll call this 'nixos' this will be ''/dev/xvdb''
 
Additionally, be sure to choose the "pv_grub-<arch>" kernel to actually use the kernel supplied from the nixos installation.
 
===Boot into Rescue Mode and use LISH to connect to your machine===
What will become /boot needs to be ext2, I make my main partition ext4:
 
mkfs.ext2 /dev/xvda
mkfs.ext4 /dev/xvdb
 
===Add a filesystem label to the NixOS Installation Disk===
This is optional. The label is used in configuration.nix later so make sure to adapt it to your needs.
 
e2label /dev/xvdb nixos
 
===Mount the Partitions ===
mount /dev/xvdb /mnt
mkdir /mnt/boot
mount /dev/xvda /mnt/boot
 
==Install Prerequisites==
 
===Install Nix in the Rescue System===
Installing Nix as root doesn't work, so create an user just to do that:
 
adduser nix # set password
 
We also need the Nix build users to exist:
 
groupadd -r nixbld
for n in $(seq 1 10); do useradd -c "Nix build user $n" \
    -d /var/empty -g nixbld -G nixbld -M -N -r -s "$(which nologin)" \
    nixbld$n; done
 
Now do the Nix install:
 
su - nix
bash <(curl https://nixos.org/nix/install)
exit
 
And then for the rest we can be root again.
 
. ~nix/.nix-profile/etc/profile.d/nix.sh
nix-channel --remove nixpkgs
nix-channel --add http://nixos.org/channels/nixos-17.03 nixos
nix-channel --update
 
===Install vim for editing (Optional)===
nix-env -i vim
 
===Install ''nixos-install'', ''nixos-option'', and ''nixos-hardware-schan''===
cat <<EOF > configuration.nix
{ fileSystems."/" = {};
  boot.loader.grub.enable = false;
}
EOF
 
export NIX_PATH=nixpkgs=/root/.nix-defexpr/channels/nixos:nixos=/root/.nix-defexpr/channels/nixos/nixos
export NIXOS_CONFIG=/root/configuration.nix
nix-env -i -A config.system.build.nixos-install -A config.system.build.nixos-option -A config.system.build.nixos-generate-config -f "<nixos>"
 
==Configure your system==
===Generate configuration.nix template in /mnt/etc/nixos/===
export NIX_PATH=nixpkgs=/root/.nix-defexpr/channels/nixos:nixos=/root/.nix-defexpr/channels/nixos/nixos
nixos-generate-config --root /mnt
 
==Edit your ''/mnt/etc/nixos/configuration.nix''==
These are the minimal changes you'll have to make, you probably also want to turn sshd on, and perhaps create a user. That disk and swap settings in ''hardware-configuration.nix'' should be correct but you should check to confirm.
 
  # Use the GRUB 1 boot loader.
  boot.loader.grub = {
    enable = true;
    version = 1;
    extraPerEntryConfig = "root (hd0)";
    device = "nodev";
  };
 
If you want a swap file, add something like:
 
  swapDevices = [
    { device = "/var/swapfile";
      size = 2048; # in MB
    }
  ];
 
You could also use a swap partition, but there's no reason to since the performance is the same[http://lkml.iu.edu/hypermail/linux/kernel/0507.0/1690.html] and swap partitions are less flexible.
 
==Install NixOS!==
 
unset NIXOS_CONFIG
nixos-install
 
===Fix Grub===
Because of how Linode will try to load grub on the /boot partition, we need to make this symlink so it can find it:
 
mkdir -p /mnt/boot/boot/grub
cd /mnt/boot/boot/grub
ln -sv ../../grub/menu.lst /mnt/boot/boot/grub
 
===Set Root Password===
You should set the root password here. If you forget, you can use Linode's "Reset Root Password" option in the Rescue tab after finishing the install.
 
==Reboot to NixOS==
The installation is finished. The last steps before booting the system is creating a configuration profile in the Linode Manager:
 
* Boot Settings
** Kernel: pv-grub-x86_64
* Block Device Assignment
** /dev/xvda: Your 'boot' image
** /dev/xvdb: nixos
** root device: /dev/xvdb
 
Change other configuration options to your preference.
 
Now hit ''boot'' in the Linode Manager and wait for NixOS to boot. You can check progress in the Remote Access Console.
 
==Update Channels to finish installation==
nix-channel --update
 
You now should have a fully functional NixOS install on Linode, enjoy!
 
[[Category:Deployment]]

Latest revision as of 03:26, 21 June 2024