{
  lib,
  config,
  factsGenerator,
  ...
}:
{
  imports = [
    ./disko-config.nix
    ./hardware-configuration.nix
    ./graphics.nix
  ];

  boot.loader.efi.canTouchEfiVariables = true;
  boot.loader.systemd-boot.enable = true;
  boot.tmp.useTmpfs = true;

  # ZFS stuff
  # ---------
  boot.supportedFilesystems = [ "zfs" ];
  clan.core.facts.services.zfs = factsGenerator.zfs { };
  networking.hostId = config.clan.core.facts.services.zfs.public."zfs.hostId".value;
  services.zfs.autoSnapshot.enable = true;

  # todo not needed anymore if srvos is used
  # ZFS already has its own scheduler. Without this my(@Artturin) computer froze for a second when i nix build something.
  # copied from : https://github.com/numtide/srvos/blob/main/nixos/common/zfs.nix
  services.udev.extraRules = lib.optionalString (config.boot.zfs.enabled) ''
    ACTION=="add|change", KERNEL=="sd[a-z]*[0-9]*|mmcblk[0-9]*p[0-9]*|nvme[0-9]*n[0-9]*p[0-9]*", ENV{ID_FS_TYPE}=="zfs_member", ATTR{../queue/scheduler}="none"
  '';

}