5 paths ? [ "bin/${package.meta.mainProgram or (pkgs.lib.getName package)}" ],
6 name ? package.name + "-firejailed",
7 firejail ? "/run/wrappers/bin/firejail",
12 # DevelopmentNode: you may have to inherit more attributes.
13 inherit (package) meta passthru;
15 nativeBuildInputs = [ pkgs.makeShellWrapper ];
17 # ExplanationNote: /run/wrappers/ is not yet available
18 # hence disable that check in makeShellWrapper.
19 assertExecutable () { true; }
20 for path in ${pkgs.lib.escapeShellArgs paths}; do
22 # CorrectnessNote: in case the resulting package is called
23 # when building a derivation (eg. in neovim: Generating remote plugin manifest)
24 # /run/wrappers/ does not exist, hence just bypass firejail using a --run.
28 --run "[ -x ${firejail} ] || exec \"${package}/$path\" \"\$@\"" \
29 --add-flags "${pkgs.lib.escapeShellArgs args}" \
30 --add-flags "${package}/$path" \