Merge pull request #41148 from manveru/add-mint-lang

Mint-lang: Init at 2018.05.27
This commit is contained in:
Matthew Justin Bauer 2018-06-01 21:12:51 -04:00 committed by GitHub
commit 0241c2c8b1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 160 additions and 0 deletions

View file

@ -0,0 +1,35 @@
require "yaml"
require "json"
class PrefetchJSON
JSON.mapping(sha256: String)
end
File.open "shards.nix", "w+" do |file|
file.puts %({)
yaml = YAML.parse(File.read("shard.lock"))
yaml["shards"].each do |key, value|
owner, repo = value["github"].as_s.split("/")
url = "https://github.com/#{value["github"]}"
rev = if value["version"]?
"v#{value["version"]}"
else
value["commit"].as_s
end
sha256 = ""
args = ["--url", url, "--rev", rev]
Process.run("nix-prefetch-git", args: args) do |x|
x.error.each_line { |e| puts e }
sha256 = PrefetchJSON.from_json(x.output).sha256
end
file.puts %( #{key} = {)
file.puts %( owner = "#{owner}";)
file.puts %( repo = "#{repo}";)
file.puts %( rev = "#{rev}";)
file.puts %( sha256 = "#{sha256}";)
file.puts %( };)
end
file.puts %(})
end

View file

@ -0,0 +1,61 @@
{stdenv, lib, fetchFromGitHub, crystal, zlib, openssl, duktape}:
let
crystalPackages = lib.mapAttrs (name: src:
stdenv.mkDerivation {
name = lib.replaceStrings ["/"] ["-"] name;
src = fetchFromGitHub src;
phases = "installPhase";
installPhase = ''cp -r $src $out'';
passthru = { libName = name; };
}
) (import ./shards.nix);
crystalLib = stdenv.mkDerivation {
name = "crystal-lib";
src = lib.attrValues crystalPackages;
libNames = lib.mapAttrsToList (k: v: [k v]) crystalPackages;
phases = "buildPhase";
buildPhase = ''
mkdir -p $out
linkup () {
while [ "$#" -gt 0 ]; do
ln -s $2 $out/$1
shift; shift
done
}
linkup $libNames
'';
};
in
stdenv.mkDerivation rec {
version = "2018-05-27";
name = "mint-${version}";
src = fetchFromGitHub {
owner = "mint-lang";
repo = "mint";
rev = "a3f0c86f54b8b3a18dda5c39c2089bdb1d774b4f";
sha256 = "1bgs6jkwfc2ksq4gj55cl3h2l5g25f5bwlsjryiw9cbx5k4bp1kz";
};
buildInputs = [ crystal zlib openssl duktape ];
buildPhase = ''
mkdir -p $out/bin
mkdir tmp
cd tmp
ln -s ${crystalLib} lib
cp -r $src/* .
crystal build src/mint.cr -o $out/bin/mint --verbose --progress --release --no-debug
'';
installPhase = ''true'';
meta = {
description = "A refreshing language for the front-end web";
homepage = https://mint-lang.com/;
license = stdenv.lib.licenses.bsd3;
maintainers = with stdenv.lib.maintainers; [ manveru ];
platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ];
};
}

View file

@ -0,0 +1,62 @@
{
admiral = {
owner = "jwaldrip";
repo = "admiral.cr";
rev = "v1.6.1";
sha256 = "0y30b9b9rkz43afd3b9l24hs0r170qyc07r05kvydbv89376c53i";
};
ameba = {
owner = "veelenga";
repo = "ameba";
rev = "v0.6.0";
sha256 = "16jfyrkfc909h16si513lw944qp3dyapymczcqc2ic0jaal0af5b";
};
baked_file_system = {
owner = "schovi";
repo = "baked_file_system";
rev = "v0.9.6";
sha256 = "06cpriaizp5pcqwdq3jl2lm4sz9b2gcxg3a9q3lh0fqk2acajzmx";
};
duktape = {
owner = "jessedoyle";
repo = "duktape.cr";
rev = "v0.13.0";
sha256 = "0v0nckprgr7idmsx97g98as1a7z4hmlmwl924dbbaqvyslv5ls6w";
};
kemal = {
owner = "kemalcr";
repo = "kemal";
rev = "v0.22.0";
sha256 = "0gq3c27grgh90fykbj9fdsz507lwd41gk686qfnig6npndqv1v10";
};
kilt = {
owner = "jeromegn";
repo = "kilt";
rev = "v0.4.0";
sha256 = "1w9ib6j4xhwxdxx58nzc06gw7ci7vga03vgj1z1bnklamb0b0l0k";
};
radix = {
owner = "luislavena";
repo = "radix";
rev = "v0.3.8";
sha256 = "1kn2xxj8a8j6f6g1dr0s9mkrj1xqnpzw9wnbq24mbv8ach9a1hva";
};
string_inflection = {
owner = "mosop";
repo = "string_inflection";
rev = "v0.2.1";
sha256 = "10vkr28h7n53ijjv57ldxhh473086qg313lzs55a7wsh0zgc104m";
};
time_format = {
owner = "vladfaust";
repo = "time_format.cr";
rev = "v0.1.0";
sha256 = "1f3rssdlcw2a5f74qa8bzlf1rh5dzvyg1d32w9qlisf2cc4lkh9g";
};
tree_template = {
owner = "anykeyh";
repo = "tree_template";
rev = "3fcb71ee6852040077dd1a2c8c55c67f4a95ba4e";
sha256 = "04w89wpnkna4ipyy3pxshqqwgk965hz1d31vqp0mrb0ilmpsywdk";
};
}

View file

@ -6782,6 +6782,8 @@ with pkgs;
microscheme = callPackage ../development/compilers/microscheme { };
mint = callPackage ../development/compilers/mint { };
mitscheme = callPackage ../development/compilers/mit-scheme {
texLive = texlive.combine { inherit (texlive) scheme-small; };
texinfo = texinfo5;