Причина его поломки
NixOS - декларативная операционная система. Это означает, что каталоги, такие как /etc
, находятся внутри каталога только для чтения /nix/store
. Только nix-демону разрешено монтировать nix-хранилище как доступное для записи. Следовательно, вы должны создать запись systemd.services.<yourservice>
в вашем configuration.nix
для взаимодействия с базовой системой;В качестве альтернативы вы можете напрямую установить nixpkgs и указать свою конфигурацию на свой форк.
Все работающие службы, не объявленные пользователем явно, могут считаться живущими внутри nixpkgs/nixos/modules
.
Исправление
configuration.nix:
{
systemd.services.foo = {
enable = true;
description = "bar";
unitConfig = {
Type = "simple";
...
};
serviceConfig = {
ExecStart = "${foo}/bin/foo";
...
};
wantedBy = [ "multi-user.target" ];
...
}
пользовательских служб
почти идентично, за исключением того, что ониначать с systemd.user.services
. Кроме того, домашние каталоги пользователей не управляются упорядоченно, поэтому вы также можете поместить обычный файл системного модуля в $XDG_CONFIG_DIR/systemd
как обычно.
релевантно:
Полный список допустимых атрибутов для systemd.services.<name>
, От: Руководство NixOS
Основы модулей , От: Wiki