blob: cd7e005428cc727319a8e92dce3ce6019da93268 (
about) (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
let
pkgs = import (fetchTarball
"https://github.com/NixOS/nixpkgs/archive/nixos-unstable.tar.gz") { };
dicts = rec {
mkDict = let
prefix =
"https://raw.githubusercontent.com/wooorm/dictionaries/61016e00e276f9bf5e52cbc6c02a45f2e49b2c7e/dictionaries";
in { lang, dicSHA256, affSHA256 }:
let
dic = builtins.fetchurl {
url = "${prefix}/${lang}/index.dic";
sha256 = dicSHA256;
};
aff = builtins.fetchurl {
url = "${prefix}/${lang}/index.aff";
sha256 = affSHA256;
};
in pkgs.stdenv.mkDerivation {
name = "songbooks-dict-${lang}";
builder = builtins.toFile "builder.sh" ''
source $stdenv/setup
install -dm755 $out/share/hunspell
install -m644 ${dic} $out/share/hunspell/${lang}.dic
install -m644 ${aff} $out/share/hunspell/${lang}.aff
runHook postInstall
'';
};
en = mkDict {
lang = "en";
dicSHA256 = "1k4660ccwwpwac0rc7b8ih3vd24kxgvljkrakv2l1f72yfpw3bp2";
affSHA256 = "0yvc2fhc03y0y1gwjyb20ifcrxnzm3ama1fri9r5gna092fz3qca";
};
pt = mkDict {
lang = "pt";
dicSHA256 = "1z0kfxv8m361xhp4zwdlsn2ib8q3rnljj0b2s4482alyxpd00h9x";
affSHA256 = "1ssj1g7qwh0lv3ajzvchwsfr7cgzrlqms28m1j3gm1y2avi50qhw";
};
fr = mkDict {
lang = "fr";
dicSHA256 = "10p6jlk9j117mjd1z3dp3vfszcvxqha11kfvksqhvrq4ld9xwzbn";
affSHA256 = "0d6k608h7gm1za3vdq1fhlwqzz2zxg1z0bx1bfvi0spg4a2mn09p";
};
};
myHunspell = (pkgs.hunspellWithDicts (with dicts; [ en pt fr ]));
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 ++ [ myHunspell ];
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 ];
buildPhase = ''
patchShebangs .
jekyll build -d $out
'';
});
};
test = utils.test [
utils.formatNix
(utils.shellcheck null)
(utils.fixme [
"utils.nix"
"TODOs.org"
"_pastebins/"
"_posts/"
"_tils/"
"drafts/"
"templates/"
])
subtasks.hunspellCheck
subtasks.assertContent
subtasks.docs
];
shell = pkgs.mkShell rec {
name = "website-shell";
buildInputs = [ jekyllEnv myHunspell ];
};
publishScript = utils.overwritingPublishScript {
docsDerivation = subtasks.docs;
overwrite = true;
};
fastPublishScript = utils.overwritingPublishScript {
docsDerivation = subtasks.docs;
overwrite = false;
};
}
|