wayfire: add plugin support
The top-level "wayfire" attribute is a Wayfire with wf-shell installed and nothing else. But wayfireApplications.withPlugins can be used to create a Wayfire with arbitrary plugins, or no plugins at all.
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
{ newScope, wayfirePlugins }:
|
||||
|
||||
let
|
||||
self = with self; {
|
||||
inherit wayfirePlugins;
|
||||
|
||||
callPackage = newScope self;
|
||||
|
||||
wayfire = callPackage ./. { };
|
||||
|
||||
wcm = callPackage ./wcm.nix {
|
||||
inherit (wayfirePlugins) wf-shell;
|
||||
};
|
||||
|
||||
wrapWayfireApplication = callPackage ./wrapper.nix { };
|
||||
|
||||
withPlugins = selector: self // {
|
||||
wayfire = wrapWayfireApplication wayfire selector;
|
||||
wcm = wrapWayfireApplication wcm selector;
|
||||
};
|
||||
};
|
||||
in
|
||||
self
|
||||
@@ -0,0 +1,12 @@
|
||||
{ newScope, wayfire }:
|
||||
|
||||
let
|
||||
self = with self; {
|
||||
inherit wayfire;
|
||||
|
||||
callPackage = newScope self;
|
||||
|
||||
wf-shell = callPackage ./wf-shell.nix { };
|
||||
};
|
||||
in
|
||||
self
|
||||
@@ -0,0 +1,39 @@
|
||||
{ runCommandNoCC, lib, makeWrapper, wayfirePlugins }:
|
||||
|
||||
let
|
||||
inherit (lib) escapeShellArg makeBinPath;
|
||||
|
||||
xmlPath = plugin: "${plugin}/share/wayfire/metadata/wf-shell";
|
||||
|
||||
makePluginPath = lib.makeLibraryPath;
|
||||
makePluginXMLPath = lib.concatMapStringsSep ":" xmlPath;
|
||||
in
|
||||
|
||||
application:
|
||||
|
||||
choosePlugins:
|
||||
|
||||
let
|
||||
plugins = choosePlugins wayfirePlugins;
|
||||
in
|
||||
|
||||
runCommandNoCC "${application.name}-wrapped" {
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
passthru = application.passthru // {
|
||||
unwrapped = application;
|
||||
};
|
||||
|
||||
inherit (application) meta;
|
||||
} ''
|
||||
mkdir -p $out/bin
|
||||
for bin in ${application}/bin/*
|
||||
do
|
||||
makeWrapper "$bin" $out/bin/''${bin##*/} \
|
||||
--suffix PATH : ${escapeShellArg (makeBinPath plugins)} \
|
||||
--suffix WAYFIRE_PLUGIN_PATH : ${escapeShellArg (makePluginPath plugins)} \
|
||||
--suffix WAYFIRE_PLUGIN_XML_PATH : ${escapeShellArg (makePluginXMLPath plugins)}
|
||||
done
|
||||
find ${application} -mindepth 1 -maxdepth 1 -not -name bin \
|
||||
-exec ln -s '{}' $out ';'
|
||||
''
|
||||
Reference in New Issue
Block a user