nixpkgs/pkgs/os-specific/darwin/security-tool/default.nix
davidak 3270aa896b replace "Mac OS X" and "OS X" with "macOS"
as it is the official name since 2016

https://en.wikipedia.org/wiki/Macintosh_operating_systems#Desktop

exception are parts refering to older versions of macOS like

"GUI support for Mac OS X 10.6 - 10.12. Note that Emacs 23 and later [...]"
2017-08-07 21:41:30 +02:00

100 lines
3.2 KiB
Nix

{ CoreServices, Foundation, PCSC, Security, GSS, Kerberos, makeWrapper, apple_sdk,
fetchurl, gnustep, libobjc, libsecurity_apple_csp, libsecurity_apple_cspdl,
libsecurity_apple_file_dl, libsecurity_apple_x509_cl, libsecurity_apple_x509_tp,
libsecurity_asn1, libsecurity_cdsa_client, libsecurity_cdsa_plugin,
libsecurity_cdsa_utilities, libsecurity_cdsa_utils, libsecurity_cssm, libsecurity_filedb,
libsecurity_keychain, libsecurity_mds, libsecurity_pkcs12, libsecurity_sd_cspdl,
libsecurity_utilities, libsecurityd, osx_private_sdk, Security-framework, stdenv }:
stdenv.mkDerivation rec {
version = "55115";
name = "SecurityTool-${version}";
src = fetchurl {
url = "http://opensource.apple.com/tarballs/SecurityTool/SecurityTool-${version}.tar.gz";
sha256 = "0apcz4vy2z5645jhrs60wj3w27mncjjqv42h5lln36g6qs2n9113";
};
patchPhase = ''
# copied from libsecurity_generic
ln -s ${osx_private_sdk}/PrivateSDK10.9.sparse.sdk/System/Library/Frameworks/Security.framework/Versions/A/PrivateHeaders Security
substituteInPlace cmsutil.c --replace \
'<CoreServices/../Frameworks/CarbonCore.framework/Headers/MacErrors.h>' \
'"${apple_sdk.sdk}/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/MacErrors.h"'
substituteInPlace createFVMaster.c --replace \
'<CoreServices/../Frameworks/CarbonCore.framework/Headers/MacErrors.h>' \
'"${apple_sdk.sdk}/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/MacErrors.h"'
'';
postUnpack = ''
unpackFile ${Security.src}
cp Security-*/utilities/src/fileIo.c SecurityTool*
cp Security-*/utilities/src/fileIo.h SecurityTool*
'';
preBuild = ''
makeFlagsArray=(-j''$NIX_BUILD_CORES)
'';
NIX_LDFLAGS = "-no_dtrace_dof";
makeFlags = [
"-f ${./GNUmakefile}"
"MAKEFILE_NAME=${./GNUmakefile}"
"GNUSTEP_MAKEFILES=${gnustep.make}/share/GNUstep/Makefiles"
];
installFlags = [
"security_INSTALL_DIR=\$(out)/bin"
];
propagatedBuildInputs = [ GSS Kerberos Security-framework PCSC Foundation ];
__propagatedImpureHostDeps = [ "/System/Library/Keychains" ];
buildInputs = [
gnustep.make
libsecurity_asn1
libsecurity_utilities
libsecurity_cdsa_utilities
libobjc
libsecurity_cdsa_client
libsecurity_keychain
libsecurity_cssm
libsecurity_cdsa_utils
libsecurity_mds
libsecurity_cdsa_plugin
libsecurity_apple_csp
libsecurity_apple_cspdl
libsecurity_apple_file_dl
libsecurity_apple_x509_cl
libsecurity_apple_x509_tp
libsecurity_pkcs12
libsecurity_sd_cspdl
libsecurity_filedb
libsecurityd
makeWrapper
];
NIX_CFLAGS_COMPILE = [
"-F${Security}/Library/Frameworks"
"-F${PCSC}/Library/Frameworks"
"-Wno-deprecated-declarations"
];
postInstall = ''
wrapProgram $out/bin/security --set DYLD_INSERT_LIBRARIES /usr/lib/libsqlite3.dylib
'';
meta = with stdenv.lib; {
description = "Command line interface to macOS keychains and Security framework";
maintainers = with maintainers; [
copumpkin
joelteon
];
platforms = platforms.darwin;
license = licenses.apsl20;
};
}