# General Desktop-related config
{ pkgs, inputs, ... }:
{
  nixpkgs.overlays = [ inputs.niri.overlays.niri ];

  programs.niri.enable = true;

  imports = [
    ./desktop-software.nix
    ./fonts.nix
  ];
  environment.systemPackages =
    let
      xwayland-satellite-git = pkgs.xwayland-satellite.overrideAttrs (
        final: prev: {
          version = "git";
          cargoHash = "sha256-MaF2FyR3HvQAKkZKa8OO/5jbO64/Ncv7+JqHda4jN50=";
          src = pkgs.fetchFromGitHub {
            owner = "Supreeeme";
            repo = "xwayland-satellite";
            rev = "cca74a5f6b23742d77dc5db4312dfc40fd4a0fcc";
            sha256 = "sha256-YZ+axsuNsgIKWfnRkt6Qa9UoKfUOIWf42vNUonXxmxM=";
          };
          cargoDeps = pkgs.rustPlatform.fetchCargoTarball {
            inherit (final) pname src version;
            hash = final.cargoHash;
          };
        }
      );
    in
    with pkgs;
    [
      screen-message
      qbittorrent
      gajim
      imv
      mpv
      evince
      brightnessctl
      pulsemixer
      cmus
      termusic
      gsettings-desktop-schemas
      xdg-utils
      qt5.qtwayland
      bashmount
      audacity
      spotify-player
      zathura
      ncdu
      adwaita-icon-theme
      bluetui
      gammastep
      graphicsmagick
      i3status-rust
      impala
      kanshi
      pamixer
      swayidle
      swaylock
      wl-clipboard
      xfce.thunar
      banana-cursor
      fuzzel
      alacritty
      i3bar-river
      mako
      swww
      oculante
      xwayland-satellite-git
    ];

  # Enable sound.
  security.rtkit.enable = true;

  services.pipewire = {
    enable = true;
    alsa.enable = true;
    pulse.enable = true;
  };

  hardware.bluetooth = {
    enable = true;
    package = pkgs.bluez;
  };

  programs.zsh.vteIntegration = true;
  programs.bash.vteIntegration = true;
  services.upower.enable = true;

  services.acpid.enable = true;
  programs.light.enable = true;

  programs.xwayland.enable = true;

  environment.sessionVariables = {
    GTK_THEME = "Adwaita:dark";
  };
  xdg.portal = {
    enable = true;
    wlr.enable = true;
    extraPortals = [ pkgs.xdg-desktop-portal-gnome ];
  };

  services.udisks2.enable = true;
  environment.shellAliases = {
    # mounting shit
    mnt = "udisksctl mount -b";
    umnt = "udisksctl unmount -b";
    unlock = "udisksctl unlock -b";
    lock = "udisksctl lock -b";
    # easier navigation
    pwc = "pwd|wl-copy";
    cdp = "cd $(wl-paste)";
  };

  qt = {
    enable = true;
    platformTheme = "gnome";
    style = "adwaita-dark";
  };

  services.gnome.gnome-keyring.enable = true;
  security.pam.services.greetd.enableGnomeKeyring = true;

  services.greetd = {
    enable = true;
    settings = {
      default_session = {
        command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --greeting \"$(${pkgs.fortune}/bin/fortune -s)\" --cmd ${pkgs.niri-stable}/bin/niri-session";
      };
    };
  };

  programs.gnupg.agent.pinentryPackage = pkgs.pinentry-curses;
  programs.ssh = {
    startAgent = true;
    enableAskPassword = false;
    extraConfig = ''
      AddKeysToAgent yes
    '';
  };
}