Documentation
Fir is early enough that most of this page describes intentions rather than behaviour. Anything marked draft is a proposal and will change.
The short version
- Source-based. Packages are plain shell recipes, built in a clean chroot.
- Small. A curated tree, one version per package, no resolver and no use flags.
- Premade rice. The desktop ships configured. There is no configuration language between you and the files.
- OpenRC. No systemd, and no plans to acquire it.
How packages work (draft)
A recipe is a shell script with a name, a version, a source and two functions. It builds into a staging directory, and the resulting package carries a manifest of the files it installed. That manifest is what makes removal and upgrades possible later.
# main/base/fir-base/recipe
name=fir-base
version=1.0.0
source=https://firproject.org/pkgs/fir-base-1.0.0.tar.gz
sha256=...
deps="openrc"
build() {
./configure --prefix=/usr
make
}
install() {
make DESTDIR="$DESTDIR" install
}
fir-build builds a recipe and produces a package. fir-install installs or removes one using the manifest. Both are drafts, the names may change.
Configuration (draft)
There is nothing to declare. System files are edited by hand, the way they are on any small distribution, and the desktop is a set of dotfiles you can read. Fir does not try to derive the system from a description of it.
Status
| Piece | State |
|---|---|
| build tooling | not started |
| package tree | not started |
| installer and images | not started |
| firwm | in progress |
| this website | in progress |
Reading
Fir borrows ideas from KISS Linux, CRUX, Alpine and Gentoo.