modify helix package and add idris tree-sitter integration
This commit is contained in:
parent
5fefe07d75
commit
8596be2dab
4 changed files with 116 additions and 5 deletions
66
pkgs/helix/default.nix
Normal file
66
pkgs/helix/default.nix
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}@args:
|
||||
let
|
||||
inherit (inputs.helix.packages."${pkgs.system}") helix helix-unwrapped;
|
||||
helix-core = helix-unwrapped.overrideAttrs {
|
||||
HELIX_DEFAULT_RUNTIME = "${grammarRuntime}";
|
||||
};
|
||||
helix-wrapped = (helix.override grammarConfig).passthru.wrapper helix-core;
|
||||
grammars = import ./grammars args;
|
||||
grammarOverlays = grammars.overlays;
|
||||
grammarRuntime = grammars.runtime;
|
||||
grammarConfig = {
|
||||
inherit grammarOverlays;
|
||||
};
|
||||
runtimeInputs = (
|
||||
with pkgs;
|
||||
[
|
||||
idris2Packages.idris2Lsp
|
||||
lua-language-server
|
||||
bash-language-server
|
||||
hurl
|
||||
cmake-language-server
|
||||
kdlfmt
|
||||
rustfmt
|
||||
clang-tools
|
||||
libxml2
|
||||
typstyle
|
||||
pyright
|
||||
ruff
|
||||
gotools
|
||||
yaml-language-server
|
||||
taplo
|
||||
markdown-oxide
|
||||
nixd
|
||||
deno
|
||||
nixfmt-rfc-style
|
||||
vscode-langservers-extracted
|
||||
fish-lsp
|
||||
gopls
|
||||
golangci-lint-langserver
|
||||
tinymist
|
||||
delve
|
||||
lldb
|
||||
rust-analyzer
|
||||
nil
|
||||
haskell-language-server
|
||||
neocmakelsp
|
||||
]
|
||||
);
|
||||
in
|
||||
pkgs.symlinkJoin {
|
||||
name = "helix-wrapped";
|
||||
paths = [ helix-wrapped ];
|
||||
inherit (helix-wrapped) meta;
|
||||
buildInputs = [
|
||||
pkgs.makeWrapper
|
||||
];
|
||||
postBuild = ''
|
||||
wrapProgram $out/bin/hx \
|
||||
--suffix PATH : ${lib.makeBinPath runtimeInputs}
|
||||
'';
|
||||
}
|
||||
94
pkgs/helix/grammars/default.nix
Normal file
94
pkgs/helix/grammars/default.nix
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
{ lib, pkgs, ... }:
|
||||
let
|
||||
inherit (pkgs) stdenv;
|
||||
buildGrammar =
|
||||
grammar:
|
||||
let
|
||||
source = sources."${grammar.name}";
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
pname = "helix-tree-sitter-${grammar.name}";
|
||||
version = grammar.rev;
|
||||
src = source;
|
||||
sourceRoot = "source";
|
||||
|
||||
dontConfigue = true;
|
||||
|
||||
FLAGS = [
|
||||
"-Isrc"
|
||||
"-g"
|
||||
"-O3"
|
||||
"-fPIC"
|
||||
"-fno-exceptions"
|
||||
"-Wl,-z,relro,-z,now"
|
||||
];
|
||||
|
||||
NAME = grammar.name;
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
if [[ -e src/scanner.cc ]]; then
|
||||
$CXX -c src/scanner.cc -o scanner.o $FLAGS
|
||||
elif [[ -e src/scanner.c ]]; then
|
||||
$CC -c src/scanner.c -o scanner.o $FLAGS
|
||||
fi
|
||||
|
||||
$CC -c src/parser.c -o parser.o $FLAGS
|
||||
$CXX -shared -o $NAME.so *.o
|
||||
|
||||
ls -al
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir $out
|
||||
mv $NAME.so $out/
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
fixupPhase = lib.optionalString stdenv.isLinux ''
|
||||
runHook preFixup
|
||||
|
||||
$STRIP $out/$NAME.so
|
||||
|
||||
runHook postFixup
|
||||
'';
|
||||
};
|
||||
grammars = map (file: import file) grammarFiles;
|
||||
sources = lib.listToAttrs (
|
||||
map (grammar: {
|
||||
inherit (grammar) name;
|
||||
value = builtins.fetchTree {
|
||||
type = "github";
|
||||
inherit (grammar) owner repo rev; };
|
||||
}) grammars
|
||||
);
|
||||
queries = lib.mapAttrsToList (name: value: ''
|
||||
mkdir -p $out/queries/${name}
|
||||
cp ${value}/queries/* $out/queries/${name}/
|
||||
'') sources;
|
||||
runtime = pkgs.runCommand "helix-default-runtime" { } ''
|
||||
mkdir -p $out
|
||||
${builtins.concatStringsSep "\n" queries}
|
||||
'';
|
||||
builtGrammars = lib.listToAttrs (
|
||||
map (grammar: {
|
||||
inherit (grammar) name;
|
||||
value = buildGrammar grammar;
|
||||
}) grammars
|
||||
);
|
||||
grammarFiles = [
|
||||
./idris.nix
|
||||
];
|
||||
in
|
||||
{
|
||||
overlays = [
|
||||
(final: prev: lib.filterAttrs (n: v: !(builtins.hasAttr n prev)) builtGrammars)
|
||||
];
|
||||
inherit runtime;
|
||||
}
|
||||
6
pkgs/helix/grammars/idris.nix
Normal file
6
pkgs/helix/grammars/idris.nix
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
name = "idris";
|
||||
owner = "kayhide";
|
||||
repo = "tree-sitter-idris";
|
||||
rev = "c56a25cf57c68ff929356db25505c1cc4c7820f6";
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue