rec { overlays = [ # Make buildGoModules use static compilation by default (final: prev: let buildArgs = { doCheck = false; CGO_ENABLED=0; tags = [ "netgo" "timetzdata" ]; ldflags = [ "-w" "-extldflags=-static" ]; # Not sure why buildGoModule doesn't handle this correctly. GOARM = if prev.stdenv.hostPlatform.parsed.cpu.name == "armv6l" then "6,hardfloat" else null; }; in { buildGoModule = args: prev.buildGoModule (buildArgs // args); }) # for whatever reason git checks fail when flake is being used (or maybe # it's crossSystem's fault) (final: prev: { git = prev.git.overrideAttrs (oldAttrs: { installCheckPhase = '' # noop ''; }); }) ]; version = "24.05"; rev = "5646423bfac84ec68dfc60f2a322e627ef0d6a95"; src = fetchTarball { name = "nixpkgs-${version}"; url = "https://github.com/NixOS/nixpkgs/archive/${rev}.tar.gz"; sha256 = "sha256:1lr1h35prqkd1mkmzriwlpvxcb34kmhc9dnr48gkm8hh089hifmx"; }; lib = import "${src}/lib"; crossSystems = { "x86_64-linux" = {config = "x86_64-linux";}; "aarch64-linux" = lib.systems.examples.aarch64-multiplatform; "i686-linux" = {config = "i686-linux";}; "armv6l-linux" = lib.systems.examples.raspberryPi; }; supportedSystems = builtins.attrNames crossSystems; default = { buildSystem, hostSystem ? buildSystem, }: import src ({ inherit overlays; system = buildSystem; } // (if buildSystem == hostSystem then {} else { # The nixpkgs cache doesn't have any packages where cross-compiling has been # enabled, even if the target platform is actually the same as the build # platform (and therefore it's not really cross-compiling). So we only set # up the cross-compiling config if the target platform is different. crossSystem = builtins.getAttr hostSystem crossSystems; })); }