10 KiB
Workstation
- Workstation
Framework AMD Notes
Wifi
Install the wireless-regdb to set the regulatory domain to US
pacman -S wireless-regdb
Edit /etc/conf.d/wireless-regdom to set the domain
Switch to iwd for the NetworkManager backend.
pacman -S iwd
Edit /etc/NetworkManager/conf.d/wifi_backend.conf
[device]
wifi.backend=iwd
systemctl restart NetworkManager
Microcode
pacman -S amd-ucode
Edit /boot/loader/entries/.conf and add the following:
title Arch Linux (Work)
linux /vmlinuz-linux
initrd /amd-ucode.img
initrd /initramfs-linux.img
options ...
Base Tools
pacman -S rsync which git iperf3 pwgen dosfstools exfatprogs
ZSH
pacman -S zsh grml-zsh-config
chsh -s $(which zsh)
echo "autoload -U compinit; compinit" > ~/.zshrc
Aliases
You can put you aliases in .zshrc with the following format:
alias update='sudo pacman -Syu --noconfirm'
It's recommended that for complicated/multiline aliases you create a folder called
~/.local/scripts where you store each alias. Make sure to back up this folder!
Rollback Pacman Update
This script will grep for all updates performed today and roll them back one by one.
rollback_update.sh
grep -a upgraded /var/log/pacman.log| grep $(date +"%Y-%m-%d") > /tmp/lastupdates.txt
awk '{print $4}' /tmp/lastupdates.txt > /tmp/lines1;awk '{print $5}' /tmp/lastupdates.txt | sed 's/(/-/g' > /tmp/lines2
paste /tmp/lines1 /tmp/lines2 > /tmp/lines
tr -d "[:blank:]" < /tmp/lines > /tmp/packages
cd /var/cache/pacman/pkg/
for i in $(cat /tmp/packages); do sudo pacman --noconfirm -U "$i"*; done
Podman
Install with the following
pacman -S podman buildah cni-plugins slirp4netns podman-dnsname aardvark-dns
Then you can run rootless containers like so:
podman pull docker.io/library/python:3.11
podman run -it python:3.11 bash
podman network create test
podman pod create --network test --publish 8000:8000 test1
podman run -it --pod test1 python:3.11 bash
You can also deploy pods with kubernetes yamls.
podman network create test
podman kube play --network test podman-deploy.yaml --replace
Docker
pacman -Sy docker docker-compose
usermod -aG docker ducoterra
logout, log back in to use docker as non-root user.
You can use btrfs as your storage driver by following these instructions:
https://docs.docker.com/storage/storagedriver/btrfs-driver/
QEMU/KVM
-
Install virtualization capabilties
pacman -S qemu-full libvirt iptables-nft dnsmasq virt-manager qemu-desktop swtpm usermod -aG libvirt ducoterra -
Edit /etc/libvirt/libvirtd.conf
... unix_sock_group = 'libvirt' ... unix_sock_rw_perms = '0770' ... -
Edit /etc/libvirt/qemu.conf
# Some examples of valid values are: # # user = "qemu" # A user named "qemu" # user = "+0" # Super user (uid=0) # user = "100" # A user named "100" or a user with uid=100 # user = "ducoterra" # The group for QEMU processes run by the system instance. It can be # specified in a similar way to user. group = "ducoterra" -
sudo systemctl enable --now libvirtd -
sudo virsh net-autostart default
If you get a blank screen when launching a VM check that you've used the correct bios - either secboot or not secboot. This is the most common problem.
Arch Guests
In order to get drivers for spice you'll need the guest spice drivers:
sudo pacman -S qemu-guest-agent spice-vdagent
Restore qcow snapshots
# Create a snapshot
qemu-img snapshot -c snapshot-name /var/lib/libvirt/images/vm-image.qcow2
# List snapshots for a given image
qemu-img snapshot -l /var/lib/libvirt/images/vm-image.qcow2
# Restore snapshot
qemu-img snapshot -a snapshot-name /var/lib/libvirt/images/vm-image.qcow2
Convert qcow to bootable drive
qemu-img convert -f qcow2 -O raw /var/lib/libvirt/images/vm-image.qcow2 /dev/sdb
If you need to resize a windows partition to non-continuous space simply grow the last partition, shrink it to the end of the drive, then grow the windows partition with gparted.
Kubernetes
pacman -S kubectl helm
VSCode
For the open source version of code install code:
sudo pacman -S code
For the proprietary version of vscode install yay and then:
yay -S visual-studio-code-bin
Shell
Edit settings.json
{
"terminal.integrated.defaultProfile.linux": "zsh",
}
Fonts
Intel One Mono is designed to be easily readable for developers.
https://github.com/intel/intel-one-mono
Download and extract the ttf.zip
mkdir ~/.local/share/fonts
rsync -av /path/to/download/*.ttf ~/.local/share/fonts/
Edit settings.json
{
"editor.fontFamily": "Intel One Mono",
"editor.fontLigatures": true,
"terminal.integrated.fontFamily": "Intel One Mono",
}
Navigation
The best navigation shortcut ever is alt+left and alt+right to move the cursor to it's previous positions.
[
{
"key": "alt+left",
"command": "workbench.action.navigateBack",
"when": ""
},
{
"key": "alt+right",
"command": "workbench.action.navigateForward",
"when": ""
}
]
Extensions
To save a list of installed extensions run:
code --list-extensions >> vscode_extensions.txt
To install that list of extensions run:
cat vscode_extensions.txt | xargs -L 1 code --install-extension
Wireguard
Wireguard requires linux-headers. If that isn't installed or is misconfigured your
vpn likely won't activate.
pacman -S wireguard-tools
Remote Desktop
pacman -S remmina freerdp
Transmission
pacman -S gtk4 transmission-gtk
VLC
pacman -S vlc
Bitwarden
https://bitwarden.com/download/
mv ~/Downloads/Bitwarden*.AppImage ~/Applications/Bitwarden.AppImage
chmod +x ~/Applications/*.AppImage
[Desktop Entry]
Name=Bitwarden
Exec=/home/ducoterra/Applications/Bitwarden.AppImage
Icon=/home/ducoterra/.icons/bitwarden.png
Type=Application
Nextcloud
https://nextcloud.com/install/#install-clients
mv ~/Downloads/Nextcloud*.AppImage ~/Applications/Nextcloud.AppImage
chmod +x ~/Applications/*.AppImage
[Desktop Entry]
Name=Nextcloud
Exec=/home/ducoterra/Applications/Nextcloud.AppImage
Icon=/home/ducoterra/.icons/nextcloud.png
Type=Application
Insomnia
https://github.com/Kong/insomnia/releases/tag/core@2023.5.7
mv ~/Downloads/Insomnia*.AppImage ~/Applications/Insomnia.AppImage
chmod +x ~/Applications/*.AppImage
[Desktop Entry]
Name=Insomnia
Exec=/home/ducoterra/Applications/Insomnia.AppImage
Icon=/home/ducoterra/.icons/insomnia.png
Type=Application
QMK
Initialization
I have a mirror and a fork of the mirror on my personal Gitea. For this strategy you'll need to checkout the fork and add the mirror. This ensures I'll always have an up-to-date mirror of qmk while also giving me a repo to make changes for my personal keyboards.
git clone git@gitea.reeseapps.com:ducoterra/qmk_firmware.git
cd qmk_firmware
git remote add mirror git@gitea.reeseapps.com:mirrors/qmk_firmware.git
git fetch mirror
git rebase mirror/master
pacman -S qmk
qmk setup
sudo cp /home/ducoterra/qmk_firmware/util/udev/50-qmk.rules /etc/udev/rules.d/
qmk config user.keyboard=keychron/q11/ansi_encoder
qmk config user.keymap=ducoterra
Development
Every time you start a project you'll want to sync with the mirror.
git fetch mirror
git rebase mirror/master
Commit to master while you're in the fork.
Cura
https://ultimaker.com/software/ultimaker-cura/#links
mv ~/Downloads/*Cura*.AppImage ~/Applications/Cura.AppImage
chmod +x ~/Applications/*.AppImage
[Desktop Entry]
Name=Cura
Exec=/home/ducoterra/Applications/Cura.AppImage
Icon=/home/ducoterra/.icons/cura.png
Type=Application
AWS CLI
https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html
# Install less if you don't have it already
pacman -S less
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
Add the following to your .zshrc:
complete -C '/usr/local/bin/aws_completer' aws
NSlookup
pacman -Syu bind
rpi-imager
https://github.com/raspberrypi/rpi-imager
sudo pacman -S cmake qt5-base
Install rpi-imager
git clone https://github.com/raspberrypi/rpi-imager.git
cd rpi-imager
mkdir -p build
cd build
cmake ../src
make
sudo make install
Upgrade rpi-imager
```bash
cd rpi-imager
git pull
rm -r build
mkdir -p build
cd build
cmake ../src
make
sudo make install
qFlipper
https://flipperzero.one/update
mv ~/Downloads/*qFlipper*.AppImage ~/Applications/qFlipper.AppImage
chmod +x ~/Applications/*.AppImage
[Desktop Entry]
Name=qFlipper
Exec=/home/ducoterra/Applications/qFlipper.AppImage
Icon=/home/ducoterra/.icons/qFlipper.png
Type=Application