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:
28
home/features/coding/default.nix
Normal file
28
home/features/coding/default.nix
Normal 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
|
||||
];
|
||||
}
|
||||
186
home/features/coding/opencode.nix
Normal file
186
home/features/coding/opencode.nix
Normal 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"];
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user