diff --git a/iso/docker/Dockerfile b/iso/docker/Dockerfile index 9326eaf..9976d1a 100644 --- a/iso/docker/Dockerfile +++ b/iso/docker/Dockerfile @@ -1,33 +1,62 @@ FROM archlinux:latest -# Install archiso and build dependencies -RUN pacman -Syu --noconfirm \ - archiso \ - base-devel \ - git \ - libx11 \ - libxft \ - libxfixes \ - dbus \ - libpng \ - feh \ - picom \ - libpam \ - ttf-dejavu \ - xorg-server \ - xorg-xinit \ - xterm \ - notify-send-py \ - && pacman -Scc --noconfirm +# Update and install archiso + OrionOS build dependencies +RUN pacman -Syu --noconfirm && \ + pacman -S --noconfirm \ + archiso \ + base-devel \ + git \ + libx11 \ + libxft \ + libxfixes \ + libxext \ + libpng \ + dbus \ + pam \ + fontconfig \ + freetype2 \ + xorg-server \ + xorg-xinit \ + feh \ + picom \ + alsa-utils \ + ttf-dejavu \ + noto-fonts \ + pkgconf && \ + pacman -Scc --noconfirm WORKDIR /build + +# Copy OrionOS source COPY . /build/orionos # Build OrionOS components -RUN cd /build/orionos && make && make install +RUN cd /build/orionos && make 2>&1 | tail -20 -# Copy archiso profile and build the ISO -RUN cp -r /build/orionos/iso/profile /tmp/orionos-profile -RUN mkarchiso -v -w /tmp/iso-work -o /output /tmp/orionos-profile +# Install binaries into the staging root that archiso will include +RUN cd /build/orionos && \ + install -Dm755 wm/orionwm /build/orionos/iso/profile/airootfs/usr/local/bin/orionwm && \ + install -Dm755 deskbar/oriondeskbar /build/orionos/iso/profile/airootfs/usr/local/bin/oriondeskbar && \ + install -Dm755 launcher/orionlauncher /build/orionos/iso/profile/airootfs/usr/local/bin/orionlauncher && \ + install -Dm755 themes/orionwallpaper /build/orionos/iso/profile/airootfs/usr/local/bin/orionwallpaper && \ + install -Dm755 orionnotify/orionnotify /build/orionos/iso/profile/airootfs/usr/local/bin/orionnotify && \ + install -Dm755 orionlock/orionlock /build/orionos/iso/profile/airootfs/usr/local/bin/orionlock && \ + install -Dm755 orionshot/orionshot /build/orionos/iso/profile/airootfs/usr/local/bin/orionshot && \ + install -Dm755 orionclip/orionclip /build/orionos/iso/profile/airootfs/usr/local/bin/orionclip && \ + install -Dm755 orionpkg/orionpkg /build/orionos/iso/profile/airootfs/usr/local/bin/orionpkg && \ + cp -r themes/OrionOS /build/orionos/iso/profile/airootfs/usr/share/themes/ && \ + install -Dm644 themes/picom.conf /build/orionos/iso/profile/airootfs/etc/orionos/picom.conf + +# Generate default wallpaper +RUN mkdir -p /build/orionos/iso/profile/airootfs/usr/share/orionos/wallpapers && \ + bash /build/orionos/themes/wallpapers/generate-default.sh 2>/dev/null && \ + cp -f /build/orionos/themes/wallpapers/orionos-default.png \ + /build/orionos/iso/profile/airootfs/usr/share/orionos/wallpapers/ 2>/dev/null || true + +# Build the ISO +RUN mkarchiso -v \ + -w /tmp/iso-work \ + -o /output \ + /build/orionos/iso/profile CMD ["/bin/bash"] diff --git a/iso/profile/airootfs/etc/hostname b/iso/profile/airootfs/etc/hostname new file mode 100644 index 0000000..ae391d8 --- /dev/null +++ b/iso/profile/airootfs/etc/hostname @@ -0,0 +1 @@ +orionos diff --git a/iso/profile/airootfs/etc/orionos/xinitrc b/iso/profile/airootfs/etc/orionos/xinitrc new file mode 100644 index 0000000..778b2b3 --- /dev/null +++ b/iso/profile/airootfs/etc/orionos/xinitrc @@ -0,0 +1,9 @@ +#!/bin/bash +# OrionOS live session autostart + +picom --config /etc/orionos/picom.conf & +orionwallpaper & +orionnotify & +orionclip & +oriondeskbar & +exec orionwm diff --git a/iso/profile/airootfs/etc/skel/.xinitrc b/iso/profile/airootfs/etc/skel/.xinitrc new file mode 100644 index 0000000..75e8555 --- /dev/null +++ b/iso/profile/airootfs/etc/skel/.xinitrc @@ -0,0 +1,2 @@ +#!/bin/bash +source /etc/orionos/xinitrc diff --git a/iso/profile/airootfs/root/.xinitrc b/iso/profile/airootfs/root/.xinitrc new file mode 100644 index 0000000..75e8555 --- /dev/null +++ b/iso/profile/airootfs/root/.xinitrc @@ -0,0 +1,2 @@ +#!/bin/bash +source /etc/orionos/xinitrc diff --git a/iso/profile/packages.x86_64 b/iso/profile/packages.x86_64 new file mode 100644 index 0000000..c52df27 --- /dev/null +++ b/iso/profile/packages.x86_64 @@ -0,0 +1,72 @@ +# OrionOS live system packages + +# Base system +base +linux +linux-firmware +mkinitcpio + +# X11 +xorg-server +xorg-xinit +xorg-xrandr +xorg-xsetroot +xorg-xev + +# Fonts +ttf-dejavu +noto-fonts +ttf-liberation + +# Dependencies for OrionOS components +libx11 +libxft +libxfixes +libxext +libpng +dbus +libpam +fontconfig +freetype2 + +# Desktop utilities +feh +picom +xterm +libnotify + +# Audio +alsa-utils +pulseaudio + +# Brightness +light + +# Media playback control +playerctl + +# Arch tools +pacman-contrib +pkexec +polkit + +# System tools +bash +coreutils +util-linux +procps-ng +grep +gawk +sed +tar +gzip + +# Network +networkmanager +dhcpcd + +# Misc +git +vim +less +which diff --git a/iso/profile/pacman.conf b/iso/profile/pacman.conf new file mode 100644 index 0000000..fcb4029 --- /dev/null +++ b/iso/profile/pacman.conf @@ -0,0 +1,14 @@ +[options] +HoldPkg = pacman glibc +Architecture = auto +CheckSpace +ParallelDownloads = 5 + +[core] +Include = /etc/pacman.d/mirrorlist + +[extra] +Include = /etc/pacman.d/mirrorlist + +[multilib] +Include = /etc/pacman.d/mirrorlist diff --git a/iso/profile/profiledef.sh b/iso/profile/profiledef.sh new file mode 100644 index 0000000..2dcf7a6 --- /dev/null +++ b/iso/profile/profiledef.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +# archiso profile definition for OrionOS + +iso_name="OrionOS" +iso_label="ORIONOS_$(date +%Y%m)" +iso_publisher="OrionOS Project" +iso_application="OrionOS Live" +iso_version="$(date +%Y.%m)" +install_dir="arch" +buildmodes=('iso') +bootmodes=('bios.syslinux.mbr' 'bios.syslinux.eltorito' + 'uefi-ia32.grub.esp' 'uefi-x64.grub.esp' + 'uefi-ia32.grub.eltorito' 'uefi-x64.grub.eltorito') +arch="x86_64" +pacman_conf="pacman.conf" +airootfs_image_type="squashfs" +airootfs_image_tool_options=('-comp' 'zstd' '-Xcompression-level' '15') +file_permissions=( + ["/etc/orionos/xinitrc"]="0:0:755" + ["/root/.xinitrc"]="0:0:755" + ["/etc/skel/.xinitrc"]="0:0:755" +)