binxos/flake.nix

139 lines
3.4 KiB
Nix

{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/release-25.05";
};
outputs = {nixpkgs, self}: {
packages.x86_64-linux = let
pkgs = nixpkgs.legacyPackages.x86_64-linux;
pkgset-raw = {
inherit (pkgs)
amtterm
#archdiff
babeltrace
#bbe # will not build at -O0?
#bin_replace_string
bsdiff
#btyacc
bustle
byacc
complexity
#conf2struct
cppi
cproto
#csup
desktop-file-utils
dialog
#diffball
#difffilter
diffstat
#dissembler
dropwatch
dwdiff
#edi
elfkickers
#ftnchek
#fuzz
global
gpp
#gtk-update-icon-cache
#hxd
hxtools
icmake
#intel-graphics-system-controller
libtree
#lsuio
#mingw64-toolchain
numdiff
ostree
pahole
patchutils
#ply
#pretrace
#pscan
radare2
rizin
rt-tests
#sel
shc
smem
statifier
#stubgen
#systemtap
#tinlink
valgrind
vmtouch
vtable-dumper
wiggle
#xfce4-dev-tools
xmlindent
#yacc
bison
diffutils
bintools-unwrapped
gtk3
wget
curl
file
strace
;
inherit (pkgs.xfce) xfce4-dev-tools;
coreutils = (pkgs.coreutils.override { singleBinary = false; });
};
lib = pkgs.lib;
self' = self.packages.x86_64-linux;
pkgsetsDefs = {
"O0" = "-O0 -g";
"O2" = "-O2 -g";
};
forceFlags = drv: flags: let
overridesFlags = {
env = (drv.env or {}) // { NIX_CFLAGS_COMPILE = "${(drv.env.NIX_CFLAGS_COMPILE or "")} ${flags}"; };
};
overridesHardening = {
# fortify requires at least -O1
# pic leads to some linker errors
hardeningDisable = (drv.hardeningDisable or []) ++ [ "fortify" "pic" ];
};
overridesStrip = {
dontStrip = true;
};
overrides = overridesStrip // overridesFlags // overridesHardening;
in drv.overrideAttrs overrides;
in {
default = pkgs.runCommand "binxos.tar.gz" { } ''
declare -A SETS
declare -A TOOBIG
${lib.concatMapAttrsStringSep "\n" (name: pkgset: ''
SETS[${name}]="${lib.concatMapAttrsStringSep " " (_: drv: lib.getBin drv) pkgset}"
'') self'.pkgsets}
for set in "''${!SETS[@]}"; do
mkdir -p $TMP/binxos/$set
for pkg in ''${SETS[$set]}; do
for f in $pkg/bin/*; do
if [[ $(head -c4 $f) != $'\x7fELF' ]]; then
continue
fi
if [[ $(stat --format %s $f) > $((800 * 1024 * 1024)) ]]; then
TOOBIG[$(basename $f)]=1
continue
fi
cp $f $TMP/binxos/$set
done
done
done
for bin in "''${!TOOBIG[@]}"; do
rm -f $TMP/binxos/*/$bin
done
cd $TMP
tar -czf $out binxos
'';
pkgsets = lib.mapAttrs (_: flags: lib.mapAttrs (_: pkg: forceFlags pkg flags) pkgset-raw) pkgsetsDefs;
};
};
}