about summary refs log tree commit diff
path: root/users/grfn/system/home/modules/lib/cloneRepo.nix
diff options
context:
space:
mode:
Diffstat (limited to 'users/grfn/system/home/modules/lib/cloneRepo.nix')
-rw-r--r--users/grfn/system/home/modules/lib/cloneRepo.nix96
1 files changed, 51 insertions, 45 deletions
diff --git a/users/grfn/system/home/modules/lib/cloneRepo.nix b/users/grfn/system/home/modules/lib/cloneRepo.nix
index dc487dc6bd..54992bd69b 100644
--- a/users/grfn/system/home/modules/lib/cloneRepo.nix
+++ b/users/grfn/system/home/modules/lib/cloneRepo.nix
@@ -4,44 +4,46 @@ with lib;
   options = {
     grfn.impure.clonedRepos = mkOption {
       description = "Repositories to clone";
-      default = {};
+      default = { };
       type = with types; loaOf (
-        let sm = submodule {
-          options = {
-            url = mkOption {
-              type = nullOr str;
-              description = "URL of repository to clone";
-              default = null;
-            };
+        let
+          sm = submodule {
+            options = {
+              url = mkOption {
+                type = nullOr str;
+                description = "URL of repository to clone";
+                default = null;
+              };
 
-            github = mkOption {
-              type = nullOr str;
-              description = "Github owner/repo of repository to clone";
-              default = null;
-            };
+              github = mkOption {
+                type = nullOr str;
+                description = "Github owner/repo of repository to clone";
+                default = null;
+              };
 
-            path = mkOption {
-              type = str;
-              description = "Path to clone to";
-            };
+              path = mkOption {
+                type = str;
+                description = "Path to clone to";
+              };
 
-            onClone = mkOption {
-              type = str;
-              description = ''
-                Shell command to run after cloning the repo for the first time.
-                Runs inside the repo itself.
-              '';
-              default = "";
-            };
+              onClone = mkOption {
+                type = str;
+                description = ''
+                  Shell command to run after cloning the repo for the first time.
+                  Runs inside the repo itself.
+                '';
+                default = "";
+              };
 
-            after = mkOption {
-              type = listOf str;
-              description = "Activation hooks that this repository must be cloned after";
-              default = [];
+              after = mkOption {
+                type = listOf str;
+                description = "Activation hooks that this repository must be cloned after";
+                default = [ ];
+              };
             };
           };
-        };
-        in addCheck sm (cr: (! isNull cr.url || ! isNull cr.github))
+        in
+        addCheck sm (cr: (! isNull cr.url || ! isNull cr.github))
       );
     };
   };
@@ -49,19 +51,23 @@ with lib;
   config = {
     home.activation =
       mapAttrs
-      (_: {
-        url, path, github, onClone, after, ...
-      }:
-        let repoURL = if isNull url then "git@github.com:${github}" else url;
-        in hm.dag.entryAfter (["writeBoundary"] ++ after) ''
-          $DRY_RUN_CMD mkdir -p $(dirname "${path}")
-          if [[ ! -d ${path} ]]; then
-            $DRY_RUN_CMD git clone "${repoURL}" "${path}"
-            pushd ${path}
-            $DRY_RUN_CMD ${onClone}
-            popd
-          fi
-        '')
-      config.grfn.impure.clonedRepos;
+        (_: { url
+            , path
+            , github
+            , onClone
+            , after
+            , ...
+            }:
+          let repoURL = if isNull url then "git@github.com:${github}" else url;
+          in hm.dag.entryAfter ([ "writeBoundary" ] ++ after) ''
+            $DRY_RUN_CMD mkdir -p $(dirname "${path}")
+            if [[ ! -d ${path} ]]; then
+              $DRY_RUN_CMD git clone "${repoURL}" "${path}"
+              pushd ${path}
+              $DRY_RUN_CMD ${onClone}
+              popd
+            fi
+          '')
+        config.grfn.impure.clonedRepos;
   };
 }