rewritten default.nix/flake.nix

This commit is contained in:
Mitchell Hashimoto 2022-08-22 19:07:41 -07:00
parent 1e89c6da81
commit f0c4a8c91b
No known key found for this signature in database
GPG key ID: 523D5DC389D273BC
2 changed files with 31 additions and 15 deletions

View file

@ -3,8 +3,10 @@
let let
inherit (pkgs) lib; inherit (pkgs) lib;
releases = builtins.fromJSON (lib.strings.fileContents ./sources.json); sources = builtins.fromJSON (lib.strings.fileContents ./sources.json);
mkDerivation = { url, version, sha256 }: pkgs.stdenv.mkDerivation {
# mkBinaryInstall makes a derivation that installs Zig from a binary.
mkBinaryInstall = { url, version, sha256 }: pkgs.stdenv.mkDerivation {
inherit version; inherit version;
pname = "zig"; pname = "zig";
@ -20,13 +22,26 @@ let
cp zig $out/bin/zig cp zig $out/bin/zig
''; '';
}; };
in lib.attrsets.mapAttrs (k: v:
if k == "master" then # This determines the latest /released/ version.
lib.attrsets.mapAttrs (k: v: (mkDerivation { latest = lib.lists.last (
inherit (v.${system}) version url sha256; builtins.sort
})) v (x: y: (builtins.compareVersions x y) < 0)
else (builtins.filter (x: x != "master") (builtins.attrNames sources))
mkDerivation { );
inherit (v.${system}) version url sha256;
}) # This is the full list of packages
releases packages = lib.attrsets.mapAttrs (k: v:
if k == "master" then
lib.attrsets.mapAttrs (k: v: (mkBinaryInstall {
inherit (v.${system}) version url sha256;
})) v
else
mkBinaryInstall {
inherit (v.${system}) version url sha256;
})
sources;
in
# We want the packages but also add a "default" that just points to the
# latest released version.
packages // { "default" = packages.${latest}; }

View file

@ -14,8 +14,9 @@
let pkgs = nixpkgs.legacyPackages.${system}; let pkgs = nixpkgs.legacyPackages.${system};
in rec { in rec {
packages = import ./default.nix { inherit system pkgs; }; packages = import ./default.nix { inherit system pkgs; };
defaultPackage = packages."0.9.1"; apps = rec {
apps.zig = flake-utils.lib.mkApp { drv = defaultPackage; }; default = apps.zig;
defaultApp = apps.zig; zig = flake-utils.lib.mkApp { drv = packages.default; };
};
}); });
} }