NixDaemon

NixOS pentest workstation as one flake — IceBreaker's successor
git clone https://git.daemon-sec.xyz/NixDaemon.git
Log | Files | Refs | README

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 }