From b6d0f9daf4cf828566a6314af4cc018162e4a2a8 Mon Sep 17 00:00:00 2001 From: v-lafeychine <vincent.lafeychine@proton.me> Date: Thu, 29 Sep 2022 14:28:34 +0200 Subject: [PATCH] feat(nix): Build Dockerfile from flake Closes #4 Approved-by: aalbert <augustin.albert@bleu-azure.fr> Approved-by: loutr <loutr@crans.org> * Apply 1 suggestion(s) to 1 file(s) * feat(nix): Build Dockerfile from flake --- .gitignore | 2 +- .gitlab-ci.yml | 12 +++++++++++- flake.nix | 53 ++++++++++++++++++++++++++++++++++---------------- 3 files changed, 48 insertions(+), 19 deletions(-) diff --git a/.gitignore b/.gitignore index cb72b388..74eee1da 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ -/target /result +/target # Supervisé par: chatain diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 138d8618..14c1e255 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,14 @@ -image: "vlafeychine/rust" +image: vlafeychine/rust + +variables: + CARGO_HOME: "$CI_PROJECT_DIR/.cache/cargo/" + +cache: + key: + files: + - Cargo.lock + paths: + - .cache/cargo/ format: script: diff --git a/flake.nix b/flake.nix index 1ba235e0..56f9ec60 100644 --- a/flake.nix +++ b/flake.nix @@ -10,32 +10,51 @@ outputs = { self, flake-utils, rust-overlay, nixpkgs }: flake-utils.lib.eachDefaultSystem (system: let - rustPackages = pkgs.rust-bin.nightly.latest; - pkgs = import nixpkgs { - inherit system; - overlays = [ (import rust-overlay) ]; - }; + overlays = [ (import rust-overlay) ]; + pkgs = import nixpkgs { inherit overlays system; }; + rust = pkgs.rust-bin.nightly.latest; in rec { - packages.default = pkgs.rustPlatform.buildRustPackage { - pname = "proost"; - version = "0.1.0"; + packages = { + default = pkgs.rustPlatform.buildRustPackage { + pname = "proost"; + version = "0.1.0"; + + nativeBuildInputs = [ rust.minimal ]; + + src = ./.; + cargoLock.lockFile = ./Cargo.lock; + + meta = with pkgs.lib; { + description = "A simple proof assistant written in Rust"; + homepage = "https://gitlab.crans.org/loutr/proost"; + license = licenses.gpl3; + }; + }; + + docker-ci = let + rust-ci = + rust.minimal.override { extensions = [ "clippy" "rustfmt" ]; }; + in pkgs.dockerTools.buildImage { + name = "proost-ci"; - nativeBuildInputs = [ rustPackages.default ]; + copyToRoot = pkgs.buildEnv { + name = "proost-dependencies"; + paths = with pkgs; [ bash coreutils gcc openssh rust-ci ]; + }; - src = ./.; - cargoLock.lockFile = ./Cargo.lock; + runAsRoot = "mkdir /tmp"; - meta = with pkgs.lib; { - description = "A simple proof assistant written in Rust"; - homepage = "https://gitlab.crans.org/loutr/proost"; - license = licenses.gpl3; + config = { + Env = + [ "SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt" ]; + Entrypoint = [ "${pkgs.bash}/bin/sh" "-c" ]; + }; }; }; devShells.default = pkgs.mkShell { name = "proost-dev"; - packages = packages.default.nativeBuildInputs - ++ (with rustPackages; [ rustfmt clippy ]); + packages = [ rust.default rust.rust-analyzer ]; }; }); } -- GitLab