Initial commit: DarkForge package repository (124 packages)
Package definitions for the complete DarkForge Linux system: - core/ (67): base system, toolchain, kernel, utilities, dev tools - extra/ (26): libraries, frameworks, drivers (nvidia-open, pipewire, mesa) - desktop/ (19): Wayland stack, dwl compositor, terminals, applications - gaming/ (12): Steam, Wine, Proton, gamemode, mangohud, PrismLauncher Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
135
README.md
Normal file
135
README.md
Normal file
@@ -0,0 +1,135 @@
|
||||
# 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.
|
||||
|
||||
## 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.
|
||||
Reference in New Issue
Block a user