diff --git a/README.md b/README.md new file mode 100644 index 00000000..fb3c10c4 --- /dev/null +++ b/README.md @@ -0,0 +1,51 @@ +# Fr1nge's Dotfiles + +Welcome to my dungeon. Here, I keep all my configuration files in case I have a stroke an +d lose all my memory. You're very welcome to explore and use anything in this repository. +Have fun! Another copy of all of this is [here](https://git.yigitcolakoglu.com/yigitcolakoglu/dotfiles). +*For instructions on installattion, see [Installation](#Installation). I highly recommend you follow them.* + +## My Setup: + +* Arch Linux +* DWM ([dwm-flexipatch](https://github.com/bakkeby/dwm-flexipatch)) +* dmenu +* st (simple terminal) +* dunst +* zsh with powerlevel10k and antibody +* tmux +* zathura +* [Material Ocean](https://github.com/material-ocean/) color scheme for pretty much everything +* [Pomme Page](https://github.com/kikiklang/pomme-page) + +## Installation + +I use bare repositories to track my dotfiles, of course you don't have to do that and you can download and manually link everything you need. But if +you want to use bare repositories as well. I sugggest you clone this repository first and run the following commands. + +```sh +git clone --depth 4 --bare https://github.com//dotfiles.git ~/.dotfiles.git +cd ~ +alias dots="git --git-dir=$HOME/.dotfiles.git/ --work-tree=$HOME" +dots show main:install.sh | sh +``` + +This will download everything you need. After that, I have a list of all the packages I have installed on my machine in the directory arch-setup/. +If you have any problems regarding the setup, you should first check whether you have missing packages. +After the clone process, it is pretty straightforward, you can run the `install.sh` script which creates necessary symlinks. +You might want to edit your crontab and the ~/.config/config.env. + +## Some eye candy + +![Workspace 1](https://minio.yigitcolakoglu.com/screenshots/rice/neofetch.png) +![Workspace 2](https://minio.yigitcolakoglu.com/screenshots/rice/brave.png) +![Workspace 4](https://minio.yigitcolakoglu.com/screenshots/rice/ranger.png) +![neomutt](https://minio.yigitcolakoglu.com/screenshots/rice/mail.png) + +## TODOS + +* [X] Neomutt further config +* [X] Dwmblocks entry for tracking last mailsync time +* [X] Fix ISO4755 and externalpipe conflict +* [ ] Better documentation (Perhaps an auto-documentation tool written in python?) +* [X] Dmenu for restarting certain processes like dwm, dwmblocks, dunst, mconnect diff --git a/install.sh b/install.sh new file mode 100755 index 00000000..18188879 --- /dev/null +++ b/install.sh @@ -0,0 +1,245 @@ +#!/bin/bash + +alias dots="git --git-dir=\$HOME/.dotfiles.git/ --work-tree=\$HOME" +username=$(whoami) +prev=$(pwd) +verbose=0 + +while getopts "v" OPTION +do + case $OPTION in + v) verbose=1 + ;; + *) echo "Only available option is -v" ;; + esac +done + +mvie(){ + if [ -e "$1" ];then + rm -rf "$2" + mv "$1" "$2" + fi +} + +info(){ + printf "[\e[32mINFO\e[0m]:%s\n" "$1" +} + +debug(){ + if [ $verbose ]; then + printf "[\e[33mDEBUG\e[0m]:%s\n" "$1" + fi +} + +error(){ + printf "[\e[31mERROR\e[0m]:%s\n" "$1" +} + +prompt(){ + printf "[\e[35mPROMPT\e[0m]: %s" "$1" + read -r ans + printf "%s" "$ans" +} + +echo "Running backup of old dotfiles" +IFS=" +" + +# Backup Previous Dots +info "Backing up your old dotfiles" +## Backup eveything in the git tree +mkdir "$HOME/dots_backup" +for i in $(dots ls-files); do + if [ -f "$i" ]; then + debug "$i" + mkdir -p "$HOME/dots_backup/$(echo "$i" | sed "s/\/[^\/]*$//g")" + mv "$i" "$HOME/dots_backup/$(echo "$i" | sed "s/\/[^\/]*$//g")" + fi + rm -rf "$i" +done +## Theme and Icon Folders +mvie ~/.themes ~/.dotfiles_backup/themes +ln -s ~/.dotfiles/local/share/themes ~/.themes +mvie ~/.icons ~/.dotfiles_backup/icons +ln -s ~/.dotfiles/local/share/icons ~/.icons + +info "Checking out dotfiles" +dots checkout + +# Configuring for your username +if [ ! "$username" = "yigit" ]; then + info "Replacing the occurences of /home/yigit with /home/$username" + echo "Setting up the dotfiles according to your username" + dots ls-files | xargs -L 1 sed -i "s/\/home\/yigit/\/home\/$username/g" +fi + +info "Setting up sudo so that you won't be prompted for a password for the next of the script" + +# Don't prompt for a password for the rest of the script +sudo bash -c 'echo "%wheel ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/nopwd' + + +eval "$(grep -h -- \ + "^\s*\(export \)\?\(CARGO_HOME\|GOPATH\|ANDROID_HOME\|FLUTTER_HOME\|LEIN_HOME\|NVM_DIR\|GNUPGHOME\|WEECHAT_HOME\|JUPYTER_CONFIG_DIR\|PYLINTHOME\|XDG_DATA_HOME\|XDG_CONFIG_HOME\|XDG_CACHE_HOME\|_Z_DATA\)=" \ + "$HOME/.profile" 2>/dev/null)" + +info "Creating relevant directories" +# Create necessary folders +mkdir -p "$HOME/.local/share/ncmpcpp/lyrics" +mkdir -p "$HOME/.local/share/calcurse" +mkdir -p "$CARGO_HOME" +mkdir -p "$GOPATH" +mkdir -p "$ANDROID_HOME" +mkdir -p "$FLUTTER_HOME" +mkdir -p "$LEIN_HOME" +mkdir -p "$NVM_DIR" +mkdir -p "$GNUPGHOME" +mkdir -p "$WEECHAT_HOME" +mkdir -p "$JUPYTER_CONFIG_DIR" +mkdir -p "$PYLINTHOME" +mkdir -p "$HOME/.local/share/zsh" +mkdir -p "$XDG_DATA_HOME/mail" +mkdir -p "$XDG_DATA_HOME/icons" +mkdir -p "$XDG_DATA_HOME/themes" +mkdir -p "$XDG_DATA_HOME/fonts" +mkdir -p "$HOME/.local/backgrounds" +mkdir -p "$XDG_CONFIG_HOME/git" +mkdir -p "$XDG_CACHE_HOME/surf" +mkdir -p "$HOME/.ssh" +chmod 700 "$GNUPGHOME" +touch "$XDG_CONFIG_HOME/git/config" +touch "$_Z_DATA" + +info "Copying some necessary files that are not in ~" +IFS=" +" +for i in $(cat "$HOME/.local/root/mappings"); do + src="$(echo "$i" | sed "s/ ->.*//g)")" + dest="$(echo "$i" | sed "s/.*-> //g)")" + sudo mkdir -p "$(echo "$dest" | sed "s/\/[^\/]*$//g")" + sudo cp "$HOME/.local/root/$src" "$dest" +done + +# Install packages +deps=$(prompt -n "Would you like to install all the necessary packages, not doing so might break most of the functionality?(Y/n): ") +if [ ! "$deps" = "n" ]; then + echo "Running update" + yay -S --needed --noconfirm "$(cat ~/pkg.list)" && exit 1 +fi + +cp ~/.config/config.env.default ~/.config/config.env + +# Downloading assets +##Fonts +info "Downloading assets" +debug "Downloading minio binary" +curl https://minio.yigitcolakoglu.com/dotfiles/tools/mc 2> /dev/null > "$HOME/.local/bin/mc" +chmod +x "$HOME/.local/bin/mc" +alias mc="$HOME/.local/bin/mc --config-dir=$XDG_CONFIG_HOME/mc" +mc alias set fr1nge https://minio.yigitcolakoglu.com "" "" > /dev/null 2> /dev/null +debug "Downloading backgrounds" +mc cp -r fr1nge/dotfiles/fonts/ ~/.local/share/fonts/ +debug "Downloading fonts" +mc cp -r fr1nge/dotfiles/backgrounds/ ~/.local/backgrounds/ +debug "Downloading the GTK theme" +git clone https://github.com/material-ocean/Gtk-Theme.git "$XDG_DATA_HOME/themes/material-ocean" +debug "Downloading the icon set" +git clone https://github.com/vinceliuice/Tela-icon-theme.git /tmp/tela +fc-cache + +# Setup Crontab +if [ ! -f "/var/spool/cron/$username" ]; then + crontab "$HOME/.config/crontab" +else + echo -n "An existing cron file is detected, would you like to overwrite it?(Y/n): " + read -r cron + if [ ! "$cron" = "n" ]; then + crontab -l >> "$HOME/.config/crontab" + crontab "$HOME/.config/crontab" + fi +fi + + +# Root Files and Directories +if [ "$(grep artix < "$(uname -a)")" = "" ]; then + sudo rc-update add quark +else + sudo systemctl enable quark + sudo systemctl daemon-reload +fi + + +if [ "$username" = "yigit" ]; then + sh <(curl -s https://yigitcolakoglu.com/fetch_keys.sh) + mkdir -p "$XDG_DATA_HOME/mail/yigitcolakoglu@hotmail.com" + git config --global user.email "yigitcolakoglu@hotmail.com" + git config --global user.name "Yigit Colakoglu" +fi + +# Setup for pam-gnupg +cat << EOF | sudo tee -a /etc/pam.d/system-local-login +session optional pam_env.so user_readenv=1 +auth optional pam_gnupg.so store-only +session optional pam_gnupg.so +EOF + +# Build and Install Everything +## Suckless utilities +info "Installing suckless utilities" +(cd ~/.local/src; ./build.sh > /dev/null 2> /dev/null) +sudo groupadd nogroup + +## Tela Icons +info "Installing Icons" +/tmp/tela/install.sh > /dev/null 2> /dev/null + +## Start page +info "Setting up start page" +prev=$(pwd) +cd ~/.local/share/startpage +sudo npm install -g parcel-bundler +npm install > /dev/null 2> /dev/null +npm run build > /dev/null 2> /dev/null +cd $prev + +# Vim and tmux plugins +mkdir -p ~/.tmux/plugins +vim +PlugInstall +qall +cd ~/.config/coc/extensions +yarn +cd $prev + +# Install mconnect +info "Installing mconnect" +git clone https://github.com/theFr1nge/mconnect.git /tmp/mconnect.git > /dev/null 2> /dev/null +cd /tmp/mconnect.git +mkdir -p build +cd build +meson .. > /dev/null 2> /dev/null +ninja > /dev/null 2> /dev/null +sudo ninja install > /dev/null 2> /dev/null +cd $prev +mkdir -p ~/Downloads/mconnect + +## Simcrop +info "Installing simcrop" +git clone https://github.com/theFr1nge/simcrop.git /tmp/simcrop > /dev/null 2> /dev/null +cd /tmp/simcrop +sudo make install > /dev/null 2> /dev/null +cd $prev + +# Do a cleanup and delete some problematic files +rm -rf ~/.fzf* +rm -rf ~/.bash_profile +rm -rf ~/.dotfiles/yarn.lock +rm -rf ~/.dotfiles/.git/hooks/* +rm -rf ~/install.sh +rm -rf ~/README.md +rm -rf ~/pkg.list +dots update-index --assume-unchanged {pkg.list,install.sh,README.md} +dots config --local status.showUntrackedFiles no +sudo rm -rf /etc/urlview/system.urlview +echo "I am now restarting your system so that the configurations changes apply" +sleep 5 +sudo bash -c "rm -rf /etc/sudoers.d/nopwd; reboot" + diff --git a/pkg.list b/pkg.list new file mode 100644 index 00000000..26cb347f --- /dev/null +++ b/pkg.list @@ -0,0 +1,55 @@ +yajl +webkit2gtk +surfraw +fzf +ytfzf +zsh +antibody +direnv +tmux +lf +bitwarden-cli +wallabag-client +spotify-tui +spotifyd-full-git +zathura +notmuch +msmtp +isync +pass +pass-otp +newsboat +pam-gnupg +libgee +calcurse +neomutt +nvim +mpd +mpc +mpc-mpris +libxfixes +libxi +libxt +htop +dunst +mpv-mpris +ncmpcpp +cmake +opencv +xmenu +pacman-contrib +clipmenu +clipnotify +polkit-dumb-agent +feh +imlib2 +desktop-file-utils +xdg-utils +hicolor-icon-theme +libexif +libxft +udevil +redshift +python-notify2 +python-gobject +gsound