1{ stdenv
2, lib
3, fetchzip
4, fetchpatch
5, installShellFiles
6}:
7
8stdenv.mkDerivation rec {
9 pname = "mac-fdisk";
10 version = "0.1.16";
11
12 src = fetchzip {
13 url = "https://deb.debian.org/debian/pool/main/m/mac-fdisk/mac-fdisk_0.1.orig.tar.gz";
14 sha256 = "sha256-pYNyhPvRKdIje0Rpay0OzmrkGcl+/JOhMv7r+2LZk/Q=";
15 };
16
17 patches = [
18 # Debian's changeset, extracted into a patch
19 (fetchpatch {
20 url = "https://git.adelielinux.org/adelie/packages/-/raw/1b708c8a90e3548c4954c6367a9376f76f3746bd/user/mac-fdisk/mac-fdisk-0.1-debian.patch";
21 sha256 = "sha256-a9pGF+UsFeZiXgracmT4anqgpmcGcS/W3jGtFzHZtt4=";
22 })
23 # Include a lot more headers and remove a bunch of braindead __linux__ checks
24 (fetchpatch {
25 url = "https://git.adelielinux.org/adelie/packages/-/raw/1fa4c88ee21866eeb0feae8f6b0bf609a04711cc/user/mac-fdisk/mac-fdisk-0.1-headers.patch";
26 sha256 = "sha256-FIk9K+lP+3e1pgmNfymTdpdSoTpBDv29kmwYgqYwWQw=";
27 })
28 # Add support for more architectures
29 (fetchpatch {
30 url = "https://git.adelielinux.org/adelie/packages/-/raw/1b708c8a90e3548c4954c6367a9376f76f3746bd/user/mac-fdisk/mac-fdisk-0.1-more-arches.patch";
31 sha256 = "sha256-HNRmzETUmKfZQFrjg6Y/HPwUnLk0vO5DokfU4umdOm0=";
32 })
33 # From p16 (source?), adjusts some types & fixes PPC64 support
34 (fetchpatch {
35 url = "https://git.adelielinux.org/adelie/packages/-/raw/1fa4c88ee21866eeb0feae8f6b0bf609a04711cc/user/mac-fdisk/mac-fdisk-0.1_p16-ppc64.patch";
36 sha256 = "sha256-GK0nfga59nOXotkbKI+2ejA9TtyZUwDIxuXWFGGbeFg=";
37 })
38 # From p16 (source?), makes some inlines static
39 (fetchpatch {
40 url = "https://git.adelielinux.org/adelie/packages/-/raw/1fa4c88ee21866eeb0feae8f6b0bf609a04711cc/user/mac-fdisk/mac-fdisk-0.1_p16-proper-inline.patch";
41 sha256 = "sha256-wr2teKpm0FyqNudKYlTD49pTFDis33Fo+0LULNYIJko=";
42 })
43 # Adds x86_64 support
44 (fetchpatch {
45 url = "https://git.adelielinux.org/adelie/packages/-/raw/1b708c8a90e3548c4954c6367a9376f76f3746bd/user/mac-fdisk/mac-fdisk-amd64.patch";
46 sha256 = "sha256-iO4/sY5sGKQyymMmAOb/TlCc9id2qgEDw7E8pFZpsHI=";
47 })
48 # Fix missing header in fdisk.c on musl
49 (fetchpatch {
50 url = "https://git.adelielinux.org/adelie/packages/-/raw/1fa4c88ee21866eeb0feae8f6b0bf609a04711cc/user/mac-fdisk/mac-fdisk-fdisk-header-musl.patch";
51 sha256 = "sha256-mKBVjvLKtxKPADeoPqp17YdJ1QWj2enAYhKKSqTnQ44=";
52 })
53 # Support disks >550GB
54 (fetchpatch {
55 url = "https://git.adelielinux.org/adelie/packages/-/raw/1fa4c88ee21866eeb0feae8f6b0bf609a04711cc/user/mac-fdisk/mac-fdisk-large-disk-support.patch";
56 sha256 = "sha256-IXZZdozqZKyZEz87ZzB8Jof22GgvHf4GaXBqSKn8su8=";
57 })
58 # Enable Large File Support (>2GiB)
59 (fetchpatch {
60 url = "https://git.adelielinux.org/adelie/packages/-/raw/1fa4c88ee21866eeb0feae8f6b0bf609a04711cc/user/mac-fdisk/mac-fdisk-largerthan2gb.patch";
61 sha256 = "sha256-ATK7QYXV7BOk8iIFeXY8g+ZHLuuhww9pcrqOMDn/oLM=";
62 })
63 # Fix compilation on non-glibc
64 (fetchpatch {
65 url = "https://git.adelielinux.org/adelie/packages/-/raw/1fa4c88ee21866eeb0feae8f6b0bf609a04711cc/user/mac-fdisk/mac-fdisk-non-glibc-support.patch";
66 sha256 = "sha256-CBZUKf7dPvvpuG5L+SI1FQ4W7/fDgeKXHUMFkJNu/MY=";
67 })
68 # Flush stdout after printing prompt for better UX
69 (fetchpatch {
70 url = "https://git.adelielinux.org/adelie/packages/-/raw/656ae6bf9f8a64aee95c4797b20bfe713627f1f4/user/mac-fdisk/flush-stdout.patch";
71 sha256 = "sha256-k7+UPiUf/oCQdDhxDcC+FRwkxS89WSsYzFw6fUB/10I=";
72 })
73 ];
74
75 nativeBuildInputs = [
76 installShellFiles
77 ];
78
79 enableParallelBuilding = true;
80
81 env.NIX_CFLAGS_COMPILE = "-D_GNU_SOURCE";
82
83 hardeningDisable = [ "format" ];
84
85 installPhase = ''
86 runHook preInstall
87
88 install -Dm755 pdisk $out/sbin/mac-fdisk
89 install -Dm755 fdisk $out/sbin/pmac-fdisk
90
91 for manpage in {,p}mac-fdisk.8; do
92 mv "$manpage".in $manpage
93 installManPage $manpage
94 done
95
96 runHook postInstall
97 '';
98
99 meta = with lib; {
100 description = "68K and PowerPC Mac disk partitioning utility, Adélie Linux version";
101 # http://ftp.mklinux.apple.com:/pub/Other_Tools/ but that one's looong dead, link goes to the patch compilation we're using
102 homepage = "https://git.adelielinux.org/adelie/packages/-/tree/master/user/mac-fdisk";
103 license = with licenses; [
104 hpnd # original license statements seems to match this (in files that are shared with pdisk)
105 gpl1Plus # fdisk.c
106 ];
107 maintainers = with maintainers; [ OPNA2608 ];
108 # the toolchain that's being expected for Mac support (SCSI.h from Universal Headers 2.0, SIOUX.h from Metrowerks CoreWarrior) is ancient, unsure about BSDs
109 platforms = platforms.linux;
110 badPlatforms = platforms.aarch64; # missing some platform definitions
111 };
112}