Add emulation module (steam, wine, retroarch, pcsx2, ppsspp) + pi config

This commit is contained in:
Scott Scoble 2026-05-17 01:16:27 -07:00
parent b00ae1feb3
commit 3e2fe60219
4 changed files with 107 additions and 4 deletions

View file

@ -43,7 +43,8 @@
imports = [ imports = [
./home/sscoble.nix ./home/sscoble.nix
./home/desktop.nix ./home/desktop.nix
./home/wgu.nix ./home/pi.nix
./home/wgu.nix
]; ];
}; };
}; };
@ -65,7 +66,8 @@
users.sscoble = { users.sscoble = {
imports = [ imports = [
./home/sscoble.nix ./home/sscoble.nix
./home/wgu.nix ./home/pi.nix
./home/wgu.nix
]; ];
}; };
}; };
@ -77,7 +79,8 @@
pkgs = nixpkgs.legacyPackages.${darwinSystem}; pkgs = nixpkgs.legacyPackages.${darwinSystem};
modules = [ modules = [
./home/sscoble.nix ./home/sscoble.nix
./home/wgu.nix ./home/pi.nix
./home/wgu.nix
{ {
home.homeDirectory = "/Users/sscoble"; home.homeDirectory = "/Users/sscoble";
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;

68
home/pi.nix Normal file
View file

@ -0,0 +1,68 @@
{ config, pkgs, ... }:
{
# === Pi coding agent configuration ===
# Managed via home-manager — API keys live here because the flake repo is private.
# If you need to move secrets out, create /etc/nixos/pi-secrets.json and source it.
home.file.".pi/agent/models.json".text = builtins.toJSON {
providers = {
openrouter = {
baseUrl = "https://openrouter.ai/api/v1";
api = "openai-completions";
apiKey = "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";
};
ollama-cloud = {
baseUrl = "https://ollama.com/v1";
api = "openai-completions";
apiKey = "1658177a8be642d8a25783a70116f74f.5St4R7VUOyaeVPW6OEB0GGG0";
compat = {
supportsDeveloperRole = false;
supportsReasoningEffort = false;
};
models = [
{ id = "kimi-k2.6:cloud"; }
{ id = "glm-5.1:cloud"; }
{ id = "gemma4:31b-cloud"; }
{ id = "devstral-small-2:24b-cloud"; }
{ id = "devstral-2:123b-cloud"; }
{ id = "cogito-2.1:671b-cloud"; }
{ id = "gemini-3-flash-preview:cloud"; }
{ id = "nematron-3-super:cloud"; }
{ id = "deepseek-v3.1:671b"; }
{ id = "deepseek-v3.2"; }
{ id = "deepseek-v4-flash"; }
{ id = "deepseek-v4-pro"; }
];
};
};
};
home.file.".pi/agent/settings.json".text = builtins.toJSON {
defaultProvider = "ollama-cloud";
defaultModel = "deepseek-v4-pro";
packages = [
"npm:pi-subagents"
"npm:pi-mcp-adapter"
];
defaultThinkingLevel = "high";
enableInstallTelemetry = false;
collapseChangelog = true;
quietStartup = true;
doubleEscapeAction = "tree";
treeFilterMode = "default";
enabledModels = [
"ollama-cloud/deepseek-v4-flash"
"ollama-cloud/kimi-k2.6:cloud"
"ollama-cloud/glm-5.1:cloud"
"ollama-cloud/gemma4:31b-cloud"
"ollama-cloud/devstral-small-2:24b-cloud"
"ollama-cloud/devstral-2:123b-cloud"
"ollama-cloud/cogito-2.1:671b-cloud"
"ollama-cloud/gemini-3-flash-preview:cloud"
"ollama-cloud/nematron-3-super:cloud"
"ollama-cloud/deepseek-v3.1:671b"
"ollama-cloud/deepseek-v3.2"
];
};
}

32
modules/emulation.nix Normal file
View file

@ -0,0 +1,32 @@
{ config, pkgs, ... }:
{
# === Gaming / Emulation ===
# Emulators, Steam, Wine for Windows apps, and Xbox One controller support.
# Modern kernels have xpad built-in for Xbox One controllers.
# User is added to the "input" group below for controller permissions.
# Steam — proper NixOS module (sets up FHS, udev, etc.)
programs.steam = {
enable = true;
remotePlay.openFirewall = true; # Steam Remote Play
dedicatedServer.openFirewall = true; # Factorio headless etc.
};
environment.systemPackages = with pkgs; [
# Windows apps via Wine (Logos Bible Software, etc.)
wineWow64Packages.stable
# Retroarch + cores (NES/SNES/PS1)
retroarch
# Standalone PS2 emulator
pcsx2
# Standalone PSP emulator
ppsspp-sdl
];
# Add user to input group for controller access
# (xpad kernel module handles Xbox One controllers automatically)
users.users.sscoble = {
extraGroups = [ "input" ];
};
}

View file

@ -1,7 +1,7 @@
{ config, pkgs, ... }: { config, pkgs, ... }:
{ {
imports = [ ../hardware-configuration.nix ]; imports = [ ../hardware-configuration.nix ./emulation.nix ];
# === System Packages === # === System Packages ===
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [