diff --git a/docs/release-notes/rl-0.7.md b/docs/release-notes/rl-0.7.md index 876f1ab..7d15054 100644 --- a/docs/release-notes/rl-0.7.md +++ b/docs/release-notes/rl-0.7.md @@ -338,3 +338,7 @@ To migrate to `nixfmt`, simply change `vim.languages.nix.format.type` to [Nowaaru](https://github.com/Nowaaru): - Add `precognition-nvim`. + +[Elias-Ainsworth](https://github.com/Elias-Ainsworth) + +- Add [nixd](https://github.com/nix-community/nixd) to supported LSP servers. diff --git a/flake.lock b/flake.lock index 36d59db..2d8ac58 100644 --- a/flake.lock +++ b/flake.lock @@ -18,6 +18,39 @@ "type": "github" } }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_2" + }, + "locked": { + "lastModified": 1714606777, + "narHash": "sha256-bMkNmAXLj8iyTvxaaD/StcLSadbj1chPcJOjtuVnLmA=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "4d34ce6412bc450b1d4208c953dc97c7fc764f1a", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-root": { + "locked": { + "lastModified": 1713493429, + "narHash": "sha256-ztz8JQkI08tjKnsTpfLqzWoKFQF4JGu2LRz8bkdnYUk=", + "owner": "srid", + "repo": "flake-root", + "rev": "bc748b93b86ee76e2032eecda33440ceb2532fcd", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "flake-root", + "type": "github" + } + }, "flake-utils": { "inputs": { "systems": "systems" @@ -96,6 +129,29 @@ "type": "github" } }, + "nixd": { + "inputs": { + "flake-parts": "flake-parts_2", + "flake-root": "flake-root", + "nixpkgs": [ + "nixpkgs" + ], + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1731087557, + "narHash": "sha256-W70xy7WFqA5940zhodAsGiC/nvqGwZ07YE34ObMK/po=", + "owner": "nix-community", + "repo": "nixd", + "rev": "1cf9ec0a82bcac57c7c12b6378bd8c28513cd3a6", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixd", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1730958623, @@ -124,6 +180,24 @@ "url": "https://github.com/NixOS/nixpkgs/archive/cc2f28000298e1269cea6612cd06ec9979dd5d7f.tar.gz" } }, + "nixpkgs-lib_2": { + "locked": { + "dir": "lib", + "lastModified": 1714253743, + "narHash": "sha256-mdTQw2XlariysyScCv2tTE45QSU9v/ezLcHJ22f0Nxc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "58a1abdbae3217ca6b702f03d3b35125d88a2994", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_2": { "locked": { "lastModified": 1656753965, @@ -2024,6 +2098,7 @@ "flake-utils": "flake-utils", "mnw": "mnw", "nil": "nil", + "nixd": "nixd", "nixpkgs": "nixpkgs", "nmd": "nmd", "plugin-alpha-nvim": "plugin-alpha-nvim", @@ -2196,6 +2271,27 @@ "type": "github" } }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "nixd", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1722330636, + "narHash": "sha256-uru7JzOa33YlSRwf9sfXpJG+UAV+bnBEYMjrzKrQZFw=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "768acdb06968e53aa1ee8de207fd955335c754b7", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, "utils": { "locked": { "lastModified": 1656928814, diff --git a/flake.nix b/flake.nix index 875fa43..e9f0d7b 100644 --- a/flake.nix +++ b/flake.nix @@ -11,8 +11,11 @@ in flake-parts.lib.mkFlake { inherit inputs; - specialArgs = {inherit lib;}; - } { + specialArgs = { + inherit lib; + }; + } + { # Allow users to bring their own systems. # «https://github.com/nix-systems/nix-systems» systems = import inputs.systems; @@ -66,7 +69,12 @@ default = self'.devShells.lsp; nvim-nix = pkgs.mkShell {packages = [config.packages.nix];}; lsp = pkgs.mkShell { - packages = with pkgs; [nil statix deadnix alejandra]; + packages = with pkgs; [ + nil + statix + deadnix + alejandra + ]; }; }; @@ -111,6 +119,11 @@ inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-utils.follows = "flake-utils"; }; + nixd = { + url = "github:nix-community/nixd"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.flake-utils.follows = "flake-utils"; + }; ## Plugins # Lazy loading diff --git a/flake/legacyPackages.nix b/flake/legacyPackages.nix index 389ca0c..0b7a24f 100644 --- a/flake/legacyPackages.nix +++ b/flake/legacyPackages.nix @@ -11,6 +11,7 @@ (_: _: { rnix-lsp = inputs'.rnix-lsp.defaultPackage; nil = inputs'.nil.packages.default; + nixd = inputs'.nixd.packages.default; }) ]; }; diff --git a/modules/plugins/languages/nix.nix b/modules/plugins/languages/nix.nix index ffb69e9..72f8d71 100644 --- a/modules/plugins/languages/nix.nix +++ b/modules/plugins/languages/nix.nix @@ -75,6 +75,23 @@ } ''; }; + + nixd = { + package = pkgs.nixd; + internalFormatter = cfg.format.type == "nixpkgs-fmt"; + lspConfig = '' + lspconfig.nixd.setup{ + capabilities = capabilities, + on_attach = default_on_attach, + ${ + if (cfg.format.enable && cfg.format.type == "nixpkgs-fmt") + then useFormat + else noFormat + }, + cmd = ${packageToCmd cfg.lsp.package "nixd"}, + } + ''; + }; }; defaultFormat = "alejandra";