chore(users): grfn -> aspen
Change-Id: I6c6847fac56f0a9a1a2209792e00a3aec5e672b9 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10809 Autosubmit: aspen <root@gws.fyi> Reviewed-by: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI Reviewed-by: lukegb <lukegb@tvl.fyi>
This commit is contained in:
parent
0ba476a426
commit
82ecd61f5c
478 changed files with 75 additions and 77 deletions
76
users/aspen/system/home/modules/lib/cloneRepo.nix
Normal file
76
users/aspen/system/home/modules/lib/cloneRepo.nix
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
{ lib, config, ... }:
|
||||
with lib;
|
||||
{
|
||||
options = {
|
||||
grfn.impure.clonedRepos = mkOption {
|
||||
description = "Repositories to clone";
|
||||
default = { };
|
||||
type = with types; attrsOf (
|
||||
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;
|
||||
};
|
||||
|
||||
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 = "";
|
||||
};
|
||||
|
||||
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))
|
||||
);
|
||||
};
|
||||
};
|
||||
|
||||
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
|
||||
if $DRY_RUN_CMD git clone "${repoURL}" "${path}"; then
|
||||
pushd ${path}
|
||||
$DRY_RUN_CMD ${onClone}
|
||||
popd
|
||||
else
|
||||
echo "Git repository ${path} failed to clone"
|
||||
fi
|
||||
fi
|
||||
'')
|
||||
config.grfn.impure.clonedRepos;
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue