diff --git a/default.nix b/default.nix index 70c34a3..db6ae5d 100644 --- a/default.nix +++ b/default.nix @@ -4,7 +4,6 @@ garage, selfRev, hostSystem, - #buildSystem, }: rec { @@ -15,9 +14,12 @@ inherit selfRev hostSystem; src = ./version.txt; + garageVersion = garage.version; - nativeBuildInputs = [ pkgs.go ]; + # TODO it'd be nice to be able to call `go version`, but that doesn't work + # when crossSystem is being used for some unknown reason. + goVersion = pkgs.go.version; builder = builtins.toFile "builder.sh" '' source $stdenv/setup @@ -29,7 +31,7 @@ echo "System: $hostSystem" >> "$versionFile" echo "Git Revision: $selfRev" >> "$versionFile" - echo "Go Version: $(go version)" >> "$versionFile" + echo "Go Version: $goVersion" >> "$versionFile" echo "Garage Version: $garageVersion" >> "$versionFile" mkdir -p "$out"/share diff --git a/flake.nix b/flake.nix index 5dcf885..3d9aeac 100644 --- a/flake.nix +++ b/flake.nix @@ -7,8 +7,7 @@ # 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"; + description = "cryptic-net provides the foundation for an autonomous community cloud infrastructure"; outputs = { @@ -23,31 +22,61 @@ cloud infrastructure"; "i686-linux" ]; - in utils.lib.eachSystem supportedSystems (system: let + mkPkg = (buildSystem: hostSystem: let - pkgs = import pkgsSrc { - inherit system; + pkgs = import pkgsSrc { + system = buildSystem; - #crossSystem = { - # config = system; - #}; + crossSystem = { + config = hostSystem; + }; - overlays = [ - (import ./nix/overlays/go.nix) - ]; - }; + overlays = [ + (import ./nix/overlays/go.nix) + ]; + }; - defaultAttrs = (import ./default.nix) { - inherit pkgs; - hostSystem = system; - #buildSystem = self.system; - garage = garage.packages."${system}".default; - selfRev = if self ? rev then self.rev else "UNKNOWN"; - }; + defaultAttrs = (import ./default.nix) { + inherit pkgs; + hostSystem = hostSystem; + garage = garage.packages."${hostSystem}".default; + selfRev = if self ? rev then self.rev else "UNKNOWN"; + }; + + in + defaultAttrs.garage + ); + + # 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 { - defaultPackage = defaultAttrs.appImage; + packages = (builtins.foldl' + (pkgs: buildSystem: + pkgs // { "${buildSystem}" = pkgsForBuildSystem buildSystem; }) + {} + supportedSystems + ); - }); + }; } diff --git a/nix/appimagetool.nix b/nix/appimagetool.nix index 701bc89..2ac03a9 100644 --- a/nix/appimagetool.nix +++ b/nix/appimagetool.nix @@ -4,7 +4,7 @@ let version = "745"; - cpuArch = stdenv.buildPlatform.parsed.cpu.arch; + cpuArch = stdenv.buildPlatform.parsed.cpu.name; src = {