summaryrefslogtreecommitdiff
path: root/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'default.nix')
-rw-r--r--default.nix71
1 files changed, 11 insertions, 60 deletions
diff --git a/default.nix b/default.nix
index 414e233..5f6663d 100644
--- a/default.nix
+++ b/default.nix
@@ -1,57 +1,17 @@
-let
- pkgsUnstable = import <nixpkgs> { };
- pkgsPinned = import (pkgsUnstable.fetchzip {
- url = "https://github.com/NixOS/nixpkgs/archive/18.03.zip";
- sha256 = "0hk4y2vkgm1qadpsm4b0q1vxq889jhxzjx3ragybrlwwg54mzp4f";
- }) { };
- pkgs = pkgsUnstable;
-
- # Taken from:
- # http://www.cs.yale.edu/homes/lucas.paul/posts/2017-04-10-hakyll-on-nix.html
- websiteBuilder = pkgs.stdenv.mkDerivation {
- name = "website-builder";
- src = ./hakyll;
- phases = "unpackPhase buildPhase";
- buildInputs =
- [ (pkgsPinned.haskellPackages.ghcWithPackages (p: [ p.hakyll ])) ];
- buildPhase = ''
- mkdir -p $out/bin
- ghc -O2 -dynamic --make Main.hs -o $out/bin/build-site
- '';
- };
+let pkgs = import <nixpkgs> { };
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 {
- perlPodCheck = utils.baseTask.overrideAttrs (baseAttrs: {
- name = "${baseAttrs.name}-perl-podcheck";
- buildInputs = baseAttrs.buildInputs ++ [ pkgs.perl ];
- buildPhase = ''
- podchecker website pastebin/website-pastebin slides/website-slides
- touch $out
- '';
- });
- batsTest = utils.baseTask.overrideAttrs (baseAttrs: {
- name = "${baseAttrs.name}-bats-test";
- buildInputs = baseAttrs.buildInputs ++ [ pkgs.bats pkgs.perl ];
- buildPhase = ''
- patchShebangs .
- ./t/website.bats
- touch $out
- '';
- });
- perlInternalTest = utils.baseTask.overrideAttrs (baseAttrs: {
- name = "${baseAttrs.name}-perl-test";
- buildInputs = baseAttrs.buildInputs ++ [ pkgs.perl ];
- buildPhase = ''
- patchShebangs .
- ./website test
- touch $out
- '';
- });
hunspellCheck = utils.baseTask.overrideAttrs (baseAttrs: {
name = "${baseAttrs.name}-hunspell";
buildInputs = baseAttrs.buildInputs
@@ -64,31 +24,22 @@ in rec {
});
docs = utils.baseTask.overrideAttrs (baseAttrs: {
name = "${baseAttrs.name}-docs";
- src = ./site;
- buildInputs = [ websiteBuilder ];
+ buildInputs = [ jekyllEnv ];
buildPhase = ''
- export LOCALE_ARCHIVE="${pkgs.glibcLocales}/lib/locale/locale-archive";
- export LANG=en_US.UTF-8
- build-site build
- mkdir $out
- cp -r _site/* $out
+ jekyll build -d $out
'';
});
};
test = utils.test [
utils.formatNix
(utils.shellcheck null)
- (utils.fixme [ "pastebin/skeleton.org" "utils.nix" ])
- subtasks.perlPodCheck
- subtasks.batsTest
- subtasks.perlInternalTest
+ (utils.fixme null)
subtasks.hunspellCheck
];
shell = pkgs.mkShell rec {
name = "website-shell";
buildInputs = [
- websiteBuilder
- (pkgs.haskellPackages.ghcWithPackages (p: with p; [ hakyll ]))
+ jekyllEnv
(pkgs.hunspellWithDicts (with pkgs.hunspellDicts; [ en-us ]))
];
};