From e32aef5aca347d3257b3bc13abbeb9afd791a84c Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Sat, 14 Jan 2023 18:06:37 +0000 Subject: [PATCH 1/5] pkg: init at 1.19.0 --- pkgs/tools/package-management/pkg/default.nix | 36 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 38 insertions(+) create mode 100644 pkgs/tools/package-management/pkg/default.nix diff --git a/pkgs/tools/package-management/pkg/default.nix b/pkgs/tools/package-management/pkg/default.nix new file mode 100644 index 000000000000..a2bac43e5924 --- /dev/null +++ b/pkgs/tools/package-management/pkg/default.nix @@ -0,0 +1,36 @@ +{ lib, stdenv, fetchFromGitHub, m4, pkg-config, tcl +, bzip2, libarchive, libbsd, lzma, openssl, zlib +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "pkg"; + version = "1.19.0"; + + src = fetchFromGitHub { + owner = "freebsd"; + repo = "pkg"; + rev = finalAttrs.version; + sha256 = "W66g8kVvaPJSyOZcgyDcUBrWQQ5YDkRqofSWfIsjd+k="; + }; + + setOutputFlags = false; + separateDebugInfo = true; + + nativeBuildInputs = [ m4 pkg-config tcl ]; + buildInputs = [ bzip2 libarchive lzma openssl zlib ] + ++ lib.optional stdenv.isLinux libbsd; + + enableParallelBuilding = true; + + preInstall = '' + mkdir -p $out/etc + ''; + + meta = with lib; { + homepage = "https://github.com/freebsd/pkg"; + description = "Package management tool for FreeBSD"; + maintainers = with maintainers; [ qyliss ]; + platforms = with platforms; darwin ++ freebsd ++ linux ++ netbsd ++ openbsd; + license = licenses.bsd2; + }; +}) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 38d9f438a963..6f913f0f7c8d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5249,6 +5249,8 @@ with pkgs; pika = callPackage ../applications/graphics/pika { }; + pkg = callPackage ../tools/package-management/pkg { }; + playerctl = callPackage ../tools/audio/playerctl { }; pn = callPackage ../tools/text/pn { }; From eaf77e7b0b3cd80c7eb154998b513149367452b9 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Sat, 14 Jan 2023 18:22:01 +0000 Subject: [PATCH 2/5] freebsd.sed: init at 13.1.0 --- pkgs/os-specific/bsd/freebsd/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkgs/os-specific/bsd/freebsd/default.nix b/pkgs/os-specific/bsd/freebsd/default.nix index 3a53916a46de..cf68746898db 100644 --- a/pkgs/os-specific/bsd/freebsd/default.nix +++ b/pkgs/os-specific/bsd/freebsd/default.nix @@ -388,6 +388,12 @@ in makeScopeWithSplicing outputs = [ "out" "man" "test" ]; }; + sed = mkDerivation { + path = "usr.bin/sed"; + TESTSRC = "${freebsdSrc}/contrib/netbsd-tests"; + MK_TESTS = "no"; + }; + # Don't add this to nativeBuildInputs directly. Use statHook instead. stat = mkDerivation { path = "usr.bin/stat"; From 079e593d72fe43ee1c7ecf6834bb04da04c4c5ff Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Sat, 14 Jan 2023 18:53:47 +0000 Subject: [PATCH 3/5] evdev-proto: init at 6.0 FreeBSD implements Linux's evdev API, but doesn't come with headers for it. Instead, the Linux headers are just modified to be suitable for FreeBSD, via a port called evdev-proto. I don't want to copy the complicated sed expressions from the port into Nixpkgs, so instead we just build and install the port inside a Nix derivation. --- pkgs/os-specific/bsd/freebsd/default.nix | 7 +- .../bsd/freebsd/evdev-proto/default.nix | 64 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 3 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 pkgs/os-specific/bsd/freebsd/evdev-proto/default.nix diff --git a/pkgs/os-specific/bsd/freebsd/default.nix b/pkgs/os-specific/bsd/freebsd/default.nix index cf68746898db..e7252ab35e63 100644 --- a/pkgs/os-specific/bsd/freebsd/default.nix +++ b/pkgs/os-specific/bsd/freebsd/default.nix @@ -2,7 +2,7 @@ , makeScopeWithSplicing, generateSplicesForMkScope , buildPackages , bsdSetupHook, makeSetupHook -, fetchgit, fetchurl, coreutils, groff, mandoc, byacc, flex, which, m4, gawk, substituteAll, runtimeShell +, fetchgit, fetchzip, coreutils, groff, mandoc, byacc, flex, which, m4, gawk, substituteAll, runtimeShell , zlib, expat, libmd , runCommand, writeShellScript, writeText, symlinkJoin }: @@ -75,6 +75,11 @@ in makeScopeWithSplicing in { inherit freebsdSrc; + ports = fetchzip { + url = "https://cgit.freebsd.org/ports/snapshot/ports-dde3b2b456c3a4bdd217d0bf3684231cc3724a0a.tar.gz"; + sha256 = "BpHqJfnGOeTE7tkFJBx0Wk8ryalmf4KNTit/Coh026E="; + }; + # Why do we have splicing and yet do `nativeBuildInputs = with self; ...`? # See note in ../netbsd/default.nix. diff --git a/pkgs/os-specific/bsd/freebsd/evdev-proto/default.nix b/pkgs/os-specific/bsd/freebsd/evdev-proto/default.nix new file mode 100644 index 000000000000..3c3dcb6d5d67 --- /dev/null +++ b/pkgs/os-specific/bsd/freebsd/evdev-proto/default.nix @@ -0,0 +1,64 @@ +{ lib, stdenv, linuxHeaders, freebsd, runCommandCC, buildPackages }: + +stdenv.mkDerivation { + pname = "evdev-proto"; + inherit (linuxHeaders) version; + + src = freebsd.ports; + + sourceRoot = "source/devel/evdev-proto"; + + useTempPrefix = true; + + nativeBuildInputs = [ freebsd.makeMinimal ]; + + ARCH = freebsd.makeMinimal.MACHINE_ARCH; + OPSYS = "FreeBSD"; + _OSRELEASE = "${lib.versions.majorMinor freebsd.makeMinimal.version}-RELEASE"; + + AWK = "awk"; + CHMOD = "chmod"; + FIND = "find"; + MKDIR = "mkdir -p"; + PKG_BIN = "${buildPackages.pkg}/bin/pkg"; + RM = "rm -f"; + SED = "${buildPackages.freebsd.sed}/bin/sed"; + SETENV = "env"; + SH = "sh"; + TOUCH = "touch"; + XARGS = "xargs"; + + ABI_FILE = runCommandCC "abifile" {} "$CC -shared -o $out"; + CLEAN_FETCH_ENV = true; + INSTALL_AS_USER = true; + NO_CHECKSUM = true; + NO_MTREE = true; + SRC_BASE = freebsd.freebsdSrc; + + preUnpack = '' + export MAKE_JOBS_NUMBER="$NIX_BUILD_CORES" + + export DISTDIR="$PWD/distfiles" + export PKG_DBDIR="$PWD/pkg" + export PREFIX="$prefix" + + mkdir -p "$DISTDIR/evdev-proto" + tar -C "$DISTDIR/evdev-proto" \ + -xf ${linuxHeaders.src} \ + --strip-components 4 \ + linux-${linuxHeaders.version}/include/uapi/linux + ''; + + makeFlags = [ "DIST_SUBDIR=evdev-proto" ]; + + postInstall = '' + mv $prefix $out + ''; + + meta = with lib; { + description = "Input event device header files for FreeBSD"; + maintainers = with maintainers; [ qyliss ]; + platforms = platforms.freebsd; + license = licenses.gpl2Only; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6f913f0f7c8d..cc2e2233ae1d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -25422,6 +25422,8 @@ with pkgs; erofs-utils = callPackage ../os-specific/linux/erofs-utils { }; + evdev-proto = callPackage ../os-specific/bsd/freebsd/evdev-proto { }; + fscryptctl = callPackage ../os-specific/linux/fscryptctl { }; # unstable until the first 1.x release fscrypt-experimental = callPackage ../os-specific/linux/fscrypt { }; From 44dcf4534276965c1767b79dc17d3636e80ccba3 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Sat, 14 Jan 2023 19:37:14 +0000 Subject: [PATCH 4/5] mtdev: use HTTPS for homepage --- pkgs/development/libraries/mtdev/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/mtdev/default.nix b/pkgs/development/libraries/mtdev/default.nix index 4a510762f7f0..88de170ad606 100644 --- a/pkgs/development/libraries/mtdev/default.nix +++ b/pkgs/development/libraries/mtdev/default.nix @@ -10,7 +10,7 @@ stdenv.mkDerivation rec { }; meta = with lib; { - homepage = "http://bitmath.org/code/mtdev/"; + homepage = "https://bitmath.org/code/mtdev/"; description = "Multitouch Protocol Translation Library"; longDescription = '' The mtdev is a stand-alone library which transforms all variants of From b994008cbf32c291d5ae77768ed8e3c7deabb25f Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Sat, 14 Jan 2023 19:36:23 +0000 Subject: [PATCH 5/5] mtdev: add FreeBSD support --- pkgs/development/libraries/mtdev/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/mtdev/default.nix b/pkgs/development/libraries/mtdev/default.nix index 88de170ad606..9e6a45e2975a 100644 --- a/pkgs/development/libraries/mtdev/default.nix +++ b/pkgs/development/libraries/mtdev/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchurl }: +{ lib, stdenv, fetchurl, evdev-proto }: stdenv.mkDerivation rec { pname = "mtdev"; @@ -9,6 +9,8 @@ stdenv.mkDerivation rec { sha256 = "1q700h9dqcm3zl6c3gj0qxxjcx6ibw2c51wjijydhwdcm26v5mqm"; }; + buildInputs = lib.optional stdenv.hostPlatform.isFreeBSD evdev-proto; + meta = with lib; { homepage = "https://bitmath.org/code/mtdev/"; description = "Multitouch Protocol Translation Library"; @@ -20,6 +22,6 @@ stdenv.mkDerivation rec { See the kernel documentation for further details. ''; license = licenses.mit; - platforms = platforms.linux; + platforms = with platforms; freebsd ++ linux; }; }