blog.anqou.net
rss
author
tags

NixOS で Limine を使う

NixOS は systemd-boot や GRUB といったいくつかのブートローダをサポートしています。 Limine は NixOS でサポートされているそんなブートローダーの一つです。もともと自分は GRUB を使っていたのですが、NixOS 25.11 から Limine の NixOS Options にセキュアブートのサポートが入ったので移行しました[1]

Limine をブートローダーに指定する場合、以下のように configuration.nix で指定します:

boot.loader = {
  limine = {
    enable = true;
    maxGenerations = 10; # 表示する NixOS の世代数
  };

  efi = {
    canTouchEfiVariables = true;
    efiSysMountPoint = "/boot/efi";
  };
};

Limine では NixOS Options でブート時の壁紙を変更することができます。boot.loader.limine.style.wallpapers を使います。

boot.loader.limine.style.wallpapers = [
  path/to/wallpaper.png
];

Limine を使って Windows とのデュアルブートを行いたい場合、手動でエントリを追加する必要があります。自分が今使っているマシンにはディスクが二台搭載されていて、一方に NixOS が、他方に Windows がインストールされています。このようなケースでは、まず Windows がインストールされているディスクを確認し ESP (EFI system partition) が載っているパーティションの UUID を把握します:

$ sudo fdisk -l /dev/nvme1n1 | grep EFI
/dev/nvme1n1p1       2048     206847     204800  100M EFI System

$ ls -l /dev/disk/by-partuuid | grep nvme1n1p1
lrwxrwxrwx 1 root root 15 May 16  2026 744a5988-f500-4e4d-ba31-a72a897359b5 -> ../../nvme1n1p1

この UUID を元に boot.loader.limine.extraEntries を設定します(参考1, 参考2):

boot.loader.limine.extraEntries = ''
  /Windows
      protocol: efi
      path: uuid(744a5988-f500-4e4d-ba31-a72a897359b5):/EFI/Microsoft/Boot/bootmgfw.efi
'';

注釈

  1. ただし、実は移行しただけで満足してしまい、まだセキュアブートは有効にしていなかったりします。そのため本当に Limine でセキュアブートが使えるのかは未検証です。