name: particle-os-ostree
description: Real ublue-os architecture with OSTree, bootupd, and bootc
base-image: debian:trixie-slim
image-version: "13"

stages:
  - type: org.osbuild.debian.ostree
    options:
      # OSTree configuration
      ostree_repo: "particle-os-repo"
      ostree_branch: "particle-os/debian-trixie"
      ostree_ref: "particle-os/debian-trixie"
      
      # Container extraction and OSTree commit
      container_image: "debian:trixie-slim"
      ostree_mode: "archive"
      
  - type: org.osbuild.debian.apt
    options:
      packages:
        # Core system packages
        - systemd
        - systemd-sysv
        - udev
        - procps
        - util-linux
        - mount
        - passwd
        - login
        - bash
        - coreutils
        
        # OSTree packages (available in standard repos)
        - ostree
        - ostree-boot
        
        # Kernel and boot essentials
        - linux-image-amd64
        - linux-headers-amd64
        - initramfs-tools
        
        # Basic tools
        - curl
        - wget
        - vim
        - less
        - locales
        - ca-certificates
        - tzdata
      update: true
      clean: true
      
  - type: org.osbuild.debian.ostree_boot
    options:
      # OSTree boot configuration
      ostree_boot_dir: "/usr/lib/ostree-boot"
      kernel_path: "/usr/lib/ostree-boot/vmlinuz"
      initrd_path: "/usr/lib/ostree-boot/initrd.img"
      
      # bootupd configuration
      bootupd_enable: true
      bootupd_config: |
        [bootupd]
        enabled = true
        
        [bootupd.efi]
        enabled = true
        
        [bootupd.legacy]
        enabled = true
      
  - type: org.osbuild.debian.locale
    options:
      language: en_US.UTF-8
      default_locale: en_US.UTF-8
      
  - type: org.osbuild.debian.timezone
    options:
      timezone: UTC
      
  - type: org.osbuild.debian.users
    options:
      users:
        admin:
          password: "$6$rounds=656000$salt$hashedpassword"
          shell: /bin/bash
          groups: ["users", "sudo", "adm"]
          uid: 1000
          gid: 1000
          home: /home/admin
          comment: "System Administrator"
      default_shell: /bin/bash
      default_home: /home
      
  - type: org.osbuild.ostree_deploy
    options:
      # OSTree deployment configuration
      ostree_repo: "particle-os-repo"
      ostree_ref: "particle-os/debian-trixie"
      deployment_mode: "ostree"
      
      # Filesystem structure
      immutable_dirs: ["/usr", "/boot", "/lib", "/lib64"]
      mutable_dirs: ["/var", "/etc", "/home", "/tmp"]
      
      # Bootloader configuration
      bootloader: "bootupd"
      bootloader_config: |
        [bootupd]
        enabled = true
        
        [bootupd.efi]
        enabled = true
        
        [bootupd.legacy]
        enabled = true
        
        [bootupd.ostree]
        enabled = true
        ref = "particle-os/debian-trixie"
      
  - type: org.osbuild.qemu
    options:
      formats: ["raw", "qcow2"]
      size: "10G"
      filename: "particle-os-ostree"

output:
  formats: ["raw", "qcow2"]
  size: "10G"
  path: "particle-os-ostree"

metadata:
  author: "particle-os"
  category: "ostree"
  tags: ["ostree", "bootupd", "bootc", "container-native", "immutable"]
  description: "Real ublue-os architecture with OSTree, bootupd, and bootc"
  target_audience: "Developers, system administrators, ublue-os users"
  based_on: "debian:trixie-slim + ublue-os architecture"
  architecture: "ostree + bootupd + bootc"
