diff --git a/lib.nix b/lib.nix
index 28bf4a71eb59605a0113cbeb7ccdca7aee0c4411..826d767cc30e0e265256daef8d0e29c62513d355 100644
--- a/lib.nix
+++ b/lib.nix
@@ -65,6 +65,25 @@ rec {
     ${packageName} = default;
   };
 
+  apps = {
+    # Create a program that runs hlint.
+    hlint = {
+      # An argv to pass to hlint in addition to any arguments passed on the
+      # `nix run` command line.
+      argv ? [ "src/" "test/" ]
+    }: {
+      type = "app";
+      program =
+        let
+          args = builtins.concatStringsSep " " argv;
+        in
+          "${pkgs.writeScript "hlint"
+            ''
+            ${hsPkgs.hlint}/bin/hlint ${args} "$@"
+            ''}";
+    };
+  };
+
   # haskellDevShell = { pkgs, system, haskellPackageName, src }:
   #   let
   #     hsPkgs' = hsPkgs {