diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 9585808..ce787ea 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -9,5 +9,6 @@ _: { ./neovim.nix ./zellij.nix ./zoxide.nix + ./llm.nix ]; -} \ No newline at end of file +} diff --git a/modules/programs/llm.nix b/modules/programs/llm.nix new file mode 100644 index 0000000..87d0c8d --- /dev/null +++ b/modules/programs/llm.nix @@ -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 + ''; + }; + }; + }; +} diff --git a/secrets/hosts/bootstrap/.rekey/3d8bcd067db56399fe2fbe8a7518d8db-llm-api-key.age b/secrets/hosts/bootstrap/.rekey/3d8bcd067db56399fe2fbe8a7518d8db-llm-api-key.age new file mode 100644 index 0000000..3e2da4c Binary files /dev/null and b/secrets/hosts/bootstrap/.rekey/3d8bcd067db56399fe2fbe8a7518d8db-llm-api-key.age differ diff --git a/secrets/hosts/bootstrap/.rekey/5b9b59da13a1f654ab32cea0102501eb-llm-api-key.age b/secrets/hosts/bootstrap/.rekey/5b9b59da13a1f654ab32cea0102501eb-llm-api-key.age deleted file mode 100644 index f6aa0dc..0000000 Binary files a/secrets/hosts/bootstrap/.rekey/5b9b59da13a1f654ab32cea0102501eb-llm-api-key.age and /dev/null differ diff --git a/secrets/hosts/desktop/.rekey/80419ac350d513375346f5cab8cbc4ca-llm-api-key.age b/secrets/hosts/desktop/.rekey/80419ac350d513375346f5cab8cbc4ca-llm-api-key.age new file mode 100644 index 0000000..e0b62b1 Binary files /dev/null and b/secrets/hosts/desktop/.rekey/80419ac350d513375346f5cab8cbc4ca-llm-api-key.age differ diff --git a/secrets/hosts/desktop/.rekey/a450ddae3b7c469613cb81ec6a868a96-llm-api-key.age b/secrets/hosts/desktop/.rekey/a450ddae3b7c469613cb81ec6a868a96-llm-api-key.age deleted file mode 100644 index c0ba5ad..0000000 --- a/secrets/hosts/desktop/.rekey/a450ddae3b7c469613cb81ec6a868a96-llm-api-key.age +++ /dev/null @@ -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:ODxɭyy,[Dm NZc* p; 3R}"P8  - qUP/0X9q2 h}v!PG#O4hՂl^@^J /2K \ No newline at end of file diff --git a/secrets/hosts/homelab/.rekey/2441d2322b7240b3eea35ad9dab11832-llm-api-key.age b/secrets/hosts/homelab/.rekey/2441d2322b7240b3eea35ad9dab11832-llm-api-key.age deleted file mode 100644 index a9b6907..0000000 --- a/secrets/hosts/homelab/.rekey/2441d2322b7240b3eea35ad9dab11832-llm-api-key.age +++ /dev/null @@ -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 -OX6*?DGm#B,3o[&1cnb>(SHu7Ga:ɾHB(V҂0-,@[=s68r9cbG -S+͜" z tҋi׎緄s݁grN:I|` \ No newline at end of file diff --git a/secrets/hosts/homelab/.rekey/ce1e98e4b461da4e405ecdef56b69d89-arr-basic-auth.age b/secrets/hosts/homelab/.rekey/ce1e98e4b461da4e405ecdef56b69d89-arr-basic-auth.age deleted file mode 100644 index 2e79199..0000000 --- a/secrets/hosts/homelab/.rekey/ce1e98e4b461da4e405ecdef56b69d89-arr-basic-auth.age +++ /dev/null @@ -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 -yvծ*RNGa̼ {,[zql'p_~|'eO۔v䮕(`3G`BLbΐ6SsWq ZsK>| \ No newline at end of file diff --git a/secrets/hosts/homelab/.rekey/ce1e98e4b461da4e405ecdef56b69d89-z2m-basic-auth.age b/secrets/hosts/homelab/.rekey/ce1e98e4b461da4e405ecdef56b69d89-z2m-basic-auth.age deleted file mode 100644 index d211efb..0000000 Binary files a/secrets/hosts/homelab/.rekey/ce1e98e4b461da4e405ecdef56b69d89-z2m-basic-auth.age and /dev/null differ diff --git a/secrets/hosts/homelab/.rekey/ee08849c0e5df7cd4a9ff33521c95be9-llm-api-key.age b/secrets/hosts/homelab/.rekey/ee08849c0e5df7cd4a9ff33521c95be9-llm-api-key.age new file mode 100644 index 0000000..986e89b --- /dev/null +++ b/secrets/hosts/homelab/.rekey/ee08849c0e5df7cd4a9ff33521c95be9-llm-api-key.age @@ -0,0 +1,8 @@ +age-encryption.org/v1 +-> ssh-ed25519 uxq+Zw xJfwiPtM4UuD4jHX7LTnVoJ7WvbRetMbQAMRftWS7G4 +okbXmKw7BNIP01K7yIBQj7Duz4C+186946aozyZgxzU +-> !ZS`7#-grease v{TUL6cR +FatxbUj85d1GQQ +--- 3zSSw89xn4Vr62mDTFLNpDgmSosb2TIKUddCrdfuRzg +׌.4y5j>ט-re{4fyc> \\T{}c=Κ8Q k9|J]*վr #m}:Ǯeܧ5iP~xR>Y:N7Yt.pdE_'yZSCw[{ڼ%԰ Qq=1~u;3Xz玥 +. \AZw6W&Cku-Ӭ䛦 ZzCp);E>[i׏|yB; >GJG4It`#:k+F(>h \ No newline at end of file diff --git a/secrets/hosts/laptop/.rekey/80419ac350d513375346f5cab8cbc4ca-llm-api-key.age b/secrets/hosts/laptop/.rekey/80419ac350d513375346f5cab8cbc4ca-llm-api-key.age new file mode 100644 index 0000000..a055538 Binary files /dev/null and b/secrets/hosts/laptop/.rekey/80419ac350d513375346f5cab8cbc4ca-llm-api-key.age differ diff --git a/secrets/hosts/laptop/.rekey/a450ddae3b7c469613cb81ec6a868a96-llm-api-key.age b/secrets/hosts/laptop/.rekey/a450ddae3b7c469613cb81ec6a868a96-llm-api-key.age deleted file mode 100644 index 30a5415..0000000 Binary files a/secrets/hosts/laptop/.rekey/a450ddae3b7c469613cb81ec6a868a96-llm-api-key.age and /dev/null differ diff --git a/secrets/hosts/work/.rekey/51b170b50ec4995ea64775b8153372e8-llm-api-key.age b/secrets/hosts/work/.rekey/51b170b50ec4995ea64775b8153372e8-llm-api-key.age new file mode 100644 index 0000000..7674c10 Binary files /dev/null and b/secrets/hosts/work/.rekey/51b170b50ec4995ea64775b8153372e8-llm-api-key.age differ diff --git a/secrets/hosts/work/.rekey/d451ded3be8bc97c3af769254574e9ba-llm-api-key.age b/secrets/hosts/work/.rekey/d451ded3be8bc97c3af769254574e9ba-llm-api-key.age deleted file mode 100644 index c88678b..0000000 Binary files a/secrets/hosts/work/.rekey/d451ded3be8bc97c3af769254574e9ba-llm-api-key.age and /dev/null differ diff --git a/secrets/llm-api-key.env.age b/secrets/llm-api-key.env.age index d138bdd..f77c0ca 100644 Binary files a/secrets/llm-api-key.env.age and b/secrets/llm-api-key.env.age differ