init
This commit is contained in:
commit
1c3a495f96
62
flake.nix
Normal file
62
flake.nix
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
{
|
||||||
|
description = "A naersk based rust flake";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
utils.url = "github:numtide/flake-utils";
|
||||||
|
naersk = {
|
||||||
|
url = "github:nmattia/naersk";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
index = {
|
||||||
|
flake = false;
|
||||||
|
url = "github:rust-lang/crates.io-index";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs, utils, naersk, index }:
|
||||||
|
let
|
||||||
|
crate = self.lib.crate "bat";
|
||||||
|
pname = crate.latest.name;
|
||||||
|
forPkgs = pkgs:
|
||||||
|
rec {
|
||||||
|
# # `nix build`
|
||||||
|
# packages.${pname} = crate.latest.package { inherit pkgs; };
|
||||||
|
|
||||||
|
# # `nix run`
|
||||||
|
# apps.${pname} = utils.lib.mkApp {
|
||||||
|
# drv = packages.${pname};
|
||||||
|
# };
|
||||||
|
# defaultApp = apps.${pname};
|
||||||
|
};
|
||||||
|
forSystem = system: forPkgs nixpkgs.legacyPackages."${system}";
|
||||||
|
in
|
||||||
|
(utils.lib.eachDefaultSystem forSystem) // {
|
||||||
|
lib = rec {
|
||||||
|
config = builtins.fromJSON (builtins.readFile "${index}/config.json");
|
||||||
|
crate = name:
|
||||||
|
let
|
||||||
|
dbg = val: builtins.trace val val;
|
||||||
|
strlen = builtins.stringLength;
|
||||||
|
substr = builtins.substring;
|
||||||
|
path = if strlen name < 4 then "${toString (strlen name)}/${substr 0 1 name}/${name}" else "${substr 0 2 name}/${substr 2 2 name}/${name}";
|
||||||
|
build = meta: extra @ { pkgs, ... }:
|
||||||
|
let naersk-lib = naersk.lib."${pkgs.system}"; in
|
||||||
|
naersk-lib.buildPackage ((builtins.removeAttrs extra [ "pkgs" ]) // {
|
||||||
|
root = pkgs.runCommandLocal "unpack-${name}" { buildInputs = [ pkgs.coreutils ]; } ''
|
||||||
|
mkdir -p $out
|
||||||
|
tar xvf ${meta.tarball} -C $out --strip-components=1
|
||||||
|
'';
|
||||||
|
});
|
||||||
|
versions = builtins.foldl'
|
||||||
|
(p: i:
|
||||||
|
let meta = i // rec { url = "${config.dl}/${name}/${i.vers}/download"; package = build meta; tarball = builtins.fetchurl { inherit url; sha256 = i.cksum; }; }; in
|
||||||
|
p // { latest = meta; "${i.vers}" = meta; }
|
||||||
|
)
|
||||||
|
{ }
|
||||||
|
(map builtins.fromJSON (builtins.filter (s: builtins.isString s && strlen s > 0) (builtins.split "\n" (builtins.readFile "${index}/${path}"))));
|
||||||
|
in
|
||||||
|
versions;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user