๐ Additional guiding principles for software selection:
- ๐งช Innovative (what's a better way of doing things?)
- ๐ Open (growth oriented; infinite games)
- ๐ Collaborative (what can we do better?)
โ I try to avoid communities and software that:
- ๐ฉ follow the status quo (even if it is easier at first)
- ๐ฅง have zero-sum mentality (winning is not the goal)
In short (JFK definitely would've used arch, btw):
"...we {do these} things not because they are easy, but because they are hard,"
โโ"because that goal will serve to organize and measure the best of our energies and skills,"
โโโโ"because that challenge is one that we are willing to accept, one we are unwilling to postpone..."
๐ฅ๏ธ Display
๐ฏ Core Applications
- Editor: neovim
- Browser: Firefox
- with custom firefox css.
- Terminal: kitty
- Shell: zsh
๐จ Design Framework
- Color Scheme: vagari (work in progress)
- GTK: catppuccin macchiato (peach) (temporary)
- Cursors: Nordzy-white (temporary)
- Icons: Nordzy (temporary)
๐ฌ Fonts
- Sans Serif: Albert Sans
- Monospace: Fira Code
- Italic: Hack
- Symbols: Nerd Font Symbols
- Emoji: Noto Color Emoji
- Other: Lora (serif), Archivo (display), Architects Daughter (handwritten)
- File Explorer: xplr
- Image Editing: gimp
- Imagine Generation: midjourney
- Image Processing: darktable
- Vector Graphics: inkscape
- Screen Recording: wf-recorder
- Audio Editing: audacity
- Video Editing: blender
- Music: spotify with playerctl
- Music Visualizer: glava
explanation.mp4
- Keyboard: Corne (Helidox) 42 key, with Kailh gChoc Light Blue (20g), and custom layout:
- Monitor: SAMSUNG UR59 Series 32-Inch 4K UHD (3840x2160)
- Mouse: MX Master 3S
- CPU: AMD Ryzen 7 3700X (16) @ 3.600GHz
- Microphone: Shure SM57
- Audio Interface: Scaarlett Solo 3rd Gen
- Camera: Canon EOS M50 Mark II
- Lens: Sigma 16mm f/1.4
1. Get the installation image:
2. Prepare an installation medium:
-
Find USB device partition (sda or sdb, probably):
lsblk -f
-
Write to USB using dd (sd"x", do not use partition number):
dd bs=4M if=path/to/archlinux-version-x86_64.iso of=/dev/sdx conv=fsync oflag=direct status=progress
3. Use guided arch installation
-
Boot to USB and run command (does a great job for me and is easy to follow):
archinstall
-
Some relevant options that might not be clear:
audio client: pipewire best effort partition: btrfs desktop client: minimal (arch does not support hyprland at this time)
-
Best to install a few essential packages during this step:
base base-devel linux-headers git rustup
General Recommendations ๏ ท worth the read, seriously
Note: the following is not meant to be a generalized installation guide; it's essentially a collection of commands to take a minimal arch install to my current configuration.
Many of steps are extremely tailored to my needs, or my best attempt to solve certain problems. Notably, many of my configs are based around my custom keyboard layout, so don't expect shortcuts to be intuitive if you are trying to copy them.
Eventually I'd like to create a generalized script to streamline installation for different hardware, but that's not a problem needing to be solved at this time.
1. Install the latest stable of version of rust using rustup:
rustup default nightly
2. Install paru:
cd ~
mkdir .cache && cd .cache
git clone https://aur.archlinux.org/paru.git
cd paru
makepkg -si
3. Clone dotfiles and install packages:
cd ~
git clone https://github.com/nosvagor/dotfiles
paru -S --needed - < ~/dotfiles/etc/packages.lst
# might want to review/edit this list โฎญ before installing.
# no good repos nordzy icons/cursors, do manually โฎฏ
git clone https://github.com/alvatip/Nordzy-icon
cd ~/.cache
cd Nordzy-icon
./install.sh
cd ~/.cache
git clone https://github.com/alvatip/Nordzy-cursors
cd Nordzy-cursors
./install.sh
# manual eww installation
git clone https://github.com/elkowar/eww
cd eww
# Edit: crates/eww/src/config/inbuilt.rs
# Update: `define_builtin_vars! { Duration::new(0, 500000000)`
# Default is (2, 0), but I like updates of 0.5 seconds for cpu polling.
# ... there is probably a better way to do this.
cargo build --release --no-default-features --features=wayland
cd target/release
chmod +x ./eww
cp eww /usr/bin/
# note: a location and openweathermap key is needed for weather widget.
# https://home.openweathermap.org/api_keys
echo "{api key here}" > ~/.local/.owm_api_key
echo "{lat} {long}" > ~/.local/.location
4. Change default sh:
chsh -s /usr/bin/zsh
5. Set up sddm:
cd ~/dotfiles/etc/sddm.conf.d
mkdir /etc/sddm.conf.d
sudo cp autologin.conf /etc/sddm.conf.d/
# note: updates to hyprland sometimes overwrite the desktop entry โฎฏ
sudo cp hyprland.desktop /usr/share/wayland-sessions/hyprland.desktop
# simply copy over the desktop entry as as needed
# check using: bat /usr/share/wayland-sessions/hyprland.desktop
# should be: 4 | Exec=hyprwrap (not Hyprland)
systemctl enable sddm
6. Symbolically link most config files:
cd ~
mkdir .config
ln -sfn ~/dotfiles/config/* ~/.config/
ln -sfn ~/dotfiles/config/zsh/zshrc .zshrc
7. Setup some root configurations:
cd ~/dotfiles/etc
sudo ln -sfn ~/dotfiles/bin/* /usr/bin/
sudo cp bluetooth/main.conf /etc/bluetooth/main.conf
sudo cp udev/* /etc/udev/rules.d/
sudo cp loader.conf /boot/loader/loader.conf
sudo cp gifview.desktop /usr/share/applications/gifview.desktop
sudo cp security/faillock.conf /etc/security/faillock.conf
sudo cp caddy.service /etc/systemd/system/
sudo systemctl enable bluetooth
sudo systemctl enable caddy.service
8. Ensure some preferred fonts are installed:
cd ~
mkdir -vp ~/.local/share
tar -xzvf ~/dotfiles/etc/fonts.tar.gz fonts
mv fonts ~/.local/share/
9. Update various Firefox about:config
options:
-
Increase scaling factor due to 4k screen (HiDPI environment):
layout.css.devPixelsPerPx = 1.25
-
Stop asking to restore session (killing the windows counts as a crash, I guess)
browser.sessionstore.resume_from_crash = false
-
Hide PDF sidebar by default
pdfjs.sidebarViewOnLoad = 0
-
Disable some bloat:
extensions.pocket.enabled = false
-
Review basic settings (fonts 'n such)
-
Install vagari.firefox userChrome css
10. Configure SSH key:
ssh-keygen -t ed25519 -C "your_email@example.com"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
# https://github.com/settings/keys
# view your key, which github needs for auth/singing
bat ~/.ssh/id_ed25519.pub
- e.g., using SSH key to manage dotfiles:
# example moving to ssh origin:
git remote set-url origin git@github.com:nosvagor/dotfiles.git
My preferred directory structure: (definitely optional)
cd ~
mkdir -vp media/music media/images media/videos media/gifs media/screenshots media/recordings
mkdir -vp downloads docs/templates docs/books docs/papers docs/share
git clone git@github.com:nosvagor/vagari.git
git clone git@github.com:nosvagor/notes.git