arcan: create a wrapper

This commit creates a wrapper with the purpose of gracefully execute Arcan
applications (appls, in Arcan jargon).

In a typical FHS system, Arcan can be invoked by a commandline like `arcan
<appl>`, or more generally `arcan <arcan options> <appl> <appl options>`. In
order to emulate this behaviour, this wrapper was crafted.

It `symlinkJoin`s Arcan and the appls, and sets the relevant environment
variables accordingly.
wip/nixpkgs-raku
AndersonTorres 3 years ago
parent 09eacdb0df
commit 8c6d942984
  1. 1
      pkgs/desktops/arcan/default.nix
  2. 28
      pkgs/desktops/arcan/wrapper.nix

@ -10,4 +10,5 @@ rec {
# Arcan
arcan = callPackage ./arcan.nix { };
arcan-wrapped = callPackage ./wrapper.nix { };
}

@ -0,0 +1,28 @@
{ arcan
, makeWrapper
, symlinkJoin
, appls ? [ ]
, name ? "arcan-wrapped"
}:
symlinkJoin rec {
inherit name;
paths = appls ++ [ arcan ];
nativeBuildInputs = [ makeWrapper ];
postBuild = ''
for prog in ${placeholder "out"}/bin/*; do
wrapProgram $prog \
--prefix PATH ":" "${placeholder "out"}/bin" \
--set ARCAN_APPLBASEPATH "${placeholder "out"}/share/arcan/appl/" \
--set ARCAN_BINPATH "${placeholder "out"}/bin/arcan_frameserver" \
--set ARCAN_LIBPATH "${placeholder "out"}/lib/" \
--set ARCAN_RESOURCEPATH "${placeholder "out"}/share/arcan/resources/" \
--set ARCAN_SCRIPTPATH "${placeholder "out"}/share/arcan/scripts/" \
--set ARCAN_STATEBASEPATH "$HOME/.arcan/resources/savestates/"
done
'';
}
# TODO: set ARCAN_FONTPATH to a set of fonts that can be provided in a parameter
Loading…
Cancel
Save