Merge staging-next into staging
This commit is contained in:
commit
ad17f02de7
76 changed files with 3653 additions and 699 deletions
|
@ -16183,6 +16183,12 @@
|
|||
githubId = 39039420;
|
||||
name = "Quinn Dougherty";
|
||||
};
|
||||
qusic = {
|
||||
email = "qusicx@gmail.com";
|
||||
github = "Qusic";
|
||||
githubId = 2141853;
|
||||
name = "Bang Lee";
|
||||
};
|
||||
qyliss = {
|
||||
email = "hi@alyssa.is";
|
||||
github = "alyssais";
|
||||
|
|
|
@ -47,7 +47,7 @@ in
|
|||
after = [ "network.target" ];
|
||||
serviceConfig = {
|
||||
DynamicUser = true;
|
||||
ExecStart = "${cfg.package}/bin/libreddit ${args}";
|
||||
ExecStart = "${lib.getExe cfg.package} ${args}";
|
||||
AmbientCapabilities = lib.mkIf (cfg.port < 1024) [ "CAP_NET_BIND_SERVICE" ];
|
||||
Restart = "on-failure";
|
||||
RestartSec = "2s";
|
||||
|
|
|
@ -53,9 +53,6 @@ appimageTools.wrapType2 rec {
|
|||
'';
|
||||
|
||||
meta = with lib; {
|
||||
# trezor-suite fails to detect a connected hardware wallet
|
||||
# ref: https://github.com/NixOS/nixpkgs/issues/281975
|
||||
broken = true;
|
||||
description = "Trezor Suite - Desktop App for managing crypto";
|
||||
homepage = "https://suite.trezor.io";
|
||||
changelog = "https://github.com/trezor/trezor-suite/releases/tag/v${version}";
|
||||
|
|
|
@ -38,14 +38,14 @@ let
|
|||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mame";
|
||||
version = "0.263";
|
||||
version = "0.264";
|
||||
srcVersion = builtins.replaceStrings [ "." ] [ "" ] version;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mamedev";
|
||||
repo = "mame";
|
||||
rev = "mame${srcVersion}";
|
||||
hash = "sha256-6MH4dMGOekiiq4yE68dIAiWWfvQvFcvqKtT/Z1SQ1aY=";
|
||||
hash = "sha256-0UWMBKM//XWm8PFl60JvTLGaDBMVZFnVrbX4omy2F4I=";
|
||||
};
|
||||
|
||||
outputs = [ "out" "tools" ];
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "komikku";
|
||||
version = "1.38.1";
|
||||
version = "1.39.0";
|
||||
|
||||
format = "other";
|
||||
|
||||
|
@ -28,7 +28,7 @@ python3.pkgs.buildPythonApplication rec {
|
|||
owner = "valos";
|
||||
repo = "Komikku";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-eVNW8Iuhee9WBbiXP7ijvd0K44/IpwdrdiT4RkBNcxI=";
|
||||
hash = "sha256-bAk+F81q0sPSgU8LkpniVJyKaQt6cxUaUzNSZ3f5v0Q=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -58,13 +58,13 @@ let
|
|||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "bambu-studio";
|
||||
version = "01.08.04.51";
|
||||
version = "01.09.00.60";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bambulab";
|
||||
repo = "BambuStudio";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-rqD1+3Q4ZUBgS57iCItuLX6ZMP7VQuedaJmgKB1szgs=";
|
||||
hash = "sha256-LJK+hGhBXCewbNIBA8CeE01vMQ/n1mO+bervN/y45P0=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
, libXdmcp
|
||||
, conf ? null
|
||||
, patches ? [ ]
|
||||
# update script dependencies
|
||||
, gitUpdater
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
|
@ -36,11 +38,13 @@ stdenv.mkDerivation rec {
|
|||
|
||||
installFlags = [ "PREFIX=$(out)" ];
|
||||
|
||||
passthru.updateScript = gitUpdater {};
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://tools.suckless.org/slstatus/";
|
||||
description = "status monitor for window managers that use WM_NAME like dwm";
|
||||
license = licenses.isc;
|
||||
maintainers = with maintainers; [ oxzi ];
|
||||
maintainers = with maintainers; [ oxzi qusic ];
|
||||
platforms = platforms.linux;
|
||||
mainProgram = "slstatus";
|
||||
};
|
||||
|
|
|
@ -6,19 +6,19 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "coreth";
|
||||
version = "0.13.1";
|
||||
version = "0.13.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ava-labs";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-Fdc8U5dN31mfeucmYdi3R+EM5wPvm/i3O1ib3Y30Qng=";
|
||||
hash = "sha256-G3Ovu/tF7gCeddmE91nht/yyqJJtgMyIi7YbTtUFyKo=";
|
||||
};
|
||||
|
||||
# go mod vendor has a bug, see: golang/go#57529
|
||||
proxyVendor = true;
|
||||
|
||||
vendorHash = "sha256-oJ/oz3PtkzEwZw93eoZV2hoD1uOWg2qdxgsvM+nX7mk=";
|
||||
vendorHash = "sha256-IJFRtoDd0GO8mIx8mmGixaYK5JDQeSpUfk0MPPX6cX8=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
|
|
|
@ -16,13 +16,13 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "surelog";
|
||||
version = "1.80";
|
||||
version = "1.82";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "chipsalliance";
|
||||
repo = finalAttrs.pname;
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-jpt/5h0HnkiJowyVDoMSyiuL6/dokB4xg1sdyctHrDs=";
|
||||
hash = "sha256-iW2mQPmKfbAWaiEURyVly5IjJ3YpXjVBkm/UbUuwb6k=";
|
||||
fetchSubmodules = false; # we use all dependencies from nix
|
||||
};
|
||||
|
||||
|
|
|
@ -10,13 +10,13 @@
|
|||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "UHDM";
|
||||
# When updating this package, also consider updating science/logic/surelog
|
||||
version = "1.80";
|
||||
version = "1.82";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "chipsalliance";
|
||||
repo = finalAttrs.pname;
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-/aWiN+DPlIjI89u5kx6QoyrGD4DOJTHXxIZ0qHJNDls=";
|
||||
hash = "sha256-sl83l6nLN/bluED5bnFShviD1Vv8hmRazxIcLUg/ego=";
|
||||
fetchSubmodules = false; # we use all dependencies from nix
|
||||
};
|
||||
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gurobi";
|
||||
version = "9.5.1";
|
||||
version = "11.0.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://packages.gurobi.com/${lib.versions.majorMinor version}/gurobi${version}_linux64.tar.gz";
|
||||
sha256 = "sha256-+oKFnTPwj7iuudpmsPvZFxjtVzxTT1capSNyyd64kdo=";
|
||||
hash = "sha256-oZ7Oz22e4k6cVF3TDFxp/pE+RuU+3p/CatTWj1ci5ZY=";
|
||||
};
|
||||
|
||||
sourceRoot = "gurobi${builtins.replaceStrings ["."] [""] version}/linux64";
|
||||
|
@ -52,6 +52,6 @@ stdenv.mkDerivation rec {
|
|||
];
|
||||
license = licenses.unfree;
|
||||
platforms = [ "x86_64-linux" ];
|
||||
maintainers = with maintainers; [ ];
|
||||
maintainers = with maintainers; [ wegank ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gitstatus";
|
||||
version = "1.5.4";
|
||||
version = "1.5.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "romkatv";
|
||||
repo = "gitstatus";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-mVfB3HWjvk4X8bmLEC/U8SKBRytTh/gjjuReqzN5qTk=";
|
||||
sha256 = "sha256-b+9bwJ87VV6rbOPobkwMkDXGH34STjYPlt8wCRR5tEc=";
|
||||
};
|
||||
|
||||
buildInputs = [ (callPackage ./romkatv_libgit2.nix { }) ];
|
||||
|
|
|
@ -62,13 +62,13 @@ in
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "obs-studio";
|
||||
version = "30.1.0";
|
||||
version = "30.1.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "obsproject";
|
||||
repo = finalAttrs.pname;
|
||||
rev = finalAttrs.version;
|
||||
sha256 = "sha256-9rf3UGazEL5Obd6tqDwM5LOC6D1X6HNzs5sn5z1tOCA=";
|
||||
sha256 = "sha256-1/8SsDAEBT8jEXKKQgA9JjUHM4/8UtcELUGFiHBB31g=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
, youtube-dl
|
||||
, glib
|
||||
, ffmpeg
|
||||
, aria
|
||||
, aria2
|
||||
}:
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
|
@ -40,7 +40,7 @@ python3Packages.buildPythonApplication rec {
|
|||
playsound
|
||||
ffmpeg
|
||||
matplotlib
|
||||
aria
|
||||
aria2
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "dwm";
|
||||
version = "6.4";
|
||||
version = "6.5";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://dl.suckless.org/dwm/${pname}-${version}.tar.gz";
|
||||
sha256 = "sha256-+pwNaaWESFB2z8GICf1wXlwggNr7E9XnKaNkbKdwOm4=";
|
||||
sha256 = "sha256-Ideev6ny+5MUGDbCZmy4H0eExp1k5/GyNS+blwuglyk=";
|
||||
};
|
||||
|
||||
buildInputs = [ libX11 libXinerama libXft ];
|
||||
|
|
|
@ -1,97 +0,0 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, asciidoctor
|
||||
, autoreconfHook
|
||||
, cairo
|
||||
, fontconfig
|
||||
, freetype
|
||||
, fribidi
|
||||
, libSM
|
||||
, libX11
|
||||
, libXcursor
|
||||
, libXft
|
||||
, libXi
|
||||
, libXinerama
|
||||
, libXpm
|
||||
, libXrandr
|
||||
, libXt
|
||||
, libevent
|
||||
, libintl
|
||||
, libpng
|
||||
, librsvg
|
||||
, libstroke
|
||||
, libxslt
|
||||
, perl
|
||||
, pkg-config
|
||||
, python3Packages
|
||||
, readline
|
||||
, sharutils
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "fvwm3";
|
||||
version = "1.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "fvwmorg";
|
||||
repo = "fvwm3";
|
||||
rev = finalAttrs.version;
|
||||
hash = "sha256-y1buTWO1vHzloh2e4EK1dkD0uQa7lIFUbNMkEe5x6Vo=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook
|
||||
asciidoctor
|
||||
pkg-config
|
||||
python3Packages.wrapPython
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
cairo
|
||||
fontconfig
|
||||
freetype
|
||||
fribidi
|
||||
libSM
|
||||
libX11
|
||||
libXcursor
|
||||
libXft
|
||||
libXi
|
||||
libXinerama
|
||||
libXpm
|
||||
libXrandr
|
||||
libXt
|
||||
libevent
|
||||
libintl
|
||||
libpng
|
||||
librsvg
|
||||
libstroke
|
||||
libxslt
|
||||
perl
|
||||
python3Packages.python
|
||||
readline
|
||||
sharutils
|
||||
];
|
||||
|
||||
pythonPath = [
|
||||
python3Packages.pyxdg
|
||||
];
|
||||
|
||||
configureFlags = [
|
||||
"--enable-mandoc"
|
||||
];
|
||||
|
||||
postFixup = ''
|
||||
wrapPythonPrograms
|
||||
'';
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "http://fvwm.org";
|
||||
description = "A multiple large virtual desktop window manager - Version 3";
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = with maintainers; [ AndersonTorres ];
|
||||
inherit (libX11.meta) platforms;
|
||||
};
|
||||
})
|
|
@ -1,64 +0,0 @@
|
|||
{ lib, stdenv, fetchzip
|
||||
, pkg-config, bmake
|
||||
, cairo, glib, libevdev, libinput, libxkbcommon, linux-pam, pango, pixman
|
||||
, libucl, wayland, wayland-protocols, wlroots, mesa
|
||||
, features ? {
|
||||
gammacontrol = true;
|
||||
layershell = true;
|
||||
screencopy = true;
|
||||
xwayland = true;
|
||||
}
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "hikari";
|
||||
version = "2.3.3";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://hikari.acmelabs.space/releases/${pname}-${version}.tar.gz";
|
||||
sha256 = "sha256-5Ug0U3ESC5F/gj7bahnLYkeY/weSCj0QASwdFuWwdMI=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config bmake ];
|
||||
|
||||
buildInputs = [
|
||||
cairo
|
||||
glib
|
||||
libevdev
|
||||
libinput
|
||||
libxkbcommon
|
||||
linux-pam
|
||||
pango
|
||||
pixman
|
||||
libucl
|
||||
mesa # for libEGL
|
||||
wayland
|
||||
wayland-protocols
|
||||
wlroots
|
||||
];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
makeFlags = with lib; [ "PREFIX=$(out)" ]
|
||||
++ optional stdenv.isLinux "WITH_POSIX_C_SOURCE=YES"
|
||||
++ mapAttrsToList (feat: enabled:
|
||||
optionalString enabled "WITH_${toUpper feat}=YES"
|
||||
) features;
|
||||
|
||||
postPatch = ''
|
||||
# Can't suid in nix store
|
||||
# Run hikari as root (it will drop privileges as early as possible), or create
|
||||
# a systemd unit to give it the necessary permissions/capabilities.
|
||||
substituteInPlace Makefile --replace '4555' '555'
|
||||
|
||||
sed -i 's@<drm_fourcc.h>@<libdrm/drm_fourcc.h>@' src/*.c
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Stacking Wayland compositor which is actively developed on FreeBSD but also supports Linux";
|
||||
homepage = "https://hikari.acmelabs.space";
|
||||
license = licenses.bsd2;
|
||||
platforms = platforms.linux ++ platforms.freebsd;
|
||||
maintainers = with maintainers; [ jpotier ];
|
||||
};
|
||||
}
|
38
pkgs/by-name/as/ascii-draw/fix_palette_data_dir.patch
Normal file
38
pkgs/by-name/as/ascii-draw/fix_palette_data_dir.patch
Normal file
|
@ -0,0 +1,38 @@
|
|||
diff --git a/src/window.py b/src/window.py
|
||||
index adc6d6d..1cb6bec 100644
|
||||
--- a/src/window.py
|
||||
+++ b/src/window.py
|
||||
@@ -34,6 +34,15 @@ import unicodedata
|
||||
import emoji
|
||||
import os
|
||||
|
||||
+def get_data_dir():
|
||||
+ xdg_data_home = os.environ.get('XDG_DATA_HOME')
|
||||
+ if xdg_data_home and xdg_data_home.strip():
|
||||
+ data_dir = os.path.join(xdg_data_home, 'ascii-draw', 'data')
|
||||
+ else:
|
||||
+ home = os.path.expanduser("~")
|
||||
+ data_dir = os.path.join(home, '.local', 'share', 'ascii-draw', 'data')
|
||||
+ return data_dir
|
||||
+
|
||||
@Gtk.Template(resource_path='/io/github/nokse22/asciidraw/ui/window.ui')
|
||||
class AsciiDrawWindow(Adw.ApplicationWindow):
|
||||
__gtype_name__ = 'AsciiDrawWindow'
|
||||
@@ -266,7 +275,7 @@ class AsciiDrawWindow(Adw.ApplicationWindow):
|
||||
|
||||
self.palettes = []
|
||||
|
||||
- directory_path = "/var/data/palettes"
|
||||
+ directory_path = f"{get_data_dir()}/palettes"
|
||||
os.makedirs(directory_path, exist_ok=True)
|
||||
|
||||
for filename in os.listdir(directory_path):
|
||||
@@ -316,7 +325,7 @@ class AsciiDrawWindow(Adw.ApplicationWindow):
|
||||
self.char_carousel_go_next.set_sensitive(True)
|
||||
|
||||
def save_new_palette(self, palette):
|
||||
- with open(f"/var/data/palettes/{palette.name}.txt", 'w') as file:
|
||||
+ with open(f"{get_data_dir()}/palettes/{palette.name}.txt", 'w') as file:
|
||||
file.write(palette.chars)
|
||||
|
||||
@Gtk.Template.Callback("char_pages_go_back")
|
63
pkgs/by-name/as/ascii-draw/package.nix
Normal file
63
pkgs/by-name/as/ascii-draw/package.nix
Normal file
|
@ -0,0 +1,63 @@
|
|||
{ lib
|
||||
, python3Packages
|
||||
, fetchFromGitHub
|
||||
, meson
|
||||
, ninja
|
||||
, pkg-config
|
||||
, gobject-introspection
|
||||
, wrapGAppsHook4
|
||||
, desktop-file-utils
|
||||
, libadwaita
|
||||
}:
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "ascii-draw";
|
||||
version = "0.3.0";
|
||||
pyproject = false;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Nokse22";
|
||||
repo = "ascii-draw";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-vI+j8OuQ3b6La0+7wWeoUtBal24dazlN/T0Bng5TgMo=";
|
||||
};
|
||||
|
||||
# Temporary fix for autosaving to flatpak directory
|
||||
# https://github.com/Nokse22/ascii-draw/issues/31
|
||||
patches = [ ./fix_palette_data_dir.patch ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
meson
|
||||
ninja
|
||||
pkg-config
|
||||
gobject-introspection
|
||||
wrapGAppsHook4
|
||||
desktop-file-utils
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
libadwaita
|
||||
];
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [
|
||||
pygobject3
|
||||
pyfiglet
|
||||
emoji
|
||||
];
|
||||
|
||||
dontWrapGApps = true;
|
||||
|
||||
preFixup = ''
|
||||
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "An app to draw diagrams or anything using only ASCII";
|
||||
homepage = "https://github.com/Nokse22/ascii-draw";
|
||||
license = lib.licenses.gpl3Plus;
|
||||
mainProgram = "ascii-draw";
|
||||
maintainers = with lib.maintainers; [ aleksana ];
|
||||
# gnulib bindtextdomain is missing on various other unix platforms
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
120
pkgs/by-name/fv/fvwm3/package.nix
Normal file
120
pkgs/by-name/fv/fvwm3/package.nix
Normal file
|
@ -0,0 +1,120 @@
|
|||
{ lib
|
||||
, asciidoctor
|
||||
, autoreconfHook
|
||||
, cairo
|
||||
, fetchFromGitHub
|
||||
, fontconfig
|
||||
, freetype
|
||||
, fribidi
|
||||
, libSM
|
||||
, libX11
|
||||
, libXcursor
|
||||
, libXft
|
||||
, libXi
|
||||
, libXinerama
|
||||
, libXpm
|
||||
, libXrandr
|
||||
, libXt
|
||||
, libevent
|
||||
, libintl
|
||||
, libpng
|
||||
, librsvg
|
||||
, libstroke
|
||||
, libxslt
|
||||
, perl
|
||||
, pkg-config
|
||||
, python3Packages
|
||||
, readline
|
||||
, sharutils
|
||||
, stdenv
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "fvwm3";
|
||||
version = "1.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "fvwmorg";
|
||||
repo = "fvwm3";
|
||||
rev = finalAttrs.version;
|
||||
hash = "sha256-y1buTWO1vHzloh2e4EK1dkD0uQa7lIFUbNMkEe5x6Vo=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook
|
||||
asciidoctor
|
||||
pkg-config
|
||||
python3Packages.wrapPython
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
cairo
|
||||
fontconfig
|
||||
freetype
|
||||
fribidi
|
||||
libSM
|
||||
libX11
|
||||
libXcursor
|
||||
libXft
|
||||
libXi
|
||||
libXinerama
|
||||
libXpm
|
||||
libXrandr
|
||||
libXt
|
||||
libevent
|
||||
libintl
|
||||
libpng
|
||||
librsvg
|
||||
libstroke
|
||||
libxslt
|
||||
perl
|
||||
python3Packages.python
|
||||
readline
|
||||
sharutils
|
||||
];
|
||||
|
||||
pythonPath = [
|
||||
python3Packages.pyxdg
|
||||
];
|
||||
|
||||
configureFlags = [
|
||||
(lib.enableFeature true "mandoc")
|
||||
];
|
||||
|
||||
postFixup = ''
|
||||
wrapPythonPrograms
|
||||
'';
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
meta = {
|
||||
homepage = "http://fvwm.org";
|
||||
description = "A multiple large virtual desktop window manager - Version 3";
|
||||
longDescription = ''
|
||||
Fvwm is a virtual window manager for the X windows system. It was
|
||||
originally a feeble fork of TWM by Robert Nation in 1993 (fvwm history),
|
||||
and has evolved into the fantastic, fabulous, famous, flexible, and so on,
|
||||
window manager we have today.
|
||||
|
||||
Fvwm is a ICCCM/EWMH compliant and highly configurable floating window
|
||||
manager built primarily using Xlib. Fvwm is configured using a
|
||||
configuration file, which is used to configure most aspects of the window
|
||||
manager including window looks, key bindings, menus, window behavior,
|
||||
additional modules, and more. There is a default configuration file that
|
||||
can be used as a starting point for writing one's own configuration file.
|
||||
|
||||
Fvwm is a light weight window manager and can be configured to be anything
|
||||
from a small sleek window manager to a full featured desktop
|
||||
environment. To get the most out of fvwm, one should be willing to read
|
||||
the documents, and take the time to write a custom configuration file that
|
||||
suites their needs. The manual pages and the fvwm wiki can be used to help
|
||||
learn how to configure fvwm.
|
||||
'';
|
||||
changelog = "https://github.com/fvwmorg/fvwm3/blob/${finalAttrs.src.rev}/CHANGELOG.md";
|
||||
license = lib.licenses.gpl2Plus;
|
||||
maintainers = with lib.maintainers; [ AndersonTorres ];
|
||||
inherit (libX11.meta) platforms;
|
||||
};
|
||||
})
|
|
@ -6,16 +6,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "mihomo";
|
||||
version = "1.18.1";
|
||||
version = "1.18.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "MetaCubeX";
|
||||
repo = "mihomo";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-ezOkDrpytZQdc+Txe4eUyuWY6oipn9jIrmu7aO8lNlQ=";
|
||||
hash = "sha256-/4Tlv6LLT1+CHdjJ1ZlYaZj44TX5y6FEHdKk+OA1vBU=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-tvPR5kAta4MlMTwjfxwVOacRr2nVpfalbN08mfxml64=";
|
||||
vendorHash = "sha256-k4xB/jO78VGD+n9HtuoWXoXB+kZCEyPKJTTwj32nGIw=";
|
||||
|
||||
excludedPackages = [ "./test" ];
|
||||
|
||||
|
|
46
pkgs/by-name/qu/quarkus/package.nix
Normal file
46
pkgs/by-name/qu/quarkus/package.nix
Normal file
|
@ -0,0 +1,46 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchurl
|
||||
, makeWrapper
|
||||
, jdk
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "quarkus-cli";
|
||||
version = "3.8.3";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/quarkusio/quarkus/releases/download/${finalAttrs.version}/quarkus-cli-${finalAttrs.version}.tar.gz";
|
||||
hash = "sha256-+HUVnd21q2xln58UR1QS0UFCjlY0sbf79ZkvWbRCH7Q=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/{lib,bin}
|
||||
cp ./lib/quarkus-cli-${finalAttrs.version}-runner.jar $out/lib
|
||||
|
||||
makeWrapper ${jdk}/bin/java $out/bin/quarkus \
|
||||
--add-flags "-classpath $out/lib/quarkus-cli-${finalAttrs.version}-runner.jar" \
|
||||
--add-flags "-Dapp.name=quarkus" \
|
||||
--add-flags "-Dapp-pid='\$\$'" \
|
||||
--add-flags "-Dapp.repo=$out/lib" \
|
||||
--add-flags "-Dapp.home=$out" \
|
||||
--add-flags "-Dbasedir=$out" \
|
||||
--add-flags "io.quarkus.cli.Main"
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Quarkus is a Kubernetes-native Java framework tailored for GraalVM and HotSpot, crafted from best-of-breed Java libraries and standards";
|
||||
homepage = "https://quarkus.io";
|
||||
license = licenses.asl20;
|
||||
maintainers = [ maintainers.vinetos ];
|
||||
platforms = platforms.all;
|
||||
mainProgram = "quarkus";
|
||||
sourceProvenance = with sourceTypes; [ binaryBytecode ];
|
||||
};
|
||||
})
|
46
pkgs/by-name/ra/rabbit/package.nix
Normal file
46
pkgs/by-name/ra/rabbit/package.nix
Normal file
|
@ -0,0 +1,46 @@
|
|||
{ lib
|
||||
, python3
|
||||
, fetchFromGitHub
|
||||
}:
|
||||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "rabbit";
|
||||
version = "1.0.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "natarajan-chidambaram";
|
||||
repo = "RABBIT";
|
||||
rev = version;
|
||||
hash = "sha256-IRG3OcWutkZA4oegeEIDyaIadl3dLaMneqOt/H2/Il4=";
|
||||
};
|
||||
|
||||
pythonRelaxDeps = true;
|
||||
|
||||
build-system = [
|
||||
python3.pkgs.setuptools
|
||||
python3.pkgs.wheel
|
||||
python3.pkgs.pythonRelaxDepsHook
|
||||
];
|
||||
|
||||
dependencies = with python3.pkgs; [
|
||||
numpy
|
||||
pandas
|
||||
pip
|
||||
requests
|
||||
scikit-learn
|
||||
scipy
|
||||
tqdm
|
||||
xgboost
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "rabbit" ];
|
||||
|
||||
meta = {
|
||||
description = "A tool for identifying bot accounts based on their recent GitHub event history";
|
||||
homepage = "https://github.com/natarajan-chidambaram/RABBIT";
|
||||
license = lib.licenses.asl20;
|
||||
mainProgram = "rabbit";
|
||||
maintainers = with lib.maintainers; [ drupol ];
|
||||
};
|
||||
}
|
58
pkgs/by-name/ro/rockcraft/package.nix
Normal file
58
pkgs/by-name/ro/rockcraft/package.nix
Normal file
|
@ -0,0 +1,58 @@
|
|||
{ lib
|
||||
, python3Packages
|
||||
, fetchFromGitHub
|
||||
, dpkg
|
||||
, nix-update-script
|
||||
, python3
|
||||
}:
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "rockcraft";
|
||||
version = "1.2.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "canonical";
|
||||
repo = "rockcraft";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-f6qLvk5cebHjZx51nJYYAwILGCTyj6FKlb3HGt6iz4M=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace rockcraft/__init__.py \
|
||||
--replace-fail "dev" "${version}"
|
||||
'';
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [
|
||||
craft-application-1
|
||||
craft-archives
|
||||
spdx-lookup
|
||||
];
|
||||
|
||||
nativeCheckInputs = with python3Packages; [
|
||||
pytest-check
|
||||
pytest-mock
|
||||
pytest-subprocess
|
||||
pytestCheckHook
|
||||
] ++ [
|
||||
dpkg
|
||||
];
|
||||
|
||||
preCheck = ''
|
||||
mkdir -p check-phase
|
||||
export HOME="$(pwd)/check-phase"
|
||||
'';
|
||||
|
||||
disabledTests = [ "test_expand_extensions" ];
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
mainProgram = "rockcraft";
|
||||
description = "Create OCI images using the language from Snapcraft and Charmcraft";
|
||||
homepage = "https://github.com/canonical/rockcraft";
|
||||
changelog = "https://github.com/canonical/rockcraft/releases/tag/${version}";
|
||||
license = lib.licenses.gpl3Only;
|
||||
maintainers = with lib.maintainers; [ jnsgruk ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
|
@ -1,7 +1,26 @@
|
|||
{ lib, stdenv, requireFile, autoPatchelfHook, fetchurl, makeDesktopItem, copyDesktopItems, imagemagick
|
||||
{ lib, stdenv, requireFile, autoPatchelfHook, undmg, fetchurl, makeDesktopItem, copyDesktopItems, imagemagick
|
||||
, runCommand, libgcc, wxGTK32, innoextract, libGL, SDL2, openal, libmpg123, libxmp }:
|
||||
|
||||
let
|
||||
version = "469d";
|
||||
srcs = {
|
||||
x86_64-linux = fetchurl {
|
||||
url = "https://github.com/OldUnreal/UnrealTournamentPatches/releases/download/v${version}/OldUnreal-UTPatch${version}-Linux-amd64.tar.bz2";
|
||||
hash = "sha256-aoGzWuakwN/OL4+xUq8WEpd2c1rrNN/DkffI2vDVGjs=";
|
||||
};
|
||||
aarch64-linux = fetchurl {
|
||||
url = "https://github.com/OldUnreal/UnrealTournamentPatches/releases/download/v${version}/OldUnreal-UTPatch${version}-Linux-arm64.tar.bz2";
|
||||
hash = "sha256-2e9lHB12jLTR8UYofLWL7gg0qb2IqFk6eND3T5VqAx0=";
|
||||
};
|
||||
i686-linux = fetchurl {
|
||||
url = "https://github.com/OldUnreal/UnrealTournamentPatches/releases/download/v${version}/OldUnreal-UTPatch${version}-Linux-x86.tar.bz2";
|
||||
hash = "sha256-1JsFKuAAj/LtYvOUPFu0Hn+zvY3riW0YlJbLd4UnaKU=";
|
||||
};
|
||||
x86_64-darwin = fetchurl {
|
||||
url = "https://github.com/OldUnreal/UnrealTournamentPatches/releases/download/v${version}/OldUnreal-UTPatch${version}-macOS-Sonoma.dmg";
|
||||
hash = "sha256-TbhJbOH4E5WOb6XR9dmqLkXziK3/CzhNjd1ypBkkmvw=";
|
||||
};
|
||||
};
|
||||
unpackGog = runCommand "ut1999-gog" {
|
||||
src = requireFile rec {
|
||||
name = "setup_ut_goty_2.0.0.5.exe";
|
||||
|
@ -15,20 +34,23 @@ let
|
|||
'';
|
||||
};
|
||||
|
||||
buildInputs = [ innoextract ];
|
||||
nativeBuildInputs = [ innoextract ];
|
||||
} ''
|
||||
innoextract --extract --exclude-temp "$src"
|
||||
mkdir $out
|
||||
cp -r app/* $out
|
||||
'';
|
||||
in stdenv.mkDerivation rec {
|
||||
systemDir = {
|
||||
x86_64-linux = "System64";
|
||||
aarch64-linux = "SystemARM64";
|
||||
x86_64-darwin = "System";
|
||||
i686-linux = "System";
|
||||
}.${stdenv.hostPlatform.system} or (throw "unsupported system: ${stdenv.hostPlatform.system}");
|
||||
in stdenv.mkDerivation {
|
||||
name = "ut1999";
|
||||
version = "469d";
|
||||
inherit version;
|
||||
sourceRoot = ".";
|
||||
src = fetchurl {
|
||||
url = "https://github.com/OldUnreal/UnrealTournamentPatches/releases/download/v${version}/OldUnreal-UTPatch${version}-Linux-amd64.tar.bz2";
|
||||
hash = "sha256-aoGzWuakwN/OL4+xUq8WEpd2c1rrNN/DkffI2vDVGjs=";
|
||||
};
|
||||
src = srcs.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
|
||||
|
||||
buildInputs = [
|
||||
libgcc
|
||||
|
@ -41,41 +63,50 @@ in stdenv.mkDerivation rec {
|
|||
stdenv.cc.cc
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
nativeBuildInputs = lib.optionals stdenv.isLinux [
|
||||
copyDesktopItems
|
||||
autoPatchelfHook
|
||||
imagemagick
|
||||
] ++ lib.optionals stdenv.isDarwin [
|
||||
undmg
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
installPhase = let
|
||||
outPrefix = if stdenv.isDarwin then "$out/UnrealTournament.app/Contents/MacOS" else "$out";
|
||||
in ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/bin
|
||||
cp -r ./* $out
|
||||
|
||||
# Remove bundled libraries to use native versions instead
|
||||
rm $out/System64/libmpg123.so* \
|
||||
$out/System64/libopenal.so* \
|
||||
$out/System64/libSDL2* \
|
||||
$out/System64/libxmp.so*
|
||||
|
||||
cp -r ${if stdenv.isDarwin then "UnrealTournament.app" else "./*"} $out
|
||||
chmod -R 755 $out
|
||||
cd ${outPrefix}
|
||||
|
||||
ln -s ${unpackGog}/Music $out
|
||||
ln -s ${unpackGog}/Sounds $out
|
||||
cp -n ${unpackGog}/Textures/* $out/Textures || true
|
||||
ln -s ${unpackGog}/Maps $out
|
||||
cp -n ${unpackGog}/System/*.{u,int} $out/System || true
|
||||
rm -rf ./{Music,Sounds,Maps}
|
||||
ln -s ${unpackGog}/{Music,Sounds,Maps} .
|
||||
|
||||
ln -s "$out/System64/ut-bin" "$out/bin/ut1999"
|
||||
ln -s "$out/System64/ucc-bin" "$out/bin/ut1999-ucc"
|
||||
cp -n ${unpackGog}/Textures/* ./Textures || true
|
||||
cp -n ${unpackGog}/System/*.{u,int} ./System || true
|
||||
'' + lib.optionalString (stdenv.isLinux) ''
|
||||
ln -s "$out/${systemDir}/ut-bin" "$out/bin/ut1999"
|
||||
ln -s "$out/${systemDir}/ucc-bin" "$out/bin/ut1999-ucc"
|
||||
|
||||
convert "${unpackGog}/gfw_high.ico" "ut1999.png"
|
||||
install -D ut1999-5.png "$out/share/icons/hicolor/256x256/apps/ut1999.png"
|
||||
|
||||
# Remove bundled libraries to use native versions instead
|
||||
rm $out/${systemDir}/libmpg123.so* \
|
||||
$out/${systemDir}/libopenal.so* \
|
||||
$out/${systemDir}/libSDL2* \
|
||||
$out/${systemDir}/libxmp.so*
|
||||
'' + ''
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
# .so files in the SystemARM64 directory are not loaded properly on aarch64-linux
|
||||
appendRunpaths = lib.optionals (stdenv.hostPlatform.system == "aarch64-linux") [
|
||||
"${placeholder "out"}/${systemDir}"
|
||||
];
|
||||
|
||||
desktopItems = [
|
||||
(makeDesktopItem {
|
||||
name = "ut1999";
|
||||
|
@ -90,9 +121,9 @@ in stdenv.mkDerivation rec {
|
|||
meta = with lib; {
|
||||
description = "Unreal Tournament GOTY (1999) with the OldUnreal patch.";
|
||||
license = licenses.unfree;
|
||||
platforms = [ "x86_64-linux" ];
|
||||
platforms = attrNames srcs;
|
||||
maintainers = with maintainers; [ eliandoran ];
|
||||
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
||||
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
||||
mainProgram = "ut1999";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchurl
|
||||
, undmg
|
||||
, _7zz
|
||||
, dpkg
|
||||
, autoPatchelfHook
|
||||
, wrapGAppsHook
|
||||
|
@ -23,24 +23,26 @@
|
|||
}:
|
||||
let
|
||||
pname = "yesplaymusic";
|
||||
version = "0.4.7";
|
||||
version = "0.4.8-2";
|
||||
|
||||
srcs = {
|
||||
srcs = let
|
||||
version' = lib.head (lib.splitString "-" version);
|
||||
in {
|
||||
x86_64-linux = fetchurl {
|
||||
url = "https://github.com/qier222/YesPlayMusic/releases/download/v${version}/yesplaymusic_${version}_amd64.deb";
|
||||
hash = "sha256-nnnHE2OgIqoz3dC+G0219FVBhvnWivLW1BX6+NYo6Ng=";
|
||||
url = "https://github.com/qier222/YesPlayMusic/releases/download/v${version}/yesplaymusic_${version'}_amd64.deb";
|
||||
hash = "sha256-iTWi+tZGUQU7J1mcmMdlWXSKpYGy4mMAeq9CN9fhnZ8=";
|
||||
};
|
||||
aarch64-linux = fetchurl {
|
||||
url = "https://github.com/qier222/YesPlayMusic/releases/download/v${version}/yesplaymusic_${version}_arm64.deb";
|
||||
hash = "sha256-+rrhY5iDDt/nYs0Vz5/Ef0sgpsdBKMtb1aVfCZLgRgg=";
|
||||
url = "https://github.com/qier222/YesPlayMusic/releases/download/v${version}/yesplaymusic_${version'}_arm64.deb";
|
||||
hash = "sha256-PP0apybSORqleOBogldgIV1tYZqao8kZ474muAEDpd0";
|
||||
};
|
||||
x86_64-darwin = fetchurl {
|
||||
url = "https://github.com/qier222/YesPlayMusic/releases/download/v${version}/YesPlayMusic-mac-${version}-x64.dmg";
|
||||
hash = "sha256-z8CASZRWKlj1g3mhxTMMeR4klTvQ2ReSrL7Rt18qQbM=";
|
||||
url = "https://github.com/qier222/YesPlayMusic/releases/download/v${version}/YesPlayMusic-mac-${version'}-x64.dmg";
|
||||
hash = "sha256-UHnEdoXT/vArSRKXPlfDYUUUMDyF2mnDsmJEjACW2vo=";
|
||||
};
|
||||
aarch64-darwin = fetchurl {
|
||||
url = "https://github.com/qier222/YesPlayMusic/releases/download/v${version}/YesPlayMusic-mac-${version}-arm64.dmg";
|
||||
hash = "sha256-McYLczudKG4tRNIw/Ws4rht0n4tiKA2M99yKtJbdlY8=";
|
||||
url = "https://github.com/qier222/YesPlayMusic/releases/download/v${version}/YesPlayMusic-mac-${version'}-arm64.dmg";
|
||||
hash = "sha256-FaeumNmkPQYj9Ae2Xw/eKUuezR4bEdni8li+NRU9i1k=";
|
||||
};
|
||||
};
|
||||
src = srcs.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
|
||||
|
@ -76,13 +78,19 @@ if stdenv.isDarwin
|
|||
then stdenv.mkDerivation {
|
||||
inherit pname version src meta;
|
||||
|
||||
nativeBuildInputs = [ undmg ];
|
||||
nativeBuildInputs = [ _7zz makeWrapper ];
|
||||
|
||||
sourceRoot = ".";
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/Applications
|
||||
cp -r *.app $out/Applications
|
||||
|
||||
makeWrapper $out/Applications/YesPlayMusic.app/Contents/MacOS/YesPlayMusic $out/bin/yesplaymusic
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
}
|
||||
else stdenv.mkDerivation {
|
|
@ -13,7 +13,7 @@
|
|||
, tcl
|
||||
, tk
|
||||
, xorg
|
||||
, yices
|
||||
, yices # bsc uses a patched version of yices
|
||||
, zlib
|
||||
, ghc
|
||||
, gmp-static
|
||||
|
@ -28,13 +28,13 @@ let
|
|||
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "bluespec";
|
||||
version = "2023.01";
|
||||
version = "2024.01";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "B-Lang-org";
|
||||
repo = "bsc";
|
||||
rev = version;
|
||||
sha256 = "sha256-kFHQtRaQmZiHo+IQ+mwbW23i3kbdAh/XH0OE7P/ibd0=";
|
||||
sha256 = "sha256-yqmtydv94p7qhps0t4EdPaSZNh/9XCuUwOzLqz0gjxE=";
|
||||
};
|
||||
|
||||
yices-src = fetchurl {
|
||||
|
@ -46,7 +46,8 @@ in stdenv.mkDerivation rec {
|
|||
|
||||
outputs = [ "out" "doc" ];
|
||||
|
||||
# https://github.com/B-Lang-org/bsc/pull/278
|
||||
# https://github.com/B-Lang-org/bsc/pull/278 is still applicable, but will probably not be applied as such
|
||||
# there is work ongoing: https://github.com/B-Lang-org/bsc/issues/595 https://github.com/B-Lang-org/bsc/pull/600
|
||||
patches = [ ./libstp_stub_makefile.patch ];
|
||||
|
||||
postUnpack = ''
|
||||
|
@ -67,6 +68,10 @@ in stdenv.mkDerivation rec {
|
|||
|
||||
# allow running bsc to bootstrap
|
||||
export LD_LIBRARY_PATH=$PWD/inst/lib/SAT
|
||||
|
||||
# use more cores for GHC building, 44 causes heap overflows in ghc, and
|
||||
# there is not much speedup after 8..
|
||||
if [[ $NIX_BUILD_CORES -gt 8 ]] ; then export GHCJOBS=8; else export GHCJOBS=$NIX_BUILD_CORES; fi
|
||||
'';
|
||||
|
||||
buildInputs = yices.buildInputs ++ [
|
||||
|
@ -96,7 +101,7 @@ in stdenv.mkDerivation rec {
|
|||
"NO_DEPS_CHECKS=1" # skip the subrepo check (this deriviation uses yices-src instead of the subrepo)
|
||||
"NOGIT=1" # https://github.com/B-Lang-org/bsc/issues/12
|
||||
"LDCONFIG=ldconfig" # https://github.com/B-Lang-org/bsc/pull/43
|
||||
"STP_STUB=1"
|
||||
"STP_STUB=1" # uses yices as a SMT solver and stub out STP
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
|
@ -106,7 +111,7 @@ in stdenv.mkDerivation rec {
|
|||
verilog
|
||||
];
|
||||
|
||||
checkTarget = "check-smoke";
|
||||
checkTarget = "check-smoke"; # this is the shortest check but "check-suite" tests much more
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
|
|
|
@ -25,13 +25,13 @@ let
|
|||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "libucl";
|
||||
version = "0.9.0";
|
||||
version = "0.9.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "vstakhov";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-uMkILLG2SC+Q+w7jb0PMsaTET2z1V9Ar0lQhXS1K2+g=";
|
||||
sha256 = "sha256-udgsgo6bT7WnUYnAzqHxOtdDg6av3XplptS8H5ukxjo=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config autoreconfHook ];
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitLab
|
||||
, fetchpatch
|
||||
, meson
|
||||
, ninja
|
||||
, pkg-config
|
||||
|
@ -113,14 +112,6 @@ let
|
|||
|
||||
in
|
||||
rec {
|
||||
wlroots_0_15 = generic {
|
||||
version = "0.15.1";
|
||||
hash = "sha256-MFR38UuB/wW7J9ODDUOfgTzKLse0SSMIRYTpEaEdRwM=";
|
||||
extraBuildInputs = [
|
||||
ffmpeg_4
|
||||
];
|
||||
};
|
||||
|
||||
wlroots_0_16 = generic {
|
||||
version = "0.16.2";
|
||||
hash = "sha256-JeDDYinio14BOl6CbzAPnJDOnrk4vgGNMN++rcy2ItQ=";
|
||||
|
|
|
@ -0,0 +1,84 @@
|
|||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchFromGitHub
|
||||
, nix-update-script
|
||||
, craft-cli
|
||||
, craft-parts
|
||||
, craft-providers
|
||||
, pydantic-yaml-0
|
||||
, pyyaml
|
||||
, setuptools
|
||||
, setuptools-scm
|
||||
, pytestCheckHook
|
||||
, pytest-check
|
||||
, pytest-mock
|
||||
, hypothesis
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "craft-application-1";
|
||||
version = "1.2.1";
|
||||
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "canonical";
|
||||
repo = "craft-application";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-CXZEWVoE66dlQJp4G8tinufjyaDJaH1Muxz/qd/81oA=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace craft_application/__init__.py \
|
||||
--replace-fail "dev" "${version}"
|
||||
|
||||
substituteInPlace pyproject.toml \
|
||||
--replace-fail "setuptools==67.7.2" "setuptools"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
setuptools
|
||||
setuptools-scm
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
craft-cli
|
||||
craft-parts
|
||||
craft-providers
|
||||
pydantic-yaml-0
|
||||
pyyaml
|
||||
];
|
||||
|
||||
pythonImportsCheck = [
|
||||
"craft_application"
|
||||
];
|
||||
|
||||
nativeCheckInputs = [
|
||||
hypothesis
|
||||
pytest-check
|
||||
pytest-mock
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
preCheck = ''
|
||||
export HOME=$(mktemp -d)
|
||||
'';
|
||||
|
||||
pytestFlagsArray = [ "tests/unit" ];
|
||||
|
||||
disabledTests = [
|
||||
"test_to_yaml_file"
|
||||
];
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
description = "The basis for Canonical craft applications";
|
||||
homepage = "https://github.com/canonical/craft-application";
|
||||
changelog = "https://github.com/canonical/craft-application/releases/tag/${version}";
|
||||
license = lib.licenses.lgpl3Only;
|
||||
maintainers = with lib.maintainers; [ jnsgruk ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
|
74
pkgs/development/python-modules/craft-archives/default.nix
Normal file
74
pkgs/development/python-modules/craft-archives/default.nix
Normal file
|
@ -0,0 +1,74 @@
|
|||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchFromGitHub
|
||||
, nix-update-script
|
||||
, launchpadlib
|
||||
, lazr-restfulclient
|
||||
, overrides
|
||||
, pydantic_1
|
||||
, setuptools
|
||||
, setuptools-scm
|
||||
, tabulate
|
||||
, pytest-check
|
||||
, pytest-mock
|
||||
, pytestCheckHook
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "craft-archives";
|
||||
version = "1.1.3";
|
||||
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "canonical";
|
||||
repo = "craft-archives";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-ZUqMjbOsHwzZyn0NsSTlZTljzagYEirWKEGatXVL43g=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace craft_archives/__init__.py \
|
||||
--replace-fail "dev" "${version}"
|
||||
|
||||
substituteInPlace pyproject.toml \
|
||||
--replace-fail "setuptools==67.7.2" "setuptools"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
setuptools
|
||||
setuptools-scm
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
launchpadlib
|
||||
lazr-restfulclient
|
||||
overrides
|
||||
pydantic_1
|
||||
tabulate
|
||||
];
|
||||
|
||||
pythonImportsCheck = [
|
||||
"craft_archives"
|
||||
];
|
||||
|
||||
nativeCheckInputs = [
|
||||
pytest-check
|
||||
pytest-mock
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
pytestFlagsArray = [ "tests/unit" ];
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
description = "A library for handling archives/repositories in Canonical craft applications";
|
||||
homepage = "https://github.com/canonical/craft-archives";
|
||||
changelog = "https://github.com/canonical/craft-archives/releases/tag/${version}";
|
||||
license = lib.licenses.lgpl3Only;
|
||||
maintainers = with lib.maintainers; [ jnsgruk ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
|
69
pkgs/development/python-modules/craft-cli/default.nix
Normal file
69
pkgs/development/python-modules/craft-cli/default.nix
Normal file
|
@ -0,0 +1,69 @@
|
|||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchFromGitHub
|
||||
, nix-update-script
|
||||
, platformdirs
|
||||
, pydantic_1
|
||||
, pyyaml
|
||||
, setuptools
|
||||
, setuptools-scm
|
||||
, pytest-check
|
||||
, pytest-mock
|
||||
, pytestCheckHook
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "craft-cli";
|
||||
version = "2.5.1";
|
||||
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "canonical";
|
||||
repo = "craft-cli";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-yEKF04OPu4paRrghAP78r9hu6cqkUy6z/V7cHNys82I=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace craft_cli/__init__.py \
|
||||
--replace-fail "dev" "${version}"
|
||||
|
||||
substituteInPlace pyproject.toml \
|
||||
--replace-fail "setuptools==67.7.2" "setuptools"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
setuptools
|
||||
setuptools-scm
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
platformdirs
|
||||
pydantic_1
|
||||
pyyaml
|
||||
];
|
||||
|
||||
pythonImportsCheck = [
|
||||
"craft_cli"
|
||||
];
|
||||
|
||||
nativeCheckInputs = [
|
||||
pytest-check
|
||||
pytest-mock
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
pytestFlagsArray = [ "tests/unit" ];
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
description = "A CLI builder for Canonical's CLI Guidelines";
|
||||
homepage = "https://github.com/canonical/craft-cli";
|
||||
changelog = "https://github.com/canonical/craft-cli/releases/tag/${version}";
|
||||
license = lib.licenses.lgpl3Only;
|
||||
maintainers = with lib.maintainers; [ jnsgruk ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
58
pkgs/development/python-modules/craft-grammar/default.nix
Normal file
58
pkgs/development/python-modules/craft-grammar/default.nix
Normal file
|
@ -0,0 +1,58 @@
|
|||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchFromGitHub
|
||||
, nix-update-script
|
||||
, overrides
|
||||
, setuptools
|
||||
, pytest-check
|
||||
, pytest-mock
|
||||
, pytestCheckHook
|
||||
, pydantic_1
|
||||
, pyyaml
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "craft-grammar";
|
||||
version = "1.1.2";
|
||||
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "canonical";
|
||||
repo = "craft-grammar";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-23KLIO2yHXGe/zb3B8LirJsh+LY9z0c5ZGtF392Kszo";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
setuptools
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
overrides
|
||||
];
|
||||
|
||||
pythonImportsCheck = [
|
||||
"craft_grammar"
|
||||
];
|
||||
|
||||
nativeCheckInputs = [
|
||||
pydantic_1
|
||||
pytestCheckHook
|
||||
pyyaml
|
||||
];
|
||||
|
||||
pytestFlagsArray = [ "tests/unit" ];
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
description = "Advanced grammar for Canonical's craft-parts library";
|
||||
homepage = "https://github.com/canonical/craft-grammar";
|
||||
changelog = "https://github.com/canonical/craft-grammar/releases/tag/${version}";
|
||||
license = lib.licenses.lgpl3Only;
|
||||
maintainers = with lib.maintainers; [ jnsgruk ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
|
41
pkgs/development/python-modules/craft-parts/bash-path.patch
Normal file
41
pkgs/development/python-modules/craft-parts/bash-path.patch
Normal file
|
@ -0,0 +1,41 @@
|
|||
diff --git a/craft_parts/executor/step_handler.py b/craft_parts/executor/step_handler.py
|
||||
index 404df69..f90e2ac 100644
|
||||
--- a/craft_parts/executor/step_handler.py
|
||||
+++ b/craft_parts/executor/step_handler.py
|
||||
@@ -243,8 +243,9 @@ class StepHandler:
|
||||
print(script, file=script_file)
|
||||
script_file.flush()
|
||||
script_file.seek(0)
|
||||
+ import shutil
|
||||
process = subprocess.Popen( # pylint: disable=consider-using-with
|
||||
- ["/bin/bash"],
|
||||
+ [shutil.which("bash")],
|
||||
stdin=script_file,
|
||||
cwd=work_dir,
|
||||
stdout=self._stdout,
|
||||
@@ -394,7 +395,8 @@ def _create_and_run_script(
|
||||
) -> None:
|
||||
"""Create a script with step-specific commands and execute it."""
|
||||
with script_path.open("w") as run_file:
|
||||
- print("#!/bin/bash", file=run_file)
|
||||
+ import shutil
|
||||
+ print(f"#!{shutil.which('bash')}", file=run_file)
|
||||
print("set -euo pipefail", file=run_file)
|
||||
|
||||
if build_environment_script_path:
|
||||
diff --git a/craft_parts/plugins/validator.py b/craft_parts/plugins/validator.py
|
||||
index b8d8f11..fce0e72 100644
|
||||
--- a/craft_parts/plugins/validator.py
|
||||
+++ b/craft_parts/plugins/validator.py
|
||||
@@ -142,9 +142,9 @@ class PluginEnvironmentValidator:
|
||||
print(self._env, file=env_file)
|
||||
print(cmd, file=env_file)
|
||||
env_file.flush()
|
||||
-
|
||||
+ import shutil
|
||||
proc = subprocess.run(
|
||||
- ["/bin/bash", env_file.name],
|
||||
+ [shutil.which("bash"), env_file.name],
|
||||
check=True,
|
||||
capture_output=True,
|
||||
text=True,
|
119
pkgs/development/python-modules/craft-parts/default.nix
Normal file
119
pkgs/development/python-modules/craft-parts/default.nix
Normal file
|
@ -0,0 +1,119 @@
|
|||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchFromGitHub
|
||||
, nix-update-script
|
||||
, overrides
|
||||
, pydantic_1
|
||||
, pydantic-yaml-0
|
||||
, pyxdg
|
||||
, pyyaml
|
||||
, requests
|
||||
, requests-unixsocket
|
||||
, types-pyyaml
|
||||
, urllib3
|
||||
, pytestCheckHook
|
||||
, pytest-check
|
||||
, pytest-mock
|
||||
, pytest-subprocess
|
||||
, requests-mock
|
||||
, hypothesis
|
||||
, git
|
||||
, squashfsTools
|
||||
, setuptools
|
||||
, setuptools-scm
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "craft-parts";
|
||||
version = "1.26.2";
|
||||
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "canonical";
|
||||
repo = "craft-parts";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-wHv0JWffS916RK4Kgk+FuRthx+ajh0Ka4DBwGrLdUBs=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./bash-path.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace setup.py \
|
||||
--replace-fail "pydantic-yaml[pyyaml]>=0.11.0,<1.0.0" "pydantic-yaml[pyyaml]" \
|
||||
--replace-fail "urllib3<2" "urllib3"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
setuptools
|
||||
setuptools-scm
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
overrides
|
||||
pydantic_1
|
||||
pydantic-yaml-0
|
||||
pyxdg
|
||||
pyyaml
|
||||
requests
|
||||
requests-unixsocket
|
||||
types-pyyaml
|
||||
urllib3
|
||||
];
|
||||
|
||||
pythonImportsCheck = [
|
||||
"craft_parts"
|
||||
];
|
||||
|
||||
nativeCheckInputs = [
|
||||
git
|
||||
hypothesis
|
||||
pytest-check
|
||||
pytest-mock
|
||||
pytest-subprocess
|
||||
pytestCheckHook
|
||||
requests-mock
|
||||
squashfsTools
|
||||
];
|
||||
|
||||
pytestFlagsArray = [ "tests/unit" ];
|
||||
|
||||
preCheck = ''
|
||||
export HOME=$(mktemp -d)
|
||||
'';
|
||||
|
||||
disabledTests = [
|
||||
# Relies upon paths not present in Nix (like /bin/bash)
|
||||
"test_run_builtin_build"
|
||||
"test_run_prime"
|
||||
"test_get_build_packages_with_source_type"
|
||||
"test_get_build_packages"
|
||||
];
|
||||
|
||||
disabledTestPaths = [
|
||||
# Relies upon filesystem extended attributes, and suid/guid bits
|
||||
"tests/unit/sources/test_base.py"
|
||||
"tests/unit/packages/test_base.py"
|
||||
"tests/unit/state_manager"
|
||||
"tests/unit/test_xattrs.py"
|
||||
"tests/unit/packages/test_normalize.py"
|
||||
# Relies upon presence of apt/dpkg.
|
||||
"tests/unit/packages/test_apt_cache.py"
|
||||
"tests/unit/packages/test_deb.py"
|
||||
"tests/unit/packages/test_chisel.py"
|
||||
];
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
description = "Software artifact parts builder from Canonical";
|
||||
homepage = "https://github.com/canonical/craft-parts";
|
||||
changelog = "https://github.com/canonical/craft-parts/releases/tag/${version}";
|
||||
license = lib.licenses.lgpl3Only;
|
||||
maintainers = with lib.maintainers; [ jnsgruk ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
|
111
pkgs/development/python-modules/craft-providers/default.nix
Normal file
111
pkgs/development/python-modules/craft-providers/default.nix
Normal file
|
@ -0,0 +1,111 @@
|
|||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchFromGitHub
|
||||
, nix-update-script
|
||||
, packaging
|
||||
, platformdirs
|
||||
, pydantic_1
|
||||
, pyyaml
|
||||
, requests-unixsocket
|
||||
, setuptools
|
||||
, setuptools-scm
|
||||
, urllib3
|
||||
, pytest-check
|
||||
, pytest-mock
|
||||
, pytestCheckHook
|
||||
, responses
|
||||
, freezegun
|
||||
, pytest-subprocess
|
||||
, pytest-logdog
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "craft-providers";
|
||||
version = "1.23.0";
|
||||
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "canonical";
|
||||
repo = "craft-providers";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-9ZoNgpuGytwozRsw0wnS3d2UBOIsh3VI/uzB1RD2Zac=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./inject-snaps.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace craft_providers/lxd/installer.py \
|
||||
--replace-fail "/var/snap/lxd/common/lxd/unix.socket" "/var/lib/lxd/unix.socket"
|
||||
|
||||
substituteInPlace craft_providers/__init__.py \
|
||||
--replace-fail "dev" "${version}"
|
||||
|
||||
# The urllib3 incompat: https://github.com/msabramo/requests-unixsocket/pull/69
|
||||
# This is already patched in nixpkgs.
|
||||
substituteInPlace pyproject.toml \
|
||||
--replace-fail "setuptools==67.8.0" "setuptools" \
|
||||
--replace-fail "urllib3<2" "urllib3"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
setuptools
|
||||
setuptools-scm
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
packaging
|
||||
platformdirs
|
||||
pydantic_1
|
||||
pyyaml
|
||||
requests-unixsocket
|
||||
urllib3
|
||||
];
|
||||
|
||||
pythonImportsCheck = [
|
||||
"craft_providers"
|
||||
];
|
||||
|
||||
nativeCheckInputs = [
|
||||
freezegun
|
||||
pytest-check
|
||||
pytest-mock
|
||||
pytest-subprocess
|
||||
pytest-logdog
|
||||
pytestCheckHook
|
||||
responses
|
||||
];
|
||||
|
||||
preCheck = ''
|
||||
mkdir -p check-phase
|
||||
export HOME="$(pwd)/check-phase"
|
||||
'';
|
||||
|
||||
pytestFlagsArray = [ "tests/unit" ];
|
||||
|
||||
disabledTestPaths = [
|
||||
# Relies upon "logassert" python package which isn't in nixpkgs
|
||||
"tests/unit/bases/test_ubuntu_buildd.py"
|
||||
"tests/unit/bases/test_centos_7.py"
|
||||
"tests/unit/bases/test_almalinux.py"
|
||||
"tests/unit/actions/test_snap_installer.py"
|
||||
# Relies upon "pytest-time" python package which isn't in nixpkgs
|
||||
"tests/unit/multipass"
|
||||
"tests/unit/lxd"
|
||||
"tests/unit/test_base.py"
|
||||
"tests/unit/util/test_retry.py"
|
||||
];
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
description = "Interfaces for instantiating and controlling a variety of build environments";
|
||||
homepage = "https://github.com/canonical/craft-providers";
|
||||
changelog = "https://github.com/canonical/craft-providers/releases/tag/${version}";
|
||||
license = lib.licenses.lgpl3Only;
|
||||
maintainers = with lib.maintainers; [ jnsgruk ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
diff --git a/craft_providers/base.py b/craft_providers/base.py
|
||||
index 3c914a2..d9c2cf9 100644
|
||||
--- a/craft_providers/base.py
|
||||
+++ b/craft_providers/base.py
|
||||
@@ -655,37 +655,22 @@ class Base(ABC):
|
||||
),
|
||||
)
|
||||
|
||||
- if snap.channel:
|
||||
- try:
|
||||
- snap_installer.install_from_store(
|
||||
- executor=executor,
|
||||
- snap_name=snap.name,
|
||||
- channel=snap.channel,
|
||||
- classic=snap.classic,
|
||||
- )
|
||||
- except SnapInstallationError as error:
|
||||
- raise BaseConfigurationError(
|
||||
- brief=(
|
||||
- f"failed to install snap {snap.name!r} from store"
|
||||
- f" channel {snap.channel!r} in target environment."
|
||||
- ),
|
||||
- details=error.details,
|
||||
- ) from error
|
||||
- else:
|
||||
- try:
|
||||
- snap_installer.inject_from_host(
|
||||
- executor=executor,
|
||||
- snap_name=snap.name,
|
||||
- classic=snap.classic,
|
||||
- )
|
||||
- except SnapInstallationError as error:
|
||||
- raise BaseConfigurationError(
|
||||
- brief=(
|
||||
- f"failed to inject host's snap {snap.name!r} "
|
||||
- "into target environment."
|
||||
- ),
|
||||
- details=error.details,
|
||||
- ) from error
|
||||
+ try:
|
||||
+ channel = "latest/edge" if snap.name == "rockcraft" else "latest/stable"
|
||||
+ snap_installer.install_from_store(
|
||||
+ executor=executor,
|
||||
+ snap_name=snap.name,
|
||||
+ channel=channel,
|
||||
+ classic=snap.classic,
|
||||
+ )
|
||||
+ except SnapInstallationError as error:
|
||||
+ raise BaseConfigurationError(
|
||||
+ brief=(
|
||||
+ f"failed to install snap {snap.name!r} from store"
|
||||
+ f" channel {channel!r} in target environment."
|
||||
+ ),
|
||||
+ details=error.details,
|
||||
+ ) from error
|
||||
|
||||
def wait_until_ready(self, executor: Executor) -> None:
|
||||
"""Wait until base instance is ready.
|
|
@ -11,14 +11,20 @@ let
|
|||
pyShortVersion = "cp" + builtins.replaceStrings [ "." ] [ "" ] python.pythonVersion;
|
||||
platforms = rec {
|
||||
aarch64-darwin = "macosx_10_9_universal2";
|
||||
aarch64-linux = "manylinux2014_aarch64.manylinux_2_17_aarch64";
|
||||
x86_64-darwin = aarch64-darwin;
|
||||
x86_64-linux = "manylinux2014_x86_64.manylinux_2_17_x86_64";
|
||||
};
|
||||
platform = platforms.${stdenv.system} or (throw "Unsupported system: ${stdenv.system}");
|
||||
hashes = rec {
|
||||
cp311-aarch64-darwin = "sha256-pMwq4TXvr0mrKxZppeW2MQE/KrplWWFGmjKRLKwbHCI=";
|
||||
cp311-aarch64-linux = "sha256-fxJSQUt+nk7JBGtkDi+qTl/js0hnWGZGyht4AqD9g60=";
|
||||
cp311-x86_64-darwin = cp311-aarch64-darwin;
|
||||
cp311-x86_64-linux = "sha256-q1nmuWmlDPeNWWw4bX3KECOChNQkwU+6hItYqWcyY4M=";
|
||||
cp312-aarch64-darwin = "sha256-5+1QxYOhjbs01S3gqhkQ9Bx/0/NhbXEi710BGpiC5kM=";
|
||||
cp312-aarch64-linux = "sha256-N7cFtibenj+SrZ7ZtevZtDUdW48DnLC4p5jB9vrWlb8=";
|
||||
cp312-x86_64-darwin = cp312-aarch64-darwin;
|
||||
cp312-x86_64-linux = "sha256-Aw5xxvCwdgfdT7HMrWT/jKWx3RDjs8IuB4in0ZGdqcw=";
|
||||
};
|
||||
hash =
|
||||
hashes."${pyShortVersion}-${stdenv.system}"
|
|
@ -1,29 +0,0 @@
|
|||
{ lib, buildPythonPackage, python, gurobi }:
|
||||
|
||||
buildPythonPackage {
|
||||
pname = "gurobipy";
|
||||
version = "9.1.2";
|
||||
|
||||
src = gurobi.src;
|
||||
|
||||
setSourceRoot = "sourceRoot=$(echo gurobi*/*64)";
|
||||
|
||||
patches = [ ./no-clever-setup.patch ];
|
||||
|
||||
postInstall = ''
|
||||
mv lib/libgurobi*.so* $out/lib
|
||||
'';
|
||||
|
||||
postFixup = ''
|
||||
patchelf --set-rpath $out/lib \
|
||||
$out/${python.sitePackages}/gurobipy/gurobipy.so
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "The Gurobi Python interface";
|
||||
homepage = "https://www.gurobi.com";
|
||||
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
||||
license = licenses.unfree;
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
}
|
|
@ -1,41 +0,0 @@
|
|||
diff -Naur a/setup.py b/setup.py
|
||||
--- a/setup.py 2021-04-24 12:53:18.300255006 -0500
|
||||
+++ b/setup.py 2021-04-24 12:47:51.619052574 -0500
|
||||
@@ -15,29 +15,6 @@
|
||||
from distutils.command.install import install
|
||||
import os,sys,shutil
|
||||
|
||||
-class GurobiClean(Command):
|
||||
- description = "remove the build directory"
|
||||
- user_options = []
|
||||
- def initialize_options(self):
|
||||
- self.cwd = None
|
||||
- def finalize_options(self):
|
||||
- self.cwd = os.path.dirname(os.path.realpath(__file__))
|
||||
- def run(self):
|
||||
- build_dir = os.path.join(os.getcwd(), "build")
|
||||
- if os.path.exists(build_dir):
|
||||
- print('removing %s' % build_dir)
|
||||
- shutil.rmtree(build_dir)
|
||||
-
|
||||
-class GurobiInstall(install):
|
||||
-
|
||||
- # Calls the default run command, then deletes the build area
|
||||
- # (equivalent to "setup clean --all").
|
||||
- def run(self):
|
||||
- install.run(self)
|
||||
- c = GurobiClean(self.distribution)
|
||||
- c.finalize_options()
|
||||
- c.run()
|
||||
-
|
||||
License = """
|
||||
This software is covered by the Gurobi End User License Agreement.
|
||||
By completing the Gurobi installation process and using the software,
|
||||
@@ -78,7 +55,5 @@
|
||||
packages = ['gurobipy'],
|
||||
package_dir={'gurobipy' : srcpath },
|
||||
package_data = {'gurobipy' : [srcfile] },
|
||||
- cmdclass={'install' : GurobiInstall,
|
||||
- 'clean' : GurobiClean }
|
||||
)
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "llama-index-agent-openai";
|
||||
version = "0.2.0";
|
||||
version = "0.2.1";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.8";
|
||||
|
@ -18,7 +18,7 @@ buildPythonPackage rec {
|
|||
src = fetchPypi {
|
||||
pname = "llama_index_agent_openai";
|
||||
inherit version;
|
||||
hash = "sha256-iDHuNk1TeBNAG6LK38JnAdPRrVODhQ9+fdytL1aNlO8=";
|
||||
hash = "sha256-ydCixD0vdSuA99PdflbhEsSd3b0Gl0lzFTz9uTdLYrQ=";
|
||||
};
|
||||
|
||||
pythonRelaxDeps = [
|
||||
|
|
|
@ -4,18 +4,20 @@
|
|||
, fetchFromGitHub
|
||||
, poetry-core
|
||||
, poetry-dynamic-versioning
|
||||
, pydantic
|
||||
, typing-extensions
|
||||
, pytestCheckHook
|
||||
, pytest-benchmark
|
||||
, typing-extensions
|
||||
, pytest-cov
|
||||
, pydantic
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "pure-protobuf";
|
||||
version = "3.0.1"; # Komikku not launching w/ 3.0.0, #280551
|
||||
version = "3.0.1";
|
||||
|
||||
format = "pyproject";
|
||||
disabled = pythonOlder "3.7";
|
||||
# < 3.10 requires get-annotations which isn't packaged yet
|
||||
disabled = pythonOlder "3.10";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "eigenein";
|
||||
|
@ -24,13 +26,10 @@ buildPythonPackage rec {
|
|||
hash = "sha256-sGKnta+agrpJkQB0twFkqRreD5WB2O/06g75N0ic4mc=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
sed -i "/addopts =/d" pyproject.toml
|
||||
'';
|
||||
|
||||
build-system = [
|
||||
poetry-core
|
||||
poetry-dynamic-versioning
|
||||
typing-extensions
|
||||
];
|
||||
|
||||
dependencies = [
|
||||
|
@ -41,6 +40,7 @@ buildPythonPackage rec {
|
|||
pydantic
|
||||
pytestCheckHook
|
||||
pytest-benchmark
|
||||
pytest-cov
|
||||
];
|
||||
|
||||
pytestFlagsArray = [
|
||||
|
|
68
pkgs/development/python-modules/pydantic-yaml-0/default.nix
Normal file
68
pkgs/development/python-modules/pydantic-yaml-0/default.nix
Normal file
|
@ -0,0 +1,68 @@
|
|||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchFromGitHub
|
||||
, nix-update-script
|
||||
, deprecated
|
||||
, importlib-metadata
|
||||
, pydantic_1
|
||||
, ruamel-yaml
|
||||
, semver
|
||||
, types-deprecated
|
||||
, setuptools
|
||||
, setuptools-scm
|
||||
, pytest-mock
|
||||
, pytestCheckHook
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "pydantic_yaml-0";
|
||||
version = "0.11.2";
|
||||
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "NowanIlfideme";
|
||||
repo = "pydantic-yaml";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-AeUyVav0/k4Fz69Qizn4hcJKoi/CDR9eUan/nJhWsDY=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace src/pydantic_yaml/version.py \
|
||||
--replace-fail "0.0.0" "${version}"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
setuptools
|
||||
setuptools-scm
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
deprecated
|
||||
importlib-metadata
|
||||
pydantic_1
|
||||
ruamel-yaml
|
||||
semver
|
||||
types-deprecated
|
||||
];
|
||||
|
||||
pythonImportsCheck = [
|
||||
"pydantic_yaml"
|
||||
];
|
||||
|
||||
nativeCheckInputs = [
|
||||
pytest-mock
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
description = "A small helper library that adds some YAML capabilities to pydantic";
|
||||
homepage = "https://github.com/NowanIlfideme/pydantic-yaml";
|
||||
changelog = "https://github.com/NowanIlfideme/pydantic-yaml/releases/tag/v${version}";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ jnsgruk ];
|
||||
};
|
||||
}
|
||||
|
|
@ -7,14 +7,12 @@
|
|||
, async-upnp-client
|
||||
, attrs
|
||||
, click
|
||||
, importlib-metadata
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "python-songpal";
|
||||
version = "0.16.1";
|
||||
|
||||
format = "pyproject";
|
||||
version = "0.16.2";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.8";
|
||||
|
||||
|
@ -22,19 +20,18 @@ buildPythonPackage rec {
|
|||
owner = "rytilahti";
|
||||
repo = "python-songpal";
|
||||
rev = "refs/tags/release/${version}";
|
||||
hash = "sha256-qlypUGrObvn6YyzFhJe2rJvVdI6v+PkWLfjMpc1Lm2k=";
|
||||
hash = "sha256-PYw6xlUtBrxl+YeVO/2Njt5LYWEprzGPVNk1Mlr83HM=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
build-system = [
|
||||
poetry-core
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
dependencies = [
|
||||
aiohttp
|
||||
async-upnp-client
|
||||
attrs
|
||||
click
|
||||
importlib-metadata
|
||||
];
|
||||
|
||||
# no tests implemented
|
||||
|
|
|
@ -20,7 +20,9 @@ buildPythonPackage rec {
|
|||
sha256 = "8IZQY6qB4r1SUPItDlTDnVQuPs0I38K3yJ6LiPJuwbU=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ zbar pillow numpy ];
|
||||
buildInputs = [ zbar ];
|
||||
|
||||
propagatedBuildInputs = [ pillow numpy ];
|
||||
|
||||
nativeCheckInputs = [ pytestCheckHook ];
|
||||
|
||||
|
|
52
pkgs/development/python-modules/snap-helpers/default.nix
Normal file
52
pkgs/development/python-modules/snap-helpers/default.nix
Normal file
|
@ -0,0 +1,52 @@
|
|||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchFromGitHub
|
||||
, nix-update-script
|
||||
, pyyaml
|
||||
, setuptools
|
||||
, pytestCheckHook
|
||||
, pytest-mock
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "snap-helpers";
|
||||
version = "0.4.2";
|
||||
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "albertodonato";
|
||||
repo = "snap-helpers";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-7JBvrD4WNOcFSVx3xauk4JgiVGKWuUEdUMRlH7mudE4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
setuptools
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
pyyaml
|
||||
];
|
||||
|
||||
pythonImportsCheck = [
|
||||
"snaphelpers"
|
||||
];
|
||||
|
||||
nativeCheckInputs = [
|
||||
pytest-mock
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
description = "Interact with snap configuration and properties from inside a snap.";
|
||||
homepage = "https://github.com/albertodonato/snap-helpers";
|
||||
changelog = "https://github.com/albertodonato/snap-helpers/releases/tag/${version}";
|
||||
license = lib.licenses.lgpl3Only;
|
||||
maintainers = with lib.maintainers; [ jnsgruk ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
|
37
pkgs/development/python-modules/spdx-lookup/default.nix
Normal file
37
pkgs/development/python-modules/spdx-lookup/default.nix
Normal file
|
@ -0,0 +1,37 @@
|
|||
{ lib
|
||||
, fetchFromGitHub
|
||||
, buildPythonPackage
|
||||
, nix-update-script
|
||||
, spdx
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "spdx-lookup";
|
||||
version = "0.3.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bbqsrc";
|
||||
repo = "spdx-lookup-python";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-jtzhqRAj1BWdU8AuR7Gr343mL5alLXhi+SyCkCI5AAU=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
spdx
|
||||
];
|
||||
|
||||
pythonImportsCheck = [
|
||||
"spdx_lookup"
|
||||
];
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
description = "SPDX license list query tool";
|
||||
homepage = "https://github.com/bbqsrc/spdx-lookup-python";
|
||||
changelog = "https://github.com/bbqsrc/spdx-lookup-python/releases/tag/v${version}";
|
||||
license = lib.licenses.bsd2;
|
||||
maintainers = with lib.maintainers; [ jnsgruk ];
|
||||
};
|
||||
}
|
||||
|
32
pkgs/development/python-modules/spdx/default.nix
Normal file
32
pkgs/development/python-modules/spdx/default.nix
Normal file
|
@ -0,0 +1,32 @@
|
|||
{ lib
|
||||
, fetchFromGitHub
|
||||
, buildPythonPackage
|
||||
, nix-update-script
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "spdx";
|
||||
version = "2.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bbqsrc";
|
||||
repo = "spdx-python";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-lfTgAX4Wl01xrvLA12ZUqjah7ZiLafMAU+yNNdVkRk0=";
|
||||
};
|
||||
|
||||
pythonImportsCheck = [
|
||||
"spdx"
|
||||
];
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
description = "SPDX license list database";
|
||||
homepage = "https://github.com/bbqsrc/spdx-python";
|
||||
changelog = "https://github.com/bbqsrc/spdx-python/releases/tag/v${version}";
|
||||
license = lib.licenses.cc0;
|
||||
maintainers = with lib.maintainers; [ jnsgruk ];
|
||||
};
|
||||
}
|
||||
|
|
@ -5,14 +5,14 @@
|
|||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "checkov";
|
||||
version = "3.2.49";
|
||||
version = "3.2.50";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bridgecrewio";
|
||||
repo = "checkov";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-lO1NMK+tIj/riNt5JVjqgQDAfDlApENi0waj5pfjubc=";
|
||||
hash = "sha256-XOH4RrkyjTZY1N5XSR71GEGofPgqI7XkE8c3/ojoHGI=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
}:
|
||||
|
||||
let
|
||||
version = "0.12.1";
|
||||
version = "0.12.2";
|
||||
in
|
||||
crystal.buildCrystalPackage {
|
||||
pname = "crystalline";
|
||||
|
@ -17,7 +17,7 @@ crystal.buildCrystalPackage {
|
|||
owner = "elbywan";
|
||||
repo = "crystalline";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-b/j1V5JlT+rjWYAA8nrE0PWHrzQq4rUZxZlADMmtpBk=";
|
||||
hash = "sha256-9CXWw7Jye5XZzPdzz+Dnvyy7Wk1ENM0an8vOFrPbESA=";
|
||||
};
|
||||
|
||||
format = "crystal";
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "svd2rust";
|
||||
version = "0.32.0";
|
||||
version = "0.33.0";
|
||||
|
||||
src = fetchCrate {
|
||||
inherit pname version;
|
||||
hash = "sha256-XA0zSMZTeEOiAKgzU6/znZIoJr4VtGjxWjOqDE7TFbk=";
|
||||
hash = "sha256-EdU/Hr1OQ02Jeq4OgJPOS//4wltBPoYdUcFMvlOjIBY=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-94oSlnTZdGkYLAn5uShIDg2UAMPVu580ofVcgHZvI2M=";
|
||||
cargoHash = "sha256-T4QRrSBjf47wGJIVfxZNGig8k7KWvQQIvV8zwRUP/38=";
|
||||
|
||||
# error: linker `aarch64-linux-gnu-gcc` not found
|
||||
postPatch = ''
|
||||
|
|
|
@ -54,6 +54,11 @@ let
|
|||
inherit pname version;
|
||||
name = null; # Appimage sets it to "appimage-env"
|
||||
|
||||
profile = ''
|
||||
# anki vendors QT and mixing QT versions usually causes crashes
|
||||
unset QT_PLUGIN_PATH
|
||||
'';
|
||||
|
||||
# Dependencies of anki
|
||||
targetPkgs = pkgs: (with pkgs; [ xorg.libxkbfile xcb-util-cursor-HEAD krb5 ]);
|
||||
|
||||
|
|
|
@ -17,13 +17,13 @@ let
|
|||
in
|
||||
mavenJdk17.buildMavenPackage rec {
|
||||
pname = "runelite";
|
||||
version = "2.6.13";
|
||||
version = "2.7.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "runelite";
|
||||
repo = "launcher";
|
||||
rev = version;
|
||||
hash = "sha256-KE0UMtm1rypyV5FIxxiJeoP/IeSEzpzqfUyQ9UnxA0o=";
|
||||
hash = "sha256-7T9n23qMl4IJQL7yWLXKvRzYcMeXDUwkY8MBFc2t3Rw=";
|
||||
};
|
||||
mvnHash = "sha256-bsJlsIXIIVzZyVgEF/SN+GgpZt6v0u800arO1c5QYHk=";
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "yabai";
|
||||
version = "7.0.3";
|
||||
version = "7.0.4";
|
||||
|
||||
src = finalAttrs.passthru.sources.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
|
||||
|
||||
|
@ -85,14 +85,14 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
# See the comments on https://github.com/NixOS/nixpkgs/pull/188322 for more information.
|
||||
"aarch64-darwin" = fetchzip {
|
||||
url = "https://github.com/koekeishiya/yabai/releases/download/v${finalAttrs.version}/yabai-v${finalAttrs.version}.tar.gz";
|
||||
hash = "sha256-EvtKYYjEmLkJTnc9q6f37hMD1T3DBO+I1LfBvPjCgfc=";
|
||||
hash = "sha256-eOgdCW3BEB9vn9lui7Ib6uWl5MSAnHh3ztqHCWshCv8=";
|
||||
};
|
||||
"x86_64-darwin" = fetchFromGitHub
|
||||
{
|
||||
owner = "koekeishiya";
|
||||
repo = "yabai";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-oxQsCvTZqfKZoTuY1NC6h+Fzvyl0gJDhljFY2KrjRQ8=";
|
||||
hash = "sha256-yj7ISrBzVIDGsDQ1D+vDm9PapsZmi5fk1m3cGuzBR7w=";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
{ buildGoModule, fetchFromGitLab, lib }:
|
||||
buildGoModule rec {
|
||||
pname = "gnss-share";
|
||||
version = "0.8.0";
|
||||
version = "0.8.1";
|
||||
src = fetchFromGitLab {
|
||||
owner = "postmarketOS";
|
||||
repo = "gnss-share";
|
||||
rev = version;
|
||||
hash = "sha256-XNKX7eIv3wKNWbVsa6w/ODDRiiBArpGNY0T/sHC5ItY=";
|
||||
hash = "sha256-4X1oiQWn2oZPw/14hNyZ0a6FEwoykotBisY6lk6lj2k=";
|
||||
};
|
||||
vendorHash = "sha256-dmE6hfKUqEr7BMNi/HMUOk4jDB0dPXEMkWQyWj6XpY4=";
|
||||
meta = with lib; {
|
||||
|
|
|
@ -21,16 +21,16 @@ let
|
|||
in
|
||||
buildGoModule rec {
|
||||
pname = "minio";
|
||||
version = "2024-03-15T01-07-19Z";
|
||||
version = "2024-03-26T22-10-45Z";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "minio";
|
||||
repo = "minio";
|
||||
rev = "RELEASE.${version}";
|
||||
hash = "sha256-El4ddYmd6cVAFS0/s7QcTR9kcZcmNtlXEOpaqmTRdzk=";
|
||||
hash = "sha256-JdmeURCci8deQH4+7HCHkMbUzhjZBGi3dm3IHkp3XRE=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-lo91BVswJZl1FI1W4doNvOBXreLQco3/UjQ90HP46FY=";
|
||||
vendorHash = "sha256-oQatc6/s1kGOZI3XetID0xmABG5XrpD0cW7aWJxWK84=";
|
||||
|
||||
doCheck = false;
|
||||
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "neo4j";
|
||||
version = "5.18.0";
|
||||
version = "5.18.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://neo4j.com/artifact.php?name=neo4j-community-${version}-unix.tar.gz";
|
||||
hash = "sha256-XPpX6alLb81o5IBX16eHHkJMi8V/R/2YXWOCxEHKdU0=";
|
||||
hash = "sha256-jNi8SK1Z8k6ZSc9aa+L+PhAKyes0Tv6mFuoKspZBEIk=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
|
|
@ -81,6 +81,14 @@ rec {
|
|||
name = "texlive-test-context";
|
||||
format = "context";
|
||||
texLive = texliveConTeXt;
|
||||
# check that the PDF has been created: we have hit cases of context
|
||||
# failing with exit status 0 due to a misconfigured texlive
|
||||
postTest = ''
|
||||
if [[ ! -f "$name".pdf ]] ; then
|
||||
echo "ConTeXt test failed: file '$name.pdf' not found"
|
||||
exit 1
|
||||
fi
|
||||
'';
|
||||
text = ''
|
||||
\starttext
|
||||
\startsection[title={ConTeXt test document}]
|
||||
|
@ -333,18 +341,6 @@ rec {
|
|||
done
|
||||
'';
|
||||
|
||||
# test that fmtutil.cnf is fully regenerated on scheme-full
|
||||
fmtutilCnf = runCommand "texlive-test-fmtutil.cnf" {
|
||||
kpathsea = texlive.pkgs.kpathsea.tex;
|
||||
schemeFull = texliveFull;
|
||||
} ''
|
||||
mkdir -p "$out"
|
||||
|
||||
diff --ignore-matching-lines='^# Generated by ' -u \
|
||||
{"$kpathsea","$schemeFull"/share/texmf-var}/web2c/fmtutil.cnf \
|
||||
| tee "$out/fmtutil.cnf.patch"
|
||||
'';
|
||||
|
||||
# verify that the restricted mode gets enabled when
|
||||
# needed (detected by checking if it disallows --gscmd)
|
||||
repstopdf = runCommand "texlive-test-repstopdf" {
|
||||
|
|
|
@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
|
|||
homepage = "https://constexpr.org/innoextract/";
|
||||
license = licenses.zlib;
|
||||
maintainers = with maintainers; [ abbradar ];
|
||||
platforms = platforms.linux;
|
||||
platforms = platforms.unix;
|
||||
mainProgram = "innoextract";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
{
|
||||
"optifine_1_20_4": {
|
||||
"version": "1.20.4_HD_U_I7",
|
||||
"sha256": "1zgz5cd2v299hayk5qx639nknd3mcz58y59rpik8srx48da8jw14"
|
||||
},
|
||||
"optifine_1_20_1": {
|
||||
"version": "1.20.1_HD_U_I6",
|
||||
"sha256": "0l66pz4hy42qxv9a2jlq1hd7jiiysnv54g9gk1dfbwpd19kwnrqb"
|
||||
|
@ -148,7 +152,7 @@
|
|||
"sha256": "18lzyh639mi7r2hzwnmxv0a6v1ay7dk9bzasvwff82dxq0y9zi7m"
|
||||
},
|
||||
"optifine-latest": {
|
||||
"version": "1.20.1_HD_U_I6",
|
||||
"sha256": "0l66pz4hy42qxv9a2jlq1hd7jiiysnv54g9gk1dfbwpd19kwnrqb"
|
||||
"version": "1.20.4_HD_U_I7",
|
||||
"sha256": "1zgz5cd2v299hayk5qx639nknd3mcz58y59rpik8srx48da8jw14"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,13 +17,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gfxreconstruct";
|
||||
version = "1.0.2";
|
||||
version = "1.0.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "LunarG";
|
||||
repo = "gfxreconstruct";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-4jFHnDiLO2BrfXzxKXU3FGhvcmkUXCT2k/7A+DJPz90=";
|
||||
hash = "sha256-4qNAMPswsYtzHmTKr+waDLoWa9xex5hvX1Og/KibiBg=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ xorg,
|
|||
}:
|
||||
|
||||
let
|
||||
version = "1.42.2";
|
||||
version = "1.42.3";
|
||||
|
||||
rpath = lib.makeLibraryPath [
|
||||
alsa-lib
|
||||
|
@ -82,7 +82,7 @@ let
|
|||
if stdenv.hostPlatform.system == "x86_64-linux" then
|
||||
fetchurl {
|
||||
url = "https://downloads.mongodb.com/compass/mongodb-compass_${version}_amd64.deb";
|
||||
sha256 = "sha256-NvHFsB+wXNq2XmHb2tYI1P9vUXwVcwbhR645LjHM0/Y=";
|
||||
sha256 = "sha256-/ED/irfT4b8S5tqEl4AqLQKUimkl52WYBMJDsgUPQ88=";
|
||||
}
|
||||
else
|
||||
throw "MongoDB compass is not supported on ${stdenv.hostPlatform.system}";
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
, stdenv
|
||||
, buildPythonApplication
|
||||
, fetchFromGitHub
|
||||
, aria
|
||||
, aria2
|
||||
, ffmpeg
|
||||
, libnotify
|
||||
, pulseaudio
|
||||
|
@ -67,7 +67,7 @@ buildPythonApplication rec {
|
|||
|
||||
# feed args to wrapPythonApp
|
||||
makeWrapperArgs = [
|
||||
"--prefix PATH : ${lib.makeBinPath [ aria ffmpeg libnotify ]}"
|
||||
"--prefix PATH : ${lib.makeBinPath [ aria2 ffmpeg libnotify ]}"
|
||||
"\${qtWrapperArgs[@]}"
|
||||
];
|
||||
|
||||
|
|
|
@ -24,13 +24,13 @@
|
|||
assert (!withFirefox && !withChromium) -> throw "Either `withFirefox` or `withChromium` must be enabled.";
|
||||
buildNpmPackage rec {
|
||||
pname = "sitespeed-io";
|
||||
version = "33.3.0";
|
||||
version = "33.4.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "sitespeedio";
|
||||
repo = "sitespeed.io";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-voH0/F11fSMpEccyjcX3YUKaXjegJRwQwlRoa8R8sDg=";
|
||||
hash = "sha256-Yjp6sbMi4s23CecCYXxnUDQ9dc4SgnUnbBV8kLhv58U=";
|
||||
};
|
||||
|
||||
nodejs = nodejs_18;
|
||||
|
@ -46,7 +46,7 @@ buildNpmPackage rec {
|
|||
|
||||
dontNpmBuild = true;
|
||||
npmInstallFlags = [ "--omit=dev" ];
|
||||
npmDepsHash = "sha256-IiDfvID3h6kBue54p6J9qpjwwO5LwKkK0fw7TNptsxA=";
|
||||
npmDepsHash = "sha256-OT0dKF6dLuAZ5SgMVbrOyirJnpPNL5ygPjwvXqjKF1Q=";
|
||||
|
||||
postInstall = ''
|
||||
mv $out/bin/sitespeed{.,-}io
|
||||
|
|
|
@ -5,16 +5,16 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "trippy";
|
||||
version = "0.9.0";
|
||||
version = "0.10.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "fujiapple852";
|
||||
repo = "trippy";
|
||||
rev = version;
|
||||
hash = "sha256-Q5WPpCm1RNLlNX8G1U160O2wJz+y+KMScApjx6gIBCg=";
|
||||
hash = "sha256-IKGtnWRjrVof+2cq41TPfjhFrkn10yhY6j63dYwTzPA=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-brvfAZZ3L0loZQowcRfkS7o7ZYQB9hr5o1rgMSWaljU=";
|
||||
cargoHash = "sha256-OCbrg1uSot0uNFx7uSlN5Bh6bl34ng9xO6lo9wks6nY=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "A network diagnostic tool";
|
||||
|
|
|
@ -8,13 +8,13 @@
|
|||
}:
|
||||
|
||||
let
|
||||
version = "2024.1.2b";
|
||||
version = "2024.3.0";
|
||||
|
||||
bw_web_builds = fetchFromGitHub {
|
||||
owner = "dani-garcia";
|
||||
repo = "bw_web_builds";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-p5UsI8T2cV5uQnQmOi5WBo2UirLLS83NHoaljxcRkqo=";
|
||||
hash = "sha256-nlFs0cOehbGhk/XxWAuNJNhImHDZA3pvci1WdcBy6Ro=";
|
||||
};
|
||||
|
||||
in buildNpmPackage rec {
|
||||
|
@ -25,10 +25,10 @@ in buildNpmPackage rec {
|
|||
owner = "bitwarden";
|
||||
repo = "clients";
|
||||
rev = "web-v${lib.removeSuffix "b" version}";
|
||||
hash = "sha256-hzAkVzaCjwoZ/PMnsnSmsqUBWLhqfPWuWVujChy0V38=";
|
||||
hash = "sha256-/YpqGyDesz4ZyIaLGWbxJZkEGFW7IsTfuy/74NuiOS0=";
|
||||
};
|
||||
|
||||
npmDepsHash = "sha256-KTqPf8jy8cgGz0+1GssSzEfPVSSQlLenLPgHggNoGfc=";
|
||||
npmDepsHash = "sha256-iwYzxvLPebQiU20TafzdFgQXnNNHK8s0Jwo83VKy4u8=";
|
||||
|
||||
postPatch = ''
|
||||
ln -s ${bw_web_builds}/{patches,resources} ..
|
||||
|
|
|
@ -38,6 +38,12 @@ lib.fix (self: {
|
|||
}@args:
|
||||
|
||||
let
|
||||
### buildEnv with custom attributes
|
||||
buildEnv' = args: (buildEnv
|
||||
({ inherit (args) name paths; })
|
||||
// lib.optionalAttrs (args ? extraOutputsToInstall) { inherit (args) extraOutputsToInstall; })
|
||||
.overrideAttrs (removeAttrs args [ "extraOutputsToInstall" "name" "paths" "pkgs" ]);
|
||||
|
||||
### texlive.combine backward compatibility
|
||||
# if necessary, convert old style { pkgs = [ ... ]; } packages to attribute sets
|
||||
isOldPkgList = p: ! p.outputSpecified or false && p ? pkgs && builtins.all (p: p ? tlType) p.pkgs;
|
||||
|
@ -78,7 +84,7 @@ let
|
|||
otherOutputs = lib.genAttrs otherOutputNames (n: builtins.catAttrs n specified.wrong);
|
||||
outputsToInstall = builtins.catAttrs "key" (builtins.genericClosure {
|
||||
startSet = map (key: { inherit key; })
|
||||
([ "out" ] ++ lib.optional (splitOutputs ? man) "man"
|
||||
([ "out" ] ++ lib.optional (otherOutputs ? man) "man"
|
||||
++ lib.concatLists (builtins.catAttrs "outputsToInstall" (builtins.catAttrs "meta" specified.wrong)));
|
||||
operator = _: [ ];
|
||||
});
|
||||
|
@ -103,6 +109,14 @@ let
|
|||
|
||||
# outputs that do not become part of the environment
|
||||
nonEnvOutputs = lib.subtractLists [ "out" "tex" "texdoc" "texsource" "tlpkg" ] otherOutputNames;
|
||||
|
||||
# packages that contribute to config files and formats
|
||||
fontMaps = lib.filter (p: p ? fontMaps && (p.tlOutputName or p.outputName == "tex")) nonbin;
|
||||
sortedFontMaps = builtins.sort (a: b: a.pname < b.pname) fontMaps;
|
||||
hyphenPatterns = lib.filter (p: p ? hyphenPatterns && (p.tlOutputName or p.outputName == "tex")) nonbin;
|
||||
sortedHyphenPatterns = builtins.sort (a: b: a.pname < b.pname) hyphenPatterns;
|
||||
formatPkgs = lib.filter (p: p ? formats && (p.outputSpecified or false -> p.tlOutputName or p.outputName == "tex") && builtins.any (f: f.enabled or true) p.formats) all;
|
||||
sortedFormatPkgs = builtins.sort (a: b: a.pname < b.pname) formatPkgs;
|
||||
};
|
||||
|
||||
# list generated by inspecting `grep -IR '\([^a-zA-Z]\|^\)gs\( \|$\|"\)' "$TEXMFDIST"/scripts`
|
||||
|
@ -113,7 +127,7 @@ let
|
|||
name = if __combine then "texlive-${__extraName}-${bin.texliveYear}${__extraVersion}" # texlive.combine: old name name
|
||||
else "texlive-${bin.texliveYear}-env";
|
||||
|
||||
texmfdist = (buildEnv {
|
||||
texmfdist = buildEnv' {
|
||||
name = "${name}-texmfdist";
|
||||
|
||||
# remove fake derivations (without 'outPath') to avoid undesired build dependencies
|
||||
|
@ -126,14 +140,14 @@ let
|
|||
''
|
||||
mktexlsr "$out"
|
||||
'';
|
||||
}).overrideAttrs (_: { allowSubstitutes = true; });
|
||||
};
|
||||
|
||||
tlpkg = (buildEnv {
|
||||
tlpkg = buildEnv {
|
||||
name = "${name}-tlpkg";
|
||||
|
||||
# remove fake derivations (without 'outPath') to avoid undesired build dependencies
|
||||
paths = builtins.catAttrs "outPath" pkgList.tlpkg;
|
||||
}).overrideAttrs (_: { allowSubstitutes = true; });
|
||||
};
|
||||
|
||||
# the 'non-relocated' packages must live in $TEXMFROOT/texmf-dist
|
||||
# and sometimes look into $TEXMFROOT/tlpkg (notably fmtutil, updmap look for perl modules in both)
|
||||
|
@ -170,12 +184,10 @@ let
|
|||
(requiredTeXPackages tl);
|
||||
};
|
||||
|
||||
# emulate split output derivation
|
||||
splitOutputs = {
|
||||
texmfdist = texmfdist // { outputSpecified = true; };
|
||||
texmfroot = texmfroot // { outputSpecified = true; };
|
||||
} // (lib.genAttrs pkgList.nonEnvOutputs (outName: (buildEnv {
|
||||
# other outputs
|
||||
nonEnvOutputs = lib.genAttrs pkgList.nonEnvOutputs (outName: buildEnv' {
|
||||
inherit name;
|
||||
outputs = [ outName ];
|
||||
paths = builtins.catAttrs "outPath"
|
||||
(pkgList.otherOutputs.${outName} or [ ] ++ pkgList.specifiedOutputs.${outName} or [ ]);
|
||||
# force the output to be ${outName} or nix-env will not work
|
||||
|
@ -183,11 +195,9 @@ let
|
|||
export out="''${${outName}-}"
|
||||
'') ];
|
||||
inherit meta passthru;
|
||||
}).overrideAttrs { outputs = [ outName ]; } // { outputSpecified = true; }));
|
||||
});
|
||||
|
||||
passthru = {
|
||||
# these are not part of pkgList.nonEnvOutputs and must be exported in passthru
|
||||
inherit (splitOutputs) texmfdist texmfroot;
|
||||
# This is set primarily to help find-tarballs.nix to do its job
|
||||
requiredTeXPackages = builtins.filter lib.isDerivation (pkgList.bin ++ pkgList.nonbin
|
||||
++ lib.optionals (! __fromCombineWrapper)
|
||||
|
@ -201,13 +211,57 @@ let
|
|||
withPackages = reqs: self (args // { requiredTeXPackages = ps: requiredTeXPackages ps ++ reqs ps; __fromCombineWrapper = false; });
|
||||
};
|
||||
|
||||
# TeXLive::TLOBJ::fmtutil_cnf_lines
|
||||
fmtutilLine = { name, engine, enabled ? true, patterns ? [ "-" ], options ? "", ... }:
|
||||
lib.optionalString (! enabled) "#! " + "${name} ${engine} ${lib.concatStringsSep "," patterns} ${options}";
|
||||
fmtutilLines = { pname, formats, ...}:
|
||||
[ "#" "# from ${pname}:" ] ++ map fmtutilLine formats;
|
||||
|
||||
# TeXLive::TLOBJ::language_dat_lines
|
||||
langDatLine = { name, file, synonyms ? [ ], ... }:
|
||||
[ "${name} ${file}" ] ++ map (s: "=" + s) synonyms;
|
||||
langDatLines = { pname, hyphenPatterns, ... }:
|
||||
[ "% from ${pname}:" ] ++ builtins.concatMap langDatLine hyphenPatterns;
|
||||
|
||||
# TeXLive::TLOBJ::language_def_lines
|
||||
# see TeXLive::TLUtils::parse_AddHyphen_line for default values
|
||||
langDefLine = { name, file, lefthyphenmin ? "", righthyphenmin ? "", synonyms ? [ ], ... }:
|
||||
map (n: "\\addlanguage{${n}}{${file}}{}{${if lefthyphenmin == "" then "2" else lefthyphenmin}}{${if righthyphenmin == "" then "3" else righthyphenmin}}")
|
||||
([ name ] ++ synonyms);
|
||||
langDefLines = { pname, hyphenPatterns, ... }:
|
||||
[ "% from ${pname}:" ] ++ builtins.concatMap langDefLine hyphenPatterns;
|
||||
|
||||
# TeXLive::TLOBJ::language_lua_lines
|
||||
# see TeXLive::TLUtils::parse_AddHyphen_line for default values
|
||||
langLuaLine = { name, file, lefthyphenmin ? "", righthyphenmin ? "", synonyms ? [ ], ... }@args: ''
|
||||
''\t['${name}'] = {
|
||||
''\t''\tloader = '${file}',
|
||||
''\t''\tlefthyphenmin = ${if lefthyphenmin == "" then "2" else lefthyphenmin},
|
||||
''\t''\trighthyphenmin = ${if righthyphenmin == "" then "3" else righthyphenmin},
|
||||
''\t''\tsynonyms = { ${lib.concatStringsSep ", " (map (s: "'${s}'") synonyms)} },
|
||||
''
|
||||
+ lib.optionalString (args ? file_patterns) "\t\tpatterns = '${args.file_patterns}',\n"
|
||||
+ lib.optionalString (args ? file_exceptions) "\t\thyphenation = '${args.file_exceptions}',\n"
|
||||
+ lib.optionalString (args ? luaspecial) "\t\tspecial = '${args.luaspecial}',\n"
|
||||
+ "\t},";
|
||||
langLuaLines = { pname, hyphenPatterns, ... }:
|
||||
[ "-- from ${pname}:" ] ++ map langLuaLine hyphenPatterns;
|
||||
|
||||
assembleConfigLines = f: packages:
|
||||
builtins.concatStringsSep "\n" (builtins.concatMap f packages);
|
||||
|
||||
updmapLines = { pname, fontMaps, ...}:
|
||||
[ "# from ${pname}:" ] ++ fontMaps;
|
||||
|
||||
out =
|
||||
# no indent for git diff purposes
|
||||
(buildEnv {
|
||||
buildEnv' {
|
||||
|
||||
inherit name;
|
||||
|
||||
ignoreCollisions = false;
|
||||
# use attrNames, attrValues to ensure the two lists are sorted in the same way
|
||||
outputs = [ "out" ] ++ lib.optionals (! __combine) (builtins.attrNames nonEnvOutputs);
|
||||
otherOutputs = lib.optionals (! __combine) (builtins.attrValues nonEnvOutputs);
|
||||
|
||||
# remove fake derivations (without 'outPath') to avoid undesired build dependencies
|
||||
paths = builtins.catAttrs "outPath" pkgList.bin
|
||||
|
@ -230,219 +284,26 @@ let
|
|||
perl
|
||||
];
|
||||
|
||||
buildInputs = [ coreutils gawk gnugrep gnused ] ++ lib.optional needsGhostscript ghostscript;
|
||||
|
||||
inherit meta passthru;
|
||||
|
||||
postBuild =
|
||||
# create outputs
|
||||
lib.optionalString (! __combine) ''
|
||||
for otherOutputName in $outputs ; do
|
||||
if [[ "$otherOutputName" == 'out' ]] ; then continue ; fi
|
||||
otherOutput="otherOutput_$otherOutputName"
|
||||
ln -s "''${!otherOutput}" "''${!otherOutputName}"
|
||||
done
|
||||
'' +
|
||||
# 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 use the wrapped binaries in the scripts below, 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
|
||||
inherit texmfdist texmfroot;
|
||||
|
||||
# skip non-executable files (such as context.lua)
|
||||
if [[ ! -x "$target" ]] ; then continue ; fi
|
||||
fontconfigFile = makeFontsConf { fontDirectories = [ "${texmfroot}/texmf-dist/fonts" ]; };
|
||||
|
||||
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
|
||||
# patch texmf.cnf -> $TEXMFSYSVAR/web2c/texmf.cnf
|
||||
# TODO: perhaps do lua actions?
|
||||
# tried inspiration from install-tl, sub do_texmf_cnf
|
||||
''
|
||||
mkdir -p "$TEXMFCNF"
|
||||
if [ -e "$TEXMFDIST/web2c/texmfcnf.lua" ]; then
|
||||
sed \
|
||||
-e "s,\(TEXMFOS[ ]*=[ ]*\)[^\,]*,\1\"$TEXMFROOT\",g" \
|
||||
-e "s,\(TEXMFDIST[ ]*=[ ]*\)[^\,]*,\1\"$TEXMFDIST\",g" \
|
||||
-e "s,\(TEXMFSYSVAR[ ]*=[ ]*\)[^\,]*,\1\"$TEXMFSYSVAR\",g" \
|
||||
-e "s,\(TEXMFSYSCONFIG[ ]*=[ ]*\)[^\,]*,\1\"$TEXMFSYSCONFIG\",g" \
|
||||
-e "s,\(TEXMFLOCAL[ ]*=[ ]*\)[^\,]*,\1\"$out/share/texmf-local\",g" \
|
||||
-e "s,\$SELFAUTOLOC,$out,g" \
|
||||
-e "s,selfautodir:/,$out/share/,g" \
|
||||
-e "s,selfautodir:,$out/share/,g" \
|
||||
-e "s,selfautoparent:/,$out/share/,g" \
|
||||
-e "s,selfautoparent:,$out/share/,g" \
|
||||
"$TEXMFDIST/web2c/texmfcnf.lua" > "$TEXMFCNF/texmfcnf.lua"
|
||||
fi
|
||||
fmtutilCnf = assembleConfigLines fmtutilLines pkgList.sortedFormatPkgs;
|
||||
updmapCfg = assembleConfigLines updmapLines pkgList.sortedFontMaps;
|
||||
|
||||
sed \
|
||||
-e "s,\(TEXMFROOT[ ]*=[ ]*\)[^\,]*,\1$TEXMFROOT,g" \
|
||||
-e "s,\(TEXMFDIST[ ]*=[ ]*\)[^\,]*,\1$TEXMFDIST,g" \
|
||||
-e "s,\(TEXMFSYSVAR[ ]*=[ ]*\)[^\,]*,\1$TEXMFSYSVAR,g" \
|
||||
-e "s,\(TEXMFSYSCONFIG[ ]*=[ ]*\)[^\,]*,\1$TEXMFSYSCONFIG,g" \
|
||||
-e "s,\$SELFAUTOLOC,$out,g" \
|
||||
-e "s,\$SELFAUTODIR,$out/share,g" \
|
||||
-e "s,\$SELFAUTOPARENT,$out/share,g" \
|
||||
-e "s,\$SELFAUTOGRANDPARENT,$out/share,g" \
|
||||
-e "/^mpost,/d" `# CVE-2016-10243` \
|
||||
"$TEXMFDIST/web2c/texmf.cnf" > "$TEXMFCNF/texmf.cnf"
|
||||
'' +
|
||||
# now filter hyphenation patterns and formats
|
||||
(let
|
||||
hyphens = lib.filter (p: p.hasHyphens or false && p.tlOutputName or p.outputName == "tex") pkgList.nonbin;
|
||||
hyphenPNames = map (p: p.pname) hyphens;
|
||||
formats = lib.filter (p: p ? formats && p.tlOutputName or p.outputName == "tex") pkgList.nonbin;
|
||||
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";
|
||||
script =
|
||||
writeText "hyphens.sed" (
|
||||
# document how the file was generated (for language.dat)
|
||||
"1{ s/^(% Generated by .*)$/\\1, modified by ${if __combine then "texlive.combine" else "Nixpkgs"}/; p; }\n"
|
||||
# pick up the header
|
||||
+ "2,/^% from/{ /^% from/!p; };\n"
|
||||
# pick up all sections matching packages that we combine
|
||||
+ lib.concatMapStrings (pname: section "^% from ${pname}:$" "^% from|^%%% No changes may be made beyond this point.$") hyphenPNames
|
||||
# pick up the footer (for language.def)
|
||||
+ "/^%%% No changes may be made beyond this point.$/,$p;\n"
|
||||
);
|
||||
scriptLua =
|
||||
writeText "hyphens.lua.sed" (
|
||||
"1{ s/^(-- Generated by .*)$/\\1, modified by ${if __combine then "texlive.combine" else "Nixpkgs"}/; p; }\n"
|
||||
+ "2,/^-- END of language.us.lua/p;\n"
|
||||
+ lib.concatMapStrings (pname: section "^-- from ${pname}:$" "^}$|^-- from") hyphenPNames
|
||||
+ "$p;\n"
|
||||
);
|
||||
# formats not being installed must be disabled by prepending #! (see man fmtutil)
|
||||
# sed expression that enables the formats in /start/,/end/
|
||||
enableFormats = pname: "/^# from ${pname}:$/,/^# from/{ s/^#! //; };\n";
|
||||
fmtutilSed =
|
||||
writeText "fmtutil.sed" (
|
||||
# document how file was generated
|
||||
"1{ s/^(# Generated by .*)$/\\1, modified by ${if __combine then "texlive.combine" else "Nixpkgs"}/; }\n"
|
||||
# disable all formats, even those already disabled
|
||||
+ "s/^([^#]|#! )/#! \\1/;\n"
|
||||
# enable the formats from the packages being installed
|
||||
+ lib.concatMapStrings enableFormats formatPNames
|
||||
# clean up formats that have been disabled twice
|
||||
+ "s/^#! #! /#! /;\n"
|
||||
);
|
||||
in ''
|
||||
mkdir -p "$TEXMFSYSVAR/tex/generic/config"
|
||||
for fname in tex/generic/config/language.{dat,def}; do
|
||||
[[ -e "$TEXMFDIST/$fname" ]] && sed -E -n -f '${script}' "$TEXMFDIST/$fname" > "$TEXMFSYSVAR/$fname"
|
||||
done
|
||||
[[ -e "$TEXMFDIST"/tex/generic/config/language.dat.lua ]] && sed -E -n -f '${scriptLua}' \
|
||||
"$TEXMFDIST"/tex/generic/config/language.dat.lua > "$TEXMFSYSVAR"/tex/generic/config/language.dat.lua
|
||||
[[ -e "$TEXMFDIST"/web2c/fmtutil.cnf ]] && sed -E -f '${fmtutilSed}' "$TEXMFDIST"/web2c/fmtutil.cnf > "$TEXMFCNF"/fmtutil.cnf
|
||||
languageDat = assembleConfigLines langDatLines pkgList.sortedHyphenPatterns;
|
||||
languageDef = assembleConfigLines langDefLines pkgList.sortedHyphenPatterns;
|
||||
languageLua = assembleConfigLines langLuaLines pkgList.sortedHyphenPatterns;
|
||||
|
||||
# create $TEXMFSYSCONFIG database, make new $TEXMFSYSVAR files visible to kpathsea
|
||||
mktexlsr "$TEXMFSYSCONFIG" "$TEXMFSYSVAR"
|
||||
'') +
|
||||
# generate format links (reads fmtutil.cnf to know which ones) *after* the wrappers have been generated
|
||||
''
|
||||
texlinks --quiet "$out/bin"
|
||||
'' +
|
||||
# temporarily patch mtxrun.lua to generate uuid's deterministically from SOURCE_DATE_EPOCH
|
||||
''
|
||||
if [[ -e "$out/bin/mtxrun" ]]; then
|
||||
mv "$out"/bin/mtxrun.lua{,.orig}
|
||||
substitute "$TEXMFDIST"/scripts/context/lua/mtxrun.lua "$out"/bin/mtxrun.lua \
|
||||
--replace-fail 'randomseed(math.initialseed)' "randomseed($SOURCE_DATE_EPOCH)"
|
||||
fi
|
||||
'' +
|
||||
# texlive postactions (see TeXLive::TLUtils::_do_postaction_script)
|
||||
# this step includes generating the ConTeXt file databases since TL 2023
|
||||
(lib.concatMapStrings (pkg: ''
|
||||
postaction='${pkg.postactionScript}'
|
||||
case "$postaction" in
|
||||
*.pl) postInterp=perl ;;
|
||||
*.texlua) postInterp=texlua ;;
|
||||
*) postInterp= ;;
|
||||
esac
|
||||
echo "postaction install script for ${pkg.pname}: ''${postInterp:+$postInterp }$postaction install $TEXMFROOT"
|
||||
FORCE_SOURCE_DATE=1 TZ= $postInterp "$TEXMFROOT"/$postaction install "$TEXMFROOT"
|
||||
'') (lib.filter (pkg: pkg ? postactionScript) pkgList.tlpkg)) +
|
||||
# restore the original mtxrun.lua
|
||||
''
|
||||
if [[ -e "$out/bin/mtxrun" ]]; then
|
||||
mv "$out"/bin/mtxrun.lua{.orig,}
|
||||
fi
|
||||
'' +
|
||||
# generate formats
|
||||
# TODO generate ConTeXt formats (based on fmtutil.cnf?)
|
||||
''
|
||||
# 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
|
||||
# https://salsa.debian.org/live-team/live-build/-/blob/master/examples/hooks/reproducible/2006-reproducible-texlive-binaries-fmt-files.hook.chroot#L52
|
||||
# note that calling faketime and fmtutil is fragile (faketime uses LD_PRELOAD, fmtutil calls /bin/sh, causing potential glibc issues on non-NixOS)
|
||||
# so we patch fmtutil to use faketime, rather than calling faketime fmtutil
|
||||
substitute "$TEXMFDIST"/scripts/texlive/fmtutil.pl fmtutil \
|
||||
--replace-fail '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
|
||||
postactionScripts = builtins.catAttrs "postactionScript" pkgList.tlpkg;
|
||||
|
||||
# Disable unavailable map files
|
||||
echo y | updmap --sys --syncwithtrees --force 2>&1 | grep '^\(updmap\| /\)'
|
||||
# Regenerate the map files (this is optional)
|
||||
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
|
||||
|
||||
mktexlsr "$TEXMFSYSCONFIG" "$TEXMFSYSVAR" # to make sure (of what?)
|
||||
'' +
|
||||
# remove *-sys scripts since /nix/store is readonly
|
||||
''
|
||||
rm "$out"/bin/*-sys
|
||||
'' +
|
||||
# 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.
|
||||
''
|
||||
find "$TEXMFSYSVAR"/web2c -name '*.log' -delete
|
||||
'' +
|
||||
# link TEXMFDIST in $out/share for backward compatibility
|
||||
''
|
||||
ln -s "$TEXMFDIST" "$out"/share/texmf
|
||||
''
|
||||
;
|
||||
}).overrideAttrs (prev:
|
||||
{ allowSubstitutes = true; }
|
||||
// lib.optionalAttrs (! __combine) ({
|
||||
outputs = [ "out" ] ++ pkgList.nonEnvOutputs;
|
||||
meta = prev.meta // { inherit (pkgList) outputsToInstall; };
|
||||
} // builtins.listToAttrs
|
||||
(map (out: { name = "otherOutput_" + out; value = splitOutputs.${out}; }) pkgList.nonEnvOutputs)
|
||||
)
|
||||
);
|
||||
in out)
|
||||
postBuild = ''
|
||||
. "${./build-tex-env.sh}"
|
||||
'';
|
||||
};
|
||||
# outputsToInstall must be set *after* overrideAttrs (used in buildEnv') or it fails the checkMeta tests
|
||||
in if __combine then out else lib.addMetaAttrs { inherit (pkgList) outputsToInstall; } out)
|
||||
|
|
328
pkgs/tools/typesetting/tex/texlive/build-tex-env.sh
Normal file
328
pkgs/tools/typesetting/tex/texlive/build-tex-env.sh
Normal file
|
@ -0,0 +1,328 @@
|
|||
# shellcheck shell=bash
|
||||
|
||||
# Replicate the post install phase of the upstream TeX Live installer.
|
||||
#
|
||||
# This script is based on the install-tl script and the TeXLive::TLUtils perl
|
||||
# module, down to using the same (prefixed) function names and log messages.
|
||||
#
|
||||
# When updating to the next TeX Live release, review install-tl for changes and
|
||||
# update this script accordingly.
|
||||
|
||||
### install-tl
|
||||
|
||||
# adjust texmf.cnf and texmfcnf.lua
|
||||
installtl_do_texmf_cnf () {
|
||||
# unlike install-tl, we make a copy of the entire texmf.cnf
|
||||
# and point the binaries at $TEXMFCNF/texmf.cnf via wrappers
|
||||
|
||||
mkdir -p "$TEXMFCNF"
|
||||
if [[ -e $texmfdist/web2c/texmfcnf.lua ]]; then
|
||||
tlutils_info "writing texmfcnf.lua to $TEXMFCNF/texmfcnf.lua"
|
||||
sed -e "s,\(TEXMFOS[ ]*=[ ]*\)[^\,]*,\1\"$texmfroot\",g" \
|
||||
-e "s,\(TEXMFDIST[ ]*=[ ]*\)[^\,]*,\1\"$texmfdist\",g" \
|
||||
-e "s,\(TEXMFSYSVAR[ ]*=[ ]*\)[^\,]*,\1\"$TEXMFSYSVAR\",g" \
|
||||
-e "s,\(TEXMFSYSCONFIG[ ]*=[ ]*\)[^\,]*,\1\"$TEXMFSYSCONFIG\",g" \
|
||||
-e "s,\(TEXMFLOCAL[ ]*=[ ]*\)[^\,]*,\1\"$out/share/texmf-local\",g" \
|
||||
-e "s,\$SELFAUTOLOC,$out,g" \
|
||||
-e "s,selfautodir:/,$out/share/,g" \
|
||||
-e "s,selfautodir:,$out/share/,g" \
|
||||
-e "s,selfautoparent:/,$out/share/,g" \
|
||||
-e "s,selfautoparent:,$out/share/,g" \
|
||||
"$texmfdist/web2c/texmfcnf.lua" > "$TEXMFCNF/texmfcnf.lua"
|
||||
fi
|
||||
|
||||
tlutils_info "writing texmf.cnf to $TEXMFCNF/texmf.cnf"
|
||||
sed -e "s,\(TEXMFROOT[ ]*=[ ]*\)[^\,]*,\1$texmfroot,g" \
|
||||
-e "s,\(TEXMFDIST[ ]*=[ ]*\)[^\,]*,\1$texmfdist,g" \
|
||||
-e "s,\(TEXMFSYSVAR[ ]*=[ ]*\)[^\,]*,\1$TEXMFSYSVAR,g" \
|
||||
-e "s,\(TEXMFSYSCONFIG[ ]*=[ ]*\)[^\,]*,\1$TEXMFSYSCONFIG,g" \
|
||||
-e "s,\$SELFAUTOLOC,$out,g" \
|
||||
-e "s,\$SELFAUTODIR,$out/share,g" \
|
||||
-e "s,\$SELFAUTOPARENT,$out/share,g" \
|
||||
-e "s,\$SELFAUTOGRANDPARENT,$out/share,g" \
|
||||
"$texmfdist/web2c/texmf.cnf" > "$TEXMFCNF/texmf.cnf"
|
||||
}
|
||||
|
||||
# run postaction scripts from texlive.tlpdb
|
||||
# note that the other postactions (fileassoc, ...) are Windows only
|
||||
installtl_do_tlpdb_postactions () {
|
||||
local postaction postInterp
|
||||
if [[ -n $postactionScripts ]] ; then
|
||||
tlutils_info "running package-specific postactions"
|
||||
for postaction in $postactionScripts ; do
|
||||
# see TeXLive::TLUtils::_installtl_do_postaction_script
|
||||
case "$postaction" in
|
||||
*.pl)
|
||||
postInterp=perl ;;
|
||||
*.texlua)
|
||||
postInterp=texlua ;;
|
||||
*)
|
||||
postInterp= ;;
|
||||
esac
|
||||
tlutils_info "${postInterp:+$postInterp }$postaction install $texmfroot"
|
||||
FORCE_SOURCE_DATE=1 $postInterp "$texmfroot/$postaction" install "$texmfroot" >>"$TEXMFSYSVAR/postaction-${postaction##*/}.log"
|
||||
done
|
||||
tlutils_info "finished with package-specific postactions"
|
||||
fi
|
||||
}
|
||||
|
||||
installtl_do_path_adjustments () {
|
||||
# here install-tl would add a system symlink to the man pages
|
||||
# instead we run other nixpkgs related adjustments
|
||||
|
||||
# generate wrappers
|
||||
tlutils_info "wrapping binaries"
|
||||
|
||||
local bash cmd extraPaths link path target wrapCount
|
||||
bash="$(command -v bash)"
|
||||
enable -f "${bash%/bin/bash}"/lib/bash/realpath realpath
|
||||
|
||||
# common runtime dependencies
|
||||
for cmd in cat awk sed grep gs ; do
|
||||
# do not fail if gs is absent
|
||||
path="$(PATH="$HOST_PATH" command -v "$cmd" || :)"
|
||||
if [[ -n $path ]] ; then
|
||||
extraPaths="${extraPaths:+$extraPaths:}${path%/"$cmd"}"
|
||||
fi
|
||||
done
|
||||
|
||||
declare -i wrapCount=0
|
||||
for link in "$out"/bin/* ; do
|
||||
target="$(realpath "$link")"
|
||||
|
||||
# skip non-executable files (such as context.lua)
|
||||
if [[ ! -x $target ]] ; then
|
||||
continue
|
||||
fi
|
||||
|
||||
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 : "$extraPaths:$out/bin" \
|
||||
--set-default TEXMFCNF "$TEXMFCNF" \
|
||||
--set-default FONTCONFIG_FILE "$fontconfigFile"
|
||||
wrapCount=$((wrapCount + 1))
|
||||
done
|
||||
|
||||
tlutils_info "wrapped $wrapCount binaries and scripts"
|
||||
|
||||
# generate format symlinks (using fmtutil.cnf)
|
||||
tlutils_info "generating format symlinks"
|
||||
texlinks --quiet "$out/bin"
|
||||
|
||||
# remove *-sys scripts since /nix/store is readonly
|
||||
rm "$out"/bin/*-sys
|
||||
|
||||
# link TEXMFDIST in $out/share for backward compatibility
|
||||
ln -s "$texmfdist" "$out"/share/texmf
|
||||
|
||||
# generate other outputs
|
||||
local otherOutput otherOutputName
|
||||
local otherOutputs="$otherOutputs"
|
||||
for otherOutputName in $outputs ; do
|
||||
if [[ $otherOutputName == out ]] ; then
|
||||
continue
|
||||
fi
|
||||
otherOutput="${otherOutputs%% *}"
|
||||
otherOutputs="${otherOutputs#* }"
|
||||
ln -s "$otherOutput" "${!otherOutputName}"
|
||||
done
|
||||
}
|
||||
|
||||
# run all post install parts
|
||||
installtl_do_postinst_stuff () {
|
||||
installtl_do_texmf_cnf
|
||||
|
||||
# create various config files
|
||||
# in principle, we could use writeText and share them across different
|
||||
# environments, but the eval & build overhead is not worth the savings
|
||||
tlutils_create_fmtutil
|
||||
tlutils_create_updmap
|
||||
tlutils_create_language_dat
|
||||
tlutils_create_language_def
|
||||
tlutils_create_language_lua
|
||||
|
||||
# make new files available
|
||||
tlutils_info "running mktexlsr $TEXMFSYSVAR $TEXMFSYSCONFIG"
|
||||
mktexlsr "$TEXMFSYSVAR" "$TEXMFSYSCONFIG"
|
||||
|
||||
# update font maps
|
||||
tlutils_info "generating font maps"
|
||||
updmap-sys --quiet --force --nohash 2>&1
|
||||
# configure the paper size
|
||||
# tlmgr --no-execute-actions paper letter
|
||||
# install-tl: "rerun mktexlsr for updmap-sys and tlmgr paper updates"
|
||||
tlutils_info "re-running mktexlsr $TEXMFSYSVAR $TEXMFSYSCONFIG"
|
||||
mktexlsr "$TEXMFSYSVAR" "$TEXMFSYSCONFIG"
|
||||
|
||||
tlutils_update_context_cache
|
||||
|
||||
# generate formats
|
||||
# install-tl would run fmtutil-sys $common_fmtutil_args --no-strict --all
|
||||
# instead, we want fmtutil to exit with error on failure
|
||||
if [[ -n $fmtutilCnf ]] ; then
|
||||
tlutils_info "pre-generating all format files, be patient..."
|
||||
# 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
|
||||
# https://salsa.debian.org/live-team/live-build/-/blob/master/examples/hooks/reproducible/2006-reproducible-texlive-binaries-fmt-files.hook.chroot#L52
|
||||
# note that calling faketime and fmtutil is fragile (faketime uses LD_PRELOAD, fmtutil calls /bin/sh, causing potential glibc issues on non-NixOS)
|
||||
# so we patch fmtutil to use faketime, rather than calling faketime fmtutil
|
||||
substitute "$texmfdist"/scripts/texlive/fmtutil.pl fmtutil \
|
||||
--replace-fail "my \$cmdline = \"\$eng -ini " "my \$cmdline = \"faketime -f '\@$(date +'%F %T' --date=@"$SOURCE_DATE_EPOCH") x0.001' \$eng -ini "
|
||||
FORCE_SOURCE_DATE=1 perl fmtutil --quiet --strict --sys --all 2>&1 | grep '^fmtutil' # too verbose
|
||||
fi
|
||||
|
||||
installtl_do_path_adjustments
|
||||
|
||||
installtl_do_tlpdb_postactions
|
||||
|
||||
# remove log files to improve reproducibility
|
||||
find "$TEXMFSYSVAR" -name '*.log' -delete
|
||||
}
|
||||
|
||||
### TeXLive::TLUtils
|
||||
|
||||
tlutils_info () {
|
||||
printf '%s\n' "texlive: $*"
|
||||
}
|
||||
|
||||
tlutils_create_fmtutil () {
|
||||
# fmtutil.cnf created by install-tl already exists readonly in $texmfdist
|
||||
# so here we need to *disable* the entries that are not in $fmtutilCnf
|
||||
# and write the output in the writeable $TEXMFSYSVAR
|
||||
|
||||
local engine fmt line outFile sedExpr
|
||||
outFile="$TEXMFSYSVAR"/web2c/fmtutil.cnf
|
||||
|
||||
tlutils_info "writing fmtutil.cnf to $outFile"
|
||||
|
||||
while IFS= read -r line ; do
|
||||
# a line is 'fmt engine ...' or '#! fmt engine ...'
|
||||
# (see fmtutil.pl::read_fmtutil_file)
|
||||
line="${line#\#! }"
|
||||
read -r fmt engine _ <<<"$line"
|
||||
# if a line for the ($fmt,$engine) pair exists, remove it to avoid
|
||||
# pointless warnings from fmtutil
|
||||
sedExpr="$sedExpr /^(#! )?$fmt $engine /d;"
|
||||
done <<<"$fmtutilCnf"
|
||||
|
||||
# disable all the remaining formats
|
||||
sedExpr="$sedExpr /^[^#]/{ s/^/#! /p };"
|
||||
|
||||
{
|
||||
echo "# Generated by nixpkgs"
|
||||
sed -E -n -e "$sedExpr" "$texmfdist"/web2c/fmtutil.cnf
|
||||
[[ -z $fmtutilCnf ]] || printf '%s' "$fmtutilCnf"
|
||||
} >"$outFile"
|
||||
}
|
||||
|
||||
tlutils_create_updmap () {
|
||||
# updmap.cfg created by install-tl already exists readonly in $texmfdist
|
||||
# so here we need to *disable* the entries that are not in $updmapCfg
|
||||
# and write the output in the writeable $TEXMFSYSVAR
|
||||
|
||||
local line map outFile sedExpr
|
||||
outFile="$TEXMFSYSVAR"/web2c/updmap.cfg
|
||||
|
||||
tlutils_info "writing updmap.cfg to $outFile"
|
||||
|
||||
while IFS= read -r line ; do
|
||||
# a line is 'type map' or '#! type map'
|
||||
# (see fmtutil.pl::read_updmap_file)
|
||||
read -r _ map <<<"$line"
|
||||
# if a line for $map exists, remove it to avoid
|
||||
# pointless warnings from updmap
|
||||
sedExpr="$sedExpr /^(#! )?[^ ]*Map $map$/d;"
|
||||
done <<<"$updmapCfg"
|
||||
|
||||
# disable all the remaining font maps
|
||||
sedExpr="$sedExpr /^[^ ]*Map/{ s/^/#! /p };"
|
||||
|
||||
{
|
||||
echo "# Generated by nixpkgs"
|
||||
sed -E -n -e "$sedExpr" "$texmfdist"/web2c/updmap.cfg
|
||||
[[ -z $updmapCfg ]] || printf '%s' "$updmapCfg"
|
||||
} >"$outFile"
|
||||
}
|
||||
|
||||
tlutils__create_config_files () {
|
||||
# simplified arguments
|
||||
local header="$1"
|
||||
local dest="$2"
|
||||
local prefix="$3"
|
||||
local lines="$4"
|
||||
local suffix="$5"
|
||||
if [[ -z "$header" || -e "$header" ]] ; then
|
||||
tlutils_info "writing ${dest##*/} to $dest"
|
||||
{
|
||||
[[ -z $prefix ]] || printf '%s\n' "$prefix"
|
||||
[[ ! -e $header ]] || cat "$header"
|
||||
[[ -z $lines ]] || printf '%s\n' "$lines"
|
||||
[[ -z $suffix ]] || printf '%s\n' "$suffix"
|
||||
} >"$dest"
|
||||
fi
|
||||
}
|
||||
|
||||
tlutils_create_language_dat () {
|
||||
tlutils__create_config_files \
|
||||
"$texmfdist"/tex/generic/config/language.us \
|
||||
"$TEXMFSYSVAR"/tex/generic/config/language.dat \
|
||||
'% Generated by nixpkgs' \
|
||||
"$languageDat" \
|
||||
''
|
||||
}
|
||||
|
||||
tlutils_create_language_def () {
|
||||
tlutils__create_config_files \
|
||||
"$texmfdist"/tex/generic/config/language.us.def \
|
||||
"$TEXMFSYSVAR"/tex/generic/config/language.def \
|
||||
'' \
|
||||
"$languageDef" \
|
||||
'%%% No changes may be made beyond this point.
|
||||
|
||||
\uselanguage {USenglish} %%% This MUST be the last line of the file.'
|
||||
}
|
||||
|
||||
tlutils_create_language_lua () {
|
||||
tlutils__create_config_files \
|
||||
"$texmfdist"/tex/generic/config/language.us.lua \
|
||||
"$TEXMFSYSVAR"/tex/generic/config/language.dat.lua \
|
||||
'-- Generated by nixpkgs' \
|
||||
"$languageLua" \
|
||||
'}'
|
||||
}
|
||||
|
||||
tlutils_update_context_cache () {
|
||||
if [[ -x $out/bin/mtxrun ]] ; then
|
||||
tlutils_info "setting up ConTeXt cache"
|
||||
|
||||
# temporarily patch mtxrun.lua to generate uuid's deterministically from SOURCE_DATE_EPOCH
|
||||
mv "$out"/bin/mtxrun.lua{,.orig}
|
||||
substitute "$out"/bin/mtxrun.lua.orig "$out"/bin/mtxrun.lua \
|
||||
--replace-fail 'randomseed(math.initialseed)' "randomseed($SOURCE_DATE_EPOCH)"
|
||||
|
||||
# this is very verbose, save the output for debugging purposes
|
||||
{
|
||||
mtxrun --generate
|
||||
context --luatex --generate
|
||||
[[ ! -x $out/bin/luajittex ]] || context --luajittex --generate
|
||||
} >"$TEXMFSYSVAR"/context-cache.log
|
||||
|
||||
mv "$out"/bin/mtxrun.lua{.orig,}
|
||||
fi
|
||||
}
|
||||
|
||||
# init variables (export only the ones that are used in the wrappers)
|
||||
export PATH="$out/bin:$PATH"
|
||||
TEXMFSYSCONFIG="$out/share/texmf-config"
|
||||
TEXMFSYSVAR="$out/share/texmf-var"
|
||||
export TEXMFCNF="$TEXMFSYSVAR/web2c"
|
||||
|
||||
installtl_do_postinst_stuff
|
|
@ -82,8 +82,9 @@ let
|
|||
outputSpecified = true;
|
||||
inherit tex;
|
||||
} // lib.optionalAttrs (args ? deps) { tlDeps = args.deps; }
|
||||
// lib.optionalAttrs (args ? fontMaps) { inherit (args) fontMaps; }
|
||||
// lib.optionalAttrs (args ? formats) { inherit (args) formats; }
|
||||
// lib.optionalAttrs hasHyphens { inherit hasHyphens; }
|
||||
// lib.optionalAttrs (args ? hyphenPatterns) { inherit (args) hyphenPatterns; }
|
||||
// lib.optionalAttrs (args ? postactionScript) { inherit (args) postactionScript; }
|
||||
// lib.optionalAttrs hasDocfiles { texdoc = texdoc; }
|
||||
// lib.optionalAttrs hasSource { texsource = texsource; }
|
||||
|
|
|
@ -80,6 +80,22 @@ $a}
|
|||
D # restart cycle from the current line
|
||||
}
|
||||
|
||||
# extract font maps
|
||||
/^execute add.*Map /{
|
||||
# open a list
|
||||
i\ fontMaps = [
|
||||
|
||||
# loop through following map lines
|
||||
:next-map
|
||||
s/^\n?execute add(.*Map .*)$/ "\1"/p # print map
|
||||
s/^.*$// # clear pattern space
|
||||
N; /^\nexecute add.*Map /b next-map
|
||||
|
||||
# close the string
|
||||
i\ ];
|
||||
D # restart cycle from the current line
|
||||
}
|
||||
|
||||
# detect presence of notable files
|
||||
/^docfiles /{
|
||||
s/^.*$// # ignore the first line
|
||||
|
@ -129,9 +145,36 @@ $a}
|
|||
# extract postaction scripts (right now, at most one per package, so a string suffices)
|
||||
s/^postaction script file=(.*)$/ postactionScript = "\1";/p
|
||||
|
||||
# extract hyphenation patterns and formats
|
||||
# (this may create duplicate lines, use uniq to remove them)
|
||||
/^execute\sAddHyphen/i\ hasHyphens = true;
|
||||
# extract hyphenation patterns
|
||||
/^execute\sAddHyphen\s/{
|
||||
# open a list
|
||||
i\ hyphenPatterns = [
|
||||
|
||||
# create one attribute set per hyphenation pattern
|
||||
|
||||
# plain keys: name, lefthyphenmin, righthyphenmin, file, file_patterns, file_exceptions, comment
|
||||
# optionally double quoted key: luaspecial, comment
|
||||
# comma-separated lists: databases, synonyms
|
||||
:next-hyphen
|
||||
s/(^|\n)execute\sAddHyphen/ {/
|
||||
s/\s+luaspecial="([^"]+)"/\n luaspecial = "\1";/
|
||||
s/\s+(name|lefthyphenmin|righthyphenmin|file|file_patterns|file_exceptions|luaspecial|comment)=([^ \t\n]*)/\n \1 = "\2";/g
|
||||
s/\s+(databases|synonyms)=([^ \t\n]+)/\n \1 = [ "\2" ];/g
|
||||
s/$/\n }/
|
||||
|
||||
:split-hyphens
|
||||
s/"([^,]+),([^"]+)" ]/"\1" "\2" ]/;
|
||||
t split-hyphens # repeat until there are no commas
|
||||
|
||||
p
|
||||
s/^.*$// # clear pattern space
|
||||
N
|
||||
/^\nexecute\sAddHyphen\s/b next-hyphen
|
||||
|
||||
# close the list
|
||||
i\ ];
|
||||
D # restart cycle from the current line
|
||||
}
|
||||
|
||||
# extract format details
|
||||
/^execute\sAddFormat\s/{
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -79,6 +79,7 @@ mapAliases ({
|
|||
arcanPackages = throw "arcanPackages was removed and its sub-attributes were promoted to top-level"; # Added 2023-11-26
|
||||
archiveopteryx = throw "archiveopteryx depended on an unsupported version of OpenSSL and was unmaintained"; # Added 2024-01-03
|
||||
ardour_6 = throw "ardour_6 has been removed in favor of newer versions"; # Added 2023-10-13
|
||||
aria = aria2; # Added 2024-03-26
|
||||
aseprite-unfree = aseprite; # Added 2023-08-26
|
||||
asls = throw "asls has been removed: abandoned by upstream"; # Added 2023-03-16
|
||||
asterisk_16 = throw "asterisk_16: Asterisk 16 is end of life and has been removed"; # Added 2023-04-19
|
||||
|
@ -501,6 +502,7 @@ mapAliases ({
|
|||
haxe_3_2 = throw "'haxe_3_2' has been removed because it is old and no longer used by any packages in nixpkgs"; # Added 2023-03-15
|
||||
haxe_3_4 = throw "'haxe_3_4' has been removed because it is old and no longer used by any packages in nixpkgs"; # Added 2023-03-15
|
||||
hepmc = throw "'hepmc' has been renamed to/replaced by 'hepmc2'"; # Converted to throw 2023-09-10
|
||||
hikari = throw "hikari has been removed from nixpkgs, it was unmaintained and required wlroots_0_15 at the time of removal"; # Added 2024-03-28
|
||||
hip = throw "'hip' has been removed in favor of 'rocmPackages.clr'"; # Added 2023-10-08
|
||||
hipcc = throw "'hipcc' has been replaced with 'rocmPackages.hipcc'"; # Added 2023-10-08
|
||||
hipchat = throw "'hipchat' has been discontinued since 2019; upstream recommends Slack."; # Added 2023-12-02
|
||||
|
@ -1287,6 +1289,7 @@ mapAliases ({
|
|||
win-virtio = virtio-win; # Added 2023-10-17
|
||||
win-signed-gplpv-drivers = throw "win-signed-gplpv-drivers has been removed from nixpkgs, as it's unmaintained: https://help.univention.com/t/installing-signed-gplpv-drivers/21828"; # Added 2023-08-17
|
||||
wlroots_0_14 = throw "'wlroots_0_14' has been removed in favor of newer versions"; # Added 2023-07-29
|
||||
wlroots_0_15 = throw "'wlroots_0_15' has been removed in favor of newer versions"; # Added 2024-03-28
|
||||
wordpress6_1 = throw "'wordpress6_1' has been removed in favor of the latest version"; # Added 2023-10-10
|
||||
wordpress6_2 = throw "'wordpress6_2' has been removed in favor of the latest version"; # Added 2023-10-10
|
||||
wormhole-rs = magic-wormhole-rs; # Added 2022-05-30. preserve, reason: Arch package name, main binary name
|
||||
|
|
|
@ -4194,7 +4194,6 @@ with pkgs;
|
|||
aria2 = callPackage ../tools/networking/aria2 {
|
||||
inherit (darwin.apple_sdk.frameworks) Security;
|
||||
};
|
||||
aria = aria2;
|
||||
|
||||
as-tree = callPackage ../tools/misc/as-tree { };
|
||||
|
||||
|
@ -31074,8 +31073,6 @@ with pkgs;
|
|||
};
|
||||
|
||||
fvwm = fvwm2;
|
||||
fvwm2 = callPackage ../applications/window-managers/fvwm/2.6.nix { };
|
||||
fvwm3 = callPackage ../applications/window-managers/fvwm/3.nix { };
|
||||
|
||||
ganttproject-bin = callPackage ../applications/misc/ganttproject-bin {
|
||||
jre = openjdk17.override {
|
||||
|
@ -32056,7 +32053,6 @@ with pkgs;
|
|||
super-productivity = callPackage ../applications/office/super-productivity { };
|
||||
|
||||
inherit (callPackages ../development/libraries/wlroots {})
|
||||
wlroots_0_15
|
||||
wlroots_0_16
|
||||
wlroots_0_17
|
||||
wlroots;
|
||||
|
@ -32087,10 +32083,6 @@ with pkgs;
|
|||
|
||||
wbg = callPackage ../applications/misc/wbg { };
|
||||
|
||||
hikari = callPackage ../applications/window-managers/hikari {
|
||||
wlroots = wlroots_0_15;
|
||||
};
|
||||
|
||||
i3 = callPackage ../applications/window-managers/i3 {
|
||||
xcb-util-cursor = if stdenv.isDarwin then xcb-util-cursor-HEAD else xcb-util-cursor;
|
||||
};
|
||||
|
@ -38502,9 +38494,7 @@ with pkgs;
|
|||
|
||||
getdp = callPackage ../applications/science/math/getdp { };
|
||||
|
||||
gurobi = callPackage ../applications/science/math/gurobi {
|
||||
python3 = python310;
|
||||
};
|
||||
gurobi = callPackage ../applications/science/math/gurobi { };
|
||||
|
||||
jags = callPackage ../applications/science/math/jags { };
|
||||
|
||||
|
@ -41324,8 +41314,6 @@ with pkgs;
|
|||
|
||||
xmcp = callPackage ../tools/X11/xmcp { };
|
||||
|
||||
yesplaymusic = callPackage ../applications/audio/yesplaymusic { };
|
||||
|
||||
ymuse = callPackage ../applications/audio/ymuse { };
|
||||
|
||||
zeyple = callPackage ../misc/zeyple { };
|
||||
|
|
|
@ -12099,10 +12099,10 @@ with self; {
|
|||
|
||||
HTTPBody = buildPerlPackage {
|
||||
pname = "HTTP-Body";
|
||||
version = "1.22";
|
||||
version = "1.23";
|
||||
src = fetchurl {
|
||||
url = "mirror://cpan/authors/id/G/GE/GETTY/HTTP-Body-1.22.tar.gz";
|
||||
hash = "sha256-/A0sWFs70VMtkmCZZdWJ4Mh804DnzKQvua0KExEicpc=";
|
||||
url = "mirror://cpan/authors/id/G/GE/GETTY/HTTP-Body-1.23.tar.gz";
|
||||
hash = "sha256-7OmB9BYWNaL7piFdAlcZXlOMTyNDhFMFAd/bahvY1jY=";
|
||||
};
|
||||
buildInputs = [ TestDeep ];
|
||||
propagatedBuildInputs = [ HTTPMessage ];
|
||||
|
|
|
@ -2463,6 +2463,18 @@ self: super: with self; {
|
|||
|
||||
cpyparsing = callPackage ../development/python-modules/cpyparsing { };
|
||||
|
||||
craft-application-1 = callPackage ../development/python-modules/craft-application-1 { };
|
||||
|
||||
craft-archives = callPackage ../development/python-modules/craft-archives { };
|
||||
|
||||
craft-cli = callPackage ../development/python-modules/craft-cli { };
|
||||
|
||||
craft-grammar = callPackage ../development/python-modules/craft-grammar { };
|
||||
|
||||
craft-parts = callPackage ../development/python-modules/craft-parts { };
|
||||
|
||||
craft-providers = callPackage ../development/python-modules/craft-providers { };
|
||||
|
||||
cram = callPackage ../development/python-modules/cram { };
|
||||
|
||||
cramjam = callPackage ../development/python-modules/cramjam { };
|
||||
|
@ -5131,12 +5143,7 @@ self: super: with self; {
|
|||
|
||||
guppy3 = callPackage ../development/python-modules/guppy3 { };
|
||||
|
||||
gurobipy = if stdenv.hostPlatform.isDarwin then
|
||||
callPackage ../development/python-modules/gurobipy/darwin.nix { }
|
||||
else if stdenv.hostPlatform.system == "x86_64-linux" then
|
||||
callPackage ../development/python-modules/gurobipy/linux.nix { }
|
||||
else
|
||||
throw "gurobipy not yet supported on ${stdenv.hostPlatform.system}";
|
||||
gurobipy = callPackage ../development/python-modules/gurobipy { };
|
||||
|
||||
guzzle-sphinx-theme = callPackage ../development/python-modules/guzzle-sphinx-theme { };
|
||||
|
||||
|
@ -10628,6 +10635,8 @@ self: super: with self; {
|
|||
|
||||
pydantic-settings = callPackage ../development/python-modules/pydantic-settings { };
|
||||
|
||||
pydantic-yaml-0 = callPackage ../development/python-modules/pydantic-yaml-0 { };
|
||||
|
||||
pydash = callPackage ../development/python-modules/pydash { };
|
||||
|
||||
pydata-google-auth = callPackage ../development/python-modules/pydata-google-auth { };
|
||||
|
@ -13853,6 +13862,8 @@ self: super: with self; {
|
|||
|
||||
snakeviz = callPackage ../development/python-modules/snakeviz { };
|
||||
|
||||
snap-helpers = callPackage ../development/python-modules/snap-helpers { };
|
||||
|
||||
snapcast = callPackage ../development/python-modules/snapcast { };
|
||||
|
||||
snapshottest = callPackage ../development/python-modules/snapshottest { };
|
||||
|
@ -13977,6 +13988,10 @@ self: super: with self; {
|
|||
|
||||
spatial-image = callPackage ../development/python-modules/spatial-image { };
|
||||
|
||||
spdx = callPackage ../development/python-modules/spdx { };
|
||||
|
||||
spdx-lookup = callPackage ../development/python-modules/spdx-lookup { };
|
||||
|
||||
spdx-tools = callPackage ../development/python-modules/spdx-tools { };
|
||||
|
||||
speaklater = callPackage ../development/python-modules/speaklater { };
|
||||
|
|
Loading…
Reference in a new issue