Handbook / Current desktop documentation

Organization Profiles

Reviewed installation software, defaults and organization policies.

This is the English desktop Handbook, published online from the same generated catalog. References to buttons, panels and menus describe the installed desktop. Package updates can be newer than the downloadable ISO. Check installation & validation scope.

Use the official ISO unchanged. On a FAT32 stick labelled EITRANSWERS, put eitr-profile.json beside or instead of eitr-answers.json. With only a profile, the normal wizard includes its changes in Review. With both files, the installer lists the disk operation and every profile change before its 15-second countdown; Ctrl+C cancels before disk changes. Keep the stick connected until power-off.

A complete example (replace all example digests with the actual lowercase SHA-256 from sha256sum; copy these files onto the stick):

{
  "version": 1,
  "name": "Example office",
  "remove": ["steam", "moonlight-qt", "eitr-sunshine", "tailscale"],
  "add": {
    "recipes": ["productivity/libreoffice"],
    "packages": ["chromium"],
    "flathub": ["us.zoom.Zoom"],
    "files": [{"file": "packages/office-tools-1-1-any.pkg.tar.zst", "sha256": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"}]
  },
  "defaults": {
    "theme": "norse",
    "wallpaper": {"file": "office.png", "sha256": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"},
    "browser": "chromium",
    "update_channel": "stable",
    "repository": {
      "name": "office",
      "server": "https://packages.example.org/$arch",
      "key": {"file": "office-key.asc", "sha256": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"}
    }
  },
  "setup": {"file": "setup.sh", "sha256": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"},
  "policies": {"remote_access": false, "assistants_together": false, "update_channel": "stable", "gaming": false}
}

Only version and name are required. Unknown and duplicate JSON keys are errors. Remove optional sections you do not need. Paths are relative to the stick, with no symlinks, parent traversal (..) or absolute paths. All referenced files must exist and match their checksum before the installer changes any disk. Wallpaper files must decode as PNG, JPEG or WebP. The repository key must contain exactly one OpenPGP public key; the HTTPS server cannot contain credentials. Its key is added and locally trusted in pacman's keyring; only use an organization key you trust. Package archives and setup scripts are trusted administrator code, not sandboxed.

remove accepts only the reviewed distro/removable-apps.json allowlist. The entry-by-entry review is in distro/PROFILE-PACKAGE-REVIEW.md. Protected or unknown packages refuse the whole profile. pacman checks dependencies; removal never uses recursive removal or dependency overrides. Group policies exclude every allowlisted package in that group: gaming, media, development, sharing, and remote_access. true permits a feature; false disables it. The update_channel policy accepts only "stable". Omitted policies are unrestricted.

Recipes use group/name from distro/software.json. Only prebuilt pacman and Flatpak recipes are accepted. AUR and interactive managed/webapp recipes are refused; provide reviewed prebuilt package files instead. Repository packages, recipes and Flathub additions require internet. Stick packages install offline when their dependencies are already on the ISO or also supplied on the stick. Package names must be available in pacman's current sync databases when checked; refresh them through the normal update workflow before checking online additions. No AUR builds run during installation. Online pacman additions use a full upgrade, never a partial upgrade. Extra repositories are configured for future updates; packages available only there should be supplied as stick files for installation.

Browser defaults support Firefox and Chromium. Chromium must also be added. Theme and wallpaper defaults are saved for the selected desktop user's next login; profile application does not restart their desktop. The extra repository and update channel are system-wide. setup runs as root with the staged stick directory as its working directory, after the profile is recorded. A SHA-256 marker records its attempt before starting, so a failed or interrupted script is not rerun silently. Change the script (and its digest) to authorize another attempt. Script output and failures remain visible; a failed installation does not roll back completed package transactions.

On an installed machine:

eitr profile check /run/media/alex/EITRANSWERS
eitr profile apply /run/media/alex/EITRANSWERS

check reads files and package metadata and uses temporary validation directories; it changes no system configuration. apply uses the explicit root-owned eitr-system profile-apply action, privately stages and rechecks the stick, shows the same summary, then requires typing APPLY PROFILE. Cancellation changes nothing. It removes installed excluded packages through pacman, installs additions, saves defaults, writes root-owned /etc/eitr/policies.json (0644, root:root), and records /etc/eitr/profile.json. Applying another profile replaces the recorded choices; it does not automatically reinstall previously removed apps or reset omitted preferences. The setup marker remains across profile replacements.

The recorded exclusions filter manual installer manifests. An IgnorePkg include in pacman's options also prevents System Update from pulling excluded packages back as dependencies; such a dependency conflict must stop the upgrade. Seeding user settings installs no applications. Policies hide Elephant menu/search rows, Remote Access bar entries, the assistants-together switch and channel controls; Eitr's tools also refuse these actions directly. Existing sessions may need their next menu/panel refresh to reflect a newly applied policy.

This is not a lockdown against a user with root. Root can edit the policy or run other tools. Real lockdown also means not granting root. Policies govern Eitr workflows, not arbitrary third-party software or fleet management.

VM verification is pending. See distro/PROFILE-VM-TESTING.md for exact commands.