diff --git a/docs/SOFTWARE.md b/docs/SOFTWARE.md
index abac1ec..3a8ed78 100644
--- a/docs/SOFTWARE.md
+++ b/docs/SOFTWARE.md
@@ -22,8 +22,10 @@
| initramfs-tools | Various | GNU General Public License version 2 | Copyleft |
| kmod | Various | GNU Lesser General Public License version 2.1 | Copyleft |
| libarchive | Tim Kientzle | Mostly BSD 2-Clause License | Free |
+| libbsd | Various | Various | Free |
| libcap | Andrew G. Morgan | BSD 3-Clause License *or* GNU General Public License version 2 | Slightly Copyleft |
| libelf | Various | GNU General Public License version 2 *and* GNU Lesser General Public License version 3 | Copyleft |
+| libmd | Various | BSD 3-Clause License, BSD 2-Clause License, ISC License, and the Beer-Ware License | Free |
| LibreSSL | Various | Various | Free |
| The GNU Portable Library Tool | Free Software Foundation, Inc. | GNU General Public License version 2 | Copyleft |
| Limine | Mintsuki and Contributors | BSD 2-Clause License | Free |
@@ -49,6 +51,7 @@
| pkgconf | Various | ISC License | Free |
| Python | Python Software Foundation, BeOpen, and CWI | Python Software Foundation License Version 2 | Copyleft |
| GNU sed | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
+| shadow-utils | Various | BSD 3-Clause License | Free |
| GNU tar | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
| tinytoml | Fourier Transformer | MIT License | Free |
| xz | Various | Mostly BSD 0-Clause License | Slightly Copyleft |
diff --git a/docs/STATUS.md b/docs/STATUS.md
index 7da214b..dda26c6 100644
--- a/docs/STATUS.md
+++ b/docs/STATUS.md
@@ -36,8 +36,10 @@ Definitions:
| `kmod` | Yes | Yes |
| `less` |
| `libarchive` | Yes | Yes |
+| `libbsd` | Yes | Yes |
| `libcap2` | Yes | Yes |
| `libelf` | Yes | Yes |
+| `libmd` | Yes | Yes |
| `libmnl` |
| `libnftnl` |
| `libressl` | Yes | Yes |
@@ -68,7 +70,7 @@ Definitions:
| `pipewire` |
| `python` | Yes | Yes |
| `sed` | Yes | Yes |
-| `shadow` |
+| `shadow` | Yes | Yes |
| `tar` | Yes | Yes |
| `tinytoml` | Yes | Yes |
| `xlibre-xserver` |
diff --git a/docs/TODO b/docs/TODO
index 1567170..60174bb 100644
--- a/docs/TODO
+++ b/docs/TODO
@@ -1,5 +1,3 @@
-- Finish writing the template engine for configuration files (scripts/mapleconf)
-- Build shadow for password hashing
- Milestone: Successfully boot into Maple Linux
- Write an install script to install Maple Linux from a live environment
- Build a partitioning tool (fdisk, parted, etc.)
diff --git a/docs/licensebar.svg b/docs/licensebar.svg
index ef42fc6..4a56ace 100644
--- a/docs/licensebar.svg
+++ b/docs/licensebar.svg
@@ -1,9 +1,9 @@
diff --git a/sources/libbsd/libbsd.spec b/sources/libbsd/libbsd.spec
new file mode 100644
index 0000000..8c778a4
--- /dev/null
+++ b/sources/libbsd/libbsd.spec
@@ -0,0 +1,13 @@
+# Maintainer: Alexander Hill
+SRC_HASH="b88cc9163d0c652aaf39a99991d974ddba1c3a9711db8f1b5838af2a14731014"
+SRC_NAME="libbsd"
+SRC_URL="https://libbsd.freedesktop.org/releases/libbsd-0.12.2.tar.xz"
+SRC_VERSION="0.12.2"
+
+build() {
+ tar xf ../$SRC_FILENAME
+ cd libbsd-$SRC_VERSION/
+ ./configure $TT_AUTOCONF_COMMON --enable-year2038
+ make -j $TT_PROCS
+ make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
+}
diff --git a/sources/libmd/libmd.spec b/sources/libmd/libmd.spec
new file mode 100644
index 0000000..8e67c2d
--- /dev/null
+++ b/sources/libmd/libmd.spec
@@ -0,0 +1,13 @@
+# Maintainer: Alexander Hill
+SRC_HASH="1bd6aa42275313af3141c7cf2e5b964e8b1fd488025caf2f971f43b00776b332"
+SRC_NAME="libmd"
+SRC_URL="https://libbsd.freedesktop.org/releases/libmd-1.1.0.tar.xz"
+SRC_VERSION="1.1.0"
+
+build() {
+ tar xf ../$SRC_FILENAME
+ cd libmd-$SRC_VERSION/
+ ./configure $TT_AUTOCONF_COMMON
+ make -j $TT_PROCS
+ make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
+}
diff --git a/sources/shadow/shadow.spec b/sources/shadow/shadow.spec
new file mode 100644
index 0000000..bd5dcde
--- /dev/null
+++ b/sources/shadow/shadow.spec
@@ -0,0 +1,17 @@
+# Maintainer: Alexander Hill
+SRC_HASH="11a8f358910712cf957dd4fd205063fce7e386b68fc7dfe3a0e1e53155ec53c5"
+SRC_NAME="shadow"
+SRC_URL="https://github.com/shadow-maint/shadow/releases/download/4.19.3/shadow-4.19.3.tar.xz"
+SRC_VERSION="4.19.3"
+
+build() {
+ tar xf ../$SRC_FILENAME
+ cd shadow-$SRC_VERSION/
+ ./configure $TT_AUTOCONF_COMMON --disable-logind --enable-year2038
+ make -j $TT_PROCS
+ make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
+ # NOTE: Unfortunately, shadow doesn't listen to --sbindir for some reason,
+ # so we manually move it. ~ahill
+ mv $TT_INSTALLDIR/sbin/* $TT_INSTALLDIR/bin/
+ rm -rf $TT_INSTALLDIR/sbin
+}