;;; git-annex.scm --- custom Guix packages for git-annex ;;; ;;; Copyright © 2019 Kyle Meyer ;;; ;;; This file is NOT part of GNU Guix. ;;; ;;; This program 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. ;;; ;;; This program 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 this program. If not, see ;;; . (define-module (km-packages git-annex) #:use-module (gnu packages) #:use-module (gnu packages haskell) #:use-module (gnu packages haskell-apps) #:use-module (gnu packages haskell-xyz) #:use-module (gnu packages ipfs) #:use-module ((guix build utils) #:select (with-directory-excursion)) #:use-module (guix build-system trivial) #:use-module (guix build-system haskell) #:use-module (guix download) #:use-module (guix gexp) #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix utils) #:use-module (ice-9 popen) #:use-module (ice-9 rdelim)) (define %source-dir (string-append (getenv "HOME") "/src/haskell/git-annex-for-guix")) ;; Copied from guile-daemon. (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 "rev-parse" "HEAD")) (define-public git-annex-dev (let ((commit (current-commit))) (package (inherit git-annex) (name "git-annex-dev") (version (string-append "000-" (string-take commit 7))) (source (local-file %source-dir #:recursive? #t #:select? (git-predicate %source-dir))) (arguments `(,@(substitute-keyword-arguments (package-arguments git-annex) ((#:tests? _ #f) #f) ((#:phases phases) `(modify-phases ,phases (delete 'check) (add-before 'factor-setup 'delete-setup (lambda _ ;; Otherwise get write error because is read-only. (delete-file "Setup.hs") #t)) (add-before 'unpatch-shell-and-rebuild 'delete-shell (lambda _ ;; Avoid permission error when copying file. (delete-file "Utility/Shell.hs") #t)))))))))) (define-public git-annex-remote-ipfs (package (name "git-annex-remote-ipfs") (version "0.20190702") (source (origin (method url-fetch) (uri (string-append "https://git-annex.branchable.com/" "special_remotes/external/git-annex-remote-ipfs")) (sha256 (base32 "0m3fwaz4r7y0xf07rnh23n7rk2qm8idizslspwcqmp413m97w345")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) #:builder (begin (use-modules (guix build utils)) (let* ((file (assoc-ref %build-inputs "source")) (out (string-append %output "/bin")) (outfile (string-append out "/git-annex-remote-ipfs"))) (mkdir-p out) (copy-file file outfile) (chmod outfile #o555) #t)))) (propagated-inputs `(("go-ipfs" ,go-ipfs))) (home-page "https://git-annex.branchable.com") (synopsis "todo") (description "todo") (license license:gpl3)))