5a125fad3a
this is because we don't need to, but also because the linker flags we hardcode don't work on darwin
470 lines
13 KiB
Nix
470 lines
13 KiB
Nix
nixpkgs: final: prev:
|
|
let
|
|
isCross = final.stdenv.buildPlatform != final.stdenv.hostPlatform;
|
|
crossOnly = pkg: amendFn: if isCross then (amendFn pkg) else pkg;
|
|
extraPkgs = import ./pkgs/default.nix {
|
|
inherit (final) lib callPackage;
|
|
inherit nixpkgs;
|
|
};
|
|
inherit (final) fetchpatch lib;
|
|
luaHost =
|
|
let
|
|
l = prev.lua5_3.overrideAttrs (o: {
|
|
name = "lua-tty";
|
|
preBuild = ''
|
|
makeFlagsArray+=(PLAT="posix" SYSLIBS="-Wl,-E -ldl" CFLAGS="-O2 -fPIC -DLUA_USE_POSIX -DLUA_USE_DLOPEN")
|
|
'';
|
|
# lua in nixpkgs has a postInstall stanza that assumes only
|
|
# one output, we need to override that if we're going to
|
|
# convert to multi-output
|
|
# outputs = ["bin" "man" "out"];
|
|
makeFlags = builtins.filter (x: (builtins.match "(PLAT|MYLIBS).*" x) == null) o.makeFlags;
|
|
});
|
|
in
|
|
l.override {
|
|
self = l;
|
|
packageOverrides =
|
|
lua-final: lua-prev:
|
|
let
|
|
openssl = final.opensslNoThreads;
|
|
in
|
|
{
|
|
cqueues = lua-prev.cqueues.overrideAttrs (o: {
|
|
externalDeps = [
|
|
{
|
|
name = "CRYPTO";
|
|
dep = openssl;
|
|
}
|
|
{
|
|
name = "OPENSSL";
|
|
dep = openssl;
|
|
}
|
|
];
|
|
});
|
|
luaossl = lua-prev.luaossl.overrideAttrs (o: {
|
|
externalDeps = [
|
|
{
|
|
name = "CRYPTO";
|
|
dep = openssl;
|
|
}
|
|
{
|
|
name = "OPENSSL";
|
|
dep = openssl;
|
|
}
|
|
];
|
|
name = "${o.name}-218";
|
|
patches = [
|
|
(fetchpatch {
|
|
url = "https://patch-diff.githubusercontent.com/raw/wahern/luaossl/pull/218.patch";
|
|
hash = "sha256-2GOliY4/RUzOgx3rqee3X3szCdUVxYDut7d+XFcUTJw=";
|
|
})
|
|
];
|
|
preInstall = "rm src/openssl.c.orig ; chmod +w src/openssl.c";
|
|
});
|
|
};
|
|
};
|
|
|
|
s6 = prev.s6.overrideAttrs (
|
|
o:
|
|
let
|
|
patch = fetchpatch {
|
|
# add "p" directive in s6-log
|
|
url = "https://github.com/skarnet/s6/commit/ddc76841398dfd5e18b22943727ad74b880236d3.patch";
|
|
hash = "sha256-fBtUinBdp5GqoxgF6fcR44Tu8hakxs/rOShhuZOgokc=";
|
|
};
|
|
patch_needed = builtins.compareVersions o.version "2.11.1.2" <= 0;
|
|
in
|
|
{
|
|
configureFlags =
|
|
(builtins.filter (x: (builtins.match ".*shared.*" x) == null) o.configureFlags)
|
|
++ [
|
|
"--disable-allstatic"
|
|
"--disable-static"
|
|
"--enable-shared"
|
|
];
|
|
hardeningDisable = [ "all" ];
|
|
stripAllList = [
|
|
"sbin"
|
|
"bin"
|
|
];
|
|
patches = (if o ? patches then o.patches else [ ]) ++ (if patch_needed then [ patch ] else [ ]);
|
|
}
|
|
);
|
|
in
|
|
extraPkgs
|
|
// {
|
|
# liminix library functions
|
|
lim = {
|
|
parseInt = s: (builtins.fromTOML "r=${s}").r;
|
|
orEmpty = x: if x != null then x else [ ];
|
|
};
|
|
|
|
# keep these alphabetical
|
|
|
|
btrfs-progs = crossOnly prev.btrfs-progs (
|
|
d:
|
|
d.override {
|
|
udevSupport = false;
|
|
udev = null;
|
|
}
|
|
);
|
|
|
|
chrony =
|
|
let
|
|
chrony' = prev.chrony.overrideAttrs (o: {
|
|
configureFlags = [
|
|
"--chronyvardir=$(out)/var/lib/chrony"
|
|
"--sbindir=$(out)/bin"
|
|
"--chronyrundir=/run/chrony"
|
|
"--disable-readline"
|
|
"--disable-editline"
|
|
];
|
|
});
|
|
in
|
|
chrony'.override {
|
|
gnutls = null;
|
|
libedit = null;
|
|
libseccomp = null;
|
|
libcap = null;
|
|
}
|
|
// lib.optionalAttrs (lib.versionOlder lib.version "24.10") {
|
|
nss = null;
|
|
nspr = null;
|
|
readline = null;
|
|
};
|
|
|
|
# clevis without luks/tpm
|
|
clevis = crossOnly prev.clevis (
|
|
d:
|
|
let
|
|
c = d.overrideAttrs (o: {
|
|
outputs = [ "out" ];
|
|
preConfigure = ''
|
|
rm -rf src/luks
|
|
sed -i -e '/luks/d' src/meson.build
|
|
'';
|
|
});
|
|
in
|
|
c.override {
|
|
asciidoc = null;
|
|
cryptsetup = null;
|
|
luksmeta = null;
|
|
tpm2-tools = null;
|
|
}
|
|
);
|
|
|
|
dnsmasq =
|
|
let
|
|
d = prev.dnsmasq.overrideAttrs (o: {
|
|
preBuild = ''
|
|
makeFlagsArray=("COPTS=")
|
|
'';
|
|
});
|
|
in
|
|
d.override {
|
|
dbusSupport = false;
|
|
nettle = null;
|
|
};
|
|
|
|
dropbear = crossOnly prev.dropbear (
|
|
d:
|
|
d.overrideAttrs (o: rec {
|
|
patches = o.patches ++ [
|
|
./pkgs/dropbear/add-authkeyfile-option.patch
|
|
];
|
|
postPatch = ''
|
|
(echo '#define DSS_PRIV_FILENAME "/run/dropbear/dropbear_dss_host_key"'
|
|
echo '#define RSA_PRIV_FILENAME "/run/dropbear/dropbear_rsa_host_key"'
|
|
echo '#define ECDSA_PRIV_FILENAME "/run/dropbear/dropbear_ecdsa_host_key"'
|
|
echo '#define ED25519_PRIV_FILENAME "/run/dropbear/dropbear_ed25519_host_key"') > localoptions.h
|
|
'';
|
|
})
|
|
);
|
|
|
|
elfutils = crossOnly prev.elfutils (
|
|
d:
|
|
let
|
|
e = d.overrideAttrs (o: {
|
|
configureFlags = o.configureFlags ++ [
|
|
"ac_cv_has_stdatomic=no"
|
|
];
|
|
nativeBuildInputs = [
|
|
# upstream only includes this if enableDebuginfod is true,
|
|
# but seems it's now needed unconditionally
|
|
final.buildPackages.pkg-config
|
|
final.buildPackages.m4
|
|
];
|
|
});
|
|
in
|
|
e.override {
|
|
enableDebuginfod = false;
|
|
}
|
|
);
|
|
|
|
fennel =
|
|
let version = "1.6.1"; in
|
|
luaHost.pkgs.buildLuaPackage {
|
|
pname= "fennel";
|
|
inherit version;
|
|
src = final.fetchFromSourcehut {
|
|
owner = "~technomancy";
|
|
repo = "fennel";
|
|
rev = version;
|
|
hash = "sha256-MLXLkRKlxqvEOogM5I4uHxnlRLjK8Pbeq9b1+kAgqFg=";
|
|
};
|
|
nativeBuildInputs = [ final.pkgsBuildBuild.lua5_3 ];
|
|
};
|
|
|
|
hostapd =
|
|
let
|
|
config = [
|
|
"CONFIG_DRIVER_NL80211=y"
|
|
"CONFIG_IAPP=y"
|
|
"CONFIG_IEEE80211AC=y"
|
|
"CONFIG_IEEE80211AX=y"
|
|
"CONFIG_IEEE80211N=y"
|
|
"CONFIG_IEEE80211W=y"
|
|
"CONFIG_INTERNAL_LIBTOMMATH=y"
|
|
"CONFIG_INTERNAL_LIBTOMMATH_FAST=y"
|
|
"CONFIG_IPV6=y"
|
|
"CONFIG_LIBNL32=y"
|
|
"CONFIG_PKCS12=y"
|
|
"CONFIG_RSN_PREAUTH=y"
|
|
"CONFIG_TLS=internal"
|
|
];
|
|
h = prev.hostapd.overrideAttrs (o: {
|
|
extraConfig = "";
|
|
configurePhase = ''
|
|
cat > hostapd/defconfig <<EOF
|
|
${builtins.concatStringsSep "\n" config}
|
|
EOF
|
|
${o.configurePhase}
|
|
'';
|
|
});
|
|
in
|
|
h.override {
|
|
openssl = null;
|
|
sqlite = null;
|
|
};
|
|
|
|
# berlekey db needs libatomic which we haven't figured out yet.
|
|
# disabling it means we don't have arpd
|
|
iproute2 = crossOnly prev.iproute2 (d: d.override { db = null; });
|
|
|
|
kexec-tools-static = prev.kexec-tools.overrideAttrs (o: {
|
|
# For kexecboot we copy kexec into a ramdisk on the system being
|
|
# upgraded from. This is more likely to work if kexec is
|
|
# statically linked so doesn't have dependencies on store paths that
|
|
# may not exist on that machine. (We can't nix-copy-closure as
|
|
# the store may not be on a writable filesystem)
|
|
LDFLAGS = "-static";
|
|
|
|
patches = o.patches ++ [
|
|
(fetchpatch {
|
|
# merge user command line options into DTB chosen
|
|
url = "https://patch-diff.githubusercontent.com/raw/horms/kexec-tools/pull/3.patch";
|
|
hash = "sha256-MvlJhuex9dlawwNZJ1sJ33YPWn1/q4uKotqkC/4d2tk=";
|
|
})
|
|
pkgs/kexec-map-file.patch
|
|
];
|
|
});
|
|
|
|
libadwaita = prev.libadwaita.overrideAttrs (o: {
|
|
# tests fail with a message
|
|
# Gdk-DEBUG: error: XDG_RUNTIME_DIR is invalid or not set in the environment.
|
|
doCheck = false;
|
|
});
|
|
|
|
lua = crossOnly prev.lua5_3 (_: luaHost);
|
|
luad =
|
|
let s = final.fetchFromGitea {
|
|
domain = "gti.telent.net";
|
|
owner = "dan";
|
|
repo= "luad";
|
|
rev = "73efb4223387a64ae11490648b51c632a98e4737";
|
|
hash = "sha256-gPIrqL5wDTkvkyTIBq6CJwzmEBvhfMBcVh9GYgCVohQ=";
|
|
};
|
|
in (final.callPackage s { lua = luaHost; })
|
|
.overrideAttrs(o: {
|
|
RUSTFLAGS = "-C prefer-dynamic";
|
|
stripAllList = [ "bin" ];
|
|
});
|
|
|
|
mtdutils =
|
|
(prev.mtdutils.overrideAttrs (o: {
|
|
|
|
src = final.fetchgit {
|
|
url = "git://git.infradead.org/mtd-utils.git";
|
|
rev = "77981a2888c711268b0e7f32af6af159c2288e23";
|
|
hash = "sha256-pHunlPOuvCRyyk9qAiR3Kn3cqS/nZHIxsv6m4nsAcbk=";
|
|
};
|
|
|
|
patches = (if o ? patches then o.patches else [ ]) ++ [
|
|
./pkgs/mtdutils/0001-mkfs.jffs2-add-graft-option.patch
|
|
];
|
|
})).override
|
|
{ util-linux = final.util-linux-small; };
|
|
|
|
nftables = prev.nftables.overrideAttrs (o: {
|
|
configureFlags = [
|
|
"--disable-debug"
|
|
"--disable-python"
|
|
"--with-mini-gmp"
|
|
"--without-cli"
|
|
];
|
|
});
|
|
|
|
opensslNoThreads = prev.openssl.overrideAttrs (
|
|
o: with final; {
|
|
pname = "${o.pname}-nothreads";
|
|
# openssl with threads requires stdatomic which drags in libgcc
|
|
# as a dependency
|
|
preConfigure =
|
|
let
|
|
arch = if stdenv.hostPlatform.gcc ? arch then "-march=${stdenv.hostPlatform.gcc.arch}" else "";
|
|
soft = if arch == "-march=24kc" then "-msoft-float" else "";
|
|
in
|
|
''
|
|
configureFlagsArray+=(no-threads no-asm CFLAGS="${arch} ${soft}")
|
|
'';
|
|
# don't need or want this bash script
|
|
postInstall = o.postInstall + "rm $bin/bin/c_rehash\n";
|
|
}
|
|
);
|
|
|
|
pppBuild = prev.ppp;
|
|
|
|
qemuLim =
|
|
let
|
|
inherit (final) lib;
|
|
q = prev.qemu.overrideAttrs (o: {
|
|
patches = o.patches ++ [
|
|
./pkgs/qemu/arm-image-friendly-load-addr.patch
|
|
(final.fetchpatch {
|
|
url = "https://lore.kernel.org/qemu-devel/20220322154658.1687620-1-raj.khem@gmail.com/raw";
|
|
hash = "sha256-jOsGka7xLkJznb9M90v5TsJraXXTAj84lcphcSxjYLU=";
|
|
})
|
|
];
|
|
buildInputs = o.buildInputs ++ [
|
|
final.libslirp
|
|
final.libtasn1 # https://github.com/NixOS/nixpkgs/issues/547163
|
|
];
|
|
});
|
|
|
|
overrides = {
|
|
hostCpuTargets = map (f: "${f}-softmmu") [
|
|
"arm"
|
|
"aarch64"
|
|
"mips"
|
|
"mipsel"
|
|
];
|
|
sdlSupport = false;
|
|
numaSupport = false;
|
|
seccompSupport = false;
|
|
usbredirSupport = false;
|
|
libiscsiSupport = false;
|
|
tpmSupport = false;
|
|
uringSupport = false;
|
|
capstoneSupport = false;
|
|
minimal = true;
|
|
};
|
|
in
|
|
q.override overrides;
|
|
rsyncSmall =
|
|
let
|
|
r = prev.rsync.overrideAttrs (o: {
|
|
configureFlags = o.configureFlags ++ [ "--disable-openssl" ];
|
|
});
|
|
in
|
|
r.override { openssl = null; };
|
|
|
|
inherit s6;
|
|
|
|
s6-rc = prev.s6-rc.override {
|
|
skawarePackages = prev.skawarePackages // {
|
|
inherit s6;
|
|
};
|
|
};
|
|
|
|
strace = prev.strace.override { libunwind = null; };
|
|
|
|
ubootQemuAarch64 = final.buildUBoot {
|
|
defconfig = "qemu_arm64_defconfig";
|
|
extraMeta.platforms = [ "aarch64-linux" ];
|
|
filesToInstall = [ "u-boot.bin" ];
|
|
};
|
|
|
|
ubootQemuArm = final.buildUBoot {
|
|
defconfig = "qemu_arm_defconfig";
|
|
extraMeta.platforms = [ "armv7l-linux" ];
|
|
filesToInstall = [ "u-boot.bin" ];
|
|
extraConfig = ''
|
|
CONFIG_CMD_UBI=y
|
|
CONFIG_CMD_UBIFS=y
|
|
CONFIG_BOOTSTD=y
|
|
CONFIG_BOOTMETH_DISTRO=y
|
|
CONFIG_LZMA=y
|
|
CONFIG_CMD_LZMADEC=y
|
|
CONFIG_SYS_BOOTM_LEN=0x1000000
|
|
'';
|
|
};
|
|
|
|
ubootQemuMips = final.buildUBoot {
|
|
defconfig = "malta_defconfig";
|
|
extraMeta.platforms = [ "mips-linux" ];
|
|
filesToInstall = [ "u-boot.bin" ];
|
|
# define the prompt to be the same as arm{32,64} so
|
|
# we can use the same expect script for both
|
|
extraPatches = [ ./pkgs/u-boot/0002-virtio-init-for-malta.patch ];
|
|
extraConfig = ''
|
|
CONFIG_SYS_PROMPT="=> "
|
|
CONFIG_VIRTIO=y
|
|
CONFIG_AUTOBOOT=y
|
|
CONFIG_DM_PCI=y
|
|
CONFIG_VIRTIO_PCI=y
|
|
CONFIG_VIRTIO_NET=y
|
|
CONFIG_VIRTIO_BLK=y
|
|
CONFIG_VIRTIO_MMIO=y
|
|
CONFIG_QFW_MMIO=y
|
|
CONFIG_FIT=y
|
|
CONFIG_LZMA=y
|
|
CONFIG_CMD_LZMADEC=y
|
|
CONFIG_SYS_BOOTM_LEN=0x1000000
|
|
CONFIG_SYS_MALLOC_LEN=0x400000
|
|
CONFIG_MIPS_BOOT_FDT=y
|
|
CONFIG_OF_LIBFDT=y
|
|
CONFIG_OF_STDOUT_VIA_ALIAS=y
|
|
'';
|
|
};
|
|
|
|
libusb1 = crossOnly prev.libusb1 (
|
|
d:
|
|
let
|
|
u = d.overrideAttrs (o: {
|
|
# don't use gcc libatomic because it vastly increases the
|
|
# closure size
|
|
preConfigure = "sed -i.bak /__atomic_fetch_add_4/c\: configure.ac";
|
|
});
|
|
in
|
|
u.override {
|
|
enableUdev = false;
|
|
withDocs = false;
|
|
}
|
|
);
|
|
|
|
util-linux-small = prev.util-linux.override {
|
|
ncursesSupport = false;
|
|
pamSupport = false;
|
|
systemdSupport = false;
|
|
nlsSupport = false;
|
|
translateManpages = false;
|
|
capabilitiesSupport = false;
|
|
withLastlog = false;
|
|
shadowSupport = false; # transitively depends on systemd
|
|
};
|
|
|
|
xl2tpd = prev.xl2tpd.overrideAttrs (o: {
|
|
patches = [ ./pkgs/xl2tpd-exit-on-close.patch ];
|
|
});
|
|
}
|