Add Steam Deck (nix-deck) configuration with Jovian-NixOS and remote building

- Add Jovian-NixOS integration for Steam Deck hardware support
- Create nix-deck machine configuration with SteamOS role
- Add jovian-compat.nix for NixOS 25.05 compatibility (remove in 25.11+)
- Create remote-build role for distributed builds
- Configure zix790prors as build host
- Configure nix-book and nix-deck to use remote builder with fallback
- Add comprehensive setup documentation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-17 15:42:33 -08:00
parent 4ea9437bb0
commit 2283b0a6df
12 changed files with 646 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
{ pkgs, ... }:
{
imports = [
./hardware-configuration.nix
];
roles = {
audio.enable = true;
bluetooth.enable = true;
desktop = {
enable = true;
wayland = true;
gaming.enable = true;
kde = true;
sddm = true;
steamos = {
enable = true;
autoStart = false;
desktopSession = "plasmawayland";
};
};
remote-build.builders = [{
hostName = "zix790prors";
maxJobs = 16;
speedFactor = 4; # Prefer remote heavily on Steam Deck
}];
users = {
enable = true;
extraGroups = [ "video" ];
};
};
# Bootloader
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
networking.hostName = "nix-deck";
networking.networkmanager.enable = true;
system.stateVersion = "25.05";
}

View File

@@ -0,0 +1,37 @@
# This is a placeholder hardware configuration for the Steam Deck.
# Run `nixos-generate-config --show-hardware-config` on the actual device
# to generate the real hardware configuration, then merge the jovian settings below.
{ config, lib, pkgs, modulesPath, ... }:
{
imports = [ ];
# Steam Deck specific hardware configuration
jovian.devices.steamdeck = {
enable = true;
autoUpdate = false; # Set to true if you want automatic firmware updates
};
# TODO: Replace this with actual hardware configuration from the Steam Deck
# Run `nixos-generate-config --show-hardware-config` on the device and merge it here
# Minimal placeholder configuration to allow flake to build
boot.initrd.availableKernelModules = [ ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
fileSystems."/" = {
device = "/dev/disk/by-label/nixos";
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-label/boot";
fsType = "vfat";
};
swapDevices = [ ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}