Loading pkgs/by-name/as/asdf-vm/package.nix +31 −65 Original line number Diff line number Diff line { stdenv, lib, stdenv, buildGoModule, fetchFromGitHub, makeWrapper, installShellFiles, bash, curl, git, writeScript, }: let asdfReshimFile = writeScript "asdf-reshim" '' #!/usr/bin/env bash # asdf-vm create "shim" file like this: # # exec $ASDF_DIR/bin/asdf exec "node" "$@" # # So we should reshim all installed versions every time shell initialized, # because $out always change asdfDir="''${ASDF_DIR:-$HOME/.asdf}" asdfDataDir="''${ASDF_DATA_DIR:-$HOME/.asdf}" prevAsdfDirFilePath="$asdfDataDir/.nix-prev-asdf-dir-path" if [ -r "$prevAsdfDirFilePath" ]; then prevAsdfDir="$(cat "$prevAsdfDirFilePath")" else prevAsdfDir="" fi if [ "$prevAsdfDir" != "$asdfDir" ]; then rm -rf "$asdfDataDir"/shims "$asdfDir"/bin/asdf reshim echo "$asdfDir" > "$prevAsdfDirFilePath" fi ''; asdfPrepareFile = writeScript "asdf-prepare" '' ASDF_DIR="@asdfDir@" source "$ASDF_DIR/asdf.sh" ${asdfReshimFile} ''; in stdenv.mkDerivation (finalAttrs: { buildGoModule (finalAttrs: { pname = "asdf-vm"; version = "0.15.0"; version = "0.18.0"; src = fetchFromGitHub { owner = "asdf-vm"; repo = "asdf"; tag = "v${finalAttrs.version}"; hash = "sha256-quDgoYi+3hZUEAzXWTHuL5UK1T+4o7+G67w0UzZOjJA="; hash = "sha256-BBd+MiRISjMz2m29nNIakG79Oy1k7bZI/Q24QQNp5CY="; }; vendorHash = "sha256-gzlHXIzDYo4leP+37HgNrz5faIlrCLYA7AVSvZ6Uicc="; nativeBuildInputs = [ makeWrapper installShellFiles ]; buildInputs = [ bash curl git ]; installPhase = '' mkdir -p $out/share/asdf-vm cp -r . $out/share/asdf-vm # Tests have additional requirements doCheck = false; postInstall = '' # Install profile.d script for environment setup mkdir -p $out/etc/profile.d substitute ${asdfPrepareFile} $out/etc/profile.d/asdf-prepare.sh \ --replace "@asdfDir@" "$out/share/asdf-vm" mkdir -p $out/bin makeWrapper $out/share/asdf-vm/bin/asdf $out/bin/asdf \ --set ASDF_DIR $out/share/asdf-vm cat > $out/etc/profile.d/asdf-prepare.sh <<'EOF' export ASDF_DIR="${placeholder "out"}" export PATH="''${ASDF_DATA_DIR:-$HOME/.asdf}/shims:$PATH" EOF # Wrap the asdf binary to set ASDF_DIR wrapProgram $out/bin/asdf \ --set ASDF_DIR $out '' + lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) '' # Generate completions using the built asdf binary installShellCompletion --cmd asdf \ --zsh completions/_asdf \ --fish completions/asdf.fish \ --bash completions/asdf.bash --bash <($out/bin/asdf completion bash) \ --fish <($out/bin/asdf completion fish) \ --zsh <($out/bin/asdf completion zsh) ''; meta = { description = "Extendable version manager with support for Ruby, Node.js, Erlang & more"; homepage = "https://asdf-vm.com/"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ c4605 ]; maintainers = with lib.maintainers; [ c4605 vringar ]; mainProgram = "asdf"; platforms = lib.platforms.unix; }; Loading Loading
pkgs/by-name/as/asdf-vm/package.nix +31 −65 Original line number Diff line number Diff line { stdenv, lib, stdenv, buildGoModule, fetchFromGitHub, makeWrapper, installShellFiles, bash, curl, git, writeScript, }: let asdfReshimFile = writeScript "asdf-reshim" '' #!/usr/bin/env bash # asdf-vm create "shim" file like this: # # exec $ASDF_DIR/bin/asdf exec "node" "$@" # # So we should reshim all installed versions every time shell initialized, # because $out always change asdfDir="''${ASDF_DIR:-$HOME/.asdf}" asdfDataDir="''${ASDF_DATA_DIR:-$HOME/.asdf}" prevAsdfDirFilePath="$asdfDataDir/.nix-prev-asdf-dir-path" if [ -r "$prevAsdfDirFilePath" ]; then prevAsdfDir="$(cat "$prevAsdfDirFilePath")" else prevAsdfDir="" fi if [ "$prevAsdfDir" != "$asdfDir" ]; then rm -rf "$asdfDataDir"/shims "$asdfDir"/bin/asdf reshim echo "$asdfDir" > "$prevAsdfDirFilePath" fi ''; asdfPrepareFile = writeScript "asdf-prepare" '' ASDF_DIR="@asdfDir@" source "$ASDF_DIR/asdf.sh" ${asdfReshimFile} ''; in stdenv.mkDerivation (finalAttrs: { buildGoModule (finalAttrs: { pname = "asdf-vm"; version = "0.15.0"; version = "0.18.0"; src = fetchFromGitHub { owner = "asdf-vm"; repo = "asdf"; tag = "v${finalAttrs.version}"; hash = "sha256-quDgoYi+3hZUEAzXWTHuL5UK1T+4o7+G67w0UzZOjJA="; hash = "sha256-BBd+MiRISjMz2m29nNIakG79Oy1k7bZI/Q24QQNp5CY="; }; vendorHash = "sha256-gzlHXIzDYo4leP+37HgNrz5faIlrCLYA7AVSvZ6Uicc="; nativeBuildInputs = [ makeWrapper installShellFiles ]; buildInputs = [ bash curl git ]; installPhase = '' mkdir -p $out/share/asdf-vm cp -r . $out/share/asdf-vm # Tests have additional requirements doCheck = false; postInstall = '' # Install profile.d script for environment setup mkdir -p $out/etc/profile.d substitute ${asdfPrepareFile} $out/etc/profile.d/asdf-prepare.sh \ --replace "@asdfDir@" "$out/share/asdf-vm" mkdir -p $out/bin makeWrapper $out/share/asdf-vm/bin/asdf $out/bin/asdf \ --set ASDF_DIR $out/share/asdf-vm cat > $out/etc/profile.d/asdf-prepare.sh <<'EOF' export ASDF_DIR="${placeholder "out"}" export PATH="''${ASDF_DATA_DIR:-$HOME/.asdf}/shims:$PATH" EOF # Wrap the asdf binary to set ASDF_DIR wrapProgram $out/bin/asdf \ --set ASDF_DIR $out '' + lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) '' # Generate completions using the built asdf binary installShellCompletion --cmd asdf \ --zsh completions/_asdf \ --fish completions/asdf.fish \ --bash completions/asdf.bash --bash <($out/bin/asdf completion bash) \ --fish <($out/bin/asdf completion fish) \ --zsh <($out/bin/asdf completion zsh) ''; meta = { description = "Extendable version manager with support for Ruby, Node.js, Erlang & more"; homepage = "https://asdf-vm.com/"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ c4605 ]; maintainers = with lib.maintainers; [ c4605 vringar ]; mainProgram = "asdf"; platforms = lib.platforms.unix; }; Loading