diff --git a/flake.nix b/flake.nix index 17a7e2d..e22bf14 100644 --- a/flake.nix +++ b/flake.nix @@ -306,20 +306,23 @@ } // (nixpkgs.legacyPackages."${system}".callPackage ./_sources/generated.nix {}); - pkgList = system: callPackage: - (import ./pkgs/default.nix { - inherit callPackage; - sources = sources system; - naersk = inputs.naersk.lib."${system}"; - }) - // { - glaurung = inputs.glaurung.defaultPackage."${system}"; - raclette = inputs.raclette.defaultPackage."${system}"; - roaming_proxy = inputs.roaming_proxy.defaultPackage."${system}"; + pkgList = system: callPackage: let + packages = + (import ./pkgs/default.nix { + inherit callPackage; + sources = sources system; + naersk = inputs.naersk.lib."${system}"; + }) + // { + glaurung = inputs.glaurung.defaultPackage."${system}"; + raclette = inputs.raclette.defaultPackage."${system}"; + roaming_proxy = inputs.roaming_proxy.defaultPackage."${system}"; - inherit (nixpkgs-traxys.legacyPackages."${system}") groovy-language-server; - inherit (inputs.mujmap.packages."${system}") mujmap; - } + inherit (nixpkgs-traxys.legacyPackages."${system}") groovy-language-server; + inherit (inputs.mujmap.packages."${system}") mujmap; + }; + in + packages // ( let inputsMatching = with builtins; @@ -334,25 +337,27 @@ (name: _: (match "${prefix}:.*" name) != null) inputs); - neovimPlugins = final: prev: { - vimPlugins = prev.vimPlugins.extend (final': prev': - (nixpkgs.lib.mapAttrs ( - pname: src: - prev'."${pname}".overrideAttrs (old: { - version = src.shortRev; - inherit src; - }) - ) (inputsMatching "plugin")) - // ( - nixpkgs.lib.mapAttrs ( + neovimPlugins = final: prev: + { + vimPlugins = prev.vimPlugins.extend (final': prev': + (nixpkgs.lib.mapAttrs ( pname: src: - prev.vimUtils.buildVimPlugin { - inherit pname src; + prev'."${pname}".overrideAttrs (old: { version = src.shortRev; - } - ) (inputsMatching "new-plugin") - )); - }; + inherit src; + }) + ) (inputsMatching "plugin")) + // ( + nixpkgs.lib.mapAttrs ( + pname: src: + prev.vimUtils.buildVimPlugin { + inherit pname src; + version = src.shortRev; + } + ) (inputsMatching "new-plugin") + )); + } + // packages; nixvim' = inputs.nixvim.legacyPackages."${system}"; neovimNightly = inputs.neovim-flake.packages."${system}".neovim; diff --git a/neovim/default.nix b/neovim/default.nix index 5830d32..fe10441 100644 --- a/neovim/default.nix +++ b/neovim/default.nix @@ -21,6 +21,29 @@ autoGroups.BigFileOptimizer = {}; autoCmd = [ + { + event = ["BufNewFile" "BufRead"]; + pattern = ["meson.build" "meson_options.txt" "meson.options"]; + callback = let + settings = { + }; + in + helpers.mkRaw '' + function(args) + local match = vim.fs.find( + {"meson_options.txt", "meson.options", ".git"}, + {path = args.file, upward = true} + )[1] + local root_dir = match and vim.fn.fnamemodify(match, ":p:h") or nil + vim.lsp.start({ + name = "mesonlsp", + cmd = {"${lib.getExe pkgs.mesonlsp}", "--lsp"}, + root_dir = root_dir, + settings = ${helpers.toLuaObject settings}, + }) + end + ''; + } { event = "BufReadPost"; pattern = [ @@ -492,26 +515,6 @@ }; settings = { logLevel = 1; - languages.meson = [ - (helpers.mkRaw (helpers.toLuaObject { - prefix = "muon-fmt"; - formatCommand = "muon fmt -"; - formatStdin = true; - })) - (helpers.mkRaw (helpers.toLuaObject { - prefix = "muon-analyze"; - lintSource = "efm/muon-analyze"; - lintCommand = "muon analyze -l"; - lintWorkspace = true; - lintStdin = false; - LintIgnoreExitCode = true; - rootMarkers = ["meson_options.txt" ".git"]; - lintFormats = [ - "%f:%l:%c: %trror %m" - "%f:%l:%c: %tarning %m" - ]; - })) - ]; }; }; taplo.enable = true;