Monorepo for Aesthetic.Computer
aesthetic.computer
1## AC Native OS — Reproducible Build Container (make-clean)
2##
3## Usage (from repo root):
4## docker build -t ac-os-builder -f fedac/native/Dockerfile.builder .
5## docker run --rm -v $(pwd)/out:/out ac-os-builder
6##
7## The source is COPY'd into the image — no bind mounts needed.
8## Output: /out/vmlinuz + /out/build.json
9
10FROM fedora:43
11
12# ── All packages needed for ac-native + kernel build ──
13RUN dnf install -y --setopt=install_weak_deps=False \
14 gcc ccache make cpio lz4 bc perl flex bison diffutils \
15 elfutils-libelf-devel openssl-devel \
16 gnu-efi-devel \
17 curl jq git tar xz findutils pkgconf-pkg-config zstd xorriso \
18 ca-certificates \
19 alsa-lib-devel libdrm-devel flite-devel SDL3-devel \
20 ffmpeg-free-devel \
21 wpa_supplicant dhcp-client iw \
22 iwlwifi-mvm-firmware wireless-regdb \
23 linux-firmware linux-firmware-whence \
24 intel-gpu-firmware \
25 busybox mtools dosfstools hfsplus-tools hfsutils gdisk parted \
26 mesa-libgbm mesa-libgbm-devel \
27 mesa-libEGL mesa-libEGL-devel \
28 mesa-libGLES mesa-libGLES-devel \
29 mesa-dri-drivers \
30 alsa-lib alsa-firmware alsa-ucm \
31 openssl nodejs npm dropbear efibootmgr \
32 sbcl \
33 && dnf clean all && rm -rf /var/cache/dnf
34
35# ── Install Quicklisp + CL dependencies for Lisp build variant ──
36RUN mkdir -p /cache \
37 && curl -sfo /tmp/ql.lisp https://beta.quicklisp.org/quicklisp.lisp \
38 && sbcl --non-interactive \
39 --load /tmp/ql.lisp \
40 --eval '(quicklisp-quickstart:install :path "/opt/quicklisp/")' \
41 --eval '(ql:quickload (list :cffi :bordeaux-threads :alexandria :swank))' \
42 && rm /tmp/ql.lisp
43
44# ── Pre-download QuickJS + Linux kernel source ──
45RUN mkdir -p /cache && cd /cache \
46 && curl -sL https://bellard.org/quickjs/quickjs-2024-01-13.tar.xz | tar xJ \
47 && ln -sf quickjs-2024-01-13 quickjs \
48 && curl -sL https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.19.9.tar.xz | tar xJ \
49 && echo "=== Cached: QuickJS + Linux 6.19.9 ==="
50
51# ── Install esbuild for KidLisp bundling ──
52RUN npm install -g esbuild
53
54# ── Install Claude Code CLI (native binary) ──
55RUN curl -fsSL https://claude.ai/install.sh | bash 2>/dev/null \
56 && CLAUDE_BIN=$(find /root/.local/share/claude/versions -type f 2>/dev/null | sort -V | tail -1) \
57 && if [ -n "$CLAUDE_BIN" ]; then cp "$CLAUDE_BIN" /usr/local/bin/claude-native && chmod +x /usr/local/bin/claude-native; fi \
58 || echo "Claude Code install skipped (non-fatal)"
59
60# ── Verify tools ──
61RUN gcc --version | head -1 && busybox --help >/dev/null 2>&1 && esbuild --version && echo "OK"
62
63# ── Copy source into image ──
64COPY . /repo
65
66# ── Copy build script ──
67COPY fedac/native/docker-build.sh /docker-build.sh
68RUN chmod +x /docker-build.sh
69
70ENV AC_SRC=/repo
71ENTRYPOINT ["/docker-build.sh"]
72# cache-bust 1774407968