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