autoinstall.sh (4947B)
1 #!/bin/bash 2 3 set -e 4 5 DotfilesDir=$(pwd) 6 INSTALL='sudo pacman -S --noconfirm' 7 UPDATE='sudo pacman -Syu --noconfirm' 8 SucklessDir="$DotfilesDir/files/config/suckless" 9 10 install_packages() { 11 $UPDATE 12 $INSTALL mpv feh redshift linux-firmware-qlogic pavucontrol picom nitrogen thunar gvfs lxappearance alsa-utils neovim yubico-pam starship fish man-db qt5ct breeze breeze-gtk redshift htop lsb-release libreoffice-fresh ly ufw scrot keepassxc ranger unzip gcr webkit2gtk gd dosfstools xorg-xkill openresolv wireguard-tools libdvdcss libdvdread dunst cryptsetup wget ncmpcpp xclip xdotool xterm xorg-xclock xorg-twm okular thunderbird 13 echo "==============================" 14 echo "Programs are done installing" 15 echo "=============================" 16 } 17 18 setup_ufw() { 19 sudo systemctl enable ufw 20 sudo systemctl start ufw 21 sudo ufw allow 22/tcp 22 sudo ufw allow 80/tcp 23 sudo ufw allow 443/tcp 24 echo "==================" 25 echo "UFW setup is done" 26 echo "==================" 27 } 28 29 30 setup_ly() { 31 sudo systemctl enable ly 32 echo "==================" 33 echo "Done Ly setup!" 34 echo "==================" 35 } 36 37 38 setup_home_directory() { 39 mkdir -p ~/Documents/Passwords 40 mkdir -p ~/Documents/Study 41 mkdir -p ~/Documents/Projects 42 mkdir -p ~/Documents/Notes 43 mkdir -p ~/Documents/Books 44 mkdir -p ~/Downloads/ 45 mkdir -p ~/Backups/ 46 mkdir -p ~/Programming/ 47 mkdir -p ~/Videos/Personal 48 mkdir -p ~/Music/ 49 mkdir -p ~/Games/ 50 mkdir -p ~/.config/ 51 touch ~/.bookmarks 52 echo "==================" 53 echo "Directories setup" 54 echo "==================" 55 } 56 57 copy_config_files() { 58 sudo mkdir -p /usr/share/xsessions 59 sudo cp "$DotfilesDir/files/dwm.desktop" /usr/share/xsessions/ 60 61 sudo cp -r "$DotfilesDir/files/pacman.conf" /etc/pacman.conf 62 63 sudo cp -r "$DotfilesDir/files/config/*" ~/.config/ 64 sudo cp "$DotfilesDir/files/Ly/config.ini" /etc/ly/config.ini 65 66 # Suckless software 67 for dir in dwm slstatus dmenu surf st scroll; do 68 if cd "$SucklessDir/$dir"; then 69 echo "Building $dir..." 70 sudo make clean install || echo "Build failed in $dir" 71 else 72 echo " Directory not found: $SucklessDir/$dir" 73 fi 74 done 75 76 # Ranger config 77 ranger --copy-config=all 78 rm -rf ~/.config/ranger/* 79 sudo cp -r "$DotfilesDir/files/ranger/*" ~/.config/ranger/ 80 81 # Install files for plug manager for NVIM 82 sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \ 83 https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' 84 85 echo "==================" 86 echo "Configs loaded" 87 echo "==================" 88 } 89 90 fonts(){ 91 cp -rf "$DotfilesDir/files/fonts" ~/.fonts 92 } 93 94 bashrc_additions(){ 95 echo 'eval "$(dircolors ~/.config/dircolours)"' >> ~/.bashrc 96 echo 'alias tree='pstree'' >> ~/.bashrc 97 echo 'alias P="cd ~/Programming"' >> ~/.bashrc 98 echo 'alias C="cd ~/.config"' >> ~/.bashrc 99 echo 'alias vim='nvim'' >> ~/.bashrc 100 } 101 102 fish(){ 103 echo -e '\n# Start fish shell \nif [[ $(ps --no-header --pid=$PPID --format=comm) != "fish" && -z ${BASH_EXECUTION_STRING} && ${SHLVL} == 1 ]]; then\n shopt -q login_shell && LOGIN_OPTION="--login" || LOGIN_OPTION=""\n exec fish $LOGIN_OPTION\nfi' >> ~/.bashrc 104 } 105 106 Blocked_Websites() { 107 sudo chmod 666 /etc/hosts 108 109 sudo echo "#Facebook" > /etc/hosts 110 sudo echo "127.0.0.1 facebook.com login.facebook.com secure.facebook.com latest.facebook.com inyour.facebook.com beta.facebook.com static.facebook.com touch.facebook.com developers.facebook.com newsroom.fb.com pixel.facebook.com apps.facebook.com graph.facebook.com m.facebook.com upload.facebook.com" > /etc/hosts 111 112 sudo chmod 644 /etc/hosts 113 } 114 115 Security() { 116 sudo sed -i '6 i auth optional pam_faildelay.so delay=4000000' /etc/pam.d/system-login 117 $INSTALL clamav 118 sudo freshclam 119 } 120 121 Doas() { 122 $INSTALL opendoas 123 echo "permit setenv {PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin} :wheel" > /etc/doas.conf 124 doas pacman -Rdd sudo 125 doas ln -s $(which doas) /usr/bin/sudo 126 doas chown -c root:root /etc/doas.conf 127 doas chmod -c 0400 /etc/doas.conf 128 129 # VIDOAS 130 # Credit to https://www.cjjackson.dev/posts/replacing-sudo-with-doas-on-arch-linux/ 131 doas cp "$DotfilesDir/files/doas/vidoas" /root/script/vidoas 132 doas cp "$DotfilesDir/files/doas/vidoas1" /usr/local/bin/vidoas 133 134 doas chmod 700 /root/script/vidoas 135 doas chmod 755 /usr/local/bin/vidoas 136 } 137 main() { 138 install_packages 139 setup_ufw 140 setup_home_directory 141 setup_ly 142 copy_config_files 143 fonts 144 bashrc_additions 145 fish 146 #Blocked_Website 147 Security 148 #Doas 149 echo "==================================" 150 echo "Done installing, you may reboot." 151 echo "Thank you for installing!" 152 echo "==================================" 153 } 154 155 #This runs the script and gives the current user perms 156 main 157 sudo chown -R $(whoami):$(whoami) /home/$(whoami) 158 sh ~/Dotfiles/yay.sh 159