{ config, lib, pkgs, inputs, ... }: let inherit (lib) mkEnableOption mkIf readFile; in { home-manager.users.moritz.programs.nixvim = { extraPlugins = with pkgs.vimPlugins; [ elixir-tools-nvim ]; extraConfigLuaPost = '' local elixir = require("elixir") local elixirls = require("elixir.elixirls") elixir.setup { nextls = { enable = true, }, elixirls = { enable = true, cmd = vim.fn.exepath("elixir-ls"), settings = elixirls.settings { dialyzerEnabled = true, enableTestLenses = true, }, on_attach = function(client, bufnr) vim.keymap.set("n", "fp", ":ElixirFromPipe", { buffer = true, noremap = true }) vim.keymap.set("n", "tp", ":ElixirToPipe", { buffer = true, noremap = true }) vim.keymap.set("v", "em", ":ElixirExpandMacro", { buffer = true, noremap = true }) end, }, } ''; plugins.lsp = { enable = true; inlayHints = true; servers.rust_analyzer = { enable = true; installRustc = false; installCargo = false; settings.files.watcher = "server"; }; servers.nil_ls.enable = true; servers.nixd.enable = true; servers.nixd.extraOptions.settings.nixd = { nixpkgs = { expr = "import { }"; }; options = { nixos = { expr = ''builtins.head (builtins.attrValues ((builtins.getFlake ("git+file://" + toString ./.)).nixosConfigurations).options''; }; "flake-parts" = { expr = ''(builtins.getFlake ("git+file://" + toString ./.)).debug.options''; }; "flake-parts2" = { expr = ''(builtins.getFlake ("git+file://" + toString ./.)).currentSystem.options''; }; }; }; }; }; }