Add emulation module (steam, wine, retroarch, pcsx2, ppsspp) + pi config
This commit is contained in:
parent
b00ae1feb3
commit
3e2fe60219
4 changed files with 107 additions and 4 deletions
|
|
@ -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
68
home/pi.nix
Normal 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
32
modules/emulation.nix
Normal 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" ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -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; [
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue