hxwrap/flake.nix
2024-12-14 08:49:41 +01:00

102 lines
2.8 KiB
Nix

{
description = "A wrapper for Helix that provides language support";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
outputs = {nixpkgs, ...}: let
supportedSystems = nixpkgs.lib.systems.flakeExposed;
forAllSupportedSystems = f:
nixpkgs.lib.genAttrs supportedSystems (
system:
f (import nixpkgs {
inherit system;
config.allowUnfree = true;
})
);
in {
packages = forAllSupportedSystems (pkgs: {
default = let
package = pkgs.helix;
in
pkgs.symlinkJoin {
name = package.pname;
paths = [package];
buildInputs = [pkgs.makeWrapper];
postBuild = ''
wrapProgram $out/bin/${package.meta.mainProgram} \
--suffix PATH : ${pkgs.lib.makeBinPath (builtins.attrValues {
# Language support
inherit
(pkgs)
# LSP
clang-tools
clojure-lsp
cmake-language-server
dart
docker-compose-language-service
dockerfile-language-server-nodejs
emmet-ls
gopls
jdt-language-server
kotlin-language-server
lua-language-server
marksman
nil
perlnavigator
pyright
rust-analyzer
taplo
terraform-ls
texlab
tinymist
vscode-langservers-extracted
yaml-language-server
zls
# DAP
omnisharp-roslyn
lldb
netcoredbg
delve
;
inherit
(pkgs.nodePackages_latest)
# LSP
bash-language-server
graphql-language-service-cli
intelephense
svelte-language-server
typescript-language-server
;
inherit
(pkgs.rubyPackages)
# LSP
solargraph
;
inherit
(pkgs.python3Packages)
# LSP
python-lsp-server
;
inherit
(pkgs.kdePackages)
# LSP
qtdeclarative
;
inherit
(pkgs.ocamlPackages)
# LSP
ocaml-lsp
;
# Clipboard support
inherit
(pkgs)
wl-clipboard
;
})}
'';
inherit (package) meta;
};
});
};
}