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

let
  theme = import ../modules/theme;
  tailscale = import ../modules/tailscale;
in
{
  services = {
   xserver = {
      enable = true;
      xkb.options = "caps:escape";
      windowManager.i3 = {
        enable = true;
        # Don't install dmenu, i3status, and i3lock
        extraPackages = lib.mkOverride 0 [];
      };
      displayManager = {
        lightdm = {
          enable = true;
          greeters.gtk = {
            enable = true;
            theme = theme.gtkTheme pkgs;
          };
          background = theme.wallpaper;
        };
      };
    };
    displayManager = {
      defaultSession = "none+i3";
    };
    udev.packages = [ pkgs.yubikey-personalization ];
    pcscd.enable = true;
    gnome.gnome-keyring.enable = true; # For remembering nextcloud login, among other things
    gvfs.enable = true; # For Trash
  };
  programs.hyprland.enable = true;
  programs.sway.enable = true;

  xdg.portal.enable = true;

  environment.systemPackages = with pkgs; [ yubioath-flutter ];

  environment.sessionVariables = {
    # GTK Theme won't display with GTK4 (e.g. nautilus) otherwise
    # Doesn't work in some scenarios, such as open containing folder in Firefox, when declared in home.sessionVariables
    GTK_THEME = (theme.gtkTheme pkgs).name;
  };

  # Enable OpenTabletDriver, GUI configurator is otd-gui
  hardware.opentabletdriver.enable = true;

  # Scanners
  hardware.sane.enable = true;

  # To prevent `Unit dconf.service not found.` after theming GTK in HM
  programs.dconf.enable = true;

  networking.hosts = {
    "192.168.0.26" = [ "elnuhub.local" ];
    "24.199.72.8" = [ "elnudrop.local" ];
  };

  #sound.enable = true;
  #hardware.pulseaudio.enable = true;
  #nixpkgs.config.pulseaudio = true;

  # rtkit is optional but recommended
  security.rtkit.enable = true;
  services.pipewire = {
    enable = true;
    alsa.enable = true;
    alsa.support32Bit = true;
    pulse.enable = true;
    # If you want to use JACK applications, uncomment this
    #jack.enable = true;
  };

  fonts = {
    enableDefaultPackages = false;
    packages = with pkgs; [
      noto-fonts-cjk-sans
      noto-fonts
      nerd-fonts.fira-code # required for icons
      twitter-color-emoji
    ];
  };

  hardware.graphics = {
    enable = true;
    enable32Bit = true; # Required for Touhou, Steam
  };
}