Skip to content

nehrbash/dotfiles

Repository files navigation

My Setup

  • Wallpaper
  • Emacs
  • Hyprland
  • Arch Linux
  • nwg-shell (monitors, settings)
  • Bar: eww
  • pipe wire, easy effects
  • File Manager: Gnome Files, Dired (Emacs)
  • PDF Viewer: pdf-tools (Emacs)
  • Theme: ef-melissa-dark )
  • cursor theme: Dracula

Table Of Contents

Arch Install script

Note: Not really intended to be shared. I don’t do clean install often and I set NVIDIA Specific Environment variables.

  1. set up os, install correct graphics driver, internet. pipewire ect…
  2. run install script.
./install.sh

Bootstrap

Stow & Git

GNU Stow is a software installation manager for Unix-like operating systems which helps manage the installation, removal, and maintenance of software packages. It works by creating symlinks to files within package directories, allowing you to easily enable or disable specific software versions. This helps keep software organized in a clean, centralized manner and prevents conflicts between different versions of the same software.

#! /bin/bash
set -e
set -x
cd ~
if [ -d ".dotfiles" ]; then
    echo ".dotfiles directory exists. Pulling latest updates."
    cd .dotfiles
    git pull || true
    git submodule update --init --recursive
else
	cd .dotfiles
    echo ".dotfiles directory does not exist. Cloning repo."
    git clone https://github.com/snehrbass/dotfiles.git .dotfiles --recurse-submodules
fi
stow .
cd -

Paru

Paru is an Arch Linux package manager written in Rust. It is a community-driven project aiming to be a feature-rich and user-friendly alternative to the default package manager, Pacman. Paru allows users to install, upgrade, and remove packages from the Arch User Repository (AUR) as well as from the official Arch Linux repositories. It provides additional functionality like dependency resolution, parallel downloads, and automatic conflict resolution.

sudo pacman -S --needed base-devel
if ! command -v paru &> /dev/null; then
    git clone https://aur.archlinux.org/paru.git
    cd paru
    makepkg -si
    cd -
    rm -r paru
fi

Install Packages

Installed Required packages + optional ones.

read -p "Do you want to update packages? (yes/no): " choice

if [[ "$choice" == "yes" ]]; then
	paru -Syu
    paru --needed -S - < ~/.dotfiles/pkglist.txt
else
    echo "Skipping package update."
fi

Keyboard

images/keyboard.jpg

Login

I used greetd with Hyprland and regreet. Manually copy greetd to /etc/greetd make sure the greetd user can read files.

read -p "Do you want to install greetd.service? (yes/no): " choice
if [[ "$choice" == "yes" ]]; then
	cd ~/.dotfiles/ || exit
	sudo cp -r greetd/ /etc/greetd/ 
	sudo systemctl enable greetd.service
else
    echo "Skipping Spicetify update."
fi

Packages

greetd
greetd-regreet

WM Hyprland

The best Wayland Window Manager.

swaync
nwg-launchers-git
swww
waypaper-engine
light
brightnessctl
wget
nwg-displays
wlr-randr
grim
hyprland
hyprlang
xdg-desktop-portal-hyprland
xdg-desktop-portal-gtk
wl-clipboard

Services

systemctl --user enable swaync.service

Eww

Shitty Lisp like graphical widget system.

Sorry but I decided to start rewritting all my scripts as a monolithic go program, embed resources into it, and use dbus clients.

Install Eww

Eww is not maintained so we I needed to merge a few PR’s. Need to build my fork for system tray and check boxes. Might need to run rustup update.

read -p "Do you want install/rebuild Eww? (yes/no): " choice
if [[ "$choice" == "yes" ]]; then
    mkdir -p ~/src
    cd ~/src/ || exit
    if [ -d "eww" ]; then
        echo "Eww directory exists. Pulling latest updates."
        cd eww || exit
        git pull
    else
        echo "Eww directory does not exist. Cloning repo."
        git clone https://github.com/nehrbash/eww.git
        cd eww || exit
    fi
	go install github.com/nehrbash/hyprshell@latest
    cargo build --release --no-default-features --features=wayland && cargo build --release --no-default-features --features=wayland
    cd ~
else
    echo "Skipping Eww 😲."
fi

Packages

  • libpulse for pactl but don’t want to add pipewire here
swayidle
nwg-look
jq
jaq
easyeffects
pavucontrol
blueberry
iwgtk
playerctl
go
rustup

Color palette

Using my Emacs theme ef-melissa-dark. generated with this func.

(defun export-palette-to-scss (palette tgt-file)
  "Export a color palette to SCSS format."
  (with-temp-buffer
	(dolist (pair palette)
	  (let ((name (car pair))
			(value (cadr pair)))
		(when (and (stringp value)  ; Check if value is a string
				   (string-match-p "^#[0-9A-Fa-f]\\{6\\}$" value))
		  (insert (format "$%s: %s;\n" name value)))))
	(write-region (point-min) (point-max) tgt-file)))

(export-palette-to-scss ef-melissa-dark-palette "~/.config/eww/css/_colors.scss")  

Fonts

Fonts used across my config

  • Iosevka, Iosevka Aile => normal text
  • Materiial Icons => most Icons
  • Weather Icons => included idk where they it came from but it’s here. For Center eww.
  • font awesome => just for spotify icon
ttf-iosevka
ttf-iosevka-aile
ttf-material-icons-git
ttf-font-awesome

Personal Software

Packages On my system and there configuration.

vlc
downgrade
android-messages-desktop-bin
firefox-bin
slack-desktop

Terminal

I like a simple zsh prompt. set shell to zsh

if [[ "$SHELL" == *"/zsh" ]]; then
    echo "The current shell is already zsh. Skipping shell change."
else
    read -p "Do you want to change the shell to zsh? (yes/no): " choice

    if [[ "$choice" == "yes" ]]; then
        chsh -s $(which zsh)
        echo "Shell changed to zsh."
    else
        echo "Skipping shell change."
    fi
fi

Terminal Packages

alacritty
zsh
zsh-autosuggestions
zsh-completions
zsh-history-substring-search
zsh-syntax-highlighting
exa

Firefox

Get the active profile from profiles.ini and symlink chrome folder into place. Required extentions are installed via my firefox account after login.

  1. go to about:config and set toolkit.legacyUserProfileCustomizations.stylesheets to true.
  2. restart firefox fully.
  3. import sidebery data and customize bar to remove refresh buttons.
  4. set font to Product Sans
read -p "Do you want to update Firefox CSS? (yes/no): " choice

if [[ "$choice" == "yes" ]]; then
	PROFILE=$(awk -F= -v section="$install_section" '$1 == "Default" && found {print $2; exit} $1 == section {found=1}' ~/.mozilla/firefox/profiles.ini)
	# Create the symlink
	ln -sfn ~/.dotfiles/.config/chrome/ ~/.mozilla/firefox/${PROFILE}/
else
    echo "Skipping Firefox CSS update."
fi

Extentions

  • Sidebery
  • Infintiy New Tabs
  • Gruvbox Dark Theme
  • Ad blocker
  • password manager

Specify

spicetify-cli
spicetify-themes-git
spotify-launcher
sptlrx-bin
cava
read -p "Do you want to update Spicetify? (yes/no): " choice
if [[ "$choice" == "yes" ]]; then
	spicetify config current_theme Onepunch color_scheme light
	spicetify restore backup
	spicetify backup
	spicetify apply
else
    echo "Skipping Spicetify update."
fi

Slack

Set the theme to dark and paste values.

#3C3836,#1A0404,#3C3836,#D5C4A1,#665C54,#EBDBB2,#FB4934,#D5C4A1,#D5C4A1,#282828

Emacs

My Emacs config can be found in Here. I clone emacs-git (GNU Emacs 30.0.50) then modify the PKGBUILD for wayland and such then I build it with makepkg -sCi. will probably work mostly fine with version 29.

Building takes a sec and and also run M-x package-upgrade-all to finish installing stuff.

read -p "Do you want install/rebuild Emacs? (yes/no): " choice
if [[ "$choice" == "yes" ]]; then
    mkdir -p ~/src
    cd ~/src/ || exit
    if [ -d "emacs-git" ]; then
        echo "Emacs-git directory exists. Pulling latest updates."
        cd emacs-git || exit
        git pull || true
    else
        echo "Emacs-git directory does not exist. Cloning repo."
        git clone https://aur.archlinux.org/emacs-git.git
        cd emacs-git || exit
    fi
	git reset --hard HEAD
    git apply < ~/.dotfiles/emacs_build.patch && makepkg -si
    cd ~ || exit
else
    echo "Skipping Emacs 😞."
fi
emacs-lsp-booster-git
aspell
aspell-en
hspell
nuspell
libvoikko
ripgrep
isync
enchant
texlive
bash-language-server
curl
shellcheck
rust-analyzer
sshfs

References

List of all packages on my System

All installed packages on my system.

paru -Qqen

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published