mirror of
https://github.com/thilobillerbeck/dotfiles.git
synced 2024-11-14 12:58:49 +01:00
37 lines
No EOL
1.1 KiB
Nix
37 lines
No EOL
1.1 KiB
Nix
# Call once on import to load global context
|
|
{
|
|
pkgs,
|
|
config,
|
|
}:
|
|
# Wrap a single package
|
|
pkg:
|
|
if config.nixGLPrefix == ""
|
|
then pkg
|
|
else
|
|
# Wrap the package's binaries with nixGL, while preserving the rest of
|
|
# the outputs and derivation attributes.
|
|
(pkg.overrideAttrs (old: {
|
|
name = "nixGL-${pkg.name}";
|
|
buildCommand = ''
|
|
set -eo pipefail
|
|
|
|
${
|
|
# Heavily inspired by https://stackoverflow.com/a/68523368/6259505
|
|
pkgs.lib.concatStringsSep "\n" (map (outputName: ''
|
|
echo "Copying output ${outputName}"
|
|
set -x
|
|
cp -rs --no-preserve=mode "${pkg.${outputName}}" "''$${outputName}"
|
|
set +x
|
|
'') (old.outputs or ["out"]))
|
|
}
|
|
|
|
rm -rf $out/bin/*
|
|
shopt -s nullglob # Prevent loop from running if no files
|
|
for file in ${pkg.out}/bin/*; do
|
|
echo "#!${pkgs.bash}/bin/bash" > "$out/bin/$(basename $file)"
|
|
echo "exec -a \"\$0\" ${config.nixGLPrefix} $file \"\$@\"" >> "$out/bin/$(basename $file)"
|
|
chmod +x "$out/bin/$(basename $file)"
|
|
done
|
|
shopt -u nullglob # Revert nullglob back to its normal default state
|
|
'';
|
|
})) |