Files
datasources/flake.nix
h7x4 7fe3552bb1
All checks were successful
Update data sources / update-sources (push) Successful in 3m49s
flake.nix: add dates and hashes to all packages
2026-04-13 20:53:29 +09:00

176 lines
5.0 KiB
Nix

{
inputs = {
nixpkgs.url = "nixpkgs/nixos-unstable";
};
outputs = { self, nixpkgs }: let
inherit (nixpkgs) lib;
systems = [
"x86_64-linux"
"aarch64-linux"
"x86_64-darwin"
"aarch64-darwin"
"armv7l-linux"
];
forAllSystems = f: lib.genAttrs systems (system: f system nixpkgs.legacyPackages.${system});
in {
apps = forAllSystems (system: pkgs: let
wrapUpdateScript = name: path: {
type = "app";
meta.description = "A script to update the ${name} data";
program = let
drv = pkgs.writeShellApplication {
name = "update-${name}";
text = lib.readFile path;
runtimeInputs = lib.pipe path [
lib.readFile
(lib.splitString "\n")
(x: lib.elemAt x 1)
(lib.splitString " ")
(lib.drop 4) # "#!nix-shell -i bash -p"
(map (dep: pkgs.${dep}))
];
};
in lib.getExe drv;
};
in {
update-jmdict = wrapUpdateScript "jmdict" ./scripts/update-jmdict.sh;
update-kanjidic2 = wrapUpdateScript "kanjidic2" ./scripts/update-kanjidic2.sh;
update-radkfile = wrapUpdateScript "radkfile" ./scripts/update-radkfile.sh;
});
packages = let
edrdgMetadata = {
license = [{
shortName = "EDRDG";
fullName = "Electronic Dictionary Research and Development Group General Dictionary Licence";
url = "http://www.csse.monash.edu.au/~jwb/edrdg/licence.html";
}];
maintainers = [ lib.maintainers.h7x4 ];
platforms = lib.platforms.all;
};
in forAllSystems (system: pkgs: {
jmdict = pkgs.stdenvNoCC.mkDerivation (finalAttrs: {
pname = "jmdict";
version = lib.fileContents ./jmdict/version.txt;
src = ./jmdict/jmdict.xml;
dontUnpack = true;
dontBuild = true;
installPhase = ''
runHook preInstall
install -Dm644 "$src" "$out/JMdict.xml"
runHook postInstall
'';
passthru = {
hash = lib.hashFile "sha256" finalAttrs.src;
date = lib.fileContents ./jmdict/version.txt;
};
meta = edrdgMetadata // {
description = "A Japanese-Multilingual Dictionary providing lexical data for japanese words";
homepage = "https://www.edrdg.org/jmdict/j_jmdict.html";
};
});
kanjidic2 = pkgs.stdenvNoCC.mkDerivation (finalAttrs: {
pname = "kanjidic2";
version = lib.fileContents ./kanjidic2/version.txt;
src = ./kanjidic2/kanjidic2.xml;
dontUnpack = true;
dontBuild = true;
installPhase = ''
runHook preInstall
install -Dm644 "$src" "$out/kanjidic2.xml"
runHook postInstall
'';
passthru = {
hash = lib.hashFile "sha256" finalAttrs.src;
date = lib.pipe ./kanjidic2/version.txt [
lib.fileContents
(lib.splitString ".")
lib.head
];
};
meta = edrdgMetadata // {
description = "A consolidated XML-format kanji database";
homepage = "https://www.edrdg.org/kanjidic/kanjd2index_legacy.html";
};
});
radkfile = pkgs.stdenvNoCC.mkDerivation (finalAttrs: {
pname = "radkfile";
version = lib.fileContents ./radkfile/version.txt;
src = ./radkfile/radkfile;
dontUnpack = true;
dontBuild = true;
installPhase = ''
runHook preInstall
install -Dm644 "$src" "$out/RADKFILE"
runHook postInstall
'';
passthru = {
hash = lib.hashFile "sha256" finalAttrs.src;
date = lib.fileContents ./radkfile/version.txt;
};
meta = edrdgMetadata // {
description = "A file providing searchable decompositions of kanji characters";
homepage = "https://www.edrdg.org/krad/kradinf.html";
};
});
tanos-jlpt = pkgs.stdenvNoCC.mkDerivation (finalAttrs: {
pname = "tanos-jlpt";
version = "2011";
src = ./tanos-jlpt;
dontUnpack = true;
dontBuild = true;
installPhase = ''
runHook preInstall
for f in "$src"/*.csv; do
install -Dm644 -t "$out" "$f"
done
runHook postInstall
'';
passthru = {
hash = lib.pipe finalAttrs.src [
lib.readDir
lib.attrNames
(lib.filter (lib.hasSuffix ".csv"))
(map (filename: lib.hashFile "sha256" /${finalAttrs.src}/${filename}))
(lib.concatStringsSep "")
(lib.hashString "sha256")
];
date = "2011";
};
meta = {
description = "A CSV file containing JLPT-rated Japanese vocabulary";
homepage = "https://www.tanos.co.uk/jlpt/";
license = lib.licenses.cc-by-40;
maintainers = [ lib.maintainers.h7x4 ];
platforms = lib.platforms.all;
};
});
});
};
}