summary refs log tree commit diff
path: root/pkgs/top-level/release-haskell.nix
diff options
context:
space:
mode:
authorsternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org>2021-05-08 18:27:47 +0200
committersternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org>2021-05-08 18:27:47 +0200
commitdf5b6c61ec6494d6488b9ceba7e44f1b50a503ad (patch)
tree70e2f7017544a7b4619ed880745ce37b94072258 /pkgs/top-level/release-haskell.nix
parent632c9c3b3a17972632eb59c4b9b453d11489d606 (diff)
downloadnixpkgs-df5b6c61ec6494d6488b9ceba7e44f1b50a503ad.tar
nixpkgs-df5b6c61ec6494d6488b9ceba7e44f1b50a503ad.tar.gz
nixpkgs-df5b6c61ec6494d6488b9ceba7e44f1b50a503ad.tar.bz2
nixpkgs-df5b6c61ec6494d6488b9ceba7e44f1b50a503ad.tar.lz
nixpkgs-df5b6c61ec6494d6488b9ceba7e44f1b50a503ad.tar.xz
nixpkgs-df5b6c61ec6494d6488b9ceba7e44f1b50a503ad.tar.zst
nixpkgs-df5b6c61ec6494d6488b9ceba7e44f1b50a503ad.zip
top-level/release-haskell.nix: merge jobs using lib.recursiveUpdate
We have different attribute sets defining jobs: The list of base jobs,
the ones generated by versionedCompilerJobs and our added aggregate
jobs. During this we define `haskell` twice: Once for `haskell.compiler`
and once for `haskell.packages.*`. The `//` operator throws a way the
former which is fixed by using lib.recursiveUpdate.

Unfortunately makes the expression less pretty, but at least we have our
compiler jobs back.
Diffstat (limited to 'pkgs/top-level/release-haskell.nix')
-rw-r--r--pkgs/top-level/release-haskell.nix368
1 files changed, 187 insertions, 181 deletions
diff --git a/pkgs/top-level/release-haskell.nix b/pkgs/top-level/release-haskell.nix
index 1c3389c24d1..0fe5f730dc2 100644
--- a/pkgs/top-level/release-haskell.nix
+++ b/pkgs/top-level/release-haskell.nix
@@ -75,191 +75,197 @@ let
       _: v: builtins.length (v.meta.maintainers or []) > 0
     ) set);
 
-  jobs = mapTestOn {
-    haskellPackages = packagePlatforms pkgs.haskellPackages;
-    haskell.compiler = packagePlatforms pkgs.haskell.compiler;
+  recursiveUpdateMany = builtins.foldl' lib.recursiveUpdate {};
 
-    tests = let
-      testPlatforms = packagePlatforms pkgs.tests;
-    in {
-      haskell = testPlatforms.haskell;
-      writers = testPlatforms.writers;
-    };
+  jobs = mapTestOn (recursiveUpdateMany [
+    {
+      haskellPackages = packagePlatforms pkgs.haskellPackages;
+      haskell.compiler = packagePlatforms pkgs.haskell.compiler;
 
-    # top-level packages that depend on haskellPackages
-    inherit (pkgsPlatforms)
-      agda
-      arion
-      bench
-      bustle
-      blucontrol
-      cabal-install
-      cabal2nix
-      cachix
-      carp
-      cedille
-      client-ip-echo
-      darcs
-      dconf2nix
-      dhall
-      dhall-bash
-      dhall-docs
-      dhall-lsp-server
-      dhall-json
-      dhall-nix
-      dhall-text
-      diagrams-builder
-      elm2nix
-      fffuu
-      futhark
-      ghcid
-      git-annex
-      git-brunch
-      gitit
-      glirc
-      hadolint
-      haskell-ci
-      haskell-language-server
-      hasura-graphql-engine
-      hci
-      hercules-ci-agent
-      hinit
-      hedgewars
-      hledger
-      hledger-iadd
-      hledger-interest
-      hledger-ui
-      hledger-web
-      hlint
-      hpack
-      hyper-haskell
-      hyper-haskell-server-with-packages
-      icepeak
-      idris
-      ihaskell
-      jl
-      koka
-      krank
-      lambdabot
-      ldgallery
-      madlang
-      matterhorn
-      mueval
-      neuron-notes
-      niv
-      nix-delegate
-      nix-deploy
-      nix-diff
-      nix-linter
-      nix-output-monitor
-      nix-script
-      nix-tree
-      nixfmt
-      nota
-      ormolu
-      pandoc
-      pakcs
-      petrinizer
-      place-cursor-at
-      pinboard-notes-backup
-      pretty-simple
-      shake
-      shellcheck
-      sourceAndTags
-      spacecookie
-      spago
-      splot
-      stack
-      stack2nix
-      stutter
-      stylish-haskell
-      taffybar
-      tamarin-prover
-      taskell
-      termonad-with-packages
-      tldr-hs
-      tweet-hs
-      update-nix-fetchgit
-      uqm
-      uuagc
-      vaultenv
-      wstunnel
-      xmobar
-      xmonad-with-packages
-      yi
-      zsh-git-prompt
-      ;
+      tests = let
+        testPlatforms = packagePlatforms pkgs.tests;
+      in {
+        haskell = testPlatforms.haskell;
+        writers = testPlatforms.writers;
+      };
+
+      # top-level packages that depend on haskellPackages
+      inherit (pkgsPlatforms)
+        agda
+        arion
+        bench
+        bustle
+        blucontrol
+        cabal-install
+        cabal2nix
+        cachix
+        carp
+        cedille
+        client-ip-echo
+        darcs
+        dconf2nix
+        dhall
+        dhall-bash
+        dhall-docs
+        dhall-lsp-server
+        dhall-json
+        dhall-nix
+        dhall-text
+        diagrams-builder
+        elm2nix
+        fffuu
+        futhark
+        ghcid
+        git-annex
+        git-brunch
+        gitit
+        glirc
+        hadolint
+        haskell-ci
+        haskell-language-server
+        hasura-graphql-engine
+        hci
+        hercules-ci-agent
+        hinit
+        hedgewars
+        hledger
+        hledger-iadd
+        hledger-interest
+        hledger-ui
+        hledger-web
+        hlint
+        hpack
+        hyper-haskell
+        hyper-haskell-server-with-packages
+        icepeak
+        idris
+        ihaskell
+        jl
+        koka
+        krank
+        lambdabot
+        ldgallery
+        madlang
+        matterhorn
+        mueval
+        neuron-notes
+        niv
+        nix-delegate
+        nix-deploy
+        nix-diff
+        nix-linter
+        nix-output-monitor
+        nix-script
+        nix-tree
+        nixfmt
+        nota
+        ormolu
+        pandoc
+        pakcs
+        petrinizer
+        place-cursor-at
+        pinboard-notes-backup
+        pretty-simple
+        shake
+        shellcheck
+        sourceAndTags
+        spacecookie
+        spago
+        splot
+        stack
+        stack2nix
+        stutter
+        stylish-haskell
+        taffybar
+        tamarin-prover
+        taskell
+        termonad-with-packages
+        tldr-hs
+        tweet-hs
+        update-nix-fetchgit
+        uqm
+        uuagc
+        vaultenv
+        wstunnel
+        xmobar
+        xmonad-with-packages
+        yi
+        zsh-git-prompt
+        ;
 
-    elmPackages.elm = pkgsPlatforms.elmPackages.elm;
-  } // versionedCompilerJobs {
-    # Packages which should be checked on more than the
-    # default GHC version. This list can be used to test
-    # the state of the package set with newer compilers
-    # and to confirm that critical packages for the
-    # package sets (like Cabal, jailbreak-cabal) are
-    # working as expected.
-    cabal-install = all;
-    Cabal_3_4_0_0 = with compilerNames; [ ghc884 ghc8104 ];
-    funcmp = all;
-    haskell-language-server = all;
-    hoogle = all;
-    hsdns = all;
-    jailbreak-cabal = all;
-    language-nix = all;
-    nix-paths = all;
-    titlecase = all;
-  } // {
-    mergeable = pkgs.releaseTools.aggregate {
-      name = "haskell-updates-mergeable";
-      meta = {
-        description = ''
-          Critical haskell packages that should work at all times,
-          serves as minimum requirement for an update merge
-        '';
-        maintainers = lib.teams.haskell.members;
+      elmPackages.elm = pkgsPlatforms.elmPackages.elm;
+    }
+    (versionedCompilerJobs {
+      # Packages which should be checked on more than the
+      # default GHC version. This list can be used to test
+      # the state of the package set with newer compilers
+      # and to confirm that critical packages for the
+      # package sets (like Cabal, jailbreak-cabal) are
+      # working as expected.
+      cabal-install = all;
+      Cabal_3_4_0_0 = with compilerNames; [ ghc884 ghc8104 ];
+      funcmp = all;
+      haskell-language-server = all;
+      hoogle = all;
+      hsdns = all;
+      jailbreak-cabal = all;
+      language-nix = all;
+      nix-paths = all;
+      titlecase = all;
+    })
+    {
+      mergeable = pkgs.releaseTools.aggregate {
+        name = "haskell-updates-mergeable";
+        meta = {
+          description = ''
+            Critical haskell packages that should work at all times,
+            serves as minimum requirement for an update merge
+          '';
+          maintainers = lib.teams.haskell.members;
+        };
+        constituents = accumulateDerivations [
+          # haskell specific tests
+          jobs.tests.haskell
+          jobs.tests.writers # writeHaskell{,Bin}
+          # important top-level packages
+          jobs.cabal-install
+          jobs.cabal2nix
+          jobs.cachix
+          jobs.darcs
+          jobs.haskell-language-server
+          jobs.hledger
+          jobs.hledger-ui
+          jobs.hpack
+          jobs.niv
+          jobs.pandoc
+          jobs.stack
+          jobs.stylish-haskell
+          # important haskell (library) packages
+          jobs.haskellPackages.cabal-plan
+          jobs.haskellPackages.distribution-nixpkgs
+          jobs.haskellPackages.hackage-db
+          jobs.haskellPackages.policeman
+          jobs.haskellPackages.xmonad
+          jobs.haskellPackages.xmonad-contrib
+          # haskell packages maintained by @peti
+          # imported from the old hydra jobset
+          jobs.haskellPackages.hopenssl
+          jobs.haskellPackages.hsemail
+          jobs.haskellPackages.hsyslog
+        ];
       };
-      constituents = accumulateDerivations [
-        # haskell specific tests
-        jobs.tests.haskell
-        jobs.tests.writers # writeHaskell{,Bin}
-        # important top-level packages
-        jobs.cabal-install
-        jobs.cabal2nix
-        jobs.cachix
-        jobs.darcs
-        jobs.haskell-language-server
-        jobs.hledger
-        jobs.hledger-ui
-        jobs.hpack
-        jobs.niv
-        jobs.pandoc
-        jobs.stack
-        jobs.stylish-haskell
-        # important haskell (library) packages
-        jobs.haskellPackages.cabal-plan
-        jobs.haskellPackages.distribution-nixpkgs
-        jobs.haskellPackages.hackage-db
-        jobs.haskellPackages.policeman
-        jobs.haskellPackages.xmonad
-        jobs.haskellPackages.xmonad-contrib
-        # haskell packages maintained by @peti
-        # imported from the old hydra jobset
-        jobs.haskellPackages.hopenssl
-        jobs.haskellPackages.hsemail
-        jobs.haskellPackages.hsyslog
-      ];
-    };
-    maintained = pkgs.releaseTools.aggregate {
-      name = "maintained-haskell-packages";
-      meta = {
-        description = "Aggregate jobset of all haskell packages with a maintainer";
-        maintainers = lib.teams.haskell.members;
+      maintained = pkgs.releaseTools.aggregate {
+        name = "maintained-haskell-packages";
+        meta = {
+          description = "Aggregate jobset of all haskell packages with a maintainer";
+          maintainers = lib.teams.haskell.members;
+        };
+        constituents = accumulateDerivations
+          (builtins.map
+            (name: jobs.haskellPackages."${name}")
+            (maintainedPkgNames pkgs.haskellPackages));
       };
-      constituents = accumulateDerivations
-        (builtins.map
-          (name: jobs.haskellPackages."${name}")
-          (maintainedPkgNames pkgs.haskellPackages));
-    };
-  };
+    }
+  ]);
 
 in jobs