diff --git a/manifest.dhall b/manifest.dhall
index 31945fa31ba9cf7ce12c23b419f089d06ea17522..e775cccb5f2a8c56cfc072a7f2bb3d374c5cfbe8 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -260,6 +260,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "quickcheck-dynamic" "2.0.0"
     , callHackage "quickcheck-instances" "0.3.28"
     , callHackage "rebase" "1.16"
+    , callHackage "refined" "0.8"
     , callHackage "rerebase" "1.15.0.3"
     , callHackage "relude" "1.1.0.0"
     , callHackage "retry" "0.9.3.0"
diff --git a/overlay.nix b/overlay.nix
index bd0faad31c24958000f419ec1b15ea462b5d947a..abeec45037f8b9b671e095a5044fa534d9cbab2a 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -323,6 +323,8 @@ final: prev: with pkgs.haskell.lib; {
 
     rebase = prev.callPackage (./pkgs/rebase.nix) { };
 
+    refined = prev.callPackage (./pkgs/refined.nix) { };
+
     relude = prev.callPackage (./pkgs/relude.nix) { };
 
     rerebase = prev.callPackage (./pkgs/rerebase.nix) { };
diff --git a/pkgs/refined.nix b/pkgs/refined.nix
new file mode 100644
index 0000000000000000000000000000000000000000..19bba77fbcb65f0b936ace6c9f548465663f126a
--- /dev/null
+++ b/pkgs/refined.nix
@@ -0,0 +1,21 @@
+{ mkDerivation, aeson, base, bytestring, deepseq, exceptions
+, hashable, lib, mtl, QuickCheck, template-haskell, text
+, these-skinny
+}:
+mkDerivation {
+  pname = "refined";
+  version = "0.8";
+  sha256 = "3a477dd64a741708e32223a5deb79d297a36804ede759a8a50ed96c7bcad7f62";
+  libraryHaskellDepends = [
+    aeson base bytestring deepseq exceptions hashable mtl QuickCheck
+    template-haskell text these-skinny
+  ];
+  testHaskellDepends = [ base QuickCheck ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/nikita-volkov/refined";
+  description = "Refinement types with static and runtime checking";
+  license = lib.licenses.mit;
+}
\ No newline at end of file