mirror of
https://github.com/NotAShelf/nvf.git
synced 2025-11-09 15:05:30 +00:00
build: fix plugin overrides from fetchers
This commit is contained in:
parent
3f42d4e810
commit
5317b3fe31
1 changed files with 52 additions and 10 deletions
|
|
@ -11,27 +11,69 @@
|
||||||
|
|
||||||
getPin = name: ((pkgs.callPackages ../../../npins/sources.nix {}) // config.vim.pluginOverrides).${name};
|
getPin = name: ((pkgs.callPackages ../../../npins/sources.nix {}) // config.vim.pluginOverrides).${name};
|
||||||
|
|
||||||
|
# HACK: this is so fucking ass someone please rewrite this
|
||||||
noBuildPlug = pname: let
|
noBuildPlug = pname: let
|
||||||
pin = getPin pname;
|
pin = getPin pname;
|
||||||
version = builtins.substring 0 8 pin.revision;
|
pinVersion = builtins.substring 0 8 pin.revision;
|
||||||
|
drvVersion =
|
||||||
|
pin.version or (
|
||||||
|
if pin ? rev
|
||||||
|
then builtins.substring 0 8 pin.rev
|
||||||
|
else "dirty"
|
||||||
|
);
|
||||||
in
|
in
|
||||||
pin.outPath.overrideAttrs {
|
if pin ? type && pin.type == "derivation"
|
||||||
inherit pname version;
|
then # a derivation, hopefully from a fetcher
|
||||||
name = "${pname}-${version}";
|
pin.overrideAttrs {
|
||||||
|
inherit pname;
|
||||||
|
version = drvVersion;
|
||||||
|
# the name from various fetchers tend to be "source"
|
||||||
|
name = "${pname}-${drvVersion}";
|
||||||
|
|
||||||
passthru.vimPlugin = false;
|
passthru.vimPlugin = false;
|
||||||
};
|
}
|
||||||
|
else if pin ? type
|
||||||
|
then # npins source
|
||||||
|
# there's a set list of possible values for pin.type so maybe I should
|
||||||
|
# check that
|
||||||
|
pin.outPath.overrideAttrs {
|
||||||
|
inherit pname;
|
||||||
|
version = pinVersion;
|
||||||
|
name = "${pname}-${pinVersion}";
|
||||||
|
|
||||||
|
passthru.vimPlugin = false;
|
||||||
|
}
|
||||||
|
else # flake inputs with flake=false are not derivations
|
||||||
|
# should I detect bad inputs? maybe, but I have no fucking clue what I'm
|
||||||
|
# doing here
|
||||||
|
# Is this how you normally do a no-build? idfk
|
||||||
|
pkgs.stdenv.mkDerivation {
|
||||||
|
inherit pname;
|
||||||
|
version = pin.rev or "dirty";
|
||||||
|
src = pin;
|
||||||
|
dontBuild = true;
|
||||||
|
installPhase = ''
|
||||||
|
cp -r . $out
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru.vimPlugin = false;
|
||||||
|
};
|
||||||
|
|
||||||
# build a vim plugin with the given name and arguments
|
# build a vim plugin with the given name and arguments
|
||||||
# if the plugin is nvim-treesitter, warn the user to use buildTreesitterPlug
|
|
||||||
# instead
|
|
||||||
buildPlug = attrs: let
|
buildPlug = attrs: let
|
||||||
pin = getPin attrs.pname;
|
pin = getPin attrs.pname;
|
||||||
|
src =
|
||||||
|
if pin ? type -> pin.type == "derivation"
|
||||||
|
# derivation or flake input, I hope
|
||||||
|
then pin
|
||||||
|
# npins source
|
||||||
|
else pin.outPath;
|
||||||
in
|
in
|
||||||
pkgs.vimUtils.buildVimPlugin (
|
pkgs.vimUtils.buildVimPlugin (
|
||||||
{
|
{
|
||||||
version = pin.revision or "dirty";
|
# pin.revision is for npins, pin.rev for result from fetchers
|
||||||
src = pin.outPath;
|
version = pin.revision or pin.rev or "dirty";
|
||||||
|
inherit src;
|
||||||
}
|
}
|
||||||
// attrs
|
// attrs
|
||||||
);
|
);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue