# DarkForge Package Repository 124 package definitions for the complete DarkForge Linux system. Each package is a TOML file describing how to download, build, and install a piece of software. This is a standalone repository used as a git submodule by the main DarkForge project. It contains only package definitions (TOML files) — no build scripts or binaries. **Standalone repo:** `git@git.dannyhaslund.dk:danny8632/repos.git` ## Repository Layout ``` repos/ ├── core/ 67 packages — base system (toolchain, kernel, utilities, system daemons) ├── extra/ 26 packages — libraries, frameworks, drivers ├── desktop/ 19 packages — Wayland compositor, terminals, applications └── gaming/ 12 packages — Steam, Wine, Proton, game tools ``` ## Package Format Each package lives in `//.toml`. See the dpack README for the full format specification. Example (`core/zlib/zlib.toml`): ```toml [package] name = "zlib" version = "1.3.1" description = "Compression library implementing the deflate algorithm" url = "https://zlib.net/" license = "zlib" [source] url = "https://zlib.net/zlib-${version}.tar.xz" sha256 = "38ef96b8dfe510d42707d9c781877914792541133e1870841463bfa73f883e32" [dependencies] run = [] build = ["gcc", "make"] [build] configure = "./configure --prefix=/usr" make = "make" install = "make DESTDIR=${PKG} install" ``` ## core/ — Base System (67 packages) The complete base system needed to boot to a shell: **Toolchain:** gcc, glibc, binutils, gmp, mpfr, mpc, linux (kernel) **Utilities:** coreutils, util-linux, bash, sed, grep, gawk, findutils, diffutils, tar, gzip, xz, zstd, bzip2, ncurses, readline, file, less, make, patch, m4 **System:** eudev, sysvinit, dbus, dhcpcd, shadow, procps-ng, e2fsprogs, kmod, iproute2, kbd, amd-microcode **Dev tools:** cmake, meson, ninja, python, perl, autoconf, automake, libtool, bison, flex, gettext, texinfo, pkg-config, gperf **Libraries:** openssl, curl, git, zlib, expat, libffi, libxml2, pcre2, glib, libmnl, libpipeline, bc **Docs:** groff, man-db, man-pages ## extra/ — Libraries and Frameworks (26 packages) Libraries needed by the desktop and gaming stack: **Audio:** pipewire, wireplumber **Graphics:** mesa, vulkan-headers, vulkan-loader, vulkan-tools, libdrm, nvidia-open **Fonts:** fontconfig, freetype, harfbuzz, libpng **UI:** pango, cairo, pixman, qt6-base, lxqt-policykit **Security:** polkit, duktape, gnutls, nettle, libtasn1, p11-kit **Other:** seatd, lua, rust ## desktop/ — Wayland Desktop (19 packages) The complete desktop environment: **Wayland:** wayland, wayland-protocols, wlroots, xwayland **Compositor:** dwl (dynamic window manager for Wayland, dwm-like) **Input:** libinput, libevdev, mtdev, libxkbcommon, xkeyboard-config **Apps:** foot (terminal), fuzzel (launcher), firefox, zsh, wezterm, freecad **Tools:** wl-clipboard, grim (screenshots), slurp (region select) ## gaming/ — Gaming Stack (12 packages) Everything needed for gaming on Linux: **Platform:** steam, wine, proton-ge, protontricks, winetricks **Translation:** dxvk (D3D9/10/11→Vulkan), vkd3d-proton (D3D12→Vulkan) **Tools:** gamemode, mangohud, sdl2 **Runtime:** openjdk (for PrismLauncher/Minecraft), prismlauncher ## Adding a New Package 1. Create the directory: `mkdir -p /` 2. Create the definition: `//.toml` 3. Fill in all sections: `[package]`, `[source]`, `[dependencies]`, `[build]` 4. Compute the SHA256: `sha256sum ` 5. Test: `dpack install ` Alternatively, convert from CRUX or Gentoo: ```bash dpack convert /path/to/Pkgfile -o repos/core/foo/foo.toml dpack convert /path/to/foo-1.0.ebuild -o repos/extra/foo/foo.toml ``` ## SHA256 Checksums Most package definitions currently have placeholder checksums (`aaa...`). These must be populated with real checksums before building. To compute them: ```bash for pkg in core/*/; do name=$(basename "$pkg") url=$(grep '^url = ' "$pkg/${name}.toml" | head -1 | sed 's/url = "//;s/"$//' | sed "s/\${version}/$(grep '^version' "$pkg/${name}.toml" | head -1 | sed 's/version = "//;s/"$//')/") echo "Downloading $name from $url..." wget -q "$url" -O "/tmp/${name}.tar" && sha256sum "/tmp/${name}.tar" done ``` ## Repository ``` git@git.dannyhaslund.dk:danny8632/darkforge.git ``` Package definitions live in `src/repos/` in the main DarkForge repo.