Conduit is a simple, fast and reliable chat server powered by Matrix https://conduit.rs
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
2.1 KiB
56 lines
2.1 KiB
{ |
|
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; |
|
inputs.d2n.url = "github:nix-community/dream2nix"; |
|
inputs.d2n.inputs.nixpkgs.follows = "nixpkgs"; |
|
inputs.parts.url = "github:hercules-ci/flake-parts"; |
|
inputs.rust-overlay.url = "github:oxalica/rust-overlay"; |
|
inputs.rust-overlay.inputs.nixpkgs.follows = "nixpkgs"; |
|
|
|
outputs = inp: |
|
inp.parts.lib.mkFlake {inputs = inp;} { |
|
systems = ["x86_64-linux"]; |
|
imports = [inp.d2n.flakeModuleBeta]; |
|
perSystem = { |
|
config, |
|
system, |
|
pkgs, |
|
... |
|
}: let |
|
cargoToml = builtins.fromTOML (builtins.readFile ./Cargo.toml); |
|
pkgsWithToolchain = pkgs.appendOverlays [inp.rust-overlay.overlays.default]; |
|
|
|
toolchains = pkgsWithToolchain.rust-bin.stable."${cargoToml.package.rust-version}"; |
|
# toolchain to use when building conduit, includes only cargo and rustc to reduce closure size |
|
buildToolchain = toolchains.minimal; |
|
# toolchain to use in development shell |
|
# the "default" component set of toolchain adds rustfmt, clippy etc. |
|
devToolchain = toolchains.default.override { |
|
extensions = ["rust-src"]; |
|
}; |
|
|
|
# flake outputs for conduit project |
|
conduitOutputs = config.dream2nix.outputs.conduit; |
|
in { |
|
dream2nix.inputs.conduit = { |
|
source = inp.self; |
|
projects.conduit = { |
|
name = "conduit"; |
|
subsystem = "rust"; |
|
translator = "cargo-lock"; |
|
}; |
|
packageOverrides = { |
|
"^.*".set-toolchain.overrideRustToolchain = _: { |
|
cargo = buildToolchain; |
|
rustc = buildToolchain; |
|
}; |
|
}; |
|
}; |
|
devShells.conduit = conduitOutputs.devShells.conduit.overrideAttrs (old: { |
|
# export default crate sources for rust-analyzer to read |
|
RUST_SRC_PATH = "${devToolchain}/lib/rustlib/src/rust/library"; |
|
nativeBuildInputs = (old.nativeBuildInputs or []) ++ [devToolchain]; |
|
}); |
|
devShells.default = config.devShells.conduit; |
|
}; |
|
}; |
|
}
|
|
|