60 lines
1.2 KiB
Nix
60 lines
1.2 KiB
Nix
{ lib, pkgs, ... }:
|
|
let
|
|
nix-prepare = ''
|
|
run() {
|
|
local dir
|
|
echo "Preparing nix environment in $dir"
|
|
|
|
mkdir -p $dir
|
|
cd $dir
|
|
|
|
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"
|
|
}
|
|
|
|
run "$@"
|
|
'';
|
|
|
|
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
|
|
|
|
nix-prepare "$projectName"-nix
|
|
|
|
git clone "$repo" "$projectName"-nix"/$projectName"
|
|
}
|
|
|
|
run "$@"
|
|
'';
|
|
in
|
|
{
|
|
programs.zsh.shellAliases = {
|
|
git-nix-clone = lib.mkDefault "${pkgs.writeShellScript "git-nix-clone" git-nix-clone}";
|
|
};
|
|
|
|
}
|