Software
Installing software
Software comes from two places, and the Store shows both in one window:
- Flathub, for desktop applications. Each runs in a sandbox, and is installed for your account alone, so installing one needs no password.
- Alpine's packages, for everything else: command-line tools, libraries, system software. Installing one changes the system, and asks for an administrator's password.
The Store
Install › Store in the menu, or search the menu for "store". Search for an application, open its page, and install it. The same window lists what is installed and what has updates.
alpymist-store # open the store
alpymist-store installed # open at what is installed
alpymist-store updates # open at what has updates
alpymist-store search krita # print what a search finds
alpymist-store install flathub org.kde.krita
alpymist-store install alpine htop
alpymist-store remove flathub org.kde.krita
alpymist-store update # update everything
The sources are flathub and alpine.
The Install button on flathub.org works too: the file it downloads opens the Store at that application's page.
Without the Store
The menu has the same, by name, in a terminal:
| Entry | Does |
|---|---|
| Install › Application from Flathub | Searches Flathub for what you type and installs your choice |
| Install › Alpine package | doas apk add the package you name |
| Remove › Flatpak application | Lists yours and removes the one you name |
| Remove › Alpine package | doas apk del the package you name |
And the tools themselves work as they do anywhere:
flatpak install --user flathub org.gimp.GIMP
flatpak uninstall --user org.gimp.GIMP
doas apk add htop
doas apk del htop
apk search -v editor
What runs and what does not
Alpine uses musl rather than glibc as its C library, so software built only for glibc does not run directly on it. Most such desktop software, including proprietary applications, is on Flathub, where it brings its own libraries and runs in a sandbox. Look there first for anything that is not an Alpine package.
A Flathub application built for glibc
Inside its sandbox an application has the glibc it was built for. What it does not have is the rest of your system, and a few applications reach for it: an editor wants your shell and your compilers, and one or two start themselves outside the sandbox altogether. Outside there is no glibc, so that is where they fail.
It does not start
Run it from a terminal, to see what it says:
flatpak run dev.zed.Zed
"No such file or directory" about a program that is plainly there means it
was started outside the sandbox and found no glibc to run on. Whether an
application is able to do that shows in its permissions, as
org.freedesktop.Flatpak=talk:
flatpak info --show-permissions dev.zed.Zed
There is no switch that keeps every application inside: stepping out is each
application's own doing, and so is the setting that stops it, where it has
one. Its page on Flathub or its own documentation names it. It is set for
good with an override, and taken back with --reset:
flatpak override --user --env=ZED_FLATPAK_NO_ESCAPE=1 dev.zed.Zed
flatpak override --user --show dev.zed.Zed
flatpak override --user --reset dev.zed.Zed
Zed is the one the Store knows of, and it sets this as it installs Zed.
Installed with flatpak install, Zed needs the first line above, once.
Its terminal is not your system
An editor that stays in its sandbox opens the sandbox's shell: no apk, no
doas, none of what you have installed. Zed and Visual Studio Code both
carry host-spawn, which starts your own shell outside. The Store writes
this for Zed when Zed has no settings yet; in a settings.json you already
have, add it yourself:
{
"terminal": {
"shell": {
"with_arguments": { "program": "host-spawn", "args": [] }
}
}
}
In Visual Studio Code's settings it is a terminal profile:
{
"terminal.integrated.profiles.linux": {
"host": { "path": "/app/bin/host-spawn" }
},
"terminal.integrated.defaultProfile.linux": "host"
}
Its language servers do not see your compilers
What an editor starts by itself, a language server or a build, still runs
inside, and the cargo or go installed from Alpine is built for musl and
does not run there. Those come from Flathub too, as extensions to the
sandbox's own system: flatpak search org.freedesktop.Sdk.Extension lists
them, and the editor's page on Flathub says how it is told to use one. When
that is more than the work is worth, an editor packaged for Alpine has
neither problem, and nor has one in
a box of another distribution.
Which editor, and where
| Editor | From Alpine | From Flathub | In a box |
|---|---|---|---|
| Neovim, Vim, Helix, Emacs, Kakoune, micro | Yes | ||
| Kate, GNOME Builder, Geany, Lapce | Yes | ||
| Visual Studio Code | com.visualstudio.code |
Microsoft's .deb |
|
| VSCodium | com.vscodium.codium |
Its .deb |
|
| Zed | dev.zed.Zed |
Its tarball | |
| JetBrains' IDEs | One each, under com.jetbrains |
Its tarball, or Toolbox | |
| Sublime Text | com.sublimehq.SublimeText |
Its apt repository |
An editor from Alpine runs on the system itself and sees everything on it:
nothing on this page applies to it, with one exception. An editor that
downloads language servers for you, as Neovim does with Mason, downloads
ones built for glibc, and they do not run. Install the server from Alpine
instead (rust-analyzer, gopls, clang22-extra-tools for clangd, and many
more are packages) and point the editor at it.
An editor from Flathub is right for reading and editing, and takes the steps above before it builds anything. For work that is mostly building, running and debugging software for glibc, put the editor in a box with its compilers.
Teaching the Store another
What the Store does for Zed is written in store.toml, not in the Store, so
an application of your own choosing is a few lines in your copy of it
(alpymist-store --print-config prints the one in use):
[[source.adjust]]
app = "org.example.Editor"
env = { EXAMPLE_STAY_IN_SANDBOX = "1" }
# Optional: a file under ~/.var/app/org.example.Editor, written when the
# application is installed and no such file is there.
file = "config/example/settings.json"
contents = '{}'
It goes under the [[source]] whose kind is flatpak, and is done once, as
the Store installs the application; one already installed is not touched.
A box of another distribution
For writing software that is built for glibc, there is a third place besides Alpine and Flathub: a whole other distribution, Debian or Fedora or Ubuntu, running in a container with your home directory in it. Its editor is the one its vendor builds, its compilers and language servers sit beside it, and all of it sees your files. Distrobox is the tool, on top of podman.
Alpymist does not install any of this, and nothing in Settings or the Store sets it up: it is a gigabyte or two and a container runtime, for the people who need it. What follows was tried on Alpymist 0.3.7 in October 2026, with Debian 13.
What a box is, and is not
- It is not a sandbox. A box has your home directory, your Wayland session and your graphics card. A program in it can read and change everything you can. Software you would not run on the system itself does not become safe in a box; Flathub's sandbox is the place for that.
- It is not root. Podman runs as you, with no service in the background
and nothing listening.
sudoin a box makes you root in the box, which outside it is still you. - Its software is not Alpine's. What you install in a box comes from that distribution, and the box itself from a registry on the internet. Neither is checked by Alpymist.
Setting it up
Four things, once:
doas apk add podman distrobox
echo "$USER:100000:65536" | doas tee /etc/subuid /etc/subgid
doas rc-update add cgroups
doas rc-service cgroups start
The second gives your account a range of user ids that belong to nobody, which is how a box has users of its own without being root; without it no image can be unpacked. The third and fourth mount the kernel's control groups, now and at every boot.
Making a box and using it
distrobox create --name dev --image docker.io/library/debian:stable
distrobox enter dev
The first entry takes a minute while the box is made ready. After that you
are in Debian, as yourself, in your own home directory, in your own shell:
apt installs, and a graphical program started there opens on your desktop
and draws with your graphics card.
sudo apt install cargo # in the box: Debian's packages
distrobox-host-exec apk info # in the box: a command on Alpymist
distrobox enter dev -- cargo build # from outside: one command in the box
An editor in a box
Install the vendor's own build for Linux, inside the box. Its terminal is
then the box's, and its language servers find the compilers installed there.
Its settings and extensions are kept in your home directory, apart from
those of the same editor from Flathub, which are under ~/.var/app.
Mind where it is installed. Your home directory is shared, so anything put
under ~/.local by a vendor's install script leaves a program in your path,
and an entry in your menu, that cannot run outside the box. A package of the
box's distribution, or a directory of the box's own such as /opt, has
neither problem.
Visual Studio Code is a package for Debian. Installing it asks whether the box should follow Microsoft's repository for its updates:
curl -fL -o /tmp/code.deb \
"https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64"
sudo apt install /tmp/code.deb
distrobox-export --app code
distrobox-export puts it in your menu, started in the box; with --delete
it takes it out again. VSCodium is installed the same way from the .deb on
its releases page, and Sublime Text from its own apt repository.
Zed comes as a tarball and an install script. The script writes to
~/.local, and the menu entry it leaves takes the place of the one the
Store's Zed has, so unpack the tarball into /opt instead:
curl -fL -o /tmp/zed.tar.gz \
"https://cloud.zed.dev/releases/stable/latest/download?asset=zed&arch=x86_64&os=linux"
sudo tar -xzf /tmp/zed.tar.gz -C /opt
sudo apt install libvulkan1 mesa-vulkan-drivers libxkbcommon-x11-0 libasound2t64
/opt/zed.app/bin/zed
JetBrains' IDEs are tarballs too: unpack one into /opt and start its
bin/idea.sh, or the one named for the product. They bring their own Java.
Compilers are the box's as well. Debian's are older than Alpine's: for Rust,
install rustup in the box and let it bring the toolchain a project asks
for.
Taking it away
distrobox rm --force dev # one box, and its entry in the menu
podman system reset # every box and image
doas apk del podman distrobox
doas rc-update del cgroups
doas rm /etc/subuid /etc/subgid
Files a box wrote in your home directory are yours and stay.
Software that is neither
A few things come from their own vendor, because nobody else may distribute them. Alpymist does not ship them; it offers to fetch each from its vendor when you ask, says what it is about to do, and can remove it again:
| Entry | What |
|---|---|
| Install › Jottacloud | Jottacloud's backup client, from Jottacloud |
| Install › Claude Code, Codex, Gemini CLI | The AI vendors' command-line tools; see AI |
Each has an entry under Remove as well.
Applications in the background
An application with a tray icon shows it behind the arrow on the bar, which slides open under the pointer.