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.nix66
1 files changed, 66 insertions, 0 deletions
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..9eb296e
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,66 @@
+{
+  inputs = {
+    flake-utils.url = "github:numtide/flake-utils";
+    rust = {
+      type = "github";
+      owner = "oxalica";
+      repo = "rust-overlay";
+      ref = "master";
+      inputs.flake-utils.follows = "flake-utils";
+      inputs.nixpkgs.follows = "nixpkgs";
+    };
+  };
+  outputs = { self, nixpkgs, rust, flake-utils }: let
+    supportedSystems = ["aarch64-linux" "x86_64-linux"];
+    forAllSystems = f: flake-utils.lib.eachSystem supportedSystems f;
+  in forAllSystems (system: let
+    pkgs = import nixpkgs {
+      localSystem.system = system;
+      overlays = [ rust.overlay ];
+    };
+    rust-bin = pkgs.rust-bin.stable.latest;
+    packages = {
+      kittybox-micropub = { stdenv, lib, openssl, pkg-config, redis, rustPlatform }:
+      rustPlatform.buildRustPackage {
+        name = "kittybox-micropub";
+        version = "0.1.0";
+
+        src = ./.;
+
+        #cargoSha256 = nixpkgs.lib.fakeSha256;
+        cargoHash = "sha256-DnPwAuzXWLJdyDf0dvfXUic0oQPVCpsnCyFdLSlsSs0=";
+
+        buildInputs = [ openssl ];
+        nativeBuildInputs = [ pkg-config ];
+        checkInputs = [ redis ];
+        doCheck = stdenv.hostPlatform == stdenv.targetPlatform;
+
+        meta = with lib.meta; {
+          maintainers = with maintainers; [ vika_nezrimaya ];
+          platforms = supportedSystems;
+          mainProgram = "kittybox_micropub";
+        };
+      };
+    };
+  in {
+    packages = let
+      rustPlatform = pkgs.makeRustPlatform {
+        rustc = rust-bin.minimal;
+        cargo = rust-bin.minimal;
+      };
+    in {
+      kittybox-micropub = pkgs.callPackage packages.kittybox-micropub { inherit rustPlatform; };
+    };
+    defaultPackage = self.packages.${system}.kittybox-micropub;
+
+    devShell = pkgs.mkShell {
+      name = "rust-dev-shell";
+      buildInputs = with pkgs; [ openssl ];
+      nativeBuildInputs = with pkgs; [
+        pkg-config lld
+        rust-bin.default
+        rust-bin.rls
+      ];
+    };
+  });
+}