summaryrefslogtreecommitdiff
path: root/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix58
1 files changed, 58 insertions, 0 deletions
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..eb14a44
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,58 @@
+{
+ inputs = {
+ nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+ flake-parts.url = "github:hercules-ci/flake-parts";
+ systems.url = "github:nix-systems/default";
+ treefmt-nix.url = "github:numtide/treefmt-nix";
+ fenix = {
+ url = "github:nix-community/fenix";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+ };
+
+ outputs = inputs:
+ inputs.flake-parts.lib.mkFlake { inherit inputs; } {
+ systems = import inputs.systems;
+ imports = [
+ inputs.treefmt-nix.flakeModule
+ ];
+ perSystem = { config, self', pkgs, lib, system, ... }:
+ let
+ nonRustDeps = [
+ pkgs.libiconv
+ ];
+ in
+ {
+ _module.args.pkgs = import inputs.nixpkgs {
+ inherit system; overlays = [inputs.fenix.overlays.default];
+ };
+ # Rust dev environment
+ devShells.default = pkgs.mkShell {
+ inputsFrom = [config.treefmt.build.devShell];
+ buildInputs = nonRustDeps;
+ nativeBuildInputs = with pkgs; [
+ (fenix.complete.withComponents [
+ "cargo"
+ "clippy"
+ "rust-src"
+ "rustc"
+ "rustfmt"
+ ])
+ cargo-flamegraph
+ rust-analyzer-nightly
+ ];
+ };
+
+ # Add your auto-formatters here.
+ # cf. https://numtide.github.io/treefmt/
+ treefmt.config = {
+ projectRootFile = "flake.nix";
+ programs = {
+ nixpkgs-fmt.enable = true;
+ rustfmt.enable = true;
+ };
+ };
+ };
+ };
+
+}