This repository has no description
3.6 kB
128 lines
1{
2 description = "ipld-inline";
3
4 inputs = {
5 nixpkgs.url = "nixpkgs/nixos-23.05";
6 flake-utils.url = "github:numtide/flake-utils";
7 devshell.url = "github:numtide/devshell";
8
9 rust-overlay = {
10 url = "github:oxalica/rust-overlay";
11 inputs.nixpkgs.follows = "nixpkgs";
12 inputs.flake-utils.follows = "flake-utils";
13 };
14 };
15
16 outputs = {
17 self,
18 nixpkgs,
19 flake-utils,
20 devshell,
21 rust-overlay,
22 } @ inputs:
23 flake-utils.lib.eachDefaultSystem (system:
24 let
25 pkgs = import nixpkgs {
26 inherit system;
27 overlays = [
28 devshell.overlays.default
29 (import rust-overlay)
30 ];
31 };
32
33 rust-toolchain =
34 (pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml).override {
35 extensions = [
36 "cargo"
37 "clippy"
38 "llvm-tools-preview"
39 "rust-src"
40 "rust-std"
41 "rustfmt"
42 ];
43
44 targets = [
45 "wasm32-unknown-unknown"
46 "wasm32-wasi"
47 ];
48 };
49
50 nightly-rustfmt = pkgs.rust-bin.nightly.latest.rustfmt;
51
52 format-pkgs = [
53 pkgs.nixpkgs-fmt
54 pkgs.alejandra
55 ];
56
57 darwin-installs = [
58 pkgs.darwin.apple_sdk.frameworks.Security
59 pkgs.darwin.apple_sdk.frameworks.CoreFoundation
60 pkgs.darwin.apple_sdk.frameworks.Foundation
61 ];
62
63 cargo-installs = [
64 pkgs.cargo-bootimage
65 pkgs.cargo-deny
66 pkgs.cargo-expand
67 pkgs.cargo-outdated
68 pkgs.cargo-sort
69 pkgs.cargo-udeps
70 pkgs.cargo-watch
71 pkgs.llvmPackages.bintools
72 pkgs.twiggy
73 pkgs.wasm-tools
74 ];
75
76 in rec {
77 devShells.default = pkgs.devshell.mkShell {
78 name = "ipld-inline";
79 packages =
80 [
81 # For nightly rustfmt to be used instead of the rustfmt provided by `rust-toolchain`, it must appear first in the list
82 # nightly-rustfmt
83 rust-toolchain
84
85 pkgs.wasmtime
86 self.packages.${system}.irust
87 ]
88 ++ format-pkgs
89 ++ cargo-installs
90 ++ pkgs.lib.optionals pkgs.stdenv.isDarwin darwin-installs;
91
92 commands = [
93 {
94 name = "build:*";
95 help = "Build for current native target";
96 category = "task";
97 command = "${pkgs.cargo}/bin/cargo build";
98 }
99 {
100 name = "build:wasm";
101 help = "Build for wasm32-unknown-unknown";
102 category = "task";
103 command = "${pkgs.cargo}/bin/cargo build --target=wasm32-unknown-unknown";
104 }
105 {
106 name = "build:wasi";
107 help = "Build for WASI";
108 category = "task";
109 command = "${pkgs.cargo}/bin/cargo build --target wasm32-wasi";
110 }
111 ];
112 };
113
114 packages.irust = pkgs.rustPlatform.buildRustPackage rec {
115 pname = "irust";
116 version = "1.65.1";
117 src = pkgs.fetchFromGitHub {
118 owner = "sigmaSd";
119 repo = "IRust";
120 rev = "v${version}";
121 sha256 = "sha256-AMOND5q1XzNhN5smVJp+2sGl/OqbxkGPGuPBCE48Hik=";
122 };
123
124 doCheck = false;
125 cargoSha256 = "sha256-A24O3p85mCRVZfDyyjQcQosj/4COGNnqiQK2a7nCP6I=";
126 };
127 });
128}