From 01cbd7d1b38ed48ce6ebcbdd544b51a352f498bb Mon Sep 17 00:00:00 2001 From: Fuwn Date: Tue, 24 Sep 2024 19:38:45 +0000 Subject: chore(nix): binary and docker container builder --- flake.nix | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 2 deletions(-) (limited to 'flake.nix') diff --git a/flake.nix b/flake.nix index edc46d2..594bd9b 100644 --- a/flake.nix +++ b/flake.nix @@ -2,6 +2,7 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; flake-utils.url = "github:numtide/flake-utils"; + crane.url = "github:ipetkov/crane"; rust-overlay = { url = "github:oxalica/rust-overlay"; @@ -14,15 +15,63 @@ nixpkgs, flake-utils, rust-overlay, + crane, ... }: flake-utils.lib.eachDefaultSystem ( system: let - overlays = [ (import rust-overlay) ]; - pkgs = import nixpkgs { inherit system overlays; }; + pkgs = import nixpkgs { + inherit system; + + overlays = [ (import rust-overlay) ]; + }; + + rustToolchain = pkgs.pkgsBuildHost.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml; + craneLib = (crane.mkLib pkgs).overrideToolchain rustToolchain; + + commonArgs = { + src = craneLib.cleanCargoSource ./.; + + nativeBuildInputs = with pkgs; [ + rustToolchain + pkg-config + ]; + + buildInputs = with pkgs; [ + openssl + sqlite + ]; + }; + + whirl = craneLib.buildPackage ( + commonArgs + // { + cargoArtifacts = craneLib.buildDepsOnly commonArgs; + } + ); in { + packages = { + inherit whirl; + + default = whirl; + + docker = pkgs.dockerTools.buildLayeredImage { + name = "fuwn/whirl"; + tag = "latest"; + + config = { + Entrypoint = [ "${whirl}/bin/whirl" ]; + + Cmd = [ + "run" + "distributor,hub" + ]; + }; + }; + }; + devShell = with pkgs; mkShell.override -- cgit v1.2.3