aboutsummaryrefslogtreecommitdiffstats
path: root/modules/desktop/xdg/default.nix
blob: 50d2b34ee936041f18d2f7149a23e5563c626007 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# XDG Desktop Portal configuration
{
  config,
  lib,
  pkgs,
  ...
}:
let
  gtkCss = builtins.readFile (
    config.scheme {
      template = builtins.readFile ./style.mustache.css;
      extension = ".css";
    }
  );
in
{
  config = lib.mkIf config.desktop.enable {
    dconf.enable = true;

    xdg.portal = {
      enable = true;
      extraPortals = with pkgs; [
        xdg-desktop-portal-termfilechooser
        xdg-desktop-portal-gtk
      ];
      configPackages = [ pkgs.niri ];
      config.common = {
        "org.freedesktop.impl.portal.FileChooser" = [ "termfilechooser" ];
        default = [ "gtk" ];
      };
      xdgOpenUsePortal = true;
    };

    gtk = {
      enable = true;
      font = {
        name = config.fonts.normal;
        size = config.fonts.size;
      };
      theme = {
        name = "Adwaita-dark";
        package = pkgs.gnome-themes-extra;
      };
      iconTheme = {
        name = "Adwaita";
        package = pkgs.adwaita-icon-theme;
      };
      cursorTheme = {
        name = "Adwaita";
        package = pkgs.adwaita-icon-theme;
        size = 20;
      };
      colorScheme = "dark";
      gtk3.extraCss = gtkCss;
      gtk4 = {
        # GTK 4/libadwaita does not support loading GTK 3 themes; use the
        # Base16 CSS above without Home Manager's compatibility workaround.
        theme = null;
        extraCss = gtkCss;
      };
    };
  };
}