I wanted to experience the NixOS Linux distribution outside of Windows Subsystem for Linux (WSL). I had preserved the 220 GB SSD from my Dell XPS 9360 in an enclosure, when I upgraded its internal storage in June 2024. I decided to attempt to dual boot from that SSD, first with a minimal installation of NixOS but, ultimately, with a graphical installation.
Speed
The SSD was a Toshiba KXG50ZNV 256 GB XG5 NVMe PCLe M.2. The enclosure had a USB Type C port said to support USB 3.1 Gen 2 standard and a data transfer rate of up 10 GB per second.The USB-C socket on the intended laptop was USB4. This would be fast enough to use the external SSD as if it were an internal SSD.
Secure Boot
The laptop had Secure Boot enabled and that prevented booting from the installation USB drive (see below). Secure Boot could be disabled in the BIOS and I disabled it. A consequence of that change is that Windows Bitlocker required the entry of a recovery key before the laptop could boot into Windows 11.
DD mode
The NixOS project provided minimal or graphical ISO images for NixOS 26.05 on an x86_64 machine architecture (Intel/AMD). I used the portable version of Rufus 4.14 to create a bootable installation USB drive from those images and a 8 GB USB drive.
Initially, I used Rufus with an ISO mode. This produced an installation USB drive which booted but the boot process failed after timing out waiting for the USB drive device and then entered a terminal in an ’emergency mode’. The solution was to use Rufus with a DD mode.
LTS or not
Once booted, the installation USB drive offered a choice between a LTS (the default) or a numbered version. I later discovered that this was a reference to the Linux kernel. I selected the LTS Linux kernel.
Graphical desktop
Once booted, the graphical installation USD drive also offered a choice of two desktops for the installer itself: GNOME and Plasma by KDE. I had read that Plasma could be more familiar to Windows users, so I selected Plasma.
Wi-Fi
The installation process required the installer to have access to the internet. In the case of the minimal installation, which was at the command line, the tool nmtui was used to make a connection. In the case of the graphical installation, a wi-fi signal icon led to a connection process. The icon was located in a system tray in a ‘tool bar’ along the bottom of the screen.
Installation
The most important part of the installation was to ensure that NixOS would be installed to the external SSD and not, accidentally, over-write the internal SSD of the laptop.
In the case of the minimal installation, the tool lsblk -o NAME,SIZE,MODEL,TRAN was used to identify drives, by their description and size (the external SSD was somewhat smaller than the internal SSD). In the case of the graphical installer, a step showed information about the drive that would be affected by the installation.
In the case of the minimal installation, installation was via the nixos-install tool. In the case of the graphical installer, it was via a dialogue box that worked through the process, step by step.
Both the minimal installation terminal and the graphical installer made use of a very small system font on my laptop.
Reboot
After installation was complete, I could reboot/restart or boot into NixOS on the external SSD drive by interrupting the laptop’s start up process (by pressing the ENTER key), selecting an option to choose a temporary startup drive (by pressing the F12 key), and selecting the ‘Linux Boot Manager’ option from the laptop’s Boot Menu.
There were, initially, duplicate ‘Linux Boot Manager’ options. In NixOS, I installed the efibootmgr package and used sudo efibootmgr -v, lsblk -o NAME,PARTUUID,MOUNTPOINTS and sudo bootctl status to confirm that one of the entries (it was Boot0001) was stale. I removed the stale entry with sudo efibootmgr -b 0001 -B.