summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamisafool2022-07-14 23:57:32 +0530
committerSamisafool2022-07-15 00:01:21 +0530
commitc31129d6ace597cea40676f1379cd9598390712b (patch)
tree298e53b542cb2e57037ac2a794d08edfd4deddbd
downloadaur-c31129d6ace597cea40676f1379cd9598390712b.tar.gz
Initial commit
-rw-r--r--.SRCINFO199
-rw-r--r--0001-Use-Arch-Linux-device-access-groups.patch176
-rw-r--r--20-systemd-sysusers.hook10
-rw-r--r--30-systemd-binfmt.hook10
-rw-r--r--30-systemd-catalog.hook11
-rw-r--r--30-systemd-daemon-reload.hook11
-rw-r--r--30-systemd-hwdb.hook11
-rw-r--r--30-systemd-sysctl.hook10
-rw-r--r--30-systemd-tmpfiles.hook10
-rw-r--r--30-systemd-udev-reload.hook11
-rw-r--r--30-systemd-update.hook11
-rw-r--r--PKGBUILD294
-rw-r--r--arch.conf7
-rw-r--r--initcpio-hook-udev22
-rw-r--r--initcpio-install-systemd151
-rw-r--r--initcpio-install-udev33
-rw-r--r--loader.conf1
-rw-r--r--splash-arch.bmpbin0 -> 378226 bytes
-rw-r--r--systemd-hook46
-rw-r--r--systemd-user.pam5
-rw-r--r--systemd.install62
21 files changed, 1091 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..ff7aaadcd90b
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,199 @@
+pkgbase = systemd-pr23511
+ pkgver = 251.3
+ pkgrel = 1
+ url = https://www.github.com/systemd/systemd
+ arch = x86_64
+ makedepends = acl
+ makedepends = cryptsetup
+ makedepends = docbook-xsl
+ makedepends = gperf
+ makedepends = lz4
+ makedepends = xz
+ makedepends = pam
+ makedepends = libelf
+ makedepends = intltool
+ makedepends = iptables
+ makedepends = kmod
+ makedepends = libcap
+ makedepends = libidn2
+ makedepends = libgcrypt
+ makedepends = libmicrohttpd
+ makedepends = libxcrypt
+ makedepends = libxslt
+ makedepends = util-linux
+ makedepends = linux-api-headers
+ makedepends = python-jinja
+ makedepends = python-lxml
+ makedepends = quota-tools
+ makedepends = shadow
+ makedepends = gnu-efi-libs
+ makedepends = git
+ makedepends = meson
+ makedepends = libseccomp
+ makedepends = pcre2
+ makedepends = audit
+ makedepends = kexec-tools
+ makedepends = libxkbcommon
+ makedepends = bash-completion
+ makedepends = p11-kit
+ makedepends = systemd
+ makedepends = libfido2
+ makedepends = tpm2-tss
+ makedepends = rsync
+ conflicts = systemd-pr23511
+ conflicts = systemd-pr23511-libs
+ conflicts = systemd-pr23511-resolvconf
+ conflicts = systemd-pr23511-sysvcompat
+ replaces = systemd-pr23511
+ replaces = systemd-pr23511-libs
+ replaces = systemd-pr23511-resolvconf
+ replaces = systemd-pr23511-sysvcompat
+ options = debug
+ options = !strip
+ source = git+https://github.com/systemd/systemd-stable#tag=069e2b0ddd3a1b5bcff48530be165c56117d7134?signed
+ source = git+https://github.com/systemd/systemd#tag=v251?signed
+ source = 0001-Use-Arch-Linux-device-access-groups.patch
+ source = initcpio-hook-udev
+ source = initcpio-install-systemd
+ source = initcpio-install-udev
+ source = arch.conf
+ source = loader.conf
+ source = splash-arch.bmp
+ source = systemd-user.pam
+ source = systemd-hook
+ source = 20-systemd-sysusers.hook
+ source = 30-systemd-binfmt.hook
+ source = 30-systemd-catalog.hook
+ source = 30-systemd-daemon-reload.hook
+ source = 30-systemd-hwdb.hook
+ source = 30-systemd-sysctl.hook
+ source = 30-systemd-tmpfiles.hook
+ source = 30-systemd-udev-reload.hook
+ source = 30-systemd-update.hook
+ source = systemd_pr-23511.patch::https://patch-diff.githubusercontent.com/raw/systemd/systemd/pull/23511.patch
+ validpgpkeys = 63CDA1E5D3FC22B998D20DD6327F26951A015CC4
+ validpgpkeys = A9EA9081724FFAE0484C35A1A81CEA22BC8C7E2E
+ validpgpkeys = 9A774DB5DB996C154EBBFBFDA0099A18E29326E1
+ validpgpkeys = 5C251B5FC54EB2F80F407AAAC54CA336CFEB557E
+ sha512sums = SKIP
+ sha512sums = SKIP
+ sha512sums = cc0c2ffb5f7c3a7176cd68f3dddd85ca000dcc4cdf3044746a20147234adb6811800fd28a4713faa6a59bf8c02be9fd43c2d6aa6695fd1dbf03ae773a91d090c
+ sha512sums = f0d933e8c6064ed830dec54049b0a01e27be87203208f6ae982f10fb4eddc7258cb2919d594cbfb9a33e74c3510cfd682f3416ba8e804387ab87d1a217eb4b73
+ sha512sums = aeefb607471cffb5ed4c3d9f36dc0954a9a08cee4b7b4ff55468b561e089e3d8448398906a7df328049ba51b712e4d50698b96bc152bdb03a35ce39c3f51a7cb
+ sha512sums = a8c7e4a2cc9c9987e3c957a1fc3afe8281f2281fffd2e890913dcf00cf704024fb80d86cb75f9314b99b0e03bac275b22de93307bfc226d8be9435497e95b7e6
+ sha512sums = 61032d29241b74a0f28446f8cf1be0e8ec46d0847a61dadb2a4f096e8686d5f57fe5c72bcf386003f6520bc4b5856c32d63bf3efe7eb0bc0deefc9f68159e648
+ sha512sums = c416e2121df83067376bcaacb58c05b01990f4614ad9de657d74b6da3efa441af251d13bf21e3f0f71ddcb4c9ea658b81da3d915667dc5c309c87ec32a1cb5a5
+ sha512sums = 5a1d78b5170da5abe3d18fdf9f2c3a4d78f15ba7d1ee9ec2708c4c9c2e28973469bc19386f70b3cf32ffafbe4fcc4303e5ebbd6d5187a1df3314ae0965b25e75
+ sha512sums = b90c99d768dc2a4f020ba854edf45ccf1b86a09d2f66e475de21fe589ff7e32c33ef4aa0876d7f1864491488fd7edb2682fc0d68e83a6d4890a0778dc2d6fe19
+ sha512sums = 217a9dc3f9d8cd0c9fee54f777396f5a270c2e8a30c572ce5f635165adadcec275af0dae1456019cedb9cc93b7cef0862e5070aeb99a19e496625200e8dfac93
+ sha512sums = 299dcc7094ce53474521356647bdd2fb069731c08d14a872a425412fcd72da840727a23664b12d95465bf313e8e8297da31259508d1c62cc2dcea596160e21c5
+ sha512sums = 0d6bc3d928cfafe4e4e0bc04dbb95c5d2b078573e4f9e0576e7f53a8fab08a7077202f575d74a3960248c4904b5f7f0661bf17dbe163c524ab51dd30e3cb80f7
+ sha512sums = 2b50b25e8680878f7974fa9d519df7e141ca11c4bfe84a92a5d01bb193f034b1726ea05b3c0030bad1fbda8dbb78bf1dc7b73859053581b55ba813c39b27d9dc
+ sha512sums = 63e55b3acd14bc54320b6f2310b43398651ad4e262d4f4a0135e05d34a993e56ed673cc46e57f15b418371df5c4cef6f54486db96325e4abb1d33fb1a3946254
+ sha512sums = a1661ab946c6cd7d3c6251a2a9fd68afe231db58ce33c92c42594aedb5629be8f299ba08a34713327b373a3badd1554a150343d8d3e5dfb102999c281bd49154
+ sha512sums = 9426829605bbb9e65002437e02ed54e35c20fdf94706770a3dc1049da634147906d6b98bf7f5e7516c84068396a12c6feaf72f92b51bdf19715e0f64620319de
+ sha512sums = da7a97d5d3701c70dd5388b0440da39006ee4991ce174777931fea2aa8c90846a622b2b911f02ae4d5fffb92680d9a7e211c308f0f99c04896278e2ee0d9a4dc
+ sha512sums = a50d202a9c2e91a4450b45c227b295e1840cc99a5e545715d69c8af789ea3dd95a03a30f050d52855cabdc9183d4688c1b534eaa755ebe93616f9d192a855ee3
+ sha512sums = 825b9dd0167c072ba62cabe0677e7cd20f2b4b850328022540f122689d8b25315005fa98ce867cf6e7460b2b26df16b88bb3b5c9ebf721746dce4e2271af7b97
+ sha512sums = 769bed0244d583c01de644b297aded75d3bdd9f5baffdefd4575a02bf7f8b8cb1910892699f9d7726ee266604ed54d2c416233abf4894340f3df5a282cf7d4e1
+
+pkgname = systemd-pr23511
+ pkgdesc = system and service manager
+ install = systemd.install
+ license = GPL2
+ license = LGPL2.1
+ depends = acl
+ depends = libacl.so
+ depends = bash
+ depends = cryptsetup
+ depends = libcryptsetup.so
+ depends = dbus
+ depends = iptables
+ depends = kbd
+ depends = kmod
+ depends = libkmod.so
+ depends = hwdata
+ depends = libcap
+ depends = libcap.so
+ depends = libgcrypt
+ depends = libxcrypt
+ depends = libcrypt.so
+ depends = systemd-libs
+ depends = libidn2
+ depends = lz4
+ depends = pam
+ depends = libelf
+ depends = libseccomp
+ depends = libseccomp.so
+ depends = util-linux
+ depends = libblkid.so
+ depends = libmount.so
+ depends = xz
+ depends = pcre2
+ depends = audit
+ depends = libaudit.so
+ depends = libp11-kit
+ depends = libp11-kit.so
+ depends = openssl
+ optdepends = libmicrohttpd: remote journald capabilities
+ optdepends = quota-tools: kernel-level quota management
+ optdepends = systemd-sysvcompat: symlink package to provide sysvinit binaries
+ optdepends = polkit: allow administration as unprivileged user
+ optdepends = curl: machinectl pull-tar and pull-raw
+ optdepends = libfido2: unlocking LUKS2 volumes with FIDO2 token
+ optdepends = tpm2-tss: unlocking LUKS2 volumes with TPM2
+ provides = nss-myhostname
+ provides = systemd-tools=251.3
+ provides = udev=251.3
+ conflicts = nss-myhostname
+ conflicts = systemd-tools
+ conflicts = udev
+ replaces = nss-myhostname
+ replaces = systemd-tools
+ replaces = udev
+ backup = etc/pam.d/systemd-user
+ backup = etc/systemd/coredump.conf
+ backup = etc/systemd/homed.conf
+ backup = etc/systemd/journald.conf
+ backup = etc/systemd/journal-remote.conf
+ backup = etc/systemd/journal-upload.conf
+ backup = etc/systemd/logind.conf
+ backup = etc/systemd/networkd.conf
+ backup = etc/systemd/oomd.conf
+ backup = etc/systemd/pstore.conf
+ backup = etc/systemd/resolved.conf
+ backup = etc/systemd/sleep.conf
+ backup = etc/systemd/system.conf
+ backup = etc/systemd/timesyncd.conf
+ backup = etc/systemd/user.conf
+ backup = etc/udev/udev.conf
+
+pkgname = systemd-pr23511-libs
+ pkgdesc = systemd client libraries
+ license = LGPL2.1
+ depends = glibc
+ depends = libcap
+ depends = libgcrypt
+ depends = libp11-kit
+ depends = lz4
+ depends = xz
+ depends = zstd
+ provides = libsystemd
+ provides = libsystemd.so
+ provides = libudev.so
+ conflicts = libsystemd
+ replaces = libsystemd
+
+pkgname = systemd-pr23511-resolvconf
+ pkgdesc = systemd resolvconf replacement (for use with systemd-resolved)
+ license = LGPL2.1
+ depends = systemd
+ provides = openresolv
+ provides = resolvconf
+ conflicts = openresolv
+
+pkgname = systemd-pr23511-sysvcompat
+ pkgdesc = sysvinit compat for systemd
+ license = GPL2
+ depends = systemd
+ conflicts = sysvinit
diff --git a/0001-Use-Arch-Linux-device-access-groups.patch b/0001-Use-Arch-Linux-device-access-groups.patch
new file mode 100644
index 000000000000..6f7dd4a18a60
--- /dev/null
+++ b/0001-Use-Arch-Linux-device-access-groups.patch
@@ -0,0 +1,176 @@
+From f7d07e298c819a81eab965efbdbf53a2ce67fc0e Mon Sep 17 00:00:00 2001
+From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
+Date: Tue, 6 Mar 2018 23:39:47 +0100
+Subject: [PATCH] Use Arch Linux' device access groups
+
+ cdrom → optical
+ dialout → uucp
+ tape → storage
+---
+ meson.build | 6 +++---
+ meson_options.txt | 12 ++++++------
+ rules.d/50-udev-default.rules.in | 14 +++++++-------
+ sysusers.d/basic.conf.in | 6 +++---
+ 4 files changed, 19 insertions(+), 19 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index 32e5413a62..f781e06fed 100644
+--- a/meson.build
++++ b/meson.build
+@@ -796,19 +796,19 @@ conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
+ static_ugids = []
+ foreach option : ['adm-gid',
+ 'audio-gid',
+- 'cdrom-gid',
+- 'dialout-gid',
+ 'disk-gid',
+ 'input-gid',
+ 'kmem-gid',
+ 'kvm-gid',
+ 'lp-gid',
++ 'optical-gid',
+ 'render-gid',
+ 'sgx-gid',
+- 'tape-gid',
++ 'storage-gid',
+ 'tty-gid',
+ 'users-gid',
+ 'utmp-gid',
++ 'uucp-gid',
+ 'video-gid',
+ 'wheel-gid',
+ 'systemd-journal-gid',
+diff --git a/meson_options.txt b/meson_options.txt
+index 5048de755d..676e5e2e0d 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -235,10 +235,6 @@ option('adm-gid', type : 'integer', value : '-1',
+ description : 'soft-static allocation for the "adm" group')
+ option('audio-gid', type : 'integer', value : '-1',
+ description : 'soft-static allocation for the "audio" group')
+-option('cdrom-gid', type : 'integer', value : '-1',
+- description : 'soft-static allocation for the "cdrom" group')
+-option('dialout-gid', type : 'integer', value : '-1',
+- description : 'soft-static allocation for the "dialout" group')
+ option('disk-gid', type : 'integer', value : '-1',
+ description : 'soft-static allocation for the "disk" group')
+ option('input-gid', type : 'integer', value : '-1',
+@@ -249,18 +245,22 @@ option('kvm-gid', type : 'integer', value : '-1',
+ description : 'soft-static allocation for the "kvm" group')
+ option('lp-gid', type : 'integer', value : '-1',
+ description : 'soft-static allocation for the "lp" group')
++option('optical-gid', type : 'integer', value : '-1',
++ description : 'soft-static allocation for the "optical" group')
+ option('render-gid', type : 'integer', value : '-1',
+ description : 'soft-static allocation for the "render" group')
+ option('sgx-gid', type : 'integer', value : '-1',
+ description : 'soft-static allocation for the "sgx" group')
+-option('tape-gid', type : 'integer', value : '-1',
+- description : 'soft-static allocation for the "tape" group')
++option('storage-gid', type : 'integer', value : '-1',
++ description : 'soft-static allocation for the "storage" group')
+ option('tty-gid', type : 'integer', value : 5,
+ description : 'the numeric GID of the "tty" group')
+ option('users-gid', type : 'integer', value : '-1',
+ description : 'soft-static allocation for the "users" group')
+ option('utmp-gid', type : 'integer', value : '-1',
+ description : 'soft-static allocation for the "utmp" group')
++option('uucp-gid', type : 'integer', value : '-1',
++ description : 'soft-static allocation for the "uucp" group')
+ option('video-gid', type : 'integer', value : '-1',
+ description : 'soft-static allocation for the "video" group')
+ option('wheel-gid', type : 'integer', value : '-1',
+diff --git a/rules.d/50-udev-default.rules.in b/rules.d/50-udev-default.rules.in
+index 18a3cf46bf..f3c440fd89 100644
+--- a/rules.d/50-udev-default.rules.in
++++ b/rules.d/50-udev-default.rules.in
+@@ -22,7 +22,7 @@ SUBSYSTEM=="tty", KERNEL=="sclp_line[0-9]*", GROUP="tty", MODE="0620"
+ SUBSYSTEM=="tty", KERNEL=="ttysclp[0-9]*", GROUP="tty", MODE="0620"
+ SUBSYSTEM=="tty", KERNEL=="3270/tty[0-9]*", GROUP="tty", MODE="0620"
+ SUBSYSTEM=="vc", KERNEL=="vcs*|vcsa*", GROUP="tty"
+-KERNEL=="tty[A-Z]*[0-9]|ttymxc[0-9]*|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="dialout"
++KERNEL=="tty[A-Z]*[0-9]|ttymxc[0-9]*|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="uucp"
+
+ SUBSYSTEM=="mem", KERNEL=="mem|kmem|port", GROUP="kmem", MODE="0640"
+
+@@ -67,13 +67,13 @@ KERNEL=="irlpt[0-9]*", GROUP="lp"
+ SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:0701??:*", GROUP="lp"
+
+ SUBSYSTEM=="block", GROUP="disk"
+-SUBSYSTEM=="block", KERNEL=="sr[0-9]*", GROUP="cdrom"
+-SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="4|5", GROUP="cdrom"
+-KERNEL=="sch[0-9]*", GROUP="cdrom"
+-KERNEL=="pktcdvd[0-9]*", GROUP="cdrom"
+-KERNEL=="pktcdvd", GROUP="cdrom"
++SUBSYSTEM=="block", KERNEL=="sr[0-9]*", GROUP="optical"
++SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="4|5", GROUP="optical"
++KERNEL=="sch[0-9]*", GROUP="optical"
++KERNEL=="pktcdvd[0-9]*", GROUP="optical"
++KERNEL=="pktcdvd", GROUP="optical"
+
+-SUBSYSTEM=="scsi_generic|scsi_tape", SUBSYSTEMS=="scsi", ATTRS{type}=="1|8", GROUP="tape"
++SUBSYSTEM=="scsi_generic|scsi_tape", SUBSYSTEMS=="scsi", ATTRS{type}=="1|8", GROUP="storage"
+ SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="0", GROUP="disk"
+ KERNEL=="qft[0-9]*|nqft[0-9]*|zqft[0-9]*|nzqft[0-9]*|rawqft[0-9]*|nrawqft[0-9]*", GROUP="disk"
+ KERNEL=="loop-control", GROUP="disk", OPTIONS+="static_node=loop-control"
+diff --git a/sysusers.d/basic.conf.in b/sysusers.d/basic.conf.in
+index 8cc1a7cad2..21bb6d8948 100644
+--- a/sysusers.d/basic.conf.in
++++ b/sysusers.d/basic.conf.in
+@@ -22,17 +22,17 @@ g utmp {{UTMP_GID }} - -
+
+ # Physical and virtual hardware access groups
+ g audio {{AUDIO_GID }} - -
+-g cdrom {{CDROM_GID }} - -
+-g dialout {{DIALOUT_GID}} - -
+ g disk {{DISK_GID }} - -
+ g input {{INPUT_GID }} - -
+ g kmem {{KMEM_GID }} - -
+ g kvm {{KVM_GID }} - -
+ g lp {{LP_GID }} - -
++g optical {{OPTICAL_GID}} - -
+ g render {{RENDER_GID }} - -
+ g sgx {{SGX_GID }} - -
+-g tape {{TAPE_GID }} - -
++g storage {{STORAGE_GID}} - -
+ g tty {{TTY_GID }} - -
++g uucp {{UUCP_GID }} - -
+ g video {{VIDEO_GID }} - -
+
+ # Default group for normal users
+From 14de5ced41edc9fa8e380330c03adc89ef257fbc Mon Sep 17 00:00:00 2001
+From: Christian Hesse <mail@eworm.de>
+Date: Mon, 27 Dec 2021 23:32:42 +0100
+Subject: [PATCH] generate tmpfiles.d/legacy.conf
+---
+ tmpfiles.d/legacy.conf.in | 3 ---
+ tmpfiles.d/meson.build | 2 +-
+ 2 files changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/tmpfiles.d/legacy.conf.in b/tmpfiles.d/legacy.conf.in
+index 4f2c0d7c43..62e2ae0986 100644
+--- a/tmpfiles.d/legacy.conf.in
++++ b/tmpfiles.d/legacy.conf.in
+@@ -12,9 +12,6 @@
+
+ d /run/lock 0755 root root -
+ L /var/lock - - - - ../run/lock
+-{% if CREATE_LOG_DIRS %}
+-L /var/log/README - - - - ../..{{DOC_DIR}}/README.logs
+-{% endif %}
+
+ # /run/lock/subsys is used for serializing SysV service execution, and
+ # hence without use on SysV-less systems.
+diff --git a/tmpfiles.d/meson.build b/tmpfiles.d/meson.build
+index b8d3919025..000bd0bd22 100644
+--- a/tmpfiles.d/meson.build
++++ b/tmpfiles.d/meson.build
+@@ -27,7 +27,7 @@ foreach pair : files
+ endforeach
+
+ in_files = [['etc.conf', ''],
+- ['legacy.conf', 'HAVE_SYSV_COMPAT'],
++ ['legacy.conf', ''],
+ ['static-nodes-permissions.conf', ''],
+ ['systemd.conf', ''],
+ ['var.conf', ''],
diff --git a/20-systemd-sysusers.hook b/20-systemd-sysusers.hook
new file mode 100644
index 000000000000..edc71957b78c
--- /dev/null
+++ b/20-systemd-sysusers.hook
@@ -0,0 +1,10 @@
+[Trigger]
+Type = Path
+Operation = Install
+Operation = Upgrade
+Target = usr/lib/sysusers.d/*.conf
+
+[Action]
+Description = Creating system user accounts...
+When = PostTransaction
+Exec = /usr/share/libalpm/scripts/systemd-hook sysusers
diff --git a/30-systemd-binfmt.hook b/30-systemd-binfmt.hook
new file mode 100644
index 000000000000..19f3bcc154a5
--- /dev/null
+++ b/30-systemd-binfmt.hook
@@ -0,0 +1,10 @@
+[Trigger]
+Type = Path
+Operation = Install
+Operation = Upgrade
+Target = usr/lib/binfmt.d/*.conf
+
+[Action]
+Description = Registering binary formats...
+When = PostTransaction
+Exec = /usr/share/libalpm/scripts/systemd-hook binfmt
diff --git a/30-systemd-catalog.hook b/30-systemd-catalog.hook
new file mode 100644
index 000000000000..6e717b9a4651
--- /dev/null
+++ b/30-systemd-catalog.hook
@@ -0,0 +1,11 @@
+[Trigger]
+Type = Path
+Operation = Install
+Operation = Upgrade
+Operation = Remove
+Target = usr/lib/systemd/catalog/*
+
+[Action]
+Description = Updating journal message catalog...
+When = PostTransaction
+Exec = /usr/share/libalpm/scripts/systemd-hook catalog
diff --git a/30-systemd-daemon-reload.hook b/30-systemd-daemon-reload.hook
new file mode 100644
index 000000000000..dff95e49747a
--- /dev/null
+++ b/30-systemd-daemon-reload.hook
@@ -0,0 +1,11 @@
+[Trigger]
+Type = Path
+Operation = Install
+Operation = Upgrade
+Operation = Remove
+Target = usr/lib/systemd/system/*
+
+[Action]
+Description = Reloading system manager configuration...
+When = PostTransaction
+Exec = /usr/share/libalpm/scripts/systemd-hook daemon-reload
diff --git a/30-systemd-hwdb.hook b/30-systemd-hwdb.hook
new file mode 100644
index 000000000000..1d85e29e84c0
--- /dev/null
+++ b/30-systemd-hwdb.hook
@@ -0,0 +1,11 @@
+[Trigger]
+Type = Path
+Operation = Install
+Operation = Upgrade
+Operation = Remove
+Target = usr/lib/udev/hwdb.d/*
+
+[Action]
+Description = Updating udev hardware database...
+When = PostTransaction
+Exec = /usr/share/libalpm/scripts/systemd-hook hwdb
diff --git a/30-systemd-sysctl.hook b/30-systemd-sysctl.hook
new file mode 100644
index 000000000000..e2354c0b1563
--- /dev/null
+++ b/30-systemd-sysctl.hook
@@ -0,0 +1,10 @@
+[Trigger]
+Type = Path
+Operation = Install
+Operation = Upgrade
+Target = usr/lib/sysctl.d/*.conf
+
+[Action]
+Description = Applying kernel sysctl settings...
+When = PostTransaction
+Exec = /usr/share/libalpm/scripts/systemd-hook sysctl
diff --git a/30-systemd-tmpfiles.hook b/30-systemd-tmpfiles.hook
new file mode 100644
index 000000000000..b07db6a84328
--- /dev/null
+++ b/30-systemd-tmpfiles.hook
@@ -0,0 +1,10 @@
+[Trigger]
+Type = Path
+Operation = Install
+Operation = Upgrade
+Target = usr/lib/tmpfiles.d/*.conf
+
+[Action]
+Description = Creating temporary files...
+When = PostTransaction
+Exec = /usr/share/libalpm/scripts/systemd-hook tmpfiles
diff --git a/30-systemd-udev-reload.hook b/30-systemd-udev-reload.hook
new file mode 100644
index 000000000000..7676cca8cda4
--- /dev/null
+++ b/30-systemd-udev-reload.hook
@@ -0,0 +1,11 @@
+[Trigger]
+Type = Path
+Operation = Install
+Operation = Upgrade
+Operation = Remove
+Target = usr/lib/udev/rules.d/*
+
+[Action]
+Description = Reloading device manager configuration...
+When = PostTransaction
+Exec = /usr/share/libalpm/scripts/systemd-hook udev-reload
diff --git a/30-systemd-update.hook b/30-systemd-update.hook
new file mode 100644
index 000000000000..f95d9dcc3b9e
--- /dev/null
+++ b/30-systemd-update.hook
@@ -0,0 +1,11 @@
+[Trigger]
+Type = Path
+Operation = Install
+Operation = Upgrade
+Operation = Remove
+Target = usr/
+
+[Action]
+Description = Arming ConditionNeedsUpdate...
+When = PostTransaction
+Exec = /usr/share/libalpm/scripts/systemd-hook update
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..7e4c28d07eaa
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,294 @@
+# Maintainer: randomnerd <thenerdiestguy at gmail dot com>
+# Maintainer: Christian Hesse <mail@eworm.de>
+
+_pkgbase=systemd
+pkgbase=${_pkgbase}-pr23511
+pkgname=("$pkgbase" "$pkgbase-libs" "$pkgbase-resolvconf" "$pkgbase-sysvcompat")
+_tag='069e2b0ddd3a1b5bcff48530be165c56117d7134' # git rev-parse v${_tag_name}
+_tag_name=251.3
+pkgver="${_tag_name/-/}"
+pkgrel=1
+arch=('x86_64')
+url='https://www.github.com/systemd/systemd'
+conflicts=("${pkgname[@]}")
+replaces=("${pkgname[@]}")
+makedepends=('acl' 'cryptsetup' 'docbook-xsl' 'gperf' 'lz4' 'xz' 'pam' 'libelf'
+ 'intltool' 'iptables' 'kmod' 'libcap' 'libidn2' 'libgcrypt'
+ 'libmicrohttpd' 'libxcrypt' 'libxslt' 'util-linux' 'linux-api-headers'
+ 'python-jinja' 'python-lxml' 'quota-tools' 'shadow' 'gnu-efi-libs' 'git'
+ 'meson' 'libseccomp' 'pcre2' 'audit' 'kexec-tools' 'libxkbcommon'
+ 'bash-completion' 'p11-kit' 'systemd' 'libfido2' 'tpm2-tss' 'rsync')
+options=('debug' '!strip')
+validpgpkeys=('63CDA1E5D3FC22B998D20DD6327F26951A015CC4' # Lennart Poettering <lennart@poettering.net>
+ 'A9EA9081724FFAE0484C35A1A81CEA22BC8C7E2E' # Luca Boccassi <luca.boccassi@gmail.com>
+ '9A774DB5DB996C154EBBFBFDA0099A18E29326E1' # Yu Watanabe <watanabe.yu+github@gmail.com>
+ '5C251B5FC54EB2F80F407AAAC54CA336CFEB557E') # Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
+source=("git+https://github.com/systemd/systemd-stable#tag=${_tag}?signed"
+ "git+https://github.com/systemd/systemd#tag=v${_tag_name%.*}?signed"
+ '0001-Use-Arch-Linux-device-access-groups.patch'
+ 'initcpio-hook-udev'
+ 'initcpio-install-systemd'
+ 'initcpio-install-udev'
+ 'arch.conf'
+ 'loader.conf'
+ 'splash-arch.bmp'
+ 'systemd-user.pam'
+ 'systemd-hook'
+ '20-systemd-sysusers.hook'
+ '30-systemd-binfmt.hook'
+ '30-systemd-catalog.hook'
+ '30-systemd-daemon-reload.hook'
+ '30-systemd-hwdb.hook'
+ '30-systemd-sysctl.hook'
+ '30-systemd-tmpfiles.hook'
+ '30-systemd-udev-reload.hook'
+ '30-systemd-update.hook'
+ 'systemd_pr-23511.patch::https://patch-diff.githubusercontent.com/raw/systemd/systemd/pull/23511.patch')
+sha512sums=('SKIP'
+ 'SKIP'
+ 'cc0c2ffb5f7c3a7176cd68f3dddd85ca000dcc4cdf3044746a20147234adb6811800fd28a4713faa6a59bf8c02be9fd43c2d6aa6695fd1dbf03ae773a91d090c'
+ 'f0d933e8c6064ed830dec54049b0a01e27be87203208f6ae982f10fb4eddc7258cb2919d594cbfb9a33e74c3510cfd682f3416ba8e804387ab87d1a217eb4b73'
+ 'aeefb607471cffb5ed4c3d9f36dc0954a9a08cee4b7b4ff55468b561e089e3d8448398906a7df328049ba51b712e4d50698b96bc152bdb03a35ce39c3f51a7cb'
+ 'a8c7e4a2cc9c9987e3c957a1fc3afe8281f2281fffd2e890913dcf00cf704024fb80d86cb75f9314b99b0e03bac275b22de93307bfc226d8be9435497e95b7e6'
+ '61032d29241b74a0f28446f8cf1be0e8ec46d0847a61dadb2a4f096e8686d5f57fe5c72bcf386003f6520bc4b5856c32d63bf3efe7eb0bc0deefc9f68159e648'
+ 'c416e2121df83067376bcaacb58c05b01990f4614ad9de657d74b6da3efa441af251d13bf21e3f0f71ddcb4c9ea658b81da3d915667dc5c309c87ec32a1cb5a5'
+ '5a1d78b5170da5abe3d18fdf9f2c3a4d78f15ba7d1ee9ec2708c4c9c2e28973469bc19386f70b3cf32ffafbe4fcc4303e5ebbd6d5187a1df3314ae0965b25e75'
+ 'b90c99d768dc2a4f020ba854edf45ccf1b86a09d2f66e475de21fe589ff7e32c33ef4aa0876d7f1864491488fd7edb2682fc0d68e83a6d4890a0778dc2d6fe19'
+ '217a9dc3f9d8cd0c9fee54f777396f5a270c2e8a30c572ce5f635165adadcec275af0dae1456019cedb9cc93b7cef0862e5070aeb99a19e496625200e8dfac93'
+ '299dcc7094ce53474521356647bdd2fb069731c08d14a872a425412fcd72da840727a23664b12d95465bf313e8e8297da31259508d1c62cc2dcea596160e21c5'
+ '0d6bc3d928cfafe4e4e0bc04dbb95c5d2b078573e4f9e0576e7f53a8fab08a7077202f575d74a3960248c4904b5f7f0661bf17dbe163c524ab51dd30e3cb80f7'
+ '2b50b25e8680878f7974fa9d519df7e141ca11c4bfe84a92a5d01bb193f034b1726ea05b3c0030bad1fbda8dbb78bf1dc7b73859053581b55ba813c39b27d9dc'
+ '63e55b3acd14bc54320b6f2310b43398651ad4e262d4f4a0135e05d34a993e56ed673cc46e57f15b418371df5c4cef6f54486db96325e4abb1d33fb1a3946254'
+ 'a1661ab946c6cd7d3c6251a2a9fd68afe231db58ce33c92c42594aedb5629be8f299ba08a34713327b373a3badd1554a150343d8d3e5dfb102999c281bd49154'
+ '9426829605bbb9e65002437e02ed54e35c20fdf94706770a3dc1049da634147906d6b98bf7f5e7516c84068396a12c6feaf72f92b51bdf19715e0f64620319de'
+ 'da7a97d5d3701c70dd5388b0440da39006ee4991ce174777931fea2aa8c90846a622b2b911f02ae4d5fffb92680d9a7e211c308f0f99c04896278e2ee0d9a4dc'
+ 'a50d202a9c2e91a4450b45c227b295e1840cc99a5e545715d69c8af789ea3dd95a03a30f050d52855cabdc9183d4688c1b534eaa755ebe93616f9d192a855ee3'
+ '825b9dd0167c072ba62cabe0677e7cd20f2b4b850328022540f122689d8b25315005fa98ce867cf6e7460b2b26df16b88bb3b5c9ebf721746dce4e2271af7b97'
+ '769bed0244d583c01de644b297aded75d3bdd9f5baffdefd4575a02bf7f8b8cb1910892699f9d7726ee266604ed54d2c416233abf4894340f3df5a282cf7d4e1')
+
+_backports=(
+)
+
+_reverts=(
+)
+
+prepare() {
+ cd "${_pkgbase}-stable"
+
+ # add upstream repository for cherry-picking
+ git remote add -f upstream ../systemd || true
+
+ local _c
+ for _c in "${_backports[@]}"; do
+ if [[ $_c == *..* ]]; then
+ git log --oneline --reverse "${_c}"
+ else
+ git log --oneline -1 "${_c}"
+ fi
+ git cherry-pick -n -m1 "${_c}"
+ done
+ for _c in "${_reverts[@]}"; do
+ git log --oneline -1 "${_c}"
+ git revert -n "${_c}"
+ done
+
+ # Replace cdrom/dialout/tape groups with optical/uucp/storage
+ patch -Np1 -i ../0001-Use-Arch-Linux-device-access-groups.patch
+
+ patch -Np1 -i ../systemd_pr-23511.patch
+}
+
+build() {
+ local _timeservers=({0..3}.arch.pool.ntp.org)
+ local _nameservers=(
+ # We use these public name services, ordered by their privacy policy (hopefully):
+ # * Cloudflare (https://1.1.1.1/)
+ # * Quad9 (https://www.quad9.net/)
+ # * Google (https://developers.google.com/speed/public-dns/)
+ '1.1.1.1#cloudflare-dns.com'
+ '9.9.9.9#dns.quad9.net'
+ '8.8.8.8#dns.google'
+ '2606:4700:4700::1111#cloudflare-dns.com'
+ '2620:fe::9#dns.quad9.net'
+ '2001:4860:4860::8888#dns.google'
+ )
+
+ local _meson_options=(
+ # internal version comparison is incompatible with pacman:
+ # 249~rc1 < 249 < 249.1 < 249rc
+ -Dversion-tag="${_tag_name/-/\~}-${pkgrel}-arch"
+ -Dshared-lib-tag="${pkgver}-${pkgrel}"
+ -Dmode=release
+
+ -Dgnu-efi=true
+ -Dima=false
+ -Dlibidn2=true
+ -Dlz4=true
+ -Dman=true
+
+ # We disable DNSSEC by default, it still causes trouble:
+ # https://github.com/systemd/systemd/issues/10579
+
+ -Ddbuspolicydir=/usr/share/dbus-1/system.d
+ -Ddefault-dnssec=no
+ -Ddefault-hierarchy=unified
+ -Ddefault-kill-user-processes=false
+ -Ddefault-locale='C.UTF-8'
+ -Dlocalegen-path=/usr/bin/locale-gen
+ -Ddns-over-tls=openssl
+ -Dfallback-hostname='archlinux'
+ -Dnologin-path=/usr/bin/nologin
+ -Dntp-servers="${_timeservers[*]}"
+ -Ddns-servers="${_nameservers[*]}"
+ -Drpmmacrosdir=no
+ -Dsysvinit-path=
+ -Dsysvrcnd-path=
+
+ -Dsbat-distro='arch'
+ -Dsbat-distro-summary='Arch Linux'
+ -Dsbat-distro-pkgname="${pkgname}"
+ -Dsbat-distro-version="${pkgver}"
+ -Dsbat-distro-url="https://archlinux.org/packages/core/x86_64/${pkgname}/"
+ )
+
+ arch-meson "${_pkgbase}-stable" build "${_meson_options[@]}"
+
+ meson compile -C build
+}
+
+check() {
+ sudo meson test -C build
+}
+
+package_systemd-pr23511() {
+ pkgdesc='system and service manager'
+ license=('GPL2' 'LGPL2.1')
+ depends=('acl' 'libacl.so' 'bash' 'cryptsetup' 'libcryptsetup.so' 'dbus'
+ 'iptables' 'kbd' 'kmod' 'libkmod.so' 'hwdata' 'libcap' 'libcap.so'
+ 'libgcrypt' 'libxcrypt' 'libcrypt.so' 'systemd-libs' 'libidn2' 'lz4' 'pam'
+ 'libelf' 'libseccomp' 'libseccomp.so' 'util-linux' 'libblkid.so'
+ 'libmount.so' 'xz' 'pcre2' 'audit' 'libaudit.so' 'libp11-kit'
+ 'libp11-kit.so' 'openssl')
+ provides=('nss-myhostname' "systemd-tools=$pkgver" "udev=$pkgver")
+ replaces=('nss-myhostname' 'systemd-tools' 'udev')
+ conflicts=('nss-myhostname' 'systemd-tools' 'udev')
+ optdepends=('libmicrohttpd: remote journald capabilities'
+ 'quota-tools: kernel-level quota management'
+ 'systemd-sysvcompat: symlink package to provide sysvinit binaries'
+ 'polkit: allow administration as unprivileged user'
+ 'curl: machinectl pull-tar and pull-raw'
+ 'libfido2: unlocking LUKS2 volumes with FIDO2 token'
+ 'tpm2-tss: unlocking LUKS2 volumes with TPM2')
+ backup=(etc/pam.d/systemd-user
+ etc/systemd/coredump.conf
+ etc/systemd/homed.conf
+ etc/systemd/journald.conf
+ etc/systemd/journal-remote.conf
+ etc/systemd/journal-upload.conf
+ etc/systemd/logind.conf
+ etc/systemd/networkd.conf
+ etc/systemd/oomd.conf
+ etc/systemd/pstore.conf
+ etc/systemd/resolved.conf
+ etc/systemd/sleep.conf
+ etc/systemd/system.conf
+ etc/systemd/timesyncd.conf
+ etc/systemd/user.conf
+ etc/udev/udev.conf)
+ install=systemd.install
+
+ DESTDIR="$pkgdir" meson install -C build
+
+ # we'll create this on installation
+ rmdir "$pkgdir"/var/log/journal/remote
+
+ # runtime libraries shipped with systemd-libs
+ install -d -m0755 systemd-libs
+ mv "$pkgdir"/usr/lib/lib{nss,systemd,udev}*.so* systemd-libs
+
+ # manpages shipped with systemd-sysvcompat
+ rm "$pkgdir"/usr/share/man/man8/{halt,poweroff,reboot,shutdown}.8
+
+ # executable (symlinks) shipped with systemd-sysvcompat
+ rm "$pkgdir"/usr/bin/{halt,init,poweroff,reboot,shutdown}
+
+ # files shipped with systemd-resolvconf
+ rm "$pkgdir"/usr/{bin/resolvconf,share/man/man1/resolvconf.1}
+
+ # avoid a potential conflict with [core]/filesystem
+ rm "$pkgdir"/usr/share/factory/etc/{issue,nsswitch.conf}
+ sed -i -e '/^C \/etc\/nsswitch\.conf/d' \
+ -e '/^C \/etc\/issue/d' "$pkgdir"/usr/lib/tmpfiles.d/etc.conf
+
+ # ship default policy to leave services disabled
+ echo 'disable *' >"$pkgdir"/usr/lib/systemd/system-preset/99-default.preset
+
+ # add mkinitcpio hooks
+ install -D -m0644 initcpio-install-systemd "$pkgdir"/usr/lib/initcpio/install/systemd
+ install -D -m0644 initcpio-install-udev "$pkgdir"/usr/lib/initcpio/install/udev
+ install -D -m0644 initcpio-hook-udev "$pkgdir"/usr/lib/initcpio/hooks/udev
+
+ # The group 'systemd-journal' is allocated dynamically and may have varying
+ # gid on different systems. Let's install with gid 0 (root), systemd-tmpfiles
+ # will fix the permissions for us. (see /usr/lib/tmpfiles.d/systemd.conf)
+ install -d -o root -g root -m 2755 "$pkgdir"/var/log/journal
+
+ # match directory owner/group and mode from [extra]/polkit
+ install -d -o root -g 102 -m 0750 "$pkgdir"/usr/share/polkit-1/rules.d
+
+ # add example bootctl configuration
+ install -D -m0644 arch.conf "$pkgdir"/usr/share/systemd/bootctl/arch.conf
+ install -D -m0644 loader.conf "$pkgdir"/usr/share/systemd/bootctl/loader.conf
+ install -D -m0644 splash-arch.bmp "$pkgdir"/usr/share/systemd/bootctl/splash-arch.bmp
+
+ # pacman hooks
+ install -D -m0755 systemd-hook "$pkgdir"/usr/share/libalpm/scripts/systemd-hook
+ install -D -m0644 -t "$pkgdir"/usr/share/libalpm/hooks *.hook
+
+ # overwrite the systemd-user PAM configuration with our own
+ install -D -m0644 systemd-user.pam "$pkgdir"/etc/pam.d/systemd-user
+}
+
+package_systemd-pr23511-libs() {
+ pkgdesc='systemd client libraries'
+ depends=('glibc' 'libcap' 'libgcrypt' 'libp11-kit' 'lz4' 'xz' 'zstd')
+ license=('LGPL2.1')
+ provides=('libsystemd' 'libsystemd.so' 'libudev.so')
+ conflicts=('libsystemd')
+ replaces=('libsystemd')
+
+ install -d -m0755 "$pkgdir"/usr
+ mv systemd-libs "$pkgdir"/usr/lib
+}
+
+package_systemd-pr23511-resolvconf() {
+ pkgdesc='systemd resolvconf replacement (for use with systemd-resolved)'
+ license=('LGPL2.1')
+ depends=('systemd')
+ provides=('openresolv' 'resolvconf')
+ conflicts=('openresolv')
+
+ install -d -m0755 "$pkgdir"/usr/bin
+ ln -s resolvectl "$pkgdir"/usr/bin/resolvconf
+
+ install -d -m0755 "$pkgdir"/usr/share/man/man1
+ ln -s resolvectl.1.gz "$pkgdir"/usr/share/man/man1/resolvconf.1.gz
+}
+
+package_systemd-pr23511-sysvcompat() {
+ pkgdesc='sysvinit compat for systemd'
+ license=('GPL2')
+ conflicts=('sysvinit')
+ depends=('systemd')
+
+ install -D -m0644 -t "$pkgdir"/usr/share/man/man8 \
+ build/man/{halt,poweroff,reboot,shutdown}.8
+
+ install -d -m0755 "$pkgdir"/usr/bin
+ ln -s ../lib/systemd/systemd "$pkgdir"/usr/bin/init
+ for tool in halt poweroff reboot shutdown; do
+ ln -s systemctl "$pkgdir"/usr/bin/$tool
+ done
+}
+
+# vim:ft=sh syn=sh et sw=2:
diff --git a/arch.conf b/arch.conf
new file mode 100644
index 000000000000..250b7785e94b
--- /dev/null
+++ b/arch.conf
@@ -0,0 +1,7 @@
+## This is just an example config file.
+## Please edit the paths and kernel parameters according to your system.
+
+title Arch Linux
+linux /vmlinuz-linux
+initrd /initramfs-linux.img
+options root=PARTUUID=XXXX rootfstype=XXXX add_efi_memmap
diff --git a/initcpio-hook-udev b/initcpio-hook-udev
new file mode 100644
index 000000000000..ea9a11f8ce87
--- /dev/null
+++ b/initcpio-hook-udev
@@ -0,0 +1,22 @@
+#!/usr/bin/ash
+
+run_earlyhook() {
+ kmod static-nodes --format=tmpfiles --output=/run/tmpfiles.d/kmod.conf
+ systemd-tmpfiles --prefix=/dev --create --boot
+ /usr/lib/systemd/systemd-udevd --daemon --resolve-names=never
+ udevd_running=1
+}
+
+run_hook() {
+ msg ":: Triggering uevents..."
+ udevadm trigger --action=add --type=subsystems
+ udevadm trigger --action=add --type=devices
+ udevadm settle
+}
+
+run_cleanuphook() {
+ udevadm control --exit
+ udevadm info --cleanup-db
+}
+
+# vim: set ft=sh ts=4 sw=4 et:
diff --git a/initcpio-install-systemd b/initcpio-install-systemd
new file mode 100644
index 000000000000..b9d79857ad14
--- /dev/null
+++ b/initcpio-install-systemd
@@ -0,0 +1,151 @@
+#!/bin/bash
+
+add_systemd_unit() {
+ # Add a systemd unit file to the initcpio image. Hard dependencies on binaries
+ # and other unit files will be discovered and added.
+ # $1: path to rules file (or name of rules file)
+
+ local unit= rule= entry= key= value= binary= dep=
+
+ unit=$(PATH=/usr/lib/systemd/system:/lib/systemd/system type -P "$1")
+ if [[ -z $unit ]]; then
+ # complain about not found unit file
+ return 1
+ fi
+
+ add_file "$unit"
+
+ while IFS='=' read -r key values; do
+ read -ra values <<< "$values"
+
+ case $key in
+ Requires|OnFailure)
+ # only add hard dependencies (not Wants)
+ map add_systemd_unit "${values[@]}"
+ ;;
+ Exec*)
+ # do not add binaries unless they are required,
+ # strip special executable prefixes
+ case ${values[0]} in
+ -*) ;;
+ !!*) add_binary "${values[0]#!!}" ;;
+ *) add_binary "${values[0]#[@!:+]}" ;;
+ esac
+ ;;
+ esac
+
+ done <"$unit"
+
+ # preserve reverse soft dependency
+ for dep in {/usr,}/lib/systemd/system/*.wants/${unit##*/}; do
+ if [[ -L $dep ]]; then
+ add_symlink "$dep"
+ fi
+ done
+
+ # add hard dependencies
+ if [[ -d $unit.requires ]]; then
+ for dep in "$unit".requires/*; do
+ add_systemd_unit ${dep##*/}
+ done
+ fi
+}
+
+add_systemd_drop_in() {
+ local unit=$1 dropin_name=$2
+
+ mkdir -p "$BUILDROOT/etc/systemd/system/$unit.d"
+ cat >"$BUILDROOT/etc/systemd/system/$unit.d/$2.conf"
+}
+
+build() {
+ local rules unit
+
+ add_binary /usr/bin/kmod /usr/bin/modprobe
+ add_binary /usr/bin/mount
+ add_binary /usr/bin/sulogin
+ add_binary /usr/bin/umount
+ add_binary /usr/lib/systemd/systemd /init
+
+ map add_binary \
+ /usr/bin/journalctl \
+ /usr/bin/systemd-tmpfiles \
+ /usr/lib/systemd/systemd-hibernate-resume \
+ /usr/lib/systemd/systemd-shutdown \
+ /usr/lib/systemd/systemd-sulogin-shell \
+ /usr/lib/systemd/system-generators/systemd-fstab-generator \
+ /usr/lib/systemd/system-generators/systemd-gpt-auto-generator \
+ /usr/lib/systemd/system-generators/systemd-hibernate-resume-generator
+
+ # udev rules and systemd units
+ map add_udev_rule "$rules" \
+ 50-udev-default.rules \
+ 60-persistent-storage.rules \
+ 64-btrfs.rules \
+ 80-drivers.rules \
+ 99-systemd.rules
+
+ map add_systemd_unit \
+ initrd-cleanup.service \
+ initrd-fs.target \
+ initrd-parse-etc.service \
+ initrd-root-fs.target \
+ initrd-root-device.target \
+ initrd-switch-root.service \
+ initrd-switch-root.target \
+ initrd-udevadm-cleanup-db.service \
+ initrd.target \
+ kmod-static-nodes.service \
+ local-fs.target \
+ local-fs-pre.target \
+ paths.target \
+ reboot.target \
+ slices.target \
+ sockets.target \
+ swap.target \
+ systemd-fsck@.service \
+ systemd-hibernate-resume@.service \
+ systemd-journald.service \
+ systemd-journald-audit.socket \
+ systemd-journald-dev-log.socket \
+ systemd-modules-load.service \
+ systemd-tmpfiles-setup-dev.service \
+ systemd-udev-trigger.service \
+ systemd-udevd-control.socket \
+ systemd-udevd-kernel.socket \
+ systemd-udevd.service \
+ timers.target \
+ rescue.target \
+ emergency.target
+
+ add_symlink "/usr/lib/systemd/system/default.target" "initrd.target"
+ add_symlink "/usr/lib/systemd/system/ctrl-alt-del.target" "reboot.target"
+
+ printf '%s\n' >"$BUILDROOT/etc/nsswitch.conf" \
+ 'passwd: files' \
+ 'group: files' \
+ 'shadow: files'
+
+ echo "root:x:0:0:root:/root:/bin/sh" >"$BUILDROOT/etc/passwd"
+ echo 'root:*:::::::' >"$BUILDROOT/etc/shadow"
+ getent group root audio disk input kmem kvm lp optical render sgx storage tty uucp video | awk -F: ' { print $1 ":x:" $3 ":" }' >"$BUILDROOT/etc/group"
+
+ add_dir "/etc/modules-load.d"
+ (
+ . "$_f_config"
+ set -f
+ printf '%s\n' ${MODULES[@]} >"$BUILDROOT/etc/modules-load.d/MODULES.conf"
+ )
+}
+
+help() {
+ cat <<HELPEOF
+This will install a basic systemd setup in your initramfs, and is meant to
+replace the 'base', 'usr', 'udev' and 'resume' hooks. Other hooks with runtime
+components will need to be ported, and will not work as intended. You also may
+wish to still include the 'base' hook (before this hook) to ensure that a
+rescue shell exists on your initramfs.
+HELPEOF
+}
+
+# vim: set ft=sh ts=4 sw=4 et:
diff --git a/initcpio-install-udev b/initcpio-install-udev
new file mode 100644
index 000000000000..fef6f9bb7235
--- /dev/null
+++ b/initcpio-install-udev
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+build() {
+ local rules tool
+
+ map add_binary \
+ '/usr/lib/systemd/systemd-udevd' \
+ '/usr/bin/udevadm' \
+ '/usr/bin/systemd-tmpfiles'
+
+ map add_udev_rule \
+ '50-udev-default.rules' \
+ '60-persistent-storage.rules' \
+ '64-btrfs.rules' \
+ '80-drivers.rules'
+
+ map add_file \
+ '/usr/lib/udev/ata_id' \
+ '/usr/lib/udev/scsi_id'
+
+ add_runscript
+}
+
+help() {
+ cat <<HELPEOF
+This hook adds the udev daemon to the initramfs, allowing for dynamic loading
+of modules and reliable detection of the root device via tags (e.g. UUID or
+LABEL). Do not remove this hook unless you are using the systemd hook, or you
+know what you're doing.
+HELPEOF
+}
+
+# vim: set ft=sh ts=4 sw=4 et:
diff --git a/loader.conf b/loader.conf
new file mode 100644
index 000000000000..1f7cd7ef493d
--- /dev/null
+++ b/loader.conf
@@ -0,0 +1 @@
+default arch
diff --git a/splash-arch.bmp b/splash-arch.bmp
new file mode 100644
index 000000000000..f083d4bbf5ac
--- /dev/null
+++ b/splash-arch.bmp
Binary files differ
diff --git a/systemd-hook b/systemd-hook
new file mode 100644
index 000000000000..0a4754b21647
--- /dev/null
+++ b/systemd-hook
@@ -0,0 +1,46 @@
+#!/bin/sh -e
+
+is_chrooted() {
+ if systemd-detect-virt --chroot; then
+ echo >&2 " Skipped: Running in chroot."
+ exit 0
+ fi
+}
+
+systemd_live() {
+ is_chrooted
+ if [ ! -d /run/systemd/system ]; then
+ echo >&2 " Skipped: Current root is not booted."
+ exit 0
+ fi
+}
+
+udevd_live() {
+ is_chrooted
+ if [ ! -d /run/udev ]; then
+ echo >&2 " Skipped: Device manager is not running."
+ exit 0
+ fi
+}
+
+op="$1"; shift
+
+case "$op" in
+ catalog) /usr/bin/journalctl --update-catalog ;;
+ hwdb) /usr/bin/systemd-hwdb --usr update ;;
+ update) touch -c /usr ;;
+ sysusers) /usr/bin/systemd-sysusers ;;
+ tmpfiles) /usr/bin/systemd-tmpfiles --create ;;
+
+ daemon-reload) systemd_live; /usr/bin/systemctl daemon-reload ;;
+ udev-reload) udevd_live; /usr/bin/udevadm control --reload ;;
+ binfmt) systemd_live; /usr/lib/systemd/systemd-binfmt ;;
+ sysctl) systemd_live; /usr/lib/systemd/systemd-sysctl ;;
+
+ # For use by other packages
+ reload) systemd_live; /usr/bin/systemctl try-reload-or-restart "$@" ;;
+
+ *) echo >&2 " Invalid operation '$op'"; exit 1 ;;
+esac
+
+exit 0
diff --git a/systemd-user.pam b/systemd-user.pam
new file mode 100644
index 000000000000..83f762696e0e
--- /dev/null
+++ b/systemd-user.pam
@@ -0,0 +1,5 @@
+# Used by systemd --user instances.
+
+account include system-login
+session required pam_loginuid.so
+session include system-login
diff --git a/systemd.install b/systemd.install
new file mode 100644
index 000000000000..536e54d1b8a8
--- /dev/null
+++ b/systemd.install
@@ -0,0 +1,62 @@
+#!/bin/bash
+
+sd_booted() {
+ [[ -d run/systemd/system && ! -L run/systemd/system ]]
+}
+
+add_journal_acls() {
+ # ignore errors, since the filesystem might not support ACLs
+ setfacl -Rnm g:wheel:rx,d:g:wheel:rx,g:adm:rx,d:g:adm:rx var/log/journal/ 2>/dev/null
+ :
+}
+
+post_common() {
+ systemd-sysusers
+ journalctl --update-catalog
+}
+
+_242_0_2_changes() {
+ if [[ -L var/lib/systemd/timesync ]]; then
+ rm var/lib/systemd/timesync
+ if [[ -d var/lib/private/systemd/timesync ]]; then
+ mv var/lib/{private/,}systemd/timesync
+ fi
+ fi
+}
+
+post_install() {
+ systemd-machine-id-setup
+
+ post_common "$@"
+
+ add_journal_acls
+
+ # enable some services by default, but don't track them
+ systemctl enable \
+ getty@tty1.service \
+ remote-fs.target
+
+ # group 'systemd-journal-remote' is created by systemd-sysusers
+ mkdir -m2755 var/log/journal/remote
+ chgrp systemd-journal-remote var/log/journal/remote
+}
+
+post_upgrade() {
+ post_common "$@"
+
+ if sd_booted; then
+ systemctl --system daemon-reexec
+ fi
+
+ local v upgrades=(
+ 242.0-2
+ )
+
+ for v in "${upgrades[@]}"; do
+ if [[ $(vercmp "$v" "$2") -eq 1 ]]; then
+ "_${v//[.-]/_}_changes"
+ fi
+ done
+}
+
+# vim:set ts=2 sw=2 et: