BC-250 console image: custom GNOME recipe with remote admin
Build Bazzite BC-250 / Check Bazzite channel digests (push) Has been cancelled
Build Bazzite BC-250 / Build Custom Image (push) Has been cancelled
Build Bazzite BC-250 / Build Custom 40CU Image (push) Has been cancelled
Build Bazzite BC-250 / Save Bazzite channel digest cache (push) Has been cancelled
Build Bazzite BC-250 / Publish GitHub Release (push) Has been cancelled
Build Bazzite BC-250 / Check Bazzite channel digests (push) Has been cancelled
Build Bazzite BC-250 / Build Custom Image (push) Has been cancelled
Build Bazzite BC-250 / Build Custom 40CU Image (push) Has been cancelled
Build Bazzite BC-250 / Save Bazzite channel digest cache (push) Has been cancelled
Build Bazzite BC-250 / Publish GitHub Release (push) Has been cancelled
Based on 62fixolab/Latest-Bazzite-AMD-BC-250-Patched-Images @ 347fd4d. Adds on top of the fork: - recipes/bc250-console-gnome.yml: governor + gnome-remote-desktop + openssh-server, sshd enabled, hhd.service masked, no signing module (local build + ISO path) - files/console/usr/bin/bc250-remote-setup: one-time on-box SSH/RDP setup - files/console/usr/lib/bootc/kargs.d/50-bc250-ttm.toml: ttm memory kargs - BUILD-CONSOLE.md: build -> ISO -> validation instructions files/console/ is separate from files/system/ so the 40-CU unlock tooling stays out of this stable 24-CU image. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Executable
+55
@@ -0,0 +1,55 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Render a BlueBuild recipe for a specific Bazzite channel and package name."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def replace_prefixed_line(lines: list[str], prefix: str, replacement: str) -> list[str]:
|
||||
replaced = False
|
||||
rendered: list[str] = []
|
||||
|
||||
for line in lines:
|
||||
if line.startswith(prefix):
|
||||
rendered.append(replacement)
|
||||
replaced = True
|
||||
else:
|
||||
rendered.append(line)
|
||||
|
||||
if not replaced:
|
||||
raise SystemExit(f"Could not find required line starting with {prefix!r}.")
|
||||
|
||||
return rendered
|
||||
|
||||
|
||||
def parse_args() -> argparse.Namespace:
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument("--recipe", required=True, type=Path)
|
||||
parser.add_argument("--output", required=True, type=Path)
|
||||
parser.add_argument("--channel", required=True)
|
||||
parser.add_argument("--name", required=True)
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
def main() -> int:
|
||||
args = parse_args()
|
||||
|
||||
lines = args.recipe.read_text(encoding="utf-8").splitlines()
|
||||
lines = replace_prefixed_line(lines, "name:", f"name: {args.name}")
|
||||
lines = replace_prefixed_line(lines, "image-version:", f"image-version: {args.channel}")
|
||||
lines = [
|
||||
line.replace(" stable image ", f" {args.channel} image ")
|
||||
if line.startswith("description:")
|
||||
else line
|
||||
for line in lines
|
||||
]
|
||||
|
||||
args.output.write_text("\n".join(lines) + "\n", encoding="utf-8")
|
||||
print(f"Rendered {args.output} for {args.name}:{args.channel}")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Reference in New Issue
Block a user