{ pkgs, lib, ... }: # Desktop applications for a workstation host (currently: terra). Split from # desktop-hyprland.nix, which owns the *session* (compositor, greeter, audio, # portals); this owns the things the user actually launches inside it. { # gitkraken / jetbrains-toolbox / steam are unfree. Allow exactly those # rather than flipping allowUnfree globally, so an unfree dep sneaking into # a server host's closure still fails loudly. nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "gitkraken" "jetbrains-toolbox" "steam" "steam-unwrapped" "steam-run" "claude-code" ]; # Steam needs its own module (not just the package): it sets up the FHS # wrapper, the udev rules for controllers, and the 32-bit graphics stack. programs.steam = { enable = true; remotePlay.openFirewall = true; # in-home streaming dedicatedServer.openFirewall = false; }; hardware.graphics.enable32Bit = true; # required by steam's 32-bit games environment.systemPackages = with pkgs; [ zed-editor protonplus # manages Proton-GE / Wine-GE builds for steam + lutris gitkraken jetbrains-toolbox kdePackages.dolphin ]; fonts.packages = [ pkgs.nerd-fonts.departure-mono ]; # alacritty's font, see hosts/terra/home.nix }