about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2019-09-02T18·04+0100
committerGitHub <noreply@github.com>2019-09-02T18·04+0100
commit2f239426aa4b9783c301a0ecbb4a9a4fd8b8e6dd (patch)
tree6656efbc41e5dd9c90759b7773538ac064666d54
parent4bd6d528008c6a8a7357a2c40013931800582252 (diff)
parente2feae3387e5d95715bdd27cd62753a18abf16bd (diff)
Merge pull request #2 from tazjin/refactor/nixos-nginx-cleanup r/73
Remove old NixOS config and move oslo.pub
-rw-r--r--infra/kubernetes/gemma/config.lisp (renamed from infra/nixos/gemma-config.lisp)0
-rw-r--r--infra/kubernetes/https-lb/ingress.yaml10
-rw-r--r--infra/kubernetes/nginx/nginx.conf36
-rw-r--r--infra/kubernetes/nginx/nginx.yaml55
-rw-r--r--infra/kubernetes/primary-cluster.yaml7
-rw-r--r--infra/nixos/configuration.nix53
-rw-r--r--infra/nixos/glesys.nix18
-rw-r--r--infra/nixos/pkgs/gemma.nix54
-rw-r--r--infra/nixos/tazblog/configuration-packages.nix44
-rw-r--r--infra/nixos/tazblog/default.nix125
-rw-r--r--infra/nixos/tazblog/packages.nix3391
-rw-r--r--infra/nixos/tazserve.nix106
-rwxr-xr-xtools/bin/__dispatch.sh3
l---------tools/bin/stern1
14 files changed, 110 insertions, 3793 deletions
diff --git a/infra/nixos/gemma-config.lisp b/infra/kubernetes/gemma/config.lisp
index 517a658cf1..517a658cf1 100644
--- a/infra/nixos/gemma-config.lisp
+++ b/infra/kubernetes/gemma/config.lisp
diff --git a/infra/kubernetes/https-lb/ingress.yaml b/infra/kubernetes/https-lb/ingress.yaml
index 5afb5f3a48..03fa2cec07 100644
--- a/infra/kubernetes/https-lb/ingress.yaml
+++ b/infra/kubernetes/https-lb/ingress.yaml
@@ -6,10 +6,18 @@ kind: Ingress
 metadata:
   name: https-ingress
   annotations:
-    networking.gke.io/managed-certificates: tazj-in, www-tazj-in
+    networking.gke.io/managed-certificates: tazj-in, www-tazj-in, oslo-pub
 spec:
   # Default traffic is routed to the blog, in case people go to
   # peculiar hostnames.
   backend:
     serviceName: tazblog
     servicePort: 8000
+  rules:
+    # Route oslo.pub to the nginx instance which serves redirects
+    - host: oslo.pub
+      http:
+        paths:
+          - backend:
+              serviceName: nginx
+              servicePort: 80
diff --git a/infra/kubernetes/nginx/nginx.conf b/infra/kubernetes/nginx/nginx.conf
new file mode 100644
index 0000000000..cdc228b494
--- /dev/null
+++ b/infra/kubernetes/nginx/nginx.conf
@@ -0,0 +1,36 @@
+daemon off;
+worker_processes  1;
+error_log stderr;
+
+events {
+    worker_connections  1024;
+}
+
+http {
+    log_format json_combined escape=json
+    '{'
+        '"time_local":"$time_local",'
+        '"remote_addr":"$remote_addr",'
+        '"remote_user":"$remote_user",'
+        '"request":"$request",'
+        '"status": "$status",'
+        '"body_bytes_sent":"$body_bytes_sent",'
+        '"request_time":"$request_time",'
+        '"http_referrer":"$http_referer",'
+        '"http_user_agent":"$http_user_agent"'
+        '}';
+
+    access_log /dev/stdout json_combined;
+
+    sendfile        on;
+    keepalive_timeout  65;
+
+    server {
+        listen       80;
+        server_name  oslo.pub;
+
+        location / {
+            return 302 https://www.google.com/maps/d/viewer?mid=1pJIYY9cuEdt9DuMTbb4etBVq7hs;
+        }
+    }
+}
diff --git a/infra/kubernetes/nginx/nginx.yaml b/infra/kubernetes/nginx/nginx.yaml
new file mode 100644
index 0000000000..c107ab6876
--- /dev/null
+++ b/infra/kubernetes/nginx/nginx.yaml
@@ -0,0 +1,55 @@
+# Deploy an nginx instance which serves ... redirects.
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: nginx-conf
+data:
+  nginx.conf: {{ insertFile "nginx.conf" | toJson }}
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: nginx
+  labels:
+    app: nginx
+spec:
+  replicas: 2
+  selector:
+    matchLabels:
+      app: nginx
+  template:
+    metadata:
+      labels:
+        app: nginx
+        config: {{ insertFile "nginx.conf" | sha1sum }}
+    spec:
+      containers:
+        - name: tazblog
+          image: nixery.local/shell/nginx
+          command: ["/bin/bash", "-c"]
+          args:
+            - |
+              echo 'nogroup:x:30000:nobody' >> /etc/group
+              echo 'nobody:x:30000:30000:nobody:/tmp:/bin/bash' >> /etc/passwd
+              exec nginx -c /etc/nginx/nginx.conf
+          volumeMounts:
+            - name: nginx-conf
+              mountPath: /etc/nginx
+      volumes:
+        - name: nginx-conf
+          configMap:
+            name: nginx-conf
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: nginx
+spec:
+  type: NodePort
+  selector:
+    app: nginx
+  ports:
+    - protocol: TCP
+      port: 80
+      targetPort: 80
diff --git a/infra/kubernetes/primary-cluster.yaml b/infra/kubernetes/primary-cluster.yaml
index 5b4b04d5d5..99bd6fac38 100644
--- a/infra/kubernetes/primary-cluster.yaml
+++ b/infra/kubernetes/primary-cluster.yaml
@@ -12,6 +12,10 @@ include:
     path: https-cert
     values:
       domain: www.tazj.in
+  - name: oslo-pub-cert
+    path: https-cert
+    values:
+      domain: oslo.pub
 
   # Services
   - name: nixery
@@ -20,6 +24,7 @@ include:
       version: 2e688c1
       bucket: tazjins-data
       account: nixery@tazjins-infrastructure.iam.gserviceaccount.com
-      repo: ssh://source.developers.google.com:2022/p/tazjins-infrastructure/r/monorepo
+      repo: git@github.com:tazjin/depot.git
   - name: tazblog
   - name: https-lb
+  - name: nginx
diff --git a/infra/nixos/configuration.nix b/infra/nixos/configuration.nix
deleted file mode 100644
index 1de11a16f9..0000000000
--- a/infra/nixos/configuration.nix
+++ /dev/null
@@ -1,53 +0,0 @@
-# This file contains basic configuration for all *.tazj.in Nix machines.
-
-{ config, pkgs, ... }:
-
-{
-  boot.loader.grub.enable = true;
-  boot.loader.grub.version = 2;
-  boot.loader.grub.device = "/dev/sda";
-
-  boot.initrd.availableKernelModules = [
-    "ata_piix"
-    "mptspi"
-    "sd_mod"
-    "sr_mod"
-  ];
-
-  # Configure root disk
-  fileSystems."/" = {
-    device = "/dev/disk/by-label/nixos";
-    fsType = "ext4";
-  };
-
-  services.vmwareGuest.enable = true;
-  services.vmwareGuest.headless = true;
-
-  time.timeZone = "Europe/Oslo";
-
-  environment.systemPackages = with pkgs; [
-    curl emacs htop
-  ];
-
-  services.openssh.enable = true;
-
-  networking.firewall.enable = true;
-  networking.firewall.allowedTCPPorts = [ 22 80 443 ];
-
-  users.extraUsers.vincent = {
-    isNormalUser = true;
-    uid = 1000;
-    extraGroups = [ "wheel" ];
-  };
-
-  security.sudo = {
-    enable = true;
-    extraConfig = "%wheel ALL=(ALL) NOPASSWD: ALL";
-  };
-
-  # This value determines the NixOS release with which your system is to be
-  # compatible, in order to avoid breaking some software such as database
-  # servers. You should change this only after NixOS release notes say you
-  # should.
-  system.stateVersion = "17.09"; # Did you read the comment?
-}
diff --git a/infra/nixos/glesys.nix b/infra/nixos/glesys.nix
deleted file mode 100644
index 4cd66cb195..0000000000
--- a/infra/nixos/glesys.nix
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-  sto-tazserve-1 = { pkgs, config, ... }: {
-    deployment.targetHost = "46.21.106.241";
-
-    # Configure network
-    networking.hostName = "sto-tazserve-1";
-    networking.interfaces.ens32.ip4 = [
-      { address = "46.21.106.241"; prefixLength = 23; }
-    ];
-    networking.defaultGateway = "46.21.106.1";
-    networking.nameservers = [ "195.20.206.80" "195.20.206.81" ];
-
-    imports = [
-      ./configuration.nix
-      ./tazserve.nix
-    ];
-  };
-}
diff --git a/infra/nixos/pkgs/gemma.nix b/infra/nixos/pkgs/gemma.nix
deleted file mode 100644
index 4e96734794..0000000000
--- a/infra/nixos/pkgs/gemma.nix
+++ /dev/null
@@ -1,54 +0,0 @@
-{ pkgs ? import <nixpkgs> {} }:
-
-with pkgs; stdenv.mkDerivation rec {
-  name = "gemma";
-
-  src = fetchFromGitHub {
-    owner  = "tazjin";
-    repo   = "gemma";
-    rev    = "61be253d6baa99f0a2208425b8a03b444bb1b184";
-    sha256 = "0vbmz2aphcida728rc0z3k7gychs4w1778vsjbrs0ljk9qgbmyr5";
-  };
-
-  buildInputs = with lispPackages; [
-    sbcl
-    quicklisp
-    hunchentoot
-    cl-json
-    local-time
-    elmPackages.elm
-    pkgconfig
-  ];
-
-  # The build phase has three distinct things it needs to do:
-  #
-  # 1. "Compile" the Elm source into something useful to browsers.
-  #
-  # 2. Configure the Lisp part of the application to serve the compiled Elm
-  #
-  # 3. Build (and don't strip!) an executable out of the Lisp backend.
-  buildPhase = ''
-    mkdir -p $out/share/gemma $out/bin
-    mkdir .home && export HOME="$PWD/.home"
-
-    # Build Elm
-    cd frontend
-    elm-make --yes Main.elm --output $out/share/gemma/index.html
-
-    # Build Lisp
-    cd $src
-    quicklisp init
-    env GEMMA_BIN_TARGET=$out/bin/gemma sbcl --load build.lisp
-  '';
-
-  installPhase = "true";
-
-  # Stripping an SBCL executable removes the application, which is unfortunate.
-  dontStrip = true;
-
-  meta = with stdenv.lib; {
-    description = "Tool for tracking recurring tasks";
-    homepage    = "https://github.com/tazjin/gemma";
-    license     = licenses.gpl3;
-  };
-}
diff --git a/infra/nixos/tazblog/configuration-packages.nix b/infra/nixos/tazblog/configuration-packages.nix
deleted file mode 100644
index d27d68b6d6..0000000000
--- a/infra/nixos/tazblog/configuration-packages.nix
+++ /dev/null
@@ -1,44 +0,0 @@
-# Generated by stackage2nix 0.4.0 from "/nix/store/848g1i6w075hdan5w0i4zjc2vgrhig7f-stackage-all/lts-9.20.yaml"
-{ pkgs, haskellLib }:
-
-with haskellLib; self: super: {
-
-  # core packages
-  "array" = null;
-  "base" = null;
-  "binary" = null;
-  "bytestring" = null;
-  "containers" = null;
-  "deepseq" = null;
-  "directory" = null;
-  "filepath" = null;
-  "ghc-boot" = null;
-  "ghc-boot-th" = null;
-  "ghc-prim" = null;
-  "ghci" = null;
-  "hoopl" = null;
-  "hpc" = null;
-  "integer-gmp" = null;
-  "pretty" = null;
-  "process" = null;
-  "rts" = null;
-  "template-haskell" = null;
-  "time" = null;
-  "transformers" = null;
-  "unix" = null;
-  # break cycle: HUnit call-stack nanospec hspec QuickCheck test-framework xml text quickcheck-unicode test-framework-hunit test-framework-quickcheck2 hspec-core async hspec-expectations hspec-meta quickcheck-io silently temporary base-compat exceptions tasty clock tasty-quickcheck tasty-hunit optparse-applicative regex-tdfa parsec hspec-discover stringbuilder
-  "stringbuilder" = dontCheck super.stringbuilder;
-  "hspec-discover" = dontCheck super.hspec-discover;
-  "optparse-applicative" = dontCheck super.optparse-applicative;
-  "clock" = dontCheck super.clock;
-  "exceptions" = dontCheck super.exceptions;
-  "base-compat" = dontCheck super.base-compat;
-  "temporary" = dontCheck super.temporary;
-  "silently" = dontCheck super.silently;
-  "async" = dontCheck super.async;
-  "text" = dontCheck super.text;
-  "nanospec" = dontCheck super.nanospec;
-  # break cycle: statistics monad-par mwc-random vector-algorithms
-  "mwc-random" = dontCheck super.mwc-random;
-
-}
diff --git a/infra/nixos/tazblog/default.nix b/infra/nixos/tazblog/default.nix
deleted file mode 100644
index 2598be1ea0..0000000000
--- a/infra/nixos/tazblog/default.nix
+++ /dev/null
@@ -1,125 +0,0 @@
-# Generated by stackage2nix 0.4.0 from "./stack.yaml"
-{ blogSource ? ./.
-, nixpkgs ? import <nixpkgs> {} }:
-
-with nixpkgs;
-let
-  inherit (stdenv.lib) extends;
-  haskellLib = callPackage (nixpkgs.path + "/pkgs/development/haskell-modules/lib.nix") {};
-  stackagePackages = import ./packages.nix;
-  stackageConfig = import  ./configuration-packages.nix { inherit pkgs haskellLib; };
-  stackPackages =
-    { pkgs, stdenv, callPackage }:
-    
-    self: {
-      "acid-state" = callPackage
-        ({ mkDerivation, array, base, bytestring, cereal, containers
-         , criterion, directory, extensible-exceptions, filepath, mtl
-         , network, random, safecopy, stm, system-fileio, system-filepath
-         , template-haskell, unix
-         }:
-         mkDerivation {
-           pname = "acid-state";
-           version = "0.14.3";
-           sha256 = "1d8hq8cj6h4crfnkmds6mhrhhg7r1b1byb8fybaj8khfa99sj0nm";
-           libraryHaskellDepends = [
-             array base bytestring cereal containers directory
-             extensible-exceptions filepath mtl network safecopy stm
-             template-haskell unix
-           ];
-           benchmarkHaskellDepends = [
-             base criterion directory mtl random system-fileio system-filepath
-           ];
-           doHaddock = false;
-           doCheck = false;
-           homepage = "https://github.com/acid-state/acid-state";
-           description = "Add ACID guarantees to any serializable Haskell data structure";
-           license = stdenv.lib.licenses.publicDomain;
-         }) {};
-      "ixset" = callPackage
-        ({ mkDerivation, base, containers, safecopy, syb, syb-with-class
-         , template-haskell
-         }:
-         mkDerivation {
-           pname = "ixset";
-           version = "1.0.7";
-           sha256 = "1la2gdlblgwpymlawcc9zqr7c5w942di12yshm35wg0x3dc5l3ig";
-           libraryHaskellDepends = [
-             base containers safecopy syb syb-with-class template-haskell
-           ];
-           doHaddock = false;
-           doCheck = false;
-           homepage = "http://happstack.com";
-           description = "Efficient relational queries on Haskell sets";
-           license = stdenv.lib.licenses.bsd3;
-         }) {};
-      "rss" = callPackage
-        ({ mkDerivation, base, HaXml, network, network-uri, old-locale
-         , time
-         }:
-         mkDerivation {
-           pname = "rss";
-           version = "3000.2.0.6";
-           sha256 = "03crzmi9903w6xsdc00wd9jhsr41b8pglz9n502h68w3jkm6zr4d";
-           libraryHaskellDepends = [
-             base HaXml network network-uri old-locale time
-           ];
-           doHaddock = false;
-           doCheck = false;
-           homepage = "https://github.com/basvandijk/rss";
-           description = "A library for generating RSS 2.0 feeds.";
-           license = stdenv.lib.licenses.publicDomain;
-         }) {};
-      "syb-with-class" = callPackage
-        ({ mkDerivation, array, base, bytestring, containers
-         , template-haskell
-         }:
-         mkDerivation {
-           pname = "syb-with-class";
-           version = "0.6.1.8";
-           sha256 = "01b187jhhfp77l4zgks5gszkn9jmgjc44mw9yympw1fsfskljiz3";
-           libraryHaskellDepends = [
-             array base bytestring containers template-haskell
-           ];
-           doHaddock = false;
-           doCheck = false;
-           description = "Scrap Your Boilerplate With Class";
-           license = stdenv.lib.licenses.bsd3;
-         }) {};
-      "tazblog" = callPackage
-        ({ mkDerivation, acid-state, base, base64-bytestring, blaze-html
-         , blaze-markup, bytestring, crypto-api, cryptohash, hamlet
-         , happstack-server, ixset, markdown, mtl, network, network-uri
-         , old-locale, options, rss, safecopy, shakespeare, text, time
-         , transformers
-         }:
-         mkDerivation {
-           pname = "tazblog";
-           version = "5.1.3";
-           src = blogSource;
-           isLibrary = true;
-           isExecutable = true;
-           libraryHaskellDepends = [
-             acid-state base base64-bytestring blaze-html blaze-markup
-             bytestring crypto-api cryptohash hamlet happstack-server ixset
-             markdown mtl network network-uri old-locale rss safecopy
-             shakespeare text time transformers
-           ];
-           executableHaskellDepends = [ acid-state base network options ];
-           description = "Tazjin's Blog";
-           license = stdenv.lib.licenses.mit;
-         }) {};
-    };
-  
-  pkgOverrides = self: stackPackages {
-    inherit pkgs stdenv;
-    inherit (self) callPackage;
-  };
-  
-in callPackage (nixpkgs.path + "/pkgs/development/haskell-modules") {
-  ghc = pkgs.haskell.compiler.ghc802;
-  compilerConfig = self: extends pkgOverrides (stackageConfig self);
-  initialPackages = stackagePackages;
-  configurationCommon = args: self: super: {};
-  inherit haskellLib;
-}
diff --git a/infra/nixos/tazblog/packages.nix b/infra/nixos/tazblog/packages.nix
deleted file mode 100644
index 30f70abe6a..0000000000
--- a/infra/nixos/tazblog/packages.nix
+++ /dev/null
@@ -1,3391 +0,0 @@
-# Generated by stackage2nix 0.4.0 from "/nix/store/848g1i6w075hdan5w0i4zjc2vgrhig7f-stackage-all/lts-9.20.yaml"
-{ pkgs, stdenv, callPackage }:
-
-self: {
-  "Cabal" = callPackage
-    ({ mkDerivation, array, base, binary, bytestring, containers
-     , deepseq, directory, filepath, pretty, process, time, unix
-     }:
-     mkDerivation {
-       pname = "Cabal";
-       version = "1.24.2.0";
-       sha256 = "0h33v1716wkqh9wvq2wynvhwzkjjhg4aav0a1i3cmyq36n7fpl5p";
-       revision = "2";
-       editedCabalFile = "15ncrm7x2lg4hn0m5mhc8hy769bzhmajsm6l9i6536plfs2bbbdj";
-       libraryHaskellDepends = [
-         array base binary bytestring containers deepseq directory filepath
-         pretty process time unix
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://www.haskell.org/cabal/";
-       description = "A framework for packaging Haskell software";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "Glob" = callPackage
-    ({ mkDerivation, base, containers, directory, dlist, filepath
-     , transformers, transformers-compat
-     }:
-     mkDerivation {
-       pname = "Glob";
-       version = "0.8.0";
-       sha256 = "15p8nbi19mhl3iisngbawmdpvk8paaqq4248fqgan63q1sz13w1q";
-       libraryHaskellDepends = [
-         base containers directory dlist filepath transformers
-         transformers-compat
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://iki.fi/matti.niemenmaa/glob/";
-       description = "Globbing library";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "HTTP" = callPackage
-    ({ mkDerivation, array, base, bytestring, mtl, network, network-uri
-     , parsec, time
-     }:
-     mkDerivation {
-       pname = "HTTP";
-       version = "4000.3.9";
-       sha256 = "1zv38sjr1kv6vm35a8w5659ap9jpxpq5b9zjgablils8ca52p5h5";
-       libraryHaskellDepends = [
-         array base bytestring mtl network network-uri parsec time
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/haskell/HTTP";
-       description = "A library for client-side HTTP";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "HUnit" = callPackage
-    ({ mkDerivation, base, call-stack, deepseq, filepath }:
-     mkDerivation {
-       pname = "HUnit";
-       version = "1.5.0.0";
-       sha256 = "186ykl7vxlfgkd2k8k1rq7yzcryzjpqwmn4ci1nn9h6irqbivib5";
-       libraryHaskellDepends = [ base call-stack deepseq ];
-       testHaskellDepends = [ base call-stack deepseq filepath ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/hspec/HUnit#readme";
-       description = "A unit testing framework for Haskell";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "HaXml" = callPackage
-    ({ mkDerivation, base, bytestring, containers, directory, filepath
-     , polyparse, pretty, random
-     }:
-     mkDerivation {
-       pname = "HaXml";
-       version = "1.25.4";
-       sha256 = "1d8xq37h627im5harybhsn08qjdaf6vskldm03cqbfjmr2w6fx6p";
-       isLibrary = true;
-       isExecutable = true;
-       libraryHaskellDepends = [
-         base bytestring containers filepath polyparse pretty random
-       ];
-       executableHaskellDepends = [ base directory polyparse pretty ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://projects.haskell.org/HaXml/";
-       description = "Utilities for manipulating XML documents";
-       license = "LGPL";
-     }) {};
-  "QuickCheck" = callPackage
-    ({ mkDerivation, base, containers, random, template-haskell
-     , test-framework, tf-random, transformers
-     }:
-     mkDerivation {
-       pname = "QuickCheck";
-       version = "2.9.2";
-       sha256 = "119np67qvx8hyp9vkg4gr2wv3lj3j6ay2vl4hxspkg43ymb1cp0m";
-       libraryHaskellDepends = [
-         base containers random template-haskell tf-random transformers
-       ];
-       testHaskellDepends = [
-         base containers template-haskell test-framework
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/nick8325/quickcheck";
-       description = "Automatic testing of Haskell programs";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "StateVar" = callPackage
-    ({ mkDerivation, base, stm, transformers }:
-     mkDerivation {
-       pname = "StateVar";
-       version = "1.1.0.4";
-       sha256 = "1dzz9l0haswgag9x56q7n57kw18v7nhmzkjyr61nz9y9npn8vmks";
-       libraryHaskellDepends = [ base stm transformers ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/haskell-opengl/StateVar";
-       description = "State variables";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "abstract-deque" = callPackage
-    ({ mkDerivation, array, base, containers, random, time }:
-     mkDerivation {
-       pname = "abstract-deque";
-       version = "0.3";
-       sha256 = "18jwswjxwzc9bjiy4ds6hw2a74ki797jmfcifxd2ga4kh7ri1ah9";
-       libraryHaskellDepends = [ array base containers random time ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/rrnewton/haskell-lockfree/wiki";
-       description = "Abstract, parameterized interface to mutable Deques";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "abstract-par" = callPackage
-    ({ mkDerivation, base, deepseq }:
-     mkDerivation {
-       pname = "abstract-par";
-       version = "0.3.3";
-       sha256 = "0q6qsniw4wks2pw6wzncb1p1j3k6al5njnvm2v5n494hplwqg2i4";
-       libraryHaskellDepends = [ base deepseq ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/simonmar/monad-par";
-       description = "Type classes generalizing the functionality of the 'monad-par' library";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "adjunctions" = callPackage
-    ({ mkDerivation, array, base, comonad, containers, contravariant
-     , distributive, free, mtl, profunctors, semigroupoids, semigroups
-     , tagged, transformers, transformers-compat, void
-     }:
-     mkDerivation {
-       pname = "adjunctions";
-       version = "4.3";
-       sha256 = "1k1ykisf96i4g2zm47c45md7p42c4vsp9r73392pz1g8mx7s2j5r";
-       revision = "1";
-       editedCabalFile = "1079l9szyr7ybi9wcvv1vjsjfrqirkn9z3j7dann8vbk81a4z37q";
-       libraryHaskellDepends = [
-         array base comonad containers contravariant distributive free mtl
-         profunctors semigroupoids semigroups tagged transformers
-         transformers-compat void
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/ekmett/adjunctions/";
-       description = "Adjunctions and representable functors";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "aeson" = callPackage
-    ({ mkDerivation, attoparsec, base, base-compat, base-orphans
-     , base16-bytestring, bytestring, containers, deepseq, directory
-     , dlist, filepath, generic-deriving, ghc-prim, hashable
-     , hashable-time, HUnit, integer-logarithms, QuickCheck
-     , quickcheck-instances, scientific, tagged, template-haskell
-     , test-framework, test-framework-hunit, test-framework-quickcheck2
-     , text, time, time-locale-compat, unordered-containers, uuid-types
-     , vector
-     }:
-     mkDerivation {
-       pname = "aeson";
-       version = "1.1.2.0";
-       sha256 = "1zy5z8pzvh53qkjm0nm3f4rwqfqg3867ck8ncd6mrxpcyvxqqj1p";
-       revision = "1";
-       editedCabalFile = "06acsik1qcn5r1z1y3n7iw5h8x0h3hdcjii0bq9nf9ncvc71h1d4";
-       libraryHaskellDepends = [
-         attoparsec base base-compat bytestring containers deepseq dlist
-         ghc-prim hashable scientific tagged template-haskell text time
-         time-locale-compat unordered-containers uuid-types vector
-       ];
-       testHaskellDepends = [
-         attoparsec base base-compat base-orphans base16-bytestring
-         bytestring containers directory dlist filepath generic-deriving
-         ghc-prim hashable hashable-time HUnit integer-logarithms QuickCheck
-         quickcheck-instances scientific tagged template-haskell
-         test-framework test-framework-hunit test-framework-quickcheck2 text
-         time time-locale-compat unordered-containers uuid-types vector
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/bos/aeson";
-       description = "Fast JSON parsing and encoding";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "ansi-terminal" = callPackage
-    ({ mkDerivation, base }:
-     mkDerivation {
-       pname = "ansi-terminal";
-       version = "0.6.3.1";
-       sha256 = "15c0c0vb66y3mr11kcvgjf4h0f7dqg7k1xq7zzq9fy11r7h9i3s5";
-       isLibrary = true;
-       isExecutable = true;
-       libraryHaskellDepends = [ base ];
-       executableHaskellDepends = [ base ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/feuerbach/ansi-terminal";
-       description = "Simple ANSI terminal support, with Windows compatibility";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "ansi-wl-pprint" = callPackage
-    ({ mkDerivation, ansi-terminal, base }:
-     mkDerivation {
-       pname = "ansi-wl-pprint";
-       version = "0.6.7.3";
-       sha256 = "025pyphsjf0dnbrmj5nscbi6gzyigwgp3ifxb3psn7kji6mfr29p";
-       isLibrary = true;
-       isExecutable = true;
-       libraryHaskellDepends = [ ansi-terminal base ];
-       executableHaskellDepends = [ ansi-terminal base ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/ekmett/ansi-wl-pprint";
-       description = "The Wadler/Leijen Pretty Printer for colored ANSI terminal output";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "async" = callPackage
-    ({ mkDerivation, base, HUnit, stm, test-framework
-     , test-framework-hunit
-     }:
-     mkDerivation {
-       pname = "async";
-       version = "2.1.1.1";
-       sha256 = "1qj4fp1ynwg0l453gmm27vgkzb5k5m2hzdlg5rdqi9kf8rqy90yd";
-       libraryHaskellDepends = [ base stm ];
-       testHaskellDepends = [
-         base HUnit test-framework test-framework-hunit
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/simonmar/async";
-       description = "Run IO operations asynchronously and wait for their results";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "attoparsec" = callPackage
-    ({ mkDerivation, array, base, bytestring, case-insensitive
-     , containers, criterion, deepseq, directory, filepath, ghc-prim
-     , http-types, parsec, QuickCheck, quickcheck-unicode, scientific
-     , tasty, tasty-quickcheck, text, transformers, unordered-containers
-     , vector
-     }:
-     mkDerivation {
-       pname = "attoparsec";
-       version = "0.13.1.0";
-       sha256 = "0r1zrrkbqv8w4pb459fj5izd1h85p9nrsp3gyzj7qiayjpa79p2j";
-       libraryHaskellDepends = [
-         array base bytestring containers deepseq scientific text
-         transformers
-       ];
-       testHaskellDepends = [
-         array base bytestring deepseq QuickCheck quickcheck-unicode
-         scientific tasty tasty-quickcheck text transformers vector
-       ];
-       benchmarkHaskellDepends = [
-         array base bytestring case-insensitive containers criterion deepseq
-         directory filepath ghc-prim http-types parsec scientific text
-         transformers unordered-containers vector
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/bos/attoparsec";
-       description = "Fast combinator parsing for bytestrings and text";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "base-compat" = callPackage
-    ({ mkDerivation, base, hspec, QuickCheck, unix }:
-     mkDerivation {
-       pname = "base-compat";
-       version = "0.9.3";
-       sha256 = "0452l6zf6fjhy4kxqwv6i6hhg6yfx4wcg450k3axpyj30l7jnq3x";
-       libraryHaskellDepends = [ base unix ];
-       testHaskellDepends = [ base hspec QuickCheck ];
-       doHaddock = false;
-       doCheck = false;
-       description = "A compatibility layer for base";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "base-orphans" = callPackage
-    ({ mkDerivation, base, ghc-prim, hspec, QuickCheck }:
-     mkDerivation {
-       pname = "base-orphans";
-       version = "0.6";
-       sha256 = "03mdww5j0gwai7aqlx3m71ldmjcr99jzpkcclzjfclk6a6kjla67";
-       libraryHaskellDepends = [ base ghc-prim ];
-       testHaskellDepends = [ base hspec QuickCheck ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/haskell-compat/base-orphans#readme";
-       description = "Backwards-compatible orphan instances for base";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "base16-bytestring" = callPackage
-    ({ mkDerivation, base, bytestring, ghc-prim }:
-     mkDerivation {
-       pname = "base16-bytestring";
-       version = "0.1.1.6";
-       sha256 = "0jf40m3yijqw6wd1rwwvviww46fasphaay9m9rgqyhf5aahnbzjs";
-       libraryHaskellDepends = [ base bytestring ghc-prim ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/bos/base16-bytestring";
-       description = "Fast base16 (hex) encoding and decoding for ByteStrings";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "base64-bytestring" = callPackage
-    ({ mkDerivation, base, bytestring, containers, HUnit, QuickCheck
-     , test-framework, test-framework-hunit, test-framework-quickcheck2
-     }:
-     mkDerivation {
-       pname = "base64-bytestring";
-       version = "1.0.0.1";
-       sha256 = "0l1v4ddjdsgi9nqzyzcxxj76rwar3lzx8gmwf2r54bqan3san9db";
-       libraryHaskellDepends = [ base bytestring ];
-       testHaskellDepends = [
-         base bytestring containers HUnit QuickCheck test-framework
-         test-framework-hunit test-framework-quickcheck2
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/bos/base64-bytestring";
-       description = "Fast base64 encoding and decoding for ByteStrings";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "basement" = callPackage
-    ({ mkDerivation, base, ghc-prim }:
-     mkDerivation {
-       pname = "basement";
-       version = "0.0.4";
-       sha256 = "1zdqv8dbzv8jx6z8fcghinbnxdc5fb97i7sdfswdr1fcp8jq6i38";
-       libraryHaskellDepends = [ base ghc-prim ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/haskell-foundation/foundation";
-       description = "Foundation scrap box of array & string";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "bifunctors" = callPackage
-    ({ mkDerivation, base, base-orphans, comonad, containers, hspec
-     , QuickCheck, semigroups, tagged, template-haskell, transformers
-     , transformers-compat
-     }:
-     mkDerivation {
-       pname = "bifunctors";
-       version = "5.4.2";
-       sha256 = "13fwvw1102ik96pgi85i34kisz1h237vgw88ywsgifsah9kh4qiq";
-       libraryHaskellDepends = [
-         base base-orphans comonad containers semigroups tagged
-         template-haskell transformers transformers-compat
-       ];
-       testHaskellDepends = [
-         base hspec QuickCheck template-haskell transformers
-         transformers-compat
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/ekmett/bifunctors/";
-       description = "Bifunctors";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "blaze-builder" = callPackage
-    ({ mkDerivation, base, bytestring, deepseq, HUnit, QuickCheck
-     , test-framework, test-framework-hunit, test-framework-quickcheck2
-     , text, utf8-string
-     }:
-     mkDerivation {
-       pname = "blaze-builder";
-       version = "0.4.0.2";
-       sha256 = "1m33y6p5xldni8p4fzg8fmsyqvkfmnimdamr1xjnsmgm3dkf9lws";
-       libraryHaskellDepends = [ base bytestring deepseq text ];
-       testHaskellDepends = [
-         base bytestring HUnit QuickCheck test-framework
-         test-framework-hunit test-framework-quickcheck2 text utf8-string
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/lpsmith/blaze-builder";
-       description = "Efficient buffered output";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "blaze-html" = callPackage
-    ({ mkDerivation, base, blaze-builder, blaze-markup, bytestring
-     , containers, HUnit, QuickCheck, test-framework
-     , test-framework-hunit, test-framework-quickcheck2, text
-     }:
-     mkDerivation {
-       pname = "blaze-html";
-       version = "0.9.0.1";
-       sha256 = "0r0acv47nh75bmf7kjyfvhcwz8f02rn9x0a1l80pzgyczfrsmkmf";
-       libraryHaskellDepends = [
-         base blaze-builder blaze-markup bytestring text
-       ];
-       testHaskellDepends = [
-         base blaze-builder blaze-markup bytestring containers HUnit
-         QuickCheck test-framework test-framework-hunit
-         test-framework-quickcheck2 text
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://jaspervdj.be/blaze";
-       description = "A blazingly fast HTML combinator library for Haskell";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "blaze-markup" = callPackage
-    ({ mkDerivation, base, blaze-builder, bytestring, containers, HUnit
-     , QuickCheck, test-framework, test-framework-hunit
-     , test-framework-quickcheck2, text
-     }:
-     mkDerivation {
-       pname = "blaze-markup";
-       version = "0.8.0.0";
-       sha256 = "03sl7xs6vk4zxbjszgyjpsppi1cknswg7z7rswz2f0rq62wwpq8r";
-       libraryHaskellDepends = [ base blaze-builder bytestring text ];
-       testHaskellDepends = [
-         base blaze-builder bytestring containers HUnit QuickCheck
-         test-framework test-framework-hunit test-framework-quickcheck2 text
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://jaspervdj.be/blaze";
-       description = "A blazingly fast markup combinator library for Haskell";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "byteable" = callPackage
-    ({ mkDerivation, base, bytestring }:
-     mkDerivation {
-       pname = "byteable";
-       version = "0.1.1";
-       sha256 = "1qizg0kxxjqnd3cbrjhhidk5pbbciz0pb3z5kzikjjxnnnhk8fr4";
-       enableSeparateDataOutput = true;
-       libraryHaskellDepends = [ base bytestring ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/vincenthz/hs-byteable";
-       description = "Type class for sequence of bytes";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "bytestring-builder" = callPackage
-    ({ mkDerivation, base, bytestring, deepseq }:
-     mkDerivation {
-       pname = "bytestring-builder";
-       version = "0.10.8.1.0";
-       sha256 = "1hnvjac28y44yn78c9vdp1zvrknvlw98ky3g4n5vivr16rvh8x3d";
-       libraryHaskellDepends = [ base bytestring deepseq ];
-       doHaddock = false;
-       doCheck = false;
-       description = "The new bytestring builder, packaged outside of GHC";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "cabal-doctest" = callPackage
-    ({ mkDerivation, base, Cabal, directory, filepath }:
-     mkDerivation {
-       pname = "cabal-doctest";
-       version = "1.0.4";
-       sha256 = "03sawamkp95jycq9sah72iw525pdndb3x4h489zf4s3ir9avds3d";
-       libraryHaskellDepends = [ base Cabal directory filepath ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/phadej/cabal-doctest";
-       description = "A Setup.hs helper for doctests running";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "call-stack" = callPackage
-    ({ mkDerivation, base, nanospec }:
-     mkDerivation {
-       pname = "call-stack";
-       version = "0.1.0";
-       sha256 = "1qmihf5jafmc79sk52l6gpx75f5bnla2lp62kh3p34x3j84mwpzj";
-       libraryHaskellDepends = [ base ];
-       testHaskellDepends = [ base nanospec ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/sol/call-stack#readme";
-       description = "Use GHC call-stacks in a backward compatible way";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "case-insensitive" = callPackage
-    ({ mkDerivation, base, bytestring, criterion, deepseq, hashable
-     , text
-     }:
-     mkDerivation {
-       pname = "case-insensitive";
-       version = "1.2.0.10";
-       sha256 = "0v1hclvv0516fnlj5j2izd9xmakl7dshi9cb32iz6dgvzx01qck6";
-       libraryHaskellDepends = [ base bytestring deepseq hashable text ];
-       benchmarkHaskellDepends = [ base bytestring criterion deepseq ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/basvandijk/case-insensitive";
-       description = "Case insensitive string comparison";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "cassava" = callPackage
-    ({ mkDerivation, array, attoparsec, base, blaze-builder, bytestring
-     , containers, deepseq, hashable, text, unordered-containers, vector
-     }:
-     mkDerivation {
-       pname = "cassava";
-       version = "0.4.5.1";
-       sha256 = "17wxrwq977nyi225zlg3wj32f0ypyvikznhw59k0hxb4vkljlqkw";
-       revision = "1";
-       editedCabalFile = "05035bnvyqs36sp2bqd1wdjp5x4zs1pnrw6c8hq5nwjwdajjqkf0";
-       libraryHaskellDepends = [
-         array attoparsec base blaze-builder bytestring containers deepseq
-         hashable text unordered-containers vector
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/hvr/cassava";
-       description = "A CSV parsing and encoding library";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "cereal" = callPackage
-    ({ mkDerivation, array, base, bytestring, containers, ghc-prim
-     , QuickCheck, test-framework, test-framework-quickcheck2
-     }:
-     mkDerivation {
-       pname = "cereal";
-       version = "0.5.4.0";
-       sha256 = "1rzyr8r9pjlgas5pc8n776r22i0ficanq05ypqrs477jxxd6rjns";
-       libraryHaskellDepends = [
-         array base bytestring containers ghc-prim
-       ];
-       testHaskellDepends = [
-         base bytestring QuickCheck test-framework
-         test-framework-quickcheck2
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/GaloisInc/cereal";
-       description = "A binary serialization library";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "chell" = callPackage
-    ({ mkDerivation, ansi-terminal, base, bytestring, options, patience
-     , random, template-haskell, text, transformers
-     }:
-     mkDerivation {
-       pname = "chell";
-       version = "0.4.0.2";
-       sha256 = "10ingy9qnbmc8cqh4i9pskcw43l0mzk8f3d76b3qz3fig5ary3j9";
-       libraryHaskellDepends = [
-         ansi-terminal base bytestring options patience random
-         template-haskell text transformers
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://john-millikin.com/software/chell/";
-       description = "A simple and intuitive library for automated testing";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "clock" = callPackage
-    ({ mkDerivation, base, tasty, tasty-quickcheck }:
-     mkDerivation {
-       pname = "clock";
-       version = "0.7.2";
-       sha256 = "07v91s20halsqjmziqb1sqjp2sjpckl9by7y28aaklwqi2bh2rl8";
-       libraryHaskellDepends = [ base ];
-       testHaskellDepends = [ base tasty tasty-quickcheck ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/corsis/clock";
-       description = "High-resolution clock functions: monotonic, realtime, cputime";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "code-page" = callPackage
-    ({ mkDerivation, base }:
-     mkDerivation {
-       pname = "code-page";
-       version = "0.1.3";
-       sha256 = "1491frk4jx6dlhifky9dvcxbsbcfssrz979a5hp5zn061rh8cp76";
-       libraryHaskellDepends = [ base ];
-       testHaskellDepends = [ base ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/RyanGlScott/code-page";
-       description = "Windows code page library for Haskell";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "comonad" = callPackage
-    ({ mkDerivation, base, Cabal, cabal-doctest, containers
-     , contravariant, distributive, doctest, semigroups, tagged
-     , transformers, transformers-compat
-     }:
-     mkDerivation {
-       pname = "comonad";
-       version = "5.0.2";
-       sha256 = "115pai560rllsmym76bj787kwz5xx19y8bl6262005nddqwzxc0v";
-       revision = "1";
-       editedCabalFile = "1lnsnx8p3wlfhd1xfc68za3b00vq77z2m6b0vqiw2laqmpj9akcw";
-       setupHaskellDepends = [ base Cabal cabal-doctest ];
-       libraryHaskellDepends = [
-         base containers contravariant distributive semigroups tagged
-         transformers transformers-compat
-       ];
-       testHaskellDepends = [ base doctest ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/ekmett/comonad/";
-       description = "Comonads";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "conduit" = callPackage
-    ({ mkDerivation, base, containers, criterion, deepseq, exceptions
-     , hspec, kan-extensions, lifted-base, mmorph, monad-control, mtl
-     , mwc-random, primitive, QuickCheck, resourcet, safe, split
-     , transformers, transformers-base, transformers-compat, vector
-     }:
-     mkDerivation {
-       pname = "conduit";
-       version = "1.2.12.1";
-       sha256 = "0zl6gflh7y36y2vypjhqx13nhkk5y3h12c1zj7kjfclrmwnvnwh0";
-       libraryHaskellDepends = [
-         base exceptions lifted-base mmorph monad-control mtl primitive
-         resourcet transformers transformers-base transformers-compat
-       ];
-       testHaskellDepends = [
-         base containers exceptions hspec mtl QuickCheck resourcet safe
-         split transformers
-       ];
-       benchmarkHaskellDepends = [
-         base containers criterion deepseq hspec kan-extensions mwc-random
-         transformers vector
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/snoyberg/conduit";
-       description = "Streaming data processing library";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "conduit-extra" = callPackage
-    ({ mkDerivation, async, attoparsec, base, blaze-builder, bytestring
-     , bytestring-builder, conduit, criterion, directory, exceptions
-     , filepath, hspec, monad-control, network, primitive, process
-     , QuickCheck, resourcet, stm, streaming-commons, text, transformers
-     , transformers-base
-     }:
-     mkDerivation {
-       pname = "conduit-extra";
-       version = "1.1.17";
-       sha256 = "01haq94kf4jsqrhs6j2kkvxrw4iqhvhnd9rcrqpkdbp1dil493kn";
-       libraryHaskellDepends = [
-         async attoparsec base blaze-builder bytestring conduit directory
-         exceptions filepath monad-control network primitive process
-         resourcet stm streaming-commons text transformers transformers-base
-       ];
-       testHaskellDepends = [
-         async attoparsec base blaze-builder bytestring bytestring-builder
-         conduit directory exceptions hspec process QuickCheck resourcet stm
-         streaming-commons text transformers transformers-base
-       ];
-       benchmarkHaskellDepends = [
-         base blaze-builder bytestring bytestring-builder conduit criterion
-         transformers
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/snoyberg/conduit";
-       description = "Batteries included conduit: adapters for common libraries";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "contravariant" = callPackage
-    ({ mkDerivation, base, semigroups, StateVar, transformers
-     , transformers-compat, void
-     }:
-     mkDerivation {
-       pname = "contravariant";
-       version = "1.4";
-       sha256 = "117fff8kkrvlmr8cb2jpj71z7lf2pdiyks6ilyx89mry6zqnsrp1";
-       libraryHaskellDepends = [
-         base semigroups StateVar transformers transformers-compat void
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/ekmett/contravariant/";
-       description = "Contravariant functors";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "cpphs" = callPackage
-    ({ mkDerivation, base, directory, old-locale, old-time, polyparse
-     }:
-     mkDerivation {
-       pname = "cpphs";
-       version = "1.20.8";
-       sha256 = "1bh524asqhk9v1s0wvipl0hgn7l63iy3js867yv0z3h5v2kn8vg5";
-       isLibrary = true;
-       isExecutable = true;
-       libraryHaskellDepends = [
-         base directory old-locale old-time polyparse
-       ];
-       executableHaskellDepends = [
-         base directory old-locale old-time polyparse
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://projects.haskell.org/cpphs/";
-       description = "A liberalised re-implementation of cpp, the C pre-processor";
-       license = "LGPL";
-     }) {};
-  "cpu" = callPackage
-    ({ mkDerivation, base }:
-     mkDerivation {
-       pname = "cpu";
-       version = "0.1.2";
-       sha256 = "0x19mlanmkg96h6h1i04w2i631z84y4rbk22ki4zhgsajysgw9sn";
-       isLibrary = true;
-       isExecutable = true;
-       enableSeparateDataOutput = true;
-       libraryHaskellDepends = [ base ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/vincenthz/hs-cpu";
-       description = "Cpu information and properties helpers";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "criterion" = callPackage
-    ({ mkDerivation, aeson, ansi-wl-pprint, base, binary, bytestring
-     , cassava, code-page, containers, deepseq, directory, filepath
-     , Glob, hastache, HUnit, js-flot, js-jquery, mtl, mwc-random
-     , optparse-applicative, parsec, QuickCheck, statistics, tasty
-     , tasty-hunit, tasty-quickcheck, text, time, transformers
-     , transformers-compat, vector, vector-algorithms
-     }:
-     mkDerivation {
-       pname = "criterion";
-       version = "1.1.4.0";
-       sha256 = "0xps7jm8g1bg7a2y4b6mj5nhg3b595k5ysprf4711lwyfpy478jk";
-       revision = "1";
-       editedCabalFile = "0hgy2rbrb0dg1sjdvqk2zivdq075fih4zlf51ffdmqzgcdj3i9b1";
-       enableSeparateDataOutput = true;
-       libraryHaskellDepends = [
-         aeson ansi-wl-pprint base binary bytestring cassava code-page
-         containers deepseq directory filepath Glob hastache js-flot
-         js-jquery mtl mwc-random optparse-applicative parsec statistics
-         text time transformers transformers-compat vector vector-algorithms
-       ];
-       testHaskellDepends = [
-         aeson base bytestring HUnit QuickCheck statistics tasty tasty-hunit
-         tasty-quickcheck vector
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://www.serpentine.com/criterion";
-       description = "Robust, reliable performance measurement and analysis";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "crypto-api" = callPackage
-    ({ mkDerivation, base, bytestring, cereal, entropy, tagged
-     , transformers
-     }:
-     mkDerivation {
-       pname = "crypto-api";
-       version = "0.13.2";
-       sha256 = "1vc27qcgbg7hf50rkqhlrs58zn1888ilh4b6wrrm07bnm48xacak";
-       libraryHaskellDepends = [
-         base bytestring cereal entropy tagged transformers
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/TomMD/crypto-api";
-       description = "A generic interface for cryptographic operations";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "cryptohash" = callPackage
-    ({ mkDerivation, base, byteable, bytestring, criterion, cryptonite
-     , ghc-prim, HUnit, memory, QuickCheck, tasty, tasty-hunit
-     , tasty-quickcheck
-     }:
-     mkDerivation {
-       pname = "cryptohash";
-       version = "0.11.9";
-       sha256 = "1yr2iyb779znj79j3fq4ky8l1y8a600a2x1fx9p5pmpwq5zq93y2";
-       libraryHaskellDepends = [
-         base byteable bytestring cryptonite ghc-prim memory
-       ];
-       testHaskellDepends = [
-         base byteable bytestring HUnit QuickCheck tasty tasty-hunit
-         tasty-quickcheck
-       ];
-       benchmarkHaskellDepends = [ base byteable bytestring criterion ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/vincenthz/hs-cryptohash";
-       description = "collection of crypto hashes, fast, pure and practical";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "cryptonite" = callPackage
-    ({ mkDerivation, base, bytestring, criterion, deepseq, foundation
-     , ghc-prim, integer-gmp, memory, random, tasty, tasty-hunit
-     , tasty-kat, tasty-quickcheck
-     }:
-     mkDerivation {
-       pname = "cryptonite";
-       version = "0.23";
-       sha256 = "1680dxgmnjgj083jhsw3rlljwaw0zqi5099m59x6kwqkxhn1qjpf";
-       libraryHaskellDepends = [
-         base bytestring deepseq foundation ghc-prim integer-gmp memory
-       ];
-       testHaskellDepends = [
-         base bytestring memory tasty tasty-hunit tasty-kat tasty-quickcheck
-       ];
-       benchmarkHaskellDepends = [
-         base bytestring criterion memory random
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/haskell-crypto/cryptonite";
-       description = "Cryptography Primitives sink";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "css-text" = callPackage
-    ({ mkDerivation, attoparsec, base, hspec, QuickCheck, text }:
-     mkDerivation {
-       pname = "css-text";
-       version = "0.1.2.2";
-       sha256 = "11qrwrjqk2k4bm3bz1qcyscp146raz1hgpzynkd50yaq12n69xfz";
-       libraryHaskellDepends = [ attoparsec base text ];
-       testHaskellDepends = [ attoparsec base hspec QuickCheck text ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://www.yesodweb.com/";
-       description = "CSS parser and renderer";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "data-default" = callPackage
-    ({ mkDerivation, base, data-default-class
-     , data-default-instances-containers, data-default-instances-dlist
-     , data-default-instances-old-locale
-     }:
-     mkDerivation {
-       pname = "data-default";
-       version = "0.7.1.1";
-       sha256 = "04d5n8ybmcxba9qb6h389w9zfq1lvj81b82jh6maqp6pkhkmvydh";
-       libraryHaskellDepends = [
-         base data-default-class data-default-instances-containers
-         data-default-instances-dlist data-default-instances-old-locale
-       ];
-       doHaddock = false;
-       doCheck = false;
-       description = "A class for types with a default value";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "data-default-class" = callPackage
-    ({ mkDerivation, base }:
-     mkDerivation {
-       pname = "data-default-class";
-       version = "0.1.2.0";
-       sha256 = "0miyjz8d4jyvqf2vp60lyfbnflx6cj2k8apmm9ly1hq0y0iv80ag";
-       libraryHaskellDepends = [ base ];
-       doHaddock = false;
-       doCheck = false;
-       description = "A class for types with a default value";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "data-default-instances-containers" = callPackage
-    ({ mkDerivation, base, containers, data-default-class }:
-     mkDerivation {
-       pname = "data-default-instances-containers";
-       version = "0.0.1";
-       sha256 = "06h8xka031w752a7cjlzghvr8adqbl95xj9z5zc1b62w02phfpm5";
-       libraryHaskellDepends = [ base containers data-default-class ];
-       doHaddock = false;
-       doCheck = false;
-       description = "Default instances for types in containers";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "data-default-instances-dlist" = callPackage
-    ({ mkDerivation, base, data-default-class, dlist }:
-     mkDerivation {
-       pname = "data-default-instances-dlist";
-       version = "0.0.1";
-       sha256 = "0narkdqiprhgayjiawrr4390h4rq4pl2pb6mvixbv2phrc8kfs3x";
-       libraryHaskellDepends = [ base data-default-class dlist ];
-       doHaddock = false;
-       doCheck = false;
-       description = "Default instances for types in dlist";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "data-default-instances-old-locale" = callPackage
-    ({ mkDerivation, base, data-default-class, old-locale }:
-     mkDerivation {
-       pname = "data-default-instances-old-locale";
-       version = "0.0.1";
-       sha256 = "00h81i5phib741yj517p8mbnc48myvfj8axzsw44k34m48lv1lv0";
-       libraryHaskellDepends = [ base data-default-class old-locale ];
-       doHaddock = false;
-       doCheck = false;
-       description = "Default instances for types in old-locale";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "deepseq-generics" = callPackage
-    ({ mkDerivation, base, deepseq, ghc-prim, HUnit, test-framework
-     , test-framework-hunit
-     }:
-     mkDerivation {
-       pname = "deepseq-generics";
-       version = "0.2.0.0";
-       sha256 = "17bwghc15mc9pchfd1w46jh2p3wzc86aj6a537wqwxn08rayzcxh";
-       revision = "1";
-       editedCabalFile = "055m914q7a19jagpxh65d8m67z1nl0h7cz77y1r0zp1qmpkisg82";
-       libraryHaskellDepends = [ base deepseq ghc-prim ];
-       testHaskellDepends = [
-         base deepseq ghc-prim HUnit test-framework test-framework-hunit
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/hvr/deepseq-generics";
-       description = "GHC.Generics-based Control.DeepSeq.rnf implementation";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "distributive" = callPackage
-    ({ mkDerivation, base, base-orphans, Cabal, cabal-doctest, doctest
-     , generic-deriving, hspec, tagged, transformers
-     , transformers-compat
-     }:
-     mkDerivation {
-       pname = "distributive";
-       version = "0.5.3";
-       sha256 = "0y566r97sfyvhsmd4yxiz4ns2mqgwf5bdbp56wgxl6wlkidq0wwi";
-       revision = "2";
-       editedCabalFile = "02j27xvlj0jw3b2jpfg6wbysj0blllin792wj6qnrgnrvd4haj7v";
-       setupHaskellDepends = [ base Cabal cabal-doctest ];
-       libraryHaskellDepends = [
-         base base-orphans tagged transformers transformers-compat
-       ];
-       testHaskellDepends = [ base doctest generic-deriving hspec ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/ekmett/distributive/";
-       description = "Distributive functors -- Dual to Traversable";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "dlist" = callPackage
-    ({ mkDerivation, base, deepseq }:
-     mkDerivation {
-       pname = "dlist";
-       version = "0.8.0.3";
-       sha256 = "0brgai4vs7xz29p06kd6gzg5bpa8iy3k7yzgcc44izspd74q4rw7";
-       libraryHaskellDepends = [ base deepseq ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/spl/dlist";
-       description = "Difference lists";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "doctest" = callPackage
-    ({ mkDerivation, base, base-compat, code-page, deepseq, directory
-     , filepath, ghc, ghc-paths, hspec, HUnit, mockery, process
-     , QuickCheck, setenv, silently, stringbuilder, syb, transformers
-     , with-location
-     }:
-     mkDerivation {
-       pname = "doctest";
-       version = "0.11.4";
-       sha256 = "09a170wr13p2c0w085d7qbf2blrvj1qmg92j61xqi17rwdwkvyjs";
-       isLibrary = true;
-       isExecutable = true;
-       libraryHaskellDepends = [
-         base base-compat code-page deepseq directory filepath ghc ghc-paths
-         process syb transformers
-       ];
-       executableHaskellDepends = [ base ];
-       testHaskellDepends = [
-         base base-compat code-page deepseq directory filepath ghc ghc-paths
-         hspec HUnit mockery process QuickCheck setenv silently
-         stringbuilder syb transformers with-location
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/sol/doctest#readme";
-       description = "Test interactive Haskell examples";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "entropy" = callPackage
-    ({ mkDerivation, base, bytestring, Cabal, directory, filepath
-     , process, unix
-     }:
-     mkDerivation {
-       pname = "entropy";
-       version = "0.3.8";
-       sha256 = "1l3lfigqvdlmxkz1wl7zdkmc0i2r5p6z4xzhiw8xdsbsw7aljfkl";
-       setupHaskellDepends = [ base Cabal directory filepath process ];
-       libraryHaskellDepends = [ base bytestring unix ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/TomMD/entropy";
-       description = "A platform independent entropy source";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "erf" = callPackage
-    ({ mkDerivation, base }:
-     mkDerivation {
-       pname = "erf";
-       version = "2.0.0.0";
-       sha256 = "0dxk2r32ajmmc05vaxcp0yw6vgv4lkbmh8jcshncn98xgsfbgw14";
-       libraryHaskellDepends = [ base ];
-       doHaddock = false;
-       doCheck = false;
-       description = "The error function, erf, and related functions";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "exceptions" = callPackage
-    ({ mkDerivation, base, mtl, QuickCheck, stm, template-haskell
-     , test-framework, test-framework-quickcheck2, transformers
-     , transformers-compat
-     }:
-     mkDerivation {
-       pname = "exceptions";
-       version = "0.8.3";
-       sha256 = "1gl7xzffsqmigam6zg0jsglncgzxqafld2p6kb7ccp9xirzdjsjd";
-       revision = "2";
-       editedCabalFile = "1vl59j0l7m53hkzlcfmdbqbab8dk4lp9gzwryn7nsr6ylg94wayw";
-       libraryHaskellDepends = [
-         base mtl stm template-haskell transformers transformers-compat
-       ];
-       testHaskellDepends = [
-         base mtl QuickCheck stm template-haskell test-framework
-         test-framework-quickcheck2 transformers transformers-compat
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/ekmett/exceptions/";
-       description = "Extensible optionally-pure exceptions";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "extensible-exceptions" = callPackage
-    ({ mkDerivation, base }:
-     mkDerivation {
-       pname = "extensible-exceptions";
-       version = "0.1.1.4";
-       sha256 = "1273nqws9ij1rp1bsq5jc7k2jxpqa0svawdbim05lf302y0firbc";
-       libraryHaskellDepends = [ base ];
-       doHaddock = false;
-       doCheck = false;
-       description = "Extensible exceptions";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "fail" = callPackage
-    ({ mkDerivation }:
-     mkDerivation {
-       pname = "fail";
-       version = "4.9.0.0";
-       sha256 = "18nlj6xvnggy61gwbyrpmvbdkq928wv0wx2zcsljb52kbhddnp3d";
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://prime.haskell.org/wiki/Libraries/Proposals/MonadFail";
-       description = "Forward-compatible MonadFail class";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "foundation" = callPackage
-    ({ mkDerivation, base, basement, gauge, ghc-prim }:
-     mkDerivation {
-       pname = "foundation";
-       version = "0.0.17";
-       sha256 = "00f2p47h715fjb3rpsxlf4jskgwk9sz5p692r09gspspqmrs5l84";
-       revision = "1";
-       editedCabalFile = "15y38y0mj4vc694jwh3cjgnq8xv5vv7954g633f7mw5f0hb3yxkn";
-       libraryHaskellDepends = [ base basement ghc-prim ];
-       testHaskellDepends = [ base basement ];
-       benchmarkHaskellDepends = [ base basement gauge ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/haskell-foundation/foundation";
-       description = "Alternative prelude with batteries and no dependencies";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "free" = callPackage
-    ({ mkDerivation, base, bifunctors, comonad, containers
-     , distributive, exceptions, mtl, prelude-extras, profunctors
-     , semigroupoids, semigroups, template-haskell, transformers
-     , transformers-compat
-     }:
-     mkDerivation {
-       pname = "free";
-       version = "4.12.4";
-       sha256 = "1147s393442xf4gkpbq0rd1p286vmykgx85mxhk5d1c7wfm4bzn9";
-       libraryHaskellDepends = [
-         base bifunctors comonad containers distributive exceptions mtl
-         prelude-extras profunctors semigroupoids semigroups
-         template-haskell transformers transformers-compat
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/ekmett/free/";
-       description = "Monads for free";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "gauge" = callPackage
-    ({ mkDerivation, base, basement, bytestring, code-page, containers
-     , deepseq, directory, HUnit, math-functions, mwc-random, tasty
-     , tasty-hunit, vector
-     }:
-     mkDerivation {
-       pname = "gauge";
-       version = "0.1.3";
-       sha256 = "1i97f00haj4832s2arbnqq19dpna54ygmchvnqkq00hsxk38cyc0";
-       libraryHaskellDepends = [
-         base basement code-page containers deepseq math-functions
-         mwc-random vector
-       ];
-       testHaskellDepends = [
-         base bytestring deepseq directory HUnit tasty tasty-hunit
-       ];
-       benchmarkHaskellDepends = [ base ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/vincenthz/hs-gauge";
-       description = "small framework for performance measurement and analysis";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "generic-deriving" = callPackage
-    ({ mkDerivation, base, containers, ghc-prim, hspec
-     , template-haskell
-     }:
-     mkDerivation {
-       pname = "generic-deriving";
-       version = "1.11.2";
-       sha256 = "1y92q4dmbyc24hjjvq02474s9grwabxffn16y31gzaqhm0m0z5i9";
-       libraryHaskellDepends = [
-         base containers ghc-prim template-haskell
-       ];
-       testHaskellDepends = [ base hspec template-haskell ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/dreixel/generic-deriving";
-       description = "Generic programming library for generalised deriving";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "ghc-paths" = callPackage
-    ({ mkDerivation, base, Cabal, directory }:
-     mkDerivation {
-       pname = "ghc-paths";
-       version = "0.1.0.9";
-       sha256 = "0ibrr1dxa35xx20cpp8jzgfak1rdmy344dfwq4vlq013c6w8z9mg";
-       revision = "2";
-       editedCabalFile = "1gs6biqbcabgmrwhc1bq1bdaxdwwh26v4mpvj5c7cfyigc64gwyk";
-       setupHaskellDepends = [ base Cabal directory ];
-       libraryHaskellDepends = [ base ];
-       doHaddock = false;
-       doCheck = false;
-       description = "Knowledge of GHC's installation directories";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "hamlet" = callPackage
-    ({ mkDerivation, base, shakespeare }:
-     mkDerivation {
-       pname = "hamlet";
-       version = "1.2.0";
-       sha256 = "0rla3ap3malk8j6mh07fr2aqvbscpy743wrfq3skgjv3j4jlpjfi";
-       libraryHaskellDepends = [ base shakespeare ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://www.yesodweb.com/book/shakespearean-templates";
-       description = "Haml-like template files that are compile-time checked (deprecated)";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "happstack-server" = callPackage
-    ({ mkDerivation, base, base64-bytestring, blaze-html, bytestring
-     , containers, directory, exceptions, extensible-exceptions
-     , filepath, hslogger, html, HUnit, monad-control, mtl, network
-     , network-uri, old-locale, parsec, process, sendfile, syb
-     , system-filepath, template-haskell, text, threads, time
-     , time-compat, transformers, transformers-base, transformers-compat
-     , unix, utf8-string, xhtml, zlib
-     }:
-     mkDerivation {
-       pname = "happstack-server";
-       version = "7.4.6.4";
-       sha256 = "1fd19qxpdj7iz4rjjwgi527naiw32l09gazr39skgzzf7m8ckiml";
-       libraryHaskellDepends = [
-         base base64-bytestring blaze-html bytestring containers directory
-         exceptions extensible-exceptions filepath hslogger html
-         monad-control mtl network network-uri old-locale parsec process
-         sendfile syb system-filepath template-haskell text threads time
-         time-compat transformers transformers-base transformers-compat unix
-         utf8-string xhtml zlib
-       ];
-       testHaskellDepends = [
-         base bytestring containers HUnit parsec zlib
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://happstack.com";
-       description = "Web related tools and services";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "happy" = callPackage
-    ({ mkDerivation, array, base, Cabal, containers, directory
-     , filepath, mtl, process
-     }:
-     mkDerivation {
-       pname = "happy";
-       version = "1.19.8";
-       sha256 = "186ky3bly0i3cc56qk3r7j7pxh2108aackq4n2lli7jmbnb3kxsd";
-       isLibrary = false;
-       isExecutable = true;
-       setupHaskellDepends = [ base Cabal directory filepath ];
-       executableHaskellDepends = [ array base containers mtl ];
-       testHaskellDepends = [ base process ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://www.haskell.org/happy/";
-       description = "Happy is a parser generator for Haskell";
-       license = stdenv.lib.licenses.bsd2;
-     }) {};
-  "hashable" = callPackage
-    ({ mkDerivation, base, bytestring, criterion, deepseq, ghc-prim
-     , HUnit, integer-gmp, QuickCheck, random, siphash, test-framework
-     , test-framework-hunit, test-framework-quickcheck2, text, unix
-     }:
-     mkDerivation {
-       pname = "hashable";
-       version = "1.2.6.1";
-       sha256 = "0ymv2mcrrgbdc2w39rib171fwnhg7fgp0sy4h8amrh1vw64qgjll";
-       revision = "2";
-       editedCabalFile = "0w4756sa04nk2bw3vnysb0y9d09zzg3c77aydkjfxz1hnl1dvnjn";
-       isLibrary = true;
-       isExecutable = true;
-       libraryHaskellDepends = [
-         base bytestring deepseq ghc-prim integer-gmp text
-       ];
-       testHaskellDepends = [
-         base bytestring ghc-prim HUnit QuickCheck random test-framework
-         test-framework-hunit test-framework-quickcheck2 text unix
-       ];
-       benchmarkHaskellDepends = [
-         base bytestring criterion ghc-prim integer-gmp siphash text
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/tibbe/hashable";
-       description = "A class for types that can be converted to a hash value";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "hashable-time" = callPackage
-    ({ mkDerivation, base, hashable, time }:
-     mkDerivation {
-       pname = "hashable-time";
-       version = "0.2.0.1";
-       sha256 = "0k932nyd08l3xxbh2g3n76py2f4kd9yw4s5a065vjz0xp6wjnxdm";
-       libraryHaskellDepends = [ base hashable time ];
-       doHaddock = false;
-       doCheck = false;
-       description = "Hashable instances for Data.Time";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "hashmap" = callPackage
-    ({ mkDerivation, base, containers, deepseq, hashable }:
-     mkDerivation {
-       pname = "hashmap";
-       version = "1.3.2";
-       sha256 = "15jppbxwqkwccdif789c7gvlfypyd98gnv1p5dh2kx977r19sh01";
-       libraryHaskellDepends = [ base containers deepseq hashable ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/foxik/hashmap";
-       description = "Persistent containers Map and Set based on hashing";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "haskell-lexer" = callPackage
-    ({ mkDerivation, base }:
-     mkDerivation {
-       pname = "haskell-lexer";
-       version = "1.0.1";
-       sha256 = "0rj3r1pk88hh3sk3mj61whp8czz5kpxhbc78xlr04bxwqjrjmm6p";
-       libraryHaskellDepends = [ base ];
-       doHaddock = false;
-       doCheck = false;
-       description = "A fully compliant Haskell 98 lexer";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "haskell-src-exts" = callPackage
-    ({ mkDerivation, array, base, containers, cpphs, directory
-     , filepath, ghc-prim, happy, mtl, pretty, pretty-show, smallcheck
-     , tasty, tasty-golden, tasty-smallcheck
-     }:
-     mkDerivation {
-       pname = "haskell-src-exts";
-       version = "1.18.2";
-       sha256 = "0hq9f6r67gkhad4cc4dhahrwrz9kxfibhk8qrw5j0p7cvh23hn1i";
-       libraryHaskellDepends = [ array base cpphs ghc-prim pretty ];
-       libraryToolDepends = [ happy ];
-       testHaskellDepends = [
-         base containers directory filepath mtl pretty-show smallcheck tasty
-         tasty-golden tasty-smallcheck
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/haskell-suite/haskell-src-exts";
-       description = "Manipulating Haskell source: abstract syntax, lexer, parser, and pretty-printer";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "hastache" = callPackage
-    ({ mkDerivation, base, blaze-builder, bytestring, containers
-     , directory, filepath, ieee754, mtl, process, syb, text
-     , transformers
-     }:
-     mkDerivation {
-       pname = "hastache";
-       version = "0.6.1";
-       sha256 = "0r5l8k157pgvz1ck4lfid5x05f2s0nlmwf33f4fj09b1kmk8k3wc";
-       revision = "5";
-       editedCabalFile = "0fwd1jd6sqkscmy2yq1w3dcl4va4w9n8mhs6ldrilh1cj6b54r3f";
-       isLibrary = true;
-       isExecutable = true;
-       libraryHaskellDepends = [
-         base blaze-builder bytestring containers directory filepath ieee754
-         mtl syb text transformers
-       ];
-       executableHaskellDepends = [
-         base blaze-builder bytestring containers directory filepath ieee754
-         mtl process syb text transformers
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/lymar/hastache";
-       description = "Haskell implementation of Mustache templates";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "hostname" = callPackage
-    ({ mkDerivation, base }:
-     mkDerivation {
-       pname = "hostname";
-       version = "1.0";
-       sha256 = "0p6gm4328946qxc295zb6vhwhf07l1fma82vd0siylnsnsqxlhwv";
-       libraryHaskellDepends = [ base ];
-       doHaddock = false;
-       doCheck = false;
-       description = "A very simple package providing a cross-platform means of determining the hostname";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "hscolour" = callPackage
-    ({ mkDerivation, base, containers }:
-     mkDerivation {
-       pname = "hscolour";
-       version = "1.24.2";
-       sha256 = "08ng635m1qylng1khm9nqvfw2wdhljy1q2wi4ly63nfaznx8dysm";
-       isLibrary = true;
-       isExecutable = true;
-       enableSeparateDataOutput = true;
-       libraryHaskellDepends = [ base containers ];
-       executableHaskellDepends = [ base containers ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://code.haskell.org/~malcolm/hscolour/";
-       description = "Colourise Haskell code";
-       license = "LGPL";
-     }) {};
-  "hslogger" = callPackage
-    ({ mkDerivation, base, containers, directory, HUnit, mtl, network
-     , old-locale, process, time, unix
-     }:
-     mkDerivation {
-       pname = "hslogger";
-       version = "1.2.10";
-       sha256 = "0as5gvlh6pi2gflakp695qnlizyyp059dqrhvjl4gjxalja6xjnp";
-       libraryHaskellDepends = [
-         base containers directory mtl network old-locale process time unix
-       ];
-       testHaskellDepends = [ base HUnit ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://software.complete.org/hslogger";
-       description = "Versatile logging framework";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "hspec" = callPackage
-    ({ mkDerivation, base, call-stack, directory, hspec-core
-     , hspec-discover, hspec-expectations, hspec-meta, HUnit, QuickCheck
-     , stringbuilder, transformers
-     }:
-     mkDerivation {
-       pname = "hspec";
-       version = "2.4.4";
-       sha256 = "08fg8w38xbhidw3pfn13ag3mnpp3rb1lzp7xpq47cncwv92k46mh";
-       libraryHaskellDepends = [
-         base call-stack hspec-core hspec-discover hspec-expectations HUnit
-         QuickCheck transformers
-       ];
-       testHaskellDepends = [
-         base call-stack directory hspec-core hspec-discover
-         hspec-expectations hspec-meta HUnit QuickCheck stringbuilder
-         transformers
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://hspec.github.io/";
-       description = "A Testing Framework for Haskell";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "hspec-core" = callPackage
-    ({ mkDerivation, ansi-terminal, array, async, base, call-stack
-     , deepseq, directory, filepath, hspec-expectations, hspec-meta
-     , HUnit, process, QuickCheck, quickcheck-io, random, setenv
-     , silently, temporary, tf-random, time, transformers
-     }:
-     mkDerivation {
-       pname = "hspec-core";
-       version = "2.4.4";
-       sha256 = "1pxzr3l8b9640mh904n51nwlr2338wak23781s48a9kzvwf347b0";
-       libraryHaskellDepends = [
-         ansi-terminal array async base call-stack deepseq directory
-         filepath hspec-expectations HUnit QuickCheck quickcheck-io random
-         setenv tf-random time transformers
-       ];
-       testHaskellDepends = [
-         ansi-terminal array async base call-stack deepseq directory
-         filepath hspec-expectations hspec-meta HUnit process QuickCheck
-         quickcheck-io random setenv silently temporary tf-random time
-         transformers
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://hspec.github.io/";
-       description = "A Testing Framework for Haskell";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "hspec-discover" = callPackage
-    ({ mkDerivation, base, directory, filepath, hspec-meta }:
-     mkDerivation {
-       pname = "hspec-discover";
-       version = "2.4.4";
-       sha256 = "0isx9nc59nw8pkh4r6ynd55dghqnzgrzn9pvrq6ail1y5z3knhkn";
-       isLibrary = true;
-       isExecutable = true;
-       libraryHaskellDepends = [ base directory filepath ];
-       executableHaskellDepends = [ base directory filepath ];
-       testHaskellDepends = [ base directory filepath hspec-meta ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://hspec.github.io/";
-       description = "Automatically discover and run Hspec tests";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "hspec-expectations" = callPackage
-    ({ mkDerivation, base, call-stack, HUnit, nanospec }:
-     mkDerivation {
-       pname = "hspec-expectations";
-       version = "0.8.2";
-       sha256 = "1vxl9zazbaapijr6zmcj72j9wf7ka1pirrjbwddwwddg3zm0g5l1";
-       libraryHaskellDepends = [ base call-stack HUnit ];
-       testHaskellDepends = [ base call-stack HUnit nanospec ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/hspec/hspec-expectations#readme";
-       description = "Catchy combinators for HUnit";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "hspec-meta" = callPackage
-    ({ mkDerivation, ansi-terminal, array, async, base, call-stack
-     , deepseq, directory, filepath, hspec-expectations, HUnit
-     , QuickCheck, quickcheck-io, random, setenv, time, transformers
-     }:
-     mkDerivation {
-       pname = "hspec-meta";
-       version = "2.4.4";
-       sha256 = "117n4j56wfh48xj02mv0wkp10bkr2xkyvwg7n7r2ynp03wrf9ykm";
-       isLibrary = true;
-       isExecutable = true;
-       libraryHaskellDepends = [
-         ansi-terminal array async base call-stack deepseq directory
-         filepath hspec-expectations HUnit QuickCheck quickcheck-io random
-         setenv time transformers
-       ];
-       executableHaskellDepends = [
-         ansi-terminal array async base call-stack deepseq directory
-         filepath hspec-expectations HUnit QuickCheck quickcheck-io random
-         setenv time transformers
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://hspec.github.io/";
-       description = "A version of Hspec which is used to test Hspec itself";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "html" = callPackage
-    ({ mkDerivation, base }:
-     mkDerivation {
-       pname = "html";
-       version = "1.0.1.2";
-       sha256 = "0q9hmfii62kc82ijlg238fxrzxhsivn42x5wd6ffcr9xldg4jd8c";
-       libraryHaskellDepends = [ base ];
-       doHaddock = false;
-       doCheck = false;
-       description = "HTML combinator library";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "http-types" = callPackage
-    ({ mkDerivation, array, base, blaze-builder, bytestring
-     , case-insensitive, doctest, hspec, QuickCheck
-     , quickcheck-instances, text
-     }:
-     mkDerivation {
-       pname = "http-types";
-       version = "0.9.1";
-       sha256 = "0l7mnvqyppxpnq6ds4a9f395zdbl22z3sxiry1myfs8wvj669vbv";
-       libraryHaskellDepends = [
-         array base blaze-builder bytestring case-insensitive text
-       ];
-       testHaskellDepends = [
-         base blaze-builder bytestring doctest hspec QuickCheck
-         quickcheck-instances text
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/aristidb/http-types";
-       description = "Generic HTTP types for Haskell (for both client and server code)";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "ieee754" = callPackage
-    ({ mkDerivation, base }:
-     mkDerivation {
-       pname = "ieee754";
-       version = "0.8.0";
-       sha256 = "1lcs521g9lzy9d7337vg4w7q7s8500rfqy7rcifcz6pm6yfgyb8f";
-       libraryHaskellDepends = [ base ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/patperry/hs-ieee754";
-       description = "Utilities for dealing with IEEE floating point numbers";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "integer-logarithms" = callPackage
-    ({ mkDerivation, array, base, ghc-prim, integer-gmp }:
-     mkDerivation {
-       pname = "integer-logarithms";
-       version = "1.0.2";
-       sha256 = "0w5mhak181zi6qr5h2zbcs9ymaqacisp9jwk99naz6s8zz5rq1ii";
-       libraryHaskellDepends = [ array base ghc-prim integer-gmp ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/phadej/integer-logarithms";
-       description = "Integer logarithms";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "js-flot" = callPackage
-    ({ mkDerivation, base, HTTP }:
-     mkDerivation {
-       pname = "js-flot";
-       version = "0.8.3";
-       sha256 = "0yjyzqh3qzhy5h3nql1fckw0gcfb0f4wj9pm85nafpfqp2kg58hv";
-       enableSeparateDataOutput = true;
-       libraryHaskellDepends = [ base ];
-       testHaskellDepends = [ base HTTP ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/ndmitchell/js-flot#readme";
-       description = "Obtain minified flot code";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "js-jquery" = callPackage
-    ({ mkDerivation, base, HTTP }:
-     mkDerivation {
-       pname = "js-jquery";
-       version = "3.2.1";
-       sha256 = "03qymiwnk24sigqjnl42i77rsx6vrgg5wjday0f2j0d6s213sl30";
-       enableSeparateDataOutput = true;
-       libraryHaskellDepends = [ base ];
-       testHaskellDepends = [ base HTTP ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/ndmitchell/js-jquery#readme";
-       description = "Obtain minified jQuery code";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "kan-extensions" = callPackage
-    ({ mkDerivation, adjunctions, array, base, comonad, containers
-     , contravariant, distributive, fail, free, mtl, semigroupoids
-     , tagged, transformers
-     }:
-     mkDerivation {
-       pname = "kan-extensions";
-       version = "5.0.2";
-       sha256 = "0bj88bgwxlx490f5r979idsm9dpdsb0ldzar9sa0jhj2jn2xx7hw";
-       libraryHaskellDepends = [
-         adjunctions array base comonad containers contravariant
-         distributive fail free mtl semigroupoids tagged transformers
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/ekmett/kan-extensions/";
-       description = "Kan extensions, Kan lifts, various forms of the Yoneda lemma, and (co)density (co)monads";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "language-haskell-extract" = callPackage
-    ({ mkDerivation, base, regex-posix, template-haskell }:
-     mkDerivation {
-       pname = "language-haskell-extract";
-       version = "0.2.4";
-       sha256 = "1nxcs7g8a1sp91bzpy4cj6s31k5pvc3gvig04cbrggv5cvjidnhl";
-       libraryHaskellDepends = [ base regex-posix template-haskell ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/finnsson/template-helper";
-       description = "Module to automatically extract functions from the local code";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "lens" = callPackage
-    ({ mkDerivation, array, base, base-orphans, bifunctors, bytestring
-     , Cabal, cabal-doctest, call-stack, comonad, containers
-     , contravariant, criterion, deepseq, directory, distributive
-     , doctest, exceptions, filepath, free, generic-deriving, ghc-prim
-     , hashable, HUnit, kan-extensions, mtl, nats, parallel, profunctors
-     , QuickCheck, reflection, semigroupoids, semigroups, simple-reflect
-     , tagged, template-haskell, test-framework, test-framework-hunit
-     , test-framework-quickcheck2, test-framework-th, text
-     , th-abstraction, transformers, transformers-compat
-     , unordered-containers, vector, void
-     }:
-     mkDerivation {
-       pname = "lens";
-       version = "4.15.4";
-       sha256 = "1lkwlnhgpgnsz046mw4qs0fa7h4l012gilrr3nf3spllsy3pnbkl";
-       setupHaskellDepends = [ base Cabal cabal-doctest filepath ];
-       libraryHaskellDepends = [
-         array base base-orphans bifunctors bytestring call-stack comonad
-         containers contravariant distributive exceptions filepath free
-         ghc-prim hashable kan-extensions mtl parallel profunctors
-         reflection semigroupoids semigroups tagged template-haskell text
-         th-abstraction transformers transformers-compat
-         unordered-containers vector void
-       ];
-       testHaskellDepends = [
-         base bytestring containers deepseq directory doctest filepath
-         generic-deriving HUnit mtl nats parallel QuickCheck semigroups
-         simple-reflect test-framework test-framework-hunit
-         test-framework-quickcheck2 test-framework-th text transformers
-         unordered-containers vector
-       ];
-       benchmarkHaskellDepends = [
-         base bytestring comonad containers criterion deepseq
-         generic-deriving transformers unordered-containers vector
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/ekmett/lens/";
-       description = "Lenses, Folds and Traversals";
-       license = stdenv.lib.licenses.bsd2;
-     }) {};
-  "lens-action" = callPackage
-    ({ mkDerivation, base, Cabal, cabal-doctest, comonad, contravariant
-     , directory, doctest, filepath, lens, mtl, profunctors
-     , semigroupoids, semigroups, transformers
-     }:
-     mkDerivation {
-       pname = "lens-action";
-       version = "0.2.2";
-       sha256 = "1skhczbl774sb0202b8allm96b67wqsl5fd7jdr9i6a20hyx1gqr";
-       setupHaskellDepends = [ base Cabal cabal-doctest ];
-       libraryHaskellDepends = [
-         base comonad contravariant lens mtl profunctors semigroupoids
-         semigroups transformers
-       ];
-       testHaskellDepends = [ base directory doctest filepath ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/ekmett/lens-action/";
-       description = "Monadic Getters and Folds";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "lifted-base" = callPackage
-    ({ mkDerivation, base, criterion, monad-control, monad-peel
-     , transformers, transformers-base
-     }:
-     mkDerivation {
-       pname = "lifted-base";
-       version = "0.2.3.11";
-       sha256 = "1ass00wfa91z5xp2xmm97xrvwm7j5hdkxid5cqvr3xbwrsgpmi4f";
-       libraryHaskellDepends = [ base monad-control transformers-base ];
-       benchmarkHaskellDepends = [
-         base criterion monad-control monad-peel transformers
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/basvandijk/lifted-base";
-       description = "lifted IO operations from the base library";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "logging-facade" = callPackage
-    ({ mkDerivation, base, call-stack, hspec, transformers }:
-     mkDerivation {
-       pname = "logging-facade";
-       version = "0.3.0";
-       sha256 = "0d0lwxxgd16is9aw6v3ps4r9prv3dj8xscmm45fvzq3nicjiawcf";
-       libraryHaskellDepends = [ base call-stack transformers ];
-       testHaskellDepends = [ base hspec ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/sol/logging-facade#readme";
-       description = "Simple logging abstraction that allows multiple back-ends";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "logict" = callPackage
-    ({ mkDerivation, base, mtl }:
-     mkDerivation {
-       pname = "logict";
-       version = "0.6.0.2";
-       sha256 = "07hnirv6snnym2r7iijlfz00b60jpy2856zvqxh989q0in7bd0hi";
-       libraryHaskellDepends = [ base mtl ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://code.haskell.org/~dolio/";
-       description = "A backtracking logic-programming monad";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "markdown" = callPackage
-    ({ mkDerivation, attoparsec, base, blaze-html, blaze-markup
-     , conduit, conduit-extra, containers, data-default, directory
-     , filepath, hspec, text, transformers, xml-conduit, xml-types
-     , xss-sanitize
-     }:
-     mkDerivation {
-       pname = "markdown";
-       version = "0.1.16";
-       sha256 = "11gdawvwji7301lm07z5q94g5jlf9iq63wf6k7f6sc88w99b7c08";
-       libraryHaskellDepends = [
-         attoparsec base blaze-html blaze-markup conduit conduit-extra
-         containers data-default text transformers xml-conduit xml-types
-         xss-sanitize
-       ];
-       testHaskellDepends = [
-         base blaze-html conduit conduit-extra containers directory filepath
-         hspec text transformers
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/snoyberg/markdown";
-       description = "Convert Markdown to HTML, with XSS protection";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "math-functions" = callPackage
-    ({ mkDerivation, base, deepseq, erf, HUnit, primitive, QuickCheck
-     , test-framework, test-framework-hunit, test-framework-quickcheck2
-     , vector, vector-th-unbox
-     }:
-     mkDerivation {
-       pname = "math-functions";
-       version = "0.2.1.0";
-       sha256 = "1sv5vabsx332v1lpb6v3jv4zrzvpx1n7yprzd8wlcda5vsc5a6zp";
-       libraryHaskellDepends = [
-         base deepseq primitive vector vector-th-unbox
-       ];
-       testHaskellDepends = [
-         base deepseq erf HUnit primitive QuickCheck test-framework
-         test-framework-hunit test-framework-quickcheck2 vector
-         vector-th-unbox
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/bos/math-functions";
-       description = "Special functions and Chebyshev polynomials";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "memory" = callPackage
-    ({ mkDerivation, base, basement, bytestring, deepseq, foundation
-     , ghc-prim, tasty, tasty-hunit, tasty-quickcheck
-     }:
-     mkDerivation {
-       pname = "memory";
-       version = "0.14.10";
-       sha256 = "01i1nx83n5lspwdhkhhjxxcp9agf9y70547dzs5m8zl043jmd0z4";
-       libraryHaskellDepends = [
-         base basement bytestring deepseq foundation ghc-prim
-       ];
-       testHaskellDepends = [
-         base foundation tasty tasty-hunit tasty-quickcheck
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/vincenthz/hs-memory";
-       description = "memory and related abstraction stuff";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "mmorph" = callPackage
-    ({ mkDerivation, base, mtl, transformers, transformers-compat }:
-     mkDerivation {
-       pname = "mmorph";
-       version = "1.0.9";
-       sha256 = "0qs5alhy719a14lrs7rnh2qsn1146czg68gvgylf4m5jh4w7vwp1";
-       revision = "1";
-       editedCabalFile = "1xxf78qi08qsis2q785s0ra29wjxnxw8pyns0dsqp4a6cybd3mjd";
-       libraryHaskellDepends = [
-         base mtl transformers transformers-compat
-       ];
-       doHaddock = false;
-       doCheck = false;
-       description = "Monad morphisms";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "mockery" = callPackage
-    ({ mkDerivation, base, base-compat, bytestring, directory, filepath
-     , hspec, logging-facade, temporary
-     }:
-     mkDerivation {
-       pname = "mockery";
-       version = "0.3.5";
-       sha256 = "09ypgm3z69gq8mj6y66ss58kbjnk15r8frwcwbqcfbfksfnfv8dp";
-       libraryHaskellDepends = [
-         base base-compat bytestring directory filepath logging-facade
-         temporary
-       ];
-       testHaskellDepends = [
-         base base-compat bytestring directory filepath hspec logging-facade
-         temporary
-       ];
-       doHaddock = false;
-       doCheck = false;
-       description = "Support functions for automated testing";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "monad-control" = callPackage
-    ({ mkDerivation, base, stm, transformers, transformers-base
-     , transformers-compat
-     }:
-     mkDerivation {
-       pname = "monad-control";
-       version = "1.0.2.2";
-       sha256 = "0cz4ww3vp96crdqrh7w86rzrs7gs8c1z7rq84yxxhbiz28fs4d0y";
-       libraryHaskellDepends = [
-         base stm transformers transformers-base transformers-compat
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/basvandijk/monad-control";
-       description = "Lift control operations, like exception catching, through monad transformers";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "monad-par" = callPackage
-    ({ mkDerivation, abstract-deque, abstract-par, array, base
-     , containers, deepseq, HUnit, monad-par-extras, mtl, mwc-random
-     , parallel, QuickCheck, test-framework, test-framework-hunit
-     , test-framework-quickcheck2, test-framework-th, time
-     }:
-     mkDerivation {
-       pname = "monad-par";
-       version = "0.3.4.8";
-       sha256 = "0ldrzqy24fsszvn2a2nr77m2ih7xm0h9bgkjyv1l274aj18xyk7q";
-       libraryHaskellDepends = [
-         abstract-deque abstract-par array base containers deepseq
-         monad-par-extras mtl mwc-random parallel
-       ];
-       testHaskellDepends = [
-         abstract-deque abstract-par array base containers deepseq HUnit
-         monad-par-extras mtl mwc-random QuickCheck test-framework
-         test-framework-hunit test-framework-quickcheck2 test-framework-th
-         time
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/simonmar/monad-par";
-       description = "A library for parallel programming based on a monad";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "monad-par-extras" = callPackage
-    ({ mkDerivation, abstract-par, base, cereal, deepseq, mtl, random
-     , transformers
-     }:
-     mkDerivation {
-       pname = "monad-par-extras";
-       version = "0.3.3";
-       sha256 = "0bl4bd6jzdc5zm20q1g67ppkfh6j6yn8fwj6msjayj621cck67p2";
-       libraryHaskellDepends = [
-         abstract-par base cereal deepseq mtl random transformers
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/simonmar/monad-par";
-       description = "Combinators and extra features for Par monads";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "monad-peel" = callPackage
-    ({ mkDerivation, base, extensible-exceptions, HUnit, test-framework
-     , test-framework-hunit, transformers
-     }:
-     mkDerivation {
-       pname = "monad-peel";
-       version = "0.2.1.2";
-       sha256 = "1x1kr5pk8ksw8xcm19c50jx8m0crf3m3qp73k31dnl9r1w4ykm9d";
-       libraryHaskellDepends = [
-         base extensible-exceptions transformers
-       ];
-       testHaskellDepends = [
-         base extensible-exceptions HUnit test-framework
-         test-framework-hunit transformers
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://andersk.mit.edu/haskell/monad-peel/";
-       description = "Lift control operations like exception catching through monad transformers";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "monads-tf" = callPackage
-    ({ mkDerivation, base, transformers }:
-     mkDerivation {
-       pname = "monads-tf";
-       version = "0.1.0.3";
-       sha256 = "1wdhskwa6dw8qljbvwpyxj8ca6y95q2np7z4y4q6bpf4anmd5794";
-       libraryHaskellDepends = [ base transformers ];
-       doHaddock = false;
-       doCheck = false;
-       description = "Monad classes, using type families";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "mtl" = callPackage
-    ({ mkDerivation, base, transformers }:
-     mkDerivation {
-       pname = "mtl";
-       version = "2.2.1";
-       sha256 = "1icdbj2rshzn0m1zz5wa7v3xvkf6qw811p4s7jgqwvx1ydwrvrfa";
-       revision = "1";
-       editedCabalFile = "0fsa965g9h23mlfjzghmmhcb9dmaq8zpm374gby6iwgdx47q0njb";
-       libraryHaskellDepends = [ base transformers ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/ekmett/mtl";
-       description = "Monad classes, using functional dependencies";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "mwc-random" = callPackage
-    ({ mkDerivation, base, HUnit, math-functions, primitive, QuickCheck
-     , statistics, test-framework, test-framework-hunit
-     , test-framework-quickcheck2, time, vector
-     }:
-     mkDerivation {
-       pname = "mwc-random";
-       version = "0.13.6.0";
-       sha256 = "05j7yh0hh9nxic3dijmzv44kc6gzclvamdph7sq7w19wq57k6pq6";
-       libraryHaskellDepends = [
-         base math-functions primitive time vector
-       ];
-       testHaskellDepends = [
-         base HUnit QuickCheck statistics test-framework
-         test-framework-hunit test-framework-quickcheck2 vector
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/bos/mwc-random";
-       description = "Fast, high quality pseudo random number generation";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "nanospec" = callPackage
-    ({ mkDerivation, base, hspec, silently }:
-     mkDerivation {
-       pname = "nanospec";
-       version = "0.2.1";
-       sha256 = "0jq2l1lmy4hcl6r975xcg86xr1y7jfxr3qn27ibsmjbzlnxdkjyv";
-       libraryHaskellDepends = [ base ];
-       testHaskellDepends = [ base hspec silently ];
-       doHaddock = false;
-       doCheck = false;
-       description = "A lightweight implementation of a subset of Hspec's API";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "nats" = callPackage
-    ({ mkDerivation }:
-     mkDerivation {
-       pname = "nats";
-       version = "1.1.1";
-       sha256 = "1kfl2yy97nb7q0j17v96rl73xvi3z4db9bk0xychc76dax41n78k";
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/ekmett/nats/";
-       description = "Natural numbers";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "network" = callPackage
-    ({ mkDerivation, base, bytestring, doctest, HUnit, test-framework
-     , test-framework-hunit, unix
-     }:
-     mkDerivation {
-       pname = "network";
-       version = "2.6.3.2";
-       sha256 = "1dn092zfqmxfbzln6d0khka4gizzjivf2yja9w9hwb5g9q3pfi1m";
-       revision = "1";
-       editedCabalFile = "17234sy0vqic8g9wg8gmfmc0by50scjwbdk8bkcl9kjf3fvs4nyx";
-       libraryHaskellDepends = [ base bytestring unix ];
-       testHaskellDepends = [
-         base bytestring doctest HUnit test-framework test-framework-hunit
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/haskell/network";
-       description = "Low-level networking interface";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "network-uri" = callPackage
-    ({ mkDerivation, base, deepseq, HUnit, parsec, test-framework
-     , test-framework-hunit, test-framework-quickcheck2
-     }:
-     mkDerivation {
-       pname = "network-uri";
-       version = "2.6.1.0";
-       sha256 = "1w27zkvn39kjr9lmw9421y8w43h572ycsfafsb7kyvr3a4ihlgj2";
-       revision = "1";
-       editedCabalFile = "141nj7q0p9wkn5gr41ayc63cgaanr9m59yym47wpxqr3c334bk32";
-       libraryHaskellDepends = [ base deepseq parsec ];
-       testHaskellDepends = [
-         base HUnit test-framework test-framework-hunit
-         test-framework-quickcheck2
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/haskell/network-uri";
-       description = "URI manipulation";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "old-locale" = callPackage
-    ({ mkDerivation, base }:
-     mkDerivation {
-       pname = "old-locale";
-       version = "1.0.0.7";
-       sha256 = "0l3viphiszvz5wqzg7a45zp40grwlab941q5ay29iyw8p3v8pbyv";
-       revision = "2";
-       editedCabalFile = "04b9vn007hlvsrx4ksd3r8r3kbyaj2kvwxchdrmd4370qzi8p6gs";
-       libraryHaskellDepends = [ base ];
-       doHaddock = false;
-       doCheck = false;
-       description = "locale library";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "old-time" = callPackage
-    ({ mkDerivation, base, old-locale }:
-     mkDerivation {
-       pname = "old-time";
-       version = "1.1.0.3";
-       sha256 = "1h9b26s3kfh2k0ih4383w90ibji6n0iwamxp6rfp2lbq1y5ibjqw";
-       revision = "2";
-       editedCabalFile = "1j6ln1dkvhdvnwl33bp0xf9lhc4sybqk0aw42p8cq81xwwzbn7y9";
-       libraryHaskellDepends = [ base old-locale ];
-       doHaddock = false;
-       doCheck = false;
-       description = "Time library";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "options" = callPackage
-    ({ mkDerivation, base, containers, monads-tf, transformers }:
-     mkDerivation {
-       pname = "options";
-       version = "1.2.1.1";
-       sha256 = "0qjs0v1ny52w51n5582d4z8wy9h6n0zw1xb5dh686ff5wadflgi8";
-       libraryHaskellDepends = [ base containers monads-tf transformers ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://john-millikin.com/software/haskell-options/";
-       description = "A powerful and easy-to-use command-line option parser";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "optparse-applicative" = callPackage
-    ({ mkDerivation, ansi-wl-pprint, base, process, QuickCheck
-     , transformers, transformers-compat
-     }:
-     mkDerivation {
-       pname = "optparse-applicative";
-       version = "0.13.2.0";
-       sha256 = "18kcjldpzay3k3309rvb9vqrp5b1gqp0hgymynqx7x2kgv7cz0sw";
-       libraryHaskellDepends = [
-         ansi-wl-pprint base process transformers transformers-compat
-       ];
-       testHaskellDepends = [ base QuickCheck ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/pcapriotti/optparse-applicative";
-       description = "Utilities and combinators for parsing command line options";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "parallel" = callPackage
-    ({ mkDerivation, array, base, containers, deepseq }:
-     mkDerivation {
-       pname = "parallel";
-       version = "3.2.1.1";
-       sha256 = "05rw8zhpqhx31zi6vg7zpyciaarh24j7g2p613xrpyrnksybjfrj";
-       libraryHaskellDepends = [ array base containers deepseq ];
-       doHaddock = false;
-       doCheck = false;
-       description = "Parallel programming library";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "parsec" = callPackage
-    ({ mkDerivation, base, bytestring, mtl, text }:
-     mkDerivation {
-       pname = "parsec";
-       version = "3.1.11";
-       sha256 = "0vk7q9j2128q191zf1sg0ylj9s9djwayqk9747k0a5fin4f2b1vg";
-       libraryHaskellDepends = [ base bytestring mtl text ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/aslatter/parsec";
-       description = "Monadic parser combinators";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "patience" = callPackage
-    ({ mkDerivation, base, containers }:
-     mkDerivation {
-       pname = "patience";
-       version = "0.1.1";
-       sha256 = "0qyv20gqy9pb1acy700ahv70lc6vprcwb26cc7fcpcs4scsc7irm";
-       libraryHaskellDepends = [ base containers ];
-       doHaddock = false;
-       doCheck = false;
-       description = "Patience diff and longest increasing subsequence";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "pcre-light" = callPackage
-    ({ mkDerivation, base, bytestring, pcre }:
-     mkDerivation {
-       pname = "pcre-light";
-       version = "0.4.0.4";
-       sha256 = "0xcyi1fivwg7a92mch5bcqzmrfxzqj42rmb3m8kgs61x4qwpxj82";
-       libraryHaskellDepends = [ base bytestring ];
-       libraryPkgconfigDepends = [ pcre ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/Daniel-Diaz/pcre-light";
-       description = "Portable regex library for Perl 5 compatible regular expressions";
-       license = stdenv.lib.licenses.bsd3;
-     }) {inherit (pkgs) pcre;};
-  "polyparse" = callPackage
-    ({ mkDerivation, base, bytestring, text }:
-     mkDerivation {
-       pname = "polyparse";
-       version = "1.12";
-       sha256 = "05dya1vdvq29hkhkdlsglzhw7bdn51rvs1javs0q75nf99c66k7m";
-       libraryHaskellDepends = [ base bytestring text ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://code.haskell.org/~malcolm/polyparse/";
-       description = "A variety of alternative parser combinator libraries";
-       license = "LGPL";
-     }) {};
-  "prelude-extras" = callPackage
-    ({ mkDerivation, base }:
-     mkDerivation {
-       pname = "prelude-extras";
-       version = "0.4.0.3";
-       sha256 = "0xzqdf3nl2h0ra4gnslm1m1nsxlsgc0hh6ky3vn578vh11zhifq9";
-       libraryHaskellDepends = [ base ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/ekmett/prelude-extras";
-       description = "Higher order versions of Prelude classes";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "pretty-show" = callPackage
-    ({ mkDerivation, array, base, filepath, ghc-prim, happy
-     , haskell-lexer, pretty
-     }:
-     mkDerivation {
-       pname = "pretty-show";
-       version = "1.6.15";
-       sha256 = "16ik7dhagyr3is5dmkihw109l4d0500vi55z46p8lhigmfwqpn2n";
-       isLibrary = true;
-       isExecutable = true;
-       enableSeparateDataOutput = true;
-       libraryHaskellDepends = [
-         array base filepath ghc-prim haskell-lexer pretty
-       ];
-       libraryToolDepends = [ happy ];
-       executableHaskellDepends = [ base ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://wiki.github.com/yav/pretty-show";
-       description = "Tools for working with derived `Show` instances and generic inspection of values";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "primitive" = callPackage
-    ({ mkDerivation, base, ghc-prim, transformers }:
-     mkDerivation {
-       pname = "primitive";
-       version = "0.6.2.0";
-       sha256 = "1q9a537av81c0lvcdzc8i5hqjx3209f5448d1smkyaz22c1dgs5q";
-       revision = "1";
-       editedCabalFile = "0d61g8ppsdajdqykl2kc46kq00aamsf12v60ilgrf58dbji9sz56";
-       libraryHaskellDepends = [ base ghc-prim transformers ];
-       testHaskellDepends = [ base ghc-prim ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/haskell/primitive";
-       description = "Primitive memory-related operations";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "profunctors" = callPackage
-    ({ mkDerivation, base, base-orphans, bifunctors, comonad
-     , contravariant, distributive, tagged, transformers
-     }:
-     mkDerivation {
-       pname = "profunctors";
-       version = "5.2.1";
-       sha256 = "0pcwjp813d3mrzb7qf7dzkspf85xnfj1m2snhjgnvwx6vw07w877";
-       libraryHaskellDepends = [
-         base base-orphans bifunctors comonad contravariant distributive
-         tagged transformers
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/ekmett/profunctors/";
-       description = "Profunctors";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "quickcheck-instances" = callPackage
-    ({ mkDerivation, array, base, bytestring, containers, hashable
-     , old-time, QuickCheck, scientific, text, time
-     , unordered-containers, vector
-     }:
-     mkDerivation {
-       pname = "quickcheck-instances";
-       version = "0.3.12";
-       sha256 = "1wwvkzpams7i0j7nk5qj8vvhj8x5zcbgbgrpczszgvshva4bkmfx";
-       revision = "2";
-       editedCabalFile = "1v1r7gidkjc2v4dw1id57raqnjqv4rc10pa2l6xhhg0dzrnw28a3";
-       libraryHaskellDepends = [
-         array base bytestring containers hashable old-time QuickCheck
-         scientific text time unordered-containers vector
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/aslatter/qc-instances";
-       description = "Common quickcheck instances";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "quickcheck-io" = callPackage
-    ({ mkDerivation, base, HUnit, QuickCheck }:
-     mkDerivation {
-       pname = "quickcheck-io";
-       version = "0.2.0";
-       sha256 = "08k4v7pkgjf30pv5j2dfv1gqv6hclxlniyq2sps8zq4zswcr2xzv";
-       libraryHaskellDepends = [ base HUnit QuickCheck ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/hspec/quickcheck-io#readme";
-       description = "Use HUnit assertions as QuickCheck properties";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "quickcheck-unicode" = callPackage
-    ({ mkDerivation, base, QuickCheck }:
-     mkDerivation {
-       pname = "quickcheck-unicode";
-       version = "1.0.1.0";
-       sha256 = "0s43s1bzbg3gwsjgm7fpyksd1339f0m26dlw2famxwyzgvm0a80k";
-       libraryHaskellDepends = [ base QuickCheck ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/bos/quickcheck-unicode";
-       description = "Generator and shrink functions for testing Unicode-related software";
-       license = stdenv.lib.licenses.bsd2;
-     }) {};
-  "random" = callPackage
-    ({ mkDerivation, base, time }:
-     mkDerivation {
-       pname = "random";
-       version = "1.1";
-       sha256 = "0nis3lbkp8vfx8pkr6v7b7kr5m334bzb0fk9vxqklnp2aw8a865p";
-       revision = "1";
-       editedCabalFile = "1pv5d7bm2rgap7llp5vjsplrg048gvf0226y0v19gpvdsx7n4rvv";
-       libraryHaskellDepends = [ base time ];
-       testHaskellDepends = [ base ];
-       doHaddock = false;
-       doCheck = false;
-       description = "random number library";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "reflection" = callPackage
-    ({ mkDerivation, base, template-haskell }:
-     mkDerivation {
-       pname = "reflection";
-       version = "2.1.2";
-       sha256 = "0f9w0akbm6p8h7kzgcd2f6nnpw1wy84pqn45vfz1ch5j0hn8h2d9";
-       libraryHaskellDepends = [ base template-haskell ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/ekmett/reflection";
-       description = "Reifies arbitrary terms into types that can be reflected back into terms";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "regex-base" = callPackage
-    ({ mkDerivation, array, base, bytestring, containers, mtl }:
-     mkDerivation {
-       pname = "regex-base";
-       version = "0.93.2";
-       sha256 = "0y1j4h2pg12c853nzmczs263di7xkkmlnsq5dlp5wgbgl49mgp10";
-       libraryHaskellDepends = [ array base bytestring containers mtl ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://sourceforge.net/projects/lazy-regex";
-       description = "Replaces/Enhances Text.Regex";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "regex-posix" = callPackage
-    ({ mkDerivation, array, base, bytestring, containers, regex-base }:
-     mkDerivation {
-       pname = "regex-posix";
-       version = "0.95.2";
-       sha256 = "0gkhzhj8nvfn1ija31c7xnl6p0gadwii9ihyp219ck2arlhrj0an";
-       libraryHaskellDepends = [
-         array base bytestring containers regex-base
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://sourceforge.net/projects/lazy-regex";
-       description = "Replaces/Enhances Text.Regex";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "regex-tdfa" = callPackage
-    ({ mkDerivation, array, base, bytestring, containers, ghc-prim, mtl
-     , parsec, regex-base
-     }:
-     mkDerivation {
-       pname = "regex-tdfa";
-       version = "1.2.2";
-       sha256 = "0f8x8wyr6m21g8dnxvnvalz5bsq37l125l6qhs0fscbvprsxc4nb";
-       libraryHaskellDepends = [
-         array base bytestring containers ghc-prim mtl parsec regex-base
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/ChrisKuklewicz/regex-tdfa";
-       description = "Replaces/Enhances Text.Regex";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "resourcet" = callPackage
-    ({ mkDerivation, base, containers, exceptions, hspec, lifted-base
-     , mmorph, monad-control, mtl, transformers, transformers-base
-     , transformers-compat
-     }:
-     mkDerivation {
-       pname = "resourcet";
-       version = "1.1.9";
-       sha256 = "1x9f2qz57agl3xljp1wi0ab51p13czrpf6qjp3506rl9dg99j6as";
-       libraryHaskellDepends = [
-         base containers exceptions lifted-base mmorph monad-control mtl
-         transformers transformers-base transformers-compat
-       ];
-       testHaskellDepends = [ base hspec lifted-base transformers ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/snoyberg/conduit";
-       description = "Deterministic allocation and freeing of scarce resources";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "safe" = callPackage
-    ({ mkDerivation, base, deepseq, QuickCheck }:
-     mkDerivation {
-       pname = "safe";
-       version = "0.3.15";
-       sha256 = "0bbalr2n92akwcgdyl5ff45h8d4waamj1lp7ly6mdgda17k4lpm3";
-       libraryHaskellDepends = [ base ];
-       testHaskellDepends = [ base deepseq QuickCheck ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/ndmitchell/safe#readme";
-       description = "Library of safe (exception free) functions";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "safecopy" = callPackage
-    ({ mkDerivation, array, base, bytestring, cereal, containers, lens
-     , lens-action, old-time, QuickCheck, quickcheck-instances, tasty
-     , tasty-quickcheck, template-haskell, text, time, vector
-     }:
-     mkDerivation {
-       pname = "safecopy";
-       version = "0.9.3.3";
-       sha256 = "17msazxg0iqvmsn4cwlnr1hwcw5bfp276zsg7x5r47ifi9j748nb";
-       libraryHaskellDepends = [
-         array base bytestring cereal containers old-time template-haskell
-         text time vector
-       ];
-       testHaskellDepends = [
-         array base cereal containers lens lens-action QuickCheck
-         quickcheck-instances tasty tasty-quickcheck template-haskell time
-         vector
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/acid-state/safecopy";
-       description = "Binary serialization with version control";
-       license = stdenv.lib.licenses.publicDomain;
-     }) {};
-  "scientific" = callPackage
-    ({ mkDerivation, base, binary, bytestring, containers, criterion
-     , deepseq, hashable, integer-gmp, integer-logarithms, primitive
-     , QuickCheck, smallcheck, tasty, tasty-ant-xml, tasty-hunit
-     , tasty-quickcheck, tasty-smallcheck, text
-     }:
-     mkDerivation {
-       pname = "scientific";
-       version = "0.3.5.2";
-       sha256 = "0msnjz7ml0zycw9bssslxbg0nigziw7vs5km4q3vjbs8jpzpkr2w";
-       revision = "2";
-       editedCabalFile = "0wsrd213480p3pqrd6i650fr092yv7dhla7a85p8154pn5gvbr0a";
-       libraryHaskellDepends = [
-         base binary bytestring containers deepseq hashable integer-gmp
-         integer-logarithms primitive text
-       ];
-       testHaskellDepends = [
-         base binary bytestring QuickCheck smallcheck tasty tasty-ant-xml
-         tasty-hunit tasty-quickcheck tasty-smallcheck text
-       ];
-       benchmarkHaskellDepends = [ base criterion ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/basvandijk/scientific";
-       description = "Numbers represented using scientific notation";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "semigroupoids" = callPackage
-    ({ mkDerivation, base, base-orphans, bifunctors, Cabal
-     , cabal-doctest, comonad, containers, contravariant, distributive
-     , doctest, hashable, semigroups, tagged, transformers
-     , transformers-compat, unordered-containers
-     }:
-     mkDerivation {
-       pname = "semigroupoids";
-       version = "5.2.1";
-       sha256 = "006jys6kvckkmbnhf4jc51sh64hamkz464mr8ciiakybrfvixr3r";
-       revision = "3";
-       editedCabalFile = "0wzcnpz8pyjk823vqnq5s8krsb8i6cw573hcschpd9x5ynq4li70";
-       setupHaskellDepends = [ base Cabal cabal-doctest ];
-       libraryHaskellDepends = [
-         base base-orphans bifunctors comonad containers contravariant
-         distributive hashable semigroups tagged transformers
-         transformers-compat unordered-containers
-       ];
-       testHaskellDepends = [ base doctest ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/ekmett/semigroupoids";
-       description = "Semigroupoids: Category sans id";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "semigroups" = callPackage
-    ({ mkDerivation, base }:
-     mkDerivation {
-       pname = "semigroups";
-       version = "0.18.3";
-       sha256 = "1jm9wnb5jmwdk4i9qbwfay69ydi76xi0qqi9zqp6wh3jd2c7qa9m";
-       libraryHaskellDepends = [ base ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/ekmett/semigroups/";
-       description = "Anything that associates";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "sendfile" = callPackage
-    ({ mkDerivation, base, bytestring, network }:
-     mkDerivation {
-       pname = "sendfile";
-       version = "0.7.9";
-       sha256 = "0hnw1ym81cff49dwww19kgbs4s0kpandbvn6h5cml3y0p1nxybqh";
-       libraryHaskellDepends = [ base bytestring network ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://hub.darcs.net/stepcut/sendfile";
-       description = "A portable sendfile library";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "setenv" = callPackage
-    ({ mkDerivation, base, unix }:
-     mkDerivation {
-       pname = "setenv";
-       version = "0.1.1.3";
-       sha256 = "0cnbgrvb9byyahb37zlqrj05rj25v190crgcw8wmlgf0mwwxyn73";
-       revision = "1";
-       editedCabalFile = "0ny4g3kjys0hqg41mnwrsymy1bwhl8l169kis4y4fa58sb06m4f5";
-       libraryHaskellDepends = [ base unix ];
-       doHaddock = false;
-       doCheck = false;
-       description = "A cross-platform library for setting environment variables";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "shakespeare" = callPackage
-    ({ mkDerivation, aeson, base, blaze-html, blaze-markup, bytestring
-     , containers, directory, exceptions, ghc-prim, hspec, HUnit, parsec
-     , process, scientific, template-haskell, text, time, transformers
-     , unordered-containers, vector
-     }:
-     mkDerivation {
-       pname = "shakespeare";
-       version = "2.0.14.1";
-       sha256 = "02pahbvibll4jmbq6p5vxr2r4mmrfx3h0c8v6qbj4rlq96lc6a23";
-       libraryHaskellDepends = [
-         aeson base blaze-html blaze-markup bytestring containers directory
-         exceptions ghc-prim parsec process scientific template-haskell text
-         time transformers unordered-containers vector
-       ];
-       testHaskellDepends = [
-         aeson base blaze-html blaze-markup bytestring containers directory
-         exceptions ghc-prim hspec HUnit parsec process template-haskell
-         text time transformers
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://www.yesodweb.com/book/shakespearean-templates";
-       description = "A toolkit for making compile-time interpolated templates";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "silently" = callPackage
-    ({ mkDerivation, base, deepseq, directory, nanospec, temporary }:
-     mkDerivation {
-       pname = "silently";
-       version = "1.2.5";
-       sha256 = "0f9qm3f7y0hpxn6mddhhg51mm1r134qkvd2kr8r6192ka1ijbxnf";
-       libraryHaskellDepends = [ base deepseq directory ];
-       testHaskellDepends = [ base deepseq directory nanospec temporary ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/hspec/silently";
-       description = "Prevent or capture writing to stdout and other handles";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "simple-reflect" = callPackage
-    ({ mkDerivation, base }:
-     mkDerivation {
-       pname = "simple-reflect";
-       version = "0.3.2";
-       sha256 = "1dpcf6w3cf1sfl9bnlsx04x7aghw029glj5d05qzrsnms2rlw8iq";
-       libraryHaskellDepends = [ base ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://twanvl.nl/blog/haskell/simple-reflection-of-expressions";
-       description = "Simple reflection of expressions containing variables";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "siphash" = callPackage
-    ({ mkDerivation, base, bytestring, cpu, QuickCheck, test-framework
-     , test-framework-quickcheck2
-     }:
-     mkDerivation {
-       pname = "siphash";
-       version = "1.0.3";
-       sha256 = "1wq5dan30ggjgmravy92ylqjvjv1q7mxrmddr7zc8h6aqr0wx0fg";
-       revision = "1";
-       editedCabalFile = "1q2dy0ywngm9iv7k6d9gnf860m9hpf62q5qvdzmxw5s629gk4afn";
-       enableSeparateDataOutput = true;
-       libraryHaskellDepends = [ base bytestring cpu ];
-       testHaskellDepends = [
-         base bytestring QuickCheck test-framework
-         test-framework-quickcheck2
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/vincenthz/hs-siphash";
-       description = "siphash: a fast short input PRF";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "smallcheck" = callPackage
-    ({ mkDerivation, base, ghc-prim, logict, mtl, pretty }:
-     mkDerivation {
-       pname = "smallcheck";
-       version = "1.1.2";
-       sha256 = "14690ahl3iq99hw638qk0bpmkmspghjz2yh8p1nyccli92y23xjm";
-       libraryHaskellDepends = [ base ghc-prim logict mtl pretty ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/feuerbach/smallcheck";
-       description = "A property-based testing library";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "split" = callPackage
-    ({ mkDerivation, base, QuickCheck }:
-     mkDerivation {
-       pname = "split";
-       version = "0.2.3.2";
-       sha256 = "0fmnkvq1ky4dgyh1z2mvdal5pw103irvkf4p9d5x8wyl1nnylhs9";
-       libraryHaskellDepends = [ base ];
-       testHaskellDepends = [ base QuickCheck ];
-       doHaddock = false;
-       doCheck = false;
-       description = "Combinator library for splitting lists";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "statistics" = callPackage
-    ({ mkDerivation, aeson, base, binary, deepseq, erf, HUnit, ieee754
-     , math-functions, monad-par, mwc-random, primitive, QuickCheck
-     , test-framework, test-framework-hunit, test-framework-quickcheck2
-     , vector, vector-algorithms, vector-binary-instances
-     }:
-     mkDerivation {
-       pname = "statistics";
-       version = "0.13.3.0";
-       sha256 = "1vc12c3mnpspbycwkl0b22jqrdbg9fpmr1fxdxlmqwl603qy0zvf";
-       libraryHaskellDepends = [
-         aeson base binary deepseq erf math-functions monad-par mwc-random
-         primitive vector vector-algorithms vector-binary-instances
-       ];
-       testHaskellDepends = [
-         base binary erf HUnit ieee754 math-functions mwc-random primitive
-         QuickCheck test-framework test-framework-hunit
-         test-framework-quickcheck2 vector vector-algorithms
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/bos/statistics";
-       description = "A library of statistical types, data, and functions";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "stm" = callPackage
-    ({ mkDerivation, array, base }:
-     mkDerivation {
-       pname = "stm";
-       version = "2.4.4.1";
-       sha256 = "111kpy1d6f5c0bggh6hyfm86q5p8bq1qbqf6dw2x4l4dxnar16cg";
-       revision = "1";
-       editedCabalFile = "0kzw4rw9fgmc4qyxmm1lwifdyrx5r1356150xm14vy4mp86diks9";
-       libraryHaskellDepends = [ array base ];
-       doHaddock = false;
-       doCheck = false;
-       description = "Software Transactional Memory";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "streaming-commons" = callPackage
-    ({ mkDerivation, array, async, base, blaze-builder, bytestring
-     , criterion, deepseq, directory, hspec, network, process
-     , QuickCheck, random, stm, text, transformers, unix, zlib
-     }:
-     mkDerivation {
-       pname = "streaming-commons";
-       version = "0.1.17";
-       sha256 = "1abxyjkn8xc8d33yhqxy1ki01kpzf4hy55f167qg4vk2ig5kh2p5";
-       libraryHaskellDepends = [
-         array async base blaze-builder bytestring directory network process
-         random stm text transformers unix zlib
-       ];
-       testHaskellDepends = [
-         array async base blaze-builder bytestring deepseq hspec network
-         QuickCheck text unix zlib
-       ];
-       benchmarkHaskellDepends = [
-         base blaze-builder bytestring criterion deepseq text
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/fpco/streaming-commons";
-       description = "Common lower-level functions needed by various streaming data libraries";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "stringbuilder" = callPackage
-    ({ mkDerivation, base, hspec, QuickCheck }:
-     mkDerivation {
-       pname = "stringbuilder";
-       version = "0.5.0";
-       sha256 = "1ap95xphqnrhv64c2a137wqslkdmb2jjd9ldb17gs1pw48k8hrl9";
-       libraryHaskellDepends = [ base ];
-       testHaskellDepends = [ base hspec QuickCheck ];
-       doHaddock = false;
-       doCheck = false;
-       description = "A writer monad for multi-line string literals";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "syb" = callPackage
-    ({ mkDerivation, base, containers, HUnit, mtl }:
-     mkDerivation {
-       pname = "syb";
-       version = "0.7";
-       sha256 = "1da2zz7gqm4xbkx5vpd74dayx1svaxyl145fl14mq15lbb77sxdq";
-       libraryHaskellDepends = [ base ];
-       testHaskellDepends = [ base containers HUnit mtl ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://www.cs.uu.nl/wiki/GenericProgramming/SYB";
-       description = "Scrap Your Boilerplate";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "system-fileio" = callPackage
-    ({ mkDerivation, base, bytestring, chell, system-filepath
-     , temporary, text, time, transformers, unix
-     }:
-     mkDerivation {
-       pname = "system-fileio";
-       version = "0.3.16.3";
-       sha256 = "1484hcl27s2qcby8ws5djj11q9bz68bspcifz9h5gii2ndy70x9i";
-       libraryHaskellDepends = [
-         base bytestring system-filepath text time unix
-       ];
-       testHaskellDepends = [
-         base bytestring chell system-filepath temporary text time
-         transformers unix
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/fpco/haskell-filesystem";
-       description = "Consistent filesystem interaction across GHC versions (deprecated)";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "system-filepath" = callPackage
-    ({ mkDerivation, base, bytestring, deepseq, text }:
-     mkDerivation {
-       pname = "system-filepath";
-       version = "0.4.13.4";
-       sha256 = "1yy5zsmmimhg6iaw9fmpwrxvxrgi5s6bfyqfihdsnx4bjvn7sp9l";
-       libraryHaskellDepends = [ base bytestring deepseq text ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/fpco/haskell-filesystem";
-       description = "High-level, byte-based file and directory path manipulations (deprecated)";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "tagged" = callPackage
-    ({ mkDerivation, base, deepseq, template-haskell, transformers
-     , transformers-compat
-     }:
-     mkDerivation {
-       pname = "tagged";
-       version = "0.8.5";
-       sha256 = "16cdzh0bw16nvjnyyy5j9s60malhz4nnazw96vxb0xzdap4m2z74";
-       revision = "1";
-       editedCabalFile = "15mqdimbgrq5brqljjl7dbxkyrxppap06q53cp7ml7w3l08v5mx8";
-       libraryHaskellDepends = [
-         base deepseq template-haskell transformers transformers-compat
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/ekmett/tagged";
-       description = "Haskell 98 phantom types to avoid unsafely passing dummy arguments";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "tagsoup" = callPackage
-    ({ mkDerivation, base, bytestring, containers, deepseq, directory
-     , process, QuickCheck, text, time
-     }:
-     mkDerivation {
-       pname = "tagsoup";
-       version = "0.14.2";
-       sha256 = "1j7gliwn4x6i25zlhc8f704pbc96ddn9gb9czq3a4m0k1sfpm3w8";
-       libraryHaskellDepends = [ base bytestring containers text ];
-       testHaskellDepends = [
-         base bytestring containers deepseq directory process QuickCheck
-         text time
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/ndmitchell/tagsoup#readme";
-       description = "Parsing and extracting information from (possibly malformed) HTML/XML documents";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "tasty" = callPackage
-    ({ mkDerivation, ansi-terminal, async, base, clock, containers
-     , deepseq, mtl, optparse-applicative, regex-tdfa, stm, tagged
-     , unbounded-delays, unix
-     }:
-     mkDerivation {
-       pname = "tasty";
-       version = "0.11.3";
-       sha256 = "1g5394akq4j7y93b7cqwqf9lacqh2k21rrj6srbnh2sg97ng7j1b";
-       libraryHaskellDepends = [
-         ansi-terminal async base clock containers deepseq mtl
-         optparse-applicative regex-tdfa stm tagged unbounded-delays unix
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/feuerbach/tasty";
-       description = "Modern and extensible testing framework";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "tasty-ant-xml" = callPackage
-    ({ mkDerivation, base, containers, directory, filepath
-     , generic-deriving, ghc-prim, mtl, stm, tagged, tasty, transformers
-     , xml
-     }:
-     mkDerivation {
-       pname = "tasty-ant-xml";
-       version = "1.1.1";
-       sha256 = "0asvz2jjk1zf3ylps1277kf4yy6bifascblsd3vjfk9k9rh52w3j";
-       libraryHaskellDepends = [
-         base containers directory filepath generic-deriving ghc-prim mtl
-         stm tagged tasty transformers xml
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/ocharles/tasty-ant-xml";
-       description = "Render tasty output to XML for Jenkins";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "tasty-golden" = callPackage
-    ({ mkDerivation, async, base, bytestring, containers, deepseq
-     , directory, filepath, mtl, optparse-applicative, process, tagged
-     , tasty, tasty-hunit, temporary, temporary-rc
-     }:
-     mkDerivation {
-       pname = "tasty-golden";
-       version = "2.3.1.1";
-       sha256 = "0pcf5hsyp5mmbqn7krdm49jxpkjm6rb4j83j28f76h7q55dzm1wy";
-       libraryHaskellDepends = [
-         async base bytestring containers deepseq directory filepath mtl
-         optparse-applicative process tagged tasty temporary
-       ];
-       testHaskellDepends = [
-         base directory filepath process tasty tasty-hunit temporary-rc
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/feuerbach/tasty-golden";
-       description = "Golden tests support for tasty";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "tasty-hunit" = callPackage
-    ({ mkDerivation, base, tasty }:
-     mkDerivation {
-       pname = "tasty-hunit";
-       version = "0.9.2";
-       sha256 = "08qnxaw34wfnzi9irs1jd4d0zczqm3k5ffkd4zwhkz0dflmgq7mf";
-       libraryHaskellDepends = [ base tasty ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://documentup.com/feuerbach/tasty";
-       description = "HUnit support for the Tasty test framework";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "tasty-kat" = callPackage
-    ({ mkDerivation, base, bytestring, mtl, tasty, tasty-hunit
-     , tasty-quickcheck
-     }:
-     mkDerivation {
-       pname = "tasty-kat";
-       version = "0.0.3";
-       sha256 = "14yvlpli6cv6bn3kh8mlfp4x1l6ns4fvmfv6hmj75cvxyzq029d7";
-       libraryHaskellDepends = [ base bytestring tasty ];
-       testHaskellDepends = [
-         base bytestring mtl tasty tasty-hunit tasty-quickcheck
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/vincenthz/tasty-kat";
-       description = "Known Answer Tests (KAT) framework for tasty";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "tasty-quickcheck" = callPackage
-    ({ mkDerivation, base, pcre-light, QuickCheck, tagged, tasty
-     , tasty-hunit
-     }:
-     mkDerivation {
-       pname = "tasty-quickcheck";
-       version = "0.8.4";
-       sha256 = "15rjxib5jmjq0hzj47x15kgp3awc73va4cy1pmpf7k3hvfv4qprn";
-       libraryHaskellDepends = [ base QuickCheck tagged tasty ];
-       testHaskellDepends = [ base pcre-light tasty tasty-hunit ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://documentup.com/feuerbach/tasty";
-       description = "QuickCheck support for the Tasty test framework";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "tasty-smallcheck" = callPackage
-    ({ mkDerivation, async, base, smallcheck, tagged, tasty }:
-     mkDerivation {
-       pname = "tasty-smallcheck";
-       version = "0.8.1";
-       sha256 = "1n66ngzllf3xrlqykwszlkwsi96n5nkm7xbpfq7774vpvfnafjri";
-       libraryHaskellDepends = [ async base smallcheck tagged tasty ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://documentup.com/feuerbach/tasty";
-       description = "SmallCheck support for the Tasty test framework";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "temporary" = callPackage
-    ({ mkDerivation, base, base-compat, directory, exceptions, filepath
-     , tasty, tasty-hunit, transformers, unix
-     }:
-     mkDerivation {
-       pname = "temporary";
-       version = "1.2.1.1";
-       sha256 = "1wq0rc71mp0lw7pkpcbhglf636ni46xnlpsmx6yz8acmwmqj8xsm";
-       libraryHaskellDepends = [
-         base directory exceptions filepath transformers unix
-       ];
-       testHaskellDepends = [
-         base base-compat directory filepath tasty tasty-hunit unix
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/feuerbach/temporary";
-       description = "Portable temporary file and directory support";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "temporary-rc" = callPackage
-    ({ mkDerivation, base, directory, exceptions, filepath
-     , transformers, unix
-     }:
-     mkDerivation {
-       pname = "temporary-rc";
-       version = "1.2.0.3";
-       sha256 = "1nqih0qks439k3pr5kmbbc8rjdw730slrxlflqb27fbxbzb8skqs";
-       libraryHaskellDepends = [
-         base directory exceptions filepath transformers unix
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://www.github.com/feuerbach/temporary";
-       description = "Portable temporary file and directory support for Windows and Unix, based on code from Cabal";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "test-framework" = callPackage
-    ({ mkDerivation, ansi-terminal, ansi-wl-pprint, base, containers
-     , hostname, old-locale, random, regex-posix, time, xml
-     }:
-     mkDerivation {
-       pname = "test-framework";
-       version = "0.8.1.1";
-       sha256 = "0wxjgdvb1c4ykazw774zlx86550848wbsvgjgcrdzcgbb9m650vq";
-       revision = "2";
-       editedCabalFile = "1mp1h0fzwxa3xxnbw33lp8hj0rb8vwkd712r5ak8ny5nmawh2c9y";
-       isLibrary = true;
-       isExecutable = true;
-       libraryHaskellDepends = [
-         ansi-terminal ansi-wl-pprint base containers hostname old-locale
-         random regex-posix time xml
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://batterseapower.github.io/test-framework/";
-       description = "Framework for running and organising tests, with HUnit and QuickCheck support";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "test-framework-hunit" = callPackage
-    ({ mkDerivation, base, extensible-exceptions, HUnit, test-framework
-     }:
-     mkDerivation {
-       pname = "test-framework-hunit";
-       version = "0.3.0.2";
-       sha256 = "1y0b6vg8nfm43v90lxxcydhi6qlxhfy4vpxbzm5ic2w55bh8xjwm";
-       revision = "3";
-       editedCabalFile = "0i9mlalv7cl1iq43ld5myrnpszq5rxmd79hk495dcb08rglhgl3z";
-       libraryHaskellDepends = [
-         base extensible-exceptions HUnit test-framework
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://batterseapower.github.io/test-framework/";
-       description = "HUnit support for the test-framework package";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "test-framework-quickcheck2" = callPackage
-    ({ mkDerivation, base, extensible-exceptions, QuickCheck, random
-     , test-framework
-     }:
-     mkDerivation {
-       pname = "test-framework-quickcheck2";
-       version = "0.3.0.4";
-       sha256 = "0vj834337r6jzr3258cv68ly2sv5999mklpsrfngyk51kywsyqyp";
-       libraryHaskellDepends = [
-         base extensible-exceptions QuickCheck random test-framework
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://haskell.github.io/test-framework/";
-       description = "QuickCheck-2 support for the test-framework package";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "test-framework-th" = callPackage
-    ({ mkDerivation, base, haskell-src-exts, language-haskell-extract
-     , regex-posix, template-haskell, test-framework
-     }:
-     mkDerivation {
-       pname = "test-framework-th";
-       version = "0.2.4";
-       sha256 = "12lw7yj02jb9s0i7rb98jjam43j2h0gzmnbj9zi933fx7sg0sy4b";
-       libraryHaskellDepends = [
-         base haskell-src-exts language-haskell-extract regex-posix
-         template-haskell test-framework
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/finnsson/test-generator";
-       description = "Automagically generate the HUnit- and Quickcheck-bulk-code using Template Haskell";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "text" = callPackage
-    ({ mkDerivation, array, base, binary, bytestring, deepseq
-     , directory, ghc-prim, HUnit, integer-gmp, QuickCheck
-     , quickcheck-unicode, random, test-framework, test-framework-hunit
-     , test-framework-quickcheck2
-     }:
-     mkDerivation {
-       pname = "text";
-       version = "1.2.2.2";
-       sha256 = "1y9d0zjs2ls0c574mr5xw7y3y49s62sd3wcn9lhpwz8a6q352iii";
-       configureFlags = [ "-f-integer-simple" ];
-       libraryHaskellDepends = [
-         array base binary bytestring deepseq ghc-prim integer-gmp
-       ];
-       testHaskellDepends = [
-         array base binary bytestring deepseq directory ghc-prim HUnit
-         integer-gmp QuickCheck quickcheck-unicode random test-framework
-         test-framework-hunit test-framework-quickcheck2
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/bos/text";
-       description = "An efficient packed Unicode text type";
-       license = stdenv.lib.licenses.bsd2;
-     }) {};
-  "tf-random" = callPackage
-    ({ mkDerivation, base, primitive, random, time }:
-     mkDerivation {
-       pname = "tf-random";
-       version = "0.5";
-       sha256 = "0445r2nns6009fmq0xbfpyv7jpzwv0snccjdg7hwj4xk4z0cwc1f";
-       libraryHaskellDepends = [ base primitive random time ];
-       doHaddock = false;
-       doCheck = false;
-       description = "High-quality splittable pseudorandom number generator";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "th-abstraction" = callPackage
-    ({ mkDerivation, base, containers, ghc-prim, template-haskell }:
-     mkDerivation {
-       pname = "th-abstraction";
-       version = "0.2.6.0";
-       sha256 = "0g42h6wnj2awc5ryhbvx009wd8w75pn66bjzsq1z4s3xajd2hbp5";
-       libraryHaskellDepends = [
-         base containers ghc-prim template-haskell
-       ];
-       testHaskellDepends = [ base containers template-haskell ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/glguy/th-abstraction";
-       description = "Nicer interface for reified information about data types";
-       license = stdenv.lib.licenses.isc;
-     }) {};
-  "threads" = callPackage
-    ({ mkDerivation, base, Cabal, stm }:
-     mkDerivation {
-       pname = "threads";
-       version = "0.5.1.5";
-       sha256 = "0phbspm8k2k6w66hv6ldccvy3kc4rjnspj0jwabiwklinkv7wpd1";
-       setupHaskellDepends = [ base Cabal ];
-       libraryHaskellDepends = [ base stm ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/basvandijk/threads";
-       description = "Fork threads and wait for their result";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "time-compat" = callPackage
-    ({ mkDerivation, base, old-time, time }:
-     mkDerivation {
-       pname = "time-compat";
-       version = "0.1.0.3";
-       sha256 = "0zqgzr8yjn36rn6gflwh5s0c92vl44xzxiw0jz8d5h0h8lhi21sr";
-       libraryHaskellDepends = [ base old-time time ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://hub.darcs.net/dag/time-compat";
-       description = "Compatibility with old-time for the time package";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "time-locale-compat" = callPackage
-    ({ mkDerivation, base, time }:
-     mkDerivation {
-       pname = "time-locale-compat";
-       version = "0.1.1.3";
-       sha256 = "1vdcfr2hp9qh3ag90x6ikbdf42wiqpdylnplffna54bpnilbyi4i";
-       configureFlags = [ "-f-old-locale" ];
-       libraryHaskellDepends = [ base time ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/khibino/haskell-time-locale-compat";
-       description = "Compatibility of TimeLocale between old-locale and time-1.5";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "transformers-base" = callPackage
-    ({ mkDerivation, base, stm, transformers, transformers-compat }:
-     mkDerivation {
-       pname = "transformers-base";
-       version = "0.4.4";
-       sha256 = "11r3slgpgpra6zi2kjg3g60gvv17b1fh6qxipcpk8n86qx7lk8va";
-       revision = "1";
-       editedCabalFile = "196pr3a4lhgklyw6nq6rv1j9djwzmvx7xrpp58carxnb55gk06pv";
-       libraryHaskellDepends = [
-         base stm transformers transformers-compat
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/mvv/transformers-base";
-       description = "Lift computations from the bottom of a transformer stack";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "transformers-compat" = callPackage
-    ({ mkDerivation, base, ghc-prim, transformers }:
-     mkDerivation {
-       pname = "transformers-compat";
-       version = "0.5.1.4";
-       sha256 = "17yam0199fh9ndsn9n69jx9nvbsmymzzwbi23dck3dk4q57fz0fq";
-       libraryHaskellDepends = [ base ghc-prim transformers ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/ekmett/transformers-compat/";
-       description = "A small compatibility shim exposing the new types from transformers 0.3 and 0.4 to older Haskell platforms.";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "unbounded-delays" = callPackage
-    ({ mkDerivation, base }:
-     mkDerivation {
-       pname = "unbounded-delays";
-       version = "0.1.1.0";
-       sha256 = "1ir9fghbrc214c97bwafk5ck6cacxz1pdnq4i18p604d1b8zg9wa";
-       libraryHaskellDepends = [ base ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/basvandijk/unbounded-delays";
-       description = "Unbounded thread delays and timeouts";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "unordered-containers" = callPackage
-    ({ mkDerivation, base, bytestring, containers, criterion, deepseq
-     , deepseq-generics, hashable, hashmap, mtl, random
-     }:
-     mkDerivation {
-       pname = "unordered-containers";
-       version = "0.2.8.0";
-       sha256 = "1a7flszhhgyjn0nm9w7cm26jbf6vyx9ij1iij4sl11pjkwsqi8d4";
-       libraryHaskellDepends = [ base deepseq hashable ];
-       benchmarkHaskellDepends = [
-         base bytestring containers criterion deepseq deepseq-generics
-         hashable hashmap mtl random
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/tibbe/unordered-containers";
-       description = "Efficient hashing-based container types";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "utf8-string" = callPackage
-    ({ mkDerivation, base, bytestring }:
-     mkDerivation {
-       pname = "utf8-string";
-       version = "1.0.1.1";
-       sha256 = "0h7imvxkahiy8pzr8cpsimifdfvv18lizrb33k6mnq70rcx9w2zv";
-       revision = "2";
-       editedCabalFile = "1b97s9picjl689hcz8scinv7c8k5iaal1livqr0l1l8yc4h0imhr";
-       libraryHaskellDepends = [ base bytestring ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/glguy/utf8-string/";
-       description = "Support for reading and writing UTF8 Strings";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "uuid-types" = callPackage
-    ({ mkDerivation, base, binary, bytestring, deepseq, hashable
-     , random, text
-     }:
-     mkDerivation {
-       pname = "uuid-types";
-       version = "1.0.3";
-       sha256 = "1zdka5jnm1h6k36w3nr647yf3b5lqb336g3fkprhd6san9x52xlj";
-       revision = "1";
-       editedCabalFile = "0iwwj07gp28g357hv76k4h8pvlzamvchnw003cv3qk778pcpx201";
-       libraryHaskellDepends = [
-         base binary bytestring deepseq hashable random text
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/aslatter/uuid";
-       description = "Type definitions for Universally Unique Identifiers";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "vector" = callPackage
-    ({ mkDerivation, base, deepseq, ghc-prim, HUnit, primitive
-     , QuickCheck, random, template-haskell, test-framework
-     , test-framework-hunit, test-framework-quickcheck2, transformers
-     }:
-     mkDerivation {
-       pname = "vector";
-       version = "0.12.0.1";
-       sha256 = "0yrx2ypiaxahvaz84af5bi855hd3107kxkbqc8km29nsp5wyw05i";
-       revision = "1";
-       editedCabalFile = "1xjv8876kx9vh86w718vdaaai40pwnsiw8368c5h88ch8iqq10qb";
-       libraryHaskellDepends = [ base deepseq ghc-prim primitive ];
-       testHaskellDepends = [
-         base HUnit QuickCheck random template-haskell test-framework
-         test-framework-hunit test-framework-quickcheck2 transformers
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/haskell/vector";
-       description = "Efficient Arrays";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "vector-algorithms" = callPackage
-    ({ mkDerivation, base, bytestring, containers, mtl, mwc-random
-     , primitive, QuickCheck, vector
-     }:
-     mkDerivation {
-       pname = "vector-algorithms";
-       version = "0.7.0.1";
-       sha256 = "0w4hf598lpxfg58rnimcqxrbnpqq2jmpjx82qa5md3q6r90hlipd";
-       revision = "1";
-       editedCabalFile = "1996aj239vasr4hd5c0pi9i0bd08r6clzr76nqvf3hc5kjs7vml2";
-       isLibrary = true;
-       isExecutable = true;
-       libraryHaskellDepends = [ base bytestring primitive vector ];
-       executableHaskellDepends = [ base mtl mwc-random vector ];
-       testHaskellDepends = [
-         base bytestring containers QuickCheck vector
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://code.haskell.org/~dolio/";
-       description = "Efficient algorithms for vector arrays";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "vector-binary-instances" = callPackage
-    ({ mkDerivation, base, binary, bytestring, criterion, deepseq
-     , tasty, tasty-quickcheck, vector
-     }:
-     mkDerivation {
-       pname = "vector-binary-instances";
-       version = "0.2.3.5";
-       sha256 = "0niad09lbxz3cj20qllyj92lwbc013ihw4lby8fv07x5xjx5a4p1";
-       revision = "1";
-       editedCabalFile = "0yk61mifvcc31vancsfsd0vskqh5k3a3znx1rbz8wzcs4ijjzh48";
-       libraryHaskellDepends = [ base binary vector ];
-       testHaskellDepends = [ base binary tasty tasty-quickcheck vector ];
-       benchmarkHaskellDepends = [
-         base binary bytestring criterion deepseq vector
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/bos/vector-binary-instances";
-       description = "Instances of Data.Binary and Data.Serialize for vector";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "vector-th-unbox" = callPackage
-    ({ mkDerivation, base, data-default, template-haskell, vector }:
-     mkDerivation {
-       pname = "vector-th-unbox";
-       version = "0.2.1.6";
-       sha256 = "0d82x55f5vvr1jvaia382m23rs690lg55pvavv8f4ph0y6kd91xy";
-       libraryHaskellDepends = [ base template-haskell vector ];
-       testHaskellDepends = [ base data-default vector ];
-       doHaddock = false;
-       doCheck = false;
-       description = "Deriver for Data.Vector.Unboxed using Template Haskell";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "void" = callPackage
-    ({ mkDerivation, base }:
-     mkDerivation {
-       pname = "void";
-       version = "0.7.2";
-       sha256 = "0aygw0yb1h3yhmfl3bkwh5d3h0l4mmsxz7j53vdm6jryl1kgxzyk";
-       libraryHaskellDepends = [ base ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/ekmett/void";
-       description = "A Haskell 98 logically uninhabited data type";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "with-location" = callPackage
-    ({ mkDerivation, base, hspec }:
-     mkDerivation {
-       pname = "with-location";
-       version = "0.1.0";
-       sha256 = "1rzxvsyh8x3ql3zh7gyw9hjx9bl4v73h0y5kzgaxcfcdn86dg49c";
-       libraryHaskellDepends = [ base ];
-       testHaskellDepends = [ base hspec ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/sol/with-location#readme";
-       description = "Use ImplicitParams-based source locations in a backward compatible way";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "xhtml" = callPackage
-    ({ mkDerivation, base }:
-     mkDerivation {
-       pname = "xhtml";
-       version = "3000.2.2";
-       sha256 = "0z34m5jfvjyzqjr81kk6mp2dyf0iay5zl8xlzwl3k5zdfl5hsz74";
-       libraryHaskellDepends = [ base ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://github.com/haskell/xhtml";
-       description = "An XHTML combinator library";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "xml" = callPackage
-    ({ mkDerivation, base, bytestring, text }:
-     mkDerivation {
-       pname = "xml";
-       version = "1.3.14";
-       sha256 = "0g814lj7vaxvib2g3r734221k80k7ap9czv9hinifn8syals3l9j";
-       libraryHaskellDepends = [ base bytestring text ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://code.galois.com";
-       description = "A simple XML library";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-  "xml-conduit" = callPackage
-    ({ mkDerivation, attoparsec, base, blaze-builder, blaze-html
-     , blaze-markup, bytestring, conduit, conduit-extra, containers
-     , data-default, deepseq, hspec, HUnit, monad-control, resourcet
-     , text, transformers, xml-types
-     }:
-     mkDerivation {
-       pname = "xml-conduit";
-       version = "1.5.1";
-       sha256 = "0d4pb9d0mdz9djh8aiy5r8088rqh7w34mbqmg8mmaq1i7vx2dzks";
-       libraryHaskellDepends = [
-         attoparsec base blaze-builder blaze-html blaze-markup bytestring
-         conduit conduit-extra containers data-default deepseq monad-control
-         resourcet text transformers xml-types
-       ];
-       testHaskellDepends = [
-         base blaze-markup bytestring conduit containers hspec HUnit
-         resourcet text transformers xml-types
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/snoyberg/xml";
-       description = "Pure-Haskell utilities for dealing with XML with the conduit package";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "xml-types" = callPackage
-    ({ mkDerivation, base, deepseq, text }:
-     mkDerivation {
-       pname = "xml-types";
-       version = "0.3.6";
-       sha256 = "1jgqxsa9p2q3h6nymbfmvhldqrqlwrhrzmwadlyc0li50x0d8dwr";
-       libraryHaskellDepends = [ base deepseq text ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "https://john-millikin.com/software/haskell-xml/";
-       description = "Basic types for representing XML";
-       license = stdenv.lib.licenses.mit;
-     }) {};
-  "xss-sanitize" = callPackage
-    ({ mkDerivation, attoparsec, base, containers, css-text, hspec
-     , HUnit, network-uri, tagsoup, text, utf8-string
-     }:
-     mkDerivation {
-       pname = "xss-sanitize";
-       version = "0.3.5.7";
-       sha256 = "005cmhaw9xbzkcn42jmhvcvk63bzmg4lml368xwmqdvh7r0mcn4m";
-       libraryHaskellDepends = [
-         attoparsec base containers css-text network-uri tagsoup text
-         utf8-string
-       ];
-       testHaskellDepends = [
-         attoparsec base containers css-text hspec HUnit network-uri tagsoup
-         text utf8-string
-       ];
-       doHaddock = false;
-       doCheck = false;
-       homepage = "http://github.com/yesodweb/haskell-xss-sanitize";
-       description = "sanitize untrusted HTML to prevent XSS attacks";
-       license = stdenv.lib.licenses.bsd2;
-     }) {};
-  "zlib" = callPackage
-    ({ mkDerivation, base, bytestring, QuickCheck, tasty, tasty-hunit
-     , tasty-quickcheck, zlib
-     }:
-     mkDerivation {
-       pname = "zlib";
-       version = "0.6.1.2";
-       sha256 = "1fx2k2qmgm2dj3fkxx2ry945fpdn02d4dkihjxma21xgdiilxsz4";
-       libraryHaskellDepends = [ base bytestring ];
-       librarySystemDepends = [ zlib ];
-       testHaskellDepends = [
-         base bytestring QuickCheck tasty tasty-hunit tasty-quickcheck
-       ];
-       doHaddock = false;
-       doCheck = false;
-       description = "Compression and decompression in the gzip and zlib formats";
-       license = stdenv.lib.licenses.bsd3;
-     }) {inherit (pkgs) zlib;};
-
-}
diff --git a/infra/nixos/tazserve.nix b/infra/nixos/tazserve.nix
deleted file mode 100644
index 8fbb950b0d..0000000000
--- a/infra/nixos/tazserve.nix
+++ /dev/null
@@ -1,106 +0,0 @@
-{ pkgs, config, ... }:
-
-with pkgs; let blogSource = fetchgit {
-  url = "https://git.tazj.in/tazjin/tazblog.git";
-  sha256 = "0m745vb8k6slzdsld63rbfg583k70q3g6i5lz576sccalkg0r2l2";
-  rev = "aeeb11f1b76729115c4db98f419cbcda1a0f7660";
-};
-tazblog = import ./tazblog { inherit blogSource; };
-blog = tazblog.tazblog;
-blogConfig = {
-  enableACME = true;
-  forceSSL = true;
-  locations."/" = {
-    proxyPass = "http://127.0.0.1:8000";
-  };
-};
-gemma = import ./pkgs/gemma.nix { inherit pkgs; };
-gemmaConfig = writeTextFile {
-  name = "config.lisp";
-  text = builtins.readFile ./gemma-config.lisp;
-};
-in {
-  # Ensure that blog software is installed
-  environment.systemPackages = [
-    blog
-    blogSource
-  ];
-
-  # Set up database unit
-  systemd.services.tazblog-db =  {
-    description           = "Database engine for Tazblog";
-    script                = "${blog}/bin/tazblog-db";
-    serviceConfig.restart = "always";
-    wantedBy              = [ "multi-user.target" ];
-  };
-
-  # Set up blog unit
-  systemd.services.tazblog = {
-    description           = "Tazjin's blog engine";
-    script                = "${blog}/bin/tazblog --resourceDir ${blogSource}/static";
-    serviceConfig.restart = "always";
-    requires              = [ "tazblog-db.service" ];
-    wantedBy              = [ "multi-user.target" ];
-  };
-
-  # Set up Gogs
-  services.gogs = {
-    enable       = true;
-    appName      = "Gogs: tazjin's private code";
-    cookieSecure = true;
-    domain       = "git.tazj.in";
-    rootUrl      = "https://git.tazj.in/";
-    extraConfig = ''
-      [log]
-      ROOT_PATH = /var/lib/gogs/log
-    '';
-  };
-
-  # Set up Gemma
-  systemd.services.gemma = {
-    description           = "Recurring task tracking app";
-    script                = "${gemma}/bin/gemma";
-    serviceConfig.Restart = "always";
-    wantedBy              = [ "multi-user.target" ];
-
-    environment = {
-      GEMMA_CONFIG = "${gemmaConfig}";
-    };
-  };
-
-  # Set up reverse proxy
-  services.nginx = {
-    enable = true;
-    recommendedTlsSettings = true;
-    recommendedProxySettings = true;
-
-    # Blog!
-    virtualHosts."tazj.in" = blogConfig;
-    virtualHosts."www.tazj.in" = blogConfig;
-
-    # Git!
-    virtualHosts."git.tazj.in" = {
-      enableACME = true;
-      forceSSL   = true;
-      locations."/" = {
-        proxyPass = "http://127.0.0.1:3000";
-      };
-    };
-
-    # oslo.pub redirect
-    virtualHosts."oslo.pub" = {
-      enableACME = true;
-      forceSSL   = true;
-      extraConfig = "return 302 https://www.google.com/maps/d/viewer?mid=1pJIYY9cuEdt9DuMTbb4etBVq7hs;";
-    };
-
-    # Gemma demo instance!
-    virtualHosts."gemma.tazj.in" = {
-      enableACME = true;
-      forceSSL   = true;
-      locations."/" = {
-        proxyPass = "http://127.0.0.1:4242";
-      };
-    };
-  };
-}
diff --git a/tools/bin/__dispatch.sh b/tools/bin/__dispatch.sh
index 63f941935e..25fb621c01 100755
--- a/tools/bin/__dispatch.sh
+++ b/tools/bin/__dispatch.sh
@@ -22,6 +22,9 @@ case "${TARGET_TOOL}" in
   blog_cli)
     attr="tazjin.blog_cli"
     ;;
+  stern)
+    attr="stern"
+    ;;
   *)
     echo "The tool '${TARGET_TOOL}' is currently not installed in this repository."
     exit 1
diff --git a/tools/bin/stern b/tools/bin/stern
new file mode 120000
index 0000000000..8390ec9c96
--- /dev/null
+++ b/tools/bin/stern
@@ -0,0 +1 @@
+__dispatch.sh
\ No newline at end of file