mirror of
https://github.com/nickolaj-jepsen/nixos.git
synced 2026-01-22 08:06:50 +01:00
51 lines
1.3 KiB
Nix
51 lines
1.3 KiB
Nix
|
|
{pkgs, config, username, pkgsUnstable, ...}: let
|
||
|
|
llmConfig = if pkgs.stdenv.isDarwin then
|
||
|
|
"Library/Application Support/io.datasette.llm"
|
||
|
|
else
|
||
|
|
".config/io.datasette.llm";
|
||
|
|
pythonEnv = pkgsUnstable.python3.withPackages (pp: with pp; [
|
||
|
|
llm
|
||
|
|
llm-anthropic
|
||
|
|
llm-gemini
|
||
|
|
llm-tools-sqlite
|
||
|
|
llm-fragments-github
|
||
|
|
llm-cmd
|
||
|
|
llm-jq
|
||
|
|
llm-github-copilot
|
||
|
|
llm-git
|
||
|
|
]);
|
||
|
|
llmPkgWithPlugins = pkgs.writeShellScriptBin "llm" ''
|
||
|
|
unset PYTHONPATH # Otherwise it breaks in Python devenvs
|
||
|
|
export $(grep -v '^#' ${config.age.secrets.llm-api-key.path} | xargs)
|
||
|
|
exec ${pythonEnv}/bin/llm "''${@}"
|
||
|
|
'';
|
||
|
|
in
|
||
|
|
{
|
||
|
|
age.secrets.llm-api-key = {
|
||
|
|
rekeyFile = ../../secrets/llm-api-key.env.age;
|
||
|
|
mode = "0600";
|
||
|
|
owner = username;
|
||
|
|
};
|
||
|
|
|
||
|
|
environment.systemPackages = [
|
||
|
|
llmPkgWithPlugins
|
||
|
|
];
|
||
|
|
|
||
|
|
fireproof.home-manager = {
|
||
|
|
home.file = {
|
||
|
|
"${llmConfig}/templates/cli.yaml".text = builtins.toJSON {
|
||
|
|
model = "gpt-5-nano";
|
||
|
|
prompt = ''
|
||
|
|
Please help the user with a question regarding the linux cli.
|
||
|
|
|
||
|
|
- Be concise and informative
|
||
|
|
- If you recommend any commands or tools, make sure to explain their usage.
|
||
|
|
|
||
|
|
This is the users question:
|
||
|
|
$input
|
||
|
|
'';
|
||
|
|
};
|
||
|
|
};
|
||
|
|
};
|
||
|
|
}
|