|
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]]
| |