mirror of
https://github.com/mitchellh/zig-overlay.git
synced 2025-02-05 17:02:48 +02:00
add an overlay, clean up package names for nix flake check
This commit is contained in:
parent
de6bcff2cf
commit
5ce840257e
3 changed files with 37 additions and 20 deletions
14
README.md
14
README.md
|
@ -11,8 +11,10 @@ The flake outputs are documented in `flake.nix` but an overview:
|
||||||
|
|
||||||
* Default package and "app" is the latest released version
|
* Default package and "app" is the latest released version
|
||||||
* `packages.<version>` for a tagged release
|
* `packages.<version>` for a tagged release
|
||||||
* `packages.master.<date>` for a nightly release
|
* `packages.master` for the latest nightly release
|
||||||
* `packages.master.latest` for the latest nightly release
|
* `packages.master-<date>` for a nightly release
|
||||||
|
* `overlay` is an overlay that adds `zigpkgs` to be the packages
|
||||||
|
exposed by this flake
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
|
@ -35,10 +37,10 @@ In a shell:
|
||||||
```sh
|
```sh
|
||||||
# run the latest released version
|
# run the latest released version
|
||||||
$ nix run 'github:mitchellh/zig-overlay'
|
$ nix run 'github:mitchellh/zig-overlay'
|
||||||
# open a shell with master version dated 2021-02-13 (oldest version available)
|
# open a shell with nightly version dated 2021-02-13 (oldest version available)
|
||||||
$ nix shell 'github:mitchellh/zig-overlay#master."2021-02-13"'
|
$ nix shell 'github:mitchellh/zig-overlay#master-2021-02-13'
|
||||||
# open a shell with latest master version
|
# open a shell with latest nightly version
|
||||||
$ nix shell 'github:mitchellh/zig-overlay#master.latest'
|
$ nix shell 'github:mitchellh/zig-overlay#master'
|
||||||
```
|
```
|
||||||
|
|
||||||
## Thanks
|
## Thanks
|
||||||
|
|
29
default.nix
29
default.nix
|
@ -23,25 +23,26 @@ let
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# The packages that are tagged releases
|
||||||
|
taggedPackages = lib.attrsets.mapAttrs
|
||||||
|
(k: v: mkBinaryInstall { inherit (v.${system}) version url sha256; })
|
||||||
|
(builtins.removeAttrs sources ["master"]);
|
||||||
|
|
||||||
|
# The master packages
|
||||||
|
masterPackages = lib.attrsets.mapAttrs'
|
||||||
|
(k: v: lib.attrsets.nameValuePair
|
||||||
|
(if k == "latest" then "master" else ("master-" + k))
|
||||||
|
(mkBinaryInstall { inherit (v.${system}) version url sha256; })
|
||||||
|
)
|
||||||
|
sources.master;
|
||||||
|
|
||||||
# This determines the latest /released/ version.
|
# This determines the latest /released/ version.
|
||||||
latest = lib.lists.last (
|
latest = lib.lists.last (
|
||||||
builtins.sort
|
builtins.sort
|
||||||
(x: y: (builtins.compareVersions x y) < 0)
|
(x: y: (builtins.compareVersions x y) < 0)
|
||||||
(builtins.filter (x: x != "master") (builtins.attrNames sources))
|
(builtins.attrNames taggedPackages)
|
||||||
);
|
);
|
||||||
|
|
||||||
# This is the full list of packages
|
|
||||||
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
|
in
|
||||||
# We want the packages but also add a "default" that just points to the
|
# We want the packages but also add a "default" that just points to the
|
||||||
# latest released version.
|
# latest released version.
|
||||||
packages // { "default" = packages.${latest}; }
|
taggedPackages // masterPackages // { "default" = taggedPackages.${latest}; }
|
||||||
|
|
14
flake.nix
14
flake.nix
|
@ -13,10 +13,24 @@
|
||||||
in flake-utils.lib.eachSystem systems (system:
|
in flake-utils.lib.eachSystem systems (system:
|
||||||
let pkgs = nixpkgs.legacyPackages.${system};
|
let pkgs = nixpkgs.legacyPackages.${system};
|
||||||
in rec {
|
in rec {
|
||||||
|
# The packages exported by the Flake:
|
||||||
|
# - default - latest /released/ version
|
||||||
|
# - <version> - tagged version
|
||||||
|
# - master - latest nightly (updated daily)
|
||||||
|
# - master-<date> - nightly by date
|
||||||
packages = import ./default.nix { inherit system pkgs; };
|
packages = import ./default.nix { inherit system pkgs; };
|
||||||
|
|
||||||
|
# "Apps" so that `nix run` works. If you run `nix run .` then
|
||||||
|
# this will use the latest default.
|
||||||
apps = rec {
|
apps = rec {
|
||||||
default = apps.zig;
|
default = apps.zig;
|
||||||
zig = flake-utils.lib.mkApp { drv = packages.default; };
|
zig = flake-utils.lib.mkApp { drv = packages.default; };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Overlay that can be imported so you can access the packages
|
||||||
|
# using zigpkgs.master.latest or whatever you'd like.
|
||||||
|
overlay = final: prev: {
|
||||||
|
zigpkgs = packages.${prev.system};
|
||||||
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue