This commit is contained in:
2026-07-24 13:18:22 +01:00
parent d05b4a8483
commit 1f4f716de1
9 changed files with 352 additions and 129 deletions
+2 -30
View File
@@ -54,7 +54,8 @@
"@xberg-io/opencode-xberg"
"@xberg-io/opencode-crawlberg"
"@xberg-io/opencode-html-to-markdown"
"@xberg-io/opencode-liter-llm"
# "@xberg-io/opencode-liter-llm"
"opencode-plugin-litellm@latest"
"@xberg-io/opencode-tree-sitter-language-pack"
];
provider.litellm = {
@@ -64,35 +65,6 @@
baseURL = "https://9f5db439.fwds.scug.io/v1";
apiKey = "{env:SCUG_IO_API_KEY}";
};
models = {
"openai/Qwen3.6-35B-A3B" = {
id = "Qwen3.6-35B-A3B";
name = "Qwen3.6-35B-A3B";
family = "Qwen";
limit = {
context = 262144;
input = 262144;
output = 16384;
};
cost = {
input = 0.00002;
output = 0.00006;
};
provider = {
api = "openai";
};
modalities = {
input = [ "text" ];
output = [ "text" ];
};
status = "active";
reasoning = true;
temperature = false;
tool_call = true;
attachment = false;
experimental = false;
};
};
};
};
};
+222 -5
View File
@@ -1,10 +1,227 @@
{ den, modules, ... }:
{
den,
modules,
inputs,
...
}:
{
modules.pi-coding = {
homeManager = {
programs.pi-coding-agent = {
enable = true;
homeManager =
{ pkgs, ... }:
{
programs.pi-coding-agent = {
enable = true;
extraPackages = [
pkgs.nodejs
# pkgs.lean-lsp-mcp
];
package = pkgs.pi-coding-agent.overrideAttrs (
new: old: {
version = "0.81.1";
src = pkgs.fetchFromGitHub {
owner = "earendil-works";
repo = "pi";
tag = "v${new.version}";
hash = "sha256-xo3uoR7HceOCL3wqoMcacOe8WXP1o7ReAXne5t6Hgao=";
};
npmDepsHash = "sha256-lzKQZbnITzgV9koucsMno6f61ubBLYUcwQEXtak1r1s=";
# npmDepsHash = pkgs.lib.fakeHash;
# npmDepsHash = "sha256-lDoj/94tjJd4ZGU9WgrMOqNSmdpeCljU4c6jGX+TSDY=";
npmDeps = pkgs.fetchNpmDeps {
inherit (new) src;
name = "pi-coding-agent-0.81.1-npm-deps";
hash = new.npmDepsHash;
};
modelData = pkgs.fetchurl {
url = "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-${new.version}.tgz";
hash = "sha256-x53MD5DU370ZdNoz36P+OWZjGVpoM5sfVcEU2/ckDy8=";
# hash = pkgs.lib.fakeHash;
};
preConfigure = ''
mkdir -p packages/ai/src/providers/data
tar --extract --gzip --file=${new.modelData} \
--directory=packages/ai/src/providers/data \
--strip-components=4 \
package/dist/providers/data
'';
passthru.updateScript = pkgs.nix-update-script {
extraArgs = [
"--custom-dep"
"modelData"
];
};
}
);
settings = {
"litellm" = {
"providers" = {
"litellm" = {
"displayName" = "scuggo";
"baseUrl" = "https://9f5db439.fwds.scug.io";
"apiKey" = "$SCUG_IO_API_KEY";
"compat" = {
"sendSessionAffinityHeaders" = true;
};
};
};
"skills" = {
"enabled" = true;
};
"compat" = {
"sendSessionAffinityHeaders" = true;
};
"mcp" = {
"enabled" = true;
};
"showCacheMissNotices" = true;
"qol" = {
"permissionGate" = {
"enabled" = true;
"commands" = "rm -Rf,rm -rf,sudo,chmod,chown,mkfs,dd,shutdown,reboot,poweroff";
"previewLines" = 12;
"previewChars" = 1200;
};
};
};
"mcp" = {
"enabled" = true;
};
packages = [
# "npm:@odinlayer/pi-provider-litellm"
# "npm:pi-provider-litellm"
"npm:@juanibiapina/pi-extension-settings"
"git:github.com/balcsida/pi-provider-litellm"
# "npm:pi-web-access"
# "npm:@gotgenes/pi-permission-system"
"npm:@vanillagreen/pi-qol"
"npm:pi-vitals"
"npm:pi-spark"
"npm:@zhushanwen/pi-context-engineering"
"npm:pi-caveman"
"npm:@tmustier/pi-usage-extension"
"npm:@heyhuynhgiabuu/pi-pretty"
"npm:pi-lens"
# "npm:pi-lean-ctx"
# "npm:@rohaquinlop/pi-deepseek-cache"
"npm:pi-cache-optimizer"
];
};
context = "Heavily prefer to use any appropriate tools instead of raw cmd";
};
# pi-vitals config
home.file.".pi/agent/powerline.json" = {
text = builtins.toJSON {
leftSegments = [
"pi"
"separator"
"model"
"thinking"
"ext_status"
"separator"
"path"
"git"
"separator"
"token_total"
"token_in"
"token_out"
"cache_read"
"cache_write"
];
rightSegments = [
"separator"
"cost"
"context_pct"
];
icons = {
pi = "π";
model = "";
thinking = "🧠";
folder = "📁";
repo = "📦";
git = "";
tokens = "";
input = "";
output = "";
cacheRead = "";
cacheWrite = "";
contextPct = "";
cost = "$";
separator = "";
};
colors = {
pi = "accent";
model = "#d787af";
path = "#00afaf";
git = "success";
gitDirty = "warning";
gitClean = "success";
thinking = "muted";
context = "dim";
contextWarn = "warning";
contextError = "error";
cost = "text";
tokens = "muted";
separator = "dim";
};
segmentOptions = {
path = {
mode = "basename";
};
git = {
showBranch = true;
showStaged = true;
showUnstaged = true;
showUntracked = true;
};
context_pct = {
showAutoIcon = false;
};
};
};
};
# pi-spark config
home.file.".pi/agent/spark.json" = {
text = builtins.toJSON {
editor = {
spinner = "tildes";
};
footer = false;
presets = {
"scuggo" = {
provider = "litellm";
model = "meow";
thinkingLevel = "medium";
};
"claude" = {
provider = "anthropic";
model = "claude-opus-4-8";
thinkingLevel = "high";
};
"gpt" = {
provider = "openai-codex";
model = "gpt-5.5";
thinkingLevel = "medium";
};
};
recap = {
idle = "5m";
provider = "openai-codex";
model = "gpt-5.4-mini";
thinkingLevel = "off";
};
title = {
provider = "openai-codex";
model = "gpt-5.4-mini";
thinkingLevel = "off";
};
};
};
};
};
};
}
+1 -1
View File
@@ -51,7 +51,7 @@
wayland.windowManager.hyprland = {
enable = true;
systemd.variables = ["--all"];
configType = "hyprlang";
configType = "lua";
};
};
};
+3 -3
View File
@@ -3,7 +3,7 @@ root-hashed_password: ENC[AES256_GCM,data:vzVtz1Ht4XD+omdKjU/Zvoaftq8jKE4kxOjAGZ
wakatime-scug-io-api-key: ENC[AES256_GCM,data:XQUccNW4210U8ZpHSGVcsdbAirzyTvmcy4y6emk7n4N6MO/W,iv:9/f9ceLshA7l8hJB+IDIPvEwYwSkFlPOLmpvtYXLTpU=,tag:x7hESZCouzYVNef2C+iCSA==,type:str]
meow: ENC[AES256_GCM,data:JVzenw==,iv:oCOo9//r5s2K4pSeH5UNEj0LL+9h2yq0G0DPOfwjmyQ=,tag:0gu9FNOrjQ8fpB+B+RbGSg==,type:str]
meoww: ENC[AES256_GCM,data:WPeszDfMWxY=,iv:JJMOror5wj7cTNKfrUj2LDXlO3WCKzb7jk4AeZ0oD+Q=,tag:qs3oyM7K1FGy5cXvS6OHpQ==,type:str]
scug-io-ai-key: ENC[AES256_GCM,data:15YxkgOe2+Kia9z52bYbmrc8SQzpjrZKmQ==,iv:+iMkNsqGVC32THO0nvDBrRby+mKj09DvWEQJn+K6at8=,tag:mI7EvyasCKHhNc55UScCXA==,type:str]
scug-io-ai-key: ENC[AES256_GCM,data:b2AT2+A5eoGa1eZsCYKDFg449sOgffDcQA==,iv:NDIS3x1unq6/UtjtsyBTHx5v12utagDA3BbNzs5v3L0=,tag:MhbJGATIDWyOZUqXqRAeVA==,type:str]
sops:
age:
- enc: |
@@ -69,7 +69,7 @@ sops:
61QsSqCuJyEwSPpOzeWa5NChcCjitOUG1jEMsSHlpIslKA1P7g/P9g==
-----END AGE ENCRYPTED FILE-----
recipient: age1kc0xu0ue2nrrr7w4gam7wlzackv8jv243rxwwndgxjqklgtnp5csdtpgzp
lastmodified: "2026-07-17T08:50:10Z"
mac: ENC[AES256_GCM,data:WQJ8Ez/0iaRSvziyanxNUmrahir/Ocu+Dysh+qtj3FFhLMhLtPZqoX92L6Eia5pbfXOZcYZUN7uUMmSBn22JCiYUtgoeVjXV8el6GVfi1LHCGKfL25ohsjsTczJXV/+tBlVrrB3MGls9AjFqDV9QnoS/3X/a1MIRGKS3GY+OMAg=,iv:Id9I6BlrzfLpMcy1EmdVGgr9jYSf9JCsOrSiIglRTNc=,tag:gXkaSz5Z8K38Cde6gy3Zvg==,type:str]
lastmodified: "2026-07-22T22:45:05Z"
mac: ENC[AES256_GCM,data:jfbsnWcZ6yJSUbRn8VbONhj3oin1+DsHzJ590BbdPtikZwjD/0f06NQ86b0DI5/M+LKP4Dy5Cyf7xyJ99iWuOKbF9y12qK17IqMaNZCmPkw8Y+v7q38ESsW/Iizr3hfQ2L2GwJNTWsoifCeQphxGby7s2lKjMPYGKhYrgicZ5Fs=,iv:bbL+59d0S1fdfDInLS5z9Vx+AVW6nb0z2BNgZ+5PbUM=,tag:jJYnLsORyEuClRm/t4mwcA==,type:str]
unencrypted_suffix: _unencrypted
version: 3.13.2