tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
lol
0
fork
atom
overview
issues
pulls
pipelines
asdf-vm: init at 0.8.1
c4605
4 years ago
892fa793
b2f86e66
+86
2 changed files
expand all
collapse all
unified
split
pkgs
tools
misc
asdf-vm
default.nix
top-level
all-packages.nix
+85
pkgs/tools/misc/asdf-vm/default.nix
···
1
1
+
{ stdenv, lib, fetchFromGitHub, makeWrapper, installShellFiles, bash, coreutils, curl, git, writeScript }:
2
2
+
3
3
+
let
4
4
+
asdfReshimFile = writeScript "asdf-reshim" ''
5
5
+
#!/usr/bin/env bash
6
6
+
7
7
+
# asdf-vm create "shim" file like this:
8
8
+
#
9
9
+
# exec $ASDF_DIR/bin/asdf exec "node" "$@"
10
10
+
#
11
11
+
# So we should reshim all installed versions every time shell initialized,
12
12
+
# because $out always change
13
13
+
14
14
+
asdfDir="''${ASDF_DIR:-$HOME/.asdf}"
15
15
+
asdfDataDir="''${ASDF_DATA_DIR:-$HOME/.asdf}"
16
16
+
17
17
+
prevAsdfDirFilePath="$asdfDataDir/.nix-prev-asdf-dir-path"
18
18
+
19
19
+
if [ -r "$prevAsdfDirFilePath" ]; then
20
20
+
prevAsdfDir="$(cat "$prevAsdfDirFilePath")"
21
21
+
else
22
22
+
prevAsdfDir=""
23
23
+
fi
24
24
+
25
25
+
if [ "$prevAsdfDir" != "$asdfDir" ]; then
26
26
+
rm -rf "$asdfDataDir"/shims
27
27
+
"$asdfDir"/bin/asdf reshim
28
28
+
echo "$asdfDir" > "$prevAsdfDirFilePath"
29
29
+
fi
30
30
+
'';
31
31
+
32
32
+
asdfPrepareFile = writeScript "asdf-prepare" ''
33
33
+
ASDF_DIR="@asdfDir@"
34
34
+
35
35
+
source "$ASDF_DIR/asdf.sh"
36
36
+
${asdfReshimFile}
37
37
+
'';
38
38
+
in stdenv.mkDerivation rec {
39
39
+
pname = "asdf-vm";
40
40
+
version = "0.8.1";
41
41
+
42
42
+
src = fetchFromGitHub {
43
43
+
owner = "asdf-vm";
44
44
+
repo = "asdf";
45
45
+
rev = "v${version}";
46
46
+
sha256 = "07lh5k1krzm7fbkv0jlwbzz5ycn2jg7s12dnqwmy82qqic0sl6fl";
47
47
+
};
48
48
+
49
49
+
nativeBuildInputs = [
50
50
+
makeWrapper
51
51
+
installShellFiles
52
52
+
];
53
53
+
54
54
+
buildInputs = [
55
55
+
bash
56
56
+
curl
57
57
+
git
58
58
+
];
59
59
+
60
60
+
installPhase = ''
61
61
+
mkdir -p $out/share/asdf-vm
62
62
+
cp -r . $out/share/asdf-vm
63
63
+
64
64
+
mkdir -p $out/etc/profile.d
65
65
+
substitute ${asdfPrepareFile} $out/etc/profile.d/asdf-prepare.sh \
66
66
+
--replace "@asdfDir@" "$out/share/asdf-vm"
67
67
+
68
68
+
mkdir -p $out/bin
69
69
+
makeWrapper $out/share/asdf-vm/bin/asdf $out/bin/asdf \
70
70
+
--set ASDF_DIR $out/share/asdf-vm
71
71
+
72
72
+
installShellCompletion --cmd asdf \
73
73
+
--zsh completions/_asdf \
74
74
+
--fish completions/asdf.fish \
75
75
+
--bash completions/asdf.bash
76
76
+
'';
77
77
+
78
78
+
meta = with lib; {
79
79
+
description = "Extendable version manager with support for Ruby, Node.js, Erlang & more";
80
80
+
homepage = "https://asdf-vm.com/";
81
81
+
license = licenses.mit;
82
82
+
maintainers = [ maintainers.c4605 ];
83
83
+
platforms = platforms.unix;
84
84
+
};
85
85
+
}
+1
pkgs/top-level/all-packages.nix
···
12593
12593
12594
12594
xidel = callPackage ../tools/text/xidel { };
12595
12595
12596
12596
+
asdf-vm = callPackage ../tools/misc/asdf-vm { };
12596
12597
12597
12598
### DEVELOPMENT / TOOLS
12598
12599