x11.nix (3957B)
1 # modules/features/desktop/x11.nix — what the X11 desktops (xfce.nix, i3.nix) 2 # share: the LightDM greeter, GTK in Rosé Pine, icons, cursor and fonts. 3 # 4 # These exist for virtual machines. Niri (Wayland) wants working 3D, which 5 # VirtualBox, Hyper-V, Proxmox and plenty of VMware setups do not give a 6 # guest; X11 with a software renderer runs everywhere. Imported by the 7 # generic host only when `desktop` is "xfce" or "i3" (modules/hosts/generic). 8 # 9 # Rosé Pine for GTK: nixpkgs dropped rose-pine-gtk-theme (it needed the dead 10 # GTK2 murrine engine), so this is adw-gtk3-dark recoloured through GTK's 11 # named colours — adw-gtk3 reads @define-color overrides from gtk.css, so 12 # every GTK3/4 window, the XFCE panel and Thunar pick the palette up. 13 { ... }: 14 let 15 # Rosé Pine (main) 16 rp = { 17 base = "#191724"; 18 surface = "#1f1d2e"; 19 overlay = "#26233a"; 20 muted = "#6e6a86"; 21 subtle = "#908caa"; 22 text = "#e0def4"; 23 love = "#eb6f92"; 24 gold = "#f6c177"; 25 rose = "#ebbcba"; 26 pine = "#31748f"; 27 foam = "#9ccfd8"; 28 iris = "#c4a7e7"; 29 hlMed = "#403d52"; 30 }; 31 32 gtkCss = '' 33 @define-color accent_color ${rp.iris}; 34 @define-color accent_bg_color ${rp.iris}; 35 @define-color accent_fg_color ${rp.base}; 36 @define-color destructive_color ${rp.love}; 37 @define-color destructive_bg_color ${rp.love}; 38 @define-color success_color ${rp.foam}; 39 @define-color warning_color ${rp.gold}; 40 @define-color error_color ${rp.love}; 41 @define-color window_bg_color ${rp.base}; 42 @define-color window_fg_color ${rp.text}; 43 @define-color view_bg_color ${rp.surface}; 44 @define-color view_fg_color ${rp.text}; 45 @define-color headerbar_bg_color ${rp.surface}; 46 @define-color headerbar_fg_color ${rp.text}; 47 @define-color headerbar_backdrop_color ${rp.base}; 48 @define-color card_bg_color ${rp.surface}; 49 @define-color card_fg_color ${rp.text}; 50 @define-color popover_bg_color ${rp.overlay}; 51 @define-color popover_fg_color ${rp.text}; 52 @define-color dialog_bg_color ${rp.overlay}; 53 @define-color dialog_fg_color ${rp.text}; 54 @define-color sidebar_bg_color ${rp.surface}; 55 @define-color sidebar_fg_color ${rp.text}; 56 ''; 57 in 58 { 59 flake.lib.rosePine = rp; 60 61 flake.nixosModules.desktop-x11 = 62 { pkgs, lib, user, ... }: 63 { 64 services.xserver.enable = true; 65 66 services.xserver.displayManager.lightdm = { 67 enable = true; 68 background = rp.base; # a colour, not an image: nothing to fetch 69 greeters.gtk = { 70 enable = true; 71 theme = { name = "adw-gtk3-dark"; package = pkgs.adw-gtk3; }; 72 iconTheme = { name = "rose-pine"; package = pkgs.rose-pine-icon-theme; }; 73 cursorTheme = { name = "BreezeX-RosePine-Linux"; package = pkgs.rose-pine-cursor; size = 24; }; 74 indicators = [ "~host" "~spacer" "~clock" "~spacer" "~session" "~power" ]; 75 clock-format = "%H:%M %a %d %b"; 76 }; 77 }; 78 79 fonts.packages = with pkgs; [ inter ]; 80 81 environment.systemPackages = with pkgs; [ 82 kitty # the terminal both desktops open 83 xclip # clipboard from the shell under X11 84 ]; 85 86 home-manager.users.${user} = { 87 gtk = { 88 enable = true; 89 theme = { name = "adw-gtk3-dark"; package = pkgs.adw-gtk3; }; 90 iconTheme = { name = "rose-pine"; package = pkgs.rose-pine-icon-theme; }; 91 cursorTheme = { name = "BreezeX-RosePine-Linux"; package = pkgs.rose-pine-cursor; size = 24; }; 92 font = { name = "Inter"; size = 10; }; 93 gtk3.extraCss = gtkCss; 94 gtk4.extraCss = gtkCss; 95 }; 96 home.pointerCursor = { 97 enable = true; 98 name = "BreezeX-RosePine-Linux"; 99 package = pkgs.rose-pine-cursor; 100 size = 24; 101 x11.enable = true; 102 gtk.enable = true; 103 }; 104 dconf.settings."org/gnome/desktop/interface".color-scheme = "prefer-dark"; 105 }; 106 }; 107 }