summary refs log tree commit diff
path: root/modules/gnome.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/gnome.nix')
-rw-r--r--modules/gnome.nix64
1 files changed, 64 insertions, 0 deletions
diff --git a/modules/gnome.nix b/modules/gnome.nix
new file mode 100644
index 0000000..7fde00d
--- /dev/null
+++ b/modules/gnome.nix
@@ -0,0 +1,64 @@
+{ config, pkgs, ... }:
+
+{
+  services.xserver.enable = true;
+
+  # i dont like how the icon looks :)
+  services.xserver.excludePackages = [ pkgs.xterm ];
+
+  services.xserver.displayManager.gdm.enable = true;
+  services.xserver.desktopManager.gnome.enable = true;
+
+  environment.gnome.excludePackages = with pkgs; [
+    gnome-console
+  ];
+
+  environment.systemPackages = (with pkgs.gnome; [
+    gnome-terminal gnome-tweaks dconf-editor
+  ]) ++ (with pkgs.gnomeExtensions; [
+    runcat vitals
+  ]);
+
+  # legacy apps dark mode support
+  services.xserver.desktopManager.gnome.extraGSettingsOverrides = ''
+    # set dark theme for legacy applications
+    [org.gnome.desktop.interface]
+    gtk-theme="Adwaita"
+
+    # minimize windows when middle-clicking on titlebar
+    [org.gnome.desktop.wm.preferences]
+    action-middle-click-titlebar="minimize"
+  '';
+
+  environment.etc = {
+    "xdg/gtk-2.0/gtkrc".text = ''
+      gtk-application-prefer-dark-theme = 1
+    '';
+    "xdg/gtk-3.0/settings.ini".text = ''
+      [Settings]
+      gtk-application-prefer-dark-theme = 1
+    '';
+    "xdg/gtk-4.0/settings.ini".text = ''
+      [Settings]
+      gtk-application-prefer-dark-theme = 1
+    '';
+  };
+
+  # enable triple buffering which makes mutter supposedly feel smoother
+  nixpkgs.overlays = [
+    # GNOME 46: triple-buffering-v4-46
+    (final: prev: {
+      gnome = prev.gnome.overrideScope (gnomeFinal: gnomePrev: {
+        mutter = gnomePrev.mutter.overrideAttrs (old: {
+          src = pkgs.fetchFromGitLab  {
+            domain = "gitlab.gnome.org";
+            owner = "vanvugt";
+            repo = "mutter";
+            rev = "triple-buffering-v4-46";
+            hash = "sha256-C2VfW3ThPEZ37YkX7ejlyumLnWa9oij333d5c4yfZxc=";
+          };
+        });
+      });
+    })
+  ];
+}