about summary refs log tree commit diff
path: root/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix38
1 files changed, 21 insertions, 17 deletions
diff --git a/flake.nix b/flake.nix
index 31fe004..f820e51 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,30 +1,28 @@
 {
   inputs = {
-    flake-utils = {
-      type = "github";
-      owner = "numtide";
-      repo = "flake-utils";
-      ref = "main";
-    };
-    crane = {
-      url = "github:ipetkov/crane";
-      inputs.nixpkgs.follows = "nixpkgs";
-    };
-    nixpkgs = {
-      type = "github";
-      owner = "nixos";
-      repo = "nixpkgs";
-      ref = "nixos-unstable";
+    flake-utils.url = "github:numtide/flake-utils/main";
+    crane.url = "github:ipetkov/crane";
+    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+    rust-overlay = {
+      url = "github:oxalica/rust-overlay";
+      inputs = {
+        nixpkgs.follows = "nixpkgs";
+      };
     };
   };
-  outputs = { self, nixpkgs, flake-utils, crane }: let
+  outputs = { self, nixpkgs, flake-utils, crane, rust-overlay }: let
     supportedSystems = ["aarch64-linux" "x86_64-linux"];
     forAllSystems = f: flake-utils.lib.eachSystem supportedSystems f;
   in {
     nixosModules.default = import ./configuration.nix self;
   } // forAllSystems (system: let
-    pkgs = nixpkgs.legacyPackages.${system};
+    pkgs = import nixpkgs {
+      overlays = [ rust-overlay.overlays.default ];
+      localSystem = { inherit system; };
+    };
     crane' = crane.mkLib pkgs;
+    cargoToml = builtins.fromTOML (builtins.readFile ./Cargo.toml);
+    crane-msrv' = crane'.overrideToolchain (p: p.rust-bin.stable."${cargoToml.package.rust-version}".default);
 
     kittybox = pkgs.callPackage ./kittybox.nix {
       # TODO: this may break cross-compilation. It may be better to
@@ -54,8 +52,14 @@
       nixos-test-postgres = pkgs.nixosTest (import ./nixos-tests/postgres-smoke-test.nix self);
       webmention-test = pkgs.nixosTest (import ./nixos-tests/webmention-test.nix self);
 
+      msrv-check = (self.packages.${system}.kittybox.override { crane = crane-msrv'; });
     };
 
     devShells.default = pkgs.callPackage ./shell.nix {};
+    devShells.msrv = let
+      rust = pkgs.rust-bin.stable."${cargoToml.package.rust-version}".default;
+    in pkgs.callPackage ./shell.nix {
+      cargo = rust; rustc = rust; rust-analyzer = rust;
+    };
   });
 }