{ pkgs, hostName, ... }:
{
  imports = [
    ../../nixos/profiles/hardware/X201.nix
    ../../nixos/profiles/zfs.nix
    ../../nixos/profiles/zramSwap.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 = "ce53d0c3";

  /*
    boot.loader.efi = {
    canTouchEfiVariables = true;
    efiSysMountPoint = "/boot/efi";
    };
  */
  boot.loader.grub = {
    enable = true;
    memtest86.enable = true;
    devices = [
      "/dev/disk/by-id/ata-Samsung_SSD_850_PRO_128GB_S1SMNSAFC36436X"
    ];
    configurationLimit = 16;

    #zfsSupport = true;
    #efiSupport = true;
    #enableCryptodisk = true;
  };
  boot.zfs.requestEncryptionCredentials = [ hostName ];

  hardware.enableRedistributableFirmware = true;

  # Note that gobi_loader -2000 has to be rerun if the SIM is hot swapped
  services.udev.extraRules = ''
    ACTION=="add", SUBSYSTEM=="tty", KERNEL=="ttyUSB*", ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="9204", RUN+="${pkgs.gobi_loader}/lib/udev/gobi_loader -2000 $env{DEVNAME} /home/julm/files/thinkpad-x201/gobi"
  '';

  fileSystems."/boot" =
    {
      device = "/dev/disk/by-partlabel/${hostName}_ssd_boot";
      fsType = "ext2";
    };
  fileSystems."/boot/efi" =
    {
      device = "/dev/disk/by-partlabel/${hostName}_ssd_efi";
      fsType = "vfat";
    };
  swapDevices = [
    {
      device = "/dev/disk/by-partlabel/${hostName}_ssd_swap";
      randomEncryption = {
        enable = true;
        cipher = "aes-xts-plain64";
        source = "/dev/urandom";
      };
    }
  ];

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

  fileSystems."/" =
    {
      device = "${hostName}/root";
      fsType = "zfs";
    };
  fileSystems."/nix" =
    {
      device = "${hostName}/nix";
      fsType = "zfs";
    };
  fileSystems."/var" =
    {
      device = "${hostName}/var";
      fsType = "zfs";
    };

  services.pipewire.jack.enable = true;

}