diff --git a/flake.nix b/flake.nix
index 684b76a0eac8ecfd3f3fd921413fa71914d96167..84bbd521c3464818667c10845c37a785fcdb48ea 100644
--- a/flake.nix
+++ b/flake.nix
@@ -31,6 +31,7 @@
         packages = [
           pkgs.cabal-install
           pkgs.ghcid
+          pkgs.entr
           pkgs.haskell-language-server
         ];
       }
diff --git a/ghcid b/ghcid
index c5972281148d0500b9688f62104c48bcb97c1186..c2404652d438a37e03d74ece3703af3e7e906c56 100755
--- a/ghcid
+++ b/ghcid
@@ -1,4 +1,4 @@
-#!/usr/bin/env zsh
+#!/usr/bin/env -S nix shell . -c zsh
 
 print -P %F{yellow}Cleaning repository%f
 nix develop -c cabal clean
diff --git a/ghcid-warnings b/ghcid-warnings
new file mode 100755
index 0000000000000000000000000000000000000000..c730cf01f32d490c84eb809b21a2af808f89cdd3
--- /dev/null
+++ b/ghcid-warnings
@@ -0,0 +1,15 @@
+#!/usr/bin/env -S nix shell . -c zsh
+
+print -P %F{yellow}Cleaning repository%f
+nix develop -c cabal clean
+
+(git ls-files test; git ls-files '*.cabal'; git ls-files 'flake.*') | \
+  entr -r \
+    nix develop -c \
+      ghcid \
+        "--command=cabal repl lib:quasar" \
+        "--test=:! \
+          cabal test --disable-optimisation --enable-debug-info=2 --test-show-details=direct --ghc-option -fdiagnostics-color=always && \
+          cabal build --disable-optimisation --enable-debug-info=2 --ghc-option -fdiagnostics-color=always && \
+          zsh -c 'print -P %F{green}Build and tests passed%f' \
+        "