diff --git a/manifest.dhall b/manifest.dhall
index a2babd672b6cae9608e7430b51c8d71a8ddb2b02..09038d672005b16648347b63c73f4035de35254f 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -71,6 +71,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "JuicyPixels" "3.3.8"
     , callHackage "MonadRandom" "0.5.3"
     , callHackage "OneTuple" "0.3.1"
+    , callHackage "Only" "0.1"
     , callHackage "OpenGLRaw" "3.3.4.1"
     , callHackage "PyF" "0.11.1.0"
     , callHackage "QuickCheck" "2.14.2"
diff --git a/overlay.nix b/overlay.nix
index 69d729f719ec221ae8d7bc2c27753c47f5bec4d1..52b1cdabc96de88824fb930166ee12a2ac91b293 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -25,6 +25,8 @@ self: with pkgs.haskell.lib; {
 
   OneTuple = self.callPackage (./pkgs/OneTuple.nix) { };
 
+  Only = self.callPackage (./pkgs/Only.nix) { };
+
   OpenGLRaw = self.callPackage (./pkgs/OpenGLRaw.nix) { };
 
   PyF = self.callPackage (./pkgs/PyF.nix) { };
diff --git a/pkgs/Only.nix b/pkgs/Only.nix
new file mode 100644
index 0000000000000000000000000000000000000000..ba06887eaa254b0cdfb016ef4e075250733e07d1
--- /dev/null
+++ b/pkgs/Only.nix
@@ -0,0 +1,22 @@
+{ mkDerivation, base, deepseq, lib }:
+mkDerivation {
+  pname = "Only";
+  version = "0.1";
+  sha256 = "ab7aa193e8c257d3bda6b0b3c1cbcf74cdaa85ab08cb20c2dd62ba248c1ab265";
+  revision = "1";
+  editedCabalFile = "1ahk7p34kmh041mz7lyc10nhcxgv2i4z8nvzxvqm2x34gslmsbzr";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base deepseq ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "The 1-tuple type or single-value \"collection\"";
+  license = lib.licenses.bsd3;
+  broken = false;
+}