{ pkgs, lib, config, hostName, ... }:
with lib;
{
  imports = [
    ../../nixos/profiles/hardware/T480.nix
    ../../nixos/profiles/zfs.nix
    ../../nixos/profiles/zramSwap.nix
    #hardware/nvidia.nix
  ];

  # Setting the machine-id avoids to reencrypt all credentials
  # when reinstalling NixOS on a new drive.
  # Manually generated with : uuidgen | tr -d -
  environment.etc.machine-id.source = ./machine-id.clear;

  # The 32-bit host id of the host, formatted as 8 hexadecimal characters.
  # You should try to make this id unique among your hosts.
  # Manually generated with : uuidgen | head -c8
  networking.hostId = "e6eba6c4";

  boot.kernelParams = [
    #"boot.trace"
    "boot.shell_on_fail"
    #"boot.debug1"
  ];
  # Deprecated in nixos-24.11
  #boot.kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages;
  boot.loader = {
    efi = {
      canTouchEfiVariables = true;
      efiSysMountPoint = "/boot1";
    };
    systemd-boot = {
      enable = true;
      #editor = false;
      # Roughly 25MiB (initrd) + 9MiB (kernel) per configuration
      configurationLimit = 6;
      memtest86.enable = true;
      /*
      extraInstallCommands = ''
        rm -rf /efiboot/efi2
        cp -r /efiboot/efi1 /efiboot/efi2
      '';
      */
      # FIXME: needs https://github.com/NixOS/nixpkgs/pull/246897
      #mirroredBoots = [ ];
    };
  };
  boot.zfs.requestEncryptionCredentials = [ "${hostName}/root" ];

  hardware.enableRedistributableFirmware = true;
  # Disable IR camera
  services.udev.extraRules = ''
    ACTION=="add", ATTRS{idVendor}=="5986", ATTRS{idProduct}=="1141", RUN="${pkgs.runtimeShell} -c 'echo 1 >/sys$devpath/remove'"
  '';

  fileSystems."/boot1" =
    {
      device = "/dev/disk/by-partlabel/${hostName}_ssd1_boot";
      fsType = "vfat";
      options = [ "rw" "noexec" "nodev" "nofail" "X-mount.mkdir" "iocharset=iso8859-1" ];
    };
  swapDevices = [
    {
      device = "/dev/disk/by-partlabel/${hostName}_ssd1_swap";
      randomEncryption = {
        enable = true;
        cipher = "aes-xts-plain64";
        source = "/dev/urandom";
      };
    }
  ];

  boot.supportedFilesystems = [ "ntfs" "vfat" ];

  fileSystems."/" =
    {
      device = "${hostName}/root";
      fsType = "zfs";
      options = [ "zfsutil" ];
    };
  fileSystems."/nix" =
    {
      device = "${hostName}/root/nix";
      fsType = "zfs";
      options = [ "X-mount.mkdir" "zfsutil" ];
    };
  fileSystems."/var" =
    {
      device = "${hostName}/root/var";
      fsType = "zfs";
      options = [ "X-mount.mkdir" "zfsutil" ];
    };

  services.pipewire.jack.enable = true;

}