Skip to content

Commit

Permalink
support aarch64-linux nightly builds and updates
Browse files Browse the repository at this point in the history
  • Loading branch information
colemickens committed Jun 11, 2024
1 parent 9a95e7a commit 78ad8e0
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 26 deletions.
61 changes: 36 additions & 25 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,17 @@
let
inherit (inputs.lib-aggregate) lib;
inherit (inputs) self;
metadata = builtins.fromJSON (builtins.readFile ./latest.json);
latestJson = builtins.fromJSON (builtins.readFile ./latest.json);

mozillaSystemDict = {
"x86_64-linux" = "linux-x86_64";
"aarch64-linux" = "linux-aarch64"; # TODO: doesn't work since Moz doesn't publish 'em
"aarch64-linux" = "linux-aarch64";
};

# supportedSystems = [ "x86_64-linux" "aarch64-linux" ]; # TODO: still not there
supportedSystems = [ "x86_64-linux" ];
supportedSystems = [
"x86_64-linux"
"aarch64-linux"
];

in
lib.flake-utils.eachSystem supportedSystems (system:
Expand All @@ -35,27 +37,36 @@

pkgs_ = lib.genAttrs (builtins.attrNames inputs) (inp: pkgsFor inputs."${inp}" [ ]);

fv = pkgs_.nixpkgs.lib.firefoxOverlay.firefoxVariants;
variants = (builtins.mapAttrs
# get the variants we support from upstream, except filter on not-x86_64-linux
# as there are no release=true releases published for aarch64-linux, only nightly
variants =
let variants = pkgs_.nixpkgs.lib.firefoxOverlay.firefoxVariants; in
if (system == "x86_64-linux")
then variants
else (pkgs_.nixpkgs.lib.filterAttrs (n: v: lib.hasInfix "nightly" n) variants);

# latest versionInfo outputs for each variant
# impure, but by design. this is stored/recorded and then used purely
impureVersionInfos = (builtins.mapAttrs
(n: v: pkgs_.nixpkgs.lib.firefoxOverlay.versionInfo
(builtins.trace (v // { system = mozillaSystemDict.${system}; })
(v // { system = mozillaSystemDict.${system}; })
)
)
(variants)
);

latestVersions = (builtins.mapAttrs
(n: v:
let
cv = metadata.${system}."variants".${n};
cvi = metadata.${system}."versionInfo".${n};
cv = latestJson.${system}."variants".${n};
cvi = latestJson.${system}."versionInfo".${n};
in
pkgs_.nixpkgs.lib.firefoxOverlay.firefoxVersion (cv // { info = cvi; })
)
(fv)
(variants)
);

# latest versionInfo outputs for each variant
# impure, but by design. this is stored/recorded and then used purely
impureVariants =
(pkgs_.nixpkgs.lib.firefoxOverlay.firefoxVariants);

impureVersionInfos = (builtins.mapAttrs
(n: v: pkgs_.nixpkgs.lib.firefoxOverlay.versionInfo (v // { system = mozillaSystemDict.${system}; }))
(fv)
);

# https://nixos.org/manual/nixos/unstable/index.html#sec-calling-nixos-tests
nixos-lib = import (inputs.nixpkgs + "/nixos/lib") { };
Expand Down Expand Up @@ -100,18 +111,18 @@

packages = ({
default = pkgs_.nixpkgs.linkFarm "firefox-variants" [
{ name = "firefox-bin"; path = variants.firefox-bin; }
{ name = "firefox-esr-bin"; path = variants.firefox-esr-bin; }
{ name = "firefox-nightly-bin"; path = variants.firefox-nightly-bin; }
{ name = "firefox-beta-bin"; path = variants.firefox-beta-bin; }
{ name = "firefox-bin"; path = latestVersions.firefox-bin; }
{ name = "firefox-esr-bin"; path = latestVersions.firefox-esr-bin; }
{ name = "firefox-nightly-bin"; path = latestVersions.firefox-nightly-bin; }
{ name = "firefox-beta-bin"; path = latestVersions.firefox-beta-bin; }
];
} // variants);
} // latestVersions);

latest = {
variants = impureVariants;
variants = variants;
versionInfo = impureVersionInfos;
};

checks = builtins.mapAttrs (_: value: runNixOSTestFor value) (builtins.removeAttrs self.packages.${system} [ "default" ]) /* # is a link farm */ ;
checks = builtins.mapAttrs (_: value: runNixOSTestFor value) (builtins.removeAttrs self.packages.${system} [ "default" ]);
});
}
21 changes: 21 additions & 0 deletions latest.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,25 @@
{
"aarch64-linux": {
"variants": {
"firefox-nightly-bin": {
"channel": "nightly",
"name": "Firefox Nightly",
"release": false,
"version": "129.0a1",
"wmClass": "firefox-nightly"
}
},
"versionInfo": {
"firefox-nightly-bin": {
"chksum": "https://archive.mozilla.org/pub/firefox/nightly/2024/06/2024-06-10-21-30-24-mozilla-central/firefox-129.0a1.en-US.linux-aarch64.checksums",
"chksumSig": null,
"sha512": "a3d8c9f3e2d7a284b967bea4d7fedbd35903b85382b64fa487d0cebefcaaf641a5d166a345466fff8bcfe95fcf7948e47fa95b826b308012ada997e8e30302ea",
"sig": "https://archive.mozilla.org/pub/firefox/nightly/2024/06/2024-06-10-21-30-24-mozilla-central/firefox-129.0a1.en-US.linux-aarch64.tar.bz2.asc",
"sigSha512": "09b7a0aa9eb0a32d48c97e11a6cc8503e1ece179f0651c2751097a16dad551f9149e7c1ba7cf7c90be85bdec7139e4d77c4116fc903886daec1f2e5ea7f1cfe4",
"url": "https://archive.mozilla.org/pub/firefox/nightly/2024/06/2024-06-10-21-30-24-mozilla-central/firefox-129.0a1.en-US.linux-aarch64.tar.bz2"
}
}
},
"x86_64-linux": {
"variants": {
"firefox-beta-bin": {
Expand Down
2 changes: 1 addition & 1 deletion update.nu
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ let commitmsg = do {

print -e $"::notice ::oldversion=($oldversion)"

rm latest.json
rm -f latest.json
nix eval --impure '.#latest' --json | jq out> latest.json

let newversion = (cat latest.json
Expand Down

0 comments on commit 78ad8e0

Please sign in to comment.