diff --git a/manifest.dhall b/manifest.dhall
index a290095b484fb31ef4c5bfe8927675ed8c323c96..0a14cb09c0294299c7f2a62f960c7b84f6e0c141 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -390,6 +390,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "shelly" "1.10.0"
     , callHackage "singleton-bool" "0.1.6"
     , callHackage "singletons" "3.0.2"
+    , callHackage "slugify" "0.1.0.1"
     , callHackage "some" "1.0.4"
     , callHackage "sop-core" "0.5.0.1"
     , callHackage "souffle-haskell" "3.5.0"
diff --git a/overlay.nix b/overlay.nix
index 457dbc3c883e075562a84e5c1a93720f8250f294..5c470b78f592b604b5b7acc2ca7e2601e42a3188 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -469,6 +469,8 @@ final: prev: with pkgs.haskell.lib; {
 
     singletons = prev.callPackage (./pkgs/singletons.nix) { };
 
+    slugify = prev.callPackage (./pkgs/slugify.nix) { };
+
     some = prev.callPackage (./pkgs/some.nix) { };
 
     sop-core = prev.callPackage (./pkgs/sop-core.nix) { };
diff --git a/pkgs/slugify.nix b/pkgs/slugify.nix
new file mode 100644
index 0000000000000000000000000000000000000000..1b878fd52d0151768fab5c56625f3b71eeff1ed7
--- /dev/null
+++ b/pkgs/slugify.nix
@@ -0,0 +1,18 @@
+{ mkDerivation, base, hspec, hspec-discover, lib, QuickCheck, text
+, unicode-transforms
+}:
+mkDerivation {
+  pname = "slugify";
+  version = "0.1.0.1";
+  sha256 = "7b6304a31eef16fe291fd24b539a875795500e53f4b2d244a6203438c65db4c0";
+  libraryHaskellDepends = [ base text unicode-transforms ];
+  testHaskellDepends = [ base hspec QuickCheck text ];
+  testToolDepends = [ hspec-discover ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/hapytex/slugify#readme";
+  description = "Convert text into slugs";
+  license = lib.licenses.bsd3;
+}
\ No newline at end of file