chromium,chromedriver: 129.0.6668.91 -> 129.0.6668.100
[NixPkgs.git] / pkgs / os-specific / darwin / dockutil / default.nix
blob64a8a984438867eb72b4f71475965637e0501d83
1 { lib
2 , stdenv
3 , stdenvNoCC
4 , fetchFromGitHub
5 , fetchurl
6 , swift
7 , swiftpm
8 , swiftpm2nix
9 , swiftPackages
10 , darwin
11 , libarchive
12 , p7zip
13 # Building from source on x86_64 fails (among other things) due to:
14 # error: cannot load underlying module for 'Darwin'
15 , fromSource ? (stdenv.system != "x86_64-darwin")
18 let
19   generated = swiftpm2nix.helpers ./generated;
21   pname = "dockutil";
22   version = "3.1.3";
24   meta = with lib; {
25     description = "Tool for managing dock items";
26     homepage = "https://github.com/kcrawford/dockutil";
27     license = licenses.asl20;
28     maintainers = with maintainers; [ tboerger ];
29     mainProgram = "dockutil";
30     platforms = platforms.darwin;
31   };
33   buildFromSource = swiftPackages.stdenv.mkDerivation (finalAttrs: {
34     inherit pname version meta;
36     src = fetchFromGitHub {
37       owner = "kcrawford";
38       repo = "dockutil";
39       rev = finalAttrs.version;
40       hash = "sha256-mmk4vVZhq4kt05nI/dDM1676FDWyf4wTSwY2YzqKsLU=";
41     };
43     postPatch = ''
44       # Patch sources so that they build with Swift CoreFoundation
45       # which differs ever so slightly from Apple's implementation.
46       substituteInPlace Sources/DockUtil/DockUtil.swift \
47         --replace-fail "URL(filePath:" \
48                        "URL(fileURLWithPath:" \
49         --replace-fail "path(percentEncoded: false)" \
50                        "path"
51     '';
53     nativeBuildInputs = [ swift swiftpm ];
55     buildInputs = with darwin.apple_sdk.frameworks; [ Cocoa ];
57     configurePhase = generated.configure;
59     installPhase = ''
60       runHook preInstall
61       install -Dm755 .build/${stdenv.hostPlatform.darwinArch}-apple-macosx/release/dockutil -t $out/bin
62       runHook postInstall
63     '';
64   });
66   installBinary = stdenvNoCC.mkDerivation (finalAttrs: {
67     inherit pname version;
69     src = fetchurl {
70       url = "https://github.com/kcrawford/dockutil/releases/download/${finalAttrs.version}/dockutil-${finalAttrs.version}.pkg";
71       hash = "sha256-9g24Jz/oDXxIJFiL7bU4pTh2dcORftsAENq59S0/JYI=";
72     };
74     dontPatch = true;
75     dontConfigure = true;
76     dontBuild = true;
78     nativeBuildInputs = [ libarchive p7zip ];
80     unpackPhase = ''
81       7z x $src
82       bsdtar -xf Payload~
83     '';
85     installPhase = ''
86       runHook preInstall
87       mkdir -p $out/bin
88       install -Dm755 usr/local/bin/dockutil -t $out/bin
89       runHook postInstall
90     '';
92     meta = meta // {
93       sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
94     };
95   });
97 if fromSource
98   then buildFromSource
99   else installBinary