diff --git a/srcpkgs/guile-avahi/template b/srcpkgs/guile-avahi/template new file mode 100644 index 00000000000000..461336dfafcbbb --- /dev/null +++ b/srcpkgs/guile-avahi/template @@ -0,0 +1,15 @@ +# Template file for 'guile-avahi' +pkgname=guile-avahi +version=0.4.1 +revision=1 +build_style=gnu-configure +configure_args="--with-guile-site-dir=no" +hostmakedepends="pkgconf guile-devel" +makedepends="guile-devel avahi-libs-devel gmp-devel" +depends="avahi-libs" +short_desc="Avahi bindings for GNU Guile" +maintainer="nerdyslacker " +license="LGPL-3.0-or-later" +homepage="https://www.nongnu.org/guile-avahi" +distfiles="${NONGNU_SITE}/guile-avahi/guile-avahi-${version}.tar.gz" +checksum=db9de9e19df728b40d23c0381caa9f8eda2b175fa7f69f153be8f3f078044ca5 diff --git a/srcpkgs/guile-bytestructures/template b/srcpkgs/guile-bytestructures/template new file mode 100644 index 00000000000000..1271ff95b00e29 --- /dev/null +++ b/srcpkgs/guile-bytestructures/template @@ -0,0 +1,19 @@ +# Template file for 'guile-bytestructures' +pkgname=guile-bytestructures +version=2.0.2 +revision=1 +build_style=gnu-configure +configure_args="--with-guile-site-dir=no" +hostmakedepends="autoconf automake libtool pkgconf texinfo guile-devel" +makedepends="guile-devel" +short_desc="Structured access to bytevector contents for Guile" +maintainer="nerdyslacker " +license="GPL-3.0-or-later" +homepage="https://github.com/TaylanUB/scheme-bytestructures" +changelog="https://github.com/TaylanUB/scheme-bytestructures/releases" +distfiles="https://github.com/TaylanUB/scheme-bytestructures/archive/refs/tags/v${version}.tar.gz" +checksum=b0681daa006c80efd2fce5dc174ac439d44be8a9c2e70938e497efad08cd5659 + +pre_configure() { + autoreconf -vfi +} diff --git a/srcpkgs/guile-gcrypt/template b/srcpkgs/guile-gcrypt/template new file mode 100644 index 00000000000000..70e76a46f20a2f --- /dev/null +++ b/srcpkgs/guile-gcrypt/template @@ -0,0 +1,19 @@ +# Template file for 'guile-gcrypt' +pkgname=guile-gcrypt +version=0.5.0 +revision=1 +build_style=gnu-configure +configure_args="--with-guile-site-dir=no" +hostmakedepends="autoconf automake libtool pkgconf texinfo guile-devel" +makedepends="guile-devel libgcrypt-devel" +depends="libgcrypt-devel" +short_desc="Guile Scheme bindings for libgcrypt" +maintainer="nerdyslacker " +license="GPL-3.0-or-later" +homepage="https://codeberg.org/guile-gcrypt/guile-gcrypt" +distfiles="https://codeberg.org/guile-gcrypt/guile-gcrypt/archive/v${version}.tar.gz" +checksum=92dd5d2253ecb96a30483850528a76f6e1d7e53e5163670a7d9126f78fe4cfbe + +pre_configure() { + ./bootstrap.sh +} diff --git a/srcpkgs/guile-lib/template b/srcpkgs/guile-lib/template new file mode 100644 index 00000000000000..03c808420b8792 --- /dev/null +++ b/srcpkgs/guile-lib/template @@ -0,0 +1,18 @@ +# Template file for 'guile-lib' +pkgname=guile-lib +version=0.2.8.1 +revision=1 +build_style=gnu-configure +configure_args="--with-guile-site-dir=no" +hostmakedepends="guile-devel pkgconf" +makedepends="guile-devel texinfo" +short_desc="Repository of useful code written in Guile Scheme" +maintainer="nerdyslacker " +license="GPL-3.0-or-later AND LGPL-3.0-or-later" +homepage="http://www.nongnu.org/guile-lib/" +distfiles="https://download.savannah.gnu.org/releases/guile-lib/guile-lib-${version}.tar.gz" +checksum=1374c2d839e6a33d190cd1dabd9c7f87753f8384f55b866f3e142155c22b49b1 + +post_install() { + rm -f ${DESTDIR}/usr/share/info/dir +} diff --git a/srcpkgs/guile-lzlib/template b/srcpkgs/guile-lzlib/template new file mode 100644 index 00000000000000..0124d8ae700b8c --- /dev/null +++ b/srcpkgs/guile-lzlib/template @@ -0,0 +1,19 @@ +# Template file for 'guile-lzlib' +pkgname=guile-lzlib +version=0.3.0 +revision=1 +build_style=gnu-configure +configure_args="--with-guile-site-dir=no" +hostmakedepends="autoconf automake libtool pkgconf guile-devel" +makedepends="guile-devel lzlib-devel" +depends="lzlib-devel" +short_desc="Guile bindings for lzlib" +maintainer="nerdyslacker " +license="GPL-3.0-or-later" +homepage="https://codeberg.org/guile-compression/guile-lzlib" +distfiles="https://codeberg.org/guile-compression/guile-lzlib/archive/${version}.tar.gz" +checksum=a7f99c8d2a143e05ea22db2dc8b9ce6c27cae942162b45ee3015ed9027af0ff2 + +pre_configure() { + autoreconf -vfi +} diff --git a/srcpkgs/guile-semver/template b/srcpkgs/guile-semver/template new file mode 100644 index 00000000000000..3981abacf57275 --- /dev/null +++ b/srcpkgs/guile-semver/template @@ -0,0 +1,15 @@ +# Template file for 'guile-semver' +pkgname=guile-semver +version=0.1.1 +revision=1 +build_style=gnu-configure +configure_args="--with-guile-site-dir=no" +hostmakedepends="autoconf automake libtool pkgconf guile-devel" +makedepends="guile-devel zlib-devel" +depends="zlib-devel" +short_desc="Guile library for semantic versions" +maintainer="nerdyslacker " +license="GPL-3.0-or-later" +homepage="https://ngyro.com/software/guile-semver.html" +distfiles="https://files.ngyro.com/guile-semver/guile-semver-${version}.tar.gz" +checksum=4f790919375feb204a8ea2eda92a291d9bb4de4c8eb1c6776784589a86253781 diff --git a/srcpkgs/guile-sqlite3/template b/srcpkgs/guile-sqlite3/template new file mode 100644 index 00000000000000..13bd324e106574 --- /dev/null +++ b/srcpkgs/guile-sqlite3/template @@ -0,0 +1,19 @@ +# Template file for 'guile-sqlite3' +pkgname=guile-sqlite3 +version=0.1.3 +revision=1 +build_style=gnu-configure +configure_args="--with-guile-site-dir=no" +hostmakedepends="autoconf automake libtool pkgconf guile-devel" +makedepends="guile-devel sqlite-devel" +depends="sqlite-devel" +short_desc="Guile bindings for SQLite" +maintainer="nerdyslacker " +license="LGPL-3.0-or-later" +homepage="https://codeberg.org/guile-sqlite3/guile-sqlite3" +distfiles="https://codeberg.org/guile-sqlite3/guile-sqlite3/archive/v${version}.tar.gz" +checksum=158cb82958c6329319f911412999ea125980f327f54185bf0dad271d6f8f45c2 + +pre_configure() { + autoreconf -vfi +} diff --git a/srcpkgs/guile-ssh/template b/srcpkgs/guile-ssh/template new file mode 100644 index 00000000000000..d05a9937d784c8 --- /dev/null +++ b/srcpkgs/guile-ssh/template @@ -0,0 +1,21 @@ +# Template file for 'guile-ssh' +pkgname=guile-ssh +version=1.0.0 +revision=1 +archs="x86_64 aarch64" +build_style=gnu-configure +configure_args="--with-guile-site-dir=no" +hostmakedepends="autoconf automake libtool pkgconf texinfo guile-devel" +makedepends="guile-devel libssh-devel" +short_desc="SSH module for Guile based on libssh" +maintainer="nerdyslacker " +license="GPL-3.0-or-later" +homepage="https://github.com/artyom-poptsov/guile-ssh" +distfiles="https://github.com/artyom-poptsov/guile-ssh/archive/v${version}.tar.gz" +checksum=9be26290cdd65ffe812d1e69d4bb87a2d41d2ee72ff8db65dee817fc315f153c +# tests fail due to libssh API mismatch (signature/key API changed in libssh 1.x) +make_check=no + +pre_configure() { + autoreconf -fi +} diff --git a/srcpkgs/guile-zlib/patches/zlib.patch b/srcpkgs/guile-zlib/patches/zlib.patch new file mode 100644 index 00000000000000..7877bf6694531d --- /dev/null +++ b/srcpkgs/guile-zlib/patches/zlib.patch @@ -0,0 +1,14 @@ +--- a/zlib.scm 2025-01-19 00:55:26.000000000 +0400 ++++ b/zlib.scm 2026-04-17 00:35:52.268609895 +0400 +@@ -63,7 +63,10 @@ + ;;; Code: + + (define %zlib +- (delay (dynamic-link %libz))) ++ (delay ++ (or (false-if-exception (dynamic-link "libz.so.1")) ++ (false-if-exception (dynamic-link "libz")) ++ (error "zlib: unable to load libz library")))) + + (define (zlib-procedure ret name parameters) + "Return a procedure corresponding to C function NAME in libz, or #f if diff --git a/srcpkgs/guile-zlib/template b/srcpkgs/guile-zlib/template new file mode 100644 index 00000000000000..9e81bae4c63ca5 --- /dev/null +++ b/srcpkgs/guile-zlib/template @@ -0,0 +1,19 @@ +# Template file for 'guile-zlib' +pkgname=guile-zlib +version=0.2.2 +revision=1 +build_style=gnu-configure +configure_args="--with-guile-site-dir=no" +hostmakedepends="autoconf automake libtool pkgconf guile-devel" +makedepends="guile-devel zlib-devel" +depends="zlib-devel" +short_desc="Guile bindings for zlib" +maintainer="nerdyslacker " +license="GPL-3.0-or-later" +homepage="https://codeberg.org/guile-compression/guile-zlib" +distfiles="https://codeberg.org/guile-compression/guile-zlib/archive/v${version}.tar.gz" +checksum=6f6cca4b32ca79f3f4627cdb7ea68569a3cc38be60468991e2b5c085783e38c1 + +pre_configure() { + autoreconf -vfi +} diff --git a/srcpkgs/guile-zstd/template b/srcpkgs/guile-zstd/template new file mode 100644 index 00000000000000..c815b45dc6b3fe --- /dev/null +++ b/srcpkgs/guile-zstd/template @@ -0,0 +1,19 @@ +# Template file for 'guile-zstd' +pkgname=guile-zstd +version=0.1.1 +revision=1 +build_style=gnu-configure +configure_args="--with-guile-site-dir=no" +hostmakedepends="autoconf automake libtool pkgconf guile-devel" +makedepends="guile-devel libzstd-devel" +depends="libzstd-devel" +short_desc="Guile bindings for zstd" +maintainer="nerdyslacker " +license="GPL-3.0-or-later" +homepage="https://codeberg.org/guile-compression/guile-zstd" +distfiles="https://codeberg.org/guile-compression/guile-zstd/archive/v${version}.tar.gz" +checksum=6e57ef524f20cab79ca5fd62366c5435f71cf652f582fc1e7d62585e90d499c5 + +pre_configure() { + autoreconf -vfi +} diff --git a/srcpkgs/guix/files/guix-daemon/run b/srcpkgs/guix/files/guix-daemon/run new file mode 100755 index 00000000000000..2ddea29179cf1e --- /dev/null +++ b/srcpkgs/guix/files/guix-daemon/run @@ -0,0 +1,5 @@ +#!/bin/sh + +exec 2>&1 +# https://guix.gnu.org/manual/1.5.0/en/html_node/Build-Environment-Setup.html#unprivileged_002ddaemon_002dmigration +exec chpst -u _guix_daemon guix-daemon diff --git a/srcpkgs/guix/files/guix.sh b/srcpkgs/guix/files/guix.sh new file mode 100755 index 00000000000000..fa2027f820a0f3 --- /dev/null +++ b/srcpkgs/guix/files/guix.sh @@ -0,0 +1,53 @@ +# Explicitly initialize XDG base directory variables to ease compatibility +# with Guix System: see . +export XCURSOR_PATH="${XCURSOR_PATH:-$HOME/.local/share/icons:$HOME/.icons:/usr/local/share/icons:/usr/share/icons}" +export XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}" +export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" +export XDG_STATE_HOME="${XDG_STATE_HOME:-$HOME/.local/state}" +export XDG_DATA_DIRS="${XDG_DATA_DIRS:-/usr/local/share/:/usr/share/}" +export XDG_CONFIG_DIRS="${XDG_CONFIG_DIRS:-/etc/xdg}" +export XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}" +# no default for XDG_RUNTIME_DIR (depends on foreign distro for semantics) + +# `guix pull` profile +GUIX_PROFILE="$HOME/.config/guix/current" +export PATH="$GUIX_PROFILE/bin${PATH:+:}$PATH" +# Add to INFOPATH and MANPATH so the latest Guix documentation is available to +# info and man readers. When INFOPATH is unset, add a trailing colon so Emacs +# searches 'Info-default-directory-list'. When MANPATH is unset, add a +# trailing colon so the system default search path is used. +export INFOPATH="$GUIX_PROFILE/share/info:$INFOPATH" +export MANPATH="$GUIX_PROFILE/share/man:$MANPATH" + +# User's default profile, if it exists +GUIX_PROFILE="$HOME/.guix-profile" +if [ -f "$GUIX_PROFILE/etc/profile" ]; then + . "$GUIX_PROFILE/etc/profile" + + # see info '(guix) Application Setup' + export GUIX_LOCPATH="$GUIX_PROFILE/lib/locale${GUIX_LOCPATH:+:}$GUIX_LOCPATH" + + # Documentation search paths may be handled by $GUIX_PROFILE/etc/profile if + # the user installs info and man readers via Guix. If the user doesn’t, + # explicitly add to them so documentation for software from ‘guix install’ + # is available to the system info and man readers. + case $INFOPATH in + *$GUIX_PROFILE/share/info*) ;; + *) export INFOPATH="$GUIX_PROFILE/share/info:$INFOPATH" ;; + esac + case $MANPATH in + *$GUIX_PROFILE/share/man*) ;; + *) export MANPATH="$GUIX_PROFILE/share/man:$MANPATH" + esac + + case $XDG_DATA_DIRS in + *$GUIX_PROFILE/share*) ;; + *) export XDG_DATA_DIRS="$GUIX_PROFILE/share:$XDG_DATA_DIRS" + esac +fi + +# NOTE: Guix Home handles its own profile initialization in ~/.profile. See +# info '(guix) Configuring the Shell'. + +# Clean up after ourselves. +unset GUIX_PROFILE diff --git a/srcpkgs/guix/template b/srcpkgs/guix/template new file mode 100644 index 00000000000000..c04cb36182d28f --- /dev/null +++ b/srcpkgs/guix/template @@ -0,0 +1,90 @@ +# Template file for 'guix' +pkgname=guix +version=1.5.0 +revision=1 +# Guix currently requires a glibc-based host system. +archs="x86_64 aarch64" +build_style=gnu-configure +configure_args=" + --prefix=${XBPS_CROSS_BASE}/usr + --sysconfdir=${XBPS_CROSS_BASE}/etc + --localstatedir=${XBPS_CROSS_BASE}/var + --disable-rpath + --with-bash-completion-dir=${XBPS_CROSS_BASE}/usr/share/bash-completion/completions + --with-fish-completion-dir=${XBPS_CROSS_BASE}/usr/share/fish/vendor_completions.d +" +hostmakedepends="pkgconf texinfo help2man git gettext po4a guile-devel guile-gnutls guile-gcrypt guile-git guile-gnutls + guile-json guile-lzlib guile-sqlite3 guile-lib guile-semver guile-ssh guile-zlib guile-zstd guile-avahi" +makedepends="bzip2-devel guile-devel zlib-devel libgcrypt-devel linux-headers sqlite-devel" +depends="guile guile-gcrypt guile-git guile-gnutls guile-json guile-lzlib guile-semver guile-zlib guile-sqlite3 guile-lib + guile-zstd guile-avahi guile-ssh shadow" +short_desc="Functional package manager based on Guile Scheme" +maintainer="nerdyslacker " +license="GPL-3.0-or-later" +homepage="https://guix.gnu.org" +changelog="https://guix.gnu.org/en/blog/tags/releases" +distfiles="${GNU_SITE}/guix/guix-${version}.tar.gz" +checksum=df2102eed00aff0b17275654a42f094c8a1117ec065884eb1ff76005e47415c5 +system_groups="_guix_daemon _guixbuild kvm" +system_accounts="_guix_daemon _guixbuild" +_guix_daemon_pgroup="_guix_daemon" +_guix_daemon_groups="kvm" +_guixbuild_pgroup="_guixbuild" +make_dirs=" + /gnu 0755 _guix_daemon _guix_daemon + /etc/guix 0755 _guix_daemon _guix_daemon + /var/guix 0755 _guix_daemon _guix_daemon + /var/guix/daemon-socket 0755 _guix_daemon _guix_daemon + /var/guix/db 0755 _guix_daemon _guix_daemon + /var/guix/discover 0755 _guix_daemon _guix_daemon + /var/guix/gcroots 0755 _guix_daemon _guix_daemon + /var/guix/offload 0755 _guix_daemon _guix_daemon + /var/guix/substitute 0755 _guix_daemon _guix_daemon + /var/guix/temproots 0755 _guix_daemon _guix_daemon + /var/log/guix 0755 _guix_daemon _guix_daemon +" +# Tests are disabled because they require: +# - network access and bootstrap downloads +# - unprivileged user/pid/mount namespaces +make_check=no + +pre_configure() { + local guix_system="${XBPS_TARGET_MACHINE}-linux" + + case "${XBPS_TARGET_MACHINE}" in + i686) guix_system="i686-linux" ;; + armv7l) guix_system="armhf-linux" ;; + ppc64le) guix_system="powerpc64le-linux" ;; + esac + + configure_args+=" --with-system=${guix_system}" + + export GUILE_LOAD_PATH="/usr/share/guile/site/3.0:/usr/share/guile/3.0" + export GUILE_LOAD_COMPILED_PATH="/usr/lib/guile/3.0/site-ccache:/usr/lib/guile/3.0/ccache" +} + +post_install() { + vmkdir etc/profile.d + vcopy "${FILESDIR}/guix.sh" etc/profile.d + + rm -rf \ + "${DESTDIR}/usr/lib/upstart" \ + "${DESTDIR}/etc/init.d" \ + "${DESTDIR}/etc/openrc" \ + "${DESTDIR}/usr/lib/systemd" \ + "${DESTDIR}/usr/share/selinux" \ + "${DESTDIR}/etc/apparmor.d" + + vsv guix-daemon + + vmkdir etc/guix + { + printf '(acl\n (entry\n' + sed -e 's,^, ,g' -e 's, $$,,g' \ + etc/substitutes/ci.guix.gnu.org.pub + printf ' (tag\n (guix import)\n )\n )\n (entry\n' + sed -e 's,^, ,g' -e 's, $$,,g' \ + etc/substitutes/bordeaux.guix.gnu.org.pub + printf ' (tag\n (guix import)\n )\n )\n )\n' + } > "${DESTDIR}/etc/guix/acl" +}