Rework setup script
This commit is contained in:
parent
baaa92440a
commit
b7afd9dfca
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
# opensuse-personalizer.sh
|
# opensuse-setup.sh
|
||||||
# Interactive post-install setup script for OpenSUSE installations
|
# Interactive post-install setup script for OpenSUSE installations
|
||||||
#
|
#
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -34,7 +34,7 @@ PATTERNS=(
|
|||||||
|
|
||||||
# To remove
|
# To remove
|
||||||
RM=(
|
RM=(
|
||||||
yast2-* nautilus-share MozillaFirefox-branding-openSUSE
|
yast2-* nautilus-share nautilus-sendto MozillaFirefox-branding-openSUSE
|
||||||
)
|
)
|
||||||
|
|
||||||
# To remove (and prevent reinstallation of)
|
# To remove (and prevent reinstallation of)
|
||||||
@ -51,7 +51,7 @@ IN=(
|
|||||||
papirus-icon-theme fira-code-fonts gdouros-symbola-fonts google-noto-sans-cjk-fonts google-noto-coloremoji-fonts noto-fonts fetchmsttfonts
|
papirus-icon-theme fira-code-fonts gdouros-symbola-fonts google-noto-sans-cjk-fonts google-noto-coloremoji-fonts noto-fonts fetchmsttfonts
|
||||||
|
|
||||||
# (Shell utilities)
|
# (Shell utilities)
|
||||||
fish fzf ispell zenity fortune toilet cowsay wmctrl libnotify-tools ripgrep
|
fish fzf ispell zenity fortune toilet cowsay wmctrl libnotify-tools ripgrep jq
|
||||||
|
|
||||||
# (Programs)
|
# (Programs)
|
||||||
emacs inkscape gimp shotcut audacity geary nextcloud-desktop steam blender
|
emacs inkscape gimp shotcut audacity geary nextcloud-desktop steam blender
|
||||||
@ -60,7 +60,7 @@ IN=(
|
|||||||
MozillaFirefox-branding-upstream MozillaFirefox
|
MozillaFirefox-branding-upstream MozillaFirefox
|
||||||
|
|
||||||
# (GNOME utilities)
|
# (GNOME utilities)
|
||||||
gnome-session-wayland gnome-characters gnome-disk-utility gnome-font-viewer gnome-dictionary gnome-logs gnome-screenshot gnome-weather loupe dconf-editor baobab totem menulibre Fragments
|
loupe dconf-editor baobab totem menulibre Fragments rsvg-thumbnailer gnome-session-wayland gnome-characters gnome-disk-utility gnome-font-viewer gnome-dictionary gnome-logs gnome-screenshot gnome-weather
|
||||||
|
|
||||||
# (Dependencies)
|
# (Dependencies)
|
||||||
webp-pixbuf-loader
|
webp-pixbuf-loader
|
||||||
@ -105,12 +105,7 @@ PACKMAN_REPO_URL="https://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Tumbl
|
|||||||
|
|
||||||
FLATHUB_REMOTE_URL="https://flathub.org/repo/flathub.flatpakrepo"
|
FLATHUB_REMOTE_URL="https://flathub.org/repo/flathub.flatpakrepo"
|
||||||
|
|
||||||
PERSONALIZER_REPO_URL="https://gitlab.com/jessieh/opensuse-personalizer.git"
|
REPOS_API_URL="https://git.tty.dog/api/v1/repos/search"
|
||||||
|
|
||||||
########################################
|
|
||||||
# Directories and files
|
|
||||||
|
|
||||||
PERSONALIZER_REPO_DIR=/tmp/opensuse-personalizer
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
@ -122,7 +117,7 @@ PERSONALIZER_REPO_DIR=/tmp/opensuse-personalizer
|
|||||||
# Pre-setup
|
# Pre-setup
|
||||||
|
|
||||||
# Ensure we're not running as root
|
# Ensure we're not running as root
|
||||||
if [ "${EUID}" == 0 ]; then
|
if [[ "${EUID}" == 0 ]]; then
|
||||||
echo "DO NOT RUN THIS SCRIPT AS ROOT!"
|
echo "DO NOT RUN THIS SCRIPT AS ROOT!"
|
||||||
echo "Please run this script as a regular user."
|
echo "Please run this script as a regular user."
|
||||||
exit 1
|
exit 1
|
||||||
@ -148,7 +143,6 @@ function string_eq ()
|
|||||||
function prompt_chassis_type ()
|
function prompt_chassis_type ()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
entry=$(dialog --title "Chassis Type" --stdout --no-cancel --erase-on-exit \
|
entry=$(dialog --title "Chassis Type" --stdout --no-cancel --erase-on-exit \
|
||||||
--radiolist "Confirm the chassis type for this system:" 0 0 0 \
|
--radiolist "Confirm the chassis type for this system:" 0 0 0 \
|
||||||
"Desktop" "Stationary form factor" $(string_eq "${system_chassis}" "desktop") \
|
"Desktop" "Stationary form factor" $(string_eq "${system_chassis}" "desktop") \
|
||||||
@ -460,6 +454,7 @@ function add_custom_gnome_keybinding ()
|
|||||||
|
|
||||||
# Add custom shortcuts
|
# Add custom shortcuts
|
||||||
add_custom_gnome_keybinding "Launch Terminal" "gnome-terminal" "<Super>Return"
|
add_custom_gnome_keybinding "Launch Terminal" "gnome-terminal" "<Super>Return"
|
||||||
|
add_custom_gnome_keybinding "Launch System Monitor" "gnome-system-monitor" "<Shift><Control>Escape"
|
||||||
add_custom_gnome_keybinding "Toggle Night Light" "gnome-toggle-night-light" "<Alt><Super>n"
|
add_custom_gnome_keybinding "Toggle Night Light" "gnome-toggle-night-light" "<Alt><Super>n"
|
||||||
|
|
||||||
# (OPTIONAL) Add custom shortcuts
|
# (OPTIONAL) Add custom shortcuts
|
||||||
@ -490,6 +485,7 @@ gsettings set org.gnome.desktop.interface font-name "Cantarell 10"
|
|||||||
gsettings set org.gnome.desktop.interface document-font-name "Cantarell 10"
|
gsettings set org.gnome.desktop.interface document-font-name "Cantarell 10"
|
||||||
gsettings set org.gnome.desktop.interface monospace-font-name "Fira Code 10"
|
gsettings set org.gnome.desktop.interface monospace-font-name "Fira Code 10"
|
||||||
|
|
||||||
|
gsettings set org.gnome.desktop.wm.preferences auto-raise true
|
||||||
gsettings set org.gnome.desktop.wm.preferences action-middle-click-titlebar "minimize"
|
gsettings set org.gnome.desktop.wm.preferences action-middle-click-titlebar "minimize"
|
||||||
|
|
||||||
gsettings set org.gnome.desktop.notifications show-in-lock-screen false
|
gsettings set org.gnome.desktop.notifications show-in-lock-screen false
|
||||||
@ -553,6 +549,54 @@ done
|
|||||||
#
|
#
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
|
########################################
|
||||||
|
# Projects folder setup
|
||||||
|
|
||||||
|
echo "Setting up Projects folder..."
|
||||||
|
|
||||||
|
# Ensure ${HOME}/Projects exists and set it as the working directory
|
||||||
|
PROJECTS_DIR=${HOME}/Projects
|
||||||
|
if [ ! -d ${PROJECTS_DIR} ]; then
|
||||||
|
mkdir ${PROJECTS_DIR}
|
||||||
|
gio set ${PROJECTS_DIR} metadata::custom-icon-name folder-code
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Perform a blobless clone of all public repos at git.tty.dog
|
||||||
|
API_URL="https://git.tty.dog/api/v1/repos/search"
|
||||||
|
for CLONE_URL in $(curl -s "${API_URL}?uid=1" | jq -r ".data.[].clone_url"); do
|
||||||
|
git clone --no-checkout --filter=blob:none "${CLONE_URL}" ${PROJECTS_DIR}
|
||||||
|
done
|
||||||
|
|
||||||
|
########################################
|
||||||
|
# Dotfiles
|
||||||
|
|
||||||
|
echo "Setting up dotfiles..."
|
||||||
|
|
||||||
|
# Download dotfiles
|
||||||
|
DOTFILES_SOURCE_DIR=${PROJECTS_DIR}/dot-files
|
||||||
|
git -C ${DOTFILES_SOURCE_DIR} checkout
|
||||||
|
|
||||||
|
# Link application entries
|
||||||
|
mkdir -p ${HOME}/.local/share/applications
|
||||||
|
ln -s ${DOTFILES_SOURCE_DIR}/applications/* ${HOME}/.local/share/applications
|
||||||
|
|
||||||
|
# Link scripts
|
||||||
|
mkdir -p ${HOME}/.local/bin
|
||||||
|
ln -s ${DOTFILES_SOURCE_DIR}/bin/* ${HOME}/.local/bin
|
||||||
|
|
||||||
|
# Copy configuration files
|
||||||
|
mkdir -p ${HOME}/.config
|
||||||
|
cp -r ${DOTFILES_SOURCE_DIR}/config/* ${HOME}/.config/
|
||||||
|
|
||||||
|
# (OPTIONAL) Remove unneeded files, depending on features selected
|
||||||
|
if [[ "${detected_features[@]}" != *'Touchpad'* ]]; then
|
||||||
|
rm ${HOME}/.local/bin/gnome-toggle-touchpad-lock
|
||||||
|
fi
|
||||||
|
if [[ "${detected_features[@]}" != *'Windows'* ]]; then
|
||||||
|
rm ${HOME}/.local/share/applications/windows.desktop
|
||||||
|
rm ${HOME}/.local/bin/reboot-windows
|
||||||
|
fi
|
||||||
|
|
||||||
########################################
|
########################################
|
||||||
# Emacs
|
# Emacs
|
||||||
|
|
||||||
@ -561,10 +605,18 @@ echo "Setting up Emacs..."
|
|||||||
# Remove any vendor-provided Emacs configuration files
|
# Remove any vendor-provided Emacs configuration files
|
||||||
rm ${HOME}/.emacs ${HOME}/.emacs.d/init.el
|
rm ${HOME}/.emacs ${HOME}/.emacs.d/init.el
|
||||||
|
|
||||||
# Download Emacs configuration
|
# Download and link Emacs configuration
|
||||||
EMACS_CONFIG_DIR=${HOME}/.config/emacs
|
EMACS_CONFIG_DIR=${HOME}/.config/emacs
|
||||||
|
EMACS_SOURCE_DIR=${PROJECTS_DIR}/dot-emacs
|
||||||
mkdir -p ${EMACS_CONFIG_DIR}
|
mkdir -p ${EMACS_CONFIG_DIR}
|
||||||
wget https://jessieh.net/emacs -O ${EMACS_CONFIG_DIR}/init.el
|
git -C ${EMACS_SOURCE_DIR} checkout
|
||||||
|
ln -s ${EMACS_SOURCE_DIR}/init.el ${EMACS_CONFIG_DIR}/init.el
|
||||||
|
|
||||||
|
# Download and link Tempel templates for Emacs...
|
||||||
|
TEMPEL_CONFIG_DIR=${HOME}/.config/emacs/templates
|
||||||
|
TEMPEL_SOURCE_DIR=${PROJECTS_DIR}/tempel-templates
|
||||||
|
git -C ${TEMPEL_SOURCE_DIR} checkout
|
||||||
|
ln -s ${TEMPEL_SOURCE_DIR} ${TEMPEL_CONFIG_DIR}
|
||||||
|
|
||||||
# Enable and start Emacs daemon
|
# Enable and start Emacs daemon
|
||||||
systemctl --user enable emacs.service
|
systemctl --user enable emacs.service
|
||||||
@ -575,45 +627,16 @@ systemctl --user start emacs.service
|
|||||||
|
|
||||||
echo "Setting up Fish..."
|
echo "Setting up Fish..."
|
||||||
|
|
||||||
# Download Fish configuration
|
# Download and link Fish configuration
|
||||||
FISH_CONFIG_DIR=${HOME}/.config/fish
|
FISH_CONFIG_DIR=${HOME}/.config/fish
|
||||||
|
FISH_SOURCE_DIR=${PROJECTS_DIR}/dot-fish
|
||||||
mkdir -p ${FISH_CONFIG_DIR}
|
mkdir -p ${FISH_CONFIG_DIR}
|
||||||
wget https://jessieh.net/fish -O ${FISH_CONFIG_DIR}/config.fish
|
git -C ${FISH_SOURCE_DIR} checkout
|
||||||
|
ln -s ${FISH_SOURCE_DIR}/config.fish ${FISH_CONFIG_DIR}/config.fish
|
||||||
|
|
||||||
# Set Fish as default shell
|
# Set Fish as default shell
|
||||||
sudo chsh ${USER} -s $(which fish)
|
sudo chsh ${USER} -s $(which fish)
|
||||||
|
|
||||||
########################################
|
|
||||||
# Utility scripts
|
|
||||||
|
|
||||||
echo "Installing scripts..."
|
|
||||||
|
|
||||||
# Clone personalizer repo containing scripts, desktop entries, etc. to temporary folder
|
|
||||||
git clone "${PERSONALIZER_REPO_URL}" "${PERSONALIZER_REPO_DIR}"
|
|
||||||
|
|
||||||
if [[ "${detected_features[@]}" != *'Touchpad'* ]]; then
|
|
||||||
rm ${PERSONALIZER_REPO_DIR}/scripts/gnome-toggle-touchpad-lock
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "${detected_features[@]}" != *'Windows'* ]]; then
|
|
||||||
rm ${PERSONALIZER_REPO_DIR}/scripts/reboot-windows
|
|
||||||
fi
|
|
||||||
|
|
||||||
chmod +x ${PERSONALIZER_REPO_DIR}/scripts/*
|
|
||||||
sudo cp ${PERSONALIZER_REPO_DIR}/scripts/* /usr/bin
|
|
||||||
|
|
||||||
########################################
|
|
||||||
# Desktop entries
|
|
||||||
|
|
||||||
echo "Installing desktop entries..."
|
|
||||||
|
|
||||||
if [[ "${detected_features[@]}" != *'Windows'* ]]; then
|
|
||||||
rm ${PERSONALIZER_REPO_DIR}/desktop_entries/windows.desktop
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir -p ${HOME}/.local/share/applications/
|
|
||||||
cp ${PERSONALIZER_REPO_DIR}/desktop-entries/* ${HOME}/.local/share/applications/
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
# Post-setup suggestions
|
# Post-setup suggestions
|
Loading…
Reference in New Issue
Block a user