Files
fruix/modules/fruix/packages/freebsd.scm

360 lines
12 KiB
Scheme

(define-module (fruix packages freebsd)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-9)
#:export (freebsd-release
freebsd-package?
freebsd-package-name
freebsd-package-version
freebsd-package-build-system
freebsd-package-inputs
freebsd-package-home-page
freebsd-package-synopsis
freebsd-package-description
freebsd-package-license
freebsd-package-install-plan
freebsd-kernel
freebsd-kernel-headers
freebsd-libc
freebsd-bootloader
freebsd-rc-scripts
freebsd-runtime
freebsd-userland
freebsd-clang-toolchain
freebsd-gmake
freebsd-autotools
freebsd-openssl
freebsd-zlib
freebsd-sh
freebsd-bash
%freebsd-core-packages
%freebsd-development-profile-packages
%freebsd-system-packages))
(define-record-type <freebsd-package>
(make-freebsd-package name version build-system inputs home-page synopsis
description license install-plan)
freebsd-package?
(name freebsd-package-name)
(version freebsd-package-version)
(build-system freebsd-package-build-system)
(inputs freebsd-package-inputs)
(home-page freebsd-package-home-page)
(synopsis freebsd-package-synopsis)
(description freebsd-package-description)
(license freebsd-package-license)
(install-plan freebsd-package-install-plan))
(define* (freebsd-package #:key name version build-system (inputs '()) home-page
synopsis description license install-plan)
(make-freebsd-package name version build-system inputs home-page synopsis
description license install-plan))
(define freebsd-release "15.0-STABLE")
(define freebsd-kernel
(freebsd-package
#:name "freebsd-kernel"
#:version freebsd-release
#:build-system 'copy-build-system
#:home-page "https://www.freebsd.org/"
#:synopsis "Prototype package for the running FreeBSD kernel"
#:description
"Prototype package definition that stages the currently installed FreeBSD
kernel image into a store-like output for FreeBSD porting experiments."
#:license 'bsd-2
#:install-plan
'((file "/boot/kernel/kernel" "boot/kernel/kernel")
(file "/boot/kernel/linker.hints" "boot/kernel/linker.hints"))))
(define freebsd-kernel-headers
(freebsd-package
#:name "freebsd-kernel-headers"
#:version freebsd-release
#:build-system 'copy-build-system
#:home-page "https://www.freebsd.org/"
#:synopsis "Prototype package for FreeBSD kernel headers"
#:description
"Prototype package definition that stages a minimal set of FreeBSD kernel
header directories from /usr/src for Guix porting experiments."
#:license 'bsd-2
#:install-plan
'((directory "/usr/src/sys/sys" "include/sys"))))
(define freebsd-libc
(freebsd-package
#:name "freebsd-libc"
#:version freebsd-release
#:build-system 'copy-build-system
#:inputs (list freebsd-kernel-headers)
#:home-page "https://www.freebsd.org/"
#:synopsis "Prototype package for FreeBSD libc and userland headers"
#:description
"Prototype package definition that stages FreeBSD libc, the dynamic loader,
and the userland C headers needed for development profiles."
#:license 'bsd-2
#:install-plan
'((file "/lib/libc.so.7" "lib/libc.so.7")
(file "/lib/libsys.so.7" "lib/libsys.so.7")
(file "/lib/libutil.so.10" "lib/libutil.so.10")
(file "/lib/libxo.so.0" "lib/libxo.so.0")
(file "/lib/libm.so.5" "lib/libm.so.5")
(file "/lib/lib80211.so.1" "lib/lib80211.so.1")
(file "/lib/libjail.so.1" "lib/libjail.so.1")
(file "/lib/libnv.so.1" "lib/libnv.so.1")
(file "/lib/libsbuf.so.6" "lib/libsbuf.so.6")
(file "/lib/libbsdxml.so.4" "lib/libbsdxml.so.4")
(file "/lib/libcrypt.so.5" "lib/libcrypt.so.5")
(file "/lib/libmd.so.7" "lib/libmd.so.7")
(file "/libexec/ld-elf.so.1" "libexec/ld-elf.so.1"))))
(define freebsd-bootloader
(freebsd-package
#:name "freebsd-bootloader"
#:version freebsd-release
#:build-system 'copy-build-system
#:inputs (list freebsd-libc)
#:home-page "https://www.freebsd.org/"
#:synopsis "Prototype package for FreeBSD loader and boot assets"
#:description
"Prototype package definition that stages the FreeBSD boot loader and the
minimal loader support tree needed for declarative system-closure experiments."
#:license 'bsd-2
#:install-plan
'((file "/boot/loader" "boot/loader")
(file "/boot/loader.efi" "boot/loader.efi")
(file "/boot/device.hints" "boot/device.hints")
(directory "/boot/defaults" "boot/defaults")
(directory "/boot/lua" "boot/lua"))))
(define freebsd-sh
(freebsd-package
#:name "freebsd-sh"
#:version freebsd-release
#:build-system 'copy-build-system
#:inputs (list freebsd-libc)
#:home-page "https://www.freebsd.org/"
#:synopsis "Prototype package for the FreeBSD POSIX shell"
#:description
"Prototype package definition that stages the base system POSIX shell from
FreeBSD."
#:license 'bsd-2
#:install-plan
'((file "/bin/sh" "bin/sh"))))
(define freebsd-userland
(freebsd-package
#:name "freebsd-userland"
#:version freebsd-release
#:build-system 'copy-build-system
#:inputs (list freebsd-libc freebsd-sh)
#:home-page "https://www.freebsd.org/"
#:synopsis "Prototype package for selected FreeBSD userland utilities"
#:description
"Prototype package definition that stages a small set of base FreeBSD
userland commands needed for development and build experiments."
#:license 'bsd-2
#:install-plan
'((file "/bin/cat" "bin/cat")
(file "/bin/cp" "bin/cp")
(file "/bin/echo" "bin/echo")
(file "/bin/ln" "bin/ln")
(file "/bin/ls" "bin/ls")
(file "/bin/mkdir" "bin/mkdir")
(file "/bin/mv" "bin/mv")
(file "/bin/pwd" "bin/pwd")
(file "/bin/rm" "bin/rm")
(file "/usr/bin/find" "bin/find")
(file "/usr/bin/tar" "bin/tar")
(file "/usr/bin/xargs" "bin/xargs"))))
(define freebsd-rc-scripts
(freebsd-package
#:name "freebsd-rc-scripts"
#:version freebsd-release
#:build-system 'copy-build-system
#:inputs (list freebsd-sh)
#:home-page "https://www.freebsd.org/"
#:synopsis "Prototype package for FreeBSD init and rc script assets"
#:description
"Prototype package definition that stages the FreeBSD init and rc support
files needed by the first Fruix system-closure experiments."
#:license 'bsd-2
#:install-plan
'((file "/etc/rc" "etc/rc")
(file "/etc/rc.subr" "etc/rc.subr")
(file "/etc/rc.shutdown" "etc/rc.shutdown")
(directory "/etc/rc.d" "etc/rc.d")
(directory "/etc/defaults" "etc/defaults"))))
(define freebsd-runtime
(freebsd-package
#:name "freebsd-runtime"
#:version freebsd-release
#:build-system 'copy-build-system
#:inputs (list freebsd-libc freebsd-sh freebsd-userland freebsd-rc-scripts)
#:home-page "https://www.freebsd.org/"
#:synopsis "Prototype package for the minimal FreeBSD runtime"
#:description
"Prototype package definition that stages the minimal FreeBSD runtime
commands needed by the first declarative Fruix system and activation payload
experiments."
#:license 'bsd-2
#:install-plan
'((file "/sbin/init" "sbin/init")
(file "/sbin/mount" "sbin/mount")
(file "/sbin/ifconfig" "sbin/ifconfig")
(file "/sbin/reboot" "sbin/reboot")
(file "/sbin/shutdown" "sbin/shutdown")
(file "/usr/sbin/service" "usr/sbin/service")
(file "/usr/sbin/pw" "usr/sbin/pw")
(file "/usr/bin/id" "usr/bin/id")
(file "/bin/hostname" "bin/hostname")
(file "/bin/kenv" "bin/kenv"))))
(define freebsd-clang-toolchain
(freebsd-package
#:name "freebsd-clang-toolchain"
#:version freebsd-release
#:build-system 'copy-build-system
#:inputs (list freebsd-libc freebsd-kernel-headers freebsd-sh)
#:home-page "https://www.freebsd.org/"
#:synopsis "Prototype package for the FreeBSD Clang toolchain"
#:description
"Prototype package definition that stages the base FreeBSD Clang-based C
and C++ toolchain into a profile-friendly output."
#:license 'bsd-2
#:install-plan
'((file "/usr/bin/cc" "bin/cc")
(file "/usr/bin/c++" "bin/c++")
(file "/usr/bin/clang" "bin/clang")
(file "/usr/bin/clang++" "bin/clang++")
(file "/usr/bin/ar" "bin/ar")
(file "/usr/bin/ranlib" "bin/ranlib")
(file "/usr/bin/nm" "bin/nm")
(file "/usr/bin/ld" "bin/ld"))))
(define freebsd-gmake
(freebsd-package
#:name "freebsd-gmake"
#:version "4.4.1"
#:build-system 'copy-build-system
#:inputs (list freebsd-sh freebsd-libc)
#:home-page "https://www.gnu.org/software/make/"
#:synopsis "Prototype package for GNU Make on FreeBSD"
#:description
"Prototype package definition that stages the GNU Make binary from the
FreeBSD ports collection for use in build profiles."
#:license 'gpl3+
#:install-plan
'((file "/usr/local/bin/gmake" "bin/gmake")
(file "/usr/local/bin/gmake" "bin/make"))))
(define freebsd-bash
(freebsd-package
#:name "freebsd-bash"
#:version "5.3.9"
#:build-system 'copy-build-system
#:inputs (list freebsd-libc)
#:home-page "https://www.gnu.org/software/bash/"
#:synopsis "Prototype package for GNU Bash on FreeBSD"
#:description
"Prototype package definition that stages the Bash binary from the
FreeBSD ports collection for development profiles."
#:license 'gpl3+
#:install-plan
'((file "/usr/local/bin/bash" "bin/bash"))))
(define freebsd-autotools
(freebsd-package
#:name "freebsd-autotools"
#:version "2026-04"
#:build-system 'copy-build-system
#:inputs (list freebsd-gmake freebsd-bash freebsd-libc)
#:home-page "https://www.gnu.org/software/autoconf/"
#:synopsis "Prototype package for Autotools on FreeBSD"
#:description
"Prototype package definition that stages the Autoconf, Automake, Libtool,
pkg-config, and GNU m4 tools needed by FreeBSD Guix build experiments."
#:license 'gpl3+
#:install-plan
'((file "/usr/local/bin/autoconf" "bin/autoconf")
(file "/usr/local/bin/autoheader" "bin/autoheader")
(file "/usr/local/bin/autom4te" "bin/autom4te")
(file "/usr/local/bin/automake" "bin/automake")
(file "/usr/local/bin/aclocal" "bin/aclocal")
(file "/usr/local/bin/autoreconf" "bin/autoreconf")
(file "/usr/local/bin/libtoolize" "bin/libtoolize")
(file "/usr/local/bin/pkg-config" "bin/pkg-config")
(file "/usr/local/bin/gm4" "bin/m4")
(directory "/usr/local/share/autoconf2.72" "share/autoconf2.72")
(directory "/usr/local/share/automake-1.18" "share/automake-1.18")
(directory "/usr/local/share/aclocal" "share/aclocal")
(directory "/usr/local/share/libtool" "share/libtool"))))
(define freebsd-openssl
(freebsd-package
#:name "freebsd-openssl"
#:version freebsd-release
#:build-system 'copy-build-system
#:inputs (list freebsd-libc)
#:home-page "https://www.openssl.org/"
#:synopsis "Prototype package for OpenSSL libraries from FreeBSD base"
#:description
"Prototype package definition that stages the OpenSSL shared libraries
shipped with FreeBSD base."
#:license 'openssl
#:install-plan
'((file "/usr/lib/libcrypto.so" "lib/libcrypto.so")
(file "/usr/lib/libssl.so" "lib/libssl.so"))))
(define freebsd-zlib
(freebsd-package
#:name "freebsd-zlib"
#:version freebsd-release
#:build-system 'copy-build-system
#:inputs (list freebsd-libc)
#:home-page "https://zlib.net/"
#:synopsis "Prototype package for zlib from FreeBSD base"
#:description
"Prototype package definition that stages the base FreeBSD zlib shared
library for profile experiments."
#:license 'zlib
#:install-plan
'((file "/lib/libz.so.6" "lib/libz.so.6"))))
(define %freebsd-core-packages
(list freebsd-kernel
freebsd-kernel-headers
freebsd-libc
freebsd-userland
freebsd-clang-toolchain
freebsd-gmake
freebsd-autotools
freebsd-openssl
freebsd-zlib
freebsd-sh
freebsd-bash))
(define %freebsd-development-profile-packages
(list freebsd-kernel
freebsd-kernel-headers
freebsd-libc
freebsd-userland
freebsd-clang-toolchain
freebsd-gmake
freebsd-autotools
freebsd-openssl
freebsd-zlib
freebsd-sh
freebsd-bash))
(define %freebsd-system-packages
(list freebsd-kernel
freebsd-bootloader
freebsd-libc
freebsd-rc-scripts
freebsd-runtime
freebsd-userland
freebsd-sh
freebsd-bash))