projects/guix·blob python-team · refs

946 lines · 35.7 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015 Tomáš Čech <[email protected]>
3;;; Copyright © 2020 Vinicius Monego <[email protected]>
4;;; Copyright © 2020 Hamzeh Nasajpour <[email protected]>
5;;; Copyright © 2021 Eric Bavier <[email protected]>
6;;; Copyright © 2021 Stefan Reichör <[email protected]>
7;;; Copyright © 2021 LibreMiami <[email protected]>
8;;; Copyright © 2021 Reza Alizadeh Majd <[email protected]>
9;;; Copyright © 2021 Sebastian Gibb <[email protected]>
10;;; Copyright © 2022 Foo Chuan Wei <[email protected]>
11;;; Copyright © 2022 Pavel Shlyak <[email protected]>
12;;; Copyright © 2022 Matthew James Kraai <[email protected]>
13;;; Copyright © 2024 Artyom V. Poptsov <[email protected]>
14;;; Copyright © 2025 Ricardo Wurmus <[email protected]>
15;;; Copyright © 2025 Matthias Riße <[email protected]>
16;;; Copyright © 2025 jgart <[email protected]>
17;;; Copyright © 2026 Arun Isaac <[email protected]>
18;;;
19;;; This file is part of GNU Guix.
20;;;
21;;; GNU Guix is free software; you can redistribute it and/or modify it
22;;; under the terms of the GNU General Public License as published by
23;;; the Free Software Foundation; either version 3 of the License, or (at
24;;; your option) any later version.
25;;;
26;;; GNU Guix is distributed in the hope that it will be useful, but
27;;; WITHOUT ANY WARRANTY; without even the implied warranty of
28;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
29;;; GNU General Public License for more details.
30;;;
31;;; You should have received a copy of the GNU General Public License
32;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
33
34(define-module (gnu packages task-management)
35 #:use-module ((guix licenses) #:prefix license:)
36 #:use-module (guix gexp)
37 #:use-module (guix packages)
38 #:use-module (gnu packages)
39 #:use-module (gnu packages bash)
40 #:use-module (gnu packages check)
41 #:use-module (gnu packages cmake)
42 #:use-module (gnu packages freedesktop)
43 #:use-module (gnu packages gettext)
44 #:use-module (gnu packages glib)
45 #:use-module (gnu packages gnome)
46 #:use-module (gnu packages golang-build)
47 #:use-module (gnu packages golang-check)
48 #:use-module (gnu packages golang-crypto)
49 #:use-module (gnu packages golang-vcs)
50 #:use-module (gnu packages golang-web)
51 #:use-module (gnu packages golang-xyz)
52 #:use-module (gnu packages gstreamer)
53 #:use-module (gnu packages gtk)
54 #:use-module (gnu packages haskell-apps)
55 #:use-module (gnu packages hunspell)
56 #:use-module (gnu packages linux)
57 #:use-module (gnu packages lua)
58 #:use-module (gnu packages ncurses)
59 #:use-module (gnu packages pkg-config)
60 #:use-module (gnu packages python)
61 #:use-module (gnu packages python-build)
62 #:use-module (gnu packages python-check)
63 #:use-module (gnu packages python-web)
64 #:use-module (gnu packages python-xyz)
65 #:use-module (gnu packages qt)
66 #:use-module (gnu packages readline)
67 #:use-module (gnu packages ruby-xyz)
68 #:use-module (gnu packages rust)
69 #:use-module (gnu packages sqlite)
70 #:use-module (gnu packages terminals)
71 #:use-module (gnu packages time)
72 #:use-module (gnu packages tls)
73 #:use-module (gnu packages version-control)
74 #:use-module (guix deprecation)
75 #:use-module (guix download)
76 #:use-module (guix git-download)
77 #:use-module (guix hg-download)
78 #:use-module (guix utils)
79 #:use-module (guix build-system cargo)
80 #:use-module (guix build-system cmake)
81 #:use-module (guix build-system gnu)
82 #:use-module (guix build-system go)
83 #:use-module (guix build-system meson)
84 #:use-module (guix build-system pyproject)
85 #:use-module (guix build-system qt))
86
87(define-public beads
88 (package
89 (name "beads")
90 (version "0.17.7")
91 (source
92 (origin
93 (method git-fetch)
94 (uri (git-reference
95 (url "https://github.com/steveyegge/beads")
96 (commit (string-append "v" version))))
97 (file-name (git-file-name name version))
98 (sha256
99 (base32
100 "0adg00mqgl70fxynciswkzka5hyia86h92b1pnqd8achk6c5szbr"))))
101 (build-system go-build-system)
102 (arguments
103 (list
104 #:install-source? #f
105 #:import-path "github.com/steveyegge/beads/cmd/bd"
106 #:unpack-path "github.com/steveyegge/beads"
107 #:phases
108 #~(modify-phases %standard-phases
109 (add-before 'build 'set-home
110 (lambda _
111 (setenv "HOME" "/tmp"))))))
112 (native-inputs
113 (list git-minimal/pinned
114 go-github-com-anthropics-anthropic-sdk-go
115 go-github-com-fatih-color
116 go-github-com-spf13-cobra
117 go-github-com-spf13-viper
118 go-gopkg-in-natefinch-lumberjack-v2
119 go-modernc-org-sqlite
120 go-rsc-io-script))
121 (home-page "https://github.com/steveyegge/beads")
122 (synopsis "Graph-based issue tracker for AI coding agents")
123 (description
124 "@command{bd} (Beads) is a lightweight memory system for coding
125agents, using a graph-based issue tracker. Four kinds of dependencies
126work to chain issues together like beads, making them easy for agents
127to follow for long distances and reliably perform complex task streams
128in the right order. It uses SQLite for fast local operations and
129JSONL files stored in git for distributed synchronization across
130machines.")
131 (license license:expat)))
132
133(define-public clikan
134 (let ((commit "55ab29e68263c6fed2844aef96fbebacda3eba9b")
135 (revision "1"))
136 (package
137 (name "clikan")
138 (version
139 (git-version "0.2.1" revision commit))
140 (source
141 (origin
142 (method git-fetch)
143 (uri (git-reference
144 (url "https://github.com/kitplummer/clikan")
145 (commit commit)))
146 (file-name (git-file-name name version))
147 (sha256
148 (base32 "1nyx80z53xxlbhpb5k22jnv4jajxqhjm0gz7qb18w9pqqlrvkqd4"))))
149 (build-system pyproject-build-system)
150 (arguments
151 (list
152 #:phases
153 #~(modify-phases %standard-phases
154 (add-before 'check 'configure-tests
155 (lambda _
156 (setenv "HOME" (getenv "TEMP")))))))
157 (native-inputs
158 (list python-pytest python-click python-setuptools))
159 (inputs
160 (list python-click
161 python-click-default-group
162 python-pyyaml
163 python-rich))
164 (home-page "https://github.com/kitplummer/clikan")
165 (synopsis "Command-line kanban utility")
166 (description
167 "Clikan is a super simple command-line utility for tracking tasks
168following the Japanese kanban (boarding) style.")
169 (license license:expat))))
170
171(define-public git-bug
172 (package
173 (name "git-bug")
174 (version "0.10.1")
175 (source
176 (origin
177 (method git-fetch)
178 (uri (git-reference
179 (url "https://github.com/git-bug/git-bug")
180 (commit (string-append "v" version))))
181 (file-name (git-file-name name version))
182 (sha256
183 (base32 "1s3y8ll2942d6my2wz6bbipram4l6brbwwfvp2nr8cchzrb23dl8"))
184 (modules '((guix build utils)))
185 (snippet
186 #~(begin
187 ;; git-bug supports v2, remove when a fresh release is tagged.
188 (substitute* (find-files "." "\\.go$")
189 (("github.com/blevesearch/bleve")
190 "github.com/blevesearch/bleve/v2"))))))
191 (build-system go-build-system)
192 (arguments
193 (list
194 #:install-source? #f
195 #:import-path "github.com/git-bug/git-bug"
196 #:embed-files
197 #~(list "prelude.graphql")
198 #:test-flags
199 #~(list "-skip" (string-join
200 (list
201 ;; These tests require network access.
202 "TestValidateProject"
203 "TestValidateUsername"
204 ;; This test is buggy. See
205 ;; https://github.com/git-bug/git-bug/issues/809
206 "TestGoGitRepo_Indexes")
207 "|"))))
208 (native-inputs
209 (list go-github-com-99designs-gqlgen
210 go-github-com-99designs-keyring
211 go-github-com-araddon-dateparse
212 go-github-com-awesome-gocui-gocui
213 go-github-com-blevesearch-bleve-v2
214 go-github-com-dustin-go-humanize
215 go-github-com-fatih-color
216 go-github-com-go-git-go-billy-v5
217 go-github-com-go-git-go-git-v5
218 go-github-com-gorilla-mux
219 go-github-com-hashicorp-golang-lru-v2
220 go-github-com-michaelmure-go-term-text
221 go-github-com-phayes-freeport
222 go-github-com-protonmail-go-crypto
223 go-github-com-shurcool-githubv4
224 go-github-com-skratchdot-open-golang
225 go-github-com-spf13-cobra
226 go-github-com-stretchr-testify
227 go-github-com-vbauerster-mpb-v8
228 go-github-com-vektah-gqlparser-v2
229 ;; The build fails with the latest (v1.28.1)
230 ;; go-gitlab-com-gitlab-org-api-client-go. See
231 ;; https://github.com/git-bug/git-bug/issues/1514 So, we use the
232 ;; version specified in go.mod.
233 go-gitlab-com-gitlab-org-api-client-go-0.116
234 go-golang-org-x-oauth2
235 go-github-com-icrowley-fake
236 ;; git is required only for tests.
237 git-minimal/pinned))
238 (home-page "https://github.com/git-bug/git-bug")
239 (synopsis "Distributed, offline-first bug tracker embedded in git")
240 (description
241 "@code{git-bug} is a standalone, distributed, offline-first issue
242management tool that embeds issues, comments, and more as objects in a git
243repository.")
244 (license license:gpl3+)))
245
246(define-public gtimelog
247 (package
248 (name "gtimelog")
249 (version "0.12.0")
250 (source
251 (origin
252 (method git-fetch)
253 (uri (git-reference
254 (url "https://github.com/gtimelog/gtimelog")
255 (commit version)))
256 (file-name (git-file-name name version))
257 (sha256
258 (base32 "1k6fjvi7f3w0b8208im02y7b25sb9v1nvcl72xbqfnnr16080lin"))))
259 (build-system pyproject-build-system)
260 (arguments
261 (list
262 #:test-backend
263 #~'custom
264 #:test-flags
265 #~(list "runtests")
266 #:phases
267 #~(modify-phases %standard-phases
268 (add-after 'create-entrypoints 'wrap
269 (lambda _
270 (wrap-program (string-append #$output "/bin/gtimelog")
271 `("GI_TYPELIB_PATH" =
272 (,(getenv "GI_TYPELIB_PATH"))))))
273 (add-after 'wrap 'install-icon
274 (lambda _
275 (let ((pixmaps (string-append #$output "/share/pixmaps")))
276 (mkdir-p pixmaps)
277 (copy-file "src/gtimelog/gtimelog-large.png"
278 (string-append pixmaps "/gtimelog-large.png")))))
279 (add-after 'install-icon 'create-desktop-entry-file
280 (lambda _
281 (make-desktop-entry-file (string-append #$output
282 "/share/applications/gtimelog.desktop")
283 #:name "GTimeLog"
284 #:comment
285 "Track and time daily activities"
286 #:exec (string-append #$output
287 "/bin/gtimelog")
288 #:startup-notify #t
289 #:icon (string-append #$output
290 "/share/pixmaps/gtimelog-large.png")
291 #:categories "Utility"))))))
292 (inputs (list bash-minimal
293 gobject-introspection
294 gtk+
295 libsecret
296 libsoup
297 python-pygobject))
298 (native-inputs (list python-freezegun python-setuptools))
299 (home-page "https://gtimelog.org/")
300 (synopsis "Gtk+ time tracking application")
301 (description
302 "GTimeLog provides a time tracking application
303to allow the user to track what they work on during the day and
304how long they spend doing it.")
305 (license license:gpl3)))
306
307(define-public annextimelog
308 (package
309 (name "annextimelog")
310 (version "0.15.0")
311 (source
312 (origin
313 (method url-fetch)
314 (uri (pypi-uri "annextimelog" version))
315 (sha256
316 (base32 "0mqv5w8m9g83wzlmmvrq4kaqm9sjcy3qsyp89lqm1xig2y1w82yp"))))
317 (build-system pyproject-build-system)
318 (arguments
319 (list
320 #:test-flags #~(list "annextimelog/test.py")
321 #:phases
322 #~(modify-phases %standard-phases
323 (add-after 'create-entrypoints 'wrap-program
324 (lambda* (#:key outputs #:allow-other-keys)
325 (let ((bin (string-append #$output "/bin")))
326 (for-each (lambda (file)
327 (wrap-program file
328 `("PATH" ":" prefix
329 (,(dirname (which "git"))
330 ,(dirname (which "git-annex"))))))
331 (list (string-append bin "/annextimelog")
332 (string-append bin "/atl")))))))))
333 (native-inputs
334 (list python-poetry-core
335 python-pytest))
336 (inputs
337 (list bash-minimal
338 git
339 git-annex))
340 (propagated-inputs
341 (list python-rich
342 python-tzdata))
343 (home-page "https://gitlab.com/nobodyinperson/annextimelog")
344 (synopsis "Git Annex-backed Time Tracking")
345 (description
346 "This package provides a functionality to track time spent on projects,
347backed by Git Annex.")
348 (license license:gpl3+)))
349
350(define-public t-todo-manager
351 ;; Last release is more than 10 years old. Using latest commit.
352 (let ((changeset "89ad444c000b")
353 (revision "97"))
354 (package
355 (name "t-todo-manager")
356 (version (git-version "1.2.0" revision changeset))
357 (source
358 (origin
359 (method hg-fetch)
360 (uri (hg-reference
361 (url "https://hg.stevelosh.com/t")
362 (changeset changeset)))
363 (file-name (string-append name "-" version "-checkout"))
364 (sha256
365 (base32 "0c8zn7l0xq65wp07h7mxnb5ww56d1443l2vkjvx5sj6wpcchfn0s"))))
366 (build-system pyproject-build-system)
367 (arguments
368 (list
369 #:phases
370 #~(modify-phases %standard-phases
371 (replace 'check
372 (lambda* (#:key tests? #:allow-other-keys)
373 (if tests?
374 (invoke "cram" "tests")
375 (format #t "test suite not run.~%")))))))
376 (native-inputs
377 (list python-cram python-setuptools python-wheel))
378 (home-page "https://github.com/sjl/t")
379 (synopsis "Command-line todo list manager")
380 (description
381 "@command{t} is a command-line todo list manager for people that want
382to finish tasks, not organize them.")
383 (license license:expat))))
384
385(define-public taskwarrior
386 (package
387 (name "taskwarrior")
388 (version "3.4.2")
389 (source
390 (origin
391 (method url-fetch)
392 (uri (string-append
393 "https://github.com/GothenburgBitFactory/taskwarrior"
394 "/releases/download/v" version
395 "/task-" version ".tar.gz"))
396 (sha256
397 (base32 "05p70bfjimv87qxxxamwq18bs6n6d0mklqa5lnjy8s0jrlgpc0nk"))
398 (patches (search-patches
399 "taskwarrior-link-taskchampion-cpp-with-sqlite3.patch"))
400 (snippet
401 #~(begin (use-modules (guix build utils))
402 (delete-file-recursively "doc/ref")
403 (substitute* "doc/CMakeLists.txt"
404 ((".*task-ref.*") ""))))))
405 (build-system cmake-build-system)
406 (arguments
407 (list
408 #:tests? #f ;No tests implemented.
409 #:imported-modules `(,@%cargo-build-system-modules
410 ,@%cmake-build-system-modules)
411 #:modules '(((guix build cargo-build-system) #:prefix cargo:)
412 (guix build cmake-build-system)
413 (guix build utils))
414 #:phases
415 #~(modify-phases %standard-phases
416 (add-after 'unpack 'prepare-cargo-build-system
417 (lambda args
418 (for-each
419 (lambda (phase)
420 (format #t "Running cargo phase: ~a~%" phase)
421 (apply (assoc-ref cargo:%standard-phases phase)
422 #:cargo-target #$(cargo-triplet) args))
423 '(prepare-rust-crates
424 unpack-rust-crates
425 configure
426 check-for-pregenerated-files
427 patch-cargo-checksums)))))))
428 (inputs
429 (list gnutls
430 ;; needs sqlite3_is_interrupted, not present on 3.39.3
431 sqlite-next
432 `(,util-linux "lib")))
433 (native-inputs
434 (cons* corrosion
435 rust
436 (cargo-inputs 'taskwarrior)))
437 (home-page "https://taskwarrior.org")
438 (synopsis "Command line task manager")
439 (description
440 "Taskwarrior is a command-line task manager following the Getting Things
441Done time management method. It supports network synchronization, filtering
442and querying data, exposing task data in multiple formats to other tools.")
443 (license license:expat)))
444
445(define-public tasksh
446 (package
447 (name "tasksh")
448 (version "1.2.0")
449 (source
450 (origin
451 (method url-fetch)
452 (uri (string-append
453 "https://taskwarrior.org/download/tasksh-" version ".tar.gz"))
454 (sha256 (base32
455 "1z8zw8lld62fjafjvy248dncjk0i4fwygw0ahzjdvyyppx4zjhkf"))))
456 (build-system cmake-build-system)
457 (inputs
458 (list readline))
459 (arguments
460 `(#:tests? #f ; No tests implemented.
461 #:phases
462 (modify-phases %standard-phases
463 (delete 'install-license-files)))) ; Already installed by package
464 (home-page "https://taskwarrior.org")
465 (synopsis "Taskwarrior shell")
466 (description
467 "Tasksh is a shell for Taskwarrior, providing a more immersive
468environment for list management. It has a review feature, shell command
469execution, and libreadline support.")
470 (license license:expat)))
471
472(define-public timewarrior
473 (package
474 (name "timewarrior")
475 (version "1.4.3")
476 (source
477 (origin
478 (method url-fetch)
479 (uri (string-append
480 "https://github.com/GothenburgBitFactory/timewarrior/releases/download/v" version
481 "/timew-" version ".tar.gz"))
482 (patches (search-patches "timewarrior-time-sensitive-tests.patch"))
483 (sha256 (base32
484 "0lyaqzcg8np2fpsmih0hlkjxd3qbadc7khr24m1pq9lsdhq7xpy4"))))
485 (build-system cmake-build-system)
486 (arguments
487 (list
488 #:modules '((guix build cmake-build-system)
489 ((guix build gnu-build-system) #:prefix gnu:)
490 (guix build utils))
491 #:phases
492 #~(modify-phases %standard-phases
493 (add-after 'patch-source-shebangs 'patch-cmake-shell
494 (lambda _
495 (substitute* "src/commands/CMakeLists.txt"
496 (("/bin/sh") "sh"))))
497 ;; Fix out of source building of manual pages
498 (add-after 'patch-source-shebangs 'patch-man-cmake
499 (lambda _
500 (substitute* "doc/man1/CMakeLists.txt"
501 (("\\$\\{CMAKE_CURRENT_BINARY_DIR\\}")
502 "${CMAKE_CURRENT_SOURCE_DIR}"))
503 (substitute* "doc/man7/CMakeLists.txt"
504 (("\\$\\{CMAKE_CURRENT_BINARY_DIR\\}")
505 "${CMAKE_CURRENT_SOURCE_DIR}"))))
506 (replace 'check
507 (lambda* (#:rest args)
508 (apply (assoc-ref gnu:%standard-phases 'check)
509 #:test-target "test" args)))
510 (add-after 'install 'install-completions
511 (lambda _
512 (let ((bash-completion-install-dir
513 (string-append #$output "/etc/bash_completion.d")))
514 (mkdir-p bash-completion-install-dir)
515 (copy-file
516 "../timew-1.4.3/completion/timew-completion.bash"
517 (string-append bash-completion-install-dir "/timew"))))))))
518 (native-inputs
519 (list ruby-asciidoctor/minimal))
520 (inputs
521 (list gnutls python `(,util-linux "lib")))
522 (home-page "https://timewarrior.net")
523 (synopsis "Command line utility to track and report time")
524 (description
525 "Timewarrior is a command line time tracking application, which allows
526you to record time spent on activities. You may be tracking your time for
527curiosity, or because your work requires it.")
528 (license license:expat)))
529
530(define-public worklog
531 (let ((commit "0f545ad6697ef4de7f68d92cd7cc5c6a4c60517b")
532 (revision "1"))
533 (package
534 (name "worklog")
535 (version (git-version "2.1" revision commit))
536 (source
537 (origin
538 (method git-fetch)
539 (uri (git-reference
540 (url "https://github.com/atsb/worklog")
541 (commit commit)))
542 (file-name (git-file-name name version))
543 (sha256
544 (base32 "18dkmy168ks9gcnfqri1rfl0ag0dmh9d6ppfmjfcdd6g9gvi6zll"))))
545 (build-system gnu-build-system)
546 (arguments
547 `(#:make-flags
548 ,#~(list (string-append "CC=" #$(cc-for-target))
549 (string-append "BIN=" #$output "/bin")
550 (string-append "MAN=" #$output "/share/man"))
551 #:phases
552 (modify-phases %standard-phases
553 (delete 'configure))
554 #:tests? #f)) ; No "check" target.
555 (inputs (list ncurses))
556 (home-page "https://github.com/atsb/worklog")
557 (synopsis "Program keeping track of time spent on different projects")
558 (description
559 "@code{worklog} is a program that helps you keep track of your time.
560@code{worklog} is a simple ncurses based program that runs a clock and logs
561time to a logfile.")
562 (license license:public-domain))))
563
564(define-public dstask
565 (package
566 (name "dstask")
567 (version "1.0.1")
568 (source
569 (origin
570 (method git-fetch)
571 (uri (git-reference
572 (url "https://github.com/naggie/dstask")
573 (commit (string-append "v" version))))
574 (file-name (git-file-name name version))
575 (sha256
576 (base32 "0d2mkzsiax6mi9ddicr5l6iydpcbxm4ahaw0mj3ab463w77x09gx"))))
577 (build-system go-build-system)
578 (arguments
579 (list
580 #:install-source? #f
581 #:import-path "github.com/naggie/dstask"
582 #:build-flags
583 #~(list (string-append
584 "-ldflags=-X github.com/naggie/dstask.VERSION=" #$version
585 " -X github.com/naggie/dstask.GIT_COMMIT=" #$version))
586 #:test-subdirs #~(list "pkg/..." ".")
587 #:phases
588 #~(modify-phases %standard-phases
589 (replace 'build
590 (lambda arguments
591 (let ((path-prefix "github.com/naggie/dstask/cmd/"))
592 (for-each
593 (lambda (cmd)
594 (apply (assoc-ref %standard-phases 'build)
595 `(,@arguments #:import-path
596 ,(string-append path-prefix cmd))))
597 (list "dstask-import" "dstask")))))
598 ;; TODO: Completions may be generated on the fly with "dstask
599 ;; (bash|fish|zsh)-completion" but invocation of "dstask" requires
600 ;; creating $HOME/.dstask git repository, find out workaround and
601 ;; add fish completion as well.
602 (add-after 'install 'install-shell-completions
603 (lambda* (#:key import-path #:allow-other-keys)
604 (with-directory-excursion (string-append "src/" import-path)
605 (let* ((out #$output)
606 (share (string-append out "/share"))
607 (zsh-completion
608 (string-append share "/zsh/site-functions/_dstask"))
609 (bash-completion
610 (string-append out "/bash-completion/completions/_dstask")))
611 (install-file ".dstask-bash-completions.sh" bash-completion)
612 (install-file ".dstask-zsh-completions.sh" zsh-completion))))))))
613 (native-inputs
614 (list go-github-com-burntsushi-toml
615 go-github-com-gofrs-uuid
616 go-github-com-mattn-go-isatty
617 go-github-com-mattn-go-runewidth
618 go-github-com-shurcool-githubv4
619 go-github-com-sirupsen-logrus
620 go-github-com-stretchr-testify
621 go-golang-org-x-oauth2
622 go-golang-org-x-sys
623 go-gopkg-in-yaml-v2
624 go-mvdan-cc-xurls-v2))
625 (synopsis "CLI-based TODO manager with git-based sync + markdown notes per task")
626 (description "dstask is a personal task tracker that uses git for
627synchronization. It offers a note command to attach a Markdown based note to
628a task.")
629 (home-page "https://github.com/naggie/dstask")
630 (license license:expat)))
631
632(define-deprecated/public-alias blanket
633 (@ (gnu packages gnome-circle) blanket))
634
635(define-public feathernotes
636 (package
637 (name "feathernotes")
638 (version "0.10.0")
639 (home-page "https://github.com/tsujan/FeatherNotes")
640 (source (origin
641 (method git-fetch)
642 (uri (git-reference
643 (url home-page)
644 (commit (string-append "V" version))))
645 (file-name (git-file-name name version))
646 (sha256
647 (base32
648 "122pbbxvi0mmhbz8m8far71vm72090r5cafss4hvrsjmq52a0y4k"))))
649 (build-system qt-build-system)
650 (arguments (list #:tests? #f)) ; no upstream tests
651 (native-inputs (list pkg-config qttools-5)) ; for lrelease
652 (inputs (list hunspell qtbase-5 qtsvg-5 qtwayland-5 qtx11extras))
653 (synopsis "GUI hierarchical notes-manager")
654 (description
655 "FeatherNotes is a GUI hierarchical notes-manager for Linux.
656It is independent of any desktop environment and has rich text formatting,
657image embedding and inserting editable tables, spell checking, searchable
658tags, drag and drop support, tray icon, node icons, hyperlinks, pdf and html
659export, password protection and auto-saving.")
660 (license license:gpl3+)))
661
662(define-public pueue
663 (package
664 (name "pueue")
665 (version "4.0.4")
666 (source
667 (origin
668 (method git-fetch)
669 (uri (git-reference
670 (url "https://github.com/Nukesor/pueue")
671 (commit (string-append "v" version))))
672 (file-name (git-file-name name version))
673 (sha256
674 (base32 "0zbplfab4glj6f9rip4immca5vabyd132c4k4gch3hrmq7w39x7b"))))
675 (build-system cargo-build-system)
676 (arguments
677 (list
678 #:cargo-install-paths ''("pueue")
679 #:install-source? #f
680 #:modules
681 '((guix build cargo-build-system)
682 (guix build utils)
683 (ice-9 match))
684 #:phases
685 #~(modify-phases %standard-phases
686 (add-after 'install 'install-completions
687 (lambda* (#:key native-inputs #:allow-other-keys)
688 (for-each
689 (match-lambda
690 ((shell . path)
691 (mkdir-p (in-vicinity #$output (dirname path)))
692 (let ((binary
693 (if #$(%current-target-system)
694 (search-input-file native-inputs "bin/pueue")
695 (in-vicinity #$output "bin/pueue"))))
696 (with-output-to-file (in-vicinity #$output path)
697 (lambda _
698 (invoke binary "completions" shell))))))
699 '(("bash" . "share/bash-completion/completions/pueue")
700 ("elvish" . "share/elvish/lib/pueue")
701 ("fish" . "share/fish/vendor_completions.d/pueue.fish")
702 ("nushell" . "share/nushell/vendor/autoload/pueue")
703 ("zsh" . "share/zsh/site-functions/_pueue"))))))))
704 (native-inputs
705 (if (%current-target-system)
706 (list this-package)
707 '()))
708 (inputs (cargo-inputs 'pueue))
709 (home-page "https://github.com/Nukesor/pueue")
710 (synopsis
711 "Task management for sequential and parallel execution of long-running tasks")
712 (description
713 "Pueue is a tool that processes a queue of shell commands. On top of that,
714there are a lot of convenient features and abstractions like task groups, task
715scheduling and background process execution.")
716 (license (list license:asl2.0 license:expat))))
717
718(define-public vit
719 (package
720 (name "vit")
721 (version "2.3.4")
722 (source
723 (origin
724 (method git-fetch)
725 (uri (git-reference
726 (url "https://github.com/vit-project/vit")
727 (commit (string-append "v" version))))
728 (file-name (git-file-name name version))
729 (sha256
730 (base32 "0045zys5iy08ijlfc92vd54x5x0kq5hy0pn4iqh2bbypfs46h5rb"))))
731 (build-system pyproject-build-system)
732 (arguments
733 (list
734 #:test-backend #~'unittest
735 #:phases
736 #~(modify-phases %standard-phases
737 (add-before 'sanity-check 'set-environment-variables
738 (lambda* (#:key inputs #:allow-other-keys)
739 (setenv "TERM" "xterm"))))))
740 (inputs (list python-tasklib python-urwid))
741 (native-inputs (list ncurses python-setuptools))
742 (home-page "https://github.com/vit-project/vit")
743 (synopsis "Visual Interactive Taskwarrior full-screen terminal interface")
744 (description
745 "@code{vit} is a minimalistic full-screen terminal interface for the
746Taskwarrior task manager. It ships with customizable Vim-like key bindings.")
747 (license license:expat)))
748
749(define-public wtime
750 (package
751 (name "wtime")
752 (version "0.2")
753 (source
754 (origin
755 (method url-fetch)
756 (uri (string-append "mirror://sourceforge/wtime/wtime/"
757 version "/wtime_"
758 (string-replace-substring version "." "_")
759 ".tar.gz"))
760 (sha256
761 (base32 "1rp1sxas9wjc84fvr6x94ryl3r9w7jd0x5j1hbi9q7yrgfclp830"))))
762 (build-system gnu-build-system)
763 (arguments
764 `(#:make-flags
765 ,#~(list (string-append "CC=" #$(cc-for-target))
766 (string-append "PREFIX=" #$output))
767 #:phases
768 (modify-phases %standard-phases
769 (delete 'configure)
770 (add-after 'unpack 'fix-man-path
771 (lambda _
772 (substitute* "Makefile"
773 (("/man1") "/share/man/man1")))))
774 #:tests? #f)) ; No "check" target.
775 (home-page "https://wtime.sourceforge.net")
776 (synopsis
777 "Command-line utility for tracking time spent on arbitrary tasks")
778 (description
779 "@code{wtime} is a command-line utility for tracking time spent working
780on arbitrary tasks. All the time data is saved in files residing in the
781@code{.wtimed} directory in the user's home directory.")
782 (license license:x11)))
783
784(define-public todoman
785 (package
786 (name "todoman")
787 (version "4.4.0")
788 (source
789 (origin
790 (method url-fetch)
791 (uri (pypi-uri "todoman" version))
792 (sha256
793 (base32 "1dlxmw919jvjxycf315vzs4f5q64gdjrp3988y8jkyivqywfwyqb"))))
794 (build-system pyproject-build-system)
795 (arguments
796 (list
797 #:test-flags
798 #~(list "--hypothesis-profile=ci"
799 "tests" "-k"
800 (string-append
801 ;; Test expects wrong output string.
802 "not test_bad_start_date "
803 ;; Unknown failure
804 "and not test_default_command_args"))))
805 (native-inputs
806 (list python-freezegun
807 python-hypothesis
808 python-pytest
809 python-pytz
810 python-setuptools
811 python-wheel))
812 (propagated-inputs
813 (list python-atomicwrites
814 python-click
815 python-click-log
816 python-dateutil
817 python-humanize
818 python-icalendar
819 python-parsedatetime
820 python-pyxdg
821 python-urwid))
822 (home-page "https://todoman.readthedocs.io/")
823 (synopsis "CalDav-based todo manager")
824 (description "Todoman is a simple, standards-based, cli todo (aka: task)
825manager. Todos are stored into icalendar files, which means you can sync
826them via CalDAV using, for example, @code{vdirsyncer}.")
827 (license license:isc)))
828
829(define-public watson
830 (package
831 (name "watson")
832 (version "2.1.0")
833 (source
834 (origin
835 (method git-fetch)
836 (uri (git-reference
837 (url "https://github.com/tailordev/watson")
838 (commit version)))
839 (file-name (git-file-name name version))
840 (sha256
841 (base32 "0j0gqnxf0smjs0sy7ipryj1sk0s59wrh4qwr7h55zdr4wdhi407w"))))
842 (build-system pyproject-build-system)
843 (arguments
844 (list
845 #:phases
846 #~(modify-phases %standard-phases
847 ;; FIXME This is an edge case to fix in the build system.
848 ;; The issue seems that sanity-check is unable to handle
849 ;; the case where the module and package have different names.
850 (delete 'sanity-check))))
851 (native-inputs
852 (list python-mock
853 python-pytest
854 python-pytest-datafiles
855 python-pytest-mock
856 python-setuptools
857 python-wheel))
858 (propagated-inputs
859 (list python-arrow
860 python-click
861 python-click-didyoumean
862 python-colorama
863 python-requests))
864 (home-page "https://tailordev.github.io/Watson/")
865 (synopsis "Command-line time tracker")
866 (description
867 "Watson is command-line interface to manage your time. It supports
868projects, tagging and reports.")
869 (license license:expat)))
870
871(define-public zk
872 (package
873 (name "zk")
874 (version "0.15.2")
875 (source
876 (origin
877 (method git-fetch)
878 (uri (git-reference
879 (url "https://github.com/zk-org/zk/")
880 (commit (string-append "v" version))))
881 (file-name (git-file-name name version))
882 (sha256
883 (base32 "0g77sd8aw3mqcc4wqvrv5ir524i3x3qmpavqsl7f2hci7j4j2v2r"))
884 (modules '((guix build utils)))
885 (snippet
886 ;; Remove the sqlite database tests as they require a dependency on
887 ;; github.com/go-testfixtures/testfixtures/v3 which itself requires
888 ;; several new dependencies to be added to Guix.
889 #~(begin
890 (for-each delete-file
891 (find-files "internal/adapter/sqlite" ".*_test\\.go$"))))))
892 (build-system go-build-system)
893 (arguments
894 (list
895 #:install-source? #f
896 #:import-path "github.com/zk-org/zk"
897 #:build-flags
898 #~(list "-tags" "fts5"
899 "-ldflags" (string-append "-X=main.Version=" #$version))
900 #:test-flags
901 #~(list "-vet=off" "-skip"
902 ;; Test matches $HOME against the /etc/passwd entry.
903 ;; Doesn't work on Guix because of HOME=/homeless-shelter.
904 "TestExpandPath")
905 #:phases
906 #~(modify-phases %standard-phases
907 (add-after 'unpack 'fix-paths
908 (lambda* (#:key inputs import-path #:allow-other-keys)
909 (substitute* (string-append "src/" import-path
910 "/internal/adapter/fzf/fzf.go")
911 (("\"fzf\"")
912 (format #f "~s" (search-input-file inputs "/bin/fzf")))))))))
913 (native-inputs
914 (list go-github-com-alecaivazis-survey-v2
915 go-github-com-alecthomas-kong-for-zk
916 go-github-com-aymerick-raymond
917 go-github-com-bmatcuk-doublestar-v4
918 go-github-com-fatih-color-for-zk
919 go-github-com-go-testfixtures-testfixtures-v3
920 go-github-com-google-go-cmp
921 go-github-com-gosimple-slug
922 go-github-com-kballard-go-shellquote
923 go-github-com-lestrrat-go-strftime
924 go-github-com-mattn-go-isatty
925 go-github-com-mattn-go-sqlite3
926 go-github-com-mvdan-xurls
927 go-github-com-pelletier-go-toml
928 go-github-com-pkg-errors
929 go-github-com-relvacode-iso8601
930 go-github-com-rvflash-elapsed
931 go-github-com-schollz-progressbar-v3
932 go-github-com-tj-go-naturaldate
933 go-github-com-tliron-glsp
934 go-github-com-tliron-kutil
935 go-github-com-yuin-goldmark
936 go-github-com-yuin-goldmark-meta
937 go-github-com-zk-org-pretty
938 go-gopkg-in-djherbis-times-v1))
939 (inputs
940 (list fzf))
941 (home-page "https://zk-org.github.io/zk/")
942 (synopsis "Plain text note-taking assistant")
943 (description
944 "Command-line tooling for helping you to maintain a plain text
945Zettelkasten or personal wiki. Based on the Markdown markup language.")
946 (license license:gpl3)))