diff --git a/scripts/shell.nix b/scripts/shell.nix
new file mode 100644
index 00000000..cbce6750
--- /dev/null
+++ b/scripts/shell.nix
@@ -0,0 +1,15 @@
+# Get a Nix shell with all the packages installed
+# Also a good way of running the tests for all packages
+with (import <nixpkgs> {}).pkgs;
+let modifiedHaskellPackages = haskellngPackages.override {
+      overrides = self: super: {
+        servant = self.callPackage ../servant {};
+        servant-server = self.callPackage ../servant-server {};
+        servant-client = self.callPackage ../servant-client {};
+        servant-jquery = self.callPackage ../servant-jquery {};
+        servant-docs   = self.callPackage ../servant-docs {};
+      };
+    };
+in modifiedHaskellPackages.ghcWithPackages ( p : with p ; [
+    servant servant-server servant-client servant-jquery servant-docs
+])
diff --git a/scripts/test-all.sh b/scripts/test-all.sh
index 990d3a1c..5d4f7945 100755
--- a/scripts/test-all.sh
+++ b/scripts/test-all.sh
@@ -8,21 +8,24 @@
 #   DESCRIPTION: Run tests for all source directories listed in $SOURCES.
 #                Uses local versions of those sources.
 #
+#  REQUIREMENTS: bash >= 4
 #===============================================================================
 
 set -o nounset
 set -o errexit
 
-SOURCES=( servant servant-server servant-client servant-jquery servant-docs )
+DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
 GHC_FLAGS="-Werror"
+SOURCES_TXT="$( dirname $DIR)/sources.txt"
+
+declare -a SOURCES
+readarray -t SOURCES < "$SOURCES_TXT"
+
 
 prepare_sandbox () {
     cabal sandbox init
     for s in ${SOURCES[@]} ; do
-        cd "$s"
-        cabal sandbox init --sandbox=../
-        cabal sandbox add-source .
-        cd ..
+        (cd "$s" && cabal sandbox init --sandbox=../ && cabal sandbox add-source .)
     done
 }
 
diff --git a/scripts/update-defaults-nix.sh b/scripts/update-defaults-nix.sh
new file mode 100755
index 00000000..7e85c98a
--- /dev/null
+++ b/scripts/update-defaults-nix.sh
@@ -0,0 +1,24 @@
+#!/bin/bash -
+#===============================================================================
+#
+#         USAGE: ./update-defaults-nix.sh
+#
+#   DESCRIPTION: Updates the default.nix files in all source dirs
+#
+#  REQUIREMENTS: cabal2nix, bash >= 4
+#===============================================================================
+
+set -o nounset
+set -o errexit
+
+DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+BASE_DIR="$( dirname $DIR)"
+SOURCES_TXT="$BASE_DIR/sources.txt"
+
+declare -a SOURCES
+readarray -t SOURCES < "$SOURCES_TXT"
+
+for s in ${SOURCES[@]} ; do
+    echo $s
+    (cd "$BASE_DIR/$s" && cabal2nix . > default.nix )
+done