a#+TITLE: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
Note: Not really intended to be shared. I don’t do clean install often and I set NVIDIA Specific Environment variables.
- set up os, install correct graphics driver, internet. pipewire ect…
- run install script.
./install.sh
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 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
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
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
greetd
greetd-regreet
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
systemctl --user enable swaync.service
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.
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
- libpulse for pactl but don’t want to add pipewire here
swayidle
nwg-look
jq
jaq
easyeffects
pavucontrol
blueberry
iwgtk
playerctl
go
rustup
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 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
Packages On my system and there configuration.
vlc
downgrade
android-messages-desktop-bin
firefox-bin
slack-desktop
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
alacritty
zsh
zsh-autosuggestions
zsh-completions
zsh-history-substring-search
zsh-syntax-highlighting
exa
Get the active profile from profiles.ini and symlink chrome folder into place. Required extentions are installed via my firefox account after login.
- go to
about:config
and settoolkit.legacyUserProfileCustomizations.stylesheets
to true. - restart firefox fully.
- import sidebery data and customize bar to remove refresh buttons.
- 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
- Sidebery
- Infintiy New Tabs
- Gruvbox Dark Theme
- Ad blocker
- password manager
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
Set the theme to dark and paste values.
#3C3836,#1A0404,#3C3836,#D5C4A1,#665C54,#EBDBB2,#FB4934,#D5C4A1,#D5C4A1,#282828
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
words
aspell
aspell-en
hspell
nuspell
libvoikko
ripgrep
isync
enchant
texlive
bash-language-server
curl
shellcheck
rust-analyzer
sshfs
- https://github.com/fufexan/dotfiles
- https://github.com/Axarva/dotfiles-2.0
- https://github.com/saimoomedits/eww-widgets
All installed packages on my system.
paru -Qqen