{ config, pkgs, ... }:

let
  waybar = pkgs.waybar.override {
    pulseSupport = true;
  };
in
{
  programs.sway = {
    enable = true;
    extraPackages = with pkgs; [
      swaylock
      swayidle
      wl-clipboard
      qt5.qtwayland
      waybar
      mako
      bemenu
      grim
      slurp
      xwayland
      lxqt.lxqt-openssh-askpass
      xorg.xrdb

      libnotify
      gnome3.networkmanagerapplet
      gnome3.networkmanager_openvpn
      gvfs

      qt5ct
      libsForQt5.qtstyleplugin-kvantum
      gnome_themes_standard
      adapta-gtk-theme
      hicolor-icon-theme
      arc-icon-theme
      vanilla-dmz
    ];

    extraSessionCommands = ''
      export SSH_ASKPASS=lxqt-openssh-askpass
      export MOZ_ENABLE_WAYLAND=1
      export QT_QPA_PLATFORM=wayland
      export QT_QPA_PLATFORMTHEME=qt5ct
      export QT_WAYLAND_DISABLE_WINDOWDECORATION=1
      export SDL_VIDEODRIVER=wayland
      export _JAVA_AWT_WM_NONREPARENTING=1
      export BEMENU_BACKEND=wayland
    '';
  };

  fonts.fonts = with pkgs; [
    noto-fonts
    noto-fonts-cjk
    fira-mono
    fira-code
    fira-code-symbols
  ];

  environment.etc."dconf/profile/user".text = ''
    user-db:user
    system-db:system-wide
  '';

  environment.etc."dconf/db/system-wide.d/gnome".text = ''
    [org/gnome/desktop/interface]
    cursor-theme='Vanilla-DMZ'
    gtk-theme='Adapta'
    icon-theme='Arc'
    font-name='Noto Sans 10'
  '';

  programs.firejail = {
    enable = true;
    wrappedBinaries = {
      firefox = "${pkgs.firefox}/bin/firefox";
      chromium = "${pkgs.chromium}/bin/chromium";
    };
  };
  
  programs.light.enable = true;

  environment.systemPackages = with pkgs; [
    pcmanfm
    lxappearance
    pavucontrol
    pamixer
    gnumeric
    mpv
    keepassxc
    deadbeef
    lxqt.qterminal
    syncthing-gtk
    virtmanager
  ];

  i18n.inputMethod.enabled = "fcitx";
  i18n.inputMethod.fcitx.engines = with pkgs.fcitx-engines ; [ mozc ];
}