{ config, pkgs, ... }:

{
  imports =
    [
      ./common.nix
      ./large-sw.nix
      ./uefi.nix
      ./fstrim.nix
      ./qemu-user.nix
      ./atmega.nix
    ];

  environment.etc."lvm/lvm.conf".text = ''
    devices {
      issue_discards = 1
    }
  '';
  boot.initrd.luks.devices = [
    {
      name = "sda2_crypt";
      device = "/dev/disk/by-uuid/2e2e2824-e357-4a75-bddc-8cf386cd0f53";
      preLVM = true;
      allowDiscards = true;
    }
  ];

  networking.hostName = "archachatina"; # Define your hostname.
  networking.hostId = "cc7ea3ba";

  hardware.cpu.intel.updateMicrocode = true;

  services.wakeonlan.interfaces = [
    {
      interface = "enp3s0";
      method = "magicpacket";
    }
  ];

  environment.systemPackages = with pkgs; [
    beets
    mediainfo
    flac
    clementine

    recoll
    uvccapture

    piper

    blueman
  ];

  services.thermald.enable = true;

  virtualisation.docker.enable = true;
  users.extraUsers.gebner.extraGroups = [ "docker" "libvirtd" ];

  # virtualisation.virtualbox.host.enable = true;

  virtualisation.libvirtd = {
    enable = true;
  };
  networking.firewall.checkReversePath = false;
  fileSystems."/var/lib/libvirt/images/vaccaria" = {
    device = "//vaccaria.mtlaa.gebner.org/export/tmp/vms";
    fsType = "cifs";
    options = [ "noauto" "x-systemd.automount" "credentials=/etc/smbcredentials/vaccaria"
      "forceuid" "forcegid" "uid=0" "gid=0" ];
  };

  hardware.opengl.driSupport32Bit = true;

  # services.nix-serve = {
  #   enable = true;
  #   secretKeyFile = "/etc/nix-serve/secret.key";
  # };
  # networking.firewall.allowedTCPPorts = [ config.services.nix-serve.port ];

  services.openssh.forwardX11 = true;

  # nixpkgs.config.packageOverrides = super: let self = super.pkgs; in {
  #     mesa_drivers = self.mesaDarwinOr (
  #       let mo = self.mesa_noglu.override {
  #             llvmPackages = pkgs.llvmPackages_39;
  #             grsecEnabled = false;
  #             enableTextureFloats = true;
  #           };
  #       in mo.drivers
  #     );
  # };

  #boot.kernelPackages = pkgs.lib.mkOverride 10 pkgs.linuxPackages_latest;

  services.xserver = {
    videoDrivers = [ "amdgpu" ];
    deviceSection = ''
      Option "TearFree" "on"
    '';
  };

  services.postgresql = {
    enable = true;
    extraPlugins = [ pkgs.postgis ];
  };

  services.ratbagd.enable = true;

  system.stateVersion = "18.03";

}