mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2024-12-27 05:43:50 +03:00
Allow building/testing individual systemd units
This commit is contained in:
parent
174f5813ef
commit
08a85c2152
@ -652,6 +652,37 @@ $ qemu-system-x86_64 -kernel ./kernel/bzImage -initrd ./initrd/initrd -hda /dev/
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><varname>systemd.units.<replaceable>unit-name</replaceable>.unit</varname></term>
|
||||||
|
<listitem>
|
||||||
|
<para>This builds the unit with the specified name. Note that
|
||||||
|
since unit names contain dots
|
||||||
|
(e.g. <literal>httpd.service</literal>), you need to put them
|
||||||
|
between quotes, like this:
|
||||||
|
|
||||||
|
<screen>
|
||||||
|
$ nix-build -A 'config.systemd.units."httpd.service".unit'
|
||||||
|
</screen>
|
||||||
|
|
||||||
|
You can also test individual units, without rebuilding the whole
|
||||||
|
system, by putting them in
|
||||||
|
<filename>/run/systemd/system</filename>:
|
||||||
|
|
||||||
|
<screen>
|
||||||
|
$ cp $(nix-build -A 'config.systemd.units."httpd.service".unit')/httpd.service \
|
||||||
|
/run/systemd/system/tmp-httpd.service
|
||||||
|
$ systemctl daemon-reload
|
||||||
|
$ systemctl start tmp-httpd.service
|
||||||
|
</screen>
|
||||||
|
|
||||||
|
Note that the unit must not have the same name as any unit in
|
||||||
|
<filename>/etc/systemd/system</filename> since those take
|
||||||
|
precedence over <filename>/run/systemd/system</filename>.
|
||||||
|
That’s why the unit is installed as
|
||||||
|
<filename>tmp-httpd.service</filename> here.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
</variablelist>
|
</variablelist>
|
||||||
|
|
||||||
</para>
|
</para>
|
||||||
|
@ -311,8 +311,6 @@ let
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
nixosUnits = mapAttrsToList makeUnit cfg.units;
|
|
||||||
|
|
||||||
units = pkgs.runCommand "units" { preferLocalBuild = true; }
|
units = pkgs.runCommand "units" { preferLocalBuild = true; }
|
||||||
''
|
''
|
||||||
mkdir -p $out
|
mkdir -p $out
|
||||||
@ -338,7 +336,7 @@ let
|
|||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
for i in ${toString nixosUnits}; do
|
for i in ${toString (mapAttrsToList (n: v: v.unit) cfg.units)}; do
|
||||||
ln -s $i/* $out/
|
ln -s $i/* $out/
|
||||||
done
|
done
|
||||||
|
|
||||||
@ -387,32 +385,41 @@ in
|
|||||||
description = "Definition of systemd units.";
|
description = "Definition of systemd units.";
|
||||||
default = {};
|
default = {};
|
||||||
type = types.attrsOf types.optionSet;
|
type = types.attrsOf types.optionSet;
|
||||||
options = {
|
options = { name, config, ... }:
|
||||||
text = mkOption {
|
{ options = {
|
||||||
type = types.str;
|
text = mkOption {
|
||||||
description = "Text of this systemd unit.";
|
type = types.str;
|
||||||
|
description = "Text of this systemd unit.";
|
||||||
|
};
|
||||||
|
enable = mkOption {
|
||||||
|
default = true;
|
||||||
|
type = types.bool;
|
||||||
|
description = ''
|
||||||
|
If set to false, this unit will be a symlink to
|
||||||
|
/dev/null. This is primarily useful to prevent specific
|
||||||
|
template instances (e.g. <literal>serial-getty@ttyS0</literal>)
|
||||||
|
from being started.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
requiredBy = mkOption {
|
||||||
|
default = [];
|
||||||
|
type = types.listOf types.string;
|
||||||
|
description = "Units that require (i.e. depend on and need to go down with) this unit.";
|
||||||
|
};
|
||||||
|
wantedBy = mkOption {
|
||||||
|
default = [];
|
||||||
|
type = types.listOf types.string;
|
||||||
|
description = "Units that want (i.e. depend on) this unit.";
|
||||||
|
};
|
||||||
|
unit = mkOption {
|
||||||
|
internal = true;
|
||||||
|
description = "The generated unit.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = {
|
||||||
|
unit = makeUnit name config;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
enable = mkOption {
|
|
||||||
default = true;
|
|
||||||
type = types.bool;
|
|
||||||
description = ''
|
|
||||||
If set to false, this unit will be a symlink to
|
|
||||||
/dev/null. This is primarily useful to prevent specific
|
|
||||||
template instances (e.g. <literal>serial-getty@ttyS0</literal>)
|
|
||||||
from being started.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
requiredBy = mkOption {
|
|
||||||
default = [];
|
|
||||||
type = types.listOf types.string;
|
|
||||||
description = "Units that require (i.e. depend on and need to go down with) this unit.";
|
|
||||||
};
|
|
||||||
wantedBy = mkOption {
|
|
||||||
default = [];
|
|
||||||
type = types.listOf types.string;
|
|
||||||
description = "Units that want (i.e. depend on) this unit.";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.packages = mkOption {
|
systemd.packages = mkOption {
|
||||||
|
Loading…
Reference in New Issue
Block a user