# Edit this configuration file to define what should be installed on
# your system.  Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).
{
  config,
  lib,
  pkgs,
  ...
}: {
  imports = [
    # Include the results of the hardware scan.
    ./hardware-configuration.nix
    ../common
    ../common/graphical

    (import ../../modules).pingbox
  ];

  boot.resumeDevice = "/dev/disk/by-label/swap";

  boot.kernelParams = ["nvme.noacpi=1"];

  hardware.acpilight.enable = lib.mkDefault true;

  hardware.opengl = {
    enable = true;
    extraPackages = with pkgs; [
      intel-media-driver
      vaapiIntel
    ];
  };

  networking = {
    hostName = "pingbox";
    interfaces.wlp170s0.useDHCP = true;
  };

  services = {
    fprintd.enable = true;

    fwupd.enable = true;

    power-profiles-daemon.enable = false;
    tlp = {
      enable = true;
      settings = {
        PCIE_ASPM_ON_BAT = "powersupersave";
      };
    };

    xserver = {
      dpi = 144;

      videoDrivers = ["intel"];
      deviceSection = ''
        Option "DRI" "2"
        Option "TearFree" "true"
      '';

      libinput.touchpad = {
        naturalScrolling = true;
        horizontalScrolling = false;
        tapping = true;
      };
    };

    logind = {
      lidSwitch = "suspend-then-hibernate";
    };
  };

  systemd.sleep.extraConfig = ''
    HibernameDelaySec=3600
  '';

  # This value determines the NixOS release from which the default
  # settings for stateful data, like file locations and database versions
  # on your system were taken. It‘s perfectly fine and recommended to leave
  # this value at the release version of the first install of this system.
  # Before changing this value read the documentation for this option
  # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
  system.stateVersion = "21.05"; # Did you read the comment?
}
