Dual Booting NixOS and Windows: Difference between revisions
→Grub: Remove old info
imported>Loosetooth No edit summary |
(→Grub: Remove old info) |
||
(7 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
= | This section explains various methods to have the bootloader prompt whether to boot windows or NixOS. | ||
== Autodetection == | |||
=== systemd-boot === | |||
When {{ic|systemd-boot}} is installed to the same EFI System Partition (ESP) that Windows uses, it will automatically detect the Windows installation ({{ic|/EFI/Microsoft/Boot/bootmgfw.efi}}) and present it as a boot option. | |||
You can verify detected boot loaders by running the {{ic|bootctl}} command. | |||
A system pre-installed with Windows might have a small ESP partition size that is not sufficient to store the kernel and initrd files for multiple NixOS generations. One solution is to create an additional [https://uapi-group.org/specifications/specs/boot_loader_specification/#the-partitions XBOOTLDR] partition and configure {{ic|systemd-boot}} to use it: | |||
{{File|/etc/nixos/configuration.nix|nix|<nowiki> | |||
{ | |||
fileSystems."/boot" = | |||
{ device = "/dev/disk/by-uuid/57D4-A2B2"; | |||
fsType = "vfat"; | |||
}; | |||
fileSystems."/efi" = | |||
{ device = "/dev/disk/by-uuid/3280-5418"; | |||
fsType = "vfat"; | |||
}; | |||
boot.loader.systemd-boot.enable = true; | |||
boot.loader.efi.canTouchEfiVariables = true; | |||
boot.loader.efi.efiSysMountPoint = "/efi"; | |||
boot.loader.systemd-boot.xbootldrMountPoint = "/boot"; | |||
} | |||
</nowiki>}} | |||
== | === os-prober === | ||
<code>os-prober</code> is a tool to autodetect which other systems are present on the machine. Grub can be | <code>os-prober</code> is a tool to autodetect which other systems are present on the machine. Grub can be | ||
Line 18: | Line 45: | ||
}</nowiki>}} | }</nowiki>}} | ||
== Manual | == Manual configuration == | ||
In case <code>os-prober</code> does not detect your windows partition you can configure your bootloader manually to find it. | In case <code>os-prober</code> does not detect your windows partition you can configure your bootloader manually to find it. | ||
Line 25: | Line 52: | ||
All MBR bootloaders will need at least some configuration to chainload Windows. | All MBR bootloaders will need at least some configuration to chainload Windows. | ||
==== Grub | ==== Grub ==== | ||
Here is an example config: | Here is an example config: | ||
Line 42: | Line 69: | ||
Source: https://www.reddit.com/r/NixOS/comments/31lx3i/windows_and_nixos_dual_boot/ | Source: https://www.reddit.com/r/NixOS/comments/31lx3i/windows_and_nixos_dual_boot/ | ||
=== | === UEFI === | ||
After setting up a 256mb EFI Partition dualboot should work out of the box (at least for windows10) | After setting up a 256mb EFI Partition dualboot should work out of the box (at least for windows10) | ||
Line 51: | Line 78: | ||
==== Grub ==== | ==== Grub ==== | ||
Here we assume: | Here we assume: | ||
Line 114: | Line 138: | ||
}</nowiki>}} | }</nowiki>}} | ||
= System time = | == System time == | ||
System clock might be incorrect after booting Windows and going back to the NixOS. It can be fixed by either setting RTC time standard to UTC on Windows, or setting it to localtime on NixOS. | System clock might be incorrect after booting Windows and going back to the NixOS. It can be fixed by either setting RTC time standard to UTC on Windows, or setting it to localtime on NixOS. | ||
Line 120: | Line 144: | ||
Setting RTC time standard to localtime, compatible with Windows in its default configuration: | Setting RTC time standard to localtime, compatible with Windows in its default configuration: | ||
{{ | {{file|/etc/nixos/configuration.nix|nix|<nowiki> | ||
{ | { | ||
time.hardwareClockInLocalTime = true; | time.hardwareClockInLocalTime = true; | ||
}</nowiki>}} | }</nowiki>}} | ||
See [https://wiki.archlinux.org/title/System_time#Time_standard Arch Linux wiki#System time]. | |||
* [https://wiki.archlinux.org/index.php/GRUB#Windows_installed_in_UEFI-GPT_Mode_menu_entry Arch | == See also == | ||
* [https://wiki.archlinux.org/index.php/GRUB#Windows_installed_in_UEFI-GPT_Mode_menu_entry Arch Linux wiki#GRUB] | |||
* [https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/system/boot/loader/grub/install-grub.pl NixOS GRUB installer] (check the code block beginning with <nowiki># install EFI GRUB</nowiki>) | * [https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/system/boot/loader/grub/install-grub.pl NixOS GRUB installer] (check the code block beginning with <nowiki># install EFI GRUB</nowiki>) | ||
[[Category:Cookbook]] | [[Category:Cookbook]][[Category:NixOS]] |