bd430f1abd
luarocks wants to build cmake, python, curl etc mips packages and I'm not smart enough to figure out why, but the python doesn't work
460 lines
13 KiB
Nix
460 lines
13 KiB
Nix
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 (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; };
|
|
|
|
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;
|
|
# should texinfo be in nativeBuildInputs instead of
|
|
# buildInputs?
|
|
texinfo = 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;
|
|
}
|
|
);
|
|
|
|
# luarocks wants a cross-compiled cmake (which seems like a bug,
|
|
# we're never going to run luarocks on the device, but ...)
|
|
# but https://github.com/NixOS/nixpkgs/issues/284734
|
|
# so we do surgery on the cmake derivation until that's fixed
|
|
|
|
cmake = crossOnly prev.cmake (
|
|
d:
|
|
d.overrideAttrs (o: {
|
|
preConfigure =
|
|
builtins.replaceStrings [ "$configureFlags" ] [ "$configureFlags $cmakeFlags" ]
|
|
o.preConfigure;
|
|
})
|
|
);
|
|
|
|
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 {
|
|
# nixpkgs 25.05 contains newer dropbear (2025.87) than this,
|
|
# we can drop this override when that's ready
|
|
version = "2024.85";
|
|
src = final.fetchurl {
|
|
url = "https://matt.ucc.asn.au/dropbear/releases/dropbear-${version}.tar.bz2";
|
|
sha256 = "sha256-hrA2xDOmnYnOUeuuM11lxHc4zPkNE+XrD+qDLlVtpQI=";
|
|
};
|
|
patches =
|
|
# in 24.11 we need to update nixpkgs patch for new version of dropbear
|
|
let
|
|
passPath = final.runCommand "pass-path" { } ''
|
|
sed < ${builtins.head o.patches} -e 's,svr-chansession.c,src/svr-chansession.c,g' > $out
|
|
'';
|
|
in
|
|
[
|
|
(if (lib.versionOlder o.version "2024") then passPath else (builtins.head 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"
|
|
];
|
|
});
|
|
in
|
|
e.override {
|
|
enableDebuginfod = false;
|
|
}
|
|
);
|
|
|
|
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);
|
|
|
|
luaossl' =
|
|
let inherit (final) fetchurl fetchzip;
|
|
in luaHost.pkgs.buildLuaPackage {
|
|
pname = "luaossl";
|
|
version = "20220711-0";
|
|
knownRockspec =
|
|
(fetchurl {
|
|
url = "mirror://luarocks/luaossl-20220711-0.rockspec";
|
|
sha256 = "0b68kvfz587ilmb5c1p7920kysg9q4m4fl4cz4d93jl3270mzh8y";
|
|
}).outPath;
|
|
src = fetchzip {
|
|
url = "https://github.com/wahern/luaossl/archive/rel-20220711.zip";
|
|
sha256 = "1a9pgmc6fbhgh1m9ksz9fq057yzz46npqgakcsy9vngg47xacfdb";
|
|
};
|
|
patches = [
|
|
(fetchpatch {
|
|
url = "https://patch-diff.githubusercontent.com/raw/wahern/luaossl/pull/218.patch";
|
|
hash = "sha256-2GOliY4/RUzOgx3rqee3X3szCdUVxYDut7d+XFcUTJw=";
|
|
})
|
|
] ;
|
|
};
|
|
|
|
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"
|
|
];
|
|
});
|
|
|
|
openssl = crossOnly prev.openssl (
|
|
d:
|
|
d.overrideAttrs (
|
|
o: with final; {
|
|
# we want to apply
|
|
# https://patch-diff.githubusercontent.com/raw/openssl/openssl/pull/20273.patch";
|
|
# which disables overriding the -march cflags to the wrong values,
|
|
# but openssl is used for bootstrapping so that's easier said than
|
|
# done. Do it the ugly way..
|
|
postPatch =
|
|
o.postPatch
|
|
+ ''
|
|
sed -i.bak 's/linux.*-mips/linux-mops/' Configure
|
|
'';
|
|
# openssl with threads requires stdatomic which drags in libgcc
|
|
# as a dependency
|
|
configureFlags = [ "no-threads" ] ++ o.configureFlags;
|
|
|
|
# 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 ];
|
|
});
|
|
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;
|
|
}
|
|
// lib.optionalAttrs (lib.versionOlder lib.version "24.10") {
|
|
texinfo = null;
|
|
nixosTestRunner = true;
|
|
}
|
|
// lib.optionalAttrs (lib.versionAtLeast lib.version "25.04") {
|
|
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-linux-init = prev.s6-linux-init.override {
|
|
skawarePackages = prev.skawarePackages // {
|
|
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;
|
|
};
|
|
|
|
xl2tpd = prev.xl2tpd.overrideAttrs (o: {
|
|
patches = [ ./pkgs/xl2tpd-exit-on-close.patch ];
|
|
});
|
|
}
|