on iko/ghcjs-patch-master help sign in
Add revision to hackage-package. Default to newest (#933)
401c1d7Hamish Mackenzie
overlays/haskell.nix+18−9
@@ -460,20 +460,29 @@ final: prev: {
460 { name
460 { name
461 , compiler-nix-name
461 , compiler-nix-name
462 , version
462 , version
463+ , revision ? "default"
463 , ... }@args':
464 , ... }@args':
464 let args = { caller = "hackage-project"; } // args';
465 let args = { caller = "hackage-project"; } // args';
465 tarball = final.pkgs.fetchurl {
466 tarball = final.pkgs.fetchurl {
466− url = "mirror://hackage/${name}-${version}.tar.gz";
467+ url = "mirror://hackage/${name}-${version}.tar.gz";
467− inherit (hackage.${name}.${version}) sha256; };
468+ inherit (hackage.${name}.${version}) sha256; };
469+ rev = hackage.${name}.${version}.revisions.${revision};
470+ cabalFile = final.pkgs.fetchurl {
471+ url = "https://hackage.haskell.org/package/${name}-${version}/revision/${toString rev.revNum}.cabal";
472+ inherit (rev) sha256;
473+ };
474+ revSuffix = final.lib.optionalString (rev.revNum > 0) "-r${toString rev.revNum}";
468− in let src = final.buildPackages.pkgs.runCommand "${name}-${version}-src" { } ''
475+ in let src = final.buildPackages.pkgs.runCommand "${name}-${version}${revSuffix}-src" { } (''
469− tmp=$(mktemp -d)
476+ tmp=$(mktemp -d)
470− cd $tmp
477+ cd $tmp
471− tar xzf ${tarball}
478+ tar xzf ${tarball}
472− mv "${name}-${version}" $out
479+ mv "${name}-${version}" $out
473− '';
480+ '' + final.lib.optionalString (rev.revNum > 0) ''
481+ cp ${cabalFile} $out/${name}.cabal
482+ '');
474 in cabalProject' (
483 in cabalProject' (
475 (final.haskell-nix.hackageQuirks { inherit name version; }) //
484 (final.haskell-nix.hackageQuirks { inherit name version; }) //
476− builtins.removeAttrs args [ "version" ] // { inherit src; });
485+ builtins.removeAttrs args [ "version" "revision" ] // { inherit src; });
477
486
478 # This function is like `cabalProject` but it makes the plan-nix available
487 # This function is like `cabalProject` but it makes the plan-nix available
479 # separately from the hsPkgs. The advantage is that the you can get the
488 # separately from the hsPkgs. The advantage is that the you can get the