Skip to content

Commit

Permalink
feat: add basic nix flake
Browse files Browse the repository at this point in the history
  • Loading branch information
ashhhleyyy committed Jul 2, 2023
1 parent 7bf3579 commit 0d883cd
Show file tree
Hide file tree
Showing 3 changed files with 314 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/target
/.idea
/result

/wrapper_cache
config.toml
Expand Down
228 changes: 228 additions & 0 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

85 changes: 85 additions & 0 deletions flake.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
crane.url = "github:ipetkov/crane";
crane.inputs.nixpkgs.follows = "nixpkgs";
rust-overlay.url = "github:oxalica/rust-overlay";
flake-utils.url = "github:numtide/flake-utils";
};

outputs = { self, nixpkgs, crane, rust-overlay, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
overlays = [ (import rust-overlay) ];
pkgs = import nixpkgs {
inherit system overlays;
};
inherit (pkgs) lib;

craneLib = crane.lib.${system};

src = craneLib.cleanCargoSource ./.;

deps = [
] ++ lib.optionals pkgs.stdenv.isDarwin [
# Additional darwin specific inputs can be set here
pkgs.libiconv
];

buildInputs = [
rust-toolchain
] ++ deps;

cargoArtifacts = craneLib.buildDepsOnly {
inherit src buildInputs;
};

# Build the actual crate itself, reusing the dependency
# artifacts from above.
server-wrapper = craneLib.buildPackage {
inherit cargoArtifacts src buildInputs;
};

rust-toolchain = pkgs.rust-bin.stable.latest.default;
rust-dev-toolchain = pkgs.rust-bin.stable.latest.default.override {
extensions = [ "rust-src" "rust-analyzer" ];
};
in
{
checks = {
# Build the crate as part of `nix flake check` for convenience
inherit server-wrapper;

# Run clippy (and deny all warnings) on the crate source,
# again, resuing the dependency artifacts from above.
#
# 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.
server-wrapper-clippy = craneLib.cargoClippy {
inherit cargoArtifacts src buildInputs;
cargoClippyExtraArgs = "--all-targets -- --deny warnings";
};

# Check formatting
website-fmt = craneLib.cargoFmt {
inherit src;
};
};

packages.default = server-wrapper;

apps.default = flake-utils.lib.mkApp {
drv = server-wrapper;
};

devShells.default = pkgs.mkShell {
inputsFrom = builtins.attrValues self.checks;

# Extra inputs can be added here
nativeBuildInputs = with pkgs; [
rust-dev-toolchain
] ++ deps;
};
});
}

0 comments on commit 0d883cd

Please sign in to comment.