@@ -459,29 +459,35 @@ final: prev: {
459459 hackage-project =
460460 { name
461461 , compiler-nix-name
462− , version
462+ , version ? "latest"
463463 , revision ? "default"
464464 , ... }@args':
465− let args = { caller = "hackage-project"; } // 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;
471+ args = { caller = "hackage-project"; } // args';
466472 tarball = final.pkgs.fetchurl {
467− url = "mirror://hackage/${name}-${version}.tar.gz";
468− inherit (hackage.${name}.${version}) sha256; };
469− rev = hackage.${name}.${version}.revisions.${revision};
473+ url = "mirror://hackage/${name}-${version'}.tar.gz";
474+ inherit (hackage.${name}.${version'}) sha256; };
475+ rev = hackage.${name}.${version'}.revisions.${revision};
470476 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";
472478 inherit (rev) sha256;
473479 };
474480 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" { } (''
476482 tmp=$(mktemp -d)
477483 cd $tmp
478484 tar xzf ${tarball}
479− mv "${name}-${version}" $out
485+ mv "${name}-${version'}" $out
480486 '' + final.lib.optionalString (rev.revNum > 0) ''
481487 cp ${cabalFile} $out/${name}.cabal
482488 '');
483489 in cabalProject' (
484− (final.haskell-nix.hackageQuirks { inherit name version; }) //
490+ (final.haskell-nix.hackageQuirks { inherit name; version = version'; }) //
485491 builtins.removeAttrs args [ "version" "revision" ] // { inherit src; });
486492
487493 # This function is like `cabalProject` but it makes the plan-nix available