(define-module (packages) #:use-module ((ice-9 textual-ports) #:prefix textual-ports:) #:use-module ((guix licenses) #:prefix licenses:) #:use-module ((org euandre packages) #:prefix packages:) #:use-module (gnu) #:use-module (guix build-system gnu) #:use-module (guix download) #:use-module (guix packages) #:use-module (guix utils)) (use-package-modules lsof golang golang-xyz networking sqlite) (define (slurp f) (string-trim-both (call-with-input-file f textual-ports:get-string-all))) (define (go-package-0 name) (package (name name) (version (slurp (string-append "src/versions/" name "/version"))) (source (origin (method url-fetch) (uri (string-append "https://papo.im/git/" name "/snapshot/" name "-" version ".tar.xz")) (sha256 (base32 (slurp (string-append "src/versions/" name "/sha256")))))) (build-system gnu-build-system) (arguments (list #:make-flags #~(list (string-append "PREFIX=" %output)) #:phases #~(modify-phases %standard-phases (delete 'configure) (add-before 'build 'setenv-golang (lambda _ (setenv "CGO_ENABLED" "0") (setenv "GOCACHE" (string-append (getenv "TMPDIR") "/GOCACHE"))))))) (native-inputs (list go-1.22)) (synopsis #f) (description #f) (home-page #f) (license licenses:agpl3+))) (define (go-package-1 name extra-inputs) (let ((base (go-package-0 name))) (package (inherit base) (arguments (substitute-keyword-arguments (package-arguments base) ((#:phases phases) #~(modify-phases #$phases (add-before 'build 'add-gobang-vendored-dependency (lambda _ (mkdir-p "vendor/euandre.org/gobang/src") (copy-file (string-append #$(this-package-native-input "gobang") "/src/gobang/lib.go") "vendor/euandre.org/gobang/src/lib.go") (call-with-output-file "vendor/modules.txt" (lambda (port) (format port "~a~%~a~%~a~%~a~%" "# euandre.org/gobang v0.1.0 => ../gobang" "## explicit; go 1.21.5" "euandre.org/gobang/src" "# euandre.org/gobang => ../gobang"))))))))) (native-inputs (append (package-native-inputs base) `(("gobang" ,gobang "out")) (map (lambda (p) `(,(package-name p) ,p "out")) extra-inputs)))))) (define (go-package-2 name) (let ((base (go-package-1 name '()))) (package (inherit base) (arguments (substitute-keyword-arguments (package-arguments base) ((#:phases phases) #~(modify-phases #$phases (add-before 'build 'add-gosqlite3-vendored-dependency (lambda _ (copy-recursively (string-append #$(this-package-native-input "go-github-com-mattn-go-sqlite3") "/src") "vendor") (call-with-output-file "vendor/modules.txt" (lambda (port) (format port "~a~%~a~%~a~%" "# github.com/mattn/go-sqlite3 v1.14.22" "## explicit; go 1.19" "github.com/mattn/go-sqlite3"))))))))) (native-inputs (modify-inputs (package-native-inputs base) (append go-github-com-mattn-go-sqlite3 `(,sqlite "out") `(,sqlite "static"))))))) (define-public gobang (go-package-0 "gobang")) (define-public binder (go-package-1 "binder" (list packages:eut socat lsof))) (define-public papod (go-package-2 "papod")) (list gobang binder papod)