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; luaHost = 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; }); 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 = prev.btrfs-progs.override { udevSupport = false; udev = null; }; chrony = let chrony' = prev.chrony.overrideAttrs(o: { configureFlags = [ "--chronyvardir=$(out)/var/lib/chrony" "--disable-readline" "--disable-editline" ]; }); in chrony'.override { gnutls = null; nss = null; nspr = null; readline = null; libedit = null; libseccomp = null; # should texinfo be in nativeBuildInputs instead of # buildInputs? texinfo = 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 = prev.cmake.overrideAttrs(o: # don't override the build cmake or we'll have to rebuild # half the known universe to no useful benefit if final.stdenv.buildPlatform != final.stdenv.hostPlatform then { preConfigure = builtins.replaceStrings ["$configureFlags"] ["$configureFlags $cmakeFlags"] o.preConfigure; } else {} ); dnsmasq = let d = prev.dnsmasq.overrideAttrs(o: { preBuild = '' makeFlagsArray=("COPTS=") ''; }); in d.override { dbusSupport = false; nettle = null; }; dropbear = prev.dropbear.overrideAttrs (o: { 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 ''; }); 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_UBUS=y" "CONFIG_TLS=internal" ]; h = prev.hostapd.overrideAttrs(o: { buildInputs = o.buildInputs ++ [ final.libubox final.ubus ]; src = final.fetchFromGitea { domain = "git.dgnum.eu"; owner = "DGNum"; repo = "hostapd"; rev = "hostap-liminix-integration"; hash = "sha256-5Xi90keCHxvuKR5Q7STuZDzuM9h9ac6aWoXVQYvqkQI="; }; extraConfig = ""; configurePhase = '' cat > hostapd/defconfig < hostapd/defconfig <