{ 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 " 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}"; }; }