Nix notes

Start here: building a Digital Ocean image

$ nix-build -A image
@result@

This derivation builds a virtual machine image suitable for Digital Ocean: one can import the resulting file as a custom image then select that image when creating a new droplet (a droplet is the name DO gives to a virtual machine). We’ll do that in two commits (i.e. here).

As can be seen in default.nix, the Nix expression detailing our complete image is quite simple: we call <nixpkgs>/nixos/lib/eval-config.nix, passing two modules: one defined in nixpkgs containing the DO-specific bits, and ./configuration.nix.

Really, that’s nixpkgs doing all the work!

Finally our ./configuration.nix is a standard NixOS configuration file, just like the one you would have in /etc/nixos/configuration.nix. It imports modules/nginx.nix which could alternatively be inlined in configuration.nix since both are short, but doing so will be useful when we add more to our configuration.