---
title: Development Environment
---

**DOCUMENTING DEVELOPMENT ENVIRONMENT SPECIFICATIONS AND CONFIGURATION REQUIREMENTS**

## 1. INTRODUCTION AND LEGAL FRAMEWORK

### 1.1. Policy Overview

This Development Environment Documentation (hereinafter referred to as "the Documentation") provides technical specifications, configuration details, and environment setup information for development work on projects maintained by our organisation. This Documentation operates within our comprehensive legal and policy framework, incorporating our Terms of Service, Contributor Covenant, and all applicable legal protections by reference.

### 1.2. Purpose and Scope

This Documentation describes the primary development environment used by our organisation's lead developer. While contributors are not required to replicate this exact environment, this information is provided to facilitate:

- Understanding of the development context and tooling preferences
- Troubleshooting compatibility issues
- Achieving similar development experiences
- Ensuring consistency in development practices

**IMPORTANT: This Documentation is provided for informational purposes. Contributors may use any development environment that meets project requirements. Our organisation does not endorse or require specific tools, operating systems, or configurations beyond those necessary for project functionality.**

### 1.3. Disclaimer

The information contained in this Documentation reflects the personal preferences and configurations of individual developers. These configurations are not mandatory requirements for contributions. Our organisation does not guarantee that replicating these configurations will result in identical development experiences.

## 2. SYSTEM INFORMATION

The primary development environment runs on the Arch Linux kernel.

### 2.1. Hyfetch Diagnostic Report

This is the current diagnostic report from `hyfetch`.

```bash title="hyfetch"
naomi@
------
OS: Arch Linux x86_64
├─Kernel: 6.16.1-arch1-1
├─Locale: en_GB.UTF-8
├─Shell: /usr/bin/zsh 5.9
├─WM: sway version 1.10.1
├─Terminal: ghostty
Host: 20TK0049US ThinkPad X1 Extreme Gen 3
├─BIOS: LENOVO 1.30 (08/29/2023)
├─CPU: Intel i7-10850H (12) @ 5.1GHz [67.0°on]
├─GPU: NVIDIA GeForce GTX 1650 Ti Mobile
├─Disk: /home: 247G/888G (30%)
├───Root: /: 44G/49G (95%)
├───Boot: /boot: 350M/1022M (35%)
└─Memory: 8.79 GiB / 19.22 GiB (45%)

Programming Languages
---------------------
Bash: 5.3.3(1)-release
Clang: 20.1.8
C++: 15.2.1
Dart: 3.8.1
└─Flutter
Dotnet: 9.0.109
└─C-sharp Compiler: 3.9.0-6.21124.20
Go: 1.24.6
Haskell: 9.4.8
└─Cabal: 3.8.1.0
Java: version
├─Gradle: 8.14.3
└─Kotlin: 2.2.0-release-294
Lua: 5.4.8
PHP: 8.4.11
Python: 3.13.7
└─PIP: 25.2
Node: v24.6.0
├─NPM: 11.5.2
├─Yarn: 1.22.22
└─PNPM: 10.12.3
Ruby: 3.4.5
Rust: 1.89.0
├─Rustup
└─Cargo: 1.89.0
TypeScript: 5.9.0-dev
Zig: 0.14.1

Databases
---------
MongoDB: v8.0.12
└─Mongo Shell: v8.0.12
MySQL: 9.3.0
PostgreSQL: 17.5
SQlite: 3.50.4

Tools
-----
Browser: Zen 1.14.11b
Editor: Emacs 30.2
└─Nano: 8.5
```

## 3. PACKAGES

Naomi uses the following packages.

### 3.1. Foreign Packages

These packages come from unofficial repositories, such as the AUR. This list is generated with `yay -Qm`.

<details>
  <summary>Expand List</summary>

```txt frame="terminal" title="yay -Qm"
1password 8.11.6-27
1password-cli 2.31.1-1
affine-bin 0.24.1-1
affine-bin-debug 0.24.1-1
angular-cli 20.1.6-1
chatgpt-desktop-bin 1.1.0-1
chatgpt-desktop-bin-debug 1.1.0-1
curl-impersonate-chrome-debug 1:1.0.0-1
cursor-bin 1.4.5-9
electron33 33.4.11-2
espanso-wayland 2.2.4-1
google-chat-linux-bin 5.29.23-1
google-chat-linux-bin-debug 5.29.23-1
google-messages 1.4.2-2
google-messages-debug 1.4.2-2
gpu-usage-waybar-git 0.1.19.r15.g98b2a91-1
insomnium-bin 0.2.3-1
insomnium-bin-debug 0.2.3-1
lrexlib-pcre5.1 2.9.0-2
lrexlib-pcre5.1-debug 2.9.0-2
lua-yajl 2.0-2
lua-yajl-debug 2.0-2
lua51-lcf 5.1-3
lua51-sql-sqlite 2.3.0-4
lua51-sql-sqlite-debug 2.3.0-4
luazip5.1 1.2.7-1
luazip5.1-debug 1.2.7-1
mailspring-bin-debug 1.15.1-2
mommy 1.6.0-1
mpris-discord-rpc-bin 0.5.1-1
mpris-discord-rpc-bin-debug 0.5.1-1
mudlet-bin 4.19.1-1
open-dyslexic-fonts 0.91.12-2
phonon-qt6-mpv 0.1.0-3
python-audioop-lts-debug 0.2.1-1
python-curl-cffi-debug 0.11.1-2
python-deadlib 3.13.0-2
python-edge-tts 7.0.2-1
python-gpt4all 2.2.1-1
python-gpt4all-debug 2.2.1-1
python-livepng 0.1.8-3
python-pocketsphinx 5.0.4-1
python-safetensors 0.6.2-1
python-safetensors-debug 0.6.2-1
python-sounddevice 0.5.2-1
python-speechrecognition 3.14.3-1
python-speechrecognition-debug 3.14.3-1
python-voicevox-client 0.4.1-1
python-wordllama 0.3.9-1
python-wordllama-debug 0.3.9-1
roam 174.0.0.beta001-1
shellspec 0.28.1-3
stripe-cli-bin 1.29.0-1
stripe-cli-bin-debug 1.29.0-1
vibe-bin 3.0.5-2
vibe-bin-debug 3.0.5-2
whatsapp-for-linux 1.7.0-1.3
windscribe-v2-bin 2.16.14-1
xf86-video-vmware 13.4.0-4
yay-debug 12.5.0-1
```

</details>

### 3.2. Explicit Installations

These are all of the packages Naomi has specifically installed. This list is generated with `yay -Qe`.

<details>
  <summary>Expand List</summary>

```txt frame="terminal" title="yay -Qe"
1password 8.11.6-27
1password-cli 2.31.1-1
7zip 25.01-1
activitywatch-bin 0.13.2-1.1
affine-bin 0.24.1-1
alsa-utils 1.2.14-1
amberol 2025.1-2
android-tools 35.0.2-17
angular-cli 20.1.6-1
base 3-2
base-devel 1-2
bash-language-server 5.6.0-1
bind 9.20.11-1
brave-bin 1:1.81.135-1
brightnessctl 0.5.1-3
btop 1.4.4-1
cabal-install 3.8.1.0-74
calc 2.15.1.1-1
certbot 4.2.0-1
certbot-dns-cloudflare 4.2.0-1
chaotic-keyring 20250614-1
chaotic-mirrorlist 20240724-3
chatgpt-desktop-bin 1.1.0-1
clamav 1.4.3-1
cliphist 1:0.6.1-1
cloudflared 2025.8.0-1
cmus 2.12.0-3
cursor-bin 1.4.5-9
dart 3.8.1-1
ddcci-driver-linux-dkms 0.4.5-1.1
discord 1:0.0.105-1
dmenu 5.4-1
docker 1:28.3.3-1
doctl 1.139.0-1
dotnet-host 9.0.8.sdk109-1
dotnet-runtime 9.0.8.sdk109-1
dotnet-runtime-6.0 6.0.36.sdk136-2
dotnet-runtime-7.0 7.0.20.sdk120-2
dotnet-runtime-8.0 8.0.19.sdk119-1
dotnet-sdk 9.0.8.sdk109-1
dotnet-sdk-6.0 6.0.36.sdk136-2
dotnet-sdk-7.0 7.0.20.sdk120-2
dotnet-sdk-8.0 8.0.19.sdk119-1
downgrade 11.5.2-1
dunst 1.12.2-1
efibootmgr 18-3
emacs 30.2-1
eslint-language-server 3.0.16-1
espanso-wayland 2.2.4-1
evolution 3.56.2-2
eza 0.23.0-1
flyctl-bin 0.3.107-1
foot 1.23.1-1
fprintd 1.94.5-1
ghc 9.4.8-1
ghostty 1.1.3-1
gimp 3.0.4-3
git 2.50.1-3
github-cli 2.76.2-1
google-chat-linux-bin 5.29.23-1
google-messages 1.4.2-2
gpu-usage-waybar-git 0.1.19.r15.g98b2a91-1
grim 1.5.0-2
gst-plugin-pipewire 1:1.4.7-1
gwenview 25.08.0-1
htop 3.4.1-1
hyfetch 1.99.0-2
insomnium-bin 0.2.3-1
intel-media-driver 25.2.5-1
intel-ucode 20250812-1
iwd 3.9-1
kdenlive 25.08.0-1
kotlin 2.2.0-2
kwallet 6.17.0-1
libgnome-keyring 1:3.12.0+r14+g23438cc-1
libpulse 17.0+r43+g3e2bb8a1e-1
libreoffice-fresh 25.2.5-2
libva-intel-driver 2.4.1-5
light 1.2.2-5
linux 6.16.1.arch1-1
linux-firmware 20250808-1
moc-pulse 2.5.2-17
mommy 1.6.0-1
mongodb 8.0.12-2
mono 6.12.0.206-1
mpc 0.35-1
mpd 0.24.5-1
mpris-discord-rpc-bin 0.5.1-1
mudlet-bin 4.19.1-1
musescore 4.5.2-1
mysql 9.3.0-1
nano 8.5-1
nodejs 24.6.0-1
noto-fonts 1:2025.08.01-1
noto-fonts-cjk 20240730-1
noto-fonts-emoji 1:2.048-1
npm 11.5.2-1
npm-check-updates 18.0.2-1
obs-studio 31.1.2-1
oh-my-zsh-git r7574.736632228-1
ollama 0.11.4-1
open-dyslexic-fonts 0.91.12-2
openssh 10.0p1-4
otf-opendyslexic-nerd 3.4.0-1
pavucontrol 1:6.1-1
perl-image-exiftool 13.30-3
php 8.4.11-1
pipewire 1:1.4.7-1
pipewire-alsa 1:1.4.7-1
pipewire-jack 1:1.4.7-1
pipewire-pulse 1:1.4.7-1
polkit-gnome 0.105-11
polkit-qt6 0.200.0-1
postgresql 17.5-5
proton-vpn-gtk-app 4.9.7-1
python-adb-shell 0.4.4-3
python-lsp-server 1.12.2-1
python-openai-whisper 20250625-1
python-pipenv 2025.0.4-1
python-pyquery 2.0.1-1
riseup-vpn 0.24.10-1.5
roam 174.0.0.beta001-1
rofimoji 6.6.0-2
ruby 3.4.5-1
rust 1:1.89.0-1
sddm 0.21.0-6
signal-desktop 7.66.0-1
slack-desktop 4.45.64-1
slurp 1.5.0-1
smartmontools 7.5-1
sof-firmware 2025.05-1
spotdl 4.4.0-1
starship 1.23.0-1
stripe-cli-bin 1.29.0-1
sway 1:1.10.1-3
swaybg 1.2.1-1
swayidle 1.8.0-2
swaylock-fprintd-git r314.ffd639a-2.4
tea 0.10.1-1
thefuck 3.32-11
thermald 2.5.9-3
thunar 4.20.4-1
thunderbird 141.0-1
typescript 5.9.2-1
typescript-language-server 4.4.0-1
universal-android-debloater-bin 1.1.1-2
uv 0.8.12-1
vibe-bin 3.0.5-2
vim 9.1.1623-1
visual-studio-code-bin 1.103.1-1
vulkan-intel 1:25.1.7-1
vulkan-radeon 1:25.1.7-1
waterfox-bin 6.5.11-1
waybar 0.14.0-1
waybar-module-pacman-updates-git 0.2.9-1
wget 1.25.0-2
whatsapp-for-linux 1.7.0-1.3
windscribe-v2-bin 2.16.14-1
wine 10.12-1
wireless_tools 30.pre9-4
wireplumber 0.5.10-1
wlr-randr 0.5.0-1
wofi 1.5.1-1
wpa_supplicant 2:2.11-3
xdg-desktop-portal-wlr 0.7.1-1
xdg-utils 1.2.1-1
xf86-video-amdgpu 25.0.0-1
xf86-video-ati 1:22.0.0-2
xf86-video-nouveau 1.0.18-1
xf86-video-vmware 13.4.0-4
xorg-server 21.1.18-2
xorg-xinit 1.4.4-1
xorg-xwayland 24.1.8-1
yaml-language-server 1.19.0-1
yarn 1.22.22-2
yay 12.5.0-1
yay-debug 12.5.0-1
zen-browser-bin 1.14.11b-1
zig 0.14.1-2
zip 3.0-11
zoom 6.5.8-1
zram-generator 1.2.1-1
```

</details>

### 3.3. Pinned Packages

These packages have updates ignored, due to incompatibility issues. This list is generated with `grep "^IgnorePkg" /etc/pacman.conf`.

```ini frame="code" title="pacman.conf"
IgnorePkg = sway
```

### 3.4. All Packages

This is a complete list of all packages on the machine. This list is generated with `yay -Q`.

:::caution
This list is quite large.
:::

<details>
  <summary>Expand List</summary>

```txt frame="terminal" title="yay -Q"
1password 8.11.6-27
1password-cli 2.31.1-1
7zip 25.01-1
aalib 1.4rc5-19
abseil-cpp 20250512.1-1
accounts-qml-module 0.7-6
accountsservice 23.13.9-2
acl 2.3.2-1
activitywatch-bin 0.13.2-1.1
adwaita-cursors 48.1-1
adwaita-fonts 49.0-2
adwaita-icon-theme 48.1-1
adwaita-icon-theme-legacy 46.2-3
affine-bin 0.24.1-1
affine-bin-debug 0.24.1-1
alsa-card-profiles 1:1.4.7-1
alsa-lib 1.2.14-1
alsa-topology-conf 1.2.5.1-4
alsa-ucm-conf 1.2.14-2
alsa-utils 1.2.14-1
amberol 2025.1-2
android-tools 35.0.2-17
android-udev 20250525-1
angular-cli 20.1.6-1
aom 3.12.1-1
appstream 1.0.5-2
appstream-glib 0.8.3-2
archlinux-keyring 20250807.1-1
argon2 20190702-6
at-spi2-core 2.56.4-1
atkmm 2.28.4-1
attica 6.17.0-1
attr 2.5.2-1
audit 4.0.5-1
autoconf 2.72-1
automake 1.18.1-1
avahi 1:0.9rc2-1
ayatana-ido 0.10.4-1
babl 0.1.114-1
baloo 6.17.0-1
base 3-2
base-devel 1-2
bash 5.3.3-2
bash-language-server 5.6.0-1
bind 9.20.11-1
binutils 2.45+r29+g2b2e51a31ec7-1
bison 3.8.2-8
blas 3.12.1-2
bluez-libs 5.83-1
boost 1.88.0-3
boost-libs 1.88.0-3
botan2 2.19.5-2
brave-bin 1:1.81.135-1
breeze-icons 6.17.0-1
brightnessctl 0.5.1-3
brotli 1.1.0-3
btop 1.4.4-1
bubblewrap 0.11.0-1
bzip2 1.0.8-6
c-ares 1.34.5-1
ca-certificates 20240618-1
ca-certificates-mozilla 3.115-1
ca-certificates-utils 20240618-1
cabal-install 3.8.1.0-74
cairo 1.18.4-1
cairomm 1.14.5-1
cairomm-1.16 1.18.0-1
calc 2.15.1.1-1
cantarell-fonts 1:0.303.1-2
cbindgen 0.29.0-1
cblas 3.12.1-2
cdparanoia 10.2-9
certbot 4.2.0-1
certbot-dns-cloudflare 4.2.0-1
cfitsio 1:4.6.2-1
chaotic-keyring 20250614-1
chaotic-mirrorlist 20240724-3
chatgpt-desktop-bin 1.1.0-1
chatgpt-desktop-bin-debug 1.1.0-1
chromaprint 1.5.1-10
clamav 1.4.3-1
clang 20.1.8-1
clang18 18.1.8-2
clang19 19.1.7-1
cliphist 1:0.6.1-1
cloudflared 2025.8.0-1
clucene 2.3.3.4-16
cmake 4.0.3-1
cmark 0.31.1-1
cmus 2.12.0-3
colord 1.4.8-1
compface 1.5.2-13
compiler-rt 20.1.8-1
compiler-rt18 18.1.8-1
compiler-rt19 19.1.7-1
containerd 2.1.4-1
convertlit 1.8-12
coreutils 9.7-1
cppdap 1.58.0-2
cryptsetup 2.8.0-1
curl 8.15.0-1
curl-impersonate-chrome-debug 1:1.0.0-1
cursor-bin 1.4.5-9
dart 3.8.1-1
dav1d 1.5.1-1
db5.3 5.3.28-5
dbus 1.16.2-1
dbus-broker 37-2
dbus-broker-units 37-2
dbus-glib 0.114-1
dbus-units 37-2
dconf 0.40.0-3
ddcci-driver-linux-dkms 0.4.5-1.1
debugedit 5.2-1
default-cursors 3-1
desktop-file-utils 0.28-1
device-mapper 2.03.34-1
diffutils 3.12-2
discord 1:0.0.105-1
dkms 3.2.1-1
dmenu 5.4-1
dmidecode 3.6-1
dnssec-anchors 20250524-1
docker 1:28.3.3-1
doctl 1.139.0-1
dotnet-host 9.0.8.sdk109-1
dotnet-runtime 9.0.8.sdk109-1
dotnet-runtime-6.0 6.0.36.sdk136-2
dotnet-runtime-7.0 7.0.20.sdk120-2
dotnet-runtime-8.0 8.0.19.sdk119-1
dotnet-sdk 9.0.8.sdk109-1
dotnet-sdk-6.0 6.0.36.sdk136-2
dotnet-sdk-7.0 7.0.20.sdk120-2
dotnet-sdk-8.0 8.0.19.sdk119-1
dotnet-targeting-pack 9.0.8.sdk109-1
dotnet-targeting-pack-6.0 6.0.36.sdk136-2
dotnet-targeting-pack-7.0 7.0.20.sdk120-2
dotnet-targeting-pack-8.0 8.0.19.sdk119-1
double-conversion 3.3.1-1
downgrade 11.5.2-1
duktape 2.7.0-7
dunst 1.12.2-1
e2fsprogs 1.47.3-1
ebook-tools 0.2.2-9
efibootmgr 18-3
efivar 39-1
egl-gbm 1.1.2.1-1
egl-wayland 4:1.1.20-1
egl-x11 1.0.3-1
eglexternalplatform 1.2.1-1
eigen 3.4.0-2
electron33 33.4.11-2
electron34 34.5.8-1
electron35 35.7.4-1
ell 0.79-1
emacs 30.2-1
enchant 2.8.12-1
eslint-language-server 3.0.16-1
espanso-wayland 2.2.4-1
evolution 3.56.2-2
evolution-data-server 3.56.2-2
exempi 2.6.6-2
exiv2 0.28.5-1
exo 4.20.0-2
expat 2.7.1-1
extra-cmake-modules 6.17.0-1
eza 0.23.0-1
faac 1.31.1-1
faad2 2.11.2-1
fakeroot 1.37.1.2-1
fcft 3.3.2-1
ffmpeg 2:7.1.1-5
fftw 3.3.10-7
file 5.46-5
filesystem 2025.05.03-1
findutils 4.10.0-3
flac 1.5.0-1
flex 2.6.4-5
fluidsynth 2.4.7-1
flyctl-bin 0.3.107-1
fmt 11.2.0-1
fontconfig 2:2.17.1-1
foot 1.23.1-1
fprintd 1.94.5-1
freeglut 3.6.0-2
freetype2 2.13.3-3
frei0r-plugins 2.3.3-4
fribidi 1.0.16-2
fuse-common 3.17.1-1
fuse2 2.9.9-5
fuse3 3.17.1-1
fzf 0.65.1-1
gawk 5.3.2-1
gc 8.2.8-2
gcc 15.2.1+r22+gc4e96a094636-1
gcc-libs 15.2.1+r22+gc4e96a094636-1
gcc14 14.3.1+r25+g42e99e057bd7-1
gcc14-libs 14.3.1+r25+g42e99e057bd7-1
gcr 3.41.2-2
gcr-4 4.4.0.1-1
gd 2.3.3-8
gdbm 1.25-1
gdk-pixbuf2 2.42.12-2
gegl 0.4.62-1
gendesk 1.0.10-1
geoclue 2.7.2-1
geocode-glib-2 3.26.4-4
geocode-glib-common 3.26.4-4
gettext 0.26-1
gflags 2.2.2-5
ghc 9.4.8-1
ghc-libs 9.4.8-1
ghostscript 10.05.1-2
ghostty 1.1.3-1
ghostty-shell-integration 1.1.3-1
ghostty-terminfo 1.1.3-1
giflib 5.2.2-2
gimp 3.0.4-3
git 2.50.1-3
github-cli 2.76.2-1
gjs 2:1.84.2-1
glib-networking 1:2.80.1-1
glib2 2.84.4-2
glibc 2.42+r17+gd7274d718e6f-1
glibmm 2.66.8-1
glibmm-2.68 2.84.0-1
glslang 1:1.4.321.0-1
glu 9.0.3-2
gmp 6.3.0-2
gn 0.2238.a84e399f-1
gnome-autoar 0.4.5-1
gnome-desktop 1:44.3-1
gnome-desktop-4 1:44.3-1
gnome-desktop-common 1:44.3-1
gnome-keyring 1:48.0-1
gnome-mimeapps 0.1-1
gnome-session 48.0-1
gnome-settings-daemon 48.1-1
gnome-shell 1:48.4-1
gnu-free-fonts 20120503-8
gnulib-l10n 20241231-1
gnupg 2.4.8-1
gnutls 3.8.10-1
go 2:1.24.6-1
gobject-introspection 1.84.0-2
gobject-introspection-runtime 1.84.0-2
google-chat-linux-bin 5.29.23-1
google-chat-linux-bin-debug 5.29.23-1
google-glog 0.7.1-1
google-messages 1.4.2-2
google-messages-debug 1.4.2-2
gperf 3.1-5
gperftools 2.17-1
gpgme 2.0.0-1
gpgmepp 2.0.0-2
gpm 1.20.7.r38.ge82d1a6-6
gpsd 3.26.1-2
gpu-usage-waybar-git 0.1.19.r15.g98b2a91-1
gradle 8.14.3-1
graphene 1.10.8-2
graphite 1:1.3.14-5
graphviz 13.1.2-1
grep 3.12-2
grim 1.5.0-2
groff 1.23.0-7
gsettings-desktop-schemas 48.0-1
gsettings-system-schemas 48.0-1
gsfonts 20200910-5
gsm 1.0.22-2
gspell 1.14.0-2
gssdp 1.6.4-1
gst-libav 1.26.5-1
gst-plugin-pipewire 1:1.4.7-1
gst-plugins-bad 1.26.5-1
gst-plugins-bad-libs 1.26.5-1
gst-plugins-base 1.26.5-1
gst-plugins-base-libs 1.26.5-1
gst-plugins-good 1.26.5-1
gstreamer 1.26.5-1
gtest 1.17.0-1
gtk-layer-shell 0.9.2-1
gtk-update-icon-cache 1:4.18.6-1
gtk2 2.24.33-5
gtk3 1:3.24.50-1
gtk4 1:4.18.6-1
gtkmm-4.0 4.18.0-2
gtkmm3 3.24.10-1
gtkspell 2.0.16-9
gts 0.7.6.121130-3
guile 3.0.10-1
gupnp 1:1.6.9-1
gupnp-dlna 0.12.0-4
gupnp-igd 1.6.0-2
gvfs 1.57.2-4
gwenview 25.08.0-1
gzip 1.14-2
harfbuzz 11.4.1-1
harfbuzz-icu 11.4.1-1
haskell-async 2.2.5-134
haskell-base16-bytestring 1.0.2.0-122
haskell-base64-bytestring 1.2.1.0-154
haskell-cabal-install-solver 3.8.1.0-27
haskell-cryptohash-sha256 0.11.102.1-133
haskell-echo 0.1.4-6
haskell-ed25519 0.0.5.0-26
haskell-edit-distance 0.2.2.1-250
haskell-hackage-security 0.6.2.6-74
haskell-hashable 1.4.4.0-119
haskell-http 4000.4.1-308
haskell-lukko 0.1.1.3-245
haskell-network 3.1.4.0-63
haskell-network-uri 2.6.4.2-75
haskell-os-string 2.0.7-58
haskell-random 1.2.1.3-14
haskell-regex-base 0.94.0.3-2
haskell-regex-posix 0.96.0.2-2
haskell-resolv 0.2.0.2-243
haskell-safe-exceptions 0.1.7.4-72
haskell-splitmix 0.1.0.5-105
haskell-tar 0.5.1.1-214
haskell-th-compat 0.1.6-25
haskell-zlib 0.7.0.0-9
hdf5 1.14.6-5
hdparm 9.65-3
hicolor-icon-theme 0.18-1
hidapi 0.15.0-1
highway 1.3.0-1
htop 3.4.1-1
http-parser 2.9.4-2
hunspell 1.7.2-2
hwdata 0.398-1
hwloc 2.12.1-1
hyfetch 1.99.0-2
hyphen 2.8.8-6
iana-etc 20250612-1
icu 76.1-1
iio-sensor-proxy 3.8-1
ijs 0.35-6
imagemagick 7.1.2.1-1
imake 1.0.10-2
imath 3.1.12-4
imlib2 1.12.5-1
insomnium-bin 0.2.3-1
insomnium-bin-debug 0.2.3-1
intel-gmmlib 22.7.2-1
intel-media-driver 25.2.5-1
intel-oneapi-common 2024.1.0-1
intel-oneapi-compiler-shared-runtime-libs 2025.0.4-2
intel-oneapi-mkl 2025.0.1-3
intel-oneapi-openmp 2025.0.4-1
intel-oneapi-tbb 2021.12.0-2
intel-oneapi-tcm 1.2.0-3
intel-ucode 20250812-1
iproute2 6.16.0-2
iptables 1:1.8.11-2
iputils 20250605-1
iso-codes 4.18.0-1
iw 6.9-1
iwd 3.9-1
jansson 2.14.1-1
jasper 4.2.5-1
java-environment-common 3-6
java-runtime-common 3-6
jbig2dec 0.20-1
jbigkit 2.1-8
jdk21-openjdk 21.0.8.u9-1
jemalloc 1:5.3.0-5
jq 1.8.1-1
js128 128.13.0-2
json-c 0.18-2
json-glib 1.10.6-1
jsoncpp 1.9.6-3
kaccounts-integration 25.08.0-1
karchive 6.17.0-1
karchive5 5.116.0-1
kauth 6.17.0-1
kauth5 5.116.0-1
kbd 2.8.0-1
kbookmarks 6.17.0-1
kcmutils 6.17.0-1
kcodecs 6.17.0-1
kcodecs5 5.116.0-1
kcolorpicker 0.3.1-4
kcolorscheme 6.17.0-1
kcompletion 6.17.0-1
kconfig 6.17.0-1
kconfig5 5.116.0-1
kconfigwidgets 6.17.0-1
kconfigwidgets5 5.116.0-1
kcoreaddons 6.17.0-1
kcoreaddons5 5.116.0-1
kcrash 6.17.0-1
kdbusaddons 6.17.0-1
kdbusaddons5 5.116.0-1
kdenlive 25.08.0-1
keyutils 1.6.3-3
kfilemetadata 6.17.0-2
kglobalaccel 6.17.0-1
kguiaddons 6.17.0-1
kguiaddons5 5.116.0-1
ki18n 6.17.0-1
ki18n5 5.116.0-1
kiconthemes 6.17.0-1
kiconthemes5 5.116.0-1
kidletime 6.17.0-1
kimageannotator 0.7.1-3
kio 6.17.0-1
kirigami 6.17.0-1
kirigami2 5.116.0-1
kitemmodels 6.17.0-1
kitemviews 6.17.0-1
kjobwidgets 6.17.0-1
kmod 34.2-1
knewstuff 6.17.0-1
knotifications 6.17.0-1
knotifyconfig 6.17.0-1
kotlin 2.2.0-2
kpackage 6.17.0-1
kparts 6.17.0-1
krb5 1.21.3-2
kservice 6.17.0-1
ktextwidgets 6.17.0-1
kwallet 6.17.0-1
kwidgetsaddons 6.17.0-1
kwidgetsaddons5 5.116.0-1
kwindowsystem 6.17.0-1
kxmlgui 6.17.0-1
l-smash 2.14.5-4
lame 3.100-5
lapack 3.12.1-2
lcms2 2.17-1
leancrypto 1.5.1-1
lensfun 1:0.3.4-5
less 1:679-1
level-zero-loader 1.22.5-1
lib32-acl 2.3.2-1
lib32-audit 4.0.5-1
lib32-brotli 1.1.0-1
lib32-bzip2 1.0.8-4
lib32-dbus 1.16.2-1
lib32-e2fsprogs 1.47.3-1
lib32-expat 2.7.1-1
lib32-fontconfig 2:2.17.1-1
lib32-freetype2 2.13.3-3
lib32-gcc-libs 15.2.1+r22+gc4e96a094636-1
lib32-gettext 0.25-1
lib32-glib2 2.84.4-2
lib32-glibc 2.42+r17+gd7274d718e6f-1
lib32-harfbuzz 11.4.1-1
lib32-icu 76.1-1
lib32-keyutils 1.6.3-2
lib32-krb5 1.21.3-1
lib32-libcap 2.76-1
lib32-libffi 3.5.1-1
lib32-libgcrypt 1.11.1-1
lib32-libgpg-error 1.55-1
lib32-libldap 2.6.10-1
lib32-libnl 3.11.0-1
lib32-libnsl 2.0.1-1
lib32-libpcap 1.10.5-3
lib32-libpng 1.6.50-1
lib32-libtirpc 1.3.6-2
lib32-libunwind 1.8.1-1
lib32-libx11 1.8.12-2
lib32-libxau 1.0.11-2
lib32-libxcb 1.17.0-1
lib32-libxcrypt 4.4.38-1
lib32-libxcursor 1.2.3-1
lib32-libxdmcp 1.1.5-1
lib32-libxext 1.3.6-1
lib32-libxfixes 6.0.1-2
lib32-libxi 1.8.2-1
lib32-libxkbcommon 1.11.0-1
lib32-libxml2 2.14.5-1
lib32-libxrandr 1.5.4-1
lib32-libxrender 0.9.11-2
lib32-openssl 1:3.5.2-1
lib32-pam 1.7.0-1
lib32-pcre2 10.45-1
lib32-systemd 257.8-1
lib32-util-linux 2.41.1-1
lib32-wayland 1.23.1-1
lib32-xz 5.8.1-1
lib32-zlib 1.3.1-2
lib32-zstd 1.5.7-2
libabw 0.1.3-5
libaccounts-glib 1.27-3
libaccounts-qt 1.17-1
libadwaita 1:1.7.6-1
libaec 1.1.4-2
libaio 0.3.113-3
libao 1.2.2-7
libappindicator-gtk3 12.10.0.r298-4
libarchive 3.8.1-1
libass 0.17.4-1
libassuan 3.0.0-1
libasyncns 1:0.8+r3+g68cd5af-3
libatasmart 0.19-6
libatomic_ops 7.8.2-1
libavc1394 0.5.4-6
libavif 1.3.0-1
libavtp 0.2.0-3
libayatana-appindicator 0.5.94-1
libayatana-indicator 0.9.4-1
libb2 0.98.1-3
libblockdev 3.3.1-1
libblockdev-crypto 3.3.1-1
libblockdev-fs 3.3.1-1
libblockdev-loop 3.3.1-1
libblockdev-mdraid 3.3.1-1
libblockdev-nvme 3.3.1-1
libblockdev-part 3.3.1-1
libblockdev-swap 3.3.1-1
libbluray 1.3.4-3
libbpf 1.5.1-1
libbs2b 3.1.0-9
libbsd 0.12.2-2
libbytesize 2.11-1
libc++ 20.1.6-2
libc++abi 20.1.6-2
libcaca 0.99.beta20-5
libcanberra 1:0.30+r2+gc0620e4-4
libcap 2.76-1
libcap-ng 0.8.5-3
libcdio 2.2.0-1
libcdio-paranoia 10.2+2.0.2-1
libcdr 0.1.8-2
libcloudproviders 0.3.6-2
libcmis 0.6.2-5
libcolord 1.4.8-1
libcue 2.3.0-1
libcups 2:2.4.12-2
libdaemon 0.14-6
libdatachannel 0.23.1-1
libdatrie 0.2.13-4
libdbusmenu-glib 16.04.0.r498-2
libdbusmenu-gtk3 16.04.0.r498-2
libdc1394 2.2.7-1
libdca 0.0.7-2
libde265 1.0.16-1
libdecor 0.2.3-1
libdeflate 1.24-1
libdiscid 0.6.5-2
libdisplay-info 0.2.0-2
libdovi 3.3.2-1
libdrm 2.4.125-1
libdv 1.0.0-11
libdvdnav 6.1.1-2
libdvdread 6.1.3-2
libe-book 0.1.3-18
libebur128 1.2.6-2
libedit 20250104_3.1-1
libei 1.4.1-1
libelf 0.193-5
libepoxy 1.5.10-3
libepubgen 0.1.1-5
libetonyek 0.1.12-3
libev 4.33-4
libevdev 1.13.4-1
libevent 2.1.12-4
libexif 0.6.25-1
libexttextcat 3.4.7-1
libfabric 2.2.0-1
libfdk-aac 2.0.3-1
libffi 3.5.1-1
libfontenc 1.1.8-1
libfprint 1.94.9-1
libfreeaptx 0.2.2-1
libfreehand 0.1.2-5
libgccjit 15.2.1+r22+gc4e96a094636-1
libgcrypt 1.11.2-1
libgdiplus 6.2-1
libgdm 48.0-2
libgexiv2 0.14.6-1
libgirepository 1.84.0-2
libgit2 1:1.9.1-1
libglvnd 1.7.0-3
libgme 0.6.4-1
libgnome-keyring 1:3.12.0+r14+g23438cc-1
libgoa 3.54.5-1
libgpg-error 1.55-1
libgsf 1.14.53-2
libgtop 2.41.3-2
libgudev 238-3
libgusb 0.4.9-2
libgweather-4 4.4.4-2
libgxps 0.3.2-5
libheif 1.20.2-1
libibus 1.5.32-1
libical 3.0.20-2
libice 1.1.2-1
libid3tag 0.16.3-2
libidn 1.43-1
libidn2 2.3.7-1
libiec61883 1.2.0-8
libimagequant 4.4.0-1
libimobiledevice 1.3.0-17
libimobiledevice-glue 1.3.2-1
libinih 61-1
libinput 1.29.0-1
libinstpatch 1.1.7-2
libiptcdata 1.0.5-4
libisl 0.27-1
libixion 0.20.0-2
libjpeg-turbo 3.1.1-1
libjuice 1.6.1-1
libjxl 0.11.1-4
libkdcraw 25.08.0-1
libksba 1.6.7-2
liblangtag 0.6.7-2
liblc3 1.1.3-1
libldac 2.0.2.3-2
libldap 2.6.10-2
libliftoff 0.5.0-1
liblqr 0.4.3-1
liblrdf 0.6.1-5
libltc 1.3.2-2
liblzf 3.6-5
libmad 0.15.1b-10
libmanette 0.2.12-1
libmaxminddb 1.12.2-2
libmd 1.1.0-2
libmicrodns 0.2.0-2
libmikmod 3.3.13-1
libmm-glib 1.24.2-1
libmms 0.6.4-5
libmng 2.0.3-4
libmnl 1.0.5-2
libmodplug 0.8.9.0-6
libmpc 1.3.1-2
libmpcdec 1:0.1+r475-6
libmpdclient 2.23-1
libmspack 1:1.11-1
libmspub 0.1.4-17
libmtp 1.1.22-1
libmwaw 0.3.22-3
libmypaint 1.6.1-2
libmysofa 1.3.3-1
libmysqlclient 9.3.0-1
libnautilus-extension 48.3-1
libndp 1.9-1
libnet 2:1.3-1
libnetfilter_conntrack 1.0.9-2
libnewt 0.52.25-1
libnfnetlink 1.0.2-2
libnfs 6.0.2-5
libnftnl 1.3.0-1
libnghttp2 1.66.0-1
libnghttp3 1.11.0-1
libngtcp2 1.13.0-2
libnice 0.1.22-2
libnl 3.11.0-1
libnm 1.54.0-1
libnma-common 1.10.6-3
libnma-gtk4 1.10.6-3
libnotify 0.8.6-1
libnsl 2.0.1-1
libnumbertext 1.0.11-2
libnvme 1.15-1
libodfgen 0.1.8-4
libogg 1.3.6-1
libopenmpt 0.8.2-1
libopusenc 0.2.1-5
liborcus 0.20.1-1
libosinfo 1.12.0-2
libotf 0.9.16-5
libp11-kit 0.25.5-1
libpagemaker 0.0.4-4
libpaper 2.2.6-1
libpcap 1.10.5-3
libpciaccess 0.18.1-2
libpgm 5.3.128-3
libphonenumber 1:9.0.12-1
libpipeline 1.5.8-1
libpipewire 1:1.4.7-1
libplacebo 7.351.0-2
libplist 2.7.0-1
libpng 1.6.50-1
libportal 0.9.1-2
libportal-gtk4 0.9.1-2
libproxy 0.5.10-1
libpsl 0.21.5-2
libpst 0.6.76-10
libpulse 17.0+r43+g3e2bb8a1e-1
libqxp 0.0.2-13
libraqm 0.10.2-1
libraw 0.21.4-1
libraw1394 2.1.2-4
libreoffice-fresh 25.2.5-2
librevenge 0.0.5-3
librsvg 2:2.61.0-1
libsamplerate 0.2.2-3
libsasl 2.1.28-5
libseccomp 2.5.6-1
libsecret 0.21.7-1
libshout 1:2.4.6-5
libsidplayfp 2.15.0-1
libsigc++ 2.12.1-1
libsigc++-3.0 3.6.0-1
libsixel 1.10.5-1
libsm 1.2.6-1
libsndfile 1.2.2-3
libsodium 1.0.20-1
libsoup 2.74.3-4
libsoup3 3.6.5-1
libsoxr 0.1.3-4
libspiro 1:20240903-1
libsrtp 1:2.7.0-1
libssh 0.11.2-1
libssh2 1.11.1-1
libstaroffice 0.0.7-4
libstemmer 3.0.1-1
libsysprof-capture 48.0-7
libtasn1 4.20.0-1
libteam 1.32-2
libthai 0.1.29-3
libtheora 1.2.0-1
libtiff 4.7.0-1
libtirpc 1.3.6-2
libtommath 1.3.0-1
libtool 2.5.4+r62+g6389dce8-1
libunibreak 6.1-1
libunistring 1.3-1
libunwind 1.8.2-1
libupnp 1.14.24-1
liburcu 0.15.3-1
liburing 2.11-1
libusb 1.0.29-1
libusbmuxd 2.1.1-1
libutf8proc 2.10.0-1
libuv 1.51.0-1
libva 2.22.0-1
libva-intel-driver 2.4.1-5
libvdpau 1.5-3
libverto 0.3.2-5
libvisio 0.1.8-3
libvorbis 1.3.7-4
libvpl 2.15.0-1
libvpx 1.15.0-1
libwacom 2.16.1-1
libwebp 1.6.0-1
libwireplumber 0.5.10-1
libwmf 0.2.13-4
libwpd 0.10.3-5
libwps 0.4.14-3
libx11 1.8.12-1
libxau 1.0.12-1
libxaw 1.0.16-1
libxcb 1.17.0-1
libxcomposite 0.4.6-2
libxcrypt 4.4.38-1
libxcursor 1.2.3-1
libxcvt 0.1.3-1
libxdamage 1.1.6-2
libxdmcp 1.1.5-1
libxext 1.3.6-1
libxfce4ui 4.20.2-1
libxfce4util 4.20.1-1
libxfixes 6.0.1-2
libxfont2 2.0.7-1
libxft 2.3.9-1
libxi 1.8.2-1
libxinerama 1.1.5-2
libxkbcommon 1.11.0-1
libxkbcommon-x11 1.11.0-1
libxkbfile 1.1.3-1
libxml2 2.14.5-1
libxmlb 0.3.22-1
libxmp 4.6.3-1
libxmu 1.2.1-1
libxpm 3.5.17-2
libxpresent 1.0.1-2
libxrandr 1.5.4-1
libxrender 0.9.12-1
libxshmfence 1.3.3-1
libxslt 1.1.43-2
libxss 1.2.4-2
libxt 1.3.1-1
libxtst 1.2.5-1
libxv 1.0.13-1
libxxf86vm 1.1.6-1
libyaml 0.2.5-3
libytnef 1:2.1.2-2
libyuv r2426+464c51a03-1
libzip 1.11.4-1
libzmf 0.0.2-17
licenses 20240728-1
light 1.2.2-5
lilv 0.24.26-1
linux 6.16.1.arch1-1
linux-api-headers 6.16-1
linux-firmware 20250808-1
linux-firmware-amdgpu 20250808-1
linux-firmware-atheros 20250808-1
linux-firmware-broadcom 20250808-1
linux-firmware-cirrus 20250808-1
linux-firmware-intel 20250808-1
linux-firmware-mediatek 20250808-1
linux-firmware-nvidia 20250808-1
linux-firmware-other 20250808-1
linux-firmware-radeon 20250808-1
linux-firmware-realtek 20250808-1
linux-firmware-whence 20250808-1
lld 20.1.8-1
lld18 18.1.6-2
lld19 19.1.7-2
llhttp 9.2.1-2
llvm 20.1.8-1
llvm-libs 20.1.8-1
llvm15-libs 15.0.7-3
llvm18-libs 18.1.8-2
llvm19-libs 19.1.7-2
lm_sensors 1:3.6.2-1
lmdb 0.9.33-1
localsearch 3.9.0-3
lpsolve 5.5.2.11-3
lrexlib-pcre5.1 2.9.0-2
lrexlib-pcre5.1-debug 2.9.0-2
lsof 4.99.5-2
lua 5.4.8-2
lua-yajl 2.0-2
lua-yajl-debug 2.0-2
lua51 5.1.5-13
lua51-filesystem 1.8.0-5
lua51-lcf 5.1-3
lua51-luautf8 0.1.6-1
lua51-sql-sqlite 2.3.0-4
lua51-sql-sqlite-debug 2.3.0-4
luajit 2.1.1753364724-1
luazip5.1 1.2.7-1
luazip5.1-debug 1.2.7-1
lv2 1.18.10-1
lxsession 1:0.5.6-1
lz4 1:1.10.0-2
lzo 2.10-5
m17n-db 1.8.8-1
m17n-lib 1.8.5-1
m4 1.4.20-1
mailcap 2.1.54-2
mailspring-bin-debug 1.15.1-2
make 4.4.1-2
man-db 2.13.1-1
mbedtls 3.6.4-1
md4c 0.5.2-1
mdadm 4.4-1
media-player-info 26-1
mesa 1:25.1.7-1
meson 1.8.3-1
minizip 1:1.3.1-2
mjpegtools 2.2.1-3
mkinitcpio 39.2-3
mkinitcpio-busybox 1.36.1-1
mlt 7.32.0-2
mobile-broadband-provider-info 20250613-1
moc-pulse 2.5.2-17
mommy 1.6.0-1
mongodb 8.0.12-2
mono 6.12.0.206-1
mpc 0.35-1
mpd 0.24.5-1
mpdecimal 4.0.1-1
mpfr 4.2.2-1
mpg123 1.33.1-1
mpris-discord-rpc-bin 0.5.1-1
mpris-discord-rpc-bin-debug 0.5.1-1
mpv 1:0.40.0-5
mtdev 1.1.7-1
mudlet-bin 4.19.1-1
mujs 1.3.7-1
musescore 4.5.2-1
mutter 48.4-1
mypaint-brushes1 1.3.1-2
mysql 9.3.0-1
mysql-clients 9.3.0-1
nano 8.5-1
nasm 2.16.03-2
nautilus 48.3-1
ncurses 6.5-4
neon 0.35.0-1
net-tools 2.10-3
netpbm 10.86.47-1
netstandard-targeting-pack 9.0.8.sdk109-1
nettle 3.10.2-1
networkmanager-openvpn 1.12.2-1
nftables 1:1.1.4-1
ninja 1.12.1-2
node-gyp 11.3.0-1
nodejs 24.6.0-1
nodejs-nopt 7.2.1-1
noto-fonts 1:2025.08.01-1
noto-fonts-cjk 20240730-1
noto-fonts-emoji 1:2.048-1
npm 11.5.2-1
npm-check-updates 18.0.2-1
npth 1.8-1
nspr 4.37-1
nss 3.115-1
numactl 2.0.19-1
nvidia-utils 580.76.05-4
obs-studio 31.1.2-1
ocl-icd 2.3.3-1
oh-my-zsh-git r7574.736632228-1
ollama 0.11.4-1
oniguruma 6.9.10-1
open-dyslexic-fonts 0.91.12-2
openal 1.24.3-1
openblas 0.3.30-1
opencore-amr 0.1.6-2
openexr 3.3.5-1
openh264 2.6.0-1
openjpeg2 2.5.3-1
openmp 20.1.8-1
openmpi 5.0.8-2
openpmix 5.0.8-1
openssh 10.0p1-4
openssl 3.5.2-1
opentimelineio 0.17.0-2
openucx 1.19.0-1
openvpn 2.6.14-1
opus 1.5.2-1
opusfile 0.12-4
orc 0.4.41-1
osinfo-db 20250606-1
otf-opendyslexic-nerd 3.4.0-1
p11-kit 0.25.5-1
pacman 7.0.0.r6.gc685ae6-6
pacman-contrib 1.12.0-1
pacman-mirrorlist 20250702-2
pam 1.7.1-1
pambase 20250719-1
pango 1:1.56.4-1
pangomm 2.46.4-1
pangomm-2.48 2.56.1-1
parted 3.6-2
patch 2.8-1
patchelf 0.18.0-3
pavucontrol 1:6.1-1
pciutils 3.14.0-1
pcre 8.45-4
pcre2 10.45-1
pcsclite 2.3.3-1
perl 5.42.0-1
perl-error 0.17030-2
perl-image-exiftool 13.30-3
perl-mailtools 2.22-2
perl-timedate 2.33-8
phonon-qt6 4.12.0-5
phonon-qt6-mpv 0.1.0-3
php 8.4.11-1
pinentry 1.3.2-1
pipewire 1:1.4.7-1
pipewire-alsa 1:1.4.7-1
pipewire-audio 1:1.4.7-1
pipewire-jack 1:1.4.7-1
pipewire-pulse 1:1.4.7-1
pixman 0.46.4-1
pkcs11-helper 1.30.0-2
pkgconf 2.5.1-1
plasma-activities 6.4.4-1
playerctl 2.4.1-4
pnpm 10.15.0-1
polkit 126-2
polkit-gnome 0.105-11
polkit-qt5 0.200.0-1
polkit-qt6 0.200.0-1
poppler 25.08.0-1
poppler-data 0.4.12-2
poppler-glib 25.08.0-1
poppler-qt6 25.08.0-1
popt 1.19-2
portaudio 1:19.7.0-3
portmidi 1:2.0.6-1
postgresql 17.5-5
postgresql-libs 17.5-5
pps-tools 1.0.3-2
procps-ng 4.0.5-3
protobuf 31.1-2
proton-vpn-gtk-app 4.9.7-1
prrte 3.0.11-1
psmisc 23.7-1
pugixml 1.15-2
purpose 6.17.0-1
pybind11 3.0.0-1
python 3.13.7-1
python-aaf2 1.7.1-3
python-absl 2.3.1-1
python-acme 4.2.0-1
python-adb-shell 0.4.4-3
python-aiohappyeyeballs 2.6.1-1
python-aiohttp 3.12.15-1
python-aiosignal 1.4.0-1
python-annotated-types 0.7.0-2
python-anyio 4.10.0-1
python-argcomplete 3.6.2-1
python-asgiref 3.9.1-1
python-astor 0.8.1-8
python-astunparse 1.6.3-9
python-attrs 25.3.0-1
python-audioop-lts 0.2.2-1
python-audioop-lts-debug 0.2.1-1
python-autocommand 2.2.2-7
python-bandcamp-api 0.2.3-2.1
python-bcrypt 4.3.0-1
python-beautifulsoup4 4.13.4-1
python-bleach 6.2.0-2
python-boto3 1.39.9-1
python-botocore 1.39.9-1
python-build 1.3.0-1
python-cachetools 6.1.0-1
python-cairo 1.28.0-1
python-certifi 2025.08.03-1
python-cffi 1.17.1-2
python-charset-normalizer 3.4.3-1
python-click 8.2.1-1
python-cloudflare 2.12.5-4
python-colorama 0.4.6-5
python-configargparse 1.5.5-3
python-configobj 5.0.9-5
python-contourpy 1.3.3-1
python-cryptography 45.0.5-1
python-cssselect 1.2.0-8
python-curl-cffi-debug 0.11.1-2
python-cycler 0.12.1-3
python-dacite 1.9.2-2
python-dateutil 2.9.0-6
python-dbus 1.4.0-1
python-deadlib 3.13.0-2
python-decorator 5.2.1-1
python-demjson3 3.0.6-2.1
python-deprecated 1.2.18-1
python-distlib 0.4.0-1
python-distro 1.9.0-3
python-dnspython 1:2.7.0-1
python-docstring-to-markdown 0.15-3
python-dotenv 1.1.1-1
python-edge-tts 7.0.2-1
python-eventlet 0.40.2-1
python-expandvars 1.1.1-1
python-fastapi 0.116.1-1
python-fastjsonschema 2.21.2-1
python-filelock 3.18.0-1
python-flatbuffers 25.2.10-1
python-fonttools 4.59.1-1
python-frozenlist 1.7.0-1
python-gast 0.6.0-2
python-gevent 25.5.1-1
python-gmpy2 2.2.1-2
python-gnupg 0.5.5-1
python-gobject 3.52.3-3
python-google-auth 2.40.3-1
python-google-auth-oauthlib 1.2.2-1
python-gpt4all 2.2.1-1
python-gpt4all-debug 2.2.1-1
python-greenlet 3.2.4-1
python-grpcio 1.74.1-1
python-grpcio-tools 1.74.1-1
python-gtts 2.5.4-2
python-h11 0.16.0-1
python-h2 4.2.0-1
python-h5py 3.14.0-1
python-hpack 4.1.0-1
python-html5lib 1.1-15
python-httpcore 1.0.9-2
python-httplib2 0.22.0-8
python-httptools 0.6.4-2
python-httpx 0.28.1-3
python-hyperframe 6.1.0-1
python-i3ipc 2.2.1-8
python-idna 3.10-2
python-importlib-metadata 8.7.0-1
python-iniconfig 2.1.0-1
python-installer 0.7.0-10
python-jaconv 0.4.0-1
python-jaraco.classes 3.4.0-2
python-jaraco.collections 5.1.0-1
python-jaraco.context 6.0.1-1
python-jaraco.functools 4.1.0-1
python-jaraco.text 4.0.0-2
python-jedi 0.19.2-1
python-jeepney 0.9.0-1
python-jinja 1:3.1.6-1
python-jiter 0.10.0-1
python-jmespath 1.0.1-5
python-joblib 1.4.2-2
python-josepy 2.1.0-1
python-jsonlines 4.0.0-4
python-keras 3.11.2-1
python-keyring 25.6.0-1
python-kiwisolver 1.4.7-1
python-lark-parser 1.2.2-3
python-livepng 0.1.8-3
python-llvmlite 0.44.0-1
python-lsp-jsonrpc 1.1.2-5
python-lsp-server 1.12.2-1
python-lxml 6.0.0-2
python-mako 1.3.10-1
python-markdown 3.8.2-1
python-markdown-it-py 4.0.0-1
python-markupsafe 3.0.2-1
python-matplotlib 3.10.5-1
python-mdurl 0.1.2-8
python-ml-dtypes 0.5.3-1
python-more-itertools 10.7.0-1
python-mpmath 1.3.0-4
python-multidict 6.6.3-1
python-mutagen 1.47.0-3
python-networkx 3.5-1
python-numba 0.61.0-1
python-numpy 2.3.2-1
python-oauth2client 4.1.3-11
python-oauthlib 3.3.1-1
python-openai 1.97.1-1
python-openai-whisper 20250625-1
python-opt_einsum 3.4.0-1
python-optree 0.17.0-1
python-packaging 25.0-1
python-pandas 2.3.1-1
python-parsedatetime 2.6-10
python-parso 1:0.8.4-3
python-pasta 0.2.0-9
python-pillow 11.3.0-1
python-pip 25.2-1
python-pipenv 2025.0.4-1
python-platformdirs 4.3.8-1
python-pluggy 1.6.0-1
python-pocketsphinx 5.0.4-1
python-poetry-core 2.1.3-1
python-pooch 1.8.2-4
python-propcache 0.3.2-1
python-protobuf 31.1-2
python-proton-core 0.4.0-4
python-proton-keyring-linux 0.2.0-4
python-proton-vpn-api-core 0.42.5-1
python-proton-vpn-local-agent 1.4.5-1
python-proton-vpn-network-manager 0.12.14-1
python-psutil 7.0.0-1
python-pyasn1 0.6.1-1
python-pyasn1-modules 0.4.2-1
python-pyaudio 0.2.14-4
python-pycparser 2.22-3
python-pydantic 2.11.7-1
python-pydantic-core 2:2.33.2-2
python-pydantic-extra-types 2.10.5-1
python-pydantic-settings 2.10.1-1
python-pydot 3.0.4-1
python-pydub 0.25.1-7
python-pygame 2.6.1-2
python-pygments 2.19.2-1
python-pyinotify 0.9.6-15
python-pykakasi 2.3.0-2
python-pylatexenc 2.10-5
python-pynacl 1.5.0-3
python-pyopenssl 25.1.0-1
python-pyparsing 3.2.3-1
python-pyproject-hooks 1.2.0-3
python-pyquery 2.0.1-1
python-pyrfc3339 1.1-14
python-pyte 0.8.2-4
python-pytest 1:8.4.1-1
python-python-multipart 0.0.20-1
python-pytorch 2.7.1-4
python-pytube 15.0.0-4
python-pytz 2025.2-1
python-rapidfuzz 3.13.0-1
python-redis 6.2.0-1
python-regex 2025.7.34-1
python-requests 2.32.5-1
python-requests-oauthlib 1.3.1-5
python-requests-toolbelt 1.0.0-3
python-respx 0.22.0-3
python-rich 14.1.0-1
python-rsa 4.9.1-1
python-s3transfer 0.13.1-1
python-safetensors 0.6.2-1
python-safetensors-debug 0.6.2-1
python-scikit-learn 1.7.1-1
python-scipy 1.16.1-1
python-secretstorage 3.3.3-6
python-sentry_sdk 2.35.0-1
python-setuptools 1:80.9.0-1
python-six 1.17.0-1
python-slugify 8.0.4-3
python-sniffio 1.3.1-4
python-soundcloud-v2 1.6.0-1.1
python-sounddevice 0.5.2-1
python-soupsieve 2.7-1
python-speechrecognition 3.14.3-1
python-speechrecognition-debug 3.14.3-1
python-spotipy 2.25.1-1
python-srt 3.5.3-2
python-starlette 0.47.2-1
python-sympy 1.14.0-1
python-syncedlyrics 1.0.1-1.1
python-tabulate 0.9.0-5
python-tensorboard_plugin_wit 1.8.1-10
python-tensorflow 2.19.0-3
python-termcolor 3.1.0-1
python-text-unidecode 1.3-12
python-threadpoolctl 3.5.0-2
python-tiktoken 0.8.0-1
python-tokenizers 0.21.4-1
python-toml 0.10.2-12
python-tqdm 4.67.1-2
python-typing-inspection 0.4.1-1
python-typing_extensions 4.14.1-1
python-ujson 5.10.0-2
python-urllib3 2.5.0-1
python-uvloop 0.21.0-2
python-virtualenv 20.34.0-1
python-virtualenv-clone 0.5.7-6
python-voicevox-client 0.4.1-1
python-wcwidth 0.2.13-3
python-webencodings 0.5.1-12
python-websockets 15.0.1-1
python-werkzeug 3.1.3-1
python-wheel 0.45.1-1
python-wordllama 0.3.9-1
python-wordllama-debug 0.3.9-1
python-wrapt 1.17.3-1
python-xlib 0.33-4
python-yaml 6.0.2-2
python-yarl 1.21.1-1
python-ytmusicapi 1.11.0-1
python-zipp 3.21.0-2
python-zope-event 5.1.1-1
python-zope-interface 7.2-1
qca-qt6 2.3.10-2
qhull 2020.2-5
qqc2-desktop-style 6.17.0-1
qrencode 4.1.1-4
qt5-base 5.15.17+kde+r123-1
qt5-declarative 5.15.17+kde+r21-1
qt5-gamepad 5.15.17-1
qt5-graphicaleffects 5.15.17-1
qt5-location 5.15.17+kde+r7-1
qt5-multimedia 5.15.17+kde+r2-1
qt5-quickcontrols 5.15.17-1
qt5-quickcontrols2 5.15.17+kde+r5-1
qt5-remoteobjects 5.15.17-1
qt5-svg 5.15.17+kde+r5-1
qt5-tools 5.15.17+kde+r3-2
qt5-translations 5.15.17-1
qt5-wayland 5.15.17+kde+r57-1
qt5-webchannel 5.15.17+kde+r3-1
qt5-webengine 5.15.19-2
qt5-x11extras 5.15.17-1
qt6-5compat 6.9.1-1
qt6-base 6.9.1-5
qt6-declarative 6.9.1-2
qt6-multimedia 6.9.1-1
qt6-multimedia-ffmpeg 6.9.1-1
qt6-networkauth 6.9.1-1
qt6-positioning 6.9.1-1
qt6-scxml 6.9.1-1
qt6-shadertools 6.9.1-1
qt6-speech 6.9.1-1
qt6-svg 6.9.1-1
qt6-tools 6.9.1-2
qt6-translations 6.9.1-1
qt6-wayland 6.9.1-1
qt6-webchannel 6.9.1-1
qt6-webengine 6.9.1-2
qtkeychain-qt5 0.15.0-3
raptor 2.0.16-7
rasqal 1:0.9.33-7
rav1e 0.7.1-1
re2 1:20240702-5
readline 8.3.001-1
redland 1:1.0.17-9
rhash 1.4.4-1
ripgrep 14.1.1-1
riseup-vpn 0.24.10-1.5
rnnoise 1:0.2-1
roam 174.0.0.beta001-1
rofimoji 6.6.0-2
rsync 3.4.1-2
rtkit 0.13-3
rtmpdump 1:2.4.r105.6f6bb13-1
rubberband 4.0.0-1
ruby 3.4.5-1
rubygems 3.6.9-1
runc 1.3.0-1
rust 1:1.89.0-1
sbc 2.1-1
sddm 0.21.0-6
sdl2-compat 2.32.56-2
sdl2_image 2.8.8-1
sdl2_mixer 2.8.1-2
sdl2_ttf 2.24.0-1
sdl3 3.2.20-1
seatd 0.9.1-1
sed 4.9-3
semver 7.7.2-1
serd 0.32.4-1
shaderc 2025.3-1
shadow 4.18.0-1
shared-mime-info 2.4-2
shellspec 0.28.1-3
signal-desktop 7.66.0-1
signon-kwallet-extension 25.08.0-1
signon-plugin-oauth2 0.25-3
signon-ui 0.17+20231016-3
signond 8.61-3
simdjson 1:3.13.0-1
slack-desktop 4.45.64-1
slang 2.3.3-4
slurp 1.5.0-1
smartmontools 7.5-1
snappy 1.2.2-2
sndio 1.10.0-1
sof-firmware 2025.05-1
solid 6.17.0-1
sonnet 6.17.0-1
sord 0.16.18-1
sound-theme-freedesktop 0.8-6
soundtouch 2.4.0-1
spandsp 0.0.6-5
spdlog 1.15.3-1
speex 1.2.1-2
speexdsp 1.2.1-2
spirv-tools 1:1.4.321.0-1
spotdl 4.4.0-1
sqlite 3.50.4-1
sratom 0.6.18-1
srt 1.5.4-1
starship 1.23.0-1
startup-notification 0.12-8
stripe-cli-bin 1.29.0-1
stripe-cli-bin-debug 1.29.0-1
sudo 1.9.17.p1-1
suitesparse 7.11.0-1
svt-av1 3.1.0-1
svt-hevc 1.5.1-3
sway 1:1.10.1-3
sway-contrib 1.11-1
swaybg 1.2.1-1
swayidle 1.8.0-2
swaylock-fprintd-git r314.ffd639a-2.4
syndication 6.17.0-1
systemd 257.8-2
systemd-libs 257.8-2
systemd-sysvcompat 257.8-2
taglib 2.1.1-1
tar 1.35-2
tdb 1.4.14-1
tea 0.10.1-1
tensorboard 2.20.0-1
tensorflow 2.19.0-3
texinfo 7.2-1
thefuck 3.32-11
thermald 2.5.9-3
thunar 4.20.4-1
thunderbird 141.0-1
tinysparql 3.9.2-2
tinyxml2 11.0.0-1
totem-pl-parser 3.26.6+r30+g51b8439-2
tpm2-tss 4.1.3-1
tree-sitter 0.25.8-1
tslib 1.23-1
twolame 0.4.0-4
typescript 5.9.2-1
typescript-language-server 4.4.0-1
tzdata 2025b-1
uchardet 0.0.8-3
udisks2 2.10.1-6
unionfs-fuse 3.6-1.1
universal-android-debloater-bin 1.1.1-2
unzip 6.0-23
upower 1.90.9-1
usbutils 018-1
uthash 2.3.0-2
util-linux 2.41.1-1
util-linux-libs 2.41.1-1
uv 0.8.12-1
uvicorn 0.35.0-1
v4l-utils 1.30.1-1
vapoursynth 72-1
vibe-bin 3.0.5-2
vibe-bin-debug 3.0.5-2
vid.stab 1.1.1-2
vim 9.1.1623-1
vim-runtime 9.1.1623-1
visual-studio-code-bin 1.103.1-1
vmaf 3.0.0-1
volume_key 0.3.12-11
vte-common 0.80.3-1
vte4 0.80.3-1
vulkan-headers 1:1.4.321.0-1
vulkan-icd-loader 1.4.321.0-1
vulkan-intel 1:25.1.7-1
vulkan-radeon 1:25.1.7-1
wasi-compiler-rt 20.1.6-1
wasi-libc 1:0+440+3f7eb4c7-1
wasi-libc++ 20.1.6-2
wasi-libc++abi 20.1.6-2
waterfox-bin 6.5.11-1
wavpack 5.8.1-1
waybar 0.14.0-1
waybar-module-pacman-updates-git 0.2.9-1
wayland 1.24.0-1
webkit2gtk 2.48.5-1
webkit2gtk-4.1 2.48.5-1
webkitgtk-6.0 2.48.5-1
webrtc-audio-processing-1 1.3-5
wget 1.25.0-2
whatsapp-for-linux 1.7.0-1.3
which 2.23-1
wildmidi 0.4.6-1
windscribe-v2-bin 2.16.14-1
wine 10.12-1
wireless_tools 30.pre9-4
wireplumber 0.5.10-1
wl-clipboard 1:2.2.1-3
wlr-randr 0.5.0-1
wlroots0.18 0.18.2-1
wlroots0.19 0.19.0-1
woff2 1.0.2-6
wofi 1.5.1-1
wpa_supplicant 2:2.11-3
wxwidgets-common 3.2.8.1-2
wxwidgets-gtk3 3.2.8.1-2
x264 3:0.164.r3108.31e19f9-3
x265 4.1-1
xcb-proto 1.17.0-3
xcb-util 0.4.1-2
xcb-util-cursor 0.1.5-1
xcb-util-errors 1.0.1-2
xcb-util-image 0.4.1-3
xcb-util-keysyms 0.4.1-5
xcb-util-renderutil 0.3.10-2
xcb-util-wm 0.4.2-2
xdg-dbus-proxy 0.1.6-1
xdg-desktop-portal 1.20.3-1
xdg-desktop-portal-gnome 48.0-2
xdg-desktop-portal-gtk 1.15.3-1
xdg-desktop-portal-wlr 0.7.1-1
xdg-user-dirs 0.18-2
xdg-user-dirs-gtk 0.14-1
xdg-utils 1.2.1-1
xf86-input-libinput 1.5.0-1
xf86-video-amdgpu 25.0.0-1
xf86-video-ati 1:22.0.0-2
xf86-video-nouveau 1.0.18-1
xf86-video-vmware 13.4.0-4
xfconf 4.20.0-2
xkeyboard-config 2.45-1
xmlsec 1.3.7-2
xorg-fonts-encodings 1.1.0-1
xorg-server 21.1.18-2
xorg-server-common 21.1.18-2
xorg-server-xvfb 21.1.18-2
xorg-setxkbmap 1.3.4-2
xorg-xauth 1.1.4-1
xorg-xinit 1.4.4-1
xorg-xkbcomp 1.4.7-1
xorg-xmodmap 1.0.11-2
xorg-xprop 1.2.8-1
xorg-xrdb 1.2.2-2
xorg-xset 1.2.5-2
xorg-xwayland 24.1.8-1
xorgproto 2024.1-2
xvidcore 1.3.7-3
xxhash 0.8.3-1
xz 5.8.1-1
yajl 2.1.0-6
yaml-cpp 0.8.0-2
yaml-language-server 1.19.0-1
yarn 1.22.22-2
yasm 1.3.0-8
yay 12.5.0-1
yay-debug 12.5.0-1
yt-dlp 2025.07.21-1
zbar 0.23.93-4
zen-browser-bin 1.14.11b-1
zeromq 4.3.5-2
zig 0.14.1-2
zimg 3.0.5-1
zip 3.0-11
zix 0.6.2-1
zlib 1:1.3.1-2
zlib-ng 2.2.5-1
zoom 6.5.8-1
zram-generator 1.2.1-1
zsh 5.9-5
zstd 1.5.7-2
zvbi 0.2.44-1
zxing-cpp 2.3.0-5
zziplib 0.13.80-1
```

</details>

## 4. CONFIGURATION

Naomi's specific application configurations are noted here for posterity.

### 4.1. Git Configuration

The most important thing to note is that Naomi signs her commits with her SSH key, not a GPG key.

```ini frame="code" title="~/.gitconfig"
[gpg]
    format = ssh
[gpg "ssh"]
    program = /opt/1Password/op-ssh-sign
[commit]
    gpgsign = true
[user]
    signingkey = ssh-rsa  
    name = Naomi Carrigan
    email = commits@nhcarrigan.com
[core]
    editor = emacs -nw
[push]
    autoSetupRemote = true
[init]
    defaultBranch = main
[credential]
    helper = store
```

### 4.2. Zsh Configuration

Naomi uses Oh My ZSH instead of bash.

```bash frame="code" title="~/.zshrc"
####################
# Dotfile for Oh My Zsh.
# Installs on top of zsh,
# so install that first.
####################

# SYSTEM
####################
# Path to your Oh My Zsh installation.
export ZSH="$HOME/.oh-my-zsh"

# Plugins
plugins=(git zsh-256color zsh-autosuggestions zsh-syntax-highlighting)

source $ZSH/oh-my-zsh.sh

# We're lazy. :3
alias zshrc="source ~/.zshrc"
# We hate nano
alias nano="emacs -nw"
alias code="emacs -nw ."

# Listing files
alias ls="eza -ahl --extended --octal-permissions --git -g"

# More details on which thing to run
alias which="type -a"

# Untar
alias untar="tar -xvzf"

# Packages
alias yay-list="yay -Qs"
alias yay-clean="yay -Scc"
alias yay-update="yay -Syu"
alias yay-new="yay -Syuu"
alias yay-install="yay" # Just for consistency.
alias yay-uninstall="yay -R"

# File System
alias .2="cd ../.."
alias .3="cd ../../.."
alias .4="cd ../../../.."
alias .5="cd ../../../../.."
alias delete="rm -rf"
alias cp="cp -i"
alias mkdir="mkdir -p"

# git
alias clone="git clone"
alias comm="git add -A && git commit"
alias commv="git add -A && git commit --no-verify"
alias push="git push"
alias pull="git pull"
alias upmain="git checkout main && git fetch upstream && git merge upstream/main"
alias co="git checkout"
alias cob="git checkout -b"

alias fcc="cd ~/code/freecodecamp"
alias ridm="cd ~/code/rythm"
alias sc="cd ~/code/streamcord"
alias dg="cd ~/code/deepgram"
alias naomi="cd ~/code/naomi"

alias hug="curl -L https://api.github.com/octocat\?s\=You%20deserve%20a%20hug"

alias tunnel2="cloudflared tunnel --config ~/.cloudflared/local2.yml run local2"
alias tunnel1="cloudflared tunnel --config ~/.cloudflared/local.yml run local"

# Silly
alias tree="cbonsai -S"
alias poke="pokemon-colorscripts --no-title -r"
alias fish="asciiquarium --transparent"
alias matrix="cmatrix -r"
alias pipe="pipes.sh"
alias hacker="hollywood"

# THE FUCK
eval $(thefuck --alias)

alias shit="fuck"
alias damn="fuck"
alias crap="fuck"

# pnpm
export PNPM_HOME="/home/naomi/.local/share/pnpm"
case ":$PATH:" in
  *":$PNPM_HOME:"*) ;;
  *) export PATH="$PNPM_HOME:$PATH" ;;
esac
# pnpm end
export PATH=$HOME/.local/bin:$PATH
# sonarqube
export SONAR_SCANNER_HOME="/opt/sonar-scanner"
export PATH=${SONAR_SCANNER_HOME}/bin:${PATH}
# dotnet
export PATH="$PATH:/home/naomi/.dotnet/tools"

# Starship
eval "$(starship init zsh)"


# Load Angular CLI autocompletion.
source <(ng completion script)
```

#### 4.2.1. Starship Configuration

Naomi uses `starship` to manage her customised shell prompt.

Note that her config requires your terminal be using a Nerd Font, or the symbols will not render.

```toml frame="code" title="~/.config/starship.toml"
"$schema" = 'https://starship.rs/config-schema.json'

format = '''
┌─  $username$hostname$fill$git_commit$git_branch󰊢 ─┐
│  $directory$fill$git_state$git_metrics$git_status│
└─  $dotnet$nodejs$golang$python$dart$c$gradle$java$kotlin$php$ruby$rust$package$fill$status$cmd_duration$time ─┘'''

right_format = '$custom'

add_newline = false

[fill]
symbol = " "

[username]
show_always = true
format = '[$user]($style) @ '

[hostname]
ssh_only = false
format = '[$hostname]($style)'

[directory]
truncate_to_repo = true
truncation_length = 5
truncation_symbol = ""

[nodejs]
format = '[$symbol($version )]($style)'

[dotnet]
format = '[$symbol($version )(🎯 $tfm )]($style)'
detect_extensions = ['csproj', 'fsproj', 'xproj', 'sln']

[golang]
format = '[$symbol($version )]($style)'

[python]
format = '[${symbol}${pyenv_prefix}(${version} )(\($virtualenv\) )]($style)'

[dart]
format = '[$symbol($version )]($style)'

[c]
format = '[$symbol($version(-$name) )]($style)'

[gradle]
format = '[$symbol($version )]($style)'

[java]
format = '[${symbol}(${version} )]($style)'

[kotlin]
format = '[$symbol($version )]($style)'

[php]
format = '[$symbol($version )]($style)'

[ruby]
format = '[$symbol($version )]($style)'

[rust]
format = '[$symbol($version )]($style)'

[cmd_duration]
format = 'took [$duration]($style) at '
min_time = 0

[git_commit]
only_detached = false
format = '[$hash$tag]($style) '

[git_status]
conflicted = '!'
untracked = 'u'
modified = 'm'
staged = 's'
renamed = 'r'
deleted = 'd'
stashed = ''

[git_metrics]
disabled = false

[package]
format = '[$symbol$version]($style) '
display_private = true

[time]
disabled = false
format = '[$time]($style) '

[status]
format = '[$symbol $status]($style) '
disabled = false
success_symbol = '✅'

[custom.mommy]
command = "mommy -1 -s $status"
when = true
```

### 4.3. Pacman Configuration

Naomi's package manager configuration.

```ini frame="code" title="/etc/pacman.conf"
[options]
IgnorePkg = sway
HoldPkg     = pacman glibc
Architecture = auto

CheckSpace

SigLevel    = Never
LocalFileSigLevel = Optional
#RemoteFileSigLevel = Required

[core]
Include = /etc/pacman.d/mirrorlist

[extra]
Include = /etc/pacman.d/mirrorlist

[chaotic-aur]
Include = /etc/pacman.d/chaotic-mirrorlist

[multilib]
Include = /etc/pacman.d/mirrorlist
```

### 4.4. Sway Configuration

```ini frame="code" title="~/.config/sway/config"
set $mod Mod4
set $left Left
set $down Down
set $up Up
set $right Right
set $term ghostty
set $menu wofi --show=drun --allow-images

# exec /home/naomi/code/naomi/apod.sh
exec --no-startup-d /usr/lib/xdg-desktop-portal -r
exec /home/naomi/code/naomi/screen.sh

output * bg /home/naomi/bg.png fill
output Unknown-1 scale 2

bindsym $mod+q exec $term
bindsym $mod+c kill
bindsym $mod+r exec $menu
bindsym $mod+e exec thunar
bindsym $mod+v floating toggle
bindsym $mod+x exec cliphist list | wofi --dmenu | cliphist decode | wl-copy
bindsym $mod+f fullscreen

exec swayidle -w \
  timeout 240 'notify-send "Locking workstation due to inactivity."' \
  resume 'notify-send "Cancelled lock." \
  timeout 300 'swaylock' \
  before-sleep 'swaylock'

floating_modifier $mod normal

input * {
  xkb_layout us
  pointer_accel 0
  accel_profile flat
}

focus_follows_mouse yes
default_border none
default_floating_border none
font pango:OpenDyslexicMono 10

bindsym $mod+$left focus left
bindsym $mod+$down focus down
bindsym $mod+$up focus up
bindsym $mod+$right focus right
bindsym $mod+Shift+$left move left
bindsym $mod+Shift+$down move down
bindsym $mod+Shift+$up move up
bindsym $mod+Shift+$right move right
bindsym $mod+Ctrl+$left move container workspace prev
bindsym $mod+Ctrl+$right move container workspace next
bindsym $mod+Shift+h splith
bindsym $mod+Shift+v splitv
bindsym $mod+Shift+s layout stacking
bindsym $mod+Shift+w layout tabbed
bindsym $mod+Shift+e layout toggle split
bindsym $mod+l exec swaylock
bindsym $mod+p focus parent
bindsym $mod+Shift+space focus mode_toggle
bindsym $mod+period exec rofimoji -a copy --skin-tone light
bindsym $mod+period+Ctrl exec rofimoji -f all -a copy --skin-tone light
bindsym --locked XF86AudioMute exec pactl set-sink-mute \@DEFAULT_SINK@ toggle
bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume \@DEFAULT_SINK@ -1%
bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume \@DEFAULT_SINK@ +1%
bindsym --locked XF86AudioPlay exec playerctl play-pause
bindsym --locked XF86AudioNext exec playerctl next
bindsym --locked XF86AudioPrev exec playerctl previous
bindsym --locked XF86MonBrightnessUp exec brightnessctl set +5%
bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%-
bindsym --locked XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
bindsym Print exec grimshot --notify --cursor copy area
bindsym Ctrl+Print exec grimshot --notify --cursor --wait 5 copy area
bindsym $mod+Shift+r mode "resize"
bindsym $mod+Shift+c exec swaymsg reload

bindsym $mod+1 workspace number 1
bindsym $mod+2 workspace number 2
bindsym $mod+3 workspace number 3
bindsym $mod+4 workspace number 4
bindsym $mod+5 workspace number 5
bindsym $mod+6 workspace number 6
bindsym $mod+7 workspace number 7
bindsym $mod+8 workspace number 8
bindsym $mod+9 workspace number 9
bindsym $mod+0 workspace number 10
bindsym $mod+Shift+1 workspace number 11
bindsym $mod+Shift+2 workspace number 12
bindsym $mod+Shift+3 workspace number 13
bindsym $mod+Shift+4 workspace number 14
bindsym $mod+Shift+5 workspace number 15
bindsym $mod+Shift+6 workspace number 16
bindsym $mod+Shift+7 workspace number 17
bindsym $mod+Shift+8 workspace number 18
bindsym $mod+Shift+9 workspace number 19
bindsym $mod+Shift+0 workspace number 20

assign [title=".*Discord.*"] 1
assign [title=".*Waterfox.*"] 2
assign [title=".*Chat.*"] 4
assign [title=".*Slack.*"] 5
assign [title=".*Roam.*"] 6
assign [title=".*Mail.*"] 7
assign [title=".*Evolution.*"] 7
assign [title=".*Calendar.*"] 7
assign [title=".*1Password.*"] 8
assign [title=".*Messages.*"] 9

mode "resize" {
    bindsym $left resize shrink width 10px
    bindsym $down resize grow height 10px
    bindsym $up resize shrink height 10px
    bindsym $right resize grow width 10px

    # Return to default mode
    bindsym Return mode "default"
    bindsym Escape mode "default"
}

exec dunst
exec wl-paste --watch cliphist store
# This creates the GUI for apps to ask for sudo perms
exec /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec gsettings set org.gnome.desktop.interface gtk-theme "Sweet-Ambar-Blue"
exec gsettings set org.gnome.desktop.interface color-scheme prefer-dark
exec gsettings set org.gnome.desktop.interface font-name 'OpenDyslexicMono 10'
exec discord
exec waterfox
exec google-chat-linux
exec slack
exec roam
exec evolution
exec 1password
exec google-messages
exec espanso
exec brightnessctl -d tpacpi::kbd_backlight set 2

bar {
  swaybar_command waybar
}
```

#### 4.4.1. Swaylock Configuration

```ini frame="code" title="~/.config/swaylock/config"
# Background image
image=/home/naomi/bg.jpg
scaling=fill
screenshot=false

ignore-empty-password
show-failed-attempts

# Background effects
fade-in=0.2
effect-blur=8x2
effect-vignette=0.5:0.5

# Ring customisation
indicator-radius=120
indicator-thickness=20
indicator-idle-visible

clock
clockoutline-color=abfcec
clock-color=04624f
clock-radius=60
clock-thickness=10
timestr=%H:%M:%S
datestr=%a, %B %e

# Colors
key-hl-color=04624f
separator-color=04624f
inside-color=04624fcc
inside-clear-color=04624fcc
inside-ver-color=04624fcc
inside-wrong-color=04624fcc

ring-color=abfcec
ring-clear-color=abfcec
ring-ver-color=abfcec
ring-wrong-color=cc8822

line-color=04624f
line-clear-color=04624f
line-ver-color=04624f
line-wrong-color=04624f

text-color=abfcec
text-clear-color=abfcec
text-ver-color=abfcec
text-wrong-color=abfcec

# Text customisation
font=OpenDyslexicMono
font-size=24
```

### 4.5. Waybar Configuration

These manage Naomi's waybar instance.

#### `config.jsonc`

```json frame="code" title="~/.config/waybar/config.jsonc"
{
    "layer": "top",
    "position": "top",
    "mode": "dock",
    "height": 15,
    "exclusive": true,
    "passthrough": false,
    "gtk-layer-shell": true,
    "reload_style_on_change": true,
    "modules-left": [
        "custom/ws",
        "sway/workspaces",
        "sway/window"
    ],
    "modules-center": [
        "custom/storage",
        "custom/cpuinfo",
        "memory",
        "cpu",
        "custom/gpu-usage",
        "custom/arch",
        "clock#time",
        "clock#date",
        "custom/weather"
    ],
    "modules-right": [
        "pulseaudio",
        "custom/updates",
        "battery",
        "custom/wifi",
        "tray",
        "custom/notifs",
        "custom/power"
    ],
    "custom/notifs": {
        "exec": "~/.config/waybar/scripts/dunst.sh",
        "return-type": "json",
        "interval": 1,
        "tooltip": false,
        "on-click": "dunstctl history-pop",
        "on-click-right": "dunstctl set-paused toggle"
    },
    "custom/ws": {
        "format": "",
        "tooltip": false,
        "on-click": "wofi --show=drun --allow-images"
    },
    "custom/gpu-usage": {
        "format": "{icon} {0}",
        "exec": "gpu-usage-waybar",
        "return-type": "json",
        "format-icons": "󰾲",
        "on-click": "kitty nvtop",
        "min-length": 8,
        "max-length": 10
    },
    "custom/weather": {
        "exec": "python ~/.config/waybar/scripts/weather.py",
        "restart-interval": 300,
        "return-type": "json",
        "on-click": "zen-browser https://weather.com/weather/today/l/f1fc8cc5233b6f8620dda922b1cb97b5cc8781f508c572de2f969ff79c7b293a"
    },
    "custom/updates": {
        "format": "{} {icon}",
        "return-type": "json",
        "format-icons": {
            "has-updates": "<span foreground='#cc0099'>󱍷</span>",
            "updated": "<span foreground='#00b300'>󰂪</span>"
        },
        "exec-if": "which waybar-module-pacman-updates",
        "exec": "waybar-module-pacman-updates --interval-seconds 5 --network-interval-seconds 300",
        "min-length": 4,
        "max-length": 8,
        "on-click": "ghostty -e yay -Syu"
    },
    "sway/workspaces": {
        "all-outputs": false,
        "active-only": false,
        "on-click": "activate",
        "disable-scroll": true,
        "sort-by-number": true
    },
    "sway/window": {
        "format": "{}",
        "separate-outputs": true,
        "rewrite": {
            "naomi@technomancer:(.*)": "  $1",
            "(.*)naomi@technomancer:~": "  naomi@technomancer",
            "Amberol": "<span foreground='#500020'></span> Amberol",
            "(.*) - Visual Studio Code": "<span foreground='#89b4fa'>󰨞</span> $1",
            "(.*) - VSCodium": "<span foreground='#89b4fa'>󰨞</span> $1",
            "(.*) - Sublime Text(.*)": "<span foreground='#f9e2af'>󰘦</span> $1",
            "(.*)Zen Browser": "<span foreground='#94e2d5'>󰇧</span> $1",
            "(.*) — LibreWolf": "<span foreground='#94e2d5'>󰇧</span> $1",
            "(.*) — 1Password": "<span foreground='#89b4fa'>󰢁</span> $1",
            "(.*) - Slack": "<span foreground='#f38ba8'>󰒱</span> $1",
            "(.*)Chat": "<span foreground='#a6e3a1'>󰊭</span> Chat",
            "(.*) - Roam": "<span foreground='#cba6f7'></span> $1",
            "(.*) - Mozilla Thunderbird": "<span foreground='#fab387'>󰊫</span> $1",
            "(.*)Steam": "<span foreground='#89b4fa'>󰓓</span> Steam",
            "(.*) - Discord": "<span foreground='#5865F2'></span>  $1",
            "(.*)GNU Image Manipulation Program": "<span foreground='#a6adc8'></span> $1",
            "(.*)GIMP": "<span foreground='#a6adc8'></span> $1",
            "OBS(.*)": "<span foreground='#a6adc8'></span> OBS Studio",
            "(.*) - FreeTube": "<span foreground='#FF1716'></span> $1",
            "WasIstLos": "<span foreground='#02FB00'></span> WasIstLos",
            "(.*).jpg": " $1.jpg",
            "(.*).png": " $1.png",
            "(.*).svg": " $1.svg",
            "(.*)Thunar": " $1",
            "Espanso.*": "<span foreground='#f9e2af'>󰌵</span> Espanso",
            "(.*) - NHCarrigan": "<span foreground='#f9e2af'></span> $1",
            "": "<span foreground='#cba6f7'></span>  Naomi 󰅂 Technomancer"
        }
    },
    "memory": {
        "states": {
            "c": 90
        },
        "format": "󰘚 {percentage}%",
        "format-c": "<span foreground='#cc0000'>󰀪</span> {percentage}%",
        "tooltip": true,
        "tooltip-format": "{used:0.1f}GB / {total:0.1f}GB",
        "interval": 20,
        "on-click": "ghostty -e btop"
    },
    "cpu": {
        "format": "󰻠 {usage}%",
        "tooltip": true,
        "interval": 5,
        "on-click": "ghostty -e htop"
    },
    "custom/arch": {
        "format": "",
        "tooltip": true,
        "tooltip-format": "Arch Version: {}",
        "interval": 86400,
        "exec": "uname -r",
        "on-click": "ghostty"
    },
    "clock#time": {
        "format": "󱑂 {:%H:%M:%S (%Z)} ",
        "tooltip": true,
        "tooltip-format": "{tz_list}",
        "interval": 1,
        "on-click": "gnome-clocks",
        "timezones": [
            "America/Los_Angeles",
            "America/Chicago",
            "Europe/London",
            "Europe/Berlin",
            "Asia/Tel_Aviv",
            "Asia/Tokyo"
        ]
    },
    "clock#date": {
        "format": "󱨴 {:L%A, %d %B}",
        "tooltip-format": "<tt>{calendar}</tt>",
        "calendar": {
            "mode": "month",
            "mode-mon-col": 3,
            "on-click": "thunderbird",
            "on-click-right": "mode",
            "format": {
                "months": "<span color='#f5e0dc'><b>{}</b></span>",
                "weekdays": "<span color='#f9e2af'><b>{}</b></span>",
                "today": "<span color='#f38ba8'><b>{}</b></span>"
            }
        },
        "actions": {
            "on-click-right": "mode"
        }
    },
    "pulseaudio": {
        "format": "<span foreground='#00b300'>{icon}</span> {volume}%",
        "format-muted": "<span foreground='#cc0099'></span> {volume}%",
        "format-icons": {
            "headphone": "󰋋",
            "default": [
                "󰖀",
                "󰕾"
            ]
        },
        "on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle",
        "on-click-right": "pavucontrol -t 3",
        "on-scroll-up": "pactl set-sink-volume @DEFAULT_SINK@ +1%",
        "on-scroll-down": "pactl set-sink-volume @DEFAULT_SINK@ -1%",
        "scroll-step": 10
    },
    "custom/power": {
        "format": "<span foreground='#cc0000'></span>",
        "tooltip": false,
        "on-click": "swaylock",
        "on-click-right": "shutdown now",
        "interval": 86400
    },
    "tray": {
        "icon-size": 15,
        "spacing": 5,
        "show-passive-items": true
    },
    "custom/storage": {
        "format": "{}",
        "return-type": "json",
        "tooltip": true,
        "interval": 10,
        "exec": "~/.config/waybar/scripts/disk-use.sh",
        "on-click": "baobab"
    },
    "battery": {
        "states": {
            "warning": 20,
            "critical": 10
        },
        "format": "{icon} {capacity}%",
        "format-icons": [
            "󰂎",
            "󰁻",
            "󰁼",
            "󰁽",
            "󰁾",
            "󰁿",
            "󰂀",
            "󰂁",
            "󰂂",
            "󰁹"
        ],
        "format-charging": " {capacity}%",
        "tooltip-format": "Discharging: {time}",
        "tooltip-format-charging": "Charging: {time}",
        "interval": 1,
        "min-length": 6,
        "max-length": 6
    },
    "custom/wifi": {
        "exec": "~/.config/waybar/scripts/wifi-status.sh",
        "return-type": "json",
        "format": "{}",
        "on-click": "~/.config/waybar/scripts/wifi-menu.sh",
        "on-click-right": "ghostty -e bash -c nmtui",
        "interval": 1,
        "min-length": 1,
        "max-length": 20
    }
}
```

#### `style.css`

```css frame="code" title="~/.config/waybar/style.css"
  #waybar {
    border: none;
    font-family: "OpenDyslexicM Nerd Font";
    font-weight: bold;
    font-size: 10px;
    color: #ffb6c1;
    text-shadow: 0px 0px 5px;
    background: rgba(42, 10, 24, 0.8);
  }
  
  #workspaces button {
    padding: 0px 3px;
    color: #ffb6c1;
    border-radius: 50%;
  }
  
  #tray menu {
    background: rgba(42, 10, 24, 0.8);
    color: #ffb6c1;
    text-shadow: 0px 0px 5px;
  }
  
  #tray menu menuitem:hover {
    background: rgba(255, 239, 239, 0.8);
    color: #db7093;
  }
  
  tooltip {
    color: #ffb6c1;
    border: solid;
    border-radius: 7px;
    border-width: 1px;
    border-color: #ffb6c1;
    background-color: rgba(42, 10, 24, 0.8);
    text-shadow: 0px 0px 5px;
  }
  
  .module {
    background-color: rgba(42, 10, 24, 0.8);
    border: solid;
    border-radius: 10px;
    border-width: 1px;
    border-color: #ffb6c1;
    padding: 0px 4px;
    margin: 0px 0px 0px 0px;
  }
  
  .modules-left .module {
    margin-right: 6px;
    box-shadow: 2px 2px 3px #ffb6c177;
  }
  
  .modules-right .module {
    margin-left: 6px;
    box-shadow: -2px 2px 3px #ffb6c177;
  }
  
  .modules-center .module {
    margin-left: 5px;
    margin-right: 5px;
    box-shadow: 0px 2px 3px #ffb6c177;
  }
  
  #custom-arch,
  #custom-ws {
    padding-left: 8px;
    padding-right: 12px;
  }
  
  #custom-notifs,
  #custom-power {
    padding-left: 8px;
    padding-right: 10px;
  }
  
  #workspaces button:hover {
    background: rgba(255, 239, 239, 0.8);
    color: #db7093;
  }
  
  #workspaces button.visible {
    background: rgba(255, 239, 239, 0.8);
    color: #db7093;
  }
```

#### Scripts

There are a few scripts necessary for waybar to work.

<details>
  <summary><code>disk-use.sh</code></summary>

```sh frame="code" title="~/.config/waybar/scripts/disk-use.sh"
#!/usr/bin/env sh

home_use=$(df -h /home | tail -1);
read -ra home_array <<< "$home_use"

boot_use=$(df -h /boot | tail -1);
read -ra boot_array <<< "$boot_use"

root_use=$(df -h / | tail -1);
read -ra root_array <<< "$root_use"

text=" ${home_array[2]} / ${home_array[1]}";
tooltip="Home: ${home_array[2]} / ${home_array[1]} (${home_array[4]})\nBoot: ${boot_array[2]} / ${boot_array[1]} (${boot_array[4]})\nRoot: ${root_array[2]} / ${root_array[1]} (${root_array[4]})";

echo "{\"text\":\"${text}\", \"tooltip\":\"${tooltip}\"}";
```

</details>

<details>
  <summary><code>cpuinfo.sh</code></summary>

```sh frame="code" title="~/.config/waybar/scripts/cpuinfo.sh"
#!/usr/bin/env sh

model=$(cat /proc/cpuinfo | grep 'model name' | head -n 1 | awk -F ': ' '{print $2}')
utilisation=$(top -bn1 | awk '/^%Cpu/ {print 100 - $8}')
freqlist=$(cat /proc/cpuinfo | grep "cpu MHz" | awk '{ print $4 }')
maxfreq=$(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq | sed 's/...$//')
frequency=$(echo $freqlist | tr ' ' '\n' | awk "{ sum+=\$1 } END {printf \"%.0f/$maxfreq MHz\", sum/NR}")
temp=$(sensors | awk '/Package id 0/ {print $4}' | awk -F '[+.]' '{print $2}')
if [ -z "$temp" ]; then
    temp=$(sensors | awk '/Tctl/ {print $2}' | tr -d '+°C')
fi
if [ -z "$temp" ]; then
    temp="N/A"
fi
set_ico="{\"thermo\":{\"0\":\"󱃃\",\"45\":\"󰔏\",\"65\":\"󱃂\",\"85\":\"<span foreground='#cc0000'>󰸁</span>\"},\"util\":{\"0\":\"󰾆\",\"30\":\"󰾅\",\"60\":\"󰓅\",\"90\":\"<span foreground='#cc0000'>󰀪</span>\"}}"
eval_ico() {
    map_ico=$(echo "${set_ico}" | jq -r --arg aky "$1" --argjson avl "$2" '.[$aky] | keys_unsorted | map(tonumber) | map(select(. <= $avl)) | max')
    echo "${set_ico}" | jq -r --arg aky "$1" --arg avl "$map_ico" '.[$aky] | .[$avl]'
}
thermo=$(eval_ico thermo $temp)
speedo=$(eval_ico util $utilisation)
echo "{\"text\":\"${thermo} ${temp}°C\", \"tooltip\":\"${model}\n${thermo} Temperature: ${temp}°C\n${speedo} Utilization: ${utilisation}%\n󰘚 Clock Speed: ${frequency}\"}"
```

</details>

<details>
  <summary><code>dunst.sh</code></summary>

```sh frame="code" title="~/.config/waybar/scripts/dunst.sh"
#!/bin/bash

if dunstctl is-paused | grep -q "true"; then
    echo '{"text": "<span foreground=\"#cc0099\"></span>", "class": "paused"}'
else
    echo '{"text": "<span foreground=\"#00b300\"></span>", "class": "active"}'
fi
```

</details>

<details>
  <summary><code>weather.py</code></summary>

```py frame="code" title="~/.config/waybar/scripts/weather.py"
#!/usr/bin/env python

import subprocess
from pyquery import PyQuery
import json

weather_icons = {
    "sunnyDay": "<span foreground='#dbd402'></span>",
    "clearNight": "<span foreground='#3239fc'></span>",
    "cloudyFoggyDay": "<span foreground='#e0dc62'></span>",
    "cloudyFoggyNight": "<span foreground='#6368f9'></span>",
    "rainyDay": "<span foreground='#dddba1'></span>",
    "rainyNight": "<span foreground='#6c71fc'></span>",
    "snowyIcyDay": "<span foreground='#cccbb7'></span>",
    "snowyIcyNight": "<span foreground='#9c9ffc'></span>",
    "severe": "<span foreground='#db0202'></span>",
    "default": "",
}

location_id = "f1fc8cc5233b6f8620dda922b1cb97b5cc8781f508c572de2f969ff79c7b293a"

url = "https://weather.com/weather/today/l/" + location_id
html_data = PyQuery(url=url)

temp = html_data("span[data-testid='TemperatureValue']").eq(0).text()
status = html_data("div[data-testid='wxPhrase']").text()
status = f"{status[:16]}.." if len(status) > 17 else status
status_code = html_data("#regionHeader").attr("class").split(" ")[2].split("-")[2]
icon = (
    weather_icons[status_code]
    if status_code in weather_icons
    else weather_icons["default"]
)
temp_feel = html_data(
    "div[data-testid='FeelsLikeSection'] > span > span[data-testid='TemperatureValue']"
).text()
temp_feel_text = f"Feels like {temp_feel}F"
temp_min = (
    html_data("div[data-testid='wxData'] > span[data-testid='TemperatureValue']")
    .eq(0)
    .text()
)
temp_max = (
    html_data("div[data-testid='wxData'] > span[data-testid='TemperatureValue']")
    .eq(1)
    .text()
)
temp_min_max = f"  {temp_min}\t\t  {temp_max}"
wind_speed = html_data("span[data-testid='Wind']").text()
wind_text = f"  {wind_speed}"
humidity = html_data("span[data-testid='PercentageValue']").text()
humidity_text = f"  {humidity}"
visbility = html_data("span[data-testid='VisibilityValue']").text()
visbility_text = f"  {visbility}"
air_quality_index = html_data("text[data-testid='DonutChartValue']").text()
prediction = html_data("section[aria-label='Hourly Forecast']")(
    "div[data-testid='SegmentPrecipPercentage'] > span"
).text()
prediction = prediction.replace("Chance of Rain", "")
prediction = f"\n\n    (hourly) {prediction}" if len(prediction) > 0 else prediction
tooltip_text = str.format(
    "\t\t{}\t\t\n{}\n{}\n{}\n\n{}\n{}\n{}{}",
    f'<span size="xx-large">{temp}</span>',
    f"<big>{icon}</big>",
    f"<big>{status}</big>",
    f"<small>{temp_feel_text}</small>",
    f"<big>{temp_min_max}</big>",
    f"{wind_text}\t{humidity_text}",
    f"{visbility_text}\tAQI {air_quality_index}",
    f"<i>{prediction}</i>",
)
out_data = {
    "text": f"{icon} {temp}",
    "alt": status,
    "tooltip": tooltip_text,
    "class": status_code,
}
print(json.dumps(out_data))
```

</details>

<details>
  <summary><code>wifi-status.sh</code></summary>
  
```sh frame="code" title="~/.config/waybar/scripts/wifi-status.sh
#!/usr/bin/env bash

DEVICE="wlan0"

# Get station info
station_info=$(iwctl station "$DEVICE" show)

# Check connection
ssid=$(echo "$station_info" | grep "Connected network" | sed 's/.*Connected network *//')
if [ -z "$ssid" ]; then
  echo '{"text": "󰤯", "tooltip": "Not connected to any Wi-Fi network"}'
  exit 0
fi
ssid="${ssid#"${ssid%%[![:space:]]*}"}"  # remove leading space
ssid="${ssid%"${ssid##*[![:space:]]}"}"  # remove trailing space

# Parse fields

# Channel info via `iw`
chan=$(iw dev "$DEVICE" info | awk '/channel/ {print $2, "(" $4 ")"}')

# IP and default gateway
ip_address=$(ip addr show "$DEVICE" | grep "inet " | awk '{print $2}' | head -n1)
gateway=$(ip route | grep "^default" | awk '{print $3}')

# Placeholder for security
security="WPA/WPA2/WPA3 (inferred)"

# Signal icon
icon="󰤨"

# Tooltip
tooltip="$ssid"
tooltip+="\nIP Address: $ip_address"
tooltip+="\nRouter:     $gateway"
tooltip+="\nSecurity:   $security"

# Output for bar/status
echo "{\"text\": \"${icon} ${ssid}\", \"tooltip\": \"${tooltip}\"}"

```

</details>

### 4.6. Ghostty Configuration

```ini frame="code" title="~/.config/ghostty/config"
font-family="OpenDyslexicM Nerd Font"
theme="SakuraDreamsDark"
background-opacity=0.8
gtk-titlebar=false
```

```ini frame="code" title="~/.config/ghostty/themes/SakuraDreamsDark"
palette = 0=#26010a
palette = 1=#ff66b2
palette = 2=#ff1493
palette = 3=#db7093
palette = 4=#b03060
palette = 5=#c71585
palette = 6=#d87093
palette = 7=#ff5c8a
palette = 8=#ff85a2
palette = 9=#ff004f
palette = 10=#ff3377
palette = 11=#ff77a8
palette = 12=#ff3b6f
palette = 13=#ff6b94
palette = 14=#ff96b5
palette = 15=#ffe6ee

background = #2a0a18
background-blur-radius = 20
foreground = #ffd1dc
selection-background = #b03060
selection-foreground = #ffe6ee
cursor-color = #ff3b6f
cursor-text = #ffe6ee
```

### 4.7. Discord Configuration

```json frame="code" title="~/.config/discord/settings.json"
{
  "chromiumSwitches": {},
  "IS_MAXIMIZED": false,
  "IS_MINIMIZED": false,
  "WINDOW_BOUNDS": {
    "x": 22,
    "y": 42,
    "width": 1876,
    "height": 1016
  },
  "SKIP_HOST_UPDATE": true,
  "DANGEROUS_ENABLE_DEVTOOLS_ONLY_ENABLE_IF_YOU_KNOW_WHAT_YOURE_DOING": true,
  "MINIMIZE_TO_TRAY": true
}
```

### 4.8. Hyfetch Configuration

There are two config files here.

```json frame="code" title="~/.config/hyfetch.json"
{
  "preset": "transfeminine",
  "mode": "rgb",
  "light_dark": "dark",
  "lightness": 0.81,
  "color_align": {
    "mode": "vertical",
    "custom_colors": [],
    "fore_back": []
  },
  "backend": "neofetch",
  "args": null,
  "distro": null,
  "pride_month_shown": [],
  "pride_month_disable": false,
  "image": "/home/naomi/pics/profile.png"
}
```

```ini frame="code" title="~/.config/neofetch/config.conf"
home_disk_info() {
    df -h | grep '/home$' | awk '{printf "%s: %s/%s (%s)", $NF, $3, $2, $5}'
}

boot_disk_info() {
    df -h | grep '/boot$' | awk '{printf "%s: %s/%s (%s)", $NF, $3, $2, $5}'
}

root_disk_info() {
    df -h | grep '/$' | awk '{printf "%s: %s/%s (%s)", $NF, $3, $2, $5}'
}

print_info() {
    info title
    info underline
    info "OS" distro
    info "├─Kernel" kernel
    info "├─Locale" locale
    info "├─Shell" shell
    prin "├─WM" "$(sway --version)"
    info "├─Terminal" term
    info "└───Terminal Font" term_font
    info "Host" model
    info "├─BIOS" bios
    info "├─CPU" cpu
    info "├─GPU" gpu
    info "├───GPU Driver" gpu_driver
    prin "├─Disk" "$(home_disk_info)"
    prin "├───Root" "$(root_disk_info)"
    prin "├───Boot" "$(boot_disk_info)"
    info "└─Memory" memory
    prin ""
    prin "Programming Languages"
    info underline
    prin "Bash" "$(bash --version | head -n1 | cut -d' ' -f4)"
    prin "Clang" "$(clang --version | head -n1 | cut -d' ' -f3)"
    prin "C++" "$(cpp --version | head -n1 | cut -d' ' -f3)"
    prin "Dart" "$(dart --version | cut -d' ' -f4)"
    prin "└─Flutter" "$(flutter --version | head -n1 | cut -d' ' -f2)"
    prin "Dotnet" "$(dotnet --version)"
    prin "└─C-sharp Compiler" "$(csc -v | head -n1 | cut -d' ' -f7)"
    prin "Go" "$(go version | cut -d' ' -f3 | sed 's/go//')"
    prin "Haskell" "$(ghc --version | head -n1 | cut -d' ' -f8)"
    prin "└─Cabal" "$(cabal --version | head -n1 | cut -d' ' -f3)"
    prin "Java" "$(java -version 2>&1 | head -n1 | cut -d' ' -f2 | sed 's/\"//g')"
    prin "├─Gradle" "$(gradle -v | head -n3 | tail -n1 | cut -d' '  -f2)"
    prin "└─Kotlin" "$(kotlin -version | cut -d' ' -f3)"
    prin "Lua" "$(lua -v | cut -d' ' -f2)"
    prin "PHP" "$(php -v | head -n1 | cut -d' ' -f2)"
    prin "Python" "$(python --version | cut -d' ' -f2)"
    prin "└─PIP" "$(pip --version | cut -d' ' -f2)"
    prin "Node" "$(node -v)"
    prin "├─NPM" "$(npm -v)"
    prin "├─Yarn" "$(yarn -v)"
    prin "└─PNPM" "$(pnpm -v)"
    prin "Ruby" "$(ruby -v | cut -d' ' -f2)"
    prin "Rust" "$(rustc --version | cut -d' ' -f2)"
    prin "├─Rustup" "$(rustup -V | head -n1 | cut -d' ' -f2)"
    prin "└─Cargo" "$(cargo version | cut -d' ' -f2)"
    prin "TypeScript" "$(tsc -v | cut -d' ' -f2)"
    prin "Zig" "$(zig version)"
    prin ""
    prin "Databases"
    info underline
    prin "MongoDB" "$(mongod --version | head -n1 | cut -d' ' -f3)"
    prin "└─Mongo Shell" "$(mongo --version | head -n1 | cut -d' ' -f4)"
    prin "MySQL" "$(mysql --version | cut -d' ' -f4)"
    prin "PostgreSQL" "$(psql --version | cut -d' ' -f3)"
    prin "SQlite" "$(sqlite3 --version | cut -d' ' -f1)"
    prin ""
    prin "Tools"
    info underline
    prin "Browser" "Zen $(zen-browser --version | cut -d' ' -f3)"
    prin "Editor" "Emacs $(emacs --version | head -n1 | cut -d' ' -f3)"
    prin "└─Nano" "$(nano --version | head -n1 | cut -d' '  -f5)"
}
title_fqdn="on"
kernel_shorthand="on"
distro_shorthand="off"
os_arch="on"
memory_percent="on"
memory_unit="gib"
mem_precision=2
shell_path="on"
shell_version="on"
speed_type="bios_limit"
speed_shorthand="on"
cpu_brand="on"
cpu_speed="on"
cpu_cores="logical"
cpu_temp="on"
gpu_brand="on"
gpu_type="all"
refresh_rate="on"
gtk3="on"
bold="on"
underline_enabled="on"
underline_char="-"
separator=":"
block_range=(0 15)
color_blocks="on"
block_width=3
block_height=1
col_offset="auto"
bar_char_elapsed="-"
bar_char_total="="
bar_border="on"
bar_length=15
bar_color_elapsed="distro"
bar_color_total="distro"
memory_display="on"
disk_display="on"
image_backend="kitty"
image_source="/home/naomi/pics/profile.png"
image_loop="off"
thumbnail_dir="${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch"
crop_mode="normal"
crop_offset="center"
image_size="auto"
catimg_size="2"
gap=3
yoffset=0
xoffset=0
background_color=
stdout="off"
```

### 4.9. Wofi Configuration

```css frame="code" title="~/.config/wofi/style.css"
#window {
  background-color: rgba(42, 10, 24, 0.75);
  border-radius: 1rem;
  font-size: 1.2rem;
  font-family: "OpenDyslexicM Nerd Font";
  text-shadow: 0px 0px 5px;
}
#window #outer-box #input {
  background-color: rgba(42, 10, 24, 0.75);
  color: #ffb6c1;
  border: none;
  border-bottom: 1px solid rgba(24, 24, 24, 0.2);
  padding: 0.8rem 1rem;
  font-size: 1.5rem;
  border-radius: 1rem 1rem 0 0;
}
#window #outer-box #input::placeholder {
  color: #ffb6c1;
}
#window #outer-box #input:focus,
#window #outer-box #input:focus-visible,
#window #outer-box #input:active {
  border: none;
  outline: 2px solid transparent;
  outline-offset: 2px;
}
#window #outer-box #scroll #inner-box #entry {
  color: #ffb6c1;
  background-color: rgba(24, 24, 24, 0.1);
  padding: 0.6rem 1rem;
}
#window #outer-box #scroll #inner-box #entry #img {
  width: 1rem;
  margin-right: 0.5rem;
}
#window #outer-box #scroll #inner-box #entry:selected {
  color: #ffb6c1;
  background-color: rgba(255, 255, 255, 0.1);
  outline: none;
}
#text:selected {
  color: rgb(219, 112, 147);
  background-color: #ffb6c1;
}

#img:selected {
  background: none;
}
```

### 4.10. Dunst Configuration

`dunst` manages Naomi's system notifications, and (like many other aspects of her environment) has been highly customised.

```toml frame="code" title="~/.config/dunst/dunstrc"
[global]
  follow=mouse
  width=(0, 750)
  height=(0, 250)
  notification_limit=10
  origin=center
  icon_corner_radius=10
  sort=update
  word_wrap=false
  ellipsize=end
  layer=overlay
  show_age_threshold=-1
  stack_duplicates=false
  corner_radius=10
  mouse_left_click=close_current
  mouse_right_click=do_action, close_current
  mouse_middle_click=none
  font=OpenDyslexicMono 12
  format="<b>%a - %s</b>\n<big>%b</big>"
  background="#2a0a1899"
  foreground="#ffb6c1"
  max_icon_size=32
  icon_corner_radius=10
  frame_color="#ffefef"
```

## 5. CODE EDITORS

These are the code editors Naomi uses.

### 5.1. Emacs Configuration

Naomi uses `emacs` for her main editor.

#### 5.1.1. Emacs Configuration File

```lisp frame="code" title="~/.emacs"
(setq inhibit-startup-message t  ; Don't show the splash screen
      visible-bell t)            ; Flash when the bell rings
(menu-bar-mode -1) ; Turn off menu bar
(scroll-bar-mode -1) ; Turn off scroll bar
(xterm-mouse-mode 1) ; Enable mouse support
(tab-bar-mode 1) ; Enable tab bar

(setq-default indent-tabs-mode nil)
(setq-default tab-width 2)
(setq indent-line-function 'insert-tab)

(setq gc-cons-threshold 100000000) ; Garbage collection threshold of 100MB
(setq read-process-output-max (* 1024 1024)) ; Chunk size for reading files is 1MB

(setf make-backup-files nil) ; Turn off backup files, noisy and useless.
(setf kill-buffer-delete-auto-save-files t) ; Delete autosaves when file is closed.

(setopt display-fill-column-indicator-column 80) ; Line length at 80

(require 'uniquify) ; Uses paths to delinate unique files names as needed
(setq uniquify-buffer-name-style 'forward)

(require 'package) ; This allows us to install packages

(setq package-archives '(("melpa" . "https://melpa.org/packages/")
                        ("org" . "https://orgmode.org/elpa/")
                        ("elpa" . "https://elpa.gnu.org/packages/")))

(package-initialize) ; Prepare packages

(unless (package-installed-p 'use-package)(package-install 'use-package)) ; use-package is better UX than package-install, so make sure we have it
(require 'use-package) ; require it
(setq use-package-always-ensure t) ; So we don't need to :ensure everything

(use-package auto-package-update
  :config
  (setq auto-package-update-delete-old-versions t)
  (setq auto-package-update-hide-results t)
  (auto-package-update-maybe))

(use-package vertico :ensure t :init (vertico-mode)) ; Vertico for tab completion
(use-package marginalia :after vertico :ensure t :init (marginalia-mode)) ; Marginalia for annotations

(use-package savehist :init (savehist-mode)) ; Saves completion history

(setq font-lock-maximum-decoration t) ; MAXIMUM SYNTAX HIGHLIGHTING

;; Line numbers configuration
(global-display-line-numbers-mode 1)  ; Enable line numbers globally
(setq display-line-numbers-type t)

;; Make line numbers stand out a bit
(set-face-background 'line-number-current-line nil)
(set-face-foreground 'line-number-current-line "yellow")

;; Optional: Customise line number format
(setq display-line-numbers-width 4)  ; Reserve space for line numbers
(setq display-line-numbers-widen t)  ; Expand line number space as needed

;; Disable line numbers for some modes where they don't make sense
(dolist (mode '(term-mode-hook
                shell-mode-hook
                treemacs-mode-hook
                eshell-mode-hook))
  (add-hook mode (lambda () (display-line-numbers-mode 0))))

;; Project management
(use-package projectile
  :config
  (projectile-mode +1)
  :bind-keymap ("C-c p" . projectile-command-map))

;; File tree with treemacs
(use-package treemacs
  :bind
  (:map global-map
        ("C-c t" . treemacs))
  :config
  (treemacs-follow-mode t)
  (treemacs-project-follow-mode t))

(use-package treemacs-projectile
  :after (treemacs projectile))

;; LSP Mode base configuration
(use-package lsp-mode
  :init
  (setq lsp-keymap-prefix "C-c l"
        lsp-enable-symbol-highlighting t
        lsp-enable-snippet t
        lsp-enable-indentation t)
  :hook
  ((typescript-mode . lsp)
   (js2-mode . lsp)
   (web-mode . lsp)
   (python-mode . lsp)
   (java-mode . lsp)
   (c++-mode . lsp)
   (c-mode . lsp)
   (csharp-mode . lsp))
  :commands lsp)

;; LSP UI enhancements
(use-package lsp-ui
  :commands lsp-ui-mode
  :config
  (setq lsp-ui-doc-enable t
        lsp-ui-doc-position 'at-point))

(use-package typescript-mode
  :mode ("\\.ts\\'")
  :hook (typescript-mode . (lambda () (setq typescript-indent-level 2))))
(use-package web-mode
  :mode (("\\.tsx\\'" . web-mode)
         ("\\.jsx\\'" . web-mode))
  :config
  (setq web-mode-markup-indent-offset 2
        web-mode-css-indent-offset 2
        web-mode-code-indent-offset 2)
        web-mode-json-indent-offset 2)

;; JavaScript better syntax highlighting
(use-package js2-mode
  :mode "\\.js\\'")
(setq js-indent-level 2)
(setq lsp-eslint-auto-fix-on-save t)

(use-package csharp-mode
  :config
  (add-to-list 'auto-mode-alist '("\\.cs\\'" . csharp-mode)))

(use-package ccls
  :hook ((c-mode c++-mode) . (lambda () (require 'ccls) (lsp))))

(use-package lsp-java
  :config (add-hook 'java-mode-hook 'lsp))

(use-package kotlin-mode)

(use-package python-mode
  :hook (python-mode . (lambda ()
                        (require 'lsp-pyright)
                        (lsp))))
(use-package lsp-pyright
  :ensure t)

(use-package markdown-mode
  :mode (("README\\.md\\'" . gfm-mode)
         ("\\.md\\'" . markdown-mode)
         ("\\.mdx\\'" . markdown-mode))
  :init (setq markdown-command "multimarkdown"))

(use-package git-gutter
  :config
  (global-git-gutter-mode +1))

(use-package hl-todo
  :config
  (setq hl-todo-keyword-faces
        '(("TODO"   . "#FF0000")
          ("FIXME"  . "#FF0000")
          ("DEBUG"  . "#A020F0")
          ("GOTCHA" . "#FF4500")
          ("STUB"   . "#1E90FF")))
  (global-hl-todo-mode))

(use-package prisma-mode
  :vc (prisma-mode :url "https://github.com/pimeys/emacs-prisma-mode"))

(use-package elcord)
  (elcord-mode)

(use-package corfu :ensure t :hook ((prog-mode . corfu-mode))) ; Drop-down completions

(defun eslint-fix-file ()
  (interactive)
  (message "eslint --fixing the file" (buffer-file-name))
  (shell-command (concat "pnpm eslint --fix --max-warnings 0 " (buffer-file-name))))

(add-hook 'js2-mode-hook
          (lambda ()
            (add-hook 'after-save-hook #'eslint-fix-file)))

(add-hook 'typescript-mode-hook
          (lambda ()
            (add-hook 'after-save-hook #'eslint-fix-file)))

(add-hook 'emacs-startup-hook 'treemacs)

(add-hook 'prog-mode-hook #'display-fill-column-indicator-mode) ; Show line length ruler

(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(package-selected-packages nil)
 '(package-vc-selected-packages
   '((prisma-mode :url "https://github.com/pimeys/emacs-prisma-mode"))))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 )
```

## 6. LIMITATION OF LIABILITY AND DISCLAIMERS

### 6.1. Reference to Comprehensive Liability Framework

**IMPORTANT: Comprehensive liability limitations, damage exclusions, and maximum liability caps are set forth in our Limitation of Liability and Indemnification Policy, which is incorporated herein by reference.**

### 6.2. Development Environment Disclaimer

This Documentation is provided for informational purposes only. Our organisation:

- Does not require contributors to replicate this exact development environment
- Does not guarantee that replicating these configurations will result in identical development experiences
- Does not provide technical support for setting up or maintaining these configurations
- Reserves the right to modify or update this Documentation at any time without prior notice

### 6.3. Technical Accuracy Disclaimer

While we strive to maintain accurate and current information in this Documentation, technical specifications, software versions, and configuration details change frequently. Contributors are responsible for:

- Verifying current software versions and compatibility
- Adapting configurations to their specific system requirements
- Ensuring their development environment meets project requirements
- Consulting project-specific documentation for additional requirements

### 6.4. Third-Party Tools and Services

This Documentation references various third-party tools, services, and software packages. Our organisation:

- Does not endorse or guarantee the functionality, security, or availability of third-party tools
- Is not responsible for issues arising from the use of third-party tools or services
- Does not provide support for third-party tools beyond what is necessary for project functionality
- Recommends that contributors review third-party licenses, terms of service, and privacy policies

## 7. CONCLUSION

This Development Environment Documentation provides comprehensive information about the primary development environment used within our organisation. While contributors are not required to replicate this exact environment, this information serves as a valuable reference for understanding our development context, tooling preferences, and configuration standards.

All contributors are encouraged to use development environments that meet project requirements and align with their personal preferences and constraints. Questions about development environment setup or compatibility should be directed to project maintainers through appropriate communication channels.

---

*For questions about development environment requirements or to suggest improvements, please contact project maintainers through the designated channels outlined in our Contributor Covenant.*
