diff --git a/manifest.dhall b/manifest.dhall
index cc387b3006dfb58eb3f36ade88134e40d0ac8809..898b80e1ff688811d9c5dc32c6584f231c87de45 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -293,6 +293,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "hledger-lib" "1.27.1"
     , callHackage "hledger" "1.27.1"
     , callHackage "hlint" "3.5"
+    , callHackage "hosc" "0.19.1"
     , callHackage "hourglass" "0.2.12"
     , callCabal2nix
         "hnix"
diff --git a/overlay.nix b/overlay.nix
index 6cd83b798499218ddd691b38f5fe237e4d3ffdc6..6b98efe5e4ae49782f2e1d58d177146a35ad5c80 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -377,6 +377,8 @@ final: prev: with pkgs.haskell.lib; {
 
   horizon-gen-nix = prev.callPackage (./pkgs/horizon-gen-nix.nix) { };
 
+  hosc = prev.callPackage (./pkgs/hosc.nix) { };
+
   hourglass = prev.callPackage (./pkgs/hourglass.nix) { };
 
   hpack = prev.callPackage (./pkgs/hpack.nix) { };
diff --git a/pkgs/hosc.nix b/pkgs/hosc.nix
new file mode 100644
index 0000000000000000000000000000000000000000..0bbc48b82e733318508aeee435c9285e999830ff
--- /dev/null
+++ b/pkgs/hosc.nix
@@ -0,0 +1,40 @@
+{ mkDerivation
+, base
+, binary
+, blaze-builder
+, bytestring
+, data-binary-ieee754
+, lib
+, network
+, time
+, transformers
+}:
+mkDerivation {
+  pname = "hosc";
+  version = "0.19.1";
+  sha256 = "e713022269060b53ae893c38c0827bb1a19f767dda96e28ee21d4f1d2e0a0223";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = true;
+  libraryHaskellDepends = [
+    base
+    binary
+    blaze-builder
+    bytestring
+    data-binary-ieee754
+    network
+    time
+    transformers
+  ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "http://rohandrape.net/t/hosc";
+  description = "Haskell Open Sound Control";
+  license = lib.licenses.gpl3Only;
+  broken = false;
+}