feat: Add Opencode IDE with AI agents, Beads issue tracking, and STT/PTT

support
- Integrate Opencode terminal IDE with MCP integrations (Ref, Exa,
  Outline)
- Add Beads AI-native issue tracking system (.beads/ + AGENTS.md)
- Implement STT/PTT (speech-to-text push-to-talk) with
  whisper-cpp-vulkan
- Add coding feature module with dev tools (beads, alejandra, bun,
  devpod, nixd)
- Create AZPILOGISTIKTEST host configuration
- Refactor Hyprland windowrules to new match: syntax
- Upgrade nixpkgs/home-manager from 25.05 to 25.11
- Update Ollama to use Vulkan acceleration
- Add lmstudio, rofi-project-opener, and various app updates
- Add outline-key secret and mem0 service configuration

chore: Add Opencode IDE, Beads issue tracking, STT/PTT, and nixpkgs
25.11 upgrade
This commit is contained in:
2026-01-14 12:49:23 +01:00
parent 01df1f695b
commit 6be5e38021
40 changed files with 753 additions and 176 deletions

View File

@@ -0,0 +1,28 @@
{pkgs, ...}: {
imports = [
./opencode.nix
];
home.packages = with pkgs; [
agenix-cli
alejandra
beads
bc
bun
devpod
#devpod-desktop
(python3.withPackages (ps:
with ps; [
pip
uv
# Scientific packages
numba
numpy
torch
srt
]))
pyrefly
nixd
tailwindcss
tailwindcss-language-server
];
}

View File

@@ -0,0 +1,186 @@
{inputs, ...}: {
xdg.configFile = {
"opencode/command" = {
source = "${inputs.agents}/command";
recursive = true;
};
"opencode/context" = {
source = "${inputs.agents}/context";
recursive = true;
};
"opencode/prompts" = {
source = "${inputs.agents}/prompts";
recursive = true;
};
"opencode/skill" = {
source = "${inputs.agents}/skill";
recursive = true;
};
};
programs.opencode = {
enable = true;
settings = {
theme = "opencode";
plugin = ["oh-my-opencode" "opencode-beads" "opencode-anthropic-auth"];
agent = builtins.fromJSON (builtins.readFile "${inputs.agents}/agent/agents.json");
formatter = {
alejandra = {
command = ["alejandra" "-q" "-"];
extensions = [".nix"];
};
};
mcp = {
Ref = {
type = "local";
command = [
"sh"
"-c"
"REF_API_KEY=$(cat /run/agenix/ref-key) exec bunx ref-tools-mcp@latest"
];
enabled = true;
};
Exa = {
type = "local";
command = [
"sh"
"-c"
"EXA_API_KEY=$(cat /run/agenix/exa-key) exec bunx exa-mcp-server@latest tools=web_search_exa"
];
enabled = true;
};
Outline = {
type = "local";
command = [
"sh"
"-c"
"OUTLINE_API_KEY=$(cat /run/agenix/outline-key) OUTLINE_API_URL=https://wiki.az-gruppe.com/api OUTLINE_DISABLE_DELETE=true exec uv tool run mcp-outline"
];
enabled = false;
};
};
};
};
home.file.".config/opencode/oh-my-opencode.json".text = builtins.toJSON {
"$schema" = "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json";
agents = {
Sisyphus = {
model = "anthropic/claude-opus-4-5";
permission = {
edit = "allow";
bash = {
"*" = "allow";
"rm *" = "ask";
"rmdir *" = "ask";
"mv *" = "ask";
"chmod *" = "ask";
"chown *" = "ask";
"git *" = "ask";
"git status*" = "allow";
"git log*" = "allow";
"git diff*" = "allow";
"git branch*" = "allow";
"git show*" = "allow";
"git stash list*" = "allow";
"git remote -v" = "allow";
"git add *" = "allow";
"git commit *" = "allow";
"jj *" = "ask";
"jj status" = "allow";
"jj log*" = "allow";
"jj diff*" = "allow";
"jj show*" = "allow";
"npm *" = "ask";
"npx *" = "ask";
"bun *" = "ask";
"bunx *" = "ask";
"uv *" = "ask";
"pip *" = "ask";
"pip3 *" = "ask";
"yarn *" = "ask";
"pnpm *" = "ask";
"cargo *" = "ask";
"go *" = "ask";
"make *" = "ask";
"dd *" = "deny";
"mkfs*" = "deny";
"fdisk *" = "deny";
"parted *" = "deny";
"eval *" = "deny";
"source *" = "deny";
"curl *|*sh" = "deny";
"wget *|*sh" = "deny";
"sudo *" = "deny";
"su *" = "deny";
"systemctl *" = "deny";
"service *" = "deny";
"shutdown *" = "deny";
"reboot*" = "deny";
"init *" = "deny";
"> /dev/*" = "deny";
"cat * > /dev/*" = "deny";
};
external_directory = "ask";
doom_loop = "ask";
};
};
librarian = {
model = "anthropic/claude-sonnet-4-5";
permission = {
edit = "deny";
bash = "deny";
};
};
explore = {
model = "opencode/big-pickle";
permission = {
edit = "deny";
bash = "deny";
};
};
oracle = {
model = "anthropic/claude-sonnet-4-5";
permission = {
edit = "deny";
bash = "deny";
};
};
frontend-ui-ux-engineer = {
model = "anthropic/claude-opus-4-5";
permission = {
edit = "allow";
bash = {
"*" = "ask";
"npm *" = "ask";
"npx *" = "ask";
"bun *" = "ask";
"bunx *" = "ask";
"rm *" = "ask";
"mv *" = "ask";
"dd *" = "deny";
"mkfs*" = "deny";
"sudo *" = "deny";
"curl *|*sh" = "deny";
"wget *|*sh" = "deny";
};
};
};
document-writer = {
model = "anthropic/claude-opus-4-5";
permission = {
edit = "allow";
bash = "deny";
};
};
multimodal-looker = {
model = "anthropic/claude-opus-4-5";
permission = {
edit = "deny";
bash = "deny";
};
};
};
disabled_mcps = ["context7" "websearch"];
};
}