diff --git a/hosts/common/programs/assorted.nix b/hosts/common/programs/assorted.nix index 18eb9523..eb38ad3e 100644 --- a/hosts/common/programs/assorted.nix +++ b/hosts/common/programs/assorted.nix @@ -20,6 +20,7 @@ in "sane-scripts.bt-show" ]; "sane-scripts.dev" = declPackageSet [ + "sane-scripts.clone" "sane-scripts.dev-cargo-loop" "sane-scripts.git-init" ]; diff --git a/pkgs/additional/sane-scripts/default.nix b/pkgs/additional/sane-scripts/default.nix index 8fde1a50..d99c1429 100644 --- a/pkgs/additional/sane-scripts/default.nix +++ b/pkgs/additional/sane-scripts/default.nix @@ -66,6 +66,11 @@ let pyPkgs = [ "sane-lib.bt" ]; pkgs = [ "sane-scripts.lib.bt.propagatedBuildInputs" ]; }; + clone = static-nix-shell.mkBash { + pname = "sane-clone"; + src = ./src; + pkgs = [ "jq" "nix" ]; + }; deadlines = static-nix-shell.mkBash { pname = "sane-deadlines"; src = ./src; diff --git a/pkgs/additional/sane-scripts/src/sane-clone b/pkgs/additional/sane-scripts/src/sane-clone new file mode 100755 index 00000000..ff2e9f53 --- /dev/null +++ b/pkgs/additional/sane-scripts/src/sane-clone @@ -0,0 +1,21 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p jq -p nix + +# use like `eval $(sane-clone tuba)` to clone and cd into a tuba checkout + +srcattr="$1.src" +basedir=/home/colin/ref/repos + +repourl="$(nix eval nixpkgs#$srcattr.gitRepoUrl | jq --raw-output)" +repoowner="$(nix eval nixpkgs#$srcattr.owner | jq --raw-output)" +reponame="$(nix eval nixpkgs#$srcattr.repo | jq --raw-output)" + +ownerdir="$basedir/$repoowner" +clonedir="$ownerdir/$reponame" + +mkdir -p "$ownerdir" +git clone "$repourl" "$clonedir" + +# drop the user into the checkout +echo "cd $clonedir" +cd "$clonedir"