diff --git a/shell.nix b/shell.nix index 931e7ade0..e6178f7b0 100644 --- a/shell.nix +++ b/shell.nix @@ -1,11 +1,8 @@ -{ nixpkgs ? import {}, compiler ? null }: +{ nixpkgs ? import , compiler ? null }: let - inherit (nixpkgs) pkgs; - - haskellPackages = if isNull compiler - then pkgs.haskellPackages - else pkgs.haskell.packages."${compiler}"; + inherit (nixpkgs {}) pkgs; + haskellPackages = if isNull compiler then pkgs.haskellPackages else pkgs.haskell.packages."${compiler}"; drv = haskellPackages.callPackage ./uniworx.nix {}; @@ -26,21 +23,29 @@ let shellHook = '' export PROMPT_INFO="${oldAttrs.name}" - 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} + if [[ -z "$PGHOST" ]]; then + set -xe - cleanup() { - pg_ctl stop -D ''${pgDir} - rm -rvf ''${pgDir} ''${pgSockDir} ''${pgLogFile} - } + 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} - trap cleanup EXIT + cleanup() { + set +e -x + pg_ctl stop -D ''${pgDir} + rm -rvf ''${pgDir} ''${pgSockDir} ''${pgLogFile} + set +x + } + + trap cleanup EXIT + + set +xe + fi ${oldAttrs.shellHook} ''; diff --git a/stack.nix b/stack.nix index 7a8a0dcbf..e986ba349 100644 --- a/stack.nix +++ b/stack.nix @@ -1,8 +1,14 @@ -{ ghc, nixpkgs ? (import {}) }: +{ ghc, nixpkgs ? import }: let - inherit (nixpkgs) haskell pkgs; - haskellPackages = if ghc.version == pkgs.haskellPackages.ghc.version then pkgs.haskellPackages else pkgs.haskell.packages."ghc${builtins.replaceStrings ["."] [""] ghc.version}"; + snapshot = "lts-10.5"; + stackage = import (fetchTarball { + url = "https://stackage.serokell.io/drczwlyf6mi0ilh3kgv01wxwjfgvq14b-stackage/default.nix.tar.gz"; + sha256 = "1bwlbxx6np0jfl6z9gkmmcq22crm0pa07a8zrwhz5gkal64y6jpz"; + }); + inherit (nixpkgs { overlays = [ stackage."${snapshot}" ]; }) haskell pkgs; + + haskellPackages = pkgs.haskell.packages."${snapshot}"; in haskell.lib.buildStackProject { inherit ghc; name = "stackenv"; diff --git a/stack.yaml b/stack.yaml index c4f2d4dba..94be126d8 100644 --- a/stack.yaml +++ b/stack.yaml @@ -17,6 +17,10 @@ packages: git: https://github.com/pngwjpgh/encoding.git commit: 67bb87ceff53f0178c988dd4e15eeb2daee92b84 extra-dep: true + - location: + git: https://github.com/pngwjpgh/memcached-binary.git + commit: b5461747e7be226d3b67daebc3c9aefe8a4490ad + extra-dep: true extra-deps: - colonnade-1.2.0 @@ -45,8 +49,4 @@ extra-deps: - quickcheck-classes-0.4.14 - semirings-0.2.1.1 - - memcached-binary-0.2.0 - -allow-newer: true - resolver: lts-10.5