Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
1aceede
feat: Transfer old repo
Jul 22, 2026
4142d3c
Add post-boot configuration for NetworkManager
nikodunk Jul 22, 2026
16c8783
Merge pull request #3 from nikodunk/patch-1
jumpyvi Jul 22, 2026
bdee221
Mask firstboot
Jul 22, 2026
b210a04
Merge pull request #5 from jumpyvi/disable-firstboot
jumpyvi Jul 22, 2026
cbde144
feat: Switch to systemd-boot and remove UKI profiles, fix #6
Jul 22, 2026
5c91da4
feat: Add swap (zram)
Jul 23, 2026
e3bb0b8
Add tools for testing updates locally
Jul 23, 2026
e423488
feat: Full upgrade support
Jul 24, 2026
1b78f39
Update readme (#8)
nikodunk Jul 24, 2026
80dd71f
Re-add build & upload jobs (#7)
nikodunk Jul 25, 2026
fc8ddf7
Refactor image building (#10)
jumpyvi Jul 27, 2026
702cf2e
Use mkosi@26
Jul 27, 2026
f472c93
Fix permissions
Jul 27, 2026
5437004
Update README.md
jumpyvi Jul 27, 2026
796891f
Update releases matching
Jul 27, 2026
180d961
Use date a release tag
Jul 27, 2026
a238abd
Fix date extraction
Jul 27, 2026
6a13cf3
Move to xz7
Jul 27, 2026
d6af042
Add audio stack
Jul 28, 2026
f46b834
Add flatpak-preinstalld (#14)
jumpyvi Jul 29, 2026
a48839e
Initial work
jumpyvi Jul 31, 2026
2c82d93
build: Build in podman
jumpyvi Jul 31, 2026
69eb2bb
Merge branch 'liveiso' into sysupdate
jumpyvi Jul 31, 2026
a31a6ef
Liveiso (#17)
jumpyvi Aug 2, 2026
39e41cb
WIP: Initial work on cdrom generation (#19)
jumpyvi Aug 4, 2026
a7274ed
Merge flash
jumpyvi Aug 9, 2026
0d0aab3
Update workflow
jumpyvi Aug 9, 2026
735985c
Remove mkosi.clean
jumpyvi Aug 9, 2026
fd6d6a8
Change profile name
jumpyvi Aug 9, 2026
d929683
Fix badly merged stuff
jumpyvi Aug 9, 2026
b5c11a2
Add b sides
jumpyvi Aug 9, 2026
0cdaf20
Add the usroverlay command
jumpyvi Aug 9, 2026
c1870f3
Replace manual package list for metapackages (#22)
nikodunk Aug 11, 2026
00571ee
Update README.md (#23)
danirabbit Aug 12, 2026
18d3688
feat: Initial work on classic mode (#24)
jumpyvi Aug 14, 2026
cbd402b
Remove gnome-shell
jumpyvi Aug 14, 2026
aea20f8
Classic only
jumpyvi Aug 14, 2026
4e14bf4
Remove elementary-live
jumpyvi Aug 14, 2026
4c44e1e
Fix aa in live mode
jumpyvi Aug 14, 2026
3282a06
Temporary fix for live installer
jumpyvi Aug 15, 2026
08b0e92
Fix rootfs permissions
jumpyvi Aug 15, 2026
466744d
Decapitalized Elementary
jumpyvi Aug 15, 2026
cde5e1f
Remove lightdm workarround
jumpyvi Aug 15, 2026
9ea1d69
Reduce package set
jumpyvi Aug 15, 2026
525b035
Sends usr to r2
jumpyvi Aug 16, 2026
338873a
Update workflow
jumpyvi Aug 16, 2026
b7c70e0
Install deps with sudo
jumpyvi Aug 16, 2026
941be7e
Create /var/cache/mkosi
jumpyvi Aug 16, 2026
bccc207
Add sudo
jumpyvi Aug 16, 2026
df6e97e
jobs fixes (#25)
nikodunk Aug 16, 2026
08acb03
Do not sign iso
jumpyvi Aug 16, 2026
e1005c0
blacklist packages
jumpyvi Aug 16, 2026
2aafaef
Rename config files
jumpyvi Aug 17, 2026
b833e80
Remove super old cosign key
jumpyvi Aug 17, 2026
b982cbb
make cloudflare r2 work end to end (#26)
nikodunk Aug 17, 2026
2c664f4
Fix S3 upload to differentiate between stable and daily updates (#27)
nikodunk Aug 17, 2026
54ac334
upload job tweaks (#28)
nikodunk Aug 18, 2026
9072258
put isos into subfolder, and name them (#29)
nikodunk Aug 19, 2026
4d0edc8
Refactor: Move to mkosi.images (#30)
jumpyvi Aug 19, 2026
f29b121
Configurable architecture and version, upload sha256sums second
lewisgoddard Aug 19, 2026
ebc9c25
Add SHA256 hash for live iso upload
lewisgoddard Aug 19, 2026
fead13c
jobs updates for new build folder structure (#31)
nikodunk Aug 19, 2026
e97aa9d
Cleanup
jumpyvi Aug 19, 2026
d1a60ad
Merge branch 'sysupdate' of github.com:jumpyvi/elementary-atomic-os i…
jumpyvi Aug 19, 2026
9f1a4dc
Move sysupdate definitions to sysupdate
jumpyvi Aug 19, 2026
ea62d0a
Move daily repo to daily profile
jumpyvi Aug 19, 2026
e2b92a9
bugfix in bucket address
nikodunk Aug 19, 2026
9c6d7b8
exit output folder so following commands succeed
nikodunk Aug 19, 2026
e98eb48
Add extensions (#32)
jumpyvi Aug 19, 2026
aeb59b8
Fix iso arch naming
jumpyvi Aug 20, 2026
74d5f36
re-order upload steps so that extension SHASUM does not overwrite ima…
nikodunk Aug 20, 2026
d32f0e0
Quick fixes
jumpyvi Aug 20, 2026
0391ebe
Remove id from workflow
jumpyvi Aug 20, 2026
b6f8a59
Add os-patches priority
jumpyvi Aug 20, 2026
bab6e9f
Add os-patches priority
jumpyvi Aug 20, 2026
6dc785c
Switch everything to zstd (#33)
jumpyvi Aug 22, 2026
335c628
Update release-daily.yaml
jumpyvi Aug 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 0 additions & 35 deletions .github/workflows/daily-8.1.yml

This file was deleted.

35 changes: 0 additions & 35 deletions .github/workflows/daily-9.0.yml

This file was deleted.

107 changes: 107 additions & 0 deletions .github/workflows/release-daily.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
name: Build and Release Daily (elementary OS 9)

on:
workflow_dispatch:

jobs:
build-and-release:
name: Build Image and Release
runs-on: ubuntu-latest
permissions:
contents: write
env:
# systemd architecture ID, as expanded by %a in the sysupdate transfer config.
# Must be x86-64 or arm64
ARCH: x86-64
# OS Version should be quoted so 9.0 isn't recuded to just 9
OS_VERSION: "9.0"

steps:
- name: Checkout repository
uses: actions/checkout@v7

- name: Maximize build space
uses: ublue-os/remove-unwanted-software@v8

- name: Install deps
run: sudo apt-get update && sudo apt-get install just podman -y

- name: Generate key
run: just genkey

- name: Release
run: just do-daily

- name: Fix output dir ownership
run: |
sudo chown -R "$(id -u):$(id -g)" mkosi.output
sudo chmod -R u+rwX mkosi.output

- name: Generate SHA256SUMS (all partitions)
run: just checksum-repo

- name: Extract Date
run: |
set -euo pipefail
FILE_PATH=$(ls mkosi.output/*.usr-*.raw.zst | head -n 1)
TIMESTAMP=$(basename "$FILE_PATH" | grep -oE '[0-9]{14}' | head -n 1 || true)
if [ -z "$TIMESTAMP" ]; then
echo "Fatal: No timpestamped file found."
exit 0
fi
echo "Release date: $TIMESTAMP"
echo "RELEASE_DATE=$TIMESTAMP" >> "$GITHUB_OUTPUT"

- name: Upload sysupdate, iso and SHA256SUMS to Bucket
env:
AWS_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: auto
AWS_ENDPOINT_URL: ${{ secrets.R2_ENDPOINT }}
run: |
set -euo pipefail

# 1. Images
cd mkosi.output
find . -maxdepth 1 -type f \( \
-name "*.esp.raw" \
-o -name "*.usr-*.*.raw.zst" \
-o -name "*.usr-*-verity.*.raw.zst" \
-o -name "*.usr-*-verity-sig.*.raw.zst" \
\) -print0 | while IFS= read -r -d '' f; do
aws s3 cp "$f" "s3://${{ secrets.R2_BUCKET_DAILY_UPDATES }}/$ARCH/" --cache-control "public, max-age=31536000, immutable"
done
cd ..


# 2. SHA256SUMS
# not cached, will change when new updates are uploaded
aws s3 cp mkosi.output/SHA256SUMS \
"s3://${{ secrets.R2_BUCKET_DAILY_UPDATES }}/$ARCH/SHA256SUMS" \
--content-type "text/plain" \
--cache-control "no-cache"

# 3. Live ISO + hash
ISO=$(basename $(ls mkosi.output/elementaryos-*.iso | head -n 1))
( cd mkosi.output && sha256sum "$ISO" > "$ISO.sha256.txt" )

ISO_DEST="s3://${{ secrets.R2_BUCKET_DAILY_INSTALLER }}/$ARCH"

aws s3 cp "mkosi.output/$ISO" "$ISO_DEST/$ISO" \
--cache-control "public, max-age=31536000, immutable"

aws s3 cp "mkosi.output/$ISO.sha256.txt" "$ISO_DEST/$ISO.sha256.txt" \
--content-type "text/plain" \
--cache-control "public, max-age=31536000, immutable"

- name: Checksum Extensions
run: just checksum-ext

- name: Release Extensions
uses: softprops/action-gh-release@v3
with:
tag_name: ${{ steps.get_date.outputs.RELEASE_DATE }}
name: Extension release ${{ steps.get_date.outputs.RELEASE_DATE }}
files: |
mkosi.output/ext/ext-*.raw.zst
mkosi.output/ext/SHA256SUMS
35 changes: 0 additions & 35 deletions .github/workflows/stable-8.1.yml

This file was deleted.

26 changes: 21 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
.DS_Store
tmp
artifacts
builds
*~
cosign.key
**/cosign.key
cache
_build_*
output
_build-*/**
*.img
*.raw
*.iso
mkosi.local/
mkosi.local.conf
mkosi.output/
mkosi.cache/
mkosi.tools/
mkosi.tools.manifest
mkosi.key
mkosi.crt
mkosi.version
mkosi.rootpw
.mkosi-private
*.efi
67 changes: 67 additions & 0 deletions Justfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
default:
#!/usr/bin/env bash
set -xeuo pipefail
just --choose

do-daily:
#!/usr/bin/env bash
sudo rm -rf mkosi.output/ && \
just run-in-podman mkosi -B --debug --profile=daily --force --workspace-directory=/workspace && \
sudo ./assemble-iso.sh


do-release:
#!/usr/bin/env bash
echo "nyi, run do-daily instead"

genkey:
just run-in-podman mkosi genkey

run-in-podman +command:
mkdir -p {{env_var('HOME')}}/.cache/mkosi-workspace
sudo mkdir -p /var/cache/mkosi

sudo podman run --rm -it \
--network host \
--dns 8.8.8.8 \
--privileged \
--security-opt label=disable \
-v /var/cache/mkosi:/var/cache/mkosi \
-v /dev:/dev \
-v "{{invocation_directory()}}:/work" \
-w /work \
-v "{{env_var('HOME')}}/.cache/mkosi-workspace:/workspace" \
ghcr.io/jumpyvi/mkosi:tanit \
{{command}}



clean:
just run-in-podman mkosi clean
sudo rm -r mkosi.tools/ mkosi.cache/ /var/cache/mkosi/*

checksum-repo:
#!/usr/bin/env bash
cd mkosi.output
sha256sum elementary_*.efi \
elementary_*.usr-*.*.raw.zst \
elementary_*.usr-*-verity.*.raw.zst \
elementary_*.usr-*-verity-sig.*.raw.zst \
> SHA256SUMS
cat SHA256SUMS

checksum-ext:
#!/usr/bin/env bash
cd mkosi.output
mkdir ext
mv ext-*.raw.zst ext/
cd ext/
sha256sum ext-*.raw.zst > SHA256SUMS
cat SHA256SUMS

serve:
#!/usr/bin/env bash
cd mkosi.output
echo "Sysupdate accessible in Gnome Boxes at http://10.0.2.2:7070"
echo "Extensions accessible in Gnome Boxes at http://10.0.2.2:7070/ext/"
python -m http.server 7070
Loading