57 lines
1.2 KiB
Nix
57 lines
1.2 KiB
Nix
{ lib, pkgs, ... }:
|
|
let
|
|
git-nix-clone = ''
|
|
# Input is a git repository such as git@github.com:group/project-name.git
|
|
run() {
|
|
local repo="$1"
|
|
local projectName=$(echo "$repo" | sed 's/.*\///' | sed 's/\.git//')
|
|
|
|
if [ "$repo" = "" ]; then
|
|
echo "Usage: git-nix-clone <repo>"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Clone $repo into ''${projectName}-nix/''${projectName}?"
|
|
read -p "continue?" answer
|
|
|
|
if [ "$answer" != "" ]; then
|
|
echo "Aborting"
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p "$projectName"-nix
|
|
cd "$projectName"-nix
|
|
|
|
git init
|
|
|
|
# Insert the nix flake
|
|
cp ${./flake-templates/c3c-flake.nix} flake.nix
|
|
chmod 644 flake.nix
|
|
|
|
echo '/*' > .gitignore
|
|
echo '!/flake.nix' >> .gitignore
|
|
echo '!/flake.lock' >> .gitignore
|
|
echo 'use flake . --impure' > .envrc
|
|
|
|
git add flake.nix .gitignore
|
|
git commit -m "Setup initial flake"
|
|
|
|
direnv allow
|
|
eval "$(direnv export bash)"
|
|
|
|
git add flake.lock
|
|
git commit -m "Lock flakes"
|
|
|
|
git clone "$repo"
|
|
}
|
|
|
|
run "$@"
|
|
'';
|
|
in
|
|
{
|
|
programs.zsh.shellAliases = {
|
|
git-nix-clone = lib.mkDefault "${pkgs.writeShellScript "git-nix-clone" git-nix-clone}";
|
|
};
|
|
|
|
}
|