From 611ab14ca2046e006a1037c72881a5b77b6cf369 Mon Sep 17 00:00:00 2001 From: Guus van Meerveld Date: Tue, 23 May 2023 23:15:33 +0000 Subject: [PATCH] create installer --- applications.conf.yaml | 72 -- config/.zshrc | 3 +- config/bspwmrc | 3 + config/neovim/lazy-lock.json | 2 +- config/pacman.conf | 2 - dotfiles | 17 +- install-server.yaml | 21 - install_scripts/install-applications | 14 - install_scripts/install-packages | 3 - install_scripts/post-install | 24 - install_scripts/pre-install | 4 - installer | 87 +++ install => link | 3 +- install-root.conf.yaml => link-root.conf.yaml | 3 + install.conf.yaml => link.conf.yaml | 6 +- packages.conf.yaml | 49 -- packages/applications/arch | 48 ++ packages/utils/arch | 12 + packages/vscode | 13 + scripts/configuration/applications | 20 + scripts/configuration/utils | 16 + scripts/install-docker | 656 ------------------ scripts/install-rofi | 11 - scripts/install-vim | 7 - scripts/install/arch | 26 + scripts/install/docker | 0 scripts/install/rofi | 9 + scripts/install/vim | 7 + scripts/install/vscode | 10 + scripts/{install-yay => install/yay} | 2 +- scripts/{install-zsh => install/zsh} | 7 +- 31 files changed, 268 insertions(+), 889 deletions(-) delete mode 100644 applications.conf.yaml delete mode 100644 install-server.yaml delete mode 100755 install_scripts/install-applications delete mode 100755 install_scripts/install-packages delete mode 100755 install_scripts/post-install delete mode 100755 install_scripts/pre-install create mode 100755 installer rename install => link (71%) rename install-root.conf.yaml => link-root.conf.yaml (84%) rename install.conf.yaml => link.conf.yaml (87%) delete mode 100644 packages.conf.yaml create mode 100644 packages/applications/arch create mode 100644 packages/utils/arch create mode 100644 packages/vscode create mode 100755 scripts/configuration/applications create mode 100755 scripts/configuration/utils delete mode 100755 scripts/install-docker delete mode 100755 scripts/install-rofi delete mode 100755 scripts/install-vim create mode 100755 scripts/install/arch create mode 100644 scripts/install/docker create mode 100755 scripts/install/rofi create mode 100755 scripts/install/vim create mode 100755 scripts/install/vscode rename scripts/{install-yay => install/yay} (56%) rename scripts/{install-zsh => install/zsh} (75%) diff --git a/applications.conf.yaml b/applications.conf.yaml deleted file mode 100644 index e0409cb..0000000 --- a/applications.conf.yaml +++ /dev/null @@ -1,72 +0,0 @@ -- yay: - # Docker - - docker - # - docker-compose - - # Browser - # - ungoogled-chromium - - librewolf - - # - buildnotify - - # Spotify - - psst-git - - - neovim - - python-pynvim - - - flameshot - - - webcord-git - - - syncthing-bin - - # Development - - android-studio - - vscodium-bin - - vscodium-bin-marketplace - - - steam - - - prismlauncher - - # Utils - - htop - - bottom - - - neofetch - - - doggo-bin - - net-tools - - - unzip - - - openssh - -- vscode: - esbenp.prettier-vscode: - status: install - ms-vscode.atom-keybindings: - status: install - pkief.material-icon-theme: - status: install - dart-code.dart-code: - status: install - dart-code.flutter: - status: install - orta.vscode-jest: - status: install - ms-azuretools.vscode-docker: - status: install - syler.sass-indented: - status: install - redhat.vscode-xml: - status: install - dbaeumer.vscode-eslint: - status: install - seansassenrath.vscode-theme-superonedark: - status: install - mosbasik.sxhkdrc-syntax: - status: install - dlasagno.rasi: - status: install diff --git a/config/.zshrc b/config/.zshrc index 1c448ab..b71ad94 100644 --- a/config/.zshrc +++ b/config/.zshrc @@ -24,7 +24,7 @@ export PATH="$PNPM_HOME:$PYTHON_HOME:$PATH" source ~/.aliases # Plugins -plugins=(git colorize docker yarn debian vscode sudo alias-finder archlinux zsh-histdb zsh-autosuggestions wakeonlan vi-mode) +plugins=(git colorize docker yarn debian vscode sudo alias-finder archlinux zsh-histdb zsh-autosuggestions zoxide wakeonlan zsh-syntax-highlighting) # Oh-my-zsh source $ZSH/oh-my-zsh.sh @@ -41,7 +41,6 @@ bindkey "^y" redo bindkey "^H" backward-kill-word bindkey "^ " autosuggest-accept -eval "$(zoxide init zsh)" # Powerlevel10k source ~/.p10k.zsh diff --git a/config/bspwmrc b/config/bspwmrc index 9b82746..ff3c9c0 100755 --- a/config/bspwmrc +++ b/config/bspwmrc @@ -30,5 +30,8 @@ bspc config gapless_monocle true bspc rule -a android-studio state=floating border=off follow=on bspc rule -a librewolf desktop=^3 bspc rule -a Chromium desktop=^3 +bspc rule -a VSCodium desktop=^4 bspc rule -a Spotify desktop=^2 bspc rule -a discord desktop=^1 +bspc rule -a Psst desktop=^2 +bspc rule -a WebCord desktop=^1 diff --git a/config/neovim/lazy-lock.json b/config/neovim/lazy-lock.json index 888121e..cebfb76 100644 --- a/config/neovim/lazy-lock.json +++ b/config/neovim/lazy-lock.json @@ -8,7 +8,7 @@ "fzf.vim": { "branch": "master", "commit": "dc71692255b62d1f67dc55c8e51ab1aa467b1d46" }, "gruvbox": { "branch": "master", "commit": "bf2885a95efdad7bd5e4794dd0213917770d79b7" }, "gruvbox-material": { "branch": "master", "commit": "a0dc84816b913e9afcf6b8a5ade304bfb47a6f65" }, - "lazy.nvim": { "branch": "main", "commit": "8d18ef44e769e98a8dc974ca85275de1d8cc7c04" }, + "lazy.nvim": { "branch": "main", "commit": "6610b15dfd76f7992423916e2b87f031881d7b25" }, "lspkind.nvim": { "branch": "master", "commit": "c68b3a003483cf382428a43035079f78474cd11e" }, "lualine.nvim": { "branch": "master", "commit": "e99d733e0213ceb8f548ae6551b04ae32e590c80" }, "nvim-cmp": { "branch": "main", "commit": "01f697a68905f9dcae70960a9eb013695a17f9a2" }, diff --git a/config/pacman.conf b/config/pacman.conf index 365ee57..7bcb1d0 100644 --- a/config/pacman.conf +++ b/config/pacman.conf @@ -30,5 +30,3 @@ Include = /etc/pacman.d/mirrorlist [multilib] Include = /etc/pacman.d/mirrorlist -[chaotic-aur] -Include = /etc/pacman.d/chaotic-mirrorlist diff --git a/dotfiles b/dotfiles index bfc0b51..2222531 100755 --- a/dotfiles +++ b/dotfiles @@ -1,9 +1,5 @@ #!/bin/bash -export ROOT=~/dotfiles -export DOTFILES=$ROOT - -export SCRIPTS=$DOTFILES/install_scripts case $1 in edit) @@ -15,18 +11,7 @@ case $1 in ;; install) - sudo pacman -Sy python --noconfirm - - $SCRIPTS/pre-install - - $SCRIPTS/install-packages - - # if (( $3 == "applications" )) - # then - $SCRIPTS/install-applications - # fi - - $SCRIPTS/post-install + ~/dotfiles/installer ;; install-server) diff --git a/install-server.yaml b/install-server.yaml deleted file mode 100644 index 7c78361..0000000 --- a/install-server.yaml +++ /dev/null @@ -1,21 +0,0 @@ -- defaults: - link: - create: true - relink: true - force: true - -- clean: ["~"] - -- link: - ~/.aliases: config/.aliases.sh - ~/.config/nvim: config/neovim - -- shell: - - [git submodule update --init --recursive, Installing submodules] - - [scripts/install-zsh, Installing zsh] - - [scripts/chuser, Update shell] - - [scripts/install-vim, Install NeoVim and plugins] - - [scripts/install-docker, Install Docker] - -- create: - - ~/.config diff --git a/install_scripts/install-applications b/install_scripts/install-applications deleted file mode 100755 index f6731d1..0000000 --- a/install_scripts/install-applications +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -$ROOT/install -p dotbot-yay/yay.py -p dotbot-vscode/vscode.py -c applications.conf.yaml - -# Spotifyd -sudo systemctl enable spotifyd --machine=$USER@.host --user --now - -# Syncthing -sudo systemctl enable --now syncthing@$USER - -# Docker -sudo usermod -aG docker $USER - -$ROOT/scripts/install-vim diff --git a/install_scripts/install-packages b/install_scripts/install-packages deleted file mode 100755 index aefadc1..0000000 --- a/install_scripts/install-packages +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -$ROOT/install -p dotbot-yay/yay.py -c $DOTFILES/packages.conf.yaml diff --git a/install_scripts/post-install b/install_scripts/post-install deleted file mode 100755 index ca4b85b..0000000 --- a/install_scripts/post-install +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash - -# NetworkManager -sudo systemctl enable NetworkManager --now - -# Flutter -sudo gpasswd -a $USER flutterusers - -# sddm -sudo systemctl enable ly - -# Micro -micro -plugin install quoter filemanager - -# ZSH -$ROOT/scripts/install-zsh - -$ROOT/scripts/chaotic-aur - -# Update user -$ROOT/scripts/chuser - -# Set locale -$ROOT/scripts/set-locale diff --git a/install_scripts/pre-install b/install_scripts/pre-install deleted file mode 100755 index d2ca1ee..0000000 --- a/install_scripts/pre-install +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -$ROOT/install -sudo $ROOT/install -c "$DOTFILES/install-root.conf.yaml" diff --git a/installer b/installer new file mode 100755 index 0000000..54297e3 --- /dev/null +++ b/installer @@ -0,0 +1,87 @@ +#!/bin/bash +if ping -q -c 1 -W 1 8.8.8.8 &>/dev/null; then + if sudo -n true 2>/dev/null; then + if [[ -f /etc/arch-release ]]; then + echo "Arch Linux detected" + + distro="arch" + + if command -v python &>/dev/null; then + echo "Python is already installed, proceeding" + else + echo "Installing python..." + + sudo pacman -Sy python --noconfirm > /dev/null + fi + fi + + if [[ -f /etc/debian_version ]]; then + echo "Debian detected" + distro="debian" + + echo "Updating system..." + + sudo apt update -y > /dev/null + + if command -v python &>/dev/null; then + echo "Python is already installed, proceeding" + else + echo "Installing python..." + + sudo apt install python3 -y > /dev/null + fi + fi + + if [[ -f /etc/redhat-release ]]; then + echo "Redhat linux detected" + distro="redhat" + + echo "Updating system..." + + sudo dnf update -y > /dev/null + + if command -v python &>/dev/null; then + echo "Python is already installed, proceeding" + else + echo "Installing python..." + + sudo dnf install python3 -y > /dev/null + fi + fi + + dotfiles="$HOME/dotfiles" + + read -p "Is '$dotfiles' the directory where your dotfiles are located? (y/N): " response + + if [[ $response =~ ^[Yy]$ ]]; then + echo "Proceeding" + else + read -p "Please enter the correct directory path: " new_directory + dotfiles="$new_directory" + fi + + scripts="$dotfiles/scripts" + install_scripts="$scripts/install" + + echo "Linking all config files to their respective directories..." + + $dotfiles/link -c $dotfiles/link.conf.yaml + + echo "Linking all of the files that need root permissions to their respective directories..." + + sudo $dotfiles/link -c $dotfiles/link-root.conf.yaml + + if [[ $distro == "arch" ]]; then + $install_scripts/arch $dotfiles + fi + + $scripts/configuration/utils $dotfiles + $scripts/configuration/applications $dotfiles + + + else + echo "You don't have sudo rights, exiting..." + fi +else + echo "No internet connection available, exiting..." +fi diff --git a/install b/link similarity index 71% rename from install rename to link index 401a274..b2757ba 100755 --- a/install +++ b/link @@ -2,7 +2,6 @@ set -e -CONFIG="$DOTFILES/install.conf.yaml" DOTBOT_DIR="dotbot" PLUGIN_YAY="dotbot-yay/yay.py" @@ -14,4 +13,4 @@ cd "${BASEDIR}" git -C "${DOTBOT_DIR}" submodule sync --quiet --recursive git submodule update --init --recursive "${DOTBOT_DIR}" -"${BASEDIR}/${DOTBOT_DIR}/${DOTBOT_BIN}" -d "${BASEDIR}" -c "${CONFIG}" "${@}" +"${BASEDIR}/${DOTBOT_DIR}/${DOTBOT_BIN}" -d "${BASEDIR}" "${@}" diff --git a/install-root.conf.yaml b/link-root.conf.yaml similarity index 84% rename from install-root.conf.yaml rename to link-root.conf.yaml index ead6f85..37ff9cd 100644 --- a/install-root.conf.yaml +++ b/link-root.conf.yaml @@ -11,7 +11,10 @@ /usr/share/backgrounds/wallpaper.jpg: wallpaper.jpg + /sbin/vscode: /sbin/codium + /bin/dotfiles: dotfiles + /bin/open-captive: scripts/open-captive /usr/share/icons/default/index.theme: config/cursors.theme diff --git a/install.conf.yaml b/link.conf.yaml similarity index 87% rename from install.conf.yaml rename to link.conf.yaml index 93c6ed6..a744c8a 100644 --- a/install.conf.yaml +++ b/link.conf.yaml @@ -3,6 +3,9 @@ create: true relink: true force: true + shell: + stderr: true + stdout: true - clean: ["~"] @@ -37,9 +40,6 @@ - shell: - [git submodule update --init --recursive, Installing submodules] - - [scripts/install-yay, Installing yay] - - [scripts/install-rofi, Installing Rofi] - # - [scripts/ungoogled_chromium, Setting up ungoogled chromium repo] - create: - ~/.config diff --git a/packages.conf.yaml b/packages.conf.yaml deleted file mode 100644 index 72486bf..0000000 --- a/packages.conf.yaml +++ /dev/null @@ -1,49 +0,0 @@ -- yay: - # Shell - - kitty - - zsh - - - mconnect-git - - # Theming - - equilux-theme - - mcmojave-cursors-git - - # Xorg + video - - ly - - xorg-server - - xorg-xinit - - xorg-xsetroot - - libva-mesa-driver - - mesa-vdpau - - amf-amdgpu-pro - - dunst - - # WM - - bspwm - - sxhkd - - polybar - - picom - - feh - - rofi - - papirus-icon-theme - - playerctl - - zscroll-git - - # Qt - - qt5-graphicaleffects - - qt5-quickcontrols2 - - # Networking - - networkmanager - - # Fonts - - ttf-fira-code - - ttf-material-design-icons - - noto-fonts-emoji - - # Locales - - locale-en-nl-git - - # Development - - flutter diff --git a/packages/applications/arch b/packages/applications/arch new file mode 100644 index 0000000..2d267dc --- /dev/null +++ b/packages/applications/arch @@ -0,0 +1,48 @@ +librewolf-bin +psst-git +webcord-bin +syncthing-bin +vscodium-bin +vscodium-bin-marketplace + +steam +prismlauncher-bin + +pipewire +pipewire-pulse +wireplumber + +bspwm +sxhkd +polybar +picom +feh +rofi +papirus-icon-theme +playerctl +zscroll-git + +ly +xorg-server +xorg-xinit +xorg-xsetroot +libva-mesa-driver +mesa-vdpau +amf-amdgpu-pro +dunst + +equilux-theme +mcmojave-cursors-git + +mconnect-git + +kitty + +ttf-fira-code +ttf-material-design-icons +noto-fonts-emoji + +locale-en-nl-git + +flameshot + diff --git a/packages/utils/arch b/packages/utils/arch new file mode 100644 index 0000000..5c805fa --- /dev/null +++ b/packages/utils/arch @@ -0,0 +1,12 @@ +zsh +zoxide +networkmanager +htop +bottom +neofetch +doggo-bin +net-tools +unzip +openssh +neovim +python-pynvim diff --git a/packages/vscode b/packages/vscode new file mode 100644 index 0000000..495458e --- /dev/null +++ b/packages/vscode @@ -0,0 +1,13 @@ +esbenp.prettier-vscode +ms-vscode.atom-keybindings +pkief.material-icon-theme +orta.vscode-jest +ms-azuretools.vscode-docker +syler.sass-indented +dbaeumer.vscode-eslint +seansassenrath.vscode-theme-superonedark +mosbasik.sxhkdrc-syntax +redhat.java +ms-python.python +rust-lang.rust-analyzer +vscodevim.vim \ No newline at end of file diff --git a/scripts/configuration/applications b/scripts/configuration/applications new file mode 100755 index 0000000..e3bbb2a --- /dev/null +++ b/scripts/configuration/applications @@ -0,0 +1,20 @@ +#!/bin/bash + +dotfiles=$1 + +scripts=$dotfiles/scripts + +echo "Enabling syncthing..." +sudo systemctl enable --now syncthing@$USER + +echo "Enabling pipewire pulse backend..." +systemctl enable --now --user pipewire-pulse + +echo "Adding user to docker group..." +sudo usermod -aG docker $USER + +echo "Enabling ly..." +sudo systemctl enable ly + +echo "Installing vscode extensions..." +$scripts/install/vscode $dotfiles \ No newline at end of file diff --git a/scripts/configuration/utils b/scripts/configuration/utils new file mode 100755 index 0000000..ec626dc --- /dev/null +++ b/scripts/configuration/utils @@ -0,0 +1,16 @@ +#!/bin/bash + +dotfiles=$1 + +scripts=$dotfiles/scripts + +echo "Updating user shell..." +$scripts/chuser + +echo "Enabling network manager..." +sudo systemctl enable NetworkManager --now + +# Neovim +$scripts/install/vim + +$scripts/install/zsh $dotfiles \ No newline at end of file diff --git a/scripts/install-docker b/scripts/install-docker deleted file mode 100755 index 948355f..0000000 --- a/scripts/install-docker +++ /dev/null @@ -1,656 +0,0 @@ -#!/bin/sh -set -e -# Docker CE for Linux installation script -# -# See https://docs.docker.com/engine/install/ for the installation steps. -# -# This script is meant for quick & easy install via: -# $ curl -fsSL https://get.docker.com -o get-docker.sh -# $ sh get-docker.sh -# -# For test builds (ie. release candidates): -# $ curl -fsSL https://test.docker.com -o test-docker.sh -# $ sh test-docker.sh -# -# NOTE: Make sure to verify the contents of the script -# you downloaded matches the contents of install.sh -# located at https://github.com/docker/docker-install -# before executing. -# -# Git commit from https://github.com/docker/docker-install when -# the script was uploaded (Should only be modified by upload job): -SCRIPT_COMMIT_SHA="1d97565eca92bb523082b7d4f530c74104e05d35" - -# strip "v" prefix if present -VERSION="${VERSION#v}" - -# The channel to install from: -# * nightly -# * test -# * stable -# * edge (deprecated) -DEFAULT_CHANNEL_VALUE="stable" -if [ -z "$CHANNEL" ]; then - CHANNEL=$DEFAULT_CHANNEL_VALUE -fi - -DEFAULT_DOWNLOAD_URL="https://download.docker.com" -if [ -z "$DOWNLOAD_URL" ]; then - DOWNLOAD_URL=$DEFAULT_DOWNLOAD_URL -fi - -DEFAULT_REPO_FILE="docker-ce.repo" -if [ -z "$REPO_FILE" ]; then - REPO_FILE="$DEFAULT_REPO_FILE" -fi - -mirror='' -DRY_RUN=${DRY_RUN:-} -while [ $# -gt 0 ]; do - case "$1" in - --mirror) - mirror="$2" - shift - ;; - --dry-run) - DRY_RUN=1 - ;; - --*) - echo "Illegal option $1" - ;; - esac - shift $(( $# > 0 ? 1 : 0 )) -done - -case "$mirror" in - Aliyun) - DOWNLOAD_URL="https://mirrors.aliyun.com/docker-ce" - ;; - AzureChinaCloud) - DOWNLOAD_URL="https://mirror.azure.cn/docker-ce" - ;; -esac - -command_exists() { - command -v "$@" > /dev/null 2>&1 -} - -# version_gte checks if the version specified in $VERSION is at least -# the given CalVer (YY.MM) version. returns 0 (success) if $VERSION is either -# unset (=latest) or newer or equal than the specified version. Returns 1 (fail) -# otherwise. -# -# examples: -# -# VERSION=20.10 -# version_gte 20.10 // 0 (success) -# version_gte 19.03 // 0 (success) -# version_gte 21.10 // 1 (fail) -version_gte() { - if [ -z "$VERSION" ]; then - return 0 - fi - eval calver_compare "$VERSION" "$1" -} - -# calver_compare compares two CalVer (YY.MM) version strings. returns 0 (success) -# if version A is newer or equal than version B, or 1 (fail) otherwise. Patch -# releases and pre-release (-alpha/-beta) are not taken into account -# -# examples: -# -# calver_compare 20.10 19.03 // 0 (success) -# calver_compare 20.10 20.10 // 0 (success) -# calver_compare 19.03 20.10 // 1 (fail) -calver_compare() ( - set +x - - yy_a="$(echo "$1" | cut -d'.' -f1)" - yy_b="$(echo "$2" | cut -d'.' -f1)" - if [ "$yy_a" -lt "$yy_b" ]; then - return 1 - fi - if [ "$yy_a" -gt "$yy_b" ]; then - return 0 - fi - mm_a="$(echo "$1" | cut -d'.' -f2)" - mm_b="$(echo "$2" | cut -d'.' -f2)" - if [ "${mm_a#0}" -lt "${mm_b#0}" ]; then - return 1 - fi - - return 0 -) - -is_dry_run() { - if [ -z "$DRY_RUN" ]; then - return 1 - else - return 0 - fi -} - -is_wsl() { - case "$(uname -r)" in - *microsoft* ) true ;; # WSL 2 - *Microsoft* ) true ;; # WSL 1 - * ) false;; - esac -} - -is_darwin() { - case "$(uname -s)" in - *darwin* ) true ;; - *Darwin* ) true ;; - * ) false;; - esac -} - -deprecation_notice() { - distro=$1 - distro_version=$2 - echo - printf "\033[91;1mDEPRECATION WARNING\033[0m\n" - printf " This Linux distribution (\033[1m%s %s\033[0m) reached end-of-life and is no longer supported by this script.\n" "$distro" "$distro_version" - echo " No updates or security fixes will be released for this distribution, and users are recommended" - echo " to upgrade to a currently maintained version of $distro." - echo - printf "Press \033[1mCtrl+C\033[0m now to abort this script, or wait for the installation to continue." - echo - sleep 10 -} - -get_distribution() { - lsb_dist="" - # Every system that we officially support has /etc/os-release - if [ -r /etc/os-release ]; then - lsb_dist="$(. /etc/os-release && echo "$ID")" - fi - # Returning an empty string here should be alright since the - # case statements don't act unless you provide an actual value - echo "$lsb_dist" -} - -echo_docker_as_nonroot() { - if is_dry_run; then - return - fi - if command_exists docker && [ -e /var/run/docker.sock ]; then - ( - set -x - $sh_c 'docker version' - ) || true - fi - - # intentionally mixed spaces and tabs here -- tabs are stripped by "<<-EOF", spaces are kept in the output - echo - echo "================================================================================" - echo - if version_gte "20.10"; then - echo "To run Docker as a non-privileged user, consider setting up the" - echo "Docker daemon in rootless mode for your user:" - echo - echo " dockerd-rootless-setuptool.sh install" - echo - echo "Visit https://docs.docker.com/go/rootless/ to learn about rootless mode." - echo - fi - echo - echo "To run the Docker daemon as a fully privileged service, but granting non-root" - echo "users access, refer to https://docs.docker.com/go/daemon-access/" - echo - echo "WARNING: Access to the remote API on a privileged Docker daemon is equivalent" - echo " to root access on the host. Refer to the 'Docker daemon attack surface'" - echo " documentation for details: https://docs.docker.com/go/attack-surface/" - echo - echo "================================================================================" - echo -} - -# Check if this is a forked Linux distro -check_forked() { - - # Check for lsb_release command existence, it usually exists in forked distros - if command_exists lsb_release; then - # Check if the `-u` option is supported - set +e - lsb_release -a -u > /dev/null 2>&1 - lsb_release_exit_code=$? - set -e - - # Check if the command has exited successfully, it means we're in a forked distro - if [ "$lsb_release_exit_code" = "0" ]; then - # Print info about current distro - cat <<-EOF - You're using '$lsb_dist' version '$dist_version'. - EOF - - # Get the upstream release info - lsb_dist=$(lsb_release -a -u 2>&1 | tr '[:upper:]' '[:lower:]' | grep -E 'id' | cut -d ':' -f 2 | tr -d '[:space:]') - dist_version=$(lsb_release -a -u 2>&1 | tr '[:upper:]' '[:lower:]' | grep -E 'codename' | cut -d ':' -f 2 | tr -d '[:space:]') - - # Print info about upstream distro - cat <<-EOF - Upstream release is '$lsb_dist' version '$dist_version'. - EOF - else - if [ -r /etc/debian_version ] && [ "$lsb_dist" != "ubuntu" ] && [ "$lsb_dist" != "raspbian" ]; then - if [ "$lsb_dist" = "osmc" ]; then - # OSMC runs Raspbian - lsb_dist=raspbian - else - # We're Debian and don't even know it! - lsb_dist=debian - fi - dist_version="$(sed 's/\/.*//' /etc/debian_version | sed 's/\..*//')" - case "$dist_version" in - 11) - dist_version="bullseye" - ;; - 10) - dist_version="buster" - ;; - 9) - dist_version="stretch" - ;; - 8) - dist_version="jessie" - ;; - esac - fi - fi - fi -} - -do_install() { - echo "# Executing docker install script, commit: $SCRIPT_COMMIT_SHA" - - if command_exists docker; then - cat >&2 <<-'EOF' - Warning: the "docker" command appears to already exist on this system. - - If you already have Docker installed, this script can cause trouble, which is - why we're displaying this warning and provide the opportunity to cancel the - installation. - - If you installed the current Docker package using this script and are using it - again to update Docker, you can safely ignore this message. - - You may press Ctrl+C now to abort this script. - EOF - ( set -x; sleep 20 ) - fi - - user="$(id -un 2>/dev/null || true)" - - sh_c='sh -c' - if [ "$user" != 'root' ]; then - if command_exists sudo; then - sh_c='sudo -E sh -c' - elif command_exists su; then - sh_c='su -c' - else - cat >&2 <<-'EOF' - Error: this installer needs the ability to run commands as root. - We are unable to find either "sudo" or "su" available to make this happen. - EOF - exit 1 - fi - fi - - if is_dry_run; then - sh_c="echo" - fi - - # perform some very rudimentary platform detection - lsb_dist=$( get_distribution ) - lsb_dist="$(echo "$lsb_dist" | tr '[:upper:]' '[:lower:]')" - - if is_wsl; then - echo - echo "WSL DETECTED: We recommend using Docker Desktop for Windows." - echo "Please get Docker Desktop from https://www.docker.com/products/docker-desktop" - echo - cat >&2 <<-'EOF' - - You may press Ctrl+C now to abort this script. - EOF - ( set -x; sleep 20 ) - fi - - case "$lsb_dist" in - - ubuntu) - if command_exists lsb_release; then - dist_version="$(lsb_release --codename | cut -f2)" - fi - if [ -z "$dist_version" ] && [ -r /etc/lsb-release ]; then - dist_version="$(. /etc/lsb-release && echo "$DISTRIB_CODENAME")" - fi - ;; - - debian|raspbian) - dist_version="$(sed 's/\/.*//' /etc/debian_version | sed 's/\..*//')" - case "$dist_version" in - 11) - dist_version="bullseye" - ;; - 10) - dist_version="buster" - ;; - 9) - dist_version="stretch" - ;; - 8) - dist_version="jessie" - ;; - esac - ;; - - centos|rhel|sles) - if [ -z "$dist_version" ] && [ -r /etc/os-release ]; then - dist_version="$(. /etc/os-release && echo "$VERSION_ID")" - fi - ;; - - *) - if command_exists lsb_release; then - dist_version="$(lsb_release --release | cut -f2)" - fi - if [ -z "$dist_version" ] && [ -r /etc/os-release ]; then - dist_version="$(. /etc/os-release && echo "$VERSION_ID")" - fi - ;; - - esac - - # Check if this is a forked Linux distro - check_forked - - # Print deprecation warnings for distro versions that recently reached EOL, - # but may still be commonly used (especially LTS versions). - case "$lsb_dist.$dist_version" in - debian.stretch|debian.jessie) - deprecation_notice "$lsb_dist" "$dist_version" - ;; - raspbian.stretch|raspbian.jessie) - deprecation_notice "$lsb_dist" "$dist_version" - ;; - ubuntu.xenial|ubuntu.trusty) - deprecation_notice "$lsb_dist" "$dist_version" - ;; - fedora.*) - if [ "$dist_version" -lt 33 ]; then - deprecation_notice "$lsb_dist" "$dist_version" - fi - ;; - esac - - # Run setup for each distro accordingly - case "$lsb_dist" in - ubuntu|debian|raspbian) - pre_reqs="apt-transport-https ca-certificates curl" - if ! command -v gpg > /dev/null; then - pre_reqs="$pre_reqs gnupg" - fi - apt_repo="deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] $DOWNLOAD_URL/linux/$lsb_dist $dist_version $CHANNEL" - ( - if ! is_dry_run; then - set -x - fi - $sh_c 'apt-get update -qq >/dev/null' - $sh_c "DEBIAN_FRONTEND=noninteractive apt-get install -y -qq $pre_reqs >/dev/null" - $sh_c 'mkdir -p /etc/apt/keyrings && chmod -R 0755 /etc/apt/keyrings' - $sh_c "curl -fsSL \"$DOWNLOAD_URL/linux/$lsb_dist/gpg\" | gpg --dearmor --yes -o /etc/apt/keyrings/docker.gpg" - $sh_c "chmod a+r /etc/apt/keyrings/docker.gpg" - $sh_c "echo \"$apt_repo\" > /etc/apt/sources.list.d/docker.list" - $sh_c 'apt-get update -qq >/dev/null' - ) - pkg_version="" - if [ -n "$VERSION" ]; then - if is_dry_run; then - echo "# WARNING: VERSION pinning is not supported in DRY_RUN" - else - # Will work for incomplete versions IE (17.12), but may not actually grab the "latest" if in the test channel - pkg_pattern="$(echo "$VERSION" | sed "s/-ce-/~ce~.*/g" | sed "s/-/.*/g")" - search_command="apt-cache madison 'docker-ce' | grep '$pkg_pattern' | head -1 | awk '{\$1=\$1};1' | cut -d' ' -f 3" - pkg_version="$($sh_c "$search_command")" - echo "INFO: Searching repository for VERSION '$VERSION'" - echo "INFO: $search_command" - if [ -z "$pkg_version" ]; then - echo - echo "ERROR: '$VERSION' not found amongst apt-cache madison results" - echo - exit 1 - fi - if version_gte "18.09"; then - search_command="apt-cache madison 'docker-ce-cli' | grep '$pkg_pattern' | head -1 | awk '{\$1=\$1};1' | cut -d' ' -f 3" - echo "INFO: $search_command" - cli_pkg_version="=$($sh_c "$search_command")" - fi - pkg_version="=$pkg_version" - fi - fi - ( - pkgs="docker-ce${pkg_version%=}" - if version_gte "18.09"; then - # older versions didn't ship the cli and containerd as separate packages - pkgs="$pkgs docker-ce-cli${cli_pkg_version%=} containerd.io" - fi - if version_gte "20.10"; then - pkgs="$pkgs docker-compose-plugin" - fi - if version_gte "20.10" && [ "$(uname -m)" = "x86_64" ]; then - # also install the latest version of the "docker scan" cli-plugin (only supported on x86 currently) - pkgs="$pkgs docker-scan-plugin" - fi - # TODO(thaJeztah) remove the $CHANNEL check once 22.06 and docker-buildx-plugin is published to the "stable" channel - if [ "$CHANNEL" = "test" ] && version_gte "22.06"; then - pkgs="$pkgs docker-buildx-plugin" - fi - if ! is_dry_run; then - set -x - fi - $sh_c "DEBIAN_FRONTEND=noninteractive apt-get install -y -qq --no-install-recommends $pkgs >/dev/null" - if version_gte "20.10"; then - # Install docker-ce-rootless-extras without "--no-install-recommends", so as to install slirp4netns when available - $sh_c "DEBIAN_FRONTEND=noninteractive apt-get install -y -qq docker-ce-rootless-extras${pkg_version%=} >/dev/null" - fi - ) - echo_docker_as_nonroot - exit 0 - ;; - centos|fedora|rhel) - if [ "$(uname -m)" != "s390x" ] && [ "$lsb_dist" = "rhel" ]; then - echo "Packages for RHEL are currently only available for s390x." - exit 1 - fi - if [ "$lsb_dist" = "fedora" ]; then - pkg_manager="dnf" - config_manager="dnf config-manager" - enable_channel_flag="--set-enabled" - disable_channel_flag="--set-disabled" - pre_reqs="dnf-plugins-core" - pkg_suffix="fc$dist_version" - else - pkg_manager="yum" - config_manager="yum-config-manager" - enable_channel_flag="--enable" - disable_channel_flag="--disable" - pre_reqs="yum-utils" - pkg_suffix="el" - fi - repo_file_url="$DOWNLOAD_URL/linux/$lsb_dist/$REPO_FILE" - ( - if ! is_dry_run; then - set -x - fi - $sh_c "$pkg_manager install -y -q $pre_reqs" - $sh_c "$config_manager --add-repo $repo_file_url" - - if [ "$CHANNEL" != "stable" ]; then - $sh_c "$config_manager $disable_channel_flag docker-ce-*" - $sh_c "$config_manager $enable_channel_flag docker-ce-$CHANNEL" - fi - $sh_c "$pkg_manager makecache" - ) - pkg_version="" - if [ -n "$VERSION" ]; then - if is_dry_run; then - echo "# WARNING: VERSION pinning is not supported in DRY_RUN" - else - pkg_pattern="$(echo "$VERSION" | sed "s/-ce-/\\\\.ce.*/g" | sed "s/-/.*/g").*$pkg_suffix" - search_command="$pkg_manager list --showduplicates 'docker-ce' | grep '$pkg_pattern' | tail -1 | awk '{print \$2}'" - pkg_version="$($sh_c "$search_command")" - echo "INFO: Searching repository for VERSION '$VERSION'" - echo "INFO: $search_command" - if [ -z "$pkg_version" ]; then - echo - echo "ERROR: '$VERSION' not found amongst $pkg_manager list results" - echo - exit 1 - fi - if version_gte "18.09"; then - # older versions don't support a cli package - search_command="$pkg_manager list --showduplicates 'docker-ce-cli' | grep '$pkg_pattern' | tail -1 | awk '{print \$2}'" - cli_pkg_version="$($sh_c "$search_command" | cut -d':' -f 2)" - fi - # Cut out the epoch and prefix with a '-' - pkg_version="-$(echo "$pkg_version" | cut -d':' -f 2)" - fi - fi - ( - pkgs="docker-ce$pkg_version" - if version_gte "18.09"; then - # older versions didn't ship the cli and containerd as separate packages - if [ -n "$cli_pkg_version" ]; then - pkgs="$pkgs docker-ce-cli-$cli_pkg_version containerd.io" - else - pkgs="$pkgs docker-ce-cli containerd.io" - fi - fi - if version_gte "20.10" && [ "$(uname -m)" = "x86_64" ]; then - # also install the latest version of the "docker scan" cli-plugin (only supported on x86 currently) - pkgs="$pkgs docker-scan-plugin" - fi - if version_gte "20.10"; then - pkgs="$pkgs docker-compose-plugin docker-ce-rootless-extras$pkg_version" - fi - # TODO(thaJeztah) remove the $CHANNEL check once 22.06 and docker-buildx-plugin is published to the "stable" channel - if [ "$CHANNEL" = "test" ] && version_gte "22.06"; then - pkgs="$pkgs docker-buildx-plugin" - fi - if ! is_dry_run; then - set -x - fi - $sh_c "$pkg_manager install -y -q $pkgs" - ) - echo_docker_as_nonroot - exit 0 - ;; - sles) - if [ "$(uname -m)" != "s390x" ]; then - echo "Packages for SLES are currently only available for s390x" - exit 1 - fi - if [ "$dist_version" = "15.3" ]; then - sles_version="SLE_15_SP3" - else - sles_minor_version="${dist_version##*.}" - sles_version="15.$sles_minor_version" - fi - opensuse_repo="https://download.opensuse.org/repositories/security:SELinux/$sles_version/security:SELinux.repo" - repo_file_url="$DOWNLOAD_URL/linux/$lsb_dist/$REPO_FILE" - pre_reqs="ca-certificates curl libseccomp2 awk" - ( - if ! is_dry_run; then - set -x - fi - $sh_c "zypper install -y $pre_reqs" - $sh_c "zypper addrepo $repo_file_url" - if ! is_dry_run; then - cat >&2 <<-'EOF' - WARNING!! - openSUSE repository (https://download.opensuse.org/repositories/security:SELinux) will be enabled now. - Do you wish to continue? - You may press Ctrl+C now to abort this script. - EOF - ( set -x; sleep 30 ) - fi - $sh_c "zypper addrepo $opensuse_repo" - $sh_c "zypper --gpg-auto-import-keys refresh" - $sh_c "zypper lr -d" - ) - pkg_version="" - if [ -n "$VERSION" ]; then - if is_dry_run; then - echo "# WARNING: VERSION pinning is not supported in DRY_RUN" - else - pkg_pattern="$(echo "$VERSION" | sed "s/-ce-/\\\\.ce.*/g" | sed "s/-/.*/g")" - search_command="zypper search -s --match-exact 'docker-ce' | grep '$pkg_pattern' | tail -1 | awk '{print \$6}'" - pkg_version="$($sh_c "$search_command")" - echo "INFO: Searching repository for VERSION '$VERSION'" - echo "INFO: $search_command" - if [ -z "$pkg_version" ]; then - echo - echo "ERROR: '$VERSION' not found amongst zypper list results" - echo - exit 1 - fi - search_command="zypper search -s --match-exact 'docker-ce-cli' | grep '$pkg_pattern' | tail -1 | awk '{print \$6}'" - # It's okay for cli_pkg_version to be blank, since older versions don't support a cli package - cli_pkg_version="$($sh_c "$search_command")" - pkg_version="-$pkg_version" - - search_command="zypper search -s --match-exact 'docker-ce-rootless-extras' | grep '$pkg_pattern' | tail -1 | awk '{print \$6}'" - rootless_pkg_version="$($sh_c "$search_command")" - rootless_pkg_version="-$rootless_pkg_version" - fi - fi - ( - pkgs="docker-ce$pkg_version" - if version_gte "18.09"; then - if [ -n "$cli_pkg_version" ]; then - # older versions didn't ship the cli and containerd as separate packages - pkgs="$pkgs docker-ce-cli-$cli_pkg_version containerd.io" - else - pkgs="$pkgs docker-ce-cli containerd.io" - fi - fi - if version_gte "20.10"; then - pkgs="$pkgs docker-compose-plugin docker-ce-rootless-extras$pkg_version" - fi - # TODO(thaJeztah) remove the $CHANNEL check once 22.06 and docker-buildx-plugin is published to the "stable" channel - if [ "$CHANNEL" = "test" ] && version_gte "22.06"; then - pkgs="$pkgs docker-buildx-plugin" - fi - if ! is_dry_run; then - set -x - fi - $sh_c "zypper -q install -y $pkgs" - ) - echo_docker_as_nonroot - exit 0 - ;; - *) - if [ -z "$lsb_dist" ]; then - if is_darwin; then - echo - echo "ERROR: Unsupported operating system 'macOS'" - echo "Please get Docker Desktop from https://www.docker.com/products/docker-desktop" - echo - exit 1 - fi - fi - echo - echo "ERROR: Unsupported distribution '$lsb_dist'" - echo - exit 1 - ;; - esac - exit 1 -} - -# wrapped up in a function so that we have some protection against only getting -# half the file during "curl | sh" -do_install diff --git a/scripts/install-rofi b/scripts/install-rofi deleted file mode 100755 index 3cba373..0000000 --- a/scripts/install-rofi +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -TMP_LOCATION=/tmp/rofi - -cd $HOME - -git -C /tmp/rofi pull || git clone --depth=1 https://github.com/adi1090x/rofi.git $TMP_LOCATION - -chmod +x $TMP_LOCATION/setup.sh - -$TMP_LOCATION/setup.sh \ No newline at end of file diff --git a/scripts/install-vim b/scripts/install-vim deleted file mode 100755 index d14ed83..0000000 --- a/scripts/install-vim +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -# Neovim -sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \ - https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' - -nvim +'PlugInstall --sync' +qa \ No newline at end of file diff --git a/scripts/install/arch b/scripts/install/arch new file mode 100755 index 0000000..0c3c52b --- /dev/null +++ b/scripts/install/arch @@ -0,0 +1,26 @@ +#!/bin/bash + +dotfiles=$1 + +scripts=$dotfiles/scripts + +if command -v yay &>/dev/null; then + echo "Yay is already installed, proceeding" +else + echo "Installing yay..." + $scripts/install/yay +fi + +packages=$dotfiles/packages + +echo "Installing utils..." +utils=$packages/utils/arch +packages_list=$(sed '/^$|^#/d' $utils) + +yay -S --needed --noconfirm $packages_list + +echo "Installing applications" +applications=$packages/applications/arch +packages_list=$(sed '/^$|^#/d' $applications) + +yay -S --needed --noconfirm $packages_list diff --git a/scripts/install/docker b/scripts/install/docker new file mode 100644 index 0000000..e69de29 diff --git a/scripts/install/rofi b/scripts/install/rofi new file mode 100755 index 0000000..2dbdb92 --- /dev/null +++ b/scripts/install/rofi @@ -0,0 +1,9 @@ +#!/bin/sh + +TMP_LOCATION=/tmp/rofi + +git -C /tmp/rofi pull || git clone https://github.com/adi1090x/rofi.git $TMP_LOCATION + +chmod +x $TMP_LOCATION/setup.sh + +$TMP_LOCATION/setup.sh \ No newline at end of file diff --git a/scripts/install/vim b/scripts/install/vim new file mode 100755 index 0000000..78a782c --- /dev/null +++ b/scripts/install/vim @@ -0,0 +1,7 @@ +#!/bin/bash + +# Neovim +echo "Installing Neovim plugins..." +sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' > /dev/null + +nvim +'PlugInstall --sync' +qa \ No newline at end of file diff --git a/scripts/install/vscode b/scripts/install/vscode new file mode 100755 index 0000000..d1cabc3 --- /dev/null +++ b/scripts/install/vscode @@ -0,0 +1,10 @@ +#!/bin/bash + +dotfiles=$1 + +extensions=$dotfiles/packages/vscode + +sed '/^$|^#/d' $extensions | while read extension || [[ -n $extension ]]; +do + codium --install-extension $extension > /dev/null +done diff --git a/scripts/install-yay b/scripts/install/yay similarity index 56% rename from scripts/install-yay rename to scripts/install/yay index c50bccd..4259e31 100755 --- a/scripts/install-yay +++ b/scripts/install/yay @@ -8,4 +8,4 @@ cd /tmp/yay # Install makepkg -sci --noconfirm -yay --answerclean None --answerdiff None --answeredit None --answerupgrade None --removemake --save +yay --noconfirm --answerclean None --answerdiff None --answeredit None --answerupgrade None --removemake --save diff --git a/scripts/install-zsh b/scripts/install/zsh similarity index 75% rename from scripts/install-zsh rename to scripts/install/zsh index e6e5275..23e5a22 100755 --- a/scripts/install-zsh +++ b/scripts/install/zsh @@ -1,5 +1,7 @@ #!/bin/bash +dotfiles=$1 + # Install ohmyzsh if [ -d "$ZSH" ]; then echo "ohmyzsh is installed" @@ -14,7 +16,7 @@ export THEMES=~/.oh-my-zsh/themes mkdir -p $PLUGINS mkdir -p $THEMES -ln -sf $DOTFILES/config/.zshrc ~/.zshrc +ln -sf $dotfiles/config/.zshrc ~/.zshrc # Install zsh-histdb git -C $PLUGINS/zsh-histdb pull || git clone https://github.com/larkery/zsh-histdb $PLUGINS/zsh-histdb @@ -22,5 +24,8 @@ git -C $PLUGINS/zsh-histdb pull || git clone https://github.com/larkery/zsh-hist # Install zsh-autosuggestions git -C $PLUGINS/zsh-autosuggestions pull || git clone https://github.com/zsh-users/zsh-autosuggestions $PLUGINS/zsh-autosuggestions +# Install zsh-syntax-highlighting +git -C $PLUGINS/zsh-syntax-highlighting pull || git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $PLUGINS/zsh-syntax-highlighting + # Install Powerlevel10k git -C $THEMES/powerlevel10k pull || git clone https://github.com/romkatv/powerlevel10k $THEMES/powerlevel10k