working my way through initial run through of scirpts, this is a wip
This commit is contained in:
parent
0ea46c6a00
commit
5ceab93dd5
6
.gitmodules
vendored
Normal file
6
.gitmodules
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
[submodule "inks-scripts"]
|
||||
path = inks-scripts
|
||||
url = ssh://git@gitlab.inkletblot.com:10622/inkletblot/inks-scripts.git
|
||||
[submodule "dmenu-inkletblot"]
|
||||
path = dmenu-inkletblot
|
||||
url = ssh://git@gitlab.inkletblot.com:10622/inkletblot/dmenu-inkletblot.git
|
||||
24
README.md
24
README.md
@ -16,8 +16,12 @@ I want this to be able to be used on a fresh arch install with 0 dependencies, s
|
||||
|
||||
I also need to make sure that all required programs are then sucessfully installed, and that some configs are written.
|
||||
|
||||
Ill need to do this for lightdm and lightdm webkit3 greeter currently.
|
||||
> Ill need to do this for lightdm and lightdm webkit3 greeter currently.
|
||||
> will also need to set shell, if they install my default programs, to fish.
|
||||
|
||||
remove rofi from xmonad.hs
|
||||
|
||||
review xmonad.sh for default programs / dependencies
|
||||
|
||||
|
||||
# Steps
|
||||
@ -35,9 +39,15 @@ setup.sh will then...
|
||||
1. make sure that there is an internet connection (user may have installed git in chroot and not setup network yet)
|
||||
2. make sure sudo is installed and user is part of sudo or wheel group
|
||||
3. request user for their password, put it in temp file (I can't think of a better way of doing this yet)
|
||||
4. make sure multilib in enabled
|
||||
5. update and upgrade system fully
|
||||
2. install yay specifically
|
||||
2. install all required dependencies/programs
|
||||
3. install my scripts
|
||||
4. install my config
|
||||
2. update and upgrade system fully
|
||||
3. install yay specifically
|
||||
4. install my dmenu
|
||||
5. install all required dependencies/programs
|
||||
1. install system dependencies and all required dependencies for my xmonad config and my scripts (NOT INCLUDING: myStartupHook, myManagedHook or bitwarden)
|
||||
2. ask user if they want to install my default programs (browser, shell, term, etc)
|
||||
1. warn user that they will need to install their own if they don't
|
||||
3. ask user if they want to install my misc programs (all the rest of my defaults that I like having)
|
||||
6. install my scripts
|
||||
1. copy inks-scrips to /usr/local/bin as it should be in path by default
|
||||
7. install my config
|
||||
1. warn user that if they didn't intstall default programs, they'll need to edit xmonad.hs
|
||||
|
||||
116
default-programs
116
default-programs
@ -1,104 +1,100 @@
|
||||
REQUIRED_START
|
||||
DEPENDENCIES_START
|
||||
yad
|
||||
scrot
|
||||
pulseaudio-bluetooth
|
||||
bluez-utils
|
||||
sshfs
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
REQUIRED_END
|
||||
|
||||
|
||||
freetube
|
||||
git-flow-completion-git
|
||||
plexamp-appimage
|
||||
|
||||
|
||||
shotwell
|
||||
fish
|
||||
evince
|
||||
dunst-git
|
||||
dunst
|
||||
slock
|
||||
notify-send
|
||||
bitwarden-cli
|
||||
jq
|
||||
xmonad
|
||||
xmonad-contrib
|
||||
firefox
|
||||
surf
|
||||
xmobar
|
||||
xorg
|
||||
xorg-xinit
|
||||
blueman
|
||||
picom-jonaburg-git
|
||||
nitrogen
|
||||
xclip
|
||||
numlockx
|
||||
zenity
|
||||
pavucontrol
|
||||
pulseaudio
|
||||
nfs-utils
|
||||
newsboat
|
||||
blueman
|
||||
networkmanager
|
||||
network-manager-applet
|
||||
guake
|
||||
xorg
|
||||
xorg-xinit
|
||||
mpv
|
||||
youtube-dl
|
||||
backlight-control
|
||||
rofi
|
||||
thunar
|
||||
alacritty
|
||||
wget
|
||||
volumeicon
|
||||
unzip
|
||||
ttf-fira-code
|
||||
trayer
|
||||
youtube-dl
|
||||
openssh
|
||||
numlockx
|
||||
htop
|
||||
gnome-keyring
|
||||
dosfstools
|
||||
grub2
|
||||
curl
|
||||
cifs-utils
|
||||
bluez
|
||||
lxappearance
|
||||
qt5ct
|
||||
lightdm
|
||||
lightdm-webkit-theme-litarvan
|
||||
lxsession
|
||||
xdotool
|
||||
xterm
|
||||
flameshot
|
||||
simple-mtpfs
|
||||
DEPENDENCIES_END
|
||||
|
||||
DEPENDENCIES_LAPTOP_START
|
||||
backlight_control
|
||||
DEPENDENCIES_LAPTOP_END
|
||||
|
||||
DEFAULTS_START
|
||||
evince
|
||||
firefox
|
||||
fish
|
||||
alacritty
|
||||
thunar
|
||||
newsboat
|
||||
cmus
|
||||
freetube
|
||||
vlc
|
||||
discord
|
||||
qbittorrent
|
||||
visual-studio-code-bin
|
||||
DEFAULTS_END
|
||||
|
||||
MISC_START
|
||||
plexamp-appimage
|
||||
mpv
|
||||
kdeconnect
|
||||
surf
|
||||
git-flow-completion-git
|
||||
shotwell
|
||||
bitwarden-cli
|
||||
zenity
|
||||
guake
|
||||
python
|
||||
nodejs
|
||||
npm
|
||||
nvm
|
||||
openssh
|
||||
numlockx
|
||||
mosh
|
||||
jre-openjdk
|
||||
jre-openjdk-headless
|
||||
htop
|
||||
gnome-keyring
|
||||
git-flow
|
||||
evince
|
||||
dosfstools
|
||||
grub2
|
||||
curl
|
||||
colorpicker-ym1234-git
|
||||
cmus
|
||||
cifs-utils
|
||||
bluez
|
||||
ansible
|
||||
android-sdk-platform-tools
|
||||
lxappearance
|
||||
qt5ct
|
||||
visual-studio-code-bin
|
||||
runelite
|
||||
slack-desktop
|
||||
nextcloud-client
|
||||
barrier
|
||||
todoist-elecrton
|
||||
vlc
|
||||
virtualbox
|
||||
virt-manager
|
||||
virsh
|
||||
discord
|
||||
kdeconnect
|
||||
telegram-desktop
|
||||
teams
|
||||
qbittorrent
|
||||
lxsession
|
||||
xdotool
|
||||
xterm
|
||||
backlight-control
|
||||
lightdm
|
||||
lightdm-webkit-theme-litarvan
|
||||
flameshot
|
||||
MISC_END
|
||||
1
dmenu-inkletblot
Submodule
1
dmenu-inkletblot
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 897e3e487f4f5b18315edae5f34c12fdd425cc6b
|
||||
24
get-sudo-password
Executable file
24
get-sudo-password
Executable file
@ -0,0 +1,24 @@
|
||||
#!/bin/bash
|
||||
|
||||
file=/tmp/sudo-password
|
||||
|
||||
while true;
|
||||
do
|
||||
|
||||
read -r -s -p "Your password please: " password
|
||||
|
||||
res=$(echo "$password" | sudo -S -k -l)
|
||||
|
||||
echo $res
|
||||
|
||||
if [ "$res" == "" ]; then
|
||||
echo "Incorrect password, try again..."
|
||||
else
|
||||
break;
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
rm $file --force # to ignore if it isn't there
|
||||
touch $file
|
||||
echo "$password" > $file
|
||||
1
inks-scripts
Submodule
1
inks-scripts
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 51e2cdc5dbb51256cfb400e68542f96c874583a3
|
||||
35
install-config
Executable file
35
install-config
Executable file
@ -0,0 +1,35 @@
|
||||
#!/bin/sh
|
||||
|
||||
#-----------------------------------
|
||||
# Name: install-dmenu-inkletblot
|
||||
# Version: 1.0.0
|
||||
# Author: Solomon Laing
|
||||
# Description:
|
||||
# Installs my customisation of dmenu
|
||||
#-----------------------------------
|
||||
|
||||
echo "This script is going to install dmenu-inkletblot, my fork of dmenu with my custom styling. As such it will ask for root privilages."
|
||||
|
||||
read -r -p "Are You Sure? [y/N] " input
|
||||
|
||||
case $input in
|
||||
[yY][eE][sS] | [yY])
|
||||
echo "The program will continue..."
|
||||
;;
|
||||
[nN][oO] | [nN])
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Invalid input..."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
default_loc=/tmp/sudo-password
|
||||
|
||||
if [ ! -f "$default_loc" ] ; then
|
||||
get-sudo-password
|
||||
fi
|
||||
|
||||
cd dmenu-inkletblot
|
||||
cat $default_loc | sudo -S make clean install
|
||||
54
install-defaults
Executable file
54
install-defaults
Executable file
@ -0,0 +1,54 @@
|
||||
#!/bin/sh
|
||||
|
||||
default_programs="./default-programs"
|
||||
dependencies=$(sed -n '/DEFAULTS_START/,/DEFAULTS_END/p' $default_programs | sed -e 's/DEFAULTS_START//' -e 's/DEFAULTS_END//')
|
||||
|
||||
# check user is happy to run this script
|
||||
echo "This script is going to install all of my default programs, e.g.: browser, rss reader, etc. As such it will ask for root privilages."
|
||||
echo "Defaults:$dependencies"
|
||||
read -r -p "Are you sure you want to continue? [y/N] " input
|
||||
case $input in
|
||||
[yY][eE][sS] | [yY])
|
||||
echo "The program will continue..."
|
||||
;;
|
||||
[nN][oO] | [nN])
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Invalid input..."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# if yay is not installed the run the install script
|
||||
if ! command -v yay &> /dev/null; then
|
||||
./install-yay
|
||||
fi
|
||||
|
||||
failures=()
|
||||
|
||||
# run though each dependency and install it if it's not already installed
|
||||
for dependency in $dependencies
|
||||
do
|
||||
if ! yay -Qi $dependency &> /dev/null; then
|
||||
echo "Installing $dependency and it's dependencies..."
|
||||
yay -S --noconfirm $dependency &> /dev/null
|
||||
fi
|
||||
|
||||
if ! yay -Qi $dependency &> /dev/null; then
|
||||
failures+=("$dependency\n")
|
||||
fi
|
||||
done
|
||||
|
||||
total_failures=$((${#failures[@]}))
|
||||
|
||||
if [ $total_failures -gt 0 ]; then
|
||||
echo "Some of the programs failed to install..."
|
||||
echo "$failures"
|
||||
echo "Please manually rectify this and then rerun this setup with: ./setup defaults"
|
||||
exit 1
|
||||
else
|
||||
echo "Default programs sucessfully installed"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
@ -1,7 +1,11 @@
|
||||
#!/bin/sh
|
||||
|
||||
default_programs="./default-programs"
|
||||
dependencies=$(sed -n '/DEPENDENCIES_START/,/DEPENDENCIES_END/p' $default_programs | sed -e 's/DEPENDENCIES_START//' -e 's/DEPENDENCIES_END//')
|
||||
|
||||
# check user is happy to run this script
|
||||
echo "This script is going to install all of the programs listed in /home/<user>/default-programs and their dependencies. As such it will ask for root privilages."
|
||||
echo "This script is going to install all of the programs required for my scripts and dotfiles to function in a bisic manner. As such it will ask for root privilages."
|
||||
echo "Dependencies:$dependencies"
|
||||
read -r -p "Are you sure you want to continue? [y/N] " input
|
||||
case $input in
|
||||
[yY][eE][sS] | [yY])
|
||||
@ -21,67 +25,30 @@ if ! command -v yay &> /dev/null; then
|
||||
./install-yay
|
||||
fi
|
||||
|
||||
# check with the user they are happy to update, exit if not though.
|
||||
echo "The system needs to be updated before this installation can happen. The upgrades will be applied without any user oversight which may be dangerous for out of date systems."
|
||||
read -r -p "Are you sure you want to continue? [y/N] " input
|
||||
case $input in
|
||||
[yY][eE][sS] | [yY])
|
||||
# Make sure everything is up to date
|
||||
echo "Making sure everything is up to date..."
|
||||
yay -Syyu --noconfirm
|
||||
;;
|
||||
[nN][oO] | [nN])
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Invalid input..."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
failures=()
|
||||
|
||||
# run though each default program and install it if it's not already installed
|
||||
# note that yay, git, steam, dmenu-inkletblot, ly and nvidia related programs are not included
|
||||
default_programs="/default-programs"
|
||||
dependencies=$(cat $HOME/$default_programs)
|
||||
# run though each dependency and install it if it's not already installed
|
||||
for dependency in $dependencies
|
||||
do
|
||||
if ! command -v $dependency &> /dev/null; then
|
||||
if ! yay -Qi $dependency &> /dev/null; then
|
||||
echo "Installing $dependency and it's dependencies..."
|
||||
yay -S --noconfirm $dependency
|
||||
yay -S --noconfirm $dependency &> /dev/null
|
||||
fi
|
||||
|
||||
if ! yay -Qi $dependency &> /dev/null; then
|
||||
failures+=("$dependency\n")
|
||||
fi
|
||||
done
|
||||
|
||||
# ask the user if they want to install nvidia dependencies, do it or skip
|
||||
if ! command -v yay &> /dev/null && ! command -v yay &> /dev/null && ! command -v yay &> /dev/null; then
|
||||
echo "My computer requires nvidia, as such I install the required drivers and programs"
|
||||
read -r -p "Are you sure you want to install? [y/N] " input
|
||||
case $input in
|
||||
[yY][eE][sS] | [yY])
|
||||
echo "Nvidia is being installed..."
|
||||
yay -S nvidia nvidia-settings nvidia-prime --noconfirm
|
||||
;;
|
||||
[nN][oO] | [nN])
|
||||
echo "Nvidia installation has been skipped. Programs: nvidia, nvidia-settings, nvidia-prime"
|
||||
;;
|
||||
*)
|
||||
echo "Nvidia installation has been skipped. Programs: nvidia, nvidia-settings, nvidia-prime"
|
||||
;;
|
||||
esac
|
||||
total_failures=$((${#failures[@]}))
|
||||
|
||||
if [ $total_failures -gt 0 ]; then
|
||||
echo "Some of the programs failed to install..."
|
||||
echo "$failures"
|
||||
echo "Please manually rectify this and then rerun this setup with: ./setup deps"
|
||||
exit 1
|
||||
else
|
||||
echo "Dependencies sucessfully installed"
|
||||
fi
|
||||
|
||||
# notify about steam issue (multilib)
|
||||
echo "There are a few programs that can't be automatically installed. The main one of these is Steam which requires multilib to be enabled. Instructions for this can be found at: https://wiki.archlinux.org/index.php/Official_repositories#Enabling_multilib Once this is done steam can be installed."
|
||||
read -r -p "Press [ENTER] to continue.."
|
||||
|
||||
# notify about ly and dmenu-inkletblot scripts
|
||||
echo "I use two programs that are installed from git directly: ly and dmenu-inkletblot."
|
||||
echo "I do not have install scripts for both of these. They have dependencies I can't guarantee are installed."
|
||||
read -r -p "Press [ENTER] to continue.."
|
||||
|
||||
# notify user that there may be extra steps to finish install
|
||||
echo "This script has installed all of my default programs however it may not have configure many things. My dotfiles may cover some of these but things such as gnome-keyring (using the pam method) will need to be implemented. As well as setting up nvidia and xorg. There are likely more that I have forgotton as well."
|
||||
read -r -p "Press [ENTER] to complete.."
|
||||
|
||||
# need scripts for these
|
||||
# dmenu-inkletblot
|
||||
# ly
|
||||
exit 0
|
||||
41
install-dmenu-inkletblot
Executable file
41
install-dmenu-inkletblot
Executable file
@ -0,0 +1,41 @@
|
||||
#!/bin/sh
|
||||
|
||||
#-----------------------------------
|
||||
# Name: install-dmenu-inkletblot
|
||||
# Version: 1.0.0
|
||||
# Author: Solomon Laing
|
||||
# Description:
|
||||
# Installs my customisation of dmenu
|
||||
#-----------------------------------
|
||||
|
||||
if command -v dmenu &> /dev/null; then
|
||||
echo "dmenu is already installed on the system."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "This script is going to install dmenu-inkletblot, my fork of dmenu with my custom styling. As such it will ask for root privilages."
|
||||
|
||||
read -r -p "Are You Sure? [y/N] " input
|
||||
|
||||
case $input in
|
||||
[yY][eE][sS] | [yY])
|
||||
echo "The program will continue..."
|
||||
;;
|
||||
[nN][oO] | [nN])
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Invalid input..."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
cd dmenu-inkletblot
|
||||
sudo -S make clean install
|
||||
|
||||
if ! command -v dmenu &> /dev/null; then
|
||||
echo "dmenu-inkletblot failed to install, please manually rectify this and then rerun this setup with: ./setup deps"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
54
install-misc
Executable file
54
install-misc
Executable file
@ -0,0 +1,54 @@
|
||||
#!/bin/sh
|
||||
|
||||
default_programs="./default-programs"
|
||||
dependencies=$(sed -n '/MISC_START/,/MISC_END/p' $default_programs | sed -e 's/MISC_START//' -e 's/MISC_END//')
|
||||
|
||||
# check user is happy to run this script
|
||||
echo "This script is going to install all of my default programs, e.g.: browser, rss reader, etc. As such it will ask for root privilages."
|
||||
echo "Misc programs:$dependencies"
|
||||
read -r -p "Are you sure you want to continue? [y/N] " input
|
||||
case $input in
|
||||
[yY][eE][sS] | [yY])
|
||||
echo "The program will continue..."
|
||||
;;
|
||||
[nN][oO] | [nN])
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Invalid input..."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# if yay is not installed the run the install script
|
||||
if ! command -v yay &> /dev/null; then
|
||||
./install-yay
|
||||
fi
|
||||
|
||||
failures=()
|
||||
|
||||
# run though each dependency and install it if it's not already installed
|
||||
for dependency in $dependencies
|
||||
do
|
||||
if ! yay -Qi $dependency &> /dev/null; then
|
||||
echo "Installing $dependency and it's dependencies..."
|
||||
yay -S --noconfirm $dependency &> /dev/null
|
||||
fi
|
||||
|
||||
if ! yay -Qi $dependency &> /dev/null; then
|
||||
failures+=("$dependency\n")
|
||||
fi
|
||||
done
|
||||
|
||||
total_failures=$((${#failures[@]}))
|
||||
|
||||
if [ $total_failures -gt 0 ]; then
|
||||
echo "Some of the programs failed to install..."
|
||||
echo "$failures"
|
||||
echo "Please manually rectify this and then rerun this setup with: ./setup misc"
|
||||
exit 1
|
||||
else
|
||||
echo "Misc programs sucessfully installed"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
87
install-scripts
Executable file
87
install-scripts
Executable file
@ -0,0 +1,87 @@
|
||||
#!/bin/sh
|
||||
|
||||
# check user is happy to run this script
|
||||
echo "This script is going to install all of the programs listed in /home/<user>/default-programs and their dependencies. As such it will ask for root privilages."
|
||||
read -r -p "Are you sure you want to continue? [y/N] " input
|
||||
case $input in
|
||||
[yY][eE][sS] | [yY])
|
||||
echo "The program will continue..."
|
||||
;;
|
||||
[nN][oO] | [nN])
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Invalid input..."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# if yay is not installed the run the install script
|
||||
if ! command -v yay &> /dev/null; then
|
||||
./install-yay
|
||||
fi
|
||||
|
||||
# check with the user they are happy to update, exit if not though.
|
||||
echo "The system needs to be updated before this installation can happen. The upgrades will be applied without any user oversight which may be dangerous for out of date systems."
|
||||
read -r -p "Are you sure you want to continue? [y/N] " input
|
||||
case $input in
|
||||
[yY][eE][sS] | [yY])
|
||||
# Make sure everything is up to date
|
||||
echo "Making sure everything is up to date..."
|
||||
yay -Syyu --noconfirm
|
||||
;;
|
||||
[nN][oO] | [nN])
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Invalid input..."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# run though each default program and install it if it's not already installed
|
||||
# note that yay, git, steam, dmenu-inkletblot, ly and nvidia related programs are not included
|
||||
default_programs="/default-programs"
|
||||
dependencies=$(cat $HOME/$default_programs)
|
||||
for dependency in $dependencies
|
||||
do
|
||||
if ! command -v $dependency &> /dev/null; then
|
||||
echo "Installing $dependency and it's dependencies..."
|
||||
yay -S --noconfirm $dependency
|
||||
fi
|
||||
done
|
||||
|
||||
# ask the user if they want to install nvidia dependencies, do it or skip
|
||||
if ! command -v yay &> /dev/null && ! command -v yay &> /dev/null && ! command -v yay &> /dev/null; then
|
||||
echo "My computer requires nvidia, as such I install the required drivers and programs"
|
||||
read -r -p "Are you sure you want to install? [y/N] " input
|
||||
case $input in
|
||||
[yY][eE][sS] | [yY])
|
||||
echo "Nvidia is being installed..."
|
||||
yay -S nvidia nvidia-settings nvidia-prime --noconfirm
|
||||
;;
|
||||
[nN][oO] | [nN])
|
||||
echo "Nvidia installation has been skipped. Programs: nvidia, nvidia-settings, nvidia-prime"
|
||||
;;
|
||||
*)
|
||||
echo "Nvidia installation has been skipped. Programs: nvidia, nvidia-settings, nvidia-prime"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# notify about steam issue (multilib)
|
||||
echo "There are a few programs that can't be automatically installed. The main one of these is Steam which requires multilib to be enabled. Instructions for this can be found at: https://wiki.archlinux.org/index.php/Official_repositories#Enabling_multilib Once this is done steam can be installed."
|
||||
read -r -p "Press [ENTER] to continue.."
|
||||
|
||||
# notify about ly and dmenu-inkletblot scripts
|
||||
echo "I use two programs that are installed from git directly: ly and dmenu-inkletblot."
|
||||
echo "I do not have install scripts for both of these. They have dependencies I can't guarantee are installed."
|
||||
read -r -p "Press [ENTER] to continue.."
|
||||
|
||||
# notify user that there may be extra steps to finish install
|
||||
echo "This script has installed all of my default programs however it may not have configure many things. My dotfiles may cover some of these but things such as gnome-keyring (using the pam method) will need to be implemented. As well as setting up nvidia and xorg. There are likely more that I have forgotton as well."
|
||||
read -r -p "Press [ENTER] to complete.."
|
||||
|
||||
# need scripts for these
|
||||
# dmenu-inkletblot
|
||||
# ly
|
||||
29
install-yay
29
install-yay
@ -1,11 +1,20 @@
|
||||
#!/bin/sh
|
||||
|
||||
# if command -v yay &> /dev/null; then
|
||||
# echo "yay is already installed."
|
||||
# exit 0;
|
||||
# fi
|
||||
#-----------------------------------
|
||||
# Name: install-yay
|
||||
# Version: 1.0.0
|
||||
# Author: Solomon Laing
|
||||
# Description:
|
||||
# Installs the AUR helper yay on the
|
||||
# system.
|
||||
#-----------------------------------
|
||||
|
||||
echo "This script is going to install yay and it's dependencies. As such it will ask for root privilages."
|
||||
if ! command -v yay &> /dev/null; then
|
||||
echo "yay is already installed on the system."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "This script is going to attempt install yay and it's dependencies. As such it will ask for root privilages."
|
||||
|
||||
read -r -p "Are You Sure? [y/N] " input
|
||||
|
||||
@ -22,16 +31,12 @@ case $input in
|
||||
;;
|
||||
esac
|
||||
|
||||
if ! command -v git &> /dev/null; then
|
||||
sudo pacman -Sy --noconfirm git
|
||||
fi
|
||||
|
||||
if ! command -v fakeroot &> /dev/null; then
|
||||
sudo pacman -Sy --noconfirm base-devel
|
||||
cat $default_loc | sudo -S pacman -Sy --noconfirm base-devel
|
||||
fi
|
||||
|
||||
cd /opt
|
||||
sudo git clone https://aur.archlinux.org/yay.git
|
||||
sudo chown -R $USER:users ./yay
|
||||
cat $default_loc | sudo -S git clone https://aur.archlinux.org/yay.git
|
||||
cat $default_loc | sudo -S chown -R $USER:users ./yay
|
||||
cd yay
|
||||
makepkg -si
|
||||
202
setup
Normal file
202
setup
Normal file
@ -0,0 +1,202 @@
|
||||
#!/bin/bash
|
||||
|
||||
#-----------------------------------
|
||||
# Name: setup
|
||||
# Version: 1.0.0
|
||||
# Author: Solomon Laing
|
||||
# Description:
|
||||
# Sets up system with my configs,
|
||||
# programs, and more.
|
||||
# Usage:
|
||||
# setup yay -- runs the system setup from installing yay onwards
|
||||
# setup yay only -- only runs the yay section of the sysetm setup
|
||||
#-----------------------------------
|
||||
|
||||
working_dir=$(pwd)
|
||||
|
||||
# perform basic system check
|
||||
./system-check
|
||||
|
||||
# install yay
|
||||
function install_yay {
|
||||
cd $working_dir
|
||||
./install-yay
|
||||
}
|
||||
|
||||
# install my dmenu
|
||||
function install_dmenu {
|
||||
cd $working_dir
|
||||
git submodule init
|
||||
git submodule update
|
||||
./install-dmenu-inkletblot
|
||||
}
|
||||
|
||||
# update the system
|
||||
function update_system {
|
||||
# check with the user they are happy to update, exit if not though.
|
||||
echo "The system needs to be updated before this installation can happen. The upgrades will be applied without any user oversight which may be dangerous for out of date systems."
|
||||
read -r -p "Are you sure you want to continue? [y/N] " input
|
||||
case $input in
|
||||
[yY][eE][sS] | [yY])
|
||||
# Make sure everything is up to date
|
||||
echo "Making sure everything is up to date..."
|
||||
yay -Syyu --noconfirm
|
||||
;;
|
||||
[nN][oO] | [nN])
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Invalid input..."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# install all required dependencies/programs
|
||||
function install_dependencies {
|
||||
if [ $? -eq 1 ]; then
|
||||
exit 1
|
||||
fi
|
||||
cd $working_dir
|
||||
./install-dependencies
|
||||
}
|
||||
|
||||
# install all default programs
|
||||
function install_defaults {
|
||||
if [ $? -eq 1 ]; then
|
||||
exit 1
|
||||
fi
|
||||
cd $working_dir
|
||||
./install-defaults
|
||||
}
|
||||
|
||||
# install all misc programs
|
||||
function install_misc {
|
||||
if [ $? -eq 1 ]; then
|
||||
exit 1
|
||||
fi
|
||||
cd $working_dir
|
||||
./istall-misc
|
||||
}
|
||||
|
||||
# install my scripts
|
||||
function install_scripts {
|
||||
if [ $? -eq 1 ]; then
|
||||
exit 1
|
||||
fi
|
||||
cd $working_dir
|
||||
git submodule init
|
||||
git submodule update
|
||||
./install-scripts
|
||||
}
|
||||
|
||||
# install my config
|
||||
function install_config {
|
||||
if [ $? -eq 1 ]; then
|
||||
exit 1
|
||||
fi
|
||||
cd $working_dir
|
||||
./install-config
|
||||
}
|
||||
|
||||
function help{
|
||||
echo "Usage is:"
|
||||
echo " setup <option> -- to start system setup from option"
|
||||
echo " setup <option> only -- to only setup the specified option"
|
||||
echo "Options (in order of execution):"
|
||||
echo " yay : Install yay AUR helper"
|
||||
echo " dmenu : Install my customised version of dmenu"
|
||||
echo " deps : Install the dependencies for my scripts and window manager"
|
||||
echo " defaults : Install my chosen default programs"
|
||||
echo " misc : Install my collection of misc - nice to have - programs"
|
||||
echo " scripts : Install my scirpts"
|
||||
echo " config : Install my dotfiles to the system"
|
||||
echo ""
|
||||
echo "Note: it is expected that the initial run of this script lets each stage complete sucessfully."
|
||||
}
|
||||
|
||||
|
||||
case $1 in
|
||||
yay)
|
||||
if [ "$2" = "only" ]; then
|
||||
install_yay
|
||||
else
|
||||
install_yay
|
||||
install_dmenu
|
||||
update_system
|
||||
install_dependencies
|
||||
install_defaults
|
||||
install_misc
|
||||
install_scripts
|
||||
install_config
|
||||
fi
|
||||
;;
|
||||
dmenu)
|
||||
if [ "$2" = "only" ]; then
|
||||
install_dmenu
|
||||
else
|
||||
install_dmenu
|
||||
update_system
|
||||
install_dependencies
|
||||
install_defaults
|
||||
install_misc
|
||||
install_scripts
|
||||
install_config
|
||||
fi
|
||||
;;
|
||||
deps)
|
||||
update_system
|
||||
if [ "$2" = "only" ]; then
|
||||
install_dependencies
|
||||
else
|
||||
install_dependencies
|
||||
install_defaults
|
||||
install_misc
|
||||
install_scripts
|
||||
install_config
|
||||
fi
|
||||
;;
|
||||
defaults)
|
||||
update_system
|
||||
if [ "$2" = "only" ]; then
|
||||
install_defaults
|
||||
else
|
||||
install_defaults
|
||||
install_misc
|
||||
install_scripts
|
||||
install_config
|
||||
fi
|
||||
;;
|
||||
misc)
|
||||
update_system
|
||||
if [ "$2" = "only" ]; then
|
||||
install_misc
|
||||
else
|
||||
install_misc
|
||||
install_scripts
|
||||
install_config
|
||||
fi
|
||||
;;
|
||||
scripts)
|
||||
if [ "$2" = "only" ]; then
|
||||
install_scripts
|
||||
else
|
||||
install_scripts
|
||||
install_config
|
||||
fi
|
||||
;;
|
||||
config)
|
||||
if [ "$2" = "only" ]; then
|
||||
install_config
|
||||
else
|
||||
install_config
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "Invalid input..."
|
||||
help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
51
system-check
Executable file
51
system-check
Executable file
@ -0,0 +1,51 @@
|
||||
#!/bin/bash
|
||||
|
||||
#-----------------------------------
|
||||
# Name: system-check
|
||||
# Version: 1.0.0
|
||||
# Author: Solomon Laing
|
||||
# Description:
|
||||
# Validates that the system is ready
|
||||
# for setup.
|
||||
#-----------------------------------
|
||||
|
||||
# check we aren't root
|
||||
if [ $(whoami) == "root" ]; then
|
||||
|
||||
echo "These scripts should not be run as root, please log into a user account."
|
||||
exit 1
|
||||
|
||||
fi
|
||||
|
||||
# check sudo is installed and user is in sudo or wheel group
|
||||
# if not, direct user how to resolve
|
||||
if ! command -v sudo &> /dev/null; then
|
||||
echo "sudo must be intsalled!"
|
||||
echo "
|
||||
To install sudo:
|
||||
su -
|
||||
<enter root password>
|
||||
pacman -Sy sudo
|
||||
exit
|
||||
"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
groups=$(whoami | groups $1)
|
||||
|
||||
if [[ "wheel" =~ "$groups" ]] || [[ "sudo" =~ "$groups" ]]; then
|
||||
echo "User must be in wheel or sudo group and the chosen group must be set in sudoers file /etc/sudoers."
|
||||
echo "I.e.: append '%wheel ALL=(ALL) ALL' to the file."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# check for internet connection
|
||||
connectivity=$(ping -c 1 -q google.com >&/dev/null; echo $?)
|
||||
|
||||
if [ $connectivity -ne 0 ]; then
|
||||
echo "You must be connected to the internet to run this collection of scripts. If you cloned these scripts in arch-chroot you may have problems."
|
||||
echo "Please set up an active internet conncetion and try again."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user