syndication.scm 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579
  1. ;;; GNU Guix --- Functional package management for GNU
  2. ;;; Copyright © 2016, 2017, 2019, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
  3. ;;; Copyright © 2018, 2019, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
  4. ;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
  5. ;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
  6. ;;;
  7. ;;; This file is part of GNU Guix.
  8. ;;;
  9. ;;; GNU Guix is free software; you can redistribute it and/or modify it
  10. ;;; under the terms of the GNU General Public License as published by
  11. ;;; the Free Software Foundation; either version 3 of the License, or (at
  12. ;;; your option) any later version.
  13. ;;;
  14. ;;; GNU Guix is distributed in the hope that it will be useful, but
  15. ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
  16. ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17. ;;; GNU General Public License for more details.
  18. ;;;
  19. ;;; You should have received a copy of the GNU General Public License
  20. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
  21. (define-module (gnu packages syndication)
  22. #:use-module ((guix licenses) #:prefix license:)
  23. #:use-module (guix download)
  24. #:use-module (guix git-download)
  25. #:use-module (guix packages)
  26. #:use-module (guix utils)
  27. #:use-module (guix build-system cargo)
  28. #:use-module (guix build-system glib-or-gtk)
  29. #:use-module (guix build-system gnu)
  30. #:use-module (guix build-system meson)
  31. #:use-module (guix build-system python)
  32. #:use-module (guix build-system qt)
  33. #:use-module (gnu packages)
  34. #:use-module (gnu packages autotools)
  35. #:use-module (gnu packages base)
  36. #:use-module (gnu packages check)
  37. #:use-module (gnu packages crates-io)
  38. #:use-module (gnu packages curl)
  39. #:use-module (gnu packages documentation)
  40. #:use-module (gnu packages freedesktop)
  41. #:use-module (gnu packages gettext)
  42. #:use-module (gnu packages glib)
  43. #:use-module (gnu packages gnome)
  44. #:use-module (gnu packages gstreamer)
  45. #:use-module (gnu packages gtk)
  46. #:use-module (gnu packages kde-frameworks)
  47. #:use-module (gnu packages ncurses)
  48. #:use-module (gnu packages pkg-config)
  49. #:use-module (gnu packages python)
  50. #:use-module (gnu packages python-check)
  51. #:use-module (gnu packages python-xyz)
  52. #:use-module (gnu packages python-web)
  53. #:use-module (gnu packages qt)
  54. #:use-module (gnu packages ruby)
  55. #:use-module (gnu packages rust)
  56. #:use-module (gnu packages sqlite)
  57. #:use-module (gnu packages time)
  58. #:use-module (gnu packages tls)
  59. #:use-module (gnu packages video)
  60. #:use-module (gnu packages web)
  61. #:use-module (gnu packages webkit)
  62. #:use-module (gnu packages xml)
  63. #:use-module (gnu packages xorg)
  64. #:use-module (srfi srfi-1))
  65. (define-public cawbird
  66. (package
  67. (name "cawbird")
  68. (version "1.4.2")
  69. (source
  70. (origin
  71. (method git-fetch)
  72. (uri (git-reference
  73. (url "https://github.com/IBBoard/cawbird")
  74. (commit (string-append "v"version))))
  75. (file-name (git-file-name name version))
  76. (sha256
  77. (base32 "17575cp5qcgsqf37y3xqg3vr6l2j8bbbkmy2c1l185rxghfacida"))))
  78. (build-system meson-build-system)
  79. (arguments
  80. `(#:glib-or-gtk? #t
  81. #:configure-flags
  82. ;; Cawbirds's default key and secret for OAuth process with twitter.
  83. (list
  84. "-Dconsumer_key_base64=VmY5dG9yRFcyWk93MzJEZmhVdEk5Y3NMOA=="
  85. "-Dconsumer_secret_base64=MThCRXIxbWRESDQ2Y0podzVtVU13SGUyVGlCRXhPb3BFRHhGYlB6ZkpybG5GdXZaSjI=")
  86. #:phases
  87. (modify-phases %standard-phases
  88. (add-after 'unpack 'disable-failing-tests
  89. (lambda _
  90. ;; These tests require networking.
  91. (substitute* "tests/meson.build"
  92. (("[ \t]*.*avatardownload.*$") "")
  93. (("[ \t]*.*filters.*$") "")
  94. (("[ \t]*.*friends.*$") "")
  95. (("[ \t]*.*inlinemediadownloader.*$") "")
  96. (("[ \t]*.*tweetparsing.*$") "")
  97. (("[ \t]*.*usercounter.*$") ""))))
  98. (delete 'check)
  99. (add-after 'install 'custom-check
  100. (lambda* (#:key outputs tests? #:allow-other-keys)
  101. (when tests?
  102. ;; Tests require a running X server.
  103. (system "Xvfb :1 +extension GLX &")
  104. (setenv "DISPLAY" ":1")
  105. ;; Tests write to $HOME.
  106. (setenv "HOME" (getcwd))
  107. ;; Tests look for gsettings-schemas installed by the package.
  108. (setenv "XDG_DATA_DIRS"
  109. (string-append (getenv "XDG_DATA_DIRS")
  110. ":" (assoc-ref outputs "out") "/share"))
  111. (invoke "meson" "test"))))
  112. (add-after 'glib-or-gtk-wrap 'wrap-paths
  113. (lambda* (#:key outputs #:allow-other-keys)
  114. (let* ((out (assoc-ref outputs "out"))
  115. (bin (string-append out "/bin/"))
  116. (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH"))
  117. (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
  118. (wrap-program (string-append bin "cawbird")
  119. `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))
  120. `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))))))
  121. (native-inputs
  122. `(("gettext" ,gettext-minimal)
  123. ("glib:bin" ,glib "bin")
  124. ("gobject-introspection" ,gobject-introspection)
  125. ("gtk+:bin" ,gtk+ "bin")
  126. ("pkg-config" ,pkg-config)
  127. ("vala" ,vala)
  128. ("xmllint" ,libxml2)
  129. ("xorg-server" ,xorg-server-for-tests)))
  130. (inputs
  131. `(("glib" ,glib)
  132. ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
  133. ("gspell" ,gspell)
  134. ("gstreamer" ,gstreamer)
  135. ("gst-libav" ,gst-libav)
  136. ("gst-plugins-bad" ,gst-plugins-bad)
  137. ("gst-plugins-base" ,gst-plugins-base)
  138. ("gst-plugins-good" ,gst-plugins-good)
  139. ("gtk+" ,gtk+)
  140. ("json-glib" ,json-glib)
  141. ("liboauth" ,liboauth)
  142. ("libsoup" ,libsoup)
  143. ("rest" ,rest)
  144. ("sqlite" ,sqlite)
  145. ("x11" ,libx11)))
  146. (propagated-inputs
  147. (list dconf))
  148. (synopsis "Client for Twitter")
  149. (description "Cawbird is a Twitter client built with GTK and Vala.
  150. It supports all features except non-mention notifications, polls, threads and
  151. cards.")
  152. (home-page "https://ibboard.co.uk/cawbird/")
  153. (license license:gpl3+)))
  154. (define-public giara
  155. (package
  156. (name "giara")
  157. (version "0.3")
  158. (source
  159. (origin
  160. (method git-fetch)
  161. (uri (git-reference
  162. (url "https://gitlab.gnome.org/World/giara")
  163. (commit version)))
  164. (file-name (git-file-name name version))
  165. ;; To fix authentication while adding accounts.
  166. (patches (search-patches "giara-fix-login.patch"))
  167. (sha256
  168. (base32 "004qmkfrgd37axv0b6hfh6v7nx4pvy987k5yv4bmlmkj9sbqm6f9"))))
  169. (build-system meson-build-system)
  170. (arguments
  171. `(#:glib-or-gtk? #t
  172. #:phases
  173. (modify-phases %standard-phases
  174. (add-after 'glib-or-gtk-wrap 'wrap-paths
  175. (lambda* (#:key outputs #:allow-other-keys)
  176. (let* ((out (assoc-ref outputs "out"))
  177. (bin (string-append out "/bin/"))
  178. (lib (string-append out "/lib/python"
  179. ,(version-major+minor
  180. (package-version python))
  181. "/site-packages")))
  182. (wrap-program (string-append bin "giara")
  183. `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH") ,lib))
  184. `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH"))))))))))
  185. (native-inputs
  186. `(("gettext" ,gettext-minimal)
  187. ("glib:bin" ,glib "bin")
  188. ("gobject-introspection" ,gobject-introspection)
  189. ("gtk+:bin" ,gtk+ "bin")
  190. ("pkg-config" ,pkg-config)
  191. ("xmllint" ,libxml2)))
  192. (inputs
  193. `(("glib" ,glib)
  194. ("gtk+" ,gtk+)
  195. ("gtksourceview" ,gtksourceview)
  196. ("libhandy" ,libhandy)
  197. ("python" ,python)
  198. ("python-beautifulsoup" ,python-beautifulsoup4)
  199. ("python-dateutil" ,python-dateutil)
  200. ("python-mistune" ,python-mistune)
  201. ("python-pillow" ,python-pillow)
  202. ("python-praw" ,python-praw)
  203. ("python-pycairo" ,python-pycairo)
  204. ("python-pygobject" ,python-pygobject)
  205. ("python-requests" ,python-requests)
  206. ("webkitgtk" ,webkitgtk-with-libsoup2)))
  207. (propagated-inputs
  208. (list dconf))
  209. (synopsis "Client for Reddit")
  210. (description "Giara is a reddit app, built with Python, GTK and Handy.")
  211. (home-page "https://giara.gabmus.org/")
  212. (license license:gpl3+)))
  213. (define-public newsboat
  214. (package
  215. (name "newsboat")
  216. (version "2.26")
  217. (source
  218. (origin
  219. (method url-fetch)
  220. (uri (string-append "https://newsboat.org/releases/" version
  221. "/newsboat-" version ".tar.xz"))
  222. (sha256
  223. (base32 "061w86jffyi49m4d9n974a3pd1svbw3azmh0qx8h2v7h0178791l"))))
  224. (build-system cargo-build-system)
  225. (native-inputs
  226. `(("gettext" ,gettext-minimal)
  227. ("openssl" ,openssl)
  228. ("pkg-config" ,pkg-config)
  229. ;; For building documentation.
  230. ("asciidoctor" ,ruby-asciidoctor)))
  231. (inputs
  232. (list curl
  233. json-c
  234. libxml2
  235. ncurses
  236. stfl
  237. sqlite))
  238. (arguments
  239. `(#:modules ((guix build cargo-build-system)
  240. (guix build utils)
  241. ((guix build gnu-build-system) #:prefix gnu:))
  242. #:vendor-dir "vendor"
  243. #:install-source? #f
  244. #:cargo-inputs
  245. (("rust-backtrace" ,rust-backtrace-0.3)
  246. ("rust-bitflags" ,rust-bitflags-1)
  247. ("rust-chrono" ,rust-chrono-0.4)
  248. ("rust-curl-sys" ,rust-curl-sys-0.4)
  249. ("rust-cxx" ,rust-cxx-1)
  250. ("rust-fastrand" ,rust-fastrand-1)
  251. ("rust-gettext-rs" ,rust-gettext-rs-0.7)
  252. ("rust-lexopt" ,rust-lexopt-0.2)
  253. ("rust-libc" ,rust-libc-0.2)
  254. ("rust-md5" ,rust-md5-0.7)
  255. ("rust-natord" ,rust-natord-1)
  256. ("rust-nom" ,rust-nom-7)
  257. ("rust-once-cell" ,rust-once-cell-1)
  258. ("rust-percent-encoding" ,rust-percent-encoding-2)
  259. ("rust-url" ,rust-url-2)
  260. ("rust-unicode-width" ,rust-unicode-width-0.1)
  261. ("rust-xdg" ,rust-xdg-2))
  262. #:cargo-development-inputs
  263. (("rust-cxx-build" ,rust-cxx-build-1)
  264. ("rust-tempfile" ,rust-tempfile-3)
  265. ("rust-proptest" ,rust-proptest-1)
  266. ("rust-section-testing" ,rust-section-testing-0.0))
  267. #:phases
  268. (modify-phases %standard-phases
  269. (add-after 'configure 'dont-vendor-self
  270. (lambda* (#:key vendor-dir #:allow-other-keys)
  271. ;; Don't keep the whole tarball in the vendor directory
  272. (delete-file-recursively
  273. (string-append vendor-dir "/" ,name "-" ,version ".tar.xz"))))
  274. (add-after 'unpack 'patch-source
  275. (lambda* (#:key outputs #:allow-other-keys)
  276. (substitute* "Makefile"
  277. (("Cargo.lock") "")
  278. ;; Replace the prefix in the Makefile.
  279. (("/usr/local") (assoc-ref outputs "out")))))
  280. (replace 'build
  281. (assoc-ref gnu:%standard-phases 'build))
  282. (replace 'check
  283. (lambda args
  284. ((assoc-ref gnu:%standard-phases 'check)
  285. #:test-target "test")))
  286. (replace 'install
  287. (assoc-ref gnu:%standard-phases 'install)))))
  288. (native-search-paths
  289. ;; Newsboat respects CURL_CA_BUNDLE.
  290. (list (search-path-specification
  291. (variable "CURL_CA_BUNDLE")
  292. (file-type 'regular)
  293. (separator #f) ;single entry
  294. (files '("etc/ssl/certs/ca-certificates.crt")))))
  295. (home-page "https://newsboat.org/")
  296. (synopsis "Text-mode RSS and Atom feed reader with podcast support")
  297. (description "Newsboat is a feed reader for @dfn{RSS} and @dfn{Atom}, XML
  298. formats widely used to transmit, publish, and syndicate news or blog articles.
  299. It's designed for use on text terminals, and to have a coherent and easy-to-use
  300. interface that might look familiar to @command{mutt} or @command{slrn} users.
  301. Newsboat supports OPML import/exports, HTML rendering, podcasts (with
  302. @command{podboat}), off-line reading, searching and storing articles to your
  303. file system, and many more features.")
  304. (properties '((release-monitoring-url . "https://newsboat.org/news.atom")))
  305. (license (list license:gpl2+ ; filter/*
  306. license:expat)))) ; everything else
  307. (define-public newsboat-2.13
  308. (package
  309. (inherit newsboat)
  310. (version "2.13")
  311. (source
  312. (origin
  313. (method url-fetch)
  314. (uri (string-append "https://newsboat.org/releases/" version
  315. "/newsboat-" version ".tar.xz"))
  316. (sha256
  317. (base32
  318. "0pik1d98ydzqi6055vdbkjg5krwifbk2hy2f5jp5p1wcy2s16dn7"))))
  319. (build-system gnu-build-system)
  320. (native-inputs
  321. `(,@(fold alist-delete (package-native-inputs newsboat)
  322. '("asciidoctor" "openssl"))
  323. ;; For building documentation.
  324. ("asciidoc" ,asciidoc)))
  325. (inputs
  326. (modify-inputs (package-inputs newsboat)
  327. (replace "json-c" json-c-0.13)))
  328. (arguments
  329. '(#:phases
  330. (modify-phases %standard-phases
  331. (delete 'configure) ; no configure script
  332. (add-after 'build 'build-documentation
  333. (lambda _
  334. (invoke "make" "doc"))))
  335. #:make-flags
  336. (list (string-append "prefix=" (assoc-ref %outputs "out")))
  337. #:test-target "test"))))
  338. (define-public liferea
  339. (package
  340. (name "liferea")
  341. (version "1.13.4")
  342. (source
  343. (origin
  344. (method git-fetch)
  345. (uri (git-reference
  346. (url "https://github.com/lwindolf/liferea/")
  347. (commit (string-append "v" version))))
  348. (file-name (git-file-name name version))
  349. (sha256
  350. (base32 "1g9463bvswsm899j6dfhslcg6np70m5wq143mjicr24zy8d17bm7"))))
  351. (build-system glib-or-gtk-build-system)
  352. (arguments
  353. `(#:configure-flags
  354. (list
  355. "--disable-static")
  356. #:phases
  357. (modify-phases %standard-phases
  358. (add-before 'configure 'prepare-build-environment
  359. (lambda* (#:key inputs #:allow-other-keys)
  360. ;; Workaround for https://github.com/lwindolf/liferea/issues/767.
  361. (setenv "WEBKIT_DISABLE_COMPOSITING_MODE" "1")))
  362. (add-after 'install 'wrap-gi-python
  363. (lambda* (#:key inputs outputs #:allow-other-keys)
  364. (let ((out (assoc-ref outputs "out"))
  365. (gi-typelib-path (getenv "GI_TYPELIB_PATH"))
  366. (python-path (getenv "GUIX_PYTHONPATH")))
  367. (wrap-program (string-append out "/bin/liferea")
  368. `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))
  369. `("GUIX_PYTHONPATH" ":" prefix (,python-path))))
  370. #t)))))
  371. (native-inputs
  372. (list autoconf
  373. automake
  374. gettext-minimal
  375. `(,glib "bin")
  376. gobject-introspection
  377. intltool
  378. libtool
  379. pkg-config
  380. which))
  381. (inputs
  382. (list glib
  383. glib-networking
  384. gnome-keyring
  385. gsettings-desktop-schemas
  386. gstreamer
  387. json-glib
  388. libnotify
  389. libpeas
  390. libsecret
  391. libsoup-minimal-2
  392. libxml2
  393. libxslt
  394. pango
  395. python
  396. python-pycairo
  397. python-pygobject
  398. sqlite
  399. webkitgtk-with-libsoup2))
  400. (home-page "https://lzone.de/liferea/")
  401. (synopsis "News reader for GTK/GNOME")
  402. (description "Liferea is a desktop feed reader/news aggregator that
  403. brings together all of the content from your favorite subscriptions into
  404. a simple interface that makes it easy to organize and browse feeds.")
  405. (license license:gpl2+)))
  406. (define-public rtv
  407. (package
  408. (name "rtv")
  409. (version "1.27.0")
  410. (source
  411. (origin
  412. (method url-fetch)
  413. (uri (pypi-uri "rtv" version))
  414. (sha256
  415. (base32 "0hvw426y09l3yzwv2zkb9hifpfbg9wd1gg0y3z3pxcli6n3ii2wl"))))
  416. (build-system python-build-system)
  417. (arguments
  418. '(#:phases
  419. (modify-phases %standard-phases
  420. (add-before 'check 'set-environment-variables
  421. (lambda* (#:key inputs #:allow-other-keys)
  422. (setenv "HOME" (getcwd))
  423. (setenv "TERM" "linux")
  424. (setenv "TERMINFO"
  425. (search-input-directory inputs "share/terminfo"))))
  426. ;; Loading this as a library requires a controlling terminal, etc.
  427. (delete 'sanity-check))
  428. #:tests? #f)) ; tests fail: _curses.error: nocbreak() returned ERR
  429. (propagated-inputs
  430. (list python-beautifulsoup4 python-decorator python-kitchen
  431. python-requests python-six))
  432. (native-inputs
  433. (list ncurses
  434. python-coveralls
  435. python-coverage
  436. python-mock
  437. python-pylint
  438. python-pytest
  439. python-vcrpy))
  440. (home-page "https://github.com/michael-lazar/rtv")
  441. (synopsis "Terminal viewer for Reddit (Reddit Terminal Viewer)")
  442. (description
  443. "RTV provides a text-based interface to view and interact with Reddit.")
  444. (license (list license:expat
  445. license:gpl3+)))) ; rtv/packages/praw
  446. (define-public tuir
  447. (package
  448. (name "tuir")
  449. (version "1.29.0")
  450. (source
  451. (origin
  452. (method url-fetch)
  453. (uri (pypi-uri "tuir" version))
  454. (sha256
  455. (base32
  456. "06xb030ibphbrz4nsxm8mh3g60ld8xfp6kc3j6vi1k4ls5s4h79i"))))
  457. (build-system python-build-system)
  458. (arguments
  459. `(#:phases
  460. (modify-phases %standard-phases
  461. (delete 'sanity-check) ; Tries to read environment variables.
  462. (replace 'check
  463. (lambda* (#:key tests? inputs outputs #:allow-other-keys)
  464. (add-installed-pythonpath inputs outputs)
  465. (when tests?
  466. (invoke "pytest")))))))
  467. (inputs
  468. (list python-beautifulsoup4 python-decorator python-kitchen
  469. python-requests python-six))
  470. (native-inputs
  471. (list python-coverage
  472. python-coveralls
  473. python-mock
  474. python-pylint
  475. python-pytest
  476. python-vcrpy))
  477. (home-page "https://gitlab.com/ajak/tuir")
  478. (synopsis "Terminal viewer for Reddit (Terminal UI for Reddit)")
  479. (description
  480. "Tuir provides a simple terminal viewer for Reddit (Terminal UI for Reddit).")
  481. (license (list license:expat
  482. license:gpl3+)))) ; tuir/packages/praw
  483. (define-public rawdog
  484. (package
  485. (name "rawdog")
  486. (version "2.23")
  487. (source
  488. (origin
  489. (method url-fetch)
  490. (uri (string-append "https://offog.org/files/rawdog-"
  491. version ".tar.gz"))
  492. (sha256
  493. (base32
  494. "18nyg19mwxyqdnykplkqmzb4n27vvrhvp639zai8f81gg9vdbsjp"))))
  495. (build-system python-build-system)
  496. (arguments
  497. `(#:python ,python-2.7))
  498. (inputs
  499. (list python2-feedparser python2-pytidylib))
  500. (home-page "https://offog.org/code/rawdog/")
  501. (synopsis "RSS Aggregator Without Delusions Of Grandeur")
  502. (description
  503. "@command{rawdog} is a feed aggregator, capable of producing a personal
  504. \"river of news\" or a public \"planet\" page. It supports all common feed
  505. formats, including all versions of RSS and Atom.")
  506. (license license:gpl2+)))
  507. (define-public gfeeds
  508. (package
  509. (name "gfeeds")
  510. (version "0.16.2")
  511. (source (origin
  512. (method url-fetch)
  513. (uri
  514. (string-append
  515. "https://gitlab.gnome.org/World/gfeeds/-/archive/" version
  516. "/gfeeds-" version ".tar.bz2"))
  517. (sha256
  518. (base32
  519. "05gwwzqfz29m477imd5vh84jfla1wnklwpc2sdxnqli72wg08fli"))))
  520. (build-system meson-build-system)
  521. (arguments
  522. `(#:phases
  523. (modify-phases %standard-phases
  524. (add-after 'unpack 'patch-mpv-path
  525. (lambda* (#:key inputs #:allow-other-keys)
  526. (substitute* "gfeeds/confManager.py"
  527. (("mpv") (search-input-file inputs "/bin/mpv")))
  528. #t))
  529. (add-after 'install 'wrap-gfeeds
  530. (lambda* (#:key outputs #:allow-other-keys)
  531. (wrap-program (string-append
  532. (assoc-ref outputs "out") "/bin/gfeeds")
  533. `("PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH")))
  534. `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH")))
  535. `("XDG_DATA_DIRS" ":" prefix (,(getenv "XDG_DATA_DIRS"))))
  536. #t)))))
  537. (native-inputs
  538. `(("glib:bin" ,glib "bin")
  539. ("gobject-introspection" ,gobject-introspection)
  540. ("gtk+:bin" ,gtk+ "bin")
  541. ("pkg-config" ,pkg-config)))
  542. (inputs
  543. (list glib
  544. gsettings-desktop-schemas
  545. gtk+
  546. hicolor-icon-theme
  547. libhandy
  548. mpv
  549. python
  550. python-beautifulsoup4
  551. python-dateutil
  552. python-feedparser
  553. python-html5lib
  554. python-listparser
  555. python-lxml
  556. python-pillow
  557. python-pygments
  558. python-pytz
  559. python-readability
  560. python-requests
  561. webkitgtk
  562. python-pygobject))
  563. (home-page "https://gfeeds.gabmus.org/")
  564. (synopsis "Easy-to-use GTK+ RSS/Atom feed reader")
  565. (description "Feeds is an RSS/Atom feed reader made with GTK+
  566. and it has an easy-to-use graphical user interface.")
  567. (license license:gpl3+)))