Commit fb5fa74

HPCesia <me@hpcesia.com>
2025-08-14 08:09:20
feat: add helix-gpt
1 parent 639c86d
Changed files (4)
home
base
tui
editors
secrets
home/base/tui/editors/helix/languages/default.nix
@@ -1,3 +1,7 @@
 {mylib, ...}: {
   imports = mylib.scanModules ./.;
+
+  programs.helix.languages.language-server = {
+    helix-gpt.command = "helix-gpt";
+  };
 }
home/base/tui/editors/packages.nix
@@ -1,71 +1,98 @@
 {
+  osConfig,
   pkgs,
   pkgs-unstable,
   ...
 }: {
-  home.packages = with pkgs; [
-    # === Data & Configuration Languages === #
-    # -- Nix
-    nil # Nix LSP
-    alejandra # Nix Code Formatter
+  home.packages = let
+    helix-gpt = pkgs.writeShellApplication {
+      name = "helix-gpt";
+      runtimeInputs = [
+        pkgs.helix-gpt
+      ];
+      runtimeEnv = {
+        HANDLER = "copilot";
+      };
+      text = let
+        env-file = osConfig.sops.secrets."helix-gpt-secrets.env".path;
+      in ''
+        if [ ! -f ${env-file} ]; then
+          echo "Error: Secret file ${env-file} not found." >&2
+          exit 1
+        fi
+        set -a
+        # shellcheck disable=SC1091
+        source ${env-file}
+        set +a
+        exec helix-gpt "$@"
+      '';
+    };
+  in
+    with pkgs; [
+      # === Data & Configuration Languages === #
+      # -- Nix
+      nil # Nix LSP
+      alejandra # Nix Code Formatter
 
-    # -- Json Like
-    taplo # TOML LSP / formatter / validator
-    nodePackages.yaml-language-server
-    actionlint # GitHub Actions linter
+      # -- Json Like
+      taplo # TOML LSP / formatter / validator
+      nodePackages.yaml-language-server
+      actionlint # GitHub Actions linter
 
-    # -- Documents
-    marksman # Markdown LSP
-    tinymist # Typst LSP
-    typstyle # Typst Formatter
-    mdx-language-server
+      # -- Documents
+      marksman # Markdown LSP
+      tinymist # Typst LSP
+      typstyle # Typst Formatter
+      mdx-language-server
 
-    # === General Purpose Languages === #
-    # -- C/C++
-    cmake
-    cmake-language-server
-    gnumake
-    checkmake
-    xmake
-    gcc
-    gdb
-    clang-tools
-    lldb
+      # === General Purpose Languages === #
+      # -- AI
+      helix-gpt
+      # -- C/C++
+      cmake
+      cmake-language-server
+      gnumake
+      checkmake
+      xmake
+      gcc
+      gdb
+      clang-tools
+      lldb
 
-    # -- Python
-    uv # Python package manager in rust
-    pixi # Python package manager in rust, supports conda
-    ruff # Python LSP and formatter
-    python313
+      # -- Python
+      uv # Python package manager in rust
+      pixi # Python package manager in rust, supports conda
+      ruff # Python LSP and formatter
+      python313
 
-    #-- rust
-    pkgs-unstable.rustc
-    pkgs-unstable.rust-analyzer
-    pkgs-unstable.cargo # rust package manager
-    pkgs-unstable.rustfmt
-    pkgs-unstable.clippy # rust linter
+      #-- rust
+      pkgs-unstable.rustc
+      pkgs-unstable.rust-analyzer
+      pkgs-unstable.cargo # rust package manager
+      pkgs-unstable.rustfmt
+      pkgs-unstable.clippy # rust linter
 
-    # -- Lua
-    stylua
-    lua-language-server
+      # -- Lua
+      stylua
+      lua-language-server
 
-    #-- bash
-    nodePackages.bash-language-server
-    shellcheck
-    shfmt
+      #-- bash
+      nodePackages.bash-language-server
+      shellcheck
+      shfmt
 
-    # === Web Development === #
-    nodePackages.nodejs
-    pnpm
-    bun
-    deno
+      # === Web Development === #
+      nodePackages.nodejs
+      pnpm
+      bun
+      deno
 
-    nodePackages.typescript
-    nodePackages.typescript-language-server
-    nodePackages.vscode-langservers-extracted # HTML/CSS/JSON/ESLint LSP extracted from vscode
-    nodePackages."@tailwindcss/language-server"
-    nodePackages."@astrojs/language-server"
-    stylelint-lsp
-    nodePackages.prettier
-  ];
+      nodePackages.typescript
+      nodePackages.typescript-language-server
+      nodePackages.vscode-langservers-extracted # HTML/CSS/JSON/ESLint LSP extracted from vscode
+      nodePackages."@tailwindcss/language-server"
+      nodePackages."@astrojs/language-server"
+      stylelint-lsp
+      nodePackages.prettier
+    ];
 }
secrets/base.nix
@@ -30,4 +30,9 @@
   sops.defaultSopsFile = ./secrets.yaml;
 
   sops.secrets."github-access-token" = {};
+
+  sops.secrets."helix-gpt-secrets.env" = {
+    key = "helix-gpt";
+    owner = myvars.username;
+  };
 }
secrets/secrets.yaml
@@ -7,6 +7,7 @@ aria2-rpc-secret: ENC[AES256_GCM,data:I6FYN/TRRP2ceQ==,iv:18dOBc/3WTden6Za2IaSoU
 rclone:
     onedrive-token: ENC[AES256_GCM,data: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,iv:oP3gNO0t97BgN30SQRVcVztW9m364ii7mVwFzcBYLg8=,tag:bN9X8GIy+3DfvxX2uDHqdw==,type:str]
     restic-backup-token: ENC[AES256_GCM,data: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,iv:MTbA3m44lzQtRGq6gBDV1DlUzud370jTz2uiI0y5LSw=,tag:nlofOjYpJ1+HV+Dzy1+dsg==,type:str]
+helix-gpt: ENC[AES256_GCM,data:MkMi/JzymORlR98Gf5bya2ZcHod8+ONI+xWsyoSy0AiKwOaLGp0Yy0MjF1ioc+jzlkSfZY1oZR7I,iv:sbiIKW7+LpJXXeLV+S67Ch1S1tWE0MPR1jrCeD65+ao=,tag:lSUi/SZgy6e9npBHiy/jIw==,type:str]
 sops:
     age:
         - recipient: age18778pjmwglmame3rjpq355chxue2vr97ysj70fdyygc24prwxqrsttf84g
@@ -36,8 +37,8 @@ sops:
             QkhOcmpyejRoRWQybG51V2pORTAxVm8KRfPHwPOiMdTgFF37EMWOLukj3PB/PhKK
             Sx3ytiR8kENbpyNDGyf+yrqlY6gVVbDQDwu0AGX8yCPLHi+YocOyzQ==
             -----END AGE ENCRYPTED FILE-----
-    lastmodified: "2025-07-20T10:30:50Z"
-    mac: ENC[AES256_GCM,data:AemJ9Z/kZH3ekTaLRMUL+LUONqOCvDaNneqceXToudky3x1tc900IA2yOTqnYs7tAhK52fEnFAcyIGamm9Vzn50dHvpUzzA/p3DSP4JDtrQ6IQ/qwtrNqy8lkuQZN8SEUsJfgAbQzhCPsfx9S02aIMQMukb6iHJu+BLJzJl7wqM=,iv:Gf/6JVcRjYIu2r/FekAG0ntfwGJXFdsqoNSUwRzOpzU=,tag:luI/ZZsYpukXNxru0/A9eQ==,type:str]
+    lastmodified: "2025-08-14T08:55:43Z"
+    mac: ENC[AES256_GCM,data:1lyDzHZbN60cANfMDfwZXFX53Vee5Jd/e0RB65J6bcEbnuuhegwIT50Ams26LeWj6GHHbHcPDczv1BAJr/jW+KGu87m0dG8gMOqE8Msp5oUYdeNYBmfwUZ9ZgFyYfIGCAYVw1FLeXM0IbLdkTsNe/RSseCfo6LDXTSk9ubi9zFs=,iv:2209aflKLKnlmUj5Hj/TZ8g/j+AAvKp82O9e0oYaqRY=,tag:bDXsiL7cZOL0FUQJFsxL9w==,type:str]
     pgp:
         - created_at: "2025-08-06T11:08:33Z"
           enc: |-