From 3da9f135bed27e38eb1f29403b0871180a85ec75 Mon Sep 17 00:00:00 2001 From: Jeremy Wall Date: Fri, 25 Feb 2022 19:10:55 -0500 Subject: [PATCH] Seems to be building with trunk --- .gitignore | 3 ++- flake.nix | 44 ++++++++++++++++++++++++--------- kitchen.nix | 16 ------------ kitchen/Cargo.toml | 2 ++ nix/cargoVendorDeps/default.nix | 21 ++++++++++++++++ nix/kitchenWasm/default.nix | 36 +++++++++++++++++++++++++++ nix/trunk/default.nix | 20 +++++++++++++++ recipes/Cargo.toml | 2 ++ web/Cargo.toml | 2 ++ 9 files changed, 118 insertions(+), 28 deletions(-) delete mode 100644 kitchen.nix create mode 100644 nix/cargoVendorDeps/default.nix create mode 100644 nix/kitchenWasm/default.nix create mode 100644 nix/trunk/default.nix diff --git a/.gitignore b/.gitignore index 0feb28d..04aec90 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ target/ .lsp/ .clj-kondo/ web/dist/ -webdist/ \ No newline at end of file +webdist/ +nix/*/result \ No newline at end of file diff --git a/flake.nix b/flake.nix index b49bb86..525a83f 100644 --- a/flake.nix +++ b/flake.nix @@ -1,23 +1,45 @@ { description = "kitchen"; # Pin nixpkgs - inputs.nixpkgs.url = "github:NixOS/nixpkgs/adf7f03d3bfceaba64788e1e846191025283b60d"; - - inputs.gitignore = { url = "github:hercules-ci/gitignore.nix"; flake = false; }; - - inputs.flake-utils.url = "github:numtide/flake-utils"; + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/adf7f03d3bfceaba64788e1e846191025283b60d"; + gitignore = { url = "github:hercules-ci/gitignore.nix"; flake = false; }; + flake-utils.url = "github:numtide/flake-utils"; + }; outputs = {self, nixpkgs, flake-utils, gitignore}: let - kitchenGen = import ./kitchen.nix; + kitchenGen = (import ./nix/default.nix); + trunkGen = (import ./nix/trunk/default.nix); + kitchenWasmGen = (import ./nix/kitchenWasm/default.nix); + cargoVendorGen = (import ./nix/cargoVendorDeps/default.nix); + version = "0.2.1"; in flake-utils.lib.eachDefaultSystem (system: - let pkgs = import nixpkgs { inherit system; }; in + let + pkgs = import nixpkgs { inherit system; }; + trunk = trunkGen { inherit pkgs; }; + cargoVendorDeps = cargoVendorGen { + inherit pkgs version; + lockFile = ./Cargo.lock; + }; + kitchenWasm = kitchenWasmGen { + inherit pkgs cargoVendorDeps trunk version; + }; + #kitchen = (kitchenGen { + # inherit pkgs cargoDeps version kitchenWasm; + ## gitignoreSrc = nixpkgs.callPackage gitignore { }; + #}); + in { - defaultPackage = (kitchenGen { - nixpkgs = pkgs; - gitignoreSrc = pkgs.callPackage gitignore { }; - }); + packages = { + inherit trunk + cargoVendorDeps + kitchenWasm + # kitchen + ; + }; + defaultPackage = cargoVendorDeps; } ); } \ No newline at end of file diff --git a/kitchen.nix b/kitchen.nix deleted file mode 100644 index e437349..0000000 --- a/kitchen.nix +++ /dev/null @@ -1,16 +0,0 @@ -{nixpkgs, gitignoreSrc}: -with nixpkgs; - nixpkgs.stdenv.mkDerivation rec { - name = "kitchen"; - src = fetchurl { - url = "https://github.com/zaphar/kitchen/releases/download/v0.2.0-nix/kitchen-linux"; - sha256 = "1f1lxw893r6afgkhizvhm4pg20qfw3kwf9kbzmkbcw0d21qsd9z2"; - }; - - phases = ["installPhase" "patchPhase"]; - installPhase = '' - mkdir -p $out/bin - cp $src $out/bin/kitchen - chmod u+x $out/bin/kitchen - ''; - } \ No newline at end of file diff --git a/kitchen/Cargo.toml b/kitchen/Cargo.toml index f053099..758cae4 100644 --- a/kitchen/Cargo.toml +++ b/kitchen/Cargo.toml @@ -1,3 +1,5 @@ +cargo-features = ["edition2021"] + [package] name = "kitchen" version = "0.2.1" diff --git a/nix/cargoVendorDeps/default.nix b/nix/cargoVendorDeps/default.nix new file mode 100644 index 0000000..1141b62 --- /dev/null +++ b/nix/cargoVendorDeps/default.nix @@ -0,0 +1,21 @@ +{pkgs ? (import ) {}, + lockFile ? ./../../Cargo.lock, + version ? "0.2.1"}: + let + cargoDeps = (pkgs.rustPlatform.importCargoLock { inherit lockFile; }); + recipes = ./../../recipes; +in +with pkgs; +stdenv.mkDerivation { + name = "cargo-vendor-deps"; + version = "0.0.0"; + phases = [ "installPhase" ]; + installPhase = '' + mkdir -p $out + cp -r ${cargoDeps}/* $out/ + cp -r ${cargoDeps}/.cargo $out/ + cp -r ${recipes} $out/recipes-${version} + ls -al $out/ + ''; +} + \ No newline at end of file diff --git a/nix/kitchenWasm/default.nix b/nix/kitchenWasm/default.nix new file mode 100644 index 0000000..ad39681 --- /dev/null +++ b/nix/kitchenWasm/default.nix @@ -0,0 +1,36 @@ +{pkgs? (import ) {}, + version ? "0.2.1", + cargoVendorDeps ? (import ./../cargoVendorDeps/default.nix {inherit pkgs version; }), + trunk ? (import ./../trunk/default.nix {inherit pkgs;}), +}: +with pkgs; +let + pname = "kitchen-wasm"; + src = ./../../web; +in +stdenv.mkDerivation { + inherit src pname; + version = version; + buildInputs = [ trunk ]; + phases = [ "postUnpackPhase" "buildPhase" "installPhase" ]; + postUnpackPhase = '' + ln -s ${cargoVendorDeps} ./cargo-vendor-dir + cp -r ./cargo-vendor-dir/.cargo ./ + cp -r $src/* ./ + ''; + # NOTE(jwall): For some reason trunk is trying to do something with staging that + # nix doesn't like. We suppress the message for now but I'd like to + # know why trunk can't create those directories. + buildPhase = '' + trunk build --release --public-url /ui/ --dist ./dist || echo ignoring staging errors for now; + pwd + ls -al . + ''; + installPhase = '' + pwd + ls -al . + mkdir -p $out + echo cp -r ./dist $out/ + cp -r ./dist $out/ + ''; +} \ No newline at end of file diff --git a/nix/trunk/default.nix b/nix/trunk/default.nix new file mode 100644 index 0000000..0ce6cde --- /dev/null +++ b/nix/trunk/default.nix @@ -0,0 +1,20 @@ +{pkgs ? (import ) {}}: +with pkgs; +rustPlatform.buildRustPackage rec { + pname = "trunk"; + version = "v0.14.0"; + src = fetchFromGitHub { + owner = "thedodd"; + repo = pname; + rev = version; + sha256 = "sha256-69MQDIF79pSuaOgZEIqb/ESPQzL7MUiQaJaxPccGxo8="; + }; + cargoSha256 = "sha256-RPE2wMggD8nXpuUkRsvG5wxIWCHifD4RLLLPkq8HOEQ="; + + # Trunk uses the network in it's test which is lame. We'll work around + # by disabling here for now. + doCheck = false; + meta = { + description = "Trunk rust web assembly bundler"; + }; +} \ No newline at end of file diff --git a/recipes/Cargo.toml b/recipes/Cargo.toml index 30c92d9..513e864 100644 --- a/recipes/Cargo.toml +++ b/recipes/Cargo.toml @@ -1,3 +1,5 @@ +cargo-features = ["edition2021"] + [package] name = "recipes" version = "0.2.1" diff --git a/web/Cargo.toml b/web/Cargo.toml index 1be17b7..5931c00 100644 --- a/web/Cargo.toml +++ b/web/Cargo.toml @@ -1,3 +1,5 @@ +cargo-features = ["edition2021"] + [package] name = "kitchen-wasm" version = "0.2.1"