diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 08bee17e..30019862 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -57,7 +57,8 @@ pages: stage: deploy image: nixos/nix:2.18.2 script: - - direnv exec . mdbook build + - nix build .#website-root + - cp --recursive --dereference result public artifacts: paths: - public diff --git a/book.toml b/book.toml index 038e5202..eb6c2bdf 100644 --- a/book.toml +++ b/book.toml @@ -5,7 +5,7 @@ multilingual = false src = "book" [build] -build-dir = "public" +build-dir = "target/book" [output.html] git-repository-icon = "fa-git-square" diff --git a/flake.nix b/flake.nix index aae3883b..0d6f516e 100644 --- a/flake.nix +++ b/flake.nix @@ -65,6 +65,8 @@ (fenix.targets.${target}.fromManifestFile inputs.rust-manifest) .withComponents components) targets); + + website-root = self.callPackage ./nix/pkgs/website-root {}; }); in inputs.flake-utils.lib.eachDefaultSystem (system: @@ -81,6 +83,7 @@ { packages = { default = (mkScope pkgs).default; + website-root = (mkScope pkgs).website-root; } // builtins.listToAttrs diff --git a/nix/pkgs/website-root/default.nix b/nix/pkgs/website-root/default.nix new file mode 100644 index 00000000..bbb93a25 --- /dev/null +++ b/nix/pkgs/website-root/default.nix @@ -0,0 +1,28 @@ +# Keep sorted +{ inputs +, lib +, mdbook +, stdenv +}: + +stdenv.mkDerivation { + name = "website-root"; + + src = let filter = inputs.nix-filter.lib; in filter { + root = inputs.self; + + # Keep sorted + include = [ + "book" + "book.toml" + ]; + }; + + buildPhase = '' + ${lib.getExe mdbook} build + ''; + + installPhase = '' + mv target/book $out + ''; +}