commit e78e4f23446cc130b12a02fef51661595ee87dd5 Author: Audrey Dutcher Date: Mon Jul 7 14:24:15 2025 -0700 delivered diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..75435be --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/result* +binxos diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..2d50e16 --- /dev/null +++ b/flake.lock @@ -0,0 +1,27 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1751913784, + "narHash": "sha256-ZR1+TM7ixZZbcZUbEcBIHNYhUhF1jelyc8SkOFr7ouA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "38dcda3e40b62f2822ba6bb0c5201ef0c269ab8b", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "release-25.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..cc81815 --- /dev/null +++ b/flake.nix @@ -0,0 +1,138 @@ +{ + 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; + }; + }; +}