particle-os-modules/modules/files
xyny be6e4ba5bd
feat: add typespec schemas for modules (#233)
* feat: add typespec for bling and akmods for testing

* chore: temporarily change module source to dev branch

* feat: add missing module typespecs from blue-build/schema

* feat: add schemas for default-flatpaks module

* chore: annotate some parameters as optional

* fix: typo in default-flatpaks schema

* feat: add schema for files module

* feat: add script module schema

* feat: add signing module schema

* docs: add module.yml docs etc.

* fix(default-flatpaks): don't capitalize string in typespec

* feat: add schemas for gnome-extensions

* fix(files): properly declare string: string record type

* chore: add tsp for gschema-overrides

* chore: tsp for systemd module

* chore: add link to systemd tsp to module.yml

* chore: add tsp for yafti module

* feat: add docstrings for files module

* feat: add tsp for chezmoi module

* feat: docstrings for akmods tsp

* feat: docstrings for bling tsp

* feat: docstrings for default flatpaks tsp

* fix: link to files module docs page in files module tsp

* feat: docstrings for fonts module tsp

* feat: add docstrings for gnome extensions tsp

* feat: docstrings for gschema overrides tsp

* feat: docstrings for rpm ostree tsp

* feat: docstrings for script tsp

* feat: docstrings for signing module

* feat: docstrings for systemd tsp

* feat: docstrings for yafti module

* fix: typo in files tsp

* feat: typespec for brew module

* chore: update rpm ostree tsp for keys: prop

* fix: use typespec to declare default values

* fix: errors from previous commit

* docs: add typespec instructions

* docs: chore: add typespec docs link for docs syntax

* chore: switch to semicolon for ending property definitions

* docs: fix: typo inlude -> include

* feat: tsp for justfiles module

* chore: change links to reference main branch

---------

Co-authored-by: fiftydinar <65243233+fiftydinar@users.noreply.github.com>
2024-07-09 16:25:31 +00:00
..
files.sh fix(files): Ensure that parent dot files & folders are copied (#115) 2024-02-03 18:40:24 +00:00
files.tsp feat: add typespec schemas for modules (#233) 2024-07-09 16:25:31 +00:00
module.yml feat: add typespec schemas for modules (#233) 2024-07-09 16:25:31 +00:00
README.md docs(files): re-add file documentation (#205) 2024-04-13 09:34:19 +00:00

files

The files module can be used to copy directories from config/files to any location in your image at build time, as long as the location exists at build time (e.g. you can't put files in /home/<username>, because users haven't been created yet prior to first boot).

:::note If you want to place files into /etc, there are two ways to do it:

  1. copying a directory in config/files directly to /etc to add all of its files at build time, or
  2. putting the files you want there in /usr/etc as part of copying things over to /usr, which rpm-ostree will then copy to /etc at runtime/boot.

Typically, you will want to use the latter option (putting files in /usr/etc) in almost all cases, since that is the proper directory for "system" configuration templates on atomic Fedora distros, whereas /etc is meant for manual overrides and editing by the machine's admin after installation (see issue https://github.com/blue-build/legacy-template/issues/28). However, if you really need something to be in /etc at build time --- for instance, if you for some reason need to place a repo file in /etc/yum.repos.d in such a way that it is used by a rpm-ostree module later on --- then the former option will be necessary. :::

:::caution The files module cannot write to directories that will later be symlinked to point to other places (typically /var) by rpm-ostree.

This is because it doesn't make sense for a directory to be both a symlink and a real directory that has had actual files directly copied to it, so the files module copying files to one of those directories (thereby instantiating it as a real directory) and rpm-ostree's behavior regarding them will necessarily conflict.

For reference, according to the official Fedora documentation, here is a list of the directories that rpm-ostree symlinks to other locations:

  • /home/var/home
  • /opt/var/opt
  • /srv/var/srv
  • /root/var/roothome
  • /usr/local/var/usrlocal
  • /mnt/var/mnt
  • /tmp/sysroot/tmp

So don't use files to copy any files to any of the directories on the left, because at runtime rpm-ostree will want to link them to the ones on the right, which will cause a conflict as explained above.

:::