# Do not modify this file!  It was generated by ‘nixos-generate-config’
# and may be overwritten by future invocations.  Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, inputs, lib, outputs, pkgs, modulesPath, ... }:

{
  imports =
    [ #(modulesPath + "/installer/scan/not-detected.nix")
    ];

  boot = {
    extraModulePackages = [ ];
    initrd.availableKernelModules = [ "nvme" "xhci_pci" "usb_storage" "sd_mod" ];
    initrd.kernelModules = [ ];
    kernelModules = [ "kvm-amd" ];
    zfs.extraPools = [ "data" ];
  };

  environment.sessionVariables = {
    LIBVA_DRIVER_NAME = "nvidia";
    MOZ_DISABLE_RDD_SANDBOX = "1";
  };

  fileSystems."/srv/caladan/downloads" = {
    device = "/data/home/nipsy/downloads";
    fsType = "none";
    options = [
      "bind"
      "noauto"
    ];
  };

  fileSystems."/srv/caladan/www" = {
    device = "/data/home/nipsy/www";
    fsType = "none";
    options = [
      "bind"
      "noauto"
    ];
  };

  fileSystems."/srv/nfs/keepers" = {
    device = "/data/home/nipsy/downloads/keepers";
    fsType = "none";
    options = [
      "bind"
      "noauto"
    ];
  };

  fileSystems."/srv/nfs/movies" = {
    device = "/data/home/nipsy/downloads/movies";
    fsType = "none";
    options = [
      "bind"
      "noauto"
    ];
  };

  fileSystems."/srv/nfs/tv" = {
    device = "/data/home/nipsy/downloads/tv";
    fsType = "none";
    options = [
      "bind"
      "noauto"
    ];
  };

  hardware = {
    bluetooth.enable = true;

    graphics = {
      enable = true;
      extraPackages = [ pkgs.nvidia-vaapi-driver ];
      extraPackages32 = [ pkgs.pkgsi686Linux.nvidia-vaapi-driver ];
    };

    nvidia = let
      betaPkg = config.boot.kernelPackages.nvidiaPackages.beta;
      pkgAfterFbc = if builtins.hasAttr betaPkg.version pkgs.nvidia-patch-list.fbc then pkgs.nvidia-patch.patch-fbc betaPkg else betaPkg;
      finalPkg = if builtins.hasAttr betaPkg.version pkgs.nvidia-patch-list.nvenc then pkgs.nvidia-patch.patch-nvenc pkgAfterFbc else pkgAfterFbc;
    in {
      modesetting.enable = true;
      open = true;
      package = if finalPkg == betaPkg then betaPkg else finalPkg;
    };
  };
}
