V0.1.2
This commit is contained in:
471
part1.sh
Executable file → Normal file
471
part1.sh
Executable file → Normal file
@@ -1,13 +1,14 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
# -------------------------------
|
|
||||||
# Helpers
|
|
||||||
# -------------------------------
|
|
||||||
info() {
|
info() {
|
||||||
printf '\n==> %s\n' "$1"
|
printf '\n==> %s\n' "$1"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
warn() {
|
||||||
|
printf 'WARN: %s\n' "$1" >&2
|
||||||
|
}
|
||||||
|
|
||||||
append_if_missing() {
|
append_if_missing() {
|
||||||
local line="$1"
|
local line="$1"
|
||||||
local file="$2"
|
local file="$2"
|
||||||
@@ -15,17 +16,148 @@ append_if_missing() {
|
|||||||
grep -qxF "$line" "$file" || echo "$line" >>"$file"
|
grep -qxF "$line" "$file" || echo "$line" >>"$file"
|
||||||
}
|
}
|
||||||
|
|
||||||
# -------------------------------
|
command_exists() {
|
||||||
# Paths and config
|
command -v "$1" >/dev/null 2>&1
|
||||||
# -------------------------------
|
}
|
||||||
|
|
||||||
|
prompt_yes_no() {
|
||||||
|
local prompt="$1"
|
||||||
|
local default="${2:-Y}"
|
||||||
|
local reply=""
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
if [[ "$default" == "Y" ]]; then
|
||||||
|
read -r -p "$prompt [Y/n] " reply
|
||||||
|
reply="${reply:-Y}"
|
||||||
|
else
|
||||||
|
read -r -p "$prompt [y/N] " reply
|
||||||
|
reply="${reply:-N}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "${reply,,}" in
|
||||||
|
y|yes)
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
n|no)
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
prompt_value() {
|
||||||
|
local prompt="$1"
|
||||||
|
local default="${2:-}"
|
||||||
|
local reply=""
|
||||||
|
|
||||||
|
if [[ -n "$default" ]]; then
|
||||||
|
read -r -p "$prompt [$default] " reply
|
||||||
|
printf '%s' "${reply:-$default}"
|
||||||
|
else
|
||||||
|
read -r -p "$prompt " reply
|
||||||
|
printf '%s' "$reply"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
prompt_required_value() {
|
||||||
|
local prompt="$1"
|
||||||
|
local default="${2:-}"
|
||||||
|
local value=""
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
value="$(prompt_value "$prompt" "$default")"
|
||||||
|
if [[ -n "$value" ]]; then
|
||||||
|
printf '%s' "$value"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
prompt_passphrase() {
|
||||||
|
local pass1=""
|
||||||
|
local pass2=""
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
read -r -s -p "Enter SSH key passphrase: " pass1
|
||||||
|
printf '\n'
|
||||||
|
read -r -s -p "Confirm SSH key passphrase: " pass2
|
||||||
|
printf '\n'
|
||||||
|
|
||||||
|
if [[ "$pass1" == "$pass2" ]]; then
|
||||||
|
printf '%s' "$pass1"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
warn "Passphrases did not match. Try again."
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
sanitize_slug() {
|
||||||
|
local value="$1"
|
||||||
|
value="${value,,}"
|
||||||
|
value="${value// /-}"
|
||||||
|
value="$(printf '%s' "$value" | tr -cd 'a-z0-9_-')"
|
||||||
|
printf '%s' "$value"
|
||||||
|
}
|
||||||
|
|
||||||
|
extract_host_from_git_url() {
|
||||||
|
local url="$1"
|
||||||
|
|
||||||
|
if [[ "$url" =~ ^ssh://([^/@]+@)?([^/:]+) ]]; then
|
||||||
|
printf '%s' "${BASH_REMATCH[2]}"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$url" =~ ^([^/@]+@)?([^:]+): ]]; then
|
||||||
|
printf '%s' "${BASH_REMATCH[2]}"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$url" =~ ^https?://([^/]+) ]]; then
|
||||||
|
printf '%s' "${BASH_REMATCH[1]}"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
install_pacman_package() {
|
||||||
|
local package="$1"
|
||||||
|
sudo pacman -S --needed --noconfirm "$package"
|
||||||
|
}
|
||||||
|
|
||||||
|
install_yay() {
|
||||||
|
if command_exists yay; then
|
||||||
|
info "yay already installed"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
info "Installing yay"
|
||||||
|
git clone https://aur.archlinux.org/yay.git "$TMP_DIR/yay"
|
||||||
|
(
|
||||||
|
cd "$TMP_DIR/yay"
|
||||||
|
makepkg -si --noconfirm
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
write_element_desktop_entry() {
|
||||||
|
local desktop_file="$1"
|
||||||
|
local display_name="$2"
|
||||||
|
local exec_line="$3"
|
||||||
|
|
||||||
|
mkdir -p "$HOME_DIR/.local/share/applications"
|
||||||
|
cat >"$desktop_file" <<EOF
|
||||||
|
[Desktop Entry]
|
||||||
|
Name=Element ($display_name)
|
||||||
|
Exec=$exec_line
|
||||||
|
Icon=io.element.Element
|
||||||
|
Type=Application
|
||||||
|
Categories=Network;InstantMessaging;Chat;IRCClient
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
HOME_DIR="$HOME"
|
HOME_DIR="$HOME"
|
||||||
BASHRC="$HOME_DIR/.bashrc"
|
BASHRC="$HOME_DIR/.bashrc"
|
||||||
SSH_KEY_PATH="$HOME_DIR/.ssh/id_ed25519"
|
|
||||||
SSH_KEY_EMAIL="hector@h3cx.dev"
|
|
||||||
DOTFILES_REPO="gitea@git.h3cx.dev:h3cx/HectorsDotFiles.git"
|
|
||||||
WALLPAPERS_REPO="gitea@git.h3cx.dev:h3cx/HectorsWallpapers.git"
|
|
||||||
CONFIG_BACKUP="$HOME_DIR/.config.backup.$(date +%Y%m%d-%H%M%S)"
|
|
||||||
WALLPAPER_TARGET="$HOME_DIR/.local/share/wallpapers"
|
|
||||||
TMP_DIR="$(mktemp -d)"
|
TMP_DIR="$(mktemp -d)"
|
||||||
|
|
||||||
cleanup() {
|
cleanup() {
|
||||||
@@ -35,137 +167,224 @@ trap cleanup EXIT
|
|||||||
|
|
||||||
cd "$HOME_DIR"
|
cd "$HOME_DIR"
|
||||||
|
|
||||||
# -------------------------------
|
info "Interactive Arch post-install"
|
||||||
# System update and packages
|
|
||||||
# -------------------------------
|
|
||||||
info "Updating system"
|
|
||||||
sudo pacman -Syu --noconfirm
|
|
||||||
|
|
||||||
info "Installing base packages"
|
if prompt_yes_no "Update the system first?" "Y"; then
|
||||||
sudo pacman -S --needed --noconfirm \
|
info "Updating system"
|
||||||
git \
|
sudo pacman -Syu --noconfirm
|
||||||
which \
|
fi
|
||||||
base-devel \
|
|
||||||
ttf-jetbrains-mono-nerd \
|
declare -a PACMAN_PACKAGES=(
|
||||||
cliphist \
|
git
|
||||||
wl-clipboard \
|
which
|
||||||
neovim \
|
base-devel
|
||||||
starship \
|
ttf-jetbrains-mono-nerd
|
||||||
lazygit \
|
cliphist
|
||||||
openssh \
|
wl-clipboard
|
||||||
alacritty \
|
neovim
|
||||||
hyprpaper \
|
starship
|
||||||
cava \
|
lazygit
|
||||||
waybar \
|
openssh
|
||||||
keyd \
|
alacritty
|
||||||
grim \
|
hyprlock
|
||||||
|
hyprpaper
|
||||||
|
cava
|
||||||
|
waybar
|
||||||
|
keyd
|
||||||
|
grim
|
||||||
chromium
|
chromium
|
||||||
|
uv
|
||||||
|
rofi
|
||||||
|
slurp
|
||||||
|
brightnessctl
|
||||||
|
playerctl
|
||||||
|
nautilus
|
||||||
|
network-manager-applet
|
||||||
|
pavucontrol
|
||||||
|
discord
|
||||||
|
fastfetch
|
||||||
|
ripgrep
|
||||||
|
fd
|
||||||
|
xdg-desktop-portal-hyprland
|
||||||
|
element-desktop
|
||||||
|
)
|
||||||
|
|
||||||
# -------------------------------
|
info "Package selection"
|
||||||
# yay
|
for package in "${PACMAN_PACKAGES[@]}"; do
|
||||||
# -------------------------------
|
if prompt_yes_no "Install package '$package'?" "Y"; then
|
||||||
if ! command -v yay >/dev/null 2>&1; then
|
install_pacman_package "$package"
|
||||||
info "Installing yay"
|
fi
|
||||||
git clone https://aur.archlinux.org/yay.git "$TMP_DIR/yay"
|
done
|
||||||
(
|
|
||||||
cd "$TMP_DIR/yay"
|
if prompt_yes_no "Install AUR helper 'yay'?" "Y"; then
|
||||||
makepkg -si --noconfirm
|
install_yay
|
||||||
)
|
|
||||||
else
|
|
||||||
info "yay already installed"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# -------------------------------
|
if command_exists yay && prompt_yes_no "Install AUR package 'zen-browser-bin'?" "Y"; then
|
||||||
# AUR packages
|
info "Installing zen-browser-bin"
|
||||||
# -------------------------------
|
yay -S --needed --noconfirm zen-browser-bin
|
||||||
info "Installing AUR packages"
|
|
||||||
yay -S --needed --noconfirm zen-browser-bin
|
|
||||||
|
|
||||||
# -------------------------------
|
|
||||||
# ble.sh
|
|
||||||
# -------------------------------
|
|
||||||
if [ ! -f "$HOME_DIR/.local/share/blesh/ble.sh" ]; then
|
|
||||||
info "Installing ble.sh"
|
|
||||||
git clone --recursive --depth 1 --shallow-submodules https://github.com/akinomyoga/ble.sh.git "$TMP_DIR/ble.sh"
|
|
||||||
make -C "$TMP_DIR/ble.sh" install PREFIX="$HOME_DIR/.local"
|
|
||||||
else
|
|
||||||
info "ble.sh already installed"
|
|
||||||
fi
|
fi
|
||||||
append_if_missing 'source -- ~/.local/share/blesh/ble.sh' "$BASHRC"
|
|
||||||
touch ~/.blerc
|
|
||||||
echo '[ -f "$HOME/.config/blerc" ] && source "$HOME/.config/blerc"' >>~/.blerc
|
|
||||||
|
|
||||||
# -------------------------------
|
if prompt_yes_no "Install ble.sh?" "Y"; then
|
||||||
# Shell setup
|
if [[ ! -f "$HOME_DIR/.local/share/blesh/ble.sh" ]]; then
|
||||||
# -------------------------------
|
info "Installing ble.sh"
|
||||||
info "Configuring shell"
|
git clone --recursive --depth 1 --shallow-submodules https://github.com/akinomyoga/ble.sh.git "$TMP_DIR/ble.sh"
|
||||||
append_if_missing 'eval "$(starship init bash)"' "$BASHRC"
|
make -C "$TMP_DIR/ble.sh" install PREFIX="$HOME_DIR/.local"
|
||||||
|
else
|
||||||
|
info "ble.sh already installed"
|
||||||
|
fi
|
||||||
|
|
||||||
|
append_if_missing 'source -- ~/.local/share/blesh/ble.sh' "$BASHRC"
|
||||||
|
touch "$HOME_DIR/.blerc"
|
||||||
|
append_if_missing '[ -f "$HOME/.config/blerc" ] && source "$HOME/.config/blerc"' "$HOME_DIR/.blerc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if prompt_yes_no "Enable starship in ~/.bashrc?" "Y"; then
|
||||||
|
info "Configuring shell"
|
||||||
|
append_if_missing 'eval "$(starship init bash)"' "$BASHRC"
|
||||||
|
fi
|
||||||
stty sane || true
|
stty sane || true
|
||||||
|
|
||||||
# -------------------------------
|
if prompt_yes_no "Configure global git identity?" "Y"; then
|
||||||
# Git setup
|
info "Configuring git"
|
||||||
# -------------------------------
|
git_name="$(prompt_required_value "Git user name:")"
|
||||||
info "Configuring git"
|
git_email="$(prompt_required_value "Git user email:")"
|
||||||
git config --global user.email "$SSH_KEY_EMAIL"
|
git config --global user.name "$git_name"
|
||||||
git config --global user.name "Hector van der Aa"
|
git config --global user.email "$git_email"
|
||||||
|
|
||||||
# -------------------------------
|
|
||||||
# SSH key setup for Gitea
|
|
||||||
# -------------------------------
|
|
||||||
info "Preparing SSH key for git access"
|
|
||||||
mkdir -p "$HOME_DIR/.ssh"
|
|
||||||
chmod 700 "$HOME_DIR/.ssh"
|
|
||||||
|
|
||||||
if [ ! -f "$SSH_KEY_PATH" ]; then
|
|
||||||
ssh-keygen -t ed25519 -C "$SSH_KEY_EMAIL" -f "$SSH_KEY_PATH" -N ""
|
|
||||||
else
|
|
||||||
info "SSH key already exists at $SSH_KEY_PATH, reusing it"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
chmod 600 "$SSH_KEY_PATH"
|
if prompt_yes_no "Create or reuse an SSH key for git access?" "Y"; then
|
||||||
chmod 644 "$SSH_KEY_PATH.pub"
|
info "Preparing SSH key"
|
||||||
|
ssh_key_path="$(prompt_required_value "SSH key path:" "$HOME_DIR/.ssh/id_ed25519")"
|
||||||
|
ssh_key_comment="$(prompt_required_value "SSH key comment/email:")"
|
||||||
|
mkdir -p "$HOME_DIR/.ssh"
|
||||||
|
chmod 700 "$HOME_DIR/.ssh"
|
||||||
|
|
||||||
if command -v ssh-keyscan >/dev/null 2>&1; then
|
if [[ ! -f "$ssh_key_path" ]]; then
|
||||||
touch "$HOME_DIR/.ssh/known_hosts"
|
ssh_key_passphrase=""
|
||||||
ssh-keyscan -H git.h3cx.dev >>"$HOME_DIR/.ssh/known_hosts" 2>/dev/null || true
|
if prompt_yes_no "Protect the SSH key with a passphrase?" "Y"; then
|
||||||
|
ssh_key_passphrase="$(prompt_passphrase)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ssh-keygen -t ed25519 -C "$ssh_key_comment" -f "$ssh_key_path" -N "$ssh_key_passphrase"
|
||||||
|
else
|
||||||
|
info "SSH key already exists at $ssh_key_path, reusing it"
|
||||||
|
fi
|
||||||
|
|
||||||
|
chmod 600 "$ssh_key_path"
|
||||||
|
chmod 644 "$ssh_key_path.pub"
|
||||||
|
|
||||||
|
if prompt_yes_no "Add a git host to ~/.ssh/known_hosts?" "Y"; then
|
||||||
|
git_host="$(prompt_required_value "Git host (for ssh-keyscan):")"
|
||||||
|
if command_exists ssh-keyscan; then
|
||||||
|
touch "$HOME_DIR/.ssh/known_hosts"
|
||||||
|
ssh-keyscan -H "$git_host" >>"$HOME_DIR/.ssh/known_hosts" 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if prompt_yes_no "Copy the public SSH key to the clipboard?" "Y"; then
|
||||||
|
if command_exists wl-copy; then
|
||||||
|
wl-copy <"$ssh_key_path.pub"
|
||||||
|
info "Your public SSH key has been copied to the clipboard"
|
||||||
|
else
|
||||||
|
warn "wl-copy is not installed; printing the key instead"
|
||||||
|
cat "$ssh_key_path.pub"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf '\nPublic key: %s.pub\n' "$ssh_key_path"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if command -v wl-copy >/dev/null 2>&1; then
|
if prompt_yes_no "Clone a dotfiles repository into ~/.config?" "Y"; then
|
||||||
wl-copy <"$SSH_KEY_PATH.pub"
|
info "Cloning dotfiles"
|
||||||
info "Your public SSH key has been copied to the clipboard"
|
dotfiles_repo="$(prompt_required_value "Dotfiles repository URL:")"
|
||||||
else
|
config_target="$(prompt_required_value "Target config directory:" "$HOME_DIR/.config")"
|
||||||
info "wl-copy not found, public key is below"
|
|
||||||
cat "$SSH_KEY_PATH.pub"
|
if [[ -d "$config_target" ]]; then
|
||||||
|
if prompt_yes_no "Back up the existing '$config_target' before replacing it?" "Y"; then
|
||||||
|
config_backup="${config_target}.backup.$(date +%Y%m%d-%H%M%S)"
|
||||||
|
mv "$config_target" "$config_backup"
|
||||||
|
info "Existing config moved to $config_backup"
|
||||||
|
elif prompt_yes_no "Delete the existing '$config_target' and replace it?" "N"; then
|
||||||
|
rm -rf "$config_target"
|
||||||
|
else
|
||||||
|
warn "Skipping dotfiles clone because target already exists"
|
||||||
|
dotfiles_repo=""
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n "$dotfiles_repo" ]]; then
|
||||||
|
git clone "$dotfiles_repo" "$config_target"
|
||||||
|
|
||||||
|
if prompt_yes_no "Add the dotfiles git host to ~/.ssh/known_hosts?" "Y"; then
|
||||||
|
if dotfiles_host="$(extract_host_from_git_url "$dotfiles_repo")"; then
|
||||||
|
mkdir -p "$HOME_DIR/.ssh"
|
||||||
|
touch "$HOME_DIR/.ssh/known_hosts"
|
||||||
|
ssh-keyscan -H "$dotfiles_host" >>"$HOME_DIR/.ssh/known_hosts" 2>/dev/null || true
|
||||||
|
else
|
||||||
|
warn "Could not determine a host from '$dotfiles_repo'"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo
|
if prompt_yes_no "Clone a wallpapers repository?" "Y"; then
|
||||||
echo "Add this SSH public key as an authorized key in your Gitea account:"
|
info "Cloning wallpapers"
|
||||||
echo " $SSH_KEY_PATH.pub"
|
wallpapers_repo="$(prompt_required_value "Wallpapers repository URL:")"
|
||||||
echo
|
wallpaper_target="$(prompt_required_value "Wallpaper target directory:" "$HOME_DIR/.local/share/wallpapers")"
|
||||||
read -rp "Press Enter once the key has been added to git.h3cx.dev... "
|
|
||||||
|
|
||||||
# -------------------------------
|
mkdir -p "$(dirname "$wallpaper_target")"
|
||||||
# Clone private repositories
|
if [[ -d "$wallpaper_target" ]]; then
|
||||||
# -------------------------------
|
if prompt_yes_no "Delete the existing wallpaper directory '$wallpaper_target' first?" "Y"; then
|
||||||
info "Replacing ~/.config with HectorsDotFiles"
|
rm -rf "$wallpaper_target"
|
||||||
if [ -d "$HOME_DIR/.config" ]; then
|
else
|
||||||
mv "$HOME_DIR/.config" "$CONFIG_BACKUP"
|
warn "Skipping wallpapers clone because target already exists"
|
||||||
info "Existing ~/.config moved to $CONFIG_BACKUP"
|
wallpapers_repo=""
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n "$wallpapers_repo" ]]; then
|
||||||
|
git clone "$wallpapers_repo" "$wallpaper_target"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
git clone "$DOTFILES_REPO" "$HOME_DIR/.config"
|
|
||||||
|
|
||||||
info "Installing wallpapers repository"
|
if prompt_yes_no "Create two custom Element desktop launchers?" "Y"; then
|
||||||
mkdir -p "$HOME_DIR/.local/share"
|
info "Creating Element desktop entries"
|
||||||
rm -rf "$WALLPAPER_TARGET"
|
element_name_default="$(prompt_required_value "Name for the default Element profile launcher:")"
|
||||||
git clone "$WALLPAPERS_REPO" "$WALLPAPER_TARGET"
|
element_name_secondary="$(prompt_required_value "Name for the second Element profile launcher:")"
|
||||||
|
element_slug_default="$(sanitize_slug "$element_name_default")"
|
||||||
|
element_slug_secondary="$(sanitize_slug "$element_name_secondary")"
|
||||||
|
element_profile_secondary="$(prompt_required_value "Secondary Element profile id:" "profile1")"
|
||||||
|
|
||||||
|
write_element_desktop_entry \
|
||||||
|
"$HOME_DIR/.local/share/applications/element-${element_slug_default}.desktop" \
|
||||||
|
"$element_name_default" \
|
||||||
|
'element-desktop --ozone-platform=x11'
|
||||||
|
|
||||||
|
write_element_desktop_entry \
|
||||||
|
"$HOME_DIR/.local/share/applications/element-${element_slug_secondary}.desktop" \
|
||||||
|
"$element_name_secondary" \
|
||||||
|
"element-desktop --profile $element_profile_secondary"
|
||||||
|
|
||||||
|
update-desktop-database "$HOME_DIR/.local/share/applications" >/dev/null 2>&1 || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
if prompt_yes_no "Enable the sshd system service?" "Y"; then
|
||||||
|
info "Enabling sshd"
|
||||||
|
sudo systemctl enable --now sshd.service
|
||||||
|
fi
|
||||||
|
|
||||||
|
if prompt_yes_no "Configure SDDM autologin?" "N"; then
|
||||||
|
info "Configuring SDDM autologin"
|
||||||
|
autologin_user="$(prompt_required_value "Autologin user:")"
|
||||||
|
autologin_session="$(prompt_required_value "Autologin session:" "hyprland-uwsm")"
|
||||||
|
sudo mkdir -p /etc/sddm.conf.d
|
||||||
|
sudo tee /etc/sddm.conf.d/autologin.conf >/dev/null <<EOF
|
||||||
|
[Autologin]
|
||||||
|
User=$autologin_user
|
||||||
|
Session=$autologin_session
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
info "Post-install section completed"
|
info "Post-install section completed"
|
||||||
echo "You may want to restart your shell or run: source ~/.bashrc"
|
printf 'You may want to restart your shell or run: source %s\n' "$BASHRC"
|
||||||
|
|
||||||
sudo mkdir -p /etc/sddm.conf.d
|
|
||||||
|
|
||||||
sudo tee /etc/sddm.conf.d/autologin.conf >/dev/null <<'EOF'
|
|
||||||
[Autologin]
|
|
||||||
User=hector
|
|
||||||
Session=hyprland-uwsm
|
|
||||||
EOF
|
|
||||||
|
|||||||
Reference in New Issue
Block a user