{
  config,
  lib,
  ...
}: {
  config = {
    pim = {
      sops-nix.usersWithSopsKeys = ["pim"];
    };

    facter.reportPath = ./facter.json;
    home-manager.users.pim.imports = [./pim.home.nix];
    programs.steam.enable = true;
    system.stateVersion = "24.05";

    users.users = {
      root.openssh.authorizedKeys.keys = config.pim.ssh.keys.pim;

      pim = {
        isNormalUser = true;
        extraGroups = ["autologin"];
        openssh.authorizedKeys.keys = config.pim.ssh.keys.pim;
      };
    };

    deployment = {
      targetHost = "gamepc";
      targetUser = "root";
      tags = ["desktop"];
    };

    services = {
      openssh.enable = true;
      displayManager.cosmic-greeter.enable = true;
      desktopManager.cosmic.enable = true;

      xserver.displayManager.lightdm.extraSeatDefaults = ''
        autologin-user=pim
      '';
    };

    boot = {
      loader.grub = {
        enable = true;
        efiSupport = true;
        efiInstallAsRemovable = true;
      };

      swraid.mdadmConf = ''
        MAILADDR pim@kunis.nl
      '';
    };

    disko.devices.disk = lib.genAttrs ["0" "1"] (name: {
      type = "disk";
      device = "/dev/nvme${name}n1";
      content = {
        type = "gpt";
        partitions = {
          boot = {
            size = "1M";
            type = "EF02"; # for grub MBR
          };
          ESP = {
            size = "500M";
            type = "EF00";
            content = {
              type = "mdraid";
              name = "boot";
            };
          };
          mdadm = {
            size = "100%";
            content = {
              type = "mdraid";
              name = "raid0";
            };
          };
        };
      };
    });

    disko.devices.mdadm = {
      boot = {
        type = "mdadm";
        level = 1;
        metadata = "1.0";
        content = {
          type = "filesystem";
          format = "vfat";
          mountpoint = "/boot";
        };
      };
      raid0 = {
        type = "mdadm";
        level = 0;
        content = {
          type = "gpt";
          partitions = {
            primary = {
              end = "-4G";
              content = {
                type = "filesystem";
                format = "ext4";
                mountpoint = "/";
              };
            };
            swap = {
              size = "100%";
              content = {
                type = "swap";
              };
            };
          };
        };
      };
    };
  };
}