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

let
  theme = import ../modules/theme;
in
{
  services = {
   xserver = {
      enable = true;
      xkbOptions = "caps:escape";
      displayManager = {
        lightdm = {
          enable = true;
          greeters.gtk = {
            enable = true;
            theme = theme.gtkTheme pkgs;
          };
          background = theme.wallpaper;
        };
        defaultSession = "none+i3";
      };
      windowManager.i3.enable = true;
    };
    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
  };

  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;

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

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

  fonts = {
    enableDefaultFonts = false;
    fonts = with pkgs; [
      # noto-fonts-cjk doesn't display in Discord for some reason
      # mplus-outline-fonts.osdnRelease is no longer updated and is now mplus-outline-fonts.githubRelease,
      # but で renders weird for some reason in the GitHub release, so I'm sticking to OSDN
      mplus-outline-fonts.osdnRelease
      noto-fonts
      (nerdfonts.override { fonts = [ "FiraCode" ]; }) # required for icons
      (pkgs.callPackage ../modules/twemoji {})
    ];
  };
}
