From c17884a5194155ae57f116b4f831e38f28791c0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kier=C3=A1n=20Meinhardt?= Date: Wed, 3 May 2023 12:34:39 +0200 Subject: [PATCH] feat(kleim): add gpt, do not remove newlines --- configs/i3.nix | 3 +++ flake.nix | 1 + packages/gpt.nix | 15 +++++++++++++++ packages/klem.nix | 1 - 4 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 packages/gpt.nix diff --git a/configs/i3.nix b/configs/i3.nix index 9c2c65d..abf2549 100644 --- a/configs/i3.nix +++ b/configs/i3.nix @@ -50,6 +50,9 @@ emojai = pkgs.writers.writeDash "emojai" '' ${pkgs.curl}/bin/curl https://www.emojai.app/api/generate -X POST -H 'Content-Type: application/json' --data-raw "$(${pkgs.jq}/bin/jq -sR '{emoji:.}')" | ${pkgs.jq}/bin/jq -r .result ''; + gpt = pkgs.writers.writeDash "gpt" '' + ${niveumPackages.gpt}/bin/gpt + ''; }; }; diff --git a/flake.nix b/flake.nix index 05f6093..a6306c4 100644 --- a/flake.nix +++ b/flake.nix @@ -251,6 +251,7 @@ genius = pkgs.callPackage packages/genius.nix {}; gfs-fonts = pkgs.callPackage packages/gfs-fonts.nix {}; git-preview = pkgs.callPackage packages/git-preview.nix {}; + gpt = pkgs.callPackage packages/gpt.nix {}; hc = pkgs.callPackage packages/hc.nix {}; heuretes = pkgs.callPackage packages/heuretes.nix {}; htgen = pkgs.callPackage packages/htgen.nix {}; diff --git a/packages/gpt.nix b/packages/gpt.nix new file mode 100644 index 0000000..10ac668 --- /dev/null +++ b/packages/gpt.nix @@ -0,0 +1,15 @@ +{ + curl, + writers, + jq, + apiKeyCommand ? "pass api-keys/openai.com", + model ? "gpt-3.5-turbo", +}: +writers.writeDashBin "gpt" '' + json=$(jq --slurp --raw-input '{model:"${model}", messages: [{role: "user", content: .}]}') + ${curl}/bin/curl -sSL https://api.openai.com/v1/chat/completions \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $(pass api-keys/openai.com)" \ + -d "$json" \ + | ${jq}/bin/jq -r '.choices[] | .message.content' +'' diff --git a/packages/klem.nix b/packages/klem.nix index 003f01a..1ec63ca 100644 --- a/packages/klem.nix +++ b/packages/klem.nix @@ -49,7 +49,6 @@ in ${lib.concatStringsSep "\n" (lib.mapAttrsToList scriptCase cfg.scripts)} *) ${pkgs.coreutils}/bin/cat ;; esac \ - | tr -d '\r\n' \ | ${pkgs.xclip}/bin/xclip -selection ${cfg.selection} -in ${pkgs.libnotify}/bin/notify-send --app-name="klem" "Result copied to clipboard."