I had bought a new laptop recently, which was a perfect opportunity to take a fresh look at my NixOS setup.
As usual, there are some hacks and not obvious things which I would like to document just in case :)
If it does not work, update
I’ve tried installed a stable 16.09 version first, but live CD didn’t manage to start the X server properly. This was easy to fix by switching to the then beta 17.03.
It is my first system which uses UEFI instead of BIOS, and I was
pleasantly surprised by how everything just worked. Documentation contains only
a short paragraph about UEFI, but it’s everything you need. The only hiccup on
my side happened when I enabled GRUB together with
systemd-boot: you don’t
need GRUB at all,
system-boot is a bootloader which handles everything.
If it does not work, fix the obvious problem
After I’ve installed everything, I was presented with a blank screen
instead of my desktop environment (with the live CD everything
worked). It took me ages to debug the issue, while the fix was super
videoDrivers = [ "intel" ]; to
xserver config and
While nix is the best way to manage Linux desktop I am aware of, rustup is the most convenient way of managing Rust toolchains. Unfortunately it’s not easy to make rustup play nicely with NixOS (UPDATE: rustup is now packaged in nixpkgs and just works). Rustup downloads binaries of the compiler and Cargo, but it is impossible to launch unmodified binaries on NixOS because it a lacks conventional loader.
The fix I came up with is a horrible hack which goes against everything in NixOS. Here it is:
It makes the loader and shared libraries (rustup needs
to binaries compiled for x64 Linux.
Another software which I wish to update somewhat more frequently than
other packages is IntelliJ IDEA (I write a fair amount of Kotlin and
Rust). NixOS has a super convenient mechanism to do this:
packageOverrides. Here is my
It allows to use the most recent IDEA with the stable NixOS channel.