forked from
lass.pds.lassul.us/superconfig
This repository has no description
2.6 kB
86 lines
1{ inputs , ... }:
2{
3 perSystem = { system, lib, pkgs, ... }: let
4 nvim-appname = "lassvim";
5
6 lsp-packages = with pkgs; [
7 nodejs # copilot
8 terraform-ls
9 pyright
10
11 # based on ./suggested-pkgs.json
12 gopls
13 golangci-lint
14 nodePackages.bash-language-server
15 taplo-lsp
16 marksman
17 selene
18 rust-analyzer
19 yaml-language-server
20 nil
21 shellcheck
22 shfmt
23 ruff
24 ruff-lsp
25 nixfmt-rfc-style
26 terraform-ls
27 clang-tools
28 nodePackages.prettier
29 stylua
30 # based on https://github.com/ray-x/go.nvim#go-binaries-install-and-update
31 go
32 gofumpt
33 gomodifytags
34 gotools
35 delve
36 golines
37 gomodifytags
38 gotests
39 iferr
40 impl
41 reftools
42 ginkgo
43 richgo
44 govulncheck
45
46 #ocaml-ng.ocamlPackages_5_0.ocaml-lsp
47 #ocaml-ng.ocamlPackages_5_0.ocamlformat
48 # does not build yet on aarch64
49 ] ++ lib.optional (pkgs.stdenv.hostPlatform.system == "x86_64-linux") pkgs.deno
50 ++ lib.optional (!pkgs.stdenv.hostPlatform.isDarwin) sumneko-lua-language-server;
51
52 lspEnv = pkgs.buildEnv {
53 name = "lspEnv";
54 paths = lsp-packages;
55 };
56
57 treesitter-grammars = pkgs.runCommand "treesitter-grammars" { } (
58 lib.concatMapStringsSep "\n" (grammar: ''
59 mkdir -p $out
60 ln -s $(readlink -f ${grammar}/parser/*.so) $out/${lib.last (builtins.split "-" grammar.name)}.so
61 '') pkgs.vimPlugins.nvim-treesitter.withAllGrammars.dependencies
62 );
63
64 in {
65 packages.vim = pkgs.writeShellScriptBin "vim" ''
66 set -efux
67 unset VIMINIT
68 export PATH=${lspEnv}/bin:$PATH
69 export NVIM_APPNAME=${nvim-appname}
70
71 XDG_CONFIG_HOME=''${XDG_CONFIG_HOME:-$HOME/.config}
72 XDG_DATA_HOME=''${XDG_DATA_HOME:-$HOME/.local/share}
73
74 mkdir -p "$XDG_CONFIG_HOME/$NVIM_APPNAME" "$XDG_DATA_HOME"
75 chmod -R u+w "$XDG_CONFIG_HOME/$NVIM_APPNAME"
76 rm -rf "$XDG_CONFIG_HOME/$NVIM_APPNAME"
77 ${pkgs.coreutils}/bin/cp -arfT '${./config}'/ "$XDG_CONFIG_HOME/$NVIM_APPNAME"
78 chmod -R u+w "$XDG_CONFIG_HOME/$NVIM_APPNAME"
79 ${pkgs.neovim}/bin/nvim --headless -c 'quitall' # install plugins
80 mkdir -p "$XDG_DATA_HOME/$NVIM_APPNAME/lib/" "$XDG_DATA_HOME/$NVIM_APPNAME/site/"
81 ${pkgs.coreutils}/bin/ln -sfT "${pkgs.vimPlugins.telescope-fzf-native-nvim}/build/libfzf.so" "$XDG_DATA_HOME/$NVIM_APPNAME/lib/libfzf.so"
82 ${pkgs.coreutils}/bin/ln -sfT "${treesitter-grammars}" "$XDG_DATA_HOME/$NVIM_APPNAME/site/parser"
83 exec ${pkgs.neovim}/bin/nvim "$@"
84 '';
85 };
86}