Learn How To Install NixOS on IT Web Services

May 1, 2019

Table of Contents

    NixOS is a purely functional Linux distribution. It can be found on nixos.org. A main reason to use NixOS is because it is completely declarative, which makes upgrading systems more reliable, and provides many other advantages too. This guide will show you how to install NixOS on IT Web Services.

    Installation

    Upload ISO

    Go to “My Servers > ISOs” in the IT Web Services dashboard. Add the following URL as an ISO.

    https://nixos.org/releases/nixos/14.12/nixos-14.12.526.98b8eb6/nixos-minimal-14.12.526.98b8eb6-x86_64-linux.iso
    

    The md5 must match “fe8cc2c587ddb14be447d14f1f380e5a”. Newer releases may be available on the official site.

    Deploy the ISO

    Go to “Deploy”, use the location of your choice, select “x64”, and pick “Custom”. Then, choose “Virtual ISO” and select the just uploaded ISO.

    Place your order.

    Open the console

    After the VPS has finished launching, go to “Manage”, then open “View Console”.

    Login as “root”, no password.

    Partition and create the file system

    Partition the disk.

    fdisk /dev/vda
    # create a primary partition
    # use the "n" key, select "p" for primary, and the first partition (1). 
    # Select the suggested values for the size.
    # Activate the partition, use "a", select the defaults.
    # Write the changes to disk, using "w"
    

    Format the disk.

    mkfs.btrfs /dev/vda1 -Lroot
    # It's possible to use ext4 instead of btrfs:
    # mkfs.ext4 /dev/vda1 -Lroot
    

    Mount the disk.

    mount /dev/disk/by-label/root /mnt
    
    Configure NixOS

    Generate the basic configuration.

    nixos-generate-config --root /mnt
    

    Edit the newly generated configuration.

    $EDITOR /mnt/etc/nixos/configuration.nix
    

    Change the following values. For more options, you can look at the NixOS Manual: Options.

    # Set the grub bootloader device to the correct
    boot.loader.grub.device = "/dev/vda";
    # Enable openssh
    services.openssh.enable = true;
    # Disable root login
    services.openssh.permitRootLogin = "no";
    # Add a user:
    users.extraUsers.nixos = {
        uid = 1000;
        password = "nixos"; # Set this to something more secure.
        extraGroups = ["wheel"];
        useDefaultShell = true;
    };
    
    Install
    nixos-install
    # It will download the packages, install grub and set a root password.
    

    If you have made a mistake, nixos-install will throw an error. Edit the /mnt/etc/nixos/configuration.nix file again. nixos-install can be run as many times as necessary.

    Reboot

    Go back to the dashboard, and remove the ISO.

    Reboot the instance.

    Verify

    SSH to the machine.

    # Use the password set in `users.extraUsers.nixos.password`.
    ssh nixos@IP
    
    Snapshot your newly created machine

    Open the IT Web Services dashboard and click on “Snapshot”. This will save a snapshot of your NixOS installation. From now on, you can deploy NixOS from a snapshot.

    Need help?

    Do you need help setting up this on your own service?
    Please contact us and we’ll provide you the best possible quote!