diff --git a/modules/home-manager-users.nix b/modules/home-manager-users.nix
index 0e1dbd6..3ca8e1b 100644
--- a/modules/home-manager-users.nix
+++ b/modules/home-manager-users.nix
@@ -2,35 +2,38 @@
 # user accounts in the system config
 { base, pkgs, lib, config, ... }:
 let
-  mkUser = username: {
-    isSystemUser = true;
-    linger = true;
-    createHome = true;
-    home = "/services/${username}";
-    group = "clicks";
-    shell = pkgs.bashInteractive;
-  } // (
-    if builtins.pathExists "${../services}/${username}/system.nix"
-    then import "${../services}/${username}/system.nix"
-    else { }
-  );
-in
-{
+  mkUser = username:
+    {
+      isSystemUser = true;
+      linger = true;
+      createHome = true;
+      home = "/services/${username}";
+      group = "clicks";
+      shell = pkgs.bashInteractive;
+    } // (if builtins.pathExists "${../services}/${username}/system.nix" then
+      import "${../services}/${username}/system.nix"
+    else
+      { });
+in {
   users.users = lib.pipe ../services [
     builtins.readDir
     (lib.filterAttrs (_name: value: value == "directory"))
     builtins.attrNames
-    (map (name: { inherit name; value = mkUser name; }))
+    (map (name: {
+      inherit name;
+      value = mkUser name;
+    }))
     builtins.listToAttrs
   ];
-} // (
-  if (base != null)
-  then {
-    /*    users.groups = lib.mapAttrs'
-      (_: user: {
-        name = user.group;
-        value = { };
-      })
-      base.config.users.users;*/
-  } else { }
-)
+} // (if (base != null) then
+  {
+    /* users.groups = lib.mapAttrs'
+       (_: user: {
+         name = user.group;
+         value = { };
+       })
+       base.config.users.users;
+    */
+  }
+else
+  { })
