61 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{ stdenv
 | 
						|
, rtpPath ? "share/vim-plugins"
 | 
						|
, vim
 | 
						|
}:
 | 
						|
 | 
						|
rec {
 | 
						|
  addRtp = path: attrs: derivation:
 | 
						|
    derivation // { rtp = "${derivation}/${path}"; } // {
 | 
						|
      overrideAttrs = f: buildVimPlugin (attrs // f attrs);
 | 
						|
    };
 | 
						|
 | 
						|
  buildVimPlugin = attrs@{
 | 
						|
    name ? "${attrs.pname}-${attrs.version}",
 | 
						|
    namePrefix ? "vimplugin-",
 | 
						|
    src,
 | 
						|
    unpackPhase ? "",
 | 
						|
    configurePhase ? "",
 | 
						|
    buildPhase ? "",
 | 
						|
    preInstall ? "",
 | 
						|
    postInstall ? "",
 | 
						|
    path ? stdenv.lib.getName name,
 | 
						|
    addonInfo ? null,
 | 
						|
    ...
 | 
						|
  }:
 | 
						|
    addRtp "${rtpPath}/${path}" attrs (stdenv.mkDerivation (attrs // {
 | 
						|
      name = namePrefix + name;
 | 
						|
 | 
						|
      inherit unpackPhase configurePhase buildPhase addonInfo preInstall postInstall;
 | 
						|
 | 
						|
      installPhase = ''
 | 
						|
        runHook preInstall
 | 
						|
 | 
						|
        target=$out/${rtpPath}/${path}
 | 
						|
        mkdir -p $out/${rtpPath}
 | 
						|
        cp -r . $target
 | 
						|
 | 
						|
        # build help tags
 | 
						|
        if [ -d "$target/doc" ]; then
 | 
						|
          echo "Building help tags"
 | 
						|
          if ! ${vim}/bin/vim -N -u NONE -i NONE -n -E -s -V1 -c "helptags $target/doc" +quit!; then
 | 
						|
            echo "Failed to build help tags!"
 | 
						|
            exit 1
 | 
						|
          fi
 | 
						|
        else
 | 
						|
          echo "No docs available"
 | 
						|
        fi
 | 
						|
 | 
						|
        if [ -n "$addonInfo" ]; then
 | 
						|
          echo "$addonInfo" > $target/addon-info.json
 | 
						|
        fi
 | 
						|
 | 
						|
        runHook postInstall
 | 
						|
      '';
 | 
						|
    }));
 | 
						|
 | 
						|
  buildVimPluginFrom2Nix = attrs: buildVimPlugin ({
 | 
						|
    buildPhase = ":";
 | 
						|
    configurePhase =":";
 | 
						|
  } // attrs);
 | 
						|
}
 |