diff --git a/horizon.dhall b/horizon.dhall
index 2b8cc19cc953a5d0b317a6dd18c8a206f008877c..86cbddea2fb7120d553a47d84cda0e43e9f61524 100644
--- a/horizon.dhall
+++ b/horizon.dhall
@@ -688,6 +688,7 @@ let packages =
       , one-liner = H.callHackage "one-liner" "2.1"
       , openapi3 = H.callHackage "openapi3" "3.2.2"
       , openssl-streams = H.callHackage "openssl-streams" "1.2.3.0"
+      , operational = H.callHackage "operational" "0.2.4.2"
       , optics-core = H.callHackage "optics-core" "0.4.1"
       , optics-extra = H.callHackage "optics-extra" "0.4.2.1"
       , optics-th = H.callHackage "optics-th" "0.4.1"
diff --git a/initial-packages.nix b/initial-packages.nix
index 2ab73f9cc6d1929e6246accbd963be3503bfa308..05cea04e971fac8ae5876f789c9a3a3635e54ae7 100644
--- a/initial-packages.nix
+++ b/initial-packages.nix
@@ -1107,6 +1107,8 @@ self: with pkgs.haskell.lib; {
 
   openssl-streams = self.callPackage (./pkgs/openssl-streams.nix) { };
 
+  operational = self.callPackage (./pkgs/operational.nix) { };
+
   optics = self.callPackage (./pkgs/optics.nix) { };
 
   optics-core = self.callPackage (./pkgs/optics-core.nix) { };
diff --git a/pkgs/operational.nix b/pkgs/operational.nix
new file mode 100644
index 0000000000000000000000000000000000000000..0876cb2a2c425a17495326f31921a038c204f3d2
--- /dev/null
+++ b/pkgs/operational.nix
@@ -0,0 +1,22 @@
+{ mkDerivation, base, lib, mtl, random, transformers }:
+mkDerivation {
+  pname = "operational";
+  version = "0.2.4.2";
+  sha256 = "857da8b2b155a9f799c3f6eb34b158454ce7a0116a89f07d9fda05f1eadda6b7";
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base mtl transformers ];
+  executableHaskellDepends = [ base mtl random ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "http://wiki.haskell.org/Operational";
+  description = "Implementation of difficult monads made easy with operational semantics";
+  license = lib.licenses.bsd3;
+  broken = false;
+}