From 7599e39a84324a8322436f65256f3c1eee28c81c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8C=97=E9=9B=81=20Cryolitia?= Date: Mon, 8 Apr 2024 14:20:02 +0800 Subject: [PATCH] feat: nix build --- .gitignore | 1 + flake.lock | 130 +++++++++++++++++++++++++++++++++++++++++++++ flake.nix | 97 +++++++++++++++++++++++++++++++++ theme/template.typ | 9 +--- 4 files changed, 229 insertions(+), 8 deletions(-) create mode 100644 flake.lock create mode 100644 flake.nix diff --git a/.gitignore b/.gitignore index 4d87cfa4..c1732e6d 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ book .vitepress/cache .vitepress/dist node_modules +result diff --git a/flake.lock b/flake.lock new file mode 100644 index 00000000..b3070c1e --- /dev/null +++ b/flake.lock @@ -0,0 +1,130 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "gpd-linuxcontrols": { + "inputs": { + "nixpkgs": [ + "nur-cryolitia", + "nixpkgs" + ], + "rust-overlay": [ + "nur-cryolitia", + "rust-overlay" + ] + }, + "locked": { + "lastModified": 1709100403, + "narHash": "sha256-KXPfbd1tsMYoRc2HIcLUIgqBPpmAeyepkFzo7hy/FhI=", + "owner": "Cryolitia", + "repo": "GPD-LinuxControls", + "rev": "ecc16f6980fe43d914494a43c7e5c7fcb4c467f2", + "type": "github" + }, + "original": { + "owner": "Cryolitia", + "repo": "GPD-LinuxControls", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1712512205, + "narHash": "sha256-CrKKps0h7FoagRcE2LT3h/72Z64D0Oh83UF1XZVhCLQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3c1b6f75344e207a67536d834886ee9b4577ebe7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nur-cryolitia": { + "inputs": { + "gpd-linuxcontrols": "gpd-linuxcontrols", + "nixpkgs": [ + "nixpkgs" + ], + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1712410931, + "narHash": "sha256-2ZsS4GUEiuD9PUn6iTBM0R0c0zNjaok6vGvi0fUzCAw=", + "owner": "Cryolitia", + "repo": "nur-packages", + "rev": "816a6f1054f76b710c318d44a8ad0c54e02cea00", + "type": "github" + }, + "original": { + "owner": "Cryolitia", + "repo": "nur-packages", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs", + "nur-cryolitia": "nur-cryolitia" + } + }, + "rust-overlay": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "nur-cryolitia", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1712283118, + "narHash": "sha256-aZhKaT1qiwlRjdwd2rcPfcrYqpMMnOe9TMKoihEcw50=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "7790ac860cc3b2bad7f6f4759f4138c79bcb2988", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 00000000..3bc60ab9 --- /dev/null +++ b/flake.nix @@ -0,0 +1,97 @@ +{ + description = "Transky-book's Nix flake"; + nixConfig = + { + experimental-features = [ "nix-command" "flakes" ]; + substituters = [ + # "https://mirrors.cernet.edu.cn/nix-channels/store" + # "https://mirrors.bfsu.edu.cn/nix-channels/store" + "https://cache.nixos.org/" + ]; + extra-substituters = [ + "https://cryolitia.cachix.org" + ]; + extra-trusted-public-keys = [ + "cryolitia.cachix.org-1:/RUeJIs3lEUX4X/oOco/eIcysKZEMxZNjqiMgXVItQ8=" + ]; + }; + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + + nur-cryolitia = { + url = "github:Cryolitia/nur-packages"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = { self, nixpkgs, nur-cryolitia }: + { + packages.x86_64-linux.default = + let + pkgs = import nixpkgs { + system = "x86_64-linux"; + overlays = [ + (final: prev: { + nur-cryolitia = nur-cryolitia.packages."${prev.system}"; + }) + ]; + }; + in + pkgs.callPackage ( + { lib + , stdenvNoCC + , calibre + , mdbook + , mdbook-epub + , nur-cryolitia + , source-han-serif + }: + + stdenvNoCC.mkDerivation + rec { + pname = "transky-book"; + version = "unstable"; + + src = ./.; + + nativeBuildInputs = [ + calibre + mdbook + mdbook-epub + nur-cryolitia.mdbook-typst-pdf + source-han-serif + ]; + + buildPhase = '' + runHook preBuild + + find src/ -type f -name "*.md" ! -path "src/index.md" -exec \ + sed -i "/^---$/,/^---$/d" {} \; + + mdbook build + + mkdir -p book/mobi + ebook-convert book/epub/药娘的天空.epub book/mobi/药娘的天空.mobi + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out/share/transky-book + cp -r book $out/share/transky-book/ + + runHook postInstall + ''; + + meta = with lib; { + description = "药娘的天空"; + homepage = "https://github.com/transky-book/transky"; + license = licenses.cc-by-nc-sa-40; + maintainers = with maintainers; [ Cryolitia ]; + }; + } + ) {}; + }; +} diff --git a/theme/template.typ b/theme/template.typ index d233e12b..4f7918d3 100644 --- a/theme/template.typ +++ b/theme/template.typ @@ -1,14 +1,7 @@ #set text( lang: "zh", font: ( - "Noto Sans", - "Noto Sans SC", - "Noto Sans KR", - "Noto Sans Thai", - "Noto Sans Arabic", - "Noto Sans Hebrew", - "Noto Sans Devanagari", - "Noto Emoji", + "Source Han Serif", ), )