Replaces CachyOS on the OS SSD (Kingston SA400, disko-managed). Dev-data disks (sdc ext4 /mnt/hdd_01, LVM vg_ssd /mnt/ssd_01) stay out of disko and are mounted as plain filesystems so they're never wiped. Desktop split into services/desktop/desktop-hyprland.nix (session: compositor, greeter, audio, portals) and desktop-apps.nix (things darman actually launches, including claude-code — allowlisted alongside the other unfree desktop apps).
39 lines
1.3 KiB
Nix
39 lines
1.3 KiB
Nix
{ 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
|
|
}
|