let niv-sources = import ./nix/sources.nix; pkgs = import niv-sources.nixpkgs { }; src = pkgs.nix-gitignore.gitignoreSource [ "!.git" ] ./.; utils-i18n = pkgs.callPackage ./nix/utils-i18n.nix { }; pkgs-next = pkgs.callPackage ./nix/nixpkgs-next.nix { }; jekyllEnv = pkgs.bundlerEnv { name = "jekyll-env"; gemfile = ./Gemfile; lockfile = ./Gemfile.lock; gemset = ./nix/gemset.nix; }; mktorrent-newer = pkgs.mktorrent.overrideAttrs (oldAttrs: { src = pkgs.fetchFromGitHub { owner = "Rudde"; repo = "mktorrent"; rev = "ea1fbf29d19f34a93f7d984c1ac29d6d08f1f508"; sha256 = "1cjq96qridpvqhphj3ljnhysnqkdck415wxaqy768r0rvzqq1ja4"; }; }); projectBuildInputs = with pkgs; [ jekyllEnv pkgs-next.mdpo mktorrent-newer ffmpeg perl graphviz nixfmt git shellcheck jq niv (hunspellWithDicts (with utils-i18n.dicts; [ en pt fr eo ])) ]; in rec { site = pkgs.stdenv.mkDerivation { inherit src; name = "website-site"; phases = [ "unpackPhase" "buildPhase" ]; buildInputs = [ jekyllEnv ]; buildPhase = '' patchShebangs . jekyll build -d $out ''; }; test = pkgs.stdenv.mkDerivation { inherit src; name = "website-test"; phases = [ "unpackPhase" "buildPhase" ]; buildInputs = projectBuildInputs; buildPhase = '' patchShebangs . ./tests.sh touch $out ''; }; shell = pkgs.mkShell { name = "website-shell"; buildInputs = projectBuildInputs; shellHook = '' echo 'Starting a live server with:' echo ' jekyll serve --future --livereload --trace' echo 'Server with feature flags:' echo ' jekyll serve --future --livereload --trace -c $(cfg podcast screencast)' cfg() { T="$(mktemp --suffix .yml)" cp _config.yml "$T" for flag in "$@"; do printf '\n%s: true\n' "$flag" >> "$T" done echo "$T" } ''; }; publishScript = pkgs.writeShellScriptBin "publish.sh" '' set -eux SERVER_URL='root@euandre.org' REMOTE_PATH='/home/user-data/www/default/' OUT_DOCS='${site}' ${pkgs.rsync}/bin/rsync -avzP \ --rsh="ssh -o StrictHostKeyChecking=no" \ "$OUT_DOCS/" \ "$SERVER_URL:$REMOTE_PATH" \ --delete ''; }