diff --git a/src/dedicated/i_system.c b/src/dedicated/i_system.c
index 2afde6ac71e861ae73e7bbf7495a3c7b43242e35..8f2e0882a7faaf369708e8a46011d98f154fe3b3 100644
--- a/src/dedicated/i_system.c
+++ b/src/dedicated/i_system.c
@@ -1522,6 +1522,50 @@ size_t I_GetRandomBytes(char *destination, size_t count)
 
 void I_RegisterSysCommands(void){}
 
+char const *I_GetSysName(void)
+{
+	// reference: https://sourceforge.net/p/predef/wiki/OperatingSystems/
+#if defined(_WIN32) || defined(__CYGWIN__)
+	return "Windows";
+#elif defined(__APPLE__)
+	return "Mac OS";
+#elif defined(__linux__)
+	return "Linux";
+#elif defined(__FreeBSD__)
+	return "FreeBSD";
+#elif defined(__OpenBSD__)
+	return "OpenBSD";
+#elif defined(__NetBSD__)
+	return "NetBSD";
+#elif defined(__DragonFly__)
+	return "DragonFly BSD";
+#elif defined(__gnu_hurd__)
+	return "GNU Hurd"; // for anyone mental enough to set up an SRB2 server on GNU Hurd
+#elif defined(__hpux)
+	return "HP-UX";
+#elif defined(EPLAN9)
+	return "Plan 9";
+#elif defined(__HAIKU__)
+	return "Haiku";
+#elif defined(__BEOS__)
+	return "BeOS";
+#elif defined(__minix)
+	return "Minix";
+#elif defined(__sun)
+#if defined(__SVR4) || defined(__srv4__)
+	return "Solaris"; // this would be so cursed...
+#else
+	return "SunOS";
+#endif
+#elif defined(_AIX)
+	return "AIX";
+#elif defined(__SYLLABLE__)
+	return "SyllableOS"; // RIP SyllableOS, i still miss you ;-;
+#else
+	return "Unknown";
+#endif
+}
+
 void I_GetCursorPosition(INT32 *x, INT32 *y)
 {
 	(void)x;