From 3e2fe6021961ca442b696ab014a459302262b1b8 Mon Sep 17 00:00:00 2001 From: Scott Scoble Date: Sun, 17 May 2026 01:16:27 -0700 Subject: [PATCH] Add emulation module (steam, wine, retroarch, pcsx2, ppsspp) + pi config --- flake.nix | 9 ++++-- home/pi.nix | 68 +++++++++++++++++++++++++++++++++++++++++++ modules/emulation.nix | 32 ++++++++++++++++++++ modules/laptop.nix | 2 +- 4 files changed, 107 insertions(+), 4 deletions(-) create mode 100644 home/pi.nix create mode 100644 modules/emulation.nix diff --git a/flake.nix b/flake.nix index 4a4426d..972706b 100644 --- a/flake.nix +++ b/flake.nix @@ -43,7 +43,8 @@ imports = [ ./home/sscoble.nix ./home/desktop.nix - ./home/wgu.nix + ./home/pi.nix + ./home/wgu.nix ]; }; }; @@ -65,7 +66,8 @@ users.sscoble = { imports = [ ./home/sscoble.nix - ./home/wgu.nix + ./home/pi.nix + ./home/wgu.nix ]; }; }; @@ -77,7 +79,8 @@ pkgs = nixpkgs.legacyPackages.${darwinSystem}; modules = [ ./home/sscoble.nix - ./home/wgu.nix + ./home/pi.nix + ./home/wgu.nix { home.homeDirectory = "/Users/sscoble"; nixpkgs.config.allowUnfree = true; diff --git a/home/pi.nix b/home/pi.nix new file mode 100644 index 0000000..3c90026 --- /dev/null +++ b/home/pi.nix @@ -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" + ]; + }; +} diff --git a/modules/emulation.nix b/modules/emulation.nix new file mode 100644 index 0000000..c091fb7 --- /dev/null +++ b/modules/emulation.nix @@ -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" ]; + }; +} diff --git a/modules/laptop.nix b/modules/laptop.nix index 1896d03..d722a93 100644 --- a/modules/laptop.nix +++ b/modules/laptop.nix @@ -1,7 +1,7 @@ { config, pkgs, ... }: { - imports = [ ../hardware-configuration.nix ]; + imports = [ ../hardware-configuration.nix ./emulation.nix ]; # === System Packages === environment.systemPackages = with pkgs; [