NixOS Raspberry Pi 4 setup

hi, there, NixOS newbie here!

i followed this guide and successfully installed NixOS to my RPi. TL;DR this is the configuration.nix that it suggests to create

{ config, pkgs, lib, ... }:

let
  user = "guest";
  password = "guest";
  SSID = "mywifi";
  SSIDpassword = "mypassword";
  interface = "wlan0";
  hostname = "myhostname";
in {

  boot = {
    kernelPackages = pkgs.linuxKernel.packages.linux_rpi4;
    initrd.availableKernelModules = [ "xhci_pci" "usbhid" "usb_storage" ];
    loader = {
      grub.enable = false;
      generic-extlinux-compatible.enable = true;
    };
  };

  fileSystems = {
    "/" = {
      device = "/dev/disk/by-label/NIXOS_SD";
      fsType = "ext4";
      options = [ "noatime" ];
    };
  };

  networking = {
    hostName = hostname;
    wireless = {
      enable = true;
      networks."${SSID}".psk = SSIDpassword;
      interfaces = [ interface ];
    };
  };

  environment.systemPackages = with pkgs; [ vim ];

  services.openssh.enable = true;

  users = {
    mutableUsers = false;
    users."${user}" = {
      isNormalUser = true;
      password = password;
      extraGroups = [ "wheel" ];
    };
  };

  hardware.enableRedistributableFirmware = true;
  system.stateVersion = "23.11";
}

Recently i stuck upon new to me nixos-generate-config command, that is meant to generate config based on my specific hardware. I ran the command and here hardware-configuration.nix that it gave me

{ config, lib, pkgs, modulesPath, ... }:

{
  imports =
    [ (modulesPath + "/installer/scan/not-detected.nix")
    ];

  boot.initrd.availableKernelModules = [ "xhci_pci" ];
  boot.initrd.kernelModules = [ ];
  boot.kernelModules = [ ];
  boot.extraModulePackages = [ ];

  fileSystems."/" =
    { device = "/dev/disk/by-uuid/44444444-4444-4444-8888-888888888888";
      fsType = "ext4";
    };

  swapDevices = [ ];

  networking.useDHCP = lib.mkDefault true;
  
  nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
}

I’d like to migrate my RPi to this generated config since this separation of config and hardware config seems to be a well spread practice in the Nix community. But is it safe to swap the thing from a guide with this one? Since i’m newbie and don’t understand a lot of details i’m a little bit worried that generated config, for example, has only one kernel module while config from guide has three and other differences…

Hey, documentation maintainer here. It’s generally safe to just try out configs, because NixOS will leave boot entries for prior builds that you can revert to if needed. Unless you wipe data or do schema migrations, rollbacks are almost always possible. It’s surprisingly hard to bork a NixOS.

That said, the Raspberry Pi tutorial is not really maintained at the moment (and I don’t have one and wouldn’t have time to tinker with it), so PRs to improve the experience are highly appreciated!