{ lib, config, pkgs, ... }: lib.optionalAttrs (lib.elem "nvim::lsp::nix-nixd" config.machine.pkgs) { nixd = { cmd = [ "${pkgs.nixd}/bin/nixd" ]; settings = { nixd = { on_init = _: # lua '' function(client) local path = client.workspace_folders[1].name if path == '/path/to/project1' then client.config.settings["rust-analyzer"].checkOnSave.overrideCommand = { "cargo", "check" } client.notify("workspace/didChangeConfiguration", { settings = client.config.settings }) end return true end ''; nixpkgs = { expr = ''import (builtins.getFlake ("git+file:///etc/nixos")).inputs.nixpkgs {}''; }; formatting = { command = [ "${pkgs.nixfmt-rfc-style}/bin/nixfmt" ]; }; options = { nixos = { expr = ''(builtins.getFlake ("git+file:///etc/nixos")).outputs.nixosConfigurations.Lilim.options''; }; # TODO: Find a good general expression for this. # home_manager = { # expr = # "'(builtins.getFlake (\"git+file://\" + toString ./.)).homeConfigurations.\"ruixi@k-on\".options'"; # }; }; }; }; }; }