Compare commits

..

17 Commits

Author SHA1 Message Date
eliaskohout 3850a28fe4 add ax aliases 2026-05-12 14:29:09 +02:00
eliaskohout 8a2d2ec447 update lsp config for nvim 2026-05-12 12:25:20 +02:00
eliaskohout 1ac072847d add alternative url for ax; add ruff package; 2026-05-10 23:41:48 +02:00
eliaskohout de998f285a update packages 2026-04-26 23:53:07 +02:00
eliaskohout 44d9cc1498 Add just tool and zlib for Python venv extensions 2026-04-17 22:35:13 +02:00
eliaskohout 82f42b9329 Add C/C++ libraries for Python venv with compiled packages support 2026-04-17 00:15:59 +02:00
eliaskohout 69e81bb6e0 set enp0s1 mtu to 1400 on macvm-nix 2026-04-17 00:11:28 +02:00
eliaskohout f6987797a7 version update for ax 2026-04-14 12:59:28 +02:00
eliaskohout 46d1b8dce2 update ax config with netbird domain 2026-04-14 00:31:04 +02:00
eliaskohout 369935f26d add netbird 2026-04-13 20:39:02 +02:00
eliaskohout b36ae1ce83 feat(tmux): add terminal overlay binding with leader+t 2026-04-11 12:51:12 +02:00
eliaskohout 7aae4b451a feat(development): add mypy to default python packages 2026-04-10 19:31:45 +02:00
eliaskohout ee8b2795f1 fix(opencode): use valid OpenRouter model IDs and prefer Nitro providers 2026-04-10 17:36:25 +02:00
eliaskohout 0c64eaef02 Update opencode.nix: use OpenRouter model IDs, add Nitro routing, set compact agent mode to primary 2026-04-10 17:30:25 +02:00
eliaskohout 6a99cc0846 Revert "Fix model provider prefix for commit and compact subagents"
This reverts commit dd111756cf.
2026-04-10 16:57:39 +02:00
eliaskohout dd111756cf Fix model provider prefix for commit and compact subagents 2026-04-10 16:54:19 +02:00
eliaskohout 18d9f5c98a Add opencode config with custom agent definitions 2026-04-10 16:49:04 +02:00
12 changed files with 148 additions and 30 deletions
@@ -168,20 +168,12 @@ return {
-- - settings (table): Override the default settings passed when initializing the server. -- - settings (table): Override the default settings passed when initializing the server.
-- For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/ -- For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/
local servers = { local servers = {
lua_ls = { lua_ls = { settings = { Lua = { completion = { callSnippet = 'Replace' } } } },
settings = {
Lua = {
completion = {
callSnippet = 'Replace',
},
},
},
},
gopls = {}, gopls = {},
pylsp = {}, ruff = { cmd = { '/run/current-system/sw/bin/ruff', 'server' } },
} }
local servers_skip_mason = { lua_ls = true, gopls = true } local servers_skip_mason = { lua_ls = true, gopls = true, ruff = true }
local ensure_installed = vim.tbl_filter(function(name) local ensure_installed = vim.tbl_filter(function(name)
return not servers_skip_mason[name] return not servers_skip_mason[name]
end, vim.tbl_keys(servers or {})) end, vim.tbl_keys(servers or {}))
Generated
+12 -12
View File
@@ -7,11 +7,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1773889306, "lastModified": 1776613567,
"narHash": "sha256-PAqwnsBSI9SVC2QugvQ3xeYCB0otOwCacB1ueQj2tgw=", "narHash": "sha256-gC9Cp5ibBmGD5awCA9z7xy6MW6iJufhazTYJOiGlCUI=",
"owner": "nix-community", "owner": "nix-community",
"repo": "disko", "repo": "disko",
"rev": "5ad85c82cc52264f4beddc934ba57f3789f28347", "rev": "32f4236bfc141ae930b5ba2fb604f561fed5219d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -61,11 +61,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1775305101, "lastModified": 1777077449,
"narHash": "sha256-/74n1oQPtKG52Yw41cbToxspxHbYz6O3vi+XEw16Qe8=", "narHash": "sha256-AIiMJiqvGrN4HyLEbKAoCSRRYn0rnlW5VbKNIMIYqm4=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "36a601196c4ebf49e035270e10b2d103fe39076b", "rev": "a4bf06618f0b5ee50f14ed8f0da77d34ecc19160",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -77,11 +77,11 @@
}, },
"nixpkgs-unstable": { "nixpkgs-unstable": {
"locked": { "locked": {
"lastModified": 1775423009, "lastModified": 1776877367,
"narHash": "sha256-vPKLpjhIVWdDrfiUM8atW6YkIggCEKdSAlJPzzhkQlw=", "narHash": "sha256-EHq1/OX139R1RvBzOJ0aMRT3xnWyqtHBRUBuO1gFzjI=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "68d8aa3d661f0e6bd5862291b5bb263b2a6595c9", "rev": "0726a0ecb6d4e08f6adced58726b95db924cef57",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -108,11 +108,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1775365543, "lastModified": 1776771786,
"narHash": "sha256-f50qrK0WwZ9z5EdaMGWOTtALgSF7yb7XwuE7LjCuDmw=", "narHash": "sha256-DRFGPfFV6hbrfO9a1PH1FkCi7qR5FgjSqsQGGvk1rdI=",
"owner": "mic92", "owner": "mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "a4ee2de76efb759fe8d4868c33dec9937897916f", "rev": "bef289e2248991f7afeb95965c82fbcd8ff72598",
"type": "github" "type": "github"
}, },
"original": { "original": {
+12 -1
View File
@@ -7,6 +7,7 @@
./modules/git.nix ./modules/git.nix
./modules/tmux.nix ./modules/tmux.nix
./modules/scripts.nix ./modules/scripts.nix
./modules/opencode.nix
]; ];
# ============================================ # ============================================
@@ -27,11 +28,17 @@
tldr tldr
htop htop
iotop iotop
just
# Container tools # Container tools
podman podman
podman-compose podman-compose
# AI # AI
claude-code claude-code
opencode
# C++ stdlib and zlib for Python venv native extensions
pkgs.stdenv.cc.cc.lib
pkgs.zlib
# Custom packages # Custom packages
(pkgs.callPackage ../pkgs/ax {}) (pkgs.callPackage ../pkgs/ax {})
@@ -66,9 +73,13 @@
xdg.configFile."ax/config.json".text = builtins.toJSON { xdg.configFile."ax/config.json".text = builtins.toJSON {
remote = { remote = {
host = "192.168.178.214"; host = "ax.n.eliaskohout.de";
port = 7000; port = 7000;
}; };
aliases = [
{ name = "bai"; command = "list --namespace ba --type issue --status open"; }
{ name = "ban"; command = "list --namespace ba --type note"; }
];
}; };
# HM Modules # HM Modules
+74
View File
@@ -0,0 +1,74 @@
{ config, ... }:
{
xdg.configFile."opencode/opencode.json".text = builtins.toJSON {
"$schema" = "https://opencode.ai/config.json";
provider = {
openrouter = {
models = {
"openrouter/openai/gpt-oss-120b" = {
options = {
provider = {
order = [ "groq" "cerebras" ];
allow_fallbacks = true;
};
};
};
"openrouter/moonshotai/kimi-k2.5" = {
options = {
provider = {
order = [ "Nitro" ];
allow_fallbacks = true;
};
};
};
};
};
};
agent = {
commit = {
description = "Creates a one-line git commit describing the changes";
mode = "primary";
model = "openrouter/openai/gpt-oss-120b";
prompt = ''
You are a git commit agent. When invoked:
1. Run `git status` and `git diff` to understand all changes
2. Stage appropriate files with `git add`
3. Create a single one-line commit message that clearly describes the changes
4. Never push to remote
5. Never use --no-verify or --force flags
'';
permission = {
bash = {
"git *" = "allow";
};
edit = "allow";
};
};
compact = {
description = "Compacts and summarizes conversation context to reduce token usage";
mode = "primary";
model = "openrouter/openai/gpt-oss-120b";
prompt = ''
You are a context compaction specialist. Your job is to summarize and compress the conversation history while preserving:
1. Key decisions and their rationale
2. Important code changes and their purposes
3. Unresolved issues or TODOs
4. File paths and line references that are still relevant
Be extremely concise. Remove:
- Redundant explanations
- Already-applied code diffs
- Exploration steps that didn't lead anywhere
- Verbose tool outputs
Output a dense, information-rich summary that captures the essential state of the conversation.
'';
permission = {
edit = "deny";
bash = { "*" = "deny"; };
};
};
};
};
}
+3 -1
View File
@@ -1,4 +1,4 @@
{ config, lib, ... }: { config, lib, pkgs, ... }:
{ {
programs.fzf = { programs.fzf = {
@@ -21,6 +21,8 @@
}; };
initContent = '' initContent = ''
export LD_LIBRARY_PATH="${pkgs.stdenv.cc.cc.lib}/lib:${pkgs.zlib}/lib''${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
autoload -Uz vcs_info autoload -Uz vcs_info
precmd() { vcs_info } precmd() { vcs_info }
zstyle ':vcs_info:git:*' formats '%b' zstyle ':vcs_info:git:*' formats '%b'
+1
View File
@@ -62,6 +62,7 @@
bind -r l select-pane -R bind -r l select-pane -R
bind -r r source-file ~/.config/tmux/tmux.conf \; display-message "tmux.conf reloaded" bind -r r source-file ~/.config/tmux/tmux.conf \; display-message "tmux.conf reloaded"
bind q display-popup -E -w 60% -h 60% -d '#{session_path}' 'nvim quicknote.md' bind q display-popup -E -w 60% -h 60% -d '#{session_path}' 'nvim quicknote.md'
bind t display-popup -E -w 60% -h 60% -d '#{pane_current_path}' '$SHELL'
''; '';
}; };
} }
+2
View File
@@ -54,4 +54,6 @@
custom.development.enable = true; custom.development.enable = true;
custom.development.languages = [ "rust" "python" "nodejs" ]; custom.development.languages = [ "rust" "python" "nodejs" ];
custom.netbird.enable = true;
} }
+3
View File
@@ -8,6 +8,7 @@
networking.hostName = "macvm-nix"; networking.hostName = "macvm-nix";
networking.domain = ""; networking.domain = "";
networking.interfaces.enp0s1.mtu = 1400;
# Disko: Auto-partitioning configuration # Disko: Auto-partitioning configuration
disko.devices = { disko.devices = {
@@ -50,6 +51,8 @@
custom.development.enable = true; custom.development.enable = true;
custom.development.languages = [ "python" "nodejs" "go" ]; custom.development.languages = [ "python" "nodejs" "go" ];
custom.netbird.enable = true;
# ssh # ssh
services.openssh.enable = true; services.openssh.enable = true;
} }
+1
View File
@@ -6,6 +6,7 @@
./modules/development.nix ./modules/development.nix
./modules/shell.nix ./modules/shell.nix
./modules/yubikey.nix ./modules/yubikey.nix
./modules/netbird.nix
]; ];
# ============================================ # ============================================
+19 -2
View File
@@ -15,7 +15,7 @@
languagePackages = { languagePackages = {
rust = with pkgs; [ rustup cargo-deny cargo-edit ]; rust = with pkgs; [ rustup cargo-deny cargo-edit ];
python = with pkgs; [ python3 python3Packages.pip python3Packages.virtualenv uv ]; python = with pkgs; [ python3 python3Packages.pip python3Packages.virtualenv uv mypy ruff ];
nodejs = with pkgs; [ nodejs pnpm ]; nodejs = with pkgs; [ nodejs pnpm ];
go = with pkgs; [ go golangci-lint ]; go = with pkgs; [ go golangci-lint ];
ruby = with pkgs; [ ruby bundler ]; ruby = with pkgs; [ ruby bundler ];
@@ -24,6 +24,14 @@
selectedPackages = selectedPackages =
lib.concatMap (lang: languagePackages.${lang} or []) cfg.languages; lib.concatMap (lang: languagePackages.${lang} or []) cfg.languages;
# C/C++ libraries needed for compiled Python packages (numpy, etc.)
pythonDevLibraries = with pkgs;
lib.optionals (lib.elem "python" cfg.languages) [
glibc
stdenv.cc.cc.lib
libxcrypt
];
in lib.mkIf cfg.enable { in lib.mkIf cfg.enable {
# Core development tools # Core development tools
@@ -37,7 +45,16 @@
cmake cmake
ripgrep ripgrep
jq jq
] ++ selectedPackages; ] ++ selectedPackages ++ pythonDevLibraries;
# Set library paths for venv compatibility with compiled packages
environment.variables = lib.mkIf (lib.elem "python" cfg.languages) {
LD_LIBRARY_PATH = lib.makeLibraryPath (with pkgs; [
glibc
stdenv.cc.cc.lib
libxcrypt
]);
};
# Enable container support (optional) # Enable container support (optional)
#virtualisation.docker.enable = true; #virtualisation.docker.enable = true;
+15
View File
@@ -0,0 +1,15 @@
{ config, lib, pkgs, ... }:
{
options.custom.netbird = {
enable = lib.mkEnableOption "NetBird VPN";
};
config = lib.mkIf config.custom.netbird.enable {
services.netbird.enable = true;
environment.systemPackages = with pkgs; [
netbird
];
};
}
+3 -3
View File
@@ -2,12 +2,12 @@
pkgs.buildGoModule { pkgs.buildGoModule {
pname = "ax"; pname = "ax";
version = "0.1.3"; version = "0.1.4";
src = pkgs.fetchgit { src = pkgs.fetchgit {
url = "https://g.eliaskohout.de/eliaskohout/ax"; url = "https://g.eliaskohout.de/eliaskohout/ax";
rev = "v0.1.3"; rev = "v0.1.4";
hash = "sha256-IlQMAynwthzcu9YaHgelEEk9KEubmDWBtyp+bkys99M="; hash = "sha256-xAp02n6SDavTFn4ey60wp06EbaGyEpkK0JOy/P4EVAo=";
}; };
sourceRoot = "ax/src"; sourceRoot = "ax/src";