{
  config,
  lib,
  pkgs,
  modulesPath,
  ...
}:
{
  imports = [
    (modulesPath + "/installer/sd-card/sd-image-aarch64.nix")
  ];

  # Raspberry Pi 4 platform
  nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";

  # Disable ZFS (not needed, and broken with latest kernel)
  boot.supportedFilesystems.zfs = lib.mkForce false;

  # Boot configuration - provided by sd-image-aarch64.nix
  # (grub disabled, generic-extlinux-compatible enabled, U-Boot setup)

  # /boot/firmware is automatically configured by sd-image module
  # Device: /dev/disk/by-label/FIRMWARE (vfat)

  # tmpfs root with impermanence
  # Override sd-image module's ext4 root definition with mkForce
  fileSystems."/" = lib.mkForce {
    device = "none";
    fsType = "tmpfs";
    options = [
      "defaults"
      "size=2G"
      "mode=755"
    ];
  };

  # The SD partition contains /nix/store and /nix/persist at its root
  # Mount it at a hidden location, then bind mount its /nix to /nix
  fileSystems."/mnt/nixos-sd" = {
    device = "/dev/disk/by-label/NIXOS_SD";
    fsType = "ext4";
    options = [ "noatime" ];
    neededForBoot = true;
  };

  # Bind mount /nix from the SD partition
  fileSystems."/nix" = {
    device = "/mnt/nixos-sd/nix";
    fsType = "none";
    options = [ "bind" ];
    neededForBoot = true;
    depends = [ "/mnt/nixos-sd" ];
  };

  # No swap on SD card (wear concern)
  swapDevices = [ ];

  # SD image build configuration
  sdImage = {
    compressImage = true;

    # Populate root with directories
    populateRootCommands = ''
      mkdir -p ./files/boot
      ${config.boot.loader.generic-extlinux-compatible.populateCmd} -c ${config.system.build.toplevel} -d ./files/boot

      # Create /nix/persist directory structure for impermanence
      mkdir -p ./files/nix/persist/var/lib/nixos
      mkdir -p ./files/nix/persist/home/ppetru
      mkdir -p ./files/nix/persist/etc
    '';
  };
}
