diff --git a/flake.lock b/flake.lock index 0881cae..8f9a7b2 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": 1726871744, @@ -124,6 +180,24 @@ "url": "https://github.com/NixOS/nixpkgs/archive/50eb7ecf4cd0a5756d7275c8ba36790e5bd53e33.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, @@ -1815,6 +1889,7 @@ "flake-utils": "flake-utils", "mnw": "mnw", "nil": "nil", + "nixd": "nixd", "nixpkgs": "nixpkgs", "nmd": "nmd", "plugin-alpha-nvim": "plugin-alpha-nvim", @@ -1978,6 +2053,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 ed90093..8727e73 100644 --- a/flake.nix +++ b/flake.nix @@ -9,10 +9,14 @@ # inputs is used to get the original standard library, and to pass inputs to the plugin autodiscovery function lib = import ./lib/stdlib-extended.nix inputs; in - flake-parts.lib.mkFlake { + 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 +70,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 +120,10 @@ inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-utils.follows = "flake-utils"; }; + nixd = { + url = "github:nix-community/nixd"; + inputs.nixpkgs.follows = "nixpkgs"; + }; ## Plugins # LSP plugins 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 6cf1f90..357a97e 100644 --- a/modules/plugins/languages/nix.nix +++ b/modules/plugins/languages/nix.nix @@ -74,6 +74,22 @@ } ''; }; + + nixd = { + package = pkgs.nixd; + internalFormatter = cfg.format.type == "nixpkgs-fmt"; + lspConfig = '' + lspconfig.nixd.setup{ + capabilities = capabilities, + ${ + if (cfg.format.enable && cfg.format.type == "nixpkgs-fmt") + then useFormat + else noFormat + }, + cmd = ${packageToCmd cfg.lsp.package "nixd"}, + } + ''; + }; }; defaultFormat = "alejandra";