hyprdots

my dotfiles
git clone https://git.awy.one/hyprdots.git
Log | Files | Refs | README | LICENSE

rice.sh (7171B)


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