Merge branch 'master' into staging-next

This commit is contained in:
Vladimír Čunát 2023-08-05 07:40:22 +02:00
commit 3a5c176f95
No known key found for this signature in database
GPG Key ID: E747DF1F9575A3AA
75 changed files with 3733 additions and 2812 deletions

View File

@ -22,7 +22,7 @@ Since release 15.09 there is a new TeX Live packaging that lives entirely under
texlive.combine {
# inherit (texlive) whatever-you-want;
pkgFilter = pkg:
pkg.tlType == "run" || pkg.tlType == "bin" || pkg.pname == "cm-super";
pkg.tlType == "run" || pkg.tlType == "bin" || pkg.hasManpages || pkg.pname == "cm-super";
# elem tlType [ "run" "bin" "doc" "source" ]
# there are also other attributes: version, name
}

View File

@ -49,5 +49,6 @@ stdenv.mkDerivation rec {
license = licenses.gpl3Plus;
maintainers = with maintainers; [ luc65r ];
platforms = platforms.linux;
mainProgram = "gtkgreet";
};
}

File diff suppressed because it is too large Load Diff

View File

@ -126,12 +126,12 @@
};
c = buildGrammar {
language = "c";
version = "0.0.0+rev=ad09589";
version = "0.0.0+rev=39bea7d";
src = fetchFromGitHub {
owner = "tree-sitter";
repo = "tree-sitter-c";
rev = "ad095896dd223f1c22b85ac5ec84ab11fb732b07";
hash = "sha256-0SqgOjsSFQkDeJMmF9mAgvbgnm9CCuFTYCUJo4zjCEU=";
rev = "39bea7d391f57c5f0e061419e1c3066e03eb14b3";
hash = "sha256-0iE7dRvouBZuVliWCuuM81CBlPndHR+qFEX8UnOSKWg=";
};
meta.homepage = "https://github.com/tree-sitter/tree-sitter-c";
};
@ -148,12 +148,12 @@
};
cairo = buildGrammar {
language = "cairo";
version = "0.0.0+rev=02ec146";
version = "0.0.0+rev=6216c6e";
src = fetchFromGitHub {
owner = "amaanq";
repo = "tree-sitter-cairo";
rev = "02ec1461f11aa126d3c16abb2da284ca3ba15631";
hash = "sha256-xtGIywLt+sOx82id3/9Me1WTJam8b9gPJfx+2xo7lgg=";
rev = "6216c6ee5e9fc0649c4bd7b1aedd884a55bdd9ef";
hash = "sha256-D8yAkxaokkdNFLnBDWTa6Xu21ibpVw1A4sd/llh8BKs=";
};
meta.homepage = "https://github.com/amaanq/tree-sitter-cairo";
};
@ -280,12 +280,12 @@
};
cuda = buildGrammar {
language = "cuda";
version = "0.0.0+rev=2af3d43";
version = "0.0.0+rev=ccb8368";
src = fetchFromGitHub {
owner = "theHamsta";
repo = "tree-sitter-cuda";
rev = "2af3d43cd96dd3f3c3868095222c7f5e2462b3ab";
hash = "sha256-ZwinNfhFM1u4qplHOFR8xKphtSjENS+o4u9RUgEnOHg=";
rev = "ccb8368181f1684d3c9815bc1271eb25aa7ddb16";
hash = "sha256-Fwy05mSFnvV7h0TEiO024uzHI7I3k2IYu4i5fRbdDrs=";
};
meta.homepage = "https://github.com/theHamsta/tree-sitter-cuda";
};
@ -403,23 +403,23 @@
};
elixir = buildGrammar {
language = "elixir";
version = "0.0.0+rev=2616034";
version = "0.0.0+rev=a2861e8";
src = fetchFromGitHub {
owner = "elixir-lang";
repo = "tree-sitter-elixir";
rev = "2616034f78ffa83ca6a521ebd7eee1868cb5c14c";
hash = "sha256-KY/qeIKWaXUCpA7hbK3ptfCg/cXoISa6mNYB7a0XY18=";
rev = "a2861e88a730287a60c11ea9299c033c7d076e30";
hash = "sha256-hBHqQ3eBjknRPJjP+lQJU6NPFhUMtiv4FbKsTw28Bog=";
};
meta.homepage = "https://github.com/elixir-lang/tree-sitter-elixir";
};
elm = buildGrammar {
language = "elm";
version = "0.0.0+rev=73edfcd";
version = "0.0.0+rev=8fce414";
src = fetchFromGitHub {
owner = "elm-tooling";
repo = "tree-sitter-elm";
rev = "73edfcdc3bb2ddfc731cd5d63e6cb287a18da90d";
hash = "sha256-0fC3NYHtZQbi9Ca5UAAD9FEXQUJ9z8caf0XQsPpU5Rs=";
rev = "8fce414fb951d6d2374593a3adf732621ef4bccf";
hash = "sha256-TuWEqei//UZm2RHWJTooJVOM9EiAST8TtehGw6JnuN4=";
};
meta.homepage = "https://github.com/elm-tooling/tree-sitter-elm";
};
@ -513,12 +513,12 @@
};
fortran = buildGrammar {
language = "fortran";
version = "0.0.0+rev=482bdb8";
version = "0.0.0+rev=6828cf3";
src = fetchFromGitHub {
owner = "stadelmanma";
repo = "tree-sitter-fortran";
rev = "482bdb8b8fb7305b928937379820aa6449e359a7";
hash = "sha256-x2Cm1yUfhlkl8zgbQFPe/IxVNGpX050J3wjsqe7uOW8=";
rev = "6828cf3629addb1706bdbbd33491e95f12b7042c";
hash = "sha256-/DoXmcNmHvgWvYt4IkHJoDp46xgoHMp+cw1jYEcQCHI=";
};
meta.homepage = "https://github.com/stadelmanma/tree-sitter-fortran";
};
@ -645,23 +645,23 @@
};
glsl = buildGrammar {
language = "glsl";
version = "0.0.0+rev=34e0657";
version = "0.0.0+rev=e9c49d0";
src = fetchFromGitHub {
owner = "theHamsta";
repo = "tree-sitter-glsl";
rev = "34e0657e37323874c6b67c718a0f83410c4602cf";
hash = "sha256-tOIwOy0XmDpDPxLWXZQNqxgoycA03oaqbdp+PxJfn+0=";
rev = "e9c49d0752d968bc6dcd35d0c3a88397c5d51757";
hash = "sha256-O/RNeoUZEPF8dxQDy41mQvmIyQ29V6MFr7Rgi7g4kDw=";
};
meta.homepage = "https://github.com/theHamsta/tree-sitter-glsl";
};
go = buildGrammar {
language = "go";
version = "0.0.0+rev=8c8007e";
version = "0.0.0+rev=bbaa67a";
src = fetchFromGitHub {
owner = "tree-sitter";
repo = "tree-sitter-go";
rev = "8c8007eaee47702bb0291a3c7aeb004909baab4d";
hash = "sha256-K8mvDoQXSXwyyYQuwEcV6RBTZFbn4OSi7R1nGoQkDQU=";
rev = "bbaa67a180cfe0c943e50c55130918be8efb20bd";
hash = "sha256-G7d8CHCyKDAb9j6ijRfHk/HlgPqSI+uvkuRIRRvjkHI=";
};
meta.homepage = "https://github.com/tree-sitter/tree-sitter-go";
};
@ -733,12 +733,12 @@
};
hack = buildGrammar {
language = "hack";
version = "0.0.0+rev=95e63e7";
version = "0.0.0+rev=2887d39";
src = fetchFromGitHub {
owner = "slackhq";
repo = "tree-sitter-hack";
rev = "95e63e79e0d9f91000bd11d458997fabed1bb1e2";
hash = "sha256-++WvcNWPEs2Ax4KSWaA7sQ1ga2dJVoUnleLkjuQ6tFA=";
rev = "2887d3927c5fadebfd71c604922d0c59748e9901";
hash = "sha256-rScvFdoyv0odnAcoKhS+iBaBziV/uaKJa51zPnxMBFQ=";
};
meta.homepage = "https://github.com/slackhq/tree-sitter-hack";
};
@ -755,12 +755,12 @@
};
haskell = buildGrammar {
language = "haskell";
version = "0.0.0+rev=ba0bfb0";
version = "0.0.0+rev=9970682";
src = fetchFromGitHub {
owner = "tree-sitter";
repo = "tree-sitter-haskell";
rev = "ba0bfb0e5d8e9e31c160d287878c6f26add3ec08";
hash = "sha256-ZSOF0CLOn82GwU3xgvFefmh/AD2j5zz8I0t5YPwfan0=";
rev = "99706824b92f162d4e0f47c7e930bbccb367276e";
hash = "sha256-JJvXkunDFRjWoXipxl1o2P+lRIDa4kw/Ys3LUu3piIY=";
};
meta.homepage = "https://github.com/tree-sitter/tree-sitter-haskell";
};
@ -788,12 +788,12 @@
};
heex = buildGrammar {
language = "heex";
version = "0.0.0+rev=2e1348c";
version = "0.0.0+rev=9bf4ae4";
src = fetchFromGitHub {
owner = "connorlay";
repo = "tree-sitter-heex";
rev = "2e1348c3cf2c9323e87c2744796cf3f3868aa82a";
hash = "sha256-6LREyZhdTDt3YHVRPDyqCaDXqcsPlHOoMFDb2B3+3xM=";
rev = "9bf4ae444a8779839ecbca3b6b896dee426b10ae";
hash = "sha256-ghknZmki1eBSzxY9omZN6wgLpvoJEYXBpvkVxxqLiIc=";
};
meta.homepage = "https://github.com/connorlay/tree-sitter-heex";
};
@ -832,12 +832,12 @@
};
hoon = buildGrammar {
language = "hoon";
version = "0.0.0+rev=dfa565f";
version = "0.0.0+rev=900a272";
src = fetchFromGitHub {
owner = "urbit-pilled";
repo = "tree-sitter-hoon";
rev = "dfa565f87c8997d43cec725d41f023cc3577ca46";
hash = "sha256-ogNgjvRRR0KevOlB1PH+cI+HHftq/JrS6pQuIwR5m2A=";
rev = "900a272271cc2fb78f24aa7b5a1e21ed36bb1d39";
hash = "sha256-g2jBCZjsEsWG+LCAGj7b/t5mOET5/mVN39+/HDRUBCk=";
};
meta.homepage = "https://github.com/urbit-pilled/tree-sitter-hoon";
};
@ -1030,12 +1030,12 @@
};
kotlin = buildGrammar {
language = "kotlin";
version = "0.0.0+rev=2878163";
version = "0.0.0+rev=06a2f6e";
src = fetchFromGitHub {
owner = "fwcd";
repo = "tree-sitter-kotlin";
rev = "2878163ee7cad7eaebd3df1729e86610891fe0ee";
hash = "sha256-BRmKlQf78MkK5d2w6J4B5p6Nos+kSon+1M95lOJEkd0=";
rev = "06a2f6e71c7fcac34addcbf2a4667adad1b9c5a7";
hash = "sha256-HF3wp4nNwgP0LhZvxQKMnPqMPhwu8Xc9khgiQoy6DeA=";
};
meta.homepage = "https://github.com/fwcd/tree-sitter-kotlin";
};
@ -1107,12 +1107,12 @@
};
luap = buildGrammar {
language = "luap";
version = "0.0.0+rev=43916b0";
version = "0.0.0+rev=31461ae";
src = fetchFromGitHub {
owner = "amaanq";
repo = "tree-sitter-luap";
rev = "43916b0f31c48a05e03783eb0bab4eec54a4ac75";
hash = "sha256-wu2f9iCByf85/iE6j5slNruYH8GUVD19u/ygJ/yx76U=";
rev = "31461ae9bd0866cb5117cfe5de71189854fd0f3e";
hash = "sha256-SW2ubK5317GUc1dQLkhoaisMgctLOwr6TPVYSQh02vE=";
};
meta.homepage = "https://github.com/amaanq/tree-sitter-luap";
};
@ -1175,12 +1175,12 @@
};
matlab = buildGrammar {
language = "matlab";
version = "0.0.0+rev=1558d8f";
version = "0.0.0+rev=c8723b3";
src = fetchFromGitHub {
owner = "acristoffers";
repo = "tree-sitter-matlab";
rev = "1558d8fc85f7810fa567292ad2a7e64913fa78a1";
hash = "sha256-3FKUGmMM3OeRXkS+izu5yrTgiewp5nHN2352t6sYurU=";
rev = "c8723b33970deda54257e640779714fb181d4d5f";
hash = "sha256-iSpOB5hnd7iKmuhAzAYYbFgP5MiiD57yvAHHG8PS9HA=";
};
meta.homepage = "https://github.com/acristoffers/tree-sitter-matlab";
};
@ -1310,12 +1310,12 @@
};
ocamllex = buildGrammar {
language = "ocamllex";
version = "0.0.0+rev=c8f90e4";
version = "0.0.0+rev=4b9898c";
src = fetchFromGitHub {
owner = "atom-ocaml";
repo = "tree-sitter-ocamllex";
rev = "c8f90e42e1b9cf9e30b1669c386b8d9de992d201";
hash = "sha256-cFzurSuO64PwOuJz1Fa0GTDZ2hnT0dHl4NwQhXWQWIw=";
rev = "4b9898ccbf198602bb0dec9cd67cc1d2c0a4fad2";
hash = "sha256-YhmEE7I7UF83qMuldHqc/fD/no/7YuZd6CaAIaZ1now=";
};
generate = true;
meta.homepage = "https://github.com/atom-ocaml/tree-sitter-ocamllex";
@ -1377,23 +1377,23 @@
};
perl = buildGrammar {
language = "perl";
version = "0.0.0+rev=4a02376";
version = "0.0.0+rev=6141ee2";
src = fetchFromGitHub {
owner = "ganezdragon";
repo = "tree-sitter-perl";
rev = "4a023763f54dec0a6f986f5bd238af788a3f0584";
hash = "sha256-8mLzXxkc8m69KOQtIT02MCKeTCuwERT3/Kegf48IEls=";
rev = "6141ee2cb4c954d5fab9c4ed20ad2b159341533c";
hash = "sha256-eRgnMVCh2/DD8Ka1unyBt9KoLNR4fo3lJiJlZXYBOJo=";
};
meta.homepage = "https://github.com/ganezdragon/tree-sitter-perl";
};
php = buildGrammar {
language = "php";
version = "0.0.0+rev=d43130f";
version = "0.0.0+rev=d76de26";
src = fetchFromGitHub {
owner = "tree-sitter";
repo = "tree-sitter-php";
rev = "d43130fd1525301e9826f420c5393a4d169819fc";
hash = "sha256-oHUfcuqtFFl+70/uJjE74J1JVV93G9++UaEIntOH5tM=";
rev = "d76de26b8218df208949f46b31e0c422020eda3a";
hash = "sha256-s5oms776eOTkT/tD61ElHCY+pIg7LhnJ3VIyhdHoZWs=";
};
meta.homepage = "https://github.com/tree-sitter/tree-sitter-php";
};
@ -1432,12 +1432,12 @@
};
poe_filter = buildGrammar {
language = "poe_filter";
version = "0.0.0+rev=80dc101";
version = "0.0.0+rev=d7b43b5";
src = fetchFromGitHub {
owner = "ObserverOfTime";
repo = "tree-sitter-poe-filter";
rev = "80dc10195e26c72598ed1ab02cdf2d8e4c792e7b";
hash = "sha256-KDsi8eLrTnZaD9XwyF24edmBNHre3FoTiD7RE/MpvEQ=";
rev = "d7b43b51f92fb19efe8af45c2246087c611c8f63";
hash = "sha256-83gE+dY1ldK5zFcEtqY3zZgk+MMrSA8w5alqp2sa/7Y=";
};
meta.homepage = "https://github.com/ObserverOfTime/tree-sitter-poe-filter";
};
@ -1465,12 +1465,12 @@
};
promql = buildGrammar {
language = "promql";
version = "0.0.0+rev=4b6b9f3";
version = "0.0.0+rev=ed9a12f";
src = fetchFromGitHub {
owner = "MichaHoffmann";
repo = "tree-sitter-promql";
rev = "4b6b9f399dc58e408c81da8d8fd7e66ab617eef3";
hash = "sha256-CaNCxgKL/N6TUcO838iR09tFTYS/kWJLf8whQF/3hAg=";
rev = "ed9a12f6ae4e75d4622adef8fb1b1e4d0ac0a759";
hash = "sha256-pE0cPBB6zuQ2MdjT+kPOqhbTvcOBk5M+JK3leaT7ITE=";
};
meta.homepage = "https://github.com/MichaHoffmann/tree-sitter-promql";
};
@ -1487,12 +1487,12 @@
};
prql = buildGrammar {
language = "prql";
version = "0.0.0+rev=02b1e96";
version = "0.0.0+rev=09e158c";
src = fetchFromGitHub {
owner = "PRQL";
repo = "tree-sitter-prql";
rev = "02b1e967ede00aaa5d7c9fcd4a604b83825a6261";
hash = "sha256-3pdfcCfHdusphn7vQX/d1gS5kKyNTE9qf0YBvsa/BjM=";
rev = "09e158cd3650581c0af4c49c2e5b10c4834c8646";
hash = "sha256-bdT7LZ2x7BdUqLJRq4ENJTaIFnciac7l2dCxOSB09CI=";
};
meta.homepage = "https://github.com/PRQL/tree-sitter-prql";
};
@ -1520,12 +1520,12 @@
};
python = buildGrammar {
language = "python";
version = "0.0.0+rev=7c8930b";
version = "0.0.0+rev=5af00f6";
src = fetchFromGitHub {
owner = "tree-sitter";
repo = "tree-sitter-python";
rev = "7c8930b6388b5590ebef248853f144185a9eda1d";
hash = "sha256-6QXMocivEFGrmCFJdxz+z+FsAQ6MBd4kv7719gKO4Gg=";
rev = "5af00f64af6bbf822f208243cce5cf75396fb6f5";
hash = "sha256-2btd/NRE6NuGNlx4cq535OrwtWXihiP3VMCJjPCiDOk=";
};
meta.homepage = "https://github.com/tree-sitter/tree-sitter-python";
};
@ -1586,12 +1586,12 @@
};
racket = buildGrammar {
language = "racket";
version = "0.0.0+rev=92bf637";
version = "0.0.0+rev=d181a97";
src = fetchFromGitHub {
owner = "6cdh";
repo = "tree-sitter-racket";
rev = "92bf6372c63bb413c2d3c1535383d266838d1911";
hash = "sha256-r/4tT+dPhyQCQfeprISH0E30hUyxSnJHpcVN/VLM6Rw=";
rev = "d181a9738177a3b21b9f0e7bbb33b1a562f73ba6";
hash = "sha256-USdHc4c5s1ZGB1nHf0nw8IZEi1xbLWJTnj6KBzcmacY=";
};
meta.homepage = "https://github.com/6cdh/tree-sitter-racket";
};
@ -1641,12 +1641,12 @@
};
robot = buildGrammar {
language = "robot";
version = "0.0.0+rev=51b82cf";
version = "0.0.0+rev=5e50f25";
src = fetchFromGitHub {
owner = "Hubro";
repo = "tree-sitter-robot";
rev = "51b82cfd0c824681b6a282663820a5ce54243e55";
hash = "sha256-jRLP5LqA/Q3IosK0n5sLJ2SW/wXTo9ia1zpdnos/QN8=";
rev = "5e50f2517580290cd1b9689664815e3b09d986b8";
hash = "sha256-5mWRCd9JcTGTuODltbuz7htW/fYjlBTS9HzxrFRj12w=";
};
meta.homepage = "https://github.com/Hubro/tree-sitter-robot";
};
@ -1696,12 +1696,12 @@
};
scala = buildGrammar {
language = "scala";
version = "0.0.0+rev=8062487";
version = "0.0.0+rev=a2f36c2";
src = fetchFromGitHub {
owner = "tree-sitter";
repo = "tree-sitter-scala";
rev = "8062487fb3b7f3ce1bb7ce1fd1c84bed60c75203";
hash = "sha256-nCmQjLqunccXVgmNUMbMbm6SYuwCRtf1v2CFXrgKXqo=";
rev = "a2f36c2477859110d5b7b675f395e50241fbc004";
hash = "sha256-/GT4SwYit6IwWgEadPMEyXVtmXdwomWUrDMdlTHS6Qs=";
};
meta.homepage = "https://github.com/tree-sitter/tree-sitter-scala";
};
@ -1796,12 +1796,12 @@
};
sql = buildGrammar {
language = "sql";
version = "0.0.0+rev=9fc30c9";
version = "0.0.0+rev=61ab791";
src = fetchFromGitHub {
owner = "derekstride";
repo = "tree-sitter-sql";
rev = "9fc30c949f29747d34c254677d039c9df3c521b4";
hash = "sha256-EyZSbcjbPuaQGpi33YK+hpsod73yifk2hL+MCjn8R9M=";
rev = "61ab7913e110082b7f1fab5421ae3f971b3578ce";
hash = "sha256-0M0iMJ3qCh6OLAxHaZatK/DTaLwAzDGC5Anxsjjg8kY=";
};
meta.homepage = "https://github.com/derekstride/tree-sitter-sql";
};
@ -1896,15 +1896,14 @@
};
t32 = buildGrammar {
language = "t32";
version = "0.0.0+rev=4e581fc";
src = fetchFromGitea {
domain = "codeberg.org";
version = "0.0.0+rev=e4cb4a6";
src = fetchFromGitLab {
owner = "xasc";
repo = "tree-sitter-t32";
rev = "4e581fcd17d76651aa92759a68f9a8186b9fe8dc";
hash = "sha256-SUft3MpM8fSLyojgRs6uaZxWDfoxNvL5Orb7XcrztYo=";
rev = "e4cb4a6adb26650e0a2bf4ae57d829ccb8066dcc";
hash = "sha256-WNkO6EkvEmS/Yrpj5Kj34xFcScoCCbbrXiW0CORJYvw=";
};
meta.homepage = "https://codeberg.org/xasc/tree-sitter-t32";
meta.homepage = "https://gitlab.com/xasc/tree-sitter-t32";
};
tablegen = buildGrammar {
language = "tablegen";
@ -2100,12 +2099,12 @@
};
verilog = buildGrammar {
language = "verilog";
version = "0.0.0+rev=22f9b84";
version = "0.0.0+rev=9020313";
src = fetchFromGitHub {
owner = "tree-sitter";
repo = "tree-sitter-verilog";
rev = "22f9b845c77c52b86b21adaebe689864957f4e31";
hash = "sha256-X3wIZ9AFc6Cxm4E3NYxRRO8vDfVDuSsupkcLhwkf+QI=";
rev = "902031343056bc0b11f3e47b33f036a9cf59f58d";
hash = "sha256-7yPSblfcfNpJYFc06GT1EYY6WMgj/SaFI3UJqUBsL9c=";
};
meta.homepage = "https://github.com/tree-sitter/tree-sitter-verilog";
};
@ -2166,23 +2165,23 @@
};
wgsl_bevy = buildGrammar {
language = "wgsl_bevy";
version = "0.0.0+rev=9e3273e";
version = "0.0.0+rev=a041228";
src = fetchFromGitHub {
owner = "theHamsta";
repo = "tree-sitter-wgsl-bevy";
rev = "9e3273e64bdd3f74d1514674286838f9075ee9e4";
rev = "a041228ae64632f59b9bd37346a0dbcb7817f36b";
hash = "sha256-bBGunOcFPrHWLsP1ISgdFBNDIBbB0uhwxKAwmQZg7/k=";
};
meta.homepage = "https://github.com/theHamsta/tree-sitter-wgsl-bevy";
};
wing = buildGrammar {
language = "wing";
version = "0.0.0+rev=23712ef";
version = "0.0.0+rev=996e87a";
src = fetchFromGitHub {
owner = "winglang";
repo = "wing";
rev = "23712eff9768576bdd852cb9b989a9cd44af014a";
hash = "sha256-IWqclJM3CKsgXIy3e6pUrd2iLfIu8QZT2k6eZXRpITA=";
rev = "996e87a0fa23ebd41d6c50fdff61d2ec6e2e1c1e";
hash = "sha256-OKR/zt+53s3BO9Gu0VKEEsslR2Is2LaUnurXqrgNlSo=";
};
location = "libs/tree-sitter-wing";
generate = true;

View File

@ -883,6 +883,21 @@ self: super: {
dependencies = with self; [ (nvim-treesitter.withPlugins (p: [ p.org ])) ];
};
overseer-nvim = super.overseer-nvim.overrideAttrs {
doCheck = true;
checkPhase = ''
runHook preCheck
plugins=.testenv/data/nvim/site/pack/plugins/start
mkdir -p "$plugins"
ln -s ${self.plenary-nvim} "$plugins/plenary.nvim"
bash run_tests.sh
rm -r .testenv
runHook postCheck
'';
};
inherit parinfer-rust;
phpactor = buildVimPluginFrom2Nix {
@ -932,7 +947,7 @@ self: super: {
pname = "sg-nvim-rust";
inherit (old) version src;
cargoHash = "sha256-bgroNNFRoKiySTC6Rldoy8Unepxd2OXwqcy3fA+CETs=";
cargoHash = "sha256-DgNA/RqnpKmixJKKEDOzflaw8qfnTaBG/Dus1cqgHTU=";
nativeBuildInputs = [ pkg-config ];

View File

@ -114,6 +114,7 @@ https://github.com/bbchung/clighter8/,,
https://github.com/ekickx/clipboard-image.nvim/,,
https://github.com/asheq/close-buffers.vim/,HEAD,
https://github.com/winston0410/cmd-parser.nvim/,,
https://github.com/FelipeLema/cmp-async-path/,HEAD,
https://github.com/crispgm/cmp-beancount/,HEAD,
https://github.com/hrsh7th/cmp-buffer/,,
https://github.com/hrsh7th/cmp-calc/,,
@ -646,6 +647,7 @@ https://github.com/Almo7aya/openingh.nvim/,,
https://github.com/salkin-mada/openscad.nvim/,HEAD,
https://github.com/nvim-orgmode/orgmode/,,
https://github.com/rgroli/other.nvim/,HEAD,
https://github.com/stevearc/overseer.nvim/,HEAD,
https://github.com/nyoom-engineering/oxocarbon.nvim/,HEAD,
https://github.com/vuki656/package-info.nvim/,,
https://github.com/wbthomason/packer.nvim/,,

View File

@ -3,10 +3,10 @@
{
firefox = buildMozillaMach rec {
pname = "firefox";
version = "116.0";
version = "116.0.1";
src = fetchurl {
url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
sha512 = "4370c65a99bf8796524aca11ea8e99fa4f875176a5805ad49f35ae149080eb54be42e7eae84627e87e17b88b262649e48f3b30b317170ac7c208960200d1005d";
sha512 = "2f67a129ec3bcb47d66cbf29ab23c1c29bfbe752a4703cb0d95f4f3e5a48044901bb79fea94e35f8a9d4dfbfa71aa6721b2988770c1dc33b4412b993bb88da09";
};
meta = {

View File

@ -1,10 +1,10 @@
{
"aci": {
"hash": "sha256-iHWb9dytaXs7ywkxi5aPetBV1YSgYC1rTMn9+EXl42U=",
"hash": "sha256-rJ4xiBLrwhYkVPFDo6vZkk+w3v07EuK5a2gn1cbEA6Q=",
"homepage": "https://registry.terraform.io/providers/CiscoDevNet/aci",
"owner": "CiscoDevNet",
"repo": "terraform-provider-aci",
"rev": "v2.10.0",
"rev": "v2.10.1",
"spdx": "MPL-2.0",
"vendorHash": null
},
@ -146,11 +146,11 @@
"vendorHash": null
},
"baiducloud": {
"hash": "sha256-4Lo4Y6KJiHl1M7GdEITS7Q/IBYJpPo9lZ1jbJ0w3sMw=",
"hash": "sha256-n+Rk2J7ZqQ93GQSvdLfnjKW2R3v7+iWj+P6EZQ5QxhA=",
"homepage": "https://registry.terraform.io/providers/baidubce/baiducloud",
"owner": "baidubce",
"repo": "terraform-provider-baiducloud",
"rev": "v1.19.9",
"rev": "v1.19.10",
"spdx": "MPL-2.0",
"vendorHash": null
},
@ -182,11 +182,11 @@
"vendorHash": "sha256-/dOiXO2aPkuZaFiwv/6AXJdIADgx8T7eOwvJfBBoqg8="
},
"buildkite": {
"hash": "sha256-3rGuE47CYbl1B+DAYUBiuGTC1sn85c5aeay+irdhTe0=",
"hash": "sha256-GRFthxNKWcdOdFL6gnI7Y3ehSzqt8ijzBe4eyRy0KcM=",
"homepage": "https://registry.terraform.io/providers/buildkite/buildkite",
"owner": "buildkite",
"repo": "terraform-provider-buildkite",
"rev": "v0.22.0",
"rev": "v0.23.0",
"spdx": "MIT",
"vendorHash": "sha256-oVXrSI+DU6NgmVIPcS4He4mHVrkA2tMxFUpxMnv0bu4="
},
@ -390,11 +390,11 @@
"vendorHash": "sha256-E1gzdES/YVxQq2J47E2zosvud2C/ViBeQ8+RfNHMBAg="
},
"fastly": {
"hash": "sha256-Fp2wj5UTl00ufDKobsIvf4f6SCug7NTuWFf2Rkp3RL0=",
"hash": "sha256-90mVwC90lkvNRvyt5aKBE3h0XZTVXvWVVG6qIP+4pOk=",
"homepage": "https://registry.terraform.io/providers/fastly/fastly",
"owner": "fastly",
"repo": "terraform-provider-fastly",
"rev": "v5.2.2",
"rev": "v5.3.0",
"spdx": "MPL-2.0",
"vendorHash": null
},
@ -745,22 +745,22 @@
"vendorHash": "sha256-QxbZv6YMa5/I4bTeQBNdmG3EKtLEmstnH7HMiZzFJrI="
},
"minio": {
"hash": "sha256-BsOSImEMgxjldAQ014M25Y/JuxxaJLRdOOOHNAtm/Bg=",
"hash": "sha256-skwM0rqhsqQaut0Vuh5Baf8bWzsLOFCjUDk9w2mgB1E=",
"homepage": "https://registry.terraform.io/providers/aminueza/minio",
"owner": "aminueza",
"repo": "terraform-provider-minio",
"rev": "v1.17.1",
"rev": "v1.17.2",
"spdx": "Apache-2.0",
"vendorHash": "sha256-Pr5YNDMVNccjQRC5WXUY+0pMTMbuxKqkqtd/Z/z0cXc="
"vendorHash": "sha256-4axdVO1VujG9qXtuNJHQqhANjciHIACMjuneqCj2omc="
},
"mongodbatlas": {
"hash": "sha256-lNWGGDGr0dp+4S1mnRnLl0n//5GtOqqSH4mWQxvzXEQ=",
"hash": "sha256-xFVCYeEcdQ/w+s99Ykd10liASIDJaA/eTfnMGT2hybU=",
"homepage": "https://registry.terraform.io/providers/mongodb/mongodbatlas",
"owner": "mongodb",
"repo": "terraform-provider-mongodbatlas",
"rev": "v1.10.2",
"rev": "v1.11.0",
"spdx": "MPL-2.0",
"vendorHash": "sha256-o8VrabFScEQyjfk4BLJGxq7LgZMWaQZ2cNAph37Grzo="
"vendorHash": "sha256-Ae3y/lwIYFi6p5gCBVgo1GuCu218JB3zKljexETWu0s="
},
"namecheap": {
"hash": "sha256-cms8YUL+SjTeYyIOQibksi8ZHEBYq2JlgTEpOO1uMZE=",
@ -1106,20 +1106,20 @@
"vendorHash": "sha256-6UxBnQiogcizff5Rv4eadOeiG5JaXQphUWlfnqELvAI="
},
"talos": {
"hash": "sha256-bYDFtng6kASmBtQN+iewVOh6HPD57GDUuusiQSVfuBs=",
"hash": "sha256-OGpbql9jtiaaHazyBavh1NK5cBA+2tfxZvOJV+yy2wE=",
"homepage": "https://registry.terraform.io/providers/siderolabs/talos",
"owner": "siderolabs",
"repo": "terraform-provider-talos",
"rev": "v0.2.0",
"rev": "v0.2.1",
"spdx": "MPL-2.0",
"vendorHash": "sha256-GNSKSlaFBj2P+z40U+0uwPSOuQBy+9vOVFfPe8p0A24="
"vendorHash": "sha256-32ENfzBep97Wn0FvMIEuqxIAmxjTtw2UvDvYJTmJJNc="
},
"tencentcloud": {
"hash": "sha256-Pk+x9/acer3YWBEMZYZWar8oDTFLPc0QydgAHrJZBNI=",
"hash": "sha256-RipntxK8i/uyTolf6Z8DJDkNYMsEYcdDpDQfNnGORxQ=",
"homepage": "https://registry.terraform.io/providers/tencentcloudstack/tencentcloud",
"owner": "tencentcloudstack",
"repo": "terraform-provider-tencentcloud",
"rev": "v1.81.18",
"rev": "v1.81.19",
"spdx": "MPL-2.0",
"vendorHash": null
},
@ -1261,11 +1261,11 @@
"vendorHash": null
},
"wavefront": {
"hash": "sha256-DF9Q1cwzzLlF8+oJFF5HkOD0lfQhxsnIepl/fMCljcs=",
"hash": "sha256-ag4mu9CyG78X47QGMTQTK7+VsdCv0TBOCovVnM4OMsw=",
"homepage": "https://registry.terraform.io/providers/vmware/wavefront",
"owner": "vmware",
"repo": "terraform-provider-wavefront",
"rev": "v4.2.0",
"rev": "v5.0.0",
"spdx": "MPL-2.0",
"vendorHash": "sha256-77pijBYzCQoaZgMRNRwZEAJVM51EMGezXXcrfn9ae1Q="
},

View File

@ -72,7 +72,7 @@ in stdenv.mkDerivation rec {
meta = with lib; {
homepage = "https://www.gromacs.org";
license = licenses.gpl2;
license = licenses.lgpl21Plus;
description = "Molecular dynamics software package";
longDescription = ''
GROMACS is a versatile package to perform molecular dynamics,
@ -91,7 +91,7 @@ in stdenv.mkDerivation rec {
reference or manual for details), but there are also quite a
few features that make it stand out from the competition.
See: https://www.gromacs.org/About_Gromacs for details.
See: https://www.gromacs.org/about.html for details.
'';
platforms = platforms.unix;
maintainers = with maintainers; [ sheepforce markuskowa ];

View File

@ -219,5 +219,6 @@ stdenv.mkDerivation rec {
# TERMINFO to a store path, but allows installing foot.terminfo
# on remote systems for proper foot terminfo support.
priority = (ncurses.meta.priority or 5) + 3 + 1;
mainProgram = "foot";
};
}

View File

@ -73,5 +73,6 @@ stdenv.mkDerivation rec {
license = licenses.gpl3Only;
platforms = platforms.linux;
maintainers = with maintainers; [ austinbutler ];
mainProgram = "kooha";
};
}

View File

@ -60,5 +60,6 @@ stdenv.mkDerivation (finalAttrs: {
maintainers = with maintainers; [ wozeparrot fufexan ];
inherit (wayland.meta) platforms;
broken = stdenv.isDarwin;
mainProgram = "hyprpaper";
};
})

View File

@ -96,5 +96,6 @@ stdenv.mkDerivation (finalAttrs: {
license = licenses.mit;
platforms = platforms.linux;
maintainers = with maintainers; [ primeos synthetica ];
mainProgram = "sway";
};
})

View File

@ -17,13 +17,13 @@ let
in
stdenv.mkDerivation rec {
pname = "ctranslate2";
version = "3.17.1";
version = "3.18.0";
src = fetchFromGitHub {
owner = "OpenNMT";
repo = "CTranslate2";
rev = "v${version}";
hash = "sha256-aSYE8+vhCsgZf1gBqJFRK8cn91AxrRutJc3LzHQQHVc=";
hash = "sha256-ipCUiCyWubKTUB0jDOsRN+DSg3S84hbj8Xum/2NsrKc=";
fetchSubmodules = true;
};

View File

@ -43,12 +43,18 @@ mapAliases {
"@githubnext/github-copilot-cli" = pkgs.github-copilot-cli; # Added 2023-05-02
"@google/clasp" = pkgs.google-clasp; # Added 2023-05-07
"@nestjs/cli" = pkgs.nest-cli; # Added 2023-05-06
antennas = pkgs.antennas; # added 2023-07-30
balanceofsatoshis = pkgs.balanceofsatoshis; # added 2023-07-31
bibtex-tidy = pkgs.bibtex-tidy; # added 2023-07-30
bitwarden-cli = pkgs.bitwarden-cli; # added 2023-07-25
castnow = pkgs.castnow; # added 2023-07-30
eslint_d = pkgs.eslint_d; # Added 2023-05-26
flood = pkgs.flood; # Added 2023-07-25
gtop = pkgs.gtop; # added 2023-07-31
hueadm = pkgs.hueadm; # added 2023-07-31
karma = pkgs.karma-runner; # added 2023-07-29
manta = pkgs.node-manta; # Added 2023-05-06
markdownlint-cli = pkgs.markdownlint-cli; # added 2023-07-29
readability-cli = pkgs.readability-cli; # Added 2023-06-12
reveal-md = pkgs.reveal-md; # added 2023-07-31
thelounge = pkgs.thelounge; # Added 2023-05-22

View File

@ -30,7 +30,6 @@
"@webassemblyjs/wasm-text-gen-1.11.1" = "wasmgen";
"@webassemblyjs/wast-refmt-1.11.1" = "wast-refmt";
aws-cdk = "cdk";
balanceofsatoshis = "bos";
carbon-now-cli = "carbon-now";
cdk8s-cli = "cdk8s";
cdktf-cli = "cdktf";
@ -57,13 +56,13 @@
less = "lessc";
localtunnel = "lt";
lua-fmt = "luafmt";
markdownlint-cli = "markdownlint";
near-cli = "near";
neovim = "neovim-node-host";
parcel-bundler = "parcel";
parsoid = "parse.js";
poor-mans-t-sql-formatter-cli = "sqlformat";
postcss-cli = "postcss";
prettier = "prettier";
purescript-psa = "psa";
react-native-cli = "react-native";
react-tools = "jsx";
@ -71,6 +70,7 @@
s3http = "s3http.js";
svelte-language-server = "svelteserver";
teck-programmer = "teck-firmware-upgrade";
typescript-language-server = "typescript-language-server";
uglify-js = "uglifyjs";
undollar = "$";
vsc-leetcode-cli = "leetcode";

View File

@ -29,7 +29,6 @@
, {"@webassemblyjs/wast-refmt": "1.11.1"}
, "alex"
, "alloy"
, "antennas"
, "asar"
, "audiosprite"
, "autoprefixer"
@ -37,14 +36,12 @@
, "aws-azure-login"
, "aws-cdk"
, "awesome-lint"
, "balanceofsatoshis"
, "bash-language-server"
, "bower"
, "bower2nix"
, "browserify"
, "browser-sync"
, "btc-rpc-explorer"
, "castnow"
, "carbon-now-cli"
, "carto"
, "cdk8s-cli"
@ -171,7 +168,6 @@
, "hsd"
, "hs-airdrop"
, "hs-client"
, "hueadm"
, "hyperpotamus"
, "ijavascript"
, "inliner"
@ -196,7 +192,6 @@
, "jsonplaceholder"
, "kaput-cli"
, "katex"
, "karma"
, "keyoxide"
, "lcov-result-merger"
, "leetcode-cli"
@ -211,7 +206,6 @@
, "lua-fmt"
, "lv_font_conv"
, "madoko"
, "markdownlint-cli"
, "markdownlint-cli2"
, "markdown-link-check"
, {"markdown-preview-nvim": "../../applications/editors/vim/plugins/markdown-preview-nvim"}

File diff suppressed because it is too large Load Diff

View File

@ -83,16 +83,6 @@ final: prev: {
meta = oldAttrs.meta // { platforms = lib.platforms.linux; };
});
balanceofsatoshis = prev.balanceofsatoshis.override {
nativeBuildInputs = [ pkgs.installShellFiles ];
postInstall = ''
installShellCompletion --cmd bos\
--bash <($out/bin/bos completion bash)\
--zsh <($out/bin/bos completion zsh)\
--fish <($out/bin/bos completion fish)
'';
};
bower2nix = prev.bower2nix.override {
nativeBuildInputs = [ pkgs.buildPackages.makeWrapper ];
postInstall = ''
@ -122,15 +112,6 @@ final: prev: {
meta = oldAttrs.meta // { broken = since "12"; };
});
castnow = prev.castnow.override {
nativeBuildInputs = [ pkgs.makeWrapper ];
postInstall = ''
wrapProgram "$out/bin/castnow" \
--prefix PATH : ${pkgs.lib.makeBinPath [ pkgs.ffmpeg ]}
'';
};
eask = prev."@emacs-eask/cli".override {
name = "eask";
};

View File

@ -43,6 +43,25 @@ def remove(attr):
else:
sys.stdout.write(line)
with fileinput.input(os.path.join(os.path.dirname(__file__), 'main-programs.nix'), inplace=1) as main_programs:
safe_attr = re.escape(attr)
for line in main_programs:
if not re.fullmatch(rf' "?{safe_attr}"? = ".*";\n', line):
sys.stdout.write(line)
with fileinput.input(os.path.join(os.path.dirname(__file__), 'overrides.nix'), inplace=1) as overrides:
safe_attr = re.escape(attr)
in_attr = False
for line in overrides:
if in_attr:
if re.fullmatch(r' \}\)?;\n', line):
in_attr = False
else:
if re.fullmatch(rf' (?:{safe_attr}|"{safe_attr}") = .* \{{\n', line):
in_attr = True
else:
sys.stdout.write(line)
if __name__ == '__main__':
import argparse

View File

@ -9,7 +9,7 @@
buildPythonPackage rec {
pname = "adb-enhanced";
version = "2.5.21";
version = "2.5.22";
format = "setuptools";
disabled = pythonOlder "3.7";
@ -18,7 +18,7 @@ buildPythonPackage rec {
owner = "ashishb";
repo = pname;
rev = "refs/tags/${version}";
hash = "sha256-kisP2RXpQa5uc53M3wcqN+1xgE/MGa2dVYzHnr1dgX8=";
hash = "sha256-n1CME/swV+NsZdUfWwVY1qQeYzawwy+sm0mkRPQKm6A=";
};
propagatedBuildInputs = [

View File

@ -108,6 +108,7 @@ buildPythonPackage rec {
homepage = "https://github.com/psf/black";
changelog = "https://github.com/psf/black/blob/${version}/CHANGES.md";
license = licenses.mit;
mainProgram = "black";
maintainers = with maintainers; [ sveitser autophagy ];
};
}

View File

@ -15,7 +15,7 @@
buildPythonPackage rec {
pname = "dvc-data";
version = "2.9.1";
version = "2.11.0";
format = "pyproject";
disabled = pythonOlder "3.8";
@ -24,7 +24,7 @@ buildPythonPackage rec {
owner = "iterative";
repo = pname;
rev = "refs/tags/${version}";
hash = "sha256-NJAemtzqpqgWRmsXfcw9gj7T10jARemUMehIxTI7+fQ=";
hash = "sha256-Nqxaw5gGlKZCwTquNY/6z4b8l762mnrhHyvrteVzdHE=";
};
SETUPTOOLS_SCM_PRETEND_VERSION = version;

View File

@ -14,7 +14,7 @@
buildPythonPackage rec {
pname = "dvclive";
version = "2.13.0";
version = "2.13.1";
format = "pyproject";
disabled = pythonOlder "3.8";
@ -23,7 +23,7 @@ buildPythonPackage rec {
owner = "iterative";
repo = pname;
rev = "refs/tags/${version}";
hash = "sha256-5tvwIa2kx5MlMZV6J+NqN9v/TjOeZC6wftO102/QbCk=";
hash = "sha256-g2pRr8a+Rp2zIoB+Mmrb99nfbhrEQKTmJ6lfOOqiCrs=";
};
SETUPTOOLS_SCM_PRETEND_VERSION = version;

View File

@ -7,7 +7,7 @@
buildPythonPackage rec {
pname = "emoji";
version = "2.6.0";
version = "2.7.0";
format = "setuptools";
disabled = pythonOlder "3.7";
@ -16,7 +16,7 @@ buildPythonPackage rec {
owner = "carpedm20";
repo = pname;
rev = "refs/tags/v${version}";
hash = "sha256-giR0feAzPnginmzV8lqs1mpDtdBl7dExg21MhaGeCSQ=";
hash = "sha256-HxEQqWG0a96PQ0bNQsIyTSEK0G21WojgoAyaWLMmjyE=";
};
nativeCheckInputs = [

View File

@ -14,14 +14,14 @@
buildPythonPackage rec {
pname = "google-cloud-bigquery-datatransfer";
version = "3.11.2";
version = "3.12.0";
format = "setuptools";
disabled = pythonOlder "3.7";
src = fetchPypi {
inherit pname version;
hash = "sha256-aY5bjnb62/eQ1NmPVPhBXChg1pj0PD1dzrn4PtlKAoU=";
hash = "sha256-5jxcN69FPuAZ7xiBcBu5+aE+q4OU9OlM+i9bd6vMnJI=";
};
propagatedBuildInputs = [

View File

@ -16,14 +16,14 @@
buildPythonPackage rec {
pname = "google-cloud-pubsub";
version = "2.18.0";
version = "2.18.1";
format = "setuptools";
disabled = pythonOlder "3.7";
src = fetchPypi {
inherit pname version;
hash = "sha256-enDfQRHZy2lKJc7N0jKIJxWcUhOuHmMEyzq7OPN53Sk=";
hash = "sha256-SivzwE+CeFBPk0sr26/pJ/plDXxTl8djOgsw4QpRJ/M=";
};
propagatedBuildInputs = [

View File

@ -13,14 +13,14 @@
buildPythonPackage rec {
pname = "google-cloud-resource-manager";
version = "1.10.2";
version = "1.10.3";
format = "setuptools";
disabled = pythonOlder "3.6";
src = fetchPypi {
inherit pname version;
hash = "sha256-mnvdA0etVTN2zGatMXxSI9GuBL3PdO3L/NEmBc/3tRA=";
hash = "sha256-+A786jbxDFqBiJr+k5EJJuOXi0sc7rgvVjovyGMHLRQ=";
};
propagatedBuildInputs = [

View File

@ -12,14 +12,14 @@
buildPythonPackage rec {
pname = "google-cloud-secret-manager";
version = "2.16.2";
version = "2.16.3";
format = "setuptools";
disabled = pythonOlder "3.7";
src = fetchPypi {
inherit pname version;
hash = "sha256-WWUhCRw5uUomDYFHdkIcigCfZGOzkogAQe+oAoO1/Sk=";
hash = "sha256-bKtcvxkno0xYbkr5BDfuo9RP9LQbmoLshvz/CaWsJuo=";
};
propagatedBuildInputs = [

View File

@ -17,14 +17,14 @@
buildPythonPackage rec {
pname = "google-cloud-spanner";
version = "3.38.0";
version = "3.40.0";
format = "setuptools";
disabled = pythonOlder "3.7";
src = fetchPypi {
inherit pname version;
hash = "sha256-+JprkY2HU6RjkarQ74IemkD8lC3CW53x0kDwhrX/jRk=";
hash = "sha256-+dBve2hfb9paeIPlqY//VdXvnBq3tze4NiShNfrXgM0=";
};
propagatedBuildInputs = [

View File

@ -13,14 +13,14 @@
buildPythonPackage rec {
pname = "google-cloud-tasks";
version = "2.13.2";
version = "2.14.1";
format = "setuptools";
disabled = pythonOlder "3.7";
src = fetchPypi {
inherit pname version;
hash = "sha256-VXYUs5PQ+bH97d/vOAxag4CAn8ROMvPZewF05e/k7PM=";
hash = "sha256-yhqD33ORp4WS3Mp1FYOyLJB00KctyN69tKRof/mViik=";
};
propagatedBuildInputs = [

View File

@ -16,7 +16,7 @@
buildPythonPackage rec {
pname = "influxdb-client";
version = "1.36.1";
version = "1.37.0";
format = "setuptools";
disabled = pythonOlder "3.7";
@ -25,7 +25,7 @@ buildPythonPackage rec {
owner = "influxdata";
repo = "influxdb-client-python";
rev = "refs/tags/v${version}";
hash = "sha256-O10q/ResES3mE26LZQLgGPSLjhUCEOwZpm6vZj6H5mQ=";
hash = "sha256-paS+/miraJ9vRL1ZEAWJRSVd1hGvrYJe+0YD/F4sGDs=";
};
propagatedBuildInputs = [

View File

@ -18,7 +18,7 @@
buildPythonPackage rec {
pname = "json-schema-for-humans";
version = "0.44.6";
version = "0.45.1";
format = "pyproject";
disabled = pythonOlder "3.7";
@ -27,7 +27,7 @@ buildPythonPackage rec {
owner = "coveooss";
repo = pname;
rev = "refs/tags/v${version}";
hash = "sha256-Sxk6n+ufTR0ZoGzLQWbriHYyXTCBz39Ls3UkfGr4kOw=";
hash = "sha256-9dX9+YwJdJpgU3cZkxk7+CgdRFgcVhrvU0amO8zHZhs=";
};
postPatch = ''

View File

@ -1,30 +0,0 @@
{ lib
, buildPythonPackage
, fetchPypi
, jinja2
, mistune
, pygments
, setuptools
}:
buildPythonPackage rec {
pname = "mrkd";
version = "0.2.0";
src = fetchPypi {
inherit pname version;
sha256 = "456f8c1be99da268554b29c6b5383532e58119def5a65d85270bc6a0ecc26aaf";
};
propagatedBuildInputs = [ jinja2 mistune pygments setuptools ];
pythonImportsCheck = [ "mrkd" ];
meta = with lib; {
description = "Write man pages using Markdown, and convert them to Roff or HTML";
homepage = "https://github.com/refi64/mrkd";
license = licenses.bsd2;
# https://github.com/refi64/mrkd/pull/6
broken = versionAtLeast mistune.version "2";
};
}

View File

@ -7,14 +7,14 @@
buildPythonPackage rec {
pname = "pex";
version = "2.1.137";
version = "2.1.141";
format = "flit";
disabled = pythonOlder "3.7";
src = fetchPypi {
inherit pname version;
hash = "sha256-ywzmz2R1fdW6TzTEYHq0hfeQnmwkzUecoozlIgXw7es=";
hash = "sha256-EsIurZNgWslUciz5Pc2hj2F4tAJ8hQydRWnVIWdryDc=";
};
nativeBuildInputs = [
@ -33,6 +33,6 @@ buildPythonPackage rec {
homepage = "https://github.com/pantsbuild/pex";
changelog = "https://github.com/pantsbuild/pex/releases/tag/v${version}";
license = licenses.asl20;
maintainers = with maintainers; [ copumpkin ];
maintainers = with maintainers; [ copumpkin phaer ];
};
}

View File

@ -20,7 +20,7 @@ let
in
buildPythonPackage rec {
pname = "yaramod";
version = "3.20.0";
version = "3.20.1";
format = "setuptools";
disabled = pythonOlder "3.7";
@ -29,7 +29,7 @@ in
owner = "avast";
repo = pname;
rev = "refs/tags/v${version}";
hash = "sha256-b4jHveGQGwO1BjpS/WJrMMBGB0LVB6Q7oltq4azp+7o=";
hash = "sha256-je4BBJ34VcA8pkvIBXfqrHAhWF+DdakSqeFma3mHpWo=";
};
postPatch = ''

View File

@ -20,6 +20,7 @@ rustPlatform.buildRustPackage rec {
description = "Find and remove unused code in .nix source files";
homepage = "https://github.com/astro/deadnix";
license = licenses.gpl3Only;
mainProgram = "deadnix";
maintainers = with maintainers; [ astro ];
};
}

View File

@ -21,6 +21,7 @@ buildGoModule rec {
description = "a code formatter for the Hashicorp Configuration Language (HCL) format";
homepage = "https://github.com/hashicorp/hcl/tree/main/cmd/hclfmt";
license = licenses.mpl20;
mainProgram = "hclfmt";
maintainers = with maintainers; [ zimbatm ];
};
}

View File

@ -28,5 +28,6 @@ rustPlatform.buildRustPackage rec {
changelog = "https://github.com/01mf02/jaq/releases/tag/${src.rev}";
license = licenses.mit;
maintainers = with maintainers; [ figsoda siraben ];
mainProgram = "jaq";
};
}

View File

@ -0,0 +1,32 @@
{ lib
, buildNpmPackage
, fetchFromGitHub
}:
buildNpmPackage rec {
pname = "karma";
version = "6.4.2";
src = fetchFromGitHub {
owner = "karma-runner";
repo = "karma";
rev = "v${version}";
hash = "sha256-v6IiLz65NS8GwM/FPqRxR5qcFDDu7EqloR0SIensdDI=";
};
patches = [
./fix-package-lock.patch
];
npmDepsHash = "sha256-nX4/96WdPEDZ6DASp+AOBbBbHyq+p2zIh2dZUbtmIPI=";
env.PUPPETEER_SKIP_CHROMIUM_DOWNLOAD = true;
meta = {
description = "Spectacular Test Runner for JavaScript";
homepage = "http://karma-runner.github.io/";
license = lib.licenses.mit;
mainProgram = "karma";
maintainers = with lib.maintainers; [ ];
};
}

View File

@ -0,0 +1,53 @@
diff --git a/package-lock.json b/package-lock.json
index 413cf4d1..1d03d9f5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5226,36 +5226,6 @@
"integrity": "sha512-ApcjaOdVTJ7y4r08xI5wIqpvwS48Q0PBG4DJROcEkH1f8MdAiNFyFxz3xoL0LWAVwjrwPYZdVHHxhRHcx/uGLA==",
"dev": true
},
- "karma": {
- "version": "file:",
- "dev": true,
- "requires": {
- "@colors/colors": "1.5.0",
- "body-parser": "^1.19.0",
- "braces": "^3.0.2",
- "chokidar": "^3.5.1",
- "connect": "^3.7.0",
- "di": "^0.0.1",
- "dom-serialize": "^2.2.1",
- "glob": "^7.1.7",
- "graceful-fs": "^4.2.6",
- "http-proxy": "^1.18.1",
- "isbinaryfile": "^4.0.8",
- "lodash": "^4.17.21",
- "log4js": "^6.4.1",
- "mime": "^2.5.2",
- "minimatch": "^3.0.4",
- "mkdirp": "^0.5.5",
- "qjobs": "^1.2.0",
- "range-parser": "^1.2.1",
- "rimraf": "^3.0.2",
- "socket.io": "^4.4.1",
- "source-map": "^0.6.1",
- "tmp": "^0.2.1",
- "ua-parser-js": "^0.7.30",
- "yargs": "^16.1.1"
- }
- },
"karma-browserify": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/karma-browserify/-/karma-browserify-7.0.0.tgz",
diff --git a/package.json b/package.json
index 347d9e95..90f6d036 100644
--- a/package.json
+++ b/package.json
@@ -471,7 +471,6 @@
"eslint-plugin-standard": "^4.0.1",
"http2": "^3.3.6",
"jasmine-core": "^3.6.0",
- "karma": ".",
"karma-browserify": "^7.0.0",
"karma-browserstack-launcher": "^1.6.0",
"karma-chai": "^0.1.0",

View File

@ -65,6 +65,7 @@ rustPlatform.buildRustPackage rec {
homepage = "https://github.com/astral-sh/ruff";
changelog = "https://github.com/astral-sh/ruff/releases/tag/v${version}";
license = licenses.mit;
mainProgram = "ruff";
maintainers = with maintainers; [ figsoda ];
};
}

View File

@ -11,15 +11,16 @@
rustPlatform.buildRustPackage rec {
pname = "deno";
version = "1.35.2";
version = "1.36.0";
src = fetchFromGitHub {
owner = "denoland";
repo = pname;
rev = "v${version}";
hash = "sha256-KyFQtJO78F2CdOqEQOXRoEWtc1N0qp1QWATOC+2JTCg=";
hash = "sha256-PV0Q/OtO4AkY3NMwIQIwU0DCkFqXifJFuHb+Q3rIQLI=";
};
cargoHash = "sha256-9Lxkhc0Edpthycwm27d+RZReXut2nUU9i5OZhcwE1YU=";
cargoHash = "sha256-w0Wr/mwn4Hdfxr7eBdZtpj3MbsMHDwAK2F7XaYEaMCk=";
postPatch = ''
# upstream uses lld on aarch64-darwin for faster builds

View File

@ -11,11 +11,11 @@ let
};
in
fetch_librusty_v8 {
version = "0.74.1";
version = "0.74.3";
shas = {
x86_64-linux = "sha256-RaqqMHhfNzzhwduEBuyu90doH4gYUYRToqf33Ef+F1Y=";
aarch64-linux = "sha256-WKEWmnLJVATwu8FXT1VhVHKcl14pl92sbE9T7rn4ooU=";
x86_64-darwin = "sha256-uwIVMiWitd/514NR/B041H75JcqLU+8GpiuQ3dOe0G8=";
aarch64-darwin = "sha256-qt9S+qaFSAafMOiLbJLknVzAm6wDglzodLh9Ep3Kdbc=";
x86_64-linux = "sha256-8pa8nqA6rbOSBVnp2Q8/IQqh/rfYQU57hMgwU9+iz4A=";
aarch64-linux = "sha256-3kXOV8rlCNbNBdXgOtd3S94qO+JIKyOByA4WGX+XVP0=";
x86_64-darwin = "sha256-iBBVKZiSoo08YEQ8J/Rt1/5b7a+2xjtuS6QL/Wod5nQ=";
aarch64-darwin = "sha256-Djnuc3l/jQKvBf1aej8LG5Ot2wPT0m5Zo1B24l1UHsM=";
};
}

View File

@ -0,0 +1,37 @@
{ lib
, buildNpmPackage
, fetchFromGitHub
}:
buildNpmPackage rec {
pname = "antennas";
version = "4.2.0";
src = fetchFromGitHub {
owner = "jfarseneau";
repo = "antennas";
rev = "v${version}";
hash = "sha256-UQ+wvm7+x/evmtGwzCkUkrrDMCIZzUL4iSkLmYKJ3Mc=";
};
npmDepsHash = "sha256-D5ss7nCDY3ogZy64iFqLVKbmibAg7C/A+rEHJaE9c2U=";
dontNpmBuild = true;
doCheck = true;
checkPhase = ''
runHook preCheck
npm run test
runHook postCheck
'';
meta = {
description = "HDHomeRun emulator for Plex DVR to connect to Tvheadend";
homepage = "https://github.com/jfarseneau/antennas";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ bachp ];
};
}

View File

@ -299,6 +299,7 @@ let
license = licenses.gpl2;
platforms = platforms.unix;
maintainers = with maintainers; [ cole-h winter srapenne ];
mainProgram = "fish";
};
passthru = {

View File

@ -1,4 +1,4 @@
{ lib, stdenv, runCommand, fetchurl, file, texlive, writeShellScript, writeText }:
{ lib, stdenv, buildEnv, runCommand, fetchurl, file, texlive, writeShellScript, writeText }:
{
@ -210,6 +210,16 @@
mkdir "$out"
'';
# verify that the restricted mode gets enabled when
# needed (detected by checking if it disallows --gscmd)
rpdfcrop = runCommand "texlive-test-rpdfcrop" {
nativeBuildInputs = [ (texlive.combine { inherit (texlive) scheme-infraonly pdfcrop; }) ];
} ''
! (pdfcrop --gscmd echo $(command -v pdfcrop) 2>&1 || true) | grep 'restricted mode' >/dev/null
(rpdfcrop --gscmd echo $(command -v pdfcrop) 2>&1 || true) | grep 'restricted mode' >/dev/null
mkdir "$out"
'';
# check that all binaries run successfully, in the following sense:
# (1) run --version, -v, --help, -h successfully; or
# (2) run --help, -h, or no argument with error code but show help text; or
@ -218,58 +228,140 @@
# compiled binaries or trivial shell wrappers
binaries = let
# TODO known broken binaries
broken = [ "albatross" "arara" "bbl2bib" "bib2gls" "bibdoiadd" "bibmradd" "bibzbladd" "citeproc" "convbkmk"
"convertgls2bib" "ctan-o-mat" "ctanify" "ctanupload" "dtxgen" "ebong" "epspdftk" "exceltex" "gsx" "htcontext"
"installfont-tl" "kanji-fontmap-creator" "ketcindy" "latex-git-log" "latex2nemeth" "ltxfileinfo" "match_parens"
"pdfannotextractor" "purifyeps" "pythontex" "svn-multi" "texexec" "texosquery" "texosquery-jre5"
"texosquery-jre8" "texplate" "tlcockpit" "tlmgr" "tlshell" "ulqda" "xhlatex" ];
broken = [
# *.inc files in source container rather than run
"texaccents"
# 'Error initialising QuantumRenderer: no suitable pipeline found'
"tlcockpit"
# 'tlmgr: config.guess script does not exist, goodbye'
"tlshell"
] ++ lib.optional stdenv.isDarwin "epspdftk"; # wish shebang is a script, not a binary!
# (1) binaries requiring -v
shortVersion = [ "devnag" "diadia" "pmxchords" "ptex2pdf" "simpdftex" "ttf2afm" ];
# (1) binaries requiring --help or -h
help = [ "arlatex" "bundledoc" "cachepic" "checklistings" "dvipos" "extractres" "fig4latex" "fragmaster"
"kpsewhere" "mendex" "pn2pdf" "psbook" "psnup" "psresize" "simpdftex" "tex2xindy" "texluac" "texluajitc"
"urlbst" "yplan" ];
shortHelp = [ "adhocfilelist" "authorindex" "biburl2doi" "disdvi" "dvibook" "dviconcat" "getmapdl" "latex2man"
"lprsetup.sh" "pygmentex" ];
"kpsewhere" "latex-git-log" "ltxfileinfo" "mendex" "perltex" "pn2pdf" "psbook" "psnup" "psresize" "purifyeps"
"simpdftex" "tex2xindy" "texluac" "texluajitc" "urlbst" "yplan" ];
shortHelp = [ "adhocfilelist" "authorindex" "bbl2bib" "bibdoiadd" "bibmradd" "biburl2doi" "bibzbladd" "ctanupload"
"disdvi" "dvibook" "dviconcat" "getmapdl" "latex2man" "listings-ext.sh" "pygmentex" ];
# (2) binaries that return non-zero exit code even if correctly asked for help
ignoreExitCode = [ "authorindex" "dvibook" "dviconcat" "dvipos" "extractres" "fig4latex" "fragmaster" "latex2man"
"lprsetup.sh" "pdf2dsc" "psbook" "psnup" "psresize" "tex2xindy" "texluac" "texluajitc" ];
"latex-git-log" "listings-ext.sh" "psbook" "psnup" "psresize" "purifyeps" "tex2xindy" "texluac"
"texluajitc" ];
# (2) binaries that print help on no argument, returning non-zero exit code
noArg = [ "a2ping" "bg5+latex" "bg5+pdflatex" "bg5latex" "bg5pdflatex" "cef5latex" "cef5pdflatex" "ceflatex"
"cefpdflatex" "cefslatex" "cefspdflatex" "chkdvifont" "dvi2fax" "dvipdf" "dvired" "dviselect"
"dvitodvi" "eps2eps" "epsffit" "findhyph" "gbklatex" "gbkpdflatex" "komkindex" "kpsepath" "listbib"
"listings-ext" "mag" "mathspic" "mf2pt1" "mk4ht" "mkt1font" "mkgrkindex" "musixflx" "pdf2ps" "pdftosrc"
"pdfxup" "pedigree" "pfb2pfa" "pfbtopfa" "pk2bm" "pphs" "prepmx" "ps2pk" "ps2pdf*" "ps2ps*" "psselect" "pstops"
"rubibtex" "rubikrotation" "sjislatex" "sjispdflatex" "srcredact" "t4ht" "tex4ht" "texdiff" "texdirflatten"
"texplate" "tie" "ttf2kotexfont" "ttfdump" "vlna" "vpl2ovp" "vpl2vpl" "yplan" ];
# (3) binary requiring a .tex file
tex = [ "de-macro" "e2pall" "makeindex" "pslatex" "rumakeindex" "tpic2pdftex" "wordcount" ];
"cefpdflatex" "cefslatex" "cefspdflatex" "chkdvifont" "dvi2fax" "dvired" "dviselect" "dvitodvi" "epsffit"
"findhyph" "gbklatex" "gbkpdflatex" "komkindex" "kpsepath" "listbib" "listings-ext" "mag" "mathspic" "mf2pt1"
"mk4ht" "mkt1font" "mkgrkindex" "musixflx" "pdf2ps" "pdftosrc" "pdfxup" "pedigree" "pfb2pfa" "pk2bm" "prepmx"
"ps2pk" "psselect" "pstops" "rubibtex" "rubikrotation" "sjislatex" "sjispdflatex" "srcredact" "t4ht" "tex4ht"
"texdiff" "texdirflatten" "texplate" "tie" "ttf2kotexfont" "ttfdump" "vlna" "vpl2ovp" "vpl2vpl" "yplan" ];
# (3) binaries requiring a .tex file
contextTest = [ "htcontext" ];
latexTest = [ "de-macro" "e2pall" "htlatex" "htxelatex" "makeindex" "pslatex" "rumakeindex" "tpic2pdftex"
"wordcount" "xhlatex" ];
texTest = [ "fontinst" "htmex" "httex" "httexi" "htxetex" ];
# tricky binaries or scripts that are obviously working but are hard to test
# (e.g. because they expect user input no matter the arguments)
# (printafm comes from ghostscript, not texlive)
ignored = [ "dt2dv" "dv2dt" "dvi2tty" "dvidvi" "dvispc" "fontinst" "ht" "htlatex" "htmex" "httex" "httexi"
"htxelatex" "htxetex" "otp2ocp" "outocp" "pmxab" "printafm" ];
testTex = writeText "test.tex" ''
ignored = [
# compiled binaries
"dt2dv" "dv2dt" "dvi2tty" "dvidvi" "dvispc" "otp2ocp" "outocp" "pmxab"
# GUI scripts that accept no argument or crash without a graphics server; please test manualy
"epspdftk" "texdoctk" "xasy"
# requires Cinderella, not open source and not distributed via Nixpkgs
"ketcindy"
];
# binaries that need a combined scheme and cannot work standalone
needScheme = [
# pfarrei: require working kpse to find lua module
"a5toa4"
# bibexport: requires kpsewhich
"bibexport"
# crossrefware: require bibtexperllibs under TEXMFROOT
"bbl2bib" "bibdoiadd" "bibmradd" "biburl2doi" "bibzbladd" "checkcites" "ltx2crossrefxml"
# require other texlive binaries in PATH
"allcm" "allec" "chkweb" "fontinst" "ht*" "installfont-tl" "kanji-config-updmap-sys" "kanji-config-updmap-user"
"kpse*" "latexfileversion" "mkocp" "mkofm" "mtxrunjit" "pdftex-quiet" "pslatex" "rumakeindex" "texconfig"
"texconfig-sys" "texexec" "texlinks" "texmfstart" "typeoutfileinfo" "wordcount" "xdvi" "xhlatex"
# misc luatex binaries searching for luatex in PATH
"citeproc-lua" "context" "contextjit" "ctanbib" "digestif" "epspdf" "l3build" "luafindfont" "luaotfload-tool"
"luatools" "make4ht" "pmxchords" "tex4ebook" "texdoc" "texlogsieve" "xindex"
# requires full TEXMFROOT (e.g. for config)
"mktexfmt" "mktexmf" "mktexpk" "mktextfm" "psnup" "psresize" "pstops" "tlmgr" "updmap" "webquiz"
# texlive-scripts: requires texlive.infra's TeXLive::TLUtils under TEXMFROOT
"fmtutil" "fmtutil-sys" "fmtutil-user"
# texlive-scripts: not used in nixpkgs, need updmap in PATH
"updmap-sys" "updmap-user"
];
# simple test files
contextTestTex = writeText "context-test.tex" ''
\starttext
A simple test file.
\stoptext
'';
latexTestTex = writeText "latex-test.tex" ''
\documentclass{article}
\begin{document}
A simple test file.
\end{document}
'';
texTestTex = writeText "tex-test.tex" ''
Hello.
\bye
'';
# link all binaries in single derivation
allPackages = with lib; concatLists (catAttrs "pkgs" (filter isAttrs (attrValues texlive)));
binPackages = lib.filter (p: p.tlType == "bin") allPackages;
binaries = buildEnv { name = "texlive-binaries"; paths = binPackages; };
in
runCommand "texlive-test-binaries" { inherit testTex; }
runCommand "texlive-test-binaries"
{
inherit binaries contextTestTex latexTestTex texTestTex;
texliveScheme = texlive.combined.scheme-full;
}
''
loadables="$(command -v bash)"
loadables="''${loadables%/bin/bash}/lib/bash"
enable -f "$loadables/realpath" realpath
mkdir -p "$out"
export HOME="$(mktemp -d)"
declare -i binCount=0 ignoredCount=0 brokenCount=0 failedCount=0
cp "$testTex" test.tex
cp "$contextTestTex" context-test.tex
cp "$latexTestTex" latex-test.tex
cp "$texTestTex" tex-test.tex
testBin () {
path="$(realpath "$bin")"
path="''${path##*/}"
if [[ -z "$ignoreExitCode" ]] ; then
"$bin" $args >"$out/$base.log" 2>&1
return $?
else
"$bin" $args >"$out/$base.log" 2>&1
PATH="$path" "$bin" $args >"$out/$base.log" 2>&1
ret=$?
if [[ $ret == 0 ]] && grep -i 'command not found' "$out/$base.log" >/dev/null ; then
echo "command not found when running '$base''${args:+ $args}'"
return 1
fi
return $ret
else
PATH="$path" "$bin" $args >"$out/$base.log" 2>&1
ret=$?
if [[ $ret == 0 ]] && grep -i 'command not found' "$out/$base.log" >/dev/null ; then
echo "command not found when running '$base''${args:+ $args}'"
return 1
fi
if ! grep -Ei '(Example:|Options:|Syntax:|Usage:|improper command|SYNOPSIS)' "$out/$base.log" >/dev/null ; then
echo "did not find usage info when running '$base''${args:+ $args}'"
return $ret
@ -277,7 +369,7 @@
fi
}
for bin in ${texlive.combined.scheme-full}/bin/* ; do
for bin in "$binaries"/bin/* ; do
base="''${bin##*/}"
args=
ignoreExitCode=
@ -295,10 +387,19 @@
args=-h ;;
${lib.concatStringsSep "|" noArg})
;;
${lib.concatStringsSep "|" tex})
args=test.tex ;;
${lib.concatStringsSep "|" contextTest})
args=context-test.tex ;;
${lib.concatStringsSep "|" latexTest})
args=latex-test.tex ;;
${lib.concatStringsSep "|" texTest})
args=tex-test.tex ;;
${lib.concatStringsSep "|" shortVersion})
args=-v ;;
ebong)
touch empty
args=empty ;;
ht)
args='latex latex-test.tex' ;;
pdf2dsc)
args='--help --help --help' ;;
typeoutfileinfo)
@ -312,16 +413,57 @@
ignoreExitCode=1 ;;
esac
case "$base" in
${lib.concatStringsSep "|" needScheme})
bin="$texliveScheme/bin/$base"
if [[ ! -f "$bin" ]] ; then
ignoredCount=$((ignoredCount + 1))
continue
fi ;;
esac
if testBin ; then : ; else # preserve exit code
echo "failed '$base''${args:+ $args}' (exit code: $?)"
sed 's/^/ > /' < "$out/$base.log"
failedCount=$((failedCount + 1))
fi
done
echo "tested $binCount binCount: $ignoredCount ignored, $brokenCount broken, $failedCount failed"
echo "tested $binCount binaries: $ignoredCount ignored, $brokenCount broken, $failedCount failed"
[[ $failedCount = 0 ]]
'';
# check that all scripts have a Nix shebang
shebangs = let
allPackages = with lib; concatLists (catAttrs "pkgs" (filter isAttrs (attrValues texlive)));
binPackages = lib.filter (p: p.tlType == "bin") allPackages;
in
runCommand "texlive-test-shebangs" { }
(''
echo "checking that all texlive scripts shebangs are in '$NIX_STORE'"
declare -i scriptCount=0 invalidCount=0
'' +
(lib.concatMapStrings
(pkg: ''
for bin in '${pkg.outPath}'/bin/* ; do
grep -I -q . "$bin" || continue # ignore binary files
scriptCount=$((scriptCount + 1))
read -r cmdline < "$bin"
read -r interp <<< "$cmdline"
if [[ "$interp" != "#!$NIX_STORE"/* && "$interp" != "#! $NIX_STORE"/* ]] ; then
echo "error: non-nix shebang '$interp' in script '$bin'"
invalidCount=$((invalidCount + 1))
fi
done
'')
binPackages)
+ ''
echo "checked $scriptCount scripts, found $invalidCount non-nix shebangs"
[[ $invalidCount -gt 0 ]] && exit 1
mkdir -p "$out"
''
);
# verify that the precomputed licensing information in default.nix
# does indeed match the metadata of the individual packages.
#

View File

@ -23,5 +23,6 @@ stdenv.mkDerivation rec {
platforms = platforms.unix;
maintainers = with maintainers; [ puffnfresh ];
broken = stdenv.hostPlatform.isDarwin;
mainProgram = "playerctl";
};
}

View File

@ -34,6 +34,7 @@ stdenv.mkDerivation rec {
homepage = "https://pgbackrest.org/";
changelog = "https://github.com/pgbackrest/pgbackrest/releases";
license = licenses.mit;
mainProgram = "pgbackrest";
maintainers = with maintainers; [ zaninime ];
};
}

View File

@ -0,0 +1,45 @@
{ lib
, buildNpmPackage
, fetchFromGitHub
, installShellFiles
, python3
}:
buildNpmPackage rec {
pname = "balanceofsatoshis";
version = "15.8.15";
src = fetchFromGitHub {
owner = "alexbosworth";
repo = "balanceofsatoshis";
rev = "v${version}";
hash = "sha256-8GWITeFn7ELUH7bxcNlmQvgperQutBwVUhp2yjeEWrM=";
};
npmDepsHash = "sha256-lTXv4pEjrzcOK68RO1K007r7dCbAyc45G8Oy8V3XLts=";
nativeBuildInputs = [
installShellFiles
python3
];
dontNpmBuild = true;
npmFlags = [ "--ignore-scripts" ];
postInstall = ''
installShellCompletion --cmd bos \
--bash <($out/bin/bos completion bash) \
--zsh <($out/bin/bos completion zsh) \
--fish <($out/bin/bos completion fish)
'';
meta = {
changelog = "https://github.com/alexbosworth/balanceofsatoshis/blob/${src.rev}/CHANGELOG.md";
description = "Tool for working with the balance of your satoshis on LND";
homepage = "https://github.com/alexbosworth/balanceofsatoshis";
license = lib.licenses.mit;
mainProgram = "bos";
maintainers = with lib.maintainers; [ mmilata ];
};
}

View File

@ -0,0 +1,27 @@
{ lib
, buildNpmPackage
, fetchFromGitHub
}:
buildNpmPackage rec {
pname = "hueadm";
version = "1.2.1";
src = fetchFromGitHub {
owner = "bahamas10";
repo = "hueadm";
rev = "v${version}";
hash = "sha256-QNjkfE8V/lUkYP8NAf11liKXILBk3wSNm3NSrgaH+nc=";
};
npmDepsHash = "sha256-EbwHbPe8QvT6ekH20q+ihGmwpAHykwkwoJ6vwAf0FlA=";
dontNpmBuild = true;
meta = {
description = "Command line management interface to Philips Hue";
homepage = "https://github.com/bahamas10/hueadm";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ infinisil ];
};
}

View File

@ -1,45 +1,18 @@
{ lib
, babel
, buildPythonPackage
, click
, exifread
, fetchFromGitHub
, fetchNpmDeps
, filetype
, flask
, hatch-vcs
, hatchling
, importlib-metadata
, inifile
, jinja2
, markupsafe
, marshmallow
, marshmallow-dataclass
, mistune
, nodejs
, npmHooks
, pillow
, pip
, pytest-click
, pytest-mock
, pytest-pylint
, pytestCheckHook
, python
, pythonOlder
, python-slugify
, pytz
, requests
, watchfiles
, werkzeug
, python3
}:
buildPythonPackage rec {
let
python = python3;
in python.pkgs.buildPythonApplication rec {
pname = "lektor";
version = "3.4.0b8";
format = "pyproject";
disabled = pythonOlder "3.7";
src = fetchFromGitHub {
owner = "lektor";
repo = pname;
@ -55,15 +28,15 @@ buildPythonPackage rec {
npmRoot = "frontend";
nativeBuildInputs = [
hatch-vcs
hatchling
python.pkgs.hatch-vcs
python.pkgs.hatchling
nodejs
npmHooks.npmConfigHook
];
env.SETUPTOOLS_SCM_PRETEND_VERSION = version;
propagatedBuildInputs = [
propagatedBuildInputs = with python.pkgs; [
babel
click
exifread
@ -81,13 +54,9 @@ buildPythonPackage rec {
requests
watchfiles
werkzeug
] ++ lib.optionals (pythonOlder "3.8") [
importlib-metadata
] ++ lib.optionals (pythonOlder "3.9") [
pytz
];
nativeCheckInputs = [
nativeCheckInputs = with python.pkgs; [
pytest-click
pytest-mock
pytestCheckHook
@ -114,6 +83,7 @@ buildPythonPackage rec {
homepage = "https://www.getlektor.com/";
changelog = "https://github.com/lektor/lektor/blob/v${version}/CHANGES.md";
license = licenses.bsd0;
mainProgram = "lektor";
maintainers = with maintainers; [ ];
};
}

View File

@ -52,5 +52,6 @@ rustPlatform.buildRustPackage rec {
homepage = "https://starship.rs";
license = licenses.isc;
maintainers = with maintainers; [ bbigras danth davidtwco Br1ght0ne Frostman marsam ];
mainProgram = "starship";
};
}

View File

@ -0,0 +1,27 @@
{ lib
, buildNpmPackage
, fetchFromGitHub
}:
buildNpmPackage rec {
pname = "castnow";
version = "0.6.0";
src = fetchFromGitHub {
owner = "xat";
repo = "castnow";
rev = "v${version}";
hash = "sha256-vAjeDPH+Lu/vj3GhwytXqpbSkg5hKpXsMRNV+8TUeio=";
};
npmDepsHash = "sha256-1cLuti3JHpMHn1sno8gE8Ko+eoUWCqFUfIDIBAS+M34=";
dontNpmBuild = true;
meta = {
description = "Command-line Chromecast player";
homepage = "commandline chromecast player";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ ];
};
}

View File

@ -196,5 +196,6 @@ stdenv.mkDerivation (finalAttrs: {
# Fails to link against static brotli or gss
broken = stdenv.hostPlatform.isStatic && (brotliSupport || gssSupport);
pkgConfigModules = [ "libcurl" ];
mainProgram = "curl";
};
})

View File

@ -41,5 +41,6 @@ stdenv.mkDerivation rec {
platforms = platforms.unix;
license = with licenses; [ gpl2Only ];
maintainers = with maintainers; [ eelco ];
mainProgram = "socat";
};
}

View File

@ -25,6 +25,7 @@ rustPlatform.buildRustPackage rec {
description = "Lints and suggestions for the nix programming language";
homepage = "https://github.com/nerdypepper/statix";
license = licenses.mit;
mainProgram = "statix";
maintainers = with maintainers; [ figsoda nerdypepper ];
};
}

View File

@ -6,13 +6,13 @@
stdenv.mkDerivation rec {
pname = "exploitdb";
version = "2023-08-01";
version = "2023-08-03";
src = fetchFromGitLab {
owner = "exploit-database";
repo = pname;
rev = "refs/tags/${version}";
hash = "sha256-s0D7NMgU2cApeZWqAFGtLk8DdkGNVLh2kY/xNK7W7c0=";
hash = "sha256-mS77s3wBVGRxGrPxjOCi5QN82N2N4pIPrxz5JczaIBc=";
};
nativeBuildInputs = [

View File

@ -49,5 +49,6 @@ buildGoModule rec {
maintainers = with maintainers; [ sumnerevans ];
license = with licenses; [ bsd2 isc ];
platforms = platforms.linux;
mainProgram = "yubikey-touch-detector";
};
}

View File

@ -0,0 +1,28 @@
{ lib
, buildNpmPackage
, fetchFromGitHub
}:
buildNpmPackage rec {
pname = "markdownlint-cli";
version = "0.35.0";
src = fetchFromGitHub {
owner = "igorshubovych";
repo = "markdownlint-cli";
rev = "v${version}";
hash = "sha256-PkvgZn7cQafKO7p5i1fYYZrWjNcFuX700r223qUMN5I=";
};
npmDepsHash = "sha256-hh8T2MRjUJQVibd+cY7vkJvBgNDueWuluGE3HxWOCU8=";
dontNpmBuild = true;
meta = {
description = "Command line interface for MarkdownLint";
homepage = "https://github.com/igorshubovych/markdownlint-cli";
license = lib.licenses.mit;
mainProgram = "markdownlint";
maintainers = with lib.maintainers; [ ambroisie ];
};
}

View File

@ -0,0 +1,52 @@
{ lib
, python3
, fetchPypi
}:
let
python = python3.override {
packageOverrides = self: super: {
# https://github.com/refi64/mrkd/pull/6
mistune = super.mistune.overridePythonAttrs (old: rec {
version = "0.8.4";
src = fetchPypi {
inherit (old) pname;
inherit version;
hash = "sha256-WaNCnbU8ULXGvMigf4hIywDX3IvbQxpKtBkg0gHUdW4=";
};
meta = old.meta // {
knownVulnerabilities = [
"CVE-2022-34749"
];
};
});
};
};
in python.pkgs.buildPythonApplication rec {
pname = "mrkd";
version = "0.2.0";
format = "setuptools";
src = fetchPypi {
inherit pname version;
sha256 = "456f8c1be99da268554b29c6b5383532e58119def5a65d85270bc6a0ecc26aaf";
};
propagatedBuildInputs = with python.pkgs; [
jinja2
mistune
pygments
setuptools
];
pythonImportsCheck = [ "mrkd" ];
meta = with lib; {
description = "Write man pages using Markdown, and convert them to Roff or HTML";
homepage = "https://github.com/refi64/mrkd";
license = licenses.bsd2;
mainProgram = "mrkd";
maintainers = with maintainers; [ prusnak ];
};
}

View File

@ -98,3 +98,34 @@ a message like
Please make sure to follow the [CONTRIBUTING](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md)
guidelines.
## Reviewing the bin containers
Most `tlType == "bin"` containers consist of links to scripts distributed in
`$TEXMFDIST/scripts` with a number of patches applied within `default.nix`.
At each upgrade, please run the tests `tests.texlive.shebangs` to verify that
all shebangs have been patched and in case add the relevant interpreters, and
use `tests.texlive.binaries` to check if basic execution of all binaries works.
Please review manually all binaries in the `broken` and `ignored` lists of
`tests.texlive.binaries` at least once for major TeX Live release.
Since the tests cannot catch all runtime dependencies, you should grep the
`$TEXMFDIST/scripts` folder for common cases, for instance (where `$scripts`
points to the relevant folder of `scheme-full`):
- Calls to `exec $interpreter`
```
grep -IRS 'exec ' "$TEXMFDIST/scripts" | cut -d: -f2 | sort -u | less -S
```
- Calls to Ghostscripts (see `needsGhostscript` in `combine.nix`)
```
grep -IR '\([^a-zA-Z]\|^\)gs\( \|$\|"\)' "$TEXMFDIST"/scripts
grep -IR 'rungs' "$TEXMFDIST"
```
As a general rule, if a runtime dependency as above is essential for the core
functionality of the package, then it should be made available in the bin
containers (by patching `PATH`), or in `texlive.combine` (as we do for
Ghostscript). Non-essential runtime dependencies should be ignored if they
increase the closure substantially.

View File

@ -5,7 +5,7 @@
, perl, perlPackages, python3Packages, pkg-config
, libpaper, graphite2, zziplib, harfbuzz, potrace, gmp, mpfr
, brotli, cairo, pixman, xorg, clisp, biber, woff2, xxHash
, makeWrapper, shortenPerlShebang, useFixedHashes
, makeWrapper, shortenPerlShebang, useFixedHashes, asymptote
}:
# Useful resource covering build options:
@ -387,38 +387,6 @@ dvipng = stdenv.mkDerivation {
enableParallelBuilding = true;
};
latexindent = perlPackages.buildPerlPackage rec {
pname = "latexindent";
inherit (src) version;
src = assertFixedHash pname (lib.head (builtins.filter (p: p.tlType == "run") texlive.latexindent.pkgs));
outputs = [ "out" ];
nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
propagatedBuildInputs = with perlPackages; [ FileHomeDir LogDispatch LogLog4perl UnicodeLineBreak YAMLTiny ];
postPatch = ''
substituteInPlace scripts/latexindent/LatexIndent/GetYamlSettings.pm \
--replace '$FindBin::RealBin/defaultSettings.yaml' ${src}/scripts/latexindent/defaultSettings.yaml
'';
# Dirty hack to apply perlFlags, but do no build
preConfigure = ''
touch Makefile.PL
'';
dontBuild = true;
installPhase = ''
install -D ./scripts/latexindent/latexindent.pl "$out"/bin/latexindent
mkdir -p "$out"/${perl.libPrefix}
cp -r ./scripts/latexindent/LatexIndent "$out"/${perl.libPrefix}/
'' + lib.optionalString stdenv.isDarwin ''
shortenPerlShebang "$out"/bin/latexindent
'';
};
pygmentex = python3Packages.buildPythonApplication rec {
pname = "pygmentex";
inherit (src) version;
@ -456,27 +424,7 @@ pygmentex = python3Packages.buildPythonApplication rec {
};
};
texlinks = stdenv.mkDerivation rec {
name = "texlinks";
src = assertFixedHash name (lib.head (builtins.filter (p: p.tlType == "run") texlive.texlive-scripts-extra.pkgs));
dontBuild = true;
doCheck = false;
installPhase = ''
runHook preInstall
# Patch texlinks.sh back to 2015 version;
# otherwise some bin/ links break, e.g. xe(la)tex.
patch --verbose -R scripts/texlive-extra/texlinks.sh < '${./texlinks.diff}'
install -Dm555 scripts/texlive-extra/texlinks.sh "$out"/bin/texlinks
runHook postInstall
'';
};
inherit asymptote;
inherit biber;
bibtexu = bibtex8;

View File

@ -1,39 +1,26 @@
params: with params;
# combine =
args@{
pkgFilter ? (pkg: pkg.tlType == "run" || pkg.tlType == "bin" || pkg.pname == "core")
pkgFilter ? (pkg: pkg.tlType == "run" || pkg.tlType == "bin" || pkg.pname == "core"
|| pkg.hasManpages or false)
, extraName ? "combined"
, extraVersion ? ""
, ...
}:
let
pkgSet = removeAttrs args [ "pkgFilter" "extraName" "extraVersion" ] // {
# include a fake "core" package
core.pkgs = [
(bin.core.out // { pname = "core"; tlType = "bin"; })
(bin.core.doc // { pname = "core"; tlType = "doc"; })
];
};
pkgSet = removeAttrs args [ "pkgFilter" "extraName" "extraVersion" ];
pkgList = rec {
combined = combinePkgs (lib.attrValues pkgSet);
all = lib.filter pkgFilter combined;
splitBin = builtins.partition (p: p.tlType == "bin") all;
bin = splitBin.right
++ lib.optional
(lib.any (p: p.tlType == "run" && p.pname == "pdfcrop") splitBin.wrong)
(lib.getBin ghostscript);
bin = splitBin.right;
nonbin = splitBin.wrong;
tlpkg = lib.filter (pkg: pkg.tlType == "tlpkg") combined;
# extra interpreters needed for shebangs, based on 2015 schemes "medium" and "tetex"
# (omitted tk needed in pname == "epspdf", bin/epspdftk)
pkgNeedsPython = pkg: pkg.tlType == "run" && lib.elem pkg.pname
[ "de-macro" "pythontex" "dviasm" "texliveonfly" ];
pkgNeedsRuby = pkg: pkg.tlType == "run" && pkg.pname == "match-parens";
extraInputs =
lib.optional (lib.any pkgNeedsPython splitBin.wrong) python3
++ lib.optional (lib.any pkgNeedsRuby splitBin.wrong) ruby;
};
# list generated by inspecting `grep -IR '\([^a-zA-Z]\|^\)gs\( \|$\|"\)' "$TEXMFDIST"/scripts`
# and `grep -IR rungs "$TEXMFDIST"`
# and ignoring luatex, perl, and shell scripts (those must be patched using postFixup)
needsGhostscript = lib.any (p: lib.elem p.pname [ "context" "dvipdfmx" "latex-papersize" "lyluatex" ]) pkgList.bin;
name = "texlive-${extraName}-${bin.texliveYear}${extraVersion}";
@ -43,11 +30,11 @@ let
# remove fake derivations (without 'outPath') to avoid undesired build dependencies
paths = lib.catAttrs "outPath" pkgList.nonbin;
nativeBuildInputs = [ perl bin.core.out ];
nativeBuildInputs = [ (lib.last tl.texlive-scripts.pkgs) ];
postBuild = # generate ls-R database
''
perl "$out/scripts/texlive/mktexlsr.pl" --sort "$out"
mktexlsr --sort "$out"
'';
}).overrideAttrs (_: { allowSubstitutes = true; });
@ -94,11 +81,17 @@ in (buildEnv {
"/share/texmf-var/scripts"
"/share/texmf-var/tex/generic/config"
"/share/texmf-var/web2c"
"/share/texmf-config"
"/bin" # ensure these are writeable directories
];
nativeBuildInputs = [ makeWrapper libfaketime perl bin.texlinks ];
buildInputs = pkgList.extraInputs;
nativeBuildInputs = [
makeWrapper
libfaketime
(lib.last tl.texlive-scripts.pkgs) # fmtutil, mktexlsr, updmap
(lib.last tl.texlive-scripts-extra.pkgs) # texlinks
perl
];
passthru = {
# This is set primarily to help find-tarballs.nix to do its job
@ -107,13 +100,44 @@ in (buildEnv {
fonts = "${texmfroot}/texmf-dist/fonts";
};
postBuild = ''
postBuild =
# environment variables (note: only export the ones that are used in the wrappers)
''
TEXMFROOT="${texmfroot}"
TEXMFDIST="${texmfdist}"
export PATH="$out/bin:$PATH"
TEXMFSYSCONFIG="$out/share/texmf-config"
TEXMFSYSVAR="$out/share/texmf-var"
export TEXMFCNF="$TEXMFSYSVAR/web2c"
'' +
# wrap executables with required env vars as early as possible
# 1. we want texlive.combine to use the wrapped binaries, to catch bugs
# 2. we do not want to wrap links generated by texlinks
''
enable -f '${bash}/lib/bash/realpath' realpath
declare -i wrapCount=0
for link in "$out"/bin/*; do
target="$(realpath "$link")"
if [[ "''${target##*/}" != "''${link##*/}" ]] ; then
# detected alias with different basename, use immediate target of $link to preserve $0
# relevant for mktexfmt, repstopdf, ...
target="$(readlink "$link")"
fi
rm "$link"
makeWrapper "$target" "$link" \
--inherit-argv0 \
--prefix PATH : "${
# very common dependencies that are not detected by tests.texlive.binaries
lib.makeBinPath ([ coreutils gawk gnugrep gnused ] ++ lib.optional needsGhostscript ghostscript)}:$out/bin" \
--set-default TEXMFCNF "$TEXMFCNF" \
--set-default FONTCONFIG_FILE "${
# necessary for XeTeX to find the fonts distributed with texlive
makeFontsConf { fontDirectories = [ "${texmfroot}/texmf-dist/fonts" ]; }
}"
wrapCount=$((wrapCount + 1))
done
echo "wrapped $wrapCount binaries and scripts"
'' +
# patch texmf-dist -> $TEXMFDIST
# patch texmf-local -> $out/share/texmf-local
@ -153,7 +177,7 @@ in (buildEnv {
(let
hyphens = lib.filter (p: p.hasHyphens or false && p.tlType == "run") pkgList.splitBin.wrong;
hyphenPNames = map (p: p.pname) hyphens;
formats = lib.filter (p: p.hasFormats or false && p.tlType == "run") pkgList.splitBin.wrong;
formats = lib.filter (p: p ? formats && p.tlType == "run") pkgList.splitBin.wrong;
formatPNames = map (p: p.pname) formats;
# sed expression that prints the lines in /start/,/end/ except for /end/
section = start: end: "/${start}/,/${end}/{ /${start}/p; /${end}/!p; };\n";
@ -199,54 +223,11 @@ in (buildEnv {
[[ -e "$TEXMFDIST"/web2c/fmtutil.cnf ]] && sed -E -f '${fmtutilSed}' "$TEXMFDIST"/web2c/fmtutil.cnf > "$TEXMFCNF"/fmtutil.cnf
# make new files visible to kpathsea
perl "$TEXMFDIST"/scripts/texlive/mktexlsr.pl --sort "$TEXMFSYSVAR"
mktexlsr --sort "$TEXMFSYSVAR"
'') +
# function to wrap created executables with required env vars
# generate format links (reads fmtutil.cnf to know which ones) *after* the wrappers have been generated
''
wrapBin() {
for link in "$out"/bin/*; do
[ -L "$link" -a -x "$link" ] || continue # if not link, assume OK
local target=$(readlink "$link")
# skip simple local symlinks; mktexfmt in particular
echo "$target" | grep / > /dev/null || continue;
echo -n "Wrapping '$link'"
rm "$link"
makeWrapper "$target" "$link" \
--prefix PATH : "${gnused}/bin:${gnugrep}/bin:${coreutils}/bin:$out/bin:${perl}/bin" \
--set-default TEXMFCNF "$TEXMFCNF" \
--set-default FONTCONFIG_FILE "${
# neccessary for XeTeX to find the fonts distributed with texlive
makeFontsConf { fontDirectories = [ "${texmfroot}/texmf-dist/fonts" ]; }
}"
# avoid using non-nix shebang in $target by calling interpreter
if [[ "$(head -c 2 "$target")" = "#!" ]]; then
local cmdline="$(head -n 1 "$target" | sed 's/^\#\! *//;s/ *$//')"
local relative=`basename "$cmdline" | sed 's/^env //' `
local newInterp=`echo "$relative" | cut -d\ -f1`
local params=`echo "$relative" | cut -d\ -f2- -s`
local newPath="$(type -P "$newInterp")"
if [[ -z "$newPath" ]]; then
echo " Warning: unknown shebang '$cmdline' in '$target'"
continue
fi
echo " and patching shebang '$cmdline'"
sed "s|^exec |exec $newPath $params |" -i "$link"
elif head -n 1 "$target" | grep -q 'exec perl'; then
# see #24343 for details of the problem
echo " and patching weird perl shebang"
sed "s|^exec |exec '${perl}/bin/perl' -w |" -i "$link"
else
sed 's|^exec |exec -a "$0" |' -i "$link"
echo
fi
done
}
texlinks --quiet "$out/bin"
'' +
# texlive postactions (see TeXLive::TLUtils::_do_postaction_script)
(lib.concatMapStrings (pkg: ''
@ -259,20 +240,8 @@ in (buildEnv {
echo "postaction install script for ${pkg.pname}: ''${postInterp:+$postInterp }$postaction install $TEXMFROOT"
$postInterp "$TEXMFROOT/$postaction" install "$TEXMFROOT"
'') (lib.filter (pkg: pkg ? postactionScript) pkgList.tlpkg)) +
# texlive post-install actions
''
ln -sf "$TEXMFDIST"/scripts/texlive/updmap.pl "$out"/bin/updmap
ln -sf "$TEXMFDIST"/scripts/texlive/fmtutil.pl "$out"/bin/fmtutil
'' +
# now hack to preserve "$0" for mktexfmt
''
cp "$TEXMFDIST"/scripts/texlive/fmtutil.pl "$TEXMFSYSVAR"/scripts/mktexfmt
ln -sf "$TEXMFSYSVAR"/scripts/mktexfmt "$out"/bin/mktexfmt
'' +
# generate formats
''
texlinks "$out/bin" && wrapBin
# many formats still ignore SOURCE_DATE_EPOCH even when FORCE_SOURCE_DATE=1
# libfaketime fixes non-determinism related to timestamps ignoring FORCE_SOURCE_DATE
# we cannot fix further randomness caused by luatex; for further details, see
@ -282,41 +251,20 @@ in (buildEnv {
substitute "$TEXMFDIST"/scripts/texlive/fmtutil.pl fmtutil \
--replace 'my $cmdline = "$eng -ini ' 'my $cmdline = "faketime -f '"'"'\@1980-01-01 00:00:00 x0.001'"'"' $eng -ini '
FORCE_SOURCE_DATE=1 TZ= perl fmtutil --sys --all | grep '^fmtutil' # too verbose
#texlinks "$out/bin" && wrapBin # do we need to regenerate format links?
# Disable unavailable map files
echo y | updmap --sys --syncwithtrees --force
echo y | updmap --sys --syncwithtrees --force 2>&1 | grep '^\(updmap\| /\)'
# Regenerate the map files (this is optional)
updmap --sys --force
updmap --sys --force 2>&1 | grep '^\(updmap\| /\)'
# sort entries to improve reproducibility
[[ -f "$TEXMFSYSCONFIG"/web2c/updmap.cfg ]] && sort -o "$TEXMFSYSCONFIG"/web2c/updmap.cfg "$TEXMFSYSCONFIG"/web2c/updmap.cfg
perl "$TEXMFDIST"/scripts/texlive/mktexlsr.pl --sort "$TEXMFSYSCONFIG" "$TEXMFSYSVAR" # to make sure
mktexlsr --sort "$TEXMFSYSCONFIG" "$TEXMFSYSVAR" # to make sure (of what?)
'' +
# install (wrappers for) scripts, based on a list from upstream texlive
''
source '${bin.core.out}/share/texmf-dist/scripts/texlive/scripts.lst'
for s in $texmf_scripts; do
[[ -x "$TEXMFDIST/scripts/$s" ]] || continue
tName="$(basename $s | sed 's/\.[a-z]\+$//')" # remove extension
[[ ! -e "$out/bin/$tName" ]] || continue
ln -sv "$(realpath "$TEXMFDIST/scripts/$s")" "$out/bin/$tName" # wrapped below
done
'' +
# A hacky way to provide repstopdf
# * Copy is done to have a correct "$0" so that epstopdf enables the restricted mode
# * ./bin/repstopdf needs to be a symlink to be processed by wrapBin
''
if [[ -e "$out"/bin/epstopdf ]]; then
cp "$out"/bin/epstopdf "$TEXMFSYSVAR"/scripts/repstopdf
ln -s "$TEXMFSYSVAR"/scripts/repstopdf "$out"/bin/repstopdf
fi
'' +
# finish up the wrappers
# remove *-sys scripts since /nix/store is readonly
''
rm "$out"/bin/*-sys
wrapBin
'' +
# TODO: a context trigger https://www.preining.info/blog/2015/06/debian-tex-live-2015-the-new-layout/
# http://wiki.contextgarden.net/ConTeXt_Standalone#Unix-like_platforms_.28Linux.2FMacOS_X.2FFreeBSD.2FSolaris.29
@ -332,8 +280,7 @@ in (buildEnv {
--replace 'uuid=osuuid(),' 'uuid="242be807-d17e-4792-8e39-aa93326fc871",'
FORCE_SOURCE_DATE=1 TZ= faketime -f '@1980-01-01 00:00:00 x0.001' luatex --luaonly mtxrun.lua --generate
fi
''
+ bin.cleanBrokenLinks +
'' +
# Get rid of all log files. They are not needed, but take up space
# and render the build unreproducible by their embedded timestamps
# and other non-deterministic diagnostics.

View File

@ -4,8 +4,10 @@
*/
{ stdenv, lib, fetchurl, runCommand, writeText, buildEnv
, callPackage, ghostscript_headless, harfbuzz
, makeWrapper, python3, ruby, perl, gnused, gnugrep, coreutils
, libfaketime, makeFontsConf
, makeWrapper
, python3, ruby, perl, tk, jdk, bash, snobol4
, coreutils, findutils, gawk, getopt, gnugrep, gnumake, gnused, gzip, ncurses, zip
, libfaketime, asymptote, makeFontsConf
, useFixedHashes ? true
, recurseIntoAttrs
}:
@ -22,7 +24,7 @@ let
# function for creating a working environment from a set of TL packages
combine = import ./combine.nix {
inherit bin combinePkgs buildEnv lib makeWrapper writeText runCommand
stdenv python3 ruby perl gnused gnugrep coreutils libfaketime makeFontsConf;
stdenv perl libfaketime makeFontsConf bash tl coreutils gawk gnugrep gnused;
ghostscript = ghostscript_headless;
};
@ -32,25 +34,341 @@ let
# the set of TeX Live packages, collections, and schemes; using upstream naming
tl = let
orig = removeAttrs tlpdb [ "00texlive.config" ];
# most format -> engine links are generated by texlinks according to fmtutil.cnf at combine time
# so we remove them from binfiles, and add back the ones texlinks purposefully ignore (e.g. mptopdf)
removeFormatLinks = lib.mapAttrs (_: attrs:
if (attrs ? formats && attrs ? binfiles)
then let formatLinks = lib.catAttrs "name" (lib.filter (f: f.name != f.engine) attrs.formats);
binNotFormats = lib.subtractLists formatLinks attrs.binfiles;
in if binNotFormats != [] then attrs // { binfiles = binNotFormats; } else removeAttrs attrs [ "binfiles" ]
else attrs);
overridden = lib.recursiveUpdate orig {
# overrides of texlive.tlpdb
orig = removeFormatLinks (removeAttrs tlpdb [ "00texlive.config" ]);
# only *.po for tlmgr
texlive-msg-translations.hasTlpkg = false;
overridden = lib.recursiveUpdate orig rec {
#### overrides of texlive.tlpdb
#### nonstandard script folders
context.scriptsFolder = "context/stubs/unix";
cyrillic-bin.scriptsFolder = "texlive-extra";
fontinst.scriptsFolder = "texlive-extra";
mptopdf.scriptsFolder = "context/perl";
pdftex.scriptsFolder = "simpdftex";
"texlive.infra".scriptsFolder = "texlive";
texlive-scripts.scriptsFolder = "texlive";
texlive-scripts-extra.scriptsFolder = "texlive-extra";
xetex.scriptsFolder = "texlive-extra";
#### interpreters not detected by looking at the script extensions
ctanbib.extraBuildInputs = [ bin.luatex ];
de-macro.extraBuildInputs = [ python3 ];
match_parens.extraBuildInputs = [ ruby ];
optexcount.extraBuildInputs = [ python3 ];
pdfbook2.extraBuildInputs = [ python3 ];
texlogsieve.extraBuildInputs = [ bin.luatex ];
#### perl packages
crossrefware.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ LWP URI ])) ];
ctan-o-mat.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ LWP LWPProtocolHttps ])) ];
ctanify.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ FileCopyRecursive ])) ];
ctanupload.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ HTMLFormatter WWWMechanize ])) ];
exceltex.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ SpreadsheetParseExcel ])) ];
latex-git-log.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ IPCSystemSimple ])) ];
latexindent.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ FileHomeDir LogDispatch LogLog4perl UnicodeLineBreak YAMLTiny ])) ];
pax.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ FileWhich ])) ];
ptex-fontmaps.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ Tk ])) ];
purifyeps.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ FileWhich ])) ];
svn-multi.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ TimeDate ])) ];
texdoctk.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ Tk ])) ];
ulqda.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ DigestSHA1 ])) ];
#### python packages
pythontex.extraBuildInputs = [ (python3.withPackages (ps: with ps; [ pygments ])) ];
#### other runtime PATH dependencies
a2ping.extraBuildInputs = [ ghostscript_headless ];
bibexport.extraBuildInputs = [ gnugrep ];
checklistings.extraBuildInputs = [ coreutils ];
cjk-gs-integrate.extraBuildInputs = [ ghostscript_headless ];
context.extraBuildInputs = [ coreutils ruby ];
cyrillic-bin.extraBuildInputs = [ coreutils gnused ];
dtxgen.extraBuildInputs = [ coreutils getopt gnumake zip ];
dviljk.extraBuildInputs = [ coreutils ];
epspdf.extraBuildInputs = [ ghostscript_headless ];
epstopdf.extraBuildInputs = [ ghostscript_headless ];
fragmaster.extraBuildInputs = [ ghostscript_headless ];
installfont.extraBuildInputs = [ coreutils getopt gnused ];
latexfileversion.extraBuildInputs = [ coreutils gnugrep gnused ];
listings-ext.extraBuildInputs = [ coreutils getopt ];
ltxfileinfo.extraBuildInputs = [ coreutils getopt gnused ];
ltximg.extraBuildInputs = [ ghostscript_headless ];
luaotfload.extraBuildInputs = [ ncurses ];
makeindex.extraBuildInputs = [ coreutils gnused ];
pagelayout.extraBuildInputs = [ gnused ncurses ];
pdfcrop.extraBuildInputs = [ ghostscript_headless ];
pdftex.extraBuildInputs = [ coreutils ghostscript_headless gnused ];
pdftex-quiet.extraBuildInputs = [ coreutils ];
pdfxup.extraBuildInputs = [ coreutils ghostscript_headless ];
pkfix-helper.extraBuildInputs = [ ghostscript_headless ];
ps2eps.extraBuildInputs = [ ghostscript_headless ];
pst2pdf.extraBuildInputs = [ ghostscript_headless ];
tex4ht.extraBuildInputs = [ ruby ];
texlive-scripts.extraBuildInputs = [ gnused ];
texlive-scripts-extra.extraBuildInputs = [ coreutils findutils ghostscript_headless gnused ];
thumbpdf.extraBuildInputs = [ ghostscript_headless ];
tpic2pdftex.extraBuildInputs = [ gawk ];
wordcount.extraBuildInputs = [ coreutils gnugrep ];
xdvi.extraBuildInputs = [ coreutils gnugrep ];
xindy.extraBuildInputs = [ gzip ];
#### adjustments to binaries
# TODO patch the scripts from bin.* directly in bin.* instead of here
# TODO we do not build binaries for the following packages (yet!)
biber-ms.binfiles = [];
xpdfopen.binfiles = [];
# mptopdf is a format link, but not generated by texlinks
# so we add it back to binfiles to generate it from mkPkgBin
mptopdf.binfiles = (orig.mptopdf.binfiles or []) ++ [ "mptopdf" ];
# mktexlsr distributed by texlive.infra has implicit dependencies (e.g. kpsestat)
# the perl one hidden in texlive-scripts is better behaved
"texlive.infra".binfiles = lib.remove "mktexlsr" orig."texlive.infra".binfiles;
# remove man, add mktexlsr
texlive-scripts.binfiles = (lib.remove "man" orig.texlive-scripts.binfiles) ++ [ "mktexlsr" ];
# upmendex is "TODO" in bin.nix
uptex.binfiles = lib.remove "upmendex" orig.uptex.binfiles;
# teckit_compile seems to be missing from bin.core{,-big}
# TODO find it!
xetex.binfiles = lib.remove "teckit_compile" orig.xetex.binfiles;
# xindy is broken on some platforms unfortunately
xindy.binfiles = if bin ? xindy
then lib.subtractLists [ "xindy.mem" "xindy.run" ] orig.xindy.binfiles
else [];
#### additional symlinks
cluttex.binlinks = {
cllualatex = "cluttex";
clxelatex = "cluttex";
};
epstopdf.binlinks.repstopdf = "epstopdf";
pdfcrop.binlinks.rpdfcrop = "pdfcrop";
ptex.binlinks = {
pdvitomp = bin.metapost + "/bin/pdvitomp";
pmpost = bin.metapost + "/bin/pmpost";
r-pmpost = bin.metapost + "/bin/r-pmpost";
};
texdef.binlinks = {
latexdef = "texdef";
};
texlive-scripts.binlinks = {
mktexfmt = "fmtutil";
texhash = "mktexlsr";
};
texlive-scripts-extra.binlinks = {
allec = "allcm";
kpsepath = "kpsetool";
kpsexpand = "kpsetool";
};
# metapost binaries are in bin.metapost instead of bin.core
uptex.binlinks = {
r-upmpost = bin.metapost + "/bin/r-upmpost";
updvitomp = bin.metapost + "/bin/updvitomp";
upmpost = bin.metapost + "/bin/upmpost";
};
#### add PATH dependencies without wrappers
# TODO deduplicate this code
a2ping.postFixup = ''
sed -i '6i$ENV{PATH}='"'"'${lib.makeBinPath a2ping.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/a2ping
'';
bibexport.postFixup = ''
sed -i '2iPATH="${lib.makeBinPath bibexport.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/bibexport
'';
checklistings.postFixup = ''
sed -i '2iPATH="${lib.makeBinPath checklistings.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/checklistings
'';
cjk-gs-integrate.postFixup = ''
sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath cjk-gs-integrate.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/cjk-gs-integrate
'';
context.postFixup = ''
sed -i '2iPATH="${lib.makeBinPath [ coreutils ]}''${PATH:+:$PATH}"' "$out"/bin/{contextjit,mtxrunjit}
sed -i '2iPATH="${lib.makeBinPath [ ruby ]}''${PATH:+:$PATH}"' "$out"/bin/texexec
'';
cyrillic-bin.postFixup = ''
sed -i '2iPATH="${lib.makeBinPath cyrillic-bin.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/rumakeindex
'';
dtxgen.postFixup = ''
sed -i '2iPATH="${lib.makeBinPath dtxgen.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/dtxgen
'';
dviljk.postFixup = ''
sed -i '2iPATH="${lib.makeBinPath dviljk.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/dvihp
'';
epstopdf.postFixup = ''
sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath epstopdf.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/epstopdf
'';
fragmaster.postFixup = ''
sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath fragmaster.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/fragmaster
'';
installfont.postFixup = ''
sed -i '2iPATH="${lib.makeBinPath installfont.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/installfont-tl
'';
latexfileversion.postFixup = ''
sed -i '2iPATH="${lib.makeBinPath latexfileversion.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/latexfileversion
'';
listings-ext.postFixup = ''
sed -i '2iPATH="${lib.makeBinPath listings-ext.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/listings-ext.sh
'';
ltxfileinfo.postFixup = ''
sed -i '2iPATH="${lib.makeBinPath ltxfileinfo.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/ltxfileinfo
'';
ltximg.postFixup = ''
sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath ltximg.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/ltximg
'';
luaotfload.postFixup = ''
sed -i '2ios.setenv("PATH","${lib.makeBinPath luaotfload.extraBuildInputs}" .. (os.getenv("PATH") and ":" .. os.getenv("PATH") or ""))' "$out"/bin/luaotfload-tool
'';
makeindex.postFixup = ''
sed -i '2iPATH="${lib.makeBinPath makeindex.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/mkindex
'';
pagelayout.postFixup = ''
sed -i '2iPATH="${lib.makeBinPath [ gnused ]}''${PATH:+:$PATH}"' "$out"/bin/pagelayoutapi
sed -i '2iPATH="${lib.makeBinPath [ ncurses ]}''${PATH:+:$PATH}"' "$out"/bin/textestvis
'';
pdfcrop.postFixup = ''
sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath pdfcrop.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/pdfcrop
'';
pdftex.postFixup = ''
sed -i -e '2iPATH="${lib.makeBinPath [ coreutils gnused ]}''${PATH:+:$PATH}"' \
-e 's!^distillerpath="/usr/local/bin"$!distillerpath="${lib.makeBinPath [ ghostscript_headless ]}"!' \
"$out"/bin/simpdftex
'';
pdftex-quiet.postFixup = ''
sed -i '2iPATH="${lib.makeBinPath pdftex-quiet.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/pdftex-quiet
'';
pdfxup.postFixup = ''
sed -i '2iPATH="${lib.makeBinPath pdfxup.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/pdfxup
'';
pkfix-helper.postFixup = ''
sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath pkfix-helper.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/pkfix-helper
'';
ps2eps.postFixup = ''
sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath ps2eps.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/ps2eps
'';
pst2pdf.postFixup = ''
sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath pst2pdf.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/pst2pdf
'';
tex4ht.postFixup = ''
sed -i -e '2iPATH="${lib.makeBinPath tex4ht.extraBuildInputs}''${PATH:+:$PATH}"' -e 's/\\rubyCall//g;' "$out"/bin/htcontext
'';
texlive-scripts.postFixup = ''
sed -i '2iPATH="${lib.makeBinPath texlive-scripts.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/{fmtutil-user,mktexmf,mktexpk,mktextfm,updmap-user}
'';
thumbpdf.postFixup = ''
sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath thumbpdf.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/thumbpdf
'';
tpic2pdftex.postFixup = ''
sed -i '2iPATH="${lib.makeBinPath tpic2pdftex.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/tpic2pdftex
'';
wordcount.postFixup = ''
sed -i '2iPATH="${lib.makeBinPath wordcount.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/wordcount
'';
# TODO patch in bin.xdvi
xdvi.postFixup = ''
sed -i '2iPATH="${lib.makeBinPath xdvi.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/xdvi
'';
xindy.postFixup = ''
sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath xindy.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/{texindy,xindy}
'';
#### other script fixes
# misc tab and python3 fixes
ebong.postFixup = ''
sed -Ei 's/import sre/import re/; s/file\(/open(/g; s/\t/ /g; s/print +(.*)$/print(\1)/g' "$out"/bin/ebong
'';
# find files in script directory, not binary directory
# add runtime dependencies to PATH
epspdf.postFixup = ''
sed -i '2ios.setenv("PATH","${lib.makeBinPath epspdf.extraBuildInputs}" .. (os.getenv("PATH") and ":" .. os.getenv("PATH") or ""))' "$out"/bin/epspdf
substituteInPlace "$out"/bin/epspdftk --replace '[info script]' "\"$scriptsFolder/epspdftk.tcl\""
'';
# find files in script directory, not in binary directory
latexindent.postFixup = ''
substituteInPlace "$out"/bin/latexindent --replace 'use FindBin;' "BEGIN { \$0 = '$scriptsFolder' . '/latexindent.pl'; }; use FindBin;"
'';
# make tlmgr believe it can use kpsewhich to evaluate TEXMFROOT
"texlive.infra".postFixup = ''
substituteInPlace "$out"/bin/tlmgr \
--replace 'if (-r "$bindir/$kpsewhichname")' 'if (1)'
'';
# Patch texlinks.sh back to 2015 version;
# otherwise some bin/ links break, e.g. xe(la)tex.
# add runtime dependencies to PATH
texlive-scripts-extra.postFixup = ''
patch -R "$out"/bin/texlinks < '${./texlinks.diff}'
sed -i '2iPATH="${lib.makeBinPath [ coreutils ]}''${PATH:+:$PATH}"' "$out"/bin/{allcm,dvired,mkocp,ps2frag}
sed -i '2iPATH="${lib.makeBinPath [ coreutils findutils ]}''${PATH:+:$PATH}"' "$out"/bin/allneeded
sed -i '2iPATH="${lib.makeBinPath [ coreutils ghostscript_headless ]}''${PATH:+:$PATH}"' "$out"/bin/dvi2fax
sed -i '2iPATH="${lib.makeBinPath [ gnused ]}''${PATH:+:$PATH}"' "$out"/bin/{kpsetool,texconfig,texconfig-sys}
sed -i '2iPATH="${lib.makeBinPath [ coreutils gnused ]}''${PATH:+:$PATH}"' "$out"/bin/texconfig-dialog
'';
# patch interpreter
texosquery.postFixup = ''
substituteInPlace "$out"/bin/* --replace java "$interpJava"
'';
#### dependency changes
# it seems to need it to transform fonts
xdvi.deps = (orig.xdvi.deps or []) ++ [ "metafont" ];
# TODO: remove when updating to texlive-2023, metadata has been corrected in the TeX catalogue
# tlpdb lists license as "unknown", but the README says lppl13: http://mirrors.ctan.org/language/arabic/arabi-add/README
arabi-add.license = [ "lppl13c" ];
# TODO: remove this when updating to texlive-2023, npp-for-context is no longer in texlive
# tlpdb lists license as "noinfo", but it's gpl3: https://github.com/luigiScarso/context-npp
npp-for-context.license = [ "gpl3Only" ];
# remove dependency-heavy packages from the basic collections
collection-basic.deps = lib.subtractLists [ "metafont" "xdvi" ] orig.collection-basic.deps;
@ -58,6 +376,15 @@ let
collection-metapost.deps = orig.collection-metapost.deps ++ [ "metafont" ];
collection-plaingeneric.deps = orig.collection-plaingeneric.deps ++ [ "xdvi" ];
#### misc
# tlpdb lists license as "unknown", but the README says lppl13: http://mirrors.ctan.org/language/arabic/arabi-add/README
arabi-add.license = [ "lppl13c" ];
# TODO: remove this when updating to texlive-2023, npp-for-context is no longer in texlive
# tlpdb lists license as "noinfo", but it's gpl3: https://github.com/luigiScarso/context-npp
npp-for-context.license = [ "gpl3Only" ];
texdoc = {
extraRevision = ".tlpdb${toString tlpdbVersion.revision}";
extraVersion = "-tlpdb-${toString tlpdbVersion.revision}";
@ -91,27 +418,27 @@ let
pkg = attrs // {
sha512 = attrs.sha512.${if tlType == "tlpkg" then "run" else tlType};
inherit pname tlType version;
} // lib.optionalAttrs (attrs.hasManpages or false) {
hasManpages = true;
};
in mkPkg pkg;
run = if (attrs.hasRunfiles or false) then mkPkgV "run"
# the fake derivations are used for filtering of hyphenation patterns and formats
else ({
inherit pname version;
tlType = "run";
hasHyphens = attrs.hasHyphens or false;
tlDeps = map (n: tl.${n}) (attrs.deps or []);
} // lib.optionalAttrs (attrs ? formats) { inherit (attrs) formats; });
in {
# TL pkg contains lists of packages: runtime files, docs, sources, tlpkg, binaries
pkgs =
# tarball of a collection/scheme itself only contains a tlobj file
[( if (attrs.hasRunfiles or false) then mkPkgV "run"
# the fake derivations are used for filtering of hyphenation patterns and formats
else {
inherit pname version;
tlType = "run";
hasFormats = attrs.hasFormats or false;
hasHyphens = attrs.hasHyphens or false;
tlDeps = map (n: tl.${n}) (attrs.deps or []);
}
)]
[ run ]
++ lib.optional (attrs.sha512 ? doc) (mkPkgV "doc")
++ lib.optional (attrs.sha512 ? source) (mkPkgV "source")
++ lib.optional (attrs.hasTlpkg or false) (mkPkgV "tlpkg")
++ lib.optional (bin ? ${pname})
( bin.${pname} // { tlType = "bin"; } );
++ lib.optional (attrs ? binfiles && attrs.binfiles != []) (mkPkgBin pname version run attrs);
};
version = {
@ -167,8 +494,46 @@ let
# name + version for the derivation
mkTLName = { tlType, version, extraVersion ? "", ... }@attrs: mkURLName attrs + (lib.optionalString (tlType == "tlpkg") ".tlpkg") + "-${version}${extraVersion}";
# build tlType == "bin" containers based on `binfiles` in TLPDB
# see UPGRADING.md for how to keep the list of shebangs up to date
mkPkgBin = let extToInput = {
jar = jdk;
lua = bin.luatex;
py = python3;
rb = ruby;
sno = snobol4;
tcl = tk;
texlua = bin.luatex;
tlu = bin.luatex;
}; in pname: version: run:
{ binfiles, scriptsFolder ? pname, postFixup ? "", scriptExts ? [], extraBuildInputs ? [], binlinks ? {}, ... }@args:
runCommand "texlive-${pname}.bin-${version}"
{
# metadata for texlive.combine
passthru = {
inherit pname version;
tlType = "bin";
};
# shebang interpreters
buildInputs = extraBuildInputs ++ [ bash perl ] ++ (lib.attrVals scriptExts extToInput);
# absolute scripts folder
scriptsFolder = lib.optionalString (run ? outPath) (run.outPath + "/scripts/" + scriptsFolder);
# binaries info
inherit binfiles;
binlinks = builtins.attrNames binlinks;
bintargets = builtins.attrValues binlinks;
binfolders = [ (lib.getBin bin.core) ] ++ lib.optional (bin ? ${pname}) (lib.getBin bin.${pname});
# build scripts
patchScripts = ./patch-scripts.sed;
makeBinContainers = ./make-bin-containers.sh;
}
''
. "$makeBinContainers"
${postFixup}
'';
# create a derivation that contains an unpacked upstream TL package
mkPkg = { pname, tlType, revision, version, sha512, extraRevision ? "", postUnpack ? "", stripPrefix ? 1, ... }@args:
mkPkg = { pname, tlType, revision, version, sha512, extraRevision ? "", postUnpack ? "", stripPrefix ? 1, hasManpages ? false, ... }@args:
let
# the basename used by upstream (without ".tar.xz" suffix)
urlName = mkURLName args;
@ -191,11 +556,12 @@ let
} // lib.optionalAttrs (tlType == "run" && args ? deps) {
tlDeps = map (n: tl.${n}) args.deps;
} // lib.optionalAttrs (tlType == "run") {
hasFormats = args.hasFormats or false;
hasHyphens = args.hasHyphens or false;
} // lib.optionalAttrs (tlType == "tlpkg" && args ? postactionScript) {
postactionScript = args.postactionScript;
};
}
// lib.optionalAttrs (tlType == "run" && args ? formats) { inherit (args) formats; }
// lib.optionalAttrs (tlType == "doc" && hasManpages) { hasManpages = true; };
} // lib.optionalAttrs (fixedHash != null) {
outputHash = fixedHash;
outputHashAlgo = "sha256";
@ -250,7 +616,10 @@ in
xz = tlpdbxz;
};
bin = assert assertions; bin;
bin = assert assertions; bin // {
# for backward compatibility
latexindent = lib.findFirst (p: p.tlType == "bin") tl.latexindent.pkgs;
};
combine = assert assertions; combine;
# Pre-defined combined packages for TeX Live schemes,

View File

@ -8629,6 +8629,7 @@
"texlive-fr.doc.r63071"="120jahzjmak3shjhiy81gv6nk3c1hv4rrxyi1mmzi1xklxjlhl4b";
"texlive-it.doc.r58653"="0vmwn6n8bxpzcfrzic5qg5k2vklbm6rhl9861zxsli0rd9396qn6";
"texlive-ja.doc.r62817"="1h2rv13ip3bgmfz8q64abqx3ajla9mc02a50xz1nzmng0rmgz04r";
"texlive-msg-translations.tlpkg.r65889"="03bshv5xacw01ssbpd5wmz4ryym3dc27l8mwyh652i8gd2lg0scm";
"texlive-pl.doc.r62841"="19qab4nd9z87v9dpx7gh2a87rw8k4x6kqzg5yc7wqmf46pfjmpcw";
"texlive-ru.doc.r58426"="0c77yyfj87fajran8jppj0x8krk6b5195iscpn8z2n94spz2fcc9";
"texlive-scripts.r66570"="0hl1vjr4hr7q7s2pvizicmabb185df5rl84cjsz0ki7vai5mh7pq";

View File

@ -0,0 +1,62 @@
# load realpath
loadables="$(command -v bash)"
loadables="${loadables%/bin/bash}/lib/bash"
enable -f "$loadables/realpath" realpath
mkdir -p "$out/bin"
# find interpreters
export interpPerl="$(PATH="$HOST_PATH" command -v perl)"
export interpJava="$(PATH="$HOST_PATH" command -v java || :)"
export interpWish="$(PATH="$HOST_PATH" command -v wish || :)"
# prepare sed script
substituteAll "$patchScripts" patch-scripts.sed
for binname in $binfiles ; do
# binlinks to be created last, after the other binaries are in place
if [[ " $binlinks " == *" $binname "* ]] ; then
continue
fi
output="$out/bin/$binname"
# look for existing binary from bin.core or bin.${pname}
for folder in $binfolders ; do
target="$folder"/bin/"$binname"
if [[ -f "$target" && -x "$target" ]] ; then
ln -s "$(realpath "$target")" "$output"
continue 2
fi
done
# look for scripts
# the explicit list of extensions avoid non-scripts such as $binname.cmd, $binname.jar, $binname.pm
# the order is relevant: $binname.sh is preferred to other $binname.*
if [[ -n "$scriptsFolder" ]] ; then
for script in "$scriptsFolder/$binname"{,.sh,.lua,.pl,.py,.rb,.sno,.tcl,.texlua,.tlu}; do
if [[ -f "$script" ]] ; then
sed -f patch-scripts.sed \
-e 's/^scriptname=`basename "\$0"`$/'"scriptname='$(basename "$binname")'/" \
-e 's/^scriptname=`basename "\$0" .sh`$'"/scriptname='$(basename "$binname" .sh)'/" \
"$script" > "$output"
chmod +x "$output"
continue 2
fi
done
fi
echo "error: could not find source for 'bin/$binname'" >&2
exit 1
done
# patch shebangs
patchShebangs "$out/bin"
# generate links
# we canonicalise the source to avoid symlink chains, and to check that it exists
cd "$out"/bin
for alias in $binlinks ; do
target="${bintargets%% *}"
bintargets="${bintargets#* }"
ln -s "$(realpath "$target")" "$out/bin/$alias"
done

View File

@ -0,0 +1,57 @@
1{
/python/{
N;
# add script folder to path, unless we interfere with a docstring
/\nr"""/b skip-python-path-patch
s!\n!\nimport sys; sys.path.insert(0,'@scriptsFolder@')\n!
:skip-python-path-patch
}
/^#!.*perl/{
# add script folder to @INC
s!$! -I@scriptsFolder@!
}
/^eval/{
# most likely the weird perl shebang
N
/^eval '(exit \$?0)' && eval 'exec perl -S \$0 \${1+"\$@"}' && eval 'exec perl -S \$0 \$argv:q'\n *if 0;$/{
x; s/.*/patching weird perl shebang/; w /dev/stderr
x; s|^.*$|#!@interpPerl@ -I@scriptsFolder@|
}
}
}
# patch 'exec interpreter'
/exec java /{
x; s/.*/patching exec java/; w /dev/stderr
x; s|exec java |exec '@interpJava@' |g
/exec ''/{
x; s/^.*$/error: java missing from PATH/; w /dev/stderr
q 1
}
}
/exec perl /{
x; s/.*/patching exec perl/; w /dev/stderr
x; s|exec perl |exec @interpPerl@ -I@scriptsFolder@ |g
/exec ''/{
x; s/^.*$/error: perl missing from PATH/; w /dev/stderr
q 1
}
}
/exec wish /{
x; s/.*/patching exec wish/; w /dev/stderr
x; s|exec wish |exec '@interpWish@' |g
/exec ''/{
x; s/^.*$/error: wish missing from PATH/; w /dev/stderr
q 1
}
}
# make jar wrappers work without kpsewhich
s!^jarpath=`kpsewhich --progname=[^ ]* --format=texmfscripts \([^ ]*\)`$!jarpath=@scriptsFolder@/\1!g
# replace CYGWIN grep test with bash builtin
s!echo "$kernel" | grep CYGWIN >/dev/null;![[ "$kernel" == *CYGWIN* ]]!g

View File

@ -81,6 +81,20 @@ $a}
}
# detect presence of notable files
/^docfiles /{
s/^.*$// # ignore the first line
# read all files
:next-doc
N
s/\n / / # remove newline
t next-doc # loop if the previous lines matched
/ (texmf-dist|RELOC)\/doc\/man\//i\ hasManpages = true;
D # restart cycle
}
/^runfiles /{
s/^.*$// # ignore the first line
@ -89,9 +103,25 @@ $a}
N
s/\n / / # remove newline
t next-file # loop if previous line matched
s/\n/ \n/ # add space before last newline for accurate matching below
/ (RELOC|texmf-dist)\//i\ hasRunfiles = true;
/ tlpkg\//i\ hasTlpkg = true;
# extract script extensions
/ texmf-dist\/scripts\/.*\.(jar|lua|py|rb|sno|tcl|texlua|tlu) /{
i\ scriptExts = [
/ texmf-dist\/scripts\/.*\.jar /i\ "jar"
/ texmf-dist\/scripts\/.*\.lua /i\ "lua"
/ texmf-dist\/scripts\/.*\.py /i\ "py"
/ texmf-dist\/scripts\/.*\.rb /i\ "rb"
/ texmf-dist\/scripts\/.*\.sno /i\ "sno"
/ texmf-dist\/scripts\/.*\.tcl /i\ "tcl"
/ texmf-dist\/scripts\/.*\.texlua /i\ "texlua"
/ texmf-dist\/scripts\/.*\.tlu /i\ "tlu"
i\ ];
}
D # restart cycle from the current line
}
@ -101,8 +131,50 @@ $a}
# extract hyphenation patterns and formats
# (this may create duplicate lines, use uniq to remove them)
/^execute\sAddHyphen/i\ hasHyphens = true;
/^execute\sAddFormat/i\ hasFormats = true;
# extract format details
/^execute\sAddFormat\s/{
# open a list
i\ formats = [
# create one attribute set per format
# note that format names are not unique
# plain keys: name, engine, patterns
# optionally double quoted key: options
# boolean key: mode (enabled/disabled)
# comma-separated lists: fmttriggers, patterns
:next-fmt
s/(^|\n)execute\sAddFormat/ {/
s/\s+options="([^"]+)"/\n options = "\1";/
s/\s+(name|engine|options)=([^ \t\n]+)/\n \1 = "\2";/g
s/\s+mode=enabled//
s/\s+mode=disabled/\n enabled = false;/
s/\s+(fmttriggers|patterns)=([^ \t\n]+)/\n \1 = [ "\2" ];/g
s/$/\n }/
:split-triggers
s/"([^,]+),([^"]+)" ]/"\1" "\2" ]/;
t split-triggers # repeat until there are no commas
p
s/^.*$// # clear pattern space
N
/^\nexecute\sAddFormat\s/b next-fmt
# close the list
i\ ];
D # restart cycle from the current line
}
# close attrmap
/^$/i};
}
# add list of binaries from one of the architecture-specific packages
/^name ([^.]+|texlive\.infra)\.x86_64-linux$/,/^$/{
s/^name ([0-9].*|texlive\.infra)\.x86_64-linux$/"\1".binfiles = [/p
s/^name (.*)\.x86_64-linux$/\1.binfiles = [/p
s!^ bin/x86_64-linux/(.+)$! "\1"!p
/^$/i];
}

File diff suppressed because it is too large Load Diff

View File

@ -31,5 +31,6 @@ stdenv.mkDerivation rec {
license = licenses.mit;
platforms = platforms.linux;
maintainers = with maintainers; [ justinlovinger ];
mainProgram = "wtype";
};
}

View File

@ -1806,6 +1806,8 @@ with pkgs;
kubevirt = callPackage ../tools/virtualization/kubevirt { };
lektor = callPackage ../tools/misc/lektor { };
licenseclassifier = callPackage ../development/tools/misc/licenseclassifier { };
license-cli = callPackage ../tools/misc/license-cli { };
@ -1816,6 +1818,8 @@ with pkgs;
linux-router-without-wifi = linux-router.override { useWifiDependencies = false; };
markdownlint-cli = callPackage ../tools/text/markdownlint-cli { };
mbidled = callPackage ../tools/networking/mbidled { };
metapixel = callPackage ../tools/graphics/metapixel { };
@ -3358,7 +3362,7 @@ with pkgs;
httpServer = true;
};
antennas = nodePackages.antennas;
antennas = callPackage ../servers/antennas { };
apg = callPackage ../tools/security/apg { };
@ -3455,7 +3459,7 @@ with pkgs;
calls = callPackage ../applications/networking/calls { };
inherit (nodePackages) castnow;
castnow = callPackage ../tools/networking/castnow { };
castty = callPackage ../tools/misc/castty { };
@ -5883,7 +5887,7 @@ with pkgs;
mq-cli = callPackage ../tools/system/mq-cli { };
mrkd = with python3Packages; toPythonApplication mrkd;
mrkd = callPackage ../tools/text/mrkd { };
naproche = callPackage ../applications/science/logic/naproche { };
@ -18188,6 +18192,8 @@ with pkgs;
espup = callPackage ../development/tools/espup { };
karma-runner = callPackage ../development/tools/karma-runner { };
phpunit = callPackage ../development/tools/misc/phpunit { };
teller = callPackage ../development/tools/teller { };
@ -32119,7 +32125,7 @@ with pkgs;
hue-cli = callPackage ../tools/networking/hue-cli { };
inherit (nodePackages) hueadm;
hueadm = callPackage ../tools/misc/hueadm { };
hugin = callPackage ../applications/graphics/hugin {
wxGTK = wxGTK32;
@ -36591,7 +36597,7 @@ with pkgs;
aperture = callPackage ../applications/blockchains/aperture { };
balanceofsatoshis = nodePackages.balanceofsatoshis;
balanceofsatoshis = callPackage ../tools/misc/balanceofsatoshis { };
bitcoin = libsForQt5.callPackage ../applications/blockchains/bitcoin {
stdenv = if stdenv.isDarwin then darwin.apple_sdk_11_0.stdenv else stdenv;

View File

@ -186,6 +186,7 @@ mapAliases ({
Keras = keras; # added 2021-11-25
ldap = python-ldap; # added 2022-09-16
lammps-cython = throw "lammps-cython no longer builds and is unmaintained"; # added 2021-07-04
lektor = throw "lektor has been promoted to a top-level attribute"; # added 2023-08-01
logilab_astng = throw "logilab-astng has not been released since 2013 and is unmaintained"; # added 2022-11-29
logilab_common = logilab-common; # added 2022-11-21
loo-py = loopy; # added 2022-05-03
@ -204,6 +205,7 @@ mapAliases ({
mistune_0_8 = throw "mistune_0_8 was removed because it was outdated and insecure"; # added 2022-08-12
mistune_2_0 = mistune; # added 2022-08-12
mox = throw "mox was removed because it is unmaintained"; # added 2023-02-21
mrkd = throw "mrkd has been promoted to a top-level attribute"; # added 2023-08-01
mutmut = throw "mutmut has been promoted to a top-level attribute"; # added 2022-10-02
net2grid = gridnet; # add 2022-04-22
nghttp2 = throw "in 1.52.0 removed deprecated python bindings."; # added 2023-06-08

View File

@ -5813,8 +5813,6 @@ self: super: with self; {
igraph-c = pkgs.igraph;
};
lektor = callPackage ../development/python-modules/lektor { };
leveldb = callPackage ../development/python-modules/leveldb { };
levenshtein = callPackage ../development/python-modules/levenshtein { };
@ -6712,8 +6710,6 @@ self: super: with self; {
mrjob = callPackage ../development/python-modules/mrjob { };
mrkd = callPackage ../development/python-modules/mrkd { };
ms-active-directory = callPackage ../development/python-modules/ms-active-directory { };
ms-cv = callPackage ../development/python-modules/ms-cv { };