{ config, pkgs, ... }:

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

  environment.etc."lvm/lvm.conf".text = ''
    devices {
      issue_discards = 1
    }
  '';
  boot.initrd.luks.devices = [
    {
      name = "nvme0n1p2";
      device = "/dev/disk/by-uuid/5ca3d7ec-3f9e-4a08-8bc2-b26bfc3459c5";
      preLVM = true;
      allowDiscards = true;
    }
  ];

  services.xserver = {
    dpi = 120;

    libinput.enable = true;
    config = ''
      Section "InputClass"
        Identifier "touchpad"
        Driver "libinput"
        MatchDevicePath "/dev/input/event*"
        MatchIsPointer "true"
      EndSection
    '';

    videoDrivers = [ "modesetting" ];
    useGlamor = true;
  };
  programs.light.enable = true;

  services.tlp.enable = true;

  networking.hostName = "petalius";
  networking.hostId = "cf58caa9";

  # systemd.services.ModemManager = {
  #   enable = true;
  #   wantedBy = [ "multi-user.target" ];
  # };

  hardware.opengl.extraPackages = [ pkgs.vaapiIntel ];

  nixpkgs.config.packageOverrides = pkgs: rec {
  };

  environment.systemPackages = with pkgs; [
    unison
  ];

  virtualisation.docker = {
    enable = true;
    storageDriver = "overlay2";
  };
  users.extraUsers.gebner.extraGroups = [ "docker" ];

  virtualisation.virtualbox.host.enable = true;

  # boot.kernelPackages = pkgs.lib.mkOverride 10 pkgs.linuxPackages;
  boot.kernelPatches = [
    # { patch = ./len0073.patch; name = "len0073"; }
  ];
  boot.kernelParams = [
    # "psmouse.synaptics_intertouch=1"
    "psmouse.proto=imps"
  ];
  boot.kernelModules = [
    "rmi_smbus"
    "i2c_hid"
    "psmouse"
  ];

  # time.timeZone = pkgs.lib.mkOverride 10 "Asia/Tokyo";

  #services.avahi.nssmdns = true;

  system.nixos.stateVersion = "18.03";

}