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

{
  imports = [ ./hardware-configuration.nix ];

  # Sops stuff
  sops.defaultSopsFile = ../../secrets/gunter/secrets.yaml;
  sops.age.keyFile = "/var/lib/sops-nix/key.txt";
  sops.age.generateKey = true;
  sops.secrets."gotify_tokens/backup-home" = { };


  # Bootloader stuff
  boot.kernelParams = [
    "quiet"
    "splash"
    "rd.systemd.show_status=false"
  ];
  boot.loader.systemd-boot = {
    enable = true;
    configurationLimit = 10;
  };
  boot.loader.efi = { canTouchEfiVariables = true; };

  # Networking stuff
  networking.hostName = "prismo"; # Define your hostname.
  networking.networkmanager.enable = true;
  networking.nftables.enable = true;
  networking.firewall = {
    enable = true;
  };

  # Set time stuff
  time.timeZone = "Europe/Oslo";

  # Enable opengl
  hardware.opengl = {
    enable = true;
    extraPackages = with pkgs; [
      intel-media-driver
      vaapiVdpau
      libvdpau-va-gl
    ];
  };

  # Setup hyprland
  services.xserver.enable = true;
  programs.hyprland = {
    enable = true;
    xwayland.enable = true;
    portalPackage = pkgs.xdg-desktop-portal-hyprland;
  };

  # Setup common XDG env vars
  environment.sessionVariables = rec {
    XDG_CACHE_HOME = "$HOME/.cache";
    XDG_CONFIG_HOME = "$HOME/.config";
    XDG_DATA_HOME = "$HOME/.local/share";
    XDG_STATE_HOME = "$HOME/.local/state";
    XDG_BIN_HOME = "$HOME/.local/bin";
    PATH = [ "${XDG_BIN_HOME}" ];
  };

  # Setup xdg portal
  xdg.portal = {
    enable = true;
    xdgOpenUsePortal = true;
    extraPortals = (with pkgs; [
      xdg-desktop-portal-hyprland
      xdg-desktop-portal-gtk
    ]);
  };

  # Enable flakes
  nix.settings.experimental-features = [ "nix-command" "flakes" ];

  nixpkgs.config.allowUnfree = true;
  # Install system-wide packages
  environment.systemPackages = with pkgs; [
    vim
    wget
    curl
    git
  ];

  # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
  # and migrated your data accordingly.
  #
  # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
  system.stateVersion = "23.11"; # Did you read the comment?
}