mirror of
https://github.com/ElementsProject/lightning.git
synced 2024-11-19 01:43:36 +01:00
build: Add nix derivation for building cargo workspace
This commit is contained in:
parent
2056478e56
commit
864ece025e
76
flake.lock
76
flake.lock
@ -1,5 +1,36 @@
|
|||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
|
"advisory-db": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1727353582,
|
||||||
|
"narHash": "sha256-2csMEEOZhvowVKZNBHk1kMJqk72ZMrPj9LQYCzP6EKs=",
|
||||||
|
"owner": "rustsec",
|
||||||
|
"repo": "advisory-db",
|
||||||
|
"rev": "cb905e6e405834bdff1eb1e20c9b10edb5403889",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "rustsec",
|
||||||
|
"repo": "advisory-db",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"crane": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1727316705,
|
||||||
|
"narHash": "sha256-/mumx8AQ5xFuCJqxCIOFCHTVlxHkMT21idpbgbm/TIE=",
|
||||||
|
"owner": "ipetkov",
|
||||||
|
"repo": "crane",
|
||||||
|
"rev": "5b03654ce046b5167e7b0bccbd8244cb56c16f0e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "ipetkov",
|
||||||
|
"repo": "crane",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"flake-parts": {
|
"flake-parts": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": "nixpkgs-lib"
|
"nixpkgs-lib": "nixpkgs-lib"
|
||||||
@ -20,11 +51,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1725693463,
|
"lastModified": 1727540905,
|
||||||
"narHash": "sha256-ZPzhebbWBOr0zRWW10FfqfbJlan3G96/h3uqhiFqmwg=",
|
"narHash": "sha256-40J9tW7Y794J7Uw4GwcAKlMxlX2xISBl6IBigo83ih8=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "68e7dce0a6532e876980764167ad158174402c6f",
|
"rev": "fbca5e745367ae7632731639de5c21f29c8744ed",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -46,10 +77,47 @@
|
|||||||
"url": "https://github.com/NixOS/nixpkgs/archive/356624c12086a18f2ea2825fed34523d60ccc4e3.tar.gz"
|
"url": "https://github.com/NixOS/nixpkgs/archive/356624c12086a18f2ea2825fed34523d60ccc4e3.tar.gz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726871744,
|
||||||
|
"narHash": "sha256-V5LpfdHyQkUF7RfOaDPrZDP+oqz88lTJrMT1+stXNwo=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "a1d92660c6b3b7c26fb883500a80ea9d33321be2",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"advisory-db": "advisory-db",
|
||||||
|
"crane": "crane",
|
||||||
"flake-parts": "flake-parts",
|
"flake-parts": "flake-parts",
|
||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs",
|
||||||
|
"treefmt-nix": "treefmt-nix"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"treefmt-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1727431250,
|
||||||
|
"narHash": "sha256-uGRlRT47ecicF9iLD1G3g43jn2e+b5KaMptb59LHnvM=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"rev": "879b29ae9a0378904fbbefe0dadaed43c8905754",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"type": "github"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
29
flake.nix
29
flake.nix
@ -3,7 +3,17 @@
|
|||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05";
|
||||||
|
|
||||||
flake-parts.url = "github:hercules-ci/flake-parts";
|
flake-parts.url = "github:hercules-ci/flake-parts";
|
||||||
|
|
||||||
|
crane.url = "github:ipetkov/crane";
|
||||||
|
|
||||||
|
treefmt-nix.url = "github:numtide/treefmt-nix";
|
||||||
|
|
||||||
|
advisory-db = {
|
||||||
|
url = "github:rustsec/advisory-db";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs =
|
outputs =
|
||||||
@ -15,18 +25,25 @@
|
|||||||
}:
|
}:
|
||||||
flake-parts.lib.mkFlake { inherit inputs; } {
|
flake-parts.lib.mkFlake { inherit inputs; } {
|
||||||
systems = nixpkgs.lib.systems.flakeExposed;
|
systems = nixpkgs.lib.systems.flakeExposed;
|
||||||
|
imports = [
|
||||||
|
inputs.treefmt-nix.flakeModule
|
||||||
|
./nix/pkgs/flake-module.nix
|
||||||
|
./nix/checks/flake-module.nix
|
||||||
|
./nix/shells.nix
|
||||||
|
./nix/treefmt.nix
|
||||||
|
];
|
||||||
perSystem =
|
perSystem =
|
||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
self',
|
self',
|
||||||
|
system,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
packages = rec {
|
_module.args.pkgs = import inputs.nixpkgs {
|
||||||
# This package depends on git submodules so use a shell command like 'nix build .?submodules=1'.
|
inherit system;
|
||||||
cln = pkgs.callPackage nix/pkgs/default.nix { inherit self pkgs; };
|
overlays = [ (final: prev: { craneLib = (inputs.crane.mkLib pkgs); }) ];
|
||||||
default = cln;
|
|
||||||
};
|
};
|
||||||
apps = {
|
apps = {
|
||||||
lightningd = {
|
lightningd = {
|
||||||
@ -42,10 +59,6 @@
|
|||||||
program = "${self'.packages.cln}/bin/reckless";
|
program = "${self'.packages.cln}/bin/reckless";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
checks = {
|
|
||||||
cln = self'.packages.cln;
|
|
||||||
};
|
|
||||||
formatter = pkgs.nixfmt-rfc-style;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
19
nix/checks/flake-module.nix
Normal file
19
nix/checks/flake-module.nix
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{ inputs, self, ... }:
|
||||||
|
{
|
||||||
|
perSystem =
|
||||||
|
{ pkgs, config, ... }:
|
||||||
|
let
|
||||||
|
advisory-db = inputs.advisory-db;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
checks = {
|
||||||
|
cln = config.packages.cln;
|
||||||
|
rust = config.packages.rust;
|
||||||
|
cargo-audit = pkgs.craneLib.cargoAudit {
|
||||||
|
src = ../../.;
|
||||||
|
inherit advisory-db;
|
||||||
|
};
|
||||||
|
formatting = config.treefmt.build.check self;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -2,6 +2,7 @@
|
|||||||
self,
|
self,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
config,
|
||||||
}:
|
}:
|
||||||
with pkgs;
|
with pkgs;
|
||||||
let
|
let
|
||||||
@ -28,12 +29,10 @@ stdenv.mkDerivation {
|
|||||||
autoconf
|
autoconf
|
||||||
autogen
|
autogen
|
||||||
automake
|
automake
|
||||||
cargo
|
|
||||||
gettext
|
gettext
|
||||||
gitMinimal
|
gitMinimal
|
||||||
libtool
|
libtool
|
||||||
lowdown
|
lowdown
|
||||||
protobuf
|
|
||||||
py3
|
py3
|
||||||
unzip
|
unzip
|
||||||
which
|
which
|
||||||
@ -83,6 +82,7 @@ stdenv.mkDerivation {
|
|||||||
# The `clnrest` plugin requires a Python environment to run
|
# The `clnrest` plugin requires a Python environment to run
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
rm -r $out/libexec/c-lightning/plugins/clnrest
|
rm -r $out/libexec/c-lightning/plugins/clnrest
|
||||||
|
cp ${config.packages.rust}/bin/cln-grpc $out/libexec/c-lightning/plugins
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
|
13
nix/pkgs/flake-module.nix
Normal file
13
nix/pkgs/flake-module.nix
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{ self, ... }:
|
||||||
|
{
|
||||||
|
perSystem =
|
||||||
|
{ pkgs, config, ... }:
|
||||||
|
{
|
||||||
|
packages = rec {
|
||||||
|
# This package depends on git submodules so use a shell command like 'nix build .?submodules=1'.
|
||||||
|
cln = pkgs.callPackage ./default.nix { inherit self pkgs config; };
|
||||||
|
rust = pkgs.callPackage ./rust.nix { craneLib = pkgs.craneLib; };
|
||||||
|
default = cln;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
19
nix/pkgs/rust.nix
Normal file
19
nix/pkgs/rust.nix
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
craneLib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
version = builtins.readFile ../../.version;
|
||||||
|
src = lib.cleanSourceWith {
|
||||||
|
src = ../../.;
|
||||||
|
filter = path: type: (lib.hasSuffix "\.proto" path) || (craneLib.filterCargoSources path type);
|
||||||
|
};
|
||||||
|
in
|
||||||
|
craneLib.buildPackage {
|
||||||
|
pname = "rust";
|
||||||
|
inherit src version;
|
||||||
|
strictDeps = true;
|
||||||
|
nativeBuildInputs = with pkgs; [ protobuf ];
|
||||||
|
}
|
19
nix/shells.nix
Normal file
19
nix/shells.nix
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{ self, ... }:
|
||||||
|
{
|
||||||
|
perSystem =
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
system,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
devShells = {
|
||||||
|
rust = pkgs.craneLib.devShell {
|
||||||
|
checks = {
|
||||||
|
inherit (self.checks.${system}) rust;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
11
nix/treefmt.nix
Normal file
11
nix/treefmt.nix
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
perSystem =
|
||||||
|
{ pkgs, lib, ... }:
|
||||||
|
{
|
||||||
|
treefmt = {
|
||||||
|
projectRootFile = "flake.nix";
|
||||||
|
programs.nixfmt.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user