This repository has no description
2.1 kB
72 lines
1{ inputs , ... }:
2{
3 perSystem = { system, lib, pkgs, ... }: let
4 vim_appname = "lassvim";
5 nvim_deps = with pkgs; [
6 nodejs # copilot
7 neovim
8 vale
9 terraform-ls
10 nodePackages.pyright
11 sumneko-lua-language-server
12
13 # based on ./suggested-pkgs.json nvim
14 delve
15 gopls
16 golangci-lint
17 nodePackages.bash-language-server
18 taplo-lsp
19 marksman
20 rust-analyzer
21 yaml-language-server
22 nil
23 gomodifytags
24 gofumpt
25 iferr
26 impl
27 gotools
28 shellcheck
29 shfmt
30 isort
31 black
32 ruff
33 nixpkgs-fmt
34 terraform-ls
35 clang-tools
36 nodePackages.prettier
37 stylua
38 # does not build yet on aarch64
39 ] ++ lib.optional (pkgs.stdenv.hostPlatform.system == "x86_64-linux") pkgs.deno; # lsp
40 nvim_config = pkgs.runCommand "nvim_config" { } ''
41 mkdir -p $out/parser
42
43 ln -s ${inputs.astro-nvim}/* $out/
44 rm $out/lua
45 mkdir -p $out/lua
46 ln -s ${inputs.astro-nvim}/lua/* $out/lua
47 ln -s ${./user} $out/lua/user
48
49 ${lib.concatMapStringsSep "\n" (grammar: ''
50 ln -s $(readlink -f ${grammar}/parser/*.so) $out/parser/${lib.last (builtins.split "-" grammar.name)}.so
51 '') pkgs.vimPlugins.nvim-treesitter.withAllGrammars.dependencies}
52 '';
53 in {
54 packages.vim = pkgs.writeShellScriptBin "vim" ''
55 set -efux
56 unset VIMINIT
57 export PATH=$PATH:${pkgs.buildEnv {
58 name = "nvim_deps";
59 paths = nvim_deps;
60 }}/bin
61 export NVIM_APPNAME=${vim_appname}
62 mkdir -p $HOME/.config $HOME/.local/share/
63 ln -sfT ${nvim_config} "$HOME"/.config/${vim_appname}
64 nvim --headless -c 'quitall'
65 if [[ -d $HOME/.local/share/lassvim/lazy/telescope-fzf-native.nvim ]]; then
66 mkdir -p "$HOME/.local/share/lassvim/lazy/telescope-fzf-native.nvim/build"
67 ln -sf "${pkgs.vimPlugins.telescope-fzf-native-nvim}/build/libfzf.so" "$HOME/.local/share/lassvim/lazy/telescope-fzf-native.nvim/build/libfzf.so"
68 fi
69 exec nvim "$@"
70 '';
71 };
72}