Add other linux distro's entry to systemd boot menu

Hi! Today I installed arch linux and couldn’t find a solution to this final step. Just old posts that ended up changing to grub.

Get the disk UUID where you have your partition installed.
$ ls -l /dev/disk/by-uuid/

Example output:

...
lrwxrwxrwx 1 root root 10 ago 15 14:41 82923365-30db-6cde-ae91-d22a817fa407 -> ../../sda4
lrwxrwxrwx 1 root root 10 ago 15 14:41 a6f007ed-8473-4b83-b6fb-0d640f18c0a1 -> ../../sda5
...

If I had installed my distro on sda4 I should copy 82923365-30db-6cde-ae91-d22a817fa407

Add this to your configuration.nix

  boot.loader.systemd-boot.extraEntries = {
    "Arch.conf" = ''
      title   Example Arch Linux example
      linux   /vmlinuz-linux
      initrd  /initramfs-linux.img
      options root=UUID=82923365-30db-6cde-ae91-d22a817fa407 rootfstype=ext4 add_efi_memmap rw
      '';
  };
  • Replace the example’s UUID with yours. (Also rootfstype if the disk is formatted with any other filesystem)

  • title option sets the name that will show on the boot menu. Use as many spaces as you like.

  • linux and initrd already exist on /boot, there is no need to change that.

  • “systemd-boot does not accept tabs for indentation, use spaces instead.” ref

  • Arch.conf is the name of the file that will be created at /boot/loader/entries, you are free to change it to whatever you want, leave that .conf at the end, just in case.

Rebuild, reboot and it should appear now.

First “guide” here, if I got something wrong, drop me a comment and I’ll change it.

Hope this helps.

Error handling

Booting process interrupted/slowed by some “Searching for xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx…”

  • Check if the disk’s uuid its correct.
  • If you copied it manually, try using something like
ls -l /dev/disk/by-uuid/ >> configuration.nix

This will append ls’s output to your configuration.nix file. Go to the end of it and you will see all the output there, copy relevant, delete the rest.