diff --git a/config/rootfiles/packages/nut b/config/rootfiles/packages/nut
index 6bcd2a553..2296ac9b5 100644
--- a/config/rootfiles/packages/nut
+++ b/config/rootfiles/packages/nut
@@ -36,6 +36,7 @@ usr/bin/liebert
 usr/bin/liebert-esp2
 usr/bin/liebert-gxe
 usr/bin/masterguard
+usr/bin/meanwell_ntu
 usr/bin/metasys
 usr/bin/mge-shut
 usr/bin/mge-utalk
@@ -43,6 +44,7 @@ usr/bin/microdowell
 usr/bin/microsol-apc
 usr/bin/nhs_ser
 usr/bin/nut-scanner
+usr/bin/nut-upower
 usr/bin/nutconf
 usr/bin/nutdrv_atcl_usb
 usr/bin/nutdrv_hashx
@@ -87,7 +89,7 @@ usr/bin/victronups
 #usr/lib/libnutclient.la
 #usr/lib/libnutclient.so
 usr/lib/libnutclient.so.2
-usr/lib/libnutclient.so.2.0.2
+usr/lib/libnutclient.so.2.1.0
 #usr/lib/libnutclientstub.la
 #usr/lib/libnutclientstub.so
 usr/lib/libnutclientstub.so.1
@@ -95,18 +97,17 @@ usr/lib/libnutclientstub.so.1.0.1
 #usr/lib/libnutscan.la
 #usr/lib/libnutscan.so
 usr/lib/libnutscan.so.4
-usr/lib/libnutscan.so.4.0.0
+usr/lib/libnutscan.so.4.1.0
 #usr/lib/libupsclient.la
 #usr/lib/libupsclient.so
 usr/lib/libupsclient.so.7
-usr/lib/libupsclient.so.7.0.0
+usr/lib/libupsclient.so.7.1.0
 #usr/lib/pkgconfig/libnutclient.pc
 #usr/lib/pkgconfig/libnutclientstub.pc
 #usr/lib/pkgconfig/libnutscan.pc
 #usr/lib/pkgconfig/libupsclient.pc
 #usr/lib/python3.10/site-packages/PyNUT.py
 #usr/lib/python3.10/site-packages/test_nutclient.py
-#usr/libexec/enphase-monitor
 #usr/libexec/sockdebug
 usr/sbin/upsd
 usr/sbin/upsdrvctl
@@ -116,8 +117,5 @@ usr/share/cmdvartab
 #usr/share/doc/nut
 #usr/share/doc/nut/html-man
 usr/share/driver.list
-#usr/share/external_apis
-#usr/share/external_apis/enphase
-#usr/share/external_apis/enphase/README.adoc
 var/ipfire/backup/addons/includes/nut
 var/state/ups
diff --git a/lfs/nut b/lfs/nut
index a76fe147e..6bc3b9f11 100644
--- a/lfs/nut
+++ b/lfs/nut
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2025  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2026  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -26,7 +26,7 @@ include Config
 
 SUMMARY    = Network UPS Tools Core (Uninterruptible Power Supply Monitoring)
 
-VER        = 2.8.4
+VER        = 2.8.5
 
 THISAPP    = nut-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -50,7 +50,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = 1a9e86c112055b623811e1747aa420ebb8022189c2e43f38c29cca93171d59b895d1ff5487d8f325c79833c6f6a76bffd849fb179db158bb2a1fbf86952dd797
+$(DL_FILE)_BLAKE2 = adae73a7da603a2364f78d6238b58130f756e33dacc03cae2ed8549189a84e27f9ca49359df1998fb059f862132f01aa80a79a02e71519b02d0acd8ab853edaa
 
 install : $(TARGET)
 
@@ -83,7 +83,9 @@ $(subst %,%_BLAKE2,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 	@$(PREBUILD)
 	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+	cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/nut-2.8.5-configure.ac_fix.patch
 	$(UPDATE_AUTOMAKE)
+	cd $(DIR_APP) && ./autogen.sh
 	cd $(DIR_APP) && ./configure \
 				--prefix=/usr \
 				--sysconfdir=/etc/nut \
diff --git a/src/patches/nut-2.8.5-configure.ac_fix.patch b/src/patches/nut-2.8.5-configure.ac_fix.patch
new file mode 100644
index 000000000..d8a23370f
--- /dev/null
+++ b/src/patches/nut-2.8.5-configure.ac_fix.patch
@@ -0,0 +1,119 @@
+diff --git a/configure.ac b/configure.ac
+index cdda324ce6..8f99703f3a 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -6368,16 +6368,16 @@ NUT_ARG_WITH_CUSTOM_DEFAULT_HELP([user], [USERNAME], [(Unprivileged) user for pr
+ AS_CASE([${nut_with_user}],
+ 	[yes|no], [AC_MSG_ERROR(invalid option --with(out)-user - see docs/configure.txt)],
+ 	["${RUN_AS_USER}"], [
+-		 nut_user_given=no
+-		 AC_MSG_RESULT([default])
++		 AS_IF([test x"${nut_withGiven_user}" = xyes],
++			[AC_MSG_RESULT([specified])],	dnl Just happens to be same as default
++			[AC_MSG_RESULT([default])])
+ 		],
+ 		[RUN_AS_USER="${nut_with_user}"
+-		 nut_user_given=yes
+ 		 AC_MSG_RESULT([specified])
+ 		]
+ )
+ NUT_REPORT_SETTING([User to run as],
+-    RUN_AS_USER, "${RUN_AS_USER}", [User to switch to if started as root])
++	RUN_AS_USER, "${RUN_AS_USER}", [User to switch to if started as root])
+ 
+ dnl Note: Technically daemons "run as" the primary GID of the user they de-levate into;
+ dnl but in simpler setups (stipulated by common packaging) this one is the "run as" GID too
+@@ -6387,21 +6387,21 @@ NUT_ARG_WITH_CUSTOM_DEFAULT_HELP([group], [GROUPNAME], [(Unprivileged) group mem
+ AS_CASE([${nut_with_group}],
+ 	[yes|no], [AC_MSG_ERROR(invalid option --with(out)-group - see docs/configure.txt)],
+ 	["${RUN_AS_GROUP}"], [
+-		 nut_group_given=no
+-		 AC_MSG_RESULT([default])
++		 AS_IF([test x"${nut_withGiven_group}" = xyes],
++			[AC_MSG_RESULT([specified])],	dnl Just happens to be same as default
++			[AC_MSG_RESULT([default])])
+ 		],
+ 		[RUN_AS_GROUP="${nut_with_group}"
+-		 nut_group_given=yes
+ 		 AC_MSG_RESULT([specified])
+ 		]
+ )
+ NUT_REPORT_SETTING([Group of user to own state files],
+-    RUN_AS_GROUP, "${RUN_AS_GROUP}", [Group membership for state files of drivers normally started as root])
++	RUN_AS_GROUP, "${RUN_AS_GROUP}", [Group membership for state files of drivers normally started as root])
+ 
+ dnl check that --with-user is given if --with-group is given.
+-if test "${nut_user_given}" = "yes" -a "${nut_group_given}" = "no"; then
++if test "${nut_withGiven_user}" = "yes" -a "${nut_withGiven_group}" = "no"; then
+ 	AC_MSG_ERROR([If you specify --with-user, you also must specify --with-group])
+-elif test "${nut_user_given}" = "no" -a "${nut_group_given}" = "yes"; then
++elif test "${nut_withGiven_user}" = "no" -a "${nut_withGiven_group}" = "yes"; then
+ 	AC_MSG_ERROR([If you specify --with-group, you also must specify --with-user])
+ fi
+ 
+diff --git a/m4/nut_arg_with.m4 b/m4/nut_arg_with.m4
+index 10f2516c8f..5a1c6b0820 100644
+--- a/m4/nut_arg_with.m4
++++ b/m4/nut_arg_with.m4
+@@ -47,8 +47,12 @@ AC_DEFUN([NUT_ARG_WITH_CUSTOM_DEFAULT_HELP],
+             [m4_ifval([$5],
+                 [AS_HELP_STRING([--with-$1], [$3 (default: $5)])],
+                 [AS_HELP_STRING([--with-$1], [$3 (default: $4)])])]),
+-        [[nut_with_]m4_translit([$1], [-], [_])="${withval}"],
+-        [[nut_with_]m4_translit([$1], [-], [_])="$4"]
++        [[nut_with_]m4_translit([$1], [-], [_])="${withval}"
++         [nut_withGiven_]m4_translit([$1], [-], [_])="yes"
++        ],
++        [[nut_with_]m4_translit([$1], [-], [_])="$4"
++         [nut_withGiven_]m4_translit([$1], [-], [_])="no"
++        ]
+     )
+ ])
+ 
+@@ -85,8 +89,12 @@ AC_DEFUN([NUT_ARG_WITH_LIBOPTS],
+ [
+     AC_ARG_WITH([$1],
+         [AS_HELP_STRING([@<:@--with-$1=$2@:>@], [$3 (default: $4)])],
+-        [[nut_with_]m4_translit([$1], [-], [_])="${withval}"],
+-        [[nut_with_]m4_translit([$1], [-], [_])="$4"]
++        [[nut_with_]m4_translit([$1], [-], [_])="${withval}"
++         [nut_withGiven_]m4_translit([$1], [-], [_])="yes"
++        ],
++        [[nut_with_]m4_translit([$1], [-], [_])="$4"
++         [nut_withGiven_]m4_translit([$1], [-], [_])="no"
++        ]
+     )
+ ])
+ 
+@@ -96,9 +104,13 @@ AC_DEFUN([NUT_ARG_WITH_LIBOPTS_INVALID_YESNO],
+         [AS_HELP_STRING([@<:@--with-$1=$2@:>@], [$3 (default: $4)])],
+         [AS_CASE([${withval}],
+             [yes|no], [AC_MSG_ERROR([invalid option --with(out)-$1 - see docs/configure.txt])],
+-                [[nut_with_]m4_translit([$1], [-], [_])="${withval}"]
++                [[nut_with_]m4_translit([$1], [-], [_])="${withval}"
++                 [nut_withGiven_]m4_translit([$1], [-], [_])="yes"
++                ]
+         )],
+-        [[nut_with_]m4_translit([$1], [-], [_])="$4"]
++        [[nut_with_]m4_translit([$1], [-], [_])="$4"
++         [nut_withGiven_]m4_translit([$1], [-], [_])="no"
++        ]
+     )
+ ])
+ 
+@@ -197,8 +209,12 @@ AC_DEFUN([NUT_ARG_ENABLE_CUSTOM_DEFAULT_HELP],
+             [m4_ifval([$5],
+                 [AS_HELP_STRING([--enable-$1], [$3 (default: $5)])],
+                 [AS_HELP_STRING([--enable-$1], [$3 (default: $4)])])]),
+-        [[nut_enable_]m4_translit([$1], [-], [_])="${enableval}"],
+-        [[nut_enable_]m4_translit([$1], [-], [_])="$4"]
++        [[nut_enable_]m4_translit([$1], [-], [_])="${enableval}"
++         [nut_enableGiven_]m4_translit([$1], [-], [_])="yes"
++        ],
++        [[nut_enable_]m4_translit([$1], [-], [_])="$4"
++         [nut_enableGiven_]m4_translit([$1], [-], [_])="no"
++        ]
+     )
+ ])
+ 
+
