(use-modules ((guix licenses) #:prefix license:) (guix packages) (guix download) (guix git-download) (guix build-system cmake) (gnu packages crypto) (gnu packages databases) (gnu packages libidn) (gnu packages linux) (gnu packages python) (gnu packages sqlite) (gnu packages version-control) (gnu packages xml) (ice-9 rdelim) (ice-9 popen)) ;;;; (define %source-dir (dirname (current-filename))) (define %git-dir (string-append %source-dir "/.git")) ; double-escaped template of the biboumi sexp ; This allows us to bake the expression without doing a full eval to a record, ; so it can be written (define-public biboumi-template '(package (name "biboumi") (version (read-line (open-pipe* OPEN_READ "git" "--git-dir" %git-dir "describe" "--always" "--dirty"))) (source `(origin (method git-fetch) (uri (git-reference (recursive? #t) (url "https://git.singpolyma.net/biboumi") (commit ,(read-line (open-pipe* OPEN_READ "git" "--git-dir" %git-dir "rev-parse" "HEAD"))))) (file-name (git-file-name name version)) (sha256 (base32 ,(read-line (open-pipe* OPEN_READ "guix" "hash" "-rx" %source-dir)))))) (build-system 'cmake-build-system) (arguments '`(#:tests? #f #:phases (modify-phases %standard-phases (add-after 'unpack 'fix-etc-reference (lambda* (#:key outputs #:allow-other-keys) (substitute* "CMakeLists.txt" ((".etc.biboumi") (string-append (assoc-ref outputs "out") "/etc/biboumi")))))))) (inputs '(list botan expat git libidn2 postgresql python sqlite `(,util-linux "lib"))) (home-page "https://git.singpolyma.net/biboumi") (synopsis "XMPP to IRC bridge") (description "") (license 'license:bsd-3))) ; Baked version of jmp-pay-template with leaves eval'd (define-public biboumi-baked (cons (car biboumi-template) (map (lambda (x) (list (car x) (eval (cadr x) (current-module)))) (cdr biboumi-template)))) ; Build clean from git the version from a local clone ; To build whatever is sitting in local use: ; guix build --with-source=$PWD -f guix.scm (eval biboumi-baked (current-module))