From c292c57e327af55ad121e7b8061a56f770fc9348 Mon Sep 17 00:00:00 2001 From: Bo Jeanes Date: Fri, 19 Jul 2024 15:59:27 +1000 Subject: [PATCH] Set up Nix LSP and auto-formatting in VSCode --- .vscode/extensions.json | 7 ++++++ .vscode/settings.json | 14 +++++++++++ flake.lock | 52 +++++++++++++++++++++++++++++++++++++++++ flake.nix | 14 +++++++++++ 4 files changed, 87 insertions(+) create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..8e451ff --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,7 @@ +{ + "recommendations": [ + "jeff-hykin.better-nix-syntax", + "pinage404.nix-extension-pack", + "mkhl.direnv" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..d9f4d89 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,14 @@ +{ + "nix.enableLanguageServer": true, + "nix.formatterPath": "nixpkgs-fmt", + "nix.serverSettings": { + "nil": { + "formatting": { + "command": [ + "nixpkgs-fmt" + ], + } + } + }, + "direnv.restart.automatic": true, +} diff --git a/flake.lock b/flake.lock index 67de5f3..41f9329 100644 --- a/flake.lock +++ b/flake.lock @@ -169,6 +169,32 @@ "type": "github" } }, + "nil": { + "inputs": { + "flake-utils": [ + "nixvim", + "devshell", + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs" + ], + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1717086091, + "narHash": "sha256-GmsEQa4HZeMfec37LZnwG/Lt/XmqFLXsjv5QWojeNiM=", + "owner": "oxalica", + "repo": "nil", + "rev": "ab3ddb8f063774cf7e22eb610f5ecfdb77309f3c", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "nil", + "type": "github" + } + }, "nix-darwin": { "inputs": { "nixpkgs": [ @@ -293,6 +319,7 @@ "_1password-shell-plugins": "_1password-shell-plugins", "flake-parts": "flake-parts", "home-manager": "home-manager", + "nil": "nil", "nix-darwin": "nix-darwin", "nix-index-database": "nix-index-database", "nixos-flake": "nixos-flake", @@ -301,6 +328,31 @@ "treefmt-nix": "treefmt-nix" } }, + "rust-overlay": { + "inputs": { + "flake-utils": [ + "nil", + "flake-utils" + ], + "nixpkgs": [ + "nil", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1717035469, + "narHash": "sha256-MzH+yjKULH3HCRj9QCTwBvqq4LZkR0ZqRE/QfGOGC2E=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "095702e63a40e86f339d11864da9dc965b70a01e", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, "systems": { "locked": { "lastModified": 1681028828, diff --git a/flake.nix b/flake.nix index 90d715b..bfd4858 100644 --- a/flake.nix +++ b/flake.nix @@ -36,6 +36,12 @@ treefmt-nix.url = "github:numtide/treefmt-nix"; treefmt-nix.inputs.nixpkgs.follows = "nixpkgs"; + + nil = { + url = "github:oxalica/nil"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.flake-utils.follows = "nixvim/devshell/flake-utils"; + }; }; outputs = inputs@{ self, ... }: @@ -383,6 +389,14 @@ treefmt.config = { projectRootFile = "flake.lock"; programs.nixpkgs-fmt.enable = true; + programs.nixpkgs-fmt.package = pkgs.nixpkgs-fmt; + }; + + devShells.default = pkgs.mkShell { + nativeBuildInputs = with pkgs; [ + inputs.nil.packages.${system}.nil + nixpkgs-fmt + ]; }; }; }