mirror of
https://codeberg.org/guix/guix.git
synced 2026-01-25 12:05:19 -06:00
gnu: Add apcupsd.
* gnu/packages/power.scm (apcupsd): New variable. * gnu/local.mk (GNU_SYSTEM_MODULES): Register the new file. Co-authored-by: Raven Hallsby <karl@hallsby.com> Change-Id: I5366f6deea111a6a9ea56648122cdc8b3297f08c Modified-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
This commit is contained in:
parent
71ad196ec3
commit
f302e6bc1a
2 changed files with 124 additions and 0 deletions
|
|
@ -562,6 +562,7 @@ GNU_SYSTEM_MODULES = \
|
|||
%D%/packages/polkit.scm \
|
||||
%D%/packages/popt.scm \
|
||||
%D%/packages/potassco.scm \
|
||||
%D%/packages/power.scm \
|
||||
%D%/packages/printers.scm \
|
||||
%D%/packages/profiling.scm \
|
||||
%D%/packages/prolog.scm \
|
||||
|
|
|
|||
123
gnu/packages/power.scm
Normal file
123
gnu/packages/power.scm
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
;;; Copyright © 2025 Tomas Volf <~@wolfsden.cz>
|
||||
;;; Copyright © 2023 Raven Hallsby <karl@hallsby.com>
|
||||
|
||||
;;;; Commentary:
|
||||
|
||||
;;; Power-related packages.
|
||||
|
||||
;;;; Code:
|
||||
|
||||
(define-module (gnu packages power)
|
||||
#:use-module (gnu)
|
||||
#:use-module (gnu packages libusb)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages man)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages python-xyz)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix packages))
|
||||
|
||||
(define-public apcupsd
|
||||
(package
|
||||
(name "apcupsd")
|
||||
(version "3.14.14")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
(string-append
|
||||
"mirror://sourceforge/" name "/" name " - Stable/" version
|
||||
"/" name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0rwqiyzlg9p0szf3x6q1ppvrw6f6dbpn2rc5z623fk3bkdalhxyv"))))
|
||||
(outputs '("out" "doc"))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:configure-flags
|
||||
#~(list
|
||||
;; The configure script ignores --prefix for most of the file names.
|
||||
(string-append "--exec-prefix=" #$output)
|
||||
(string-append "--mandir=" #$output "/share/man")
|
||||
(string-append "--sbindir=" #$output "/sbin")
|
||||
(string-append "--sysconfdir=" #$output "/etc/apcupsd")
|
||||
(string-append "--with-halpolicydir=" #$output "/share/halpolicy")
|
||||
|
||||
;; Put us into the version string.
|
||||
"--with-distname=GNU Guix"
|
||||
"--disable-install-distdir"
|
||||
|
||||
;; State directories.
|
||||
"--localstatedir=/var"
|
||||
"--with-log-dir=/var/log"
|
||||
"--with-pid-dir=/run"
|
||||
"--with-lock-dir=/run/apcupsd/lock"
|
||||
"--with-nologin=/run/apcupsd"
|
||||
"--with-pwrfail-dir=/run/apcupsd"
|
||||
|
||||
;; Configure requires these, but we do not use the genenerated
|
||||
;; apcupsd.conf, so in order to reduce dependencies of the package,
|
||||
;; provide fake values.
|
||||
(string-append "ac_cv_path_SHUTDOWN=/nope")
|
||||
(string-append "ac_cv_path_APCUPSD_MAIL=/nope")
|
||||
;; While `wall' is not expanded anywhere, it still is searched for.
|
||||
;; See https://sourceforge.net/p/apcupsd/mailman/message/59128628/ .
|
||||
(string-append "ac_cv_path_WALL=/nope")
|
||||
|
||||
;; Enable additional drivers.
|
||||
"--enable-usb"
|
||||
"--enable-modbus-usb")
|
||||
#:tests? #f ; There are no tests.
|
||||
#:modules (cons '(ice-9 ftw) %default-gnu-modules)
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-before 'configure 'remove-time-from-manual
|
||||
(lambda _
|
||||
;; Do not bake the date and time of the build into the manual.
|
||||
(substitute* "doc/manual/manual.rst"
|
||||
(("\\| \\|date\\| \\|time\\|") ""))
|
||||
(substitute* "autoconf/variables.mak.in"
|
||||
(("^(RST2HTMLOPTS = .*) --time (.*)" all pref suff)
|
||||
(string-append pref " " suff)))))
|
||||
(add-after 'build 'build-manual
|
||||
(lambda _
|
||||
(invoke "make" "-C" "doc/manual" "manual.html")))
|
||||
(add-after 'install-license-files 'move-doc
|
||||
(lambda _
|
||||
(let ((target (string-append #$output:doc
|
||||
"/share/doc/"
|
||||
(strip-store-file-name #$output))))
|
||||
(mkdir-p target)
|
||||
(for-each (lambda (f)
|
||||
(copy-file (string-append "doc/manual/" f)
|
||||
(string-append target "/" f)))
|
||||
(scandir "doc/manual"
|
||||
(lambda (f)
|
||||
(or (string-suffix? ".png" f)
|
||||
(string-suffix? ".html" f))))))))
|
||||
;; If sending mails is required, use proper mail program.
|
||||
(add-after 'install 'remove-smtp
|
||||
(lambda _
|
||||
(delete-file (string-append #$output "/sbin/smtp"))))
|
||||
;; The configuration files and scripts are not really suitable for
|
||||
;; Guix, and our service provides its own version anyway. So delete
|
||||
;; these to make sure `apcupsd' and `apctest' executed without any
|
||||
;; arguments fail. `apctest' actually segfaults, but only after
|
||||
;; printing an error.
|
||||
(add-after 'install 'remove-etc-apcupsd
|
||||
(lambda _
|
||||
(delete-file-recursively
|
||||
(string-append #$output "/etc/apcupsd")))))))
|
||||
(native-inputs (list mandoc pkg-config python-docutils util-linux))
|
||||
(inputs (list libusb libusb-compat))
|
||||
(home-page "http://www.apcupsd.org")
|
||||
(synopsis "Daemon for controlling APC UPSes")
|
||||
(description "@command{apcupsd} can be used for power management and
|
||||
controlling most of @acronym{APC, American Power Conversion}’s @acronym{UPS,
|
||||
Uninterruptible Power Supply} models. @command{apcupsd} works with most of
|
||||
APC’s Smart-UPS models as well as most simple signalling models such a
|
||||
Back-UPS, and BackUPS-Office.")
|
||||
(license license:gpl2)))
|
||||
Loading…
Add table
Reference in a new issue