- claude: filter model completion to coding/synthetic models only - llama-swap: update model to IQ4_XS and add CUDA device selection
91 lines
2.4 KiB
Nix
Executable File
91 lines
2.4 KiB
Nix
Executable File
{ lib
|
|
, pkgs
|
|
, config
|
|
, namespace
|
|
, ...
|
|
}:
|
|
let
|
|
inherit (lib) mkIf;
|
|
cfg = config.${namespace}.programs.terminal.claude-code;
|
|
in
|
|
{
|
|
options.${namespace}.programs.terminal.claude-code = {
|
|
enable = lib.mkEnableOption "enable claude-code";
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
programs.claude-code = {
|
|
enable = true;
|
|
package = pkgs.reichard.claude-code;
|
|
mcpServers = {
|
|
gopls = {
|
|
type = "stdio";
|
|
command = "gopls";
|
|
args = [ "mcp" ];
|
|
};
|
|
};
|
|
};
|
|
|
|
programs.bash = lib.mkIf config.programs.bash.enable {
|
|
shellAliases = {
|
|
claude-custom = "default_claude_custom";
|
|
};
|
|
|
|
initExtra =
|
|
let
|
|
baseUrl = "https://llm-api.va.reichard.io";
|
|
authToken = "placeholder";
|
|
in
|
|
''
|
|
default_claude_custom() {
|
|
local model_id=""
|
|
while [[ $# -gt 0 ]]; do
|
|
case $1 in
|
|
-m|--model)
|
|
model_id="$2"
|
|
shift 2
|
|
;;
|
|
*)
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ -z "$model_id" ]; then
|
|
echo "Error: Model ID is required. Usage: claude --model <model-id>"
|
|
return 1
|
|
fi
|
|
|
|
ANTHROPIC_BASE_URL="${baseUrl}" \
|
|
ANTHROPIC_AUTH_TOKEN="${authToken}" \
|
|
ANTHROPIC_MODEL="$model_id" \
|
|
ANTHROPIC_SMALL_FAST_MODEL="$model_id" \
|
|
${lib.getExe pkgs.claude-code}
|
|
}
|
|
|
|
# Completion Function
|
|
_complete_claude_custom() {
|
|
local cur=''${COMP_WORDS[COMP_CWORD]}
|
|
local prev=''${COMP_WORDS[COMP_CWORD-1]}
|
|
|
|
if [[ "$prev" == "-m" || "$prev" == "--model" ]]; then
|
|
local models=( $(${pkgs.curl}/bin/curl -s -H "Authorization: Bearer ${authToken}" "${baseUrl}/v1/models" | ${pkgs.jq}/bin/jq -r '
|
|
.data[] |
|
|
select(
|
|
(try (.meta.llamaswap.type[] | contains("coding")) catch false) or
|
|
(.name | startswith("synthetic:"))
|
|
) |
|
|
.id
|
|
' 2>/dev/null) )
|
|
|
|
COMPREPLY=( $(compgen -W "''${models[*]}" -- "$cur") )
|
|
fi
|
|
}
|
|
|
|
# Register Completion
|
|
complete -F _complete_claude_custom claude-custom
|
|
'';
|
|
};
|
|
};
|
|
}
|