diff options
| author | David T. Sadler <davidtsadler@googlemail.com> | 2023-12-29 15:51:37 +0000 |
|---|---|---|
| committer | David T. Sadler <davidtsadler@googlemail.com> | 2023-12-29 15:51:37 +0000 |
| commit | 20589630e40d4a503ad2998f039729247f00d908 (patch) | |
| tree | 64234666c9e3e09061578539af15f44d9b1f7a15 | |
| parent | 4bf84161c232becb8081746d99bef721ead8a53b (diff) | |
Add new user, install yay and some packages
| -rw-r--r-- | README.md | 2 | ||||
| -rwxr-xr-x | gohan.sh | 78 | ||||
| -rw-r--r-- | packages.csv | 29 |
3 files changed, 24 insertions, 85 deletions
@@ -5,6 +5,6 @@ On an Arch based distribution as root, run the following: ``` -curl -LO https://raw.githubusercontent.com/davidtsadler/gohan/master/gohan.sh +curl -LO https://git.davidtsadler.com/gohan/plain/gohan.sh sh gohan.sh ``` @@ -1,19 +1,18 @@ #!/bin/sh + # My Arch Linux installation script -# by David T. Sadler <davidtsadler@googlemail.com> +# by David T. Sadler <david@davidtsadler.com> # License: GNU GPLv3 ### OPTIONS AND VARIABLES ### while getopts ":p:h" o; do case "${o}" in - h) printf "Optional arguments for custom use:\\n -r: Dotfiles repository\\n -p: Dependencies and programs csv (local file or url)\\n -h: Show this message\\n" && exit ;; - r) dotfilesrepo=${OPTARG} && git ls-remote "$dotfilesrepo" || exit ;; + h) printf "Optional arguments for custom use:\\n -p: Dependencies and programs csv (local file or url)\\n -h: Show this message\\n" && exit ;; p) packages=${OPTARG} ;; *) printf "Invalid option: -%s\\n" "$OPTARG" && exit ;; esac done -[ -z "$dotfilesrepo" ] && dotfilesrepo="https://github.com/davidtsadler/dotfiles.git" -[ -z "$packages" ] && packages="https://raw.githubusercontent.com/davidtsadler/gohan/master/packages.csv" +[ -z "$packages" ] && packages="https://git.davidtsadler.com/gohan/plain/packages.csv" ### FUNCTIONS ### @@ -62,23 +61,15 @@ add_user() { usermod -aG wheel "$name" [ ! -d "/home/$name/.local/src" ] && mkdir -p "/home/$name/.local/src" && chown -R "$name":"$name" /home/"$name/.local" # Remove these files as they will be installed as part of the dotfiles. - [ -f "/home/$name/.bash_history" ] && rm /home/$name/.bash_history - [ -f "/home/$name/.bash_logout" ] && rm /home/$name/.bash_logout - [ -f "/home/$name/.bash_profile" ] && rm /home/$name/.bash_profile - [ -f "/home/$name/.bashrc" ] && rm /home/$name/.bashrc +# [ -f "/home/$name/.bash_history" ] && rm /home/$name/.bash_history +# [ -f "/home/$name/.bash_logout" ] && rm /home/$name/.bash_logout +# [ -f "/home/$name/.bash_profile" ] && rm /home/$name/.bash_profile +# [ -f "/home/$name/.bashrc" ] && rm /home/$name/.bashrc echo "$name:$pass1" | chpasswd unset pass1 pass2 } -install_dotfiles() { - dialog --infobox "Downloading and installing dotfiles..." 4 60 - [ ! -d "$2" ] && mkdir -p "$2" && chown -R "$name":"$name" "$2" - sudo -u "$name" git clone --bare --depth 1 "$1" "$2" >/dev/null 2>&1 - sudo -u "$name" git --git-dir="$2" --work-tree="/home/$name" checkout - sudo -u "$name" git --git-dir="$2" --work-tree="/home/$name" config --local status.showUntrackedFiles no -} - -install_software() { +install_packages() { ([ -f "$packages" ] && cp "$packages" /tmp/packages.csv) || curl -Ls "$packages" > /tmp/packages.csv total=$(wc -l < /tmp/packages.csv) while IFS=, read -r tag program comment; do @@ -119,34 +110,19 @@ configure_sudo() { install_yay() { [ -f "/usr/bin/yay" ] || ( - dialog --infobox "Installing \"yay\", an AUR helper..." 4 50 - cd /tmp || exit - rm -rf /tmp/yay* - # Use all cores for compilation. - sed -i "s/-j2/-j$(nproc)/;s/^#MAKEFLAGS/MAKEFLAGS/" /etc/makepkg.conf - curl -sO https://aur.archlinux.org/cgit/aur.git/snapshot/yay.tar.gz && - sudo -u "$name" tar -xvf yay.tar.gz >/dev/null 2>&1 && - cd yay && - sudo -u "$name" makepkg --noconfirm -si >/dev/null 2>&1 - cd /tmp || return); -} - -install_nvm() { - [ ! -d "/home/$name/.local/src/nvm" ] && mkdir -p "/home/$name/.local/src/nvm" && chown "$name":"$name" "/home/$name/.local/src/nvm" && - sudo -u "$name" curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | NVM_DIR="/home/$name/.local/src/nvm" bash >/dev/null 2>&1 && - [ -d "/home/$name/.local/src/nvm" ] && chown -R "$name":"$name" "/home/$name/.local/src/nvm" -} - -install_composer() { - php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" >/dev/null 2>&1 - php -r "if (hash_file('sha384', 'composer-setup.php') === '572cb359b56ad9ae52f9c23d29d4b19a040af10d6635642e646a7caa7b96de717ce683bd797a92ce99e5929cc51e7d5f') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" >/dev/null 2>&1 - php composer-setup.php --install-dir="/home/$name/.local/bin" --filename=composer >/dev/null 2>&1 - [ -f "/home/$name/.local/bin/composer" ] && chown "$name:$name" "/home/$name/.local/bin/composer" -} - -install_auto_cpufreq_service() { - systemctl start auto-cpufreq - systemctl enable auto-cpufreq + dialog --infobox "Installing \"yay\", an AUR helper..." 4 50 + install_from_pacman base-devel + install_from_pacman git + # Use all cores for compilation. + sed -i "s/-j2/-j$(nproc)/;s/^#MAKEFLAGS/MAKEFLAGS/" /etc/makepkg.conf + cd /tmp || exit + rm -rf /tmp/yay* + git clone "https://aur.archlinux.org/yay.git" + cd yay + makepkg --noconfirm -si >/dev/null 2>&1 + cd /tmp + rm -rf yay + ); } ### THE ACTUAL SCRIPT ### @@ -165,16 +141,8 @@ add_user || error "Error adding username and/or password." configure_sudo -install_dotfiles $dotfilesrepo "/home/$name/.local/src/dotfiles" - install_yay -install_software - -install_nvm - -install_composer - -install_auto_cpufreq_service +install_packages clear diff --git a/packages.csv b/packages.csv index 32f3dd5..7af7b66 100644 --- a/packages.csv +++ b/packages.csv @@ -1,32 +1,3 @@ #Tag, Name, Description -,alsa-utils, contains utilities for ALSA ,base-devel,contains tools to compile software -,ctags, generates an index (or tag) file of names found in source and header files ,git,is needed to install software from git repositories -,isync,is a command line application to synchronize mailboxes -,libx11,is a dependency when compiling some software -,msmtp,is a very simple and easy to use SMTP client -,newsboat,is a RSS/Atom feedreader -,noto-fonts-emoji,is a font that supports color emojis -,openssh,is a premier connectivity tool for remote login with the SSH protocol -,pass,safely encrypts passwords -,php,is a web development scripting language -,qutebrowser,is a web browser -,ranger,is a filemanager -,terminus-font,is a monospace font that can be used in st -,vagrant, is a tool for managing and configuring virtual development environments -,virtualbox, a hypervisor -,wget,utility for downloading files via the command line -,xorg-server,is the display server -,xorg-xinit,will allow us to start the display server -,zsh,is a shell -A,auto-cpufreq-git,an automatic CPU speed & power optimizer -A,brave-bin,is a free and open-source web browser that blocks ads and website trackers -A,libxft-bgra-git,stops st from crashing when using color emojis -A,mutt-wizard-git,is a light-weight terminal-based email system -A,ttf-meslo-nerd-font-powerlevel10k,font for powerlevel10k -A,zsh-fast-syntax-highlighting,is a feature rich syntax highlighting for Zsh -A,zsh-theme-powerlevel10k-git,powerlevel10k theme for Zsh -G,git@git.davidtsadler.com/dmenu.git,is a dynamic menu -G,git@git.davidtsadler.com/dwm.git,is a dynamic window manager -G,git@git.davidtsadler.com/st.git,is a simple terminal |
