diff options
| author | Nicolas Graves <ngraves@ngraves.fr> | 2026-01-25 18:59:11 +0100 |
|---|---|---|
| committer | Liliana Marie Prikler <liliana.prikler@gmail.com> | 2026-02-07 22:37:16 +0100 |
| commit | 89c8cf9f5949f0f6a947564748e1d9fb3e45c463 (patch) | |
| tree | c94f76041dc08b0aa8411763f74edf33491a807d | |
| parent | 0322144d9b71007fa4cbcdb45c14046a418e6985 (diff) | |
gnu: Add activity-watch packages.
* gnu/packages/monitoring.scm (aw-source, aw-core, aw-client)
(aw-notify, aw-qt, aw-watcher-afk, aw-watcher-input)
(aw-watcher-window): New variables.
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
| -rw-r--r-- | gnu/packages/monitoring.scm | 179 |
1 files changed, 178 insertions, 1 deletions
diff --git a/gnu/packages/monitoring.scm b/gnu/packages/monitoring.scm index 046dd41f5bb..1c8990de31a 100644 --- a/gnu/packages/monitoring.scm +++ b/gnu/packages/monitoring.scm @@ -80,12 +80,189 @@ #:use-module (gnu packages python-science) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) + #:use-module (gnu packages qt) #:use-module (gnu packages rrdtool) #:use-module (gnu packages sphinx) #:use-module (gnu packages time) #:use-module (gnu packages tls) #:use-module (gnu packages web) - #:use-module (gnu packages xml)) + #:use-module (gnu packages web) + #:use-module (gnu packages xml) + #:use-module (gnu packages xorg)) + +(define aw-source + (let ((name "activitywatch") + (version "0.13.2")) + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ActivityWatch/activitywatch") + (commit (string-append "v" version)) + (recursive? #t))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0yaa7g35rz9dmgxvahvkfhjpkvmi50rd6bjd9ckxvk7mfs1q0xb7")) + (modules '((guix build utils))) + (snippet + #~(begin + ;; Relax platformdirs requirement. + (for-each delete-file (find-files "." "poetry\\.lock")) + (substitute* "aw-core/pyproject.toml" + (("^platformdirs = .*") + "platformdirs = \"*\"\n"))))))) + +(define-public aw-core + (package + (name "aw-core") + (version "0.5.17") + (source aw-source) + (build-system pyproject-build-system) + (arguments + (list + #:modules + '((guix build pyproject-build-system) + (guix build utils) + (ice-9 ftw) + (srfi srfi-1) + (srfi srfi-26)) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda* (#:key name #:allow-other-keys) + ;; All subprojects are in directories that match their name + ;; Here name still contains the version suffixed. + (and=> (find (cute string-prefix? <> name) (scandir ".")) + chdir))) + (add-before 'check 'pre-check + (lambda _ + (setenv "HOME" (getcwd))))))) + (native-inputs (list python-poetry-core python-pytest)) + (propagated-inputs + (list python-click + python-deprecation + python-iso8601 + python-jsonschema + python-peewee + python-platformdirs + python-rfc3339-validator + python-strict-rfc3339 + python-timeslot + python-tomlkit)) + (home-page "https://activitywatch.net/") + (synopsis "Core library for ActivityWatch") + (description + "This package provides the core library for @code{ActivityWatch}.") + (license license:mpl2.0))) + +(define-public aw-client + (package/inherit aw-core + (name "aw-client") + (version "0.5.15") + (arguments + (substitute-keyword-arguments (package-arguments aw-core) + ((#:test-flags test-flags #~(list)) + #~(list + ;; Most likely requires the server to run. + "--deselect=tests/test_client.py::test_full" + ;; Tries to read from stdin. + "--deselect=tests/test_failqueue.py::test_failqueue")))) + (propagated-inputs + (list aw-core + python-click + python-persist-queue + python-requests + python-tabulate + python-typing-extensions)) + (synopsis "Client library for ActivityWatch") + (description + "This package provides the c]lient library for @code{ActivityWatch}."))) + +(define-public aw-notify + (package/inherit aw-core + (name "aw-notify") + (version "0.0.0") ;unreleased. + (arguments + (substitute-keyword-arguments (package-arguments aw-core) + ((#:tests? tests? #t) + #f))) ;No tests. + (synopsis "Notify library for ActivityWatch") + (description + "This package provides the notify library for @code{ActivityWatch}."))) + +(define-public aw-qt + (package/inherit aw-core + (name "aw-qt") + (version "0.1.0") + (arguments + (substitute-keyword-arguments (package-arguments aw-core) + ((#:phases phases #~%standard-phases) + #~(modify-phases #$phases + ;; (delete 'sanity-check) + (add-before 'check 'start-xserver + (lambda* (#:key inputs #:allow-other-keys) + (let* ((Xvfb (search-input-file inputs "/bin/Xvfb")) + (display ":1") + (command (string-join (list Xvfb display "&") " "))) + (setenv "DISPLAY" display) + (zero? (system command))))))) + ((#:test-backend _ #f) + #~'custom) + ((#:test-flags _ #~(list)) + #~(list "tests/integration_tests.py")))) + (native-inputs + (list python-poetry-core xorg-server-for-tests)) + (propagated-inputs + (list aw-core python-click python-pyqt-6)) + (synopsis "Trayicon for ActivityWatch") + (description + "This package provides a tray icon for @code{ActivityWatch}."))) + +(define-public aw-watcher-afk + (package/inherit aw-core + (name "aw-watcher-afk") + (version "0.2.0") + (arguments + (substitute-keyword-arguments (package-arguments aw-core) + ((#:tests? tests? #t) + #f) ;Most likely requires the server to run. + ((#:test-backend _ #f) + #~'custom) + ((#:test-flags _ #~(list)) + #~(list "tests/test_continuous_events.py")))) + (propagated-inputs + (list aw-client python-pynput python-xlib)) + (synopsis "AFK watcher for ActivityWatch") + (description + "This package provides a @acronym{AFK, away from keyboard} watcher for +@code{ActivityWatch}."))) + +(define-public aw-watcher-input + (package/inherit aw-core + (name "aw-watcher-input") + (version "0.1.0") + (arguments + (substitute-keyword-arguments (package-arguments aw-core) + ((#:tests? tests? #t) + #f))) ;No tests. + (propagated-inputs + (list aw-client aw-watcher-afk)) + (synopsis "Input watcher for ActivityWatch") + (description + "This package provide an input watcher for @code{ActivityWatch}."))) + +(define-public aw-watcher-window + (package/inherit aw-core + (name "aw-watcher-window") + (version "0.2.0") + (arguments + (substitute-keyword-arguments (package-arguments aw-core) + ((#:tests? tests? #t) + #f))) ;No tests. + (propagated-inputs + (list aw-client python-xlib)) + (synopsis "X11 Window watcher for ActivityWatch") + (description + "This package provides a X11 window watcher for @code{ActivityWatch}."))) (define-public glances (package |
