From 0ea46c6a00c8f73d3f0fbedba1cfdc7b7e308509 Mon Sep 17 00:00:00 2001 From: Solomon Laing Date: Wed, 25 Aug 2021 14:15:01 +0930 Subject: [PATCH] Initial commit --- README.md | 43 ++++++++++++++++++ default-programs | 104 +++++++++++++++++++++++++++++++++++++++++++ install-dependencies | 87 ++++++++++++++++++++++++++++++++++++ install-yay | 37 +++++++++++++++ 4 files changed, 271 insertions(+) create mode 100644 README.md create mode 100644 default-programs create mode 100755 install-dependencies create mode 100755 install-yay diff --git a/README.md b/README.md new file mode 100644 index 0000000..a24b2c9 --- /dev/null +++ b/README.md @@ -0,0 +1,43 @@ +# INK_OS + +## Inkletblots Xmonad install scripts + +### Version + +> 1.0.0 - current + + +This project is an effort to create a easy to use system to install a fresh version of my desktop environment (Xmonad on Arch). The idea is that this system can be used on a fresh install of Arch and will get everything that I currently use setup and ready in a safe manner. + + +# TODO + +I want this to be able to be used on a fresh arch install with 0 dependencies, so, I will need to make sure that the user has set up internet, or that an existing connection exists. + +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. + + + +# Steps + +I currently envision the following steps being used: + +1. install minimal arch with no extra programs +2. access tty manually install git and clone https://gitlab.inkletblot.com/inkletblot/ink-os.git +3. cd into ink-os +4. run setup.sh + +setup.sh will then... + +1. do a general system check + 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 diff --git a/default-programs b/default-programs new file mode 100644 index 0000000..bd3a4fc --- /dev/null +++ b/default-programs @@ -0,0 +1,104 @@ +REQUIRED_START +yad +scrot +pulseaudio-bluetooth +bluez-utils +sshfs + + + + + +REQUIRED_END + + +freetube +git-flow-completion-git +plexamp-appimage + + +shotwell +fish +evince +dunst-git +slock +notify-send +bitwarden-cli +jq +xmonad +xmonad-contrib +firefox +surf +xmobar +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 +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 diff --git a/install-dependencies b/install-dependencies new file mode 100755 index 0000000..b5626d1 --- /dev/null +++ b/install-dependencies @@ -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//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 diff --git a/install-yay b/install-yay new file mode 100755 index 0000000..cc04dd6 --- /dev/null +++ b/install-yay @@ -0,0 +1,37 @@ +#!/bin/sh + +# if command -v yay &> /dev/null; then +# echo "yay is already installed." +# exit 0; +# fi + +echo "This script is going to install yay and it's dependencies. 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 + +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 +fi + +cd /opt +sudo git clone https://aur.archlinux.org/yay.git +sudo chown -R $USER:users ./yay +cd yay +makepkg -si \ No newline at end of file