diff --git a/manifest.dhall b/manifest.dhall
index 1a91689e59effac0340425cbb1872b7636680f4b..8f50933a6a2fe24ce94331c0fe8d4e5dc5f7b422 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -682,6 +682,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "transformers-compat" "0.7.2"
     , callHackage "tree-diff" "0.2.2"
     , callHackage "trifecta" "2.1.2"
+    , callHackage "turtle" "1.6.1"
     , callHackage "typed-process" "0.2.10.1"
     , callHackage "type-errors-pretty" "0.0.1.2"
     , callHackage "type-errors" "0.2.0.0"
diff --git a/overlay.nix b/overlay.nix
index 944551e74067f738eb535406a6d58d142f4dc8c6..ea8dfb636a912af31df67ed2e77e7523afb4a7f1 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -1007,6 +1007,8 @@ self: with pkgs.haskell.lib; {
 
   trifecta = self.callPackage (./pkgs/trifecta.nix) { };
 
+  turtle = self.callPackage (./pkgs/turtle.nix) { };
+
   type-equality = self.callPackage (./pkgs/type-equality.nix) { };
 
   type-errors = self.callPackage (./pkgs/type-errors.nix) { };
diff --git a/pkgs/turtle.nix b/pkgs/turtle.nix
new file mode 100644
index 0000000000000000000000000000000000000000..4febefb446becfa9ec48d9cd0ee5392a71d429aa
--- /dev/null
+++ b/pkgs/turtle.nix
@@ -0,0 +1,84 @@
+{ mkDerivation
+, ansi-wl-pprint
+, async
+, base
+, bytestring
+, clock
+, containers
+, directory
+, doctest
+, exceptions
+, filepath
+, foldl
+, hostname
+, lib
+, managed
+, optional-args
+, optparse-applicative
+, process
+, stm
+, streaming-commons
+, tasty
+, tasty-bench
+, tasty-hunit
+, temporary
+, text
+, time
+, transformers
+, unix
+, unix-compat
+}:
+mkDerivation {
+  pname = "turtle";
+  version = "1.6.1";
+  sha256 = "2795445c93a4b646dd02b68ebf4006f8ec3588c85ccfe9d47810597e638e3b9c";
+  revision = "1";
+  editedCabalFile = "1x4hk9kk8ra855jkzs7dc9691pk14xydixswbx2srs3r9rc6dpjb";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    ansi-wl-pprint
+    async
+    base
+    bytestring
+    clock
+    containers
+    directory
+    exceptions
+    filepath
+    foldl
+    hostname
+    managed
+    optional-args
+    optparse-applicative
+    process
+    stm
+    streaming-commons
+    temporary
+    text
+    time
+    transformers
+    unix
+    unix-compat
+  ];
+  testHaskellDepends = [
+    base
+    doctest
+    filepath
+    tasty
+    tasty-hunit
+    temporary
+  ];
+  benchmarkHaskellDepends = [ base tasty-bench text ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Shell programming, Haskell-style";
+  license = lib.licenses.bsd3;
+  broken = false;
+}