# 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,
  pkgs,
  lib,
  ...
}: {
  nixpkgs.config.permittedInsecurePackages = [
    "electron-25.9.0"
  ];
  imports = [
    # Include the results of the hardware scan.
    ./hardware-configuration.nix
    ../../common.nix
    ../../modules
    ./modules
  ];
  jade = {
    desktop = {
      syncthing.enable = true;
      kdeconnect.enable = true;
      cloud.enable = true;
      social.enable = true;
      mail.enable = true;
      gaming.enable = true;
    };
  };

  hardware.usb-modeswitch.enable = true;
  systemd.services."ModemManager".enable = true;
  systemd.services."ModemManager".wants = ["NetworkManager.service"];
  systemd.services."ModemManager".wantedBy = ["multi-user.target"];

  environment.variables = {
    VDPAU_DRIVER = lib.mkIf config.hardware.opengl.enable (lib.mkDefault "va_gl");
    S10E_JRNL_FILE_LOC = "/home/jade/Docs/jrnl.md";
  };

  hardware.opengl = {
    enable = true;
    extraPackages = with pkgs; [
      intel-ocl
      intel-media-driver
      intel-vaapi-driver
      intel-compute-runtime
      libvdpau-va-gl
      mesa.drivers
    ];
  };

  programs.wireshark.enable = true;

  boot.resumeDevice = "/dev/disk/by-uuid/4f9e8afa-f8d7-40bf-b3ea-17e8e8fbb694";
  boot.kernelParams = ["resume_offset=7380652"];

  boot.binfmt.emulatedSystems = ["aarch64-linux"];

  hardware.bluetooth.enable = true;
  services.blueman.enable = true;

  environment.systemPackages = [
    pkgs.plantuml
    pkgs.mqttui
    pkgs.mobile-broadband-provider-info
    pkgs.modem-manager-gui
    pkgs.wireshark
  ];

  # Bootloader.
  boot.loader.systemd-boot.enable = true;
  boot.loader.efi.canTouchEfiVariables = true;

  # Setup keyfile
  boot.initrd.secrets = {
    "/crypto_keyfile.bin" = null;
  };

  boot.kernelPackages = pkgs.linuxPackages_zen;
  services.displayManager.autoLogin = {
    enable = true;
    user = "jade";
  };

  # networking
  networking.networkmanager.enable = true;
  networking.hostName = "catbook-j";

  i18n.extraLocaleSettings = {
    LC_ADDRESS = "de_DE.UTF-8";
    LC_IDENTIFICATION = "de_DE.UTF-8";
    LC_MEASUREMENT = "de_DE.UTF-8";
    LC_MONETARY = "de_DE.UTF-8";
    LC_NAME = "de_DE.UTF-8";
    LC_NUMERIC = "de_DE.UTF-8";
    LC_PAPER = "de_DE.UTF-8";
    LC_TELEPHONE = "de_DE.UTF-8";
    LC_TIME = "de_DE.UTF-8";
  };

  # 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 = "23.05"; # Did you read the comment?
}
