diff --git a/manifest.dhall b/manifest.dhall
index 0b60d31c742ff825382269cc70b953bd77dd9d88..7af11703a3fbf90fdb0355ba07c5f53b2670c234 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -243,6 +243,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "hie-bios" "0.11.0"
     , callHackage "hie-compat" "0.3.0.0"
     , callHackage "hiedb" "0.4.2.0"
+    , callHackage "hledger-lib" "1.27.1"
     , callHackage "hlint" "3.5"
     , callHackage "hourglass" "0.2.12"
     , callCabal2nix
diff --git a/overlay.nix b/overlay.nix
index 149eadf02165cadcd470d8afb7aeadf6b29ed3d0..215f527d0c1c6517b4b7af998ae5e0a36b6e2f26 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -273,6 +273,8 @@ final: prev: with pkgs.haskell.lib; {
 
     hiedb = prev.callPackage (./pkgs/hiedb.nix) { };
 
+    hledger-lib = prev.callPackage (./pkgs/hledger-lib.nix) { };
+
     hlint = prev.callPackage (./pkgs/hlint.nix) { };
 
     hnix = prev.callPackage (./pkgs/hnix.nix) { };
diff --git a/pkgs/hledger-lib.nix b/pkgs/hledger-lib.nix
new file mode 100644
index 0000000000000000000000000000000000000000..6e072669b9d29846597c7af602fe051e2a6d196c
--- /dev/null
+++ b/pkgs/hledger-lib.nix
@@ -0,0 +1,39 @@
+{ mkDerivation, aeson, aeson-pretty, ansi-terminal, array, base
+, blaze-markup, breakpoint, bytestring, call-stack, cassava
+, cassava-megaparsec, cmdargs, containers, data-default, Decimal
+, deepseq, directory, doclayout, doctest, extra, file-embed
+, filepath, Glob, hashtables, lib, megaparsec, microlens
+, microlens-th, mtl, parser-combinators, pretty-simple, regex-tdfa
+, safe, tabular, tasty, tasty-hunit, template-haskell, text, time
+, timeit, transformers, uglymemo, unordered-containers, utf8-string
+}:
+mkDerivation {
+  pname = "hledger-lib";
+  version = "1.27.1";
+  sha256 = "0bf2ab283435a3c49b91a2f18e124f7b27d8203a4db6ef8a1df71ae6fcb55270";
+  libraryHaskellDepends = [
+    aeson aeson-pretty ansi-terminal array base blaze-markup breakpoint
+    bytestring call-stack cassava cassava-megaparsec cmdargs containers
+    data-default Decimal deepseq directory doclayout extra file-embed
+    filepath Glob hashtables megaparsec microlens microlens-th mtl
+    parser-combinators pretty-simple regex-tdfa safe tabular tasty
+    tasty-hunit template-haskell text time timeit transformers uglymemo
+    unordered-containers utf8-string
+  ];
+  testHaskellDepends = [
+    aeson aeson-pretty ansi-terminal array base blaze-markup breakpoint
+    bytestring call-stack cassava cassava-megaparsec cmdargs containers
+    data-default Decimal deepseq directory doclayout doctest extra
+    file-embed filepath Glob hashtables megaparsec microlens
+    microlens-th mtl parser-combinators pretty-simple regex-tdfa safe
+    tabular tasty tasty-hunit template-haskell text time timeit
+    transformers uglymemo unordered-containers utf8-string
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://hledger.org";
+  description = "A reusable library providing the core functionality of hledger";
+  license = lib.licenses.gpl3Only;
+}
\ No newline at end of file