# General Desktop-related config
{ pkgs, inputs, ... }:
let
  unstablepkgs = inputs.nixpkgs-unstable.legacyPackages.${pkgs.system};
in
{
  imports = [
    ./desktop-software.nix
    ./fonts.nix
  ];
  environment.systemPackages = with pkgs; [
    screen-message
    qbittorrent
    gajim
    imv
    swayimg
    mpv
    evince
    brightnessctl
    pulsemixer
    cmus
    termusic
    gsettings-desktop-schemas
    xdg-utils
    qt5.qtwayland
    bashmount
    audacity
    spotify-player
    zathura
    ncdu
  ];

  # 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;
  programs.sway = {
    enable = true;
    wrapperFeatures.gtk = true;
    extraSessionCommands = ''
      export SDL_VIDEODRIVER=wayland
      export QT_QPA_PLATFORM=wayland-egl
      export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
      export QT_QPA_PLATFORMTHEME="gnome"
      export QT_STYLE_OVERRIDE="adwaita-dark"
      # export WLR_DRM_NO_ATOMIC=1
    '';
    extraPackages = with pkgs; [
      adwaita-icon-theme
      bluetui
      foot
      gammastep
      graphicsmagick
      grim
      unstablepkgs.i3status-rust
      impala
      kanshi
      swaynotificationcenter
      pamixer
      rofi-wayland
      slurp
      swayidle
      swaylock
      wl-clipboard
      wl-mirror
      xfce.thunar
    ];
  };
  environment.sessionVariables = {
    GTK_THEME = "Adwaita:dark";
  };
  xdg.portal = {
    enable = true;
    wlr.enable = true;
    extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
  };

  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.sway}/bin/sway";
      };
    };
  };

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