Proxmox Linux Container

From NixOS Wiki
Revision as of 01:40, 10 May 2018 by imported>Samueldr (Inits page with rough~ish notes)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

With a small amount of work, it is possible to use NixOS as a LXC container under Proxmox.

Finding a container tarball

First, choose a channel in https://nixos.org/channels/. You will then need to either follow the via Hydra evaluation XXXX link, or go to the URL listed in the src-url file.

On that page, use the search box to search for containerTarball.x86_64. In the results page, follow the link that is the ID of the result. Under Build products, download the system-tarball, which will be named nixos-system-x86_64-linux.tar.xz.

Note the Build ID, it will be used when renaming the tarball... right when it's downloaded:

``` mv nixos-system-x86_64-linux.tar.xz nixos-18.03-default_$BUILDID_amd64.tar.xz ```

This is a proxmox convention, and is useful to follow.

Preparing the container

But first, you will need to upload the container tarball to the storage.

Then, once this is done, you will need to access the CLI for the proxmox host. SSH or the web CLI will be fine.

CLI operations

In the CLI, create a container which will be used as a template. I recommend setting a memorable ID.

pct create 99999 \
  --description nixos-template \
  local:vztmpl/nixos-18.03-default_$BUILDID_amd64.tar.xz \
  -ostype unmanaged \
  -net0 name=eth0 \
  -storage local-lvm

Note that in the previous command, the -ostype option is necessary; this way Proxmox will not try to do fancy stuff to the system.

The last step using the CLI, edit /etc/pve/lxc/99999.conf to add this line:

lxc.init.cmd: /init

Creating a template

It is not be possible to use the facilities to create a NixOS container under Proxmox. It is possible, though, to create a template that may be cloned as a base. In the GUI, with the container selected, click the More menu at the top, then Convert to template. Accept.

To create a new NixOS container, you can then clone the template instead of doing the preceding steps.

Expected issues

nixos-rebuild switch may fail with errors for special mount points. This does not look like it affects the container.

[root@nixos:/]# nixos-rebuild switch
building Nix...
building the system configuration...
activating the configuration...
setting up /etc...
mount: /dev: cannot remount devtmpfs read-write, is write-protected.
mount: /dev/pts: cannot remount devpts read-write, is write-protected.
mount: /dev/shm: cannot remount tmpfs read-write, is write-protected.
mount: /proc: cannot remount proc read-write, is write-protected.
mount: /run: cannot remount tmpfs read-write, is write-protected.
mount: /run/keys: cannot mount ramfs read-only.
mount: /run/wrappers: cannot remount tmpfs read-write, is write-protected.
setting up tmpfiles
warning: error(s) occurred while switching to the new configuration