on iko/ghcjs-patch-master help sign in
Add support for "latest" as a version (#934)
c6f83ceHamish Mackenzie
overlays/haskell.nix+15−9
@@ -459,29 +459,35 @@ final: prev: {
459 hackage-project =
459 hackage-project =
460 { name
460 { name
461 , compiler-nix-name
461 , compiler-nix-name
462− , version
462+ , version ? "latest"
463 , revision ? "default"
463 , revision ? "default"
464 , ... }@args':
464 , ... }@args':
465+ let version' = if version == "latest"
466+ then builtins.head (
467+ builtins.sort
468+ (a: b: builtins.compareVersions a b > 0)
469+ (builtins.attrNames hackage.${name}))
470+ else version;
465− let args = { caller = "hackage-project"; } // args';
471+ args = { caller = "hackage-project"; } // args';
466 tarball = final.pkgs.fetchurl {
472 tarball = final.pkgs.fetchurl {
467− url = "mirror://hackage/${name}-${version}.tar.gz";
473+ url = "mirror://hackage/${name}-${version'}.tar.gz";
468− inherit (hackage.${name}.${version}) sha256; };
474+ inherit (hackage.${name}.${version'}) sha256; };
469− rev = hackage.${name}.${version}.revisions.${revision};
475+ rev = hackage.${name}.${version'}.revisions.${revision};
470 cabalFile = final.pkgs.fetchurl {
476 cabalFile = final.pkgs.fetchurl {
471− url = "https://hackage.haskell.org/package/${name}-${version}/revision/${toString rev.revNum}.cabal";
477+ url = "https://hackage.haskell.org/package/${name}-${version'}/revision/${toString rev.revNum}.cabal";
472 inherit (rev) sha256;
478 inherit (rev) sha256;
473 };
479 };
474 revSuffix = final.lib.optionalString (rev.revNum > 0) "-r${toString rev.revNum}";
480 revSuffix = final.lib.optionalString (rev.revNum > 0) "-r${toString rev.revNum}";
475− in let src = final.buildPackages.pkgs.runCommand "${name}-${version}${revSuffix}-src" { } (''
481+ in let src = final.buildPackages.pkgs.runCommand "${name}-${version'}${revSuffix}-src" { } (''
476 tmp=$(mktemp -d)
482 tmp=$(mktemp -d)
477 cd $tmp
483 cd $tmp
478 tar xzf ${tarball}
484 tar xzf ${tarball}
479− mv "${name}-${version}" $out
485+ mv "${name}-${version'}" $out
480 '' + final.lib.optionalString (rev.revNum > 0) ''
486 '' + final.lib.optionalString (rev.revNum > 0) ''
481 cp ${cabalFile} $out/${name}.cabal
487 cp ${cabalFile} $out/${name}.cabal
482 '');
488 '');
483 in cabalProject' (
489 in cabalProject' (
484− (final.haskell-nix.hackageQuirks { inherit name version; }) //
490+ (final.haskell-nix.hackageQuirks { inherit name; version = version'; }) //
485 builtins.removeAttrs args [ "version" "revision" ] // { inherit src; });
491 builtins.removeAttrs args [ "version" "revision" ] // { inherit src; });
486
492
487 # This function is like `cabalProject` but it makes the plan-nix available
493 # This function is like `cabalProject` but it makes the plan-nix available
overlays/tools.nix+4
@@ -163,6 +163,10 @@ in { haskell-nix = prev.haskell-nix // {
163 # Plan issues with the benchmarks, can try removing later
163 # Plan issues with the benchmarks, can try removing later
164 configureArgs = "--disable-benchmarks";
164 configureArgs = "--disable-benchmarks";
165 })).haskell-language-server.components.exes.haskell-language-server;
165 })).haskell-language-server.components.exes.haskell-language-server;
166+ # When adding new versions here, please set "latest" too the latest version
167+ # so that `tools = { haskell-language-server = "latest"; }`
168+ # will work the same way it does for tools that are in hackage.
169+ "latest" = final.haskell-nix.custom-tools.haskell-language-server."0.6.0";
166 };
170 };
167 };
171 };
168}; }
172}; }