Create configuration to migrate john-endesktop from Arch Linux to NixOS while maintaining existing ZFS pools (media JBOD and swarmvols mirror) and NFS exports for k3s cluster. Configuration includes: - ZFS support with automatic pool import - NFS server exporting both pools to 10.0.0.0/24 - Correct ZFS hostid (007f0101) to resolve hostid warnings - Btrfs root filesystem on nvme0n1p5 (810GB) - Comprehensive migration plan with rollback procedures The migration is designed to be safe with Arch Linux remaining bootable as a fallback until NixOS is verified stable.
49 lines
1.5 KiB
Nix
49 lines
1.5 KiB
Nix
# Hardware configuration for john-endesktop
|
|
# This file should be regenerated after NixOS installation using:
|
|
# nixos-generate-config --show-hardware-config
|
|
|
|
{ config, lib, pkgs, modulesPath, ... }:
|
|
|
|
{
|
|
imports = [
|
|
(modulesPath + "/installer/scan/not-detected.nix")
|
|
];
|
|
|
|
# Boot configuration
|
|
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
|
|
boot.initrd.kernelModules = [ ];
|
|
boot.kernelModules = [ "kvm-intel" ];
|
|
boot.extraModulePackages = [ ];
|
|
|
|
# File systems - these will need to be updated after installation
|
|
# The nvme0n1p5 partition will be formatted as btrfs for NixOS root
|
|
fileSystems."/" = {
|
|
# Update this device path after installation
|
|
device = "/dev/disk/by-uuid/CHANGE-THIS-TO-YOUR-UUID";
|
|
fsType = "btrfs";
|
|
options = [ "subvol=@" "compress=zstd" "noatime" ];
|
|
};
|
|
|
|
fileSystems."/boot" = {
|
|
# This should match your current EFI partition
|
|
device = "/dev/disk/by-uuid/F5C6-D570";
|
|
fsType = "vfat";
|
|
options = [ "fmask=0022" "dmask=0022" ];
|
|
};
|
|
|
|
# ZFS pools - these are imported by ZFS, not managed by fileSystems
|
|
# The pools should be imported automatically via boot.zfs.extraPools
|
|
# /media and /swarmvols will be mounted by ZFS
|
|
|
|
# Swap - using ZFS zvol
|
|
swapDevices = [
|
|
{ device = "/dev/zvol/media/swap"; }
|
|
];
|
|
|
|
# CPU microcode
|
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
|
|
# Networking
|
|
networking.useDHCP = lib.mkDefault true;
|
|
}
|