dotnix @main -
refs -
log -
-
https://git.jolheiser.com/dotnix.git
My nix dotfiles
feat: llm and q
Signed-off-by: jolheiser <git@jolheiser.com>
Signature
-----BEGIN SSH SIGNATURE-----
U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgBTEvCQk6VqUAdN2RuH6bj1dNkY
oOpbPWj+jw4ua1B1cAAAADZ2l0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5
AAAAQBIepJGRvLUHD2TKJiEX7v0K5hFBL+QV2EPUflFfCF1S6sO5TJFVle+HfsWyH97QuM
jg8zYV9srM2Qx8C/Ix+AE=
-----END SSH SIGNATURE-----
7 changed files, 93 additions(+), 0 deletions(-)
diff --git a/apps/nogui/default.nix b/apps/nogui/default.nix
index cfabab80bda9b7788d5847c95dd09ec9a4d76d5b..1d4c04fc2ed25f762af1abb835238f8e1689ff03 100644
--- a/apps/nogui/default.nix
+++ b/apps/nogui/default.nix
@@ -14,6 +14,7 @@ #./helix.nix
./jj.nix
./jq.nix
./lazygit.nix
+ ./llm.nix
./nushell.nix
./oh-my-posh.nix
./senpai.nix
diff --git a/apps/nogui/llm.nix b/apps/nogui/llm.nix
new file mode 100644
index 0000000000000000000000000000000000000000..07a62753081e8e6529fc23e0d98a64fc61538246
--- /dev/null
+++ b/apps/nogui/llm.nix
@@ -0,0 +1,55 @@
+{ pkgs, lib, ... }:
+let
+ claude =
+ let
+ inherit (pkgs) fetchFromGitHub nix-update-script python3Packages;
+ inherit (python3Packages)
+ buildPythonPackage
+ setuptools
+ anthropic
+ llm
+ pytestCheckHook
+ pytest
+ pytest-recording
+ ;
+ in
+ buildPythonPackage rec {
+ pname = "llm-claude-3";
+ version = "0.4";
+ pyproject = true;
+
+ src = fetchFromGitHub {
+ owner = "simonw";
+ repo = "llm-claude-3";
+ rev = "refs/tags/${version}";
+ hash = "sha256-5qF5BK319PNzB4XsLdYvtyq/SxBDdHJ9IoKWEnvNRp4=";
+ };
+
+ build-system = [ setuptools ];
+ buildInputs = [ llm ];
+ dependencies = [ anthropic ];
+ optional-dependencies = {
+ test = [
+ pytest
+ pytest-recording
+ ];
+ };
+
+ # Test suite requires network access to talk to Claude (duh).
+ nativeCheckInputs = [ pytestCheckHook ];
+ doCheck = false;
+ pythonImportsCheck = [ "llm_claude_3" ];
+
+ passthru.updateScript = nix-update-script { };
+
+ meta = {
+ description = "LLM plugin for interacting with the Claude 3 family of models";
+ homepage = "https://github.com/simonw/llm-claude-3";
+ license = lib.licenses.asl20;
+ maintainers = with lib.maintainers; [ jkachmar ];
+ };
+ };
+in
+{
+ home.packages = [ (pkgs.llm.withPlugins [ claude ]) ];
+}
diff --git a/apps/nogui/nushell/jolheiser.nu b/apps/nogui/nushell/jolheiser.nu
index ee508fd02363e70a935f5a4969034cce3327ed69..c9ff05362ca9f56a6690623eab2c898678eb1209 100644
--- a/apps/nogui/nushell/jolheiser.nu
+++ b/apps/nogui/nushell/jolheiser.nu
@@ -69,6 +69,22 @@ rm -rf $tmp
echo 'nixpkgs.lib.fileContents ./go.mod.sri'
}
+def q [
+ --debug # Debug mode, only echo query
+ ...args: string
+ ] {
+ let input = $in
+ mut query = $args | str join ' '
+ if ($input | is-not-empty) {
+ $query = $"($query)\n\n($input)"
+ }
+ if ($debug) {
+ print $query
+ return
+ }
+ ^llm -s "Answer in as few words as possible. Use a brief style with short replies." -m claude-3.5-sonnet $"($query)"
+}
+
# Run a command if known, otherwise run it with nix
def , [
cmd: string # The command to run
diff --git a/flake.nix b/flake.nix
index ffd16417a39b51cae04798bb8be29aa9cd6b7d93..c5edb42a109947ca87d0d5d0690e31847e7f41f6 100644
--- a/flake.nix
+++ b/flake.nix
@@ -187,6 +187,11 @@ file = ./secrets/shared/cachix.age;
path = "/home/${username}/.config/cachix/cachix.dhall";
};
{
+ };
+ file = ./secrets/shared/llm.age;
+ path = "/home/${username}/.config/io.datasette.llm/keys.json";
+ };
+{
resume = {
};
}
diff --git a/justfile b/justfile
index bd211f59f7734b611558c9ad7259c3af98df44ac..24bc25406e22af6b55e8ff1b301b3f339afbfe00 100644
--- a/justfile
+++ b/justfile
@@ -12,6 +12,7 @@ switch *args:
@just rebuild switch {{args}}
hm:
+ @git add .
@home-manager switch --flake . |& nix run nixpkgs#nix-output-monitor
@systemctl --user start agenix.service
diff --git a/secrets/secrets.nix b/secrets/secrets.nix
index 58cd8391a538bfef560666fd156376f638dead5c..a2c3d3458ff2528fe3856a139b332da81212d54a 100644
--- a/secrets/secrets.nix
+++ b/secrets/secrets.nix
@@ -20,6 +20,7 @@ "shared/spotify.age".publicKeys = all;
"shared/irc-pw.age".publicKeys = all;
"shared/gist-pw.age".publicKeys = all;
"shared/git-send-email.age".publicKeys = all;
+ "shared/llm.age".publicKeys = all;
"personal/restic-env.age".publicKeys = [
jolheiser
dragonwell
diff --git a/secrets/shared/llm.age b/secrets/shared/llm.age
new file mode 100644
index 0000000000000000000000000000000000000000..6ca7f7dca18b325eb5deb7fe34193ae2c5b77436
--- /dev/null
+++ b/secrets/shared/llm.age
@@ -0,0 +1,14 @@
+age-encryption.org/v1
+-> ssh-ed25519 E8j6/g p21/KPTNTZrRXQUvPtlkHZuiFyNGkJWxF/yfhn643gk
+jnN29WaHvFjMIjzVe0hkOEcolovBwjcgc2RfDlgY97E
+-> ssh-ed25519 xUMv2w Dvet20WUzCfQeoKrdmCb12ouUNlePgFDdKEUZP82PmA
+Prj/pjjj+oDqwKq+Q59aSj80YqICcgvulCBVy8CYx5Q
+-> ssh-ed25519 ph+d2g vvjz0afKneI+lpiGGm8JuDTlJDlmoUygm/roW1vQphw
+imYWGoW9O4MTbwTqXC5+5bH9sBf6qgkEJ8tNDtx6B0E
+-> ssh-ed25519 Cuo7gw zUGiEgCtGzwZOVUl5T3jMBdwYzf657jMAbfJ/G1uGX8
+jeoWPVh4+AVyGqdZlG1Do3XHT/bwojZsT14I8E3aF1s
+-> ssh-ed25519 f31uNA KmRTboipwSZZyDV1d69x4Apn0IjeboMxhmFVJBm72XI
+Rgk4ranEXY0mcyBX7nWnW31yKZ8J3hrfzMV5NeQ3tLk
+--- RW/X1U5gc3VSKroi8ZAIHZt4tvNShY/viK2TE2WSY4Q
+��|ut���P���f�������^��<G_�B�fDA��x��h���|���<.�HF��'�P0Y�'�<�����5����G����� �uζ9�Cz17Lg�Ӊp^�j��Pt�:j��?��<�s�� ���{c�9���� hӭ�1T��6T\�S��s^��Na�
+0�we�&y��md9
횋7|cGw�~�,�v4�k˯;�9H0�f�.2G��:�{��W�E
\ No newline at end of file