particle-os-modules/modules/systemd
fiftydinar 33226b9b73
feat(systemd): Add support for unmasking & masking units (#88)
* feat(systemd): Add support for masking services

* Use unit term in README

* Fix README grammar

* Note about unmasking

* Fix typo in README

* Add unmask & more info about systemctl commands

Address:

https://github.com/ublue-os/bling/pull/88#discussion_r1436877565

https://github.com/ublue-os/bling/pull/88#discussion_r1436917124

* docs: clarify purpose of unmasking

* docs: Fix systemd module README typo

---------

Co-authored-by: xyny <60004820+xynydev@users.noreply.github.com>
2023-12-31 10:31:49 +00:00
..
README.md feat(systemd): Add support for unmasking & masking units (#88) 2023-12-31 10:31:49 +00:00
systemd.sh feat(systemd): Add support for unmasking & masking units (#88) 2023-12-31 10:31:49 +00:00

systemd Module for Startingpoint

The systemd module streamlines the management of systemd units during image building. Units are divided into system and user categories, with system units managed directly using systemctl and user units using systemctl --user. You can specify which units to enable/disable or unmask/mask under each category.

Example Configuration

type: systemd
system:
  enabled:
    - example.service
  disabled:
    - example.target
  unmasked:
    - example.service    
  masked:
    - example.service
user:
  enabled:
    - example.timer
  disabled:
    - example.service
  unmasked:
    - example.service    
  masked:
    - example.service

In this example:

System Units

  • example.service: Enabled (runs on system boot)
  • example.target: Disabled (does not run on system boot, unless other unit strictly requires it)
  • example.service: Unmasked (runs on system boot, even if previously masked)
  • example.service: Masked (does not run on system boot, under any circumstances)

User Units

  • example.timer: Enabled (runs for the user)
  • example.service: Disabled (does not run for the user, unless other unit strictly requires it)
  • example.service: Unmasked (runs for the user, even if previously masked)
  • example.service: Masked (does not run for the user, under any circumstances)

This configuration achieves the same results as the following commands:

# System Units
systemctl enable example.service
systemctl disable example.target
systemctl unmask example.service 
systemctl mask example.service 

# User Units
systemctl --global enable example.timer
systemctl --global disable example.service
systemctl --global unmask example.service
systemctl --global mask example.service

For more information about these systemctl commands, please visit: https://www.freedesktop.org/software/systemd/man/latest/systemctl.html#enable%20UNIT%E2%80%A6 https://www.freedesktop.org/software/systemd/man/latest/systemctl.html#disable%20UNIT%E2%80%A6 https://www.freedesktop.org/software/systemd/man/latest/systemctl.html#unmask%20UNIT%E2%80%A6 https://www.freedesktop.org/software/systemd/man/latest/systemctl.html#mask%20UNIT%E2%80%A6