Merge staging-next into staging

This commit is contained in:
github-actions[bot] 2024-04-01 00:03:00 +00:00 committed by GitHub
commit ad17f02de7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
76 changed files with 3653 additions and 699 deletions

View file

@ -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";

View file

@ -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";

View file

@ -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}";

View file

@ -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" ];

View file

@ -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 = [

View file

@ -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 = [

View file

@ -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";
};

View file

@ -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"

View file

@ -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
};

View file

@ -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
};

View file

@ -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 ];
};
}

View file

@ -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 { }) ];

View file

@ -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;
};

View file

@ -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 = [

View file

@ -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 ];

View file

@ -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;
};
})

View file

@ -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 ];
};
}

View 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")

View 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;
};
}

View 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;
};
})

View file

@ -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" ];

View 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 ];
};
})

View 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 ];
};
}

View 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;
};
}

View file

@ -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";
};
}

View file

@ -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 {

View file

@ -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

View file

@ -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 ];

View file

@ -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=";

View file

@ -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;
};
}

View 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;
};
}

View 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;
};
}

View 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;
};
}

View 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,

View 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;
};
}

View 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;
};
}

View file

@ -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.

View file

@ -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}"

View file

@ -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" ];
};
}

View file

@ -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 }
)

View file

@ -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 = [

View file

@ -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 = [

View 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 ];
};
}

View file

@ -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

View file

@ -20,7 +20,9 @@ buildPythonPackage rec {
sha256 = "8IZQY6qB4r1SUPItDlTDnVQuPs0I38K3yJ6LiPJuwbU=";
};
propagatedBuildInputs = [ zbar pillow numpy ];
buildInputs = [ zbar ];
propagatedBuildInputs = [ pillow numpy ];
nativeCheckInputs = [ pytestCheckHook ];

View 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;
};
}

View 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 ];
};
}

View 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 ];
};
}

View file

@ -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 = [

View file

@ -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";

View file

@ -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 = ''

View file

@ -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 ]);

View file

@ -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=";

View file

@ -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=";
};
};

View file

@ -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; {

View file

@ -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;

View file

@ -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 ];

View file

@ -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" {

View file

@ -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";
};
}

View file

@ -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"
}
}

View file

@ -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;
};

View file

@ -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}";

View file

@ -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[@]}"
];

View file

@ -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

View file

@ -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";

View file

@ -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} ..

View file

@ -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)

View 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

View file

@ -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; }

View file

@ -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

View file

@ -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

View file

@ -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 { };

View file

@ -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 ];

View file

@ -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 { };