let pkgs = import { }; in rec { utils = import ./utils.nix { pkgs = pkgs; src = pkgs.nix-gitignore.gitignoreSource [ ] ./.; baseName = "website"; }; jekyllEnv = pkgs.bundlerEnv { name = "jekyll-env"; gemfile = ./Gemfile; lockfile = ./Gemfile.lock; gemset = ./gemset.nix; }; subtasks = rec { hunspellCheck = utils.baseTask.overrideAttrs (baseAttrs: { name = "${baseAttrs.name}-hunspell"; buildInputs = baseAttrs.buildInputs ++ [ (pkgs.hunspellWithDicts (with pkgs.hunspellDicts; [ en-us ])) ]; buildPhase = '' patchShebangs . ./spelling/check-spelling.sh "${subtasks.docs}" touch $out ''; }); assertContent = utils.baseTask.overrideAttrs (baseAttrs: { name = "${baseAttrs.name}-assert-content"; buildInputs = baseAttrs.buildInputs ++ [ pkgs.jq ]; buildPhase = '' patchShebangs . ./scripts/assert-content.sh "${subtasks.docs}/site.json" touch $out ''; }); docs = utils.baseTask.overrideAttrs (baseAttrs: { name = "${baseAttrs.name}-docs"; buildInputs = [ jekyllEnv pkgs.html-tidy ]; buildPhase = '' jekyll build -d $out ./scripts/tidy-content.sh $out ''; }); }; test = utils.test [ utils.formatNix (utils.shellcheck null) (utils.fixme null) subtasks.hunspellCheck subtasks.assertContent ]; shell = pkgs.mkShell rec { name = "website-shell"; buildInputs = [ jekyllEnv (pkgs.hunspellWithDicts (with pkgs.hunspellDicts; [ en-us ])) pkgs.html-tidy ]; }; publishScript = utils.overwritingPublishScript { docsDerivation = subtasks.docs; overwrite = false; }; }