feat: add llm

This commit is contained in:
Nickolaj Jepsen 2025-08-20 10:49:33 +02:00
parent 5fac4b3984
commit f905444ccf
15 changed files with 60 additions and 26 deletions

View file

@ -9,5 +9,6 @@ _: {
./neovim.nix
./zellij.nix
./zoxide.nix
./llm.nix
];
}

50
modules/programs/llm.nix Normal file
View file

@ -0,0 +1,50 @@
{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
'';
};
};
};
}

View file

@ -1,8 +0,0 @@
age-encryption.org/v1
-> ssh-ed25519 UqEUow ZTWzzn7Ra3xjMUJkRm+lK+HMdqxCM1XiDneKWk6IoUY
7HIwLVhsJftGWMjhCQddz/MMqnpv7UoR1QzEXUfqVqo
-> ;7rhkFK-grease
2fBbpwA7
--- Dj4NFjzl0zb+Wxl+j2eChRWowe4PAGkag//fwnjiiAs
Æ%®„ÿÞŒéÐ?èÅŠ¬øò$qU1Pk%]Cì:ýODŠxÉ­¡yŽóÌy†,[´Dm NZÑc *Å pÑ;è˜Þ †3R}"P8Šá ö
 öö¬­¬³<C2AC>q UP/0X9q2Õ ŽÙh}¾è<C2BE>Èòvåºó!©ñPŒG#OŸëËö½¤4Œh¦öÕ^@^J÷ ¨<>/2K

View file

@ -1,9 +0,0 @@
age-encryption.org/v1
-> ssh-ed25519 uxq+Zw f1R1uOBfZIdPn5BQ+5ZniaLhcNIjCJLsSF1k7D8RIls
qJJnInZeCvwBIMm5X1MzhwbGZ/592JqNmtAfbwSCYhw
-> }o?y|l-grease cX)/~: `n \j
0E48K80STlC5k6I+c+BXFV/ZaSc3VuYSnnJVrtaqloq8GjOJabQGpz2kJVecRN1y
foetmkjWhOvTB9f5UmMvQhL3G8G4hqjJubwMrTTvW3t3
--- dtdOrXsFxRkgVsjwAFFe32rOregwJ21fU1wFwwO6+kw
¢OîX6*ªôûÞ?äDõGùm#ûB,3o[±&¢¿1¶cn¬b>(SÂÑèÎH…¢u7ÏGa:ɾHB”¥( žVá<56>ÒŸÚÚÊ0Ÿ-ã®,@†[í=Ésß6ç8r9cìîìbG
ÜãSäß+™Íœõ£" zÒ ït½Òõi—׎ç·„sÝ<73>gÊÞrN:IÖ<04>é|`й

View file

@ -1,8 +0,0 @@
age-encryption.org/v1
-> ssh-ed25519 uxq+Zw /8gmkIvDLrzwMr3XyUlVji+st35d1fT6YZDCxSRPWkM
tf9Hl+UAlYUWBvtUsSmVcTkjjrHQa3cUgIKa81xiyYA
-> >rf&x@Sl-grease
kUUirnVM0mh3+S9KGWoeL4PhgIXVCd7FQQ+tjwySVoFtJrlFC335TwccCLHaU+nw
l0Hta7Xfj5JGr80AXvhACRN7JkNF0bseJPoCyiG1hPrpspUGh3im9A
--- DJlEK7SM/SUwiYXD/tpfxpEvmpsqchdYSUaZfOe93Fo
y<EFBFBD>vÕ®¯ë*R¢NGaÈ̼“ª£ñ¡ç»ô  {,Á„§€Ùã[z­qùÀØl÷'þp_¨~”£|©'eOºÃÛ”v䮕(`—3¤ËGˆÀ„á`ÙBLÖb—´˜Î<CB9C>¬š²…6ÿÝéÛÎSÕsWq ZÏÇK>|­

View file

@ -0,0 +1,8 @@
age-encryption.org/v1
-> ssh-ed25519 uxq+Zw xJfwiPtM4UuD4jHX7LTnVoJ7WvbRetMbQAMRftWS7G4
okbXmKw7BNIP01K7yIBQj7Duz4C+186946aozyZgxzU
-> !ZS`7#-grease v{TUL6cR
FatxbUj85d1GQQ
--- 3zSSw89xn4Vr62mDTFLNpDgmSosb2TIKUddCrdfuRzg
™×Œöï¨.Á–„Ѓ4Žy5jÝÊââ>‡×˜-ªære{ÑÊ4fyc> ÁÜè\\ŒT{}˜¿cÏ=Κ†8Q úk瀧™9|¡J€¹]™*Õ¾rô #ÃÀm¢ã‡}ú:õÚÁ®Ç® eØÜ§<C39C>5i©ìÚPÀ~³õ„¢xœR<E280B9>Â>YÛäÎ:N7³…¨Yót.p—dáâŠEÊ_'‡y žZöS„ŠèÜCžw¾õ´õ[ˆ{²¡Ú¼%Ô° µ<>…°Qq=1Áæ¶~u;3XzüÀ玥
Á.àªïÉ \Œ§AìZÍw™ê6§ÝW&Côçku­¸-‹Ó¬䛦 îZzC<7A>œpü);ÈE>‡[¡÷çi×<>¸|yB µ×>¡Gìö¬JG4½ÎIt`¡“#:÷k¤Ü+ÄF(Þ>húÁ

Binary file not shown.