Merge pull request #270024 from Artturin/fixrebuilds1

Revert "Systemd package rewrite"
This commit is contained in:
Martin Weinelt 2023-11-26 02:19:26 +01:00 committed by GitHub
commit 16500715eb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
21 changed files with 137 additions and 176 deletions

View file

@ -146,14 +146,14 @@
, docbook_xml_dtd_45 , docbook_xml_dtd_45
}: }:
assert withBootloader -> withEfi; assert withImportd -> withCompression;
assert withCoredump -> withCompression; assert withCoredump -> withCompression;
assert withHomed -> withCryptsetup; assert withHomed -> withCryptsetup;
assert withHomed -> withPam; assert withHomed -> withPam;
assert withImportd -> withCompression;
assert withRepart -> withCryptsetup;
assert withUkify -> withEfi; assert withUkify -> withEfi;
# passwdqc is not in nixpkgs yet. Feel free to please submit a PR. assert withRepart -> withCryptsetup;
assert withBootloader -> withEfi;
# passwdqc is not packaged in nixpkgs yet, if you want to fix this, please submit a PR.
assert !withPasswordQuality; assert !withPasswordQuality;
let let
@ -161,9 +161,8 @@ let
wantGcrypt = withResolved || withImportd; wantGcrypt = withResolved || withImportd;
version = "254.3"; version = "254.3";
# Bump this variable on every (major) version change. See below (in the meson # Bump this variable on every (major) version change. See below (in the meson options list) for why.
# options list) for why. # command:
# Use the script below to do this:
# $ curl -s https://api.github.com/repos/systemd/systemd/releases/latest | \ # $ curl -s https://api.github.com/repos/systemd/systemd/releases/latest | \
# jq '.created_at|strptime("%Y-%m-%dT%H:%M:%SZ")|mktime' # jq '.created_at|strptime("%Y-%m-%dT%H:%M:%SZ")|mktime'
releaseTimestamp = "1690536449"; releaseTimestamp = "1690536449";
@ -171,9 +170,8 @@ in
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
inherit pname version; inherit pname version;
# We use systemd/systemd-stable for src, and ship NixOS-specific patches # We use systemd/systemd-stable for src, and ship NixOS-specific patches inside nixpkgs directly
# inside nixpkgs directly This has proven to be less error-prone than the # This has proven to be less error-prone than the previous systemd fork.
# previous systemd fork.
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "systemd"; owner = "systemd";
repo = "systemd-stable"; repo = "systemd-stable";
@ -181,9 +179,9 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-ObnsAiKwhwEb4ti611eS/wGpg3Sss/pUy/gANPAbXbs="; hash = "sha256-ObnsAiKwhwEb4ti611eS/wGpg3Sss/pUy/gANPAbXbs=";
}; };
# On major changes, or when otherwise required, you *must* reformat the # On major changes, or when otherwise required, you *must* reformat the patches,
# patches, `git am path/to/00*.patch` them into a systemd worktree, rebase to # `git am path/to/00*.patch` them into a systemd worktree, rebase to the more recent
# the more recent systemd version, and export the patches again via # systemd version, and export the patches again via
# `git -c format.signoff=false format-patch v${version} --no-numbered --zero-commit --no-signature`. # `git -c format.signoff=false format-patch v${version} --no-numbered --zero-commit --no-signature`.
# Use `find . -name "*.patch" | sort` to get an up-to-date listing of all patches # Use `find . -name "*.patch" | sort` to get an up-to-date listing of all patches
patches = [ patches = [
@ -451,77 +449,73 @@ stdenv.mkDerivation (finalAttrs: {
mesonBuildType = "release"; mesonBuildType = "release";
mesonFlags = [ mesonFlags = [
(lib.mesonOption "version-tag" version) "-Dversion-tag=${version}"
# We bump this variable on every (major) version change to ensure that we # We bump this variable on every (major) version change to ensure
# have known-good value for a timestamp that is in the (not so distant) # that we have known-good value for a timestamp that is in the (not so distant) past.
# past. # This serves as a lower bound for valid system timestamps during startup. Systemd will
# This serves as a lower bound for valid system timestamps during # reset the system timestamp if this date is +- 15 years from the system time.
# startup. Systemd will reset the system timestamp if this date is +- 15
# years from the system time.
#
# See the systemd v250 release notes for further details: # See the systemd v250 release notes for further details:
# https://github.com/systemd/systemd/blob/60e930fc3e6eb8a36fbc184773119eb8d2f30364/NEWS#L258-L266 # https://github.com/systemd/systemd/blob/60e930fc3e6eb8a36fbc184773119eb8d2f30364/NEWS#L258-L266
(lib.mesonOption "time-epoch" releaseTimestamp) "-Dtime-epoch=${releaseTimestamp}"
(lib.mesonOption "mode" "release") "-Dmode=release"
(lib.mesonOption "dbuspolicydir" "${placeholder "out"}/share/dbus-1/system.d") "-Ddbuspolicydir=${placeholder "out"}/share/dbus-1/system.d"
(lib.mesonOption "dbussessionservicedir" "${placeholder "out"}/share/dbus-1/services") "-Ddbussessionservicedir=${placeholder "out"}/share/dbus-1/services"
(lib.mesonOption "dbussystemservicedir" "${placeholder "out"}/share/dbus-1/system-services") "-Ddbussystemservicedir=${placeholder "out"}/share/dbus-1/system-services"
"-Dpam=${lib.boolToString withPam}"
(lib.mesonBool "pam" withPam) "-Dpamconfdir=${placeholder "out"}/etc/pam.d"
(lib.mesonOption "pamconfdir" "${placeholder "out"}/etc/pam.d") "-Drootprefix=${placeholder "out"}"
(lib.mesonOption "rootprefix" "${placeholder "out"}") "-Dpkgconfiglibdir=${placeholder "dev"}/lib/pkgconfig"
(lib.mesonOption "pkgconfiglibdir" "${placeholder "dev"}/lib/pkgconfig") "-Dpkgconfigdatadir=${placeholder "dev"}/share/pkgconfig"
(lib.mesonOption "pkgconfigdatadir" "${placeholder "dev"}/share/pkgconfig") "-Dloadkeys-path=${kbd}/bin/loadkeys"
(lib.mesonOption "loadkeys-path" "${kbd}/bin/loadkeys") "-Dsetfont-path=${kbd}/bin/setfont"
(lib.mesonOption "setfont-path" "${kbd}/bin/setfont") "-Dtty-gid=3" # tty in NixOS has gid 3
(lib.mesonOption "tty-gid" "3") # tty in NixOS has gid 3 "-Ddebug-shell=${bashInteractive}/bin/bash"
(lib.mesonOption "debug-shell" "${bashInteractive}/bin/bash") "-Dglib=${lib.boolToString withTests}"
(lib.mesonBool "glib" withTests)
# while we do not run tests we should also not build them. Removes about 600 targets # while we do not run tests we should also not build them. Removes about 600 targets
(lib.mesonBool "tests" false) "-Dtests=false"
(lib.mesonBool "acl" withAcl) "-Dacl=${lib.boolToString withAcl}"
(lib.mesonBool "analyze" withAnalyze) "-Danalyze=${lib.boolToString withAnalyze}"
(lib.mesonBool "audit" withAudit) "-Daudit=${lib.boolToString withAudit}"
(lib.mesonBool "gcrypt" wantGcrypt) "-Dgcrypt=${lib.boolToString wantGcrypt}"
(lib.mesonBool "importd" withImportd) "-Dimportd=${lib.boolToString withImportd}"
(lib.mesonBool "lz4" withCompression) "-Dlz4=${lib.boolToString withCompression}"
(lib.mesonBool "homed" withHomed) "-Dhomed=${lib.boolToString withHomed}"
(lib.mesonBool "logind" withLogind) "-Dlogind=${lib.boolToString withLogind}"
(lib.mesonBool "localed" withLocaled) "-Dlocaled=${lib.boolToString withLocaled}"
(lib.mesonBool "hostnamed" withHostnamed) "-Dhostnamed=${lib.boolToString withHostnamed}"
(lib.mesonBool "machined" withMachined) "-Dmachined=${lib.boolToString withMachined}"
(lib.mesonBool "networkd" withNetworkd) "-Dnetworkd=${lib.boolToString withNetworkd}"
(lib.mesonBool "oomd" withOomd) "-Doomd=${lib.boolToString withOomd}"
(lib.mesonBool "polkit" withPolkit) "-Dpolkit=${lib.boolToString withPolkit}"
(lib.mesonBool "libcryptsetup" withCryptsetup) "-Dlibcryptsetup=${lib.boolToString withCryptsetup}"
(lib.mesonBool "portabled" withPortabled) "-Dportabled=${lib.boolToString withPortabled}"
(lib.mesonBool "hwdb" withHwdb) "-Dhwdb=${lib.boolToString withHwdb}"
(lib.mesonBool "remote" withRemote) "-Dremote=${lib.boolToString withRemote}"
(lib.mesonBool "timedated" withTimedated) "-Dtimedated=${lib.boolToString withTimedated}"
(lib.mesonBool "timesyncd" withTimesyncd) "-Dtimesyncd=${lib.boolToString withTimesyncd}"
(lib.mesonBool "userdb" withUserDb) "-Duserdb=${lib.boolToString withUserDb}"
(lib.mesonBool "coredump" withCoredump) "-Dcoredump=${lib.boolToString withCoredump}"
(lib.mesonBool "firstboot" false) "-Dfirstboot=false"
(lib.mesonBool "resolve" withResolved) "-Dresolve=${lib.boolToString withResolved}"
(lib.mesonBool "split-usr" false) "-Dsplit-usr=false"
(lib.mesonBool "libcurl" wantCurl) "-Dlibcurl=${lib.boolToString wantCurl}"
(lib.mesonBool "libidn" false) "-Dlibidn=false"
(lib.mesonBool "libidn2" withLibidn2) "-Dlibidn2=${lib.boolToString withLibidn2}"
(lib.mesonBool "firstboot" withFirstboot) "-Dfirstboot=${lib.boolToString withFirstboot}"
(lib.mesonBool "sysusers" withSysusers) "-Dsysusers=${lib.boolToString withSysusers}"
(lib.mesonBool "repart" withRepart) "-Drepart=${lib.boolToString withRepart}"
(lib.mesonBool "sysupdate" withSysupdate) "-Dsysupdate=${lib.boolToString withSysupdate}"
(lib.mesonBool "quotacheck" false) "-Dquotacheck=false"
(lib.mesonBool "ldconfig" false) "-Dldconfig=false"
(lib.mesonBool "smack" true) "-Dsmack=true"
(lib.mesonBool "b_pie" true) "-Db_pie=true"
(lib.mesonBool "install-sysconfdir" false) "-Dinstall-sysconfdir=false"
(lib.mesonOption "sbat-distro" "nixos") "-Dsbat-distro=nixos"
(lib.mesonOption "sbat-distro-summary" "NixOS") "-Dsbat-distro-summary=NixOS"
(lib.mesonOption "sbat-distro-url" "https://nixos.org/") "-Dsbat-distro-url=https://nixos.org/"
(lib.mesonOption "sbat-distro-pkgname" "${pname}") "-Dsbat-distro-pkgname=${pname}"
(lib.mesonOption "sbat-distro-version" "${version}") "-Dsbat-distro-version=${version}"
/* /*
As of now, systemd doesn't allow runtime configuration of these values. So As of now, systemd doesn't allow runtime configuration of these values. So
the settings in /etc/login.defs have no effect on it. Many people think this the settings in /etc/login.defs have no effect on it. Many people think this
@ -532,79 +526,65 @@ stdenv.mkDerivation (finalAttrs: {
- https://github.com/systemd/systemd/issues/9843 - https://github.com/systemd/systemd/issues/9843
- https://github.com/systemd/systemd/issues/10184 - https://github.com/systemd/systemd/issues/10184
*/ */
(lib.mesonOption "system-uid-max" "999") "-Dsystem-uid-max=999"
(lib.mesonOption "system-gid-max" "999") "-Dsystem-gid-max=999"
(lib.mesonOption "sysvinit-path" "") "-Dsysvinit-path="
(lib.mesonOption "sysvrcnd-path" "") "-Dsysvrcnd-path="
(lib.mesonOption "sulogin-path" "${util-linux.login}/bin/sulogin") "-Dsulogin-path=${util-linux.login}/bin/sulogin"
(lib.mesonOption "nologin-path" "${util-linux.login}/bin/nologin") "-Dnologin-path=${util-linux.login}/bin/nologin"
(lib.mesonOption "mount-path" "${lib.getOutput "mount" util-linux}/bin/mount") "-Dmount-path=${lib.getOutput "mount" util-linux}/bin/mount"
(lib.mesonOption "umount-path" "${lib.getOutput "mount" util-linux}/bin/umount") "-Dumount-path=${lib.getOutput "mount" util-linux}/bin/umount"
(lib.mesonBool "create-log-dirs" false) "-Dcreate-log-dirs=false"
# Use cgroupsv2. This is already the upstream default, but better be explicit. # Use cgroupsv2. This is already the upstream default, but better be explicit.
(lib.mesonOption "default-hierarchy" "unified") "-Ddefault-hierarchy=unified"
# Upstream defaulted to disable manpages since they optimize for the much # Upstream defaulted to disable manpages since they optimize for the much
# more frequent development builds # more frequent development builds
(lib.mesonBool "man" true) "-Dman=true"
(lib.mesonBool "efi" withEfi) "-Defi=${lib.boolToString withEfi}"
(lib.mesonBool "bootloader" withBootloader) "-Dbootloader=${lib.boolToString withBootloader}"
(lib.mesonBool "ukify" withUkify) "-Dukify=${lib.boolToString withUkify}"
] ++ lib.optionals (withShellCompletions == false) [ ] ++ lib.optionals (withShellCompletions == false) [
(lib.mesonOption "bashcompletiondir" "no") "-Dbashcompletiondir=no"
(lib.mesonOption "zshcompletiondir" "no") "-Dzshcompletiondir=no"
] ++ lib.optionals (!withNss) [
(lib.mesonBool "nss-myhostname" withNss) "-Dnss-myhostname=false"
(lib.mesonBool "nss-mymachines" withNss) "-Dnss-mymachines=false"
(lib.mesonBool "nss-resolve" withNss) "-Dnss-resolve=false"
(lib.mesonBool "nss-systemd" withNss) "-Dnss-systemd=false"
(lib.mesonBool "bpf-framework" withLibBPF) ] ++ lib.optionals withLibBPF [
(lib.mesonBool "tpm2" withTpm2Tss) "-Dbpf-framework=true"
(lib.mesonBool "utmp" withUtmp) ] ++ lib.optionals withTpm2Tss [
(lib.mesonBool "gshadow" (!stdenv.hostPlatform.isMusl)) "-Dtpm2=true"
(lib.mesonBool "idn" (!stdenv.hostPlatform.isMusl)) ] ++ lib.optionals (!withUtmp) [
"-Dutmp=false"
] ++ lib.optionals stdenv.hostPlatform.isMusl [
"-Dgshadow=false"
"-Didn=false"
] ++ lib.optionals withKmod [ ] ++ lib.optionals withKmod [
(lib.mesonBool "kmod" true) "-Dkmod=true"
(lib.mesonOption "kmod-path" "${kmod}/bin/kmod") "-Dkmod-path=${kmod}/bin/kmod"
]; ];
preConfigure = preConfigure =
let let
# A list of all the runtime binaries that the systemd executables, tests # A list of all the runtime binaries that the systemd executables, tests and libraries are referencing in their source code, scripts and unit files.
# and libraries are referencing in their source code, scripts and unit # As soon as a dependency isn't required anymore we should remove it from the list. The `where` attribute for each of the replacement patterns must be exhaustive. If another (unhandled) case is found in the source code the build fails with an error message.
# files.
# As soon as a dependency isn't required anymore we should remove it from
# the list. The `where` attribute for each of the replacement patterns
# must be exhaustive. If another (unhandled) case is found in the source
# code the build fails with an error message.
binaryReplacements = [ binaryReplacements = [
{ { search = "/usr/bin/getent"; replacement = "${getent}/bin/getent"; where = [ "src/nspawn/nspawn-setuid.c" ]; }
search = "/usr/bin/getent";
replacement = "${getent}/bin/getent";
where = [ "src/nspawn/nspawn-setuid.c" ];
}
{ {
search = "/sbin/mkswap"; search = "/sbin/mkswap";
replacement = "${lib.getBin util-linux}/sbin/mkswap"; replacement = "${lib.getBin util-linux}/sbin/mkswap";
where = [ "man/systemd-makefs@.service.xml" ];
}
{
search = "/sbin/swapon";
replacement = "${lib.getOutput "swap" util-linux}/sbin/swapon";
where = [ where = [
"src/core/swap.c" "man/systemd-makefs@.service.xml"
"src/basic/unit-def.h"
]; ];
} }
{ { search = "/sbin/swapon"; replacement = "${lib.getOutput "swap" util-linux}/sbin/swapon"; where = [ "src/core/swap.c" "src/basic/unit-def.h" ]; }
search = "/sbin/swapoff"; { search = "/sbin/swapoff"; replacement = "${lib.getOutput "swap" util-linux}/sbin/swapoff"; where = [ "src/core/swap.c" ]; }
replacement = "${lib.getOutput "swap" util-linux}/sbin/swapoff";
where = [ "src/core/swap.c" ];
}
{ {
search = "/bin/echo"; search = "/bin/echo";
replacement = "${coreutils}/bin/echo"; replacement = "${coreutils}/bin/echo";
@ -621,15 +601,14 @@ stdenv.mkDerivation (finalAttrs: {
{ {
search = "/bin/cat"; search = "/bin/cat";
replacement = "${coreutils}/bin/cat"; replacement = "${coreutils}/bin/cat";
where = [ where = [ "test/test-execute/exec-noexecpaths-simple.service" "src/journal/cat.c" ];
"test/test-execute/exec-noexecpaths-simple.service"
"src/journal/cat.c"
];
} }
{ {
search = "/usr/lib/systemd/systemd-fsck"; search = "/usr/lib/systemd/systemd-fsck";
replacement = "$out/lib/systemd/systemd-fsck"; replacement = "$out/lib/systemd/systemd-fsck";
where = [ "man/systemd-fsck@.service.xml" ]; where = [
"man/systemd-fsck@.service.xml"
];
} }
] ++ lib.optionals withImportd [ ] ++ lib.optionals withImportd [
{ {
@ -703,14 +682,14 @@ stdenv.mkDerivation (finalAttrs: {
''; '';
env.NIX_CFLAGS_COMPILE = toString ([ env.NIX_CFLAGS_COMPILE = toString ([
# Can't say ${polkit.bin}/bin/pkttyagent here because that would lead to a # Can't say ${polkit.bin}/bin/pkttyagent here because that would
# cyclic dependency. # lead to a cyclic dependency.
"-UPOLKIT_AGENT_BINARY_PATH" "-UPOLKIT_AGENT_BINARY_PATH"
"-DPOLKIT_AGENT_BINARY_PATH=\"/run/current-system/sw/bin/pkttyagent\"" "-DPOLKIT_AGENT_BINARY_PATH=\"/run/current-system/sw/bin/pkttyagent\""
# Set the release_agent on /sys/fs/cgroup/systemd to the currently running # Set the release_agent on /sys/fs/cgroup/systemd to the
# systemd (/run/current-system/systemd) so that we don't use an # currently running systemd (/run/current-system/systemd) so
# obsolete/garbage-collected release agent. # that we don't use an obsolete/garbage-collected release agent.
"-USYSTEMD_CGROUP_AGENTS_PATH" "-USYSTEMD_CGROUP_AGENTS_PATH"
"-DSYSTEMD_CGROUP_AGENTS_PATH=\"/run/current-system/systemd/lib/systemd/systemd-cgroups-agent\"" "-DSYSTEMD_CGROUP_AGENTS_PATH=\"/run/current-system/systemd/lib/systemd/systemd-cgroups-agent\""
@ -754,11 +733,11 @@ stdenv.mkDerivation (finalAttrs: {
mv $out/lib/sysusers.d $out/example mv $out/lib/sysusers.d $out/example
''; '';
# Avoid *.EFI binary stripping. At least on aarch64-linux strip removes too # Avoid *.EFI binary stripping. At least on aarch64-linux strip
# much from PE32+ files: # removes too much from PE32+ files:
# https://github.com/NixOS/nixpkgs/issues/169693 # https://github.com/NixOS/nixpkgs/issues/169693
# The hack is to move EFI file out of lib/ before doStrip run and return it # The hack is to move EFI file out of lib/ before doStrip
# after doStrip run. # run and return it after doStrip run.
preFixup = lib.optionalString withBootloader '' preFixup = lib.optionalString withBootloader ''
mv $out/lib/systemd/boot/efi $out/dont-strip-me mv $out/lib/systemd/boot/efi $out/dont-strip-me
''; '';
@ -766,16 +745,15 @@ stdenv.mkDerivation (finalAttrs: {
# Wrap in the correct path for LUKS2 tokens. # Wrap in the correct path for LUKS2 tokens.
postFixup = lib.optionalString withCryptsetup '' postFixup = lib.optionalString withCryptsetup ''
for f in lib/systemd/systemd-cryptsetup bin/systemd-cryptenroll; do for f in lib/systemd/systemd-cryptsetup bin/systemd-cryptenroll; do
# This needs to be in LD_LIBRARY_PATH because rpath on a binary is not # This needs to be in LD_LIBRARY_PATH because rpath on a binary is not propagated to libraries using dlopen, in this case `libcryptsetup.so`
# propagated to libraries using dlopen, in this case `libcryptsetup.so`
wrapProgram $out/$f --prefix LD_LIBRARY_PATH : ${placeholder "out"}/lib/cryptsetup wrapProgram $out/$f --prefix LD_LIBRARY_PATH : ${placeholder "out"}/lib/cryptsetup
done done
'' + lib.optionalString withBootloader '' '' + lib.optionalString withBootloader ''
mv $out/dont-strip-me $out/lib/systemd/boot/efi mv $out/dont-strip-me $out/lib/systemd/boot/efi
'' + lib.optionalString withUkify '' '' + lib.optionalString withUkify ''
# To cross compile a derivation that builds a UKI with ukify, we need to # To cross compile a derivation that builds a UKI with ukify, we need to wrap
# wrap ukify with the correct binutils. When wrapping, no splicing happens # ukify with the correct binutils. When wrapping, no splicing happens so we
# so we have to explicitly pull binutils from targetPackages. # have to explicitly pull binutils from targetPackages.
wrapProgram $out/lib/systemd/ukify --prefix PATH : ${lib.makeBinPath [ targetPackages.stdenv.cc.bintools ] }:${placeholder "out"}/lib/systemd wrapProgram $out/lib/systemd/ukify --prefix PATH : ${lib.makeBinPath [ targetPackages.stdenv.cc.bintools ] }:${placeholder "out"}/lib/systemd
''; '';
@ -784,13 +762,12 @@ stdenv.mkDerivation (finalAttrs: {
(builtins.map (p: p.__spliced.buildHost or p) finalAttrs.nativeBuildInputs); (builtins.map (p: p.__spliced.buildHost or p) finalAttrs.nativeBuildInputs);
passthru = { passthru = {
# The interface version prevents NixOS from switching to an incompatible # The interface version prevents NixOS from switching to an
# systemd at runtime. # incompatible systemd at runtime. (Switching across reboots is
# (Switching across reboots is fine, of course.) # fine, of course.) It should be increased whenever systemd changes
# It should be increased whenever systemd changes in a # in a backwards-incompatible way. If the interface version of two
# backwards-incompatible way. # systemd builds is the same, then we can switch between them at
# If the interface version of two systemd builds is the same, then we can # runtime; otherwise we can't and we need to reboot.
# switch between them at runtime; otherwise we can't and we need to reboot.
interfaceVersion = 2; interfaceVersion = 2;
inherit withCryptsetup withHostnamed withImportd withKmod withLocaled withMachined withPortabled withTimedated withUtmp util-linux kmod kbd; inherit withCryptsetup withHostnamed withImportd withKmod withLocaled withMachined withPortabled withTimedated withUtmp util-linux kmod kbd;
@ -804,22 +781,6 @@ stdenv.mkDerivation (finalAttrs: {
meta = with lib; { meta = with lib; {
homepage = "https://www.freedesktop.org/wiki/Software/systemd/"; homepage = "https://www.freedesktop.org/wiki/Software/systemd/";
description = "A system and service manager for Linux"; description = "A system and service manager for Linux";
longDescription = ''
systemd is a suite of basic building blocks for a Linux system. It
provides a system and service manager that runs as PID 1 and starts the
rest of the system. systemd provides aggressive parallelization
capabilities, uses socket and D-Bus activation for starting services,
offers on-demand starting of daemons, keeps track of processes using Linux
control groups, maintains mount and automount points, and implements an
elaborate transactional dependency-based service control logic. systemd
supports SysV and LSB init scripts and works as a replacement for
sysvinit. Other parts include a logging daemon, utilities to control basic
system configuration like the hostname, date, locale, maintain a list of
logged-in users and running containers and virtual machines, system
accounts, runtime directories and settings, and daemons to manage simple
network configuration, network time synchronization, log forwarding, and
name resolution.
'';
license = licenses.lgpl21Plus; license = licenses.lgpl21Plus;
platforms = platforms.linux; platforms = platforms.linux;
badPlatforms = [ lib.systems.inspect.platformPatterns.isStatic ]; badPlatforms = [ lib.systems.inspect.platformPatterns.isStatic ];

View file

@ -28734,7 +28734,7 @@ with pkgs;
sysstat = callPackage ../os-specific/linux/sysstat { }; sysstat = callPackage ../os-specific/linux/sysstat { };
systemd = callPackage ../by-name/sy/systemd/package.nix { systemd = callPackage ../os-specific/linux/systemd {
# break some cyclic dependencies # break some cyclic dependencies
util-linux = util-linuxMinimal; util-linux = util-linuxMinimal;
# provide a super minimal gnupg used for systemd-machined # provide a super minimal gnupg used for systemd-machined