diff --git a/pkgs/applications/misc/arbtt/default.nix b/pkgs/applications/misc/arbtt/default.nix
new file mode 100644
index 000000000000..b07f72b20dd7
--- /dev/null
+++ b/pkgs/applications/misc/arbtt/default.nix
@@ -0,0 +1,23 @@
+{ cabal, binary, bytestringProgress, deepseq, filepath, parsec
+, pcreLight, strict, terminalProgressBar, time, transformers
+, utf8String, X11, libXScrnSaver
+}:
+
+cabal.mkDerivation (self: {
+  pname = "arbtt";
+  version = "0.7";
+  sha256 = "05q31fsyrbkcx0mlf2r91zgmpma5sl2a7100h7qsa882sijc2ybn";
+  isLibrary = false;
+  isExecutable = true;
+  buildDepends = [
+    binary bytestringProgress deepseq filepath parsec pcreLight strict
+    terminalProgressBar time transformers utf8String X11
+  ];
+  extraLibraries = [ libXScrnSaver ];
+  meta = {
+    homepage = "http://www.joachim-breitner.de/projects#arbtt";
+    description = "Automatic Rule-Based Time Tracker";
+    license = "GPL";
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/bytestring-progress/default.nix b/pkgs/development/libraries/haskell/bytestring-progress/default.nix
new file mode 100644
index 000000000000..514f76ecf7c7
--- /dev/null
+++ b/pkgs/development/libraries/haskell/bytestring-progress/default.nix
@@ -0,0 +1,15 @@
+{ cabal, terminalProgressBar, time }:
+
+cabal.mkDerivation (self: {
+  pname = "bytestring-progress";
+  version = "1.0.3";
+  sha256 = "1v9cl7d4fcchbdrpbgjj4ilg79cj241vzijiifdsgkq30ikv2yxs";
+  buildDepends = [ terminalProgressBar time ];
+  noHaddock = "1";
+  meta = {
+    homepage = "http://github.com/acw/bytestring-progress";
+    description = "A library for tracking the consumption of a lazy ByteString";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/terminal-progress-bar/default.nix b/pkgs/development/libraries/haskell/terminal-progress-bar/default.nix
new file mode 100644
index 000000000000..d5e16e43d3ae
--- /dev/null
+++ b/pkgs/development/libraries/haskell/terminal-progress-bar/default.nix
@@ -0,0 +1,19 @@
+{ cabal, baseUnicodeSymbols, HUnit, testFramework
+, testFrameworkHunit
+}:
+
+cabal.mkDerivation (self: {
+  pname = "terminal-progress-bar";
+  version = "0.0.1.3";
+  sha256 = "04glnz72ivnaqfhyxb5sc175yxiq7lf7xi1jhbk9gi95md00f1js";
+  buildDepends = [ baseUnicodeSymbols ];
+  testDepends = [
+    baseUnicodeSymbols HUnit testFramework testFrameworkHunit
+  ];
+  meta = {
+    homepage = "https://github.com/roelvandijk/terminal-progress-bar";
+    description = "A simple progress bar in the terminal";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix
index fb0324c46f58..647627f70f17 100644
--- a/pkgs/top-level/haskell-packages.nix
+++ b/pkgs/top-level/haskell-packages.nix
@@ -636,6 +636,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
 
   bytestringTrie = callPackage ../development/libraries/haskell/bytestring-trie {};
 
+  bytestringProgress = callPackage ../development/libraries/haskell/bytestring-progress {};
+
   c2hs = callPackage ../development/libraries/haskell/c2hs {
     languageC = self.languageC_0_3_2_1;
   };
@@ -1831,6 +1833,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
 
   Tensor = callPackage ../development/libraries/haskell/Tensor {};
 
+  terminalProgressBar = callPackage ../development/libraries/haskell/terminal-progress-bar {};
+
   terminfo = callPackage ../development/libraries/haskell/terminfo {};
 
   testFramework = callPackage ../development/libraries/haskell/test-framework {};
@@ -2191,6 +2195,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
 
   # Applications.
 
+  arbtt = callPackage ../applications/misc/arbtt {};
+
   darcs = callPackage ../applications/version-management/darcs {};
 
   leksah = callPackage ../applications/editors/leksah {