building Nix...
building the system configuration...
updating GRUB 2 menu...
Warning: os-prober will be executed to detect other bootable partitions.
Its output will be used to detect bootable binaries on them and create new boot entries.
lsblk: /dev/mapper/no*[0-9]: not a block device
lsblk: /dev/mapper/raid*[0-9]: not a block device
lsblk: /dev/mapper/disks*[0-9]: not a block device
Found Windows Boot Manager on /dev/sdb1@/efi/Microsoft/Boot/bootmgfw.efi
installing the GRUB 2 boot loader into /efi...
Installing for x86_64-efi platform.
/nix/store/d77m5axznh2h3a2chqad16d44qkdxkyh-grub-2.12-rc1/sbin/grub-install: error: failed to get canonical path of `/efi'.
/nix/store/qi2l9ddd6j5dqbglz6vgzxxqqdkgd06m-install-grub.pl: installation of GRUB EFI into /efi failed: No such file or directory
warning: error(s) occurred while switching to the new configuration
The relavent error messages imply that there is no filesystem mounted at /efi, have you mounted the EFI partition there? On a default install the EFI partition is mounted at /boot so you may not want the line efiSysMountPoint = "/efi"; in your config. If you provided your hardware-configuration.nix or wherever you have your filesystems defined in your configuration it would help.
# Do not modify this file! It was generated by ‘nixos-generate-config’
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/1277b120-6355-4032-9efd-bf0a3e4ddad3";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/1913-EECC";
fsType = "vfat";
};
swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp0s20f0u3u1.useDHCP = lib.mkDefault true;
# networking.interfaces.enp3s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}
Remove the line efiSysMountPoint = "/efi"; from your config and you should be good. You have your EFI partition mounted at /boot so having that line in your config tells grub to look for the EFI partition at /efi which won’t work.