···
-
src ? fetchFromGitHub {
-
knownVulnerabilities ? [ ],
-
lib.maintainers.lovesegfault
-
lib.maintainers.artturin
-
teams ? [ lib.teams.nix ],
-
assert (hash == null) -> (src != null);
-
atLeast24 = lib.versionAtLeast version "2.4";
-
atLeast225 = lib.versionAtLeast version "2.25pre";
-
enableDocumentation ? stdenv.buildPlatform.canExecute stdenv.hostPlatform,
-
enableStatic ? stdenv.hostPlatform.isStatic,
-
lib.meta.availableOn stdenv.hostPlatform aws-c-common
-
&& (stdenv.hostPlatform.isLinux || stdenv.hostPlatform.isDarwin)
-
withLibseccomp ? lib.meta.availableOn stdenv.hostPlatform libseccomp,
-
self = stdenv.mkDerivation {
-
version = "${version}${suffix}";
-
VERSION_SUFFIX = suffix;
-
++ lib.optionals enableDocumentation [
-
hardeningEnable = lib.optionals (!stdenv.hostPlatform.isDarwin) [ "pie" ];
-
++ lib.optional stdenv.hostPlatform.isMusl "fortify";
-
nativeInstallCheckInputs = [
-
++ lib.optionals enableDocumentation [
-
(lib.getBin lowdown-unsandboxed)
-
++ lib.optionals stdenv.hostPlatform.isLinux [
-
++ lib.optionals (atLeast225 && enableDocumentation) [
-
++ lib.optionals (stdenv.hostPlatform.isx86_64) [
-
++ lib.optionals withLibseccomp [
-
++ lib.optionals withAWS [
-
propagatedBuildInputs = [
-
patchShebangs --build tests
-
# Copy libboost_context so we don't get all of Boost in our closure.
-
# https://github.com/NixOS/nixpkgs/issues/45462
-
lib.optionalString (!enableStatic) ''
-
cp -pd ${boost}/lib/{libboost_context*,libboost_thread*,libboost_system*} $out/lib
-
${lib.optionalString stdenv.hostPlatform.isLinux ''
-
chmod u+w $out/lib/*.so.*
-
patchelf --set-rpath $out/lib:${lib.getLib stdenv.cc.cc}/lib $out/lib/libboost_thread.so.*
-
"--with-store-dir=${storeDir}"
-
"--localstatedir=${stateDir}"
-
"--sysconfdir=${confDir}"
-
++ lib.optionals (!enableDocumentation) [
-
++ lib.optionals stdenv.hostPlatform.isLinux [
-
"--with-sandbox-shell=${busybox-sandbox-shell}/bin/busybox"
-
++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isStatic) [
-
"--enable-embedded-sandbox-shell"
-
stdenv.hostPlatform != stdenv.buildPlatform
-
&& stdenv.hostPlatform ? nix
-
&& stdenv.hostPlatform.nix ? system
-
"--with-system=${stdenv.hostPlatform.nix.system}"
-
++ lib.optionals (!withLibseccomp) [
-
# RISC-V support in progress https://github.com/seccomp/libseccomp/pull/50
-
"--disable-seccomp-sandboxing"
-
++ lib.optionals (stdenv.cc.isGNU && !enableStatic) [
-
env.CXXFLAGS = toString (
-
lib.optionals (lib.versionAtLeast lowdown.version "1.4.0") [
-
# Autotools based build system wasn't updated with the backport of
-
# https://github.com/NixOS/nix/pull/12115, so set the define explicitly.
-
# gcc runs multi-threaded LTO using make and does not yet detect the new fifo:/path style
-
# of make jobserver. until gcc adds support for this we have to instruct make to use this
-
# old style or LTO builds will run their linking on only one thread, which takes forever.
-
"--jobserver-style=pipe"
-
"profiledir=$(out)/etc/profile.d"
-
++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) "PRECOMPILE_HEADERS=0"
-
++ lib.optional (stdenv.hostPlatform.isDarwin) "PRECOMPILE_HEADERS=1";
-
installFlags = [ "sysconfdir=$(out)/etc" ];
-
installCheckTarget = "installcheck";
-
# socket path becomes too long otherwise
-
lib.optionalString stdenv.hostPlatform.isDarwin ''
-
export TMPDIR=$NIX_BUILD_TOP
-
# Prevent crashes in libcurl due to invoking Objective-C `+initialize` methods after `fork`.
-
# See http://sealiesoftware.com/blog/archive/2017/6/5/Objective-C_and_fork_in_macOS_1013.html.
-
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
-
export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
-
# See https://github.com/NixOS/nix/issues/5687
-
+ lib.optionalString (stdenv.hostPlatform.isDarwin) ''
-
echo "exit 99" > tests/gc-non-blocking.sh
-
'' # TODO: investigate why this broken
-
+ lib.optionalString (stdenv.hostPlatform.system == "aarch64-linux") ''
-
echo "exit 0" > tests/functional/flakes/show.sh
-
# nixStatic otherwise does not find its man pages in tests.
-
export MANPATH=$man/share/man:$MANPATH
-
separateDebugInfo = stdenv.hostPlatform.isLinux && !enableStatic;
-
enableParallelBuilding = true;
-
inherit aws-sdk-cpp boehmgc;
-
perl-bindings = perl.pkgs.toPerlModule (
-
callPackage ./nix-perl.nix {
-
tests = import ./tests.nix {
-
# point 'nix edit' and ofborg at the file that defines the attribute,
-
# not this common file.
-
pos = builtins.unsafeGetAttrPos "version" args;
-
description = "Powerful package manager that makes package management reliable and reproducible";
-
Nix is a powerful package manager for Linux and other Unix systems that
-
makes package management reliable and reproducible. It provides atomic
-
upgrades and rollbacks, side-by-side installation of multiple versions of
-
a package, multi-user package management and easy setup of build
-
homepage = "https://nixos.org/";
-
license = licenses.lgpl21Plus;
-
inherit knownVulnerabilities maintainers teams;
-
platforms = platforms.unix;
-
outputsToInstall = [ "out" ] ++ optional enableDocumentation "man";