{ inputs.pkgsSrc.url = "nixpkgs/nixos-22.11"; inputs.utils.url = "github:numtide/flake-utils"; # v0.8.1 inputs.garage.url = "git+https://git.deuxfleurs.fr/Deuxfleurs/garage.git?ref=main&rev=76230f20282e73a5a5afa33af68152acaf732cf5"; description = "cryptic-net provides the foundation for an autonomous community cloud infrastructure"; outputs = { self, pkgsSrc, utils, garage, }: let supportedSystems = [ "x86_64-linux" "aarch64-linux" "armv7l-linux" # rpi, I think? "i686-linux" ]; mkPkg = (buildSystem: hostSystem: let pkgs = import pkgsSrc { system = buildSystem; crossSystem = { config = hostSystem; }; overlays = [ (import ./nix/overlays/go.nix) ]; }; defaultAttrs = (import ./default.nix) { inherit pkgs; hostSystem = hostSystem; garage = garage.packages."${hostSystem}".default; selfRev = if self ? rev then self.rev else "UNKNOWN"; }; in defaultAttrs.appImage ); # TODO Once everything else is prepared for cross compilation this can be # re-enabled. Things left to do: # # - Revert to not using flake for garage, we'll need to compile it # ourselves because flakes don't actually support cross-compilation in a # nice way. # # - Set ARCH arg for appimagetool target in default.nix # # - Test builds in QEMU or something. # # - Probably other things which will come up #pkgsForBuildSystem = (buildSystem: builtins.foldl' # (sysPkgs: hostSystem: # sysPkgs // { "compiled-for-${hostSystem}" = mkPkg buildSystem hostSystem; }) # { default = mkPkg buildSystem buildSystem; } # supportedSystems #); pkgsForBuildSystem = (buildSystem: { default = mkPkg buildSystem buildSystem; }); in { packages = (builtins.foldl' (pkgs: buildSystem: pkgs // { "${buildSystem}" = pkgsForBuildSystem buildSystem; }) {} supportedSystems ); }; }