summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid T. Sadler <davidtsadler@googlemail.com>2023-12-29 15:51:37 +0000
committerDavid T. Sadler <davidtsadler@googlemail.com>2023-12-29 15:51:37 +0000
commit20589630e40d4a503ad2998f039729247f00d908 (patch)
tree64234666c9e3e09061578539af15f44d9b1f7a15
parent4bf84161c232becb8081746d99bef721ead8a53b (diff)
Add new user, install yay and some packages
-rw-r--r--README.md2
-rwxr-xr-xgohan.sh78
-rw-r--r--packages.csv29
3 files changed, 24 insertions, 85 deletions
diff --git a/README.md b/README.md
index add2cce..b92c73e 100644
--- a/README.md
+++ b/README.md
@@ -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
```
diff --git a/gohan.sh b/gohan.sh
index eccb567..91f48b8 100755
--- a/gohan.sh
+++ b/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