# kusanagi-only desktop extras. The shared niri/dark/audio/firefox base comes # from ../../profiles/desktop.nix (imported in ./default.nix); this file holds # the workstation's GNOME session, printing/scanning, pro-audio, richer fonts, # and cursor theme. (Hardware-specific audio/NAS/server config lives in # ./default.nix.) { pkgs, ... }: { # --- X11 + GNOME (alongside the niri session) --- services.xserver.enable = true; services.xserver.xkb = { layout = "us"; variant = ""; }; services.displayManager.gdm.enable = false; services.desktopManager.gnome.enable = true; # --- Printing / discovery / disks --- services.printing = { enable = true; drivers = with pkgs; [ gutenprint ]; }; # mDNS: printer discovery, and resolves kusanagi's *.local NAS names. services.avahi = { enable = true; nssmdns4 = true; openFirewall = true; }; # prevent auto-mounting optical disks services.udisks2.enable = true; # --- Pro audio (extends the shared pipewire base) --- security.rtkit.enable = true; services.pipewire = { alsa.support32Bit = true; jack.enable = true; wireplumber.enable = true; }; # --- GPG: forward the ssh-agent socket (workstation signs/auths via GPG) --- programs.gnupg.agent.enableSSHSupport = true; # --- Graphics: 32-bit for Steam/Wine --- hardware.graphics.enable32Bit = true; # --- Fonts: workstation extras + defaults (base packages from shared) --- fonts = { packages = with pkgs; [ noto-fonts-cjk-sans noto-fonts-cjk-serif inter ibm-plex public-sans ]; fontconfig = { defaultFonts = { monospace = [ "Berkeley Mono" "Liberation Mono" "Symbols Nerd Font" ]; sansSerif = [ "Liberation Sans" "Noto Sans" ]; serif = [ "Liberation Serif" ]; emoji = [ "Nerd Font Symbols Only" ]; }; # Force ui-sans-serif and system-ui to resolve correctly localConf = '' system-ui Liberation Sans ui-sans-serif Liberation Sans ''; }; fontDir.enable = true; }; # --- Cursor / renderer --- environment.sessionVariables = { GSK_RENDERER = "gl"; XCURSOR_THEME = "Bibata-Modern-Classic"; XCURSOR_SIZE = "24"; HYPRCURSOR_THEME = "Bibata-Modern-Classic"; HYPRCURSOR_SIZE = "24"; }; # --- User: desktop groups (niri essentials + printing). Hardware groups # (cdrom/optical/sg/scanner) stay in ./default.nix. --- users.users.henz.extraGroups = [ "audio" "lp" "input" ]; # --- Desktop tools specific to kusanagi (shared ones come from the profile) --- environment.systemPackages = with pkgs; [ waybar networkmanagerapplet ]; }