dotfiles

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

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