lightspeed-ingest: init
This commit is contained in:
parent
045f9f5b22
commit
294e7731d6
6 changed files with 3020 additions and 0 deletions
|
@ -19,3 +19,4 @@
|
|||
deluge = import ./deluge args;
|
||||
grafana-plugins = import ./grafana-plugins args;
|
||||
} // (import ./heptapod-runner.nix args)
|
||||
// (import ./lightspeed args)
|
||||
|
|
4
nix/pkgs/lightspeed/default.nix
Normal file
4
nix/pkgs/lightspeed/default.nix
Normal file
|
@ -0,0 +1,4 @@
|
|||
{ pkgs, ... }@args:
|
||||
{
|
||||
lightspeed-ingest = pkgs.callPackage ./lightspeed-ingest { };
|
||||
}
|
2895
nix/pkgs/lightspeed/lightspeed-ingest/Cargo.nix
Normal file
2895
nix/pkgs/lightspeed/lightspeed-ingest/Cargo.nix
Normal file
File diff suppressed because it is too large
Load diff
108
nix/pkgs/lightspeed/lightspeed-ingest/crate2nix-sources.nix
Normal file
108
nix/pkgs/lightspeed/lightspeed-ingest/crate2nix-sources.nix
Normal file
|
@ -0,0 +1,108 @@
|
|||
|
||||
# Support functions to create a nix generated workspace for out-of-tree sources.
|
||||
#
|
||||
# You do not need to check this in since it will be regenerated every time it is
|
||||
# used by crate2nix.
|
||||
#
|
||||
# This file was @generated by crate2nix 0.9.0-alpha.1 with the command:
|
||||
# "generate"
|
||||
#
|
||||
# See https://github.com/kolloch/crate2nix for more info.
|
||||
|
||||
{ nixpkgs ? <nixpkgs>
|
||||
, pkgs ? import nixpkgs {}
|
||||
, lib ? pkgs.lib
|
||||
# The path to crate2nix.json.
|
||||
, crate2nixJson ? ./crate2nix.json
|
||||
}:
|
||||
|
||||
let config = builtins.fromJSON (builtins.readFile crate2nixJson);
|
||||
sources = config.sources or (builtins.throw "no sources in ${crate2nixJson}");
|
||||
in
|
||||
rec {
|
||||
/* An attrset mapping a source name to its source (as a derivation). */
|
||||
fetchedSourcesByName = lib.mapAttrs internal.sourceFromConfig sources;
|
||||
|
||||
/* A derivation building a directory symlinking all workspace member sources
|
||||
by their name.
|
||||
*/
|
||||
fetchedSources =
|
||||
let sources = lib.mapAttrsToList (name: path: { inherit name path; }) fetchedSourcesByName;
|
||||
in
|
||||
pkgs.linkFarm "crate2nix-sources" sources;
|
||||
|
||||
internal = rec {
|
||||
sourceFromConfig = name: { type, ... } @ source:
|
||||
assert builtins.isString name;
|
||||
assert builtins.isString type;
|
||||
|
||||
if type == "Git"
|
||||
then pkgs.fetchgit {
|
||||
url = source.url;
|
||||
rev = source.rev;
|
||||
sha256 = source.sha256;
|
||||
}
|
||||
else if type == "CratesIo"
|
||||
then downloadFromCratesIo source
|
||||
else if type == "Nix"
|
||||
then resolveNix source
|
||||
else builtins.throw "Unexpected source type '${type}' for source: ${builtins.toJSON source}";
|
||||
|
||||
/* Resolves a source configuration of type "Nix".
|
||||
|
||||
It can either have
|
||||
|
||||
* a `{ package = ...; ... }` path which will be resolved with pkg.callPackage
|
||||
|
||||
* or an `{ import = ...; ... }` path which will be imported.
|
||||
|
||||
Within that context and additional optional `attr` attribute path is resolved.
|
||||
|
||||
E.g.
|
||||
```nix
|
||||
{
|
||||
type = "Nix";
|
||||
import = "./nix/sources.nix";
|
||||
attr = "myPackage.release";
|
||||
}
|
||||
```
|
||||
*/
|
||||
resolveNix = { type, ... } @ source:
|
||||
assert type == "Nix";
|
||||
|
||||
let attrs =
|
||||
if source ? package
|
||||
then pkgs.callPackage (./. + "/${source.package}") {}
|
||||
else if source ? "import"
|
||||
then import (./. + ''/${source."import"}'')
|
||||
else builtins.throw "Neither import nor package in nix source.";
|
||||
attrPath = lib.splitString "." source.attr;
|
||||
sourceDerivation =
|
||||
if source ? attr
|
||||
then lib.attrByPath
|
||||
attrPath
|
||||
(builtins.throw
|
||||
''
|
||||
Did not find attribute '${source.attr or ""}'
|
||||
in '${source.package or source.import or "missing file"}'.
|
||||
'')
|
||||
attrs
|
||||
else attrs;
|
||||
in
|
||||
sourceDerivation;
|
||||
|
||||
downloadFromCratesIo = { type, name, version, sha256 }:
|
||||
assert type == "CratesIo";
|
||||
|
||||
let archive = pkgs.fetchurl {
|
||||
name = "${name}-${version}.tar.gz";
|
||||
url = "https://crates.io/api/v1/crates/${name}/${version}/download";
|
||||
inherit sha256;
|
||||
};
|
||||
in pkgs.runCommand (lib.removeSuffix ".tar.gz" name) {}
|
||||
''
|
||||
mkdir -p $out
|
||||
tar -xzf ${archive} --strip-components=1 -C $out
|
||||
'';
|
||||
};
|
||||
}
|
10
nix/pkgs/lightspeed/lightspeed-ingest/crate2nix.json
Normal file
10
nix/pkgs/lightspeed/lightspeed-ingest/crate2nix.json
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"sources": {
|
||||
"lightspeed-ingest": {
|
||||
"type": "Git",
|
||||
"url": "https://github.com/GRVYDEV/lightspeed-ingest",
|
||||
"rev": "6e7756d427e409480d183a4e2211f0dca38629b1",
|
||||
"sha256": "145fqxwzvkcpg94b9f9annqf29nyjaign6yins3jkhsz8zbqcv99"
|
||||
}
|
||||
}
|
||||
}
|
2
nix/pkgs/lightspeed/lightspeed-ingest/default.nix
Normal file
2
nix/pkgs/lightspeed/lightspeed-ingest/default.nix
Normal file
|
@ -0,0 +1,2 @@
|
|||
{ pkgs, lib, stdenv, buildRustCrate, defaultCrateOverrides }:
|
||||
(import ./Cargo.nix { inherit pkgs lib stdenv buildRustCrate defaultCrateOverrides; }).workspaceMembers.lightspeed-ingest.build
|
Loading…
Reference in a new issue