diff --git a/third_party/util-linux/util-linux.bzl b/third_party/util-linux/util-linux.bzl
new file mode 100644
index 0000000..9e64243
--- /dev/null
+++ b/third_party/util-linux/util-linux.bzl
@@ -0,0 +1,188 @@
+#  Copyright 2020 The Monogon Project Authors.
+#
+#  SPDX-License-Identifier: Apache-2.0
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+
+load("@rules_cc//cc:defs.bzl", "cc_library")
+load("@dev_source_monogon//build/utils:template_file.bzl", "template_file")
+
+# These are only for the headers of libcommon, which is a private dependency of libblkid and
+# libuuid. Bazel doesn't support private dependencies and we want to avoid propagating these up
+# to all users of libblkid and libuuid, so manually inject them one level up.
+libcommon_hdrs_defines = [
+    "_GNU_SOURCE",
+    "HAVE_BYTESWAP_H",
+    "HAVE_CLOSE_RANGE",
+    "HAVE_CPU_SET_T",
+    "HAVE_DECL_CPU_ALLOC",
+    "HAVE_DIRFD",
+    "HAVE_ENDIAN_H",
+    "HAVE_ERR_H",
+    "HAVE_ERR",
+    "HAVE_ERRX",
+    "HAVE_LOFF_T",
+    "HAVE_MEMPCPY",
+    "HAVE_NANOSLEEP",
+    "HAVE_SETNS",
+    "HAVE_SRANDOM",
+    "HAVE_STDIO_EXT_H",
+    "HAVE_STRNDUP",
+    "HAVE_STRNLEN",
+    "HAVE_SENDFILE",
+    "HAVE_PIDFD_SEND_SIGNAL",
+    "HAVE_PIDFD_OPEN",
+    "HAVE_PATHS_H",
+    "HAVE_LINUX_VERSION_H",
+    "HAVE_OPENAT",
+    "HAVE_SYS_IOCTL_H",
+    "HAVE_SYS_SENDFILE_H",
+    "HAVE_SYS_SYSMACROS_H",
+    "HAVE_SYS_TTYDEFAULTS_H",
+    "HAVE_TIMEGM",
+    "HAVE_TIMER_CREATE",
+    "HAVE_UNSHARE",
+    "HAVE_WARN",
+    "HAVE_WARNX",
+    "HAVE_WIDECHAR",
+    "HAVE_FSYNC",
+    "HAVE___FPENDING",
+]
+
+template_file(
+    name = "blkid.h",
+    src = "libblkid/src/blkid.h.in",
+    substitutions = {
+        "@LIBBLKID_VERSION@": "0.0.0",
+        "@LIBBLKID_DATE@": "01.01.1970",
+    },
+)
+
+cc_library(
+    name = "common",
+    srcs = glob(["lib/*.h"]) + [
+        "lib/blkdev.c",
+        "lib/canonicalize.c",
+        "lib/crc32.c",
+        "lib/crc32c.c",
+        "lib/env.c",
+        "lib/idcache.c",
+        "lib/encode.c",
+        "lib/fileutils.c",
+        "lib/color-names.c",
+        "lib/mangle.c",
+        "lib/match.c",
+        "lib/mbsalign.c",
+        "lib/mbsedit.c",
+        "lib/md5.c",
+        "lib/pager.c",
+        "lib/procutils.c",
+        "lib/pwdutils.c",
+        "lib/randutils.c",
+        "lib/setproctitle.c",
+        "lib/strutils.c",
+        "lib/sysfs.c",
+        "lib/timeutils.c",
+        "lib/ttyutils.c",
+        "lib/strv.c",
+        "lib/path.c",
+        "lib/cpuset.c",
+        "lib/sha1.c",
+        "lib/signames.c",
+    ],
+    hdrs = glob(["include/*.h"]),
+    # Locale-related defines are intentionally missing as we don't want locale support
+    local_defines = libcommon_hdrs_defines + [
+        "HAVE_DECL_CPU_ALLOC",
+        "HAVE_ENVIRON_DECL",
+        "HAVE_ERRNO_H",
+        "HAVE_GETDTABLESIZE",
+        "HAVE_GETRANDOM",
+        "HAVE_GETRLIMIT",
+        "HAVE_LINUX_CDROM_H",
+        "HAVE_LINUX_FD_H",
+        "HAVE_JRAND48",
+        "HAVE_MKOSTEMP",
+        "HAVE_SYS_PRCTL_H",
+        "HAVE_MNTENT_H",
+        "HAVE_PRCTL",
+        "HAVE_SECURE_GETENV",
+        "HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC",
+        "HAVE_SYS_STAT_H",
+        "HAVE_SYS_TYPES_H",
+        "HAVE_EXPLICIT_BZERO",
+        "HAVE_UNISTD_H",
+        "HAVE_TLS",
+    ],
+    visibility = ["//visibility:private"],
+)
+
+cc_library(
+    name = "uuid",
+    srcs = [
+        "libuuid/src/clear.c",
+        "libuuid/src/compare.c",
+        "libuuid/src/copy.c",
+        "libuuid/src/gen_uuid.c",
+        "libuuid/src/isnull.c",
+        "libuuid/src/pack.c",
+        "libuuid/src/parse.c",
+        "libuuid/src/predefined.c",
+        "libuuid/src/unpack.c",
+        "libuuid/src/unparse.c",
+        "libuuid/src/uuidP.h",
+        "libuuid/src/uuid_time.c",
+    ],
+    hdrs = [
+        "libuuid/src/uuid.h",
+        "libuuid/src/uuidd.h",
+    ],
+    local_defines = libcommon_hdrs_defines + [
+        "HAVE_NET_IF_H",
+        "HAVE_NETINET_IN_H",
+        "HAVE_STDLIB_H",
+        "HAVE_SYS_FILE_H",
+        "HAVE_SYS_SOCKET_H",
+        "HAVE_SYS_SYSCALL_H",
+        "HAVE_SYS_TIME_H",
+        "HAVE_SYS_UN_H",
+        "HAVE_TLS",
+        "HAVE_UNISTD_H",
+    ],
+    visibility = ["//visibility:public"],
+    deps = [":common"],
+)
+
+cc_library(
+    name = "blkid",
+    srcs = glob([
+        "libblkid/src/**/*.c",
+        "libblkid/src/**/*.h",
+    ]),
+    hdrs = [":blkid.h"],
+    local_defines = libcommon_hdrs_defines + [
+        "LIBBLKID_VERSION=\\\"0.0.0\\\"",
+        "LIBBLKID_DATE=\\\"01.01.1970\\\"",
+        "HAVE_SYS_STAT_H",
+        "HAVE_ERRNO_H",
+        "HAVE_LINUX_CDROM_H",
+        "HAVE_POSIX_FADVISE",
+        "HAVE_STDLIB_H",
+        "HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC",
+        "HAVE_SYS_STAT_H",
+        "HAVE_SYS_TYPES_H",
+        "HAVE_UNISTD_H",
+    ],
+    visibility = ["//visibility:public"],
+    deps = ["//:common"],
+)
