build everything with nix, and fast

This commit is contained in:
guochao 2024-05-29 20:11:04 +08:00
parent e039c8cde0
commit 5ace438d57
5 changed files with 13207 additions and 27 deletions

13178
Cargo.nix Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,20 +1,7 @@
{ rustPlatform, lib, callPackage, project-config ? callPackage ./project-config.nix { }, ... }: rustPlatform.buildRustPackage {
pname = "chat-signaling-server";
version = "1.0.0";
nativeBuildInputs = project-config.buildTools;
buildInputs = project-config.libraries;
src = ./.;
cargoLock = {
lockFile = ./Cargo.lock;
};
meta = with lib; {
description = "rust project scaffold";
homepage = "https://git.jeffthecoder.xyz/public/os-flakes";
license = licenses.unlicense;
maintainers = [ ];
{ callPackage, defaultCrateOverrides, cargoNix? callPackage ./Cargo.nix {}, projectConfig ? callPackage ./project-config.nix { }, ... }: cargoNix.workspaceMembers.chat-signaling-server.build.override {
crateOverrides = defaultCrateOverrides // {
signaling = { ... }: {
inherit (projectConfig) buildInputs nativeBuildInputs;
};
};
}

16
docker-image.nix Normal file
View File

@ -0,0 +1,16 @@
{ dockerTools, callPackage, ... }:
let
pkg = callPackage ./default.nix {};
in
dockerTools.buildImage {
name = pkg.crateName;
tag = pkg.crateVersion;
config = {
Volumes = {
"/data" = {};
};
WorkingDir = "/data";
Entrypoint = ["${pkg}/bin/server"];
};
}

View File

@ -1,19 +1,17 @@
{ pkg-config
, callPackage
{ callPackage
, sqlite
, cargo-tarpaulin
, protobuf
, rustfmt
, crate2nix
, sea-orm-cli
, extra-tools ? callPackage ./extra-tools.nix
, ...
}: {
buildTools = [ pkg-config protobuf ];
libraries = [ sqlite ];
nativeBuildInputs = [ protobuf ];
buildInputs = [ ];
developmentTools = [
# bpf-linker
cargo-tarpaulin
@ -34,6 +32,7 @@
# trunk
# wasm-bindgen-cli
rustfmt
crate2nix
# extra-tools.kopium
];

View File

@ -1,8 +1,8 @@
{ rustPackages, stdenv, rustc, rust-analyzer, project-config ? rustPackages.callPackage ./project-config.nix { }, ... }: let
package = rustPackages.callPackage ./default.nix { inherit project-config; };
{ rustPackages, stdenv, rustc, rust-analyzer, projectConfig ? rustPackages.callPackage ./project-config.nix { }, ... }: let
package = rustPackages.callPackage ./default.nix { inherit projectConfig; };
in
package.overrideAttrs (final: (prevAttrs: {
nativeBuildInputs = prevAttrs.nativeBuildInputs ++ project-config.developmentTools ++ [rust-analyzer];
nativeBuildInputs = prevAttrs.nativeBuildInputs ++ projectConfig.developmentTools ++ [rust-analyzer];
RUST_SRC_PATH = stdenv.mkDerivation {
inherit (rustc) src;