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:
parent
a0cfa097e0
commit
2f4ea13ca2
4 changed files with 126 additions and 25 deletions
|
@ -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";
|
||||
}
|
||||
|
|
16
users/grfn/owothia/pkg.nix
Normal file
16
users/grfn/owothia/pkg.nix
Normal 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;
|
||||
}
|
|
@ -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 []);
|
||||
})
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue