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

140 lines
4.3 KiB
Markdown

# 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`):
```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:
```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.