Skip to content

Documenting my setup. I don't want to automate this with ansible/scripting but wanted to be able to pick and choose depending on my usecase and hardware.

Notifications You must be signed in to change notification settings

mattsiedenburg/archsetup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

62 Commits
Β 
Β 

Repository files navigation

archsetup

Documenting my setup. I don't want to automate this with ansible/scripting but wanted to be able to pick and choose depending on my usecase and hardware.

Contents

setup

wipefs

Necessary in some circumstances where archinstall is unable to format the disk.

All data will be lost.

NVMe: /dev/nvme0n1

SATA: /dev/sda

wipefs -a /dev/nvme0n1

connect to wi-fi

Needed if using Wi-Fi for installation.

iwctl

Device name is typically wlan0.

Substitute MyWiFiSSID with actual SSID.

station wlan0 connect MyWiFiSSID

archinstall

Update archinstall script

pacman -Sy archinstall --noconfirm
archinstall

swap

Only necessary if swap/zram is not selected with archinstall.

sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress
sudo chmod 0600 /swapfile
sudo mkswap -U clear /swapfile
sudo swapon /swapfile

Update /etc/fstab.

sudo vim /etc/fstab

Contents of /etc/fstab:

/swapfile none swap defaults 0 0

pacman and aur

pacman

sudo vim /etc/pacman.conf

Uncomment the following lines in /etc/pacman.conf:

Color

[multilib]
Include = /etc/pacman.d/mirrorlist
sudo pacman -Syu
sudo pacman -S pacman-contrib --needed

reflector

sudo pacman -S reflector --needed

Set country code: US

sudo vim /etc/xdg/reflector/reflector.conf

Contents of /etc/xdg/reflector/reflector.conf:

--country US
sudo systemctl enable reflector.timer --now

yay

sudo pacman -S --needed git base-devel
git clone https://aur.archlinux.org/yay-bin.git
cd yay-bin
makepkg -si
cd ..
rm -rf yay-bin

hardware

power

yay -S power-profiles-daemon --needed
sudo systemctl enable power-profiles-daemon.service --now

AMD Ryzen only, for reading power statistics using mangohud.

yay -S zenpower3-dkms --needed

Intel only

yay -S thermald --needed
sudo systemctl enable thermald.service --now

bluetooth

If a Bluetooth adapter installed.

sudo systemctl enable bluetooth.service --now

ssd trim

Installed and enabled by default when using archinstall.

yay -S util-linux --needed
sudo systemctl enable fstrim.timer --now

microcode

Microcode installed automatically when using archinstall.

Intel

yay -S intel-ucode --needed

AMD

yay -S amd-ucode --needed

prime

Nvidia hybrid graphics laptop only.

yay -S nvidia-prime --needed

kernel

zen

yay -S linux-zen linux-zen-headers --needed

lts

yay -S linux-lts linux-lts-headers --needed

dkms

Nvidia hybrid graphics only, needed only when running non-mainline kernel.

yay -S nvidia-dkms --needed

grub

If dual booting, install os-prober

yay -S os-prober --needed

If using more than one kernel, edit grub.

sudo vim /etc/default/grub

Contents of /etc/default/grub:

GRUB_DEFAULT=saved
...
GRUB_SAVEDEFAULT=true
...
GRUB_DISABLE_SUBMENU=y
...
GRUB_DISABLE_OS_PROBER=false # if dual booting
sudo grub-mkconfig -o /boot/grub/grub.cfg

packages

documentation

yay -S man-db \
    man-pages \
    tldr --needed

internet

yay -S firefox --needed

gaming

yay -S steam \
    gamemode \
    gamescope \
    mangohud \
    goverlay \
    minecraft-launcher --needed

text editors and dev tools

yay -S vim \
    sublime-text-4 \
    visual-studio-code-bin \
    cursor-bin \
    git
    net-tools --needed

virtualization and containers

docker

yay -S docker docker-compose --needed
sudo systemctl enable docker.service --now
sudo usermod -a -G docker $USER

kubernetes

yay -S kubectl \
    helm \
    minikube \
    kind-bin \
    k9s --needed

Contents of ~/.zshrc:

source <(kubectl completion zsh)
source <(helm completion zsh)
source <(minikube completion zsh)
source <(kind completion zsh)

libvirt

yay -S libvirt \
    qemu \
    virt-manager \
    iptables-nft \
    dnsmasq \
    dmidecode \
    bridge-utils \
    openbsd-netcat \
    virt-manager --needed

sudo systemctl enable libvirtd.service --now
sudo usermod -a -G libvirt $USER

vagrant

yay -S vagrant --needed
vagrant plugin install vagrant-libvirt

zsh

yay -S zsh --needed
touch ~/.zshrc
chsh -s $(which zsh)

history

Configure zsh history.

Contents of ~/.zshrc:

HISTFILE=~/.zsh_history
HISTSIZE=1001
SAVEHIST=1000
setopt EXTENDED_HISTORY
setopt HIST_EXPIRE_DUPS_FIRST
setopt HIST_FIND_NO_DUPS
setopt HIST_IGNORE_ALL_DUPS
setopt HIST_IGNORE_DUPS
setopt HIST_IGNORE_SPACE
setopt HIST_REDUCE_BLANKS
setopt HIST_SAVE_NO_DUPS
setopt INC_APPEND_HISTORY

plugins

yay -S zsh-syntax-highlighting \
    zsh-history-substring-search \
    zsh-autosuggestions \
    zsh-autocomplete --needed

Contents of ~/.zshrc:

source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
source /usr/share/zsh/plugins/zsh-history-substring-search/zsh-history-substring-search.zsh
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
source /usr/share/zsh/plugins/zsh-autocomplete/zsh-autocomplete.plugin.zsh

starship

yay starship --needed
starship preset gruvbox-rainbow -o ~/.config/starship.toml

Contents of ~/.zshrc:

eval "$(starship init zsh)"

antigen

In lieu of starship and manual zsh configurations above:

yay -S antigen --needed

antigen setup

Contents of ~/.zshrc:

source /usr/share/zsh/share/antigen.zsh

antigen use oh-my-zsh

antigen bundle git
antigen bundle command-not-found
antigen bundle docker
antigen bundle docker-compose

antigen bundle zsh-users/zsh-syntax-highlighting
antigen bundle zsh-users/zsh-autosuggestions
antigen bundle zsh-users/zsh-history-substring-search
antigen bundle zsh-users/zsh-completions

antigen theme romkatv/powerlevel10k

antigen apply

misc

tools

yay -S bat \
    eza \
    ripgrep \
    fzf --needed

Contents of ~/.zshrc:

alias cat='bat'
alias less='bat'
alias ls='eza'
alias ll='eza -ahl --group-directories-first --icons --color always'
alias tree='eza --tree'

fonts

yay -S ttf-firacode-nerd ttf-nerd-fonts-symbols --needed

alacritty

yay -S alacritty alacritty-themes --needed
alacritty-themes --create

Contents of ~/.config/alacritty/alacritty.toml:

general.import = [
  "/usr/lib/node_modules/alacritty-themes/themes/Gruvbox-Dark.toml"
]

[font]
size = 18

  [font.normal]
  family = "FiraCode Nerd Font"

  [font.bold]
  family = "FiraCode Nerd Font"

  [font.italic]
  family = "FiraCode Nerd Font"

  [font.bold_italic]
  family = "FiraCode Nerd Font"

fish

yay -S fish --needed
touch ~/.config/fish/config.fish
chsh -s $(which fish)

configure fish

Contents of ~/.config/fish/config.fish

if status is-interactive
    set -U fish_greeting "🐟"
    set -U EDITOR vim
    set -U BROWSER firefox

    function ll
        eza -Ahl --group-directories-first --icons --color always $argv
    end

    function tree
        eza -A --tree --icons --color always $argv
    end

    function cat
        bat
    end

    function less
        bat
    end

    function yyy
        yay --noconfirm && yay -Yc --noconfirm && yay -Sc --noconfirm
    end
end

github

ssh key

ssh-keygen

test

Add public key to github before testing.

config

git config --global user.name 'Matt Siedenburg'
git config --global user.email '[email protected]'

About

Documenting my setup. I don't want to automate this with ansible/scripting but wanted to be able to pick and choose depending on my usecase and hardware.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published