diff options
Diffstat (limited to 'guix.scm')
| -rw-r--r-- | guix.scm | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/guix.scm b/guix.scm new file mode 100644 index 0000000..731cd32 --- /dev/null +++ b/guix.scm @@ -0,0 +1,129 @@ +;;; Guile Feed --- Feed command-line interface. +;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> +;;; +;;; This file is part of Guile Feed. +;;; +;;; Guile Feed is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published +;;; by the Free Software Foundation; either version 3 of the License, +;;; or (at your option) any later version. +;;; +;;; Guile Feed is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;; General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with Guile Feed. If not, see +;;; <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; This file contains Guix package for development version of Guile +;; Feed. To build or install, run: +;; +;; guix build --file=guix.scm +;; guix package --install-from-file=guix.scm + +;;; Code: + +(use-modules (gnu packages autotools) + (gnu packages gnupg) + (gnu packages guile) + (gnu packages package-management) + (gnu packages pkg-config) + (gnu packages tls) + (guix build utils) + (guix build-system gnu) + (guix gexp) + (guix git-download) + (guix packages) + (ice-9 popen) + (ice-9 rdelim) + ((guix licenses) #:prefix license:)) + +(define %source-dir (dirname (current-filename))) + +(define (git-output . args) + "Execute 'git ARGS ...' command and return its output without trailing +newspace." + (with-directory-excursion %source-dir + (let* ((port (apply open-pipe* OPEN_READ "git" args)) + (output (read-string port))) + (close-port port) + (string-trim-right output #\newline)))) + +(define (current-commit) + (git-output "log" "-n" "1" "--pretty=format:%H")) + +(define guile-feed + (let ((commit (current-commit))) + (package + (name "guile-feed") + (version (string-append "0.0.1" "-" (string-take commit 7))) + (source (local-file %source-dir + #:recursive? #t + #:select? (git-predicate %source-dir))) + (build-system gnu-build-system) + (arguments + `(#:modules ((guix build gnu-build-system) + (guix build utils) + (srfi srfi-26) + (ice-9 popen) + (ice-9 rdelim)) + #:phases + (modify-phases %standard-phases + (add-after 'install 'wrap-program + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; Make sure the 'guix' command finds GnuTLS, + ;; Guile-JSON, and Guile-Git automatically. + (let* ((out (assoc-ref outputs "out")) + (guile (assoc-ref inputs "guile")) + (gcrypt (assoc-ref inputs "guile-gcrypt")) + (gnutls (assoc-ref inputs "gnutls")) + (guix (assoc-ref inputs "guix")) + (json (assoc-ref inputs "guile-json")) + (deps (list gcrypt gnutls guix json out)) + (effective + (read-line + (open-pipe* OPEN_READ + (string-append guile "/bin/guile") + "-c" "(display (effective-version))"))) + (path (string-join + (map (cut string-append <> + "/share/guile/site/" + effective) + deps) + ":")) + (gopath (string-join + (map (cut string-append <> + "/lib/guile/" effective + "/site-ccache") + deps) + ":"))) + + (wrap-program (string-append out "/bin/feed") + `("GUILE_LOAD_PATH" ":" prefix (,path)) + `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,gopath))) + + #t)))))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("pkg-config" ,pkg-config))) + (inputs + `(("gnutls" ,gnutls) + ("guile" ,guile-2.2) + ("guile-gcrypt" ,guile-gcrypt) + ("guile-json" ,guile-json) + ("guix" ,guix))) + (home-page "https://gitlab.com/wigust/guile-feed") + (synopsis "Command-line RSS feeds manager") + (description + "This package provides a command-line program to manage RSS feeds +written in Guile.") + (license license:gpl3+)))) + +guile-feed + +;;; guix.scm ends here |
