{ lib, pkgs, ... }: let nix-prepare = pkgs.writeShellScript "nix-prepare" '' run() { local dir="$1" echo "Preparing nix environment in $dir" if [ "$dir" = "" ]; then echo "Usage: nix-prepare " exit 1 fi mkdir -p $dir cd $dir git init # Insert the nix flake cp ${./flake-templates/c3c-flake.nix} flake.nix chmod 644 flake.nix echo '/*' > .gitignor echo '!/.gitignore' >> .gitignoree 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" } run "$@" ''; git-nix-clone = pkgs.writeShellScript "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 ${nix-prepare} "$projectName"-nix git clone "$repo" "$projectName"-nix"/$projectName" } run "$@" ''; in { programs.zsh.shellAliases = { git-nix-clone = lib.mkDefault "${git-nix-clone}"; nix-prepare = lib.mkDefault "${nix-prepare}"; }; }