From 416c719f4759e250082668e758b8dfd9eb16ef3a Mon Sep 17 00:00:00 2001 From: traxys Date: Tue, 14 Mar 2023 23:48:27 +0100 Subject: [PATCH] plugins: Fetch the plugin sources from flake inputs (#247) --- flake.nix | 35 +++++++- plugins/_sources/generated.json | 142 ++++++++++++++++++++++++++++++++ plugins/_sources/generated.nix | 88 ++++++++++++++++++++ plugins/nvfetcher.toml | 27 ++++++ plugins/plugin-defs.nix | 90 +++++--------------- 5 files changed, 310 insertions(+), 72 deletions(-) create mode 100644 plugins/_sources/generated.json create mode 100644 plugins/_sources/generated.nix create mode 100644 plugins/nvfetcher.toml diff --git a/flake.nix b/flake.nix index 8ad71473..ce5bdc44 100644 --- a/flake.nix +++ b/flake.nix @@ -75,7 +75,10 @@ pre-commit-check = pre-commit-hooks.lib.${system}.run { src = ./.; hooks = { - alejandra.enable = true; + alejandra = { + enable = true; + excludes = ["plugins/_sources"]; + }; }; }; }; @@ -114,6 +117,8 @@ ''; }) {}; + # Used to updates plugins, launch 'nix run .#nvfetcher' in the 'plugins' directory + nvfetcher = pkgs.nvfetcher; }; legacyPackages = rec { makeNixvimWithModule = import ./wrappers/standalone.nix pkgs modules; @@ -124,7 +129,33 @@ }; }; }; - formatter = pkgs.alejandra; + formatter = let + # We need to exclude the plugins/_sources/* files as they are autogenerated + # nix formatter only takes a derivation so we need to make a proxy that passes + # the correct flags + excludeWrapper = { + stdenv, + alejandra, + writeShellScript, + ... + }: + stdenv.mkDerivation { + pname = "alejandra-excludes"; + version = alejandra.version; + + dontUnpack = true; + dontBuild = true; + installPhase = let + script = writeShellScript "alejandra-excludes.sh" '' + ${alejandra}/bin/alejandra --exclude ./plugins/_sources "$@" + ''; + in '' + mkdir -p $out/bin + cp ${script} $out/bin/alejandra-excludes + ''; + }; + in + pkgs.callPackage excludeWrapper {}; lib = import ./lib { inherit pkgs; diff --git a/plugins/_sources/generated.json b/plugins/_sources/generated.json new file mode 100644 index 00000000..0f91e560 --- /dev/null +++ b/plugins/_sources/generated.json @@ -0,0 +1,142 @@ +{ + "coq-artifacts": { + "cargoLocks": null, + "date": "2023-03-12", + "extract": null, + "name": "coq-artifacts", + "passthru": null, + "pinned": false, + "src": { + "deepClone": false, + "fetchSubmodules": false, + "leaveDotGit": false, + "name": null, + "owner": "ms-jpq", + "repo": "coq.artifacts", + "rev": "ee1814e2183bd424ca5528f82f3d6ce8f64e6f90", + "sha256": "sha256-e+w5tLuer/4f0oImlIgxmI4Ke9h6x0PQ8+nVJDihkGQ=", + "type": "github" + }, + "version": "ee1814e2183bd424ca5528f82f3d6ce8f64e6f90" + }, + "coq-nvim": { + "cargoLocks": null, + "date": "2023-03-12", + "extract": null, + "name": "coq-nvim", + "passthru": null, + "pinned": false, + "src": { + "deepClone": false, + "fetchSubmodules": false, + "leaveDotGit": false, + "name": null, + "owner": "ms-jpq", + "repo": "coq_nvim", + "rev": "4b4b93dbbfc871a3d32a244a4276ee06696c21bb", + "sha256": "sha256-OXhLs7fO+qlOPyDc8AOA+bkbj9OzMZO8CFgfE/Q1cro=", + "type": "github" + }, + "version": "4b4b93dbbfc871a3d32a244a4276ee06696c21bb" + }, + "intellitab-nvim": { + "cargoLocks": null, + "date": "2021-11-13", + "extract": null, + "name": "intellitab-nvim", + "passthru": null, + "pinned": false, + "src": { + "deepClone": false, + "fetchSubmodules": false, + "leaveDotGit": false, + "name": null, + "owner": "pta2002", + "repo": "intellitab.nvim", + "rev": "a6c1a505865f6131866d609c52440306e9914b16", + "sha256": "sha256-z5G7v2OttQs5B/uqWdxYtW6wPnVPARjQYidKLYkhvqY=", + "type": "github" + }, + "version": "a6c1a505865f6131866d609c52440306e9914b16" + }, + "magma-nvim": { + "cargoLocks": null, + "date": "2023-03-13", + "extract": null, + "name": "magma-nvim", + "passthru": null, + "pinned": false, + "src": { + "deepClone": false, + "fetchSubmodules": false, + "leaveDotGit": false, + "name": null, + "owner": "WhiteBlackGoose", + "repo": "magma-nvim-goose", + "rev": "5d916c39c1852e09fcd39eab174b8e5bbdb25f8f", + "sha256": "sha256-Sq7J43AYvsfUdFXELzEwBNTpnOt/F43/de+2zwBspoE=", + "type": "github" + }, + "version": "5d916c39c1852e09fcd39eab174b8e5bbdb25f8f" + }, + "mark-radar": { + "cargoLocks": null, + "date": "2021-06-22", + "extract": null, + "name": "mark-radar", + "passthru": null, + "pinned": false, + "src": { + "deepClone": false, + "fetchSubmodules": false, + "leaveDotGit": false, + "name": null, + "owner": "winston0410", + "repo": "mark-radar.nvim", + "rev": "d7fb84a670795a5b36b18a5b59afd1d3865cbec7", + "sha256": "sha256-6WfEFLFQnDpQ2X0NRSa25ALvm/SxiFoW4PAzBA8TdPg=", + "type": "github" + }, + "version": "d7fb84a670795a5b36b18a5b59afd1d3865cbec7" + }, + "pynvim_pp": { + "cargoLocks": null, + "date": "2023-03-12", + "extract": null, + "name": "pynvim_pp", + "passthru": null, + "pinned": false, + "src": { + "deepClone": false, + "fetchSubmodules": false, + "leaveDotGit": false, + "name": null, + "owner": "ms-jpq", + "repo": "pynvim_pp", + "rev": "40db0426f171d413dcc976b17c8eff0127664f23", + "sha256": "sha256-AtsoRJQcO5jDNlSydVnqcN7f4xURmH6bGFPpjsZ9Yrg=", + "type": "github" + }, + "version": "40db0426f171d413dcc976b17c8eff0127664f23" + }, + "std2": { + "cargoLocks": null, + "date": "2023-03-12", + "extract": null, + "name": "std2", + "passthru": null, + "pinned": false, + "src": { + "deepClone": false, + "fetchSubmodules": false, + "leaveDotGit": false, + "name": null, + "owner": "ms-jpq", + "repo": "std2", + "rev": "43635e036486296776b4ef5ac498f742ad25a691", + "sha256": "sha256-oWVaw7v1Sl7DkqIJOm8wEReID9MTD3XFOdpyQDXRa04=", + "type": "github" + }, + "version": "43635e036486296776b4ef5ac498f742ad25a691" + } +} \ No newline at end of file diff --git a/plugins/_sources/generated.nix b/plugins/_sources/generated.nix new file mode 100644 index 00000000..71794977 --- /dev/null +++ b/plugins/_sources/generated.nix @@ -0,0 +1,88 @@ +# This file was generated by nvfetcher, please do not modify it manually. +{ fetchgit, fetchurl, fetchFromGitHub, dockerTools }: +{ + coq-artifacts = { + pname = "coq-artifacts"; + version = "ee1814e2183bd424ca5528f82f3d6ce8f64e6f90"; + src = fetchFromGitHub ({ + owner = "ms-jpq"; + repo = "coq.artifacts"; + rev = "ee1814e2183bd424ca5528f82f3d6ce8f64e6f90"; + fetchSubmodules = false; + sha256 = "sha256-e+w5tLuer/4f0oImlIgxmI4Ke9h6x0PQ8+nVJDihkGQ="; + }); + date = "2023-03-12"; + }; + coq-nvim = { + pname = "coq-nvim"; + version = "4b4b93dbbfc871a3d32a244a4276ee06696c21bb"; + src = fetchFromGitHub ({ + owner = "ms-jpq"; + repo = "coq_nvim"; + rev = "4b4b93dbbfc871a3d32a244a4276ee06696c21bb"; + fetchSubmodules = false; + sha256 = "sha256-OXhLs7fO+qlOPyDc8AOA+bkbj9OzMZO8CFgfE/Q1cro="; + }); + date = "2023-03-12"; + }; + intellitab-nvim = { + pname = "intellitab-nvim"; + version = "a6c1a505865f6131866d609c52440306e9914b16"; + src = fetchFromGitHub ({ + owner = "pta2002"; + repo = "intellitab.nvim"; + rev = "a6c1a505865f6131866d609c52440306e9914b16"; + fetchSubmodules = false; + sha256 = "sha256-z5G7v2OttQs5B/uqWdxYtW6wPnVPARjQYidKLYkhvqY="; + }); + date = "2021-11-13"; + }; + magma-nvim = { + pname = "magma-nvim"; + version = "5d916c39c1852e09fcd39eab174b8e5bbdb25f8f"; + src = fetchFromGitHub ({ + owner = "WhiteBlackGoose"; + repo = "magma-nvim-goose"; + rev = "5d916c39c1852e09fcd39eab174b8e5bbdb25f8f"; + fetchSubmodules = false; + sha256 = "sha256-Sq7J43AYvsfUdFXELzEwBNTpnOt/F43/de+2zwBspoE="; + }); + date = "2023-03-13"; + }; + mark-radar = { + pname = "mark-radar"; + version = "d7fb84a670795a5b36b18a5b59afd1d3865cbec7"; + src = fetchFromGitHub ({ + owner = "winston0410"; + repo = "mark-radar.nvim"; + rev = "d7fb84a670795a5b36b18a5b59afd1d3865cbec7"; + fetchSubmodules = false; + sha256 = "sha256-6WfEFLFQnDpQ2X0NRSa25ALvm/SxiFoW4PAzBA8TdPg="; + }); + date = "2021-06-22"; + }; + pynvim_pp = { + pname = "pynvim_pp"; + version = "40db0426f171d413dcc976b17c8eff0127664f23"; + src = fetchFromGitHub ({ + owner = "ms-jpq"; + repo = "pynvim_pp"; + rev = "40db0426f171d413dcc976b17c8eff0127664f23"; + fetchSubmodules = false; + sha256 = "sha256-AtsoRJQcO5jDNlSydVnqcN7f4xURmH6bGFPpjsZ9Yrg="; + }); + date = "2023-03-12"; + }; + std2 = { + pname = "std2"; + version = "43635e036486296776b4ef5ac498f742ad25a691"; + src = fetchFromGitHub ({ + owner = "ms-jpq"; + repo = "std2"; + rev = "43635e036486296776b4ef5ac498f742ad25a691"; + fetchSubmodules = false; + sha256 = "sha256-oWVaw7v1Sl7DkqIJOm8wEReID9MTD3XFOdpyQDXRa04="; + }); + date = "2023-03-12"; + }; +} diff --git a/plugins/nvfetcher.toml b/plugins/nvfetcher.toml new file mode 100644 index 00000000..efed0b34 --- /dev/null +++ b/plugins/nvfetcher.toml @@ -0,0 +1,27 @@ +[intellitab-nvim] +src.git = "https://github.com/pta2002/intellitab.nvim" +fetch.github = "pta2002/intellitab.nvim" + +[mark-radar] +src.git = "https://github.com/winston0410/mark-radar.nvim" +fetch.github = "winston0410/mark-radar.nvim" + +[coq-nvim] +src.git = "https://github.com/ms-jpq/coq_nvim" +fetch.github = "ms-jpq/coq_nvim" + +[std2] +src.git = "https://github.com/ms-jpq/std2" +fetch.github = "ms-jpq/std2" + +[pynvim_pp] +src.git = "https://github.com/ms-jpq/pynvim_pp" +fetch.github = "ms-jpq/pynvim_pp" + +[coq-artifacts] +src.git = "https://github.com/ms-jpq/coq.artifacts" +fetch.github = "ms-jpq/coq.artifacts" + +[magma-nvim] +src.git = "https://github.com/WhiteBlackGoose/magma-nvim-goose" +fetch.github = "WhiteBlackGoose/magma-nvim-goose" diff --git a/plugins/plugin-defs.nix b/plugins/plugin-defs.nix index 6fbfa4e1..90edf28f 100644 --- a/plugins/plugin-defs.nix +++ b/plugins/plugin-defs.nix @@ -1,65 +1,31 @@ # This is for plugins not in nixpkgs # e.g. intellitab.nvim -# Ideally, in the future, this would all be specified as a flake input! -{pkgs, ...}: { - intellitab-nvim = pkgs.vimUtils.buildVimPlugin rec { - pname = "intellitab-nvim"; - version = "a6c1a505865f6131866d609c52440306e9914b16"; - src = pkgs.fetchFromGitHub { - owner = "pta2002"; - repo = "intellitab.nvim"; - rev = version; - sha256 = "19my464jsji7cb81h0agflzb0vmmb3f5kapv0wwhpdddcfzvp4fg"; - }; +# +# This is generated through nvfetcher, the plugins are defined in nvfetcher.toml. +# You can update the plugins by running `nvfetcher` in this directory +{pkgs, ...}: let + sources = pkgs.callPackage ./_sources/generated.nix {}; +in { + intellitab-nvim = pkgs.vimUtils.buildVimPlugin { + inherit (sources.intellitab-nvim) pname version src; }; - mark-radar = pkgs.vimUtils.buildVimPlugin rec { - pname = "mark-radar"; - version = "d7fb84a670795a5b36b18a5b59afd1d3865cbec7"; - src = pkgs.fetchFromGitHub { - owner = "winston0410"; - repo = "mark-radar.nvim"; - rev = version; - sha256 = "1y3l2c7h8czhw0b5m25iyjdyy0p4nqk4a3bxv583m72hn4ac8rz9"; - }; + mark-radar = pkgs.vimUtils.buildVimPlugin { + inherit (sources.mark-radar) pname version src; }; - coq-nvim = pkgs.vimUtils.buildVimPlugin rec { - pname = "coq-nvim"; - version = "2699492a1b8716c59ade7130dc354e53944b6a7f"; - src = pkgs.fetchFromGitHub { - owner = "ms-jpq"; - repo = "coq_nvim"; - rev = version; - sha256 = "sha256-tjniIWe1V4vGuao5no+3YB9WtiNaMehEjffJyNpFgd8="; - }; + coq-nvim = pkgs.vimUtils.buildVimPlugin { + inherit (sources.coq-nvim) pname version src; passthru.python3Dependencies = ps: [ ps.pynvim ps.pyyaml - (ps.buildPythonPackage rec { - pname = "pynvim_pp"; - version = "01dc0f58d4e71a98c388e1f37bda3d1357089fa2"; - - src = pkgs.fetchFromGitHub { - owner = "ms-jpq"; - repo = "pynvim_pp"; - rev = version; - sha256 = "sha256-/m4Paw6AvDzTMWWCWpPnrdI4gsjIDSJPvGCMV7ufbEA="; - }; + (ps.buildPythonPackage { + inherit (sources.pynvim_pp) pname version src; propagatedBuildInputs = [pkgs.python3Packages.pynvim]; }) - (ps.buildPythonPackage rec { - pname = "std2"; - version = "48bb39b69ed631ef64eed6123443484133fd20fc"; - + (ps.buildPythonPackage { + inherit (sources.std2) pname version src; doCheck = true; - - src = pkgs.fetchFromGitHub { - owner = "ms-jpq"; - repo = "std2"; - rev = version; - sha256 = "sha256-nMwNAq15zyf9ORhFGo0sawQukOygYoVWtT7jH68MIkI="; - }; }) ]; @@ -72,28 +38,12 @@ ''; }; - coq-artifacts = pkgs.vimUtils.buildVimPlugin rec { - pname = "coq.artifacts"; - version = "495429564e481cafeb044456da32c10cb631f948"; - - src = pkgs.fetchFromGitHub { - owner = "ms-jpq"; - repo = "coq.artifacts"; - rev = version; - sha256 = "sha256-AtkG2XRVZgvJzH2iLr7UT/U1+LXxenvNckdapnJV+8A="; - }; + coq-artifacts = pkgs.vimUtils.buildVimPlugin { + inherit (sources.coq-artifacts) pname version src; }; - magma-nvim = pkgs.vimUtils.buildVimPlugin rec { - pname = "magma-nvim"; - version = "94370733757d550594fe4a1d65643949d7485989"; - - src = pkgs.fetchFromGitHub { - owner = "WhiteBlackGoose"; - repo = "magma-nvim-goose"; - rev = version; - sha256 = "sha256-IaslJK1F2BxTvZzKGH9OKOl2RICi4d4rSgjliAIAqK4="; - }; + magma-nvim = pkgs.vimUtils.buildVimPlugin { + inherit (sources.magma-nvim) pname version src; passthru.python3Dependencies = ps: with ps; [