1
0
mirror of https://codeberg.org/hako/Rosenthal.git synced 2025-06-08 03:56:02 +00:00
Rosenthal/modules/rosenthal/packages/web.scm
Hilton Chain 51a983adf3
rosenthal: hugo: Update to 0.147.3.
* modules/rosenthal/packages/web.scm (hugo): Update to 0.147.3.
[arguments]<#:go>: Use go-1.24.
2025-05-15 16:30:51 +08:00

265 lines
11 KiB
Scheme

;; SPDX-FileCopyrightText: 2022, 2025 Hilton Chain <hako@ultrarare.space>
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
(define-module (rosenthal packages web)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (rosenthal utils download)
#:use-module (guix build-system go)
#:use-module (gnu packages golang)
#:use-module (gnu packages image)
#:use-module (gnu packages web)
#:use-module (gnu packages version-control)
#:use-module (rosenthal packages golang))
(define-public caddy
(package
(name "caddy")
(version "2.10.0")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/caddyserver/caddy")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"00crxr956sp865pc3mg0zsacsy80s8v4jgqpmbq3hrsk2gcdsc47"))
(modules '((guix build utils)))
(snippet '(substitute* "go.mod"
(("^toolchain.*") "")))))
(build-system go-build-system)
(arguments
(list #:go go-1.24
#:tests? (not (%current-target-system)) ;TODO: Run test suite.
#:install-source? #f
#:import-path "./cmd/caddy"
#:build-flags
#~(list "-tags" "nobadger nomysql nopgx"
(string-append
"-ldflags="
" -X github.com/caddyserver/caddy/v2.CustomVersion="
#$(package-version this-package)))
#:modules
'((ice-9 match)
((guix build gnu-build-system) #:prefix gnu:)
(guix build go-build-system)
(guix build utils))
#:phases
#~(modify-phases %standard-phases
(replace 'unpack
(lambda args
(unsetenv "GO111MODULE")
(apply (assoc-ref gnu:%standard-phases 'unpack) args)
(copy-recursively
#+(this-package-native-input "vendored-go-dependencies")
"vendor")))
(replace 'install-license-files
(assoc-ref gnu:%standard-phases 'install-license-files))
(add-after 'install 'install-extras
(lambda _
(let ((caddy
(or (which "caddy")
(in-vicinity #$output "bin/caddy"))))
(invoke caddy "manpage" "--directory"
(in-vicinity #$output "share/man/man8"))
(map
(match-lambda
((shell . path)
(let ((file (in-vicinity #$output path)))
(mkdir-p (dirname file))
(with-output-to-file file
(lambda ()
(invoke caddy "completion" shell))))))
'(("bash" . "etc/bash_completion.d/caddy")
("fish" . "share/fish/vendor_completions.d/caddy.fish")
("zsh" . "share/zsh/site-functions/_caddy"))))))
(delete 'check)
(add-after 'install 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(let ((caddy (in-vicinity #$output "bin/caddy")))
(invoke caddy "help")
(invoke caddy "version"))))))))
(native-inputs
(list (origin
(method (go-mod-vendor #:go go-1.24))
(uri (package-source this-package))
(file-name "vendored-go-dependencies")
(sha256
(base32
"0iwxhc85xnhpqrahiaw1017vxg27hc5q22rc0f96g42mc2mbi2zl")))))
(home-page "https://caddyserver.com/")
(synopsis "Extensible HTTP web server with automatic HTTPS")
(description
"Caddy is a web server designed for simplicity and ease of use. It is
notable for its automatic HTTPS feature, which enables secure connections
without requiring complex configuration. Caddy is built with a focus on
performance and flexibility, making it suitable for a variety of applications,
from serving static websites to running dynamic web applications.")
(license license:asl2.0)))
(define-public hugo
(package
(name "hugo")
(version "0.147.3")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/gohugoio/hugo")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"17r4lhxkrv4rd2g5ap7glxnhkvg611g0z143bfj0kx80ir7rbdq8"))))
(build-system go-build-system)
(arguments
(list
#:go go-1.24
#:install-source? #f
#:import-path "."
#:build-flags
#~(list "-tags" "extended withdeploy"
(string-append
"-ldflags="
" -X github.com/gohugoio/hugo/common/hugo.vendorInfo=Nonguix"))
#:test-flags ''("-skip=^TestCommands/mod|^TestCommands/server")
#:test-subdirs ''(".")
#:modules
'(((guix build gnu-build-system) #:prefix gnu:)
(guix build go-build-system)
(guix build utils))
#:phases
#~(modify-phases %standard-phases
(replace 'unpack
(lambda args
(unsetenv "GO111MODULE")
(apply (assoc-ref gnu:%standard-phases 'unpack) args)
(copy-recursively
#+(this-package-native-input "vendored-go-dependencies")
"vendor")))
(replace 'install-license-files
(assoc-ref gnu:%standard-phases 'install-license-files))
(add-after 'unpack 'fix-paths
(lambda* (#:key native-inputs inputs #:allow-other-keys)
(setenv "C_INCLUDE_PATH"
(string-append
(getenv "C_INCLUDE_PATH") ":"
(dirname
(dirname
(dirname
(search-input-file
(or native-inputs inputs)
"src/dec/alphai_dec.h"))))))
(with-directory-excursion "vendor/github.com/bep/gowebp"
(substitute* (find-files "internal/libwebp")
(("../../libwebp_src/(.*)\"" _ file)
(format #f "~a\""
(search-input-file
(or native-inputs inputs) file)))))
(with-directory-excursion "vendor/github.com/bep/golibsass"
(substitute* (find-files "internal/libsass")
(("../../libsass_src/(.*)\"" _ file)
(format #f "~a\""
(search-input-file
(or native-inputs inputs) file))))))))))
(native-inputs
(list (origin
(method (go-mod-vendor #:go go-1.24))
(uri (package-source this-package))
(file-name "vendored-go-dependencies")
(sha256
(base32
"1pwq7i0y2gb4cw9nriy699wa6pqlhz42rjkzv39g355nyszwpyj8")))
(package-source libsass)
(package-source libwebp)))
(home-page "https://gohugo.io/")
(synopsis "Static site generator written in Go")
(description
"Hugo is a static site generator written in Go, optimized for speed and
designed for flexibility. With its advanced templating system and fast asset
pipelines, Hugo renders a complete site in seconds, often less.")
(license license:asl2.0)))
(define-public forgejo
(package
(name "forgejo")
(version "10.0.3")
;; TODO: Address npm dependencies and fetch from git.
(source (origin
(method url-fetch)
(uri (string-append
"https://codeberg.org/forgejo/forgejo/releases/download/v"
version "/forgejo-src-" version ".tar.gz"))
(sha256
(base32
"0cqp4x3xrvr7q1pkijqmf6jnx3wahi20xjfrv7ap81ykif83269x"))
(modules '((guix build utils)))
;; Avoid downloading toolchain.
(snippet '(substitute* "go.mod"
(("^toolchain.*") "")))))
(build-system go-build-system)
(arguments
(list #:tests? (not (%current-target-system)) ;TODO: Run test suite.
#:go go-1.23
#:install-source? #f
#:import-path "."
#:build-flags
#~(list (string-append
"-ldflags="
" -X main.ReleaseVersion=" #$(package-version this-package)
" -X main.Version=" #$(package-version this-package)
" -X main.ForgejoVersion=" #$(package-version this-package)
" -X code.gitea.io/gitea/modules/setting.AppWorkPath=/var/lib/forgejo"
" -X code.gitea.io/gitea/modules/setting.CustomPath=" #$output "/etc/forgejo"
" -X code.gitea.io/gitea/modules/setting.CustomConf=/etc/forgejo/app.ini"))
#:modules
'(((guix build gnu-build-system) #:prefix gnu:)
(guix build go-build-system)
(guix build union)
(guix build utils))
#:phases
#~(modify-phases %standard-phases
(replace 'unpack
(lambda args
(unsetenv "GO111MODULE")
(apply (assoc-ref gnu:%standard-phases 'unpack) args)))
(replace 'install-license-files
(assoc-ref gnu:%standard-phases 'install-license-files))
(add-after 'install 'rename-binary
(lambda _
(rename-file (in-vicinity #$output "bin/gitea")
(in-vicinity #$output "bin/forgejo"))))
(add-after 'install 'install-extras
(lambda _
(mkdir-p (in-vicinity #$output "/etc/forgejo"))
(copy-file "custom/conf/app.example.ini"
(in-vicinity #$output "etc/forgejo/app.ini"))
(for-each
(lambda (dir)
(copy-recursively
dir (string-append #$output "/etc/forgejo/" dir)))
'("options" "public" "templates"))))
(delete 'check)
(add-after 'install 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(let ((gitea (in-vicinity #$output "bin/gitea")))
(invoke gitea "--help")
(invoke gitea "--version"))))))))
(native-inputs (list git-minimal))
(home-page "https://forgejo.org/")
(synopsis "Lightweight software forge")
(description
"Forgejo is a self-hosted, lightweight software forge designed to
facilitate collaborative software development. It is built to be easy to
install and maintain, making it an ideal choice for teams and organizations
looking for a reliable platform to manage their software projects.")
(license license:gpl3+)
(properties
'((rosenthal-update? . #f)))))