aboutsummaryrefslogtreecommitdiff
path: root/rice.sh
diff options
context:
space:
mode:
authorawy <awy@awy.one>2025-07-29 03:42:18 +0300
committerawy <awy@awy.one>2025-07-29 03:42:18 +0300
commitef6dff4cce15186a66ba34cdd7bd39958ebf7f58 (patch)
treefcfa61164ca6e79c900b5d11f6afc6b46aaccb84 /rice.sh
downloadhyprdots-ef6dff4cce15186a66ba34cdd7bd39958ebf7f58.tar.gz
first commit
Diffstat (limited to 'rice.sh')
-rwxr-xr-xrice.sh197
1 files changed, 197 insertions, 0 deletions
diff --git a/rice.sh b/rice.sh
new file mode 100755
index 0000000..68ca028
--- /dev/null
+++ b/rice.sh
@@ -0,0 +1,197 @@
+#!/bin/sh
+set -e
+WORKDIRECTORY=$PWD
+
+if [ "$(id -u)" -ne 0 ]
+ then printf "The script has to be run as root.\n"
+ exit
+fi
+
+if [ -x "$(command -v doas)" ]; then
+ PERMUSER=$DOAS_USER
+ evalcommand="doas -u $PERMUSER"
+ cp /etc/doas.conf /etc/doas.bak
+ echo "permit nopass :wheel" > /etc/doas.conf
+ echo "permit nopass root" >> /etc/doas.conf
+else
+ PERMUSER=$SUDO_USER
+ evalcommand="sudo -u $PERMUSER"
+ echo "%wheel ALL=(ALL) NOPASSWD: ALL
+ Defaults:%wheel,root runcwd=*" >/etc/sudoers.d/temp
+fi
+
+run_as_user() {
+ $evalcommand "$@"
+}
+
+usermod -aG seat $PERMUSER
+
+DEPLIST="`sed -e 's/#.*$//' -e '/^$/d' dependencies.txt | tr '\n' ' '`"
+pacman -Sy --noconfirm
+pacman -S $DEPLIST --noconfirm --needed
+
+run_as_user cp -r "$WORKDIRECTORY"/.config /home/"$PERMUSER"
+run_as_user cp -r "$WORKDIRECTORY"/.local /home/"$PERMUSER"
+run_as_user cp -a "$WORKDIRECTORY"/.zprofile /home/"$PERMUSER"
+
+run_as_user mkdir -p /home/"$PERMUSER"/.config/git
+run_as_user touch /home/"$PERMUSER"/.config/git/config
+run_as_user mkdir -p /home/"$PERMUSER"/.config/npm
+run_as_user touch /home/"$PERMUSER"/.config/npm/npmrc
+run_as_user mkdir -p /home/"$PERMUSER"/.cache/zsh
+run_as_user mkdir -p /home/"$PERMUSER"/.config/mpd/playlists
+run_as_user mkdir -p /home/"$PERMUSER"/.local/share/themes
+run_as_user mkdir -p /home/"$PERMUSER"/.local/share/icons
+
+cd "$WORKDIRECTORY" || exit
+run_as_user git clone https://github.com/zdharma-continuum/fast-syntax-highlighting
+mkdir -p /usr/share/zsh/plugins
+cp -rf fast-syntax-highlighting /usr/share/zsh/plugins
+cd "$WORKDIRECTORY"
+
+run_as_user mkdir -p /home/"$PERMUSER"/.ssh
+run_as_user mkdir -p /home/"$PERMUSER"/.gnupg
+run_as_user touch /home/"$PERMUSER"/.gnupg/gpg-agent.conf
+
+cat <<EOL >> /home/$PERMUSER/.gnupg/gpg-agent.conf
+enable-ssh-support
+pinentry-program /usr/bin/pinentry-gnome3
+default-cache-ttl 34560000
+max-cache-ttl 34560000
+EOL
+
+cat <<EOL >> /home/$PERMUSER/.config/npm/npmrc
+prefix=\${XDG_DATA_HOME}/npm
+cache=\${XDG_CACHE_HOME}/npm
+init-module=\${XDG_CONFIG_HOME}/npm/config/npm-init.js
+logs-dir=\${XDG_STATE_HOME}/npm/logs
+EOL
+
+run_as_user find /home/"$PERMUSER"/.gnupg -type f -exec chmod 600 {} \;
+run_as_user find /home/"$PERMUSER"/.gnupg -type d -exec chmod 700 {} \;
+run_as_user find /home/"$PERMUSER"/.ssh -type f -exec chmod 600 {} \;
+run_as_user find /home/"$PERMUSER"/.ssh -type d -exec chmod 700 {} \;
+
+chsh -s /bin/zsh "$PERMUSER"
+
+# Make pacman colorful, concurrent downloads and Pacman eye-candy.
+grep -q "ILoveCandy" /etc/pacman.conf || sed -i "/#VerbosePkgLists/a ILoveCandy" /etc/pacman.conf
+sed -Ei "s/^#(ParallelDownloads).*/\1 = 5/;/^#Color$/s/#//" /etc/pacman.conf
+
+# Disable Pacman sandbox since kernel doesn't support landlock (only for custom kernels from my artix script)
+# sed -Ei "s/^#(DisableSandbox).*/\1/" /etc/pacman.conf
+
+# Use all cores for compilation.
+sed -i "s/-j2/-j$(nproc)/;/^#MAKEFLAGS/s/^#//" /etc/makepkg.conf
+
+if [ -x "$(command -v doas)" ]; then
+ # Use doas for Pacman authentification
+ sed -i 's/#PACMAN_AUTH=.*$/PACMAN_AUTH=(doas)/' /etc/makepkg.conf
+fi
+
+cat <<EOL >> /usr/share/libalpm/hooks/statusbar.hook
+[Trigger]
+Operation = Upgrade
+Type = Package
+Target = *
+
+[Action]
+Description = Updating statusbar...
+When = PostTransaction
+Exec = /usr/bin/pkill -RTMIN+8 waybar
+EOL
+
+cat <<EOL >> /etc/pacman.d/hooks/sing-box.hook
+[Trigger]
+Type = Package
+Operation = Install
+Operation = Upgrade
+Target = sing-box
+
+[Action]
+Description = Setting rights for sing-box...
+When = PostTransaction
+Exec = /usr/bin/setcap cap_net_admin=ep /usr/sbin/sing-box
+EOL
+
+run_as_user git clone https://aur.archlinux.org/paru.git
+cd paru
+run_as_user makepkg -csi --noconfirm
+cd "$WORKDIRECTORY"
+DEPLIST="`sed -e 's/#.*$//' -e '/^$/d' aurdeps.txt | tr '\n' ' '`"
+run_as_user paru --sudo doas -S $DEPLIST --noconfirm
+run_as_user dbus-launch gsettings set org.gnome.desktop.wm.preferences button-layout 'appmenu'
+run_as_user dbus-launch gsettings set org.gnome.desktop.interface font-name "Sans 11"
+cd ..
+rm -rf hyprdots
+rm -rf paru
+rm -rf go
+
+dinitctl enable cronie
+echo "*/30 * * * * export DBUS_SESSION_BUS_ADDRESS=\$(rg --null-data \"DBUS_SESSION_BUS_ADDRESS\" \"/proc/\$(pgrep -x waybar)/environ\" | sed 's/DBUS_SESSION_BUS_ADDRESS=//'); /home/$PERMUSER/.local/bin/cron/newsup
+*/30 * * * * export DBUS_SESSION_BUS_ADDRESS=\$(rg --null-data \"DBUS_SESSION_BUS_ADDRESS\" \"/proc/\$(pgrep -x waybar)/environ\" | sed 's/DBUS_SESSION_BUS_ADDRESS=//'); /home/$PERMUSER/.local/bin/cron/checkup
+*/10 * * * * export DBUS_SESSION_BUS_ADDRESS=\$(rg --null-data \"DBUS_SESSION_BUS_ADDRESS\" \"/proc/\$(pgrep -x waybar)/environ\" | sed 's/DBUS_SESSION_BUS_ADDRESS=//'); /home/$PERMUSER/.local/bin/cron/mailup" | run_as_user crontab -
+
+run_as_user git clone https://git.awy.one/mutt-wizard /home/"$PERMUSER"/mutt-wizard
+cd /home/"$PERMUSER"/mutt-wizard
+make install
+
+cd /home/"$PERMUSER"
+run_as_user git clone https://git.awy.one/autofox
+cd autofox
+run_as_user ./configure_firefox.sh
+cd /home/"$PERMUSER"
+
+run_as_user git clone https://git.awy.one/mew
+cd /home/"$PERMUSER"/mew
+run_as_user git checkout default_theme
+make install
+cd /home/"$PERMUSER"
+
+rm -rf autofox
+rm -rf mutt-wizard
+rm -rf mew
+
+# MPV
+thumbfastlua_url=https://raw.githubusercontent.com/po5/thumbfast/refs/heads/master/thumbfast.lua
+thumbfastconf_url=https://raw.githubusercontent.com/po5/thumbfast/refs/heads/master/thumbfast.conf
+sponsorblock_url=https://codeberg.org/jouni/mpv_sponsorblock_minimal/raw/branch/master/sponsorblock_minimal.lua
+config_dir="/home/$PERMUSER/.config/mpv"
+scriptopts_dir="$config_dir/script-opts"
+
+run_as_user mkdir -p "$config_dir/scripts"
+run_as_user mkdir -p $scriptopts_dir || echo "Couldn't create: $scriptopts_dir"
+
+# thumbfast
+run_as_user curl -Ls -o "$config_dir/scripts/thumbfast.lua" $thumbfastlua_url || echo "Couldn't download: $thumbfastlua_url"
+run_as_user curl -Ls -o "$scriptopts_dir/thumbfast.conf" $thumbfastconf_url || echo "Couldn't download: $thumbfastconf_url"
+sed -Ei "s/(network).*/\1=yes/" "$scriptopts_dir/thumbfast.conf"
+
+# sponsorblock
+run_as_user curl -Ls -o "$config_dir/scripts/sponsorblock_minimal.lua" $sponsorblock_url || echo "Couldn't download: $sponsorblock_url"
+
+# necessary symlinks (pass for mutt-wizard and bemenu for tessen)
+ln -s /bin/gopass /bin/pass
+ln -s /usr/local/bin/mew /bin/bemenu
+
+# pam
+sed -i '/auth[[:space:]]*include[[:space:]]*system-local-login/a auth optional pam_gnome_keyring.so' /etc/pam.d/login
+sed -i '/session[[:space:]]*include[[:space:]]*system-local-login/a session optional pam_gnome_keyring.so auto_start' /etc/pam.d/login
+echo "password optional pam_gnome_keyring.so" >> /etc/pam.d/passwd
+
+yes | run_as_user paru --sudo doas -Scc
+rm -rf /home/"$PERMUSER"/.cargo
+
+if [ -x "$(command -v doas)" ]; then
+ rm /etc/doas.conf
+ mv /etc/doas.bak /etc/doas.conf
+else
+ rm /etc/sudoers.d/temp
+fi
+
+chown -R $PERMUSER:wheel /home/$PERMUSER
+
+# cleanup
+rm -rf /home/$PERMUSER/.cache/go-build
+
+echo "Your linux is riced!"