diff --git a/pkgs/development/libraries/mtdev/default.nix b/pkgs/development/libraries/mtdev/default.nix index 4a510762f7f0..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,8 +9,10 @@ stdenv.mkDerivation rec { sha256 = "1q700h9dqcm3zl6c3gj0qxxjcx6ibw2c51wjijydhwdcm26v5mqm"; }; + buildInputs = lib.optional stdenv.hostPlatform.isFreeBSD evdev-proto; + 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 @@ -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; }; } diff --git a/pkgs/os-specific/bsd/freebsd/default.nix b/pkgs/os-specific/bsd/freebsd/default.nix index 3a53916a46de..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. @@ -388,6 +393,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"; 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/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 e38850a768ac..5002bfd89897 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5269,6 +5269,8 @@ with pkgs; pika = callPackage ../applications/graphics/pika { }; + pkg = callPackage ../tools/package-management/pkg { }; + playerctl = callPackage ../tools/audio/playerctl { }; pn = callPackage ../tools/text/pn { }; @@ -25402,6 +25404,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 { };