diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,12 @@
 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
 and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
 
+## [0.10.5] - 2024-11-15
+
+### Added
+
+ - Nix 2.24 support
+
 ## [0.10.4] - 2024-06-12
 
 ### Fixed
diff --git a/cbits/nix-2.4/hercules-store.cxx b/cbits/nix-2.4/hercules-store.cxx
--- a/cbits/nix-2.4/hercules-store.cxx
+++ b/cbits/nix-2.4/hercules-store.cxx
@@ -84,7 +84,33 @@
   wrappedStore->addToStore(info, narSource, repair, checkSigs);
 }
 
-#if NIX_IS_AT_LEAST(2,20,0)
+#if NIX_IS_AT_LEAST(2,24,0)
+
+StorePath WrappingStore::addToStore(
+    std::string_view name,
+    const SourcePath & path,
+    ContentAddressMethod method,
+    HashAlgorithm hashAlgo,
+    const StorePathSet & references,
+    PathFilter & filter,
+    RepairFlag repair)
+{
+    return wrappedStore->addToStore(name, path, method, hashAlgo, references, filter, repair);
+}
+
+StorePath WrappingStore::addToStoreFromDump(
+    Source & dump,
+    std::string_view name,
+    FileSerialisationMethod dumpMethod,
+    ContentAddressMethod method,
+    HashAlgorithm hashAlgo,
+    const StorePathSet & references,
+    RepairFlag repair)
+{
+    return wrappedStore->addToStoreFromDump(dump, name, dumpMethod, method, hashAlgo, references, repair);
+}
+
+#elif NIX_IS_AT_LEAST(2,20,0)
 
 StorePath WrappingStore::addToStore(
     std::string_view name,
diff --git a/cbits/nix-2.4/hercules-store.hh b/cbits/nix-2.4/hercules-store.hh
--- a/cbits/nix-2.4/hercules-store.hh
+++ b/cbits/nix-2.4/hercules-store.hh
@@ -64,7 +64,27 @@
   virtual void addToStore(const ValidPathInfo & info, Source & narSource,
       RepairFlag repair = NoRepair, CheckSigsFlag checkSigs = CheckSigs) override;
 
-#if NIX_IS_AT_LEAST(2,20,0)
+#if NIX_IS_AT_LEAST(2,24,0)
+
+    virtual StorePath addToStore(
+        std::string_view name,
+        const SourcePath & path,
+        ContentAddressMethod method,
+        HashAlgorithm hashAlgo,
+        const StorePathSet & references,
+        PathFilter & filter,
+        RepairFlag repair) override;
+
+    virtual StorePath addToStoreFromDump(
+        Source & dump,
+        std::string_view name,
+        FileSerialisationMethod dumpMethod,
+        ContentAddressMethod hashMethod,
+        HashAlgorithm hashAlgo,
+        const StorePathSet & references,
+        RepairFlag repair) override;
+
+#elif NIX_IS_AT_LEAST(2,20,0)
 
     virtual StorePath addToStore(
         std::string_view name,
diff --git a/hercules-ci-agent.cabal b/hercules-ci-agent.cabal
--- a/hercules-ci-agent.cabal
+++ b/hercules-ci-agent.cabal
@@ -1,7 +1,7 @@
 cabal-version: 2.4
 
 name:           hercules-ci-agent
-version:        0.10.4
+version:        0.10.5
 synopsis:       Runs Continuous Integration tasks on your machines
 category:       Nix, CI, Testing, DevOps
 homepage:       https://docs.hercules-ci.com
diff --git a/hercules-ci-agent/Hercules/Agent/Config/BinaryCaches.hs b/hercules-ci-agent/Hercules/Agent/Config/BinaryCaches.hs
--- a/hercules-ci-agent/Hercules/Agent/Config/BinaryCaches.hs
+++ b/hercules-ci-agent/Hercules/Agent/Config/BinaryCaches.hs
@@ -68,8 +68,8 @@
   when (null (cachixCaches bcs) && null (nixCaches bcs)) $
     logLocM
       WarningS
-      "You did not configure any caches. This is ok for evaluation purposes,\
-      \ but a cache is required for multi-agent operation and\
+      "You did not configure any caches. This is ok for trying out Hercules CI,\
+      \ but a cache _is_ required for multi-agent operation and\
       \ to work well across garbage collection.\
       \ For more information about binary-caches.json, see\
       \ https://docs.hercules-ci.com/hercules-ci/reference/binary-caches-json/"
diff --git a/hercules-ci-nix-daemon/daemon.cc b/hercules-ci-nix-daemon/daemon.cc
--- a/hercules-ci-nix-daemon/daemon.cc
+++ b/hercules-ci-nix-daemon/daemon.cc
@@ -19,6 +19,11 @@
 #include <nix/signals.hh>
 #endif
 
+#if NIX_IS_AT_LEAST(2,24,0)
+#include <nix/config-global.hh>
+using nix::unix::closeOnExec;
+#endif
+
 #if ! NIX_IS_AT_LEAST(2,15,0)
 using nix::daemon::TrustedFlag;
 using nix::daemon::NotTrusted;
@@ -104,8 +109,13 @@
 #endif
                 daemon::processConnection(
                     store
+#if NIX_IS_AT_LEAST(2,24,0)
+                    , std::move(from)
+                    , std::move(to)
+#else
                     , from
                     , to
+#endif
                     , trusted
                     , recursive
 #if ! NIX_IS_AT_LEAST(2,14,0)
@@ -117,7 +127,11 @@
             return 0;
         } catch (Error & error) {
             ErrorInfo ei = error.info();
+#if NIX_IS_AT_LEAST(2,24,0)
+            ei.msg = HintFmt("hercules-ci-nix-daemon: error processing connection: %1%", ei.msg.str());
+#else
             ei.msg = hintfmt("hercules-ci-nix-daemon: error processing connection: %1%", ei.msg.str());
+#endif
             logError(ei);
         }
     }
