Files
homelab/infrastructure/graduated/arch/workstation.md

9.6 KiB

Workstation

Toolbox

https://wiki.archlinux.org/title/Toolbox

Toolbox is a containerized workstation service via podman.

# select "crun" when prompted
pacman -S toolbox

toolbox create

toolbox enter

sudo pacman -S zsh grml-zsh-config zsh-syntax-highlighting zsh-autosuggestions pkgfile

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

# DNSMasq is required - do not start it with systemd, qemu will handle that.
pacman -S qemu-full dnsmasq virt-manager
systemctl enable --now libvirtd
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

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 use the AUR:

https://aur.archlinux.org/packages/visual-studio-code-bin

cd ~/aur
git clone https://aur.archlinux.org/visual-studio-code-bin.git
cd visual-studio-code-bin
makepkg -si

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 %u
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

Creality Print

https://www.creality.com/pages/download-software?spm=..page_11657537.creality_print_1.1

mv ~/Downloads/Creality_Print*.AppImage ~/Applications/Creality_Print.AppImage
chmod +x ~/Applications/*.AppImage
[Desktop Entry]
Name=Creality Print
Exec=/home/ducoterra/Applications/Creality_Print.AppImage
Icon=/home/ducoterra/.icons/creality_print.png
Type=Application

Bambu Studio

https://aur.archlinux.org/packages/bambustudio-bin

  1. Install https://aur.archlinux.org/ttf-harmonyos-sans.git
  2. Install as normal with makepkg -si

Orca Slicer

https://github.com/SoftFever/OrcaSlicer

This is an open source fork of Bambu Slicer with more features.

# You might need to install webkit2gtk
pacman -S webkit2gtk
mv ~/Downloads/OrcaSlicer*.AppImage ~/Applications/OrcaSlicer.AppImage
chmod +x ~/Applications/*.AppImage
[Desktop Entry]
Name=Orca Slicer
Exec=/home/ducoterra/Applications/OrcaSlicer.AppImage
Icon=/home/ducoterra/.icons/orca_slicer.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

cd ~/Downloads
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

# Do this in a toolbox
toolbox enter

# Install
pacman -S bind

rpi-imager

https://github.com/raspberrypi/rpi-imager

toolbox create -d ubuntu -r 24.04
toolbox enter toolbox enter ubuntu-toolbox-24.04
sudo apt install rpi-imager

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

Nextcloud Talk

https://github.com/nextcloud-releases/talk-desktop/releases

mv ~/Downloads/Nextcloud.Talk-linux-*/Nextcloud* ~/Applications/NextcloudTalk

vim ~/.local/share/applications/nextcloud-talk.desktop

[Desktop Entry]
Name=Nextcloud Talk
Exec="/home/ducoterra/Applications/NextcloudTalk/Nextcloud Talk" %u
Icon=/home/ducoterra/.icons/NextcloudTalk.png
Type=Application
update-desktop-database

FFMpeg

# Select pipewire-jack when prompted
pacman -S ffmpeg

Youtube-dlp

https://github.com/yt-dlp/yt-dlp

  1. Download yt-dlp_linux
  2. clamdscan yt-dlp_linux
  3. cp yt-dlp_linux /usr/local/bin/yt-dlp
  4. Install ffmpeg pacman -S ffmpeg

Download the best quality video:

yt-dlp -f "bv+ba/b" https://...

Iperf3

pacman -S iperf3

Glances

pacman -S glances

VirtualBox

https://wiki.archlinux.org/title/VirtualBox

For the linux kernel, choose virtualbox-host-modules-arch

pacman -S virtualbox

# Required reboot to load the kernel modules
reboot