Home / Input Output / haskell.nix
Jan 16, 6-7 PM (0)
Jan 16, 7-8 PM (0)
Jan 16, 8-9 PM (0)
Jan 16, 9-10 PM (0)
Jan 16, 10-11 PM (0)
Jan 16, 11-12 AM (0)
Jan 17, 12-1 AM (1)
Jan 17, 1-2 AM (0)
Jan 17, 2-3 AM (0)
Jan 17, 3-4 AM (0)
Jan 17, 4-5 AM (0)
Jan 17, 5-6 AM (0)
Jan 17, 6-7 AM (0)
Jan 17, 7-8 AM (0)
Jan 17, 8-9 AM (0)
Jan 17, 9-10 AM (0)
Jan 17, 10-11 AM (0)
Jan 17, 11-12 PM (0)
Jan 17, 12-1 PM (0)
Jan 17, 1-2 PM (0)
Jan 17, 2-3 PM (0)
Jan 17, 3-4 PM (0)
Jan 17, 4-5 PM (1)
Jan 17, 5-6 PM (0)
Jan 17, 6-7 PM (0)
Jan 17, 7-8 PM (0)
Jan 17, 8-9 PM (0)
Jan 17, 9-10 PM (0)
Jan 17, 10-11 PM (0)
Jan 17, 11-12 AM (0)
Jan 18, 12-1 AM (1)
Jan 18, 1-2 AM (0)
Jan 18, 2-3 AM (0)
Jan 18, 3-4 AM (0)
Jan 18, 4-5 AM (3)
Jan 18, 5-6 AM (1)
Jan 18, 6-7 AM (0)
Jan 18, 7-8 AM (0)
Jan 18, 8-9 AM (0)
Jan 18, 9-10 AM (0)
Jan 18, 10-11 AM (0)
Jan 18, 11-12 PM (9)
Jan 18, 12-1 PM (0)
Jan 18, 1-2 PM (0)
Jan 18, 2-3 PM (0)
Jan 18, 3-4 PM (0)
Jan 18, 4-5 PM (0)
Jan 18, 5-6 PM (0)
Jan 18, 6-7 PM (0)
Jan 18, 7-8 PM (0)
Jan 18, 8-9 PM (1)
Jan 18, 9-10 PM (0)
Jan 18, 10-11 PM (1)
Jan 18, 11-12 AM (1)
Jan 19, 12-1 AM (4)
Jan 19, 1-2 AM (0)
Jan 19, 2-3 AM (0)
Jan 19, 3-4 AM (1)
Jan 19, 4-5 AM (3)
Jan 19, 5-6 AM (0)
Jan 19, 6-7 AM (0)
Jan 19, 7-8 AM (0)
Jan 19, 8-9 AM (0)
Jan 19, 9-10 AM (1)
Jan 19, 10-11 AM (4)
Jan 19, 11-12 PM (0)
Jan 19, 12-1 PM (0)
Jan 19, 1-2 PM (0)
Jan 19, 2-3 PM (0)
Jan 19, 3-4 PM (0)
Jan 19, 4-5 PM (0)
Jan 19, 5-6 PM (0)
Jan 19, 6-7 PM (0)
Jan 19, 7-8 PM (1)
Jan 19, 8-9 PM (0)
Jan 19, 9-10 PM (0)
Jan 19, 10-11 PM (0)
Jan 19, 11-12 AM (0)
Jan 20, 12-1 AM (1)
Jan 20, 1-2 AM (0)
Jan 20, 2-3 AM (0)
Jan 20, 3-4 AM (0)
Jan 20, 4-5 AM (4)
Jan 20, 5-6 AM (1)
Jan 20, 6-7 AM (1)
Jan 20, 7-8 AM (2)
Jan 20, 8-9 AM (2)
Jan 20, 9-10 AM (0)
Jan 20, 10-11 AM (0)
Jan 20, 11-12 PM (0)
Jan 20, 12-1 PM (0)
Jan 20, 1-2 PM (0)
Jan 20, 2-3 PM (0)
Jan 20, 3-4 PM (0)
Jan 20, 4-5 PM (1)
Jan 20, 5-6 PM (0)
Jan 20, 6-7 PM (0)
Jan 20, 7-8 PM (0)
Jan 20, 8-9 PM (0)
Jan 20, 9-10 PM (0)
Jan 20, 10-11 PM (0)
Jan 20, 11-12 AM (0)
Jan 21, 12-1 AM (1)
Jan 21, 1-2 AM (0)
Jan 21, 2-3 AM (0)
Jan 21, 3-4 AM (0)
Jan 21, 4-5 AM (0)
Jan 21, 5-6 AM (0)
Jan 21, 6-7 AM (0)
Jan 21, 7-8 AM (0)
Jan 21, 8-9 AM (0)
Jan 21, 9-10 AM (0)
Jan 21, 10-11 AM (0)
Jan 21, 11-12 PM (0)
Jan 21, 12-1 PM (0)
Jan 21, 1-2 PM (0)
Jan 21, 2-3 PM (0)
Jan 21, 3-4 PM (0)
Jan 21, 4-5 PM (0)
Jan 21, 5-6 PM (0)
Jan 21, 6-7 PM (0)
Jan 21, 7-8 PM (0)
Jan 21, 8-9 PM (0)
Jan 21, 9-10 PM (0)
Jan 21, 10-11 PM (0)
Jan 21, 11-12 AM (0)
Jan 22, 12-1 AM (1)
Jan 22, 1-2 AM (0)
Jan 22, 2-3 AM (0)
Jan 22, 3-4 AM (0)
Jan 22, 4-5 AM (0)
Jan 22, 5-6 AM (0)
Jan 22, 6-7 AM (0)
Jan 22, 7-8 AM (0)
Jan 22, 8-9 AM (0)
Jan 22, 9-10 AM (0)
Jan 22, 10-11 AM (0)
Jan 22, 11-12 PM (0)
Jan 22, 12-1 PM (0)
Jan 22, 1-2 PM (0)
Jan 22, 2-3 PM (0)
Jan 22, 3-4 PM (0)
Jan 22, 4-5 PM (0)
Jan 22, 5-6 PM (0)
Jan 22, 6-7 PM (0)
Jan 22, 7-8 PM (0)
Jan 22, 8-9 PM (0)
Jan 22, 9-10 PM (0)
Jan 22, 10-11 PM (0)
Jan 22, 11-12 AM (0)
Jan 23, 12-1 AM (1)
Jan 23, 1-2 AM (0)
Jan 23, 2-3 AM (0)
Jan 23, 3-4 AM (0)
Jan 23, 4-5 AM (0)
Jan 23, 5-6 AM (0)
Jan 23, 6-7 AM (0)
Jan 23, 7-8 AM (0)
Jan 23, 8-9 AM (0)
Jan 23, 9-10 AM (0)
Jan 23, 10-11 AM (0)
Jan 23, 11-12 PM (0)
Jan 23, 12-1 PM (0)
Jan 23, 1-2 PM (0)
Jan 23, 2-3 PM (0)
Jan 23, 3-4 PM (0)
Jan 23, 4-5 PM (0)
Jan 23, 5-6 PM (0)
Jan 23, 6-7 PM (0)
48 commits this week Jan 16, 2021 - Jan 23, 2021
Add `copyTextDir` and use on for cabal configure
`cabal configure` for some large haskell projects (such as
`cardano-node`) can take several minutes to run.

When building locally `cleanSourceWith` is used so that only changes to
`cabal.project` and `.cabal` cause `cabal configure` to be run again.

This does not work on hydra though and every commit will cause
`cabal configure` to be rerun during `eval`.  It also means that
local builds cannot reuse the results from hydra.

To fix this `copyTextDir` runs `__readFile` and `writeTextFile` on
the filtered subset of files (cabal.project and .cabal).

Even if the input path is a different store directory the resulting
derivation will be the same if the contents of the filtered subset
of files is the same.
LicenseRef-OtherLicense is not `free = false` (#1006)
The [dependent-map](https://hackage.haskell.org/package/dependent-map)
package for instance is not clear on which free license applies to
which parts of the code, but that does not mean it is not free.

`cabal2nix` maps LicenseRef-OtherLicense to `meta.license = "unknown"`

`cabal-to-nix` and `haskell.nix` map it to a more detailed attribute
set but it includes `free = false` and that causes packages like
`dependent-map` to fail to install when `allowUnfree` has not been set.

This change removes the `free` attribute altogether, which seems more
principled than asserting that the `OtherLicense` cannot be `free`.
LicenseRef-OtherLicense is not `free = false`
The [dependent-map](https://hackage.haskell.org/package/dependent-map)
package for instance is not clear on which free license applies to
which parts of the code, but that does not mean it is not free.

`cabal2nix` maps LicenseRef-OtherLicense to `meta.license = "unknown"`

`cabal-to-nix` and `haskell.nix` map it to a more detailed attribute
set but it includes `free = false` and that causes packages like
`dependent-map` to fail to install when `allowUnfree` has not been set.

This change removes the `free` attribute altogether, which seems more
principled than asserting that the `OtherLicense` cannot be `free`.