Merge pull request #41148 from manveru/add-mint-lang
Mint-lang: Init at 2018.05.27
This commit is contained in:
commit
0241c2c8b1
35
pkgs/development/compilers/mint/crystal2nix.cr
Normal file
35
pkgs/development/compilers/mint/crystal2nix.cr
Normal 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
|
61
pkgs/development/compilers/mint/default.nix
Normal file
61
pkgs/development/compilers/mint/default.nix
Normal 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" ];
|
||||
};
|
||||
}
|
62
pkgs/development/compilers/mint/shards.nix
Normal file
62
pkgs/development/compilers/mint/shards.nix
Normal 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";
|
||||
};
|
||||
}
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user