rice.sh (7701B)
1 #!/bin/sh 2 set -e 3 WORKDIRECTORY=$PWD 4 5 if [ "$(id -u)" -ne 0 ] 6 then printf "The script has to be run as root.\n" 7 exit 8 fi 9 10 PERMUSER="$(id -nu "1000")" 11 12 id "$PERMUSER" > /dev/null 2>&1 || { echo "User $PERMUSER does not exist. Exiting."; exit 1; } 13 14 if [ -x "$(command -v doas)" ]; then 15 evalcommand="doas -u $PERMUSER" 16 else 17 evalcommand="sudo -u $PERMUSER" 18 echo "%wheel ALL=(ALL) NOPASSWD: ALL 19 Defaults:%wheel,root runcwd=*" >/etc/sudoers.d/temp 20 fi 21 22 run_as_user() { 23 $evalcommand "$@" 24 } 25 26 DEPLIST="`sed -e 's/#.*$//' -e '/^$/d' dependencies.txt | tr '\n' ' '`" 27 pacman -Sy --noconfirm 28 pacman -S $DEPLIST --noconfirm --needed 29 30 run_as_user cp -r "$WORKDIRECTORY"/.config /home/"$PERMUSER" 31 run_as_user cp -r "$WORKDIRECTORY"/.local /home/"$PERMUSER" 32 run_as_user cp -a "$WORKDIRECTORY"/.zprofile /home/"$PERMUSER" 33 34 run_as_user mkdir -p /home/"$PERMUSER"/.config/git 35 run_as_user touch /home/"$PERMUSER"/.config/git/config 36 run_as_user mkdir -p /home/"$PERMUSER"/.config/npm 37 run_as_user touch /home/"$PERMUSER"/.config/npm/npmrc 38 run_as_user mkdir -p /home/"$PERMUSER"/.cache/zsh 39 run_as_user mkdir -p /home/"$PERMUSER"/.config/mpd/playlists 40 run_as_user mkdir -p /home/"$PERMUSER"/.local/share/themes 41 run_as_user mkdir -p /home/"$PERMUSER"/.local/share/icons 42 43 cd "$WORKDIRECTORY" || exit 44 run_as_user git clone https://github.com/zdharma-continuum/fast-syntax-highlighting 45 mkdir -p /usr/share/zsh/plugins 46 cp -rf fast-syntax-highlighting /usr/share/zsh/plugins 47 cd "$WORKDIRECTORY" 48 49 run_as_user mkdir -p /home/"$PERMUSER"/.ssh 50 run_as_user mkdir -p /home/"$PERMUSER"/.gnupg 51 run_as_user touch /home/"$PERMUSER"/.gnupg/gpg-agent.conf 52 53 cat <<EOL >> /home/$PERMUSER/.gnupg/gpg-agent.conf 54 enable-ssh-support 55 pinentry-program /usr/bin/pinentry-gnome3 56 default-cache-ttl 34560000 57 max-cache-ttl 34560000 58 EOL 59 60 cat <<EOL >> /home/$PERMUSER/.config/npm/npmrc 61 prefix=\${XDG_DATA_HOME}/npm 62 cache=\${XDG_CACHE_HOME}/npm 63 init-module=\${XDG_CONFIG_HOME}/npm/config/npm-init.js 64 logs-dir=\${XDG_STATE_HOME}/npm/logs 65 EOL 66 67 run_as_user find /home/"$PERMUSER"/.gnupg -type f -exec chmod 600 {} \; 68 run_as_user find /home/"$PERMUSER"/.gnupg -type d -exec chmod 700 {} \; 69 run_as_user find /home/"$PERMUSER"/.ssh -type f -exec chmod 600 {} \; 70 run_as_user find /home/"$PERMUSER"/.ssh -type d -exec chmod 700 {} \; 71 72 chsh -s /bin/zsh "$PERMUSER" 73 74 mkdir -p /root/.config/nvim 75 cat <<EOL >> /root/.config/nvim/init.vim 76 set title 77 set clipboard+=unnamedplus 78 set relativenumber 79 colorscheme vim 80 EOL 81 82 # Make pacman colorful, concurrent downloads and Pacman eye-candy. 83 grep -q "ILoveCandy" /etc/pacman.conf || sed -i "/#VerbosePkgLists/a ILoveCandy" /etc/pacman.conf 84 sed -Ei "s/^#(ParallelDownloads).*/\1 = 5/;/^#Color$/s/#//" /etc/pacman.conf 85 86 # Disable Pacman sandbox since kernel doesn't support landlock (only for custom kernels from my artix script) 87 # sed -Ei "s/^#(DisableSandbox).*/\1/" /etc/pacman.conf 88 89 # Use all cores for compilation. 90 sed -i "s/-j2/-j$(nproc)/;/^#MAKEFLAGS/s/^#//" /etc/makepkg.conf 91 92 if [ -x "$(command -v doas)" ]; then 93 # Use doas for Pacman authentification 94 sed -i 's/#PACMAN_AUTH=.*$/PACMAN_AUTH=(doas)/' /etc/makepkg.conf 95 fi 96 97 cat <<EOL >> /usr/share/libalpm/hooks/statusbar.hook 98 [Trigger] 99 Operation = Upgrade 100 Type = Package 101 Target = * 102 103 [Action] 104 Description = Updating statusbar... 105 When = PostTransaction 106 Exec = /usr/bin/pkill -RTMIN+8 i3blocks 107 EOL 108 109 110 cat <<EOL >> /etc/pacman.d/hooks/sing-box.hook 111 [Trigger] 112 Type = Package 113 Operation = Install 114 Operation = Upgrade 115 Target = sing-box 116 117 [Action] 118 Description = Setting rights for sing-box... 119 When = PostTransaction 120 Exec = /usr/bin/setcap cap_net_admin=ep /usr/sbin/sing-box 121 EOL 122 123 run_as_user git clone https://aur.archlinux.org/yay.git 124 cd yay 125 run_as_user makepkg -csi --noconfirm 126 cd "$WORKDIRECTORY" 127 DEPLIST="`sed -e 's/#.*$//' -e '/^$/d' aurdeps.txt | tr '\n' ' '`" 128 run_as_user yay -S $DEPLIST --noconfirm 129 run_as_user dbus-launch gsettings set org.gnome.desktop.interface gtk-theme "Nordic" 130 run_as_user dbus-launch gsettings set org.gnome.desktop.wm.preferences theme "Nordic" 131 run_as_user dbus-launch gsettings set org.gnome.desktop.wm.preferences button-layout 'appmenu' 132 run_as_user dbus-launch gsettings set org.gnome.desktop.interface font-name "Sans 11" 133 cd .. 134 rm -rf swaydots 135 rm -rf yay 136 rm -rf go 137 138 dinitctl enable cronie 139 echo "*/30 * * * * export DBUS_SESSION_BUS_ADDRESS=\$(grep -E -z \"DBUS_SESSION_BUS_ADDRESS\" \"/proc/\$(pgrep -x swaybar)/environ\" | sed 's/DBUS_SESSION_BUS_ADDRESS=//'); /home/$PERMUSER/.local/bin/cron/newsup 140 */30 * * * * export DBUS_SESSION_BUS_ADDRESS=\$(grep -E -z \"DBUS_SESSION_BUS_ADDRESS\" \"/proc/\$(pgrep -x swaybar)/environ\" | sed 's/DBUS_SESSION_BUS_ADDRESS=//'); /home/$PERMUSER/.local/bin/cron/checkup 141 */10 * * * * export DBUS_SESSION_BUS_ADDRESS=\$(grep -E -z \"DBUS_SESSION_BUS_ADDRESS\" \"/proc/\$(pgrep -x swaybar)/environ\" | sed 's/DBUS_SESSION_BUS_ADDRESS=//'); /usr/local/bin/mailsync" | run_as_user crontab - 142 143 run_as_user git clone https://git.awy.one/mutt-wizard /home/"$PERMUSER"/mutt-wizard 144 cd /home/"$PERMUSER"/mutt-wizard 145 make install 146 147 cd /home/"$PERMUSER" 148 run_as_user git clone https://git.awy.one/autofox 149 cd autofox 150 run_as_user ./configure_firefox.sh 151 cd /home/"$PERMUSER" 152 153 run_as_user git clone https://git.awy.one/wmenu 154 cd /home/"$PERMUSER"/wmenu 155 run_as_user meson build 156 ninja -C build install 157 cd /home/"$PERMUSER" 158 159 rm -rf autofox 160 rm -rf mutt-wizard 161 rm -rf wmenu 162 163 # MPV 164 zip_url=https://github.com/tomasklaen/uosc/releases/latest/download/uosc.zip 165 conf_url=https://github.com/tomasklaen/uosc/releases/latest/download/uosc.conf 166 thumbfastlua_url=https://raw.githubusercontent.com/po5/thumbfast/refs/heads/master/thumbfast.lua 167 thumbfastconf_url=https://raw.githubusercontent.com/po5/thumbfast/refs/heads/master/thumbfast.conf 168 sponsorblock_url=https://codeberg.org/jouni/mpv_sponsorblock_minimal/raw/branch/master/sponsorblock_minimal.lua 169 zip_file=/tmp/uosc.zip 170 config_dir="/home/$PERMUSER/.config/mpv" 171 scriptopts_dir="$config_dir/script-opts" 172 conf_file="$scriptopts_dir/uosc.conf" 173 174 echo "Downloading archive..." 175 run_as_user curl -Ls -o $zip_file $zip_url || abort "Couldn't download: $zip_url" 176 echo "Extracting archive..." 177 run_as_user unzip -qod $config_dir $zip_file || abort "Couldn't extract: $zip_file" 178 echo "Deleting archive..." 179 rm -f $zip_file || echo "Couldn't delete: $zip_file" 180 181 run_as_user mkdir -p $scriptopts_dir || echo "Couldn't create: $scriptopts_dir" 182 run_as_user curl -Ls -o $conf_file $conf_url || echo "Couldn't download: $conf_url" 183 184 # thumbfast 185 run_as_user curl -Ls -o "$config_dir/scripts/thumbfast.lua" $thumbfastlua_url || echo "Couldn't download: $thumbfastlua_url" 186 run_as_user curl -Ls -o "$scriptopts_dir/thumbfast.conf" $thumbfastconf_url || echo "Couldn't download: $thumbfastconf_url" 187 sed -Ei "s/(network).*/\1=yes/" "$scriptopts_dir/thumbfast.conf" 188 189 # sponsorblock 190 run_as_user curl -Ls -o "$config_dir/scripts/sponsorblock_minimal.lua" $sponsorblock_url || echo "Couldn't download: $sponsorblock_url" 191 192 # necessary symlinks (pass for mutt-wizard and bemenu for tessen) 193 ln -s /bin/gopass /bin/pass 194 ln -s /usr/local/bin/wmenu /bin/bemenu 195 196 # nvchad 197 run_as_user git clone https://git.awy.one/nvchad /home/"$PERMUSER"/.config/nvim 198 rm -rf /home/"$PERMUSER"/.config/nvim/.git 199 200 # pam 201 sed -i '/auth[[:space:]]*include[[:space:]]*system-local-login/a auth optional pam_gnome_keyring.so' /etc/pam.d/login 202 sed -i '/session[[:space:]]*include[[:space:]]*system-local-login/a session optional pam_gnome_keyring.so auto_start' /etc/pam.d/login 203 echo "password optional pam_gnome_keyring.so" >> /etc/pam.d/passwd 204 205 if [ -x "$(command -v sudo)" ]; then 206 rm /etc/sudoers.d/temp 207 fi 208 209 yes | yay -Scc 210 rm -rf /home/"$PERMUSER"/.cargo 211 212 chown -R $PERMUSER:wheel /home/$PERMUSER 213 214 echo 215 echo "Your linux is riced!"