about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorLassulus <github@lassul.us>2020-10-30 19:36:09 +0100
committerGitHub <noreply@github.com>2020-10-30 19:36:09 +0100
commitcde8207a1ed14068cb0ecb4675a7794272ab721d (patch)
tree27bd19b5e68388056e30b0f05c595098ed63a0a2 /pkgs
parent989b403c7feabeaf0dcd62c67670aa6f9f1786a2 (diff)
parentc268484e05e4dc8c74f3ed02ec110b91a0823acb (diff)
Merge pull request #88544 from Pablo1107/ledger2beancount-2.1
ledger2beancount: init at 2.1
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/tools/text/ledger2beancount/default.nix58
-rw-r--r--pkgs/top-level/all-packages.nix2
2 files changed, 60 insertions, 0 deletions
diff --git a/pkgs/tools/text/ledger2beancount/default.nix b/pkgs/tools/text/ledger2beancount/default.nix
new file mode 100644
index 0000000000000..00cc996ed60c0
--- /dev/null
+++ b/pkgs/tools/text/ledger2beancount/default.nix
@@ -0,0 +1,58 @@
+{ stdenv, fetchFromGitHub, makeWrapper, perlPackages, beancount }:
+
+with stdenv.lib;
+
+let
+  perlDeps = with perlPackages; [
+    ConfigOnion DateCalc
+    FileBaseDir YAMLLibYAML
+    GetoptLongDescriptive DateTimeFormatStrptime
+    StringInterpolate
+  ];
+
+in stdenv.mkDerivation rec {
+  pname = "ledger2beancount";
+  version = "2.1";
+
+  src = fetchFromGitHub {
+    owner = "zacchiro";
+    repo = "ledger2beancount";
+    rev = "${version}";
+    sha256 = "0w88jb1x0w02jwwf6ipx3cxr89kzffrrdqws3556zrvvs01bh84j";
+  };
+
+  phases = [
+    "unpackPhase"
+    "installPhase"
+    "fixupPhase"
+  ];
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ perlPackages.perl beancount ] ++ perlDeps;
+
+  makeFlags = [ "prefix=$(out)" ];
+  installFlags = [ "INSTALL=install" ];
+
+  installPhase = ''
+    mkdir -p $out
+    cp -r $src/bin $out/bin
+  '';
+
+  postFixup = ''
+    wrapProgram "$out/bin/ledger2beancount" \
+      --set PERL5LIB "${perlPackages.makeFullPerlPath perlDeps}"
+  '';
+
+  meta = {
+    description = "Ledger to Beancount text-based converter";
+    longDescription = ''
+      A script to automatically convert Ledger-based textual ledgers to Beancount ones.
+
+      Conversion is based on (concrete) syntax, so that information that is not meaningful for accounting reasons but still valuable (e.g., comments, formatting, etc.) can be preserved.
+    '';
+    homepage = "https://github.com/zacchiro/ledger2beancount";
+    license = licenses.gpl3Plus;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ pablovsky ];
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index f88d9acc932ac..5d9beff85635a 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -21965,6 +21965,8 @@ in
 
   ledger-web = callPackage ../applications/office/ledger-web { };
 
+  ledger2beancount = callPackage ../tools/text/ledger2beancount { };
+
   lightburn = libsForQt5.callPackage ../applications/graphics/lightburn { };
 
   lighthouse = callPackage ../applications/misc/lighthouse { };