From 81b028afd3d62e36da0924accdbe9b6db5a4eef1 Mon Sep 17 00:00:00 2001 From: Profpatsch Date: Fri, 12 Nov 2021 20:34:45 +0100 Subject: modules/lazy-packages: factor wrapper to pkgs.vuizvui.lazy-packages This makes it usable outside of the module; should be a pure refactor. --- modules/core/lazy-packages.nix | 44 +----------------------------------------- 1 file changed, 1 insertion(+), 43 deletions(-) (limited to 'modules/core') diff --git a/modules/core/lazy-packages.nix b/modules/core/lazy-packages.nix index 91c1b8db..a26e2866 100644 --- a/modules/core/lazy-packages.nix +++ b/modules/core/lazy-packages.nix @@ -4,49 +4,7 @@ let inherit (lib) escapeShellArg; inherit (config.vuizvui) lazyPackages; - # Encode the store path in base 64 so that the wrapper - # doesn't have a direct dependency on the package. - encoder = "${escapeShellArg "${pkgs.coreutils}/bin/base64"} -w0"; - decoder = "${escapeShellArg "${pkgs.coreutils}/bin/base64"} -d"; - - # The command used to fetch the store path from the binary cache. - fetchSubstitute = "${escapeShellArg "${pkgs.nix}/bin/nix-store"} -r"; - - mkWrapper = {package, extraErrorMessage ? ""}: pkgs.runCommandLocal "${package.name}-lazy" { - inherit package; - inherit extraErrorMessage; - } '' - encoded="$(echo "$package" | ${encoder})" - - if [ ! -e "$package/bin" ]; then - echo "Store path $package doesn't have a \`bin' directory" \ - "so we can't create lazy wrappers for it." \ - "$extraErrorMessage" >&2 - exit 1 - fi - - for bin in "$package"/bin/*; do - [ -x "$bin" -a ! -d "$bin" ] || continue - binpath="''${bin#$package/}" - - mkdir -p "$out/bin" - ( echo ${escapeShellArg "#!${pkgs.stdenv.shell}"} - echo "encoded='$encoded'" - echo "binpath='$binpath'" - echo -n ${escapeShellArg '' - storepath="$(echo "$encoded" | ${decoder})" - program="$storepath/$binpath" - if [ ! -e "$storepath" ]; then - ${fetchSubstitute} "$storepath" > /dev/null || exit $? - fi - exec "$program" "$@" - ''} - ) > "$out/bin/$(basename "$bin")" - chmod +x "$out/bin/$(basename "$bin")" - done - ''; - - vuizvuiWrapper = package: mkWrapper { + vuizvuiWrapper = package: pkgs.vuizvui.lazy-packages.mkWrapper { inherit package; extraErrorMessage = "Please remove `${escapeShellArg package.name}' from `vuizvui.lazyPackages'."; }; -- cgit 1.4.1