{ nixpkgs ? import ./nixpkgs.nix {} }: let inherit (nixpkgs {}) pkgs; haskellPackages = import ./stackage.nix { inherit nixpkgs; }; drv = haskellPackages.callPackage ./uniworx.nix {}; postgresSchema = pkgs.writeText "schema.sql" '' CREATE USER uniworx WITH SUPERUSER; CREATE DATABASE uniworx_test; GRANT ALL ON DATABASE uniworx_test TO uniworx; CREATE DATABASE uniworx; GRANT ALL ON DATABASE uniworx TO uniworx; ''; postgresHba = pkgs.writeText "hba_file" '' local all all trust ''; override = oldAttrs: { nativeBuildInputs = oldAttrs.nativeBuildInputs ++ (with pkgs; [ nodejs-13_x postgresql openldap google-chrome exiftool memcached ]) ++ (with pkgs.haskellPackages; [ stack yesod-bin hlint cabal-install weeder profiteur ]); shellHook = '' export PROMPT_INFO="${oldAttrs.name}" export EDITOR=emacsclient cleanup() { set +e -x type cleanup_postgres && cleanup_postgres type cleanup_widget_memcached && cleanup_widget_memcached type cleanup_session_memcached && cleanup_session_memcached set +x } trap cleanup EXIT if [[ -z "$PGHOST" ]]; then set -xe pgDir=$(mktemp -d) pgSockDir=$(mktemp -d) pgLogFile=$(mktemp) initdb --no-locale -D ''${pgDir} pg_ctl start -D ''${pgDir} -l ''${pgLogFile} -w -o "-k ''${pgSockDir} -c listen_addresses=''' -c hba_file='${postgresHba}' -c unix_socket_permissions=0700" export PGHOST=''${pgSockDir} PGLOG=''${pgLogFile} psql -f ${postgresSchema} postgres printf "Postgres logfile is %s\nPostgres socket directory is %s\n" ''${pgLogFile} ''${pgSockDir} cleanup_postgres() { set +e -x pg_ctl stop -D ''${pgDir} rm -rvf ''${pgDir} ''${pgSockDir} ''${pgLogFile} set +x } set +xe fi if [[ -z "$WIDGET_MEMCACHED_HOST" ]]; then set -xe memcached -l localhost -p 11211 &>/dev/null & widget_memcached_pid=$? cleanup_widget_memcached() { [[ -n "$widget_memcached_pid" ]] && kill $widget_memcached_pid } export WIDGET_MEMCACHED_HOST=localhost WIDGET_MEMCACHED_PORT=11211 set +xe fi if [[ -z "$SESSION_MEMCACHED_HOST" ]]; then set -xe memcached -l localhost -p 11212 &>/dev/null & session_memcached_pid=$? cleanup_session_memcached() { [[ -n "$session_memcached_pid" ]] && kill $session_memcached_pid } export SESSION_MEMCACHED_HOST=localhost SESSION_MEMCACHED_PORT=11212 set +xe fi if [ -n "$ZSH_VERSION" ]; then autoload -U +X compinit && compinit autoload -U +X bashcompinit && bashcompinit fi eval "$(stack --bash-completion-script stack)" ${oldAttrs.shellHook} ''; }; dummy = pkgs.stdenv.mkDerivation { name = "interactive-uniworx-environment"; shellHook = ""; }; in pkgs.stdenv.lib.overrideDerivation dummy override #pkgs.stdenv.lib.overrideDerivation drv.env override