hnix/default.nix

297 lines
12 KiB
Nix
Raw Permalink Normal View History

{
# For current default and explicitly supported GHCs https://search.nixos.org/packages?query=ghc&from=0&size=500&channel=unstable, Nixpkgs implicitly supports older minor versions also, until the configuration departs from compatibility with them.
Merge update from `haskell-with-nixpkgs` * "rev" "default" tracks local default Nixpkgs channel. * "compiler" "default" tracks default Nixpkgs GHC compiler. * Properly providing secret to the GitHub CI workflows. * Clean-up. * Project freed form reliance on Travis CI. * Removing unmaintained GHCJS build, in favor for the further move to Haskell to WebAssembly compilation. --- In terms of the fish shell the rebase merge is done in this way: ```fish set -l tmpDir "$HOME/src/tmp" set -l sourceDir 'haskell-with-nixpkgs' set -l sourceUrl "git@github.com:haskell-nix/$sourceDir.git" set -l masterDir 'hnix' set -l masterUrl "git@github.com:haskell-nix/$masterDir.git" set -l fileList \ default.nix \ build.sh \ ghcjs-build.sh \ Cabal-Linux.yml \ Nixpkgs-GHCJS.yml \ Nixpkgs-Linux-additional.yml \ Nixpkgs-Linux-maim.yml \ Nixpkgs-macOS.yml mkdir -p "$tmpDir" rm -rf "$tmpDir/$sourceDir" rm -rf "$tmpDir/$masterDir" cd "$tmpDir" git clone "$sourceUrl" "$sourceDir" cd "$sourceDir" git-pass-filter $fileList cd "$tmpDir" git clone "$masterUrl" "$masterDir" cd "$masterDir" git checkout -b upd-from-"$sourceDir" git remote add hn "$tmpDir/$sourceDir" git fetch hn master git merge -S --allow-unrelated-histories hn/master ``` --- ```log 10 files changed, 42 insertions(+), 401 deletions(-) .github/workflows/Cabal-Linux.yml | 4 - .github/workflows/Nixpkgs-Linux-main.yml | 12 +- .github/workflows/Nixpkgs-Linux-additional.yml | 4 +- .github/workflows/Nixpkgs-macOS.yml | 5 +- default.nix | 33 +++-- build.sh | 97 ++------------- .github/workflows/Nixpkgs-GHCJS-turned-off | 45 ------- ghcjs/nix.conf | 2 - ghcjs/default.nix | 79 ------------ .travis.yml | 162 ------------------------- ```
2020-08-17 18:56:37 +02:00
# Compiler in a form ghc8101 <- GHC 8.10.1, just remove spaces and dots
compiler ? "ghc8101"
Merge of haskell-with-nixpkgs back into HNix (#681) There were 668 commits which got squashed: * CI: Travis: env: global: rev: upd: note for haskell-update branch M .travis.yml * CI: Travis: build.sh: BUILD_PROJECT: *Optparse*Completion: upd: directional note M build.sh * Travis: Add CI job with linux and GHC-8.4.4 (#603) GHC 8.4 is still widely used, so it's good to check compatibility with it. * Fix CI builds on internal branches (#604) * CI: Travis: rm cache | Builds 2X times faster without Travis cache M .travis.yml * CI: Travis: build.sh: mv `set` declaration | fx master CI statuses M .travis.yml M build.sh * default.nix: make GHC 8.8.3 default M default.nix * default.nix: rm allowUnfree - there is none M default.nix * default.nix: add haskell.lib profiling options explicitly Integrates with CI. M default.nix * default.nix: add flags {doCheck,doHaddock,doCoverage} M default.nix * CI: Travis: build.sh: init CACHIX_SIGNING_KEY with default empty value Due to new strict `set` rules `if` statement check agains empty variable was failing the build, this fixes builds in PRs. ...sigh. M build.sh * default.nix: expose more features of `haskell.lib` API M default.nix * default.nix: add docs to the exposed haskell.lib options M default.nix * CI: build.sh: rm empty args from nix-build M build.sh * CI: build.sh: update Nix after its installation Nix that installs through Nix installer is 2.0.4. Current Nix release is 2.3.5. To to have a less of old bugs, and more of new bugs - Nix after installation needs an update right away. Old Nix literally prevented importing Nix channels on Linux Nix installations. M build.sh * default.nix: to allow use of current channels remove hash guarding M default.nix * default.nix: set `rev` default to `nixpkgs-unstable` M default.nix * default.nix: for import form separate explicit override set M default.nix * default.nix: add if useRev - then use rev, else use <nixpkgs> M default.nix * CI: build.sh: MAIN: add the channel update M build.sh * default.nix: default enableDeadCodeElimination to false | GHC macOS build bug M default.nix * default.nix: off enableSharedExecutables | rare feature, not passes macOS tests This feature seems to enable binaries as also a dynamic library, with is a rare and largely unknown feature, and it not used. Since it is unexpected optional rare not standard feature - turn it off by default. M default.nix * default.nix: expose additional part of Nixpkgs haskell.lib API M default.nix * default.nix: m doc upd M default.nix * default.nix: upd docs for Header.lib args in headers, sort Providing docs to them and sort them roughly in order of their application/stage M default.nix * default.nix: abstract the developPackage into value M default.nix * default.nix: package: sort inherited Haskell.lib args, provide doc M default.nix * default.nix: add option enableSeparateBinOutput M default.nix * default.nix: allow apply composition over the package M default.nix * default.nix: allow apply composition over the package M default.nix * default.nix: expose functionality: sdistTarball; add doc M default.nix * default.nix: expose functionality: buildFromSdist; add doc M default.nix * default.nix: expose functionality: failOnAllWarnings; add doc M default.nix * default.nix: expose functionality: buildStrictly; add doc M default.nix * default.nix: expose functionality: disableOptimization; add doc M default.nix * default.nix: expose functionality: linkWithGold; add doc M default.nix * default.nix: expose functionality: enableDWARFDebugging; add doc M default.nix * default.nix: expose functionality: doJailbreak Argument was already exposed in the header M default.nix * default.nix: expose functionality: doStrip Argument and doc was already provided in the header M default.nix * default.nix: expose functionality: justStaticExecutables Argument and doc was already provided in the header. M default.nix * default.nix: expose functionality: checkUnusedPackages; provide doc M default.nix * default.nix: expose functionality: gen*Optparse*Completion; provide doc M default.nix * default.nix: expose functionality: doHyperlinkSource; provide doc M default.nix * default.nix: rm doStrict (superceeded by failOnAllWarnings) M default.nix * default.nix: rm doOptimize (superceeded by disableOptimizations) M default.nix * default.nix: doc: add to header args M default.nix * default.nix: doc: add to body (functions fold and composePackage) M default.nix * default.nix: doc: add beginning doc and link to lib for more info on options M default.nix * CI: Travis: add Nix packages upd M .travis.yml * CI: Travis: fix Cachix nix-env install rights menegement The Cachix suddenly started to fall with: ``` $ nix-env -iA cachix -f https://cachix.org/api/v1/install error: creating directory '/Users/travis/.cache/nix/tarballs': Permission denied The command "nix-env -iA cachix -f https://cachix.org/api/v1/install" exited with 1. ``` There are changes to macOS procedures, Nix updated to 2.2, and Cachix has big upstream changes for macOS processes. So fixing rights management in this way. M .travis.yml * CI: Travis: rm sleep 2 - redundant Anyway it takes 30s-1m to the nix-build. M .travis.yml * CI: Travis: add HACK to fix reload Nix-daemon after Nix update 2.0 -> 2.2 M .travis.yml * CI: Travis: explicitly state the builds M .travis.yml * CI: Travis: env: rm jobs matrix M .travis.yml * CI: Travis: rm `os:` and `dist:`, since they are explicitly put below M .travis.yml * CI: Travis: enable strict build in GHC 8.6.5 M .travis.yml * CI: Travis: upd explicit build names M .travis.yml * CI: Travis: make GHC 8.10 mandatory M .travis.yml * CI: Travis: move SDist check to GHC 8.10 M .travis.yml * CI: .travis.tml: clean-up Since conf no longer multiplies rows into matrix, but provides it explitly, exclusions not needed. M .travis.yml * CI: make generate*Complettions work and accept a list of executables M .travis.yml M build.sh M default.nix * CI: rm buildStackProject, it does not work that way, and better to use real stack M .travis.yml M build.sh * default.nix: clean-up docs M default.nix * build.sh: default to GHC 8.10 M build.sh * build.sh: sort the options into logical order M build.sh * build.sh: provide docs to options M build.sh * build.sh: add disclamer for options M build.sh * build.sh: add more options and their docs M build.sh * build.sh: add new options into the build commands M build.sh * CI: .travis.yml: use linkWithGold in Linux builds, a bit faster builds M .travis.yml * CI: .travis.yml: GHC 8.10: add Haddock, optimize, Benchmark, Shell Complettions M .travis.yml * build.sh: rm `pkgName` (not used), return `name` - used by Cachix M build.sh * Silence redundant import warnings for Control.Monad.Fail (#633) Also address mysterious redundant import warnings in the testsuite This allows us to enable `buildStrictly=true` for GHC 8.8. Fixes #613. * default.nix: clean-up no longer relevant commented-out code buildInputs populated automatically. Environment overloads we can do any time, no need to keep trivial code commented. There is no AWS S3 use. If we would need we would write new deployment implementation outside of `default.nix` using actual NixOps. * CI: .travis.yml: rm Strict from GHC 8.6.5 M .travis.yml * CI: .travis.yml: properly name GHC 8.8.3 macOS as Strict M .travis.yml * CI: .travis.yml: add explicit quotes M .travis.yml * CI: .travis.yml: add description to the channels M .travis.yml * CI: .travis.yml: add description for executableNamesToShellComplete M .travis.yml * default.nix: filter package root with nix-gitignore so we don't copy stuff like `dist-newstyle`. * CI: .travis.yml: add the disclaimer M .travis.yml * CI: mv rev doc (.travis.yml->build.sh) M .travis.yml M build.sh * CI: build.sh: upd disclaimer M build.sh * CI: build.sh: add setting section disclaimer M build.sh * CI: build.sh: upd NIX_PATH doc M .travis.yml M build.sh * CI: .travis.yml: reduce not used pkgName getOptParseApplicativeComplettions does not need it M .travis.yml * CI: {.travis.yml,build.sh}: rename (name->project) more unique and descriptive M .travis.yml M build.sh * CI: {.travis.yml,build.sh}: merge documentation into buildh.sh M .travis.yml M build.sh * CI: .travis.yml: rm NOTEs from less important explanations M .travis.yml * CI: .travis.yml: {add,set,sort} features from `build.sh` explicitly M .travis.yml * CI: build.sh: mv doHyperlinkSource into logical place M build.sh * CI: .travis.yml: upd the disclaimer M .travis.yml * CI: .travis.yml: rm ALL_TESTS, since it does not work for nix-build and also just plainly does not passes itself, so it is useless in CI build setup M .travis.yml * CI: .travis.yml: upd CACHIX_SIGNING_KEY explanation M .travis.yml * CI: .travis.yml: GHC 8.10: add Haddock and sources hyperlinking M .travis.yml * CI: {.travis.yml,build.sh}: rename (GHCVERSION->compiler) M .travis.yml M build.sh * CI: default.nix: add `compiler` explanation M default.nix * CI: {.travis.yml,build.sh}: upd: make conf work with new Nix installer M .travis.yml M build.sh * CI: .travis.yml: rm irrelevant remount M .travis.yml * CI: {build.sh,default.nix}: upd settings structure, upd descriptions M build.sh M default.nix * CI: default.nix: upd header disclamer M build.sh * CI: mv rev doc (build.sh->default.nix) M build.sh M default.nix * CI: merge docs (build.sh->default.nix) M build.sh M default.nix * CI: build.sh: rm most of NOTE tags M build.sh * CI: .travis.yml: rm Nix updates After refactoring they are right beside/before build.sh Nix updates, so this update can be reduced. M .travis.yml * CI: .travis.yml: upd service restart Since service is not touched the daemon-reload is probably not needed, restart is sufficient. M .travis.yml * CI: build.sh: add report of Nixpkgs channel revision Since Nix and Nixpkgs channel were just updated and build is next - report the revision. M build.sh * default.nix: use dummy package name * default.nix: upd rephrase * default.nix: upd rephrase M default.nix * default.nix: add explanation M default.nix * default.nix: clean-up M default.nix * default.nix: upd M default.nix * default.nix: upd M default.nix * default.nix: add explanation M default.nix * add initial .github/workflows/test.yml * M .github/workflows/test.yml * test.yml: upd name: (Test->CI) M .github/workflows/test.yml * test.yml: add env of Nixpkgs Haskell Lib from HNix M .github/workflows/test.yml * test.yml: (nix-build->./build.sh) M .github/workflows/test.yml * test.yml: upd update of Nix to update all Nix installed packages M build.sh * test.yml: jobs: tests->Basic_build M .github/workflows/test.yml * {test.yml,build.sh}: project: hnix->replaceWithProjectNameInCachix M .github/workflows/test.yml M build.sh * {test.yml,build.sh}: executableNames..Complete: hnix->replaceWith... M .github/workflows/test.yml M build.sh * test.yml: jobs: Basic_build: name the steps M .github/workflows/test.yml * build.sh: compiler: add explanation M build.sh * default.nix: compiler: mv explanation M build.sh M default.nix * test.yml: m upd M .github/workflows/test.yml * test.yml: trigger CI on push to master, track only PRs| trigger build once M .github/workflows/test.yml * Simplify step names M .github/workflows/test.yml * GitHub CI: add Linux_GHC-8-10 M .github/workflows/test.yml * GitHub CI: add Linux_GHCJS M .github/workflows/test.yml * GitHub CI: add macOS_default M .github/workflows/test.yml * GitHub CI: Nixpkgs: disable withHoogle M .github/workflows/test.yml * GitHub CI: add Hackage_Cabal M .github/workflows/test.yml * GitHub CI: Hackage_Cabal: add cabal v2-configure M .github/workflows/test.yml * GitHub CI: Hackage_Cabal: add cabal v2-build M .github/workflows/test.yml * GitHub CI: Hackage_Cabal: add cabal v2-test M .github/workflows/test.yml * .github/workflows/(test->main).yml R .github/workflows/test.yml -> .github/workflows/main.yml * builds: rname project->cachixAccount M .github/workflows/main.yml M build.sh * .travis.yml: add withHoogle=false for CI builds M .travis.yml * .travis.yml: group cachix conf M .travis.yml * GitHub CI: add name tags to builds M .github/workflows/main.yml * GitHub CI: Nixpkgs custom build: add customization M .github/workflows/main.yml * builds: pass-through useRev M .github/workflows/main.yml M build.sh M default.nix * builds: use rev M .github/workflows/main.yml * GitHub CI: add Nixpkgs_stable_Linux M .github/workflows/main.yml * build.sh: provide a NIX_PATH change if rev is chosen M build.sh * GitHub CI: add build schedule M .github/workflows/main.yml * GitHub CI: add explanations M .github/workflows/main.yml * GitHub CI: make all builds optional M .github/workflows/main.yml * name Hackage_Cabal M .github/workflows/main.yml * GitHub CI: Nixpkgs_unstable_macOS: upd M .github/workflows/main.yml * build.sh: rm NIX_PATH setup| default.nix solves it internally M build.sh * build.sh: short-curcuit the Nix tools update M build.sh * add .github/workflows/Cabal-Linux.yml * mv Hackage_Cabal build main->Cabal-Linux.yml M .github/workflows/Cabal-Linux.yml M .github/workflows/main.yml * Cabal-Linux.yml: add schedule M .github/workflows/Cabal-Linux.yml * main.yml: switch all Nix installer nix_path to nixos-unstable M .github/workflows/main.yml * main.yml: rm all Nix installer nix_path resetting to default M .github/workflows/main.yml * GitHub CI: workflow: add macOS, mv job into it A .github/workflows/Nixpkgs-macOS.yml M .github/workflows/main.yml * GitHub CI: workflow: Nixpkgs-macOS: add triggers and shedule M .github/workflows/Nixpkgs-macOS.yml * GitHub CI: workflow: Nixpkgs-macOS: m build rename M .github/workflows/Nixpkgs-macOS.yml * GitHub CI: workflow: Nixpkgs-GHCJS: mv build in A .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/main.yml * GitHub CI: workflow: main: rm withHoogle overload since it is redundant M .github/workflows/main.yml * GitHub CI: workflow: main: (CI->Nixpkgs, Linux) M .github/workflows/main.yml * GitHub CI: workflow: main: linkWithGold M .github/workflows/main.yml * GitHub CI: workflow: main: upd build ids M .github/workflows/main.yml * GitHub CI: workflow: main: upd build names M .github/workflows/main.yml * GitHub CI: workflow: main: add NixOS-unstable Strict build M .github/workflows/main.yml * GitHub CI: workflow: main: upd build names M .github/workflows/main.yml * GitHub CI: workflow: main: add build GHC 8.6.5 M .github/workflows/main.yml * GitHub CI: workflow: main: add build GHC 8.4.4 M .github/workflows/main.yml * GitHub CI: workflow: main: upd build name M .github/workflows/main.yml * GitHub CI: workflow: main: upd build names, wrap in " M .github/workflows/main.yml * GitHub CI: main: upd name: add GHC for GitHub CI to not mix-in GHCJS M .github/workflows/main.yml * GitHub CI: workflow: mv (main->Nixpkgs-GHC-Linux).yml R .github/workflows/main.yml -> .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: mv Quality build M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: m rname builds M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: m rename of the build M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: Quality build: add nix-shell test M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: add denotation towards main examples M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: Quality build: fx nix-shell command M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: mv Nixpkgs-(GHC-->)Linux.yml R .github/workflows/Nixpkgs-GHC-Linux.yml -> .github/workflows/Nixpkgs-Linux.yml * GitHub CI: workflow: GHCJS: clean-up M .github/workflows/Nixpkgs-GHCJS.yml * GitHub CI: workflow: GHCJS: use nixos-unstable rev M .github/workflows/Nixpkgs-GHCJS.yml * GitHub CI: workflow: GHCJS: use linkWithGold M .github/workflows/Nixpkgs-GHCJS.yml * R .github/workflows/Nixpkgs-Linux.yml -> .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: Nixpgs, Linux: recommend nixos-unstable M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: Nixpgs, Linux: recommend test for nixos-20.03 stable M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: mv additiona builds into Nixpgs-Linux-additional A .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: rname workflows M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: make main builds mandatory M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: make build not strict, to not scare off people ;) M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: make Nix-shell into a separate test M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Nix-shell: from the hip nix-shell'ing M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Nix-shell: add separate Hoogle test M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: rename GHCJS M .github/workflows/Nixpkgs-GHCJS.yml * GitHub CI: workflow: main: prettify M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: fx Nix-shell test M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: rename Nix-shell build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: m upd M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Nix-shell build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Quality build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd NixOS stable build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd disclaimer M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: upd steps to "Determined Nix-build" M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml * GitHub CI: workflow: main: upd Hoogle step name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: m upd M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Hoogle step name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Hoogle build name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Basic build name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: add explicit nixos-unstable M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Basic: add nixos-unstable explanation M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Nix-shell: use pure shell (*sic) M .github/workflows/Nixpkgs-Linux-main.yml * default.nix: abstract over package root| now able to manage monorepos * default.nix: abstract over package name| full support of monorepos M default.nix * build.sh: passthrough package{Name,Root} into default.nix * {default.nix,build.sh}: (package->cabal)Name end explanation * CI: Nixpkgs-Linux-main: add template for monorepo matrix * CI: Cabal-Linux: add template for monorepo matrix * D ghcjs/default.nix * Nixpkgs-macOS: mv env attrset * CI: Nixpkgs workflows: use haskell-with-nixpkgs cachix account M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml M .travis.yml * CI: Nixpkgs workflows: provide CACHIX_SIGNING_KEY M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml M .travis.yml * CI: GitHub: Nixpkgs workflows: Cachix action, provide account to it M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml * CI: GitHub: Nixpkgs-Linux-main: quality build: upd name * CI: GitHub: add submodule recursion to checkouts M .github/workflows/Cabal-Linux.yml M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml * CI: GitHub: Cabal-Linux: provide libsodium * default.nix: upd neat-interpolation override * build.sh: clean-up rm redundant settings, since default.nix is the main API propagation point * default.nix: set proper cabalName * CI: switch back to HNix Cachix account M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml M .travis.yml * .travis.yml: switch back to HNix Cachix account secret * default.nix: upd GHC to 8.8.4 * CI: update GHC 8.8.(3->4) Also dropping minor numbers from build names for bravity of tracking Nixpkgs M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .travis.yml * CI: rm Nixpkgs GHC 8.4.4 builds 8.4.4 support is removed from Nixpkgs M .github/workflows/Nixpkgs-Linux-additional.yml M .travis.yml * CI: Cabal-Linux: add GHC 8.4 build Since Nixpkgs removed 8.4, adding it to Hackage builds. * CI: Cabal-Linux: enable tests in configuration M .github/workflows/Cabal-Linux.yml * CI: Cabal-Linux: clean-up M .github/workflows/Cabal-Linux.yml * CI: Cabal-Linux: add Nix installation, instantiate still required for tests M .github/workflows/Cabal-Linux.yml * CI: Cabal-Linux: make builds pass mandatory * CI: Nixpkgs-Linux-main: make all builds optional Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: https://github.com/haskell-nix/hnix/pull/681#discussion_r463983376 * CI: Nixpkgs-Linux-main: make all builds optional cache builders Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: https://github.com/haskell-nix/hnix/pull/681#discussion_r463983376 CI: Travis: fx optional builds CI: Nixpkgs-Linux-main: make all builds optional Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: https://github.com/haskell-nix/hnix/pull/681#discussion_r463983376 CI: Travis: fx optional builds * CI: Travis: enable fast skip See: https://github.com/haskell-nix/hnix/pull/681#discussion_r463996365 M .travis.yml * CI: Travis: add "bypass" to keep CI green, send cache gen to background M .travis.yml * CI: Nixpkgs-Linux-main: proper executable name to shell complete * CI: Nixpkgs-Linux-main: Quality build: add shell completion test M .github/workflows/Nixpkgs-Linux-main.yml * CI: Nixpkgs-Linux-main: default build: add strict build M .github/workflows/Nixpkgs-Linux-main.yml * CI: Nixpkgs-GHCJS: print log tail * CI: Nixpkgs-GHCJS: turn-off build which is not persued Co-authored-by: Simon Jakobi <simon.jakobi@gmail.com> Co-authored-by: Richard Marko <srk@48.io>
2020-08-03 19:25:22 +02:00
# Deafult.nix is a unit package abstraciton that allows to abstract over packages even in monorepos:
# Example: pass --arg cabalName --arg packageRoot "./subprojectDir", or map default.nix over a list of tiples for subprojects.
# cabalName is package resulting name: by default and on error resolves in haskellPackages.developPackage to project root directory name by default, but outside the haskellPackages.developPackage as you see below packageRoot can be different
, cabalName ? "hnix"
, packageRoot ? pkgs.nix-gitignore.gitignoreSource [ ] ./.
2018-05-15 21:16:02 +02:00
# This settings expose most of the Nixpkgs Haskell.lib API: https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/haskell-modules/lib.nix
# Some of these options implicitly enable other options they require, and some counterpoint options clash, obviously
# Don't fail at configure time if there are multiple versions of the same package in the (recursive) dependencies of the package being built. Will delay failures, if any, to compile time.
, allowInconsistentDependencies ? false
# Escape the version bounds from the cabal file. You may want to avoid this function.
, doJailbreak ? false
# Nix dependency checking, compilation and execution of test suites listed in the package description file.
, doCheck ? true
# Just produce a SDist src tarball
, sdistTarball ? false
# The strict packaging process as used on Hackage. Tests consistency of the Cabal file.
, buildFromSdist ? true
# Turn all warn into err with {-Wall,-Werror}
, failOnAllWarnings ? false
# `failOnAllWarnings` + `buildFromSdist`
, buildStrictly ? false
# 2020-06-02: NOTE: enableDeadCodeElimination = true: On GHC =< 8.8.3 macOS build falls due to https://gitlab.haskell.org/ghc/ghc/issues/17283
, enableDeadCodeElimination ? false
# Disabled GHC code optimizations make build/tolling/dev loops faster.
# Works also for Haskel IDE Engine and GHCID.
# Enable optimizations for production use, and to pass benchmarks.
, disableOptimization ? true
# Use faster `gold` ELF linker from GNU binutils instead of older&slower but more versatile GNU linker. Is not available by default since macOS does not have it.
, linkWithGold ? false
# Provide an inventory of performance events and timings for the execution. Provides informaiton in an absolute sense. Nothing is timestamped.
, enableLibraryProfiling ? false
, enableExecutableProfiling ? false
# Include tracing information & abilities. Tracing records the chronology, often with timestamps and is extensive in time
, doTracing ? false
# Include DWARF debugging information & abilities
, enableDWARFDebugging ? true
# Strip results from all debugging symbols
, doStrip ? false
# Nixpkgs expects shared libraries
, enableSharedLibraries ? true
# Ability to make static libraries
, enableStaticLibraries ? false
# Make hybrid executable that is also a shared library
, enableSharedExecutables ? false
# link executables statically against haskell libs to reduce closure size
, justStaticExecutables ? false
, enableSeparateBinOutput ? false
# checkUnusedPackages: is `failOnAllWarnings` + `cabal sdist` + post-build dep check.
# Currently uses `packunused` or GHC 8.8 internals, later switches into GHC internal feature.
# Adds a post-build check to verify that dependencies declared in the cabal file are actually used.
, checkUnusedPackages ? false
# Generation and installation of haddock API documentation
, doHaddock ? false
# Generate hyperlinked source code for documentation using HsColour, and have Haddock documentation link to it.
, doHyperlinkSource ? false
# Generation and installation of a coverage report. See https://wiki.haskell.org/Haskell_program_coverage
, doCoverage ? false
# doBenchmark: Dependency checking + compilation and execution for benchmarks listed in the package description file.
, doBenchmark ? false
# For binaries named in `executableNamesToShellComplete` list, generate and bundle-into package an automatically loaded shell complettions
, generateOptparseApplicativeCompletions ? false
, executableNamesToShellComplete ? [ "hnix" ]
2018-05-15 21:16:02 +02:00
# Include Hoogle executable and DB into derivation
, withHoogle ? false
2019-02-17 00:39:03 +01:00
Merge of haskell-with-nixpkgs back into HNix (#681) There were 668 commits which got squashed: * CI: Travis: env: global: rev: upd: note for haskell-update branch M .travis.yml * CI: Travis: build.sh: BUILD_PROJECT: *Optparse*Completion: upd: directional note M build.sh * Travis: Add CI job with linux and GHC-8.4.4 (#603) GHC 8.4 is still widely used, so it's good to check compatibility with it. * Fix CI builds on internal branches (#604) * CI: Travis: rm cache | Builds 2X times faster without Travis cache M .travis.yml * CI: Travis: build.sh: mv `set` declaration | fx master CI statuses M .travis.yml M build.sh * default.nix: make GHC 8.8.3 default M default.nix * default.nix: rm allowUnfree - there is none M default.nix * default.nix: add haskell.lib profiling options explicitly Integrates with CI. M default.nix * default.nix: add flags {doCheck,doHaddock,doCoverage} M default.nix * CI: Travis: build.sh: init CACHIX_SIGNING_KEY with default empty value Due to new strict `set` rules `if` statement check agains empty variable was failing the build, this fixes builds in PRs. ...sigh. M build.sh * default.nix: expose more features of `haskell.lib` API M default.nix * default.nix: add docs to the exposed haskell.lib options M default.nix * CI: build.sh: rm empty args from nix-build M build.sh * CI: build.sh: update Nix after its installation Nix that installs through Nix installer is 2.0.4. Current Nix release is 2.3.5. To to have a less of old bugs, and more of new bugs - Nix after installation needs an update right away. Old Nix literally prevented importing Nix channels on Linux Nix installations. M build.sh * default.nix: to allow use of current channels remove hash guarding M default.nix * default.nix: set `rev` default to `nixpkgs-unstable` M default.nix * default.nix: for import form separate explicit override set M default.nix * default.nix: add if useRev - then use rev, else use <nixpkgs> M default.nix * CI: build.sh: MAIN: add the channel update M build.sh * default.nix: default enableDeadCodeElimination to false | GHC macOS build bug M default.nix * default.nix: off enableSharedExecutables | rare feature, not passes macOS tests This feature seems to enable binaries as also a dynamic library, with is a rare and largely unknown feature, and it not used. Since it is unexpected optional rare not standard feature - turn it off by default. M default.nix * default.nix: expose additional part of Nixpkgs haskell.lib API M default.nix * default.nix: m doc upd M default.nix * default.nix: upd docs for Header.lib args in headers, sort Providing docs to them and sort them roughly in order of their application/stage M default.nix * default.nix: abstract the developPackage into value M default.nix * default.nix: package: sort inherited Haskell.lib args, provide doc M default.nix * default.nix: add option enableSeparateBinOutput M default.nix * default.nix: allow apply composition over the package M default.nix * default.nix: allow apply composition over the package M default.nix * default.nix: expose functionality: sdistTarball; add doc M default.nix * default.nix: expose functionality: buildFromSdist; add doc M default.nix * default.nix: expose functionality: failOnAllWarnings; add doc M default.nix * default.nix: expose functionality: buildStrictly; add doc M default.nix * default.nix: expose functionality: disableOptimization; add doc M default.nix * default.nix: expose functionality: linkWithGold; add doc M default.nix * default.nix: expose functionality: enableDWARFDebugging; add doc M default.nix * default.nix: expose functionality: doJailbreak Argument was already exposed in the header M default.nix * default.nix: expose functionality: doStrip Argument and doc was already provided in the header M default.nix * default.nix: expose functionality: justStaticExecutables Argument and doc was already provided in the header. M default.nix * default.nix: expose functionality: checkUnusedPackages; provide doc M default.nix * default.nix: expose functionality: gen*Optparse*Completion; provide doc M default.nix * default.nix: expose functionality: doHyperlinkSource; provide doc M default.nix * default.nix: rm doStrict (superceeded by failOnAllWarnings) M default.nix * default.nix: rm doOptimize (superceeded by disableOptimizations) M default.nix * default.nix: doc: add to header args M default.nix * default.nix: doc: add to body (functions fold and composePackage) M default.nix * default.nix: doc: add beginning doc and link to lib for more info on options M default.nix * CI: Travis: add Nix packages upd M .travis.yml * CI: Travis: fix Cachix nix-env install rights menegement The Cachix suddenly started to fall with: ``` $ nix-env -iA cachix -f https://cachix.org/api/v1/install error: creating directory '/Users/travis/.cache/nix/tarballs': Permission denied The command "nix-env -iA cachix -f https://cachix.org/api/v1/install" exited with 1. ``` There are changes to macOS procedures, Nix updated to 2.2, and Cachix has big upstream changes for macOS processes. So fixing rights management in this way. M .travis.yml * CI: Travis: rm sleep 2 - redundant Anyway it takes 30s-1m to the nix-build. M .travis.yml * CI: Travis: add HACK to fix reload Nix-daemon after Nix update 2.0 -> 2.2 M .travis.yml * CI: Travis: explicitly state the builds M .travis.yml * CI: Travis: env: rm jobs matrix M .travis.yml * CI: Travis: rm `os:` and `dist:`, since they are explicitly put below M .travis.yml * CI: Travis: enable strict build in GHC 8.6.5 M .travis.yml * CI: Travis: upd explicit build names M .travis.yml * CI: Travis: make GHC 8.10 mandatory M .travis.yml * CI: Travis: move SDist check to GHC 8.10 M .travis.yml * CI: .travis.tml: clean-up Since conf no longer multiplies rows into matrix, but provides it explitly, exclusions not needed. M .travis.yml * CI: make generate*Complettions work and accept a list of executables M .travis.yml M build.sh M default.nix * CI: rm buildStackProject, it does not work that way, and better to use real stack M .travis.yml M build.sh * default.nix: clean-up docs M default.nix * build.sh: default to GHC 8.10 M build.sh * build.sh: sort the options into logical order M build.sh * build.sh: provide docs to options M build.sh * build.sh: add disclamer for options M build.sh * build.sh: add more options and their docs M build.sh * build.sh: add new options into the build commands M build.sh * CI: .travis.yml: use linkWithGold in Linux builds, a bit faster builds M .travis.yml * CI: .travis.yml: GHC 8.10: add Haddock, optimize, Benchmark, Shell Complettions M .travis.yml * build.sh: rm `pkgName` (not used), return `name` - used by Cachix M build.sh * Silence redundant import warnings for Control.Monad.Fail (#633) Also address mysterious redundant import warnings in the testsuite This allows us to enable `buildStrictly=true` for GHC 8.8. Fixes #613. * default.nix: clean-up no longer relevant commented-out code buildInputs populated automatically. Environment overloads we can do any time, no need to keep trivial code commented. There is no AWS S3 use. If we would need we would write new deployment implementation outside of `default.nix` using actual NixOps. * CI: .travis.yml: rm Strict from GHC 8.6.5 M .travis.yml * CI: .travis.yml: properly name GHC 8.8.3 macOS as Strict M .travis.yml * CI: .travis.yml: add explicit quotes M .travis.yml * CI: .travis.yml: add description to the channels M .travis.yml * CI: .travis.yml: add description for executableNamesToShellComplete M .travis.yml * default.nix: filter package root with nix-gitignore so we don't copy stuff like `dist-newstyle`. * CI: .travis.yml: add the disclaimer M .travis.yml * CI: mv rev doc (.travis.yml->build.sh) M .travis.yml M build.sh * CI: build.sh: upd disclaimer M build.sh * CI: build.sh: add setting section disclaimer M build.sh * CI: build.sh: upd NIX_PATH doc M .travis.yml M build.sh * CI: .travis.yml: reduce not used pkgName getOptParseApplicativeComplettions does not need it M .travis.yml * CI: {.travis.yml,build.sh}: rename (name->project) more unique and descriptive M .travis.yml M build.sh * CI: {.travis.yml,build.sh}: merge documentation into buildh.sh M .travis.yml M build.sh * CI: .travis.yml: rm NOTEs from less important explanations M .travis.yml * CI: .travis.yml: {add,set,sort} features from `build.sh` explicitly M .travis.yml * CI: build.sh: mv doHyperlinkSource into logical place M build.sh * CI: .travis.yml: upd the disclaimer M .travis.yml * CI: .travis.yml: rm ALL_TESTS, since it does not work for nix-build and also just plainly does not passes itself, so it is useless in CI build setup M .travis.yml * CI: .travis.yml: upd CACHIX_SIGNING_KEY explanation M .travis.yml * CI: .travis.yml: GHC 8.10: add Haddock and sources hyperlinking M .travis.yml * CI: {.travis.yml,build.sh}: rename (GHCVERSION->compiler) M .travis.yml M build.sh * CI: default.nix: add `compiler` explanation M default.nix * CI: {.travis.yml,build.sh}: upd: make conf work with new Nix installer M .travis.yml M build.sh * CI: .travis.yml: rm irrelevant remount M .travis.yml * CI: {build.sh,default.nix}: upd settings structure, upd descriptions M build.sh M default.nix * CI: default.nix: upd header disclamer M build.sh * CI: mv rev doc (build.sh->default.nix) M build.sh M default.nix * CI: merge docs (build.sh->default.nix) M build.sh M default.nix * CI: build.sh: rm most of NOTE tags M build.sh * CI: .travis.yml: rm Nix updates After refactoring they are right beside/before build.sh Nix updates, so this update can be reduced. M .travis.yml * CI: .travis.yml: upd service restart Since service is not touched the daemon-reload is probably not needed, restart is sufficient. M .travis.yml * CI: build.sh: add report of Nixpkgs channel revision Since Nix and Nixpkgs channel were just updated and build is next - report the revision. M build.sh * default.nix: use dummy package name * default.nix: upd rephrase * default.nix: upd rephrase M default.nix * default.nix: add explanation M default.nix * default.nix: clean-up M default.nix * default.nix: upd M default.nix * default.nix: upd M default.nix * default.nix: add explanation M default.nix * add initial .github/workflows/test.yml * M .github/workflows/test.yml * test.yml: upd name: (Test->CI) M .github/workflows/test.yml * test.yml: add env of Nixpkgs Haskell Lib from HNix M .github/workflows/test.yml * test.yml: (nix-build->./build.sh) M .github/workflows/test.yml * test.yml: upd update of Nix to update all Nix installed packages M build.sh * test.yml: jobs: tests->Basic_build M .github/workflows/test.yml * {test.yml,build.sh}: project: hnix->replaceWithProjectNameInCachix M .github/workflows/test.yml M build.sh * {test.yml,build.sh}: executableNames..Complete: hnix->replaceWith... M .github/workflows/test.yml M build.sh * test.yml: jobs: Basic_build: name the steps M .github/workflows/test.yml * build.sh: compiler: add explanation M build.sh * default.nix: compiler: mv explanation M build.sh M default.nix * test.yml: m upd M .github/workflows/test.yml * test.yml: trigger CI on push to master, track only PRs| trigger build once M .github/workflows/test.yml * Simplify step names M .github/workflows/test.yml * GitHub CI: add Linux_GHC-8-10 M .github/workflows/test.yml * GitHub CI: add Linux_GHCJS M .github/workflows/test.yml * GitHub CI: add macOS_default M .github/workflows/test.yml * GitHub CI: Nixpkgs: disable withHoogle M .github/workflows/test.yml * GitHub CI: add Hackage_Cabal M .github/workflows/test.yml * GitHub CI: Hackage_Cabal: add cabal v2-configure M .github/workflows/test.yml * GitHub CI: Hackage_Cabal: add cabal v2-build M .github/workflows/test.yml * GitHub CI: Hackage_Cabal: add cabal v2-test M .github/workflows/test.yml * .github/workflows/(test->main).yml R .github/workflows/test.yml -> .github/workflows/main.yml * builds: rname project->cachixAccount M .github/workflows/main.yml M build.sh * .travis.yml: add withHoogle=false for CI builds M .travis.yml * .travis.yml: group cachix conf M .travis.yml * GitHub CI: add name tags to builds M .github/workflows/main.yml * GitHub CI: Nixpkgs custom build: add customization M .github/workflows/main.yml * builds: pass-through useRev M .github/workflows/main.yml M build.sh M default.nix * builds: use rev M .github/workflows/main.yml * GitHub CI: add Nixpkgs_stable_Linux M .github/workflows/main.yml * build.sh: provide a NIX_PATH change if rev is chosen M build.sh * GitHub CI: add build schedule M .github/workflows/main.yml * GitHub CI: add explanations M .github/workflows/main.yml * GitHub CI: make all builds optional M .github/workflows/main.yml * name Hackage_Cabal M .github/workflows/main.yml * GitHub CI: Nixpkgs_unstable_macOS: upd M .github/workflows/main.yml * build.sh: rm NIX_PATH setup| default.nix solves it internally M build.sh * build.sh: short-curcuit the Nix tools update M build.sh * add .github/workflows/Cabal-Linux.yml * mv Hackage_Cabal build main->Cabal-Linux.yml M .github/workflows/Cabal-Linux.yml M .github/workflows/main.yml * Cabal-Linux.yml: add schedule M .github/workflows/Cabal-Linux.yml * main.yml: switch all Nix installer nix_path to nixos-unstable M .github/workflows/main.yml * main.yml: rm all Nix installer nix_path resetting to default M .github/workflows/main.yml * GitHub CI: workflow: add macOS, mv job into it A .github/workflows/Nixpkgs-macOS.yml M .github/workflows/main.yml * GitHub CI: workflow: Nixpkgs-macOS: add triggers and shedule M .github/workflows/Nixpkgs-macOS.yml * GitHub CI: workflow: Nixpkgs-macOS: m build rename M .github/workflows/Nixpkgs-macOS.yml * GitHub CI: workflow: Nixpkgs-GHCJS: mv build in A .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/main.yml * GitHub CI: workflow: main: rm withHoogle overload since it is redundant M .github/workflows/main.yml * GitHub CI: workflow: main: (CI->Nixpkgs, Linux) M .github/workflows/main.yml * GitHub CI: workflow: main: linkWithGold M .github/workflows/main.yml * GitHub CI: workflow: main: upd build ids M .github/workflows/main.yml * GitHub CI: workflow: main: upd build names M .github/workflows/main.yml * GitHub CI: workflow: main: add NixOS-unstable Strict build M .github/workflows/main.yml * GitHub CI: workflow: main: upd build names M .github/workflows/main.yml * GitHub CI: workflow: main: add build GHC 8.6.5 M .github/workflows/main.yml * GitHub CI: workflow: main: add build GHC 8.4.4 M .github/workflows/main.yml * GitHub CI: workflow: main: upd build name M .github/workflows/main.yml * GitHub CI: workflow: main: upd build names, wrap in " M .github/workflows/main.yml * GitHub CI: main: upd name: add GHC for GitHub CI to not mix-in GHCJS M .github/workflows/main.yml * GitHub CI: workflow: mv (main->Nixpkgs-GHC-Linux).yml R .github/workflows/main.yml -> .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: mv Quality build M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: m rname builds M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: m rename of the build M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: Quality build: add nix-shell test M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: add denotation towards main examples M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: Quality build: fx nix-shell command M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: mv Nixpkgs-(GHC-->)Linux.yml R .github/workflows/Nixpkgs-GHC-Linux.yml -> .github/workflows/Nixpkgs-Linux.yml * GitHub CI: workflow: GHCJS: clean-up M .github/workflows/Nixpkgs-GHCJS.yml * GitHub CI: workflow: GHCJS: use nixos-unstable rev M .github/workflows/Nixpkgs-GHCJS.yml * GitHub CI: workflow: GHCJS: use linkWithGold M .github/workflows/Nixpkgs-GHCJS.yml * R .github/workflows/Nixpkgs-Linux.yml -> .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: Nixpgs, Linux: recommend nixos-unstable M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: Nixpgs, Linux: recommend test for nixos-20.03 stable M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: mv additiona builds into Nixpgs-Linux-additional A .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: rname workflows M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: make main builds mandatory M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: make build not strict, to not scare off people ;) M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: make Nix-shell into a separate test M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Nix-shell: from the hip nix-shell'ing M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Nix-shell: add separate Hoogle test M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: rename GHCJS M .github/workflows/Nixpkgs-GHCJS.yml * GitHub CI: workflow: main: prettify M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: fx Nix-shell test M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: rename Nix-shell build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: m upd M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Nix-shell build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Quality build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd NixOS stable build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd disclaimer M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: upd steps to "Determined Nix-build" M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml * GitHub CI: workflow: main: upd Hoogle step name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: m upd M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Hoogle step name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Hoogle build name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Basic build name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: add explicit nixos-unstable M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Basic: add nixos-unstable explanation M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Nix-shell: use pure shell (*sic) M .github/workflows/Nixpkgs-Linux-main.yml * default.nix: abstract over package root| now able to manage monorepos * default.nix: abstract over package name| full support of monorepos M default.nix * build.sh: passthrough package{Name,Root} into default.nix * {default.nix,build.sh}: (package->cabal)Name end explanation * CI: Nixpkgs-Linux-main: add template for monorepo matrix * CI: Cabal-Linux: add template for monorepo matrix * D ghcjs/default.nix * Nixpkgs-macOS: mv env attrset * CI: Nixpkgs workflows: use haskell-with-nixpkgs cachix account M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml M .travis.yml * CI: Nixpkgs workflows: provide CACHIX_SIGNING_KEY M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml M .travis.yml * CI: GitHub: Nixpkgs workflows: Cachix action, provide account to it M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml * CI: GitHub: Nixpkgs-Linux-main: quality build: upd name * CI: GitHub: add submodule recursion to checkouts M .github/workflows/Cabal-Linux.yml M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml * CI: GitHub: Cabal-Linux: provide libsodium * default.nix: upd neat-interpolation override * build.sh: clean-up rm redundant settings, since default.nix is the main API propagation point * default.nix: set proper cabalName * CI: switch back to HNix Cachix account M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml M .travis.yml * .travis.yml: switch back to HNix Cachix account secret * default.nix: upd GHC to 8.8.4 * CI: update GHC 8.8.(3->4) Also dropping minor numbers from build names for bravity of tracking Nixpkgs M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .travis.yml * CI: rm Nixpkgs GHC 8.4.4 builds 8.4.4 support is removed from Nixpkgs M .github/workflows/Nixpkgs-Linux-additional.yml M .travis.yml * CI: Cabal-Linux: add GHC 8.4 build Since Nixpkgs removed 8.4, adding it to Hackage builds. * CI: Cabal-Linux: enable tests in configuration M .github/workflows/Cabal-Linux.yml * CI: Cabal-Linux: clean-up M .github/workflows/Cabal-Linux.yml * CI: Cabal-Linux: add Nix installation, instantiate still required for tests M .github/workflows/Cabal-Linux.yml * CI: Cabal-Linux: make builds pass mandatory * CI: Nixpkgs-Linux-main: make all builds optional Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: https://github.com/haskell-nix/hnix/pull/681#discussion_r463983376 * CI: Nixpkgs-Linux-main: make all builds optional cache builders Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: https://github.com/haskell-nix/hnix/pull/681#discussion_r463983376 CI: Travis: fx optional builds CI: Nixpkgs-Linux-main: make all builds optional Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: https://github.com/haskell-nix/hnix/pull/681#discussion_r463983376 CI: Travis: fx optional builds * CI: Travis: enable fast skip See: https://github.com/haskell-nix/hnix/pull/681#discussion_r463996365 M .travis.yml * CI: Travis: add "bypass" to keep CI green, send cache gen to background M .travis.yml * CI: Nixpkgs-Linux-main: proper executable name to shell complete * CI: Nixpkgs-Linux-main: Quality build: add shell completion test M .github/workflows/Nixpkgs-Linux-main.yml * CI: Nixpkgs-Linux-main: default build: add strict build M .github/workflows/Nixpkgs-Linux-main.yml * CI: Nixpkgs-GHCJS: print log tail * CI: Nixpkgs-GHCJS: turn-off build which is not persued Co-authored-by: Simon Jakobi <simon.jakobi@gmail.com> Co-authored-by: Richard Marko <srk@48.io>
2020-08-03 19:25:22 +02:00
# Nix by default updates and uses locally configured nixpkgs-unstable channel
# Nixpkgs revision options:
# `rev` vals in order of freshness -> cache & stability:
# { master
# , <commitHash>
# , haskell-updates # Haskell development branch in Nixpkgs, can be inconsistent. Weekly merged into the upstream
# , nixpkgs-unstable # Default branch on Nix installation, default for non NixOS
# , nixos-unstable # nixpkgs-unstable that passes a bunch of base tests
# , nixos-20.03 # Last stable release, gets almost no updates to recipes, gets only required backports
# ...
# }
2020-12-02 16:13:45 +01:00
, rev ? "24eb3f87fc610f18de7076aee7c5a84ac5591e3e"
, pkgs ?
2018-05-15 21:16:02 +02:00
if builtins.compareVersions builtins.nixVersion "2.0" < 0
Merge of haskell-with-nixpkgs back into HNix (#681) There were 668 commits which got squashed: * CI: Travis: env: global: rev: upd: note for haskell-update branch M .travis.yml * CI: Travis: build.sh: BUILD_PROJECT: *Optparse*Completion: upd: directional note M build.sh * Travis: Add CI job with linux and GHC-8.4.4 (#603) GHC 8.4 is still widely used, so it's good to check compatibility with it. * Fix CI builds on internal branches (#604) * CI: Travis: rm cache | Builds 2X times faster without Travis cache M .travis.yml * CI: Travis: build.sh: mv `set` declaration | fx master CI statuses M .travis.yml M build.sh * default.nix: make GHC 8.8.3 default M default.nix * default.nix: rm allowUnfree - there is none M default.nix * default.nix: add haskell.lib profiling options explicitly Integrates with CI. M default.nix * default.nix: add flags {doCheck,doHaddock,doCoverage} M default.nix * CI: Travis: build.sh: init CACHIX_SIGNING_KEY with default empty value Due to new strict `set` rules `if` statement check agains empty variable was failing the build, this fixes builds in PRs. ...sigh. M build.sh * default.nix: expose more features of `haskell.lib` API M default.nix * default.nix: add docs to the exposed haskell.lib options M default.nix * CI: build.sh: rm empty args from nix-build M build.sh * CI: build.sh: update Nix after its installation Nix that installs through Nix installer is 2.0.4. Current Nix release is 2.3.5. To to have a less of old bugs, and more of new bugs - Nix after installation needs an update right away. Old Nix literally prevented importing Nix channels on Linux Nix installations. M build.sh * default.nix: to allow use of current channels remove hash guarding M default.nix * default.nix: set `rev` default to `nixpkgs-unstable` M default.nix * default.nix: for import form separate explicit override set M default.nix * default.nix: add if useRev - then use rev, else use <nixpkgs> M default.nix * CI: build.sh: MAIN: add the channel update M build.sh * default.nix: default enableDeadCodeElimination to false | GHC macOS build bug M default.nix * default.nix: off enableSharedExecutables | rare feature, not passes macOS tests This feature seems to enable binaries as also a dynamic library, with is a rare and largely unknown feature, and it not used. Since it is unexpected optional rare not standard feature - turn it off by default. M default.nix * default.nix: expose additional part of Nixpkgs haskell.lib API M default.nix * default.nix: m doc upd M default.nix * default.nix: upd docs for Header.lib args in headers, sort Providing docs to them and sort them roughly in order of their application/stage M default.nix * default.nix: abstract the developPackage into value M default.nix * default.nix: package: sort inherited Haskell.lib args, provide doc M default.nix * default.nix: add option enableSeparateBinOutput M default.nix * default.nix: allow apply composition over the package M default.nix * default.nix: allow apply composition over the package M default.nix * default.nix: expose functionality: sdistTarball; add doc M default.nix * default.nix: expose functionality: buildFromSdist; add doc M default.nix * default.nix: expose functionality: failOnAllWarnings; add doc M default.nix * default.nix: expose functionality: buildStrictly; add doc M default.nix * default.nix: expose functionality: disableOptimization; add doc M default.nix * default.nix: expose functionality: linkWithGold; add doc M default.nix * default.nix: expose functionality: enableDWARFDebugging; add doc M default.nix * default.nix: expose functionality: doJailbreak Argument was already exposed in the header M default.nix * default.nix: expose functionality: doStrip Argument and doc was already provided in the header M default.nix * default.nix: expose functionality: justStaticExecutables Argument and doc was already provided in the header. M default.nix * default.nix: expose functionality: checkUnusedPackages; provide doc M default.nix * default.nix: expose functionality: gen*Optparse*Completion; provide doc M default.nix * default.nix: expose functionality: doHyperlinkSource; provide doc M default.nix * default.nix: rm doStrict (superceeded by failOnAllWarnings) M default.nix * default.nix: rm doOptimize (superceeded by disableOptimizations) M default.nix * default.nix: doc: add to header args M default.nix * default.nix: doc: add to body (functions fold and composePackage) M default.nix * default.nix: doc: add beginning doc and link to lib for more info on options M default.nix * CI: Travis: add Nix packages upd M .travis.yml * CI: Travis: fix Cachix nix-env install rights menegement The Cachix suddenly started to fall with: ``` $ nix-env -iA cachix -f https://cachix.org/api/v1/install error: creating directory '/Users/travis/.cache/nix/tarballs': Permission denied The command "nix-env -iA cachix -f https://cachix.org/api/v1/install" exited with 1. ``` There are changes to macOS procedures, Nix updated to 2.2, and Cachix has big upstream changes for macOS processes. So fixing rights management in this way. M .travis.yml * CI: Travis: rm sleep 2 - redundant Anyway it takes 30s-1m to the nix-build. M .travis.yml * CI: Travis: add HACK to fix reload Nix-daemon after Nix update 2.0 -> 2.2 M .travis.yml * CI: Travis: explicitly state the builds M .travis.yml * CI: Travis: env: rm jobs matrix M .travis.yml * CI: Travis: rm `os:` and `dist:`, since they are explicitly put below M .travis.yml * CI: Travis: enable strict build in GHC 8.6.5 M .travis.yml * CI: Travis: upd explicit build names M .travis.yml * CI: Travis: make GHC 8.10 mandatory M .travis.yml * CI: Travis: move SDist check to GHC 8.10 M .travis.yml * CI: .travis.tml: clean-up Since conf no longer multiplies rows into matrix, but provides it explitly, exclusions not needed. M .travis.yml * CI: make generate*Complettions work and accept a list of executables M .travis.yml M build.sh M default.nix * CI: rm buildStackProject, it does not work that way, and better to use real stack M .travis.yml M build.sh * default.nix: clean-up docs M default.nix * build.sh: default to GHC 8.10 M build.sh * build.sh: sort the options into logical order M build.sh * build.sh: provide docs to options M build.sh * build.sh: add disclamer for options M build.sh * build.sh: add more options and their docs M build.sh * build.sh: add new options into the build commands M build.sh * CI: .travis.yml: use linkWithGold in Linux builds, a bit faster builds M .travis.yml * CI: .travis.yml: GHC 8.10: add Haddock, optimize, Benchmark, Shell Complettions M .travis.yml * build.sh: rm `pkgName` (not used), return `name` - used by Cachix M build.sh * Silence redundant import warnings for Control.Monad.Fail (#633) Also address mysterious redundant import warnings in the testsuite This allows us to enable `buildStrictly=true` for GHC 8.8. Fixes #613. * default.nix: clean-up no longer relevant commented-out code buildInputs populated automatically. Environment overloads we can do any time, no need to keep trivial code commented. There is no AWS S3 use. If we would need we would write new deployment implementation outside of `default.nix` using actual NixOps. * CI: .travis.yml: rm Strict from GHC 8.6.5 M .travis.yml * CI: .travis.yml: properly name GHC 8.8.3 macOS as Strict M .travis.yml * CI: .travis.yml: add explicit quotes M .travis.yml * CI: .travis.yml: add description to the channels M .travis.yml * CI: .travis.yml: add description for executableNamesToShellComplete M .travis.yml * default.nix: filter package root with nix-gitignore so we don't copy stuff like `dist-newstyle`. * CI: .travis.yml: add the disclaimer M .travis.yml * CI: mv rev doc (.travis.yml->build.sh) M .travis.yml M build.sh * CI: build.sh: upd disclaimer M build.sh * CI: build.sh: add setting section disclaimer M build.sh * CI: build.sh: upd NIX_PATH doc M .travis.yml M build.sh * CI: .travis.yml: reduce not used pkgName getOptParseApplicativeComplettions does not need it M .travis.yml * CI: {.travis.yml,build.sh}: rename (name->project) more unique and descriptive M .travis.yml M build.sh * CI: {.travis.yml,build.sh}: merge documentation into buildh.sh M .travis.yml M build.sh * CI: .travis.yml: rm NOTEs from less important explanations M .travis.yml * CI: .travis.yml: {add,set,sort} features from `build.sh` explicitly M .travis.yml * CI: build.sh: mv doHyperlinkSource into logical place M build.sh * CI: .travis.yml: upd the disclaimer M .travis.yml * CI: .travis.yml: rm ALL_TESTS, since it does not work for nix-build and also just plainly does not passes itself, so it is useless in CI build setup M .travis.yml * CI: .travis.yml: upd CACHIX_SIGNING_KEY explanation M .travis.yml * CI: .travis.yml: GHC 8.10: add Haddock and sources hyperlinking M .travis.yml * CI: {.travis.yml,build.sh}: rename (GHCVERSION->compiler) M .travis.yml M build.sh * CI: default.nix: add `compiler` explanation M default.nix * CI: {.travis.yml,build.sh}: upd: make conf work with new Nix installer M .travis.yml M build.sh * CI: .travis.yml: rm irrelevant remount M .travis.yml * CI: {build.sh,default.nix}: upd settings structure, upd descriptions M build.sh M default.nix * CI: default.nix: upd header disclamer M build.sh * CI: mv rev doc (build.sh->default.nix) M build.sh M default.nix * CI: merge docs (build.sh->default.nix) M build.sh M default.nix * CI: build.sh: rm most of NOTE tags M build.sh * CI: .travis.yml: rm Nix updates After refactoring they are right beside/before build.sh Nix updates, so this update can be reduced. M .travis.yml * CI: .travis.yml: upd service restart Since service is not touched the daemon-reload is probably not needed, restart is sufficient. M .travis.yml * CI: build.sh: add report of Nixpkgs channel revision Since Nix and Nixpkgs channel were just updated and build is next - report the revision. M build.sh * default.nix: use dummy package name * default.nix: upd rephrase * default.nix: upd rephrase M default.nix * default.nix: add explanation M default.nix * default.nix: clean-up M default.nix * default.nix: upd M default.nix * default.nix: upd M default.nix * default.nix: add explanation M default.nix * add initial .github/workflows/test.yml * M .github/workflows/test.yml * test.yml: upd name: (Test->CI) M .github/workflows/test.yml * test.yml: add env of Nixpkgs Haskell Lib from HNix M .github/workflows/test.yml * test.yml: (nix-build->./build.sh) M .github/workflows/test.yml * test.yml: upd update of Nix to update all Nix installed packages M build.sh * test.yml: jobs: tests->Basic_build M .github/workflows/test.yml * {test.yml,build.sh}: project: hnix->replaceWithProjectNameInCachix M .github/workflows/test.yml M build.sh * {test.yml,build.sh}: executableNames..Complete: hnix->replaceWith... M .github/workflows/test.yml M build.sh * test.yml: jobs: Basic_build: name the steps M .github/workflows/test.yml * build.sh: compiler: add explanation M build.sh * default.nix: compiler: mv explanation M build.sh M default.nix * test.yml: m upd M .github/workflows/test.yml * test.yml: trigger CI on push to master, track only PRs| trigger build once M .github/workflows/test.yml * Simplify step names M .github/workflows/test.yml * GitHub CI: add Linux_GHC-8-10 M .github/workflows/test.yml * GitHub CI: add Linux_GHCJS M .github/workflows/test.yml * GitHub CI: add macOS_default M .github/workflows/test.yml * GitHub CI: Nixpkgs: disable withHoogle M .github/workflows/test.yml * GitHub CI: add Hackage_Cabal M .github/workflows/test.yml * GitHub CI: Hackage_Cabal: add cabal v2-configure M .github/workflows/test.yml * GitHub CI: Hackage_Cabal: add cabal v2-build M .github/workflows/test.yml * GitHub CI: Hackage_Cabal: add cabal v2-test M .github/workflows/test.yml * .github/workflows/(test->main).yml R .github/workflows/test.yml -> .github/workflows/main.yml * builds: rname project->cachixAccount M .github/workflows/main.yml M build.sh * .travis.yml: add withHoogle=false for CI builds M .travis.yml * .travis.yml: group cachix conf M .travis.yml * GitHub CI: add name tags to builds M .github/workflows/main.yml * GitHub CI: Nixpkgs custom build: add customization M .github/workflows/main.yml * builds: pass-through useRev M .github/workflows/main.yml M build.sh M default.nix * builds: use rev M .github/workflows/main.yml * GitHub CI: add Nixpkgs_stable_Linux M .github/workflows/main.yml * build.sh: provide a NIX_PATH change if rev is chosen M build.sh * GitHub CI: add build schedule M .github/workflows/main.yml * GitHub CI: add explanations M .github/workflows/main.yml * GitHub CI: make all builds optional M .github/workflows/main.yml * name Hackage_Cabal M .github/workflows/main.yml * GitHub CI: Nixpkgs_unstable_macOS: upd M .github/workflows/main.yml * build.sh: rm NIX_PATH setup| default.nix solves it internally M build.sh * build.sh: short-curcuit the Nix tools update M build.sh * add .github/workflows/Cabal-Linux.yml * mv Hackage_Cabal build main->Cabal-Linux.yml M .github/workflows/Cabal-Linux.yml M .github/workflows/main.yml * Cabal-Linux.yml: add schedule M .github/workflows/Cabal-Linux.yml * main.yml: switch all Nix installer nix_path to nixos-unstable M .github/workflows/main.yml * main.yml: rm all Nix installer nix_path resetting to default M .github/workflows/main.yml * GitHub CI: workflow: add macOS, mv job into it A .github/workflows/Nixpkgs-macOS.yml M .github/workflows/main.yml * GitHub CI: workflow: Nixpkgs-macOS: add triggers and shedule M .github/workflows/Nixpkgs-macOS.yml * GitHub CI: workflow: Nixpkgs-macOS: m build rename M .github/workflows/Nixpkgs-macOS.yml * GitHub CI: workflow: Nixpkgs-GHCJS: mv build in A .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/main.yml * GitHub CI: workflow: main: rm withHoogle overload since it is redundant M .github/workflows/main.yml * GitHub CI: workflow: main: (CI->Nixpkgs, Linux) M .github/workflows/main.yml * GitHub CI: workflow: main: linkWithGold M .github/workflows/main.yml * GitHub CI: workflow: main: upd build ids M .github/workflows/main.yml * GitHub CI: workflow: main: upd build names M .github/workflows/main.yml * GitHub CI: workflow: main: add NixOS-unstable Strict build M .github/workflows/main.yml * GitHub CI: workflow: main: upd build names M .github/workflows/main.yml * GitHub CI: workflow: main: add build GHC 8.6.5 M .github/workflows/main.yml * GitHub CI: workflow: main: add build GHC 8.4.4 M .github/workflows/main.yml * GitHub CI: workflow: main: upd build name M .github/workflows/main.yml * GitHub CI: workflow: main: upd build names, wrap in " M .github/workflows/main.yml * GitHub CI: main: upd name: add GHC for GitHub CI to not mix-in GHCJS M .github/workflows/main.yml * GitHub CI: workflow: mv (main->Nixpkgs-GHC-Linux).yml R .github/workflows/main.yml -> .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: mv Quality build M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: m rname builds M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: m rename of the build M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: Quality build: add nix-shell test M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: add denotation towards main examples M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: Quality build: fx nix-shell command M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: mv Nixpkgs-(GHC-->)Linux.yml R .github/workflows/Nixpkgs-GHC-Linux.yml -> .github/workflows/Nixpkgs-Linux.yml * GitHub CI: workflow: GHCJS: clean-up M .github/workflows/Nixpkgs-GHCJS.yml * GitHub CI: workflow: GHCJS: use nixos-unstable rev M .github/workflows/Nixpkgs-GHCJS.yml * GitHub CI: workflow: GHCJS: use linkWithGold M .github/workflows/Nixpkgs-GHCJS.yml * R .github/workflows/Nixpkgs-Linux.yml -> .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: Nixpgs, Linux: recommend nixos-unstable M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: Nixpgs, Linux: recommend test for nixos-20.03 stable M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: mv additiona builds into Nixpgs-Linux-additional A .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: rname workflows M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: make main builds mandatory M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: make build not strict, to not scare off people ;) M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: make Nix-shell into a separate test M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Nix-shell: from the hip nix-shell'ing M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Nix-shell: add separate Hoogle test M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: rename GHCJS M .github/workflows/Nixpkgs-GHCJS.yml * GitHub CI: workflow: main: prettify M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: fx Nix-shell test M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: rename Nix-shell build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: m upd M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Nix-shell build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Quality build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd NixOS stable build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd disclaimer M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: upd steps to "Determined Nix-build" M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml * GitHub CI: workflow: main: upd Hoogle step name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: m upd M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Hoogle step name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Hoogle build name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Basic build name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: add explicit nixos-unstable M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Basic: add nixos-unstable explanation M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Nix-shell: use pure shell (*sic) M .github/workflows/Nixpkgs-Linux-main.yml * default.nix: abstract over package root| now able to manage monorepos * default.nix: abstract over package name| full support of monorepos M default.nix * build.sh: passthrough package{Name,Root} into default.nix * {default.nix,build.sh}: (package->cabal)Name end explanation * CI: Nixpkgs-Linux-main: add template for monorepo matrix * CI: Cabal-Linux: add template for monorepo matrix * D ghcjs/default.nix * Nixpkgs-macOS: mv env attrset * CI: Nixpkgs workflows: use haskell-with-nixpkgs cachix account M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml M .travis.yml * CI: Nixpkgs workflows: provide CACHIX_SIGNING_KEY M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml M .travis.yml * CI: GitHub: Nixpkgs workflows: Cachix action, provide account to it M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml * CI: GitHub: Nixpkgs-Linux-main: quality build: upd name * CI: GitHub: add submodule recursion to checkouts M .github/workflows/Cabal-Linux.yml M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml * CI: GitHub: Cabal-Linux: provide libsodium * default.nix: upd neat-interpolation override * build.sh: clean-up rm redundant settings, since default.nix is the main API propagation point * default.nix: set proper cabalName * CI: switch back to HNix Cachix account M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml M .travis.yml * .travis.yml: switch back to HNix Cachix account secret * default.nix: upd GHC to 8.8.4 * CI: update GHC 8.8.(3->4) Also dropping minor numbers from build names for bravity of tracking Nixpkgs M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .travis.yml * CI: rm Nixpkgs GHC 8.4.4 builds 8.4.4 support is removed from Nixpkgs M .github/workflows/Nixpkgs-Linux-additional.yml M .travis.yml * CI: Cabal-Linux: add GHC 8.4 build Since Nixpkgs removed 8.4, adding it to Hackage builds. * CI: Cabal-Linux: enable tests in configuration M .github/workflows/Cabal-Linux.yml * CI: Cabal-Linux: clean-up M .github/workflows/Cabal-Linux.yml * CI: Cabal-Linux: add Nix installation, instantiate still required for tests M .github/workflows/Cabal-Linux.yml * CI: Cabal-Linux: make builds pass mandatory * CI: Nixpkgs-Linux-main: make all builds optional Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: https://github.com/haskell-nix/hnix/pull/681#discussion_r463983376 * CI: Nixpkgs-Linux-main: make all builds optional cache builders Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: https://github.com/haskell-nix/hnix/pull/681#discussion_r463983376 CI: Travis: fx optional builds CI: Nixpkgs-Linux-main: make all builds optional Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: https://github.com/haskell-nix/hnix/pull/681#discussion_r463983376 CI: Travis: fx optional builds * CI: Travis: enable fast skip See: https://github.com/haskell-nix/hnix/pull/681#discussion_r463996365 M .travis.yml * CI: Travis: add "bypass" to keep CI green, send cache gen to background M .travis.yml * CI: Nixpkgs-Linux-main: proper executable name to shell complete * CI: Nixpkgs-Linux-main: Quality build: add shell completion test M .github/workflows/Nixpkgs-Linux-main.yml * CI: Nixpkgs-Linux-main: default build: add strict build M .github/workflows/Nixpkgs-Linux-main.yml * CI: Nixpkgs-GHCJS: print log tail * CI: Nixpkgs-GHCJS: turn-off build which is not persued Co-authored-by: Simon Jakobi <simon.jakobi@gmail.com> Co-authored-by: Richard Marko <srk@48.io>
2020-08-03 19:25:22 +02:00
then abort "Requires Nix >= 2.0"
else
Merge update from `haskell-with-nixpkgs` * "rev" "default" tracks local default Nixpkgs channel. * "compiler" "default" tracks default Nixpkgs GHC compiler. * Properly providing secret to the GitHub CI workflows. * Clean-up. * Project freed form reliance on Travis CI. * Removing unmaintained GHCJS build, in favor for the further move to Haskell to WebAssembly compilation. --- In terms of the fish shell the rebase merge is done in this way: ```fish set -l tmpDir "$HOME/src/tmp" set -l sourceDir 'haskell-with-nixpkgs' set -l sourceUrl "git@github.com:haskell-nix/$sourceDir.git" set -l masterDir 'hnix' set -l masterUrl "git@github.com:haskell-nix/$masterDir.git" set -l fileList \ default.nix \ build.sh \ ghcjs-build.sh \ Cabal-Linux.yml \ Nixpkgs-GHCJS.yml \ Nixpkgs-Linux-additional.yml \ Nixpkgs-Linux-maim.yml \ Nixpkgs-macOS.yml mkdir -p "$tmpDir" rm -rf "$tmpDir/$sourceDir" rm -rf "$tmpDir/$masterDir" cd "$tmpDir" git clone "$sourceUrl" "$sourceDir" cd "$sourceDir" git-pass-filter $fileList cd "$tmpDir" git clone "$masterUrl" "$masterDir" cd "$masterDir" git checkout -b upd-from-"$sourceDir" git remote add hn "$tmpDir/$sourceDir" git fetch hn master git merge -S --allow-unrelated-histories hn/master ``` --- ```log 10 files changed, 42 insertions(+), 401 deletions(-) .github/workflows/Cabal-Linux.yml | 4 - .github/workflows/Nixpkgs-Linux-main.yml | 12 +- .github/workflows/Nixpkgs-Linux-additional.yml | 4 +- .github/workflows/Nixpkgs-macOS.yml | 5 +- default.nix | 33 +++-- build.sh | 97 ++------------- .github/workflows/Nixpkgs-GHCJS-turned-off | 45 ------- ghcjs/nix.conf | 2 - ghcjs/default.nix | 79 ------------ .travis.yml | 162 ------------------------- ```
2020-08-17 18:56:37 +02:00
if ((rev == "") || (rev == "default") || (rev == "local"))
then import <nixpkgs> {}
Merge of haskell-with-nixpkgs back into HNix (#681) There were 668 commits which got squashed: * CI: Travis: env: global: rev: upd: note for haskell-update branch M .travis.yml * CI: Travis: build.sh: BUILD_PROJECT: *Optparse*Completion: upd: directional note M build.sh * Travis: Add CI job with linux and GHC-8.4.4 (#603) GHC 8.4 is still widely used, so it's good to check compatibility with it. * Fix CI builds on internal branches (#604) * CI: Travis: rm cache | Builds 2X times faster without Travis cache M .travis.yml * CI: Travis: build.sh: mv `set` declaration | fx master CI statuses M .travis.yml M build.sh * default.nix: make GHC 8.8.3 default M default.nix * default.nix: rm allowUnfree - there is none M default.nix * default.nix: add haskell.lib profiling options explicitly Integrates with CI. M default.nix * default.nix: add flags {doCheck,doHaddock,doCoverage} M default.nix * CI: Travis: build.sh: init CACHIX_SIGNING_KEY with default empty value Due to new strict `set` rules `if` statement check agains empty variable was failing the build, this fixes builds in PRs. ...sigh. M build.sh * default.nix: expose more features of `haskell.lib` API M default.nix * default.nix: add docs to the exposed haskell.lib options M default.nix * CI: build.sh: rm empty args from nix-build M build.sh * CI: build.sh: update Nix after its installation Nix that installs through Nix installer is 2.0.4. Current Nix release is 2.3.5. To to have a less of old bugs, and more of new bugs - Nix after installation needs an update right away. Old Nix literally prevented importing Nix channels on Linux Nix installations. M build.sh * default.nix: to allow use of current channels remove hash guarding M default.nix * default.nix: set `rev` default to `nixpkgs-unstable` M default.nix * default.nix: for import form separate explicit override set M default.nix * default.nix: add if useRev - then use rev, else use <nixpkgs> M default.nix * CI: build.sh: MAIN: add the channel update M build.sh * default.nix: default enableDeadCodeElimination to false | GHC macOS build bug M default.nix * default.nix: off enableSharedExecutables | rare feature, not passes macOS tests This feature seems to enable binaries as also a dynamic library, with is a rare and largely unknown feature, and it not used. Since it is unexpected optional rare not standard feature - turn it off by default. M default.nix * default.nix: expose additional part of Nixpkgs haskell.lib API M default.nix * default.nix: m doc upd M default.nix * default.nix: upd docs for Header.lib args in headers, sort Providing docs to them and sort them roughly in order of their application/stage M default.nix * default.nix: abstract the developPackage into value M default.nix * default.nix: package: sort inherited Haskell.lib args, provide doc M default.nix * default.nix: add option enableSeparateBinOutput M default.nix * default.nix: allow apply composition over the package M default.nix * default.nix: allow apply composition over the package M default.nix * default.nix: expose functionality: sdistTarball; add doc M default.nix * default.nix: expose functionality: buildFromSdist; add doc M default.nix * default.nix: expose functionality: failOnAllWarnings; add doc M default.nix * default.nix: expose functionality: buildStrictly; add doc M default.nix * default.nix: expose functionality: disableOptimization; add doc M default.nix * default.nix: expose functionality: linkWithGold; add doc M default.nix * default.nix: expose functionality: enableDWARFDebugging; add doc M default.nix * default.nix: expose functionality: doJailbreak Argument was already exposed in the header M default.nix * default.nix: expose functionality: doStrip Argument and doc was already provided in the header M default.nix * default.nix: expose functionality: justStaticExecutables Argument and doc was already provided in the header. M default.nix * default.nix: expose functionality: checkUnusedPackages; provide doc M default.nix * default.nix: expose functionality: gen*Optparse*Completion; provide doc M default.nix * default.nix: expose functionality: doHyperlinkSource; provide doc M default.nix * default.nix: rm doStrict (superceeded by failOnAllWarnings) M default.nix * default.nix: rm doOptimize (superceeded by disableOptimizations) M default.nix * default.nix: doc: add to header args M default.nix * default.nix: doc: add to body (functions fold and composePackage) M default.nix * default.nix: doc: add beginning doc and link to lib for more info on options M default.nix * CI: Travis: add Nix packages upd M .travis.yml * CI: Travis: fix Cachix nix-env install rights menegement The Cachix suddenly started to fall with: ``` $ nix-env -iA cachix -f https://cachix.org/api/v1/install error: creating directory '/Users/travis/.cache/nix/tarballs': Permission denied The command "nix-env -iA cachix -f https://cachix.org/api/v1/install" exited with 1. ``` There are changes to macOS procedures, Nix updated to 2.2, and Cachix has big upstream changes for macOS processes. So fixing rights management in this way. M .travis.yml * CI: Travis: rm sleep 2 - redundant Anyway it takes 30s-1m to the nix-build. M .travis.yml * CI: Travis: add HACK to fix reload Nix-daemon after Nix update 2.0 -> 2.2 M .travis.yml * CI: Travis: explicitly state the builds M .travis.yml * CI: Travis: env: rm jobs matrix M .travis.yml * CI: Travis: rm `os:` and `dist:`, since they are explicitly put below M .travis.yml * CI: Travis: enable strict build in GHC 8.6.5 M .travis.yml * CI: Travis: upd explicit build names M .travis.yml * CI: Travis: make GHC 8.10 mandatory M .travis.yml * CI: Travis: move SDist check to GHC 8.10 M .travis.yml * CI: .travis.tml: clean-up Since conf no longer multiplies rows into matrix, but provides it explitly, exclusions not needed. M .travis.yml * CI: make generate*Complettions work and accept a list of executables M .travis.yml M build.sh M default.nix * CI: rm buildStackProject, it does not work that way, and better to use real stack M .travis.yml M build.sh * default.nix: clean-up docs M default.nix * build.sh: default to GHC 8.10 M build.sh * build.sh: sort the options into logical order M build.sh * build.sh: provide docs to options M build.sh * build.sh: add disclamer for options M build.sh * build.sh: add more options and their docs M build.sh * build.sh: add new options into the build commands M build.sh * CI: .travis.yml: use linkWithGold in Linux builds, a bit faster builds M .travis.yml * CI: .travis.yml: GHC 8.10: add Haddock, optimize, Benchmark, Shell Complettions M .travis.yml * build.sh: rm `pkgName` (not used), return `name` - used by Cachix M build.sh * Silence redundant import warnings for Control.Monad.Fail (#633) Also address mysterious redundant import warnings in the testsuite This allows us to enable `buildStrictly=true` for GHC 8.8. Fixes #613. * default.nix: clean-up no longer relevant commented-out code buildInputs populated automatically. Environment overloads we can do any time, no need to keep trivial code commented. There is no AWS S3 use. If we would need we would write new deployment implementation outside of `default.nix` using actual NixOps. * CI: .travis.yml: rm Strict from GHC 8.6.5 M .travis.yml * CI: .travis.yml: properly name GHC 8.8.3 macOS as Strict M .travis.yml * CI: .travis.yml: add explicit quotes M .travis.yml * CI: .travis.yml: add description to the channels M .travis.yml * CI: .travis.yml: add description for executableNamesToShellComplete M .travis.yml * default.nix: filter package root with nix-gitignore so we don't copy stuff like `dist-newstyle`. * CI: .travis.yml: add the disclaimer M .travis.yml * CI: mv rev doc (.travis.yml->build.sh) M .travis.yml M build.sh * CI: build.sh: upd disclaimer M build.sh * CI: build.sh: add setting section disclaimer M build.sh * CI: build.sh: upd NIX_PATH doc M .travis.yml M build.sh * CI: .travis.yml: reduce not used pkgName getOptParseApplicativeComplettions does not need it M .travis.yml * CI: {.travis.yml,build.sh}: rename (name->project) more unique and descriptive M .travis.yml M build.sh * CI: {.travis.yml,build.sh}: merge documentation into buildh.sh M .travis.yml M build.sh * CI: .travis.yml: rm NOTEs from less important explanations M .travis.yml * CI: .travis.yml: {add,set,sort} features from `build.sh` explicitly M .travis.yml * CI: build.sh: mv doHyperlinkSource into logical place M build.sh * CI: .travis.yml: upd the disclaimer M .travis.yml * CI: .travis.yml: rm ALL_TESTS, since it does not work for nix-build and also just plainly does not passes itself, so it is useless in CI build setup M .travis.yml * CI: .travis.yml: upd CACHIX_SIGNING_KEY explanation M .travis.yml * CI: .travis.yml: GHC 8.10: add Haddock and sources hyperlinking M .travis.yml * CI: {.travis.yml,build.sh}: rename (GHCVERSION->compiler) M .travis.yml M build.sh * CI: default.nix: add `compiler` explanation M default.nix * CI: {.travis.yml,build.sh}: upd: make conf work with new Nix installer M .travis.yml M build.sh * CI: .travis.yml: rm irrelevant remount M .travis.yml * CI: {build.sh,default.nix}: upd settings structure, upd descriptions M build.sh M default.nix * CI: default.nix: upd header disclamer M build.sh * CI: mv rev doc (build.sh->default.nix) M build.sh M default.nix * CI: merge docs (build.sh->default.nix) M build.sh M default.nix * CI: build.sh: rm most of NOTE tags M build.sh * CI: .travis.yml: rm Nix updates After refactoring they are right beside/before build.sh Nix updates, so this update can be reduced. M .travis.yml * CI: .travis.yml: upd service restart Since service is not touched the daemon-reload is probably not needed, restart is sufficient. M .travis.yml * CI: build.sh: add report of Nixpkgs channel revision Since Nix and Nixpkgs channel were just updated and build is next - report the revision. M build.sh * default.nix: use dummy package name * default.nix: upd rephrase * default.nix: upd rephrase M default.nix * default.nix: add explanation M default.nix * default.nix: clean-up M default.nix * default.nix: upd M default.nix * default.nix: upd M default.nix * default.nix: add explanation M default.nix * add initial .github/workflows/test.yml * M .github/workflows/test.yml * test.yml: upd name: (Test->CI) M .github/workflows/test.yml * test.yml: add env of Nixpkgs Haskell Lib from HNix M .github/workflows/test.yml * test.yml: (nix-build->./build.sh) M .github/workflows/test.yml * test.yml: upd update of Nix to update all Nix installed packages M build.sh * test.yml: jobs: tests->Basic_build M .github/workflows/test.yml * {test.yml,build.sh}: project: hnix->replaceWithProjectNameInCachix M .github/workflows/test.yml M build.sh * {test.yml,build.sh}: executableNames..Complete: hnix->replaceWith... M .github/workflows/test.yml M build.sh * test.yml: jobs: Basic_build: name the steps M .github/workflows/test.yml * build.sh: compiler: add explanation M build.sh * default.nix: compiler: mv explanation M build.sh M default.nix * test.yml: m upd M .github/workflows/test.yml * test.yml: trigger CI on push to master, track only PRs| trigger build once M .github/workflows/test.yml * Simplify step names M .github/workflows/test.yml * GitHub CI: add Linux_GHC-8-10 M .github/workflows/test.yml * GitHub CI: add Linux_GHCJS M .github/workflows/test.yml * GitHub CI: add macOS_default M .github/workflows/test.yml * GitHub CI: Nixpkgs: disable withHoogle M .github/workflows/test.yml * GitHub CI: add Hackage_Cabal M .github/workflows/test.yml * GitHub CI: Hackage_Cabal: add cabal v2-configure M .github/workflows/test.yml * GitHub CI: Hackage_Cabal: add cabal v2-build M .github/workflows/test.yml * GitHub CI: Hackage_Cabal: add cabal v2-test M .github/workflows/test.yml * .github/workflows/(test->main).yml R .github/workflows/test.yml -> .github/workflows/main.yml * builds: rname project->cachixAccount M .github/workflows/main.yml M build.sh * .travis.yml: add withHoogle=false for CI builds M .travis.yml * .travis.yml: group cachix conf M .travis.yml * GitHub CI: add name tags to builds M .github/workflows/main.yml * GitHub CI: Nixpkgs custom build: add customization M .github/workflows/main.yml * builds: pass-through useRev M .github/workflows/main.yml M build.sh M default.nix * builds: use rev M .github/workflows/main.yml * GitHub CI: add Nixpkgs_stable_Linux M .github/workflows/main.yml * build.sh: provide a NIX_PATH change if rev is chosen M build.sh * GitHub CI: add build schedule M .github/workflows/main.yml * GitHub CI: add explanations M .github/workflows/main.yml * GitHub CI: make all builds optional M .github/workflows/main.yml * name Hackage_Cabal M .github/workflows/main.yml * GitHub CI: Nixpkgs_unstable_macOS: upd M .github/workflows/main.yml * build.sh: rm NIX_PATH setup| default.nix solves it internally M build.sh * build.sh: short-curcuit the Nix tools update M build.sh * add .github/workflows/Cabal-Linux.yml * mv Hackage_Cabal build main->Cabal-Linux.yml M .github/workflows/Cabal-Linux.yml M .github/workflows/main.yml * Cabal-Linux.yml: add schedule M .github/workflows/Cabal-Linux.yml * main.yml: switch all Nix installer nix_path to nixos-unstable M .github/workflows/main.yml * main.yml: rm all Nix installer nix_path resetting to default M .github/workflows/main.yml * GitHub CI: workflow: add macOS, mv job into it A .github/workflows/Nixpkgs-macOS.yml M .github/workflows/main.yml * GitHub CI: workflow: Nixpkgs-macOS: add triggers and shedule M .github/workflows/Nixpkgs-macOS.yml * GitHub CI: workflow: Nixpkgs-macOS: m build rename M .github/workflows/Nixpkgs-macOS.yml * GitHub CI: workflow: Nixpkgs-GHCJS: mv build in A .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/main.yml * GitHub CI: workflow: main: rm withHoogle overload since it is redundant M .github/workflows/main.yml * GitHub CI: workflow: main: (CI->Nixpkgs, Linux) M .github/workflows/main.yml * GitHub CI: workflow: main: linkWithGold M .github/workflows/main.yml * GitHub CI: workflow: main: upd build ids M .github/workflows/main.yml * GitHub CI: workflow: main: upd build names M .github/workflows/main.yml * GitHub CI: workflow: main: add NixOS-unstable Strict build M .github/workflows/main.yml * GitHub CI: workflow: main: upd build names M .github/workflows/main.yml * GitHub CI: workflow: main: add build GHC 8.6.5 M .github/workflows/main.yml * GitHub CI: workflow: main: add build GHC 8.4.4 M .github/workflows/main.yml * GitHub CI: workflow: main: upd build name M .github/workflows/main.yml * GitHub CI: workflow: main: upd build names, wrap in " M .github/workflows/main.yml * GitHub CI: main: upd name: add GHC for GitHub CI to not mix-in GHCJS M .github/workflows/main.yml * GitHub CI: workflow: mv (main->Nixpkgs-GHC-Linux).yml R .github/workflows/main.yml -> .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: mv Quality build M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: m rname builds M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: m rename of the build M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: Quality build: add nix-shell test M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: add denotation towards main examples M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: Quality build: fx nix-shell command M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: mv Nixpkgs-(GHC-->)Linux.yml R .github/workflows/Nixpkgs-GHC-Linux.yml -> .github/workflows/Nixpkgs-Linux.yml * GitHub CI: workflow: GHCJS: clean-up M .github/workflows/Nixpkgs-GHCJS.yml * GitHub CI: workflow: GHCJS: use nixos-unstable rev M .github/workflows/Nixpkgs-GHCJS.yml * GitHub CI: workflow: GHCJS: use linkWithGold M .github/workflows/Nixpkgs-GHCJS.yml * R .github/workflows/Nixpkgs-Linux.yml -> .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: Nixpgs, Linux: recommend nixos-unstable M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: Nixpgs, Linux: recommend test for nixos-20.03 stable M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: mv additiona builds into Nixpgs-Linux-additional A .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: rname workflows M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: make main builds mandatory M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: make build not strict, to not scare off people ;) M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: make Nix-shell into a separate test M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Nix-shell: from the hip nix-shell'ing M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Nix-shell: add separate Hoogle test M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: rename GHCJS M .github/workflows/Nixpkgs-GHCJS.yml * GitHub CI: workflow: main: prettify M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: fx Nix-shell test M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: rename Nix-shell build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: m upd M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Nix-shell build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Quality build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd NixOS stable build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd disclaimer M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: upd steps to "Determined Nix-build" M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml * GitHub CI: workflow: main: upd Hoogle step name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: m upd M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Hoogle step name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Hoogle build name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Basic build name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: add explicit nixos-unstable M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Basic: add nixos-unstable explanation M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Nix-shell: use pure shell (*sic) M .github/workflows/Nixpkgs-Linux-main.yml * default.nix: abstract over package root| now able to manage monorepos * default.nix: abstract over package name| full support of monorepos M default.nix * build.sh: passthrough package{Name,Root} into default.nix * {default.nix,build.sh}: (package->cabal)Name end explanation * CI: Nixpkgs-Linux-main: add template for monorepo matrix * CI: Cabal-Linux: add template for monorepo matrix * D ghcjs/default.nix * Nixpkgs-macOS: mv env attrset * CI: Nixpkgs workflows: use haskell-with-nixpkgs cachix account M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml M .travis.yml * CI: Nixpkgs workflows: provide CACHIX_SIGNING_KEY M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml M .travis.yml * CI: GitHub: Nixpkgs workflows: Cachix action, provide account to it M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml * CI: GitHub: Nixpkgs-Linux-main: quality build: upd name * CI: GitHub: add submodule recursion to checkouts M .github/workflows/Cabal-Linux.yml M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml * CI: GitHub: Cabal-Linux: provide libsodium * default.nix: upd neat-interpolation override * build.sh: clean-up rm redundant settings, since default.nix is the main API propagation point * default.nix: set proper cabalName * CI: switch back to HNix Cachix account M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml M .travis.yml * .travis.yml: switch back to HNix Cachix account secret * default.nix: upd GHC to 8.8.4 * CI: update GHC 8.8.(3->4) Also dropping minor numbers from build names for bravity of tracking Nixpkgs M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .travis.yml * CI: rm Nixpkgs GHC 8.4.4 builds 8.4.4 support is removed from Nixpkgs M .github/workflows/Nixpkgs-Linux-additional.yml M .travis.yml * CI: Cabal-Linux: add GHC 8.4 build Since Nixpkgs removed 8.4, adding it to Hackage builds. * CI: Cabal-Linux: enable tests in configuration M .github/workflows/Cabal-Linux.yml * CI: Cabal-Linux: clean-up M .github/workflows/Cabal-Linux.yml * CI: Cabal-Linux: add Nix installation, instantiate still required for tests M .github/workflows/Cabal-Linux.yml * CI: Cabal-Linux: make builds pass mandatory * CI: Nixpkgs-Linux-main: make all builds optional Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: https://github.com/haskell-nix/hnix/pull/681#discussion_r463983376 * CI: Nixpkgs-Linux-main: make all builds optional cache builders Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: https://github.com/haskell-nix/hnix/pull/681#discussion_r463983376 CI: Travis: fx optional builds CI: Nixpkgs-Linux-main: make all builds optional Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: https://github.com/haskell-nix/hnix/pull/681#discussion_r463983376 CI: Travis: fx optional builds * CI: Travis: enable fast skip See: https://github.com/haskell-nix/hnix/pull/681#discussion_r463996365 M .travis.yml * CI: Travis: add "bypass" to keep CI green, send cache gen to background M .travis.yml * CI: Nixpkgs-Linux-main: proper executable name to shell complete * CI: Nixpkgs-Linux-main: Quality build: add shell completion test M .github/workflows/Nixpkgs-Linux-main.yml * CI: Nixpkgs-Linux-main: default build: add strict build M .github/workflows/Nixpkgs-Linux-main.yml * CI: Nixpkgs-GHCJS: print log tail * CI: Nixpkgs-GHCJS: turn-off build which is not persued Co-authored-by: Simon Jakobi <simon.jakobi@gmail.com> Co-authored-by: Richard Marko <srk@48.io>
2020-08-03 19:25:22 +02:00
# Do not guard with hash, so the project is able to use current channels (rolling `rev`) of Nixpkgs
Merge update from `haskell-with-nixpkgs` * "rev" "default" tracks local default Nixpkgs channel. * "compiler" "default" tracks default Nixpkgs GHC compiler. * Properly providing secret to the GitHub CI workflows. * Clean-up. * Project freed form reliance on Travis CI. * Removing unmaintained GHCJS build, in favor for the further move to Haskell to WebAssembly compilation. --- In terms of the fish shell the rebase merge is done in this way: ```fish set -l tmpDir "$HOME/src/tmp" set -l sourceDir 'haskell-with-nixpkgs' set -l sourceUrl "git@github.com:haskell-nix/$sourceDir.git" set -l masterDir 'hnix' set -l masterUrl "git@github.com:haskell-nix/$masterDir.git" set -l fileList \ default.nix \ build.sh \ ghcjs-build.sh \ Cabal-Linux.yml \ Nixpkgs-GHCJS.yml \ Nixpkgs-Linux-additional.yml \ Nixpkgs-Linux-maim.yml \ Nixpkgs-macOS.yml mkdir -p "$tmpDir" rm -rf "$tmpDir/$sourceDir" rm -rf "$tmpDir/$masterDir" cd "$tmpDir" git clone "$sourceUrl" "$sourceDir" cd "$sourceDir" git-pass-filter $fileList cd "$tmpDir" git clone "$masterUrl" "$masterDir" cd "$masterDir" git checkout -b upd-from-"$sourceDir" git remote add hn "$tmpDir/$sourceDir" git fetch hn master git merge -S --allow-unrelated-histories hn/master ``` --- ```log 10 files changed, 42 insertions(+), 401 deletions(-) .github/workflows/Cabal-Linux.yml | 4 - .github/workflows/Nixpkgs-Linux-main.yml | 12 +- .github/workflows/Nixpkgs-Linux-additional.yml | 4 +- .github/workflows/Nixpkgs-macOS.yml | 5 +- default.nix | 33 +++-- build.sh | 97 ++------------- .github/workflows/Nixpkgs-GHCJS-turned-off | 45 ------- ghcjs/nix.conf | 2 - ghcjs/default.nix | 79 ------------ .travis.yml | 162 ------------------------- ```
2020-08-17 18:56:37 +02:00
else import (builtins.fetchTarball "https://github.com/NixOS/nixpkgs/archive/${rev}.tar.gz") {}
// {
Merge of haskell-with-nixpkgs back into HNix (#681) There were 668 commits which got squashed: * CI: Travis: env: global: rev: upd: note for haskell-update branch M .travis.yml * CI: Travis: build.sh: BUILD_PROJECT: *Optparse*Completion: upd: directional note M build.sh * Travis: Add CI job with linux and GHC-8.4.4 (#603) GHC 8.4 is still widely used, so it's good to check compatibility with it. * Fix CI builds on internal branches (#604) * CI: Travis: rm cache | Builds 2X times faster without Travis cache M .travis.yml * CI: Travis: build.sh: mv `set` declaration | fx master CI statuses M .travis.yml M build.sh * default.nix: make GHC 8.8.3 default M default.nix * default.nix: rm allowUnfree - there is none M default.nix * default.nix: add haskell.lib profiling options explicitly Integrates with CI. M default.nix * default.nix: add flags {doCheck,doHaddock,doCoverage} M default.nix * CI: Travis: build.sh: init CACHIX_SIGNING_KEY with default empty value Due to new strict `set` rules `if` statement check agains empty variable was failing the build, this fixes builds in PRs. ...sigh. M build.sh * default.nix: expose more features of `haskell.lib` API M default.nix * default.nix: add docs to the exposed haskell.lib options M default.nix * CI: build.sh: rm empty args from nix-build M build.sh * CI: build.sh: update Nix after its installation Nix that installs through Nix installer is 2.0.4. Current Nix release is 2.3.5. To to have a less of old bugs, and more of new bugs - Nix after installation needs an update right away. Old Nix literally prevented importing Nix channels on Linux Nix installations. M build.sh * default.nix: to allow use of current channels remove hash guarding M default.nix * default.nix: set `rev` default to `nixpkgs-unstable` M default.nix * default.nix: for import form separate explicit override set M default.nix * default.nix: add if useRev - then use rev, else use <nixpkgs> M default.nix * CI: build.sh: MAIN: add the channel update M build.sh * default.nix: default enableDeadCodeElimination to false | GHC macOS build bug M default.nix * default.nix: off enableSharedExecutables | rare feature, not passes macOS tests This feature seems to enable binaries as also a dynamic library, with is a rare and largely unknown feature, and it not used. Since it is unexpected optional rare not standard feature - turn it off by default. M default.nix * default.nix: expose additional part of Nixpkgs haskell.lib API M default.nix * default.nix: m doc upd M default.nix * default.nix: upd docs for Header.lib args in headers, sort Providing docs to them and sort them roughly in order of their application/stage M default.nix * default.nix: abstract the developPackage into value M default.nix * default.nix: package: sort inherited Haskell.lib args, provide doc M default.nix * default.nix: add option enableSeparateBinOutput M default.nix * default.nix: allow apply composition over the package M default.nix * default.nix: allow apply composition over the package M default.nix * default.nix: expose functionality: sdistTarball; add doc M default.nix * default.nix: expose functionality: buildFromSdist; add doc M default.nix * default.nix: expose functionality: failOnAllWarnings; add doc M default.nix * default.nix: expose functionality: buildStrictly; add doc M default.nix * default.nix: expose functionality: disableOptimization; add doc M default.nix * default.nix: expose functionality: linkWithGold; add doc M default.nix * default.nix: expose functionality: enableDWARFDebugging; add doc M default.nix * default.nix: expose functionality: doJailbreak Argument was already exposed in the header M default.nix * default.nix: expose functionality: doStrip Argument and doc was already provided in the header M default.nix * default.nix: expose functionality: justStaticExecutables Argument and doc was already provided in the header. M default.nix * default.nix: expose functionality: checkUnusedPackages; provide doc M default.nix * default.nix: expose functionality: gen*Optparse*Completion; provide doc M default.nix * default.nix: expose functionality: doHyperlinkSource; provide doc M default.nix * default.nix: rm doStrict (superceeded by failOnAllWarnings) M default.nix * default.nix: rm doOptimize (superceeded by disableOptimizations) M default.nix * default.nix: doc: add to header args M default.nix * default.nix: doc: add to body (functions fold and composePackage) M default.nix * default.nix: doc: add beginning doc and link to lib for more info on options M default.nix * CI: Travis: add Nix packages upd M .travis.yml * CI: Travis: fix Cachix nix-env install rights menegement The Cachix suddenly started to fall with: ``` $ nix-env -iA cachix -f https://cachix.org/api/v1/install error: creating directory '/Users/travis/.cache/nix/tarballs': Permission denied The command "nix-env -iA cachix -f https://cachix.org/api/v1/install" exited with 1. ``` There are changes to macOS procedures, Nix updated to 2.2, and Cachix has big upstream changes for macOS processes. So fixing rights management in this way. M .travis.yml * CI: Travis: rm sleep 2 - redundant Anyway it takes 30s-1m to the nix-build. M .travis.yml * CI: Travis: add HACK to fix reload Nix-daemon after Nix update 2.0 -> 2.2 M .travis.yml * CI: Travis: explicitly state the builds M .travis.yml * CI: Travis: env: rm jobs matrix M .travis.yml * CI: Travis: rm `os:` and `dist:`, since they are explicitly put below M .travis.yml * CI: Travis: enable strict build in GHC 8.6.5 M .travis.yml * CI: Travis: upd explicit build names M .travis.yml * CI: Travis: make GHC 8.10 mandatory M .travis.yml * CI: Travis: move SDist check to GHC 8.10 M .travis.yml * CI: .travis.tml: clean-up Since conf no longer multiplies rows into matrix, but provides it explitly, exclusions not needed. M .travis.yml * CI: make generate*Complettions work and accept a list of executables M .travis.yml M build.sh M default.nix * CI: rm buildStackProject, it does not work that way, and better to use real stack M .travis.yml M build.sh * default.nix: clean-up docs M default.nix * build.sh: default to GHC 8.10 M build.sh * build.sh: sort the options into logical order M build.sh * build.sh: provide docs to options M build.sh * build.sh: add disclamer for options M build.sh * build.sh: add more options and their docs M build.sh * build.sh: add new options into the build commands M build.sh * CI: .travis.yml: use linkWithGold in Linux builds, a bit faster builds M .travis.yml * CI: .travis.yml: GHC 8.10: add Haddock, optimize, Benchmark, Shell Complettions M .travis.yml * build.sh: rm `pkgName` (not used), return `name` - used by Cachix M build.sh * Silence redundant import warnings for Control.Monad.Fail (#633) Also address mysterious redundant import warnings in the testsuite This allows us to enable `buildStrictly=true` for GHC 8.8. Fixes #613. * default.nix: clean-up no longer relevant commented-out code buildInputs populated automatically. Environment overloads we can do any time, no need to keep trivial code commented. There is no AWS S3 use. If we would need we would write new deployment implementation outside of `default.nix` using actual NixOps. * CI: .travis.yml: rm Strict from GHC 8.6.5 M .travis.yml * CI: .travis.yml: properly name GHC 8.8.3 macOS as Strict M .travis.yml * CI: .travis.yml: add explicit quotes M .travis.yml * CI: .travis.yml: add description to the channels M .travis.yml * CI: .travis.yml: add description for executableNamesToShellComplete M .travis.yml * default.nix: filter package root with nix-gitignore so we don't copy stuff like `dist-newstyle`. * CI: .travis.yml: add the disclaimer M .travis.yml * CI: mv rev doc (.travis.yml->build.sh) M .travis.yml M build.sh * CI: build.sh: upd disclaimer M build.sh * CI: build.sh: add setting section disclaimer M build.sh * CI: build.sh: upd NIX_PATH doc M .travis.yml M build.sh * CI: .travis.yml: reduce not used pkgName getOptParseApplicativeComplettions does not need it M .travis.yml * CI: {.travis.yml,build.sh}: rename (name->project) more unique and descriptive M .travis.yml M build.sh * CI: {.travis.yml,build.sh}: merge documentation into buildh.sh M .travis.yml M build.sh * CI: .travis.yml: rm NOTEs from less important explanations M .travis.yml * CI: .travis.yml: {add,set,sort} features from `build.sh` explicitly M .travis.yml * CI: build.sh: mv doHyperlinkSource into logical place M build.sh * CI: .travis.yml: upd the disclaimer M .travis.yml * CI: .travis.yml: rm ALL_TESTS, since it does not work for nix-build and also just plainly does not passes itself, so it is useless in CI build setup M .travis.yml * CI: .travis.yml: upd CACHIX_SIGNING_KEY explanation M .travis.yml * CI: .travis.yml: GHC 8.10: add Haddock and sources hyperlinking M .travis.yml * CI: {.travis.yml,build.sh}: rename (GHCVERSION->compiler) M .travis.yml M build.sh * CI: default.nix: add `compiler` explanation M default.nix * CI: {.travis.yml,build.sh}: upd: make conf work with new Nix installer M .travis.yml M build.sh * CI: .travis.yml: rm irrelevant remount M .travis.yml * CI: {build.sh,default.nix}: upd settings structure, upd descriptions M build.sh M default.nix * CI: default.nix: upd header disclamer M build.sh * CI: mv rev doc (build.sh->default.nix) M build.sh M default.nix * CI: merge docs (build.sh->default.nix) M build.sh M default.nix * CI: build.sh: rm most of NOTE tags M build.sh * CI: .travis.yml: rm Nix updates After refactoring they are right beside/before build.sh Nix updates, so this update can be reduced. M .travis.yml * CI: .travis.yml: upd service restart Since service is not touched the daemon-reload is probably not needed, restart is sufficient. M .travis.yml * CI: build.sh: add report of Nixpkgs channel revision Since Nix and Nixpkgs channel were just updated and build is next - report the revision. M build.sh * default.nix: use dummy package name * default.nix: upd rephrase * default.nix: upd rephrase M default.nix * default.nix: add explanation M default.nix * default.nix: clean-up M default.nix * default.nix: upd M default.nix * default.nix: upd M default.nix * default.nix: add explanation M default.nix * add initial .github/workflows/test.yml * M .github/workflows/test.yml * test.yml: upd name: (Test->CI) M .github/workflows/test.yml * test.yml: add env of Nixpkgs Haskell Lib from HNix M .github/workflows/test.yml * test.yml: (nix-build->./build.sh) M .github/workflows/test.yml * test.yml: upd update of Nix to update all Nix installed packages M build.sh * test.yml: jobs: tests->Basic_build M .github/workflows/test.yml * {test.yml,build.sh}: project: hnix->replaceWithProjectNameInCachix M .github/workflows/test.yml M build.sh * {test.yml,build.sh}: executableNames..Complete: hnix->replaceWith... M .github/workflows/test.yml M build.sh * test.yml: jobs: Basic_build: name the steps M .github/workflows/test.yml * build.sh: compiler: add explanation M build.sh * default.nix: compiler: mv explanation M build.sh M default.nix * test.yml: m upd M .github/workflows/test.yml * test.yml: trigger CI on push to master, track only PRs| trigger build once M .github/workflows/test.yml * Simplify step names M .github/workflows/test.yml * GitHub CI: add Linux_GHC-8-10 M .github/workflows/test.yml * GitHub CI: add Linux_GHCJS M .github/workflows/test.yml * GitHub CI: add macOS_default M .github/workflows/test.yml * GitHub CI: Nixpkgs: disable withHoogle M .github/workflows/test.yml * GitHub CI: add Hackage_Cabal M .github/workflows/test.yml * GitHub CI: Hackage_Cabal: add cabal v2-configure M .github/workflows/test.yml * GitHub CI: Hackage_Cabal: add cabal v2-build M .github/workflows/test.yml * GitHub CI: Hackage_Cabal: add cabal v2-test M .github/workflows/test.yml * .github/workflows/(test->main).yml R .github/workflows/test.yml -> .github/workflows/main.yml * builds: rname project->cachixAccount M .github/workflows/main.yml M build.sh * .travis.yml: add withHoogle=false for CI builds M .travis.yml * .travis.yml: group cachix conf M .travis.yml * GitHub CI: add name tags to builds M .github/workflows/main.yml * GitHub CI: Nixpkgs custom build: add customization M .github/workflows/main.yml * builds: pass-through useRev M .github/workflows/main.yml M build.sh M default.nix * builds: use rev M .github/workflows/main.yml * GitHub CI: add Nixpkgs_stable_Linux M .github/workflows/main.yml * build.sh: provide a NIX_PATH change if rev is chosen M build.sh * GitHub CI: add build schedule M .github/workflows/main.yml * GitHub CI: add explanations M .github/workflows/main.yml * GitHub CI: make all builds optional M .github/workflows/main.yml * name Hackage_Cabal M .github/workflows/main.yml * GitHub CI: Nixpkgs_unstable_macOS: upd M .github/workflows/main.yml * build.sh: rm NIX_PATH setup| default.nix solves it internally M build.sh * build.sh: short-curcuit the Nix tools update M build.sh * add .github/workflows/Cabal-Linux.yml * mv Hackage_Cabal build main->Cabal-Linux.yml M .github/workflows/Cabal-Linux.yml M .github/workflows/main.yml * Cabal-Linux.yml: add schedule M .github/workflows/Cabal-Linux.yml * main.yml: switch all Nix installer nix_path to nixos-unstable M .github/workflows/main.yml * main.yml: rm all Nix installer nix_path resetting to default M .github/workflows/main.yml * GitHub CI: workflow: add macOS, mv job into it A .github/workflows/Nixpkgs-macOS.yml M .github/workflows/main.yml * GitHub CI: workflow: Nixpkgs-macOS: add triggers and shedule M .github/workflows/Nixpkgs-macOS.yml * GitHub CI: workflow: Nixpkgs-macOS: m build rename M .github/workflows/Nixpkgs-macOS.yml * GitHub CI: workflow: Nixpkgs-GHCJS: mv build in A .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/main.yml * GitHub CI: workflow: main: rm withHoogle overload since it is redundant M .github/workflows/main.yml * GitHub CI: workflow: main: (CI->Nixpkgs, Linux) M .github/workflows/main.yml * GitHub CI: workflow: main: linkWithGold M .github/workflows/main.yml * GitHub CI: workflow: main: upd build ids M .github/workflows/main.yml * GitHub CI: workflow: main: upd build names M .github/workflows/main.yml * GitHub CI: workflow: main: add NixOS-unstable Strict build M .github/workflows/main.yml * GitHub CI: workflow: main: upd build names M .github/workflows/main.yml * GitHub CI: workflow: main: add build GHC 8.6.5 M .github/workflows/main.yml * GitHub CI: workflow: main: add build GHC 8.4.4 M .github/workflows/main.yml * GitHub CI: workflow: main: upd build name M .github/workflows/main.yml * GitHub CI: workflow: main: upd build names, wrap in " M .github/workflows/main.yml * GitHub CI: main: upd name: add GHC for GitHub CI to not mix-in GHCJS M .github/workflows/main.yml * GitHub CI: workflow: mv (main->Nixpkgs-GHC-Linux).yml R .github/workflows/main.yml -> .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: mv Quality build M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: m rname builds M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: m rename of the build M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: Quality build: add nix-shell test M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: add denotation towards main examples M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: Quality build: fx nix-shell command M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: mv Nixpkgs-(GHC-->)Linux.yml R .github/workflows/Nixpkgs-GHC-Linux.yml -> .github/workflows/Nixpkgs-Linux.yml * GitHub CI: workflow: GHCJS: clean-up M .github/workflows/Nixpkgs-GHCJS.yml * GitHub CI: workflow: GHCJS: use nixos-unstable rev M .github/workflows/Nixpkgs-GHCJS.yml * GitHub CI: workflow: GHCJS: use linkWithGold M .github/workflows/Nixpkgs-GHCJS.yml * R .github/workflows/Nixpkgs-Linux.yml -> .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: Nixpgs, Linux: recommend nixos-unstable M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: Nixpgs, Linux: recommend test for nixos-20.03 stable M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: mv additiona builds into Nixpgs-Linux-additional A .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: rname workflows M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: make main builds mandatory M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: make build not strict, to not scare off people ;) M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: make Nix-shell into a separate test M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Nix-shell: from the hip nix-shell'ing M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Nix-shell: add separate Hoogle test M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: rename GHCJS M .github/workflows/Nixpkgs-GHCJS.yml * GitHub CI: workflow: main: prettify M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: fx Nix-shell test M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: rename Nix-shell build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: m upd M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Nix-shell build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Quality build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd NixOS stable build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd disclaimer M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: upd steps to "Determined Nix-build" M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml * GitHub CI: workflow: main: upd Hoogle step name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: m upd M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Hoogle step name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Hoogle build name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Basic build name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: add explicit nixos-unstable M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Basic: add nixos-unstable explanation M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Nix-shell: use pure shell (*sic) M .github/workflows/Nixpkgs-Linux-main.yml * default.nix: abstract over package root| now able to manage monorepos * default.nix: abstract over package name| full support of monorepos M default.nix * build.sh: passthrough package{Name,Root} into default.nix * {default.nix,build.sh}: (package->cabal)Name end explanation * CI: Nixpkgs-Linux-main: add template for monorepo matrix * CI: Cabal-Linux: add template for monorepo matrix * D ghcjs/default.nix * Nixpkgs-macOS: mv env attrset * CI: Nixpkgs workflows: use haskell-with-nixpkgs cachix account M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml M .travis.yml * CI: Nixpkgs workflows: provide CACHIX_SIGNING_KEY M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml M .travis.yml * CI: GitHub: Nixpkgs workflows: Cachix action, provide account to it M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml * CI: GitHub: Nixpkgs-Linux-main: quality build: upd name * CI: GitHub: add submodule recursion to checkouts M .github/workflows/Cabal-Linux.yml M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml * CI: GitHub: Cabal-Linux: provide libsodium * default.nix: upd neat-interpolation override * build.sh: clean-up rm redundant settings, since default.nix is the main API propagation point * default.nix: set proper cabalName * CI: switch back to HNix Cachix account M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml M .travis.yml * .travis.yml: switch back to HNix Cachix account secret * default.nix: upd GHC to 8.8.4 * CI: update GHC 8.8.(3->4) Also dropping minor numbers from build names for bravity of tracking Nixpkgs M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .travis.yml * CI: rm Nixpkgs GHC 8.4.4 builds 8.4.4 support is removed from Nixpkgs M .github/workflows/Nixpkgs-Linux-additional.yml M .travis.yml * CI: Cabal-Linux: add GHC 8.4 build Since Nixpkgs removed 8.4, adding it to Hackage builds. * CI: Cabal-Linux: enable tests in configuration M .github/workflows/Cabal-Linux.yml * CI: Cabal-Linux: clean-up M .github/workflows/Cabal-Linux.yml * CI: Cabal-Linux: add Nix installation, instantiate still required for tests M .github/workflows/Cabal-Linux.yml * CI: Cabal-Linux: make builds pass mandatory * CI: Nixpkgs-Linux-main: make all builds optional Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: https://github.com/haskell-nix/hnix/pull/681#discussion_r463983376 * CI: Nixpkgs-Linux-main: make all builds optional cache builders Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: https://github.com/haskell-nix/hnix/pull/681#discussion_r463983376 CI: Travis: fx optional builds CI: Nixpkgs-Linux-main: make all builds optional Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: https://github.com/haskell-nix/hnix/pull/681#discussion_r463983376 CI: Travis: fx optional builds * CI: Travis: enable fast skip See: https://github.com/haskell-nix/hnix/pull/681#discussion_r463996365 M .travis.yml * CI: Travis: add "bypass" to keep CI green, send cache gen to background M .travis.yml * CI: Nixpkgs-Linux-main: proper executable name to shell complete * CI: Nixpkgs-Linux-main: Quality build: add shell completion test M .github/workflows/Nixpkgs-Linux-main.yml * CI: Nixpkgs-Linux-main: default build: add strict build M .github/workflows/Nixpkgs-Linux-main.yml * CI: Nixpkgs-GHCJS: print log tail * CI: Nixpkgs-GHCJS: turn-off build which is not persued Co-authored-by: Simon Jakobi <simon.jakobi@gmail.com> Co-authored-by: Richard Marko <srk@48.io>
2020-08-03 19:25:22 +02:00
# Try to build dependencies even if they are marked broken.
config.allowBroken = true;
}
2018-11-22 20:21:06 +01:00
, mkDerivation ? null
}:
2018-04-07 01:23:24 +02:00
2019-03-10 01:55:31 +01:00
let
Merge update from `haskell-with-nixpkgs` * "rev" "default" tracks local default Nixpkgs channel. * "compiler" "default" tracks default Nixpkgs GHC compiler. * Properly providing secret to the GitHub CI workflows. * Clean-up. * Project freed form reliance on Travis CI. * Removing unmaintained GHCJS build, in favor for the further move to Haskell to WebAssembly compilation. --- In terms of the fish shell the rebase merge is done in this way: ```fish set -l tmpDir "$HOME/src/tmp" set -l sourceDir 'haskell-with-nixpkgs' set -l sourceUrl "git@github.com:haskell-nix/$sourceDir.git" set -l masterDir 'hnix' set -l masterUrl "git@github.com:haskell-nix/$masterDir.git" set -l fileList \ default.nix \ build.sh \ ghcjs-build.sh \ Cabal-Linux.yml \ Nixpkgs-GHCJS.yml \ Nixpkgs-Linux-additional.yml \ Nixpkgs-Linux-maim.yml \ Nixpkgs-macOS.yml mkdir -p "$tmpDir" rm -rf "$tmpDir/$sourceDir" rm -rf "$tmpDir/$masterDir" cd "$tmpDir" git clone "$sourceUrl" "$sourceDir" cd "$sourceDir" git-pass-filter $fileList cd "$tmpDir" git clone "$masterUrl" "$masterDir" cd "$masterDir" git checkout -b upd-from-"$sourceDir" git remote add hn "$tmpDir/$sourceDir" git fetch hn master git merge -S --allow-unrelated-histories hn/master ``` --- ```log 10 files changed, 42 insertions(+), 401 deletions(-) .github/workflows/Cabal-Linux.yml | 4 - .github/workflows/Nixpkgs-Linux-main.yml | 12 +- .github/workflows/Nixpkgs-Linux-additional.yml | 4 +- .github/workflows/Nixpkgs-macOS.yml | 5 +- default.nix | 33 +++-- build.sh | 97 ++------------- .github/workflows/Nixpkgs-GHCJS-turned-off | 45 ------- ghcjs/nix.conf | 2 - ghcjs/default.nix | 79 ------------ .travis.yml | 162 ------------------------- ```
2020-08-17 18:56:37 +02:00
getDefaultGHC = "ghc${
(
# Remove '.' from the string 8.8.4 -> 884
pkgs.lib.stringAsChars (c: if c == "." then "" else c)
# Get default GHC version,
(pkgs.lib.getVersion pkgs.haskellPackages.ghc)
)
}";
compilerPackage =
if ((compiler == "") || (compiler == "default"))
then getDefaultGHC
else compiler;
# 2020-05-23: NOTE: Currently HNix-store needs no overlay
# hnix-store-src = pkgs.fetchFromGitHub {
# owner = "haskell-nix";
# repo = "hnix-store";
# rev = "0.2.0.0";
# sha256 = "1qf5rn43d46vgqqgmwqdkjh78rfg6bcp4kypq3z7mx46sdpzvb78";
# };
2019-03-10 01:55:31 +01:00
overlay = pkgs.lib.foldr pkgs.lib.composeExtensions (_: _: {}) [
# (import "${hnix-store-src}/overlay.nix")
Merge update from `haskell-with-nixpkgs` * "rev" "default" tracks local default Nixpkgs channel. * "compiler" "default" tracks default Nixpkgs GHC compiler. * Properly providing secret to the GitHub CI workflows. * Clean-up. * Project freed form reliance on Travis CI. * Removing unmaintained GHCJS build, in favor for the further move to Haskell to WebAssembly compilation. --- In terms of the fish shell the rebase merge is done in this way: ```fish set -l tmpDir "$HOME/src/tmp" set -l sourceDir 'haskell-with-nixpkgs' set -l sourceUrl "git@github.com:haskell-nix/$sourceDir.git" set -l masterDir 'hnix' set -l masterUrl "git@github.com:haskell-nix/$masterDir.git" set -l fileList \ default.nix \ build.sh \ ghcjs-build.sh \ Cabal-Linux.yml \ Nixpkgs-GHCJS.yml \ Nixpkgs-Linux-additional.yml \ Nixpkgs-Linux-maim.yml \ Nixpkgs-macOS.yml mkdir -p "$tmpDir" rm -rf "$tmpDir/$sourceDir" rm -rf "$tmpDir/$masterDir" cd "$tmpDir" git clone "$sourceUrl" "$sourceDir" cd "$sourceDir" git-pass-filter $fileList cd "$tmpDir" git clone "$masterUrl" "$masterDir" cd "$masterDir" git checkout -b upd-from-"$sourceDir" git remote add hn "$tmpDir/$sourceDir" git fetch hn master git merge -S --allow-unrelated-histories hn/master ``` --- ```log 10 files changed, 42 insertions(+), 401 deletions(-) .github/workflows/Cabal-Linux.yml | 4 - .github/workflows/Nixpkgs-Linux-main.yml | 12 +- .github/workflows/Nixpkgs-Linux-additional.yml | 4 +- .github/workflows/Nixpkgs-macOS.yml | 5 +- default.nix | 33 +++-- build.sh | 97 ++------------- .github/workflows/Nixpkgs-GHCJS-turned-off | 45 ------- ghcjs/nix.conf | 2 - ghcjs/default.nix | 79 ------------ .travis.yml | 162 ------------------------- ```
2020-08-17 18:56:37 +02:00
(self: super:
pkgs.lib.optionalAttrs withHoogle {
2019-03-10 01:55:31 +01:00
ghc = super.ghc // { withPackages = super.ghc.withHoogle; };
ghcWithPackages = self.ghc.withPackages;
})
];
overrideHaskellPackages = orig: {
buildHaskellPackages =
orig.buildHaskellPackages.override overrideHaskellPackages;
overrides = if orig ? overrides
then pkgs.lib.composeExtensions orig.overrides overlay
else overlay;
};
Merge update from `haskell-with-nixpkgs` * "rev" "default" tracks local default Nixpkgs channel. * "compiler" "default" tracks default Nixpkgs GHC compiler. * Properly providing secret to the GitHub CI workflows. * Clean-up. * Project freed form reliance on Travis CI. * Removing unmaintained GHCJS build, in favor for the further move to Haskell to WebAssembly compilation. --- In terms of the fish shell the rebase merge is done in this way: ```fish set -l tmpDir "$HOME/src/tmp" set -l sourceDir 'haskell-with-nixpkgs' set -l sourceUrl "git@github.com:haskell-nix/$sourceDir.git" set -l masterDir 'hnix' set -l masterUrl "git@github.com:haskell-nix/$masterDir.git" set -l fileList \ default.nix \ build.sh \ ghcjs-build.sh \ Cabal-Linux.yml \ Nixpkgs-GHCJS.yml \ Nixpkgs-Linux-additional.yml \ Nixpkgs-Linux-maim.yml \ Nixpkgs-macOS.yml mkdir -p "$tmpDir" rm -rf "$tmpDir/$sourceDir" rm -rf "$tmpDir/$masterDir" cd "$tmpDir" git clone "$sourceUrl" "$sourceDir" cd "$sourceDir" git-pass-filter $fileList cd "$tmpDir" git clone "$masterUrl" "$masterDir" cd "$masterDir" git checkout -b upd-from-"$sourceDir" git remote add hn "$tmpDir/$sourceDir" git fetch hn master git merge -S --allow-unrelated-histories hn/master ``` --- ```log 10 files changed, 42 insertions(+), 401 deletions(-) .github/workflows/Cabal-Linux.yml | 4 - .github/workflows/Nixpkgs-Linux-main.yml | 12 +- .github/workflows/Nixpkgs-Linux-additional.yml | 4 +- .github/workflows/Nixpkgs-macOS.yml | 5 +- default.nix | 33 +++-- build.sh | 97 ++------------- .github/workflows/Nixpkgs-GHCJS-turned-off | 45 ------- ghcjs/nix.conf | 2 - ghcjs/default.nix | 79 ------------ .travis.yml | 162 ------------------------- ```
2020-08-17 18:56:37 +02:00
haskellPackages = pkgs.haskell.packages.${compilerPackage}.override
2019-03-10 01:55:31 +01:00
overrideHaskellPackages;
2018-07-25 20:53:48 +02:00
# Application of functions from this list to the package in code here happens in the reverse order (from the tail). Some options depend on & override others, so if enabling options caused Nix error or not expected result - change the order, and please do not change this order without proper testing.
Merge of haskell-with-nixpkgs back into HNix (#681) There were 668 commits which got squashed: * CI: Travis: env: global: rev: upd: note for haskell-update branch M .travis.yml * CI: Travis: build.sh: BUILD_PROJECT: *Optparse*Completion: upd: directional note M build.sh * Travis: Add CI job with linux and GHC-8.4.4 (#603) GHC 8.4 is still widely used, so it's good to check compatibility with it. * Fix CI builds on internal branches (#604) * CI: Travis: rm cache | Builds 2X times faster without Travis cache M .travis.yml * CI: Travis: build.sh: mv `set` declaration | fx master CI statuses M .travis.yml M build.sh * default.nix: make GHC 8.8.3 default M default.nix * default.nix: rm allowUnfree - there is none M default.nix * default.nix: add haskell.lib profiling options explicitly Integrates with CI. M default.nix * default.nix: add flags {doCheck,doHaddock,doCoverage} M default.nix * CI: Travis: build.sh: init CACHIX_SIGNING_KEY with default empty value Due to new strict `set` rules `if` statement check agains empty variable was failing the build, this fixes builds in PRs. ...sigh. M build.sh * default.nix: expose more features of `haskell.lib` API M default.nix * default.nix: add docs to the exposed haskell.lib options M default.nix * CI: build.sh: rm empty args from nix-build M build.sh * CI: build.sh: update Nix after its installation Nix that installs through Nix installer is 2.0.4. Current Nix release is 2.3.5. To to have a less of old bugs, and more of new bugs - Nix after installation needs an update right away. Old Nix literally prevented importing Nix channels on Linux Nix installations. M build.sh * default.nix: to allow use of current channels remove hash guarding M default.nix * default.nix: set `rev` default to `nixpkgs-unstable` M default.nix * default.nix: for import form separate explicit override set M default.nix * default.nix: add if useRev - then use rev, else use <nixpkgs> M default.nix * CI: build.sh: MAIN: add the channel update M build.sh * default.nix: default enableDeadCodeElimination to false | GHC macOS build bug M default.nix * default.nix: off enableSharedExecutables | rare feature, not passes macOS tests This feature seems to enable binaries as also a dynamic library, with is a rare and largely unknown feature, and it not used. Since it is unexpected optional rare not standard feature - turn it off by default. M default.nix * default.nix: expose additional part of Nixpkgs haskell.lib API M default.nix * default.nix: m doc upd M default.nix * default.nix: upd docs for Header.lib args in headers, sort Providing docs to them and sort them roughly in order of their application/stage M default.nix * default.nix: abstract the developPackage into value M default.nix * default.nix: package: sort inherited Haskell.lib args, provide doc M default.nix * default.nix: add option enableSeparateBinOutput M default.nix * default.nix: allow apply composition over the package M default.nix * default.nix: allow apply composition over the package M default.nix * default.nix: expose functionality: sdistTarball; add doc M default.nix * default.nix: expose functionality: buildFromSdist; add doc M default.nix * default.nix: expose functionality: failOnAllWarnings; add doc M default.nix * default.nix: expose functionality: buildStrictly; add doc M default.nix * default.nix: expose functionality: disableOptimization; add doc M default.nix * default.nix: expose functionality: linkWithGold; add doc M default.nix * default.nix: expose functionality: enableDWARFDebugging; add doc M default.nix * default.nix: expose functionality: doJailbreak Argument was already exposed in the header M default.nix * default.nix: expose functionality: doStrip Argument and doc was already provided in the header M default.nix * default.nix: expose functionality: justStaticExecutables Argument and doc was already provided in the header. M default.nix * default.nix: expose functionality: checkUnusedPackages; provide doc M default.nix * default.nix: expose functionality: gen*Optparse*Completion; provide doc M default.nix * default.nix: expose functionality: doHyperlinkSource; provide doc M default.nix * default.nix: rm doStrict (superceeded by failOnAllWarnings) M default.nix * default.nix: rm doOptimize (superceeded by disableOptimizations) M default.nix * default.nix: doc: add to header args M default.nix * default.nix: doc: add to body (functions fold and composePackage) M default.nix * default.nix: doc: add beginning doc and link to lib for more info on options M default.nix * CI: Travis: add Nix packages upd M .travis.yml * CI: Travis: fix Cachix nix-env install rights menegement The Cachix suddenly started to fall with: ``` $ nix-env -iA cachix -f https://cachix.org/api/v1/install error: creating directory '/Users/travis/.cache/nix/tarballs': Permission denied The command "nix-env -iA cachix -f https://cachix.org/api/v1/install" exited with 1. ``` There are changes to macOS procedures, Nix updated to 2.2, and Cachix has big upstream changes for macOS processes. So fixing rights management in this way. M .travis.yml * CI: Travis: rm sleep 2 - redundant Anyway it takes 30s-1m to the nix-build. M .travis.yml * CI: Travis: add HACK to fix reload Nix-daemon after Nix update 2.0 -> 2.2 M .travis.yml * CI: Travis: explicitly state the builds M .travis.yml * CI: Travis: env: rm jobs matrix M .travis.yml * CI: Travis: rm `os:` and `dist:`, since they are explicitly put below M .travis.yml * CI: Travis: enable strict build in GHC 8.6.5 M .travis.yml * CI: Travis: upd explicit build names M .travis.yml * CI: Travis: make GHC 8.10 mandatory M .travis.yml * CI: Travis: move SDist check to GHC 8.10 M .travis.yml * CI: .travis.tml: clean-up Since conf no longer multiplies rows into matrix, but provides it explitly, exclusions not needed. M .travis.yml * CI: make generate*Complettions work and accept a list of executables M .travis.yml M build.sh M default.nix * CI: rm buildStackProject, it does not work that way, and better to use real stack M .travis.yml M build.sh * default.nix: clean-up docs M default.nix * build.sh: default to GHC 8.10 M build.sh * build.sh: sort the options into logical order M build.sh * build.sh: provide docs to options M build.sh * build.sh: add disclamer for options M build.sh * build.sh: add more options and their docs M build.sh * build.sh: add new options into the build commands M build.sh * CI: .travis.yml: use linkWithGold in Linux builds, a bit faster builds M .travis.yml * CI: .travis.yml: GHC 8.10: add Haddock, optimize, Benchmark, Shell Complettions M .travis.yml * build.sh: rm `pkgName` (not used), return `name` - used by Cachix M build.sh * Silence redundant import warnings for Control.Monad.Fail (#633) Also address mysterious redundant import warnings in the testsuite This allows us to enable `buildStrictly=true` for GHC 8.8. Fixes #613. * default.nix: clean-up no longer relevant commented-out code buildInputs populated automatically. Environment overloads we can do any time, no need to keep trivial code commented. There is no AWS S3 use. If we would need we would write new deployment implementation outside of `default.nix` using actual NixOps. * CI: .travis.yml: rm Strict from GHC 8.6.5 M .travis.yml * CI: .travis.yml: properly name GHC 8.8.3 macOS as Strict M .travis.yml * CI: .travis.yml: add explicit quotes M .travis.yml * CI: .travis.yml: add description to the channels M .travis.yml * CI: .travis.yml: add description for executableNamesToShellComplete M .travis.yml * default.nix: filter package root with nix-gitignore so we don't copy stuff like `dist-newstyle`. * CI: .travis.yml: add the disclaimer M .travis.yml * CI: mv rev doc (.travis.yml->build.sh) M .travis.yml M build.sh * CI: build.sh: upd disclaimer M build.sh * CI: build.sh: add setting section disclaimer M build.sh * CI: build.sh: upd NIX_PATH doc M .travis.yml M build.sh * CI: .travis.yml: reduce not used pkgName getOptParseApplicativeComplettions does not need it M .travis.yml * CI: {.travis.yml,build.sh}: rename (name->project) more unique and descriptive M .travis.yml M build.sh * CI: {.travis.yml,build.sh}: merge documentation into buildh.sh M .travis.yml M build.sh * CI: .travis.yml: rm NOTEs from less important explanations M .travis.yml * CI: .travis.yml: {add,set,sort} features from `build.sh` explicitly M .travis.yml * CI: build.sh: mv doHyperlinkSource into logical place M build.sh * CI: .travis.yml: upd the disclaimer M .travis.yml * CI: .travis.yml: rm ALL_TESTS, since it does not work for nix-build and also just plainly does not passes itself, so it is useless in CI build setup M .travis.yml * CI: .travis.yml: upd CACHIX_SIGNING_KEY explanation M .travis.yml * CI: .travis.yml: GHC 8.10: add Haddock and sources hyperlinking M .travis.yml * CI: {.travis.yml,build.sh}: rename (GHCVERSION->compiler) M .travis.yml M build.sh * CI: default.nix: add `compiler` explanation M default.nix * CI: {.travis.yml,build.sh}: upd: make conf work with new Nix installer M .travis.yml M build.sh * CI: .travis.yml: rm irrelevant remount M .travis.yml * CI: {build.sh,default.nix}: upd settings structure, upd descriptions M build.sh M default.nix * CI: default.nix: upd header disclamer M build.sh * CI: mv rev doc (build.sh->default.nix) M build.sh M default.nix * CI: merge docs (build.sh->default.nix) M build.sh M default.nix * CI: build.sh: rm most of NOTE tags M build.sh * CI: .travis.yml: rm Nix updates After refactoring they are right beside/before build.sh Nix updates, so this update can be reduced. M .travis.yml * CI: .travis.yml: upd service restart Since service is not touched the daemon-reload is probably not needed, restart is sufficient. M .travis.yml * CI: build.sh: add report of Nixpkgs channel revision Since Nix and Nixpkgs channel were just updated and build is next - report the revision. M build.sh * default.nix: use dummy package name * default.nix: upd rephrase * default.nix: upd rephrase M default.nix * default.nix: add explanation M default.nix * default.nix: clean-up M default.nix * default.nix: upd M default.nix * default.nix: upd M default.nix * default.nix: add explanation M default.nix * add initial .github/workflows/test.yml * M .github/workflows/test.yml * test.yml: upd name: (Test->CI) M .github/workflows/test.yml * test.yml: add env of Nixpkgs Haskell Lib from HNix M .github/workflows/test.yml * test.yml: (nix-build->./build.sh) M .github/workflows/test.yml * test.yml: upd update of Nix to update all Nix installed packages M build.sh * test.yml: jobs: tests->Basic_build M .github/workflows/test.yml * {test.yml,build.sh}: project: hnix->replaceWithProjectNameInCachix M .github/workflows/test.yml M build.sh * {test.yml,build.sh}: executableNames..Complete: hnix->replaceWith... M .github/workflows/test.yml M build.sh * test.yml: jobs: Basic_build: name the steps M .github/workflows/test.yml * build.sh: compiler: add explanation M build.sh * default.nix: compiler: mv explanation M build.sh M default.nix * test.yml: m upd M .github/workflows/test.yml * test.yml: trigger CI on push to master, track only PRs| trigger build once M .github/workflows/test.yml * Simplify step names M .github/workflows/test.yml * GitHub CI: add Linux_GHC-8-10 M .github/workflows/test.yml * GitHub CI: add Linux_GHCJS M .github/workflows/test.yml * GitHub CI: add macOS_default M .github/workflows/test.yml * GitHub CI: Nixpkgs: disable withHoogle M .github/workflows/test.yml * GitHub CI: add Hackage_Cabal M .github/workflows/test.yml * GitHub CI: Hackage_Cabal: add cabal v2-configure M .github/workflows/test.yml * GitHub CI: Hackage_Cabal: add cabal v2-build M .github/workflows/test.yml * GitHub CI: Hackage_Cabal: add cabal v2-test M .github/workflows/test.yml * .github/workflows/(test->main).yml R .github/workflows/test.yml -> .github/workflows/main.yml * builds: rname project->cachixAccount M .github/workflows/main.yml M build.sh * .travis.yml: add withHoogle=false for CI builds M .travis.yml * .travis.yml: group cachix conf M .travis.yml * GitHub CI: add name tags to builds M .github/workflows/main.yml * GitHub CI: Nixpkgs custom build: add customization M .github/workflows/main.yml * builds: pass-through useRev M .github/workflows/main.yml M build.sh M default.nix * builds: use rev M .github/workflows/main.yml * GitHub CI: add Nixpkgs_stable_Linux M .github/workflows/main.yml * build.sh: provide a NIX_PATH change if rev is chosen M build.sh * GitHub CI: add build schedule M .github/workflows/main.yml * GitHub CI: add explanations M .github/workflows/main.yml * GitHub CI: make all builds optional M .github/workflows/main.yml * name Hackage_Cabal M .github/workflows/main.yml * GitHub CI: Nixpkgs_unstable_macOS: upd M .github/workflows/main.yml * build.sh: rm NIX_PATH setup| default.nix solves it internally M build.sh * build.sh: short-curcuit the Nix tools update M build.sh * add .github/workflows/Cabal-Linux.yml * mv Hackage_Cabal build main->Cabal-Linux.yml M .github/workflows/Cabal-Linux.yml M .github/workflows/main.yml * Cabal-Linux.yml: add schedule M .github/workflows/Cabal-Linux.yml * main.yml: switch all Nix installer nix_path to nixos-unstable M .github/workflows/main.yml * main.yml: rm all Nix installer nix_path resetting to default M .github/workflows/main.yml * GitHub CI: workflow: add macOS, mv job into it A .github/workflows/Nixpkgs-macOS.yml M .github/workflows/main.yml * GitHub CI: workflow: Nixpkgs-macOS: add triggers and shedule M .github/workflows/Nixpkgs-macOS.yml * GitHub CI: workflow: Nixpkgs-macOS: m build rename M .github/workflows/Nixpkgs-macOS.yml * GitHub CI: workflow: Nixpkgs-GHCJS: mv build in A .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/main.yml * GitHub CI: workflow: main: rm withHoogle overload since it is redundant M .github/workflows/main.yml * GitHub CI: workflow: main: (CI->Nixpkgs, Linux) M .github/workflows/main.yml * GitHub CI: workflow: main: linkWithGold M .github/workflows/main.yml * GitHub CI: workflow: main: upd build ids M .github/workflows/main.yml * GitHub CI: workflow: main: upd build names M .github/workflows/main.yml * GitHub CI: workflow: main: add NixOS-unstable Strict build M .github/workflows/main.yml * GitHub CI: workflow: main: upd build names M .github/workflows/main.yml * GitHub CI: workflow: main: add build GHC 8.6.5 M .github/workflows/main.yml * GitHub CI: workflow: main: add build GHC 8.4.4 M .github/workflows/main.yml * GitHub CI: workflow: main: upd build name M .github/workflows/main.yml * GitHub CI: workflow: main: upd build names, wrap in " M .github/workflows/main.yml * GitHub CI: main: upd name: add GHC for GitHub CI to not mix-in GHCJS M .github/workflows/main.yml * GitHub CI: workflow: mv (main->Nixpkgs-GHC-Linux).yml R .github/workflows/main.yml -> .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: mv Quality build M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: m rname builds M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: m rename of the build M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: Quality build: add nix-shell test M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: add denotation towards main examples M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: Quality build: fx nix-shell command M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: mv Nixpkgs-(GHC-->)Linux.yml R .github/workflows/Nixpkgs-GHC-Linux.yml -> .github/workflows/Nixpkgs-Linux.yml * GitHub CI: workflow: GHCJS: clean-up M .github/workflows/Nixpkgs-GHCJS.yml * GitHub CI: workflow: GHCJS: use nixos-unstable rev M .github/workflows/Nixpkgs-GHCJS.yml * GitHub CI: workflow: GHCJS: use linkWithGold M .github/workflows/Nixpkgs-GHCJS.yml * R .github/workflows/Nixpkgs-Linux.yml -> .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: Nixpgs, Linux: recommend nixos-unstable M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: Nixpgs, Linux: recommend test for nixos-20.03 stable M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: mv additiona builds into Nixpgs-Linux-additional A .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: rname workflows M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: make main builds mandatory M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: make build not strict, to not scare off people ;) M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: make Nix-shell into a separate test M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Nix-shell: from the hip nix-shell'ing M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Nix-shell: add separate Hoogle test M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: rename GHCJS M .github/workflows/Nixpkgs-GHCJS.yml * GitHub CI: workflow: main: prettify M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: fx Nix-shell test M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: rename Nix-shell build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: m upd M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Nix-shell build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Quality build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd NixOS stable build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd disclaimer M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: upd steps to "Determined Nix-build" M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml * GitHub CI: workflow: main: upd Hoogle step name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: m upd M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Hoogle step name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Hoogle build name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Basic build name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: add explicit nixos-unstable M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Basic: add nixos-unstable explanation M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Nix-shell: use pure shell (*sic) M .github/workflows/Nixpkgs-Linux-main.yml * default.nix: abstract over package root| now able to manage monorepos * default.nix: abstract over package name| full support of monorepos M default.nix * build.sh: passthrough package{Name,Root} into default.nix * {default.nix,build.sh}: (package->cabal)Name end explanation * CI: Nixpkgs-Linux-main: add template for monorepo matrix * CI: Cabal-Linux: add template for monorepo matrix * D ghcjs/default.nix * Nixpkgs-macOS: mv env attrset * CI: Nixpkgs workflows: use haskell-with-nixpkgs cachix account M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml M .travis.yml * CI: Nixpkgs workflows: provide CACHIX_SIGNING_KEY M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml M .travis.yml * CI: GitHub: Nixpkgs workflows: Cachix action, provide account to it M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml * CI: GitHub: Nixpkgs-Linux-main: quality build: upd name * CI: GitHub: add submodule recursion to checkouts M .github/workflows/Cabal-Linux.yml M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml * CI: GitHub: Cabal-Linux: provide libsodium * default.nix: upd neat-interpolation override * build.sh: clean-up rm redundant settings, since default.nix is the main API propagation point * default.nix: set proper cabalName * CI: switch back to HNix Cachix account M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml M .travis.yml * .travis.yml: switch back to HNix Cachix account secret * default.nix: upd GHC to 8.8.4 * CI: update GHC 8.8.(3->4) Also dropping minor numbers from build names for bravity of tracking Nixpkgs M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .travis.yml * CI: rm Nixpkgs GHC 8.4.4 builds 8.4.4 support is removed from Nixpkgs M .github/workflows/Nixpkgs-Linux-additional.yml M .travis.yml * CI: Cabal-Linux: add GHC 8.4 build Since Nixpkgs removed 8.4, adding it to Hackage builds. * CI: Cabal-Linux: enable tests in configuration M .github/workflows/Cabal-Linux.yml * CI: Cabal-Linux: clean-up M .github/workflows/Cabal-Linux.yml * CI: Cabal-Linux: add Nix installation, instantiate still required for tests M .github/workflows/Cabal-Linux.yml * CI: Cabal-Linux: make builds pass mandatory * CI: Nixpkgs-Linux-main: make all builds optional Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: https://github.com/haskell-nix/hnix/pull/681#discussion_r463983376 * CI: Nixpkgs-Linux-main: make all builds optional cache builders Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: https://github.com/haskell-nix/hnix/pull/681#discussion_r463983376 CI: Travis: fx optional builds CI: Nixpkgs-Linux-main: make all builds optional Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: https://github.com/haskell-nix/hnix/pull/681#discussion_r463983376 CI: Travis: fx optional builds * CI: Travis: enable fast skip See: https://github.com/haskell-nix/hnix/pull/681#discussion_r463996365 M .travis.yml * CI: Travis: add "bypass" to keep CI green, send cache gen to background M .travis.yml * CI: Nixpkgs-Linux-main: proper executable name to shell complete * CI: Nixpkgs-Linux-main: Quality build: add shell completion test M .github/workflows/Nixpkgs-Linux-main.yml * CI: Nixpkgs-Linux-main: default build: add strict build M .github/workflows/Nixpkgs-Linux-main.yml * CI: Nixpkgs-GHCJS: print log tail * CI: Nixpkgs-GHCJS: turn-off build which is not persued Co-authored-by: Simon Jakobi <simon.jakobi@gmail.com> Co-authored-by: Richard Marko <srk@48.io>
2020-08-03 19:25:22 +02:00
listSwitchFunc =
[
{
switch = sdistTarball;
function = pkgs.haskell.lib.sdistTarball;
}
{
switch = buildFromSdist;
function = pkgs.haskell.lib.buildFromSdist;
}
{
switch = buildStrictly;
function = pkgs.haskell.lib.buildStrictly;
}
{
switch = disableOptimization;
function = pkgs.haskell.lib.disableOptimization;
}
{
switch = doJailbreak;
function = pkgs.haskell.lib.doJailBreak;
}
{
switch = doStrip;
function = pkgs.haskell.lib.doStrip;
}
{
switch = enableDWARFDebugging;
function = pkgs.haskell.lib.enableDWARFDebugging;
}
{
switch = linkWithGold;
function = pkgs.haskell.lib.linkWithGold;
}
{
switch = failOnAllWarnings;
function = pkgs.haskell.lib.failOnAllWarnings;
}
{
switch = justStaticExecutables;
function = pkgs.haskell.lib.justStaticExecutables;
}
{
switch = checkUnusedPackages;
function = pkgs.haskell.lib.checkUnusedPackages {};
}
{
switch = generateOptparseApplicativeCompletions;
function = pkgs.haskell.lib.generateOptparseApplicativeCompletions executableNamesToShellComplete;
}
{
switch = doHyperlinkSource;
function = pkgs.haskell.lib.doHyperlinkSource;
}
];
# Function that applies enabled option to the package, used in the fold.
Merge of haskell-with-nixpkgs back into HNix (#681) There were 668 commits which got squashed: * CI: Travis: env: global: rev: upd: note for haskell-update branch M .travis.yml * CI: Travis: build.sh: BUILD_PROJECT: *Optparse*Completion: upd: directional note M build.sh * Travis: Add CI job with linux and GHC-8.4.4 (#603) GHC 8.4 is still widely used, so it's good to check compatibility with it. * Fix CI builds on internal branches (#604) * CI: Travis: rm cache | Builds 2X times faster without Travis cache M .travis.yml * CI: Travis: build.sh: mv `set` declaration | fx master CI statuses M .travis.yml M build.sh * default.nix: make GHC 8.8.3 default M default.nix * default.nix: rm allowUnfree - there is none M default.nix * default.nix: add haskell.lib profiling options explicitly Integrates with CI. M default.nix * default.nix: add flags {doCheck,doHaddock,doCoverage} M default.nix * CI: Travis: build.sh: init CACHIX_SIGNING_KEY with default empty value Due to new strict `set` rules `if` statement check agains empty variable was failing the build, this fixes builds in PRs. ...sigh. M build.sh * default.nix: expose more features of `haskell.lib` API M default.nix * default.nix: add docs to the exposed haskell.lib options M default.nix * CI: build.sh: rm empty args from nix-build M build.sh * CI: build.sh: update Nix after its installation Nix that installs through Nix installer is 2.0.4. Current Nix release is 2.3.5. To to have a less of old bugs, and more of new bugs - Nix after installation needs an update right away. Old Nix literally prevented importing Nix channels on Linux Nix installations. M build.sh * default.nix: to allow use of current channels remove hash guarding M default.nix * default.nix: set `rev` default to `nixpkgs-unstable` M default.nix * default.nix: for import form separate explicit override set M default.nix * default.nix: add if useRev - then use rev, else use <nixpkgs> M default.nix * CI: build.sh: MAIN: add the channel update M build.sh * default.nix: default enableDeadCodeElimination to false | GHC macOS build bug M default.nix * default.nix: off enableSharedExecutables | rare feature, not passes macOS tests This feature seems to enable binaries as also a dynamic library, with is a rare and largely unknown feature, and it not used. Since it is unexpected optional rare not standard feature - turn it off by default. M default.nix * default.nix: expose additional part of Nixpkgs haskell.lib API M default.nix * default.nix: m doc upd M default.nix * default.nix: upd docs for Header.lib args in headers, sort Providing docs to them and sort them roughly in order of their application/stage M default.nix * default.nix: abstract the developPackage into value M default.nix * default.nix: package: sort inherited Haskell.lib args, provide doc M default.nix * default.nix: add option enableSeparateBinOutput M default.nix * default.nix: allow apply composition over the package M default.nix * default.nix: allow apply composition over the package M default.nix * default.nix: expose functionality: sdistTarball; add doc M default.nix * default.nix: expose functionality: buildFromSdist; add doc M default.nix * default.nix: expose functionality: failOnAllWarnings; add doc M default.nix * default.nix: expose functionality: buildStrictly; add doc M default.nix * default.nix: expose functionality: disableOptimization; add doc M default.nix * default.nix: expose functionality: linkWithGold; add doc M default.nix * default.nix: expose functionality: enableDWARFDebugging; add doc M default.nix * default.nix: expose functionality: doJailbreak Argument was already exposed in the header M default.nix * default.nix: expose functionality: doStrip Argument and doc was already provided in the header M default.nix * default.nix: expose functionality: justStaticExecutables Argument and doc was already provided in the header. M default.nix * default.nix: expose functionality: checkUnusedPackages; provide doc M default.nix * default.nix: expose functionality: gen*Optparse*Completion; provide doc M default.nix * default.nix: expose functionality: doHyperlinkSource; provide doc M default.nix * default.nix: rm doStrict (superceeded by failOnAllWarnings) M default.nix * default.nix: rm doOptimize (superceeded by disableOptimizations) M default.nix * default.nix: doc: add to header args M default.nix * default.nix: doc: add to body (functions fold and composePackage) M default.nix * default.nix: doc: add beginning doc and link to lib for more info on options M default.nix * CI: Travis: add Nix packages upd M .travis.yml * CI: Travis: fix Cachix nix-env install rights menegement The Cachix suddenly started to fall with: ``` $ nix-env -iA cachix -f https://cachix.org/api/v1/install error: creating directory '/Users/travis/.cache/nix/tarballs': Permission denied The command "nix-env -iA cachix -f https://cachix.org/api/v1/install" exited with 1. ``` There are changes to macOS procedures, Nix updated to 2.2, and Cachix has big upstream changes for macOS processes. So fixing rights management in this way. M .travis.yml * CI: Travis: rm sleep 2 - redundant Anyway it takes 30s-1m to the nix-build. M .travis.yml * CI: Travis: add HACK to fix reload Nix-daemon after Nix update 2.0 -> 2.2 M .travis.yml * CI: Travis: explicitly state the builds M .travis.yml * CI: Travis: env: rm jobs matrix M .travis.yml * CI: Travis: rm `os:` and `dist:`, since they are explicitly put below M .travis.yml * CI: Travis: enable strict build in GHC 8.6.5 M .travis.yml * CI: Travis: upd explicit build names M .travis.yml * CI: Travis: make GHC 8.10 mandatory M .travis.yml * CI: Travis: move SDist check to GHC 8.10 M .travis.yml * CI: .travis.tml: clean-up Since conf no longer multiplies rows into matrix, but provides it explitly, exclusions not needed. M .travis.yml * CI: make generate*Complettions work and accept a list of executables M .travis.yml M build.sh M default.nix * CI: rm buildStackProject, it does not work that way, and better to use real stack M .travis.yml M build.sh * default.nix: clean-up docs M default.nix * build.sh: default to GHC 8.10 M build.sh * build.sh: sort the options into logical order M build.sh * build.sh: provide docs to options M build.sh * build.sh: add disclamer for options M build.sh * build.sh: add more options and their docs M build.sh * build.sh: add new options into the build commands M build.sh * CI: .travis.yml: use linkWithGold in Linux builds, a bit faster builds M .travis.yml * CI: .travis.yml: GHC 8.10: add Haddock, optimize, Benchmark, Shell Complettions M .travis.yml * build.sh: rm `pkgName` (not used), return `name` - used by Cachix M build.sh * Silence redundant import warnings for Control.Monad.Fail (#633) Also address mysterious redundant import warnings in the testsuite This allows us to enable `buildStrictly=true` for GHC 8.8. Fixes #613. * default.nix: clean-up no longer relevant commented-out code buildInputs populated automatically. Environment overloads we can do any time, no need to keep trivial code commented. There is no AWS S3 use. If we would need we would write new deployment implementation outside of `default.nix` using actual NixOps. * CI: .travis.yml: rm Strict from GHC 8.6.5 M .travis.yml * CI: .travis.yml: properly name GHC 8.8.3 macOS as Strict M .travis.yml * CI: .travis.yml: add explicit quotes M .travis.yml * CI: .travis.yml: add description to the channels M .travis.yml * CI: .travis.yml: add description for executableNamesToShellComplete M .travis.yml * default.nix: filter package root with nix-gitignore so we don't copy stuff like `dist-newstyle`. * CI: .travis.yml: add the disclaimer M .travis.yml * CI: mv rev doc (.travis.yml->build.sh) M .travis.yml M build.sh * CI: build.sh: upd disclaimer M build.sh * CI: build.sh: add setting section disclaimer M build.sh * CI: build.sh: upd NIX_PATH doc M .travis.yml M build.sh * CI: .travis.yml: reduce not used pkgName getOptParseApplicativeComplettions does not need it M .travis.yml * CI: {.travis.yml,build.sh}: rename (name->project) more unique and descriptive M .travis.yml M build.sh * CI: {.travis.yml,build.sh}: merge documentation into buildh.sh M .travis.yml M build.sh * CI: .travis.yml: rm NOTEs from less important explanations M .travis.yml * CI: .travis.yml: {add,set,sort} features from `build.sh` explicitly M .travis.yml * CI: build.sh: mv doHyperlinkSource into logical place M build.sh * CI: .travis.yml: upd the disclaimer M .travis.yml * CI: .travis.yml: rm ALL_TESTS, since it does not work for nix-build and also just plainly does not passes itself, so it is useless in CI build setup M .travis.yml * CI: .travis.yml: upd CACHIX_SIGNING_KEY explanation M .travis.yml * CI: .travis.yml: GHC 8.10: add Haddock and sources hyperlinking M .travis.yml * CI: {.travis.yml,build.sh}: rename (GHCVERSION->compiler) M .travis.yml M build.sh * CI: default.nix: add `compiler` explanation M default.nix * CI: {.travis.yml,build.sh}: upd: make conf work with new Nix installer M .travis.yml M build.sh * CI: .travis.yml: rm irrelevant remount M .travis.yml * CI: {build.sh,default.nix}: upd settings structure, upd descriptions M build.sh M default.nix * CI: default.nix: upd header disclamer M build.sh * CI: mv rev doc (build.sh->default.nix) M build.sh M default.nix * CI: merge docs (build.sh->default.nix) M build.sh M default.nix * CI: build.sh: rm most of NOTE tags M build.sh * CI: .travis.yml: rm Nix updates After refactoring they are right beside/before build.sh Nix updates, so this update can be reduced. M .travis.yml * CI: .travis.yml: upd service restart Since service is not touched the daemon-reload is probably not needed, restart is sufficient. M .travis.yml * CI: build.sh: add report of Nixpkgs channel revision Since Nix and Nixpkgs channel were just updated and build is next - report the revision. M build.sh * default.nix: use dummy package name * default.nix: upd rephrase * default.nix: upd rephrase M default.nix * default.nix: add explanation M default.nix * default.nix: clean-up M default.nix * default.nix: upd M default.nix * default.nix: upd M default.nix * default.nix: add explanation M default.nix * add initial .github/workflows/test.yml * M .github/workflows/test.yml * test.yml: upd name: (Test->CI) M .github/workflows/test.yml * test.yml: add env of Nixpkgs Haskell Lib from HNix M .github/workflows/test.yml * test.yml: (nix-build->./build.sh) M .github/workflows/test.yml * test.yml: upd update of Nix to update all Nix installed packages M build.sh * test.yml: jobs: tests->Basic_build M .github/workflows/test.yml * {test.yml,build.sh}: project: hnix->replaceWithProjectNameInCachix M .github/workflows/test.yml M build.sh * {test.yml,build.sh}: executableNames..Complete: hnix->replaceWith... M .github/workflows/test.yml M build.sh * test.yml: jobs: Basic_build: name the steps M .github/workflows/test.yml * build.sh: compiler: add explanation M build.sh * default.nix: compiler: mv explanation M build.sh M default.nix * test.yml: m upd M .github/workflows/test.yml * test.yml: trigger CI on push to master, track only PRs| trigger build once M .github/workflows/test.yml * Simplify step names M .github/workflows/test.yml * GitHub CI: add Linux_GHC-8-10 M .github/workflows/test.yml * GitHub CI: add Linux_GHCJS M .github/workflows/test.yml * GitHub CI: add macOS_default M .github/workflows/test.yml * GitHub CI: Nixpkgs: disable withHoogle M .github/workflows/test.yml * GitHub CI: add Hackage_Cabal M .github/workflows/test.yml * GitHub CI: Hackage_Cabal: add cabal v2-configure M .github/workflows/test.yml * GitHub CI: Hackage_Cabal: add cabal v2-build M .github/workflows/test.yml * GitHub CI: Hackage_Cabal: add cabal v2-test M .github/workflows/test.yml * .github/workflows/(test->main).yml R .github/workflows/test.yml -> .github/workflows/main.yml * builds: rname project->cachixAccount M .github/workflows/main.yml M build.sh * .travis.yml: add withHoogle=false for CI builds M .travis.yml * .travis.yml: group cachix conf M .travis.yml * GitHub CI: add name tags to builds M .github/workflows/main.yml * GitHub CI: Nixpkgs custom build: add customization M .github/workflows/main.yml * builds: pass-through useRev M .github/workflows/main.yml M build.sh M default.nix * builds: use rev M .github/workflows/main.yml * GitHub CI: add Nixpkgs_stable_Linux M .github/workflows/main.yml * build.sh: provide a NIX_PATH change if rev is chosen M build.sh * GitHub CI: add build schedule M .github/workflows/main.yml * GitHub CI: add explanations M .github/workflows/main.yml * GitHub CI: make all builds optional M .github/workflows/main.yml * name Hackage_Cabal M .github/workflows/main.yml * GitHub CI: Nixpkgs_unstable_macOS: upd M .github/workflows/main.yml * build.sh: rm NIX_PATH setup| default.nix solves it internally M build.sh * build.sh: short-curcuit the Nix tools update M build.sh * add .github/workflows/Cabal-Linux.yml * mv Hackage_Cabal build main->Cabal-Linux.yml M .github/workflows/Cabal-Linux.yml M .github/workflows/main.yml * Cabal-Linux.yml: add schedule M .github/workflows/Cabal-Linux.yml * main.yml: switch all Nix installer nix_path to nixos-unstable M .github/workflows/main.yml * main.yml: rm all Nix installer nix_path resetting to default M .github/workflows/main.yml * GitHub CI: workflow: add macOS, mv job into it A .github/workflows/Nixpkgs-macOS.yml M .github/workflows/main.yml * GitHub CI: workflow: Nixpkgs-macOS: add triggers and shedule M .github/workflows/Nixpkgs-macOS.yml * GitHub CI: workflow: Nixpkgs-macOS: m build rename M .github/workflows/Nixpkgs-macOS.yml * GitHub CI: workflow: Nixpkgs-GHCJS: mv build in A .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/main.yml * GitHub CI: workflow: main: rm withHoogle overload since it is redundant M .github/workflows/main.yml * GitHub CI: workflow: main: (CI->Nixpkgs, Linux) M .github/workflows/main.yml * GitHub CI: workflow: main: linkWithGold M .github/workflows/main.yml * GitHub CI: workflow: main: upd build ids M .github/workflows/main.yml * GitHub CI: workflow: main: upd build names M .github/workflows/main.yml * GitHub CI: workflow: main: add NixOS-unstable Strict build M .github/workflows/main.yml * GitHub CI: workflow: main: upd build names M .github/workflows/main.yml * GitHub CI: workflow: main: add build GHC 8.6.5 M .github/workflows/main.yml * GitHub CI: workflow: main: add build GHC 8.4.4 M .github/workflows/main.yml * GitHub CI: workflow: main: upd build name M .github/workflows/main.yml * GitHub CI: workflow: main: upd build names, wrap in " M .github/workflows/main.yml * GitHub CI: main: upd name: add GHC for GitHub CI to not mix-in GHCJS M .github/workflows/main.yml * GitHub CI: workflow: mv (main->Nixpkgs-GHC-Linux).yml R .github/workflows/main.yml -> .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: mv Quality build M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: m rname builds M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: m rename of the build M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: Quality build: add nix-shell test M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: add denotation towards main examples M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: Quality build: fx nix-shell command M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: mv Nixpkgs-(GHC-->)Linux.yml R .github/workflows/Nixpkgs-GHC-Linux.yml -> .github/workflows/Nixpkgs-Linux.yml * GitHub CI: workflow: GHCJS: clean-up M .github/workflows/Nixpkgs-GHCJS.yml * GitHub CI: workflow: GHCJS: use nixos-unstable rev M .github/workflows/Nixpkgs-GHCJS.yml * GitHub CI: workflow: GHCJS: use linkWithGold M .github/workflows/Nixpkgs-GHCJS.yml * R .github/workflows/Nixpkgs-Linux.yml -> .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: Nixpgs, Linux: recommend nixos-unstable M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: Nixpgs, Linux: recommend test for nixos-20.03 stable M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: mv additiona builds into Nixpgs-Linux-additional A .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: rname workflows M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: make main builds mandatory M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: make build not strict, to not scare off people ;) M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: make Nix-shell into a separate test M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Nix-shell: from the hip nix-shell'ing M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Nix-shell: add separate Hoogle test M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: rename GHCJS M .github/workflows/Nixpkgs-GHCJS.yml * GitHub CI: workflow: main: prettify M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: fx Nix-shell test M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: rename Nix-shell build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: m upd M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Nix-shell build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Quality build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd NixOS stable build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd disclaimer M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: upd steps to "Determined Nix-build" M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml * GitHub CI: workflow: main: upd Hoogle step name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: m upd M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Hoogle step name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Hoogle build name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Basic build name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: add explicit nixos-unstable M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Basic: add nixos-unstable explanation M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Nix-shell: use pure shell (*sic) M .github/workflows/Nixpkgs-Linux-main.yml * default.nix: abstract over package root| now able to manage monorepos * default.nix: abstract over package name| full support of monorepos M default.nix * build.sh: passthrough package{Name,Root} into default.nix * {default.nix,build.sh}: (package->cabal)Name end explanation * CI: Nixpkgs-Linux-main: add template for monorepo matrix * CI: Cabal-Linux: add template for monorepo matrix * D ghcjs/default.nix * Nixpkgs-macOS: mv env attrset * CI: Nixpkgs workflows: use haskell-with-nixpkgs cachix account M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml M .travis.yml * CI: Nixpkgs workflows: provide CACHIX_SIGNING_KEY M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml M .travis.yml * CI: GitHub: Nixpkgs workflows: Cachix action, provide account to it M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml * CI: GitHub: Nixpkgs-Linux-main: quality build: upd name * CI: GitHub: add submodule recursion to checkouts M .github/workflows/Cabal-Linux.yml M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml * CI: GitHub: Cabal-Linux: provide libsodium * default.nix: upd neat-interpolation override * build.sh: clean-up rm redundant settings, since default.nix is the main API propagation point * default.nix: set proper cabalName * CI: switch back to HNix Cachix account M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml M .travis.yml * .travis.yml: switch back to HNix Cachix account secret * default.nix: upd GHC to 8.8.4 * CI: update GHC 8.8.(3->4) Also dropping minor numbers from build names for bravity of tracking Nixpkgs M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .travis.yml * CI: rm Nixpkgs GHC 8.4.4 builds 8.4.4 support is removed from Nixpkgs M .github/workflows/Nixpkgs-Linux-additional.yml M .travis.yml * CI: Cabal-Linux: add GHC 8.4 build Since Nixpkgs removed 8.4, adding it to Hackage builds. * CI: Cabal-Linux: enable tests in configuration M .github/workflows/Cabal-Linux.yml * CI: Cabal-Linux: clean-up M .github/workflows/Cabal-Linux.yml * CI: Cabal-Linux: add Nix installation, instantiate still required for tests M .github/workflows/Cabal-Linux.yml * CI: Cabal-Linux: make builds pass mandatory * CI: Nixpkgs-Linux-main: make all builds optional Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: https://github.com/haskell-nix/hnix/pull/681#discussion_r463983376 * CI: Nixpkgs-Linux-main: make all builds optional cache builders Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: https://github.com/haskell-nix/hnix/pull/681#discussion_r463983376 CI: Travis: fx optional builds CI: Nixpkgs-Linux-main: make all builds optional Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: https://github.com/haskell-nix/hnix/pull/681#discussion_r463983376 CI: Travis: fx optional builds * CI: Travis: enable fast skip See: https://github.com/haskell-nix/hnix/pull/681#discussion_r463996365 M .travis.yml * CI: Travis: add "bypass" to keep CI green, send cache gen to background M .travis.yml * CI: Nixpkgs-Linux-main: proper executable name to shell complete * CI: Nixpkgs-Linux-main: Quality build: add shell completion test M .github/workflows/Nixpkgs-Linux-main.yml * CI: Nixpkgs-Linux-main: default build: add strict build M .github/workflows/Nixpkgs-Linux-main.yml * CI: Nixpkgs-GHCJS: print log tail * CI: Nixpkgs-GHCJS: turn-off build which is not persued Co-authored-by: Simon Jakobi <simon.jakobi@gmail.com> Co-authored-by: Richard Marko <srk@48.io>
2020-08-03 19:25:22 +02:00
onSwitchApplyFunc = set: object:
if set.switch
then set.function object
else object;
# General description of package
package = haskellPackages.developPackage {
Merge of haskell-with-nixpkgs back into HNix (#681) There were 668 commits which got squashed: * CI: Travis: env: global: rev: upd: note for haskell-update branch M .travis.yml * CI: Travis: build.sh: BUILD_PROJECT: *Optparse*Completion: upd: directional note M build.sh * Travis: Add CI job with linux and GHC-8.4.4 (#603) GHC 8.4 is still widely used, so it's good to check compatibility with it. * Fix CI builds on internal branches (#604) * CI: Travis: rm cache | Builds 2X times faster without Travis cache M .travis.yml * CI: Travis: build.sh: mv `set` declaration | fx master CI statuses M .travis.yml M build.sh * default.nix: make GHC 8.8.3 default M default.nix * default.nix: rm allowUnfree - there is none M default.nix * default.nix: add haskell.lib profiling options explicitly Integrates with CI. M default.nix * default.nix: add flags {doCheck,doHaddock,doCoverage} M default.nix * CI: Travis: build.sh: init CACHIX_SIGNING_KEY with default empty value Due to new strict `set` rules `if` statement check agains empty variable was failing the build, this fixes builds in PRs. ...sigh. M build.sh * default.nix: expose more features of `haskell.lib` API M default.nix * default.nix: add docs to the exposed haskell.lib options M default.nix * CI: build.sh: rm empty args from nix-build M build.sh * CI: build.sh: update Nix after its installation Nix that installs through Nix installer is 2.0.4. Current Nix release is 2.3.5. To to have a less of old bugs, and more of new bugs - Nix after installation needs an update right away. Old Nix literally prevented importing Nix channels on Linux Nix installations. M build.sh * default.nix: to allow use of current channels remove hash guarding M default.nix * default.nix: set `rev` default to `nixpkgs-unstable` M default.nix * default.nix: for import form separate explicit override set M default.nix * default.nix: add if useRev - then use rev, else use <nixpkgs> M default.nix * CI: build.sh: MAIN: add the channel update M build.sh * default.nix: default enableDeadCodeElimination to false | GHC macOS build bug M default.nix * default.nix: off enableSharedExecutables | rare feature, not passes macOS tests This feature seems to enable binaries as also a dynamic library, with is a rare and largely unknown feature, and it not used. Since it is unexpected optional rare not standard feature - turn it off by default. M default.nix * default.nix: expose additional part of Nixpkgs haskell.lib API M default.nix * default.nix: m doc upd M default.nix * default.nix: upd docs for Header.lib args in headers, sort Providing docs to them and sort them roughly in order of their application/stage M default.nix * default.nix: abstract the developPackage into value M default.nix * default.nix: package: sort inherited Haskell.lib args, provide doc M default.nix * default.nix: add option enableSeparateBinOutput M default.nix * default.nix: allow apply composition over the package M default.nix * default.nix: allow apply composition over the package M default.nix * default.nix: expose functionality: sdistTarball; add doc M default.nix * default.nix: expose functionality: buildFromSdist; add doc M default.nix * default.nix: expose functionality: failOnAllWarnings; add doc M default.nix * default.nix: expose functionality: buildStrictly; add doc M default.nix * default.nix: expose functionality: disableOptimization; add doc M default.nix * default.nix: expose functionality: linkWithGold; add doc M default.nix * default.nix: expose functionality: enableDWARFDebugging; add doc M default.nix * default.nix: expose functionality: doJailbreak Argument was already exposed in the header M default.nix * default.nix: expose functionality: doStrip Argument and doc was already provided in the header M default.nix * default.nix: expose functionality: justStaticExecutables Argument and doc was already provided in the header. M default.nix * default.nix: expose functionality: checkUnusedPackages; provide doc M default.nix * default.nix: expose functionality: gen*Optparse*Completion; provide doc M default.nix * default.nix: expose functionality: doHyperlinkSource; provide doc M default.nix * default.nix: rm doStrict (superceeded by failOnAllWarnings) M default.nix * default.nix: rm doOptimize (superceeded by disableOptimizations) M default.nix * default.nix: doc: add to header args M default.nix * default.nix: doc: add to body (functions fold and composePackage) M default.nix * default.nix: doc: add beginning doc and link to lib for more info on options M default.nix * CI: Travis: add Nix packages upd M .travis.yml * CI: Travis: fix Cachix nix-env install rights menegement The Cachix suddenly started to fall with: ``` $ nix-env -iA cachix -f https://cachix.org/api/v1/install error: creating directory '/Users/travis/.cache/nix/tarballs': Permission denied The command "nix-env -iA cachix -f https://cachix.org/api/v1/install" exited with 1. ``` There are changes to macOS procedures, Nix updated to 2.2, and Cachix has big upstream changes for macOS processes. So fixing rights management in this way. M .travis.yml * CI: Travis: rm sleep 2 - redundant Anyway it takes 30s-1m to the nix-build. M .travis.yml * CI: Travis: add HACK to fix reload Nix-daemon after Nix update 2.0 -> 2.2 M .travis.yml * CI: Travis: explicitly state the builds M .travis.yml * CI: Travis: env: rm jobs matrix M .travis.yml * CI: Travis: rm `os:` and `dist:`, since they are explicitly put below M .travis.yml * CI: Travis: enable strict build in GHC 8.6.5 M .travis.yml * CI: Travis: upd explicit build names M .travis.yml * CI: Travis: make GHC 8.10 mandatory M .travis.yml * CI: Travis: move SDist check to GHC 8.10 M .travis.yml * CI: .travis.tml: clean-up Since conf no longer multiplies rows into matrix, but provides it explitly, exclusions not needed. M .travis.yml * CI: make generate*Complettions work and accept a list of executables M .travis.yml M build.sh M default.nix * CI: rm buildStackProject, it does not work that way, and better to use real stack M .travis.yml M build.sh * default.nix: clean-up docs M default.nix * build.sh: default to GHC 8.10 M build.sh * build.sh: sort the options into logical order M build.sh * build.sh: provide docs to options M build.sh * build.sh: add disclamer for options M build.sh * build.sh: add more options and their docs M build.sh * build.sh: add new options into the build commands M build.sh * CI: .travis.yml: use linkWithGold in Linux builds, a bit faster builds M .travis.yml * CI: .travis.yml: GHC 8.10: add Haddock, optimize, Benchmark, Shell Complettions M .travis.yml * build.sh: rm `pkgName` (not used), return `name` - used by Cachix M build.sh * Silence redundant import warnings for Control.Monad.Fail (#633) Also address mysterious redundant import warnings in the testsuite This allows us to enable `buildStrictly=true` for GHC 8.8. Fixes #613. * default.nix: clean-up no longer relevant commented-out code buildInputs populated automatically. Environment overloads we can do any time, no need to keep trivial code commented. There is no AWS S3 use. If we would need we would write new deployment implementation outside of `default.nix` using actual NixOps. * CI: .travis.yml: rm Strict from GHC 8.6.5 M .travis.yml * CI: .travis.yml: properly name GHC 8.8.3 macOS as Strict M .travis.yml * CI: .travis.yml: add explicit quotes M .travis.yml * CI: .travis.yml: add description to the channels M .travis.yml * CI: .travis.yml: add description for executableNamesToShellComplete M .travis.yml * default.nix: filter package root with nix-gitignore so we don't copy stuff like `dist-newstyle`. * CI: .travis.yml: add the disclaimer M .travis.yml * CI: mv rev doc (.travis.yml->build.sh) M .travis.yml M build.sh * CI: build.sh: upd disclaimer M build.sh * CI: build.sh: add setting section disclaimer M build.sh * CI: build.sh: upd NIX_PATH doc M .travis.yml M build.sh * CI: .travis.yml: reduce not used pkgName getOptParseApplicativeComplettions does not need it M .travis.yml * CI: {.travis.yml,build.sh}: rename (name->project) more unique and descriptive M .travis.yml M build.sh * CI: {.travis.yml,build.sh}: merge documentation into buildh.sh M .travis.yml M build.sh * CI: .travis.yml: rm NOTEs from less important explanations M .travis.yml * CI: .travis.yml: {add,set,sort} features from `build.sh` explicitly M .travis.yml * CI: build.sh: mv doHyperlinkSource into logical place M build.sh * CI: .travis.yml: upd the disclaimer M .travis.yml * CI: .travis.yml: rm ALL_TESTS, since it does not work for nix-build and also just plainly does not passes itself, so it is useless in CI build setup M .travis.yml * CI: .travis.yml: upd CACHIX_SIGNING_KEY explanation M .travis.yml * CI: .travis.yml: GHC 8.10: add Haddock and sources hyperlinking M .travis.yml * CI: {.travis.yml,build.sh}: rename (GHCVERSION->compiler) M .travis.yml M build.sh * CI: default.nix: add `compiler` explanation M default.nix * CI: {.travis.yml,build.sh}: upd: make conf work with new Nix installer M .travis.yml M build.sh * CI: .travis.yml: rm irrelevant remount M .travis.yml * CI: {build.sh,default.nix}: upd settings structure, upd descriptions M build.sh M default.nix * CI: default.nix: upd header disclamer M build.sh * CI: mv rev doc (build.sh->default.nix) M build.sh M default.nix * CI: merge docs (build.sh->default.nix) M build.sh M default.nix * CI: build.sh: rm most of NOTE tags M build.sh * CI: .travis.yml: rm Nix updates After refactoring they are right beside/before build.sh Nix updates, so this update can be reduced. M .travis.yml * CI: .travis.yml: upd service restart Since service is not touched the daemon-reload is probably not needed, restart is sufficient. M .travis.yml * CI: build.sh: add report of Nixpkgs channel revision Since Nix and Nixpkgs channel were just updated and build is next - report the revision. M build.sh * default.nix: use dummy package name * default.nix: upd rephrase * default.nix: upd rephrase M default.nix * default.nix: add explanation M default.nix * default.nix: clean-up M default.nix * default.nix: upd M default.nix * default.nix: upd M default.nix * default.nix: add explanation M default.nix * add initial .github/workflows/test.yml * M .github/workflows/test.yml * test.yml: upd name: (Test->CI) M .github/workflows/test.yml * test.yml: add env of Nixpkgs Haskell Lib from HNix M .github/workflows/test.yml * test.yml: (nix-build->./build.sh) M .github/workflows/test.yml * test.yml: upd update of Nix to update all Nix installed packages M build.sh * test.yml: jobs: tests->Basic_build M .github/workflows/test.yml * {test.yml,build.sh}: project: hnix->replaceWithProjectNameInCachix M .github/workflows/test.yml M build.sh * {test.yml,build.sh}: executableNames..Complete: hnix->replaceWith... M .github/workflows/test.yml M build.sh * test.yml: jobs: Basic_build: name the steps M .github/workflows/test.yml * build.sh: compiler: add explanation M build.sh * default.nix: compiler: mv explanation M build.sh M default.nix * test.yml: m upd M .github/workflows/test.yml * test.yml: trigger CI on push to master, track only PRs| trigger build once M .github/workflows/test.yml * Simplify step names M .github/workflows/test.yml * GitHub CI: add Linux_GHC-8-10 M .github/workflows/test.yml * GitHub CI: add Linux_GHCJS M .github/workflows/test.yml * GitHub CI: add macOS_default M .github/workflows/test.yml * GitHub CI: Nixpkgs: disable withHoogle M .github/workflows/test.yml * GitHub CI: add Hackage_Cabal M .github/workflows/test.yml * GitHub CI: Hackage_Cabal: add cabal v2-configure M .github/workflows/test.yml * GitHub CI: Hackage_Cabal: add cabal v2-build M .github/workflows/test.yml * GitHub CI: Hackage_Cabal: add cabal v2-test M .github/workflows/test.yml * .github/workflows/(test->main).yml R .github/workflows/test.yml -> .github/workflows/main.yml * builds: rname project->cachixAccount M .github/workflows/main.yml M build.sh * .travis.yml: add withHoogle=false for CI builds M .travis.yml * .travis.yml: group cachix conf M .travis.yml * GitHub CI: add name tags to builds M .github/workflows/main.yml * GitHub CI: Nixpkgs custom build: add customization M .github/workflows/main.yml * builds: pass-through useRev M .github/workflows/main.yml M build.sh M default.nix * builds: use rev M .github/workflows/main.yml * GitHub CI: add Nixpkgs_stable_Linux M .github/workflows/main.yml * build.sh: provide a NIX_PATH change if rev is chosen M build.sh * GitHub CI: add build schedule M .github/workflows/main.yml * GitHub CI: add explanations M .github/workflows/main.yml * GitHub CI: make all builds optional M .github/workflows/main.yml * name Hackage_Cabal M .github/workflows/main.yml * GitHub CI: Nixpkgs_unstable_macOS: upd M .github/workflows/main.yml * build.sh: rm NIX_PATH setup| default.nix solves it internally M build.sh * build.sh: short-curcuit the Nix tools update M build.sh * add .github/workflows/Cabal-Linux.yml * mv Hackage_Cabal build main->Cabal-Linux.yml M .github/workflows/Cabal-Linux.yml M .github/workflows/main.yml * Cabal-Linux.yml: add schedule M .github/workflows/Cabal-Linux.yml * main.yml: switch all Nix installer nix_path to nixos-unstable M .github/workflows/main.yml * main.yml: rm all Nix installer nix_path resetting to default M .github/workflows/main.yml * GitHub CI: workflow: add macOS, mv job into it A .github/workflows/Nixpkgs-macOS.yml M .github/workflows/main.yml * GitHub CI: workflow: Nixpkgs-macOS: add triggers and shedule M .github/workflows/Nixpkgs-macOS.yml * GitHub CI: workflow: Nixpkgs-macOS: m build rename M .github/workflows/Nixpkgs-macOS.yml * GitHub CI: workflow: Nixpkgs-GHCJS: mv build in A .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/main.yml * GitHub CI: workflow: main: rm withHoogle overload since it is redundant M .github/workflows/main.yml * GitHub CI: workflow: main: (CI->Nixpkgs, Linux) M .github/workflows/main.yml * GitHub CI: workflow: main: linkWithGold M .github/workflows/main.yml * GitHub CI: workflow: main: upd build ids M .github/workflows/main.yml * GitHub CI: workflow: main: upd build names M .github/workflows/main.yml * GitHub CI: workflow: main: add NixOS-unstable Strict build M .github/workflows/main.yml * GitHub CI: workflow: main: upd build names M .github/workflows/main.yml * GitHub CI: workflow: main: add build GHC 8.6.5 M .github/workflows/main.yml * GitHub CI: workflow: main: add build GHC 8.4.4 M .github/workflows/main.yml * GitHub CI: workflow: main: upd build name M .github/workflows/main.yml * GitHub CI: workflow: main: upd build names, wrap in " M .github/workflows/main.yml * GitHub CI: main: upd name: add GHC for GitHub CI to not mix-in GHCJS M .github/workflows/main.yml * GitHub CI: workflow: mv (main->Nixpkgs-GHC-Linux).yml R .github/workflows/main.yml -> .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: mv Quality build M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: m rname builds M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: m rename of the build M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: Quality build: add nix-shell test M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: add denotation towards main examples M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: Quality build: fx nix-shell command M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: mv Nixpkgs-(GHC-->)Linux.yml R .github/workflows/Nixpkgs-GHC-Linux.yml -> .github/workflows/Nixpkgs-Linux.yml * GitHub CI: workflow: GHCJS: clean-up M .github/workflows/Nixpkgs-GHCJS.yml * GitHub CI: workflow: GHCJS: use nixos-unstable rev M .github/workflows/Nixpkgs-GHCJS.yml * GitHub CI: workflow: GHCJS: use linkWithGold M .github/workflows/Nixpkgs-GHCJS.yml * R .github/workflows/Nixpkgs-Linux.yml -> .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: Nixpgs, Linux: recommend nixos-unstable M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: Nixpgs, Linux: recommend test for nixos-20.03 stable M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: mv additiona builds into Nixpgs-Linux-additional A .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: rname workflows M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: make main builds mandatory M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: make build not strict, to not scare off people ;) M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: make Nix-shell into a separate test M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Nix-shell: from the hip nix-shell'ing M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Nix-shell: add separate Hoogle test M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: rename GHCJS M .github/workflows/Nixpkgs-GHCJS.yml * GitHub CI: workflow: main: prettify M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: fx Nix-shell test M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: rename Nix-shell build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: m upd M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Nix-shell build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Quality build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd NixOS stable build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd disclaimer M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: upd steps to "Determined Nix-build" M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml * GitHub CI: workflow: main: upd Hoogle step name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: m upd M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Hoogle step name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Hoogle build name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Basic build name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: add explicit nixos-unstable M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Basic: add nixos-unstable explanation M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Nix-shell: use pure shell (*sic) M .github/workflows/Nixpkgs-Linux-main.yml * default.nix: abstract over package root| now able to manage monorepos * default.nix: abstract over package name| full support of monorepos M default.nix * build.sh: passthrough package{Name,Root} into default.nix * {default.nix,build.sh}: (package->cabal)Name end explanation * CI: Nixpkgs-Linux-main: add template for monorepo matrix * CI: Cabal-Linux: add template for monorepo matrix * D ghcjs/default.nix * Nixpkgs-macOS: mv env attrset * CI: Nixpkgs workflows: use haskell-with-nixpkgs cachix account M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml M .travis.yml * CI: Nixpkgs workflows: provide CACHIX_SIGNING_KEY M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml M .travis.yml * CI: GitHub: Nixpkgs workflows: Cachix action, provide account to it M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml * CI: GitHub: Nixpkgs-Linux-main: quality build: upd name * CI: GitHub: add submodule recursion to checkouts M .github/workflows/Cabal-Linux.yml M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml * CI: GitHub: Cabal-Linux: provide libsodium * default.nix: upd neat-interpolation override * build.sh: clean-up rm redundant settings, since default.nix is the main API propagation point * default.nix: set proper cabalName * CI: switch back to HNix Cachix account M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml M .travis.yml * .travis.yml: switch back to HNix Cachix account secret * default.nix: upd GHC to 8.8.4 * CI: update GHC 8.8.(3->4) Also dropping minor numbers from build names for bravity of tracking Nixpkgs M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .travis.yml * CI: rm Nixpkgs GHC 8.4.4 builds 8.4.4 support is removed from Nixpkgs M .github/workflows/Nixpkgs-Linux-additional.yml M .travis.yml * CI: Cabal-Linux: add GHC 8.4 build Since Nixpkgs removed 8.4, adding it to Hackage builds. * CI: Cabal-Linux: enable tests in configuration M .github/workflows/Cabal-Linux.yml * CI: Cabal-Linux: clean-up M .github/workflows/Cabal-Linux.yml * CI: Cabal-Linux: add Nix installation, instantiate still required for tests M .github/workflows/Cabal-Linux.yml * CI: Cabal-Linux: make builds pass mandatory * CI: Nixpkgs-Linux-main: make all builds optional Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: https://github.com/haskell-nix/hnix/pull/681#discussion_r463983376 * CI: Nixpkgs-Linux-main: make all builds optional cache builders Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: https://github.com/haskell-nix/hnix/pull/681#discussion_r463983376 CI: Travis: fx optional builds CI: Nixpkgs-Linux-main: make all builds optional Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: https://github.com/haskell-nix/hnix/pull/681#discussion_r463983376 CI: Travis: fx optional builds * CI: Travis: enable fast skip See: https://github.com/haskell-nix/hnix/pull/681#discussion_r463996365 M .travis.yml * CI: Travis: add "bypass" to keep CI green, send cache gen to background M .travis.yml * CI: Nixpkgs-Linux-main: proper executable name to shell complete * CI: Nixpkgs-Linux-main: Quality build: add shell completion test M .github/workflows/Nixpkgs-Linux-main.yml * CI: Nixpkgs-Linux-main: default build: add strict build M .github/workflows/Nixpkgs-Linux-main.yml * CI: Nixpkgs-GHCJS: print log tail * CI: Nixpkgs-GHCJS: turn-off build which is not persued Co-authored-by: Simon Jakobi <simon.jakobi@gmail.com> Co-authored-by: Richard Marko <srk@48.io>
2020-08-03 19:25:22 +02:00
name = cabalName;
# Do not include into closure the files listed in .gitignore
root = packageRoot;
overrides = self: super: {
# 2020-08-04 hnix uses custom LayoutOptions and therefore is
# likely to be affected by the change in the ribbon width
# calculation in prettyprinter-1.7.0.
prettyprinter = haskellPackages.callPackage
({ mkDerivation, ansi-wl-pprint, base, base-compat, bytestring
, containers, deepseq, doctest, gauge, mtl, pgp-wordlist
, QuickCheck, quickcheck-instances, random, tasty, tasty-hunit
, tasty-quickcheck, text, transformers, stdenv
}:
mkDerivation {
pname = "prettyprinter";
version = "1.7.0";
sha256 = "19z04sn0kqxgwcyfn5igjmbxw13xsb3mdhdidkb3kzswib78f6sr";
isLibrary = true;
isExecutable = true;
libraryHaskellDepends = [ base text ];
testHaskellDepends = [
base bytestring doctest pgp-wordlist QuickCheck
quickcheck-instances tasty tasty-hunit tasty-quickcheck text
];
benchmarkHaskellDepends = [
ansi-wl-pprint base base-compat containers deepseq gauge mtl
QuickCheck random text transformers
];
description = "A modern, easy to use, well-documented, extensible pretty-printer";
license = stdenv.lib.licenses.bsd2;
}) {};
};
modifier = drv: pkgs.haskell.lib.overrideCabal drv (attrs: {
buildTools = (attrs.buildTools or []) ++ [
haskellPackages.cabal-install
];
testHaskellDepends = attrs.testHaskellDepends ++ [
pkgs.nix
haskellPackages.criterion
];
# Declare that the header set arguments as according Haskell.lib switches
inherit allowInconsistentDependencies;
inherit doCheck;
inherit enableDeadCodeElimination;
inherit enableLibraryProfiling;
inherit enableExecutableProfiling;
inherit enableSharedLibraries;
inherit enableStaticLibraries;
inherit enableSharedExecutables;
inherit enableSeparateBinOutput;
inherit doBenchmark;
inherit doCoverage;
inherit doHaddock;
configureFlags = pkgs.stdenv.lib.optional doTracing "--flags=tracing";
passthru = {
nixpkgs = pkgs;
inherit haskellPackages;
};
});
returnShellEnv = false;
};
# One part of Haskell.lib options are argument switches, those are in `inherit`ed list.
# Other part - are function wrappers over pkg. Fold allows to compose those.
# composePackage = foldr (if switch then function) (package) ([{switch,function}]) == (functionN .. (function1 package))
Merge of haskell-with-nixpkgs back into HNix (#681) There were 668 commits which got squashed: * CI: Travis: env: global: rev: upd: note for haskell-update branch M .travis.yml * CI: Travis: build.sh: BUILD_PROJECT: *Optparse*Completion: upd: directional note M build.sh * Travis: Add CI job with linux and GHC-8.4.4 (#603) GHC 8.4 is still widely used, so it's good to check compatibility with it. * Fix CI builds on internal branches (#604) * CI: Travis: rm cache | Builds 2X times faster without Travis cache M .travis.yml * CI: Travis: build.sh: mv `set` declaration | fx master CI statuses M .travis.yml M build.sh * default.nix: make GHC 8.8.3 default M default.nix * default.nix: rm allowUnfree - there is none M default.nix * default.nix: add haskell.lib profiling options explicitly Integrates with CI. M default.nix * default.nix: add flags {doCheck,doHaddock,doCoverage} M default.nix * CI: Travis: build.sh: init CACHIX_SIGNING_KEY with default empty value Due to new strict `set` rules `if` statement check agains empty variable was failing the build, this fixes builds in PRs. ...sigh. M build.sh * default.nix: expose more features of `haskell.lib` API M default.nix * default.nix: add docs to the exposed haskell.lib options M default.nix * CI: build.sh: rm empty args from nix-build M build.sh * CI: build.sh: update Nix after its installation Nix that installs through Nix installer is 2.0.4. Current Nix release is 2.3.5. To to have a less of old bugs, and more of new bugs - Nix after installation needs an update right away. Old Nix literally prevented importing Nix channels on Linux Nix installations. M build.sh * default.nix: to allow use of current channels remove hash guarding M default.nix * default.nix: set `rev` default to `nixpkgs-unstable` M default.nix * default.nix: for import form separate explicit override set M default.nix * default.nix: add if useRev - then use rev, else use <nixpkgs> M default.nix * CI: build.sh: MAIN: add the channel update M build.sh * default.nix: default enableDeadCodeElimination to false | GHC macOS build bug M default.nix * default.nix: off enableSharedExecutables | rare feature, not passes macOS tests This feature seems to enable binaries as also a dynamic library, with is a rare and largely unknown feature, and it not used. Since it is unexpected optional rare not standard feature - turn it off by default. M default.nix * default.nix: expose additional part of Nixpkgs haskell.lib API M default.nix * default.nix: m doc upd M default.nix * default.nix: upd docs for Header.lib args in headers, sort Providing docs to them and sort them roughly in order of their application/stage M default.nix * default.nix: abstract the developPackage into value M default.nix * default.nix: package: sort inherited Haskell.lib args, provide doc M default.nix * default.nix: add option enableSeparateBinOutput M default.nix * default.nix: allow apply composition over the package M default.nix * default.nix: allow apply composition over the package M default.nix * default.nix: expose functionality: sdistTarball; add doc M default.nix * default.nix: expose functionality: buildFromSdist; add doc M default.nix * default.nix: expose functionality: failOnAllWarnings; add doc M default.nix * default.nix: expose functionality: buildStrictly; add doc M default.nix * default.nix: expose functionality: disableOptimization; add doc M default.nix * default.nix: expose functionality: linkWithGold; add doc M default.nix * default.nix: expose functionality: enableDWARFDebugging; add doc M default.nix * default.nix: expose functionality: doJailbreak Argument was already exposed in the header M default.nix * default.nix: expose functionality: doStrip Argument and doc was already provided in the header M default.nix * default.nix: expose functionality: justStaticExecutables Argument and doc was already provided in the header. M default.nix * default.nix: expose functionality: checkUnusedPackages; provide doc M default.nix * default.nix: expose functionality: gen*Optparse*Completion; provide doc M default.nix * default.nix: expose functionality: doHyperlinkSource; provide doc M default.nix * default.nix: rm doStrict (superceeded by failOnAllWarnings) M default.nix * default.nix: rm doOptimize (superceeded by disableOptimizations) M default.nix * default.nix: doc: add to header args M default.nix * default.nix: doc: add to body (functions fold and composePackage) M default.nix * default.nix: doc: add beginning doc and link to lib for more info on options M default.nix * CI: Travis: add Nix packages upd M .travis.yml * CI: Travis: fix Cachix nix-env install rights menegement The Cachix suddenly started to fall with: ``` $ nix-env -iA cachix -f https://cachix.org/api/v1/install error: creating directory '/Users/travis/.cache/nix/tarballs': Permission denied The command "nix-env -iA cachix -f https://cachix.org/api/v1/install" exited with 1. ``` There are changes to macOS procedures, Nix updated to 2.2, and Cachix has big upstream changes for macOS processes. So fixing rights management in this way. M .travis.yml * CI: Travis: rm sleep 2 - redundant Anyway it takes 30s-1m to the nix-build. M .travis.yml * CI: Travis: add HACK to fix reload Nix-daemon after Nix update 2.0 -> 2.2 M .travis.yml * CI: Travis: explicitly state the builds M .travis.yml * CI: Travis: env: rm jobs matrix M .travis.yml * CI: Travis: rm `os:` and `dist:`, since they are explicitly put below M .travis.yml * CI: Travis: enable strict build in GHC 8.6.5 M .travis.yml * CI: Travis: upd explicit build names M .travis.yml * CI: Travis: make GHC 8.10 mandatory M .travis.yml * CI: Travis: move SDist check to GHC 8.10 M .travis.yml * CI: .travis.tml: clean-up Since conf no longer multiplies rows into matrix, but provides it explitly, exclusions not needed. M .travis.yml * CI: make generate*Complettions work and accept a list of executables M .travis.yml M build.sh M default.nix * CI: rm buildStackProject, it does not work that way, and better to use real stack M .travis.yml M build.sh * default.nix: clean-up docs M default.nix * build.sh: default to GHC 8.10 M build.sh * build.sh: sort the options into logical order M build.sh * build.sh: provide docs to options M build.sh * build.sh: add disclamer for options M build.sh * build.sh: add more options and their docs M build.sh * build.sh: add new options into the build commands M build.sh * CI: .travis.yml: use linkWithGold in Linux builds, a bit faster builds M .travis.yml * CI: .travis.yml: GHC 8.10: add Haddock, optimize, Benchmark, Shell Complettions M .travis.yml * build.sh: rm `pkgName` (not used), return `name` - used by Cachix M build.sh * Silence redundant import warnings for Control.Monad.Fail (#633) Also address mysterious redundant import warnings in the testsuite This allows us to enable `buildStrictly=true` for GHC 8.8. Fixes #613. * default.nix: clean-up no longer relevant commented-out code buildInputs populated automatically. Environment overloads we can do any time, no need to keep trivial code commented. There is no AWS S3 use. If we would need we would write new deployment implementation outside of `default.nix` using actual NixOps. * CI: .travis.yml: rm Strict from GHC 8.6.5 M .travis.yml * CI: .travis.yml: properly name GHC 8.8.3 macOS as Strict M .travis.yml * CI: .travis.yml: add explicit quotes M .travis.yml * CI: .travis.yml: add description to the channels M .travis.yml * CI: .travis.yml: add description for executableNamesToShellComplete M .travis.yml * default.nix: filter package root with nix-gitignore so we don't copy stuff like `dist-newstyle`. * CI: .travis.yml: add the disclaimer M .travis.yml * CI: mv rev doc (.travis.yml->build.sh) M .travis.yml M build.sh * CI: build.sh: upd disclaimer M build.sh * CI: build.sh: add setting section disclaimer M build.sh * CI: build.sh: upd NIX_PATH doc M .travis.yml M build.sh * CI: .travis.yml: reduce not used pkgName getOptParseApplicativeComplettions does not need it M .travis.yml * CI: {.travis.yml,build.sh}: rename (name->project) more unique and descriptive M .travis.yml M build.sh * CI: {.travis.yml,build.sh}: merge documentation into buildh.sh M .travis.yml M build.sh * CI: .travis.yml: rm NOTEs from less important explanations M .travis.yml * CI: .travis.yml: {add,set,sort} features from `build.sh` explicitly M .travis.yml * CI: build.sh: mv doHyperlinkSource into logical place M build.sh * CI: .travis.yml: upd the disclaimer M .travis.yml * CI: .travis.yml: rm ALL_TESTS, since it does not work for nix-build and also just plainly does not passes itself, so it is useless in CI build setup M .travis.yml * CI: .travis.yml: upd CACHIX_SIGNING_KEY explanation M .travis.yml * CI: .travis.yml: GHC 8.10: add Haddock and sources hyperlinking M .travis.yml * CI: {.travis.yml,build.sh}: rename (GHCVERSION->compiler) M .travis.yml M build.sh * CI: default.nix: add `compiler` explanation M default.nix * CI: {.travis.yml,build.sh}: upd: make conf work with new Nix installer M .travis.yml M build.sh * CI: .travis.yml: rm irrelevant remount M .travis.yml * CI: {build.sh,default.nix}: upd settings structure, upd descriptions M build.sh M default.nix * CI: default.nix: upd header disclamer M build.sh * CI: mv rev doc (build.sh->default.nix) M build.sh M default.nix * CI: merge docs (build.sh->default.nix) M build.sh M default.nix * CI: build.sh: rm most of NOTE tags M build.sh * CI: .travis.yml: rm Nix updates After refactoring they are right beside/before build.sh Nix updates, so this update can be reduced. M .travis.yml * CI: .travis.yml: upd service restart Since service is not touched the daemon-reload is probably not needed, restart is sufficient. M .travis.yml * CI: build.sh: add report of Nixpkgs channel revision Since Nix and Nixpkgs channel were just updated and build is next - report the revision. M build.sh * default.nix: use dummy package name * default.nix: upd rephrase * default.nix: upd rephrase M default.nix * default.nix: add explanation M default.nix * default.nix: clean-up M default.nix * default.nix: upd M default.nix * default.nix: upd M default.nix * default.nix: add explanation M default.nix * add initial .github/workflows/test.yml * M .github/workflows/test.yml * test.yml: upd name: (Test->CI) M .github/workflows/test.yml * test.yml: add env of Nixpkgs Haskell Lib from HNix M .github/workflows/test.yml * test.yml: (nix-build->./build.sh) M .github/workflows/test.yml * test.yml: upd update of Nix to update all Nix installed packages M build.sh * test.yml: jobs: tests->Basic_build M .github/workflows/test.yml * {test.yml,build.sh}: project: hnix->replaceWithProjectNameInCachix M .github/workflows/test.yml M build.sh * {test.yml,build.sh}: executableNames..Complete: hnix->replaceWith... M .github/workflows/test.yml M build.sh * test.yml: jobs: Basic_build: name the steps M .github/workflows/test.yml * build.sh: compiler: add explanation M build.sh * default.nix: compiler: mv explanation M build.sh M default.nix * test.yml: m upd M .github/workflows/test.yml * test.yml: trigger CI on push to master, track only PRs| trigger build once M .github/workflows/test.yml * Simplify step names M .github/workflows/test.yml * GitHub CI: add Linux_GHC-8-10 M .github/workflows/test.yml * GitHub CI: add Linux_GHCJS M .github/workflows/test.yml * GitHub CI: add macOS_default M .github/workflows/test.yml * GitHub CI: Nixpkgs: disable withHoogle M .github/workflows/test.yml * GitHub CI: add Hackage_Cabal M .github/workflows/test.yml * GitHub CI: Hackage_Cabal: add cabal v2-configure M .github/workflows/test.yml * GitHub CI: Hackage_Cabal: add cabal v2-build M .github/workflows/test.yml * GitHub CI: Hackage_Cabal: add cabal v2-test M .github/workflows/test.yml * .github/workflows/(test->main).yml R .github/workflows/test.yml -> .github/workflows/main.yml * builds: rname project->cachixAccount M .github/workflows/main.yml M build.sh * .travis.yml: add withHoogle=false for CI builds M .travis.yml * .travis.yml: group cachix conf M .travis.yml * GitHub CI: add name tags to builds M .github/workflows/main.yml * GitHub CI: Nixpkgs custom build: add customization M .github/workflows/main.yml * builds: pass-through useRev M .github/workflows/main.yml M build.sh M default.nix * builds: use rev M .github/workflows/main.yml * GitHub CI: add Nixpkgs_stable_Linux M .github/workflows/main.yml * build.sh: provide a NIX_PATH change if rev is chosen M build.sh * GitHub CI: add build schedule M .github/workflows/main.yml * GitHub CI: add explanations M .github/workflows/main.yml * GitHub CI: make all builds optional M .github/workflows/main.yml * name Hackage_Cabal M .github/workflows/main.yml * GitHub CI: Nixpkgs_unstable_macOS: upd M .github/workflows/main.yml * build.sh: rm NIX_PATH setup| default.nix solves it internally M build.sh * build.sh: short-curcuit the Nix tools update M build.sh * add .github/workflows/Cabal-Linux.yml * mv Hackage_Cabal build main->Cabal-Linux.yml M .github/workflows/Cabal-Linux.yml M .github/workflows/main.yml * Cabal-Linux.yml: add schedule M .github/workflows/Cabal-Linux.yml * main.yml: switch all Nix installer nix_path to nixos-unstable M .github/workflows/main.yml * main.yml: rm all Nix installer nix_path resetting to default M .github/workflows/main.yml * GitHub CI: workflow: add macOS, mv job into it A .github/workflows/Nixpkgs-macOS.yml M .github/workflows/main.yml * GitHub CI: workflow: Nixpkgs-macOS: add triggers and shedule M .github/workflows/Nixpkgs-macOS.yml * GitHub CI: workflow: Nixpkgs-macOS: m build rename M .github/workflows/Nixpkgs-macOS.yml * GitHub CI: workflow: Nixpkgs-GHCJS: mv build in A .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/main.yml * GitHub CI: workflow: main: rm withHoogle overload since it is redundant M .github/workflows/main.yml * GitHub CI: workflow: main: (CI->Nixpkgs, Linux) M .github/workflows/main.yml * GitHub CI: workflow: main: linkWithGold M .github/workflows/main.yml * GitHub CI: workflow: main: upd build ids M .github/workflows/main.yml * GitHub CI: workflow: main: upd build names M .github/workflows/main.yml * GitHub CI: workflow: main: add NixOS-unstable Strict build M .github/workflows/main.yml * GitHub CI: workflow: main: upd build names M .github/workflows/main.yml * GitHub CI: workflow: main: add build GHC 8.6.5 M .github/workflows/main.yml * GitHub CI: workflow: main: add build GHC 8.4.4 M .github/workflows/main.yml * GitHub CI: workflow: main: upd build name M .github/workflows/main.yml * GitHub CI: workflow: main: upd build names, wrap in " M .github/workflows/main.yml * GitHub CI: main: upd name: add GHC for GitHub CI to not mix-in GHCJS M .github/workflows/main.yml * GitHub CI: workflow: mv (main->Nixpkgs-GHC-Linux).yml R .github/workflows/main.yml -> .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: mv Quality build M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: m rname builds M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: m rename of the build M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: Quality build: add nix-shell test M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: add denotation towards main examples M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: Quality build: fx nix-shell command M .github/workflows/Nixpkgs-GHC-Linux.yml * GitHub CI: workflow: mv Nixpkgs-(GHC-->)Linux.yml R .github/workflows/Nixpkgs-GHC-Linux.yml -> .github/workflows/Nixpkgs-Linux.yml * GitHub CI: workflow: GHCJS: clean-up M .github/workflows/Nixpkgs-GHCJS.yml * GitHub CI: workflow: GHCJS: use nixos-unstable rev M .github/workflows/Nixpkgs-GHCJS.yml * GitHub CI: workflow: GHCJS: use linkWithGold M .github/workflows/Nixpkgs-GHCJS.yml * R .github/workflows/Nixpkgs-Linux.yml -> .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: Nixpgs, Linux: recommend nixos-unstable M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: Nixpgs, Linux: recommend test for nixos-20.03 stable M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: mv additiona builds into Nixpgs-Linux-additional A .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: rname workflows M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: make main builds mandatory M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: make build not strict, to not scare off people ;) M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: make Nix-shell into a separate test M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Nix-shell: from the hip nix-shell'ing M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Nix-shell: add separate Hoogle test M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: rename GHCJS M .github/workflows/Nixpkgs-GHCJS.yml * GitHub CI: workflow: main: prettify M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: fx Nix-shell test M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: rename Nix-shell build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: m upd M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Nix-shell build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Quality build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd NixOS stable build M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd disclaimer M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: upd steps to "Determined Nix-build" M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml * GitHub CI: workflow: main: upd Hoogle step name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: m upd M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Hoogle step name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Hoogle build name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: upd Basic build name M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: add explicit nixos-unstable M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Basic: add nixos-unstable explanation M .github/workflows/Nixpkgs-Linux-main.yml * GitHub CI: workflow: main: Nix-shell: use pure shell (*sic) M .github/workflows/Nixpkgs-Linux-main.yml * default.nix: abstract over package root| now able to manage monorepos * default.nix: abstract over package name| full support of monorepos M default.nix * build.sh: passthrough package{Name,Root} into default.nix * {default.nix,build.sh}: (package->cabal)Name end explanation * CI: Nixpkgs-Linux-main: add template for monorepo matrix * CI: Cabal-Linux: add template for monorepo matrix * D ghcjs/default.nix * Nixpkgs-macOS: mv env attrset * CI: Nixpkgs workflows: use haskell-with-nixpkgs cachix account M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml M .travis.yml * CI: Nixpkgs workflows: provide CACHIX_SIGNING_KEY M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml M .travis.yml * CI: GitHub: Nixpkgs workflows: Cachix action, provide account to it M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml * CI: GitHub: Nixpkgs-Linux-main: quality build: upd name * CI: GitHub: add submodule recursion to checkouts M .github/workflows/Cabal-Linux.yml M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml * CI: GitHub: Cabal-Linux: provide libsodium * default.nix: upd neat-interpolation override * build.sh: clean-up rm redundant settings, since default.nix is the main API propagation point * default.nix: set proper cabalName * CI: switch back to HNix Cachix account M .github/workflows/Nixpkgs-GHCJS.yml M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .github/workflows/Nixpkgs-macOS.yml M .travis.yml * .travis.yml: switch back to HNix Cachix account secret * default.nix: upd GHC to 8.8.4 * CI: update GHC 8.8.(3->4) Also dropping minor numbers from build names for bravity of tracking Nixpkgs M .github/workflows/Nixpkgs-Linux-additional.yml M .github/workflows/Nixpkgs-Linux-main.yml M .travis.yml * CI: rm Nixpkgs GHC 8.4.4 builds 8.4.4 support is removed from Nixpkgs M .github/workflows/Nixpkgs-Linux-additional.yml M .travis.yml * CI: Cabal-Linux: add GHC 8.4 build Since Nixpkgs removed 8.4, adding it to Hackage builds. * CI: Cabal-Linux: enable tests in configuration M .github/workflows/Cabal-Linux.yml * CI: Cabal-Linux: clean-up M .github/workflows/Cabal-Linux.yml * CI: Cabal-Linux: add Nix installation, instantiate still required for tests M .github/workflows/Cabal-Linux.yml * CI: Cabal-Linux: make builds pass mandatory * CI: Nixpkgs-Linux-main: make all builds optional Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: https://github.com/haskell-nix/hnix/pull/681#discussion_r463983376 * CI: Nixpkgs-Linux-main: make all builds optional cache builders Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: https://github.com/haskell-nix/hnix/pull/681#discussion_r463983376 CI: Travis: fx optional builds CI: Nixpkgs-Linux-main: make all builds optional Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: https://github.com/haskell-nix/hnix/pull/681#discussion_r463983376 CI: Travis: fx optional builds * CI: Travis: enable fast skip See: https://github.com/haskell-nix/hnix/pull/681#discussion_r463996365 M .travis.yml * CI: Travis: add "bypass" to keep CI green, send cache gen to background M .travis.yml * CI: Nixpkgs-Linux-main: proper executable name to shell complete * CI: Nixpkgs-Linux-main: Quality build: add shell completion test M .github/workflows/Nixpkgs-Linux-main.yml * CI: Nixpkgs-Linux-main: default build: add strict build M .github/workflows/Nixpkgs-Linux-main.yml * CI: Nixpkgs-GHCJS: print log tail * CI: Nixpkgs-GHCJS: turn-off build which is not persued Co-authored-by: Simon Jakobi <simon.jakobi@gmail.com> Co-authored-by: Richard Marko <srk@48.io>
2020-08-03 19:25:22 +02:00
composedPackage = pkgs.lib.foldr (onSwitchApplyFunc) package listSwitchFunc;
in composedPackage