/ system / nixos / gnome / default.nix
default.nix
  1  {
  2    config,
  3    lib,
  4    pkgs,
  5    ...
  6  }:
  7  let
  8    inherit (lib) mkIf;
  9  
 10    cfg = config.dusk.system.nixos.desktop.gnome;
 11  in
 12  {
 13    imports = [ ./drone.nix ];
 14  
 15    config = mkIf cfg.enable {
 16      environment.systemPackages = with pkgs; [
 17        gnome-monitor-config
 18        gnomeExtensions.pop-shell
 19        newsflash
 20      ];
 21  
 22      home-manager.users.${config.dusk.username} =
 23        { lib, ... }:
 24        let
 25          inherit (lib.hm.gvariant) mkUint32;
 26        in
 27        {
 28          dconf = {
 29            enable = true;
 30            settings = {
 31              "org/gnome/desktop/interface" = {
 32                color-scheme = "prefer-dark";
 33                gtk-theme = "palenight";
 34              };
 35  
 36              "org/gnome/desktop/wm/keybindings" = {
 37                close = [ "<Super>q" ];
 38                maximize = [ ];
 39                minimize = [ ];
 40                move-to-monitor-down = [ ];
 41                move-to-monitor-left = [ ];
 42                move-to-monitor-right = [ ];
 43                move-to-monitor-up = [ ];
 44                move-to-workspace-1 = [ "<Shift><Super>1" ];
 45                move-to-workspace-2 = [ "<Shift><Super>2" ];
 46                move-to-workspace-3 = [ "<Shift><Super>3" ];
 47                move-to-workspace-4 = [ "<Shift><Super>4" ];
 48                move-to-workspace-5 = [ "<Shift><Super>5" ];
 49                move-to-workspace-6 = [ "<Shift><Super>6" ];
 50                move-to-workspace-7 = [ "<Shift><Super>7" ];
 51                move-to-workspace-8 = [ "<Shift><Super>8" ];
 52                move-to-workspace-9 = [ "<Shift><Super>9" ];
 53                move-to-workspace-down = [ ];
 54                move-to-workspace-up = [ ];
 55                switch-to-workspace-1 = [ "<Super>1" ];
 56                switch-to-workspace-2 = [ "<Super>2" ];
 57                switch-to-workspace-3 = [ "<Super>3" ];
 58                switch-to-workspace-4 = [ "<Super>4" ];
 59                switch-to-workspace-5 = [ "<Super>5" ];
 60                switch-to-workspace-6 = [ "<Super>6" ];
 61                switch-to-workspace-7 = [ "<Super>7" ];
 62                switch-to-workspace-8 = [ "<Super>8" ];
 63                switch-to-workspace-9 = [ "<Super>9" ];
 64                switch-to-workspace-down = [ ];
 65                switch-to-workspace-left = [ ];
 66                switch-to-workspace-right = [ ];
 67                switch-to-workspace-up = [ ];
 68                toggle-fullscreen = [ "<Super>f" ];
 69                toggle-maximized = [ ];
 70                unmaximize = [ ];
 71              };
 72  
 73              "org/gnome/shell" = {
 74                disable-user-extensions = false;
 75                enabled-extensions = with pkgs.gnomeExtensions; [ pop-shell.extensionUuid ];
 76                favorite-apps = [ ];
 77              };
 78  
 79              "org/gnome/shell/extensions/pop-shell" = {
 80                gap-inner = mkUint32 4;
 81                gap-outer = mkUint32 4;
 82              };
 83  
 84              "org/gnome/settings-daemon/plugins/media-keys" = {
 85                screensaver = [ "<super>escape" ];
 86                www = [ "<super>b" ];
 87                terminal = [ "<super>enter" ];
 88              };
 89            };
 90          };
 91  
 92          gtk = {
 93            enable = true;
 94  
 95            cursorTheme = {
 96              name = "Adwaita";
 97              package = pkgs.adwaita-icon-theme;
 98            };
 99  
100            iconTheme = {
101              name = "Papirus-Dark";
102              package = pkgs.papirus-icon-theme;
103            };
104  
105            theme = {
106              name = "palenight";
107              package = pkgs.palenight-theme;
108            };
109  
110            gtk3.extraConfig.gtk-application-prefer-dark-theme = true;
111            gtk4.extraConfig.gtk-application-prefer-dark-theme = true;
112          };
113        };
114  
115      services = {
116        xserver = {
117          enable = true;
118  
119          desktopManager.gnome.enable = true;
120          displayManager.gdm = {
121            enable = true;
122            wayland = true;
123            autoSuspend = false;
124          };
125        };
126  
127        udev.packages = with pkgs; [ gnome-settings-daemon ];
128      };
129  
130      xdg = {
131        portal = {
132          enable = true;
133  
134          extraPortals = with pkgs; [
135            xdg-desktop-portal-gnome
136            xdg-desktop-portal-gtk
137            xdg-desktop-portal-wlr
138          ];
139        };
140      };
141    };
142  }