Skip to content

Commit e5398f6

Browse files
author
github-actions
committed
Update docs preview for PR #912
1 parent d20d813 commit e5398f6

4 files changed

Lines changed: 93 additions & 90 deletions

File tree

912/Developer-Guide_Desktops/index.html

Lines changed: 31 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3816,9 +3816,9 @@ <h3 id="list-and-json-list-modes">List and JSON list modes<a class="headerlink"
38163816
<h2 id="bash-module-api">Bash module API<a class="headerlink" href="#bash-module-api" title="Permanent link">&para;</a></h2>
38173817
<p>All functions are loaded by configng&rsquo;s module loader. They share global state (<code>DESKTOP_*</code> variables, <code>desktops_dir</code>, <code>DISTROID</code>) — call sites must follow the documented order.</p>
38183818
<h3 id="module_desktops">module_desktops<a class="headerlink" href="#module_desktops" title="Permanent link">&para;</a></h3>
3819-
<div class="language-text highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Text Only</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-9-1">1</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-9-1"><a id="__codelineno-9-1" name="__codelineno-9-1"></a>module_desktops &lt;command&gt; [de=&lt;name&gt;] [tier=&lt;tier&gt;] [arch=&lt;arch&gt;] [release=&lt;release&gt;]
3819+
<div class="language-text highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Text Only</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-9-1">1</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-9-1"><a id="__codelineno-9-1" name="__codelineno-9-1"></a>module_desktops &lt;command&gt; [de=&lt;name&gt;] [tier=&lt;tier&gt;] [arch=&lt;arch&gt;] [release=&lt;release&gt;] [mode=&lt;mode&gt;]
38203820
</span></code></pre></div></td></tr></table></div>
3821-
<p>Top-level dispatcher. The <code>de=</code>, <code>tier=</code>, <code>arch=</code>, <code>release=</code> arguments are parsed positionally from <code>$@</code>.</p>
3821+
<p>Top-level dispatcher. The <code>de=</code>, <code>tier=</code>, <code>arch=</code>, <code>release=</code>, <code>mode=</code> arguments are parsed positionally from <code>$@</code>.</p>
38223822
<table>
38233823
<thead>
38243824
<tr>
@@ -3830,8 +3830,8 @@ <h3 id="module_desktops">module_desktops<a class="headerlink" href="#module_desk
38303830
<tbody>
38313831
<tr>
38323832
<td><code>install</code></td>
3833-
<td>Full install pipeline (see <a href="#lifecycle-install">Lifecycle</a>). Bails out cleanly on <code>pkg_install</code> failure without changing system state.</td>
3834-
<td><code>de=</code>, <code>tier=</code></td>
3833+
<td>Full install pipeline (see <a href="#lifecycle-install">Lifecycle</a>). Bails out cleanly on <code>pkg_install</code> failure without changing system state. With <code>mode=build</code>: skips user detection, group membership, skel propagation, and DM start/autologin — intended for image-build time when no real user exists.</td>
3834+
<td><code>de=</code>, <code>tier=</code> (optional: <code>mode=build</code>)</td>
38353835
</tr>
38363836
<tr>
38373837
<td><code>remove</code></td>
@@ -4069,31 +4069,34 @@ <h3 id="module_appimage">module_appimage<a class="headerlink" href="#module_appi
40694069
<p>Not called from the desktop install path by default. The <code>armbian-imager</code> AppImage is available via <code>armbian-config --api module_appimage install app=armbian-imager</code> for users who explicitly want it.</p>
40704070
<h2 id="lifecycle-install">Lifecycle: install<a class="headerlink" href="#lifecycle-install" title="Permanent link">&para;</a></h2>
40714071
<p>The install pipeline in <code>module_desktops install</code> is intentionally linear and idempotent-friendly. <strong>Every step that touches system state is gated on the previous step&rsquo;s success.</strong></p>
4072-
<div class="language-text highlight"><span class="filename">Text Only</span><pre><span></span><code><span id="__span-19-1"><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a>1. Validate args de= and tier= both required; tier must be minimal|mid|full
4073-
</span><span id="__span-19-2"><a id="__codelineno-19-2" name="__codelineno-19-2" href="#__codelineno-19-2"></a>2. Resolve target user module_desktop_getuser
4074-
</span><span id="__span-19-3"><a id="__codelineno-19-3" name="__codelineno-19-3" href="#__codelineno-19-3"></a>3. Parse YAML at target tier module_desktop_yamlparse $de $arch $release $tier
4075-
</span><span id="__span-19-4"><a id="__codelineno-19-4" name="__codelineno-19-4" href="#__codelineno-19-4"></a>4. Validate package list exit if DESKTOP_PACKAGES / DESKTOP_PRIMARY_PKG empty
4076-
</span><span id="__span-19-5"><a id="__codelineno-19-5" name="__codelineno-19-5" href="#__codelineno-19-5"></a>5. Warn on unsupported DESKTOP_SUPPORTED != yes → stderr warning, continue
4077-
</span><span id="__span-19-6"><a id="__codelineno-19-6" name="__codelineno-19-6" href="#__codelineno-19-6"></a>6. Suppress encfs prompt debconf-set-selections
4078-
</span><span id="__span-19-7"><a id="__codelineno-19-7" name="__codelineno-19-7" href="#__codelineno-19-7"></a>7. Configure custom repo module_desktop_repo $de (no-op if no repo: block)
4079-
</span><span id="__span-19-8"><a id="__codelineno-19-8" name="__codelineno-19-8" href="#__codelineno-19-8"></a>8. apt update pkg_update
4080-
</span><span id="__span-19-9"><a id="__codelineno-19-9" name="__codelineno-19-9" href="#__codelineno-19-9"></a>9. Reset ACTUALLY_INSTALLED array used by pkg_install to record new packages
4081-
</span><span id="__span-19-10"><a id="__codelineno-19-10" name="__codelineno-19-10" href="#__codelineno-19-10"></a>10. apt install desktop pkgs pkg_install $DESKTOP_PACKAGES ← bail on failure
4082-
</span><span id="__span-19-11"><a id="__codelineno-19-11" name="__codelineno-19-11" href="#__codelineno-19-11"></a>11. apt install + register DM pkg_install $DESKTOP_DM ← bail on failure
4083-
</span><span id="__span-19-12"><a id="__codelineno-19-12" name="__codelineno-19-12" href="#__codelineno-19-12"></a> /etc/X11/default-display-manager
4084-
</span><span id="__span-19-13"><a id="__codelineno-19-13" name="__codelineno-19-13" href="#__codelineno-19-13"></a>12. (Armbian) install plymouth if /etc/apt/sources.list.d/armbian.{list,sources} present
4085-
</span><span id="__span-19-14"><a id="__codelineno-19-14" name="__codelineno-19-14" href="#__codelineno-19-14"></a>13. Save install manifest /etc/armbian/desktop/&lt;de&gt;.packages and &lt;de&gt;.tier
4086-
</span><span id="__span-19-15"><a id="__codelineno-19-15" name="__codelineno-19-15" href="#__codelineno-19-15"></a>14. Purge unwanted packages apt-get remove --purge $DESKTOP_PACKAGES_UNINSTALL
4087-
</span><span id="__span-19-16"><a id="__codelineno-19-16" name="__codelineno-19-16" href="#__codelineno-19-16"></a>15. Install branding module_desktop_branding $de
4088-
</span><span id="__span-19-17"><a id="__codelineno-19-17" name="__codelineno-19-17" href="#__codelineno-19-17"></a>16. Add user to groups sudo netdev audio video dialout plugdev input bluetooth systemd-journal ssh
4089-
</span><span id="__span-19-18"><a id="__codelineno-19-18" name="__codelineno-19-18" href="#__codelineno-19-18"></a>17. Profile sync daemon (psd) touch ~/.activate_psd, sudoers entry
4090-
</span><span id="__span-19-19"><a id="__codelineno-19-19" name="__codelineno-19-19" href="#__codelineno-19-19"></a>18. Sync skel to existing users module_update_skel install (with chown -R safety net)
4091-
</span><span id="__span-19-20"><a id="__codelineno-19-20" name="__codelineno-19-20" href="#__codelineno-19-20"></a>19. Stop other DMs gdm3/lightdm/sddm one by one
4092-
</span><span id="__span-19-21"><a id="__codelineno-19-21" name="__codelineno-19-21" href="#__codelineno-19-21"></a>20. Start display manager systemctl start display-manager ← container path skips this
4093-
</span><span id="__span-19-22"><a id="__codelineno-19-22" name="__codelineno-19-22" href="#__codelineno-19-22"></a>21. Switch default.target systemctl set-default graphical.target ONLY if step 20 succeeded
4094-
</span><span id="__span-19-23"><a id="__codelineno-19-23" name="__codelineno-19-23" href="#__codelineno-19-23"></a>22. Enable auto-login module_desktops auto de=$de
4072+
<p>Steps marked with <code>[R]</code> are <strong>runtime-only</strong> — skipped when <code>mode=build</code> is passed (image build time, no real user exists). Steps marked with <code>[B]</code> run in <strong>both</strong> modes.</p>
4073+
<div class="language-text highlight"><span class="filename">Text Only</span><pre><span></span><code><span id="__span-19-1"><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a> 1. [B] Validate args de= and tier= both required; tier must be minimal|mid|full
4074+
</span><span id="__span-19-2"><a id="__codelineno-19-2" name="__codelineno-19-2" href="#__codelineno-19-2"></a> 2. [R] Resolve target user module_desktop_getuser (skipped in mode=build)
4075+
</span><span id="__span-19-3"><a id="__codelineno-19-3" name="__codelineno-19-3" href="#__codelineno-19-3"></a> 3. [B] Parse YAML at target tier module_desktop_yamlparse $de $arch $release $tier
4076+
</span><span id="__span-19-4"><a id="__codelineno-19-4" name="__codelineno-19-4" href="#__codelineno-19-4"></a> 4. [B] Validate package list exit if DESKTOP_PACKAGES / DESKTOP_PRIMARY_PKG empty
4077+
</span><span id="__span-19-5"><a id="__codelineno-19-5" name="__codelineno-19-5" href="#__codelineno-19-5"></a> 5. [B] Warn on unsupported DESKTOP_SUPPORTED != yes → stderr warning, continue
4078+
</span><span id="__span-19-6"><a id="__codelineno-19-6" name="__codelineno-19-6" href="#__codelineno-19-6"></a> 6. [B] Suppress interactive debconf-set-selections + DEBIAN_FRONTEND=noninteractive
4079+
</span><span id="__span-19-7"><a id="__codelineno-19-7" name="__codelineno-19-7" href="#__codelineno-19-7"></a> 7. [B] Configure custom repo module_desktop_repo $de (no-op if no repo: block)
4080+
</span><span id="__span-19-8"><a id="__codelineno-19-8" name="__codelineno-19-8" href="#__codelineno-19-8"></a> 8. [B] Write apt pin _module_desktops_write_apt_pin (force apt.armbian.com .debs)
4081+
</span><span id="__span-19-9"><a id="__codelineno-19-9" name="__codelineno-19-9" href="#__codelineno-19-9"></a> 9. [B] apt update pkg_update
4082+
</span><span id="__span-19-10"><a id="__codelineno-19-10" name="__codelineno-19-10" href="#__codelineno-19-10"></a>10. [B] Reset ACTUALLY_INSTALLED array used by pkg_install to record new packages
4083+
</span><span id="__span-19-11"><a id="__codelineno-19-11" name="__codelineno-19-11" href="#__codelineno-19-11"></a>11. [B] apt install desktop pkgs pkg_install $DESKTOP_PACKAGES ← bail on failure
4084+
</span><span id="__span-19-12"><a id="__codelineno-19-12" name="__codelineno-19-12" href="#__codelineno-19-12"></a>12. [B] apt install + register DM pkg_install $DESKTOP_DM ← bail on failure
4085+
</span><span id="__span-19-13"><a id="__codelineno-19-13" name="__codelineno-19-13" href="#__codelineno-19-13"></a> /etc/X11/default-display-manager
4086+
</span><span id="__span-19-14"><a id="__codelineno-19-14" name="__codelineno-19-14" href="#__codelineno-19-14"></a>13. [B] (Armbian) install plymouth if /etc/apt/sources.list.d/armbian.{list,sources} present
4087+
</span><span id="__span-19-15"><a id="__codelineno-19-15" name="__codelineno-19-15" href="#__codelineno-19-15"></a>14. [B] Save install manifest /etc/armbian/desktop/&lt;de&gt;.packages and &lt;de&gt;.tier
4088+
</span><span id="__span-19-16"><a id="__codelineno-19-16" name="__codelineno-19-16" href="#__codelineno-19-16"></a>15. [B] Purge unwanted packages apt-get remove --purge $DESKTOP_PACKAGES_UNINSTALL
4089+
</span><span id="__span-19-17"><a id="__codelineno-19-17" name="__codelineno-19-17" href="#__codelineno-19-17"></a>16. [B] Install branding module_desktop_branding $de (browser policies, VPU flags, etc.)
4090+
</span><span id="__span-19-18"><a id="__codelineno-19-18" name="__codelineno-19-18" href="#__codelineno-19-18"></a>17. [R] Add user to groups sudo netdev audio video dialout plugdev input bluetooth systemd-journal ssh
4091+
</span><span id="__span-19-19"><a id="__codelineno-19-19" name="__codelineno-19-19" href="#__codelineno-19-19"></a>18. [R] Profile sync daemon (psd) touch ~/.activate_psd, sudoers entry
4092+
</span><span id="__span-19-20"><a id="__codelineno-19-20" name="__codelineno-19-20" href="#__codelineno-19-20"></a>19. [R] Sync skel to existing users module_update_skel install (with chown -R safety net)
4093+
</span><span id="__span-19-21"><a id="__codelineno-19-21" name="__codelineno-19-21" href="#__codelineno-19-21"></a>20. [R] Stop other DMs gdm3/lightdm/sddm one by one
4094+
</span><span id="__span-19-22"><a id="__codelineno-19-22" name="__codelineno-19-22" href="#__codelineno-19-22"></a>21. [R] Start display manager systemctl start display-manager ← container path also skips
4095+
</span><span id="__span-19-23"><a id="__codelineno-19-23" name="__codelineno-19-23" href="#__codelineno-19-23"></a>22. [R] Switch default.target systemctl set-default graphical.target ONLY if step 21 succeeded
4096+
</span><span id="__span-19-24"><a id="__codelineno-19-24" name="__codelineno-19-24" href="#__codelineno-19-24"></a>23. [R] Enable auto-login module_desktops auto de=$de
40954097
</span></code></pre></div>
4096-
<p>If step 10 or 11 fails, the function returns 1 with no further state changes — the manifest is not written, <code>default.target</code> stays at <code>multi-user</code>, no DM is started. The system is in the same state as if the install had never run.</p>
4098+
<p><strong><code>mode=build</code></strong> is used by the Armbian build framework at image-creation time. At that point the rootfs has no regular user (armbian-firstrun creates the first user on first boot), and DM/systemd operations make no sense inside a chroot. The packages, branding, manifests, and <code>/etc/skel</code> all land correctly; the first user inherits skel at <code>useradd</code> time and armbian-firstrun manages <code>graphical.target</code>.</p>
4099+
<p>If step 11 or 12 fails, the function returns 1 with no further state changes — the manifest is not written, <code>default.target</code> stays at <code>multi-user</code>, no DM is started. The system is in the same state as if the install had never run.</p>
40974100
<h2 id="lifecycle-remove">Lifecycle: remove<a class="headerlink" href="#lifecycle-remove" title="Permanent link">&para;</a></h2>
40984101
<div class="language-text highlight"><span class="filename">Text Only</span><pre><span></span><code><span id="__span-20-1"><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a>1. Validate args de= required
40994102
</span><span id="__span-20-2"><a id="__codelineno-20-2" name="__codelineno-20-2" href="#__codelineno-20-2"></a>2. Read installed tier marker /etc/armbian/desktop/&lt;de&gt;.tier (default: minimal)

912/search/search_index.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)