This repository has no description
2.0 kB
97 lines
1{ inputs , ... }:
2{
3 perSystem = { system, lib, pkgs, ... }: let
4 langs = [
5 # "agda"
6 "bash"
7 "c"
8 "c-sharp"
9 "cpp"
10 "css"
11 "elm"
12 "elisp"
13 #"fluent"
14 "go"
15 "hcl"
16 "haskell"
17 "html"
18 "janet-simple"
19 "java"
20 "javascript"
21 "jsdoc"
22 "json"
23 "julia"
24 "ocaml"
25 "pgn"
26 "php"
27 "python"
28 "ruby"
29 "rust"
30 "scala"
31 # "swift"
32 "typescript"
33 "yaml"
34 "nix"
35 "lua"
36 "markdown-inline"
37 "perl"
38 "make"
39 "toml"
40 ];
41 nvim_deps = with pkgs; [
42 nodejs # copilot
43 vale
44 terraform-ls
45 nodePackages.pyright
46 sumneko-lua-language-server
47
48 # based on ./suggested-pkgs.json nvim
49 delve
50 gopls
51 golangci-lint
52 nodePackages.bash-language-server
53 taplo-lsp
54 marksman
55 rust-analyzer
56 yaml-language-server
57 nil
58 gomodifytags
59 gofumpt
60 iferr
61 impl
62 gotools
63 shellcheck
64 shfmt
65 isort
66 black
67 ruff
68 nixpkgs-fmt
69 terraform-ls
70 clang-tools
71 nodePackages.prettier
72 stylua
73 # does not build yet on aarch64
74 ] ++ lib.optional (pkgs.stdenv.hostPlatform.system == "x86_64-linux") pkgs.deno; # lsp
75 nvim_config = pkgs.runCommand "nvim_config" { } ''
76 mkdir -p $out/parser
77
78 ln -s ${inputs.astro-nvim}/* $out/
79 rm $out/lua
80 mkdir -p $out/lua
81 ln -s ${inputs.astro-nvim}/lua/* $out/lua
82 ln -s ${./user} $out/lua/user
83
84 ${lib.concatMapStringsSep "\n" (name: ''
85 ln -s ${pkgs.tree-sitter.builtGrammars."tree-sitter-${name}"}/parser $out/parser/${name}.so
86 '') langs}
87 '';
88 in {
89 packages.asvim = pkgs.writers.writeDashBin "asvim" ''
90 set -efux
91 unset VIMINIT
92 export PATH=$PATH:${lib.makeBinPath nvim_deps}
93 ln -sfT ${nvim_config} "$HOME"/.config/lvim
94 NVIM_APPNAME=lvim ${pkgs.neovim}/bin/nvim "$@"
95 '';
96 };
97}