terra: add Ryzen 9 5900X desktop (Hyprland, tailnet, dev tools)
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).
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
{ 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
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
# Hyprland (wayland) desktop: compositor, login manager, audio, portals.
|
||||
# Reusable for any host that wants a local GUI session (currently: terra).
|
||||
{
|
||||
programs.hyprland.enable = true;
|
||||
|
||||
services.greetd = {
|
||||
enable = true;
|
||||
settings.default_session.command =
|
||||
"${pkgs.tuigreet}/bin/tuigreet --time --cmd Hyprland";
|
||||
};
|
||||
|
||||
# Audio (pipewire replaces pulseaudio/jack).
|
||||
security.rtkit.enable = true;
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
pulse.enable = true;
|
||||
};
|
||||
|
||||
# Screen-share / file-picker portals for wayland apps.
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
extraPortals = [ pkgs.xdg-desktop-portal-hyprland ];
|
||||
};
|
||||
|
||||
hardware.graphics.enable = true; # OpenGL/Vulkan for the compositor + apps
|
||||
services.libinput.enable = true;
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
alacritty
|
||||
];
|
||||
|
||||
networking.networkmanager.enable = true;
|
||||
}
|
||||
Reference in New Issue
Block a user