dput-ng: fix eval (#364540)
[NixPkgs.git] / pkgs / by-name / as / asdf-vm / package.nix
blob2c2bc6fba12194a35174ec3dbf4f4ee3d99e7ac1
2   stdenv,
3   lib,
4   fetchFromGitHub,
5   makeWrapper,
6   installShellFiles,
7   bash,
8   curl,
9   git,
10   writeScript,
13 let
14   asdfReshimFile = writeScript "asdf-reshim" ''
15     #!/usr/bin/env bash
17     # asdf-vm create "shim" file like this:
18     #
19     #    exec $ASDF_DIR/bin/asdf exec "node" "$@"
20     #
21     # So we should reshim all installed versions every time shell initialized,
22     # because $out always change
24     asdfDir="''${ASDF_DIR:-$HOME/.asdf}"
25     asdfDataDir="''${ASDF_DATA_DIR:-$HOME/.asdf}"
27     prevAsdfDirFilePath="$asdfDataDir/.nix-prev-asdf-dir-path"
29     if [ -r "$prevAsdfDirFilePath" ]; then
30       prevAsdfDir="$(cat "$prevAsdfDirFilePath")"
31     else
32       prevAsdfDir=""
33     fi
35     if [ "$prevAsdfDir" != "$asdfDir" ]; then
36       rm -rf "$asdfDataDir"/shims
37       "$asdfDir"/bin/asdf reshim
38       echo "$asdfDir" > "$prevAsdfDirFilePath"
39     fi
40   '';
42   asdfPrepareFile = writeScript "asdf-prepare" ''
43     ASDF_DIR="@asdfDir@"
45     source "$ASDF_DIR/asdf.sh"
46     ${asdfReshimFile}
47   '';
49 stdenv.mkDerivation rec {
50   pname = "asdf-vm";
51   version = "0.14.1";
53   src = fetchFromGitHub {
54     owner = "asdf-vm";
55     repo = "asdf";
56     rev = "v${version}";
57     sha256 = "sha256-1dacsAoZVwoQv8+V4FrjRLa7awLIZchlhkuET0wTO7w=";
58   };
60   nativeBuildInputs = [
61     makeWrapper
62     installShellFiles
63   ];
65   buildInputs = [
66     bash
67     curl
68     git
69   ];
71   installPhase = ''
72     mkdir -p $out/share/asdf-vm
73     cp -r . $out/share/asdf-vm
75     mkdir -p $out/etc/profile.d
76     substitute ${asdfPrepareFile} $out/etc/profile.d/asdf-prepare.sh \
77       --replace "@asdfDir@" "$out/share/asdf-vm"
79     mkdir -p $out/bin
80     makeWrapper $out/share/asdf-vm/bin/asdf $out/bin/asdf \
81       --set ASDF_DIR $out/share/asdf-vm
83     installShellCompletion --cmd asdf \
84       --zsh completions/_asdf \
85       --fish completions/asdf.fish \
86       --bash completions/asdf.bash
87   '';
89   meta = with lib; {
90     description = "Extendable version manager with support for Ruby, Node.js, Erlang & more";
91     homepage = "https://asdf-vm.com/";
92     license = licenses.mit;
93     maintainers = [ maintainers.c4605 ];
94     mainProgram = "asdf";
95     platforms = platforms.unix;
96   };