nixos-config/install.sh
2024-05-19 18:28:51 +02:00

135 lines
3.8 KiB
Bash
Executable file

#!/usr/bin/env bash
init() {
# Vars
CURRENT_USERNAME='frostphoenix'
# Colors
NORMAL=$(tput sgr0)
WHITE=$(tput setaf 7)
BLACK=$(tput setaf 0)
RED=$(tput setaf 1)
GREEN=$(tput setaf 2)
YELLOW=$(tput setaf 3)
BLUE=$(tput setaf 4)
MAGENTA=$(tput setaf 5)
CYAN=$(tput setaf 6)
BRIGHT=$(tput bold)
UNDERLINE=$(tput smul)
}
confirm() {
echo -en "[${GREEN}y${NORMAL}/${RED}n${NORMAL}]: "
read -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]
then
exit 0
fi
}
print_header() {
echo -E "$CYAN
_____ _ ____ _ _
| ___| __ ___ ___| |_| _ \| |__ ___ ___ _ __ (_)_ __
| |_ | '__/ _ \/ __| __| |_) | '_ \ / _ \ / _ \ '_ \| \ \/ /
| _|| | | (_) \__ \ |_| __/| | | | (_) | __/ | | | |> <
|_| |_| \___/|___/\__|_| |_| |_|\___/ \___|_| |_|_/_/\_\
_ _ _ ___ ___ _ _ _
| \ | (_)_ __/ _ \ ___ |_ _|_ __ ___| |_ __ _| | | ___ _ __
| \| | \ \/ / | | / __| | || '_ \/ __| __/ _' | | |/ _ \ '__|
| |\ | |> <| |_| \__ \ | || | | \__ \ || (_| | | | __/ |
|_| \_|_/_/\_\\\\___/|___/ |___|_| |_|___/\__\__,_|_|_|\___|_|
$BLUE https://github.com/Frost-Phoenix $RED
! To make sure everything runs correctly DONT run as root ! $GREEN
-> '"./install.sh"' $NORMAL
"
}
get_username() {
echo -en "Enter your$GREEN username$NORMAL : $YELLOW"
read username
echo -en "$NORMAL"
echo -en "Use$YELLOW "$username"$NORMAL as ${GREEN}username${NORMAL} ? "
confirm
}
set_username() {
sed -i -e "s/${CURRENT_USERNAME}/${username}/g" ./flake.nix
sed -i -e "s/${CURRENT_USERNAME}/${username}/g" ./modules/home/audacious/config
}
get_host() {
echo -en "Choose a ${GREEN}host${NORMAL} - [${YELLOW}D${NORMAL}]esktop, [${YELLOW}L${NORMAL}]aptop or [${YELLOW}V${NORMAL}]irtual machine: "
read -n 1 -r
echo
if [[ $REPLY =~ ^[Dd]$ ]]; then
HOST='desktop'
elif [[ $REPLY =~ ^[Ll]$ ]]; then
HOST='laptop'
elif [[ $REPLY =~ ^[Vv]$ ]]; then
HOST='vm'
else
echo "Invalid choice. Please select 'D' for desktop, 'L' for laptop or 'V' for virtual machine."
exit 1
fi
echo -en "$NORMAL"
echo -en "Use the$YELLOW "$HOST"$NORMAL ${GREEN}host${NORMAL} ? "
confirm
}
install() {
echo -e "\n${RED}START INSTALL PHASE${NORMAL}\n"
sleep 0.2
# Create basic directories
echo -e "Creating folders:"
echo -e " - ${MAGENTA}~/Music${NORMAL}"
echo -e " - ${MAGENTA}~/Documents${NORMAL}"
echo -e " - ${MAGENTA}~/Pictures/wallpapers/others${NORMAL}"
mkdir -p ~/Music
mkdir -p ~/Documents
mkdir -p ~/Pictures/wallpapers/others
sleep 0.2
# Copy the wallpapers
echo -e "Copying all ${MAGENTA}wallpapers${NORMAL}"
cp -r wallpapers/wallpaper.png ~/Pictures/wallpapers
cp -r wallpapers/otherWallpaper/catppuccin/* ~/Pictures/wallpapers/others/
cp -r wallpapers/otherWallpaper/nixos/* ~/Pictures/wallpapers/others/
cp -r wallpapers/otherWallpaper/others/* ~/Pictures/wallpapers/others/
sleep 0.2
# Get the hardware configuration
echo -e "Copying ${MAGENTA}/etc/nixos/hardware-configuration.nix${NORMAL} to ${MAGENTA}./hosts/${HOST}/${NORMAL}\n"
cp /etc/nixos/hardware-configuration.nix hosts/${HOST}/hardware-configuration.nix
sleep 0.2
# Last Confirmation
echo -en "You are about to start the system build, do you want to process ? "
confirm
# Build the system (flakes + home manager)
echo -e "\nBuilding the system...\n"
sudo nixos-rebuild switch --flake .#${HOST}
}
main() {
init
print_header
get_username
set_username
get_host
install
}
main && exit 0