Software and Settings
The desktop
GNOME with the Tiling Shell extension, set up as a three-column layout that works especially well on ultrawide monitors. The Tiling Shell icon in the top bar changes the layout. Super + arrow keys move windows between tiles.
The Tailscale GNOME extension shows your tailnet status in the top bar.
Where software comes from
| Source | Defined in | Examples |
|---|---|---|
| pacman | packages.conf |
GNOME, Neovim, tmux, Go, Rust, Node, Docker, Tailscale, Element, LibreOffice, Ghostty, kitty, opencode |
| AUR (via yay) | packages.conf |
Helium browser, Winboat |
| Flathub | install-flatpaks.sh |
Chrome, Firefox, Brave, Zen, VS Code, VSCodium, Signal, Telegram, Thunderbird, Obsidian, Logseq, OBS, Kdenlive, Inkscape, Zoom, Trayscale, LocalSend, Boxes and more |
| mise | install-mise-ruby-rails.sh |
Ruby and Rails |
| pipx | packages.conf (PIPX) |
terrahour |
| Their own installers | claude.sh, sandbox/setup.sh |
Claude Code, Hermes Agent |
update installs anything newly added to these lists, and removes anything listed in remove-packages.conf.
To install more apps yourself, use yay -S <package> or browse https://flathub.org. To suggest something for everyone, open an issue or pull request.
Shell
~/.bashrc sources ~/.local/share/coredesktop/shell/bashrc, which sets up:
- the starship prompt (your own
~/.config/starship.tomlwins if you have one) - zoxide:
z <part of a path>jumps to a directory you've used before - fzf: Ctrl-R searches history, Ctrl-T inserts a file path, Alt-C changes directory
- eza for
ls,ll,laandlt - aliases:
g(git),lg(lazygit),d(docker),ld(lazydocker),gcm,gcam,gcad,..,...,ff(fuzzy-find with preview),eff(open the result in your editor) - functions:
n: open Neovimopen: open a file or URL in its default appcompressanddecompress: make and unpack.tar.gzarchivesfip,dipandlip: start, stop and list SSH port forwardsgaandgd: create and remove git worktrees
Anything you add to ~/.bashrc after the CoreDesktop line overrides it.
Networking
- mDNS: reach other machines on your LAN as
<name>.local, and SSH to this one the same way. If systemd-resolved is enabled, the installer applies a fix so mDNS still works. For the details, seefixmdns.shand the Arch wiki. - Tailscale: installed and running.
configure corejoins it to your Core's network. - Printing: CUPS is enabled.
Firewall
ufw is on. Incoming connections are blocked, except:
- SSH (22)
- mDNS (5353/udp)
- LocalSend (53317)
- anything arriving over Tailscale
ufw-docker is installed too, because otherwise ports published by Docker containers get around ufw.
sudo ufw status # show the rules
sudo ufw allow <port>/tcp # open a port, e.g. for a dev server
sudo ufw-docker allow <container> <port> # let a container's port through
Docker
Docker is installed and running, and you're in the docker group, which takes effect from your next login.
GPU drivers
The installer adds the Vulkan driver for Intel and AMD GPUs. For NVIDIA GPUs, if archinstall's proprietary driver wasn't chosen, it installs NVIDIA's driver:
- the open kernel modules for GTX 16xx / RTX 20xx and newer
- the 580xx legacy driver for older cards, back to the GTX 900 series
System defaults
- SSH connections notice a dropped link within a minute instead of hanging. Override this per host in
~/.ssh/config. - Logins allow 10 wrong passwords before locking the account for 2 minutes. Arch's default is 3 tries, then 10 minutes.
- Shutdown waits at most 10 seconds for a service that won't stop, instead of 90.
- If memory runs out, systemd-oomd closes the app causing it instead of freezing the whole desktop.
- Boot doesn't wait for the network.
- Commands run over SSH (
ssh <machine> <command>) can find tools in~/.local/binand mise.
Backups
Migrate is installed as migrate, and borg and Déjà Dup are available too.
Using CoreDesktop
Working on CoreDesktop