1# Updating the dependencies for this package:
2#
3# wget https://raw.githubusercontent.com/mint-lang/mint/0.3.1/shard.lock
4# nix-shell -p crystal libyaml --run 'crystal run crystal2nix.cr'
5#
6{stdenv, lib, fetchFromGitHub, crystal, zlib, openssl, duktape, which, libyaml }:
7let
8 crystalPackages = lib.mapAttrs (name: src:
9 stdenv.mkDerivation {
10 name = lib.replaceStrings ["/"] ["-"] name;
11 src = fetchFromGitHub src;
12 phases = "installPhase";
13 installPhase = ''cp -r $src $out'';
14 passthru = { libName = name; };
15 }
16 ) (import ./shards.nix);
17
18 crystalLib = stdenv.mkDerivation {
19 name = "crystal-lib";
20 src = lib.attrValues crystalPackages;
21 libNames = lib.mapAttrsToList (k: v: [k v]) crystalPackages;
22 phases = "buildPhase";
23 buildPhase = ''
24 mkdir -p $out
25 linkup () {
26 while [ "$#" -gt 0 ]; do
27 ln -s $2 $out/$1
28 shift; shift
29 done
30 }
31 linkup $libNames
32 '';
33 };
34in
35stdenv.mkDerivation rec {
36 version = "0.3.1";
37 name = "mint-${version}";
38 src = fetchFromGitHub {
39 owner = "mint-lang";
40 repo = "mint";
41 rev = version;
42 sha256 = "1f49ax045zdjj0ypc2j4ms9gx80rl63qcsfzm3r0k0lcavfp57zr";
43 };
44
45 nativeBuildInputs = [ which crystal zlib openssl duktape libyaml ];
46
47 buildPhase = ''
48 mkdir -p $out/bin tmp
49 cd tmp
50 ln -s ${crystalLib} lib
51 cp -r $src/* .
52 crystal build src/mint.cr -o $out/bin/mint --verbose --progress --release --no-debug
53 '';
54
55 installPhase = ''true'';
56
57 meta = {
58 description = "A refreshing language for the front-end web";
59 homepage = https://mint-lang.com/;
60 license = stdenv.lib.licenses.bsd3;
61 maintainers = with stdenv.lib.maintainers; [ manveru ];
62 platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ];
63 };
64}