Files
repos/README.md
Danny b83ae5fcd9 Add git source docs, weekly FreeCAD, update_check URLs
- FreeCAD updated to weekly-2026.03.19 development builds
  Source: github.com/FreeCAD/FreeCAD/releases (weekly tags)
- dwl package: added update_check URL and git source comments
- README: added standalone repo notice and submodule reference

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 11:58:05 +01:00

4.3 KiB

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 <repo>/<name>/<name>.toml. See the dpack README for the full format specification.

Example (core/zlib/zlib.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 <repo>/<name>
  2. Create the definition: <repo>/<name>/<name>.toml
  3. Fill in all sections: [package], [source], [dependencies], [build]
  4. Compute the SHA256: sha256sum <tarball>
  5. Test: dpack install <name>

Alternatively, convert from CRUX or Gentoo:

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:

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.