2025 / 12 / 05
Omarchy tweaks

Just some little tweaks here and there

linux
omarchy

After installing Omarchy I usually do:

Configs

DNS

Setup -> DNS -> Cloudflare

Consult your DNS setup with:

resolvectl status

.bashrc

Add to ~/.bashrc:

# CUSTOM
alias la="ls -lahF"

export PATH=~/bin:$PATH
export ERL_AFLAGS="-kernel shell_history enabled"

waybar

I change these defaults in ~/.config/waybar/config.jsonc:

{
  // ...
  "persistent-workspaces": {
    "1": [],
    "2": [],
    "3": [],
    "4": [],
    "5": [],
    "6": [],
    "7": [],
    "8": [],
    "9": [],
    "10": []
  },
  // ...
  "clock": {
    "interval": 1,
    "format": "☀️ {:L%A  W.%V  📅 %Y / %m / %d  🕑 %H:%M:%S}",
    // ...
  },
  // ...
  "network": {
    // ...
    "format-wifi": "{icon}  {ipaddr} ({ifname})",
    "format-ethernet": "󰀂  {ipaddr} ({ifname})",
    // ...
  }
}

To immediately see your changes:

killall waybar && waybar &

Enable fstrim for your encrypted SSD

If you see a fstrim: /: the discard operation is not supported when running:

sudo fstrim / -v

Update your /etc/default/limine file and add :allow-discards just after some-id:root, like this:

KERNEL_CMDLINE[default]="cryptdevice=PARTUUID=some-large-uuid:root:allow-discards ...

After updating the limine file you should run:

sudo limine-update

Enable it with:

sudo systemctl enable --now fstrim.timer

Restart your system now.

Software

Update system

omarchy-update

Code editor

Zed

Install -> Editor -> Zed

If you have an AMD graphics card, you might need:

sudo pacman -S vulkan-radeon

Extensions:

  • Catppuccin
  • Catppuccin Icons
  • Dockerfile
  • Elixir
  • Emmet
  • Git Firefly
  • HTML
  • SQL
  • Vue
  • Zig

My ~/.config/zed/settings.json:

{
  "autosave": "on_window_change",
  "buffer_font_size": 14,
  "buffer_line_height": "comfortable",
  "cursor_blink": true,
  "cursor_shape": "bar",
  "file_types": {
    "HTML": ["*.svg"],
  },
  "icon_theme": "Catppuccin Mocha",
  "indent_guides": {
    "coloring": "indent_aware",
  },
  "languages": {
    "CSS": {
      "language_servers": [
        "tailwindcss-intellisense-css",
        "!vscode-css-language-server",
        "...",
      ],
    },
    "Elixir": {
      "language_servers": [
        "expert",
        "!elixir-ls",
        "!next-ls",
        "!lexical",
        "...",
      ],
    },
    "HEEX": {
      "language_servers": [
        "expert",
        "!elixir-ls",
        "!next-ls",
        "!lexical",
        "...",
      ],
    },
  },
  "prettier": {
    // "plugins": ["prettier-plugin-tailwindcss"],
    "semi": false,
    "singleQuote": false,
  },
  // "lsp": {
  //   "vscode-css-language-server": {
  //     "settings": {
  //       "css": {
  //         "lint": {
  //           "unknownAtRules": "ignore",
  //         },
  //       },
  //     },
  //   },
  // },
  "show_whitespaces": "all",
  "soft_wrap": "editor_width",
  "ui_font_size": 15,
  "tab_size": 2,
  "tabs": {
    "file_icons": true,
  },
  "theme": {
    "mode": "dark",
    "light": "Catppuccin Latte",
    "dark": "Catppuccin Mocha",
  },
}

Desktop apps

This is the list of software I usually require at one point or another:

# sudo pacman -S nethogs transmission-gtk nmap \
sudo pacman -S transmission-gtk nmap \
darktable gimp inkscape krita godot \
blender calibre obs-studio shotcut \
colordiff python-gobject python-xdg yt-dlp \
qgis python-gdal python-owslib python-psycopg2 python-pygments \
ansible inotify-tools jq \
simple-scan screen audacity base-devel \
libvips openslide firefox

And these I don’t use:

sudo pacman -Rns opencode 1password-cli 1password-beta

Install erlang, elixir, node with mise

To list which languages are currently installed:

mise ls

Let’s install erlang:

mise ls-remote erlang
# pick a version you want, for example:
mise use erlang@28.3.1 --global

Let’s install elixir:

mise ls-remote elixir
# pick a version you want, for example:
mise use elixir@1.19.5-otp-28 --global

mix local.hex
mix local.rebar

mix archive.install hex phx_new
mix archive.install hex nerves_bootstrap

Let’s install node:

mise ls-remote node
# pick a version you want, for example:
mise use node@25.3.0 --global

npm i -g npm
npm i -g pnpm

Let’s install bun:

mise ls-remote bun
# pick a version you want, for example:
mise use bun@1.3.6 --global

Let’s install go:

mise ls-remote go
# pick a version you want, for example:
mise use go@1.25.6 --global

Install PostgreSQL

sudo pacman -S postgresql postgresql-libs postgis

sudo -i -u postgres
initdb --locale $LANG -E UTF8 -D '/var/lib/postgres/data/'
exit

To run the server on computer start:

sudo systemctl enable --now postgresql.service

Misc

AI tools

OpenCode

Let’s install OpenCode with bun:

bun install -g opencode-ai@latest

Then add the global bin folder to $PATH in ~/.bashrc:

export PATH="~/.cache/.bun/bin:$PATH"

Tweak the default config in ~/.config/opencode/opencode.json so it doesn’t auto-update, and add a couple of useful MCPs:

{
  // ...
  "autoupdate": "notify",
  "mcp": {
    "chrome-devtools": {
      "type": "local",
      "command": ["npx", "chrome-devtools-mcp@latest", "--executablePath=/usr/bin/chromium", "--isolated=true"],
      "enabled": false
    },
    "context7": {
      "type": "local",
      "command": ["npx", "-y", "@upstash/context7-mcp@latest"]
    },
    "playwright": {
      "type": "local",
      "command": ["npx", "@playwright/mcp@latest", "--executable-path=/usr/bin/chromium"],
      "enabled": false
    }
  }
}

Fabric

Let’s install Fabric:

# Install Fabric directly from the repo
go install github.com/danielmiessler/fabric/cmd/fabric@latest

# Run the setup to set up your directories and keys
fabric --setup

GPU related

For Nvidia:

sudo pacman -S nvtop nvidia-utils

For AMD:

sudo pacman -S vulkan-radeon

ufw

If you’d like to quickly reset UFW rules:

sudo ufw reset
sudo ufw enable

Idle (desktop)

Default values in ~/.config/hypr/hypridle.conf seem too short for a desktop:

listener {
    timeout = 1800                                            # 30 min
    on-timeout = pidof hyprlock || omarchy-launch-screensaver # start screensaver (if we haven't locked already)
}

listener {
    timeout = 3600                     # 1 hr
    on-timeout = loginctl lock-session # lock screen when timeout has passed
}

listener {
    timeout = 5400                                           # 1.5 hr
    on-timeout = hyprctl dispatch dpms off                   # screen off when timeout has passed
    on-resume = hyprctl dispatch dpms on && brightnessctl -r # screen on when activity is detected
}

Two monitors (desktop)

Check the monitors attached to your computer with:

hyprctl monitors

For my two monitor setup in ~/.config/hypr/monitors.conf:

# ...
# Comment everything above this...

# CUSTOM
monitor=HDMI-A-2,3840x2160@60,0x0,1.5
monitor=HDMI-A-1,3840x2160@60,2560x-720,1.5,transform,3

workspace=1,monitor:HDMI-A-2
workspace=2,monitor:HDMI-A-2
workspace=3,monitor:HDMI-A-2
workspace=4,monitor:HDMI-A-2
workspace=5,monitor:HDMI-A-2

workspace=6,monitor:HDMI-A-1
workspace=7,monitor:HDMI-A-1
workspace=8,monitor:HDMI-A-1
workspace=9,monitor:HDMI-A-1
workspace=10,monitor:HDMI-A-1

Fonts

To add more fonts to your system, drop them in: ~/.local/share/fonts.

Laptop

Let’s upgrade our touchpad functionality a bit.
In ~/.config/hypr/input.conf:

gesture = 3, horizontal, workspace
gesture = 3, up, fullscreen

gestures {
  workspace_swipe_invert = false
}