16 Commits
slippi ... main

Author SHA1 Message Date
53bf019e26 gf-core: pin compiler version
Some checks failed
Build and populate cache / tests (sydpkgs, nixpkgs=https://github.com/NixOS/nixpkgs/archive/refs/heads/nixpkgs-unstable.tar.gz, sydpkgs) (push) Has been cancelled
2026-02-16 20:44:32 -07:00
e190dae46b gftest: init
Some checks failed
Build and populate cache / tests (sydpkgs, nixpkgs=https://github.com/NixOS/nixpkgs/archive/refs/heads/nixpkgs-unstable.tar.gz, sydpkgs) (push) Has been cancelled
2026-02-16 02:30:36 -07:00
d3252333eb gfWithPackages: init
Some checks failed
Build and populate cache / tests (sydpkgs, nixpkgs=https://github.com/NixOS/nixpkgs/archive/refs/heads/nixpkgs-unstable.tar.gz, sydpkgs) (push) Has been cancelled
2026-02-15 21:01:13 -07:00
2d0874fd1d gf-rgl: init 2026-02-15 20:45:55 -07:00
0dd41f4833 gf: rename to gf-core
Some checks failed
Build and populate cache / tests (sydpkgs, nixpkgs=https://github.com/NixOS/nixpkgs/archive/refs/heads/nixpkgs-unstable.tar.gz, sydpkgs) (push) Has been cancelled
2026-02-15 20:39:36 -07:00
319dd9fc0a gf: init
Some checks failed
Build and populate cache / tests (sydpkgs, nixpkgs=https://github.com/NixOS/nixpkgs/archive/refs/heads/nixpkgs-unstable.tar.gz, sydpkgs) (push) Has been cancelled
2026-02-15 20:32:23 -07:00
233479ab27 quiver: bump 2026-01-09 09:15:57 -07:00
7a3eaf6788 feat(syd-plex-latex): cjk 2025-12-28 15:55:38 -07:00
ed4942cd58 fix(syd-plex-latex): oops 2025-12-28 15:34:47 -07:00
32fe0d26fa feat: overlay 2025-12-28 15:20:50 -07:00
2c56bb6153 feat(syd-plex-latex): uhh 2025-12-28 15:20:24 -07:00
7bf331a498 feat(syd-plex-latex): init 2025-12-16 12:43:54 -07:00
b95632af08 feat(iropke-batang): init 2025-12-14 13:06:44 -07:00
5802980437 fix(quiver): Add meta 2025-09-17 22:08:02 -06:00
c540e0ab83 fix: why was this here 2025-09-17 22:00:30 -06:00
aa06f12b29 feat(quiver): init 2025-09-17 21:41:52 -06:00
14 changed files with 301 additions and 17 deletions

View File

@@ -20,21 +20,6 @@
(_: v: lib.isDerivation v)
self.legacyPackages.${system});
devShells.x86_64-linux.slippi =
let
pkgs = import inputs.nixpkgs { system = "x86_64-linux"; };
in self.packages.x86_64-linux.slippi-launcher.env.overrideAttrs
(final: prev: {
shellHook =
builtins.replaceStrings
["exec \"\${cmd[@]}\""]
[''
echo "''${cmd[-1]}"
unset cmd[-1]
cmd+=("$SHELL")
exec "''${cmd[@]}"
'']
prev.shellHook;
});
overlays.default = import ./overlay.nix;
};
}

View File

@@ -7,7 +7,6 @@ let
isReserved = n: n == "lib" || n == "overlays" || n == "modules";
nameValuePair = n: v: { name = n; value = v; };
nurAttrs = import ./default.nix { pkgs = super; };
in
builtins.listToAttrs
(map (n: nameValuePair n nurAttrs.${n})

30
pkgs/gf-core/default.nix Normal file
View File

@@ -0,0 +1,30 @@
{ haskell
, stdenv
, fetchFromGitHub
, gf-pgf
, applyPatches
, compiler ? "ghc98"
}:
let
version = "3.12";
src = applyPatches rec {
src = fetchFromGitHub {
owner = "GrammaticalFramework";
repo = "gf-core";
rev = "release-${version}";
hash = "sha256-9sB8tt2eOJT43kv2eaUYRQCzyBZOp6HvJdgGJQgiqks=";
};
patches = [
"${src}/nix/expose-all.patch"
"${src}/nix/revert-new-cabal-madness.patch"
./fix-cabal-syntax-error.patch
];
};
hpkgs = haskell.packages.${compiler};
pkg = hpkgs.callCabal2nixWithOptions "gf" src "--flag=-server" {};
in haskell.lib.overrideCabal pkg (prev: {
jailbreak = true;
configureFlags = [ "-f" "c-runtime" ];
librarySystemDepends = [ gf-pgf ];
})

View File

@@ -0,0 +1,13 @@
diff --git a/src/runtime/haskell-bind/pgf2.cabal b/src/runtime/haskell-bind/pgf2.cabal
index d7a98489e..3ca7e816c 100644
--- a/src/runtime/haskell-bind/pgf2.cabal
+++ b/src/runtime/haskell-bind/pgf2.cabal
@@ -15,7 +15,7 @@ homepage: https://www.grammaticalframework.org/
bug-reports: https://github.com/GrammaticalFramework/gf-core/issues
author: Krasimir Angelov
extra-source-files: CHANGELOG.md, README.md
-tested-with: GHC==7.10.3, GHC==8.0.2, GHC==8.10.4, GHC=9.6.6
+tested-with: GHC==7.10.3, GHC==8.0.2, GHC==8.10.4, GHC==9.6.6
library
exposed-modules:

11
pkgs/gf-pgf/default.nix Normal file
View File

@@ -0,0 +1,11 @@
{ gf-core
, stdenv
, autoreconfHook
}:
stdenv.mkDerivation {
pname = "gf-pgf";
inherit (gf-core) version meta;
src = "${gf-core.src}/src/runtime/c";
nativeBuildInputs = [autoreconfHook ];
}

25
pkgs/gf-rgl/default.nix Normal file
View File

@@ -0,0 +1,25 @@
{ stdenv
, ghc
, gf-core
, fetchFromGitHub
}:
stdenv.mkDerivation (finalAttrs: {
name = "gf-rgl";
version = "20250812";
src = fetchFromGitHub {
owner = "GrammaticalFramework";
repo = "gf-rgl";
tag = finalAttrs.version;
hash = "sha256-rqN5MV/XxChXC+Vs4aLIhRtyPQZNk0LQZ2TCdbd6wUw=";
};
buildInputs = [ ghc gf-core ];
LC_ALL = "C.UTF-8";
buildPhase = ''
runghc Setup.hs build
'';
installPhase = ''
mkdir -p $out/share/gf/lib
runghc Setup.hs copy --dest=$out/share/gf/lib
'';
})

4
pkgs/gf/default.nix Normal file
View File

@@ -0,0 +1,4 @@
# Alias for `gf-core`
{ gf-core }:
gf-core

View File

@@ -0,0 +1,22 @@
{ lib
, stdenv
, gf-core
, makeWrapper
, runCommandLocal
}:
packages:
let
opts = {
passthru = {
preferLocalBuild = true;
inherit (gf-core) version meta;
};
};
paths = lib.makeSearchPath "share/gf/lib" packages;
in runCommandLocal "gf-with-rgl" opts ''
. ${makeWrapper}/nix-support/setup-hook
makeWrapper ${gf-core}/bin/gf $out/bin/gf \
--prefix GF_LIB_PATH : ${paths}
''

26
pkgs/gftest/default.nix Normal file
View File

@@ -0,0 +1,26 @@
{ gf-core
, breakpointHook
, fetchFromGitHub
, compiler ? "ghc98"
, haskell
, pgf2-haskell
, gf-pgf
}:
let
src = fetchFromGitHub {
owner = "GrammaticalFramework";
repo = "gftest";
rev = "ef7c99143d84a29fb28bbc464f661566d44a6130";
hash = "sha256-t/LaG5+bdv7f0URcn/aFx6nUIvxSSEbpWeZS92/Gbog=";
};
hpkgs = haskell.packages.${compiler}.extend (final: prev: {
# PGF2, the Haskell bindings to the C library.
pgf2 = pgf2-haskell.override { inherit compiler; };
});
pkg = hpkgs.callCabal2nix "gftest" src {};
in pkg.overrideAttrs (final: prev: {
nativeBuildInputs = (prev.nativeBuildInputs or []) ++ [
breakpointHook
];
})

View File

@@ -0,0 +1,30 @@
{ stdenvNoCC
, fetchFromGitHub
, lib
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "iropke-batang";
version = "1.2";
src = fetchFromGitHub {
owner = "iropke";
repo = "font-iropke-batang";
rev = "v${finalAttrs.version}";
hash = "sha256-wsu7JK0hHYn9aegaMeNV9fWvQ6KoMzHwOFWymWHYvxo=";
};
installPhase = ''
runHook preInstall
find . -type f -name '*.otf' \
-exec install -Dm644 {} -t $out/share/fonts/opentype \;
runHook postInstall
'';
meta = {
description = "Korean serif font";
homepage = "http://font.iropke.com/batang/";
changelog = "https://github.com/iropke/font-iropke-batang/releases";
license = lib.licenses.ofl;
platforms = lib.platforms.all;
};
})

View File

@@ -0,0 +1,19 @@
{ haskell
, compiler ? "ghc96"
, gf-pgf
, gf-core
, breakpointHook
}:
let
src = "${gf-core.src}/src/runtime/haskell-bind";
hpkgs = haskell.packages.${compiler};
pkg = hpkgs.callCabal2nix "pgf2" src {
# gf-pgf provides both libpgf and libgu.
gu = gf-pgf;
};
in haskell.lib.overrideCabal pkg (prev: {
librarySystemDepends = (prev.librarySystemDepends or []) ++ [
gf-pgf
];
})

73
pkgs/quiver/default.nix Normal file
View File

@@ -0,0 +1,73 @@
{ stdenv
, fetchNpmDeps
, fetchFromGitHub
, fetchzip
, fetchurl
, lib
, imagemagick
, nodejs_20
}:
let
vendoredKatex = fetchzip {
url = "https://github.com/KaTeX/KaTeX/releases/download/v0.16.9/katex.zip";
hash = "sha256-Nca52SW4Q0P5/fllDFQEaOQyak7ojCs0ShlqJ1mWZOM=";
};
vendoredWorkbox = fetchurl {
url = "https://storage.googleapis.com/workbox-cdn/releases/7.0.0/workbox-window.prod.mjs";
hash = "sha256-YR3m/DqqF+yahPQAk/2k0yRmdoYtQNBEHsL6fQTDmlc=";
};
vendoredWorkboxMap = fetchurl {
url = "https://storage.googleapis.com/workbox-cdn/releases/7.0.0/workbox-window.prod.mjs.map";
hash = "sha256-tUBiVoiKi3OCT+wctUYl0FVnT7StsGBDx7EzculcF5I=";
};
rev = "1816fb788e4d315bf1dc30053a5e1646eb0af9b8";
in stdenv.mkDerivation (final: {
pname = "quiver";
version = lib.substring 0 7 rev;
inherit vendoredKatex vendoredWorkbox vendoredWorkboxMap;
src = fetchFromGitHub {
owner = "varkor";
repo = "quiver";
inherit rev;
hash = "sha256-29x2x0fLemkxhv+85wPnDrrlRW2h5qJtF/QTbGa6ghE=";
};
npmDeps = fetchNpmDeps {
src = "${final.src}/service-worker";
hash = "sha256-1CdgZFvpyJFyh5x9ljTau6vrR7FeHRYZ1MG/ZOEoou8=";
};
preBuild = ''
cp -r $vendoredKatex src/KaTeX
mkdir src/Workbox
cp $vendoredWorkbox src/Workbox/workbox-window.prod.mjs
cp $vendoredWorkboxMap src/Workbox/workbox-window.prod.mjs.map
'';
buildPhase = ''
runHook preBuild
pushd service-worker
npm install --cache $npmDeps
node build.js
popd
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/opt
cp -r src $out/opt/quiver
runHook postInstall
'';
nativeBuildInputs = [
imagemagick
];
buildInputs = [
nodejs_20
];
meta = {
description = ''
A modern commutative diagram editor for the web.
'';
homepage = "https://q.uiver.app/";
license = lib.licenses.mit;
platforms = lib.platforms.unix;
};
})

View File

@@ -0,0 +1,32 @@
{ stdenvNoCC
, texlive
}:
stdenvNoCC.mkDerivation (final: {
pname = "syd-plex-latex";
version = "1.0.0";
src = ./.;
nativeBuildInputs = [ texlive.combined.scheme-small ];
passthru = {
pkgs = [ final.finalPackage ];
tlDeps = with texlive; [
plex
plex-otf
fontaxes
unicode-math
xetex
fontspec
xltxtra
realscripts
xecjk
];
tlType = "run";
};
installPhase = ''
runHook preInstall
dir="$out/tex/latex/syd-plex"
mkdir -p "$dir"
mv syd-plex.sty "$dir"
runHook postInstall
'';
})

View File

@@ -0,0 +1,15 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{syd-plex}[2025/12/01 Configure IBM Plex fonts]
% Redefine some commands to make unicode-math work lol. See §3.1 of the
% unicode-math manual.
\renewcommand*{\mathrm}[1]{\symup{#1}}
\RequirePackage{plex-otf}
\RequirePackage{xeCJK}
\setmathfont{IBM Plex Math}
\setmainfont{IBM Plex Serif}
\setCJKmainfont{IBM Plex Sans KR}
% Use sans-serif for \operatorname
\setoperatorfont\mathsf