fix: nix updates, swap to attic, swap to nightly

This commit is contained in:
Elijah McMorris 2025-02-17 18:38:25 -08:00
parent 8df3ab1d74
commit 7671ab11f1
Signed by: NexVeridian
SSH key fingerprint: SHA256:bsA1SKZxuEcEVHAy3gY1HUeM5ykRJl0U0kQHQn0hMg8
10 changed files with 1184 additions and 661 deletions

112
flake.nix
View file

@ -3,39 +3,63 @@
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
crane.url = "github:ipetkov/crane";
fenix = {
url = "github:nix-community/fenix";
inputs.nixpkgs.follows = "nixpkgs";
inputs.rust-analyzer-src.follows = "";
};
flake-utils.url = "github:numtide/flake-utils";
advisory-db = {
url = "github:rustsec/advisory-db";
flake = false;
};
};
outputs = { self, nixpkgs, crane, fenix, flake-utils, advisory-db, ... }:
flake-utils.lib.eachDefaultSystem (system:
outputs =
{
self,
nixpkgs,
crane,
fenix,
flake-utils,
advisory-db,
...
}:
flake-utils.lib.eachDefaultSystem (
system:
let
pkgs = nixpkgs.legacyPackages.${system};
inherit (pkgs) lib;
craneLib = crane.mkLib pkgs;
craneLib = (crane.mkLib pkgs).overrideToolchain (
p:
(
let
fp = fenix.packages.${system};
fpc = fp.complete;
in
(fp.combine [
fpc.cargo
fpc.rustc
fpc.clippy
fpc.rust-src
fpc.rustc
fpc.rustfmt
fpc.rustc-codegen-cranelift-preview
fp.targets.wasm32-unknown-unknown.latest.rust-std
])
)
);
# src = craneLib.cleanCargoSource ./.;
# src = ./.;
src =
let
jsonFilter = path: _type: builtins.match ".*json$" path != null;
surqlFilter = path: _type: builtins.match ".*surql$" path != null;
customFilter = path: type:
customFilter =
path: type:
(jsonFilter path type) || (surqlFilter path type) || (craneLib.filterCargoSources path type);
in
pkgs.lib.cleanSourceWith {
@ -49,34 +73,32 @@
inherit src;
strictDeps = true;
buildInputs = [
# Add additional build inputs here
] ++ lib.optionals pkgs.stdenv.isDarwin [
# Additional darwin specific inputs can be set here
pkgs.libiconv
];
buildInputs =
[
# Add additional build inputs here
]
++ lib.optionals pkgs.stdenv.isDarwin [
# Additional darwin specific inputs can be set here
pkgs.libiconv
];
# Additional environment variables can be set directly
# MY_CUSTOM_VAR = "some value";
};
craneLibLLvmTools = craneLib.overrideToolchain
(fenix.packages.${system}.complete.withComponents [
"cargo"
"llvm-tools"
"rustc"
]);
# Build *just* the cargo dependencies, so we can reuse
# all of that work (e.g. via cachix) when running in CI
cargoArtifacts = craneLib.buildDepsOnly commonArgs;
# Build the actual crate itself, reusing the dependency
# artifacts from above.
my-crate = craneLib.buildPackage (commonArgs // {
doCheck = false;
inherit cargoArtifacts;
});
my-crate = craneLib.buildPackage (
commonArgs
// {
doCheck = false;
inherit cargoArtifacts;
}
);
# Define the Docker image build
dockerImage = pkgs.dockerTools.buildImage {
@ -99,10 +121,16 @@
# Note that this is done as a separate derivation so that
# we can block the CI if there are issues here, but not
# prevent downstream consumers from building our crate by itself.
my-crate-clippy = craneLib.cargoClippy (commonArgs // {
inherit cargoArtifacts;
cargoClippyExtraArgs = "--all-targets -- --deny warnings";
});
my-crate-clippy = craneLib.cargoClippy (
commonArgs
// {
inherit cargoArtifacts;
cargoClippyExtraArgs = ''
--all-targets -- --deny warnings -W clippy::nursery -W rust-2018-idioms \
-A clippy::future_not_send -A clippy::option_if_let_else -A clippy::or_fun_call
'';
}
);
# my-crate-doc = craneLib.cargoDoc (commonArgs // {
# inherit cargoArtifacts;
@ -126,17 +154,22 @@
# Run tests with cargo-nextest
# Consider setting `doCheck = false` on `my-crate` if you do not want
# the tests to run twice
my-crate-nextest = craneLib.cargoNextest (commonArgs // {
inherit cargoArtifacts;
partitions = 1;
partitionType = "count";
});
my-crate-nextest = craneLib.cargoNextest (
commonArgs
// {
inherit cargoArtifacts;
partitions = 1;
partitionType = "count";
}
);
};
packages = {
default = my-crate;
inherit my-crate
dockerImage;
inherit
my-crate
dockerImage
;
};
apps.default = flake-utils.lib.mkApp {
@ -155,5 +188,6 @@
# pkgs.ripgrep
];
};
});
}
);
}