139 lines
3.4 KiB
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;
|
|
};
|
|
};
|
|
}
|