32 lines
809 B
Nix
32 lines
809 B
Nix
{ lib
|
|
}: self:
|
|
|
|
with lib;
|
|
|
|
package:
|
|
pluginsFun:
|
|
|
|
let
|
|
plugins =
|
|
if isFunction pluginsFun
|
|
then pluginsFun self
|
|
else pluginsFun;
|
|
|
|
# FIXME: Is this still needed?
|
|
info = builtins.parseDrvName package.name;
|
|
badPlugins = filter (p: ! elem info.name p.jetbrainsPlatforms) plugins;
|
|
errorMsg = "plugins [ ${toString (map (p: p.name) badPlugins)} ] are not available for platform ${info.name}";
|
|
in
|
|
|
|
assert assertMsg (length badPlugins == 0) errorMsg;
|
|
|
|
appendToName "with-plugins" (package.overrideAttrs (oldAttrs: {
|
|
passthru = { inherit plugins; };
|
|
# TODO: Purely aesthetics, but link the plugin to its name instead of hash-name-version
|
|
installPhase = oldAttrs.installPhase + ''
|
|
for plugin in $plugins; do
|
|
ln -s "$plugin" "$out/$name/plugins/$(basename $plugin)"
|
|
done
|
|
'';
|
|
}))
|