{ config, pkgs, lib, ... }:

let
  hostname = "gAluminum";
  nvidia-offload = pkgs.writeShellScriptBin "nvidia-offload" ''
    export __NV_PRIME_RENDER_OFFLOAD=1
    export __NV_PRIME_RENDER_OFFLOAD_PROVIDER=NVIDIA-G0
    export __GLX_VENDOR_LIBRARY_NAME=nvidia
    export __VK_LAYER_NV_optimus=NVIDIA_only
    exec -a "$0" "$@"
  '';
in
{
  imports = [ ./hardware.nix ./wireguard.nix ./sound.nix ];

  boot = {
    supportedFilesystems = [ "ntfs" ];
    loader = {
      efi.canTouchEfiVariables = true;
      efi.efiSysMountPoint = "/boot/efi";
      systemd-boot.enable = true;
    };

    kernelPackages = pkgs.linuxPackages_latest;

    initrd.luks.devices = {
      root = {
        device = "/dev/disk/by-uuid/c2bac3a6-0999-4e1d-a676-bf4bcafee2d4";
        preLVM = true;
        allowDiscards = true;
      };
    };
  };

  networking = {
    hostName = hostname;
    networkmanager.wifi = {
      powersave = false;
      macAddress = "random";
    };
  };

  time.timeZone = "Europe/London";
  virtualisation.virtualbox.host = {
    enable = true;
    enableExtensionPack = true;
  };

  users.extraGroups = {
    vboxusers.members = [ "giulio" ];
    video.members = [ "giulio" ];
  };

  services = {
    printing.enable = true;
    xserver.videoDrivers = [ "nvidia" ];
    teamviewer.enable = true;
    davfs2.enable = true;
  };

  hardware = {
    ledger.enable = true;
    nvidia = {
      prime = {
        offload.enable = true;
        intelBusId = "PCI:0:2:0";
        nvidiaBusId = "PCI:1:0:0";
      };
    };
  };

  programs.steam.enable = true;
  environment.systemPackages = with pkgs; [ efibootmgr nvidia-offload ];
  #  system.stateVersion = "21.05"; # Did you read the comment?
}