From 62041231b9ec3247a9f08cd46fad9fd69445de8e Mon Sep 17 00:00:00 2001 From: Yan Lin Date: Mon, 20 Oct 2025 14:57:36 +0200 Subject: [PATCH] add gnome to thinkpad --- hosts/nixos/thinkpad/home.nix | 20 +++++- hosts/nixos/thinkpad/system.nix | 38 +++++++++++ modules/gnome.nix | 109 ++++++++++++++++++++++++++++++++ 3 files changed, 165 insertions(+), 2 deletions(-) create mode 100644 modules/gnome.nix diff --git a/hosts/nixos/thinkpad/home.nix b/hosts/nixos/thinkpad/home.nix index e5149cd..38386f4 100644 --- a/hosts/nixos/thinkpad/home.nix +++ b/hosts/nixos/thinkpad/home.nix @@ -9,8 +9,24 @@ ../home-default.nix ../../../modules/syncthing.nix ../../../modules/tex.nix + ../../../modules/gnome.nix + ../../../modules/firefox.nix ]; - # Any ThinkPad-specific home configurations can be added here - # For example, laptop-specific aliases or scripts + # Enable GNOME configuration + programs.gnome-custom = { + enable = true; + }; + + # Enable Firefox browser + programs.firefox-custom = { + enable = true; + package = pkgs.firefox; + }; + + # ThinkPad-specific applications + home.packages = with pkgs; [ + obsidian + keepassxc + ]; } diff --git a/hosts/nixos/thinkpad/system.nix b/hosts/nixos/thinkpad/system.nix index bcae9d7..06128d7 100644 --- a/hosts/nixos/thinkpad/system.nix +++ b/hosts/nixos/thinkpad/system.nix @@ -114,6 +114,44 @@ jack.enable = true; }; + # GNOME Desktop Environment + services.xserver = { + enable = true; + displayManager.gdm.enable = true; + desktopManager.gnome.enable = true; + + # Keyboard layout + xkb = { + layout = "us"; + options = ""; + }; + }; + + # Exclude unwanted GNOME default packages + environment.gnome.excludePackages = with pkgs; [ + gnome-tour + epiphany # GNOME web browser + geary # GNOME email client + gnome-music + gnome-photos + gnome-maps + gnome-weather + gnome-contacts + gnome-clocks + simple-scan + totem # video player + yelp # help viewer + ]; + + # XDG portal for proper desktop integration + xdg.portal = { + enable = true; + extraPortals = with pkgs; [ + xdg-desktop-portal-gnome + xdg-desktop-portal-gtk + ]; + }; + # Touchpad configuration services.libinput = { enable = true; diff --git a/modules/gnome.nix b/modules/gnome.nix new file mode 100644 index 0000000..83d292d --- /dev/null +++ b/modules/gnome.nix @@ -0,0 +1,109 @@ +{ config, pkgs, lib, ... }: + +with lib; + +let + cfg = config.programs.gnome-custom; +in + +{ + options.programs.gnome-custom = { + enable = mkEnableOption "GNOME desktop environment configuration"; + }; + + config = mkIf cfg.enable { + # GNOME configuration via dconf + dconf.settings = { + # Interface settings + "org/gnome/desktop/interface" = { + color-scheme = "prefer-dark"; + gtk-theme = "Adwaita-dark"; + }; + + # Input sources - US English + "org/gnome/desktop/input-sources" = { + sources = [ (mkTuple [ "xkb" "us" ]) ]; + xkb-options = [ "" ]; + }; + + # Favorite applications in dash + "org/gnome/shell" = { + favorite-apps = [ + "org.gnome.Nautilus.desktop" + "firefox.desktop" + "obsidian.desktop" + "org.gnome.Console.desktop" + "org.keepassxc.KeePassXC.desktop" + ]; + }; + + # GNOME Terminal configuration with Gruvbox Dark theme (matching ghostty) + "org/gnome/terminal/legacy" = { + schema-version = mkUint32 3; + default-show-menubar = false; + theme-variant = "dark"; + }; + + # Default terminal profile + "org/gnome/terminal/legacy/profiles:" = { + default = "b1dcc9dd-5262-4d8d-a863-c897e6d979b9"; + list = [ "b1dcc9dd-5262-4d8d-a863-c897e6d979b9" ]; + }; + + # Terminal profile with Gruvbox Dark colors (matching ghostty config) + "org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9" = { + visible-name = "Default"; + + # Font settings - matching ghostty + use-system-font = false; + font = "JetBrainsMono Nerd Font Mono 14"; + + # Colors - Gruvbox Dark theme matching ghostty + use-theme-colors = false; + background-color = "rgb(20,25,31)"; # #14191f from ghostty + foreground-color = "rgb(235,219,178)"; # Gruvbox fg + + # Palette colors (Gruvbox Dark) + palette = [ + "rgb(40,40,40)" # black + "rgb(204,36,29)" # red + "rgb(152,151,26)" # green + "rgb(215,153,33)" # yellow + "rgb(69,133,136)" # blue + "rgb(177,98,134)" # magenta + "rgb(104,157,106)" # cyan + "rgb(168,153,132)" # white + "rgb(146,131,116)" # bright black + "rgb(251,73,52)" # bright red + "rgb(184,187,38)" # bright green + "rgb(250,189,47)" # bright yellow + "rgb(131,165,152)" # bright blue + "rgb(211,134,155)" # bright magenta + "rgb(142,192,124)" # bright cyan + "rgb(235,219,178)" # bright white + ]; + + # Cursor settings - matching ghostty + cursor-blink-mode = "off"; + cursor-shape = "block"; + + # Scrollback + scrollback-lines = 10000; + + # Bell + audible-bell = false; + + # Other preferences + use-transparent-background = false; + default-size-columns = 160; + default-size-rows = 40; + }; + + # Disable GNOME Software auto-updates + "org/gnome/software" = { + download-updates = false; + download-updates-notify = false; + }; + }; + }; +}