crystal2nix: unstable-2018-07-31 -> 0.1.0

wip/yesman
Peter Hoeg 4 years ago
parent 61626d70e5
commit b8514a1727
  1. 42
      pkgs/development/compilers/crystal/crystal2nix.cr
  2. 22
      pkgs/development/compilers/crystal/crystal2nix.nix
  3. 36
      pkgs/development/compilers/crystal2nix/default.nix
  4. 14
      pkgs/development/compilers/crystal2nix/shards.nix
  5. 5
      pkgs/top-level/all-packages.nix

@ -1,42 +0,0 @@
require "yaml"
require "json"
class PrefetchJSON
JSON.mapping(sha256: String)
end
class ShardLock
YAML.mapping(
version: Float32,
shards: Hash(String, Hash(String, String))
)
end
File.open "shards.nix", "w+" do |file|
file.puts %({)
yaml = ShardLock.from_yaml(File.read("shard.lock"))
yaml.shards.each do |key, value|
owner, repo = value["github"].split("/")
url = "https://github.com/#{value["github"]}"
rev = if value["version"]?
"v#{value["version"]}"
else
value["commit"]
end
sha256 = ""
args = ["--url", url, "--rev", rev]
Process.run("@nixPrefetchGit@", 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

@ -1,22 +0,0 @@
{ lib, crystal, nix-prefetch-git }:
crystal.buildCrystalPackage {
pname = "crystal2nix";
version = "unstable-2018-07-31";
nixPrefetchGit = "${lib.getBin nix-prefetch-git}/bin/nix-prefetch-git";
unpackPhase = "substituteAll ${./crystal2nix.cr} crystal2nix.cr";
format = "crystal";
crystalBinaries.crystal2nix.src = "crystal2nix.cr";
# it will blow up without a shard.yml file
doInstallCheck = false;
meta = with lib; {
description = "Utility to convert Crystal's shard.lock files to a Nix file";
license = licenses.mit;
maintainers = with maintainers; [ manveru ];
};
}

@ -0,0 +1,36 @@
{ lib, fetchFromGitHub, fetchgit, crystal, makeWrapper, nix-prefetch-git }:
crystal.buildCrystalPackage rec {
pname = "crystal2nix";
version = "0.1.0";
src = fetchFromGitHub {
owner = "peterhoeg";
repo = "crystal2nix";
rev = "v${version}";
sha256 = "sha256-K1ElG8VC/D0axmSRaufH3cE50xNQisAmFucDkV+5O0s=";
};
format = "shards";
shardsFile = ./shards.nix;
nativeBuildInputs = [ makeWrapper ];
postInstall = ''
wrapProgram $out/bin/crystal2nix \
--prefix PATH : ${lib.makeBinPath [ nix-prefetch-git ]}
'';
# temporarily off. We need the checks to execute the wrapped binary
doCheck = false;
# it requires an internet connection when run
doInstallCheck = false;
meta = with lib; {
description = "Utility to convert Crystal's shard.lock files to a Nix file";
license = licenses.mit;
maintainers = with maintainers; [ manveru peterhoeg ];
};
}

@ -0,0 +1,14 @@
{
json_mapping = {
owner = "crystal-lang";
repo = "json_mapping.cr";
rev = "v0.1.0";
sha256 = "1qq5vs2085x7cwmp96rrjns0yz9kiz1lycxynfbz5psxll6b8p55";
};
yaml_mapping = {
owner = "crystal-lang";
repo = "yaml_mapping.cr";
rev = "v0.1.0";
sha256 = "02spz1521g59ar6rp0znnr01di766kknbjxjnygs39yn0cmpzqc1";
};
}

@ -9051,8 +9051,9 @@ in
crystal_0_33
crystal_0_34
crystal_0_35
crystal
crystal2nix;
crystal;
crystal2nix = callPackage ../development/compilers/crystal2nix { };
icr = callPackage ../development/tools/icr { };

Loading…
Cancel
Save