Commit fb5fa74
Changed files (4)
home
base
tui
editors
helix
languages
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: |-