Price Hiller
82378445b0
Some checks failed
Check Formatting of Files / Check-Formatting (push) Failing after 35s
67 lines
2.2 KiB
Nix
67 lines
2.2 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
osConfig,
|
|
...
|
|
}:
|
|
let
|
|
sccacheWrapped =
|
|
if osConfig.services.memcached.enable then
|
|
pkgs.symlinkJoin {
|
|
name = "sccache";
|
|
paths = [ pkgs.sccache ];
|
|
buildInputs = [ pkgs.makeWrapper ];
|
|
postBuild = ''
|
|
wrapProgram $out/bin/sccache \
|
|
--set SCCACHE_MEMCACHED_KEY_PREFIX "SCCACHE" \
|
|
--set SCCACHE_MEMCACHED_ENDPOINT "tcp://${builtins.toString osConfig.services.memcached.listen}:${builtins.toString osConfig.services.memcached.port}"
|
|
'';
|
|
}
|
|
else
|
|
# Symlinking this ensures that sccache can properly create temporary directories.
|
|
# This is because Nix wants to cause every sccache invocation to sandbox the build, by
|
|
# symlinking sccache instead, we can avoid the sandbox to some degree.
|
|
pkgs.symlinkJoin {
|
|
name = "sccache";
|
|
paths = [ pkgs.sccache ];
|
|
};
|
|
in
|
|
{
|
|
home = {
|
|
sessionVariables = {
|
|
CARGO_HOME = "${config.xdg.dataHome}/cargo";
|
|
RUSTUP_HOME = "${config.xdg.dataHome}/rustup";
|
|
RUST_SRC_PATH = "${pkgs.fenix.complete.rust-src}/lib/rustlib/src/rust/library";
|
|
# HACK: Specify openssl info for rust, this is really not a good idea, but it saves me from
|
|
# writing per-project shell.nix or `nix-shell -p` nonsense. I'm willing to compromise for my
|
|
# laziness.
|
|
OPENSSL_DIR = "${pkgs.openssl.dev}";
|
|
OPENSSL_LIB_DIR = "${pkgs.openssl.out}/lib";
|
|
};
|
|
packages = with pkgs; [
|
|
(pkgs.fenix.complete.withComponents [
|
|
"cargo"
|
|
"clippy"
|
|
"rust-src"
|
|
"rustc"
|
|
"rustfmt"
|
|
])
|
|
rust-analyzer-nightly
|
|
cargo-watch
|
|
cargo-nextest
|
|
sccacheWrapped
|
|
];
|
|
file = {
|
|
# NOTE: This improves the rust edit-build-run cycle. See https://davidlattimore.github.io/posts/2024/02/04/speeding-up-the-rust-edit-build-run-cycle.html
|
|
"${config.home.sessionVariables.CARGO_HOME}/config.toml".text = ''
|
|
[build]
|
|
rustc-wrapper = "${sccacheWrapped}/bin/sccache"
|
|
rustflags = [ "-C", "linker=${pkgs.clang}/bin/clang", "-C", "link-arg=--ld-path=${pkgs.mold-wrapped}/bin/mold" ]
|
|
|
|
[profile.dev]
|
|
split-debuginfo = "unpacked"
|
|
'';
|
|
};
|
|
};
|
|
}
|