Packetize Me No Packet Left Behind

GPD MicroPC: Installing NixOS

Steps taken to install NixOS after partitioning and reinstalling Windows on the GPD MicroPC.

Note: Paritioning was performed before reinstalling Windows in order to ensure a large EFI partition was created, as this will be used by both Windows and NixOS.


The graphical NixOS installer will boot successfully without setting nomodeline. Guides I found elsewhere on booting Linux required this setting, but it actually prevented X from starting for me; CLI works either way.


The display will be rotated 90 degrees when booted. Deal with this for a few minutes and then make your life easier by updating KDE’s display settings to correct for this rotation.

Follow the normal NixOS install process, but note the specific configurations called out below. I use ZFS on LUKS, but there’s nothing unique to the MicroPC. If you’re dual booting with Windows as in my previous post, remember that /boot will be same as the EFI partition used by Windows.

For reference, my MicroPC’s configuration is available on Github.

Getting the keyboard to work at boot

After installing I found that I was unable to enter my LUKS passphrase without attaching a USB keyboard. After entering the passphrase via an external keyboard, everything worked fine.

In order to make the keyboard available during Stage 1 boot, where the LUKS passphrase is entered, the battery kernel module must be available. Add it by appending "battery" to boot.initrd.availableKernelModules in the nix configuration. This makes no sense to me, but when trying to find a solution I found the battery module requirement noted in Josh Skidmore’s GPD MicroPC Arch Guide.

Rotating the display

Add the following to your configuration in order to avoid having your display rotated by 90 degrees when logging on.

services.xserver.monitorSection = ''
  Option "Rotate" "right"

Power management

Enable thermald and TLP.

services.thermald.enable = true;
services.tlp.enable = true;