When we get to the purescript-contrib repos, we will likely use a different approach because those libraries use spago rather than bower. We’ll cross that bridge when we get there.
let
# I was forced to use `unstable` (I've it for some other reason locally)
# to have `gh` working... but I'm in general on an ancient channel: 19.09
# so this can be irrelevant ;-)
pkgs = import (/home/paluh/programming/nix/unstable) {};
easyPS = import (pkgs.fetchFromGitHub {
owner = "vladciobanu";
repo = "easy-purescript-nix";
rev = "d2933b64826fbc2593a2c50dc16e9853512a3016";
sha256 = "0vlkc71dzrgbg04zjvrk24axywqijfsw50wcbdz0fnywhimsz3ir";
}) { inherit pkgs; };
in
pkgs.stdenv.mkDerivation {
propagatedBuildInputs = [
pkgs.gitAndTools.gh
easyPS.spago
easyPS."purs-0_14_0-rc3"
easyPS.pscid
easyPS.purty
...
];
}
Wouldn’t that mean we’d have to do a breaking change? Right now it seems like nixpkgs.purescript points to 0.13.8, but instead we’d probably have to make it something like haskell where we have nixpkgs.purescript.purs0138nixpkgs.purescript.pursHEAD etc, right?
I think there are a couple different ways to do it.
I was actually thinking of going ahead and doing this a week ago (or whenever I saw the original announcement here on discourse), but I didn’t think there were too many PureScript maintainers that got purs from nixpkgs, so I didn’t end up doing it. However, it looks like there are at least 3 or 4 people interested, so maybe it is a good idea!
If I were to send a PR to nixpkgs master adding purescript-0.14, I would probably create a new top-level attribute called something like purescript_0_14. So nixpkgs would provide both purescript_0_14 and the normal purescript (which we would keep at version 0.13.8).
When purescript-0.14 is fully released, we could switch the main purescript attribute over to purescript-0.14, and deprecate purescript_0_14.
Previously, I mentioned that I would be adding a feature to my tool to remove libraries that have already been updated. I have now updated the genLibDeps command to do that by reading a file that lists all packages that have already been updated and removing them from the output.
You can see the change for the purescript organization repos. It makes it a bit easier to see which repos are blocking the others from getting updated and how much more we have to go until we’re done.