diff --git a/horizon.dhall b/horizon.dhall
index 9fe71a9025c367a15ca56436c512bbafe13f73ad..a1282589c0264ec71c2f98bfe05543866ebbde4a 100644
--- a/horizon.dhall
+++ b/horizon.dhall
@@ -172,6 +172,7 @@ let otherLibraries =
       , H.callHackage "dns" "4.1.0"
       , H.callHackage "doctest-discover" "0.2.0.0"
       , H.callHackage "dom-lt" "0.2.3"
+      , H.callHackage "filelock" "0.1.1.5"
       , H.callHackage "finite-typelits" "0.1.6.0"
       , H.callGit
           "flat"
diff --git a/overlay.nix b/overlay.nix
index 635f11e63a9e97f0ee9fa0b5156e85d7988f5204..d3f2d57e16a03e81c4d33edd4eaa68c1cf0bc7d0 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -121,6 +121,8 @@ final: prev: with pkgs.haskell.lib; {
 
   dom-lt = final.callPackage (./pkgs/dom-lt.nix) { };
 
+  filelock = final.callPackage (./pkgs/filelock.nix) { };
+
   finite-typelits = final.callPackage (./pkgs/finite-typelits.nix) { };
 
   flat = final.callPackage (./pkgs/flat.nix) { };
diff --git a/pkgs/filelock.nix b/pkgs/filelock.nix
new file mode 100644
index 0000000000000000000000000000000000000000..a41492ddc7032c46fbecea3201193719f8fad41c
--- /dev/null
+++ b/pkgs/filelock.nix
@@ -0,0 +1,22 @@
+{ mkDerivation, async, base, lib, process, unix }:
+mkDerivation {
+  pname = "filelock";
+  version = "0.1.1.5";
+  sha256 = "50ebea81e8443356af26f32221d4594709d94102445931673fcd94a44e244419";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base unix ];
+  testHaskellDepends = [ async base process ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/takano-akio/filelock";
+  description = "Portable interface to file locking (flock / LockFileEx)";
+  license = lib.licenses.publicDomain;
+  broken = false;
+}