You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -39,7 +39,7 @@ It fetches the installer with its dependencies and runs it.
39
39
40
40
### Installer
41
41
42
-
See [Installation Overview](docs/general/002-installation-overview.md) for what it asks and what it does, and [oparch-installer](docs/tools/oparch-installer/000-command.md) for the installer tool itself.
42
+
See [Installation Overview](docs/general/002-installation-overview.md) for what it asks and what it does, and [oparch-installer](docs/tools/installer/unattended/000-command.md) for the installer tool itself.
Copy file name to clipboardExpand all lines: docs/README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -37,7 +37,7 @@ Section order:
37
37
38
38
## Tool
39
39
40
-
Documents defining one tool each. Every tool has its own directory, named after the command, and its documents are numbered inside it: `tools/<tool-name>/<number>-<name>.md`.
40
+
Documents defining one tool each. They are laid out the way the sources of the tools are, as [Repository Layout](development/002-repository-layout.md) lays those out: a directory for each entity, named after it, and inside it a directory for each tool, named after what follows the entity in the tool's name. `oparch-snapshot-restore` is `tools/snapshot/restore/`, and the installer's two are `tools/installer/unattended/` and `tools/installer/interactive/`. A tool's documents are numbered inside its directory: `tools/<entity>/<tool>/<number>-<name>.md`.
41
41
42
42
The first document of a tool is its command document, `000-command.md`, with this section order:
Copy file name to clipboardExpand all lines: docs/decisions/009-preboot-ownership-message.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,7 +10,7 @@ The return message is optional. When enabled, it is shown at the disk unlock pro
10
10
11
11
### The message
12
12
13
-
The wording of the message, the languages it offers and the data it needs are not fixed by this project: they come from a template package, which the operator may supply and which the project ships one of. Its format is [Return Message Template Package Format](../tools/oparch-return-message-render/001-template-package-format.md).
13
+
The wording of the message, the languages it offers and the data it needs are not fixed by this project: they come from a template package, which the operator may supply and which the project ships one of. Its format is [Return Message Template Package Format](../tools/return-message/render/001-template-package-format.md).
14
14
15
15
A package is data. Nothing in it is executed, and its text is escaped wherever it is embedded, so a package obtained from a URL cannot introduce anything that runs during boot.
16
16
@@ -22,7 +22,7 @@ The message is rendered to images, and those images are what the unlock screen d
22
22
23
23
The rendered images reach the edges of the screen. Their content does not: the renderer composes them with a margin around it.
24
24
25
-
What the message looks like, and how the languages are arranged, are the theme's, as decided in [Return Message Themes](../tools/oparch-return-message-render/004-themes.md).
25
+
What the message looks like, and how the languages are arranged, are the theme's, as decided in [Return Message Themes](../tools/return-message/render/004-themes.md).
26
26
27
27
Everything the unlock screen needs is on the machine before the initramfs is built. Nothing is fetched at boot.
28
28
@@ -54,7 +54,7 @@ If the boot splash fails, unlock still falls back to a text-mode prompt.
54
54
55
55
- Contact data is intentionally public on the pre-boot screen.
56
56
- The rendered message is an image, so it carries no selectable text. This is accepted: at this point there is no operating system and no assistive tooling, and what a finder sees is pixels either way.
57
-
- Changing the message on an installed system means rendering it again with [oparch-return-message-render](../tools/oparch-return-message-render/000-command.md).
57
+
- Changing the message on an installed system means rendering it again with [oparch-return-message-render](../tools/return-message/render/000-command.md).
58
58
- Return-message readability must be validated on the real display resolutions used by the target machines.
59
-
- What the rendered message looks like is a theme's, decided in [Return Message Themes](../tools/oparch-return-message-render/004-themes.md).
59
+
- What the rendered message looks like is a theme's, decided in [Return Message Themes](../tools/return-message/render/004-themes.md).
Copy file name to clipboardExpand all lines: docs/decisions/014-dotfiles.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@
8
8
9
9
The configuration of the machine is one source, and every work context takes what it needs from it. There is no second copy of a file for a second context.
10
10
11
-
What one context or one machine needs and another does not is declared, not kept apart: a rule says which contexts and which machines it applies to, and the same source produces all of them. The syntax of those rules is [Dotfiles Map Format](../tools/oparch-dotfiles-sync/001-map-format.md).
11
+
What one context or one machine needs and another does not is declared, not kept apart: a rule says which contexts and which machines it applies to, and the same source produces all of them. The syntax of those rules is [Dotfiles Map Format](../tools/dotfiles/sync/001-map-format.md).
12
12
13
13
`/dotfiles` is owned `root:dotfiles` with mode `2775`.
14
14
@@ -22,9 +22,9 @@ Content an installation places under `/dotfiles` is left with directories at `27
22
22
23
23
`/dotfiles` is listed in git's system-wide `safe.directory`.
24
24
25
-
Secret values are not kept in `/dotfiles`. They live in a store of their own, `/etc/oparch/dotfiles-sync/secrets/`, owned `root:root` with mode `0700`, which the `dotfiles` group does not reach. What that store holds and how it is read is [Dotfiles Map Format](../tools/oparch-dotfiles-sync/001-map-format.md).
25
+
Secret values are not kept in `/dotfiles`. They live in a store of their own, `/etc/oparch/dotfiles-sync/secrets/`, owned `root:root` with mode `0700`, which the `dotfiles` group does not reach. What that store holds and how it is read is [Dotfiles Map Format](../tools/dotfiles/sync/001-map-format.md).
26
26
27
-
A change under `/dotfiles` reaches a linked target at once, because that target is a link to it. Everything the map copies or renders is produced by [oparch-dotfiles-sync](../tools/oparch-dotfiles-sync/000-command.md), and changes when it is run.
27
+
A change under `/dotfiles` reaches a linked target at once, because that target is a link to it. Everything the map copies or renders is produced by [oparch-dotfiles-sync](../tools/dotfiles/sync/000-command.md), and changes when it is run.
28
28
29
29
## Why
30
30
@@ -41,5 +41,5 @@ A change under `/dotfiles` reaches a linked target at once, because that target
41
41
42
42
-`/dotfiles` is a Git repository only when the package it was installed from was one. A package taken as a directory or an archive leaves files, and the restore path [Disk Layout](001-disk-layout.md) describes does not exist on that machine until someone makes it a repository.
43
43
- The `dotfiles` group is a boundary between the accounts of one person and not between people, as [Work Contexts and Accounts](000-work-contexts-and-accounts.md) establishes. Shared write access to shared configuration is the point of it, not a concession.
44
-
- What [oparch-dotfiles-sync](../tools/oparch-dotfiles-sync/000-command.md) writes is the targets a map declares and its own state under `/var/lib/oparch/`. Its permission to read `/dotfiles` is the group's, and nothing here asks it to write there.
44
+
- What [oparch-dotfiles-sync](../tools/dotfiles/sync/000-command.md) writes is the targets a map declares and its own state under `/var/lib/oparch/`. Its permission to read `/dotfiles` is the group's, and nothing here asks it to write there.
Copy file name to clipboardExpand all lines: docs/development/002-repository-layout.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -57,7 +57,7 @@ An entity is added by creating its directory and its library. A tool is added by
57
57
58
58
The domain logic of an entity belongs to its library, whichever of its tools first needed it, and stays there when a project outside the entity needs it too. That project symlinks the namespace exactly as it symlinks a shared one.
59
59
60
-
The return-message template package and its values format are the case: they belong to the return message, and they are specified under `oparch-return-message-render` in `docs/`. They live in `tools/return-message/lib/baml_src/ns_return_message/`, and the installer links them from there, because it asks for the fields a package declares and validates the same values in its own configuration file.
60
+
The return-message template package and its values format are the case: they belong to the return message, and they are specified under `docs/tools/return-message/render/`. They live in `tools/return-message/lib/baml_src/ns_return_message/`, and the installer links them from there, because it asks for the fields a package declares and validates the same values in its own configuration file.
61
61
62
62
The project of a tool holds its interface and no domain logic: the arguments it reads and what it prints, or the screens it draws and whatever the interface does to the system so it can be used.
Copy file name to clipboardExpand all lines: docs/development/005-baml-working-notes.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -51,7 +51,7 @@ Three things about the generated entry point:
51
51
52
52
## The standard library
53
53
54
-
-`baml.yaml.parse` requires **string mapping keys**: a mapping keyed by numbers fails with `YAML mappings must use string keys to fit baml.json.json`. A format that wants to key entries by a number has to quote them, which is why `arrangement` in [Return Message Theme Format](../tools/oparch-return-message-render/003-theme-format.md) is written `"1":`.
54
+
-`baml.yaml.parse` requires **string mapping keys**: a mapping keyed by numbers fails with `YAML mappings must use string keys to fit baml.json.json`. A format that wants to key entries by a number has to quote them, which is why `arrangement` in [Return Message Theme Format](../tools/return-message/render/003-theme-format.md) is written `"1":`.
55
55
-`baml.sys.exec`'s `ProcessOptions.env`**replaces the environment rather than adding to it**. `PATH` survives, `HOME` does not. Anything the child needs has to be passed.
56
56
-`baml.sys.exec` takes the program and its arguments separately, so nothing built from a template package or a theme is ever parsed by a shell.
Copy file name to clipboardExpand all lines: docs/development/006-end-to-end-testing.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
End-to-end tests boot this project's installation image under QEMU and let the installer inside it build a machine on a disposable disk. Everything below the installer — `pacstrap`, `arch-chroot`, `cryptsetup`, `sgdisk` — is the genuine article, and the result is verified by booting the disk that was just installed.
4
4
5
-
This document describes the harness and the cases it runs. It does not describe the installer, which is documented in [oparch-installer](../tools/oparch-installer/000-command.md).
5
+
This document describes the harness and the cases it runs. It does not describe the installer, which is documented in [oparch-installer](../tools/installer/unattended/000-command.md).
6
6
7
7
The **harness** is neither the thing under test nor the assertions: it is what makes running them possible at all. The word is the one used for a wiring harness, the thing that connects and drives, and not for anything to do with the tools this project is written with.
Copy file name to clipboardExpand all lines: docs/development/007-installation-checks.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,7 +18,7 @@ Run against the machine that was just installed, once it boots.
18
18
| Every directory under `/dotfiles` is `2775` and every file `664`| A copy carries the modes it came from, so this is the half the ACL cannot do. Wrong, the operator can read the shared configuration and change none of it. |
19
19
|`/etc/gitconfig` names `/dotfiles` as a safe directory | The tree is root's and the operator is not, so git refuses to work in it without this. It is written rather than set with `git config`, so nothing else would fail if it were missing — until someone runs git there. |
20
20
|`/etc/oparch/dotfiles-sync/secrets` is `0700 root:root`, and each file in it `0600`| The values in it are credentials rendered into configuration afterwards. Loosened, every work context can read every secret the dotfiles carry, which the store exists to prevent. |
21
-
|`ipxe` is installed | The netboot binary comes from the package rather than from a download, as [Installer Inputs and Bootstrap Baseline](../tools/oparch-installer/002-inputs-and-bootstrap-baseline.md) decides. |
21
+
|`ipxe` is installed | The netboot binary comes from the package rather than from a download, as [Installer Inputs and Bootstrap Baseline](../tools/installer/unattended/002-inputs-and-bootstrap-baseline.md) decides. |
22
22
|`/boot/EFI/OpinionatedArch/netbootx64.efi` is there, and its checksum equals `/usr/share/ipxe/x86_64/ipxe-arch.efi`| That the file on the EFI partition is the one the package shipped, and not something fetched. |
0 commit comments