diff --git a/krebs/4lib/types.nix b/krebs/4lib/types.nix
index 55301add5..41af1cd4f 100644
--- a/krebs/4lib/types.nix
+++ b/krebs/4lib/types.nix
@@ -165,6 +165,10 @@ types // rec {
 
   user = submodule ({ config, ... }: {
     options = {
+      home = mkOption {
+        type = absolute-pathname;
+        default = "/home/${config.name}";
+      };
       mail = mkOption {
         type = str; # TODO retiolum mail address
       };
@@ -226,6 +230,21 @@ types // rec {
     merge = mergeOneOption;
   };
 
+  # POSIX.1‐2013, 3.2 Absolute Pathname
+  # TODO normalize slashes
+  # TODO two slashes
+  absolute-pathname = mkOptionType {
+    name = "POSIX absolute pathname";
+    check = s: pathname.check s && substring 0 1 s == "/";
+  };
+
+  # POSIX.1‐2013, 3.267 Pathname
+  # TODO normalize slashes
+  pathname = mkOptionType {
+    name = "POSIX pathname";
+    check = s: isString s && all filename.check (splitString "/" s);
+  };
+
   # POSIX.1-2013, 3.431 User Name
   username = mkOptionType {
     name = "POSIX username";