Compare commits

..

3 Commits

5 changed files with 134 additions and 86 deletions
+14 -2
View File
@@ -40,6 +40,18 @@
scrcpy scrcpy
android-tools android-tools
awww awww
openvpn openvpn
];
# android development
jdk17
gradle
android-tools
(pkgs.androidenv.composeAndroidPackages {
buildToolsVersions = ["36.0.0" "35.0.0" "34.0.0" "29.0.3"];
platformVersions = ["29" "34" "35" "36"];
includeNDK = true;
ndkVersions = ["27.0.12077973"];
cmakeVersions = ["3.22.1"];
}).androidsdk
];
} }
+117 -84
View File
@@ -1,15 +1,14 @@
{pkgs, ...}: let { pkgs, ... }:
languages = import ./_languages.nix {inherit pkgs;}; let
languages = import ./_languages.nix { inherit pkgs; };
providers = import ./_providers.nix; providers = import ./_providers.nix;
skills = import ./_skills.nix {inherit pkgs;}; skills = import ./_skills.nix { inherit pkgs; };
inherit (pkgs) opencode; inherit (pkgs) opencode;
opencodeEnv = pkgs.buildEnv { opencodeEnv = pkgs.buildEnv {
name = "opencode-env"; name = "opencode-env";
paths = paths = languages.packages ++ skills.packages;
languages.packages
++ skills.packages;
}; };
opencodeInitScript = pkgs.writeShellScript "opencode-init" '' opencodeInitScript = pkgs.writeShellScript "opencode-init" ''
mkdir -p "$HOME/.local/cache/opencode/node_modules/@opencode-ai" mkdir -p "$HOME/.local/cache/opencode/node_modules/@opencode-ai"
@@ -24,89 +23,123 @@
''; '';
opencodeWrapped = opencodeWrapped =
pkgs.runCommand "opencode-wrapped" { pkgs.runCommand "opencode-wrapped" {
buildInputs = [pkgs.makeWrapper]; buildInputs = [ pkgs.makeWrapper ];
} '' } ''
mkdir -p $out/bin mkdir -p $out/bin
makeWrapper ${opencodeInitScript} $out/bin/opencode \ makeWrapper ${opencodeInitScript} $out/bin/opencode \
--prefix PATH : ${opencodeEnv}/bin \ --prefix PATH : ${opencodeEnv}/bin \
--prefix LD_LIBRARY_PATH : "${pkgs.lib.makeLibraryPath [pkgs.stdenv.cc.cc.lib]}" --prefix LD_LIBRARY_PATH : "${pkgs.lib.makeLibraryPath [pkgs.stdenv.cc.cc.lib]}"
''; '';
configFile = "opencode/config.json"; configFile = "opencode/config.json";
tuiFile = "opencode/tui.json"; tuiFile = "opencode/tui.json";
in { in {
users.users.someone.packages = [ users.users.someone.packages = [
opencodeWrapped opencodeWrapped
]; ];
xdg.configFile = { xdg.configFile = {
"${configFile}".text = builtins.toJSON { "${configFile}".text = builtins.toJSON {
"$schema" = "https://opencode.ai/config.json"; "$schema" = "https://opencode.ai/config.json";
plugin = [ plugin = [
"opencode-antigravity-auth@latest" "opencode-antigravity-auth@latest"
"@tarquinen/opencode-dcp@latest" "@tarquinen/opencode-dcp@latest"
"oh-my-openagent@latest" "oh-my-openagent@latest"
]; ];
small_model = "google/gemma-3n-e4b-it:free"; model = "google/antigravity-gemini-3-flash";
autoupdate = false; small_model = "opencode/big-pickle";
share = "disabled"; autoupdate = false;
disabled_providers = [ agent = {
"amazon-bedrock" build = { model = "opencode/nemotron-3-super-free"; };
"anthropic" plan = { model = "opencode/big-pickle"; };
"azure-openai" task = { model = "opencode/nemotron-3-super-free"; };
"azure-cognitive-services" "sisyphus-junior" = { model = "opencode/nemotron-3-super-free"; };
"baseten" explore = { model = "opencode/minimax-m2.5-free"; };
"cerebras" general = { model = "opencode/big-pickle"; };
"cloudflare-ai-gateway" oracle = { model = "opencode/nemotron-3-super-free"; };
"cortecs" "ultrabrain" = { model = "opencode/nemotron-3-super-free"; };
"deep-infra" "deep" = { model = "opencode/nemotron-3-super-free"; };
"fireworks-ai" "quick" = { model = "opencode/gpt-5-nano"; };
"google-vertex-ai" "artistry" = { model = "opencode/nemotron-3-super-free"; };
"groq" "visual-engineering" = { model = "opencode/hy3-preview-free"; };
"hugging-face" "writing" = { model = "opencode/hy3-preview-free"; };
"helicone" };
"llama.cpp" share = "disabled";
"io-net" disabled_providers = [
"lmstudio" "amazon-bedrock"
"moonshot-ai" "anthropic"
"nebius-token-factory" "azure-openai"
"ollama" "azure-cognitive-services"
"ollama-cloud" "baseten"
"openai" "cerebras"
"sap-ai-core" "cloudflare-ai-gateway"
"ovhcloud-ai-endpoints" "cortecs"
"together-ai" "deep-infra"
"venice-ai" "fireworks-ai"
"xai" "google-vertex-ai"
"zai" "groq"
"zenmux" "hugging-face"
]; "helicone"
enabled_providers = ["opencode" "google" "openrouter"]; "llama.cpp"
mcp = { "io-net"
gh_grep = { "lmstudio"
type = "remote"; "moonshot-ai"
url = "https://mcp.grep.app/"; "nebius-token-factory"
enabled = true; "ollama"
timeout = 10000; "ollama-cloud"
}; "openai"
deepwiki = { "sap-ai-core"
type = "remote"; "ovhcloud-ai-endpoints"
url = "https://mcp.deepwiki.com/mcp"; "together-ai"
enabled = true; "venice-ai"
timeout = 10000; "xai"
}; "zai"
context7 = { "zenmux"
type = "remote"; ];
url = "https://mcp.context7.com/mcp"; enabled_providers = [ "opencode" "google" "openrouter" ];
enabled = true; mcp = {
timeout = 10000; gh_grep = {
}; type = "remote";
}; url = "https://mcp.grep.app/";
inherit (languages) formatter lsp; enabled = true;
provider = providers.config; timeout = 10000;
}; };
"${tuiFile}".text = builtins.toJSON { deepwiki = {
"$schema" = "https://opencode.ai/tui.json"; type = "remote";
theme = "gruvbox"; url = "https://mcp.deepwiki.com/mcp";
}; enabled = true;
"opencode/skill".source = skills.skillsSource + "/skill"; timeout = 10000;
}; };
} context7 = {
type = "remote";
url = "https://mcp.context7.com/mcp";
enabled = true;
timeout = 10000;
};
};
inherit (languages) formatter lsp;
provider = providers.config;
};
"opencode/oh-my-openagent.json".text = builtins.toJSON {
"$schema" = "https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/master/assets/oh-my-opencode.schema.json";
agents = {
"sisyphus-junior" = { model = "opencode/nemotron-3-super-free"; };
};
categories = {
"quick" = { model = "opencode/gpt-5-nano"; };
"ultrabrain" = { model = "opencode/nemotron-3-super-free"; };
"deep" = { model = "opencode/nemotron-3-super-free"; };
"visual-engineering" = { model = "opencode/hy3-preview-free"; };
"writing" = { model = "opencode/hy3-preview-free"; };
"unspecified-low" = { model = "opencode/gpt-5-nano"; };
"unspecified-high" = { model = "opencode/nemotron-3-super-free"; };
};
};
"${tuiFile}".text = builtins.toJSON {
"$schema" = "https://opencode.ai/tui.json";
theme = "gruvbox";
};
"opencode/skill".source = skills.skillsSource + "/skill";
};
}
+1
View File
@@ -3,6 +3,7 @@
services.avahi = { services.avahi = {
enable = true; enable = true;
nssmdns4 = true; nssmdns4 = true;
denyInterfaces = [ "docker0" "veth*" "virbr*" ];
publish = { publish = {
enable = true; enable = true;
domain = true; domain = true;
+1
View File
@@ -5,6 +5,7 @@ _: {
permittedInsecurePackages = [ permittedInsecurePackages = [
"electron-38.7.1" "electron-38.7.1"
]; ];
android_sdk.accept_license = true;
}; };
}; };
} }
+1
View File
@@ -7,5 +7,6 @@ _: {
programs = { programs = {
dconf.enable = true; dconf.enable = true;
seahorse.enable = true; seahorse.enable = true;
nix-ld.enable = true;
}; };
} }