summaryrefslogtreecommitdiffstats
path: root/lib/nix-thin-edge-builder/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to 'lib/nix-thin-edge-builder/flake.nix')
-rw-r--r--lib/nix-thin-edge-builder/flake.nix162
1 files changed, 99 insertions, 63 deletions
diff --git a/lib/nix-thin-edge-builder/flake.nix b/lib/nix-thin-edge-builder/flake.nix
index 8ece62d3..904d0c93 100644
--- a/lib/nix-thin-edge-builder/flake.nix
+++ b/lib/nix-thin-edge-builder/flake.nix
@@ -1,7 +1,7 @@
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
- crane.url = "github:ipetkov/crane";
+ crane.url = "github:TheNeikos/crane/fix/use_unsafe";
crane.inputs.nixpkgs.follows = "nixpkgs";
flake-utils.url = "github:numtide/flake-utils";
};
@@ -12,76 +12,112 @@
craneLib = crane.lib.${system};
pkgs = import nixpkgs { inherit system; };
in
- {
- lib = rec {
- officialComponents = [
- (mkThinEdgeComponent { src = ../../plugins/plugin_avg; pluginBuilderPath = "foo"; })
- ];
+ {
+ lib = rec {
+ officialComponents = [
+ (mkThinEdgeComponent { src = ../../plugins/plugin_avg; pluginBuilderPath = "plugin_avg::AvgPluginBuilder"; })
+ ];
- mkThinEdgeComponent = attrs@{
- name ? null,
- version ? null,
- src,
- pluginBuilderPath,
- }:
- let
- crateInfo = craneLib.crateNameFromCargoToml {
- cargoToml = "${src}/Cargo.toml";
- };
- in {
- name = if builtins.isNull name
- then crateInfo.pname
- else name;
+ mkThinEdgeComponent =
+ attrs@{ name ? null
+ , version ? null
+ , nativeBuildInputs ? [ ]
+ , buildInputs ? [ ]
+ , src
+ , pluginBuilderPath
+ ,
+ }:
+ let
+ crateInfo = craneLib.crateNameFromCargoToml {
+ cargoToml = "${src}/Cargo.toml";
+ };
+ in
+ {
+ name =
+ if builtins.isNull name
+ then crateInfo.pname
+ else name;
- version = if builtins.isNull version
- then crateInfo.version
- else version;
+ version =
+ if builtins.isNull version
+ then crateInfo.version
+ else version;
- inherit src pluginBuilderPath;
- };
+ inherit src pluginBuilderPath nativeBuildInputs buildInputs;
+ };
+
+ mkThinEdgeCrateSource =
+ attrs@{ defaultComponents ? officialComponents
+ , extraComponents ? [ ]
+ ,
+ }:
+ let
+ allComponents = defaultComponents ++ extraComponents;
+
+ writeCargoToml = import ./writeCargoToml.nix;
+ writeSrcMainRs = import ./writeSrcMainRs.nix;
+ writeCargoRegistry = import ./writeCargoRegistry.nix;
- mkThinEdgeCrateSource = attrs@{
- defaultComponents ? officialComponents,
- extraComponents ? [],
- }:
- let
- allComponents = defaultComponents ++ extraComponents;
+ cargoToml = writeCargoToml {
+ inherit pkgs craneLib;
+ components = allComponents;
+ };
- writeCargoToml = import ./writeCargoToml.nix;
- writeSrcMainRs = import ./writeSrcMainRs.nix;
+ srcmainrs = writeSrcMainRs {
+ inherit pkgs craneLib;
+ components = allComponents;
+ };
- cargoToml = writeCargoToml {
- inherit craneLib;
- components = allComponents;
- };
+ cargoConfig = writeCargoRegistry {
+ inherit pkgs craneLib;
+ };
- srcmainrs = writeSrcMainRs {
- inherit pkgs craneLib;
- components = allComponents;
- };
+ thinEdgeLockFile = pkgs.runCommand "buildThinEdgeLockFile" { } ''
+ mkdir -p src
+ mkdir -p .cargo
+ mkdir -p home
+ HOME=$(pwd)/home
+ cp -v "${cargoToml}" Cargo.toml
+ cp -v "${cargoConfig}" .cargo/config.toml
+ cp -v "${srcmainrs}" src/main.rs
+ ${pkgs.cargo}/bin/cargo -v generate-lockfile --offline
+ cp Cargo.lock $out
+ '';
- thinEdgeCrateSrc = pkgs.runCommand "buildThinEdgeCrateSrc" {} ''
- mkdir -p $out/src
- cp -v "${cargoToml}" $out/Cargo.toml
- cp -v "${srcmainrs}" $out/src/main.rs
- '';
- in thinEdgeCrateSrc;
+ thinEdgeCrateSrc = pkgs.runCommand "buildThinEdgeCrateSrc" { } ''
+ mkdir -p $out/src
+ mkdir -p $out/.cargo
+ mkdir -p $out/home
+ cp -v "${cargoToml}" $out/Cargo.toml
+ cp -v "${thinEdgeLockFile}" $out/Cargo.lock
+ cp -v "${srcmainrs}" $out/src/main.rs
+ '';
+ in
+ thinEdgeCrateSrc;
- mkThinEdge = attrs@{
- defaultComponents ? officialComponents,
- extraComponents ? [],
- }:
- let
- thinEdgeCrateSrc = mkThinEdgeCrateSource {
- inherit defaultComponents extraComponents;
- };
+ mkThinEdge =
+ attrs@{ defaultComponents ? officialComponents
+ , extraComponents ? [ ]
+ }:
+ let
+ thinEdgeCrateSrc = mkThinEdgeCrateSource {
+ inherit defaultComponents extraComponents;
+ };
+ collectedInputs = {
+ buildInputs = pkgs.lib.lists.concatMap (comp: comp.buildInputs) extraComponents;
+ nativeBuildInputs = pkgs.lib.lists.concatMap (comp: comp.nativeBuildInputs) extraComponents;
+ };
- builtPackage = craneLib.buildPackage {
- pname = "thin-edge";
- version = "0.1.0";
- src = thinEdgeCrateSrc;
- };
- in builtPackage;
- };
- });
+
+ builtPackage = craneLib.buildPackage {
+ pname = "thin-edge";
+ version = "0.1.0";
+ src = thinEdgeCrateSrc;
+ buildInputs = collectedInputs.buildInputs;
+ nativeBuildInputs = collectedInputs.nativeBuildInputs;
+ };
+ in
+ builtPackage;
+ };
+ });
}