-
-
Notifications
You must be signed in to change notification settings - Fork 99
/
flake.nix
129 lines (126 loc) · 3.99 KB
/
flake.nix
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
{
description = "Simon’s Improved Layout Engine";
# To make user overrides of the nixpkgs flake not take effect
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
inputs.flake-utils.url = "github:numtide/flake-utils";
inputs.gitignore = {
url = "github:hercules-ci/gitignore.nix";
inputs.nixpkgs.follows = "nixpkgs";
};
# TODO: Should this be replaced with libtexpdf package from nixpkgs? or
# should we keep it that way, so that it'd be easy to test new versions
# of libtexpdf when developing?
inputs.libtexpdf-src = {
url = "github:sile-typesetter/libtexpdf";
flake = false;
};
# https://wiki.nixos.org/wiki/Flakes#Using_flakes_with_stable_Nix
inputs.flake-compat = {
url = "github:edolstra/flake-compat";
flake = false;
};
outputs =
{
self,
nixpkgs,
flake-utils,
flake-compat,
gitignore,
libtexpdf-src,
}:
flake-utils.lib.eachDefaultSystem (
system:
let
pkgs = import nixpkgs {
inherit system;
};
inherit (gitignore.lib) gitignoreSource;
# https://discourse.nixos.org/t/passing-git-commit-hash-and-tag-to-build-with-flakes/11355/2
version_rev = if (self ? rev) then (builtins.substring 0 7 self.rev) else "dirty";
sile = pkgs.callPackage ./build-aux/pkg.nix {
version = "${(pkgs.lib.importJSON ./package.json).version}-${version_rev}-flake";
src = pkgs.lib.cleanSourceWith {
# Ignore many files that gitignoreSource doesn't ignore, see:
# https://github.com/hercules-ci/gitignore.nix/issues/9#issuecomment-635458762
filter =
path: type:
!(builtins.any (r: (builtins.match r (builtins.baseNameOf path)) != null) [
# Nix files
"flake.nix"
"flake.lock"
"default.nix"
"shell.nix"
# git commit and editing format files
".commitlintrc.yml"
"package.json"
".husky"
".editorconfig"
# CI files
".cirrus.yml"
".github"
"action.yml"
"azure-pipelines.yml"
"Dockerfile"
# Git files
".gitattributes"
".git"
]);
src = gitignoreSource ./.;
};
inherit libtexpdf-src;
};
inherit (sile.passthru) luaEnv;
in
rec {
devShells = {
default = pkgs.mkShell {
inherit (sile)
buildInputs
nativeCheckInputs
FONTCONFIG_FILE
;
configureFlags = sile.configureFlags ++ [
"--enable-developer-mode"
"--with-manual"
];
nativeBuildInputs = sile.nativeBuildInputs ++ [
# For regression test diff highlighting
pkgs.delta
# For npx & commitlint git hook
pkgs.nodejs
# For gs, dot, and bsdtar used in building the manual
pkgs.ghostscript
pkgs.graphviz
pkgs.libarchive
];
};
};
packages = {
sile-lua5_2 = sile;
sile-lua5_3 = sile.override {
lua = pkgs.lua5_3;
};
sile-lua5_4 = sile.override {
lua = pkgs.lua5_4;
};
sile-luajit = sile.override {
lua = pkgs.luajit;
};
sile-clang = sile.override {
lua = pkgs.luajit;
# Use the same clang version as Nixpkgs' rust clang stdenv
stdenv = pkgs.rustc.llvmPackages.stdenv;
};
};
defaultPackage = packages.sile-luajit;
apps = rec {
default = sile;
sile = {
type = "app";
program = "${self.defaultPackage.${system}}/bin/sile";
};
};
defaultApp = apps.sile;
}
);
}