refactor(users/grfn): build all haskell packages without ifd

Since we need to override random to 1.2.0 globally for xanthous
(otherwise propagation causes two versions of random to be propagated
for xanthous) evaluating haskell related stuff using import from
derivation can be very expensive since utilities like hpack and
cabal2nix need to be built for that. This means that for every channel
bump we potentially need to do a world rebuild of haskellPackages first.

To solve this we check in the cabal2nix-generated nix expressions for
owothia and xanthous.

Change-Id: I8fff70b4b6c303d1920f8bcac53520a09999b206
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2921
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
Reviewed-by: tazjin <mail@tazj.in>
This commit is contained in:
sterni 2021-04-10 23:30:09 +02:00
parent a0cfa097e0
commit 2f4ea13ca2
4 changed files with 126 additions and 25 deletions

View file

@ -2,5 +2,11 @@
, pkgs ? depot.third_party.nixpkgs
, ... }:
pkgs.haskellPackages.callCabal2nix "owothia"
(depot.third_party.gitignoreSource ./.) { }
let
basePkg = pkgs.haskellPackages.callPackage ./pkg.nix { };
in
pkgs.haskell.lib.overrideSrc basePkg {
src = depot.third_party.gitignoreSource ./.;
version = "canon";
}

View file

@ -0,0 +1,16 @@
{ mkDerivation, base, bytestring, chatter, containers, envy
, irc-client, lens, lib, random, relude, text
}:
mkDerivation {
pname = "owothia";
version = "0.0.1.0";
src = ./.;
isLibrary = false;
isExecutable = true;
executableHaskellDepends = [
base bytestring chatter containers envy irc-client lens random
relude text
];
license = "unknown";
hydraPlatforms = lib.platforms.none;
}

View file

@ -1,7 +1,23 @@
{ pkgs ? (import ../../../. {}).third_party
, lib ? pkgs.lib
, ...
}:
pkgs.haskell.lib.failOnAllWarnings (
pkgs.haskellPackages.callPackage (import ./pkg.nix { inherit pkgs; }) {}
)
{ depot ? (import ../../../. {})
, pkgs ? depot.third_party.nixpkgs
, ... }:
let
ignore = depot.third_party.gitignoreSource.gitignoreFilter ./.;
src = builtins.path {
name = "xanthous-source";
path = ./.;
filter = path: type: ignore path type
|| builtins.baseNameOf path == "package.yaml";
};
# generated by cabal2nix
basePkg = pkgs.haskellPackages.callPackage ./pkg.nix { };
in
pkgs.haskell.lib.overrideCabal basePkg (default: {
inherit src;
version = "canon";
configureFlags = [
"--ghc-option=-Wall --ghc-option=-Werror"
] ++ (default.configureFlags or []);
})

View file

@ -1,16 +1,79 @@
{ depot ? (import ../../../. {})
, pkgs ? depot.third_party.nixpkgs
, ... }:
let
ignore = depot.third_party.gitignoreSource.gitignoreFilter ./.;
in import (pkgs.haskellPackages.haskellSrc2nix {
name = "xanthous";
src = builtins.path {
name = "xanthous-source";
path = ./.;
filter = path: type: ignore path type
|| builtins.baseNameOf path == "package.yaml";
};
extraCabal2nixOptions = "--hpack";
})
{ mkDerivation, aeson, array, async, base, bifunctors, brick
, checkers, classy-prelude, comonad, comonad-extras, constraints
, containers, criterion, data-default, deepseq, directory, fgl
, fgl-arbitrary, file-embed, filepath, generic-arbitrary
, generic-lens, generic-monoid, groups, hgeometry
, hgeometry-combinatorial, hpack, JuicyPixels, lens
, lens-properties, lib, lifted-async, linear, megaparsec, mmorph
, monad-control, MonadRandom, mtl, optparse-applicative, parallel
, parser-combinators, pointed, QuickCheck, quickcheck-instances
, quickcheck-text, random, random-extras, random-fu, random-source
, Rasterific, raw-strings-qq, reflection, semigroupoids, splitmix
, stache, streams, tasty, tasty-hunit, tasty-quickcheck, text
, text-zipper, tomland, transformers, vector, vty, witherable, yaml
, zlib
}:
mkDerivation {
pname = "xanthous";
version = "0.1.0.0";
src = ./.;
isLibrary = true;
isExecutable = true;
libraryHaskellDepends = [
aeson array async base bifunctors brick checkers classy-prelude
comonad comonad-extras constraints containers criterion
data-default deepseq directory fgl fgl-arbitrary file-embed
filepath generic-arbitrary generic-lens generic-monoid groups
hgeometry hgeometry-combinatorial JuicyPixels lens lifted-async
linear megaparsec mmorph monad-control MonadRandom mtl
optparse-applicative parallel parser-combinators pointed QuickCheck
quickcheck-instances quickcheck-text random random-extras random-fu
random-source Rasterific raw-strings-qq reflection semigroupoids
splitmix stache streams text text-zipper tomland transformers
vector vty witherable yaml zlib
];
libraryToolDepends = [ hpack ];
executableHaskellDepends = [
aeson array async base bifunctors brick checkers classy-prelude
comonad comonad-extras constraints containers criterion
data-default deepseq directory fgl fgl-arbitrary file-embed
filepath generic-arbitrary generic-lens generic-monoid groups
hgeometry hgeometry-combinatorial JuicyPixels lens lifted-async
linear megaparsec mmorph monad-control MonadRandom mtl
optparse-applicative parallel parser-combinators pointed QuickCheck
quickcheck-instances quickcheck-text random random-extras random-fu
random-source Rasterific raw-strings-qq reflection semigroupoids
splitmix stache streams text text-zipper tomland transformers
vector vty witherable yaml zlib
];
testHaskellDepends = [
aeson array async base bifunctors brick checkers classy-prelude
comonad comonad-extras constraints containers criterion
data-default deepseq directory fgl fgl-arbitrary file-embed
filepath generic-arbitrary generic-lens generic-monoid groups
hgeometry hgeometry-combinatorial JuicyPixels lens lens-properties
lifted-async linear megaparsec mmorph monad-control MonadRandom mtl
optparse-applicative parallel parser-combinators pointed QuickCheck
quickcheck-instances quickcheck-text random random-extras random-fu
random-source Rasterific raw-strings-qq reflection semigroupoids
splitmix stache streams tasty tasty-hunit tasty-quickcheck text
text-zipper tomland transformers vector vty witherable yaml zlib
];
benchmarkHaskellDepends = [
aeson array async base bifunctors brick checkers classy-prelude
comonad comonad-extras constraints containers criterion
data-default deepseq directory fgl fgl-arbitrary file-embed
filepath generic-arbitrary generic-lens generic-monoid groups
hgeometry hgeometry-combinatorial JuicyPixels lens lifted-async
linear megaparsec mmorph monad-control MonadRandom mtl
optparse-applicative parallel parser-combinators pointed QuickCheck
quickcheck-instances quickcheck-text random random-extras random-fu
random-source Rasterific raw-strings-qq reflection semigroupoids
splitmix stache streams text text-zipper tomland transformers
vector vty witherable yaml zlib
];
prePatch = "hpack";
homepage = "https://github.com/glittershark/xanthous#readme";
description = "A WIP TUI RPG";
license = lib.licenses.gpl3Only;
}