#!/usr/bin/env bash # Exit if there's an error set -e # Modify constants as needed GITEA_URL="https://git.askiiart.net" # Note: This waits until enter is pressed # read -p "Press Enter to continue" < /dev/tty if [ $(whoami) == "root" ]; then echo "Run as a normal user, not root" exit 1 fi command_exists() { type "$1" &>/dev/null; } if command_exists "apt-get"; then sudo apt-get install pass git -y elif command_exists "yum"; then sudo yum install pass git -y elif command_exists "pacman"; then sudo pacman -S git --noconfirm --needed sudo pacman -S pass --noconfirm --needed elif command_exists "zypp"; then sudo zypper install pass git -y elif command_exists "emerge"; then sudo echo Not yet supported, exiting... elif command_exists "apk"; then sudo apk add pass sudo apk add git else echo "Unsupported: unknown package manager and distro" fi # Check if GCM is installed if [ -d "${HOME}/git-credential-manager" ]; then echo "Git Credential Manager already installed, skipping..." else if command_exists "apt-get"; then curl $(curl -s https://api.github.com/repos/git-ecosystem/git-credential-manager/releases/latest | grep "browser_download_url.*gcm-linux_amd64.*.deb" | cut -d : -f 2,3 | tr -d \") -LO chmod 777 ./gcm-linux_amd64.*.deb sudo apt-get install ./gcm-linux_amd64.*.deb -y rm -f ./gcm-linux_amd64.*.deb else # Install git credential manager curl -L https://aka.ms/gcm/linux-install-source.sh | sh git-credential-manager configure rm dotnet-install.sh fi fi ############################################ # Do GPG key stuff for commit verification # ############################################ if [ -d "${HOME}/.gnupg/" ]; then echo "GPG key(s) already exist, skipping..." gpg --list-keys read -p "Enter the long ID of the key to be used for git:" KEY_ID else # Create GPG key gpg --batch --gen-key gpg-config.batch read -p "Copy the long ID above, then paste it here: " KEY_ID echo $KEY_ID fi echo Doing git config stuff... git config --global credential.credentialStore gpg git config --global user.name "${NAME}" git config --global user.email "${EMAIL}" git config --global user.signingkey ${KEY_ID} git config --global commit.gpgsign true pass init ${KEY_ID} ############# # SSH stuff # ############# # Get SSH key if [ -d "${HOME}/.ssh" ]; then echo "SSH keys already exist, skipping..." else # Generate SSH keys echo # -f: file, -N: passphrase, -t: type ssh-keygen -f ~/.ssh/id_rsa -N "" -t rsa echo fi # From https://superuser.com/a/954639 # Archived at https://web.archive.org/web/20230606153856/https://superuser.com/a/954639 echo Fixing .gnupg/ permissions # Set ownership to your own user and primary group chown -R "$USER:$(id -gn)" ~/.gnupg # Set permissions to read, write, execute for only yourself, no others chmod 700 ~/.gnupg # Set permissions to read, write for only yourself, no others chmod 600 ~/.gnupg/* # Fixes dirmngr stuff sudo chmod 700 $(ls -d $HOME/.gnupg/*/) read -p "Done. Now verify your SSH and GPG keys in Git*"