diff --git a/.envrc b/.envrc index da39298261..8fa7260429 100644 --- a/.envrc +++ b/.envrc @@ -1,26 +1,37 @@ -# Build a folder ./.env that contains all the tools +# Build a folder ./.env that contains the dev-shell which load all the right env +# vars. +# # To speed up the nix evaluation, we only rebuild our environment when `./nix` -# changes. We do this by adding its contents to the nix store and using its -# store path as a cache key. We only use this to build the dev environment. This -# will fail building in case anything inside the devEnv is reaching outside -# the nix/ subfolder -store_path=$(nix-store --add ./nix/) +# or any of the `default.nix` files change. We do this by adding all these files +# to the nix store and using the store paths as a cache key. + +store_paths=$(find . -name default.nix | grep -v '^./nix' | grep -v '^./dist-newstyle' | xargs nix-store --add ./nix) layout_dir=$(direnv_layout_dir) +env_dir=./.env + +# The env_dir used to be a symlink to env in nix store, if it exists, delete it. +[[ ! -L "$env_dir" ]] || rm -f "$env_dir" + [[ -d "$layout_dir" ]] || mkdir -p "$layout_dir" -if [[ ! -d ./.env || ! -f "$layout_dir/nix-rebuild" || "$store_path" != $(< "$layout_dir/nix-rebuild" ) ]]; then - # this builds "devEnv" defined in ./nix/default.nix and outputs to ./.env - nix-build "$store_path" -A devEnv --out-link ./.env +if [[ ! -d "$env_dir" || ! -f "$layout_dir/nix-rebuild" || "$store_paths" != $(< "$layout_dir/nix-rebuild" ) ]]; then + + [[ -d "$env_dir" ]] || mkdir -p "$env_dir" + + # this builds "wireServer.devShell" defined in ./nix/default.nix and outputs to ./.env + nix-shell ./nix -A wireServer.devShell --run 'direnv dump bash' > "${env_dir}/dev-shell.sh" + + nix-build ./nix -A profileEnv --out-link "${env_dir}/profile-env" - echo "$store_path" > "$layout_dir/nix-rebuild" + echo "$store_paths" > "$layout_dir/nix-rebuild" fi -PATH_add "./.env/bin" +source_env "${env_dir}/dev-shell.sh" # source .profile from `$env`. This sets NIX_PATH to pkgs defined in # ./nix/default.nix. Tis is useful for nix tooling that runs inside this direnv, # e.g. "nix-shell -p foo" will get "foo" for pkgs defined in ./nix/default.nix - [[ -f "./.env/.profile" ]] && source_env "./.env/.profile" +[[ -f "${env_dir}/profile-env/.profile" ]] && source_env "${env_dir}/profile-env/.profile" # allow local .envrc overrides [[ -f .envrc.local ]] && source_env .envrc.local diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index afe5200114..2c0b6fda77 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,30 +4,6 @@ on: branches: [master, develop] jobs: - build-dev-env: - name: Build dev env - environment: cachix # for secrets - strategy: - matrix: - os: - - ubuntu-latest - # This is too expensive - # - macos-latest - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@v2 - with: - submodules: true - - uses: cachix/install-nix-action@v14.1 - - uses: cachix/cachix-action@v10 - with: - name: wire-server - signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}' - authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' - - name: Build the wire-server-direnv - run: nix-build --no-out-link ./nix -A devEnv - - name: Install the wire-server-direnv - run: nix-env -if ./nix -A devEnv build-docs: name: Build docs environment: cachix diff --git a/Makefile b/Makefile index 6c9248a505..6e7e865cbd 100644 --- a/Makefile +++ b/Makefile @@ -33,7 +33,7 @@ EXE_SCHEMA := ./dist/$(package)-schema # also exported in stack-deps.nix. export HSPEC_OPTIONS = --fail-on-focused -default: fast +default: install init: mkdir -p dist @@ -41,14 +41,10 @@ init: # Build all Haskell services and executables, run unit tests .PHONY: install install: init -ifeq ($(WIRE_BUILD_WITH_CABAL), 1) cabal update cabal build all ./hack/bin/cabal-run-all-tests.sh ./hack/bin/cabal-install-artefacts.sh all -else - stack install --pedantic --test --bench --no-run-benchmarks --local-bin-path=dist -endif # Clean .PHONY: full-clean @@ -62,14 +58,9 @@ endif .PHONY: clean clean: -ifeq ($(WIRE_BUILD_WITH_CABAL), 1) cabal clean -else - stack clean -endif $(MAKE) -C services/nginz clean -rm -rf dist - -rm -f .metadata .PHONY: clean-hint clean-hint: @@ -82,15 +73,6 @@ cabal.project.local: echo "optimization: False" > ./cabal.project.local ./hack/bin/cabal-project-local-template.sh "ghc-options: -O0" >> ./cabal.project.local -# Build all Haskell services and executables with -O0, run unit tests -.PHONY: fast -fast: init -ifeq ($(WIRE_BUILD_WITH_CABAL), 1) - make install -else - stack install --pedantic --test --bench --no-run-benchmarks --local-bin-path=dist --fast $(WIRE_STACK_OPTIONS) -endif - # Usage: make c package=brig test=1 .PHONY: c c: cabal-fmt @@ -122,6 +104,10 @@ repl: cabal-fmt ghcid: ghcid -l=hlint --command "cabal repl $(target)" +# Used by CI +.PHONY: lint-all +lint-all: formatc hlint-check-all shellcheck check-local-nix-derivations + .PHONY: hlint-check-all hlint-check-all: ./tools/hlint.sh -f all -m check @@ -147,6 +133,12 @@ hlint-check: hlint-inplace: ./tools/hlint.sh -f changeset -m inplace +regen-local-nix-derivations: + ./hack/bin/generate-local-nix-packages.sh + +check-local-nix-derivations: regen-local-nix-derivations + git diff --exit-code + # reset db using cabal .PHONY: db-reset-package db-reset-package: c @@ -164,16 +156,6 @@ db-migrate-package: c services: init install $(MAKE) -C services/nginz -# Build haddocks -.PHONY: haddock -haddock: - WIRE_STACK_OPTIONS="$(WIRE_STACK_OPTIONS) --haddock --haddock-internal" make fast - -# Build haddocks only for wire-server -.PHONY: haddock-shallow -haddock-shallow: - WIRE_STACK_OPTIONS="$(WIRE_STACK_OPTIONS) --haddock --haddock-internal --no-haddock-deps" make fast - # formats all Haskell files (which don't contain CPP) .PHONY: format format: @@ -255,60 +237,19 @@ i-%: ################################# ## docker targets -.PHONY: docker-prebuilder -docker-prebuilder: - # `docker-prebuilder` needs to be built or pulled only once (unless native dependencies change) - $(MAKE) -C build/ubuntu prebuilder - -.PHONY: docker-deps -docker-deps: - # `docker-deps` needs to be built or pulled only once (unless native dependencies change) - $(MAKE) -C build/ubuntu deps - -.PHONY: docker-builder -docker-builder: - # `docker-builder` needs to be built or pulled only once (unless native dependencies change) - $(MAKE) -C build/ubuntu builder - -.PHONY: docker-intermediate -docker-intermediate: - # `docker-intermediate` needs to be built whenever code changes - this essentially runs `cabal clean && cabal build all` on the whole repo - docker build -t $(DOCKER_USER)/ubuntu20-intermediate:$(DOCKER_TAG) -f build/ubuntu/Dockerfile.intermediate --build-arg builder=$(DOCKER_USER)/ubuntu20-builder:develop --build-arg deps=$(DOCKER_USER)/ubuntu20-deps:develop .; - docker tag $(DOCKER_USER)/ubuntu20-intermediate:$(DOCKER_TAG) $(DOCKER_USER)/ubuntu20-intermediate:latest; - if test -n "$$DOCKER_PUSH"; then docker login -u $(DOCKER_USERNAME) -p $(DOCKER_PASSWORD); docker push $(DOCKER_USER)/ubuntu20-intermediate:$(DOCKER_TAG); docker push $(DOCKER_USER)/ubuntu20-intermediate:latest; fi; - -.PHONY: docker-exe-% -docker-exe-%: - docker image ls | grep $(DOCKER_USER)/ubuntu20-deps > /dev/null || (echo "'make docker-deps' required.", exit 1) - docker image ls | grep $(DOCKER_USER)/ubuntu20-intermediate > /dev/null || (echo "'make docker-intermediate' required."; exit 1) - docker build -t $(DOCKER_USER)/"$*":$(DOCKER_TAG) -f build/ubuntu/Dockerfile.executable --build-arg executable="$*" --build-arg intermediate=$(DOCKER_USER)/ubuntu20-intermediate --build-arg deps=$(DOCKER_USER)/ubuntu20-deps . - docker tag $(DOCKER_USER)/"$*":$(DOCKER_TAG) $(DOCKER_USER)/"$*":latest - if test -n "$$DOCKER_PUSH"; then docker login -u $(DOCKER_USERNAME) -p $(DOCKER_PASSWORD); docker push $(DOCKER_USER)/"$*":$(DOCKER_TAG); docker push $(DOCKER_USER)/"$*":latest; fi; - -.PHONY: docker-services -docker-services: - # make docker-services doesn't compile, only makes small images out of the `docker-intermediate` image - # to recompile, run `docker-intermediate` first. - docker image ls | grep $(DOCKER_USER)/ubuntu20-deps > /dev/null || (echo "'make docker-deps' required.", exit 1) - docker image ls | grep $(DOCKER_USER)/ubuntu20-intermediate > /dev/null || (echo "'make docker-intermediate' required."; exit 1) - # `make -C services/brig docker` == `make docker-exe-brig docker-exe-brig-integration docker-exe-brig-schema docker-exe-brig-index` - $(MAKE) -C services/brig docker - $(MAKE) -C services/gundeck docker - $(MAKE) -C services/galley docker - $(MAKE) -C services/cannon docker - $(MAKE) -C services/proxy docker - $(MAKE) -C services/spar docker - $(MAKE) -C tools/stern docker - $(MAKE) docker-exe-zauth - $(MAKE) -C services/nginz docker - -DOCKER_DEV_NETWORK := --net=host -DOCKER_DEV_VOLUMES := -v `pwd`:/wire-server -DOCKER_DEV_IMAGE := quay.io/wire/ubuntu20-builder:$(DOCKER_TAG) -.PHONY: run-docker-builder -run-docker-builder: - @echo "if this does not work, consider 'docker pull', 'docker tag', or 'make -C build/ubuntu builder'." - docker run --workdir /wire-server -it $(DOCKER_DEV_NETWORK) $(DOCKER_DEV_VOLUMES) --rm $(DOCKER_DEV_IMAGE) /bin/bash +.PHONY: upload-images +upload-images: + ./hack/bin/upload-images.sh images + +.PHONY: upload-images-dev +upload-images-dev: + ./hack/bin/upload-images.sh imagesUnoptimizedNoDocs + +upload-hoogle-image: + ./hack/bin/upload-image.sh wireServer.hoogleImage + +################################# +## cassandra management .PHONY: git-add-cassandra-schema git-add-cassandra-schema: db-reset git-add-cassandra-schema-impl @@ -328,17 +269,10 @@ cqlsh: .PHONY: db-reset db-reset: @echo "make sure you have ./deploy/dockerephemeral/run.sh running in another window!" -ifeq ($(WIRE_BUILD_WITH_CABAL), 1) make db-reset-package package=brig make db-reset-package package=galley make db-reset-package package=gundeck make db-reset-package package=spar -else - make -C services/brig db-reset - make -C services/galley db-reset - make -C services/gundeck db-reset - make -C services/spar db-reset -endif ################################# ## dependencies @@ -353,14 +287,7 @@ libzauth: # Run this again after changes to libraries or dependencies. .PHONY: hie.yaml hie.yaml: -ifeq ($(WIRE_BUILD_WITH_CABAL), 1) echo -e 'cradle:\n cabal: {}' > hie.yaml -else - cp stack.yaml stack-dev.yaml - echo -e '\n\nghc-options:\n "$$locals": -O0 -Wall -Werror' >> stack-dev.yaml - stack build implicit-hie - stack exec gen-hie | yq "{cradle: {stack: {stackYaml: \"./stack-dev.yaml\", components: .cradle.stack}}}" > hie.yaml -endif ##################################### # Today we pretend to be CI and run integration tests on kubernetes diff --git a/build/ubuntu/Dockerfile.builder b/build/ubuntu/Dockerfile.builder deleted file mode 100644 index 0c13f93b8e..0000000000 --- a/build/ubuntu/Dockerfile.builder +++ /dev/null @@ -1,48 +0,0 @@ -ARG prebuilder=quay.io/wire/ubuntu20-prebuilder - -FROM rust:1.63 as mls-test-cli-builder - -# compile mls-test-cli tool -RUN cd /tmp && \ - git clone https://github.com/wireapp/mls-test-cli && \ - cd mls-test-cli && \ - git rev-parse HEAD - -RUN cd /tmp/mls-test-cli && RUSTFLAGS='-C target-feature=+crt-static' cargo build --release --target x86_64-unknown-linux-gnu - -FROM rust:1.63 as rusty-jwt-tools-builder - -# compile rusty-jwt-tools -RUN cd /tmp && \ - git clone https://github.com/wireapp/rusty-jwt-tools && \ - cd rusty-jwt-tools && \ - git checkout 6370cd556f03f6834d0b8043615ffaf0044ef1fa && \ - git rev-parse HEAD - -RUN cd /tmp/rusty-jwt-tools && cargo build --features haskell --release --target x86_64-unknown-linux-gnu - -FROM ${prebuilder} - -COPY --from=mls-test-cli-builder /tmp/mls-test-cli/target/x86_64-unknown-linux-gnu/release/mls-test-cli /usr/bin/mls-test-cli -COPY --from=rusty-jwt-tools-builder /tmp/rusty-jwt-tools/target/x86_64-unknown-linux-gnu/release/librusty_jwt_tools.so /usr/lib -COPY --from=rusty-jwt-tools-builder /tmp/rusty-jwt-tools/target/x86_64-unknown-linux-gnu/release/librusty_jwt_tools_ffi.so /usr/lib - -WORKDIR / - -# Download stack indices and compile/cache dependencies to speed up subsequent -# container creation. -# -# We build docs for haskell-src-exts without hyperlinking enabled to avoid -# a Haddock segfault. See https://github.com/haskell/haddock/issues/928 - -ARG wire_server_branch=develop -ARG THREADS=4 -RUN set -x && \ - echo ${wire_server_branch} && \ - git clone -b ${wire_server_branch} https://github.com/wireapp/wire-server.git && \ - cd /wire-server && \ - cabal update && \ - cabal build all --dependencies-only && \ - cd / && \ - # we run the build only to cache the built source in /root/.cabal, we can remove the source code itself - rm -rf /wire-server diff --git a/build/ubuntu/Dockerfile.deps b/build/ubuntu/Dockerfile.deps deleted file mode 100644 index d9290aa544..0000000000 --- a/build/ubuntu/Dockerfile.deps +++ /dev/null @@ -1,58 +0,0 @@ -FROM ubuntu:20.04 as cryptobox-builder - -# compile cryptobox-c -RUN export DEBIAN_FRONTEND=noninteractive && \ - apt-get update && \ - apt-get install -y cargo file libsodium-dev git pkg-config make && \ - cd /tmp && \ - git clone https://github.com/wireapp/cryptobox-c.git && \ - cd cryptobox-c && \ - export SODIUM_USE_PKG_CONFIG=1 && \ - cargo build --release - -FROM rust:1.63 as mls-test-cli-builder - -# compile mls-test-cli tool -RUN cd /tmp && \ - git clone https://github.com/wireapp/mls-test-cli && \ - cd mls-test-cli && \ - git rev-parse HEAD - -RUN cd /tmp/mls-test-cli && RUSTFLAGS='-C target-feature=+crt-static' cargo build --release --target x86_64-unknown-linux-gnu - -FROM rust:1.63 as rusty-jwt-tools-builder - -# compile rusty-jwt-tools -RUN cd /tmp && \ - git clone https://github.com/wireapp/rusty-jwt-tools && \ - cd rusty-jwt-tools && \ - git checkout 6370cd556f03f6834d0b8043615ffaf0044ef1fa && \ - git rev-parse HEAD - -RUN cd /tmp/rusty-jwt-tools && cargo build --features haskell --release --target x86_64-unknown-linux-gnu - - -# Minimal dependencies for ubuntu-compiled, dynamically linked wire-server Haskell services -FROM ubuntu:20.04 - -COPY --from=cryptobox-builder /tmp/cryptobox-c/target/release/libcryptobox.so /usr/lib -COPY --from=mls-test-cli-builder /tmp/mls-test-cli/target/x86_64-unknown-linux-gnu/release/mls-test-cli /usr/bin/mls-test-cli -COPY --from=rusty-jwt-tools-builder /tmp/rusty-jwt-tools/target/x86_64-unknown-linux-gnu/release/librusty_jwt_tools.so /usr/lib -COPY --from=rusty-jwt-tools-builder /tmp/rusty-jwt-tools/target/x86_64-unknown-linux-gnu/release/librusty_jwt_tools_ffi.so /usr/lib - -RUN export DEBIAN_FRONTEND=noninteractive && \ - apt-get update && \ - apt-get install -y \ - libsodium23 \ - libssl1.1 \ - libgmp10 \ - libffi7 \ - libicu66 \ - geoip-database \ - ca-certificates \ - dumb-init \ - libxml2 \ - libncurses6 \ - zlib1g \ - netbase && \ - rm -rf /var/lib/apt/lists/* diff --git a/build/ubuntu/Dockerfile.executable b/build/ubuntu/Dockerfile.executable deleted file mode 100644 index 1afa4103b4..0000000000 --- a/build/ubuntu/Dockerfile.executable +++ /dev/null @@ -1,29 +0,0 @@ -# Produces final docker image with a single executable $executable - -# Requires docker version >= 17.05 (requires support for multi-stage builds) -# Requires to have created the wire-server-builder and wire-server-deps docker images (run `make` in this directory) -# Usage example: -# (from wire-server root directory) -# export EXECUTABLE=galley-schema; docker build -t $EXECUTABLE -f build/ubuntu/Dockerfile.executable --build-arg executable=$EXECUTABLE . -ARG intermediate=quay.io/wire/ubuntu20-intermediate -ARG deps=quay.io/wire/ubuntu20-deps - -#--- Intermediate stage --- -FROM ${intermediate} as intermediate - -#--- Minified stage --- -FROM ${deps} - -ARG executable - -COPY --from=intermediate /dist/${executable} /usr/bin/${executable} - -# TODO: only if executable=brig, also copy templates. Docker image conditionals seem hacky: -# https://stackoverflow.com/questions/31528384/conditional-copy-add-in-dockerfile -# For now, adds ~2 MB of additional files into every container -COPY --from=intermediate /dist/templates/ /usr/share/wire/templates/ - -# ARGs are not available at runtime, create symlink at build time -# more info: https://stackoverflow.com/questions/40902445/using-variable-interpolation-in-string-in-docker -RUN ln -s /usr/bin/${executable} /usr/bin/service -ENTRYPOINT ["/usr/bin/dumb-init", "--", "/usr/bin/service"] diff --git a/build/ubuntu/Dockerfile.fast-intermediate b/build/ubuntu/Dockerfile.fast-intermediate deleted file mode 100644 index 28668d439d..0000000000 --- a/build/ubuntu/Dockerfile.fast-intermediate +++ /dev/null @@ -1,20 +0,0 @@ -ARG builder=quay.io/wire/ubuntu20-builder -ARG deps=quay.io/wire/ubuntu20-deps:develop - -#--- Builder stage --- -FROM ${builder} as builder - -WORKDIR /wire-server/ - -COPY . /wire-server/ - -RUN echo "optimization: False" > ./cabal.project.local && \ - ./hack/bin/cabal-project-local-template.sh "ghc-options: -O0" >> ./cabal.project.local && \ - WIRE_BUILD_WITH_CABAL=1 make clean install - -#--- Minified stage --- -FROM ${deps} - -COPY --from=builder /wire-server/dist/ /dist/ -# brig also needs some templates. -COPY --from=builder /wire-server/services/brig/deb/opt/brig/templates/ /dist/templates/ diff --git a/build/ubuntu/Dockerfile.intermediate b/build/ubuntu/Dockerfile.intermediate deleted file mode 100644 index 58edbc4415..0000000000 --- a/build/ubuntu/Dockerfile.intermediate +++ /dev/null @@ -1,25 +0,0 @@ -# Produces intermediate docker image with all executables under /dist - -# Requires to have created the wire-server-builder and wire-server-deps docker images (run `make` in this directory) -# Usage example: -# (from wire-server root directory) -# docker build -f build/alpine/Dockerfile.intermediate - -ARG builder=quay.io/wire/ubuntu20-builder -ARG deps=quay.io/wire/ubuntu20-deps:develop - -#--- Builder stage --- -FROM ${builder} as builder - -WORKDIR /wire-server/ - -COPY . /wire-server/ - -RUN WIRE_BUILD_WITH_CABAL=1 make clean install - -#--- Minified stage --- -FROM ${deps} - -COPY --from=builder /wire-server/dist/ /dist/ -# brig also needs some templates. -COPY --from=builder /wire-server/services/brig/deb/opt/brig/templates/ /dist/templates/ diff --git a/build/ubuntu/Dockerfile.prebuilder b/build/ubuntu/Dockerfile.prebuilder deleted file mode 100644 index 058be51351..0000000000 --- a/build/ubuntu/Dockerfile.prebuilder +++ /dev/null @@ -1,73 +0,0 @@ -FROM ubuntu:20.04 as cryptobox-builder - -# compile cryptobox-c -RUN export DEBIAN_FRONTEND=noninteractive && \ - apt-get update && \ - apt-get install -y cargo file libsodium-dev git pkg-config && \ - cd /tmp && \ - git clone https://github.com/wireapp/cryptobox-c.git && \ - cd cryptobox-c && \ - export SODIUM_USE_PKG_CONFIG=1 && \ - cargo build --release - -FROM ubuntu:20.04 - -# install cryptobox-c in the new container -COPY --from=cryptobox-builder /tmp/cryptobox-c/target/release/libcryptobox.so /usr/lib/libcryptobox.so -COPY --from=cryptobox-builder /tmp/cryptobox-c/src/cbox.h /usr/include/cbox.h - -# development packages required for wire-server Haskell services -RUN export DEBIAN_FRONTEND=noninteractive && \ - apt-get update \ - && apt-get install -y \ - ca-certificates \ - build-essential \ - clang \ - debhelper \ - dh-autoreconf \ - libgeoip-dev \ - libglib2.0-dev \ - libicu-dev \ - libleveldb1d \ - libleveldb-dev \ - libossp-uuid-dev \ - libpcre3-dev \ - libsnappy-dev \ - libssl-dev \ - libstatgrab-dev \ - pkg-config \ - tcl \ - upx-ucl \ - zlib1g-dev \ - libbz2-dev \ - liblzma-dev \ - liblzma5 \ - libsodium-dev \ - libsodium23 \ - libpq-dev \ - libxml2-dev \ - libxml2 \ - curl \ - wget \ - git \ - libffi-dev \ - libffi7 \ - libgmp-dev \ - libgmp10 \ - libncurses-dev \ - libncurses5 \ - libtinfo5 \ - protobuf-compiler \ - rsync - -ARG GHC_VERSION=8.10.7 -RUN curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org \ - | BOOTSTRAP_HASKELL_NONINTERACTIVE=1 BOOTSTRAP_HASKELL_GHC_VERSION=${GHC_VERSION} sh - -ENV PATH=/root/.ghcup/bin:/root/.cabal/bin:${PATH} \ - LANG=C.UTF-8 \ - LC_ALL=C.UTF-8 - -ARG CABAL_VERSION=3.6.2.0 -RUN ghcup install cabal ${CABAL_VERSION} && \ - cabal install cabal-plan -fexe diff --git a/build/ubuntu/Makefile b/build/ubuntu/Makefile deleted file mode 100644 index 5db0b8c91f..0000000000 --- a/build/ubuntu/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -LANG := en_US.UTF-8 -DOCKER_USER ?= quay.io/wire -DOCKER_TAG ?= local - -default: deps prebuilder builder - -.PHONY: deps -deps: - docker build -t $(DOCKER_USER)/ubuntu20-deps:$(DOCKER_TAG) -f Dockerfile.deps . - docker tag $(DOCKER_USER)/ubuntu20-deps:$(DOCKER_TAG) $(DOCKER_USER)/ubuntu20-deps:latest - if test -n "$$DOCKER_PUSH"; then docker push $(DOCKER_USER)/ubuntu20-deps:$(DOCKER_TAG); docker push $(DOCKER_USER)/ubuntu20-deps:latest; fi; - -.PHONY: prebuilder -prebuilder: - docker build -t $(DOCKER_USER)/ubuntu20-prebuilder:$(DOCKER_TAG) -f Dockerfile.prebuilder . - docker tag $(DOCKER_USER)/ubuntu20-prebuilder:$(DOCKER_TAG) $(DOCKER_USER)/ubuntu20-prebuilder:latest - if test -n "$$DOCKER_PUSH"; then docker push $(DOCKER_USER)/ubuntu20-prebuilder:$(DOCKER_TAG); docker push $(DOCKER_USER)/ubuntu20-prebuilder:latest; fi; - -.PHONY: builder -builder: - docker build --build-arg prebuilder=$(DOCKER_USER)/ubuntu20-prebuilder -t $(DOCKER_USER)/ubuntu20-builder:$(DOCKER_TAG) -f Dockerfile.builder . - docker tag $(DOCKER_USER)/ubuntu20-builder:$(DOCKER_TAG) $(DOCKER_USER)/ubuntu20-builder:latest - if test -n "$$DOCKER_PUSH"; then docker push $(DOCKER_USER)/ubuntu20-builder:$(DOCKER_TAG); docker push $(DOCKER_USER)/ubuntu20-builder:latest; fi; diff --git a/build/ubuntu/README.md b/build/ubuntu/README.md deleted file mode 100644 index 397afdb5a0..0000000000 --- a/build/ubuntu/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# Overview - -To create docker images, you need to install [docker version >= 17.05](https://www.docker.com/) and [`make`](https://www.gnu.org/software/make/). - -* `Dockerfile.builder` contains all the compile-time dependencies necessary to compile any of the Haskell services (it also downloads, builds and caches some Haskell libraries). This image is fairly large, ~1.7GB compressed. -* `Dockerfile.deps` contains all the run-time dependencies e.g. shared libraries, at a total size of ~52MB compressed. - -Both of the above need to be built first (only once) to be able to actually build a service docker image. - -* `Dockerfile.intermediate` - based on `Dockerfile.deps`/`Dockerfile.builder`, this is an intermediate image compiling all dynamically linked binaries (obtained when running `make install` in the top-level directory). -* `Dockerfile.executable` - based on `Dockerfile.deps`/`Dockerfile.intermediate`, this extracts a single executable from the intermediate image, yielding a small image (~30MB compressed) with a single dynamically linked binary. - -### Build the `builder` and `deps` docker images locally - -(from within the `wire-server` directory) -```bash -make docker-builder -make docker-deps -``` - -### Build a service docker image, e.g. brig: - -```bash -make docker-intermediate # recompiles all the haskell code -make docker-exe-brig # this only extracts one binary from the intermediate image above and makes it the default entrypoint. Nothing gets recompiled -``` - -## Other dockerfiles - -* `Dockerfile.prebuilder` - dependencies of `Dockerfile.builder` that are expected to change very rarely (GHC, system libraries). diff --git a/cabal.project b/cabal.project index 08383c37ee..52ccc84d6c 100644 --- a/cabal.project +++ b/cabal.project @@ -1,5 +1,3 @@ --- Generated by stackage-to-hackage - with-compiler: ghc-8.10.7 packages: @@ -53,122 +51,6 @@ packages: , tools/rex/ , tools/stern/ -source-repository-package - type: git - location: https://github.com/dpwright/HaskellNet-SSL - tag: ca84ef29a93eaef7673fa58056cdd8dae1568d2d - -source-repository-package - type: git - location: https://github.com/fimad/prometheus-haskell - tag: 2e3282e5fb27ba8d989c271a0a989823fad7ec43 - subdir: wai-middleware-prometheus - -source-repository-package - type: git - location: https://github.com/haskell-servant/servant.git - tag: 75db4a5327d6d04ae2460bd5ffd008fe16197ba8 - subdir: servant - servant-client - servant-client-core - servant-server - -source-repository-package - type: git - location: https://github.com/kim/hs-collectd - tag: 885da222be2375f78c7be36127620ed772b677c9 - -source-repository-package - type: git - location: https://github.com/vincenthz/hs-certificate - tag: a899bda3d7666d25143be7be8f3105fc076703d9 - subdir: x509-store - -source-repository-package - type: git - location: https://github.com/wireapp/amazonka - tag: 7ced54b0396296307b9871d293cc0ac161e5743d - subdir: lib/amazonka - lib/amazonka-core - lib/services/amazonka-cloudfront - lib/services/amazonka-dynamodb - lib/services/amazonka-s3 - lib/services/amazonka-ses - lib/services/amazonka-sns - lib/services/amazonka-sqs - lib/services/amazonka-sso - lib/services/amazonka-sts - -source-repository-package - type: git - location: https://github.com/wireapp/bloodhound - tag: c68e6d877d87988331bf391ed16780383a58eefa - -source-repository-package - type: git - location: https://github.com/wireapp/cryptobox-haskell - tag: 7546a1a25635ef65183e3d44c1052285e8401608 - -source-repository-package - type: git - location: https://github.com/wireapp/haskell-multihash.git - tag: 300a6f46384bfca33e545c8bab52ef3717452d12 - -source-repository-package - type: git - location: https://github.com/wireapp/hsaml2 - tag: d43818aac56678f0be02d0101d224fe0f6cdf131 - -source-repository-package - type: git - location: https://github.com/wireapp/hspec-wai - tag: 0a5142cd3ba48116ff059c041348b817fb7bdb25 - -source-repository-package - type: git - location: https://github.com/wireapp/http-client - tag: 9100baeddbd15d93dc58a826ae812dafff29d5fd - subdir: http-client - http-client-openssl - http-client-tls - http-conduit - -source-repository-package - type: git - location: https://github.com/wireapp/http2 - tag: aa3501ad58e1abbd196781fac25a84f41ec2a787 - -source-repository-package - type: git - location: https://github.com/wireapp/saml2-web-sso - tag: 74371cd775cb98d6cf85f6e182244a3c4fd48702 - -source-repository-package - type: git - location: https://github.com/wireapp/tasty - tag: 394943c7672e5ad269e5587528b7678caf3b0720 - subdir: hunit - -source-repository-package - type: git - location: https://gitlab.com/axeman/cql-io - tag: c2b6aa995b5817ed7c78c53f72d5aa586ef87c36 - -source-repository-package - type: git - location: https://gitlab.com/axeman/swagger - tag: e2d3f5b5274b8d8d301b5377b0af4319cea73f9e - -source-repository-package - type: git - location: https://gitlab.com/twittner/wai-routing - tag: 7e996a93fec5901767f845a50316b3c18e51a61d - -allow-older: * -allow-newer: * - --- Changes by ./tools/convert-to-cabal/generate.sh - tests: True benchmarks: True diff --git a/cabal.project.freeze b/cabal.project.freeze deleted file mode 100644 index 35bb3e9a59..0000000000 --- a/cabal.project.freeze +++ /dev/null @@ -1,2762 +0,0 @@ -constraints: any.AC-Angle ==1.0, - any.ALUT ==2.4.0.3, - any.ANum ==0.2.0.2, - any.Agda ==2.6.2, - any.Allure ==0.10.3.0, - any.BNFC ==2.9.3, - any.BNFC-meta ==0.6.1, - any.Boolean ==0.2.4, - any.BoundedChan ==1.0.3.0, - any.ChannelT ==0.0.0.7, - any.Chart ==1.9.3, - any.ChasingBottoms ==1.3.1.11, - any.Clipboard ==2.3.2.0, - any.ClustalParser ==1.3.0, - any.Color ==0.3.3, - any.DAV ==1.3.4, - any.DBFunctor ==0.1.2.1, - any.Decimal ==0.5.2, - any.Diff ==0.4.0, - any.ENIG ==0.0.1.0, - any.Earley ==0.13.0.1, - any.Ebnf2ps ==1.0.15, - any.FenwickTree ==0.1.2.1, - any.FindBin ==0.0.5, - any.FloatingHex ==0.5, - any.FontyFruity ==0.5.3.5, - any.ForestStructures ==0.0.1.0, - any.GLFW-b ==3.3.0.0, - any.GLURaw ==2.0.0.5, - any.GLUT ==2.7.0.16, - any.GenericPretty ==1.2.2, - any.Glob ==0.10.2, - any.H ==0.9.0.1, - any.HCodecs ==0.5.2, - any.HDBC ==2.4.0.3, - any.HDBC-session ==0.1.2.0, - any.HSlippyMap ==3.0.1, - any.HStringTemplate ==0.8.8, - any.HSvm ==0.1.1.3.25, - any.HTF ==0.14.0.6, - any.HTTP ==4000.3.16, - any.HUnit ==1.6.2.0, - any.HUnit-approx ==1.1.1.1, - any.HaTeX ==3.22.3.0, - any.HaXml ==1.25.7, - any.HandsomeSoup ==0.4.2, - any.HasBigDecimal ==0.1.1, - any.HaskellNet ==0.6, - HsOpenSSL -fast-bignum, - any.HsOpenSSL ==0.11.7.2, - any.HsOpenSSL-x509-system ==0.1.0.4, - any.HsYAML ==0.2.1.0, - any.HsYAML-aeson ==0.2.0.1, - any.IPv6Addr ==2.0.3, - any.Imlib ==0.1.2, - any.IntervalMap ==0.6.1.2, - any.JuicyPixels ==3.3.6, - any.JuicyPixels-blurhash ==0.1.0.3, - any.JuicyPixels-extra ==0.5.2, - any.JuicyPixels-scale-dct ==0.1.2, - any.LambdaHack ==0.10.3.0, - any.LibZip ==1.0.1, - any.List ==0.6.2, - any.ListLike ==4.7.6, - any.ListTree ==0.2.3, - any.MapWith ==0.2.0.0, - any.MemoTrie ==0.6.10, - any.MonadPrompt ==1.0.0.5, - any.MonadRandom ==0.5.3, - any.MusicBrainz ==0.4.1, - NineP -bytestring-in-base, - any.NineP ==0.0.2.1, - any.NumInstances ==1.4, - any.ObjectName ==1.1.0.2, - any.OneTuple ==0.3.1, - any.Only ==0.1, - any.OpenAL ==1.7.0.5, - any.OpenGL ==3.0.3.0, - any.OpenGLRaw ==3.3.4.1, - any.ParsecTools ==0.0.2.0, - any.PyF ==0.9.0.3, - any.QuasiText ==0.1.2.6, - QuickCheck -old-random, - any.QuickCheck ==2.14.2, - any.RSA ==2.4.1, - any.Ranged-sets ==0.4.0, - any.Rasterific ==0.7.5.4, - any.Rattus ==0.5.0.1, - any.RefSerialize ==0.4.0, - any.SHA ==1.6.4.4, - any.STMonadTrans ==0.4.6, - any.SafeSemaphore ==0.10.1, - any.ShellCheck ==0.7.2, - any.Sit ==0.2021.1.18, - any.Spintax ==0.3.6, - any.StateVar ==1.2.2, - any.Stream ==0.4.7.2, - any.TCache ==0.12.1, - any.Taxonomy ==2.2.0, - any.TypeCompose ==0.9.14, - any.ViennaRNAParser ==1.3.3, - any.Win32 ==2.6.2.1, - any.Win32-notify ==0.3.0.3, - any.X11 ==1.10.2, - any.X11-xft ==0.3.1, - any.Xauth ==0.1, - any.abstract-deque ==0.3, - any.abstract-par ==0.3.3, - any.accuerr ==0.2.0.2, - any.ace ==0.6, - any.action-permutations ==0.0.0.1, - any.ad ==4.4.1, - any.adjunctions ==4.4, - any.adler32 ==0.1.2.0, - any.aern2-mp ==0.2.8.0, - any.aern2-real ==0.2.8.0, - any.aeson ==2.0.3.0, - any.aeson-attoparsec ==0.0.0, - any.aeson-better-errors ==0.9.1.0, - any.aeson-casing ==0.2.0.0, - any.aeson-combinators ==0.0.5.0, - any.aeson-commit ==1.3, - any.aeson-compat ==0.3.10, - any.aeson-default ==0.9.1.0, - any.aeson-diff ==1.1.0.9, - any.aeson-generic-compat ==0.0.1.3, - any.aeson-lens ==0.5.0.0, - any.aeson-optics ==1.1.1, - any.aeson-picker ==0.1.0.5, - any.aeson-pretty ==0.8.9, - any.aeson-qq ==0.8.4, - any.aeson-schemas ==1.3.5, - any.aeson-typescript ==0.3.0.1, - any.aeson-with ==0.1.2.0, - any.aeson-yak ==0.1.1.3, - any.aeson-yaml ==1.1.0.1, - any.agda2lagda ==0.2021.6.1, - any.al ==0.1.4.2, - any.alarmclock ==0.7.0.5, - any.alerts ==0.1.2.0, - any.alex ==3.2.6, - any.alex-meta ==0.3.0.13, - any.alg ==0.2.13.1, - any.algebraic-graphs ==0.5, - any.almost-fix ==0.0.2, - any.alsa-core ==0.5.0.1, - any.alsa-mixer ==0.3.0, - any.alsa-pcm ==0.6.1.1, - any.alsa-seq ==0.6.0.8, - any.alternative-vector ==0.0.0, - any.amazonka-apigateway ==1.6.1, - any.amazonka-application-autoscaling ==1.6.1, - any.amazonka-appstream ==1.6.1, - any.amazonka-athena ==1.6.1, - any.amazonka-autoscaling ==1.6.1, - any.amazonka-budgets ==1.6.1, - any.amazonka-certificatemanager ==1.6.1, - any.amazonka-cloudformation ==1.6.1, - any.amazonka-cloudhsm ==1.6.1, - any.amazonka-cloudsearch ==1.6.1, - any.amazonka-cloudsearch-domains ==1.6.1, - any.amazonka-cloudtrail ==1.6.1, - any.amazonka-cloudwatch ==1.6.1, - any.amazonka-cloudwatch-events ==1.6.1, - any.amazonka-cloudwatch-logs ==1.6.1, - any.amazonka-codebuild ==1.6.1, - any.amazonka-codecommit ==1.6.1, - any.amazonka-codedeploy ==1.6.1, - any.amazonka-codepipeline ==1.6.1, - any.amazonka-cognito-identity ==1.6.1, - any.amazonka-cognito-idp ==1.6.1, - any.amazonka-cognito-sync ==1.6.1, - any.amazonka-config ==1.6.1, - any.amazonka-datapipeline ==1.6.1, - any.amazonka-devicefarm ==1.6.1, - any.amazonka-directconnect ==1.6.1, - any.amazonka-discovery ==1.6.1, - any.amazonka-dms ==1.6.1, - any.amazonka-ds ==1.6.1, - any.amazonka-dynamodb-streams ==1.6.1, - any.amazonka-ecr ==1.6.1, - any.amazonka-ecs ==1.6.1, - any.amazonka-efs ==1.6.1, - any.amazonka-elasticache ==1.6.1, - any.amazonka-elasticbeanstalk ==1.6.1, - any.amazonka-elasticsearch ==1.6.1, - any.amazonka-elastictranscoder ==1.6.1, - any.amazonka-elb ==1.6.1, - any.amazonka-elbv2 ==1.6.1, - any.amazonka-emr ==1.6.1, - any.amazonka-gamelift ==1.6.1, - any.amazonka-glacier ==1.6.1, - any.amazonka-glue ==1.6.1, - any.amazonka-health ==1.6.1, - any.amazonka-iam ==1.6.1, - any.amazonka-importexport ==1.6.1, - any.amazonka-inspector ==1.6.1, - any.amazonka-iot ==1.6.1, - any.amazonka-iot-dataplane ==1.6.1, - any.amazonka-kinesis ==1.6.1, - any.amazonka-kinesis-analytics ==1.6.1, - any.amazonka-kinesis-firehose ==1.6.1, - any.amazonka-kms ==1.6.1, - any.amazonka-lambda ==1.6.1, - any.amazonka-lightsail ==1.6.1, - any.amazonka-marketplace-analytics ==1.6.1, - any.amazonka-marketplace-metering ==1.6.1, - any.amazonka-ml ==1.6.1, - any.amazonka-opsworks ==1.6.1, - any.amazonka-opsworks-cm ==1.6.1, - any.amazonka-pinpoint ==1.6.1, - any.amazonka-polly ==1.6.1, - any.amazonka-rds ==1.6.1, - any.amazonka-redshift ==1.6.1, - any.amazonka-rekognition ==1.6.1, - any.amazonka-route53 ==1.6.1, - any.amazonka-route53-domains ==1.6.1, - any.amazonka-sdb ==1.6.1, - any.amazonka-servicecatalog ==1.6.1, - any.amazonka-shield ==1.6.1, - any.amazonka-sms ==1.6.1, - any.amazonka-snowball ==1.6.1, - any.amazonka-ssm ==1.6.1, - any.amazonka-stepfunctions ==1.6.1, - any.amazonka-storagegateway ==1.6.1, - any.amazonka-support ==1.6.1, - any.amazonka-swf ==1.6.1, - any.amazonka-test ==1.6.1, - any.amazonka-waf ==1.6.1, - any.amazonka-workspaces ==1.6.1, - any.amazonka-xray ==1.6.1, - any.amqp ==0.22.0, - any.amqp-utils ==0.6.3.2, - any.annotated-wl-pprint ==0.7.0, - any.ansi-terminal ==0.11, - any.ansi-wl-pprint ==0.6.9, - any.ap-normalize ==0.1.0.1, - any.apecs ==0.9.3, - any.apecs-gloss ==0.2.4, - any.apecs-physics ==0.4.5, - any.api-field-json-th ==0.1.0.2, - any.api-maker ==0.1.0.0, - any.app-settings ==0.2.0.12, - any.appar ==0.1.8, - any.appendmap ==0.1.5, - any.apply-refact ==0.9.3.0, - any.apportionment ==0.0.0.3, - any.approximate ==0.3.5, - any.approximate-equality ==1.1.0.2, - any.arbor-lru-cache ==0.1.1.1, - any.arithmoi ==0.12.0.1, - any.array-memoize ==0.6.0, - any.arrow-extras ==0.1.0.1, - any.arrows ==0.4.4.2, - any.ascii ==1.0.1.6, - any.ascii-case ==1.0.0.8, - any.ascii-char ==1.0.0.12, - any.ascii-group ==1.0.0.8, - any.ascii-predicates ==1.0.0.6, - any.ascii-progress ==0.3.3.0, - any.ascii-superset ==1.0.1.8, - any.ascii-th ==1.0.0.6, - any.asciidiagram ==1.3.3.3, - any.asn1-encoding ==0.9.6, - any.asn1-parse ==0.9.5, - any.asn1-types ==0.3.4, - any.assert-failure ==0.1.2.5, - any.assoc ==1.0.2, - any.astro ==0.4.3.0, - any.async ==2.2.4, - any.async-extra ==0.2.0.0, - any.async-pool ==0.9.1, - any.async-refresh ==0.3.0.0, - any.async-refresh-tokens ==0.4.0.0, - any.atom-basic ==0.2.5, - any.atomic-primops ==0.8.4, - any.atomic-write ==0.2.0.7, - any.attoparsec ==0.14.4, - any.attoparsec-base64 ==0.0.0, - any.attoparsec-binary ==0.2, - any.attoparsec-expr ==0.1.1.2, - any.attoparsec-iso8601 ==1.0.2.0, - any.attoparsec-path ==0.0.0.1, - any.audacity ==0.0.2, - any.aur ==7.0.7, - any.aura ==3.2.5, - any.authenticate ==1.3.5, - any.authenticate-oauth ==1.6.0.1, - any.auto-update ==0.1.6, - any.autoexporter ==1.1.20, - any.avro ==0.5.2.0, - any.aws-cloudfront-signed-cookies ==0.2.0.10, - any.aws-xray-client ==0.1.0.1, - any.aws-xray-client-wai ==0.1.0.1, - any.backprop ==0.2.6.4, - any.backtracking ==0.1.0, - any.bank-holidays-england ==0.2.0.6, - any.barbies ==2.0.3.0, - any.base-compat ==0.11.2, - any.base-compat-batteries ==0.11.2, - any.base-orphans ==0.8.6, - any.base-prelude ==1.4, - any.base-unicode-symbols ==0.2.4.2, - any.base16 ==0.3.0.2, - any.base16-bytestring ==1.0.2.0, - any.base16-lens ==0.1.3.2, - any.base32 ==0.2.1.0, - any.base32-lens ==0.1.1.1, - any.base32string ==0.9.1, - any.base58-bytestring ==0.1.0, - any.base58string ==0.10.0, - any.base64 ==0.4.2.3, - any.base64-bytestring ==1.1.0.0, - any.base64-bytestring-type ==1.0.1, - any.base64-lens ==0.3.1, - any.base64-string ==0.2, - any.basement ==0.0.12, - any.basic-prelude ==0.7.0, - any.bazel-runfiles ==0.12, - any.bbdb ==0.8, - any.bcp47 ==0.2.0.4, - any.bcp47-orphans ==0.1.0.4, - any.bcrypt ==0.0.11, - any.bech32 ==1.1.2, - any.bech32-th ==1.0.2, - any.bench ==1.0.12, - any.benchpress ==0.2.2.18, - any.between ==0.11.0.0, - any.bibtex ==0.1.0.6, - any.bifunctors ==5.5.11, - any.bimap ==0.4.0, - any.bimap-server ==0.1.0.1, - any.bimaps ==0.1.0.2, - any.bin ==0.1.1, - any.binary-conduit ==1.3.1, - any.binary-ext ==2.0.4, - any.binary-ieee754 ==0.1.0.0, - any.binary-instances ==1.0.2, - any.binary-list ==1.1.1.2, - any.binary-orphans ==1.0.1, - any.binary-parser ==0.5.7, - any.binary-parsers ==0.2.4.0, - any.binary-search ==2.0.0, - any.binary-shared ==0.8.3, - any.binary-tagged ==0.3.1, - any.bindings-DSL ==1.0.25, - any.bindings-GLFW ==3.3.2.0, - any.bindings-libzip ==1.0.1, - any.bindings-uname ==0.1, - any.bins ==0.1.2.0, - any.bitarray ==0.0.1.1, - any.bits ==0.5.3, - any.bits-extra ==0.0.2.0, - any.bitset-word8 ==0.1.1.2, - any.bitvec ==1.1.1.0, - any.bitwise-enum ==1.0.1.0, - any.blake2 ==0.3.0, - any.blanks ==0.5.0, - any.blas-carray ==0.1.0.1, - any.blas-comfort-array ==0.0.0.3, - any.blas-ffi ==0.1, - any.blaze-bootstrap ==0.1.0.1, - any.blaze-builder ==0.4.2.2, - any.blaze-html ==0.9.1.2, - any.blaze-markup ==0.8.2.8, - any.blaze-svg ==0.3.6.1, - any.blaze-textual ==0.2.2.1, - any.bmp ==1.2.6.3, - any.board-games ==0.3, - any.boltzmann-samplers ==0.1.1.0, - any.boolean-like ==0.1.1.0, - any.boolsimplifier ==0.1.8, - any.boots ==0.2.0.1, - any.bordacount ==0.1.0.0, - any.boring ==0.2, - any.both ==0.1.1.2, - any.bound ==2.0.4, - any.bounded-queue ==1.0.0, - any.boundingboxes ==0.2.3, - any.bower-json ==1.0.0.1, - any.boxes ==0.1.5, - brick +demos, - any.brick ==0.62, - any.broadcast-chan ==0.2.1.1, - any.bsb-http-chunked ==0.0.0.4, - bson -_old-network, - any.bson ==0.4.0.1, - any.btrfs ==0.2.0.0, - any.buffer-builder ==0.2.4.7, - any.buffer-pipe ==0.0, - any.bugsnag-haskell ==0.0.4.1, - any.bugsnag-hs ==0.2.0.7, - any.bugzilla-redhat ==0.3.3, - any.burrito ==1.2.0.3, - any.butcher ==1.3.3.2, - any.buttplug-hs-core ==0.1.0.1, - any.bv ==0.5, - any.bv-little ==1.1.1, - any.byte-count-reader ==0.10.1.7, - any.byte-order ==0.1.2.0, - any.byteable ==0.1.1, - any.bytedump ==1.0, - any.byteorder ==1.0.4, - any.bytes ==0.17.1, - any.byteset ==0.1.1.0, - any.bytestring-arbitrary ==0.1.3, - any.bytestring-builder ==0.10.8.2.0, - any.bytestring-conversion ==0.3.1, - any.bytestring-lexing ==0.5.0.8, - any.bytestring-mmap ==0.2.2, - any.bytestring-strict-builder ==0.4.5.4, - any.bytestring-to-vector ==0.3.0.1, - any.bytestring-tree-builder ==0.2.7.9, - bz2 -with-bzlib, - any.bz2 ==1.0.1.0, - any.bzlib ==0.5.1.0, - any.bzlib-conduit ==0.3.0.2, - any.c-enum ==0.1.0.1, - any.c-struct ==0.1.0.1, - any.c14n ==0.1.0.1, - any.c2hs ==0.28.8, - any.ca-province-codes ==1.0.0.0, - any.cabal-appimage ==0.3.0.3, - any.cabal-clean ==0.1.20210924, - any.cabal-debian ==5.1, - any.cabal-doctest ==1.0.9, - any.cabal-file ==0.1.1, - any.cabal-flatpak ==0.1.0.2, - any.cabal-plan ==0.7.2.0, - cabal-rpm -old-locale, - any.cabal-rpm ==2.0.10, - any.cabal2nix ==2.17.0, - any.cabal2spec ==2.6.2, - any.cache ==0.1.3.0, - any.cached-json-file ==0.1.0, - any.cacophony ==0.10.1, - any.calendar-recycling ==0.0.0.1, - any.call-stack ==0.3.0, - any.can-i-haz ==0.3.1.0, - any.capability ==0.4.0.0, - any.cardano-coin-selection ==1.0.1, - any.carray ==0.1.6.8, - any.casa-client ==0.0.1, - any.casa-types ==0.0.2, - any.case-insensitive ==1.2.1.0, - any.cased ==0.1.0.0, - any.cases ==0.1.4.1, - any.casing ==0.1.4.1, - cassava -bytestring--lt-0_10_4, - any.cassava ==0.5.2.0, - any.cassava-conduit ==0.6.0, - any.cassava-megaparsec ==2.0.4, - any.cast ==0.1.0.2, - any.category ==0.2.5.0, - any.cayley-client ==0.4.16, - any.cborg ==0.2.6.0, - any.cborg-json ==0.2.3.0, - any.cdar-mBound ==0.1.0.4, - any.cereal ==0.5.8.2, - any.cereal-conduit ==0.8.0, - any.cereal-text ==0.1.0.2, - any.cereal-vector ==0.2.0.1, - any.cfenv ==0.1.0.0, - any.cgi ==3001.5.0.0, - any.chan ==0.0.4.1, - any.character-cases ==0.1.0.6, - any.charset ==0.3.9, - any.charsetdetect-ae ==1.1.0.4, - any.chaselev-deque ==0.5.0.5, - any.cheapskate ==0.1.1.2, - any.cheapskate-highlight ==0.1.0.0, - any.cheapskate-lucid ==0.1.0.0, - any.checkers ==0.5.6, - any.checksum ==0.0, - any.chimera ==0.3.2.0, - any.chiphunk ==0.1.4.0, - any.choice ==0.2.2, - any.chronologique ==0.3.1.3, - any.chronos ==1.1.1, - any.chronos-bench ==0.2.0.2, - any.chunked-data ==0.3.1, - any.cipher-aes ==0.2.11, - any.cipher-camellia ==0.0.2, - any.cipher-des ==0.0.6, - any.cipher-rc4 ==0.1.4, - any.circle-packing ==0.1.0.6, - any.circular ==0.4.0.1, - any.citeproc ==0.4.0.1, - any.clash-ghc ==1.4.6, - any.clash-lib ==1.4.6, - any.clash-prelude ==1.4.6, - any.classy-prelude ==1.5.0, - any.classy-prelude-conduit ==1.5.0, - any.clay ==0.13.3, - any.clientsession ==0.9.1.2, - any.climb ==0.3.3, - any.clock ==0.8.2, - any.closed ==0.2.0.1, - any.clumpiness ==0.17.0.2, - any.cmark ==0.6, - any.cmark-gfm ==0.2.2, - any.cmark-lucid ==0.1.0.0, - any.cmdargs ==0.10.21, - any.co-log-concurrent ==0.5.1.0, - any.co-log-core ==0.2.1.1, - any.code-page ==0.2.1, - any.codec-beam ==0.2.0, - any.collect-errors ==0.1.5.0, - any.colorful-monoids ==0.2.1.3, - any.colorize-haskell ==1.0.1, - any.colour ==2.3.6, - any.combinatorial ==0.1.0.1, - any.comfort-array ==0.4.1, - any.comfort-graph ==0.0.3.1, - any.commonmark ==0.2.1.1, - any.commonmark-extensions ==0.2.2.1, - any.commonmark-pandoc ==0.2.1.1, - any.commutative ==0.0.2, - any.comonad ==5.0.8, - any.comonad-extras ==4.0.1, - any.compactmap ==0.1.4.2.1, - any.compdata ==0.12.1, - any.compensated ==0.8.3, - any.compiler-warnings ==0.1.0, - any.composable-associations ==0.1.0.0, - any.composable-associations-aeson ==0.1.0.1, - any.composition ==1.0.2.2, - any.composition-extra ==2.0.0, - any.concise ==0.1.0.1, - any.concurrency ==1.11.0.2, - any.concurrent-extra ==0.7.0.12, - any.concurrent-output ==1.10.12, - any.concurrent-split ==0.0.1.1, - any.concurrent-supply ==0.1.8, - any.cond ==0.4.1.1, - any.conduino ==0.2.2.0, - any.conduit ==1.3.4.2, - any.conduit-algorithms ==0.0.11.0, - any.conduit-combinators ==1.3.0, - any.conduit-concurrent-map ==0.1.1, - any.conduit-extra ==1.3.5, - any.conduit-parse ==0.2.1.0, - any.conduit-zstd ==0.0.2.0, - any.conferer ==1.1.0.0, - any.conferer-aeson ==1.1.0.1, - any.conferer-hspec ==1.1.0.0, - any.conferer-warp ==1.1.0.0, - any.config-ini ==0.2.4.0, - any.configurator ==0.3.0.0, - any.configurator-export ==0.1.0.1, - any.configurator-pg ==0.2.5, - any.connection ==0.3.1, - any.connection-pool ==0.2.2, - any.console-style ==0.0.2.1, - any.constraint ==0.1.4.0, - any.constraint-tuples ==0.1.2, - any.constraints ==0.13.2, - any.constraints-extras ==0.3.2.0, - any.construct ==0.3.0.2, - any.contravariant ==1.5.5, - any.contravariant-extras ==0.3.5.3, - any.control-bool ==0.2.1, - any.control-dsl ==0.2.1.3, - any.control-monad-free ==0.6.2, - any.control-monad-omega ==0.3.2, - any.convertible ==1.1.1.0, - any.cookie ==0.4.5, - any.core-data ==0.2.1.11, - any.core-program ==0.2.12.0, - any.core-text ==0.3.5.0, - any.countable ==1.0, - any.country ==0.2.1, - any.cpphs ==1.20.9.1, - any.cprng-aes ==0.6.1, - any.cpu ==0.1.2, - any.cpuinfo ==0.1.0.2, - any.cql ==4.0.3, - any.cql-io-tinylog ==0.1.0, - any.crackNum ==3.1, - any.crc32c ==0.0.0, - any.credential-store ==0.1.2, - any.criterion ==1.5.11.0, - any.criterion-measurement ==0.1.3.0, - any.cron ==0.7.0, - any.crypto-api ==0.13.3, - any.crypto-cipher-types ==0.0.9, - any.crypto-enigma ==0.1.1.6, - any.crypto-numbers ==0.2.7, - any.crypto-pubkey ==0.2.8, - any.crypto-pubkey-types ==0.4.3, - any.crypto-random ==0.0.9, - any.crypto-random-api ==0.2.0, - any.cryptohash ==0.11.9, - any.cryptohash-cryptoapi ==0.1.4, - any.cryptohash-md5 ==0.11.101.0, - any.cryptohash-sha1 ==0.11.101.0, - any.cryptohash-sha256 ==0.11.102.1, - any.cryptohash-sha512 ==0.11.101.0, - any.cryptonite ==0.29, - any.cryptonite-conduit ==0.2.2, - any.cryptonite-openssl ==0.7, - any.csp ==1.4.0, - any.css-syntax ==0.1.0.0, - any.css-text ==0.1.3.0, - any.csv ==0.1.2, - any.ctrie ==0.2, - any.cubicbezier ==0.6.0.6, - any.cubicspline ==0.1.2, - any.cuckoo-filter ==0.2.0.2, - any.cue-sheet ==2.0.1, - curl +new-base, - any.curl ==1.3.8, - any.currencies ==0.2.0.0, - any.currency ==0.2.0.0, - any.currency-codes ==3.0.0.1, - any.cursor ==0.3.0.0, - any.cursor-brick ==0.1.0.0, - any.cursor-fuzzy-time ==0.0.0.0, - any.cursor-gen ==0.3.0.0, - any.cutter ==0.0, - any.cyclotomic ==1.1.1, - any.czipwith ==1.0.1.4, - any.d10 ==0.2.1.6, - any.data-accessor ==0.2.3, - any.data-accessor-mtl ==0.2.0.4, - any.data-accessor-template ==0.2.1.16, - any.data-accessor-transformers ==0.2.1.7, - any.data-ascii ==1.0.0.6, - any.data-binary-ieee754 ==0.4.4, - any.data-bword ==0.1.0.1, - any.data-checked ==0.3, - any.data-clist ==0.1.2.3, - any.data-compat ==0.1.0.3, - any.data-default ==0.7.1.1, - any.data-default-class ==0.1.2.0, - any.data-default-instances-containers ==0.0.1, - any.data-default-instances-dlist ==0.0.1, - any.data-default-instances-old-locale ==0.0.1, - any.data-diverse ==4.7.0.0, - any.data-dword ==0.3.2, - any.data-endian ==0.1.1, - any.data-fix ==0.3.2, - any.data-forest ==0.1.0.9, - any.data-has ==0.4.0.0, - any.data-hash ==0.2.0.1, - any.data-interval ==2.1.1, - any.data-inttrie ==0.1.4, - any.data-lens-light ==0.1.2.3, - any.data-memocombinators ==0.5.1, - any.data-msgpack ==0.0.13, - any.data-msgpack-types ==0.0.3, - any.data-or ==1.0.0.7, - any.data-ordlist ==0.4.7.0, - any.data-ref ==0.0.2, - any.data-reify ==0.6.3, - any.data-serializer ==0.3.5, - any.data-textual ==0.3.0.3, - any.data-timeout ==0.3.1, - any.datadog ==0.2.5.0, - any.dataurl ==0.1.0.0, - any.dbus ==1.2.17, - any.dbus-hslogger ==0.1.0.1, - any.debian ==4.0.2, - any.debian-build ==0.10.2.1, - any.debug-trace-var ==0.2.0, - any.dec ==0.0.4, - any.declarative ==0.5.4, - any.deepseq-generics ==0.2.0.0, - any.deepseq-instances ==0.1.0.1, - any.deferred-folds ==0.9.17, - any.dejafu ==2.4.0.3, - any.dense-linear-algebra ==0.1.0.0, - any.dependent-map ==0.4.0.0, - any.dependent-sum ==0.7.1.0, - any.dependent-sum-template ==0.1.0.3, - any.depq ==0.4.2, - any.deque ==0.4.4, - any.derive-topdown ==0.0.2.2, - any.deriveJsonNoPrefix ==0.1.0.1, - any.deriving-aeson ==0.2.8, - any.deriving-compat ==0.5.10, - any.derulo ==1.0.10, - any.dhall ==1.39.0, - any.dhall-bash ==1.0.37, - any.dhall-json ==1.7.7, - any.dhall-lsp-server ==1.0.16, - any.dhall-yaml ==1.2.7, - any.di-core ==1.0.4, - any.di-monad ==1.3.1, - any.diagrams-solve ==0.1.3, - any.dialogflow-fulfillment ==0.1.1.4, - any.dictionary-sharing ==0.1.0.0, - any.digest ==0.0.1.3, - any.digits ==0.3.1, - any.dimensional ==1.4, - any.direct-sqlite ==2.3.26, - any.directory-tree ==0.12.1, - any.dirichlet ==0.1.0.5, - any.discount ==0.1.1, - any.disk-free-space ==0.1.0.1, - any.distributed-closure ==0.4.2.0, - any.distribution-nixpkgs ==1.5.0, - any.distribution-opensuse ==1.1.1, - any.distributive ==0.6.2.1, - any.dl-fedora ==0.9.2, - any.dlist ==1.0, - any.dlist-instances ==0.1.1.1, - any.dlist-nonempty ==0.1.1, - any.dns ==4.0.1, - any.do-list ==1.0.1, - any.do-notation ==0.1.0.2, - any.dockerfile ==0.2.0, - any.doclayout ==0.3.1.1, - any.doctemplates ==0.9, - any.doctest ==0.17, - any.doctest-discover ==0.2.0.0, - any.doctest-driver-gen ==0.3.0.5, - any.doctest-exitcode-stdio ==0.0, - any.doctest-extract ==0.1, - any.doctest-lib ==0.1, - any.doldol ==0.4.1.2, - any.dot ==0.3, - any.dotenv ==0.8.0.7, - any.dotgen ==0.4.3, - any.dotnet-timespan ==0.0.1.0, - any.double-conversion ==2.0.2.0, - any.download ==0.3.2.7, - any.download-curl ==0.1.4, - any.drinkery ==0.4, - any.dsp ==0.2.5.1, - any.dual ==0.1.1.1, - any.dublincore-xml-conduit ==0.1.0.2, - any.dunai ==0.7.0, - any.duration ==0.2.0.0, - any.dvorak ==0.1.0.0, - any.dynamic-state ==0.3.1, - any.dyre ==0.9.1, - any.eap ==0.9.0.2, - any.earcut ==0.1.0.4, - any.easy-file ==0.2.2, - any.echo ==0.1.4, - any.ecstasy ==0.2.1.0, - any.ed25519 ==0.0.5.0, - any.edit-distance ==0.2.2.1, - any.edit-distance-vector ==1.0.0.4, - any.editor-open ==0.6.0.0, - any.egison ==4.1.2, - any.egison-pattern-src ==0.2.1.2, - any.egison-pattern-src-th-mode ==0.2.1.2, - any.either ==5.0.1.1, - any.either-both ==0.1.1.1, - any.either-unwrap ==1.1, - any.ekg ==0.4.0.15, - any.ekg-core ==0.1.1.7, - any.ekg-json ==0.1.0.6, - any.ekg-statsd ==0.2.5.0, - any.elerea ==2.9.0, - any.elf ==0.30, - any.eliminators ==0.7, - any.elm-bridge ==0.6.1, - any.elm-core-sources ==1.0.0, - any.elm-export ==0.6.0.1, - any.elm2nix ==0.2.1, - any.elynx ==0.5.1.1, - any.elynx-markov ==0.5.1.1, - any.elynx-nexus ==0.5.1.1, - any.elynx-seq ==0.5.1.1, - any.elynx-tools ==0.5.1.1, - any.elynx-tree ==0.5.1.1, - any.email-validate ==2.3.2.15, - any.emd ==0.2.0.0, - any.emojis ==0.1.2, - any.enclosed-exceptions ==1.0.3, - any.entropy ==0.4.1.7, - any.enum-subset-generate ==0.1.0.0, - any.enummapset ==0.6.0.3, - any.enumset ==0.0.5, - any.envelope ==0.2.2.0, - any.envparse ==0.4.1, - any.envy ==2.1.0.0, - any.epub-metadata ==4.5, - any.eq ==4.2.1, - any.equal-files ==0.0.5.3, - any.equational-reasoning ==0.7.0.1, - any.equivalence ==0.3.5, - any.erf ==2.0.0.0, - any.error-or ==0.1.2.0, - any.error-or-utils ==0.1.1, - any.errors ==2.3.0, - any.errors-ext ==0.4.2, - any.ersatz ==0.4.10, - any.esqueleto ==3.5.3.0, - any.essence-of-live-coding ==0.2.5, - any.essence-of-live-coding-gloss ==0.2.5, - any.essence-of-live-coding-pulse ==0.2.5, - any.essence-of-live-coding-quickcheck ==0.2.5, - any.etc ==0.4.1.0, - any.eve ==0.1.9.0, - any.event-list ==0.1.2, - any.eventful-core ==0.2.0, - any.eventful-test-helpers ==0.2.0, - any.eventstore ==1.4.1, - any.every ==0.0.1, - any.exact-combinatorics ==0.2.0.11, - any.exact-pi ==0.5.0.1, - any.exception-hierarchy ==0.1.0.4, - any.exception-mtl ==0.4.0.1, - any.exception-transformers ==0.4.0.10, - any.exception-via ==0.1.0.0, - any.exceptions ==0.10.4, - any.executable-path ==0.0.3.1, - any.exit-codes ==1.0.0, - any.exomizer ==1.0.0, - any.exp-pairs ==0.2.1.0, - any.experimenter ==0.1.0.12, - any.expiring-cache-map ==0.0.6.1, - any.explicit-exception ==0.1.10, - any.express ==0.1.16, - any.extended-reals ==0.2.4.0, - any.extensible-effects ==5.0.0.1, - any.extensible-exceptions ==0.1.1.4, - any.extra ==1.7.9, - any.extractable-singleton ==0.0.1, - any.extrapolate ==0.4.6, - any.fail ==4.9.0.0, - any.failable ==1.2.4.0, - any.fakedata ==0.8.0, - any.fakedata-parser ==0.1.0.0, - any.fakefs ==0.3.0.2, - any.fakepull ==0.3.0.2, - any.faktory ==1.0.3.1, - any.fast-digits ==0.3.1.0, - any.fast-logger ==3.0.5, - any.fast-math ==1.0.2, - any.fb ==2.1.1, - any.fclabels ==2.0.5.1, - any.feature-flags ==0.1.0.1, - any.fedora-dists ==1.1.2, - any.fedora-haskell-tools ==0.9, - any.feed ==1.3.2.0, - any.fft ==0.1.8.7, - any.fgl ==5.7.0.3, - any.file-embed ==0.0.15.0, - any.file-embed-lzma ==0, - any.file-path-th ==0.1.0.0, - any.filelock ==0.1.1.5, - any.filemanip ==0.3.6.3, - any.filepath-bytestring ==1.4.2.1.8, - any.filepattern ==0.1.2, - any.fileplow ==0.1.0.0, - any.filtrable ==0.1.4.0, - any.fin ==0.2, - any.fingertree ==0.1.4.2, - any.finite-typelits ==0.1.4.2, - any.first-class-families ==0.8.0.1, - any.first-class-patterns ==0.3.2.5, - any.fitspec ==0.4.10, - any.fix-whitespace ==0.0.7, - any.fixed ==0.3, - any.fixed-length ==0.2.3, - any.fixed-vector ==1.2.0.0, - any.fixed-vector-hetero ==0.6.1.1, - any.flac ==0.2.0, - any.flac-picture ==0.1.2, - any.flags-applicative ==0.1.0.3, - any.flat ==0.4.4, - any.flat-mcmc ==1.5.2, - any.flexible-defaults ==0.0.3, - any.floatshow ==0.2.4, - any.flow ==1.0.22, - any.flush-queue ==1.0.0, - any.fmlist ==0.9.4, - any.fmt ==0.6.3.0, - any.fn ==0.3.0.2, - any.focus ==1.0.3, - any.focuslist ==0.1.0.2, - any.fold-debounce ==0.2.0.9, - any.fold-debounce-conduit ==0.2.0.6, - any.foldable1 ==0.1.0.0, - any.foldl ==1.4.12, - any.folds ==0.7.7, - any.follow-file ==0.0.3, - any.foreign-store ==0.2, - any.forkable-monad ==0.2.0.3, - any.forma ==1.1.3, - any.format-numbers ==0.1.0.1, - any.formatting ==7.1.3, - any.foundation ==0.0.26.1, - any.fourmolu ==0.3.0.0, - any.free ==5.1.7, - any.free-categories ==0.2.0.2, - any.free-vl ==0.1.4, - any.freenect ==1.2.1, - any.freer-simple ==1.2.1.1, - any.freetype2 ==0.2.0, - any.friendly-time ==0.4.1, - any.from-sum ==0.2.3.0, - any.frontmatter ==0.1.0.2, - any.fsnotify ==0.3.0.1, - any.fsnotify-conduit ==0.1.1.1, - any.ftp-client ==0.5.1.4, - any.ftp-client-conduit ==0.5.0.5, - any.funcmp ==1.9, - any.function-builder ==0.3.0.1, - functor-classes-compat +containers, - any.functor-classes-compat ==1.0.1, - any.functor-combinators ==0.3.6.0, - any.fusion-plugin ==0.2.3, - any.fusion-plugin-types ==0.1.0, - any.fuzzcheck ==0.1.1, - any.fuzzy ==0.1.0.1, - any.fuzzy-dates ==0.1.1.2, - any.fuzzy-time ==0.1.0.0, - any.fuzzyset ==0.2.2, - any.gauge ==0.2.5, - any.gd ==3000.7.3, - any.gdp ==0.0.3.0, - any.general-games ==1.1.1, - any.generic-aeson ==0.2.0.13, - any.generic-arbitrary ==0.1.0, - any.generic-constraints ==1.1.1.1, - any.generic-data ==0.9.2.1, - any.generic-data-surgery ==0.3.0.0, - any.generic-deriving ==1.14.1, - any.generic-functor ==0.2.0.0, - any.generic-lens ==2.1.0.0, - any.generic-lens-core ==2.1.0.0, - any.generic-monoid ==0.1.0.1, - any.generic-optics ==2.1.0.0, - any.generic-random ==1.4.0.0, - any.generics-eot ==0.4.0.1, - any.generics-sop ==0.5.1.1, - any.generics-sop-lens ==0.2.0.1, - any.geniplate-mirror ==0.7.8, - any.genvalidity ==0.11.0.2, - any.genvalidity-aeson ==0.3.0.0, - any.genvalidity-bytestring ==0.6.0.0, - any.genvalidity-containers ==0.9.0.0, - any.genvalidity-criterion ==0.2.0.0, - any.genvalidity-hspec ==0.7.0.4, - any.genvalidity-hspec-aeson ==0.3.1.1, - any.genvalidity-hspec-binary ==0.2.0.4, - any.genvalidity-hspec-cereal ==0.2.0.4, - any.genvalidity-hspec-hashable ==0.2.0.5, - any.genvalidity-hspec-optics ==0.1.1.2, - any.genvalidity-hspec-persistent ==0.0.0.1, - any.genvalidity-mergeful ==0.2.0.0, - any.genvalidity-mergeless ==0.2.0.0, - any.genvalidity-path ==0.3.0.4, - any.genvalidity-persistent ==0.0.0.0, - any.genvalidity-property ==0.5.0.1, - any.genvalidity-scientific ==0.2.1.1, - any.genvalidity-sydtest ==0.0.0.0, - any.genvalidity-sydtest-aeson ==0.0.0.0, - any.genvalidity-sydtest-hashable ==0.0.0.0, - any.genvalidity-sydtest-lens ==0.0.0.0, - any.genvalidity-sydtest-persistent ==0.0.0.1, - any.genvalidity-text ==0.7.0.2, - any.genvalidity-time ==0.3.0.0, - any.genvalidity-typed-uuid ==0.0.0.2, - any.genvalidity-unordered-containers ==0.3.0.1, - any.genvalidity-uuid ==0.1.0.4, - any.genvalidity-vector ==0.3.0.1, - any.geoip2 ==0.4.1.0, - any.geojson ==4.0.2, - any.getopt-generics ==0.13.0.4, - any.ghc-byteorder ==4.11.0.0.10, - any.ghc-check ==0.5.0.6, - any.ghc-core ==0.5.6, - any.ghc-events ==0.17.0, - any.ghc-exactprint ==0.6.4, - any.ghc-lib ==8.10.7.20210828, - any.ghc-lib-parser ==8.10.1.20200412, - any.ghc-lib-parser-ex ==8.10.0.23, - any.ghc-parser ==0.2.3.0, - any.ghc-paths ==0.1.0.12, - any.ghc-prof ==1.4.1.9, - any.ghc-source-gen ==0.4.2.0, - any.ghc-syntax-highlighter ==0.0.6.0, - any.ghc-tcplugins-extra ==0.4.2, - any.ghc-trace-events ==0.1.2.3, - any.ghc-typelits-extra ==0.4.3, - any.ghc-typelits-knownnat ==0.7.6, - any.ghc-typelits-natnormalise ==0.7.6, - any.ghc-typelits-presburger ==0.6.1.0, - any.ghci-hexcalc ==0.1.1.0, - any.ghcid ==0.8.7, - any.ghcjs-codemirror ==0.0.0.2, - any.ghost-buster ==0.1.1.0, - any.gi-atk ==2.0.23, - any.gi-cairo ==1.0.25, - any.gi-dbusmenu ==0.4.9, - any.gi-dbusmenugtk3 ==0.4.10, - any.gi-gdk ==3.0.24, - any.gi-gdkpixbuf ==2.0.26, - any.gi-gdkx11 ==3.0.11, - any.gi-gio ==2.0.28, - any.gi-glib ==2.0.25, - any.gi-gmodule ==2.0.1, - any.gi-gobject ==2.0.26, - any.gi-graphene ==1.0.3, - any.gi-gtk ==3.0.37, - any.gi-gtk-hs ==0.3.11, - any.gi-harfbuzz ==0.0.4, - any.gi-pango ==1.0.24, - any.gi-xlib ==2.0.10, - any.ginger ==0.10.1.0, - any.gingersnap ==0.3.1.0, - any.githash ==0.1.6.2, - any.github-release ==1.3.8, - any.github-rest ==1.0.3, - any.github-types ==0.2.1, - any.github-webhooks ==0.15.0, - any.gitlab-haskell ==0.2.5, - any.gitrev ==1.3.1, - any.gl ==0.9, - any.glabrous ==2.0.5, - any.gloss ==1.13.2.1, - any.gloss-rendering ==1.13.1.1, - any.gluturtle ==0.0.58.1, - any.gnuplot ==0.5.6.1, - any.goldplate ==0.2.0, - any.google-isbn ==1.0.3, - any.gopher-proxy ==0.1.1.2, - any.gothic ==0.1.7, - any.gpolyline ==0.1.0.1, - any.graph-core ==0.3.0.0, - any.graph-wrapper ==0.2.6.0, - any.graphite ==0.10.0.1, - any.graphql-client ==1.1.1, - any.graphs ==0.7.1, - any.graphula ==2.0.1.0, - any.graphviz ==2999.20.1.0, - any.gravatar ==0.8.0, - greskell -hint-test, - any.greskell ==1.2.0.2, - any.greskell-core ==0.1.3.7, - any.greskell-websocket ==0.1.2.6, - any.groom ==0.1.2.1, - any.group-by-date ==0.1.0.4, - any.groups ==0.5.3, - any.gtk-strut ==0.1.3.0, - any.guarded-allocation ==0.0.1, - any.hOpenPGP ==2.9.5, - any.hackage-db ==2.1.2, - any.hackage-security ==0.6.0.1, - any.haddock-library ==1.10.0, - any.hadoop-streaming ==0.2.0.3, - any.hakyll-convert ==0.3.0.4, - any.hal ==0.4.8, - any.half ==0.3.1, - any.hall-symbols ==0.1.0.6, - any.hamtsolo ==1.0.3, - any.hapistrano ==0.4.3.0, - any.happstack-server ==7.7.1.1, - any.happy ==1.20.0, - any.happy-meta ==0.2.0.11, - any.hasbolt ==0.1.6.1, - any.hashable ==1.4.0.2, - any.hashable-time ==0.2.1, - any.hashids ==1.0.2.4, - any.hashing ==0.1.0.1, - any.hashmap ==1.3.3, - any.hashtables ==1.2.4.2, - any.haskeline ==0.8.2, - any.haskell-awk ==1.2.0.1, - any.haskell-gi ==0.25.0, - any.haskell-gi-base ==0.25.0, - any.haskell-gi-overloading ==1.0, - any.haskell-import-graph ==1.0.4, - any.haskell-lexer ==1.1, - any.haskell-lsp ==0.24.0.0, - any.haskell-lsp-types ==0.24.0.0, - any.haskell-names ==0.9.9, - any.haskell-src ==1.0.3.1, - any.haskell-src-exts ==1.23.1, - any.haskell-src-exts-util ==0.2.5, - any.haskell-src-meta ==0.8.7, - any.haskey-btree ==0.3.0.1, - any.hasktags ==0.72.0, - any.hasql ==1.4.5.3, - any.hasql-notifications ==0.2.0.0, - any.hasql-optparse-applicative ==0.3.0.6, - any.hasql-pool ==0.5.2, - any.hasql-queue ==1.2.0.2, - any.hasql-transaction ==1.0.1, - any.hasty-hamiltonian ==1.3.4, - any.haxr ==3000.11.4.1, - any.hdaemonize ==0.5.6, - any.headroom ==0.4.2.0, - any.heap ==1.0.4, - any.heaps ==0.4, - any.hebrew-time ==0.1.2, - any.hedgehog ==1.0.5, - any.hedgehog-corpus ==0.2.0, - any.hedgehog-fakedata ==0.0.1.4, - any.hedgehog-fn ==1.0, - any.hedgehog-quickcheck ==0.1.1, - any.hedis ==0.14.4, - any.hedn ==0.3.0.4, - any.here ==1.2.13, - any.heredoc ==0.2.0.0, - any.heterocephalus ==1.0.5.4, - any.hex ==0.2.0, - any.hexml ==0.3.4, - any.hexml-lens ==0.2.1, - any.hexpat ==0.20.13, - any.hformat ==0.3.3.1, - any.hfsevents ==0.1.6, - any.hgeometry ==0.12.0.4, - any.hgeometry-combinatorial ==0.12.0.3, - any.hgrev ==0.2.6, - any.hi-file-parser ==0.1.2.0, - any.hidapi ==0.1.7, - any.hie-bios ==0.7.6, - any.higher-leveldb ==0.6.0.0, - any.highlighting-kate ==0.6.4, - any.hinfo ==0.0.3.0, - any.hinotify ==0.4.1, - any.hint ==0.9.0.4, - any.hjsmin ==0.2.0.4, - any.hkd-default ==1.1.0.0, - any.hkgr ==0.3, - any.hledger ==1.21, - any.hledger-iadd ==1.3.14, - any.hledger-interest ==1.6.1, - any.hledger-lib ==1.21, - any.hledger-stockquotes ==0.1.2.0, - any.hledger-ui ==1.21, - any.hledger-web ==1.21, - any.hlibcpuid ==0.2.0, - any.hlibgit2 ==0.18.0.16, - any.hlibsass ==0.1.10.1, - any.hlint ==3.2.7, - any.hmatrix ==0.20.2, - any.hmatrix-backprop ==0.1.3.0, - any.hmatrix-gsl ==0.19.0.1, - any.hmatrix-gsl-stats ==0.4.1.8, - any.hmatrix-morpheus ==0.1.1.2, - any.hmatrix-vector-sized ==0.1.3.0, - any.hmm-lapack ==0.4, - any.hmpfr ==0.4.4, - any.hnock ==0.4.0, - any.hoauth2 ==1.16.0, - any.hoogle ==5.0.18.3, - any.hopenpgp-tools ==0.23.6, - any.hopenssl ==2.2.4, - any.hopfli ==0.2.2.1, - any.hosc ==0.18.1, - any.hostname ==1.0, - any.hostname-validate ==1.0.0, - any.hourglass ==0.2.12, - any.hourglass-orphans ==0.1.0.0, - any.hp2pretty ==0.10, - any.hpack ==0.34.5, - any.hpack-dhall ==0.5.3, - any.hpc-codecov ==0.3.0.0, - any.hpc-lcov ==1.0.1, - any.hprotoc ==2.4.17, - any.hruby ==0.3.8.1, - any.hs-GeoIP ==0.3, - any.hs-bibutils ==6.10.0.0, - any.hs-functors ==0.1.7.1, - any.hs-php-session ==0.0.9.3, - any.hs-tags ==0.1.5.2, - any.hsass ==0.8.0, - any.hsc2hs ==0.68.8, - any.hscolour ==1.24.4, - any.hsdns ==1.8, - any.hsebaysdk ==0.4.1.0, - any.hsemail ==2.2.1, - any.hsini ==0.5.1.2, - any.hsinstall ==2.6, - any.hslogger ==1.3.1.0, - any.hslua ==1.3.0.2, - any.hslua-aeson ==1.0.3.1, - any.hslua-module-doclayout ==0.2.0.1, - any.hslua-module-path ==0.1.0.1, - any.hslua-module-system ==0.2.2.1, - any.hslua-module-text ==0.3.0.1, - any.hsp ==0.10.0, - any.hspec ==2.7.10, - any.hspec-attoparsec ==0.1.0.2, - any.hspec-checkers ==0.1.0.2, - any.hspec-contrib ==0.5.1, - any.hspec-core ==2.7.10, - any.hspec-discover ==2.7.10, - any.hspec-expectations ==0.8.2, - any.hspec-expectations-json ==1.0.0.4, - any.hspec-expectations-lifted ==0.10.0, - any.hspec-expectations-pretty-diff ==0.7.2.5, - any.hspec-golden ==0.1.0.3, - any.hspec-golden-aeson ==0.7.0.0, - any.hspec-hedgehog ==0.0.1.2, - any.hspec-junit-formatter ==1.0.0.5, - any.hspec-leancheck ==0.0.6, - any.hspec-megaparsec ==2.2.0, - any.hspec-meta ==2.7.8, - any.hspec-need-env ==0.1.0.8, - any.hspec-parsec ==0, - any.hspec-smallcheck ==0.5.2, - any.hspec-tables ==0.0.1, - any.hspec-wai-json ==0.11.0, - any.hsshellscript ==3.5.0, - any.hsyslog ==5.0.2, - any.htaglib ==1.2.0, - any.html ==1.0.1.2, - any.html-conduit ==1.3.2.2, - any.html-entities ==1.1.4.5, - any.html-entity-map ==0.1.0.0, - any.htoml ==1.0.0.3, - any.http-api-data ==0.4.3, - any.http-client-overrides ==0.1.1.0, - any.http-common ==0.8.3.4, - any.http-date ==0.0.11, - any.http-directory ==0.1.8, - any.http-download ==0.2.0.0, - any.http-link-header ==1.2.1, - any.http-media ==0.8.0.0, - any.http-query ==0.1.0.1, - any.http-reverse-proxy ==0.6.0, - any.http-streams ==0.8.9.4, - any.http-types ==0.12.3, - any.httpd-shed ==0.4.1.1, - any.human-readable-duration ==0.2.1.4, - any.hunit-dejafu ==2.0.0.5, - any.hvect ==0.4.0.0, - any.hvega ==0.11.0.1, - any.hw-balancedparens ==0.4.1.1, - any.hw-bits ==0.7.2.1, - any.hw-conduit ==0.2.1.0, - any.hw-conduit-merges ==0.2.1.0, - any.hw-diagnostics ==0.0.1.0, - any.hw-excess ==0.2.3.0, - any.hw-fingertree ==0.1.2.0, - any.hw-fingertree-strict ==0.1.2.0, - any.hw-hedgehog ==0.1.1.0, - any.hw-hspec-hedgehog ==0.1.1.0, - any.hw-int ==0.0.2.0, - any.hw-json-simd ==0.1.1.0, - any.hw-kafka-client ==4.0.3, - any.hw-packed-vector ==0.2.1.0, - any.hw-parser ==0.1.1.0, - any.hw-prim ==0.6.3.0, - any.hw-rankselect ==0.13.4.0, - any.hw-rankselect-base ==0.3.4.1, - any.hw-simd ==0.1.2.0, - any.hw-streams ==0.0.1.0, - any.hw-string-parse ==0.0.0.4, - any.hw-succinct ==0.1.0.1, - any.hweblib ==0.6.3, - hxt +network-uri, - any.hxt ==9.3.1.22, - any.hxt-charproperties ==9.5.0.0, - any.hxt-css ==0.1.0.3, - any.hxt-curl ==9.1.1.1, - any.hxt-expat ==9.1.1, - hxt-http +network-uri, - any.hxt-http ==9.1.5.2, - any.hxt-regex-xmlschema ==9.2.0.7, - any.hxt-tagsoup ==9.1.4, - any.hxt-unicode ==9.0.2.4, - any.hybrid-vectors ==0.2.2, - any.hyper ==0.2.1.1, - any.hyperloglog ==0.4.5, - any.hyphenation ==0.8.2, - any.iconv ==0.4.1.3, - any.identicon ==0.2.2, - any.ieee754 ==0.8.0, - any.if ==0.1.0.0, - any.iff ==0.0.6, - any.ihaskell ==0.10.2.1, - any.ihs ==0.1.0.3, - any.ilist ==0.4.0.1, - any.imagesize-conduit ==1.1, - any.immortal ==0.3, - any.immortal-queue ==0.1.0.1, - any.implicit-hie ==0.1.2.6, - any.inbox ==0.1.0, - any.include-file ==0.1.0.4, - any.incremental-parser ==0.5.0.2, - any.indents ==0.5.0.1, - any.indexed ==0.1.3, - any.indexed-containers ==0.1.0.2, - any.indexed-list-literals ==0.2.1.3, - any.indexed-profunctors ==0.1.1, - any.indexed-traversable ==0.1.2, - any.indexed-traversable-instances ==0.1, - any.infer-license ==0.2.0, - any.inflections ==0.4.0.6, - any.influxdb ==1.9.2.1, - any.ini ==0.4.1, - any.inj ==1.0, - any.inline-c ==0.9.1.5, - any.inline-c-cpp ==0.4.0.3, - any.inline-r ==0.10.5, - any.inliterate ==0.1.0, - any.input-parsers ==0.2.3.1, - any.insert-ordered-containers ==0.2.5.1, - any.inspection-testing ==0.4.6.0, - any.instance-control ==0.1.2.0, - any.int-cast ==0.2.0.0, - any.integer-logarithms ==1.0.3.1, - any.integer-roots ==1.0.1.0, - any.integration ==0.2.1, - any.intern ==0.9.4, - any.interpolate ==0.2.1, - any.interpolatedstring-perl6 ==1.0.2, - any.interpolation ==0.1.1.2, - any.interpolator ==1.1.0.2, - any.intervals ==0.9.2, - any.intro ==0.9.0.0, - any.intset-imperative ==0.1.0.0, - any.invariant ==0.5.5, - any.invertible ==0.2.0.7, - any.invertible-grammar ==0.1.3.2, - any.invertible-hxt ==0.1, - any.io-machine ==0.2.0.0, - any.io-manager ==0.1.0.3, - any.io-memoize ==1.1.1.0, - any.io-region ==0.1.1, - any.io-storage ==0.3, - any.io-streams ==1.5.2.1, - any.io-streams-haproxy ==1.0.1.0, - any.ip6addr ==1.0.2, - any.ipa ==0.3.1.1, - any.iproute ==1.7.12, - any.ipynb ==0.1.0.2, - any.ipython-kernel ==0.10.2.1, - any.irc ==0.6.1.0, - any.irc-client ==1.1.2.2, - any.irc-conduit ==0.3.0.5, - any.irc-ctcp ==0.1.3.1, - any.isbn ==1.1.0.2, - any.islink ==0.1.0.0, - any.iso3166-country-codes ==0.20140203.8, - any.iso639 ==0.1.0.3, - any.iso8601-time ==0.1.5, - any.iterable ==3.0, - any.ix-shapable ==0.1.0, - any.ixset-typed ==0.5, - any.ixset-typed-binary-instance ==0.1.0.2, - any.ixset-typed-conversions ==0.1.2.0, - any.ixset-typed-hashable-instance ==0.1.0.2, - any.jack ==0.7.2, - any.jailbreak-cabal ==1.3.5, - any.jalaali ==1.0.0.0, - any.java-adt ==0.2018.11.4, - any.jira-wiki-markup ==1.4.0, - any.jose ==0.8.4, - any.jose-jwt ==0.9.2, - any.js-chart ==2.9.4.1, - any.js-dgtable ==0.5.2, - any.js-flot ==0.8.3, - any.js-jquery ==3.3.1, - any.json ==0.10, - any.json-feed ==1.0.15, - any.json-rpc ==1.0.3, - any.json-rpc-generic ==0.2.1.6, - any.jsonifier ==0.1.1, - any.jsonpath ==0.2.0.0, - any.junit-xml ==0.1.0.2, - any.justified-containers ==0.3.0.0, - any.jwt ==0.10.0, - any.kan-extensions ==5.2.3, - any.kanji ==3.4.1, - any.katip ==0.8.7.0, - any.katip-logstash ==0.1.0.0, - any.kawhi ==0.3.0, - any.kazura-queue ==0.1.0.4, - any.kdt ==0.2.4, - any.keep-alive ==0.2.0.0, - any.keycode ==0.2.2, - any.keys ==3.12.3, - any.ki ==0.2.0.1, - any.kind-apply ==0.3.2.0, - any.kind-generics ==0.4.1.0, - any.kind-generics-th ==0.2.2.2, - any.kmeans ==0.1.3, - any.koji ==0.0.2, - any.koofr-client ==1.0.0.3, - any.krank ==0.2.3, - any.kubernetes-webhook-haskell ==0.2.0.3, - any.l10n ==0.1.0.1, - any.labels ==0.3.3, - any.lackey ==1.0.16, - any.lambdabot-core ==5.3.0.2, - any.lame ==0.2.0, - any.language-avro ==0.1.3.1, - any.language-bash ==0.9.2, - any.language-c ==0.9.0.1, - any.language-c-quote ==0.13, - any.language-docker ==10.0.2, - any.language-java ==0.2.9, - any.language-javascript ==0.7.1.0, - any.language-nix ==2.2.0, - any.language-protobuf ==1.0.1, - any.language-python ==0.5.8, - any.language-thrift ==0.12.0.0, - any.lapack ==0.3.2, - any.lapack-carray ==0.0.3, - any.lapack-comfort-array ==0.0.1, - any.lapack-ffi ==0.0.3, - any.lapack-ffi-tools ==0.1.2.1, - any.largeword ==1.2.5, - any.latex ==0.1.0.4, - any.lattices ==2.0.2, - any.lawful ==0.1.0.0, - any.lazy-csv ==0.5.1, - any.lazyio ==0.1.0.4, - any.lazysmallcheck ==0.6, - any.lca ==0.4, - any.leancheck ==0.9.10, - any.leancheck-instances ==0.0.4, - any.leapseconds-announced ==2017.1.0.1, - any.learn-physics ==0.6.5, - any.lens ==5.0.1, - any.lens-action ==0.2.6, - any.lens-aeson ==1.1.3, - any.lens-csv ==0.1.1.0, - any.lens-datetime ==0.3, - any.lens-family ==2.0.0, - any.lens-family-core ==2.0.0, - any.lens-family-th ==0.5.2.1, - any.lens-misc ==0.0.2.0, - any.lens-process ==0.4.0.0, - any.lens-properties ==4.11.1, - any.lens-regex ==0.1.3, - any.lens-regex-pcre ==1.1.0.0, - any.lenz ==0.4.2.0, - any.leveldb-haskell ==0.6.5, - any.libBF ==0.6.2, - any.libffi ==0.1, - any.libgit ==0.3.1, - any.libgraph ==1.14, - any.libjwt-typed ==0.2, - any.libmpd ==0.10.0.0, - any.liboath-hs ==0.0.1.2, - any.libyaml ==0.1.2, - any.lift-generics ==0.2.1, - any.lift-type ==0.1.0.1, - any.lifted-async ==0.10.2.2, - any.lifted-base ==0.2.3.12, - any.line ==4.0.1, - any.linear ==1.21.6, - any.linear-circuit ==0.1.0.2, - any.linenoise ==0.3.2, - any.linux-capabilities ==0.1.0.0, - any.linux-file-extents ==0.2.0.0, - any.linux-namespaces ==0.1.3.0, - any.liquid-fixpoint ==0.8.10.2, - any.list-predicate ==0.1.0.1, - any.list-singleton ==1.0.0.5, - any.list-t ==1.0.5, - any.list-transformer ==1.0.7, - any.listsafe ==0.1.0.1, - any.literatex ==0.1.0.2, - any.little-rio ==0.2.2, - any.llvm-hs ==9.0.1, - any.llvm-hs-pure ==9.0.0, - any.lmdb ==0.2.5, - any.load-env ==0.2.1.0, - any.loc ==0.1.3.10, - any.locators ==0.3.0.3, - any.loch-th ==0.2.2, - any.lockfree-queue ==0.2.3.1, - any.log-domain ==0.13.2, - any.logfloat ==0.13.4, - any.logging ==3.0.5, - any.logging-facade ==0.3.1, - any.logging-facade-syslog ==1, - any.logict ==0.7.1.0, - any.logstash ==0.1.0.1, - any.loop ==0.3.0, - any.lrucache ==1.2.0.1, - any.lrucaching ==0.3.3, - any.lsp ==1.2.0.0, - any.lsp-test ==0.14.0.0, - any.lsp-types ==1.2.0.0, - any.lucid ==2.9.12.1, - any.lucid-cdn ==0.2.2.0, - any.lucid-extras ==0.2.2, - any.lukko ==0.1.1.3, - any.lz4-frame-conduit ==0.1.0.1, - any.lzma ==0.0.0.3, - any.lzma-clib ==5.2.2, - any.lzma-conduit ==1.2.2, - any.machines ==0.7.2, - any.machines-binary ==7.0.0.0, - any.magic ==1.1, - any.magico ==0.0.2.1, - any.main-tester ==0.2.0.1, - any.mainland-pretty ==0.7.1, - any.makefile ==1.1.0.0, - any.managed ==1.0.8, - any.markdown ==0.1.17.5, - any.markdown-unlit ==0.5.1, - any.markov-chain ==0.0.3.4, - any.markov-chain-usage-model ==0.0.0, - any.massiv ==0.6.1.0, - any.massiv-io ==0.4.1.0, - any.massiv-persist ==0.1.0.0, - any.massiv-serialise ==0.1.0.0, - any.massiv-test ==0.1.6.1, - any.math-extras ==0.1.1.0, - any.math-functions ==0.3.4.2, - any.mathexpr ==0.3.0.0, - any.matplotlib ==0.7.7, - any.matrices ==0.5.0, - any.matrix ==0.3.6.1, - any.matrix-as-xyz ==0.1.2.2, - any.matrix-market-attoparsec ==0.1.1.3, - any.matrix-static ==0.3, - any.maximal-cliques ==0.1.1, - any.mbox ==0.3.4, - any.mbox-utility ==0.0.3.1, - any.mcmc ==0.5.0.0, - any.mcmc-types ==1.0.3, - any.med-module ==0.1.2.1, - any.medea ==1.2.0, - any.median-stream ==0.7.0.0, - any.megaparsec ==9.0.1, - any.megaparsec-tests ==9.0.1, - any.membrain ==0.0.0.2, - any.memory ==0.15.0, - any.mercury-api ==0.1.0.2, - any.mergeful ==0.2.0.0, - any.mergeless ==0.3.0.0, - any.mersenne-random ==1.0.0.1, - mersenne-random-pure64 -small_base, - any.mersenne-random-pure64 ==0.2.2.0, - any.messagepack ==0.5.4, - any.metrics ==0.4.1.1, - any.mfsolve ==0.3.2.0, - any.microlens ==0.4.12.0, - any.microlens-aeson ==2.4.1, - any.microlens-contra ==0.1.0.2, - any.microlens-ghc ==0.4.13.1, - any.microlens-mtl ==0.2.0.1, - any.microlens-platform ==0.4.2.1, - any.microlens-process ==0.2.0.2, - any.microlens-th ==0.4.3.10, - any.microspec ==0.2.1.3, - any.microstache ==1.0.2, - any.midair ==0.2.0.1, - any.midi ==0.2.2.2, - any.mighty-metropolis ==2.0.0, - any.mime ==0.4.0.2, - any.mime-mail ==0.5.1, - any.mime-mail-ses ==0.4.3, - any.mime-types ==0.1.0.9, - any.min-max-pqueue ==0.1.0.2, - any.mini-egison ==1.0.0, - any.minimal-configuration ==0.1.4, - any.minimorph ==0.3.0.0, - any.minio-hs ==1.5.3, - any.miniutter ==0.5.1.1, - mintty +win32-2-13-1, - any.mintty ==0.1.3, - any.missing-foreign ==0.1.1, - any.mixed-types-num ==0.5.9.1, - any.mltool ==0.2.0.1, - any.mmap ==0.5.9, - any.mmark ==0.0.7.2, - any.mmark-cli ==0.0.5.0, - any.mmark-ext ==0.2.1.3, - any.mmorph ==1.1.5, - any.mnist-idx ==0.1.2.8, - any.mnist-idx-conduit ==0.4.0.0, - any.mock-time ==0.1.0, - any.mockery ==0.3.5, - any.mod ==0.1.2.2, - any.model ==0.5, - any.modern-uri ==0.3.4.2, - any.modular ==0.1.0.8, - any.monad-chronicle ==1.0.0.1, - any.monad-control ==1.0.3.1, - any.monad-control-aligned ==0.0.1.1, - any.monad-coroutine ==0.9.1.3, - any.monad-extras ==0.6.0, - any.monad-journal ==0.8.1, - any.monad-logger ==0.3.36, - any.monad-logger-json ==0.1.0.0, - any.monad-logger-logstash ==0.1.0.0, - any.monad-logger-prefix ==0.1.12, - any.monad-loops ==0.4.3, - any.monad-memo ==0.5.3, - any.monad-metrics ==0.2.2.0, - any.monad-par ==0.3.5, - any.monad-par-extras ==0.3.3, - any.monad-parallel ==0.7.2.5, - any.monad-peel ==0.2.1.2, - any.monad-primitive ==0.1, - any.monad-products ==4.0.1, - any.monad-resumption ==0.1.4.0, - any.monad-skeleton ==0.1.5, - any.monad-st ==0.2.4.1, - any.monad-time ==0.3.1.0, - any.monad-unlift ==0.2.0, - any.monad-unlift-ref ==0.2.1, - any.monadic-arrays ==0.2.2, - any.monadlist ==0.0.2, - any.monads-tf ==0.1.0.3, - mongoDB -_old-network, - any.mongoDB ==2.7.1.1, - any.mono-traversable ==1.0.15.3, - any.mono-traversable-instances ==0.1.1.0, - any.mono-traversable-keys ==0.1.0, - any.monoid-subclasses ==1.1.2, - any.monoid-transformer ==0.0.4, - any.more-containers ==0.2.2.2, - any.morpheus-graphql ==0.17.0, - any.morpheus-graphql-app ==0.17.0, - any.morpheus-graphql-client ==0.17.0, - any.morpheus-graphql-core ==0.17.0, - any.morpheus-graphql-subscriptions ==0.17.0, - any.moss ==0.2.0.0, - any.mountpoints ==1.0.2, - any.mpi-hs ==0.7.2.0, - any.mpi-hs-binary ==0.1.1.0, - any.mpi-hs-cereal ==0.1.0.0, - any.mtl-compat ==0.2.2, - any.mtl-prelude ==2.0.3.1, - any.multi-containers ==0.1.1, - any.multiarg ==0.30.0.10, - any.multimap ==1.2.1, - any.multipart ==0.2.1, - any.multiset ==0.3.4.3, - any.multistate ==0.8.0.3, - any.murmur-hash ==0.1.0.10, - any.murmur3 ==1.0.5, - any.mustache ==2.3.1, - any.mutable-containers ==0.3.4, - any.mwc-probability ==2.3.1, - any.mwc-random ==0.15.0.2, - any.mwc-random-monad ==0.7.3.1, - any.mx-state-codes ==1.0.0.0, - any.mysql ==0.2.1, - any.mysql-simple ==0.4.7, - any.n2o ==0.11.1, - any.nagios-check ==0.3.2, - any.names-th ==0.3.0.1, - any.nano-erl ==0.1.0.1, - any.nanospec ==0.2.2, - any.nats ==1.1.2, - any.natural-induction ==0.2.0.0, - any.natural-sort ==0.1.2, - any.natural-transformation ==0.4, - any.ndjson-conduit ==0.1.0.5, - any.neat-interpolation ==0.5.1.2, - any.net-mqtt ==0.7.1.1, - any.net-mqtt-lens ==0.1.1.0, - any.netcode-io ==0.0.3, - any.netlib-carray ==0.1, - any.netlib-comfort-array ==0.0.0.2, - any.netlib-ffi ==0.1.1, - any.netpbm ==1.0.4, - any.nettle ==0.3.0, - any.netwire ==5.0.3, - any.netwire-input ==0.0.7, - any.netwire-input-glfw ==0.0.11, - any.network ==3.1.1.1, - any.network-bsd ==2.8.1.0, - any.network-byte-order ==0.1.6, - any.network-conduit-tls ==1.3.2, - any.network-info ==0.2.0.10, - any.network-ip ==0.3.0.3, - any.network-messagepack-rpc ==0.1.2.0, - any.network-messagepack-rpc-websocket ==0.1.1.1, - any.network-run ==0.2.4, - any.network-simple ==0.4.5, - any.network-simple-tls ==0.4, - any.network-transport ==0.5.4, - any.network-transport-composed ==0.2.1, - any.network-uri ==2.6.4.1, - any.newtype ==0.2.2.0, - any.newtype-generics ==0.6.1, - any.nicify-lib ==1.0.1, - any.nix-derivation ==1.1.2, - nix-paths +allow-relative-paths, - any.nix-paths ==1.0.1, - any.no-value ==1.0.0.0, - any.non-empty ==0.3.3, - any.non-empty-sequence ==0.2.0.4, - any.non-negative ==0.1.2, - any.nonce ==1.0.7, - any.nondeterminism ==1.4, - any.nonempty-containers ==0.3.4.4, - any.nonempty-vector ==0.2.1.0, - any.nonempty-zipper ==1.0.0.3, - any.nonemptymap ==0.0.6.0, - any.not-gloss ==0.7.7.0, - any.nowdoc ==0.1.1.0, - any.nqe ==0.6.3, - any.nri-env-parser ==0.1.0.7, - any.nri-observability ==0.1.1.3, - any.nri-prelude ==0.6.0.5, - any.nsis ==0.3.3, - any.numbers ==3000.2.0.2, - any.numeric-extras ==0.1, - any.numeric-limits ==0.1.0.0, - any.numeric-prelude ==0.4.3.3, - any.numhask ==0.7.1.0, - any.numtype-dk ==0.5.0.3, - any.nuxeo ==0.3.2, - any.nvim-hs ==2.1.0.4, - any.nvim-hs-contrib ==2.0.0.0, - any.nvim-hs-ghcid ==2.0.0.0, - any.o-clock ==1.2.1, - any.oauthenticated ==0.2.1.0, - any.odbc ==0.2.5, - any.oeis2 ==1.0.5, - any.ofx ==0.4.4.0, - any.old-locale ==1.0.0.7, - any.old-time ==1.1.0.3, - any.once ==0.4, - any.one-liner ==1.0, - any.oo-prototypes ==0.1.0.0, - any.opaleye ==0.7.6.2, - any.open-browser ==0.2.1.0, - any.openapi3 ==3.1.0, - any.openexr-write ==0.1.0.2, - any.openpgp-asciiarmor ==0.1.2, - any.opensource ==0.1.1.0, - any.openssl-streams ==1.2.3.0, - any.opentelemetry ==0.7.0, - any.opentelemetry-extra ==0.7.0, - any.opentelemetry-lightstep ==0.7.0, - any.opentelemetry-wai ==0.7.0, - any.operational ==0.2.4.1, - any.operational-class ==0.3.0.0, - any.optics ==0.3, - any.optics-core ==0.4, - any.optics-extra ==0.4, - any.optics-th ==0.4, - any.optics-vl ==0.2.1, - any.optional-args ==1.0.2, - any.options ==1.2.1.1, - any.optparse-applicative ==0.16.1.0, - any.optparse-generic ==1.4.7, - any.optparse-simple ==0.1.1.4, - any.optparse-text ==0.1.1.0, - any.ordered-containers ==0.2.2, - any.ormolu ==0.1.4.1, - any.overhang ==1.0.0, - any.packcheck ==0.5.1, - any.packdeps ==0.6.0.0, - any.pager ==0.1.1.0, - any.pagination ==0.2.2, - any.pagure-cli ==0.2, - any.pandoc ==2.14.0.3, - any.pandoc-dhall-decoder ==0.1.0.1, - any.pandoc-plot ==1.2.3, - any.pandoc-throw ==0.1.0.0, - any.pandoc-types ==1.22.1, - any.pantry ==0.5.2.3, - any.parallel ==3.2.2.0, - any.parameterized ==0.5.0.0, - any.paripari ==0.7.0.0, - any.parseargs ==0.2.0.9, - any.parsec-class ==1.0.0.0, - any.parsec-numbers ==0.1.0, - any.parsec-numeric ==0.1.0.0, - any.parser-combinators ==1.2.1, - any.parser-combinators-tests ==1.2.1, - any.parsers ==0.12.10, - any.partial-handler ==1.0.3, - any.partial-isomorphisms ==0.2.2.1, - any.partial-semigroup ==0.5.1.12, - any.password ==3.0.0.0, - any.password-instances ==3.0.0.0, - any.password-types ==1.0.0.0, - any.path ==0.8.0, - any.path-binary-instance ==0.1.0.1, - any.path-extensions ==0.1.1.0, - any.path-extra ==0.2.0, - any.path-io ==1.6.3, - any.path-like ==0.2.0.2, - any.path-pieces ==0.2.1, - any.path-text-utf8 ==0.0.1.8, - pathtype -old-time, - any.pathtype ==0.8.1.1, - any.pathwalk ==0.3.1.2, - any.pattern-arrows ==0.0.2, - any.pattern-trie ==0.1.1, - any.pava ==0.1.1.2, - any.pcg-random ==0.1.3.7, - any.pcre-heavy ==1.0.0.2, - any.pcre-light ==0.4.1.0, - any.pcre-utils ==0.1.8.2, - any.pcre2 ==1.1.5, - any.pdfinfo ==1.5.4, - any.peano ==0.1.0.1, - any.pem ==0.2.4, - any.percent-format ==0.0.2, - any.peregrin ==0.3.1, - any.perfect-hash-generator ==0.2.0.6, - any.perfect-vector-shuffle ==0.1.1.1, - any.persist ==0.1.1.5, - any.persistable-record ==0.6.0.5, - any.persistable-types-HDBC-pg ==0.0.3.5, - any.persistent ==2.13.2.1, - any.persistent-mtl ==0.2.2.0, - any.persistent-mysql ==2.13.0.2, - any.persistent-pagination ==0.1.1.2, - any.persistent-postgresql ==2.13.2.1, - any.persistent-qq ==2.12.0.1, - any.persistent-sqlite ==2.13.0.3, - any.persistent-template ==2.12.0.0, - any.persistent-test ==2.13.0.3, - any.persistent-typed-db ==0.1.0.5, - any.pg-harness-client ==0.6.0, - any.pg-transact ==0.3.2.0, - any.pgp-wordlist ==0.1.0.3, - any.phantom-state ==0.2.1.2, - any.pid1 ==0.1.3.0, - any.pinboard ==0.10.2.0, - any.pipes ==4.3.16, - any.pipes-aeson ==0.4.1.8, - any.pipes-attoparsec ==0.5.1.5, - any.pipes-binary ==0.4.3, - any.pipes-bytestring ==2.1.7, - any.pipes-concurrency ==2.0.12, - any.pipes-csv ==1.4.3, - any.pipes-extras ==1.0.15, - any.pipes-fastx ==0.3.0.0, - any.pipes-group ==1.0.12, - any.pipes-http ==1.0.6, - any.pipes-network ==0.6.5, - any.pipes-network-tls ==0.4, - any.pipes-ordered-zip ==1.2.1, - any.pipes-parse ==3.0.9, - any.pipes-random ==1.0.0.5, - any.pipes-safe ==2.3.3, - any.pipes-wai ==3.2.0, - any.pkcs10 ==0.2.0.0, - any.pkgtreediff ==0.4.1, - any.place-cursor-at ==1.0.1, - any.placeholders ==0.1, - any.plaid ==0.1.0.4, - any.plotlyhs ==0.2.1, - any.pointed ==5.0.3, - any.pointedlist ==0.6.1, - any.pointless-fun ==1.1.0.8, - any.poll ==0.0.0.2, - any.polling-cache ==0.1.1.0, - any.poly ==0.5.0.0, - any.poly-arity ==0.1.0, - any.polynomials-bernstein ==1.1.2, - any.polyparse ==1.13, - any.polysemy ==1.7.1.0, - any.polysemy-check ==0.9.0.0, - any.polysemy-plugin ==0.4.2.0, - any.pooled-io ==0.0.2.2, - any.port-utils ==0.2.1.0, - any.posix-paths ==0.3.0.0, - any.possibly ==1.0.0.0, - any.post-mess-age ==0.2.1.0, - any.postgres-options ==0.2.0.0, - any.postgresql-binary ==0.12.4.1, - any.postgresql-libpq ==0.9.4.3, - any.postgresql-libpq-notify ==0.2.0.0, - any.postgresql-orm ==0.5.1, - any.postgresql-simple ==0.6.4, - any.postgresql-typed ==0.6.2.0, - any.postgrest ==7.0.1, - any.pptable ==0.3.0.0, - any.pqueue ==1.4.1.3, - any.prairie ==0.0.1.0, - any.prefix-units ==0.2.0, - any.prelude-compat ==0.0.0.2, - any.prelude-safeenum ==0.1.1.3, - any.pretty-class ==1.0.1.1, - any.pretty-diff ==0.4.0.3, - any.pretty-hex ==1.1, - any.pretty-relative-time ==0.2.0.0, - any.pretty-show ==1.10, - any.pretty-simple ==4.0.0.0, - any.pretty-sop ==0.2.0.3, - any.pretty-terminal ==0.1.0.0, - any.prettyclass ==1.0.0.0, - any.prettyprinter ==1.7.1, - any.prettyprinter-ansi-terminal ==1.1.3, - any.prettyprinter-compat-annotated-wl-pprint ==1.1, - any.prettyprinter-compat-ansi-wl-pprint ==1.0.2, - any.prettyprinter-compat-wl-pprint ==1.0.1, - any.prettyprinter-convert-ansi-wl-pprint ==1.1.2, - any.prim-uniq ==0.2, - any.primes ==0.2.1.0, - any.primitive ==0.7.3.0, - any.primitive-addr ==0.1.0.2, - any.primitive-extras ==0.10.1.1, - any.primitive-unaligned ==0.1.1.1, - any.primitive-unlifted ==1.0.0.0, - any.print-console-colors ==0.1.0.0, - any.probability ==0.2.7, - any.process-extras ==0.7.4, - any.product-isomorphic ==0.0.3.3, - any.product-profunctors ==0.11.0.2, - any.profiterole ==0.1, - any.profunctors ==5.6.2, - any.project-template ==0.2.1.0, - any.projectroot ==0.2.0.1, - any.prometheus ==2.2.2, - any.prometheus-client ==1.0.1, - any.prometheus-metrics-ghc ==1.0.1.2, - any.prometheus-wai-middleware ==1.0.1.0, - any.promises ==0.3, - any.prompt ==0.1.1.2, - any.prospect ==0.1.0.0, - any.proto-lens ==0.7.1.0, - any.proto-lens-protoc ==0.7.1.0, - any.proto-lens-runtime ==0.7.0.1, - any.proto-lens-setup ==0.4.0.5, - any.proto3-wire ==1.2.2, - any.protobuf ==0.2.1.3, - any.protobuf-simple ==0.1.1.1, - any.protocol-buffers ==2.4.17, - any.protocol-buffers-descriptor ==2.4.17, - any.protocol-radius ==0.0.1.1, - any.protocol-radius-test ==0.1.0.1, - any.protolude ==0.3.0, - any.proxied ==0.3.1, - any.psqueues ==0.2.7.3, - any.ptr-poker ==0.1.1.4, - any.publicsuffix ==0.20200526, - any.pulse-simple ==0.1.14, - any.pureMD5 ==2.1.4, - any.purescript-bridge ==0.14.0.0, - any.pushbullet-types ==0.4.1.0, - any.pusher-http-haskell ==2.1.0.7, - any.pvar ==1.0.0.0, - any.qchas ==1.1.0.1, - any.qm-interpolated-string ==0.3.0.0, - any.qrcode-core ==0.9.4, - any.qrcode-juicypixels ==0.8.2, - any.quadratic-irrational ==0.1.1, - any.quickcheck-arbitrary-adt ==0.3.1.0, - any.quickcheck-assertions ==0.3.0, - any.quickcheck-classes ==0.6.5.0, - any.quickcheck-classes-base ==0.6.2.0, - any.quickcheck-higherorder ==0.1.0.0, - any.quickcheck-instances ==0.3.27, - any.quickcheck-io ==0.2.0, - any.quickcheck-simple ==0.1.1.1, - any.quickcheck-special ==0.1.0.6, - any.quickcheck-state-machine ==0.7.1, - any.quickcheck-text ==0.1.2.1, - any.quickcheck-transformer ==0.3.1.1, - any.quickcheck-unicode ==1.0.1.0, - any.quiet ==0.2, - any.quote-quot ==0.2.0.0, - any.radius ==0.7.1.0, - any.rainbow ==0.34.2.2, - any.rainbox ==0.26.0.0, - any.ral ==0.2, - any.rampart ==1.1.0.4, - any.ramus ==0.1.2, - any.rando ==0.0.0.4, - any.random ==1.2.0, - any.random-bytestring ==0.1.4, - any.random-fu ==0.2.7.7, - any.random-shuffle ==0.0.4, - any.random-source ==0.3.0.11, - any.random-tree ==0.6.0.5, - any.range ==0.3.0.2, - any.range-set-list ==0.1.3.1, - any.ranged-list ==0.1.0.0, - any.rank1dynamic ==0.4.1, - any.rank2classes ==1.4.3, - any.rasterific-svg ==0.3.3.2, - any.rate-limit ==1.4.2, - any.ratel ==1.0.17, - any.ratel-wai ==1.1.5, - any.rattle ==0.2, - any.rattletrap ==11.1.1, - any.raw-strings-qq ==1.1, - any.rawfilepath ==0.2.4, - any.rawstring-qm ==0.2.3.0, - any.rcu ==0.2.5, - any.rdf ==0.1.0.5, - any.rdtsc ==1.3.0.1, - any.re2 ==0.3, - any.read-editor ==0.1.0.2, - any.read-env-var ==1.0.0.0, - any.readable ==0.3.1, - any.reanimate ==1.1.4.0, - any.reanimate-svg ==0.13.0.1, - any.rebase ==1.13.1, - any.record-dot-preprocessor ==0.2.13, - any.record-hasfield ==1.0, - any.record-wrangler ==0.1.1.0, - any.records-sop ==0.1.1.0, - any.recursion-schemes ==5.2.2.2, - any.redis-io ==1.1.0, - any.redis-resp ==1.0.0, - any.reducers ==3.12.4, - any.ref-fd ==0.5, - any.ref-tf ==0.5, - any.refact ==0.3.0.2, - any.refined ==0.6.2, - any.reflection ==2.1.6, - any.reform ==0.2.7.4, - any.reform-blaze ==0.2.4.3, - any.reform-hamlet ==0.0.5.3, - any.reform-happstack ==0.2.5.4, - any.regex ==1.1.0.0, - any.regex-applicative ==0.3.4, - any.regex-applicative-text ==0.1.0.1, - any.regex-base ==0.94.0.2, - any.regex-compat ==0.95.2.1, - any.regex-compat-tdfa ==0.95.1.4, - any.regex-pcre ==0.95.0.0, - any.regex-pcre-builtin ==0.95.2.3.8.44, - any.regex-posix ==0.96.0.1, - any.regex-posix-clib ==2.7, - any.regex-tdfa ==1.3.1.1, - any.regex-with-pcre ==1.1.0.0, - any.registry ==0.2.0.3, - any.reinterpret-cast ==0.1.0, - any.relapse ==1.0.0.0, - any.relational-query ==0.12.3.0, - any.relational-query-HDBC ==0.7.2.0, - any.relational-record ==0.2.2.0, - any.relational-schemas ==0.1.8.0, - any.reliable-io ==0.0.1, - any.relude ==0.7.0.0, - any.renderable ==0.2.0.1, - any.replace-attoparsec ==1.4.5.0, - any.replace-megaparsec ==1.4.4.0, - any.repline ==0.4.0.0, - any.req ==3.9.0, - any.req-conduit ==1.0.1, - any.rerebase ==1.13.1, - any.rescue ==0.4.2.1, - any.resistor-cube ==0.0.1.2, - any.resolv ==0.1.2.0, - any.resource-pool ==0.2.3.2, - any.resourcet ==1.2.4.3, - any.result ==0.2.6.0, - any.rethinkdb-client-driver ==0.0.25, - any.retry ==0.8.1.2, - any.rev-state ==0.1.2, - any.rfc1751 ==0.1.3, - any.rfc5051 ==0.2, - any.rhbzquery ==0.4.4, - any.rhine ==0.7.0, - any.rhine-gloss ==0.7.0, - any.rigel-viz ==0.2.0.0, - any.rio ==0.1.21.0, - any.rio-orphans ==0.1.2.0, - any.rio-prettyprint ==0.1.1.0, - any.roc-id ==0.1.0.0, - any.rocksdb-haskell ==1.0.1, - any.rocksdb-haskell-jprupp ==2.1.3, - any.rocksdb-query ==0.4.2, - any.roles ==0.2.1.0, - any.rope-utf16-splay ==0.3.2.0, - any.rosezipper ==0.2, - any.rot13 ==0.2.0.1, - any.rp-tree ==0.6, - any.rpm-nvr ==0.1.1, - any.rpmbuild-order ==0.4.5, - any.runmemo ==1.0.0.1, - any.rvar ==0.2.0.6, - any.safe ==0.3.19, - any.safe-coloured-text ==0.1.0.0, - any.safe-coloured-text-terminfo ==0.0.0.0, - any.safe-decimal ==0.2.1.0, - any.safe-exceptions ==0.1.7.2, - any.safe-foldable ==0.1.0.0, - any.safe-json ==1.1.1.1, - any.safe-money ==0.9.1, - any.safe-tensor ==0.2.1.1, - any.safecopy ==0.10.4.2, - any.safeio ==0.0.5.0, - any.saltine ==0.1.1.1, - any.salve ==1.0.11, - any.sample-frame ==0.0.3, - any.sample-frame-np ==0.0.4.1, - any.sampling ==0.3.5, - any.sandwich ==0.1.0.9, - any.sandwich-quickcheck ==0.1.0.6, - any.sandwich-slack ==0.1.0.6, - any.sandwich-webdriver ==0.1.0.6, - any.say ==0.1.0.1, - any.sbp ==2.6.3, - any.sbv ==8.15, - any.scalpel ==0.6.2, - any.scalpel-core ==0.6.2, - any.scanf ==0.1.0.0, - any.scanner ==0.3.1, - any.scheduler ==1.5.0, - any.scientific ==0.3.7.0, - any.scotty ==0.12, - any.scrypt ==0.5.0, - any.sdl2 ==2.5.3.0, - any.sdl2-gfx ==0.2, - any.sdl2-image ==2.0.0, - any.sdl2-mixer ==1.1.0, - any.sdl2-ttf ==2.1.2, - any.search-algorithms ==0.3.1, - any.secp256k1-haskell ==0.5.0, - any.securemem ==0.1.10, - any.selda ==0.5.1.0, - any.selda-json ==0.1.1.0, - any.selda-postgresql ==0.1.8.1, - any.selda-sqlite ==0.1.7.1, - any.selections ==0.3.0.0, - any.selective ==0.4.2, - any.semialign ==1.2.0.1, - any.semialign-indexed ==1.1, - any.semialign-optics ==1.1, - any.semigroupoid-extras ==5, - any.semigroupoids ==5.3.6, - any.semigroups ==0.19.2, - any.semiring-simple ==1.0.0.1, - any.semirings ==0.6, - any.semver ==0.4.0.1, - any.sendfile ==0.7.11.1, - any.sendgrid-v3 ==0.3.0.0, - any.seqalign ==0.2.0.4, - any.seqid ==0.6.2, - any.seqid-streams ==0.7.2, - any.sequence-formats ==1.6.1, - any.sequenceTools ==1.5.0, - any.serf ==0.1.1.0, - any.serialise ==0.2.4.0, - any.servant-auth ==0.4.0.0, - any.servant-auth-client ==0.4.1.0, - any.servant-auth-docs ==0.2.10.0, - any.servant-auth-server ==0.4.6.0, - any.servant-auth-swagger ==0.2.10.1, - any.servant-auth-wordpress ==1.0.0.2, - any.servant-blaze ==0.9.1, - any.servant-conduit ==0.15.1, - any.servant-docs ==0.11.9, - any.servant-elm ==0.7.2, - any.servant-errors ==0.1.6.0, - any.servant-exceptions ==0.2.1, - any.servant-exceptions-server ==0.2.1, - any.servant-foreign ==0.15.4, - any.servant-http-streams ==0.18.3, - any.servant-machines ==0.15.1, - any.servant-mock ==0.8.7, - any.servant-multipart ==0.12.1, - any.servant-multipart-api ==0.12.1, - any.servant-openapi3 ==2.0.1.2, - any.servant-pipes ==0.15.3, - any.servant-rawm ==1.0.0.0, - any.servant-swagger ==1.1.10, - any.servant-swagger-ui ==0.3.5.4.5.0, - any.servant-swagger-ui-core ==0.3.5, - any.serverless-haskell ==0.12.6, - any.serversession ==1.0.2, - any.serversession-frontend-wai ==1.0, - any.ses-html ==0.4.0.0, - any.set-cover ==0.1.1, - any.setenv ==0.1.1.3, - any.setlocale ==1.0.0.10, - any.sexp-grammar ==2.3.3.1, - any.shake ==0.19.6, - any.shake-language-c ==0.12.0, - any.shake-plus ==0.3.4.0, - any.shake-plus-extended ==0.4.1.0, - any.shakespeare ==2.0.25.1, - any.shared-memory ==0.2.0.0, - any.shell-conduit ==5.0.0, - any.shell-escape ==0.2.0, - any.shell-utility ==0.1, - any.shellmet ==0.0.4.0, - any.shelltestrunner ==1.9, - any.shelly ==1.9.0, - any.shikensu ==0.3.11, - any.shortcut-links ==0.5.1.1, - any.should-not-typecheck ==2.1.0, - any.show-combinators ==0.2.0.0, - any.siggy-chardust ==1.0.0, - any.signal ==0.1.0.4, - any.silently ==1.2.5.2, - any.simple-affine-space ==0.1.1, - any.simple-cabal ==0.1.3, - any.simple-cmd ==0.2.3, - any.simple-cmd-args ==0.1.7, - any.simple-log ==0.9.12, - any.simple-reflect ==0.3.3, - any.simple-sendfile ==0.2.30, - any.simple-templates ==1.0.0, - any.simple-vec3 ==0.6.0.1, - any.simplistic-generics ==2.0.0, - any.since ==0.0.0, - any.singleton-bool ==0.1.5, - any.singleton-nats ==0.4.5, - any.singletons ==2.7, - any.singletons-presburger ==0.6.1.0, - any.siphash ==1.0.3, - any.sitemap-gen ==0.1.0.0, - any.sized ==1.0.0.0, - any.skein ==1.0.9.4, - any.skews ==0.1.0.3, - any.skip-var ==0.1.1.0, - any.skylighting ==0.10.5.2, - any.skylighting-core ==0.10.5.2, - any.slack-api ==0.12, - any.slack-progressbar ==0.1.0.1, - any.slick ==1.1.2.2, - any.slist ==0.2.0.0, - any.slynx ==0.5.1.1, - any.smallcheck ==1.2.1, - any.smash ==0.1.2, - any.smash-aeson ==0.1.0.0, - any.smash-lens ==0.1.0.1, - any.smash-microlens ==0.1.0.0, - any.smoothie ==0.4.2.11, - any.smtp-mail ==0.3.0.0, - any.snap-blaze ==0.2.1.5, - any.snap-core ==1.0.4.2, - any.snap-server ==1.1.2.0, - any.snowflake ==0.1.1.1, - any.soap ==0.2.3.6, - any.soap-openssl ==0.1.0.2, - any.soap-tls ==0.1.1.4, - any.socket ==0.8.3.0, - any.socks ==0.6.1, - any.some ==1.0.2, - any.sop-core ==0.5.0.1, - any.sort ==1.0.0.0, - any.sorted-list ==0.2.1.0, - any.sourcemap ==0.1.6.1, - any.sox ==0.2.3.1, - any.soxlib ==0.0.3.1, - any.spacecookie ==1.0.0.0, - any.sparse-linear-algebra ==0.3.1, - any.sparse-tensor ==0.2.1.5, - any.spatial-math ==0.5.0.1, - any.special-values ==0.1.0.0, - any.speculate ==0.4.10, - any.speedy-slice ==0.3.2, - any.splice ==0.6.1.1, - any.splint ==1.0.1.4, - any.split ==0.2.3.4, - any.splitmix ==0.1.0.4, - any.splitmix-distributions ==0.9.0.0, - any.spoon ==0.3.1, - any.spreadsheet ==0.1.3.8, - any.sql-words ==0.1.6.4, - any.sqlcli ==0.2.2.0, - any.sqlcli-odbc ==0.2.0.1, - any.sqlite-simple ==0.4.18.0, - any.squeal-postgresql ==0.7.0.1, - any.squeather ==0.8.0.0, - any.srcloc ==0.6, - any.stache ==2.3.1, - any.stack ==2.7.3, - any.stack-templatizer ==0.1.0.2, - any.stackcollapse-ghc ==0.0.1.3, - any.stateref ==0.3, - any.static-text ==0.2.0.7, - any.statistics ==0.15.2.0, - any.status-notifier-item ==0.3.1.0, - any.stb-image-redux ==0.2.1.3, - any.step-function ==0.2, - any.stm-chans ==3.0.0.6, - any.stm-conduit ==4.0.1, - any.stm-containers ==1.2, - any.stm-delay ==0.1.1.1, - any.stm-extras ==0.1.0.3, - any.stm-hamt ==1.2.0.6, - any.stm-lifted ==2.5.0.0, - any.stm-split ==0.0.2.1, - any.stomp-queue ==0.5.1, - any.stompl ==0.6.0, - any.stopwatch ==0.1.0.6, - any.storable-complex ==0.2.3.0, - any.storable-endian ==0.2.6, - any.storable-record ==0.0.5, - any.storable-tuple ==0.0.3.3, - any.storablevector ==0.2.13.1, - any.store ==0.7.14, - any.store-core ==0.4.4.4, - any.store-streaming ==0.2.0.3, - any.stratosphere ==0.59.1, - any.streaming ==0.2.3.0, - any.streaming-attoparsec ==1.0.0.1, - any.streaming-bytestring ==0.2.1, - any.streaming-commons ==0.2.2.2, - any.streamly ==0.7.3, - any.streams ==3.3, - any.streamt ==0.5.0.0, - any.strict ==0.4.0.1, - any.strict-concurrency ==0.2.4.3, - any.strict-list ==0.1.6, - any.strict-tuple ==0.1.4, - any.strict-tuple-lens ==0.1.0.1, - any.string-class ==0.1.7.0, - any.string-combinators ==0.6.0.5, - any.string-conv ==0.1.2, - any.string-conversions ==0.4.0.1, - any.string-interpolate ==0.3.1.1, - any.string-qq ==0.0.4, - any.string-random ==0.1.4.1, - any.string-transform ==1.1.1, - any.stringbuilder ==0.5.1, - any.stringsearch ==0.3.6.6, - any.stripe-concepts ==1.0.3, - any.stripe-core ==2.6.2, - any.stripe-haskell ==2.6.2, - any.stripe-http-client ==2.6.2, - any.strive ==5.0.16, - any.structs ==0.1.6, - any.structured ==0.1.1, - any.structured-cli ==2.7.0.1, - any.subcategories ==0.1.1.0, - any.sum-type-boilerplate ==0.1.1, - any.sundown ==0.6, - any.superbuffer ==0.3.1.1, - any.svg-tree ==0.6.2.4, - any.swagger2 ==2.8.2, - any.sweet-egison ==0.1.1.3, - any.swish ==0.10.0.8, - any.syb ==0.7.2.1, - any.sydtest ==0.2.0.0, - any.sydtest-discover ==0.0.0.1, - any.sydtest-persistent-sqlite ==0.1.0.0, - any.sydtest-servant ==0.1.0.0, - any.sydtest-wai ==0.1.0.0, - any.sydtest-yesod ==0.1.0.0, - any.symbol ==0.2.4, - any.symengine ==0.1.2.0, - any.symmetry-operations-symbols ==0.0.2.1, - any.sysinfo ==0.1.1, - any.system-argv0 ==0.1.1, - any.system-fileio ==0.3.16.4, - any.system-filepath ==0.4.14, - any.system-info ==0.5.2, - any.systemd ==2.3.0, - any.tabular ==0.2.2.8, - any.tagchup ==0.4.1.1, - any.tagged ==0.8.6.1, - any.tagged-binary ==0.2.0.1, - any.tagged-identity ==0.1.3, - any.tagged-transformer ==0.8.1, - any.tagshare ==0.0, - any.tagsoup ==0.14.8, - any.tao ==1.0.0, - any.tao-example ==1.0.0, - tar -old-time, - any.tar ==0.5.1.1, - any.tar-conduit ==0.3.2, - any.tardis ==0.4.3.0, - any.tasty ==1.4.2, - any.tasty-ant-xml ==1.1.8, - any.tasty-bench ==0.2.5, - any.tasty-dejafu ==2.0.0.8, - any.tasty-discover ==4.2.2, - any.tasty-expected-failure ==0.12.3, - any.tasty-focus ==1.0.1, - any.tasty-golden ==2.3.4, - any.tasty-hedgehog ==1.1.0.0, - any.tasty-hspec ==1.1.6, - any.tasty-hunit-compat ==0.2.0.1, - any.tasty-inspection-testing ==0.1, - any.tasty-kat ==0.0.3, - any.tasty-leancheck ==0.0.2, - any.tasty-lua ==0.2.3.2, - any.tasty-program ==1.0.5, - any.tasty-quickcheck ==0.10.1.2, - any.tasty-rerun ==1.1.18, - any.tasty-silver ==3.2.3, - any.tasty-smallcheck ==0.8.2, - any.tasty-test-reporter ==0.1.1.4, - any.tasty-th ==0.1.7, - any.tasty-wai ==0.1.1.1, - any.tce-conf ==1.3, - any.tdigest ==0.2.1.1, - any.template ==0.2.0.10, - any.template-haskell-compat-v0208 ==0.1.7, - any.temporary ==1.3, - any.temporary-rc ==1.2.0.3, - any.temporary-resourcet ==0.1.0.1, - any.tensorflow-test ==0.1.0.0, - any.tensors ==0.1.5, - any.termbox ==0.3.0, - any.terminal-progress-bar ==0.4.1, - any.terminal-size ==0.3.2.1, - any.test-framework ==0.8.2.0, - any.test-framework-hunit ==0.3.0.2, - any.test-framework-leancheck ==0.0.4, - any.test-framework-quickcheck2 ==0.3.0.5, - any.test-framework-smallcheck ==0.2, - any.test-fun ==0.1.0.0, - any.testing-type-modifiers ==0.1.0.1, - any.texmath ==0.12.3.2, - any.text-ansi ==0.1.1, - any.text-binary ==0.2.1.1, - any.text-builder ==0.6.6.3, - any.text-conversions ==0.3.1, - any.text-format ==0.3.2, - any.text-icu ==0.7.1.0, - any.text-icu-translit ==0.1.0.7, - any.text-latin1 ==0.3.1, - any.text-ldap ==0.1.1.14, - any.text-manipulate ==0.3.0.0, - any.text-metrics ==0.3.1, - any.text-postgresql ==0.0.3.1, - any.text-printer ==0.5.0.2, - any.text-regex-replace ==0.1.1.4, - any.text-region ==0.3.1.0, - any.text-short ==0.1.5, - any.text-show ==3.9.2, - any.text-show-instances ==3.8.4, - any.text-zipper ==0.11, - any.textlocal ==0.1.0.5, - any.tf-random ==0.5, - any.tfp ==1.0.2, - any.th-abstraction ==0.4.3.0, - any.th-bang-compat ==0.0.1.0, - any.th-compat ==0.1.3, - any.th-constraint-compat ==0.0.1.0, - any.th-data-compat ==0.1.0.0, - any.th-desugar ==1.11, - any.th-env ==0.1.0.3, - any.th-expand-syns ==0.4.8.0, - any.th-extras ==0.0.0.5, - any.th-lift ==0.8.2, - any.th-lift-instances ==0.1.18, - any.th-nowq ==0.1.0.5, - any.th-orphans ==0.13.12, - any.th-printf ==0.7, - any.th-reify-compat ==0.0.1.5, - any.th-reify-many ==0.1.10, - any.th-strict-compat ==0.1.0.1, - any.th-test-utils ==1.1.1, - any.th-utilities ==0.2.4.3, - any.these ==1.1.1.1, - any.these-lens ==1.0.1.2, - any.these-optics ==1.0.1.2, - any.these-skinny ==0.7.4, - any.thread-hierarchy ==0.3.0.2, - any.thread-local-storage ==0.2, - any.thread-supervisor ==0.2.0.0, - any.threads ==0.5.1.6, - any.threepenny-gui ==0.9.1.0, - any.throttle-io-stream ==0.2.0.1, - any.through-text ==0.1.0.0, - any.throwable-exceptions ==0.1.0.9, - any.thyme ==0.3.5.5, - any.tidal ==1.7.8, - any.tile ==0.3.0.0, - any.time-compat ==1.9.6.1, - any.time-lens ==0.4.0.2, - time-locale-compat -old-locale, - any.time-locale-compat ==0.1.1.5, - any.time-locale-vietnamese ==1.0.0.0, - any.time-manager ==0.0.0, - any.time-parsers ==0.1.2.1, - any.time-units ==1.0.0, - any.timeit ==2.0, - any.timelens ==0.2.0.2, - any.timeout ==0.1.1, - any.timer-wheel ==0.3.0, - any.timerep ==2.0.1.0, - any.timezone-olson ==0.2.0, - any.timezone-series ==0.1.9, - any.tinylog ==0.15.0, - any.titlecase ==1.0.1, - any.tldr ==0.9.2, - any.tls ==1.5.5, - any.tls-debug ==0.4.8, - any.tls-session-manager ==0.0.4, - any.tlynx ==0.5.1.1, - any.tmapchan ==0.0.3, - any.tmapmvar ==0.0.4, - any.tmp-postgres ==1.34.1.0, - any.tomland ==1.3.2.0, - any.tonalude ==0.1.1.1, - any.topograph ==1.0.0.1, - any.torsor ==0.1, - any.tostring ==0.2.1.1, - any.tracing ==0.0.7.2, - any.transaction ==0.1.1.3, - any.transformers-base ==0.4.6, - any.transformers-bifunctors ==0.1, - transformers-compat +five-three, - any.transformers-compat ==0.6.6, - any.transformers-fix ==1.0, - any.traverse-with-class ==1.0.1.1, - any.tree-diff ==0.2.1, - any.tree-fun ==0.8.1.0, - any.tree-view ==0.5.1, - any.trifecta ==2.1.2, - any.triplesec ==0.2.2.1, - any.trivial-constraint ==0.7.0.0, - any.tsv2csv ==0.1.0.2, - any.ttc ==1.1.0.2, - any.ttl-hashtables ==1.4.1.0, - any.ttrie ==0.1.2.2, - any.tuple ==0.3.0.2, - any.tuple-sop ==0.3.1.0, - any.tuple-th ==0.2.5, - any.tuples-homogenous-h98 ==0.1.1.0, - any.turtle ==1.5.23, - any.type-equality ==1, - any.type-errors ==0.2.0.0, - any.type-errors-pretty ==0.0.1.2, - any.type-hint ==0.1, - any.type-level-integers ==0.0.1, - any.type-level-kv-list ==1.1.0, - any.type-level-natural-number ==2.0, - any.type-level-numbers ==0.1.1.1, - any.type-map ==0.1.6.0, - any.type-natural ==1.1.0.0, - any.type-of-html ==1.6.2.0, - any.type-of-html-static ==0.1.0.2, - any.type-operators ==0.2.0.0, - any.type-spec ==0.4.0.0, - any.typecheck-plugin-nat-simple ==0.1.0.2, - any.typed-process ==0.2.7.0, - any.typed-uuid ==0.1.0.0, - any.typelits-witnesses ==0.4.0.0, - any.typenums ==0.1.4, - any.typerep-map ==0.3.3.0, - any.tzdata ==0.2.20201021.0, - any.ua-parser ==0.7.6.0, - any.uglymemo ==0.1.0.1, - any.unagi-chan ==0.4.1.3, - any.unbounded-delays ==0.1.1.1, - any.unboxed-ref ==0.4.0.0, - any.unboxing-vector ==0.2.0.0, - any.uncaught-exception ==0.1.0, - any.uncertain ==0.3.1.0, - any.unconstrained ==0.1.0.2, - any.unexceptionalio ==0.5.1, - any.unexceptionalio-trans ==0.5.1, - any.unicode ==0.0.1.1, - any.unicode-collation ==0.1.3.1, - any.unicode-show ==0.1.1.0, - any.unicode-transforms ==0.3.7.1, - any.unification-fd ==0.11.1, - any.union-angle ==0.1.0.1, - any.union-find ==0.2, - any.unipatterns ==0.0.0.0, - any.uniplate ==1.6.13, - any.uniprot-kb ==0.1.2.0, - any.uniq-deep ==1.2.1, - any.unique ==0.0.1, - any.unique-logic ==0.4, - any.unique-logic-tf ==0.5.1, - any.unit-constraint ==0.0.0, - any.universe ==1.2.1, - any.universe-base ==1.1.2, - any.universe-dependent-sum ==1.3, - any.universe-instances-base ==1.1, - any.universe-instances-extended ==1.1.2, - any.universe-instances-trans ==1.1, - any.universe-reverse-instances ==1.1.1, - any.universe-some ==1.2.1, - any.universum ==1.7.2, - any.unix-bytestring ==0.3.7.6, - any.unix-compat ==0.5.3, - any.unix-time ==0.4.7, - any.unliftio ==0.2.20, - any.unliftio-core ==0.2.0.1, - any.unliftio-pool ==0.2.1.1, - any.unliftio-streams ==0.1.1.1, - any.unlit ==0.4.0.0, - any.unordered-containers ==0.2.15.0, - any.unsafe ==0.0, - any.urbit-hob ==0.3.3, - any.uri-bytestring ==0.3.3.1, - any.uri-bytestring-aeson ==0.1.0.8, - any.uri-encode ==1.5.0.7, - any.url ==2.1.3, - any.users ==0.5.0.0, - any.utf8-conversions ==0.1.0.4, - any.utf8-light ==0.4.2, - any.utf8-string ==1.0.2, - any.util ==0.1.17.1, - any.utility-ht ==0.0.16, - any.uuid ==1.3.15, - any.uuid-types ==1.0.5, - any.validation ==1.1.2, - any.validation-selective ==0.1.0.1, - any.validity ==0.11.0.1, - any.validity-aeson ==0.2.0.4, - any.validity-bytestring ==0.4.1.1, - any.validity-containers ==0.5.0.4, - any.validity-path ==0.4.0.1, - any.validity-persistent ==0.0.0.0, - any.validity-primitive ==0.0.0.1, - any.validity-scientific ==0.2.0.3, - any.validity-text ==0.3.1.1, - any.validity-time ==0.4.0.0, - any.validity-unordered-containers ==0.2.0.3, - any.validity-uuid ==0.1.0.3, - any.validity-vector ==0.2.0.3, - any.valor ==0.1.0.0, - any.vault ==0.3.1.5, - any.vcs-ignore ==0.0.1.0, - any.vec ==0.4, - any.vector ==0.12.3.1, - any.vector-algorithms ==0.8.0.4, - any.vector-binary-instances ==0.2.5.2, - any.vector-buffer ==0.4.1, - any.vector-builder ==0.3.8.2, - any.vector-bytes-instances ==0.1.1, - any.vector-circular ==0.1.3, - any.vector-instances ==3.4, - any.vector-mmap ==0.0.3, - any.vector-rotcev ==0.1.0.1, - any.vector-sized ==1.4.4, - any.vector-space ==0.16, - any.vector-split ==1.0.0.2, - any.vector-th-unbox ==0.2.2, - any.verbosity ==0.4.0.0, - any.versions ==5.0.0, - any.vformat ==0.14.1.0, - any.vformat-aeson ==0.1.0.1, - any.vformat-time ==0.1.0.0, - any.vinyl ==0.13.3, - any.void ==0.7.3, - any.vty ==5.33, - any.wai ==3.2.3, - any.wai-app-static ==3.1.7.2, - any.wai-conduit ==3.0.0.4, - any.wai-cors ==0.2.7, - any.wai-enforce-https ==0.0.2.1, - any.wai-eventsource ==3.0.0, - any.wai-extra ==3.1.7, - any.wai-feature-flags ==0.1.0.2, - any.wai-handler-launch ==3.0.3.1, - any.wai-logger ==2.3.6, - any.wai-middleware-auth ==0.2.5.1, - any.wai-middleware-caching ==0.1.0.2, - any.wai-middleware-clacks ==0.1.0.1, - any.wai-middleware-gunzip ==0.0.2, - any.wai-middleware-static ==0.9.1, - any.wai-predicates ==1.0.0, - any.wai-rate-limit ==0.1.0.0, - any.wai-rate-limit-redis ==0.1.0.0, - any.wai-route ==0.4.0, - any.wai-saml2 ==0.2.1.2, - any.wai-session ==0.3.3, - any.wai-session-redis ==0.1.0.4, - any.wai-slack-middleware ==0.2.0, - any.wai-websockets ==3.0.1.2, - any.wakame ==0.1.0.0, - any.warp ==3.3.17, - any.warp-tls ==3.3.2, - any.warp-tls-uid ==0.2.0.6, - any.wave ==0.2.0, - any.wcwidth ==0.0.2, - any.webdriver ==0.9.0.1, - any.webex-teams-api ==0.2.0.1, - any.webex-teams-conduit ==0.2.0.1, - any.webex-teams-pipes ==0.2.0.1, - any.webgear-server ==0.2.1, - any.webrtc-vad ==0.1.0.3, - any.websockets ==0.12.7.3, - any.websockets-snap ==0.10.3.1, - any.weigh ==0.0.16, - any.wide-word ==0.1.1.2, - any.wikicfp-scraper ==0.1.0.12, - any.wild-bind ==0.1.2.7, - any.wild-bind-x11 ==0.2.0.13, - windns +allow-non-windows, - any.windns ==0.1.0.1, - any.witch ==0.3.4.0, - any.with-location ==0.1.0, - any.with-utf8 ==1.0.2.3, - any.witherable ==0.4.2, - any.within ==0.2.0.1, - any.wizards ==1.0.3, - any.wl-pprint-annotated ==0.1.0.1, - any.wl-pprint-console ==0.1.0.2, - any.wl-pprint-text ==1.2.0.1, - any.word-trie ==0.3.0, - any.word-wrap ==0.4.1, - any.word24 ==2.0.1, - any.word8 ==0.1.3, - any.wordpress-auth ==1.0.0.1, - any.world-peace ==1.0.2.0, - any.wrap ==0.0.0, - any.wreq ==0.5.3.3, - any.writer-cps-exceptions ==0.1.0.1, - any.writer-cps-mtl ==0.1.1.6, - any.writer-cps-transformers ==0.5.6.1, - any.wss-client ==0.3.0.0, - any.wuss ==1.1.18, - any.x11-xim ==0.0.9.0, - any.x509 ==1.7.5, - any.x509-system ==1.6.6, - any.x509-validation ==1.6.11, - any.xdg-basedir ==0.2.2, - any.xdg-userdirs ==0.1.0.2, - any.xeno ==0.4.3, - any.xlsx ==0.8.4, - any.xlsx-tabular ==0.2.2.1, - any.xml ==1.3.14, - any.xml-basic ==0.1.3.1, - any.xml-conduit ==1.9.1.1, - any.xml-conduit-writer ==0.1.1.2, - any.xml-hamlet ==0.5.0.1, - any.xml-helpers ==1.0.0, - any.xml-html-qq ==0.1.0.1, - any.xml-indexed-cursor ==0.1.1.0, - any.xml-lens ==0.3, - any.xml-picklers ==0.3.6, - any.xml-to-json ==2.0.1, - any.xml-to-json-fast ==2.0.0, - any.xml-types ==0.3.8, - any.xmlgen ==0.6.2.2, - any.xmonad ==0.15, - any.xmonad-contrib ==0.16, - any.xmonad-extras ==0.15.3, - any.xss-sanitize ==0.3.6, - any.xxhash-ffi ==0.2.0.0, - any.yaml ==0.11.7.0, - any.yamlparse-applicative ==0.2.0.1, - any.yes-precure5-command ==5.5.3, - any.yesod ==1.6.1.2, - any.yesod-auth ==1.6.10.5, - any.yesod-auth-hashdb ==1.7.1.7, - any.yesod-auth-oauth2 ==0.6.3.4, - any.yesod-bin ==1.6.1, - any.yesod-core ==1.6.21.0, - any.yesod-fb ==0.6.1, - any.yesod-form ==1.7.0, - any.yesod-gitrev ==0.2.2, - any.yesod-markdown ==0.12.6.12, - any.yesod-newsfeed ==1.7.0.0, - any.yesod-page-cursor ==2.0.0.9, - any.yesod-paginator ==1.1.1.0, - any.yesod-persistent ==1.6.0.7, - any.yesod-sitemap ==1.6.0, - any.yesod-static ==1.6.1.0, - any.yesod-test ==1.6.12, - any.yesod-websockets ==0.3.0.3, - any.yi-rope ==0.11, - any.yjsvg ==0.2.0.1, - any.yjtools ==0.9.18, - any.yoga ==0.0.0.5, - any.youtube ==0.2.1.1, - any.zenacy-html ==2.0.4, - any.zenacy-unicode ==1.0.1, - any.zero ==0.1.5, - any.zeromq4-haskell ==0.8.0, - any.zeromq4-patterns ==0.3.1.0, - any.zim-parser ==0.2.1.0, - any.zio ==0.1.0.2, - any.zip ==1.7.2, - any.zip-archive ==0.4.1, - any.zip-stream ==0.2.1.0, - any.zipper-extra ==0.1.3.2, - any.zippers ==0.3.2, - any.zlib ==0.6.3.0, - any.zlib-bindings ==0.1.1.5, - any.zlib-lens ==0.1.2.1, - any.zot ==0.0.3, - any.zstd ==0.1.3.0, - any.ztail ==1.2.0.2, - any.zydiskell ==0.2.0.0 diff --git a/docs/src/developer/developer/building.md b/docs/src/developer/developer/building.md index 57c589fb22..4fd0849b26 100644 --- a/docs/src/developer/developer/building.md +++ b/docs/src/developer/developer/building.md @@ -7,10 +7,9 @@ All following commands expect that you've entered the nix-provided build-environ 1. Create a `.envrc.local` file with these contents -``` + ``` export COMPILE_NGINX_USING_NIX=1 - export WIRE_BUILD_WITH_CABAL=1 -``` + ``` and reload the direnv via `direnv reload` diff --git a/hack/bin/generate-local-nix-packages.sh b/hack/bin/generate-local-nix-packages.sh new file mode 100755 index 0000000000..50e6e047f2 --- /dev/null +++ b/hack/bin/generate-local-nix-packages.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +set -euo pipefail + +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +ROOT_DIR=$(cd -- "$SCRIPT_DIR/../../" &> /dev/null && pwd) +cabalFiles=$(find "$ROOT_DIR" -name '*.cabal' \ + | grep -v dist-newstyle | sort) + +warningFile=$(mktemp) +cat >"$warningFile" < default.nix' "$warningFile" + +# shellcheck disable=SC2016 +echo "$cabalFiles" \ + | xargs -I {} bash -c 'cd $(dirname {}); cabal2nix . --no-hpack --extra-arguments gitignoreSource | sed "s/.\/./gitignoreSource .\/./g" >> default.nix' + +overridesFile="$ROOT_DIR/nix/local-haskell-packages.nix" + +cat "$warningFile" <(echo "{ gitignoreSource }: hsuper: hself: {") > "$overridesFile" +# shellcheck disable=SC2016 +echo "$cabalFiles" \ + | xargs -I {} bash -c 'name=$(basename {} | sed "s|.cabal||"); echo " $name = hself.callPackage $(realpath --relative-to='"$ROOT_DIR/nix"' "$(dirname {})")/default.nix { inherit gitignoreSource; };"' >> "$overridesFile" +echo "}" >> "$overridesFile" diff --git a/hack/bin/mk-drv.sh b/hack/bin/mk-drv.sh new file mode 100755 index 0000000000..4a2a52743d --- /dev/null +++ b/hack/bin/mk-drv.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +set -euo pipefail + +overridesDir="$1" +drv=$(eval "$2") +name=$(echo "$drv" | sed -n 's|.*pname = "\(.*\)";|\1|p') +echo "$drv" > "$overridesDir/$name.nix" diff --git a/hack/bin/nix-hls.sh b/hack/bin/nix-hls.sh index 4c4b5e5a42..f08cc0b101 100755 --- a/hack/bin/nix-hls.sh +++ b/hack/bin/nix-hls.sh @@ -5,10 +5,6 @@ set -euo pipefail DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" TOP_LEVEL="$(cd "$DIR/../.." && pwd)" -env=$(nix-build --no-out-link "$TOP_LEVEL/nix" -A devEnv) direnv="$(nix-build --no-out-link "$TOP_LEVEL/nix" -A pkgs.direnv)/bin/direnv" -eval "$("$direnv" stdlib)" -load_prefix "$env" - -haskell-language-server-wrapper "$@" +"$direnv" exec "$TOP_LEVEL" haskell-language-server-wrapper "$@" diff --git a/hack/bin/upload-image.sh b/hack/bin/upload-image.sh new file mode 100755 index 0000000000..55df50deb9 --- /dev/null +++ b/hack/bin/upload-image.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env bash + +# This script builds an from the attribute provided at $1, which must be present +# in $ROOT_DIR/nix/default.nix, and uploads it to the docker registry using the +# repository name specified in the image derivation and tag specified by +# environment variable "$DOCKER_TAG". +# +# If $DOCKER_USER and $DOCKER_PASSWORD are provided, the script will use them to +# upload the images. +# +# This script is intended to be run by CI/CD pipelines. + +set -euo pipefail + +readonly DOCKER_TAG=${DOCKER_TAG:?"Please set the DOCKER_TAG env variable"} + +readonly usage="USAGE: $0 " +readonly IMAGE_ATTR=${1:?$usage} + +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +ROOT_DIR=$(cd -- "$SCRIPT_DIR/../../" &> /dev/null && pwd) +readonly SCRIPT_DIR ROOT_DIR + +credsArgs="" +if [[ "${DOCKER_USER+x}" != "" ]]; then + DOCKER_PASSWORD=${DOCKER_PASSWORD:?"DOCKER_PASSWORD must be provided when DOCKER_USER is provided"} + credsArgs="--dest-creds=$DOCKER_USER:$DOCKER_PASSWORD" +fi + +tmp_link_store=$(mktemp -d) +# Using dockerTools.streamLayeredImage outputs an executable which prints the +# image tar on stdout when executed. This is done so we don't store large images +# in nix-store and hence in the cache. This also reduces the things we have to +# download from the cache when uploading multiple images as the image is a +# product of other store paths which should already be cached and a lot of our +# images should have a few common layers. More information: +# https://nixos.org/manual/nixpkgs/unstable/#ssec-pkgs-dockerTools-streamLayeredImage +image_stream_file="$tmp_link_store/image_stream" +nix -v --show-trace -L build -f "$ROOT_DIR/nix" "$IMAGE_ATTR" -o "$image_stream_file" +image_file="$tmp_link_store/image" +"$image_stream_file" > "$image_file" +repo=$(skopeo list-tags "docker-archive://$image_file" | jq -r '.Tags[0] | split(":") | .[0]') +printf "*** Uploading $image_file to %s:%s" "$repo" "$DOCKER_TAG" +# shellcheck disable=SC2086 +skopeo --insecure-policy copy $credsArgs "docker-archive://$image_file" "docker://$repo:$DOCKER_TAG" diff --git a/hack/bin/upload-images.sh b/hack/bin/upload-images.sh new file mode 100755 index 0000000000..205a5dfab0 --- /dev/null +++ b/hack/bin/upload-images.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash + +# This script builds all the images in wireServer.images attribute of +# $ROOT_DIR/nix/default.nix and uploads them to the docker registry using the +# repository name specified in the image derivation and tag specified by +# environment variable "$DOCKER_TAG". +# +# If $DOCKER_USER and $DOCKER_PASSWORD are provided, the script will use them to +# upload the images. +# +# This script is intended to be run by CI/CD pipelines. + +set -euo pipefail + +readonly usage="USAGE: $0 " + +# nix attribute under wireServer from "$ROOT_DIR/nix" containing all the images +readonly IMAGES_ATTR=${1:?$usage} + +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +ROOT_DIR=$(cd -- "$SCRIPT_DIR/../../" &> /dev/null && pwd) +readonly SCRIPT_DIR ROOT_DIR + +tmp_link_store=$(mktemp -d) +image_list_file="$tmp_link_store/image-list" +nix -v --show-trace -L build -f "$ROOT_DIR/nix" wireServer.imagesList -o "$image_list_file" + +# Build everything first so we can benefit the most from having many cores. +nix -v --show-trace -L build -f "$ROOT_DIR/nix" "wireServer.$IMAGES_ATTR" --no-link + +while IFS="" read -r image_name || [ -n "$image_name" ] +do + printf '*** Uploading image %s\n' "$image_name" + "$SCRIPT_DIR/upload-image.sh" "wireServer.$IMAGES_ATTR.$image_name" +done < "$image_list_file" diff --git a/libs/api-bot/default.nix b/libs/api-bot/default.nix new file mode 100644 index 0000000000..823fad86b1 --- /dev/null +++ b/libs/api-bot/default.nix @@ -0,0 +1,29 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, ansi-terminal, api-client, async, attoparsec +, base, base64-bytestring, bilge, bytestring, bytestring-conversion +, cereal, containers, cryptobox-haskell, cryptonite, exceptions +, filepath, gitignoreSource, HaskellNet, HaskellNet-SSL +, http-client, imports, iso639, lib, memory, metrics-core, mime +, monad-control, mwc-random, optparse-applicative, resource-pool +, stm, text, time, tinylog, transformers-base, types-common +, unordered-containers, uuid, vector +}: +mkDerivation { + pname = "api-bot"; + version = "0.4.2"; + src = gitignoreSource ./.; + libraryHaskellDepends = [ + aeson ansi-terminal api-client async attoparsec base + base64-bytestring bilge bytestring bytestring-conversion cereal + containers cryptobox-haskell cryptonite exceptions filepath + HaskellNet HaskellNet-SSL http-client imports iso639 memory + metrics-core mime monad-control mwc-random optparse-applicative + resource-pool stm text time tinylog transformers-base types-common + unordered-containers uuid vector + ]; + description = "(Internal) API automation around wire-client"; + license = lib.licenses.agpl3Only; +} diff --git a/libs/api-client/default.nix b/libs/api-client/default.nix new file mode 100644 index 0000000000..52b3c069cd --- /dev/null +++ b/libs/api-client/default.nix @@ -0,0 +1,24 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, async, base, bilge, bytestring +, bytestring-conversion, connection, cookie, data-default-class +, errors, exceptions, gitignoreSource, http-client, http-types +, imports, lib, mime, retry, text, time, tinylog, transformers +, types-common, unliftio, unordered-containers, uuid, websockets +, wire-api +}: +mkDerivation { + pname = "api-client"; + version = "0.4.2"; + src = gitignoreSource ./.; + libraryHaskellDepends = [ + aeson async base bilge bytestring bytestring-conversion connection + cookie data-default-class errors exceptions http-client http-types + imports mime retry text time tinylog transformers types-common + unliftio unordered-containers uuid websockets wire-api + ]; + description = "(Internal) Wire HTTP API Client"; + license = lib.licenses.agpl3Only; +} diff --git a/libs/bilge/default.nix b/libs/bilge/default.nix new file mode 100644 index 0000000000..07dba5db2f --- /dev/null +++ b/libs/bilge/default.nix @@ -0,0 +1,23 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, ansi-terminal, base, bytestring +, case-insensitive, cookie, errors, exceptions, gitignoreSource +, http-client, http-types, imports, lens, lib, monad-control, mtl +, text, tinylog, transformers-base, types-common, unliftio +, uri-bytestring, wai, wai-extra +}: +mkDerivation { + pname = "bilge"; + version = "0.22.0"; + src = gitignoreSource ./.; + libraryHaskellDepends = [ + aeson ansi-terminal base bytestring case-insensitive cookie errors + exceptions http-client http-types imports lens monad-control mtl + text tinylog transformers-base types-common unliftio uri-bytestring + wai wai-extra + ]; + description = "Library for composing HTTP requests"; + license = lib.licenses.agpl3Only; +} diff --git a/libs/brig-types/default.nix b/libs/brig-types/default.nix new file mode 100644 index 0000000000..46a87df55a --- /dev/null +++ b/libs/brig-types/default.nix @@ -0,0 +1,31 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, attoparsec, base, bytestring +, bytestring-conversion, cassandra-util, containers +, deriving-swagger2, gitignoreSource, imports, lib, QuickCheck +, schema-profunctor, servant-server, servant-swagger +, string-conversions, swagger2, tasty, tasty-hunit +, tasty-quickcheck, text, time, tinylog, types-common +, unordered-containers, wire-api +}: +mkDerivation { + pname = "brig-types"; + version = "1.35.0"; + src = gitignoreSource ./.; + libraryHaskellDepends = [ + aeson attoparsec base bytestring bytestring-conversion + cassandra-util containers deriving-swagger2 imports QuickCheck + schema-profunctor servant-server servant-swagger string-conversions + swagger2 text time tinylog types-common unordered-containers + wire-api + ]; + testHaskellDepends = [ + aeson attoparsec base bytestring bytestring-conversion containers + imports QuickCheck swagger2 tasty tasty-hunit tasty-quickcheck text + time tinylog types-common unordered-containers wire-api + ]; + description = "User Service"; + license = lib.licenses.agpl3Only; +} diff --git a/libs/cargohold-types/default.nix b/libs/cargohold-types/default.nix new file mode 100644 index 0000000000..523e4eab3a --- /dev/null +++ b/libs/cargohold-types/default.nix @@ -0,0 +1,17 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, base, bytestring-conversion, gitignoreSource +, imports, lib, types-common, wire-api +}: +mkDerivation { + pname = "cargohold-types"; + version = "1.5.0"; + src = gitignoreSource ./.; + libraryHaskellDepends = [ + base bytestring-conversion imports types-common wire-api + ]; + description = "Asset Storage API Types"; + license = lib.licenses.agpl3Only; +} diff --git a/libs/cassandra-util/default.nix b/libs/cassandra-util/default.nix new file mode 100644 index 0000000000..fdc62d62b5 --- /dev/null +++ b/libs/cassandra-util/default.nix @@ -0,0 +1,21 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, base, conduit, containers, cql, cql-io +, cql-io-tinylog, exceptions, gitignoreSource, imports, lens +, lens-aeson, lib, optparse-applicative, retry, split, text, time +, tinylog, uuid, wreq +}: +mkDerivation { + pname = "cassandra-util"; + version = "0.16.5"; + src = gitignoreSource ./.; + libraryHaskellDepends = [ + aeson base conduit containers cql cql-io cql-io-tinylog exceptions + imports lens lens-aeson optparse-applicative retry split text time + tinylog uuid wreq + ]; + description = "Cassandra Utilities"; + license = lib.licenses.agpl3Only; +} diff --git a/libs/cassandra-util/src/Cassandra/Settings.hs b/libs/cassandra-util/src/Cassandra/Settings.hs index 1fb3bf2007..522ac7f6d1 100644 --- a/libs/cassandra-util/src/Cassandra/Settings.hs +++ b/libs/cassandra-util/src/Cassandra/Settings.hs @@ -29,6 +29,7 @@ module Cassandra.Settings where import Control.Lens +import qualified Data.Aeson.Key as Key import Data.Aeson.Lens import Data.List.NonEmpty (NonEmpty (..)) import Data.Text (pack, stripSuffix, unpack) @@ -45,9 +46,10 @@ import qualified System.Logger as Log initialContactsDisco :: MonadIO m => String -> String -> m (NonEmpty String) initialContactsDisco (pack -> srv) url = liftIO $ do rs <- asValue =<< get url - let srvs = case stripSuffix "_seed" srv of - Nothing -> [srv, srv <> "_seed"] - Just _ -> [srv] -- requesting only seeds is a valid use-case + let srvs = map Key.fromText $ + case stripSuffix "_seed" srv of + Nothing -> [srv, srv <> "_seed"] + Just _ -> [srv] -- requesting only seeds is a valid use-case let ip = rs ^.. responseBody diff --git a/libs/deriving-swagger2/default.nix b/libs/deriving-swagger2/default.nix new file mode 100644 index 0000000000..b11f6619f0 --- /dev/null +++ b/libs/deriving-swagger2/default.nix @@ -0,0 +1,14 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, base, extra, gitignoreSource, imports, lib +, swagger2 +}: +mkDerivation { + pname = "deriving-swagger2"; + version = "0.1.0"; + src = gitignoreSource ./.; + libraryHaskellDepends = [ base extra imports swagger2 ]; + license = lib.licenses.agpl3Only; +} diff --git a/libs/dns-util/default.nix b/libs/dns-util/default.nix new file mode 100644 index 0000000000..1da76aea20 --- /dev/null +++ b/libs/dns-util/default.nix @@ -0,0 +1,21 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, base, dns, gitignoreSource, hspec, hspec-discover +, imports, iproute, lib, polysemy, random +}: +mkDerivation { + pname = "dns-util"; + version = "0.1.0"; + src = gitignoreSource ./.; + libraryHaskellDepends = [ + base dns imports iproute polysemy random + ]; + testHaskellDepends = [ + base dns hspec imports iproute polysemy random + ]; + testToolDepends = [ hspec-discover ]; + description = "Library to deal with DNS SRV records"; + license = lib.licenses.agpl3Only; +} diff --git a/libs/extended/default.nix b/libs/extended/default.nix new file mode 100644 index 0000000000..0f193232ce --- /dev/null +++ b/libs/extended/default.nix @@ -0,0 +1,29 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, base, bytestring, cassandra-util, containers +, errors, exceptions, extra, gitignoreSource, hspec, hspec-discover +, http-types, imports, lib, metrics-wai, optparse-applicative +, servant, servant-server, servant-swagger, string-conversions +, temporary, tinylog, wai +}: +mkDerivation { + pname = "extended"; + version = "0.1.0"; + src = gitignoreSource ./.; + libraryHaskellDepends = [ + aeson base bytestring cassandra-util containers errors exceptions + extra http-types imports metrics-wai optparse-applicative servant + servant-server servant-swagger string-conversions tinylog wai + ]; + testHaskellDepends = [ + aeson base bytestring cassandra-util containers errors exceptions + extra hspec http-types imports metrics-wai optparse-applicative + servant servant-server servant-swagger string-conversions temporary + tinylog wai + ]; + testToolDepends = [ hspec-discover ]; + description = "Extended versions of common modules"; + license = lib.licenses.agpl3Only; +} diff --git a/libs/galley-types/default.nix b/libs/galley-types/default.nix new file mode 100644 index 0000000000..9c499e4440 --- /dev/null +++ b/libs/galley-types/default.nix @@ -0,0 +1,27 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, base, bytestring, bytestring-conversion +, containers, cryptonite, currency-codes, errors, exceptions +, gitignoreSource, imports, lens, lib, memory, QuickCheck +, schema-profunctor, string-conversions, swagger2, tagged, tasty +, tasty-hunit, tasty-quickcheck, text, time, types-common, uuid +, wire-api +}: +mkDerivation { + pname = "galley-types"; + version = "0.81.0"; + src = gitignoreSource ./.; + libraryHaskellDepends = [ + aeson base bytestring bytestring-conversion containers cryptonite + currency-codes errors exceptions imports lens memory QuickCheck + schema-profunctor string-conversions swagger2 tagged text time + types-common uuid wire-api + ]; + testHaskellDepends = [ + aeson base containers imports lens QuickCheck tasty tasty-hunit + tasty-quickcheck types-common wire-api + ]; + license = lib.licenses.agpl3Only; +} diff --git a/libs/gundeck-types/default.nix b/libs/gundeck-types/default.nix new file mode 100644 index 0000000000..19d76ecf6f --- /dev/null +++ b/libs/gundeck-types/default.nix @@ -0,0 +1,20 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, attoparsec, base, bytestring +, bytestring-conversion, containers, gitignoreSource, imports, lens +, lib, network-uri, text, types-common, unordered-containers +, wire-api +}: +mkDerivation { + pname = "gundeck-types"; + version = "1.45.0"; + src = gitignoreSource ./.; + libraryHaskellDepends = [ + aeson attoparsec base bytestring bytestring-conversion containers + imports lens network-uri text types-common unordered-containers + wire-api + ]; + license = lib.licenses.agpl3Only; +} diff --git a/libs/hscim/default.nix b/libs/hscim/default.nix new file mode 100644 index 0000000000..4ee4f9c87d --- /dev/null +++ b/libs/hscim/default.nix @@ -0,0 +1,54 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, aeson-qq, attoparsec, base, bytestring +, case-insensitive, email-validate, gitignoreSource, hashable +, hedgehog, hspec, hspec-discover, hspec-expectations, hspec-wai +, http-api-data, http-media, http-types, hw-hspec-hedgehog +, indexed-traversable, lib, list-t, microlens, mmorph, mtl +, network-uri, retry, scientific, servant, servant-client +, servant-client-core, servant-server, stm, stm-containers +, string-conversions, template-haskell, text, time +, unordered-containers, uuid, wai, wai-extra, warp +}: +mkDerivation { + pname = "hscim"; + version = "0.3.6"; + src = gitignoreSource ./.; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + aeson aeson-qq attoparsec base bytestring case-insensitive + email-validate hashable hedgehog hspec hspec-expectations hspec-wai + http-api-data http-media http-types hw-hspec-hedgehog list-t + microlens mmorph mtl network-uri retry scientific servant + servant-client servant-client-core servant-server stm + stm-containers string-conversions template-haskell text time + unordered-containers uuid wai wai-extra warp + ]; + executableHaskellDepends = [ + aeson aeson-qq attoparsec base bytestring case-insensitive + email-validate hashable hedgehog hspec hspec-expectations hspec-wai + http-api-data http-media http-types hw-hspec-hedgehog list-t + microlens mmorph mtl network-uri retry scientific servant + servant-client servant-client-core servant-server stm + stm-containers string-conversions template-haskell text time + unordered-containers uuid wai wai-extra warp + ]; + testHaskellDepends = [ + aeson aeson-qq attoparsec base bytestring case-insensitive + email-validate hashable hedgehog hspec hspec-expectations hspec-wai + http-api-data http-media http-types hw-hspec-hedgehog + indexed-traversable list-t microlens mmorph mtl network-uri retry + scientific servant servant-client servant-client-core + servant-server stm stm-containers string-conversions + template-haskell text time unordered-containers uuid wai wai-extra + warp + ]; + testToolDepends = [ hspec-discover ]; + homepage = "httpsgitignoreSource ./.github.cogitignoreSource ./.ireapgitignoreSource ./.ire-servegitignoreSource ./.ibgitignoreSource ./.scigitignoreSource ./.EADME.md"; + description = "hscim json schema and server implementation"; + license = lib.licenses.agpl3Only; + mainProgram = "hscim-server"; +} diff --git a/libs/hscim/hscim.cabal b/libs/hscim/hscim.cabal index 185972c50f..95f249e814 100644 --- a/libs/hscim/hscim.cabal +++ b/libs/hscim/hscim.cabal @@ -92,7 +92,7 @@ library , email-validate >=2.3.2 && <2.4 , hashable >=1.2.7 && <1.5 , hedgehog >=1.0.1 && <1.1 - , hspec >=2.7.1 && <2.8 + , hspec >=2.7.1 && <2.9 , hspec-expectations >=0.8.2 && <0.9 , hspec-wai >=0.9.2 && <0.10 , http-api-data >=0.4.1 && <0.5 @@ -104,7 +104,7 @@ library , mmorph >=1.1.3 && <1.2 , mtl >=2.2.2 && <2.3 , network-uri >=2.6.2 && <2.7 - , retry >=0.8.1.0 && <0.9 + , retry >=0.8.1.0 && <0.10 , scientific >=0.3.6 && <0.4 , servant >=0.16.2 && <0.19 , servant-client >=0.16.2 && <0.19 @@ -158,7 +158,7 @@ executable hscim-server , hashable >=1.2.7 && <1.5 , hedgehog >=1.0.1 && <1.1 , hscim - , hspec >=2.7.1 && <2.8 + , hspec >=2.7.1 && <2.9 , hspec-expectations >=0.8.2 && <0.9 , hspec-wai >=0.9.2 && <0.10 , http-api-data >=0.4.1 && <0.5 @@ -170,7 +170,7 @@ executable hscim-server , mmorph >=1.1.3 && <1.2 , mtl >=2.2.2 && <2.3 , network-uri >=2.6.2 && <2.7 - , retry >=0.8.1.0 && <0.9 + , retry >=0.8.1.0 && <0.10 , scientific >=0.3.6 && <0.4 , servant >=0.16.2 && <0.19 , servant-client >=0.16.2 && <0.19 @@ -242,7 +242,7 @@ test-suite spec , hashable >=1.2.7 && <1.5 , hedgehog >=1.0.1 && <1.1 , hscim - , hspec >=2.7.1 && <2.8 + , hspec >=2.7.1 && <2.9 , hspec-expectations >=0.8.2 && <0.9 , hspec-wai >=0.9.2 && <0.10 , http-api-data >=0.4.1 && <0.5 @@ -255,7 +255,7 @@ test-suite spec , mmorph >=1.1.3 && <1.2 , mtl >=2.2.2 && <2.3 , network-uri >=2.6.2 && <2.7 - , retry >=0.8.1.0 && <0.9 + , retry >=0.8.1.0 && <0.10 , scientific >=0.3.6 && <0.4 , servant >=0.16.2 && <0.19 , servant-client >=0.16.2 && <0.19 diff --git a/libs/imports/default.nix b/libs/imports/default.nix new file mode 100644 index 0000000000..d8b9861d17 --- /dev/null +++ b/libs/imports/default.nix @@ -0,0 +1,19 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, base, bytestring, containers, deepseq, extra +, gitignoreSource, lib, mtl, text, transformers, unliftio +, unliftio-core, unordered-containers +}: +mkDerivation { + pname = "imports"; + version = "0.1.0"; + src = gitignoreSource ./.; + libraryHaskellDepends = [ + base bytestring containers deepseq extra mtl text transformers + unliftio unliftio-core unordered-containers + ]; + description = "Very common imports"; + license = lib.licenses.agpl3Only; +} diff --git a/libs/jwt-tools/default.nix b/libs/jwt-tools/default.nix new file mode 100644 index 0000000000..13a50bca3c --- /dev/null +++ b/libs/jwt-tools/default.nix @@ -0,0 +1,26 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, base, base64-bytestring, bytestring +, bytestring-conversion, either, extra, gitignoreSource, hspec +, http-types, imports, lib, QuickCheck, rusty_jwt_tools_ffi +, string-conversions, text, transformers, unliftio, uuid +}: +mkDerivation { + pname = "jwt-tools"; + version = "0.1.0"; + src = gitignoreSource ./.; + libraryHaskellDepends = [ + base base64-bytestring bytestring bytestring-conversion http-types + imports QuickCheck string-conversions transformers unliftio + ]; + librarySystemDepends = [ rusty_jwt_tools_ffi ]; + testHaskellDepends = [ + base base64-bytestring bytestring bytestring-conversion either + extra hspec http-types imports QuickCheck string-conversions text + transformers uuid + ]; + description = "FFI to rusty-jwt-tools"; + license = lib.licenses.agpl3Only; +} diff --git a/libs/metrics-core/default.nix b/libs/metrics-core/default.nix new file mode 100644 index 0000000000..eb21ca9b1e --- /dev/null +++ b/libs/metrics-core/default.nix @@ -0,0 +1,19 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, base, containers, gitignoreSource, hashable +, immortal, imports, lib, prometheus-client, text, time +, unordered-containers +}: +mkDerivation { + pname = "metrics-core"; + version = "0.3.2"; + src = gitignoreSource ./.; + libraryHaskellDepends = [ + base containers hashable immortal imports prometheus-client text + time unordered-containers + ]; + description = "Metrics core"; + license = lib.licenses.agpl3Only; +} diff --git a/libs/metrics-wai/default.nix b/libs/metrics-wai/default.nix new file mode 100644 index 0000000000..9449e05d91 --- /dev/null +++ b/libs/metrics-wai/default.nix @@ -0,0 +1,27 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, base, bytestring, containers, gitignoreSource +, hspec, hspec-discover, http-types, imports, lib, metrics-core +, servant, servant-multipart, string-conversions, text, wai +, wai-middleware-prometheus, wai-route, wai-routing +}: +mkDerivation { + pname = "metrics-wai"; + version = "0.5.7"; + src = gitignoreSource ./.; + libraryHaskellDepends = [ + base bytestring containers http-types imports metrics-core servant + servant-multipart string-conversions text wai + wai-middleware-prometheus wai-route wai-routing + ]; + testHaskellDepends = [ + base bytestring containers hspec http-types imports metrics-core + servant servant-multipart string-conversions text wai + wai-middleware-prometheus wai-route wai-routing + ]; + testToolDepends = [ hspec-discover ]; + description = "Metrics WAI integration"; + license = lib.licenses.agpl3Only; +} diff --git a/libs/polysemy-wire-zoo/default.nix b/libs/polysemy-wire-zoo/default.nix new file mode 100644 index 0000000000..1abb1d6a19 --- /dev/null +++ b/libs/polysemy-wire-zoo/default.nix @@ -0,0 +1,21 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, base, cassandra-util, gitignoreSource, HsOpenSSL +, hspec, imports, lib, polysemy, polysemy-check, polysemy-plugin +, QuickCheck, saml2-web-sso, time, tinylog, types-common, unliftio +, uuid, wire-api +}: +mkDerivation { + pname = "polysemy-wire-zoo"; + version = "0.1.0"; + src = gitignoreSource ./.; + libraryHaskellDepends = [ + base cassandra-util HsOpenSSL hspec imports polysemy polysemy-check + polysemy-plugin QuickCheck saml2-web-sso time tinylog types-common + unliftio uuid wire-api + ]; + description = "Polysemy interface for various libraries"; + license = lib.licenses.agpl3Only; +} diff --git a/libs/ropes/default.nix b/libs/ropes/default.nix new file mode 100644 index 0000000000..a97db02000 --- /dev/null +++ b/libs/ropes/default.nix @@ -0,0 +1,19 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, base, bytestring, errors, gitignoreSource +, http-client, http-types, imports, iso3166-country-codes, lib +, text, time +}: +mkDerivation { + pname = "ropes"; + version = "0.4.20"; + src = gitignoreSource ./.; + libraryHaskellDepends = [ + aeson base bytestring errors http-client http-types imports + iso3166-country-codes text time + ]; + description = "Various ropes to tie together with external web services"; + license = lib.licenses.agpl3Only; +} diff --git a/libs/schema-profunctor/default.nix b/libs/schema-profunctor/default.nix new file mode 100644 index 0000000000..f2d47ba224 --- /dev/null +++ b/libs/schema-profunctor/default.nix @@ -0,0 +1,23 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, aeson-qq, base, bifunctors, comonad +, containers, gitignoreSource, imports, insert-ordered-containers +, lens, lib, profunctors, swagger2, tasty, tasty-hunit, text +, transformers, vector +}: +mkDerivation { + pname = "schema-profunctor"; + version = "0.1.0"; + src = gitignoreSource ./.; + libraryHaskellDepends = [ + aeson base bifunctors comonad containers imports lens profunctors + swagger2 text transformers vector + ]; + testHaskellDepends = [ + aeson aeson-qq base imports insert-ordered-containers lens swagger2 + tasty tasty-hunit text + ]; + license = lib.licenses.agpl3Only; +} diff --git a/libs/schema-profunctor/schema-profunctor.cabal b/libs/schema-profunctor/schema-profunctor.cabal index ec6232afd5..2c73cb77f2 100644 --- a/libs/schema-profunctor/schema-profunctor.cabal +++ b/libs/schema-profunctor/schema-profunctor.cabal @@ -59,7 +59,7 @@ library -Wpartial-fields -fwarn-tabs -optP-Wno-nonportable-include-path build-depends: - aeson >=2.0.1.0 && <2.1 + aeson >=2.0.1.0 && <2.2 , base >=4 && <5 , bifunctors , comonad diff --git a/libs/sodium-crypto-sign/default.nix b/libs/sodium-crypto-sign/default.nix new file mode 100644 index 0000000000..b7ab77265d --- /dev/null +++ b/libs/sodium-crypto-sign/default.nix @@ -0,0 +1,18 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, base, base64-bytestring, bytestring +, gitignoreSource, imports, lib, libsodium +}: +mkDerivation { + pname = "sodium-crypto-sign"; + version = "0.1.2"; + src = gitignoreSource ./.; + libraryHaskellDepends = [ + base base64-bytestring bytestring imports + ]; + libraryPkgconfigDepends = [ libsodium ]; + description = "FFI to some of the libsodium crypto_sign_* functions"; + license = lib.licenses.agpl3Only; +} diff --git a/libs/ssl-util/default.nix b/libs/ssl-util/default.nix new file mode 100644 index 0000000000..1ff0f94b88 --- /dev/null +++ b/libs/ssl-util/default.nix @@ -0,0 +1,17 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, base, byteable, bytestring, gitignoreSource +, HsOpenSSL, http-client, imports, lib, time +}: +mkDerivation { + pname = "ssl-util"; + version = "0.1.0"; + src = gitignoreSource ./.; + libraryHaskellDepends = [ + base byteable bytestring HsOpenSSL http-client imports time + ]; + description = "SSL-related utilities"; + license = lib.licenses.agpl3Only; +} diff --git a/libs/tasty-cannon/default.nix b/libs/tasty-cannon/default.nix new file mode 100644 index 0000000000..4b79d90f24 --- /dev/null +++ b/libs/tasty-cannon/default.nix @@ -0,0 +1,21 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, async, base, bilge, bytestring +, bytestring-conversion, data-timeout, exceptions, gitignoreSource +, http-client, http-types, imports, lib, random, tasty-hunit +, types-common, websockets, wire-api +}: +mkDerivation { + pname = "tasty-cannon"; + version = "0.4.0"; + src = gitignoreSource ./.; + libraryHaskellDepends = [ + aeson async base bilge bytestring bytestring-conversion + data-timeout exceptions http-client http-types imports random + tasty-hunit types-common websockets wire-api + ]; + description = "Cannon Integration Testing Utilities"; + license = lib.licenses.agpl3Only; +} diff --git a/libs/types-common-aws/default.nix b/libs/types-common-aws/default.nix new file mode 100644 index 0000000000..229d7060bf --- /dev/null +++ b/libs/types-common-aws/default.nix @@ -0,0 +1,20 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, amazonka, amazonka-sqs, base, base64-bytestring +, exceptions, gitignoreSource, imports, lens, lib, monad-control +, proto-lens, resourcet, safe, tasty, tasty-hunit, text, time +}: +mkDerivation { + pname = "types-common-aws"; + version = "0.16.0"; + src = gitignoreSource ./.; + libraryHaskellDepends = [ + amazonka amazonka-sqs base base64-bytestring exceptions imports + lens monad-control proto-lens resourcet safe tasty tasty-hunit text + time + ]; + description = "Shared AWS type definitions"; + license = lib.licenses.agpl3Only; +} diff --git a/libs/types-common-journal/default.nix b/libs/types-common-journal/default.nix new file mode 100644 index 0000000000..338c21abae --- /dev/null +++ b/libs/types-common-journal/default.nix @@ -0,0 +1,20 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, base, bytestring, Cabal, gitignoreSource, imports +, lib, proto-lens-protoc, proto-lens-runtime, proto-lens-setup +, time, types-common, uuid +}: +mkDerivation { + pname = "types-common-journal"; + version = "0.1.0"; + src = gitignoreSource ./.; + setupHaskellDepends = [ base Cabal proto-lens-setup ]; + libraryHaskellDepends = [ + base bytestring imports proto-lens-runtime time types-common uuid + ]; + libraryToolDepends = [ proto-lens-protoc ]; + description = "Shared protobuf type definitions"; + license = lib.licenses.agpl3Only; +} diff --git a/libs/types-common/default.nix b/libs/types-common/default.nix new file mode 100644 index 0000000000..425dfeffff --- /dev/null +++ b/libs/types-common/default.nix @@ -0,0 +1,42 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, attoparsec, attoparsec-iso8601, base +, base16-bytestring, base64-bytestring, binary, bytestring +, bytestring-conversion, cassandra-util, cereal, containers +, cryptohash-md5, cryptohash-sha1, cryptonite, currency-codes +, data-default, generic-random, gitignoreSource, hashable +, http-api-data, imports, iproute, iso3166-country-codes, iso639 +, lens, lens-datetime, lib, mime, optparse-applicative, pem +, protobuf, QuickCheck, quickcheck-instances, random +, schema-profunctor, scientific, servant-server, singletons +, string-conversions, swagger, swagger2, tagged, tasty, tasty-hunit +, tasty-quickcheck, text, time, time-locale-compat, tinylog, unix +, unordered-containers, uri-bytestring, uuid, vector, yaml +}: +mkDerivation { + pname = "types-common"; + version = "0.16.0"; + src = gitignoreSource ./.; + libraryHaskellDepends = [ + aeson attoparsec attoparsec-iso8601 base base16-bytestring + base64-bytestring binary bytestring bytestring-conversion + cassandra-util containers cryptohash-md5 cryptohash-sha1 cryptonite + currency-codes data-default generic-random hashable http-api-data + imports iproute iso3166-country-codes iso639 lens lens-datetime + mime optparse-applicative pem protobuf QuickCheck + quickcheck-instances random schema-profunctor scientific + servant-server singletons string-conversions swagger swagger2 + tagged tasty text time time-locale-compat tinylog unix + unordered-containers uri-bytestring uuid vector yaml + ]; + testHaskellDepends = [ + aeson base base16-bytestring base64-bytestring bytestring + bytestring-conversion cereal imports protobuf QuickCheck + string-conversions tasty tasty-hunit tasty-quickcheck text time + unordered-containers uuid + ]; + description = "Shared type definitions"; + license = lib.licenses.agpl3Only; +} diff --git a/libs/wai-utilities/default.nix b/libs/wai-utilities/default.nix new file mode 100644 index 0000000000..ea9cebed79 --- /dev/null +++ b/libs/wai-utilities/default.nix @@ -0,0 +1,26 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, async, base, bytestring +, bytestring-conversion, errors, exceptions, gitignoreSource +, http-types, imports, kan-extensions, lib, metrics-core +, metrics-wai, pipes, prometheus-client, servant-server +, streaming-commons, string-conversions, swagger, swagger2, text +, tinylog, types-common, unix, wai, wai-predicates, wai-routing +, warp, warp-tls +}: +mkDerivation { + pname = "wai-utilities"; + version = "0.16.1"; + src = gitignoreSource ./.; + libraryHaskellDepends = [ + aeson async base bytestring bytestring-conversion errors exceptions + http-types imports kan-extensions metrics-core metrics-wai pipes + prometheus-client servant-server streaming-commons + string-conversions swagger swagger2 text tinylog types-common unix + wai wai-predicates wai-routing warp warp-tls + ]; + description = "Various helpers for WAI"; + license = lib.licenses.agpl3Only; +} diff --git a/libs/wire-api-federation/default.nix b/libs/wire-api-federation/default.nix new file mode 100644 index 0000000000..1fffa573fb --- /dev/null +++ b/libs/wire-api-federation/default.nix @@ -0,0 +1,42 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, aeson-pretty, async, base, bytestring +, bytestring-conversion, case-insensitive, containers, either +, errors, exceptions, gitignoreSource, hspec, hspec-discover +, http-media, http-types, http2, HUnit, imports, kan-extensions +, lens, lib, lifted-base, metrics-wai, mtl, network, QuickCheck +, retry, schema-profunctor, servant, servant-client +, servant-client-core, servant-server, singletons, sop-core +, streaming-commons, swagger2, template-haskell, text, time +, time-manager, tls, transformers, types-common, uuid +, wai-utilities, wire-api +}: +mkDerivation { + pname = "wire-api-federation"; + version = "0.1.0"; + src = gitignoreSource ./.; + libraryHaskellDepends = [ + aeson async base bytestring bytestring-conversion case-insensitive + containers either errors exceptions http-media http-types http2 + imports kan-extensions lens lifted-base metrics-wai mtl network + QuickCheck schema-profunctor servant servant-client + servant-client-core servant-server singletons sop-core + streaming-commons swagger2 template-haskell text time time-manager + tls transformers types-common wai-utilities wire-api + ]; + testHaskellDepends = [ + aeson aeson-pretty async base bytestring bytestring-conversion + case-insensitive containers either errors exceptions hspec + http-media http-types http2 HUnit imports kan-extensions lens + lifted-base metrics-wai mtl network QuickCheck retry + schema-profunctor servant servant-client servant-client-core + servant-server singletons sop-core streaming-commons swagger2 + template-haskell text time time-manager tls transformers + types-common uuid wai-utilities wire-api + ]; + testToolDepends = [ hspec-discover ]; + description = "The Wire server-to-server API for federation"; + license = lib.licenses.agpl3Only; +} diff --git a/libs/wire-api/default.nix b/libs/wire-api/default.nix new file mode 100644 index 0000000000..6c5633ef60 --- /dev/null +++ b/libs/wire-api/default.nix @@ -0,0 +1,62 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, aeson-pretty, aeson-qq, async, attoparsec +, base, base64-bytestring, binary, binary-parsers, bytestring +, bytestring-arbitrary, bytestring-conversion, case-insensitive +, cassandra-util, cassava, cereal, comonad, conduit, constraints +, containers, cookie, cryptonite, currency-codes, deriving-aeson +, deriving-swagger2, directory, either, email-validate, errors +, extended, extra, filepath, generic-random, generics-sop, ghc-prim +, gitignoreSource, hashable, hex, hostname-validate, hscim +, http-api-data, http-media, http-types, imports +, insert-ordered-containers, iproute, iso3166-country-codes, iso639 +, lens, lib, memory, metrics-wai, mime, mtl, pem, polysemy, pretty +, process, proto-lens, protobuf, QuickCheck, quickcheck-instances +, random, resourcet, saml2-web-sso, schema-profunctor, scientific +, servant, servant-client, servant-client-core, servant-conduit +, servant-multipart, servant-server, servant-swagger +, servant-swagger-ui, singletons, sop-core, string-conversions +, swagger, swagger2, tagged, tasty, tasty-expected-failure +, tasty-hunit, tasty-quickcheck, text, time, types-common, unliftio +, unordered-containers, uri-bytestring, utf8-string, uuid, vector +, wai, wai-extra, wai-utilities, wai-websockets, websockets +, wire-message-proto-lens, x509 +}: +mkDerivation { + pname = "wire-api"; + version = "0.1.0"; + src = gitignoreSource ./.; + libraryHaskellDepends = [ + aeson attoparsec base base64-bytestring binary binary-parsers + bytestring bytestring-conversion case-insensitive cassandra-util + cassava cereal comonad conduit constraints containers cookie + cryptonite currency-codes deriving-aeson deriving-swagger2 either + email-validate errors extended extra filepath generic-random + generics-sop ghc-prim hashable hostname-validate hscim + http-api-data http-media http-types imports + insert-ordered-containers iproute iso3166-country-codes iso639 lens + memory metrics-wai mime mtl pem polysemy proto-lens protobuf + QuickCheck quickcheck-instances random resourcet saml2-web-sso + schema-profunctor scientific servant servant-client + servant-client-core servant-conduit servant-multipart + servant-server servant-swagger servant-swagger-ui singletons + sop-core string-conversions swagger swagger2 tagged text time + types-common unordered-containers uri-bytestring utf8-string uuid + vector wai wai-extra wai-utilities wai-websockets websockets + wire-message-proto-lens x509 + ]; + testHaskellDepends = [ + aeson aeson-pretty aeson-qq async base binary bytestring + bytestring-arbitrary bytestring-conversion case-insensitive cassava + containers cryptonite currency-codes directory either filepath hex + hscim imports iso3166-country-codes iso639 lens memory metrics-wai + mime pem pretty process proto-lens QuickCheck saml2-web-sso + schema-profunctor servant servant-swagger-ui string-conversions + swagger2 tasty tasty-expected-failure tasty-hunit tasty-quickcheck + text time types-common unliftio unordered-containers uri-bytestring + uuid vector wire-message-proto-lens + ]; + license = lib.licenses.agpl3Only; +} diff --git a/libs/wire-message-proto-lens/default.nix b/libs/wire-message-proto-lens/default.nix new file mode 100644 index 0000000000..598b4edb7f --- /dev/null +++ b/libs/wire-message-proto-lens/default.nix @@ -0,0 +1,17 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, base, Cabal, gitignoreSource, lib +, proto-lens-protoc, proto-lens-runtime, proto-lens-setup +}: +mkDerivation { + pname = "wire-message-proto-lens"; + version = "0.1.0"; + src = gitignoreSource ./.; + setupHaskellDepends = [ base Cabal proto-lens-setup ]; + libraryHaskellDepends = [ base proto-lens-runtime ]; + libraryToolDepends = [ proto-lens-protoc ]; + description = "Shared protobuf type definitions for Wire Messaging"; + license = lib.licenses.agpl3Only; +} diff --git a/libs/zauth/default.nix b/libs/zauth/default.nix new file mode 100644 index 0000000000..59781bf0b2 --- /dev/null +++ b/libs/zauth/default.nix @@ -0,0 +1,33 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, attoparsec, base, base64-bytestring, bytestring +, bytestring-conversion, errors, exceptions, gitignoreSource +, imports, lens, lib, mtl, mwc-random, optparse-applicative +, sodium-crypto-sign, tasty, tasty-hunit, tasty-quickcheck, time +, uuid, vector +}: +mkDerivation { + pname = "zauth"; + version = "0.10.3"; + src = gitignoreSource ./.; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + attoparsec base base64-bytestring bytestring bytestring-conversion + errors exceptions imports lens mtl mwc-random sodium-crypto-sign + time uuid vector + ]; + executableHaskellDepends = [ + base base64-bytestring bytestring bytestring-conversion errors + imports lens optparse-applicative sodium-crypto-sign uuid + ]; + testHaskellDepends = [ + base bytestring bytestring-conversion errors imports lens + sodium-crypto-sign tasty tasty-hunit tasty-quickcheck uuid + ]; + description = "Creation and validation of signed tokens"; + license = lib.licenses.agpl3Only; + mainProgram = "zauth"; +} diff --git a/nix/default.nix b/nix/default.nix index 6c078290f6..9c134b5c13 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -10,130 +10,17 @@ let ]; }; - c-lib-out-deps = [ - pkgs.rusty_jwt_tools - pkgs.cryptobox - pkgs.icu.out - pkgs.libsodium.out - pkgs.libxml2.out - pkgs.ncurses.out - pkgs.openssl.out - pkgs.pcre.out - pkgs.snappy.out - pkgs.zlib.out - pkgs.lzma.out - ]; - - compile-deps = pkgs.buildEnv { - name = "wire-server-compile-deps"; - paths = [ - pkgs.stdenv.cc.cc.lib - - pkgs.bash - pkgs.coreutils - pkgs.gnused - pkgs.gnugrep - pkgs.pkgconfig - pkgs.gawk - pkgs.git - - pkgs.haskell.compiler.ghc8107 - pkgs.protobuf - - pkgs.rusty_jwt_tools - pkgs.cryptobox - pkgs.icu.dev - pkgs.libsodium.dev - pkgs.libxml2.dev - pkgs.ncurses.dev - pkgs.openssl.dev - pkgs.pcre.dev - pkgs.snappy.dev - pkgs.zlib.dev - pkgs.lzma.dev - ] ++ c-lib-out-deps; - }; - - # This performs roughly the same setup as direnv's load_prefix function, but - # only when invoking cabal. This means that we can set LD_LIBRARY_PATH just - # for cabal, as setting it in direnv can interfere with programs in the host - # system, especially for non-NixOS users. - cabal-wrapper = pkgs.writeShellScriptBin "cabal" '' - export NIX_BUILD_SHELL="${pkgs.bash}/bin/bash" - export CPATH="${compile-deps}/include" - export LD_LIBRARY_PATH="${compile-deps}/lib" - export LIBRARY_PATH="${compile-deps}/lib" - export PKG_CONFIG_PATH="${compile-deps}/lib/pkgconfig" - export PATH="${compile-deps}/bin" - export CONFIG_SHELL="${compile-deps}/bin/sh" - exec "${pkgs.cabal-install}/bin/cabal" "$@" - ''; - - # stack-deps.nix sets LD_LIBRARY_PATH, which could be incompatible with the - # system bash. To ensure that nix-shell invoked by stack uses the correct - # shell to build we set NIX_BUILD_SHELL here. - stack-wrapper = pkgs.writeShellScriptBin "stack" '' - export NIX_BUILD_SHELL="${pkgs.bash}/bin/bash" - exec "${pkgs.stack}/bin/stack" "$@" - ''; - - devPackages = [ - (pkgs.haskell-language-server.override { supportedGhcVersions = [ "8107" ]; }) - pkgs.cfssl - pkgs.mls_test_cli - pkgs.ghcid - pkgs.gnumake - pkgs.gnused - pkgs.helm - pkgs.helmfile - pkgs.haskellPackages.hlint_3_4_1 - pkgs.haskellPackages.apply-refact - pkgs.jq - pkgs.kind - pkgs.kubectl - pkgs.netcat - pkgs.niv - pkgs.ormolu - pkgs.shellcheck - pkgs.python3 - pkgs.rsync - pkgs.shellcheck - pkgs.wget - pkgs.yq - - cabal-wrapper - stack-wrapper - - pkgs.haskellPackages.cabal-plan - pkgs.haskellPackages.cabal-fmt - - # We don't use pkgs.cabal-install here, as we invoke it with a wrapper - # which sets LD_LIBRARY_PATH and others correctly. - pkgs.haskellPackages.implicit-hie - - ] ++ pkgs.lib.optionals pkgs.stdenv.isLinux [ - # linux-only, not strictly required tools - - pkgs.docker-compose - pkgs.telepresence - pkgs.buildah # To actually run buildah on nixos, I had to follow this: https://gist.github.com/alexhrescale/474d55635154e6b2cd6362c3bb403faf - ] - ++ c-lib-out-deps; # Required to run HLS - profileEnv = pkgs.writeTextFile { - name = "profile-env"; - destination = "/.profile"; - # This gets sourced by direnv. Set NIX_PATH, so `nix-shell` uses the same nixpkgs as here. - text = '' - export NIX_PATH=nixpkgs=${toString pkgs.path} - export LOCALE_ARCHIVE=${pkgs.glibcLocales}/lib/locale/locale-archive - ''; - }; + name = "profile-env"; + destination = "/.profile"; + # This gets sourced by direnv. Set NIX_PATH, so `nix-shell` uses the same nixpkgs as here. + text = '' + export NIX_PATH=nixpkgs=${toString pkgs.path} + export LOCALE_ARCHIVE=${pkgs.glibcLocales}/lib/locale/locale-archive + ''; + }; - devEnv = pkgs.buildEnv { - name = "wire-server-direnv"; - paths = devPackages ++ [ profileEnv ]; - }; + wireServer = import ./wire-server.nix pkgs; # packages necessary to build wire-server docs docsPkgs = [ @@ -152,7 +39,7 @@ let ]; docs = - pkgs.runCommandNoCC + pkgs.runCommand "wire-docs" { nativeBuildInputs = docsPkgs ++ [ pkgs.gnumake ]; @@ -175,8 +62,6 @@ let pkgs.entr ] ++ docsPkgs; }; - mls_test_cli = pkgs.mls_test_cli; -in -{ - inherit pkgs devPackages devEnv docs docsEnv compile-deps mls_test_cli; -} + mls-test-cli = pkgs.mls-test-cli; + rusty-jwt-tools = pkgs.rusty-jwt-tools; +in {inherit pkgs profileEnv wireServer docs docsEnv mls-test-cli;} diff --git a/nix/haskell-pins.nix b/nix/haskell-pins.nix new file mode 100644 index 0000000000..eab0bf3249 --- /dev/null +++ b/nix/haskell-pins.nix @@ -0,0 +1,265 @@ +# How to add a git pin: +# +# 1. If your target git repository has only package with the cabal file at the +# root, add it like this under 'gitPins': +# = { +# src = fetchgit = { +# url = "" +# rev = ""; +# sha256 = ""; +# } +# } +# +# 2. If your target git repsitory has many packages, add it like this under 'gitPins': +# +# = { +# src = fetchgit { +# url = ""; +# rev = ""; +# sha256 = ""; +# }; +# packages = { +# = ""; +# = ""; +# = ""; +# }; +# }; +# +# 3. Run 'nix build -f ./nix wireServer.haskellPackagesUnoptimizedNoDocs.'. +# This should produce an error saying expected sha and the actual sha. Replace the empty string in 'sha256' with the actual +# sha. +# +# How to update a git pin: +# +# 1. Determine the new commit ID/SHA of the git repository that you want to pin +# and update the 'rev' field of the pin under 'gitPins'. +# +# 2. Update 'sha256' field under `fetchgit` to be an empty string. +# +# 3. Run step 3. from how to add a git pin. +# +# How to add a hackage pin: +# +# 1. Add your package like this, under 'hackagePins': +# = { +# version = ""; +# sha256 = "sha256-gD9b9AXpLkpPSAeg8oPBU7tsHtSNQjxIZKBo+7+r3+c="; +# }; +# +# 2. Run step 3. from how to add a git pin. +# +# How to update a hackage pin: +# +# 1. Update version number. +# 2. Make the 'sha256' blank string. +# 3. Run step 3. from how to add a git pin. +{lib, fetchgit}: hself: hsuper: +let + gitPins = { + HaskellNet-SSL = { + src = fetchgit { + url = "https://github.com/dpwright/HaskellNet-SSL"; + rev = "ca84ef29a93eaef7673fa58056cdd8dae1568d2d"; + sha256 = "1w23xgjdq22px90p12yw30psagc668n7l183bqvf8x075s77wckr"; + }; + }; + prometheus-haskell = { + src = fetchgit { + url = "https://github.com/fimad/prometheus-haskell"; + rev = "2e3282e5fb27ba8d989c271a0a989823fad7ec43"; + sha256 = "0vfzysn9sgpxymfvpahxrp74fczgjnw3kgknj6zk0473qk85488f"; + }; + packages = { + wai-middleware-prometheus = "wai-middleware-prometheus"; + }; + }; + servant = { + src = fetchgit { + url = "https://github.com/haskell-servant/servant.git"; + rev = "75db4a5327d6d04ae2460bd5ffd008fe16197ba8"; + sha256 = "0khgk0iqvamph57qp86ilravaw76qnjmg4kpliwfdzfyj9h44w0l"; + }; + packages = { + servant = "servant"; + servant-client = "servant-client"; + servant-client-core = "servant-client-core"; + servant-server = "servant-server"; + }; + }; + hs-collectd = { + src = fetchgit { + url = "https://github.com/kim/hs-collectd"; + rev = "885da222be2375f78c7be36127620ed772b677c9"; + sha256 = "1a3jwj0h2vzgjvzaa4jghmxkjwbzisq4qc7dldc42zi4jaq7lix7"; + }; + }; + hs-certificate = { + src = fetchgit { + url = "https://github.com/vincenthz/hs-certificate"; + rev = "a899bda3d7666d25143be7be8f3105fc076703d9"; + sha256 = "0ivc4l3c272i7w37rfgsbwnxa3fzfmghwddlqvzj5jj3zx5lyqlk"; + }; + packages = { + x509-store = "x509-store"; + };}; + amazonka = { + src = fetchgit { + url = "https://github.com/wireapp/amazonka"; + rev = "7ced54b0396296307b9871d293cc0ac161e5743d"; + sha256 = "0md658m32zrvzc8nljn58r8iw4rqxpihgdnqrhl8vnmkq6i9np51"; + }; + packages = { + amazonka = "lib/amazonka"; + amazonka-core = "lib/amazonka-core"; + amazonka-cloudfront = "lib/services/amazonka-cloudfront"; + amazonka-dynamodb = "lib/services/amazonka-dynamodb"; + amazonka-s3 = "lib/services/amazonka-s3"; + amazonka-ses = "lib/services/amazonka-ses"; + amazonka-sns = "lib/services/amazonka-sns"; + amazonka-sqs = "lib/services/amazonka-sqs"; + amazonka-sso = "lib/services/amazonka-sso"; + amazonka-sts = "lib/services/amazonka-sts"; + };}; + bloodhound = { + src = fetchgit { + url = "https://github.com/wireapp/bloodhound"; + rev = "c68e6d877d87988331bf391ed16780383a58eefa"; + sha256 = "0fr5xgq8f1nmcbk8srrhyf4vad4xm5iqr974jgqfg1mg31y85h0x"; + }; + }; + cryptobox-haskell = { + src = fetchgit { + url = "https://github.com/wireapp/cryptobox-haskell"; + rev = "7546a1a25635ef65183e3d44c1052285e8401608"; + sha256 = "0dgizj1kc135yzzqdf5l7f5ax0qpvrr8mxvg7s1dbm01cf11aqzn"; + }; + }; + multihash = { + src = fetchgit { + url = "https://github.com/wireapp/haskell-multihash.git"; + rev = "300a6f46384bfca33e545c8bab52ef3717452d12"; + sha256 = "0lcm6argp49fin4va7c50l1lj84xcm3cqzijzssfdgplimpmllma"; + }; + }; + hsaml2 = { + src = fetchgit { + url = "https://github.com/wireapp/hsaml2"; + rev = "d43818aac56678f0be02d0101d224fe0f6cdf131"; + sha256 = "16hj3i4h5rwhr8kqrs7345wg7v10ahwjd3fdp2qx3c5z4qls6prr"; + }; + }; + hspec-wai = { + src = fetchgit { + url = "https://github.com/wireapp/hspec-wai"; + rev = "0a5142cd3ba48116ff059c041348b817fb7bdb25"; + sha256 = "1yqkla7467fgb23yw689xh15zjn38rkc7ckf18cfalpc2ff5wfq1"; + }; + }; + http-client = { + src = fetchgit { + url = "https://github.com/wireapp/http-client"; + rev = "9100baeddbd15d93dc58a826ae812dafff29d5fd"; + sha256 = "16n340bg5vdb169f6d6421hx13wyqdsb5b314r823v34r8p0b19z"; + }; + packages = { + http-client = "http-client"; + http-client-openssl = "http-client-openssl"; + http-client-tls = "http-client-tls"; + http-conduit = "http-conduit"; + };}; + http2 = { + src = fetchgit { + url = "https://github.com/wireapp/http2"; + rev = "aa3501ad58e1abbd196781fac25a84f41ec2a787"; + sha256 = "09h86fkk8p7szq08x0iszaq16mhbylxivfc0apvj58d98wl8l6lq"; + }; + }; + saml2-web-sso = { + src = fetchgit { + url = "https://github.com/wireapp/saml2-web-sso"; + rev = "74371cd775cb98d6cf85f6e182244a3c4fd48702"; + sha256 = "1w23yz2iiayniymk7k4g8gww7268187cayw0c8m3bz2hbnvbyfbc"; + }; + }; + cql-io = { + src = fetchgit { + url = "https://gitlab.com/axeman/cql-io"; + rev = "c2b6aa995b5817ed7c78c53f72d5aa586ef87c36"; + sha256 = "1wncign8ilvqs9qyl6pkz66x2s8dgwhnfdjw82wv38ijmr95di0c"; + }; + }; + swagger = { + src = fetchgit { + url = "https://gitlab.com/axeman/swagger"; + rev = "e2d3f5b5274b8d8d301b5377b0af4319cea73f9e"; + sha256 = "1zj3fqlvcvp9s0myb98b6s9mpmiqamyxn2d3jan55irdgm53prmv"; + }; + }; + wai-routing = { + src = fetchgit { + url = "https://gitlab.com/twittner/wai-routing"; + rev = "7e996a93fec5901767f845a50316b3c18e51a61d"; + sha256 = "18icwks9jc6sy42vcvj2ysaip2s0dsrpvm9sy608b6nq6kk1ahlk"; + }; + }; + tasty = { + src = fetchgit { + url = "https://github.com/wireapp/tasty"; + rev = "394943c7672e5ad269e5587528b7678caf3b0720"; + sha256 = "sha256-rKvWGCLJUyKPmzeYaTj5J0VAExXYIpwJ5J2lJTcuXJI="; + }; + packages = { + tasty-hunit = "hunit"; + }; + }; + }; + hackagePins = { + kind-generics = { + version = "0.4.1.0"; + sha256 = "sha256-gD9b9AXpLkpPSAeg8oPBU7tsHtSNQjxIZKBo+7+r3+c="; + }; + wai-route = { + version = "0.4.0"; + sha256 = "sha256-DSMckKIeVE/buSMg8Mq+mUm1bYPYB7veA11Ns7vTBbc="; + }; + partial-isomorphisms = { + version = "0.2.2.1"; + sha256 = "sha256-TdsLB0ueaUUllLdvcGu3YNQXCfGRRk5WxP3deHEbHGI="; + }; + singletons = { + version = "2.7"; + sha256 = "sha256-q7yc/wyGSyYI0KdgHgRi0WISv9WEibxQ5yM7cSjXS2s="; + }; + th-desugar = { + version = "1.11"; + sha256 = "sha256-07sUW1ufEM7Xqv6C2rlFGI5CDO5cchDOND7QFstKu5g="; + }; + one-liner = { + version = "1.0"; + sha256 = "sha256-dv/W8hIPoHVevxiiCb6OfeP53O/9HPgUiqOHGSNb/pk="; + }; + }; + # Name -> Source -> Maybe Subpath -> Drv + mkGitDrv = name: src: subpath: + let subpathArg = if subpath == null + then "" + else "--subpath='${subpath}'"; + in hself.callCabal2nixWithOptions name src "${subpathArg}" {}; + # [[AtrrSet]] + gitPackages = lib.attrsets.mapAttrsToList (name: pin: + let packages = if pin?packages + then pin.packages + else { "${name}" = null;}; + in lib.attrsets.mapAttrsToList (name: subpath: + {"${name}" = mkGitDrv name pin.src subpath;} + ) packages + ) gitPins; + # AttrSet + hackagePackages = lib.attrsets.mapAttrs (pkg: {version, sha256}: + hself.callHackageDirect { + ver = version; + inherit pkg sha256; + } {} + ) hackagePins; +in lib.lists.foldr (a: b: a // b) hackagePackages (lib.lists.flatten gitPackages) diff --git a/nix/local-haskell-packages.nix b/nix/local-haskell-packages.nix new file mode 100644 index 0000000000..b7ecdeed55 --- /dev/null +++ b/nix/local-haskell-packages.nix @@ -0,0 +1,55 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ gitignoreSource }: hsuper: hself: { + api-bot = hself.callPackage ../libs/api-bot/default.nix { inherit gitignoreSource; }; + api-client = hself.callPackage ../libs/api-client/default.nix { inherit gitignoreSource; }; + bilge = hself.callPackage ../libs/bilge/default.nix { inherit gitignoreSource; }; + brig-types = hself.callPackage ../libs/brig-types/default.nix { inherit gitignoreSource; }; + cargohold-types = hself.callPackage ../libs/cargohold-types/default.nix { inherit gitignoreSource; }; + cassandra-util = hself.callPackage ../libs/cassandra-util/default.nix { inherit gitignoreSource; }; + deriving-swagger2 = hself.callPackage ../libs/deriving-swagger2/default.nix { inherit gitignoreSource; }; + dns-util = hself.callPackage ../libs/dns-util/default.nix { inherit gitignoreSource; }; + extended = hself.callPackage ../libs/extended/default.nix { inherit gitignoreSource; }; + galley-types = hself.callPackage ../libs/galley-types/default.nix { inherit gitignoreSource; }; + gundeck-types = hself.callPackage ../libs/gundeck-types/default.nix { inherit gitignoreSource; }; + hscim = hself.callPackage ../libs/hscim/default.nix { inherit gitignoreSource; }; + imports = hself.callPackage ../libs/imports/default.nix { inherit gitignoreSource; }; + jwt-tools = hself.callPackage ../libs/jwt-tools/default.nix { inherit gitignoreSource; }; + metrics-core = hself.callPackage ../libs/metrics-core/default.nix { inherit gitignoreSource; }; + metrics-wai = hself.callPackage ../libs/metrics-wai/default.nix { inherit gitignoreSource; }; + polysemy-wire-zoo = hself.callPackage ../libs/polysemy-wire-zoo/default.nix { inherit gitignoreSource; }; + ropes = hself.callPackage ../libs/ropes/default.nix { inherit gitignoreSource; }; + schema-profunctor = hself.callPackage ../libs/schema-profunctor/default.nix { inherit gitignoreSource; }; + sodium-crypto-sign = hself.callPackage ../libs/sodium-crypto-sign/default.nix { inherit gitignoreSource; }; + ssl-util = hself.callPackage ../libs/ssl-util/default.nix { inherit gitignoreSource; }; + tasty-cannon = hself.callPackage ../libs/tasty-cannon/default.nix { inherit gitignoreSource; }; + types-common-aws = hself.callPackage ../libs/types-common-aws/default.nix { inherit gitignoreSource; }; + types-common-journal = hself.callPackage ../libs/types-common-journal/default.nix { inherit gitignoreSource; }; + types-common = hself.callPackage ../libs/types-common/default.nix { inherit gitignoreSource; }; + wai-utilities = hself.callPackage ../libs/wai-utilities/default.nix { inherit gitignoreSource; }; + wire-api-federation = hself.callPackage ../libs/wire-api-federation/default.nix { inherit gitignoreSource; }; + wire-api = hself.callPackage ../libs/wire-api/default.nix { inherit gitignoreSource; }; + wire-message-proto-lens = hself.callPackage ../libs/wire-message-proto-lens/default.nix { inherit gitignoreSource; }; + zauth = hself.callPackage ../libs/zauth/default.nix { inherit gitignoreSource; }; + brig = hself.callPackage ../services/brig/default.nix { inherit gitignoreSource; }; + cannon = hself.callPackage ../services/cannon/default.nix { inherit gitignoreSource; }; + cargohold = hself.callPackage ../services/cargohold/default.nix { inherit gitignoreSource; }; + federator = hself.callPackage ../services/federator/default.nix { inherit gitignoreSource; }; + galley = hself.callPackage ../services/galley/default.nix { inherit gitignoreSource; }; + gundeck = hself.callPackage ../services/gundeck/default.nix { inherit gitignoreSource; }; + proxy = hself.callPackage ../services/proxy/default.nix { inherit gitignoreSource; }; + spar = hself.callPackage ../services/spar/default.nix { inherit gitignoreSource; }; + api-simulations = hself.callPackage ../tools/api-simulations/default.nix { inherit gitignoreSource; }; + assets = hself.callPackage ../tools/db/assets/default.nix { inherit gitignoreSource; }; + auto-whitelist = hself.callPackage ../tools/db/auto-whitelist/default.nix { inherit gitignoreSource; }; + billing-team-member-backfill = hself.callPackage ../tools/db/billing-team-member-backfill/default.nix { inherit gitignoreSource; }; + find-undead = hself.callPackage ../tools/db/find-undead/default.nix { inherit gitignoreSource; }; + migrate-sso-feature-flag = hself.callPackage ../tools/db/migrate-sso-feature-flag/default.nix { inherit gitignoreSource; }; + move-team = hself.callPackage ../tools/db/move-team/default.nix { inherit gitignoreSource; }; + repair-handles = hself.callPackage ../tools/db/repair-handles/default.nix { inherit gitignoreSource; }; + service-backfill = hself.callPackage ../tools/db/service-backfill/default.nix { inherit gitignoreSource; }; + rex = hself.callPackage ../tools/rex/default.nix { inherit gitignoreSource; }; + stern = hself.callPackage ../tools/stern/default.nix { inherit gitignoreSource; }; +} diff --git a/nix/manual-overrides.nix b/nix/manual-overrides.nix new file mode 100644 index 0000000000..0cecced516 --- /dev/null +++ b/nix/manual-overrides.nix @@ -0,0 +1,61 @@ +{ libsodium, protobuf, hlib, mls-test-cli }: +# FUTUREWORK: Figure out a way to detect if some of these packages are not +# actually marked broken, so we can cleanup this file on every nixpkgs bump. +hself: hsuper: { + network-arbitrary = hlib.markUnbroken (hlib.doJailbreak hsuper.network-arbitrary); + cql = hlib.markUnbroken hsuper.cql; + lens-datetime = hlib.markUnbroken (hlib.doJailbreak hsuper.lens-datetime); + wai-predicates = hlib.markUnbroken hsuper.wai-predicates; + bytestring-arbitrary = hlib.markUnbroken (hlib.doJailbreak hsuper.bytestring-arbitrary); + invertible = hlib.markUnbroken hsuper.invertible; + polysemy-check = hlib.markUnbroken (hlib.doJailbreak hsuper.polysemy-check); + swagger = hlib.doJailbreak hsuper.swagger; + multihash = hlib.markUnbroken (hlib.doJailbreak hsuper.multihash); + hashable = hsuper.hashable_1_4_1_0; + hashable-time = hsuper.hashable-time_0_3; + text-short = hlib.dontCheck hsuper.text-short; + aeson = hsuper.aeson_2_1_1_0; + lens-aeson = hsuper.lens-aeson_1_2_2; + swagger2 = hlib.doJailbreak hsuper.swagger2; + servant-swagger-ui-core = hlib.doJailbreak hsuper.servant-swagger-ui-core; + servant-swagger-ui = hlib.doJailbreak hsuper.servant-swagger-ui; + sodium-crypto-sign = hlib.addPkgconfigDepend hsuper.sodium-crypto-sign libsodium.dev; + servant-foreign = hlib.doJailbreak hsuper.servant-foreign; + servant-multipart = hlib.doJailbreak hsuper.servant-multipart; + hashtables = hsuper.hashtables_1_3; + quickcheck-state-machine = hlib.dontCheck hsuper.quickcheck-state-machine; + quickcheck-arbitrary-template = hlib.markUnbroken (hsuper.quickcheck-arbitrary-template); + wai-middleware-prometheus = hlib.doJailbreak hsuper.wai-middleware-prometheus; + one-liner = hlib.doJailbreak hsuper.one-liner; + + # Some test seems to be broken + hsaml2 = hlib.dontCheck hsuper.hsaml2; + saml2-web-sso = hlib.dontCheck hsuper.saml2-web-sso; + + # Needs network access to a running cassandra + cql-io = hlib.dontCheck hsuper.cql-io; + + # Needs network access to running ES + bloodhound = hlib.dontCheck hsuper.bloodhound; + + # These tests require newer version on hspec-wai, which doesn't work with some of the wire-server packages. + amazonka = hlib.doJailbreak (hlib.dontCheck hsuper.amazonka); + amazonka-core = hlib.doJailbreak (hlib.dontCheck hsuper.amazonka-core); + amazonka-cloudfront = hlib.dontCheck hsuper.amazonka-cloudfront; + amazonka-dynamodb = hlib.dontCheck hsuper.amazonka-dynamodb; + amazonka-s3 = hlib.dontCheck hsuper.amazonka-s3; + amazonka-ses = hlib.dontCheck hsuper.amazonka-ses; + amazonka-sns = hlib.dontCheck hsuper.amazonka-sns; + amazonka-sqs = hlib.dontCheck hsuper.amazonka-sqs; + amazonka-sso = hlib.dontCheck hsuper.amazonka-sso; + amazonka-sts = hlib.dontCheck hsuper.amazonka-sts; + servant-server = hlib.dontCheck hsuper.servant-server; + + # Build toool dependencies of local packages + wire-message-proto-lens = hlib.addBuildTool hsuper.wire-message-proto-lens protobuf; + types-common-journal = hlib.addBuildTool hsuper.types-common-journal protobuf; + wire-api = hlib.addBuildTool hsuper.wire-api mls-test-cli; + + # Make hoogle static to reduce size of the hoogle image + hoogle = hlib.justStaticExecutables hsuper.hoogle; +} diff --git a/nix/overlay-docs.nix b/nix/overlay-docs.nix index 649dfbe724..0eb09c95cb 100644 --- a/nix/overlay-docs.nix +++ b/nix/overlay-docs.nix @@ -8,7 +8,7 @@ self: super: rec { }; }); - mls_test_cli = self.callPackage ./pkgs/mls_test_cli { }; + mls-test-cli = self.callPackage ./pkgs/mls-test-cli { }; python3Packages = python3.pkgs; } diff --git a/nix/overlay.nix b/nix/overlay.nix index c213b266d1..41df0f7a5e 100644 --- a/nix/overlay.nix +++ b/nix/overlay.nix @@ -53,8 +53,10 @@ in self: super: { cryptobox = self.callPackage ./pkgs/cryptobox { }; zauth = self.callPackage ./pkgs/zauth { }; - mls_test_cli = self.callPackage ./pkgs/mls_test_cli { }; - rusty_jwt_tools = self.callPackage ./pkgs/rusty_jwt_tools { }; + mls-test-cli = self.callPackage ./pkgs/mls-test-cli { }; + + # Named like this so cabal2nix can find it + rusty_jwt_tools_ffi = self.callPackage ./pkgs/rusty_jwt_tools_ffi { }; nginxModules = super.nginxModules // { zauth = { diff --git a/nix/pkgs/mls_test_cli/default.nix b/nix/pkgs/mls-test-cli/default.nix similarity index 100% rename from nix/pkgs/mls_test_cli/default.nix rename to nix/pkgs/mls-test-cli/default.nix diff --git a/nix/pkgs/rusty_jwt_tools/add-Cargo.lock.patch b/nix/pkgs/rusty_jwt_tools_ffi/add-Cargo.lock.patch similarity index 100% rename from nix/pkgs/rusty_jwt_tools/add-Cargo.lock.patch rename to nix/pkgs/rusty_jwt_tools_ffi/add-Cargo.lock.patch diff --git a/nix/pkgs/rusty_jwt_tools/default.nix b/nix/pkgs/rusty_jwt_tools_ffi/default.nix similarity index 92% rename from nix/pkgs/rusty_jwt_tools/default.nix rename to nix/pkgs/rusty_jwt_tools_ffi/default.nix index e62b32cbc4..f59bcd9bcd 100644 --- a/nix/pkgs/rusty_jwt_tools/default.nix +++ b/nix/pkgs/rusty_jwt_tools_ffi/default.nix @@ -4,7 +4,7 @@ }: rustPlatform.buildRustPackage rec { - name = "rusty-jwt-tools-${version}"; + name = "rusty_jwt-tools_ffi-${version}"; version = "0.1.0"; src = fetchFromGitHub { owner = "wireapp"; @@ -14,7 +14,7 @@ rustPlatform.buildRustPackage rec { sha256 = "sha256-vnTvKITie4pu+ISIl/RdYPfb/yWCdCI9eHl1KcZb050="; }; cargoBuildFeatures = "haskell"; - cargoSha256 = "sha256-gR9XKcJslCcXo3EnD3MweWm+pQr4/EAEuFyOq3/l97g="; + cargoSha256 = "sha256-9etHOl3B/ybKdKMRUDb/VPxg4ghlIe75smWuupLORU8="; cargoPatches = [ # a patch file to add/update Cargo.lock in the source code # it's good practice not to add Cargo.lock to the source code for libraries diff --git a/nix/sources.json b/nix/sources.json index 55d7283a6c..5c08ee0357 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -5,10 +5,10 @@ "homepage": "https://github.com/wireapp/nixpkgs", "owner": "wireapp", "repo": "nixpkgs", - "rev": "c1f2214fb86c79f577460a3acd1b41ba284178c0", - "sha256": "0hdc53q8xmx6wgcyilxwy450dwhzwakdbbil1hg3vraprr1kpxcp", + "rev": "0f8a37f54f802a9e8bcf3bcfa89c5ab2017d9498", + "sha256": "1g28g6m3bs8axwkih8ihnv2h8g53s267l7kpaghwxzr65bz6hj7w", "type": "tarball", - "url": "https://github.com/wireapp/nixpkgs/archive/c1f2214fb86c79f577460a3acd1b41ba284178c0.tar.gz", + "url": "https://github.com/wireapp/nixpkgs/archive/0f8a37f54f802a9e8bcf3bcfa89c5ab2017d9498.tar.gz", "url_template": "https://github.com///archive/.tar.gz" } } diff --git a/nix/wire-server.nix b/nix/wire-server.nix new file mode 100644 index 0000000000..e1eb035e43 --- /dev/null +++ b/nix/wire-server.nix @@ -0,0 +1,334 @@ +# This file provides nix attributes which can be used to build wire server +# components, the development shell, the CI Image and an image with hoogle. +# +# Most haskell dependencies come from the package set present in nixpkgs. +# However, the package set is not enough to build wire-server components and +# requires some tweaks. These tweaks are built using a few things: +# +# 1. nix/local-haskell-packages.nix: This file provides a list of overrides +# which add the local packages from this repository into the nixpkgs haskell +# package set. This file is generated using `make regen-local-nix-derivations` +# which uses cabal2nix to generate nix derivations for each haskell package in +# this repository. +# +# 2. nix/haskell-pins.nix: This file provides a list of overrides for haskell +# packages we wish to pin to a certain version, either because we have had to +# fork them or because we're using an old/new version of the package so it +# supports our use cases. +# +# 3. nix/manual-overrides.nix: This file provides a list of overrides that we +# have to manually maintain. This is different from pinned dependencies because +# it overrides packages in a few ways: +# +# 3.1. Broken packages: Some packages are marked broken in the nixpkgs package +# set, but they work if we use them with our pins or sometimes we have to +# disable their tests to make them work. +# +# 3.2: Version overrides: These are very similar to nix/haskell-pins.nix, but +# the package set itself sometimes contains newer versions of a few packages +# along with the old versions, e.g., the package set contains aeson and +# aeson_2_1_1_0. We use the latest version provided by the pacakge set, so we +# don't have to remember to update the version here, nixpkgs will take care of +# giving us the latest version. +# +# 3.3: External dependencies: cabal2nix sometimes fails to provide the external +# dependencies like adding protobuf and mls-test-cli as a buld tools. So, we +# need to write overrides to ensure these are present during build. +# +# 3.4: Other overrides: We may need to override haskell package derivations for +# some other reasons, like ensuring hoogle derivation produces just the +# executable. We can use nix/manual-overrides.nix for this. +# +# Using thse tweaks we can get a haskell package set which has wire-server +# components and the required dependencies. We then use this package set along +# with nixpkgs' dockerTools to make derivations for docker images that we need. +pkgs: +let lib = pkgs.lib; + hlib = pkgs.haskell.lib; + withCleanedPath = drv: + hlib.overrideCabal drv (old: { + src = lib.cleanSourceWith { + src = old.src; + filter = path: type: + let baseName = baseNameOf (toString path); + in baseName != "dist"; + }; + }); + + gitignoreSource = + let gitignoreSrc = pkgs.fetchFromGitHub { + owner = "hercules-ci"; + repo = "gitignore.nix"; + # put the latest commit sha of gitignore Nix library here: + rev = "a20de23b925fd8264fd7fad6454652e142fd7f73"; + # use what nix suggests in the mismatch message here: + sha256 = "sha256:07vg2i9va38zbld9abs9lzqblz193vc5wvqd6h7amkmwf66ljcgh"; + }; + in (import gitignoreSrc { inherit (pkgs) lib; }).gitignoreSource; + + # Mapping from package -> [executable] + executablesMap = { + brig = ["brig" "brig-index" "brig-integration" "brig-schema"]; + cannon = ["cannon"]; + cargohold = ["cargohold" "cargohold-integration"]; + federator = ["federator" "federator-integration"]; + galley = ["galley" "galley-integration" "galley-schema" "galley-migrate-data"]; + gundeck = ["gundeck" "gundeck-integration" "gundeck-schema"]; + proxy = ["proxy"]; + spar = ["spar" "spar-integration" "spar-schema" "spar-migrate-data"]; + stern = ["stern"]; + + billing-team-member-backfill = ["billing-team-member-backfill"]; + api-simulations = ["api-smoketest" "api-loadtest"]; + zauth = ["zauth"]; + }; + + attrsets = lib.attrsets; + + pinnedPackages = import ./haskell-pins.nix { + fetchgit = pkgs.fetchgit; + inherit lib; + }; + + localPackages = {enableOptimization, enableDocs, enableTests}: hsuper: hself: + # The default packages are expected to have optimizations and docs turned + # on. + let defaultPkgs = import ./local-haskell-packages.nix { + inherit gitignoreSource; + } hsuper hself; + + werror = _: hlib.failOnAllWarnings; + opt = _: drv: + if enableOptimization + then drv + else + # We need to explicitly add `-O0` because all the cabal files + # explicitly have `-O2` in them + hlib.appendConfigureFlag (hlib.disableOptimization drv) "--ghc-option=-O0"; + tests = _: drv: + if enableTests + then drv + else hlib.dontCheck drv; + docs = _: drv: if enableDocs + then drv + else hlib.dontHaddock drv; + + overrideAll = fn: overrides: + attrsets.mapAttrs fn (overrides); + in lib.lists.foldr overrideAll defaultPkgs [ + werror + opt + docs + tests + ]; + manualOverrides = import ./manual-overrides.nix (with pkgs; { + inherit hlib libsodium protobuf mls-test-cli; + }); + + executables = hself: hsuper: + attrsets.genAttrs (builtins.attrNames executablesMap) (e: withCleanedPath hsuper.${e}); + + staticExecutables = hself: hsuper: + attrsets.mapAttrs' (name: _: + attrsets.nameValuePair "${name}-static" (hlib.justStaticExecutables hsuper."${name}") + ) executablesMap; + + hPkgs = localMods@{enableOptimization, enableDocs, enableTests}: pkgs.haskell.packages.ghc8107.override{ + overrides = lib.composeManyExtensions [ + pinnedPackages + (localPackages localMods) + manualOverrides + executables + staticExecutables + ]; + }; + + extractExec = localMods@{enableOptimization, enableDocs, enableTests}: hPkgName: execName: + pkgs.stdenv.mkDerivation { + name = execName; + buildInputs = [(hPkgs localMods)."${hPkgName}-static"]; + phases = "installPhase"; + installPhase = '' + mkdir -p $out/bin + cp "${(hPkgs localMods)."${hPkgName}-static"}/bin/${execName}" "$out/bin/${execName}" + ''; + }; + + # We extract static executables out of the output of building the packages + # so they don't depend on all the haskell dependencies. These exectuables + # are "static" from the perspective of ghc, i.e. they don't dynamically + # depend on other haskell packages but they still dynamically depend on C + # dependencies like openssl, cryptobox, libxml2, etc. Doing this makes the + # final images that we generate much smaller as we don't have to carry + # around so files for all haskell packages. + staticExecs = localMods@{enableOptimization, enableDocs, enableTests}: + let nested = attrsets.mapAttrs (hPkgName: execNames: + attrsets.genAttrs execNames (extractExec localMods hPkgName) + ) executablesMap; + unnested = lib.lists.foldr (x: y: x // y) {} (attrsets.attrValues nested); + in unnested; + + # Docker tools doesn't create tmp directories but some processes need this + # and so we have to create it ourself. + tmpDir = pkgs.runCommand "tmp-dir" {} '' + mkdir -p $out/tmp + mkdir -p $out/var/tmp + ''; + + brig-templates = pkgs.stdenvNoCC.mkDerivation { + name = "brig-templates"; + src = ../services/brig/deb/opt/brig/templates; + installPhase = '' + mkdir -p $out/usr/share/wire + cp -r $src $out/usr/share/wire/templates + ''; + }; + + # Some images require extra things which is not possible to specify using + # cabal file dependencies, so cabal2nix cannot automatically add these. + # + # extraContents :: Map Text [Derivation] + extraContents = { + brig = [brig-templates]; + brig-integration = [brig-templates pkgs.mls-test-cli]; + galley-integration= [pkgs.mls-test-cli]; + }; + + images = localMods@{enableOptimization, enableDocs, enableTests}: + attrsets.mapAttrs (execName: drv: + pkgs.dockerTools.streamLayeredImage { + name = "quay.io/wire/${execName}"; + maxLayers = 10; + contents = [ + pkgs.cacert + pkgs.iana-etc + pkgs.coreutils + pkgs.bashInteractive + pkgs.dumb-init + drv + tmpDir + ] ++ pkgs.lib.optionals (builtins.hasAttr execName extraContents) (builtins.getAttr execName extraContents); + # Any mkdir running in this step won't actually make it to the image, + # hence we use the tmpDir derivation in the contents + fakeRootCommands = '' + chmod 1777 tmp + chmod 1777 var/tmp + ''; + config = { + Entrypoint = ["${pkgs.dumb-init}/bin/dumb-init" "--" "${drv}/bin/${execName}"]; + }; + } + ) (staticExecs localMods); + + localModsEnableAll = { + enableOptimization = true; + enableDocs = true; + enableTests = true; + }; + localModsOnlyTests = { + enableOptimization = false; + enableDocs = false; + enableTests = true; + }; + localModsOnlyDocs = { + enableOptimization = false; + enableDocs = true; + enableTests = false; + }; + + imagesList = pkgs.writeTextFile { + name = "imagesList"; + text = "${lib.concatStringsSep "\n" (builtins.attrNames (images localModsEnableAll))}"; + }; + wireServerPackages = (builtins.attrNames (localPackages localModsEnableAll {} {})); + + hoogle = (hPkgs localModsOnlyDocs).hoogleWithPackages (p: builtins.map (e: p.${e}) wireServerPackages); + + # More about dockerTools.streamLayeredImage: + # https://nixos.org/manual/nixpkgs/unstable/#ssec-pkgs-dockerTools-streamLayeredImage + hoogleImage = pkgs.dockerTools.streamLayeredImage { + name = "quay.io/wire/wire-server-hoogle"; + maxLayers = 50; + contents = [ + hoogle + pkgs.coreutils + pkgs.bashInteractive + ]; + }; + + # Tools common between CI and developers + commonTools = [ + pkgs.cabal2nix + pkgs.gnumake + pkgs.gnused + pkgs.helm + pkgs.helmfile + pkgs.hlint + pkgs.jq + pkgs.kubectl + pkgs.ormolu + pkgs.shellcheck + (hlib.justStaticExecutables pkgs.haskellPackages.cabal-fmt) + ] ++ pkgs.lib.optionals pkgs.stdenv.isLinux [ + pkgs.skopeo + ]; + + # Building an image which can do nix builds is hard. This is programmed + # nicely in docker.nix at the root of https://github.com/nixos/nix. We get + # this file using "${pkgs.nix.src}/docker.nix" so we don't have to also pin + # the nix repository along with the nixpkgs repository. + ciImage = import "${pkgs.nix.src}/docker.nix" { + inherit pkgs; + name = "quay.io/wire/wire-server-ci"; + maxLayers = 2; + # We don't need to push the "latest" tag, every step in CI should depend + # deterministically on a specific image. + tag = null; + bundleNixpkgs = false; + extraPkgs = commonTools ++ [pkgs.cachix]; + nixConf = { + experimental-features = "nix-command"; + }; + }; +in { + inherit ciImage hoogleImage; + + images = images localModsEnableAll; + imagesUnoptimizedNoDocs = images localModsOnlyTests; + # Used for production images, ensure that optimizations and tests are always + # enabled! + imagesNoDocs = images { + enableOptimzation = true; + enableTests = true; + enableDocs = false; + }; + imagesList = imagesList; + + devShell = (hPkgs localModsOnlyTests).shellFor { + packages = p: builtins.map (e: p.${e}) wireServerPackages; + buildInputs = commonTools ++ [ + (pkgs.haskell-language-server.override { supportedGhcVersions = [ "8107" ]; }) + pkgs.ghcid + pkgs.cfssl + pkgs.kind + pkgs.netcat + pkgs.niv + pkgs.python3 + pkgs.rsync + pkgs.wget + pkgs.yq + + pkgs.cabal-install + pkgs.haskellPackages.cabal-plan + pkgs.nix-prefetch-git + ] ++ pkgs.lib.optionals pkgs.stdenv.isLinux [ + # linux-only, not strictly required tools + + pkgs.docker-compose + pkgs.telepresence + ]; + }; + inherit brig-templates; + haskellPackages = hPkgs localModsEnableAll; + haskellPackagesUnoptimizedNoDocs = hPkgs localModsOnlyTests; +} // attrsets.genAttrs (wireServerPackages) (e: hPkgs.${e}) diff --git a/services/brig/brig.cabal b/services/brig/brig.cabal index eca21d9c27..85054b8f96 100644 --- a/services/brig/brig.cabal +++ b/services/brig/brig.cabal @@ -578,7 +578,6 @@ executable brig-integration , temporary >=1.2.1 , text , time >=1.5 - , timeout , tinylog , transformers , types-common >=0.3 diff --git a/services/brig/default.nix b/services/brig/default.nix new file mode 100644 index 0000000000..8d1915f496 --- /dev/null +++ b/services/brig/default.nix @@ -0,0 +1,99 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, amazonka, amazonka-dynamodb, amazonka-ses +, amazonka-sqs, async, attoparsec, auto-update, base, base-prelude +, base16-bytestring, base64-bytestring, bilge, binary, bloodhound +, brig-types, bytestring, bytestring-conversion, cargohold-types +, case-insensitive, cassandra-util, comonad, conduit, containers +, cookie, cryptobox-haskell, currency-codes, data-default +, data-timeout, dns, dns-util, either, email-validate +, enclosed-exceptions, errors, exceptions, extended, extra +, federator, file-embed, file-embed-lzma, filepath, fsnotify +, galley-types, geoip2, gitignoreSource, gundeck-types, hashable +, HaskellNet, HaskellNet-SSL, hscim, HsOpenSSL +, HsOpenSSL-x509-system, html-entities, http-api-data, http-client +, http-client-openssl, http-client-tls, http-media +, http-reverse-proxy, http-types, imports +, insert-ordered-containers, iproute, iso639, jwt-tools, lens +, lens-aeson, lib, metrics-core, metrics-wai, mime, mime-mail +, mmorph, MonadRandom, mtl, multihash, mwc-random, network +, network-conduit-tls, optparse-applicative, pem, polysemy +, polysemy-plugin, polysemy-wire-zoo, process, proto-lens +, QuickCheck, random, random-shuffle, raw-strings-qq, resource-pool +, resourcet, retry, ropes, safe, safe-exceptions, saml2-web-sso +, schema-profunctor, scientific, scrypt, servant, servant-client +, servant-client-core, servant-server, servant-swagger +, servant-swagger-ui, sodium-crypto-sign, spar, split, ssl-util +, statistics, stomp-queue, string-conversions, swagger, swagger2 +, tagged, tasty, tasty-cannon, tasty-hunit, tasty-quickcheck +, template, template-haskell, temporary, text, text-icu-translit +, time, tinylog, transformers, types-common, types-common-aws +, types-common-journal, unliftio, unordered-containers +, uri-bytestring, uuid, vector, wai, wai-extra +, wai-middleware-gunzip, wai-predicates, wai-route, wai-routing +, wai-utilities, warp, warp-tls, wire-api, wire-api-federation +, yaml, zauth +}: +mkDerivation { + pname = "brig"; + version = "2.0"; + src = gitignoreSource ./.; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + aeson amazonka amazonka-dynamodb amazonka-ses amazonka-sqs async + attoparsec auto-update base base-prelude base16-bytestring + base64-bytestring bilge bloodhound brig-types bytestring + bytestring-conversion cassandra-util comonad conduit containers + cookie cryptobox-haskell currency-codes data-default data-timeout + dns dns-util either enclosed-exceptions errors exceptions extended + extra file-embed file-embed-lzma filepath fsnotify galley-types + geoip2 gundeck-types hashable HaskellNet HaskellNet-SSL HsOpenSSL + HsOpenSSL-x509-system html-entities http-client http-client-openssl + http-media http-types imports insert-ordered-containers iproute + iso639 jwt-tools lens lens-aeson metrics-core metrics-wai mime + mime-mail mmorph MonadRandom mtl multihash mwc-random network + network-conduit-tls optparse-applicative pem polysemy + polysemy-plugin polysemy-wire-zoo proto-lens random-shuffle + resource-pool resourcet retry ropes safe safe-exceptions + saml2-web-sso schema-profunctor scientific scrypt servant + servant-client servant-client-core servant-server servant-swagger + servant-swagger-ui sodium-crypto-sign split ssl-util statistics + stomp-queue string-conversions swagger swagger2 tagged template + template-haskell text text-icu-translit time tinylog transformers + types-common types-common-aws types-common-journal unliftio + unordered-containers uri-bytestring uuid vector wai wai-extra + wai-middleware-gunzip wai-predicates wai-routing wai-utilities warp + wire-api wire-api-federation yaml zauth + ]; + executableHaskellDepends = [ + aeson async attoparsec base base16-bytestring base64-bytestring + bilge bloodhound brig-types bytestring bytestring-conversion + cargohold-types case-insensitive cassandra-util containers cookie + data-default data-timeout email-validate exceptions extended + federator filepath galley-types gundeck-types hscim HsOpenSSL + http-api-data http-client http-client-tls http-media + http-reverse-proxy http-types imports lens lens-aeson metrics-wai + mime MonadRandom mtl network optparse-applicative pem polysemy + polysemy-wire-zoo process proto-lens QuickCheck random + random-shuffle raw-strings-qq retry safe saml2-web-sso servant + servant-client servant-client-core spar string-conversions tasty + tasty-cannon tasty-hunit temporary text time tinylog transformers + types-common types-common-aws types-common-journal unliftio + unordered-containers uri-bytestring uuid vector wai wai-extra + wai-route wai-utilities warp warp-tls wire-api wire-api-federation + yaml zauth + ]; + testHaskellDepends = [ + aeson base binary bloodhound brig-types bytestring containers + data-timeout dns dns-util exceptions HsOpenSSL http-types imports + lens polysemy polysemy-wire-zoo retry servant-client-core + string-conversions tasty tasty-hunit tasty-quickcheck time tinylog + types-common unliftio uri-bytestring uuid wai-utilities wire-api + wire-api-federation + ]; + description = "User Service"; + license = lib.licenses.agpl3Only; +} diff --git a/services/brig/test/integration/API/MLS.hs b/services/brig/test/integration/API/MLS.hs index cbd5fa5697..527fa1dccb 100644 --- a/services/brig/test/integration/API/MLS.hs +++ b/services/brig/test/integration/API/MLS.hs @@ -21,7 +21,6 @@ import API.MLS.Util import Bilge import Bilge.Assert import Brig.Options -import Control.Timeout import qualified Data.Aeson as Aeson import Data.ByteString.Conversion import Data.Default @@ -96,7 +95,8 @@ testKeyPackageExpired brig = do count <- getKeyPackageCount brig u cid liftIO $ count @?= expectedCount -- wait for c1's key package to expire - sleep . fromIntegral $ (lifetime + 3 # Second) #> Second + threadDelay (fromIntegral ((lifetime + 3 # Second) #> MicroSecond)) + -- c1's key package has expired by now for_ [(c1, 0), (c2, 1)] $ \(cid, expectedCount) -> do count <- getKeyPackageCount brig u cid diff --git a/services/brig/test/integration/API/Settings.hs b/services/brig/test/integration/API/Settings.hs index 0efdb338d8..beae1d3da7 100644 --- a/services/brig/test/integration/API/Settings.hs +++ b/services/brig/test/integration/API/Settings.hs @@ -95,7 +95,7 @@ expectEmailVisible Opt.EmailVisibleToSelf = \case DifferentTeam -> False NoTeam -> False -jsonField :: FromJSON a => Text -> Value -> Maybe a +jsonField :: FromJSON a => Key -> Value -> Maybe a jsonField f u = u ^? key f >>= maybeFromJSON testUsersEmailVisibleIffExpected :: Opts -> Brig -> Galley -> ViewingUserIs -> Opt.EmailVisibility -> Http () diff --git a/services/brig/test/integration/API/User/Account.hs b/services/brig/test/integration/API/User/Account.hs index 24cbcf0968..ef786dbf38 100644 --- a/services/brig/test/integration/API/User/Account.hs +++ b/services/brig/test/integration/API/User/Account.hs @@ -743,7 +743,7 @@ testMultipleUsersUnqualified brig = do Set.fromList . map (field "name" &&& field "email") <$> responseJsonMaybe r - field :: FromJSON a => Text -> Value -> Maybe a + field :: FromJSON a => Key -> Value -> Maybe a field f u = u ^? key f >>= maybeFromJSON testMultipleUsers :: Brig -> Http () @@ -774,7 +774,7 @@ testMultipleUsers brig = do Set.fromList . map (field "name" &&& field "email") <$> responseJsonMaybe r - field :: FromJSON a => Text -> Value -> Maybe a + field :: FromJSON a => Key -> Value -> Maybe a field f u = u ^? key f >>= maybeFromJSON testCreateUserAnonExpiry :: Brig -> Http () @@ -818,7 +818,7 @@ testCreateUserAnonExpiry b = do expire r = field "expires_at" =<< responseJsonMaybe r deleted :: ResponseLBS -> Maybe Bool deleted r = field "deleted" =<< responseJsonMaybe r - field :: FromJSON a => Text -> Value -> Maybe a + field :: FromJSON a => Key -> Value -> Maybe a field f u = u ^? key f >>= maybeFromJSON testUserUpdate :: HasCallStack => Brig -> Cannon -> AWS.Env -> Http () diff --git a/services/cannon/default.nix b/services/cannon/default.nix new file mode 100644 index 0000000000..ef0bff58d7 --- /dev/null +++ b/services/cannon/default.nix @@ -0,0 +1,45 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, api-field-json-th, async, base, bilge +, bytestring, bytestring-conversion, conduit, criterion +, data-default, data-timeout, exceptions, extended, extra +, gitignoreSource, gundeck-types, hashable, http-types, imports +, lens, lens-family-core, lib, metrics-wai, mwc-random, QuickCheck +, random, retry, safe-exceptions, servant, servant-conduit +, servant-server, strict, swagger, tasty, tasty-hunit +, tasty-quickcheck, text, tinylog, types-common, unix, unliftio +, uuid, vector, wai, wai-extra, wai-predicates, wai-utilities +, wai-websockets, warp, websockets, wire-api +}: +mkDerivation { + pname = "cannon"; + version = "0.31.0"; + src = gitignoreSource ./.; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + aeson api-field-json-th async base bilge bytestring + bytestring-conversion conduit data-default data-timeout exceptions + extended extra gundeck-types hashable http-types imports lens + lens-family-core metrics-wai mwc-random retry safe-exceptions + servant servant-conduit servant-server strict swagger text tinylog + types-common unix unliftio uuid vector wai wai-extra wai-predicates + wai-utilities wai-websockets warp websockets wire-api + ]; + executableHaskellDepends = [ base extended imports types-common ]; + testHaskellDepends = [ + async base bytestring criterion extended imports metrics-wai + QuickCheck random tasty tasty-hunit tasty-quickcheck types-common + uuid wai-utilities wire-api + ]; + benchmarkHaskellDepends = [ + async base bytestring criterion extended imports metrics-wai + QuickCheck random tasty tasty-hunit tasty-quickcheck types-common + uuid wai-utilities + ]; + description = "Push Notification API"; + license = lib.licenses.agpl3Only; + mainProgram = "cannon"; +} diff --git a/services/cargohold/default.nix b/services/cargohold/default.nix new file mode 100644 index 0000000000..23fc8e986b --- /dev/null +++ b/services/cargohold/default.nix @@ -0,0 +1,49 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, amazonka, amazonka-core, amazonka-s3 +, attoparsec, auto-update, base, base64-bytestring, bilge +, bytestring, bytestring-conversion, cargohold-types +, case-insensitive, conduit, conduit-extra, containers, cryptonite +, data-default, errors, exceptions, extended, federator +, gitignoreSource, HsOpenSSL, HsOpenSSL-x509-system, http-api-data +, http-client, http-client-openssl, http-client-tls, http-media +, http-types, imports, kan-extensions, lens, lib, metrics-core +, metrics-wai, mime, mmorph, mtl, optparse-applicative, resourcet +, retry, safe, servant, servant-client, servant-client-core +, servant-server, swagger, tagged, tasty, tasty-hunit, text, time +, tinylog, types-common, types-common-aws, unliftio +, unordered-containers, uri-bytestring, uuid, wai, wai-extra +, wai-utilities, wire-api, wire-api-federation, yaml +}: +mkDerivation { + pname = "cargohold"; + version = "1.5.0"; + src = gitignoreSource ./.; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + aeson amazonka amazonka-core amazonka-s3 attoparsec auto-update + base base64-bytestring bilge bytestring bytestring-conversion + cargohold-types case-insensitive conduit conduit-extra containers + cryptonite data-default errors exceptions extended HsOpenSSL + HsOpenSSL-x509-system http-client http-client-openssl http-types + imports kan-extensions lens metrics-core metrics-wai mime + optparse-applicative resourcet retry safe servant servant-server + swagger text time tinylog types-common types-common-aws unliftio + unordered-containers uri-bytestring uuid wai wai-extra + wai-utilities wire-api wire-api-federation yaml + ]; + executableHaskellDepends = [ + aeson base base64-bytestring bilge bytestring bytestring-conversion + cargohold-types conduit containers cryptonite data-default errors + exceptions extended federator HsOpenSSL http-api-data http-client + http-client-tls http-media http-types imports kan-extensions lens + mime mmorph mtl optparse-applicative safe servant-client + servant-client-core tagged tasty tasty-hunit text time types-common + uuid wai wai-utilities wire-api wire-api-federation yaml + ]; + description = "Asset Storage API"; + license = lib.licenses.agpl3Only; +} diff --git a/services/federator/default.nix b/services/federator/default.nix new file mode 100644 index 0000000000..40d51f9e4e --- /dev/null +++ b/services/federator/default.nix @@ -0,0 +1,69 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, async, base, bilge, binary, bytestring +, bytestring-conversion, connection, constraints, containers +, cryptonite, data-default, directory, dns, dns-util, either +, errors, exceptions, extended, filepath, gitignoreSource, hinotify +, hspec, http-client, http-client-openssl, http-client-tls +, http-media, http-types, http2, imports, interpolate +, kan-extensions, lens, lib, metrics-core, metrics-wai, mtl +, network, network-uri, optparse-applicative, pem, polysemy +, polysemy-wire-zoo, QuickCheck, random, retry, servant +, servant-client, servant-client-core, streaming-commons +, string-conversions, tasty, tasty-hunit, tasty-quickcheck +, temporary, text, time-manager, tinylog, tls, transformers +, types-common, unix, uri-bytestring, uuid, wai, wai-extra +, wai-utilities, warp, warp-tls, wire-api, wire-api-federation +, x509, x509-store, x509-system, x509-validation, yaml +}: +mkDerivation { + pname = "federator"; + version = "1.0.0"; + src = gitignoreSource ./.; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + aeson async base bilge binary bytestring bytestring-conversion + constraints containers data-default dns dns-util either exceptions + extended filepath hinotify http-client http-client-openssl + http-media http-types http2 imports kan-extensions lens + metrics-core metrics-wai mtl network network-uri pem polysemy + polysemy-wire-zoo retry servant servant-client-core + streaming-commons string-conversions text time-manager tinylog tls + types-common unix uri-bytestring uuid wai wai-utilities warp + warp-tls wire-api wire-api-federation x509 x509-store x509-system + x509-validation + ]; + executableHaskellDepends = [ + aeson async base bilge binary bytestring bytestring-conversion + connection constraints containers cryptonite data-default dns + dns-util either errors exceptions extended filepath hinotify hspec + http-client http-client-openssl http-client-tls http-media + http-types http2 imports kan-extensions lens metrics-core + metrics-wai mtl network network-uri optparse-applicative pem + polysemy polysemy-wire-zoo QuickCheck random retry servant + servant-client-core streaming-commons string-conversions tasty + tasty-hunit text time-manager tinylog tls types-common unix + uri-bytestring uuid wai wai-utilities warp warp-tls wire-api + wire-api-federation x509 x509-store x509-system x509-validation + yaml + ]; + testHaskellDepends = [ + aeson async base bilge binary bytestring bytestring-conversion + constraints containers data-default directory dns dns-util either + exceptions extended filepath hinotify http-client + http-client-openssl http-media http-types http2 imports interpolate + kan-extensions lens metrics-core metrics-wai mtl network + network-uri pem polysemy polysemy-wire-zoo QuickCheck retry servant + servant-client servant-client-core streaming-commons + string-conversions tasty tasty-hunit tasty-quickcheck temporary + text time-manager tinylog tls transformers types-common unix + uri-bytestring uuid wai wai-extra wai-utilities warp warp-tls + wire-api wire-api-federation x509 x509-store x509-system + x509-validation yaml + ]; + description = "Federation Service"; + license = lib.licenses.agpl3Only; +} diff --git a/services/galley/default.nix b/services/galley/default.nix new file mode 100644 index 0000000000..6fecc03f56 --- /dev/null +++ b/services/galley/default.nix @@ -0,0 +1,89 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, aeson-qq, amazonka, amazonka-sqs +, asn1-encoding, asn1-types, async, base, base64-bytestring, bilge +, binary, blake2, brig-types, bytestring, bytestring-conversion +, case-insensitive, cassandra-util, cassava, cereal, comonad +, conduit, containers, cookie, cryptonite, currency-codes +, data-default, data-timeout, directory, either +, enclosed-exceptions, errors, exceptions, extended, extra +, federator, filepath, galley-types, gitignoreSource, gundeck-types +, hex, HsOpenSSL, HsOpenSSL-x509-system, hspec, http-client +, http-client-openssl, http-client-tls, http-media, http-types +, imports, insert-ordered-containers, kan-extensions, lens +, lens-aeson, lib, memory, metrics-core, metrics-wai, mtl +, optparse-applicative, pem, polysemy, polysemy-wire-zoo, process +, proto-lens, protobuf, QuickCheck, quickcheck-instances, random +, raw-strings-qq, resourcet, retry, safe, safe-exceptions +, saml2-web-sso, schema-profunctor, semigroups, servant +, servant-client, servant-client-core, servant-server +, servant-swagger, servant-swagger-ui, singletons, sop-core, split +, ssl-util, stm, string-conversions, swagger, swagger2, tagged +, tasty, tasty-cannon, tasty-hspec, tasty-hunit, tasty-quickcheck +, temporary, text, time, tinylog, tls, transformers, types-common +, types-common-aws, types-common-journal, unix, unliftio +, unordered-containers, uri-bytestring, uuid, vector, wai +, wai-extra, wai-middleware-gunzip, wai-predicates, wai-routing +, wai-utilities, warp, warp-tls, wire-api, wire-api-federation +, wire-message-proto-lens, x509, yaml +}: +mkDerivation { + pname = "galley"; + version = "0.83.0"; + src = gitignoreSource ./.; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + aeson amazonka amazonka-sqs asn1-encoding asn1-types async base + base64-bytestring bilge binary blake2 brig-types bytestring + bytestring-conversion case-insensitive cassandra-util cassava + cereal comonad containers cryptonite currency-codes data-default + data-timeout either enclosed-exceptions errors exceptions extended + extra galley-types gundeck-types hex HsOpenSSL + HsOpenSSL-x509-system http-client http-client-openssl + http-client-tls http-media http-types imports + insert-ordered-containers kan-extensions lens memory metrics-core + metrics-wai mtl optparse-applicative pem polysemy polysemy-wire-zoo + proto-lens protobuf QuickCheck random raw-strings-qq resourcet + retry safe safe-exceptions saml2-web-sso schema-profunctor + semigroups servant servant-client servant-client-core + servant-server servant-swagger servant-swagger-ui singletons + sop-core split ssl-util stm string-conversions swagger swagger2 + tagged text time tinylog tls transformers types-common + types-common-aws types-common-journal unliftio unordered-containers + uri-bytestring uuid vector wai wai-extra wai-middleware-gunzip + wai-predicates wai-routing wai-utilities warp wire-api + wire-api-federation x509 + ]; + executableHaskellDepends = [ + aeson aeson-qq amazonka amazonka-sqs async base base64-bytestring + bilge binary brig-types bytestring bytestring-conversion + case-insensitive cassandra-util cassava cereal comonad conduit + containers cookie cryptonite currency-codes data-default + data-timeout directory errors exceptions extended extra federator + filepath galley-types gundeck-types hex HsOpenSSL + HsOpenSSL-x509-system hspec http-client http-client-openssl + http-client-tls http-media http-types imports kan-extensions lens + lens-aeson memory metrics-wai mtl optparse-applicative pem process + proto-lens protobuf QuickCheck quickcheck-instances random + raw-strings-qq retry safe saml2-web-sso schema-profunctor servant + servant-client servant-client-core servant-server servant-swagger + singletons sop-core ssl-util string-conversions tagged tasty + tasty-cannon tasty-hunit temporary text time tinylog tls + transformers types-common types-common-journal unix unliftio + unordered-containers uri-bytestring uuid vector wai wai-extra + wai-utilities warp warp-tls wire-api wire-api-federation + wire-message-proto-lens yaml + ]; + testHaskellDepends = [ + base case-insensitive containers extended extra galley-types + http-types imports lens QuickCheck raw-strings-qq safe + saml2-web-sso servant-client servant-swagger ssl-util tagged tasty + tasty-hspec tasty-hunit tasty-quickcheck transformers types-common + wai wai-predicates wire-api wire-api-federation + ]; + description = "Conversations"; + license = lib.licenses.agpl3Only; +} diff --git a/services/galley/schema/default.nix b/services/galley/schema/default.nix new file mode 100644 index 0000000000..d8003a87ba --- /dev/null +++ b/services/galley/schema/default.nix @@ -0,0 +1,17 @@ +{ mkDerivation, base, filepath, imports, lib, optparse-applicative +, shelly, system-filepath, text +}: +mkDerivation { + pname = "makedeb"; + version = "0.3.0"; + src = ./.; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + base filepath imports optparse-applicative shelly system-filepath + text + ]; + executableHaskellDepends = [ base imports optparse-applicative ]; + description = "Create debian archives with dpkg-deb"; + license = lib.licenses.agpl3Only; +} diff --git a/services/galley/src/Galley/API/MLS/Message.hs b/services/galley/src/Galley/API/MLS/Message.hs index f90829e766..0ed1e39ca1 100644 --- a/services/galley/src/Galley/API/MLS/Message.hs +++ b/services/galley/src/Galley/API/MLS/Message.hs @@ -747,6 +747,7 @@ applyProposalRef conv _groupId _epoch (Inline p) = do applyProposal (convId conv) p applyProposal :: + forall r. HasProposalEffects r => ConvId -> Proposal -> @@ -764,6 +765,7 @@ applyProposal convId (AddProposal kp) = do pure ci pure (paAddClient . (<$$>) (,ref) . cidQualifiedClient $ clientIdentity) where + addKeyPackageMapping :: Local ConvId -> KeyPackageRef -> KeyPackageData -> Sem r ClientIdentity addKeyPackageMapping lconv ref kpdata = do -- validate and update mapping in brig mCid <- diff --git a/services/galley/src/Galley/API/Message.hs b/services/galley/src/Galley/API/Message.hs index b3249c3622..c0ff968a6d 100644 --- a/services/galley/src/Galley/API/Message.hs +++ b/services/galley/src/Galley/API/Message.hs @@ -333,6 +333,13 @@ postBroadcast lusr con msg = runError $ do validMessages pure otrResult {mssFailedToSend = failedToSend} where + maybeFetchLimitedTeamMemberList :: + Members '[ErrorS 'BroadcastLimitExceeded, TeamStore] r => + Int -> + TeamId -> + [UserId] -> + Map UserId (Map ClientId ByteString) -> + Sem r [TeamMember] maybeFetchLimitedTeamMemberList limit tid localUserIdsInFilter rcps = do let localUserIdsInRcps = Map.keys rcps let localUserIdsToLookup = Set.toList $ Set.union (Set.fromList localUserIdsInFilter) (Set.fromList localUserIdsInRcps) diff --git a/services/galley/test/integration/API/MLS/Util.hs b/services/galley/test/integration/API/MLS/Util.hs index 33fdf7fb32..bd4b5b368c 100644 --- a/services/galley/test/integration/API/MLS/Util.hs +++ b/services/galley/test/integration/API/MLS/Util.hs @@ -47,7 +47,7 @@ import qualified Data.Text.Encoding as T import Data.Time.Clock (getCurrentTime) import Galley.Keys import Galley.Options -import Imports +import Imports hiding (getSymbolicLinkTarget) import System.Directory (getSymbolicLinkTarget) import System.FilePath import System.IO.Temp diff --git a/services/galley/test/integration/API/Util/TeamFeature.hs b/services/galley/test/integration/API/Util/TeamFeature.hs index b56ee21c1b..b29008f857 100644 --- a/services/galley/test/integration/API/Util/TeamFeature.hs +++ b/services/galley/test/integration/API/Util/TeamFeature.hs @@ -23,6 +23,7 @@ import Bilge import Control.Lens ((.~), (^?)) import Control.Monad.Catch (MonadThrow) import Data.Aeson (FromJSON, Result (Success), ToJSON, Value, fromJSON) +import qualified Data.Aeson.Key as Key import Data.Aeson.Lens import Data.ByteString.Conversion (toByteString') import Data.Id (ConvId, TeamId, UserId) @@ -120,7 +121,7 @@ getFeatureConfig :: forall cfg m. (HasCallStack, MonadThrow m, HasGalley m, Mona getFeatureConfig uid = do galley <- viewGalley response :: Value <- responseJsonError =<< getAllFeatureConfigsWithGalley galley uid - let status = response ^? key (Public.featureName @cfg) + let status = response ^? key (Key.fromText (Public.featureName @cfg)) maybe (error "getting all features failed") pure (status >>= fromResult . fromJSON) where fromResult :: Result a -> Maybe a diff --git a/services/gundeck/default.nix b/services/gundeck/default.nix new file mode 100644 index 0000000000..1751d4ae14 --- /dev/null +++ b/services/gundeck/default.nix @@ -0,0 +1,67 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, aeson-pretty, amazonka, amazonka-sns +, amazonka-sqs, async, attoparsec, auto-update, base +, base16-bytestring, bilge, bytestring, bytestring-conversion +, cassandra-util, containers, criterion, data-default, errors +, exceptions, extended, extra, gitignoreSource, gundeck-types +, hedis, HsOpenSSL, http-client, http-client-tls, http-types +, imports, kan-extensions, lens, lens-aeson, lib, metrics-core +, metrics-wai, MonadRandom, mtl, multiset, network, network-uri +, optparse-applicative, psqueues, QuickCheck, quickcheck-instances +, quickcheck-state-machine, random, raw-strings-qq, resourcet +, retry, safe, safe-exceptions, scientific, streaming-commons +, string-conversions, swagger, tagged, tasty, tasty-hunit +, tasty-quickcheck, text, time, tinylog, tls, tree-diff +, types-common, types-common-aws, unix, unliftio +, unordered-containers, uuid, wai, wai-extra, wai-middleware-gunzip +, wai-predicates, wai-routing, wai-utilities, warp, warp-tls +, websockets, wire-api, yaml +}: +mkDerivation { + pname = "gundeck"; + version = "1.45.0"; + src = gitignoreSource ./.; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + aeson amazonka amazonka-sns amazonka-sqs async attoparsec + auto-update base bilge bytestring bytestring-conversion + cassandra-util containers data-default errors exceptions extended + extra gundeck-types hedis HsOpenSSL http-client http-client-tls + http-types imports lens lens-aeson metrics-core metrics-wai mtl + network network-uri optparse-applicative psqueues resourcet retry + safe-exceptions swagger text time tinylog tls types-common + types-common-aws unliftio unordered-containers uuid wai wai-extra + wai-middleware-gunzip wai-predicates wai-routing wai-utilities + wire-api yaml + ]; + executableHaskellDepends = [ + aeson async base base16-bytestring bilge bytestring + bytestring-conversion cassandra-util containers exceptions extended + gundeck-types HsOpenSSL http-client http-client-tls imports + kan-extensions lens lens-aeson metrics-wai mtl network network-uri + optparse-applicative random raw-strings-qq retry safe + streaming-commons tagged tasty tasty-hunit text time tinylog + types-common unix unordered-containers uuid wai wai-utilities warp + warp-tls websockets wire-api yaml + ]; + testHaskellDepends = [ + aeson aeson-pretty amazonka async base bytestring containers + exceptions extended gundeck-types HsOpenSSL imports lens + metrics-wai MonadRandom mtl multiset network-uri QuickCheck + quickcheck-instances quickcheck-state-machine scientific + string-conversions tasty tasty-hunit tasty-quickcheck text time + tinylog tree-diff types-common unordered-containers uuid + wai-utilities wire-api + ]; + benchmarkHaskellDepends = [ + aeson amazonka base bytestring criterion extended gundeck-types + HsOpenSSL imports lens random text time types-common + unordered-containers uuid + ]; + description = "Push Notification Hub"; + license = lib.licenses.agpl3Only; +} diff --git a/services/gundeck/test/integration/Util.hs b/services/gundeck/test/integration/Util.hs index c6d0cef678..fed87835bd 100644 --- a/services/gundeck/test/integration/Util.hs +++ b/services/gundeck/test/integration/Util.hs @@ -14,7 +14,7 @@ import Gundeck.Env (createEnv) import Gundeck.Options import Gundeck.Run (mkApp) import Imports -import Network.Socket +import Network.Socket hiding (openSocket) import Network.Socket.ByteString (recv, sendAll) import Network.Wai.Utilities.MockServer (withMockServer) import TestSetup diff --git a/services/proxy/default.nix b/services/proxy/default.nix new file mode 100644 index 0000000000..384a1f55ac --- /dev/null +++ b/services/proxy/default.nix @@ -0,0 +1,28 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, base, bilge, bytestring, case-insensitive +, configurator, data-default, exceptions, extended, gitignoreSource +, http-client, http-client-tls, http-reverse-proxy, http-types +, imports, lens, lib, metrics-wai, retry, text, tinylog +, types-common, unliftio-core, wai, wai-predicates, wai-routing +, wai-utilities, warp, wire-api +}: +mkDerivation { + pname = "proxy"; + version = "0.9.0"; + src = gitignoreSource ./.; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + aeson base bilge bytestring case-insensitive configurator + data-default exceptions extended http-client http-client-tls + http-reverse-proxy http-types imports lens metrics-wai retry text + tinylog types-common unliftio-core wai wai-predicates wai-routing + wai-utilities warp wire-api + ]; + executableHaskellDepends = [ base extended imports types-common ]; + license = lib.licenses.agpl3Only; + mainProgram = "proxy"; +} diff --git a/services/spar/default.nix b/services/spar/default.nix new file mode 100644 index 0000000000..0ee7dabd9c --- /dev/null +++ b/services/spar/default.nix @@ -0,0 +1,79 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, aeson-qq, attoparsec, base +, base64-bytestring, bilge, binary, brig-types, bytestring +, bytestring-conversion, case-insensitive, cassandra-util, cassava +, conduit, containers, cookie, cryptonite, data-default +, email-validate, exceptions, extended, galley-types, ghc-prim +, gitignoreSource, hscim, HsOpenSSL, hspec, hspec-discover +, hspec-wai, http-api-data, http-client, http-media, http-types +, imports, insert-ordered-containers, iso639, lens, lens-aeson, lib +, memory, metrics-wai, MonadRandom, mtl, network-uri +, optparse-applicative, polysemy, polysemy-check, polysemy-plugin +, polysemy-wire-zoo, QuickCheck, random, raw-strings-qq, retry +, saml2-web-sso, servant, servant-multipart, servant-server +, servant-swagger, silently, string-conversions, swagger2 +, tasty-hunit, text, text-latin1, time, tinylog, transformers +, types-common, unordered-containers, uri-bytestring, uuid, vector +, wai, wai-extra, wai-utilities, warp, wire-api, x509, xml-conduit +, yaml, zauth +}: +mkDerivation { + pname = "spar"; + version = "0.1"; + src = gitignoreSource ./.; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + aeson aeson-qq attoparsec base base64-bytestring bilge binary + brig-types bytestring bytestring-conversion case-insensitive + cassandra-util containers cookie cryptonite data-default + email-validate exceptions extended galley-types ghc-prim hscim + HsOpenSSL hspec http-api-data http-client http-media http-types + imports insert-ordered-containers lens memory metrics-wai mtl + network-uri optparse-applicative polysemy polysemy-check + polysemy-plugin polysemy-wire-zoo QuickCheck raw-strings-qq retry + saml2-web-sso servant servant-multipart servant-server + servant-swagger string-conversions swagger2 text text-latin1 time + tinylog transformers types-common unordered-containers + uri-bytestring uuid wai wai-utilities warp wire-api x509 + xml-conduit yaml + ]; + executableHaskellDepends = [ + aeson aeson-qq attoparsec base base64-bytestring bilge binary + brig-types bytestring bytestring-conversion case-insensitive + cassandra-util cassava conduit containers cookie cryptonite + data-default email-validate exceptions extended galley-types + ghc-prim hscim HsOpenSSL hspec hspec-wai http-api-data http-client + http-media http-types imports insert-ordered-containers iso639 lens + lens-aeson memory metrics-wai MonadRandom mtl network-uri + optparse-applicative polysemy polysemy-check polysemy-plugin + polysemy-wire-zoo QuickCheck random raw-strings-qq retry + saml2-web-sso servant servant-multipart servant-server + servant-swagger silently string-conversions swagger2 tasty-hunit + text text-latin1 time tinylog transformers types-common + unordered-containers uri-bytestring uuid vector wai wai-extra + wai-utilities warp wire-api x509 xml-conduit yaml zauth + ]; + executableToolDepends = [ hspec-discover ]; + testHaskellDepends = [ + aeson aeson-qq attoparsec base base64-bytestring bilge binary + brig-types bytestring bytestring-conversion case-insensitive + cassandra-util containers cookie cryptonite data-default + email-validate exceptions extended galley-types ghc-prim hscim + HsOpenSSL hspec http-api-data http-client http-media http-types + imports insert-ordered-containers lens lens-aeson memory + metrics-wai mtl network-uri optparse-applicative polysemy + polysemy-check polysemy-plugin polysemy-wire-zoo QuickCheck + raw-strings-qq retry saml2-web-sso servant servant-multipart + servant-server servant-swagger string-conversions swagger2 text + text-latin1 time tinylog transformers types-common + unordered-containers uri-bytestring uuid wai wai-utilities warp + wire-api x509 xml-conduit yaml + ]; + testToolDepends = [ hspec-discover ]; + description = "User Service for SSO (Single Sign-On) provisioning and authentication"; + license = lib.licenses.agpl3Only; +} diff --git a/services/spar/test/Test/Spar/APISpec.hs b/services/spar/test/Test/Spar/APISpec.hs index 814eb2e681..ceefb59e48 100644 --- a/services/spar/test/Test/Spar/APISpec.hs +++ b/services/spar/test/Test/Spar/APISpec.hs @@ -20,9 +20,9 @@ module Test.Spar.APISpec where import Arbitrary () import qualified Control.Lens as Lens import qualified Data.Aeson as Aeson +import qualified Data.Aeson.KeyMap as KeyMap import qualified Data.Aeson.Lens as Aeson import qualified Data.Aeson.Types as Aeson -import qualified Data.HashMap.Strict as HM import Data.Metrics.Servant (routesToPaths) import Data.Metrics.Test (pathsConsistencyCheck) import Data.Proxy (Proxy (Proxy)) @@ -48,8 +48,8 @@ spec = do property $ \(ssoSettings :: SsoSettings) -> do let object = Aeson.toJSON ssoSettings - let objectWithoutKey = Lens.over Aeson._Object (HM.delete "default_sso_code") $ object - (HM.lookup "default_sso_code" =<< Lens.preview Aeson._Object object) + let objectWithoutKey = Lens.over Aeson._Object (KeyMap.delete "default_sso_code") $ object + (KeyMap.lookup "default_sso_code" =<< Lens.preview Aeson._Object object) `shouldSatisfy` isJust Aeson.parseMaybe (Aeson.parseJSON @SsoSettings) objectWithoutKey `shouldSatisfy` isNothing diff --git a/shell.nix b/shell.nix index b48fd0ec21..e66fa312b2 100644 --- a/shell.nix +++ b/shell.nix @@ -1,8 +1 @@ -let - pkgs = (import ./nix).pkgs; - devPackages = (import ./nix).devPackages; -in -pkgs.mkShell { - name = "wire-server-direnv"; - buildInputs = devPackages; -} +(import ./nix).pkgs.wireServer.devShell diff --git a/stack-deps.nix b/stack-deps.nix deleted file mode 100644 index dde3ffbe80..0000000000 --- a/stack-deps.nix +++ /dev/null @@ -1,34 +0,0 @@ -# FUTUREWORK: remove this file when we drop stack support -let - pkgs = (import ./nix).pkgs; - native_libs = pkgs.lib.optionals pkgs.stdenv.isDarwin (with pkgs.darwin.apple_sdk.frameworks; [ - Cocoa - CoreServices - ]); - -in -pkgs.haskell.lib.buildStackProject { - name = "wire-server"; - nativeBuildInputs = native_libs; - buildInputs = with pkgs; [ - cryptobox - geoip - git - icu - libsodium - libxml2 - ncurses - openssl - pkgconfig - protobuf - pcre - snappy - zlib - lzma - ]; - ghc = pkgs.haskell.compiler.ghc8107; - - # This is required as the environment variables exported before running stack - # do not make it into the shell in which stack runs test. - HSPEC_OPTIONS = "--fail-on-focused"; -} diff --git a/stack.yaml b/stack.yaml deleted file mode 100644 index 6deffb9cec..0000000000 --- a/stack.yaml +++ /dev/null @@ -1,283 +0,0 @@ -resolver: lts-18.18 - -# to bump blocks of custom dependencies to the latest version on hackage: -# -# /tmp/1.sh: -# #!/bin/bash -# cabal list "$1" | perl -ne '/^..'$1'$/ && { $x=1 }; /^$/ && { $x=0 }; if ($x) { /version: (.+)$/ && print "$1" }' -# -# /tmp/2.sh: -# #!/bin/bash -# perl -ne '/^- (\S+)-([01123456789\.]+)(\@\S+)?(.*)$/ && do { print "- $1-"; system("/tmp/1.sh $1"); print "$4\n" }' -# -# ... and then pipe the blocks of extra-deps through /tmp/2.sh. -# sorry for the hideous code, couldn't get it into one line (some -# limitation to perl that i don't want to have to understand). -# anyway it works! - -packages: -- libs/api-bot -- libs/api-client -- libs/bilge -- libs/brig-types -- libs/cargohold-types -- libs/cassandra-util -- libs/extended -- libs/dns-util -- libs/deriving-swagger2 -- libs/galley-types -- libs/gundeck-types -- libs/hscim -- libs/imports -- libs/jwt-tools -- libs/metrics-core -- libs/metrics-wai -- libs/polysemy-wire-zoo -- libs/ropes -- libs/schema-profunctor -- libs/sodium-crypto-sign -- libs/ssl-util -- libs/tasty-cannon -- libs/types-common -- libs/types-common-aws -- libs/types-common-journal -- libs/wai-utilities -- libs/wire-api -- libs/wire-api-federation -- libs/wire-message-proto-lens -- libs/zauth -- services/brig -- services/cannon -- services/cargohold -- services/federator -- services/galley -- services/gundeck -- services/proxy -- services/spar -- tools/api-simulations -- tools/db/assets -- tools/db/auto-whitelist -- tools/db/migrate-sso-feature-flag -- tools/db/service-backfill -- tools/db/billing-team-member-backfill -- tools/db/find-undead -- tools/db/move-team -- tools/db/repair-handles -- tools/rex -- tools/stern - -nix: - shell-file: stack-deps.nix - - -# HaskellNet, HaskellNet-SSL, bloodhound, multihash and stm-hamt have bounds -# issues. We didn't catch those before because in snapshot files, allow-newer: -# true seems to be the default. We should fix these bound issues (we have a -# fork of multihash for this reason already) but for now we just ignore the bounds -allow-newer: true - -extra-deps: -- bytestring-arbitrary-0.1.3@sha256:14db64d4fe126fbad2eb8d3601bfd80a693f3131e2db0e76891feffe44f10df8,1773 -- git: https://github.com/fimad/prometheus-haskell - commit: 2e3282e5fb27ba8d989c271a0a989823fad7ec43 - subdirs: - - wai-middleware-prometheus - # wai-middleware-prometheus can be pulled from hackage once the - # a version > 1.0.0 of wai-middleware-prometheus is available - # (required: https://github.com/fimad/prometheus-haskell/pull/45) -- git: https://github.com/wireapp/saml2-web-sso - commit: 74371cd775cb98d6cf85f6e182244a3c4fd48702 # master (Jul 07, 2022) - -- git: https://github.com/kim/hs-collectd - commit: 885da222be2375f78c7be36127620ed772b677c9 - -- git: https://gitlab.com/twittner/wai-routing - commit: 7e996a93fec5901767f845a50316b3c18e51a61d - -# Our fork of multihash with relaxed upper bounds -- git: https://github.com/wireapp/haskell-multihash.git - commit: 300a6f46384bfca33e545c8bab52ef3717452d12 - -# https://github.com/hspec/hspec-wai/pull/49 -- git: https://github.com/wireapp/hspec-wai - commit: 0a5142cd3ba48116ff059c041348b817fb7bdb25 - -- git: https://github.com/wireapp/bloodhound - commit: c68e6d877d87988331bf391ed16780383a58eefa # (2022-03-17) branch: wire-fork, aeson 2 support, updateByQuery - -# For bloodhound -- aeson-2.0.3.0 -- deriving-aeson-0.2.8 -- semialign-1.2.0.1 -- OneTuple-0.3.1 -- hashable-1.4.0.2 -- attoparsec-0.14.4 -- text-short-0.1.5 -- time-compat-1.9.6.1 -- lens-5.0.1 -- quickcheck-instances-0.3.27 -- swagger2-2.8.2 -- optics-extra-0.4 -- optics-core-0.4 -- optics-th-0.4 -- http-api-data-0.4.3 -- shakespeare-2.0.25.1 -- servant-swagger-1.1.10 -- foldl-1.4.12 -- stache-2.3.1 -- microlens-aeson-2.4.1 - -# Fork to force usage of path-style s3 URLs. More about S3 URLs: -# https://aws.amazon.com/blogs/aws/amazon-s3-path-deprecation-plan-the-rest-of-the-story/ -- git: https://github.com/wireapp/amazonka - commit: 7ced54b0396296307b9871d293cc0ac161e5743d # (2022-02-24) branch: s3-no-vhost - subdirs: - - lib/amazonka - - lib/amazonka-core - - lib/services/amazonka-cloudfront - - lib/services/amazonka-dynamodb - - lib/services/amazonka-s3 - - lib/services/amazonka-ses - - lib/services/amazonka-sns - - lib/services/amazonka-sqs - - lib/services/amazonka-sso - - lib/services/amazonka-sts - -# Use forked swagger to support aeson >= 2 -- git: https://gitlab.com/axeman/swagger - commit: e2d3f5b5274b8d8d301b5377b0af4319cea73f9e - -# Use forked cql-io for https://gitlab.com/twittner/cql-io/-/merge_requests/20 -- git: https://gitlab.com/axeman/cql-io - commit: c2b6aa995b5817ed7c78c53f72d5aa586ef87c36 - -- git: https://github.com/wireapp/tasty - commit: 394943c7672e5ad269e5587528b7678caf3b0720 - subdirs: - - hunit - -############################################################ -# Wire packages -############################################################ - -- git: https://github.com/wireapp/cryptobox-haskell - commit: 7546a1a25635ef65183e3d44c1052285e8401608 # master (Jul 21, 2016) - -- git: https://github.com/wireapp/hsaml2 - commit: d43818aac56678f0be02d0101d224fe0f6cdf131 # (Mar 21, 2022) - -- git: https://github.com/wireapp/http-client - commit: 9100baeddbd15d93dc58a826ae812dafff29d5fd # master (Jun 16, 2020) - subdirs: - - http-client - - http-client-openssl - - http-client-tls - - http-conduit - -# Dropped from upstream snapshot -- template-0.2.0.10 -- HaskellNet-0.6 -- smtp-mail-0.3.0.0 -- stm-containers-1.2 -- redis-resp-1.0.0 -- stm-hamt-1.2.0.6 -- primitive-unlifted-1.0.0.0 -- prometheus-2.2.2 # Only in nightly so far - -# Not on stackage -- currency-codes-3.0.0.1 -- mime-0.4.0.2 -- data-timeout-0.3.1 -- geoip2-0.4.1.0 -- stomp-queue-0.5.1 -- text-icu-translit-0.1.0.7 -- wai-middleware-gunzip-0.0.2 -- cql-io-tinylog-0.1.0 -- invertible-hxt-0.1 -- base58-bytestring-0.1.0 -- stompl-0.6.0 -- pattern-trie-0.1.1 -- markov-chain-usage-model-0.0.0 -- wai-predicates-1.0.0 -- redis-io-1.1.0 -- warp-3.3.17 - -# Not latest as last one breaks wai-routing -- wai-route-0.4.0 - -# Not updated on Stackage yet -- QuickCheck-2.14.2 -- splitmix-0.1.0.4 # needed for QuickCheck -- servant-mock-0.8.7 -- servant-swagger-ui-0.3.5.4.5.0 -- tls-1.5.5 -- cryptonite-0.29 - -# For changes from https://github.com/haskell-servant/servant/pull/1502 -# Not released to hackage yet -- git: https://github.com/haskell-servant/servant.git - commit: 75db4a5327d6d04ae2460bd5ffd008fe16197ba8 - subdirs: - - servant - - servant-server - - servant-client - - servant-client-core - -- HsOpenSSL-x509-system-0.1.0.4 -- cql-4.0.3 -- primitive-extras-0.10.1.1 -- text-format-0.3.2 -- hex-0.2.0 - - -# Not in the upstream snapshot and not using latest version on hackage due to -# breaking change -- quickcheck-state-machine-0.7.1 -- servant-multipart-0.12.1 - -# Dependencies on upstream source - -# Required for GHC 8.8, but not released to hackage yet -- git: https://github.com/dpwright/HaskellNet-SSL - commit: ca84ef29a93eaef7673fa58056cdd8dae1568d2d # master (Sep 14, 2020) - -# Fix for server sending too many empty data frames -- git: https://github.com/wireapp/http2 - commit: aa3501ad58e1abbd196781fac25a84f41ec2a787 # avoid-empty-data branch - -# Error handling fix: https://github.com/vincenthz/hs-certificate/pull/125 -- git: https://github.com/vincenthz/hs-certificate - commit: a899bda3d7666d25143be7be8f3105fc076703d9 # master (Sep 29, 2021) - subdirs: - - x509-store - -# Not on stackage yet -- polysemy-1.7.1.0 -- polysemy-plugin-0.4.2.0 -- polysemy-check-0.9.0.0 - -# polysemy-check has this upper bound -- kind-generics-0.4.1.0 - -# ad-hoc additions (on 2021-10-10) -- proto-lens-0.7.1.0 -- proto-lens-protoc-0.7.1.0 -- proto-lens-runtime-0.7.0.1 -- proto-lens-setup-0.4.0.5 -- tracing-0.0.7.2 -- zlib-0.6.3.0 -- timeout-0.1.1 - - -############################################################ -# Development tools -############################################################ - -- ormolu-0.1.4.1 -- ghc-lib-parser-8.10.1.20200412@sha256:b0517bb150a02957d7180f131f5b94abd2a7f58a7d1532a012e71618282339c2,8751 # for ormolu - -- headroom-0.4.2.0 -- implicit-hie-0.1.2.6 - -# For aeson >= 2 -- hoogle-5.0.18.3 diff --git a/stack.yaml.lock b/stack.yaml.lock deleted file mode 100644 index ae8292bdbd..0000000000 --- a/stack.yaml.lock +++ /dev/null @@ -1,929 +0,0 @@ -# This file was autogenerated by Stack. -# You should not edit this file by hand. -# For more information, please see the documentation at: -# https://docs.haskellstack.org/en/stable/lock_files - -packages: -- completed: - hackage: bytestring-arbitrary-0.1.3@sha256:14db64d4fe126fbad2eb8d3601bfd80a693f3131e2db0e76891feffe44f10df8,1773 - pantry-tree: - size: 347 - sha256: ea68c43da070afaddd1758f3180140f4cb844f559d4663246757b27a72200092 - original: - hackage: bytestring-arbitrary-0.1.3@sha256:14db64d4fe126fbad2eb8d3601bfd80a693f3131e2db0e76891feffe44f10df8,1773 -- completed: - subdir: wai-middleware-prometheus - name: wai-middleware-prometheus - version: 1.0.0 - git: https://github.com/fimad/prometheus-haskell - pantry-tree: - size: 359 - sha256: 72560f0d8c7f57db769e77d491e8b10255938631847981de52e94781b905a27a - commit: 2e3282e5fb27ba8d989c271a0a989823fad7ec43 - original: - subdir: wai-middleware-prometheus - git: https://github.com/fimad/prometheus-haskell - commit: 2e3282e5fb27ba8d989c271a0a989823fad7ec43 -- completed: - name: saml2-web-sso - version: '0.19' - git: https://github.com/wireapp/saml2-web-sso - pantry-tree: - size: 4887 - sha256: bb082762abbd48527788941f8555706eb5af6c03761834f255dada3e962d5f5e - commit: 74371cd775cb98d6cf85f6e182244a3c4fd48702 - original: - git: https://github.com/wireapp/saml2-web-sso - commit: 74371cd775cb98d6cf85f6e182244a3c4fd48702 -- completed: - name: collectd - version: 0.0.0.2 - git: https://github.com/kim/hs-collectd - pantry-tree: - size: 574 - sha256: 708fdfbd4ba09171072239e12fda5647adf60f99a70cd259685db74c6a25820f - commit: 885da222be2375f78c7be36127620ed772b677c9 - original: - git: https://github.com/kim/hs-collectd - commit: 885da222be2375f78c7be36127620ed772b677c9 -- completed: - name: wai-routing - version: 0.13.0 - git: https://gitlab.com/twittner/wai-routing - pantry-tree: - size: 1020 - sha256: a1aa6c9ff369ee27cfa9d95f20f7d4fa0f239ad80ed45fb6d45ed0c6543eac30 - commit: 7e996a93fec5901767f845a50316b3c18e51a61d - original: - git: https://gitlab.com/twittner/wai-routing - commit: 7e996a93fec5901767f845a50316b3c18e51a61d -- completed: - name: multihash - version: 0.1.6 - git: https://github.com/wireapp/haskell-multihash.git - pantry-tree: - size: 602 - sha256: 8ad8afc9e9bce4830304eff1e0c1c96fc878b1aad9c55896b4cfc256dba0688c - commit: 300a6f46384bfca33e545c8bab52ef3717452d12 - original: - git: https://github.com/wireapp/haskell-multihash.git - commit: 300a6f46384bfca33e545c8bab52ef3717452d12 -- completed: - name: hspec-wai - version: 0.9.2 - git: https://github.com/wireapp/hspec-wai - pantry-tree: - size: 1829 - sha256: 1da15bc431ded925782e30d299556f7c33ab89fa74e5a519061081616fb9f4d7 - commit: 0a5142cd3ba48116ff059c041348b817fb7bdb25 - original: - git: https://github.com/wireapp/hspec-wai - commit: 0a5142cd3ba48116ff059c041348b817fb7bdb25 -- completed: - name: bloodhound - version: 0.17.0.0 - git: https://github.com/wireapp/bloodhound - pantry-tree: - size: 4588 - sha256: 62c82df1cedc61da6e8203c247eb98ff950f9165c63462c1a32e773f4f69a506 - commit: c68e6d877d87988331bf391ed16780383a58eefa - original: - git: https://github.com/wireapp/bloodhound - commit: c68e6d877d87988331bf391ed16780383a58eefa -- completed: - hackage: aeson-2.0.3.0@sha256:130bda8e10dc6dd159b79b306abb10025d7f8b5d9cbc2f7d6d7e6768a0272058,5845 - pantry-tree: - size: 38191 - sha256: bccfc5a7259a27aad7e4193f367c3d7d67799f42632fdcb90241c1e9fbb0cf40 - original: - hackage: aeson-2.0.3.0 -- completed: - hackage: deriving-aeson-0.2.8@sha256:67bdea3463df1a3b9b38761d3ff4889817f08588d2dc4514c1f21e0ba6a8ad17,1291 - pantry-tree: - size: 441 - sha256: 973735207c29fbe7483966a07287343b3432a85b352da805a3585a456d47a4ac - original: - hackage: deriving-aeson-0.2.8 -- completed: - hackage: semialign-1.2.0.1@sha256:0e179b4d3a8eff79001d374d6c91917c6221696b9620f0a4d86852fc6a9b9501,2836 - pantry-tree: - size: 537 - sha256: 635bbbb517f0c063a4bc2e9e6efdb0e598b9d9fd467f52df81ab3a4af1fd923b - original: - hackage: semialign-1.2.0.1 -- completed: - hackage: OneTuple-0.3.1@sha256:a848c096c9d29e82ffdd30a9998aa2931cbccb3a1bc137539d80f6174d31603e,2262 - pantry-tree: - size: 506 - sha256: a685b08622f1fe0641e4f228a290878a1db4f7ef3eb63d00b10e8632097d1e6f - original: - hackage: OneTuple-0.3.1 -- completed: - hackage: hashable-1.4.0.2@sha256:0cddd0229d1aac305ea0404409c0bbfab81f075817bd74b8b2929eff58333e55,5005 - pantry-tree: - size: 1248 - sha256: 51dda0aa70849588d074125f324beba1c8736cfa486e7f4a90a798b1d0e6019d - original: - hackage: hashable-1.4.0.2 -- completed: - hackage: attoparsec-0.14.4@sha256:79584bdada8b730cb5138fca8c35c76fbef75fc1d1e01e6b1d815a5ee9843191,5810 - pantry-tree: - size: 5039 - sha256: 5b8e087f73d334019252606b1f64b986cef61946a085ccb77c6bc4d038691c48 - original: - hackage: attoparsec-0.14.4 -- completed: - hackage: text-short-0.1.5@sha256:962c6228555debdc46f758d0317dea16e5240d01419b42966674b08a5c3d8fa6,3498 - pantry-tree: - size: 727 - sha256: 1fc6561c4acb94a41e58cd8f8c7cce161c18c5629dac63a54a9c62f9c778c52b - original: - hackage: text-short-0.1.5 -- completed: - hackage: time-compat-1.9.6.1@sha256:42d8f2e08e965e1718917d54ad69e1d06bd4b87d66c41dc7410f59313dba4ed1,5033 - pantry-tree: - size: 4113 - sha256: b262c5ae8d72d2073d12e1de1863abd234fad8c138df28f32bb51bc232ced608 - original: - hackage: time-compat-1.9.6.1 -- completed: - hackage: lens-5.0.1@sha256:63ed57e4d54c583ae2873d6892ef690942d90030864d0b772413a1458e98159f,15544 - pantry-tree: - size: 8291 - sha256: cd3ee6c79afa15e4e8ffe0efd1c7c929c5999b1a84a9b9a18ef4e7897927a896 - original: - hackage: lens-5.0.1 -- completed: - hackage: quickcheck-instances-0.3.27@sha256:df1a5d65519fea31d2eaa38da3b6aa5d1c7edb2d2420808b3030f10c217c27ac,4710 - pantry-tree: - size: 2274 - sha256: da4d0e272b106167b2e2025758d566e0768c8c22a8ffcc365efcffba7ea8c758 - original: - hackage: quickcheck-instances-0.3.27 -- completed: - hackage: swagger2-2.8.2@sha256:eaa068e1b7d39179836c74c01dd07d4f4b8946b19af6ebb840317fa1042b02d6,4448 - pantry-tree: - size: 2192 - sha256: 2467e4b0dc0693cf6f4027a130de49a7f17b98e73713b8c96bf2256d6c6cac65 - original: - hackage: swagger2-2.8.2 -- completed: - hackage: optics-extra-0.4@sha256:397234d420519d810b23b861ff3a715b616cda7adea1c60d86e4d5d7791a4199,3488 - pantry-tree: - size: 1809 - sha256: a5d978fd23933b9ee045483a5f419f0afd0780520a13271cb412082324888a56 - original: - hackage: optics-extra-0.4 -- completed: - hackage: optics-core-0.4@sha256:59e04aebca536bd011ae50c781937f45af4c1456af1eb9fb578f9a69eee293cd,4995 - pantry-tree: - size: 5315 - sha256: 0b8b5824efec35faede5a4c5d7c6f47c6b4708885942f7a7f73c892a5c3c5738 - original: - hackage: optics-core-0.4 -- completed: - hackage: optics-th-0.4@sha256:8479f64f094346d31489221ad9742324fd6c5aed0722e58fc49f0a580ceb2a18,2045 - pantry-tree: - size: 741 - sha256: 26025e3641cc09e3c8abd9cdf8278710ed79ed09953c0b6047279624620c21b3 - original: - hackage: optics-th-0.4 -- completed: - hackage: http-api-data-0.4.3@sha256:f4134a06d6544193a4d088df362e132a6cb71a0538f5636bf860971cd0879960,3845 - pantry-tree: - size: 887 - sha256: 05c7bfafbf73d7d8eff5915b580e5ef6bf85232764fad871476a6952f746d9f9 - original: - hackage: http-api-data-0.4.3 -- completed: - hackage: shakespeare-2.0.25.1@sha256:af4f649fa5c3914b217f4d7f52dc46098891d38a6cf6a8ce71624d1997a82425,4836 - pantry-tree: - size: 3658 - sha256: a1754063865a1f39cd5336d916c30dc1432983f36d7a31df3a11a629c8572d6f - original: - hackage: shakespeare-2.0.25.1 -- completed: - hackage: servant-swagger-1.1.10@sha256:8cfb3fae40f00add2c4c3075568baf4774b6760a6823ef1bbc1cc7ac0fb528f4,4766 - pantry-tree: - size: 1636 - sha256: 3ba6a02d74bb530ec12afb863d0aa3cf68af28cfa4f134da903706746904264d - original: - hackage: servant-swagger-1.1.10 -- completed: - hackage: foldl-1.4.12@sha256:860dacd697f715023e21a94d5f46f5639f386530ce141f91348565ec6533f43d,2668 - pantry-tree: - size: 959 - sha256: 06c323172e93cd9b1f67eb8989cdb6e6d7b8d153a1749e8fad28ac25340d25ba - original: - hackage: foldl-1.4.12 -- completed: - hackage: stache-2.3.1@sha256:48a1637594feb3eab4e278192a7a029607db615e0bee8394a0cd52f54ebdb6ae,4385 - pantry-tree: - size: 2331 - sha256: b09e2069993cec19123fa71407c1b09abad172f0b00387ae1b9da427963cb86f - original: - hackage: stache-2.3.1 -- completed: - hackage: microlens-aeson-2.4.1@sha256:96c8b66150edee033b16ccdc471d7938593f462e4f6695e91982a6d5e26741c8,1583 - pantry-tree: - size: 575 - sha256: 8b31405f4bd5a6d9aa7a544dbed965467baffc957a493460c3c7a3f7ea154eea - original: - hackage: microlens-aeson-2.4.1 -- completed: - subdir: lib/amazonka - name: amazonka - version: '2.0' - git: https://github.com/wireapp/amazonka - pantry-tree: - size: 1257 - sha256: 0257a27c3332e400abc0f4a38f7a875c4a2a04b03ac342d7481e19d9d5665040 - commit: 7ced54b0396296307b9871d293cc0ac161e5743d - original: - subdir: lib/amazonka - git: https://github.com/wireapp/amazonka - commit: 7ced54b0396296307b9871d293cc0ac161e5743d -- completed: - subdir: lib/amazonka-core - name: amazonka-core - version: '2.0' - git: https://github.com/wireapp/amazonka - pantry-tree: - size: 3117 - sha256: 4d7f1929bb36acfd5c2e852afe8f7d6fa7124f3c5ac3e7e30265c3bda6eab8a9 - commit: 7ced54b0396296307b9871d293cc0ac161e5743d - original: - subdir: lib/amazonka-core - git: https://github.com/wireapp/amazonka - commit: 7ced54b0396296307b9871d293cc0ac161e5743d -- completed: - subdir: lib/services/amazonka-cloudfront - name: amazonka-cloudfront - version: '2.0' - git: https://github.com/wireapp/amazonka - pantry-tree: - size: 35830 - sha256: e823334938503329b08c904bb69cc745c855a6634e5152ff05d8cf04f384c9e9 - commit: 7ced54b0396296307b9871d293cc0ac161e5743d - original: - subdir: lib/services/amazonka-cloudfront - git: https://github.com/wireapp/amazonka - commit: 7ced54b0396296307b9871d293cc0ac161e5743d -- completed: - subdir: lib/services/amazonka-dynamodb - name: amazonka-dynamodb - version: '2.0' - git: https://github.com/wireapp/amazonka - pantry-tree: - size: 24222 - sha256: 35c575ca698414ba74f43ab3825c9bc386e30b4ee052acfe86d187ee92bfd16e - commit: 7ced54b0396296307b9871d293cc0ac161e5743d - original: - subdir: lib/services/amazonka-dynamodb - git: https://github.com/wireapp/amazonka - commit: 7ced54b0396296307b9871d293cc0ac161e5743d -- completed: - subdir: lib/services/amazonka-s3 - name: amazonka-s3 - version: '2.0' - git: https://github.com/wireapp/amazonka - pantry-tree: - size: 37929 - sha256: 57bc3c2aa426230e1f339fee5710eb43ace36d05c91113bd035b4de5aac26329 - commit: 7ced54b0396296307b9871d293cc0ac161e5743d - original: - subdir: lib/services/amazonka-s3 - git: https://github.com/wireapp/amazonka - commit: 7ced54b0396296307b9871d293cc0ac161e5743d -- completed: - subdir: lib/services/amazonka-ses - name: amazonka-ses - version: '2.0' - git: https://github.com/wireapp/amazonka - pantry-tree: - size: 22980 - sha256: b9345ff2c3c1a2c1fa8550314912a1f105e1275c9779d472121808cda3a95da9 - commit: 7ced54b0396296307b9871d293cc0ac161e5743d - original: - subdir: lib/services/amazonka-ses - git: https://github.com/wireapp/amazonka - commit: 7ced54b0396296307b9871d293cc0ac161e5743d -- completed: - subdir: lib/services/amazonka-sns - name: amazonka-sns - version: '2.0' - git: https://github.com/wireapp/amazonka - pantry-tree: - size: 10926 - sha256: 98e24892961bdee8bec5678f6e0840fd73be5f9092af19c50133be44afd4eaa9 - commit: 7ced54b0396296307b9871d293cc0ac161e5743d - original: - subdir: lib/services/amazonka-sns - git: https://github.com/wireapp/amazonka - commit: 7ced54b0396296307b9871d293cc0ac161e5743d -- completed: - subdir: lib/services/amazonka-sqs - name: amazonka-sqs - version: '2.0' - git: https://github.com/wireapp/amazonka - pantry-tree: - size: 6376 - sha256: 75cc731a0b471b03aa224677552944fb0c4ea1330bfc58504e0af5efdf8b330c - commit: 7ced54b0396296307b9871d293cc0ac161e5743d - original: - subdir: lib/services/amazonka-sqs - git: https://github.com/wireapp/amazonka - commit: 7ced54b0396296307b9871d293cc0ac161e5743d -- completed: - subdir: lib/services/amazonka-sso - name: amazonka-sso - version: '2.0' - git: https://github.com/wireapp/amazonka - pantry-tree: - size: 1869 - sha256: f11babeeaf0481ae68134ced86e9d1d9396d1beb7bd70e0a1e6b77bc4148a192 - commit: 7ced54b0396296307b9871d293cc0ac161e5743d - original: - subdir: lib/services/amazonka-sso - git: https://github.com/wireapp/amazonka - commit: 7ced54b0396296307b9871d293cc0ac161e5743d -- completed: - subdir: lib/services/amazonka-sts - name: amazonka-sts - version: '2.0' - git: https://github.com/wireapp/amazonka - pantry-tree: - size: 2932 - sha256: 64ed22eaaea868b32cf56f162d1bd7332b048d8f2ea073c4e9827ed08e71cc70 - commit: 7ced54b0396296307b9871d293cc0ac161e5743d - original: - subdir: lib/services/amazonka-sts - git: https://github.com/wireapp/amazonka - commit: 7ced54b0396296307b9871d293cc0ac161e5743d -- completed: - name: swagger - version: 0.3.0 - git: https://gitlab.com/axeman/swagger - pantry-tree: - size: 1010 - sha256: 88af56b825407fd96939d5e66198e5fda14de7323b15756ad66285affdd3a372 - commit: e2d3f5b5274b8d8d301b5377b0af4319cea73f9e - original: - git: https://gitlab.com/axeman/swagger - commit: e2d3f5b5274b8d8d301b5377b0af4319cea73f9e -- completed: - name: cql-io - version: 1.1.1 - git: https://gitlab.com/axeman/cql-io - pantry-tree: - size: 2172 - sha256: 4eead69907e2fc081d66b9d0ab4f73234f7636220c995147f499777dd14b9250 - commit: c2b6aa995b5817ed7c78c53f72d5aa586ef87c36 - original: - git: https://gitlab.com/axeman/cql-io - commit: c2b6aa995b5817ed7c78c53f72d5aa586ef87c36 -- completed: - name: cryptobox-haskell - version: 0.1.1 - git: https://github.com/wireapp/cryptobox-haskell - pantry-tree: - size: 279 - sha256: 2b1c19494263d1c6f88654b72ff4e0cc3b54a02cc81f8587899336e99c8a662f - commit: 7546a1a25635ef65183e3d44c1052285e8401608 - original: - git: https://github.com/wireapp/cryptobox-haskell - commit: 7546a1a25635ef65183e3d44c1052285e8401608 -- completed: - name: hsaml2 - version: 0.1.2 - git: https://github.com/wireapp/hsaml2 - pantry-tree: - size: 4096 - sha256: 901124eba0a145322767c6fa7b8c90314cc812fb9174aae8325802ec90695007 - commit: d43818aac56678f0be02d0101d224fe0f6cdf131 - original: - git: https://github.com/wireapp/hsaml2 - commit: d43818aac56678f0be02d0101d224fe0f6cdf131 -- completed: - subdir: http-client - name: http-client - version: 0.7.0 - git: https://github.com/wireapp/http-client - pantry-tree: - size: 3129 - sha256: 355d13d4b018ab32ad3ba1b88d8d183c4f673efb3a8109d3b0260776b2473ec0 - commit: 9100baeddbd15d93dc58a826ae812dafff29d5fd - original: - subdir: http-client - git: https://github.com/wireapp/http-client - commit: 9100baeddbd15d93dc58a826ae812dafff29d5fd -- completed: - subdir: http-client-openssl - name: http-client-openssl - version: 0.3.1.0 - git: https://github.com/wireapp/http-client - pantry-tree: - size: 387 - sha256: c9265105d25badaa471e8d3d0eb493ebcba3ce17b4d430d2db70b6a0a4f90821 - commit: 9100baeddbd15d93dc58a826ae812dafff29d5fd - original: - subdir: http-client-openssl - git: https://github.com/wireapp/http-client - commit: 9100baeddbd15d93dc58a826ae812dafff29d5fd -- completed: - subdir: http-client-tls - name: http-client-tls - version: 0.3.5.3 - git: https://github.com/wireapp/http-client - pantry-tree: - size: 435 - sha256: 13722b74ba7edde9163e5c194af168fc98c4dc419c37fd42fada45f5a89d2042 - commit: 9100baeddbd15d93dc58a826ae812dafff29d5fd - original: - subdir: http-client-tls - git: https://github.com/wireapp/http-client - commit: 9100baeddbd15d93dc58a826ae812dafff29d5fd -- completed: - subdir: http-conduit - name: http-conduit - version: 2.3.7.3 - git: https://github.com/wireapp/http-client - pantry-tree: - size: 1074 - sha256: ec54f41b6997eabc01aa5e65a584bf37a39efb57a9eaad8f1e8005137f32c625 - commit: 9100baeddbd15d93dc58a826ae812dafff29d5fd - original: - subdir: http-conduit - git: https://github.com/wireapp/http-client - commit: 9100baeddbd15d93dc58a826ae812dafff29d5fd -- completed: - hackage: template-0.2.0.10@sha256:f822de4d34c45bc84b33a61bc112c15fedee6fa6dc414c62b10456395a868f85,987 - pantry-tree: - size: 339 - sha256: e9829c39501915bc47fda35069207b7a839f9fb929b81946e151e0dda8a7fda1 - original: - hackage: template-0.2.0.10 -- completed: - hackage: HaskellNet-0.6@sha256:1b514b95acf1c56f39bebc27150c909988d0a6ad28a2db1210316cffed57cad7,2344 - pantry-tree: - size: 1689 - sha256: 22cc61632129d47407d3e28c5291f21b7cc9a5df69304395d75d5ae341f567d4 - original: - hackage: HaskellNet-0.6 -- completed: - hackage: smtp-mail-0.3.0.0@sha256:2e6d9cb29d09a5a04d77a905eb1b570b94b5654e24d40630ea96aa374474c12f,1239 - pantry-tree: - size: 450 - sha256: 4d319cb6c22b35ca043a83210cd09bfbf99eec3dca4945cd53ed5b7c96f7daca - original: - hackage: smtp-mail-0.3.0.0 -- completed: - hackage: stm-containers-1.2@sha256:a887f2e7692b7cf20e0b081e2d66e21076e2bd4b57016ec59c484edfa2d29397,3244 - pantry-tree: - size: 761 - sha256: 20b1076bdb121347ccc512a67df697eed34815a8e35279b6b9a0951963b1eba2 - original: - hackage: stm-containers-1.2 -- completed: - hackage: redis-resp-1.0.0@sha256:c134ac23e79d57071fdc8559e2b2e72280ea11786a8ba4118c10ed506dc7d991,1615 - pantry-tree: - size: 441 - sha256: c63020c2f2ca4f92c4747959a2e89e84bdd929d1ea1458c75552ee3f7aaa00fc - original: - hackage: redis-resp-1.0.0 -- completed: - hackage: stm-hamt-1.2.0.6@sha256:fba86ccb4b45c5706c19b0e1315ba63dcac3b5d71de945ec001ba921fae80061,3972 - pantry-tree: - size: 1009 - sha256: 1920790535af832b76e7583c33ecf51f8b0b0c3615ef1db1c8ed9be19622c1db - original: - hackage: stm-hamt-1.2.0.6 -- completed: - hackage: primitive-unlifted-1.0.0.0@sha256:16c3f149cf2fb3da64a43ffd0020d78a198454baded3a7f7f49a59397eea5770,2293 - pantry-tree: - size: 1719 - sha256: 0ca7abed459d0240ee880bc52d957e35ca01017313ea94b5d026fc1842aba93c - original: - hackage: primitive-unlifted-1.0.0.0 -- completed: - hackage: prometheus-2.2.2@sha256:d794f5fe975be2f3ca7d7af71a7aeeb006615ad7d98835fa42caba9457a51936,4288 - pantry-tree: - size: 1559 - sha256: 3b1cb27cf8cb0a8da83b5730e85132e058e808f8dd1be349ea3dbb162c7f14c3 - original: - hackage: prometheus-2.2.2 -- completed: - hackage: currency-codes-3.0.0.1@sha256:a4b24669dd91e805b11d9eb267becd0ba6d726927e535e03d5f3f368f44c1cf4,2902 - pantry-tree: - size: 548 - sha256: 9802924b7472c67d93312eedbbb49ab250b9651101b27668133b9f5d15dbca78 - original: - hackage: currency-codes-3.0.0.1 -- completed: - hackage: mime-0.4.0.2@sha256:208947d9d1a19d08850be67ecb28c6e776db697f3bba05bd9d682e51a59f241f,983 - pantry-tree: - size: 565 - sha256: f2529a2e1678074ca0340ff60caa986f4e246d7d9abe8186657910c2900364bb - original: - hackage: mime-0.4.0.2 -- completed: - hackage: data-timeout-0.3.1@sha256:80830a56fcb562b06ede4203de3a80a17d359c40311624f9e4f72b425a5294db,1313 - pantry-tree: - size: 416 - sha256: d073a04c7c660d564e0f52baa0aad68006e992050f358f18fab6c6d9c2859d2f - original: - hackage: data-timeout-0.3.1 -- completed: - hackage: geoip2-0.4.1.0@sha256:f8b69ea86198817141edab06cd10b2dcf23a906ea9f0ba2ce52045c7fea2e5c5,1316 - pantry-tree: - size: 433 - sha256: 13b2f1557f8915c71902f576ccc1b42491f4fc38baef080a5b753df5e81b4766 - original: - hackage: geoip2-0.4.1.0 -- completed: - hackage: stomp-queue-0.5.1@sha256:47c47d21dc756c028c8253b51cf647d4fa0282777dda2265edde2f65284f9d14,2321 - pantry-tree: - size: 608 - sha256: 2996c49e280fd1bf4111ffb8788d5729c48d663648e1dd6734c83ee20681c531 - original: - hackage: stomp-queue-0.5.1 -- completed: - hackage: text-icu-translit-0.1.0.7@sha256:c8eaaee3331417a250365474067b7cb0f196ebabd04b3fe834c4e2b5a212b5ce,1723 - pantry-tree: - size: 542 - sha256: 74233c36098c69ffdeac6fdf578ddf77c6308f6dda900b8c038a3b652768f253 - original: - hackage: text-icu-translit-0.1.0.7 -- completed: - hackage: wai-middleware-gunzip-0.0.2@sha256:03ad25dd0faf55e20087e7d8456e60188d1b8fe5d6572b73f31cbab8157f57bb,1211 - pantry-tree: - size: 298 - sha256: 9ca3f095e65532b408abde50bbb6c6aa5cb58de9c7918ba775fc7873521a790b - original: - hackage: wai-middleware-gunzip-0.0.2 -- completed: - hackage: cql-io-tinylog-0.1.0@sha256:8a5abaa6ca0dbf061cc092d5c04a473d5c3d0aa3905f2f10fecb478962d4c11b,663 - pantry-tree: - size: 232 - sha256: c6d7b32126a059dec2b56f529a6ff1f493c3f887e1555793486568399b813e49 - original: - hackage: cql-io-tinylog-0.1.0 -- completed: - hackage: invertible-hxt-0.1@sha256:8495092e94f6a7eebbdf980a8ccd3684f2078b02b2faf4b4822b1202ee42dae9,865 - pantry-tree: - size: 195 - sha256: da65a22968a2fecc17f42e66f1f3d0d2f341e4af50bf496c6c0fe84c0907f756 - original: - hackage: invertible-hxt-0.1 -- completed: - hackage: base58-bytestring-0.1.0@sha256:a1da72ee89d5450bac1c792d9fcbe95ed7154ab7246f2172b57bd4fd9b5eab79,1913 - pantry-tree: - size: 419 - sha256: 053784f8edef6433518c873a7c502dc75348f812e2384e1306f90467ea54f40b - original: - hackage: base58-bytestring-0.1.0 -- completed: - hackage: stompl-0.6.0@sha256:fd7b39a754926102d3f9917213f646d5cd765ebcf23e70daf9eb99e44e441cef,1896 - pantry-tree: - size: 357 - sha256: 0bc21f1930468f6b75cab74ab6d4ff95bc1eedcda5c33c336d2599452eb45ace - original: - hackage: stompl-0.6.0 -- completed: - hackage: pattern-trie-0.1.1@sha256:265ecc98c4345a89f2711b9b00e4f52ed7c143ea20f10b76ca6ddc3066658143,2236 - pantry-tree: - size: 751 - sha256: dc1264e417abc23b25fc0b3b486880c0510a805cc0a19d2208f13d0ec8a0102d - original: - hackage: pattern-trie-0.1.1 -- completed: - hackage: markov-chain-usage-model-0.0.0@sha256:1afa95faeb9213c4d960a669190078b41b89169462b8edd910472980671ba8c0,2112 - pantry-tree: - size: 432 - sha256: 6871bd9281acf589296d0998a3d62892b036040ab10e74e8a0f356f68c194f4f - original: - hackage: markov-chain-usage-model-0.0.0 -- completed: - hackage: wai-predicates-1.0.0@sha256:46ec4b4afcecac28810e6a13613fedc0c995419cb7c5e18d3dd62eed258b434f,2848 - pantry-tree: - size: 1378 - sha256: 58c340a179ad44850ace6f5d7d14df2f2e8cc7fd95f8a83b1c0c19e8b777760b - original: - hackage: wai-predicates-1.0.0 -- completed: - hackage: redis-io-1.1.0@sha256:16ff8142557658df2c8ad569a1108042bab4cc4aec73fbc9dfd910477222c2e8,2732 - pantry-tree: - size: 809 - sha256: db61f70aa7387090c26ccca0545ffdeea0adfcf93b76d5eaf6a954c0e5a34064 - original: - hackage: redis-io-1.1.0 -- completed: - hackage: warp-3.3.17@sha256:3a3ea203141d00d2244b511ee99174b8ed58fc862552755d470a25a44ce5275b,10910 - pantry-tree: - size: 3973 - sha256: 49b90267427705454477f4d2fa5755d0006826ede89e931cd84b4a0a658bd525 - original: - hackage: warp-3.3.17 -- completed: - hackage: wai-route-0.4.0@sha256:ee52f13d2945e4a56147e91e515e184f840654f2e3d9071c73bec3d8aa1f4444,2119 - pantry-tree: - size: 566 - sha256: d98288879d370d53e741f0dafaad96de2a58f84556ce4a835322d4029e529b9d - original: - hackage: wai-route-0.4.0 -- completed: - hackage: QuickCheck-2.14.2@sha256:4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa,7736 - pantry-tree: - size: 2315 - sha256: 2fe423d0ed7cd64f0f165d708779f48814e66c4f181c568468134af55d86a5f8 - original: - hackage: QuickCheck-2.14.2 -- completed: - hackage: splitmix-0.1.0.4@sha256:714a55fd28d3e2533bd5b49e74f604ef8e5d7b06f249c8816f6c54aed431dcf1,6483 - pantry-tree: - size: 1519 - sha256: 79f4645c11b7a3861db0b596297f72804f509444d639a8fd7c0162b1ed80c578 - original: - hackage: splitmix-0.1.0.4 -- completed: - hackage: servant-mock-0.8.7@sha256:64cb3e52bbd51ab6cb25e3f412a99ea712c6c26f1efd117f01a8d1664df49c67,2306 - pantry-tree: - size: 555 - sha256: b263e932ec6b151e52987054ec0a4cd692fa787f856c79e51498302eb0d6c388 - original: - hackage: servant-mock-0.8.7 -- completed: - hackage: servant-swagger-ui-0.3.5.3.52.5@sha256:4734c536b8b0c48993c337e880a5bd65ed521271937ce9da5feac360dea661ba,1746 - pantry-tree: - size: 878 - sha256: 822d19afe0e75bbc8bd2b685dc2cb4fd7d5972ed1e7b61546ce3e61cf77b8808 - original: - hackage: servant-swagger-ui-0.3.5.3.52.5 -- completed: - hackage: tls-1.5.5@sha256:f6681d6624071211edd509a8f56e0c96b4f003bb349b7dc706d4333775a373c5,6996 - pantry-tree: - size: 4897 - sha256: 6400901a8f8ddd0c7d2fb30c95857753a654a60a63fcec38aab4a08b23e0984f - original: - hackage: tls-1.5.5 -- completed: - hackage: cryptonite-0.29@sha256:147724f6a8e4394fcbd51bf52aba7a8b92d3fc8f42055cd6ca9486655e2ab614,18312 - pantry-tree: - size: 23323 - sha256: 087de3ed0552cfb1f84d03629b0f98c77aadc076b85bb5cb787f77c5e5dac136 - original: - hackage: cryptonite-0.29 -- completed: - subdir: servant - name: servant - version: 0.18.3 - git: https://github.com/haskell-servant/servant.git - pantry-tree: - size: 2949 - sha256: 091d8a742ea95490b787f497bfa26eaed46733945721396158f571aea7ed6dca - commit: 75db4a5327d6d04ae2460bd5ffd008fe16197ba8 - original: - subdir: servant - git: https://github.com/haskell-servant/servant.git - commit: 75db4a5327d6d04ae2460bd5ffd008fe16197ba8 -- completed: - subdir: servant-server - name: servant-server - version: 0.18.3 - git: https://github.com/haskell-servant/servant.git - pantry-tree: - size: 2727 - sha256: 43d23c42011f5c3ff3f298b1910d7f2b43a66144e92e2e762b0efffe63634af4 - commit: 75db4a5327d6d04ae2460bd5ffd008fe16197ba8 - original: - subdir: servant-server - git: https://github.com/haskell-servant/servant.git - commit: 75db4a5327d6d04ae2460bd5ffd008fe16197ba8 -- completed: - subdir: servant-client - name: servant-client - version: 0.18.3 - git: https://github.com/haskell-servant/servant.git - pantry-tree: - size: 1481 - sha256: 86025a0c5ae0b0da07db48eed1456011ba7c0093f2dbc04b1ef3fe99e1cc0567 - commit: 75db4a5327d6d04ae2460bd5ffd008fe16197ba8 - original: - subdir: servant-client - git: https://github.com/haskell-servant/servant.git - commit: 75db4a5327d6d04ae2460bd5ffd008fe16197ba8 -- completed: - subdir: servant-client-core - name: servant-client-core - version: 0.18.3 - git: https://github.com/haskell-servant/servant.git - pantry-tree: - size: 1445 - sha256: 528c07a5fe7d7482636b9e11bbb54d92930a7db3d9635f920f250fed51a8a2fd - commit: 75db4a5327d6d04ae2460bd5ffd008fe16197ba8 - original: - subdir: servant-client-core - git: https://github.com/haskell-servant/servant.git - commit: 75db4a5327d6d04ae2460bd5ffd008fe16197ba8 -- completed: - hackage: HsOpenSSL-x509-system-0.1.0.4@sha256:86be72558de4cee8f4e32f9cb8b63610d7624219910cfc205a23326078658676,1777 - pantry-tree: - size: 508 - sha256: 98f6b47d27550f29a90a8f5660cf09f72f139d9940fe00cd6b0cffbd5c210a15 - original: - hackage: HsOpenSSL-x509-system-0.1.0.4 -- completed: - hackage: cql-4.0.3@sha256:10d6b09715699efec5c97f22887aaf65c8fa0b0916c926ef79bc21f4db460175,3157 - pantry-tree: - size: 1281 - sha256: 94433b7c7c46bea532fdc64c6988643a48e39b643948003b27e5bde1bdad3b24 - original: - hackage: cql-4.0.3 -- completed: - hackage: primitive-extras-0.10.1.1@sha256:47c4d211166bc31ebdb053f610e4b5387c01d00bde81840e59438469cef6c94e,2955 - pantry-tree: - size: 1096 - sha256: 55ee00adb4e2e6beedfb997b071b60014b28ce0b25fb946b1f4abfae9a5e01d1 - original: - hackage: primitive-extras-0.10.1.1 -- completed: - hackage: text-format-0.3.2@sha256:2a3fc17cf87120fcfdbca62a0da59759755549285841cdc1483081c35fb3d115,1814 - pantry-tree: - size: 1029 - sha256: 2db26ddb77184186e0d5b2b020bdfbeb044c168024767b1fa3691682ca618896 - original: - hackage: text-format-0.3.2 -- completed: - hackage: hex-0.2.0@sha256:197d2561d2e216c4ead035b4911dabc6e678ac6257cb71b64e324c822f6f9f5a,726 - pantry-tree: - size: 197 - sha256: 1e5aba0165fb8ffa93d1516a87026a59c245750ca5f2ed42bd53b8328620f98e - original: - hackage: hex-0.2.0 -- completed: - hackage: quickcheck-state-machine-0.7.1@sha256:575f16ece44b20f204730b7b5d77a1ed91b33f4a961a4e70932fc8d602082b10,6153 - pantry-tree: - size: 3022 - sha256: edb32e2c7ac3be15e0d110b762990192d993326779f440984e56de0be5e0f714 - original: - hackage: quickcheck-state-machine-0.7.1 -- completed: - hackage: servant-multipart-0.12.1@sha256:4b6a8c3f73d645e212f2a7a476f30a2ab7ed191945a3ff62154ab99d76dea7f0,1951 - pantry-tree: - size: 332 - sha256: 80f6033a74da5d7c6aded81c428d740a0bf6bfd49e13ce8cde68158abd5ff49f - original: - hackage: servant-multipart-0.12.1 -- completed: - name: HaskellNet-SSL - version: 0.3.4.2 - git: https://github.com/dpwright/HaskellNet-SSL - pantry-tree: - size: 786 - sha256: c6a64c9e64bc834842756be28eaac2d842f0dde3753542bfa0cfd87ae5cf0bc5 - commit: ca84ef29a93eaef7673fa58056cdd8dae1568d2d - original: - git: https://github.com/dpwright/HaskellNet-SSL - commit: ca84ef29a93eaef7673fa58056cdd8dae1568d2d -- completed: - name: http2 - version: 3.0.2 - git: https://github.com/wireapp/http2 - pantry-tree: - size: 52771 - sha256: 71040c20c8e6a766b6b309c03dbc970062b15e450a63e05f8d095a87cdb5082f - commit: aa3501ad58e1abbd196781fac25a84f41ec2a787 - original: - git: https://github.com/wireapp/http2 - commit: aa3501ad58e1abbd196781fac25a84f41ec2a787 -- completed: - subdir: x509-store - name: x509-store - version: 1.6.7 - git: https://github.com/vincenthz/hs-certificate - pantry-tree: - size: 398 - sha256: bf71c28417dcf76a8aef361fbc74abe78962c80e7e996a2515996fd44b2f6ba6 - commit: a899bda3d7666d25143be7be8f3105fc076703d9 - original: - subdir: x509-store - git: https://github.com/vincenthz/hs-certificate - commit: a899bda3d7666d25143be7be8f3105fc076703d9 -- completed: - hackage: polysemy-1.7.1.0@sha256:3ead7a332abd70b202920ed3bf2e36866de163f821e643adfdcc9d39867b8033,5977 - pantry-tree: - size: 4577 - sha256: 22f540602a4d5565d4d90bc6084eb4e578f1ed934917a4efd6b01f5b90f49fea - original: - hackage: polysemy-1.7.1.0 -- completed: - hackage: polysemy-plugin-0.4.2.0@sha256:1dbcb892bb866926994dadafeb93e76ae4a6625dc3ae9ca0f4f419ee85cb2f7b,3154 - pantry-tree: - size: 1229 - sha256: ee75425b00b0f1c80207c3c4d5df86a94d892de229b75fb23e0380ec2526a626 - original: - hackage: polysemy-plugin-0.4.2.0 -- completed: - hackage: polysemy-check-0.9.0.0@sha256:f28c23c5cbae246a049d11e06c51ee85212a2b13a069e93598cf8cdd13ad5a18,2665 - pantry-tree: - size: 1086 - sha256: a473605eda27f36717e3f0cbd66651563789107daa9b8d9db59b80cc07ff60d1 - original: - hackage: polysemy-check-0.9.0.0 -- completed: - hackage: kind-generics-0.4.1.0@sha256:15e50867349de627c401af29f56b204dfb2ad2b12e83417132ffca3d5cd02462,1061 - pantry-tree: - size: 390 - sha256: 497a73c5243cd787c06b7b66258fccf6299e6a853fa44f050f72f0bf1967715f - original: - hackage: kind-generics-0.4.1.0 -- completed: - hackage: proto-lens-0.7.1.0@sha256:b151890929e71db5b8c2ad86cd758bcdf1dfcf25f34eb6c9ce19e3d7cd4eae39,2959 - pantry-tree: - size: 1857 - sha256: 2f1199d04d0588805e06faa0bf9a75898584d76243d4f945acbcc0e93913732e - original: - hackage: proto-lens-0.7.1.0 -- completed: - hackage: proto-lens-protoc-0.7.1.0@sha256:b0b92498af74fc4bb770d51f84405d591e73c085a0c1d9952dd3e14ce07b538f,2220 - pantry-tree: - size: 1219 - sha256: 1aaa82cb2823b33c9ea96608cc7ec245e54a0d14de8f18736be03220d8dbe683 - original: - hackage: proto-lens-protoc-0.7.1.0 -- completed: - hackage: proto-lens-runtime-0.7.0.1@sha256:703f327422b2e204f8ea13c5e178edd8ab42ccd01c7a5a89fcb1b37ab474c68a,3038 - pantry-tree: - size: 168 - sha256: 145cb9a15b73d45b07cb3f9f0716256b2ed9e27ac296268ce100a4f0e477e110 - original: - hackage: proto-lens-runtime-0.7.0.1 -- completed: - hackage: proto-lens-setup-0.4.0.5@sha256:ae4514963a6c20ad059bba427cd14b94c6007f614d797ebecae3c37f8bf0fa96,3108 - pantry-tree: - size: 235 - sha256: 14982fbc9ee0c6f9f9a59c2639b647613eb9c2cfa1d5b1b323077a15ae285ccf - original: - hackage: proto-lens-setup-0.4.0.5 -- completed: - hackage: tracing-0.0.7.2@sha256:25a531be1ffe4054085f2855fd5132be54aa2e6b31a730b26e2cb01bd96b22ea,1438 - pantry-tree: - size: 672 - sha256: b3059324bf8fea08874dd4f5518105f3edd6e469104242e652698f488a5227d5 - original: - hackage: tracing-0.0.7.2 -- completed: - hackage: zlib-0.6.3.0@sha256:8214a9d37580f17f8b675109578a5dbe6853559eef156e34dc2233f1123ace33,5216 - pantry-tree: - size: 2622 - sha256: 87b7fd16379d679eb01d9fae78b4db97356d301fce4a040ba9e690d16eeb98b2 - original: - hackage: zlib-0.6.3.0 -- completed: - hackage: timeout-0.1.1@sha256:56c1d3321d7139d1f7ebf04d46c95d3a3f1c8c9e0f15666ae3ccd6bae6204b6e,1427 - pantry-tree: - size: 437 - sha256: e571503d7e609c3fe496de7e858613360bfa6c06e20ac57d9659bd32d0645889 - original: - hackage: timeout-0.1.1 -- completed: - hackage: ormolu-0.1.4.1@sha256:ed404eac6e4eb64da1ca5fb749e0f99907431a9633e6ba34e44d260e7d7728ba,6499 - pantry-tree: - size: 74141 - sha256: 86dffe835089c8029e99046a75e7350fae8b80266a352a7295f13a279a8e5363 - original: - hackage: ormolu-0.1.4.1 -- completed: - hackage: ghc-lib-parser-8.10.1.20200412@sha256:b0517bb150a02957d7180f131f5b94abd2a7f58a7d1532a012e71618282339c2,8751 - pantry-tree: - size: 19497 - sha256: b11275740480138dd1fce4a22a2aa8835cddfecaa8da58a153f130b4575f9df5 - original: - hackage: ghc-lib-parser-8.10.1.20200412@sha256:b0517bb150a02957d7180f131f5b94abd2a7f58a7d1532a012e71618282339c2,8751 -- completed: - hackage: headroom-0.4.2.0@sha256:ebaf701628054472de745fa57b33ddf1021b99a8e4de5f5b96f21fb296b27652,10873 - pantry-tree: - size: 15450 - sha256: cd772daa4d3ea56ca28764afd60186363bd92cbf69c0ba3c0a9c064507e79ecc - original: - hackage: headroom-0.4.2.0 -- completed: - hackage: implicit-hie-0.1.2.6@sha256:f50a908979a574a881f753c0f9a5224f023f438b30fdefc5b7fa01803b07a280,2998 - pantry-tree: - size: 844 - sha256: 87e1a41e292526d86b55668bca628cf917056d82001438dc6975e4f35cf5210d - original: - hackage: implicit-hie-0.1.2.6 -- completed: - hackage: hoogle-5.0.18.3@sha256:91b0b724d283de28b5b7ba670ebb61867538a06aa1562982517c82660710bd2a,3173 - pantry-tree: - size: 3414 - sha256: c8eeaa1c1744fd293f1d8497e2f4bfdb09e38d4fdae8d7132c477d4a5d5e2679 - original: - hackage: hoogle-5.0.18.3 -snapshots: -- completed: - size: 586296 - url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/18/18.yaml - sha256: 63539429076b7ebbab6daa7656cfb079393bf644971156dc349d7c0453694ac2 - original: lts-18.18 diff --git a/tools/api-simulations/default.nix b/tools/api-simulations/default.nix new file mode 100644 index 0000000000..f0e6856898 --- /dev/null +++ b/tools/api-simulations/default.nix @@ -0,0 +1,29 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, api-bot, api-client, base, bytestring +, bytestring-conversion, cereal, containers, exceptions, extended +, gitignoreSource, http-client, http-client-tls, imports, lens, lib +, metrics-core, mime, mwc-random, optparse-applicative, text +, tinylog, types-common, unliftio, uuid +}: +mkDerivation { + pname = "api-simulations"; + version = "0.4.2"; + src = gitignoreSource ./.; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + api-bot api-client base bytestring bytestring-conversion cereal + containers exceptions imports lens text types-common + ]; + executableHaskellDepends = [ + api-bot api-client base bytestring bytestring-conversion containers + exceptions extended http-client http-client-tls imports lens + metrics-core mime mwc-random optparse-applicative text tinylog + types-common unliftio uuid + ]; + description = "(Internal) Wire API simulations"; + license = lib.licenses.agpl3Only; +} diff --git a/tools/convert-to-cabal/README.md b/tools/convert-to-cabal/README.md deleted file mode 100644 index 1514458cb0..0000000000 --- a/tools/convert-to-cabal/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# How to convert the project to cabal - -Run - -```bash -./tools/convert-to-cabal/generate.sh -``` - -This will generate these files -- `cabal.project.freeze` -- `cabal.project` - - Note: cabal v2-repl (which is run by hie-bios (HLS)) seem to be ignoring "optimization" flag for local dependencies, this is why we need to specify `ghc-options` explicitely. diff --git a/tools/convert-to-cabal/generate.sh b/tools/convert-to-cabal/generate.sh deleted file mode 100755 index f175b2481f..0000000000 --- a/tools/convert-to-cabal/generate.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -TOP_LEVEL="$( cd "$( dirname "${BASH_SOURCE[0]}" )/../.." && pwd )" - -cd "$TOP_LEVEL" - -nix-shell ./tools/convert-to-cabal/shell.nix --command "stack2cabal --no-run-hpack" - -{ - echo -e "\n-- Changes by ./tools/convert-to-cabal/generate.sh\n\ntests: True\nbenchmarks: True\n"; - ./hack/bin/cabal-project-local-template.sh "ghc-options: -Werror" -} >> ./cabal.project diff --git a/tools/convert-to-cabal/shell.nix b/tools/convert-to-cabal/shell.nix deleted file mode 100644 index 6e33fa4aa3..0000000000 --- a/tools/convert-to-cabal/shell.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ pkgs ? (import ../../nix).pkgs }: -let - pinned = { - stack2cabal = - let source = pkgs.fetchFromGitHub { - owner = "hasufell"; - repo = "stack2cabal"; - rev = "afa113beb77569ff21f03fade6ce39edc109598d"; - sha256 = "1zwg1xkqxn5b9mmqafg87rmgln47zsmpgdkly165xdzg38smhmng"; - }; - - overlay = self: super: { - "stack2cabal" = super.callCabal2nix "stack2cabal" source { }; - }; - - haskellPackages = pkgs.haskell.packages.ghc8107.override { - overrides = overlay; - }; - - in pkgs.haskell.lib.doJailbreak haskellPackages.stack2cabal; - - }; -in pkgs.mkShell { - name = "shell"; - buildInputs = [ - pinned.stack2cabal - ]; -} diff --git a/tools/db/assets/default.nix b/tools/db/assets/default.nix new file mode 100644 index 0000000000..56dc211e06 --- /dev/null +++ b/tools/db/assets/default.nix @@ -0,0 +1,29 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, attoparsec, base, brig, brig-types +, bytestring, bytestring-conversion, cassandra-util, conduit +, containers, filepath, galley, gitignoreSource, imports, iproute +, lens, lib, megaparsec, optparse-applicative, process +, raw-strings-qq, stache, text, time, tinylog, types-common, uuid +, vector, wire-api +}: +mkDerivation { + pname = "assets"; + version = "1.0.0"; + src = gitignoreSource ./.; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + aeson attoparsec base brig brig-types bytestring + bytestring-conversion cassandra-util conduit containers filepath + galley imports iproute lens megaparsec optparse-applicative process + raw-strings-qq stache text time tinylog types-common uuid vector + wire-api + ]; + executableHaskellDepends = [ base ]; + description = "Scan the brig user table, search for malformatted asset keys and print them"; + license = lib.licenses.agpl3Only; + mainProgram = "assets"; +} diff --git a/tools/db/auto-whitelist/default.nix b/tools/db/auto-whitelist/default.nix new file mode 100644 index 0000000000..c1fa285838 --- /dev/null +++ b/tools/db/auto-whitelist/default.nix @@ -0,0 +1,22 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, base, cassandra-util, extra, gitignoreSource +, imports, lens, lib, optparse-applicative, tinylog, types-common +, unliftio, wire-api +}: +mkDerivation { + pname = "auto-whitelist"; + version = "1.0.0"; + src = gitignoreSource ./.; + isLibrary = false; + isExecutable = true; + executableHaskellDepends = [ + base cassandra-util extra imports lens optparse-applicative tinylog + types-common unliftio wire-api + ]; + description = "Backfill service tables"; + license = lib.licenses.agpl3Only; + mainProgram = "auto-whitelist"; +} diff --git a/tools/db/billing-team-member-backfill/default.nix b/tools/db/billing-team-member-backfill/default.nix new file mode 100644 index 0000000000..4c298b9a95 --- /dev/null +++ b/tools/db/billing-team-member-backfill/default.nix @@ -0,0 +1,22 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, base, cassandra-util, conduit, containers +, gitignoreSource, imports, lens, lib, optparse-applicative, text +, tinylog, types-common, wire-api +}: +mkDerivation { + pname = "billing-team-member-backfill"; + version = "1.0.0"; + src = gitignoreSource ./.; + isLibrary = false; + isExecutable = true; + executableHaskellDepends = [ + base cassandra-util conduit containers imports lens + optparse-applicative text tinylog types-common wire-api + ]; + description = "Backfill billing_team_member table"; + license = lib.licenses.agpl3Only; + mainProgram = "billing-team-member-backfill"; +} diff --git a/tools/db/find-undead/default.nix b/tools/db/find-undead/default.nix new file mode 100644 index 0000000000..a058990e4d --- /dev/null +++ b/tools/db/find-undead/default.nix @@ -0,0 +1,22 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, base, bloodhound, brig-types, cassandra-util +, conduit, containers, gitignoreSource, http-client, imports, lens +, lib, optparse-applicative, text, tinylog, uuid +}: +mkDerivation { + pname = "find-undead"; + version = "1.0.0"; + src = gitignoreSource ./.; + isLibrary = false; + isExecutable = true; + executableHaskellDepends = [ + aeson base bloodhound brig-types cassandra-util conduit containers + http-client imports lens optparse-applicative text tinylog uuid + ]; + description = "Backfill billing_team_member table"; + license = lib.licenses.agpl3Only; + mainProgram = "find-undead"; +} diff --git a/tools/db/migrate-sso-feature-flag/default.nix b/tools/db/migrate-sso-feature-flag/default.nix new file mode 100644 index 0000000000..8bc035482e --- /dev/null +++ b/tools/db/migrate-sso-feature-flag/default.nix @@ -0,0 +1,22 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, base, brig-types, cassandra-util, conduit, galley +, gitignoreSource, imports, lens, lib, optparse-applicative +, tinylog, types-common, unliftio, wire-api +}: +mkDerivation { + pname = "migrate-sso-feature-flag"; + version = "1.0.0"; + src = gitignoreSource ./.; + isLibrary = false; + isExecutable = true; + executableHaskellDepends = [ + base brig-types cassandra-util conduit galley imports lens + optparse-applicative tinylog types-common unliftio wire-api + ]; + description = "Backfill sso feature flag into teams that already have an IdP"; + license = lib.licenses.agpl3Only; + mainProgram = "migrate-sso-feature-flag"; +} diff --git a/tools/db/move-team/default.nix b/tools/db/move-team/default.nix new file mode 100644 index 0000000000..61ac6561f0 --- /dev/null +++ b/tools/db/move-team/default.nix @@ -0,0 +1,31 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, base, brig-types, bytestring, cassandra-util +, conduit, containers, filepath, galley, gitignoreSource, imports +, iproute, lens, lib, megaparsec, optparse-applicative, process +, raw-strings-qq, stache, text, time, tinylog, types-common, uuid +, vector, wire-api +}: +mkDerivation { + pname = "move-team"; + version = "1.0.0"; + src = gitignoreSource ./.; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + aeson base brig-types bytestring cassandra-util conduit containers + filepath galley imports iproute lens megaparsec + optparse-applicative process raw-strings-qq stache text time + tinylog types-common uuid vector wire-api + ]; + executableHaskellDepends = [ + aeson base brig-types bytestring cassandra-util conduit containers + filepath galley imports iproute lens megaparsec + optparse-applicative process raw-strings-qq stache text time + tinylog types-common uuid vector wire-api + ]; + description = "Export a team from one backend, or import it into another"; + license = lib.licenses.agpl3Only; +} diff --git a/tools/db/repair-handles/default.nix b/tools/db/repair-handles/default.nix new file mode 100644 index 0000000000..5c89be4ad9 --- /dev/null +++ b/tools/db/repair-handles/default.nix @@ -0,0 +1,23 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, base, brig, cassandra-util, conduit, containers +, gitignoreSource, imports, lens, lib, mtl, optparse-applicative +, string-conversions, text, tinylog, types-common, uuid +}: +mkDerivation { + pname = "repair-handles"; + version = "1.0.0"; + src = gitignoreSource ./.; + isLibrary = false; + isExecutable = true; + executableHaskellDepends = [ + base brig cassandra-util conduit containers imports lens mtl + optparse-applicative string-conversions text tinylog types-common + uuid + ]; + description = "Repair inconsistencies between tables user and user_handle"; + license = lib.licenses.agpl3Only; + mainProgram = "repair-handles"; +} diff --git a/tools/db/service-backfill/default.nix b/tools/db/service-backfill/default.nix new file mode 100644 index 0000000000..44a13363d2 --- /dev/null +++ b/tools/db/service-backfill/default.nix @@ -0,0 +1,22 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, base, cassandra-util, conduit, gitignoreSource +, imports, lens, lib, optparse-applicative, tinylog, types-common +, unliftio, wire-api +}: +mkDerivation { + pname = "service-backfill"; + version = "1.0.0"; + src = gitignoreSource ./.; + isLibrary = false; + isExecutable = true; + executableHaskellDepends = [ + base cassandra-util conduit imports lens optparse-applicative + tinylog types-common unliftio wire-api + ]; + description = "Backfill service tables"; + license = lib.licenses.agpl3Only; + mainProgram = "service-backfill"; +} diff --git a/tools/rex/default.nix b/tools/rex/default.nix new file mode 100644 index 0000000000..240f1220f1 --- /dev/null +++ b/tools/rex/default.nix @@ -0,0 +1,24 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, async, attoparsec, base, bytestring, clock, dns +, exceptions, gitignoreSource, http-types, iproute, lib, mtl +, network, optparse-applicative, prometheus, text, tinylog +, unordered-containers, wai, warp +}: +mkDerivation { + pname = "rex"; + version = "0.3.0"; + src = gitignoreSource ./.; + isLibrary = false; + isExecutable = true; + executableHaskellDepends = [ + async attoparsec base bytestring clock dns exceptions http-types + iproute mtl network optparse-applicative prometheus text tinylog + unordered-containers wai warp + ]; + description = "Scrape and expose restund metrics for prometheus"; + license = lib.licenses.agpl3Only; + mainProgram = "rex"; +} diff --git a/tools/stern/default.nix b/tools/stern/default.nix new file mode 100644 index 0000000000..175db25335 --- /dev/null +++ b/tools/stern/default.nix @@ -0,0 +1,36 @@ +# WARNING: GENERATED FILE, DO NOT EDIT. +# This file is generated by running hack/bin/generate-local-nix-packages.sh and +# must be regenerated whenever local packages are added or removed, or +# dependencies are added or removed. +{ mkDerivation, aeson, base, bilge, brig-types, bytestring +, bytestring-conversion, containers, data-default, errors +, exceptions, extended, galley-types, gitignoreSource +, gundeck-types, http-client, http-types, imports, lens, lib +, metrics-wai, mtl, schema-profunctor, servant, servant-server +, servant-swagger, servant-swagger-ui, split, string-conversions +, swagger, swagger2, text, tinylog, transformers, types-common +, unliftio, unordered-containers, uuid, wai, wai-extra +, wai-predicates, wai-routing, wai-utilities, warp, wire-api, yaml +}: +mkDerivation { + pname = "stern"; + version = "1.7.2"; + src = gitignoreSource ./.; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + aeson base bilge brig-types bytestring bytestring-conversion + containers data-default errors exceptions extended galley-types + gundeck-types http-client http-types imports lens metrics-wai mtl + schema-profunctor servant servant-server servant-swagger + servant-swagger-ui split string-conversions swagger swagger2 text + tinylog transformers types-common unliftio unordered-containers + uuid wai wai-extra wai-predicates wai-routing wai-utilities warp + wire-api yaml + ]; + executableHaskellDepends = [ + base extended imports types-common unliftio + ]; + license = lib.licenses.agpl3Only; + mainProgram = "stern"; +} diff --git a/tools/stern/stern.cabal b/tools/stern/stern.cabal index 304d91e9dc..743d2441db 100644 --- a/tools/stern/stern.cabal +++ b/tools/stern/stern.cabal @@ -75,7 +75,7 @@ library -funbox-strict-fields build-depends: - aeson >=2.0.1.0 && <2.1 + aeson >=2.0.1.0 && <2.2 , base >=4.5 && <5 , bilge >=0.12 , brig-types >=0.9.6