nix-configuration/home-manager/nix-init-scripts.nix
2025-01-15 09:46:57 +01:00

55 lines
1.1 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 '/.envrc' > .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}";
};
}