push sheeet
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s

This commit is contained in:
Dark Steveneq
2025-10-09 14:15:47 +02:00
commit 646b892680
49168 changed files with 5897842 additions and 0 deletions

View File

@@ -0,0 +1,128 @@
{
lib,
rustPlatform,
cargo-tauri,
npmHooks,
fetchFromGitHub,
fetchNpmDeps,
pkg-config,
python3,
nodejs,
webkitgtk_4_1,
glib,
gtk3,
openssl,
pango,
cairo,
pixman,
protobuf,
perl,
makeWrapper,
nix-update-script,
stdenv,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "yaak";
version = "2025.1.2";
src = fetchFromGitHub {
owner = "mountain-loop";
repo = "yaak";
tag = "v${finalAttrs.version}";
hash = "sha256-gD6gp7Qtf162zpRY0b3+g98GSH2aY07s2Auv4+lmbXQ=";
};
npmDeps = fetchNpmDeps {
inherit (finalAttrs) src;
hash = "sha256-4D7ETUOLixpFB4luqQlwkGR/C6Ke6+ZmPg3dKKkrw7c=";
};
cargoHash = "sha256-YxOSfSyn+gUsw0HeKrkXZg568X9CAY1UWKnGHHWCC78=";
cargoRoot = "src-tauri";
nativeBuildInputs = [
cargo-tauri.hook
npmHooks.npmConfigHook
pkg-config
nodejs
python3
protobuf
perl
makeWrapper
];
buildInputs = [
glib
gtk3
openssl
pango
cairo
pixman
]
++ lib.optionals stdenv.hostPlatform.isLinux [
webkitgtk_4_1
];
env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
postPatch = ''
substituteInPlace src-tauri/tauri.conf.json \
--replace-fail '"createUpdaterArtifacts": "v1Compatible"' '"createUpdaterArtifacts": false' \
--replace-fail '"0.0.0"' '"${finalAttrs.version}"'
substituteInPlace package.json \
--replace-fail '"bootstrap:vendor-node": "node scripts/vendor-node.cjs",' "" \
--replace-fail '"bootstrap:vendor-protoc": "node scripts/vendor-protoc.cjs",' ""
'';
preBuild =
let
archPlatforms =
{
"aarch64-darwin" = "aarch64-apple-darwin";
"x86_64-darwin" = "x86_64-apple-darwin";
"aarch64-linux" = "aarch64-unknown-linux-gnu";
"x86_64-linux" = "x86_64-unknown-linux-gnu";
}
.${stdenv.hostPlatform.system};
in
''
mkdir -p src-tauri/vendored/node
ln -s ${nodejs}/bin/node src-tauri/vendored/node/yaaknode-${archPlatforms}
mkdir -p src-tauri/vendored/protoc
ln -s ${protobuf}/bin/protoc src-tauri/vendored/protoc/yaakprotoc-${archPlatforms}
ln -s ${protobuf}/include src-tauri/vendored/protoc/include
'';
# Permission denied (os error 13)
# write to src-tauri/vendored/protoc/include
doCheck = false;
preInstall = "pushd src-tauri";
postInstall = "popd";
postFixup = lib.optionalString stdenv.hostPlatform.isLinux ''
wrapProgram $out/bin/yaak-app \
--inherit-argv0 \
--set-default WEBKIT_DISABLE_DMABUF_RENDERER 1
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "Desktop API client for organizing and executing REST, GraphQL, and gRPC requests";
homepage = "https://yaak.app/";
changelog = "https://github.com/mountain-loop/yaak/releases/tag/v${finalAttrs.version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ redyf ];
mainProgram = "yaak";
platforms = [
"x86_64-linux"
"aarch64-linux"
"x86_64-darwin"
"aarch64-darwin"
];
};
})

View File

@@ -0,0 +1,111 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchzip,
apple-sdk_15,
common-updater-scripts,
curl,
installShellFiles,
jq,
versionCheckHook,
writeShellScript,
xxd,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "yabai";
version = "7.1.16";
src =
finalAttrs.passthru.sources.${stdenv.hostPlatform.system}
or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
nativeBuildInputs = [
installShellFiles
]
++ lib.optionals stdenv.hostPlatform.isx86_64 [
xxd
];
buildInputs = lib.optionals stdenv.hostPlatform.isx86_64 [
apple-sdk_15
];
dontConfigure = true;
dontBuild = stdenv.hostPlatform.isAarch64;
enableParallelBuilding = true;
installPhase = ''
runHook preInstall
mkdir -p $out/{bin,share/icons/hicolor/scalable/apps}
cp ./bin/yabai $out/bin/yabai
${lib.optionalString stdenv.hostPlatform.isx86_64 "cp ./assets/icon/icon.svg $out/share/icons/hicolor/scalable/apps/yabai.svg"}
installManPage ./doc/yabai.1
runHook postInstall
'';
postPatch =
lib.optionalString stdenv.hostPlatform.isx86_64 # bash
''
# aarch64 code is compiled on all targets, which causes our Apple SDK headers to error out.
# Since multilib doesn't work on darwin i dont know of a better way of handling this.
substituteInPlace makefile \
--replace-fail "-arch arm64e" "" \
--replace-fail "-arch arm64" ""
'';
nativeInstallCheckInputs = [ versionCheckHook ];
versionCheckProgramArg = "--version";
doInstallCheck = true;
passthru = {
sources = {
# Unfortunately compiling yabai from source on aarch64-darwin is a bit complicated. We use the precompiled binary instead for now.
# 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-rEO+qcat6heF3qrypJ02Ivd2n0cEmiC/cNUN53oia4w=";
};
"x86_64-darwin" = fetchFromGitHub {
owner = "koekeishiya";
repo = "yabai";
rev = "v${finalAttrs.version}";
hash = "sha256-WXvM0ub4kJ3rKXynTxmr2Mx+LzJOgmm02CcEx2nsy/A=";
};
};
updateScript = writeShellScript "update-yabai" ''
NEW_VERSION=$(${lib.getExe curl} --silent https://api.github.com/repos/koekeishiya/yabai/releases/latest | ${lib.getExe jq} '.tag_name | ltrimstr("v")' --raw-output)
for platform in ${lib.escapeShellArgs finalAttrs.meta.platforms}; do
${lib.getExe' common-updater-scripts "update-source-version"} "yabai" "$NEW_VERSION" --ignore-same-version --source-key="sources.$platform"
done
'';
};
meta = {
description = "Tiling window manager for macOS based on binary space partitioning";
longDescription = ''
yabai is a window management utility that is designed to work as an extension to the built-in
window manager of macOS. yabai allows you to control your windows, spaces and displays freely
using an intuitive command line interface and optionally set user-defined keyboard shortcuts
using skhd and other third-party software.
'';
homepage = "https://github.com/koekeishiya/yabai";
changelog = "https://github.com/koekeishiya/yabai/blob/v${finalAttrs.version}/CHANGELOG.md";
license = lib.licenses.mit;
platforms = builtins.attrNames finalAttrs.passthru.sources;
mainProgram = "yabai";
maintainers = with lib.maintainers; [
cmacrae
shardy
khaneliman
];
sourceProvenance =
with lib.sourceTypes;
lib.optionals stdenv.hostPlatform.isx86_64 [ fromSource ]
++ lib.optionals stdenv.hostPlatform.isAarch64 [ binaryNativeCode ];
};
})

View File

@@ -0,0 +1,46 @@
{
lib,
stdenv,
fetchurl,
libSM,
libX11,
libXt,
libffi,
ncurses,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "yabasic";
version = "2.91.4";
src = fetchurl {
url = "http://www.yabasic.de/download/yabasic-${finalAttrs.version}.tar.gz";
hash = "sha256-3JUTNOFmZpSlAx40BHAT6YQgYLxdVPPXLwyfzDoYdlc=";
};
buildInputs = [
libSM
libX11
libXt
libffi
ncurses
];
meta = {
homepage = "http://2484.de/yabasic/";
description = "Yet another BASIC";
mainProgram = "yabasic";
longDescription = ''
Yabasic is a traditional basic-interpreter. It comes with goto and various
loops and allows to define subroutines and libraries. It does simple
graphics and printing. Yabasic can call out to libraries written in C and
allows to create standalone programs. Yabasic runs under Unix and Windows
and has a comprehensive documentation; it is small, simple, open-source
and free.
'';
changelog = "https://2484.de/yabasic/whatsnew.html";
license = lib.licenses.mit;
maintainers = [ ];
platforms = lib.platforms.all;
};
})

View File

@@ -0,0 +1,13 @@
diff --git a/compressed_archive/unarr/unarr-wrapper.pri b/compressed_archive/unarr/unarr-wrapper.pri
index 0115267..5d3d6f5 100644
--- a/compressed_archive/unarr/unarr-wrapper.pri
+++ b/compressed_archive/unarr/unarr-wrapper.pri
@@ -6,7 +6,7 @@ HEADERS += $$PWD/extract_delegate.h \
SOURCES += $$PWD/compressed_archive.cpp
-if(mingw|unix):!macx:!contains(QT_CONFIG, no-pkg-config):packagesExist(libunarr) {
+if(mingw|unix):!contains(QT_CONFIG, no-pkg-config):packagesExist(libunarr) {
message(Using system provided unarr installation found by pkg-config.)
CONFIG += link_pkgconfig
PKGCONFIG += libunarr

View File

@@ -0,0 +1,81 @@
{
lib,
stdenv,
fetchFromGitHub,
libGLU,
libunarr,
libsForQt5,
pkg-config,
}:
stdenv.mkDerivation rec {
pname = "yacreader";
version = "9.15.0";
src = fetchFromGitHub {
owner = "YACReader";
repo = "yacreader";
tag = version;
hash = "sha256-5vCjr8WRwa7Q/84Itgg07K1CJKGnWA1z53et2IxxReE=";
};
patches = [
# make the unarr backend logic use pkg-config even on Darwin
./darwin-unarr-use-pkg-config.patch
];
qmakeFlags = [
# force unarr backend on all platforms
"CONFIG+=unarr"
];
nativeBuildInputs = [
libsForQt5.qmake
libsForQt5.qttools # for translations
libsForQt5.wrapQtAppsHook
pkg-config
];
buildInputs = [
libGLU
libsForQt5.poppler
libsForQt5.qtgraphicaleffects # imported, but not declared as a dependency
libsForQt5.qtmultimedia
libsForQt5.qtquickcontrols2
libunarr
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
libsForQt5.qtmacextras # can be removed when using qt6
];
# custom Darwin install instructions taken from the upstream compileOSX.sh script
installPhase = lib.optionalString stdenv.hostPlatform.isDarwin ''
runHook preInstall
mkdir -p "$out"/Applications
cp -r YACReader/YACReader.app "$out"/Applications/
cp -r YACReaderLibrary/YACReaderLibrary.app "$out"/Applications/
cp -r YACReaderLibraryServer/YACReaderLibraryServer.app "$out"/Applications/
cp -r release/server "$out"/Applications/YACReaderLibrary.app/Contents/MacOS/
cp -r release/server "$out"/Applications/YACReaderLibraryServer.app/Contents/MacOS/
cp -r release/languages "$out"/Applications/YACReader.app/Contents/MacOS/
cp -r release/languages "$out"/Applications/YACReaderLibrary.app/Contents/MacOS/
cp -r release/languages "$out"/Applications/YACReaderLibraryServer.app/Contents/MacOS/
makeWrapper "$out"/Applications/YACReader.app/Contents/MacOS/YACReader "$out/bin/YACReader"
makeWrapper "$out"/Applications/YACReaderLibrary.app/Contents/MacOS/YACReaderLibrary "$out/bin/YACReaderLibrary"
makeWrapper "$out"/Applications/YACReaderLibraryServer.app/Contents/MacOS/YACReaderLibraryServer "$out/bin/YACReaderLibraryServer"
runHook postInstall
'';
meta = {
description = "Comic reader for cross-platform reading and managing your digital comic collection";
homepage = "https://www.yacreader.com";
license = lib.licenses.gpl3;
mainProgram = "YACReader";
maintainers = [ ];
};
}

View File

@@ -0,0 +1,18 @@
diff --git a/configure.ac b/configure.ac
index 20a4e42..921ba18 100644
--- a/configure.ac
+++ b/configure.ac
@@ -8,9 +8,13 @@ AC_PREREQ([2.59])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_SRCDIR([src])
+AC_CONFIG_MACRO_DIRS([m4])
AM_MAINTAINER_MODE
+AM_GNU_GETTEXT_VERSION([0.25])
+AM_GNU_GETTEXT([external])
+
IT_PROG_INTLTOOL([0.40.0])
AC_PROG_CC

View File

@@ -0,0 +1,72 @@
{
lib,
stdenv,
fetchFromGitHub,
pkg-config,
intltool,
autoreconfHook,
wrapGAppsHook3,
gtk3,
hicolor-icon-theme,
netpbm,
}:
stdenv.mkDerivation rec {
pname = "yad";
version = "14.1";
src = fetchFromGitHub {
owner = "v1cont";
repo = "yad";
rev = "v${version}";
sha256 = "sha256-Y7bp20fkNdSgBcSV1kPEpWEP7ASwZcScVRaPauwI72M=";
};
# FIXME: remove when gettext is fixed
patches = [ ./gettext-0.25.patch ];
configureFlags = [
"--enable-icon-browser"
"--with-gtk=gtk3"
"--with-rgb=${placeholder "out"}/share/yad/rgb.txt"
];
buildInputs = [
gtk3
hicolor-icon-theme
];
nativeBuildInputs = [
autoreconfHook
pkg-config
intltool
wrapGAppsHook3
];
postPatch = ''
sed -i src/file.c -e '21i#include <glib/gprintf.h>'
sed -i src/form.c -e '21i#include <stdlib.h>'
# there is no point to bring in the whole netpbm package just for this file
install -Dm644 ${netpbm.out}/share/netpbm/misc/rgb.txt $out/share/yad/rgb.txt
'';
postAutoreconf = ''
intltoolize
'';
meta = with lib; {
homepage = "https://sourceforge.net/projects/yad-dialog/";
description = "GUI dialog tool for shell scripts";
longDescription = ''
Yad (yet another dialog) is a GUI dialog tool for shell scripts. It is a
fork of Zenity with many improvements, such as custom buttons, additional
dialogs, pop-up menu in notification icon and more.
'';
license = licenses.gpl3;
mainProgram = "yad";
maintainers = with maintainers; [ smironov ];
platforms = with platforms; linux;
};
}

View File

@@ -0,0 +1,142 @@
{
lib,
stdenv,
resholve,
fetchFromGitHub,
git,
bash,
openssl,
gawk,
/*
TODO: yadm can use git-crypt and transcrypt
but it does so in a way that resholve 0.6.0
can't yet do anything smart about. It looks
like these are for interactive use, so the
main impact should just be that users still
need both of these packages in their profile
to support their use in yadm.
*/
# git-crypt,
# transcrypt,
j2cli,
esh,
gnupg,
coreutils,
gnutar,
installShellFiles,
runCommand,
yadm,
}:
resholve.mkDerivation rec {
pname = "yadm";
version = "3.5.0";
nativeBuildInputs = [ installShellFiles ];
src = fetchFromGitHub {
owner = "yadm-dev";
repo = "yadm";
rev = version;
hash = "sha256-hDo6zs70apNhKmuvR+eD51FzuTLj3SL/wHQXqLMD9QE=";
};
dontConfigure = true;
dontBuild = true;
installPhase = ''
runHook preInstall
install -Dt $out/bin yadm
runHook postInstall
'';
postInstall = ''
installManPage yadm.1
installShellCompletion --cmd yadm \
--zsh completion/zsh/_yadm \
--bash completion/bash/yadm
'';
solutions = {
yadm = {
scripts = [ "bin/yadm" ];
interpreter = "${bash}/bin/sh";
inputs = [
git
gnupg
openssl
gawk
# see head comment
# git-crypt
# transcrypt
j2cli
esh
bash
coreutils
gnutar
];
fake = {
external = if stdenv.hostPlatform.isCygwin then [ ] else [ "cygpath" ];
};
fix = {
"$GPG_PROGRAM" = [ "gpg" ];
"$OPENSSL_PROGRAM" = [ "openssl" ];
"$GIT_PROGRAM" = [ "git" ];
"$AWK_PROGRAM" = [ "awk" ];
# see head comment
# "$GIT_CRYPT_PROGRAM" = [ "git-crypt" ];
# "$TRANSCRYPT_PROGRAM" = [ "transcrypt" ];
"$J2CLI_PROGRAM" = [ "j2" ];
"$ESH_PROGRAM" = [ "esh" ];
# not in nixpkgs (yet)
# "$ENVTPL_PROGRAM" = [ "envtpl" ];
# "$LSB_RELEASE_PROGRAM" = [ "lsb_release" ];
};
keep = {
"$YADM_COMMAND" = true; # internal cmds
"$processor" = true; # dynamic, template-engine
"$log" = true; # dynamic level-specific loggers
"$SHELL" = true; # probably user env? unsure
"$hook_command" = true; # ~git hooks?
"exec" = [ "$YADM_BOOTSTRAP" ]; # yadm bootstrap script
# not in nixpkgs
"$ENVTPL_PROGRAM" = true;
"$LSB_RELEASE_PROGRAM" = true;
};
/*
TODO: these should be dropped as fast as they can be dealt
with properly in binlore and/or resholve.
*/
execer = [
"cannot:${j2cli}/bin/j2"
"cannot:${esh}/bin/esh"
"cannot:${git}/bin/git"
"cannot:${gnupg}/bin/gpg"
];
};
};
passthru.tests = {
minimal = runCommand "${pname}-test" { } ''
export HOME=$out
${yadm}/bin/yadm init
'';
};
meta = {
homepage = "https://github.com/yadm-dev/yadm";
description = "Yet Another Dotfiles Manager";
longDescription = ''
yadm is a dotfile management tool with 3 main features:
* Manages files across systems using a single Git repository.
* Provides a way to use alternate files on a specific OS or host.
* Supplies a method of encrypting confidential data so it can safely be stored in your repository.
'';
changelog = "https://github.com/yadm-dev/yadm/blob/${version}/CHANGES";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ abathur ];
platforms = lib.platforms.unix;
mainProgram = "yadm";
};
}

View File

@@ -0,0 +1,47 @@
{
lib,
buildGoModule,
fetchFromGitHub,
testers,
yaegi,
}:
buildGoModule rec {
pname = "yaegi";
version = "0.16.1";
src = fetchFromGitHub {
owner = "traefik";
repo = "yaegi";
rev = "v${version}";
hash = "sha256-jpLx2z65KeCPC4AQgFmUUphmmiT4EeHwrYn3/rD4Rzg=";
};
vendorHash = null;
subPackages = [
"cmd/yaegi"
];
ldflags = [
"-s"
"-w"
"-X=main.version=${version}"
];
passthru.tests = {
version = testers.testVersion {
package = yaegi;
command = "yaegi version";
};
};
meta = with lib; {
description = "Go interpreter";
mainProgram = "yaegi";
homepage = "https://github.com/traefik/yaegi";
changelog = "https://github.com/traefik/yaegi/releases/tag/${src.rev}";
license = licenses.asl20;
maintainers = with maintainers; [ figsoda ];
};
}

142
pkgs/by-name/ya/yafc-ce/deps.json generated Normal file
View File

@@ -0,0 +1,142 @@
[
{
"pname": "Google.OrTools",
"version": "9.11.4210",
"hash": "sha256-5mXPEJiry7s5JKfy+o+8Crq7KZIOJnKu4BjXFYEf2nw="
},
{
"pname": "Google.OrTools.runtime.linux-arm64",
"version": "9.11.4210",
"hash": "sha256-Odd81OYE7nkpMCoeONzIP3KHYxYdXdvFcyh7qlhCXYg="
},
{
"pname": "Google.OrTools.runtime.linux-x64",
"version": "9.11.4210",
"hash": "sha256-1Eq9oKZFU/NqRlEHleVBELiCAKaRlYLxRybYy4s+4RQ="
},
{
"pname": "Google.OrTools.runtime.osx-arm64",
"version": "9.11.4210",
"hash": "sha256-JoCCnE+ju8/b3Y82yCI3o8ZoEWV7DBns9/6ZJtpnEHY="
},
{
"pname": "Google.OrTools.runtime.osx-x64",
"version": "9.11.4210",
"hash": "sha256-yobJIJTTu716ciGgtESLtGjqsteWqE4LtbmAloCBfb4="
},
{
"pname": "Google.OrTools.runtime.win-x64",
"version": "9.11.4210",
"hash": "sha256-v7InhZCf9jktUsXSvVwsc7REv4kPAfCvH8m3RiBBULs="
},
{
"pname": "Google.Protobuf",
"version": "3.26.1",
"hash": "sha256-1tHxDuJwwvJWZ3H9ooPFAKuaJIthSdTDlmjHlxH/euc="
},
{
"pname": "Microsoft.CodeCoverage",
"version": "17.11.1",
"hash": "sha256-1dLlK3NGh88PuFYZiYpT+izA96etxhU3BSgixDgdtGA="
},
{
"pname": "Microsoft.NET.Test.Sdk",
"version": "17.11.1",
"hash": "sha256-0JUEucQ2lzaPgkrjm/NFLBTbqU1dfhvhN3Tl3moE6mI="
},
{
"pname": "Microsoft.TestPlatform.ObjectModel",
"version": "17.11.1",
"hash": "sha256-5vX+vCzFY3S7xfMVIv8OlMMFtdedW9UIJzc0WEc+vm4="
},
{
"pname": "Microsoft.TestPlatform.TestHost",
"version": "17.11.1",
"hash": "sha256-wSkY0H1fQAq0H3LcKT4u7Y5RzhAAPa6yueVN84g8HxU="
},
{
"pname": "Newtonsoft.Json",
"version": "13.0.1",
"hash": "sha256-K2tSVW4n4beRPzPu3rlVaBEMdGvWSv/3Q1fxaDh4Mjo="
},
{
"pname": "Newtonsoft.Json",
"version": "13.0.3",
"hash": "sha256-hy/BieY4qxBWVVsDqqOPaLy1QobiIapkbrESm6v2PHc="
},
{
"pname": "SDL2-CS.NetCore",
"version": "2.0.8",
"hash": "sha256-8uz6Y2G9fLQkjs+7t7QPdUJFXs9bKAYeoGP+174OE/k="
},
{
"pname": "Serilog",
"version": "4.0.0",
"hash": "sha256-j8hQ5TdL1TjfdGiBO9PyHJFMMPvATHWN1dtrrUZZlNw="
},
{
"pname": "Serilog",
"version": "4.1.0",
"hash": "sha256-r89nJ5JE5uZlsRrfB8QJQ1byVVfCWQbySKQ/m9PYj0k="
},
{
"pname": "Serilog.Enrichers.Thread",
"version": "4.0.0",
"hash": "sha256-lo+3ohNHKe/hTq9vGbk29p/OWcNlcyJToGL6EpCJQm8="
},
{
"pname": "Serilog.Sinks.Console",
"version": "6.0.0",
"hash": "sha256-QH8ykDkLssJ99Fgl+ZBFBr+RQRl0wRTkeccQuuGLyro="
},
{
"pname": "Serilog.Sinks.File",
"version": "6.0.0",
"hash": "sha256-KQmlUpG9ovRpNqKhKe6rz3XMLUjkBqjyQhEm2hV5Sow="
},
{
"pname": "System.Reflection.Metadata",
"version": "1.6.0",
"hash": "sha256-JJfgaPav7UfEh4yRAQdGhLZF1brr0tUWPl6qmfNWq/E="
},
{
"pname": "xunit",
"version": "2.9.2",
"hash": "sha256-h5+yTTfCmokCPy4lqdEw8RGzQlrlsQAW3Am0Jh0q7oo="
},
{
"pname": "xunit.abstractions",
"version": "2.0.3",
"hash": "sha256-0D1y/C34iARI96gb3bAOG8tcGPMjx+fMabTPpydGlAM="
},
{
"pname": "xunit.analyzers",
"version": "1.16.0",
"hash": "sha256-P5Bvl9hvHvF8KY1YWLg4tKiYxlfRnmHyL14jfSACDaU="
},
{
"pname": "xunit.assert",
"version": "2.9.2",
"hash": "sha256-EE6r526Q4cHn0Ourf1ENpXZ37Lj/P2uNvonHgpdcnq4="
},
{
"pname": "xunit.core",
"version": "2.9.2",
"hash": "sha256-zhjV1I5xh0RFckgTEK72tIkLxVl4CPmter2UB++oye8="
},
{
"pname": "xunit.extensibility.core",
"version": "2.9.2",
"hash": "sha256-MQAC/4d67Nssu3R+pHPh6vHitBXQYxEEZkVVMGW720c="
},
{
"pname": "xunit.extensibility.execution",
"version": "2.9.2",
"hash": "sha256-f+9UfoPyK3JIDhQSW0Yu9c4PGqUqZC96DMINCYi2i80="
},
{
"pname": "xunit.runner.visualstudio",
"version": "2.8.2",
"hash": "sha256-UlfK348r8kJuraywfdCtpJJxHkv04wPNzpUaz4UM/60="
}
]

View File

@@ -0,0 +1,68 @@
{
buildDotnetModule,
lib,
fetchFromGitHub,
dotnetCorePackages,
SDL2,
SDL2_image,
SDL2_ttf,
}:
let
dotnet = dotnetCorePackages.dotnet_8;
in
buildDotnetModule (finalAttrs: {
pname = "yafc-ce";
version = "2.14.0";
src = fetchFromGitHub {
owner = "shpaass";
repo = "yafc-ce";
rev = finalAttrs.version;
hash = "sha256-EbVPPSci4AziF+n/8pIa9M44WEUj+vvEOQqu3HJ6aNQ=";
};
projectFile = [
"Yafc.I18n.Generator/Yafc.I18n.Generator.csproj"
"Yafc/Yafc.csproj"
];
testProjectFile = [ "Yafc.Model.Tests/Yafc.Model.Tests.csproj" ];
nugetDeps = ./deps.json;
dotnet-sdk = dotnet.sdk;
dotnet-runtime = dotnet.runtime;
executables = [ "Yafc" ];
runtimeDeps = [
SDL2
SDL2_ttf
SDL2_image
];
postPatch = ''
# Yafc finds the root by looking for a `.git` directory, but `.git` is
# removed by Nix to ensure reproducibility. `.github` is not.
substituteInPlace Yafc.I18n.Generator/SourceGenerator.cs \
--replace-fail 'rootDirectory, ".git"' 'rootDirectory, ".github"'
'';
meta = {
description = "Powerful Factorio calculator/analyser that works with mods, Community Edition";
longDescription = ''
Yet Another Factorio Calculator or YAFC is a planner and analyzer.
The main goal of YAFC is to help with heavily modded Factorio games.
YAFC Community Edition is an updated and actively-maintained version of the original YAFC.
'';
homepage = "https://github.com/shpaass/yafc-ce";
downloadPage = "https://github.com/shpaass/yafc-ce/releases/tag/${finalAttrs.version}";
changelog = "https://github.com/shpaass/yafc-ce/releases/tag/${finalAttrs.version}";
license = lib.licenses.gpl3;
maintainers = with lib.maintainers; [
diamond-deluxe
TheColorman
];
platforms = with lib.platforms; x86_64 ++ darwin;
mainProgram = "Yafc";
};
})

View File

@@ -0,0 +1,32 @@
{
lib,
stdenv,
fetchFromGitHub,
python3,
}:
stdenv.mkDerivation {
pname = "yaffshiv";
version = "0-unstable-2024-08-30";
src = fetchFromGitHub {
owner = "devttys0";
repo = "yaffshiv";
rev = "f6f0ef77bf79ca46aaa77bc34eda06e7b55da8e8";
sha256 = "sha256-C43UzkaPKheexvVcKi/Krcik+arPXggWAYMSi9RY5eo=";
};
buildInputs = [ python3 ];
installPhase = ''
install -D -m755 src/yaffshiv $out/bin/yaffshiv
'';
meta = {
description = "Simple YAFFS file system parser and extractor";
homepage = "https://github.com/devttys0/yaffshiv";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ sgo ];
mainProgram = "yaffshiv";
};
}

View File

@@ -0,0 +1,44 @@
{
lib,
stdenv,
fetchFromGitHub,
ncurses,
}:
stdenv.mkDerivation rec {
version = "0.2.9";
pname = "yaft";
outputs = [
"out"
"terminfo"
];
src = fetchFromGitHub {
owner = "uobikiemukot";
repo = "yaft";
rev = "v${version}";
sha256 = "0l1ig8wm545kpn4l7186rymny83jkahnjim290wsl7hsszfq1ckd";
};
buildInputs = [ ncurses ];
installFlags = [
"PREFIX=$(out)"
"MANPREFIX=$(out)/share/man"
];
postInstall = ''
mkdir -p $out/nix-support $terminfo/share
mv $out/share/terminfo $terminfo/share/
echo "$terminfo" >> $out/nix-support/propagated-user-env-packages
'';
meta = {
homepage = "https://github.com/uobikiemukot/yaft";
description = "Yet another framebuffer terminal";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.matthiasbeyer ];
platforms = with lib.platforms; linux;
};
}

View File

@@ -0,0 +1,40 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "yai";
version = "0.6.0";
src = fetchFromGitHub {
owner = "ekkinox";
repo = "yai";
rev = version;
sha256 = "sha256-MoblXLfptlIYJbXQTpbc8GBo2a3Zgxdvwra8IUEGiZs==";
};
vendorHash = "sha256-+NhYK8FXd5B3GsGUPJOMM7Tt3GS1ZJ7LeApz38Xkwx8=";
ldflags = [
"-w -s"
"-X main.buildVersion=${version}"
];
preCheck = ''
# analyzer_test.go needs a user
export USER=test
'';
meta = with lib; {
homepage = "https://github.com/ekkinox/yai";
description = "Your AI powered terminal assistant";
longDescription = ''
Yai (your AI) is an assistant for your terminal, using OpenAI ChatGPT to build and run commands for you.
You just need to describe them in your everyday language, it will take care or the rest.
'';
license = licenses.mit;
maintainers = with maintainers; [ georgesalkhouri ];
mainProgram = "yai";
};
}

View File

@@ -0,0 +1,46 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
which,
testers,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "yajl";
version = "2.1.0-unstable-2024-02-01";
src = fetchFromGitHub {
owner = "containers";
repo = "yajl";
rev = "6bc5219389fd2752631682b0a8368e6d8218a8c5";
hash = "sha256-vY0tqCkz6PN00Qbip5ViO64L3C06fJ4JjFuIk0TWgCo=";
};
patches = [
./yajl-cmake4-compat.patch
];
nativeBuildInputs = [ cmake ];
doCheck = true;
nativeCheckInputs = [ which ];
passthru = {
tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
};
meta = {
description = "Yet Another JSON Library";
longDescription = ''
YAJL is a small event-driven (SAX-style) JSON parser written in ANSI
C, and a small validating JSON generator.
'';
homepage = "http://lloyd.github.com/yajl/";
license = lib.licenses.isc;
pkgConfigModules = [ "yajl" ];
platforms = with lib.platforms; linux ++ darwin;
maintainers = with lib.maintainers; [ maggesi ];
};
})

View File

@@ -0,0 +1,72 @@
From 109f4e9665e6d8fd8ed4f647f362b5f147374f94 Mon Sep 17 00:00:00 2001
From: Luna <git@lunnova.dev>
Date: Sun, 21 Sep 2025 10:05:47 -0700
Subject: [PATCH] build: update cmake_minimum_required to 3.5...4.1 for CMake 4
compat
Replace deprecated EXEC_PROGRAM with execute_process and GET_TARGET_PROPERTY LOCATION with $<TARGET_FILE> generator expressions.
Signed-off-by: Luna <git@lunnova.dev>
---
CMakeLists.txt | 2 +-
reformatter/CMakeLists.txt | 4 +---
src/CMakeLists.txt | 2 +-
verify/CMakeLists.txt | 4 +---
4 files changed, 4 insertions(+), 8 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9af25203..45f4a2ad 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -12,7 +12,7 @@
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+CMAKE_MINIMUM_REQUIRED(VERSION 3.5...4.1)
PROJECT(YetAnotherJSONParser C)
diff --git a/reformatter/CMakeLists.txt b/reformatter/CMakeLists.txt
index 4b7b3fa4..8ba7cfce 100644
--- a/reformatter/CMakeLists.txt
+++ b/reformatter/CMakeLists.txt
@@ -35,9 +35,7 @@ IF (NOT WIN32)
ENDIF (NOT WIN32)
# copy the binary into the output directory
-GET_TARGET_PROPERTY(binPath json_reformat LOCATION)
-
ADD_CUSTOM_COMMAND(TARGET json_reformat POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy_if_different ${binPath} ${binDir})
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:json_reformat> ${binDir})
INSTALL(TARGETS json_reformat RUNTIME DESTINATION bin)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 78875032..43790aaf 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -65,7 +65,7 @@ CONFIGURE_FILE(yajl.pc.cmake ${pkgconfigDir}/yajl.pc)
FOREACH (header ${PUB_HDRS})
SET (header ${CMAKE_CURRENT_SOURCE_DIR}/${header})
- EXEC_PROGRAM(${CMAKE_COMMAND} ARGS -E copy_if_different ${header} ${incDir})
+ execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different ${header} ${incDir})
ADD_CUSTOM_COMMAND(TARGET yajl POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${header} ${incDir})
diff --git a/verify/CMakeLists.txt b/verify/CMakeLists.txt
index 2bceb265..1ce3cca3 100644
--- a/verify/CMakeLists.txt
+++ b/verify/CMakeLists.txt
@@ -29,9 +29,7 @@ ADD_EXECUTABLE(json_verify ${SRCS})
TARGET_LINK_LIBRARIES(json_verify yajl)
# copy in the binary
-GET_TARGET_PROPERTY(binPath json_verify LOCATION)
-
ADD_CUSTOM_COMMAND(TARGET json_verify POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy_if_different ${binPath} ${binDir})
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:json_verify> ${binDir})
INSTALL(TARGETS json_verify RUNTIME DESTINATION bin)

View File

@@ -0,0 +1,41 @@
{
buildGoModule,
fetchFromGitHub,
lib,
}:
let
version = "1.4.1";
in
buildGoModule {
pname = "yajsv";
version = version;
src = fetchFromGitHub {
owner = "neilpa";
repo = "yajsv";
rev = "v${version}";
hash = "sha256-dp7PBN8yR+gPPUWA+ug11dUN7slU6CJAojuxt5eNTxA=";
};
vendorHash = "sha256-f45climGKl7HxD+1vz2TGqW/d0dqJ0RfvgJoRRM6lUk=";
ldflags = [
"-s"
"-w"
];
doInstallCheck = true;
installCheckPhase = ''
$out/bin/yajsv -v > /dev/null
'';
meta = {
description = "Yet Another JSON Schema Validator";
homepage = "https://github.com/neilpa/yajsv";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ rycee ];
mainProgram = "yajsv";
};
}

View File

@@ -0,0 +1,46 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
fetchYarnDeps,
nodejs,
yarnBuildHook,
yarnConfigHook,
yarnInstallHook,
unstableGitUpdater,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "yalc";
version = "0-unstable-2023-07-04";
src = fetchFromGitHub {
owner = "wclr";
repo = "yalc";
# Upstream has no tagged versions
rev = "3b834e488837e87df47414fd9917c10f07f0df08";
hash = "sha256-v8OhLVuRhnyN2PrslgVVS0r56wGhYYmjoz3ZUZ95xBc=";
};
yarnOfflineCache = fetchYarnDeps {
yarnLock = "${finalAttrs.src}/yarn.lock";
hash = "sha256-+w3azJEnRx4v3nJ3rhpLWt6CjOFhMMmr1UL5hg2ZR48=";
};
nativeBuildInputs = [
yarnConfigHook
yarnBuildHook
yarnInstallHook
nodejs
];
passthru.updateScript = unstableGitUpdater { };
meta = {
description = "Work with yarn/npm packages locally like a boss";
mainProgram = "yalc";
homepage = "https://github.com/wclr/yalc";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ pyrox0 ];
};
})

View File

@@ -0,0 +1,39 @@
{
lib,
stdenv,
fetchFromGitHub,
makeWrapper,
coreutils,
bashInteractive,
}:
stdenv.mkDerivation rec {
version = "0.2.0";
pname = "yallback";
src = fetchFromGitHub {
owner = "abathur";
repo = "yallback";
rev = "v${version}";
hash = "sha256-t+fdnDJMFiFqN23dSY3TnsZsIDcravtwdNKJ5MiZosE=";
};
buildInputs = [
coreutils
bashInteractive
];
nativeBuildInputs = [ makeWrapper ];
installPhase = ''
install -Dv yallback $out/bin/yallback
wrapProgram $out/bin/yallback --prefix PATH : ${lib.makeBinPath [ coreutils ]}
'';
meta = with lib; {
description = "Callbacks for YARA rule matches";
mainProgram = "yallback";
homepage = "https://github.com/abathur/yallback";
license = licenses.mit;
maintainers = with maintainers; [ abathur ];
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,31 @@
{
lib,
fetchFromGitHub,
rustPlatform,
}:
rustPlatform.buildRustPackage rec {
pname = "yambar-hyprland-wses";
version = "0.1.0";
src = fetchFromGitHub {
owner = "jonhoo";
repo = "yambar-hyprland-wses";
rev = "v${version}";
hash = "sha256-furHj1AAFgNiNHP9RBsVrIvrDckSKU8FXilzH9TQ99c=";
};
cargoHash = "sha256-bAJ8TTlSgXDYC7gSTuSISIS1HH0jCF9W5WswZhw94vQ=";
meta = {
description = "Enable Yambar to show Hyprland workspaces";
homepage = "https://github.com/jonhoo/yambar-hyprland-wses";
license = with lib.licenses; [
asl20
mit
];
maintainers = with lib.maintainers; [ ludovicopiero ];
mainProgram = "yambar-hyprland-wses";
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,129 @@
{
lib,
stdenv,
fetchFromGitea,
alsa-lib,
bison,
fcft,
flex,
json_c,
libmpdclient,
libyaml,
meson,
ninja,
pipewire,
pixman,
pkg-config,
pulseaudio,
scdoc,
tllist,
udev,
wayland,
wayland-protocols,
wayland-scanner,
xcbutil,
xcbutilcursor,
xcbutilerrors,
xcbutilwm,
waylandSupport ? true,
x11Support ? true,
}:
assert (x11Support || waylandSupport);
stdenv.mkDerivation (finalAttrs: {
pname = "yambar";
version = "1.11.0";
src = fetchFromGitea {
domain = "codeberg.org";
owner = "dnkl";
repo = "yambar";
rev = finalAttrs.version;
hash = "sha256-QCwwMpBYuMWYqxE2ugPFpG/QtZDW7VsSBYs5EqKYejA=";
};
outputs = [
"out"
"man"
];
depsBuildBuild = [ pkg-config ];
nativeBuildInputs = [
bison
flex
meson
ninja
pkg-config
scdoc
wayland-scanner
];
buildInputs = [
alsa-lib
fcft
json_c
libmpdclient
libyaml
pipewire
pixman
pulseaudio
tllist
udev
]
++ lib.optionals waylandSupport [
wayland
wayland-protocols
]
++ lib.optionals x11Support [
xcbutil
xcbutilcursor
xcbutilerrors
xcbutilwm
];
strictDeps = true;
mesonBuildType = "release";
mesonFlags = [
(lib.mesonBool "werror" false)
(lib.mesonEnable "backend-x11" x11Support)
(lib.mesonEnable "backend-wayland" waylandSupport)
];
meta = {
homepage = "https://codeberg.org/dnkl/yambar";
description = "Modular status panel for X11 and Wayland";
longDescription = ''
yambar is a lightweight and configurable status panel (bar, for short) for
X11 and Wayland, that goes to great lengths to be both CPU and battery
efficient - polling is only done when absolutely necessary.
It has a number of modules that provide information in the form of tags.
For example, the clock module has a date tag that contains the current
date.
The modules do not know how to present the information though. This is
instead done by particles. And the user, you, decides which particles (and
thus how to present the data) to use.
Furthermore, each particle can have a decoration - a background color or a
graphical underline, for example.
There is no support for images or icons. use an icon font (e.g. Font
Awesome, or Material Icons) if you want a graphical representation.
There are a number of modules and particles builtin. More can be added as
plugins. You can even write your own!
To summarize: a bar displays information provided by modules, using
particles and decorations. How is configured by you.
'';
changelog = "https://codeberg.org/dnkl/yambar/releases/tag/${finalAttrs.version}";
license = lib.licenses.mit;
maintainers = [ ];
platforms = lib.platforms.linux;
mainProgram = "yambar";
};
})

View File

@@ -0,0 +1,33 @@
{
lib,
stdenv,
fetchurl,
}:
stdenv.mkDerivation rec {
pname = "yamdi";
version = "1.9";
# Source repo is also available here:
# https://github.com/ioppermann/yamdi
src = fetchurl {
url = "mirror://sourceforge/yamdi/yamdi-${version}.tar.gz";
sha256 = "4a6630f27f6c22bcd95982bf3357747d19f40bd98297a569e9c77468b756f715";
};
buildFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ];
installPhase = ''
install -D {,$out/bin/}yamdi
install -D {,$out/share/man/}man1/yamdi.1
'';
meta = with lib; {
description = "Yet Another MetaData Injector for FLV";
homepage = "https://yamdi.sourceforge.net/";
license = licenses.bsd3;
platforms = platforms.all;
maintainers = [ maintainers.ryanartecona ];
mainProgram = "yamdi";
};
}

View File

@@ -0,0 +1,60 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
gitUpdater,
cmake,
static ? stdenv.hostPlatform.isStatic,
}:
stdenv.mkDerivation rec {
pname = "yaml-cpp";
version = "0.8.0";
src = fetchFromGitHub {
owner = "jbeder";
repo = "yaml-cpp";
rev = version;
hash = "sha256-J87oS6Az1/vNdyXu3L7KmUGWzU0IAkGrGMUUha+xDXI=";
};
patches = [
(fetchpatch {
name = "yaml-cpp-fix-cmake-4.patch";
url = "https://github.com/jbeder/yaml-cpp/commit/c2680200486572baf8221ba052ef50b58ecd816e.patch";
hash = "sha256-1kXRa+xrAbLEhcJxNV1oGHPmayj1RNIe6dDWXZA3mUA=";
})
# Fix build with gcc15
# https://github.com/jbeder/yaml-cpp/pull/1310
(fetchpatch {
name = "yaml-cpp-add-include-cstdint-gcc15.patch";
url = "https://github.com/jbeder/yaml-cpp/commit/7b469b4220f96fb3d036cf68cd7bd30bd39e61d2.patch";
hash = "sha256-4Mua6cYD8UR+fJfFeu0fdYVFprsiuF89HvbaTByz9nI=";
})
];
strictDeps = true;
nativeBuildInputs = [
cmake
];
cmakeFlags = [
"-DYAML_CPP_BUILD_TOOLS=false"
(lib.cmakeBool "YAML_BUILD_SHARED_LIBS" (!static))
"-DINSTALL_GTEST=false"
];
doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
passthru.updateScript = gitUpdater { };
meta = with lib; {
description = "YAML parser and emitter for C++";
homepage = "https://github.com/jbeder/yaml-cpp";
license = licenses.mit;
platforms = platforms.all;
maintainers = with maintainers; [ OPNA2608 ];
};
}

View File

@@ -0,0 +1,36 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
libyaml,
pkg-config,
}:
stdenv.mkDerivation rec {
pname = "yaml-filter";
version = "0.2.0";
src = fetchFromGitHub {
owner = "OpenSCAP";
repo = "yaml-filter";
rev = "v${version}";
hash = "sha256-HDHjOapMFjuDcWW5+opKD2tllbwz4YBw/EI4W7Wf/6g=";
};
nativeBuildInputs = [
cmake
pkg-config
];
buildInputs = [ libyaml ];
meta = {
description = "YAML document filtering for libyaml";
homepage = "https://github.com/OpenSCAP/yaml-filter";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ tochiaha ];
mainProgram = "yamlp";
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,48 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchYarnDeps,
nodejs,
yarnConfigHook,
yarnBuildHook,
yarnInstallHook,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "yaml-language-server";
version = "1.18.0";
src = fetchFromGitHub {
owner = "redhat-developer";
repo = "yaml-language-server";
tag = finalAttrs.version;
hash = "sha256-HBhoadWIebeuHZXSdnFiPMSmDla77yhrTNMdz8si88c=";
};
offlineCache = fetchYarnDeps {
yarnLock = finalAttrs.src + "/yarn.lock";
hash = "sha256-2OVxvvijnfB8Bytgoaybyx4p66nD/aahtyjxLf8womE=";
};
nativeBuildInputs = [
nodejs
yarnConfigHook
yarnBuildHook
yarnInstallHook
];
# NodeJS is also needed here so that script interpreter get patched
buildInputs = [ nodejs ];
strictDeps = true;
meta = {
changelog = "https://github.com/redhat-developer/yaml-language-server/blob/${finalAttrs.src.rev}/CHANGELOG.md";
description = "Language Server for YAML Files";
homepage = "https://github.com/redhat-developer/yaml-language-server";
license = lib.licenses.mit;
mainProgram = "yaml-language-server";
maintainers = [ ];
};
})

View File

@@ -0,0 +1,40 @@
{
lib,
stdenv,
fetchFromGitHub,
python3Packages,
pkgsHostTarget,
}:
stdenv.mkDerivation {
pname = "yaml-merge";
version = "0-unstable-2022-01-12";
src = fetchFromGitHub {
owner = "abbradar";
repo = "yaml-merge";
rev = "2f0174fe92fc283dd38063a3a14f7fe71db4d9ec";
sha256 = "sha256-S2eZw+FOZvOn0XupZDRNcolUPd4PhvU1ziu+kx2AwnY=";
};
pythonPath = with python3Packages; [ pyyaml ];
nativeBuildInputs = [
# Not `python3Packages.wrapPython` to workaround `python3Packages.wrapPython.__spliced.buildHost` having the wrong `pythonHost`
# See https://github.com/NixOS/nixpkgs/issues/434307
pkgsHostTarget.python3Packages.wrapPython
];
installPhase = ''
install -Dm755 yaml-merge.py $out/bin/yaml-merge
wrapPythonPrograms
'';
meta = with lib; {
description = "Merge YAML data files";
mainProgram = "yaml-merge";
homepage = "https://github.com/abbradar/yaml-merge";
license = licenses.bsd2;
platforms = platforms.unix;
maintainers = [ ];
};
}

View File

@@ -0,0 +1,43 @@
{
lib,
buildGoModule,
fetchFromGitHub,
versionCheckHook,
nix-update-script,
}:
buildGoModule (finalAttrs: {
pname = "yaml2json";
version = "1.3.5";
src = fetchFromGitHub {
owner = "bronze1man";
repo = "yaml2json";
tag = "v${finalAttrs.version}";
hash = "sha256-mIjtR1VsSeUhEgeSKDG0qT0kj+NCqVwn31m300cMDeU=";
};
vendorHash = "sha256-g+yaVIx4jxpAQ/+WrGKxhVeliYx7nLQe/zsGpxV4Fn4=";
subPackages = [ "." ];
ldflags = [
"-s"
"-w"
];
nativeCheckInputs = [ versionCheckHook ];
versionCheckProgramArg = "--version";
doInstallCheck = true;
passthru.updateScript = nix-update-script { };
meta = {
homepage = "https://github.com/bronze1man/yaml2json";
changelog = "https://github.com/bronze1man/yaml2json/releases/tag/v${finalAttrs.version}";
description = "Convert yaml to json";
mainProgram = "yaml2json";
license = with lib.licenses; [ mit ];
maintainers = [ ];
};
})

View File

@@ -0,0 +1,55 @@
{
lib,
rustPlatform,
fetchFromGitHub,
nix-update-script,
testers,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "yaml2nix";
version = "0.3.0";
src = fetchFromGitHub {
owner = "euank";
repo = "yaml2nix";
tag = "v${finalAttrs.version}";
hash = "sha256-DkHWWpvBco2yodyOk40LjTNcoaJ1bFKf0JY9OwWgy5M=";
};
cargoHash = "sha256-3N0V/5lqiE2lTXu9oUsO3FOXhWqkNlomceqIVDGGuOM=";
passthru = {
tests.convert = testers.runCommand {
name = "${finalAttrs.pname}-convert-test";
nativeBuildInputs = [ finalAttrs.finalPackage ];
script = ''
cat <<EOF > test.yaml
foo: "bar"
baz:
- qux
EOF
cat <<EOF > expected.nix
{ foo = "bar"; baz = [ "qux" ]; }
EOF
yaml2nix test.yaml > test.nix
diff test.nix expected.nix && touch $out
'';
};
updateScript = nix-update-script { };
};
meta = {
description = "Command line tool to convert YAML into a Nix expression";
homepage = "https://github.com/euank/yaml2nix";
changelog = "https://github.com/euank/yaml2nix/releases/tag/${finalAttrs.src.tag}";
maintainers = with lib.maintainers; [
gepbird
];
license = lib.licenses.gpl3Plus;
platforms = lib.platforms.unix;
mainProgram = "yaml2nix";
};
})

View File

@@ -0,0 +1,54 @@
{
lib,
buildGoModule,
fetchFromGitHub,
versionCheckHook,
}:
buildGoModule (finalAttrs: {
pname = "yamlfmt";
version = "0.17.2";
src = fetchFromGitHub {
owner = "google";
repo = "yamlfmt";
tag = "v${finalAttrs.version}";
hash = "sha256-WSw4WhWNyvkCwRCQYFAKhtkvOSSCrSlX3+i6cMHRtOQ=";
leaveDotGit = true;
postFetch = ''
git -C "$out" rev-parse --short HEAD > "$out/.git_head"
rm -rf "$out/.git"
'';
};
vendorHash = "sha256-Cy1eBvKkQ90twxjRL2bHTk1qNFLQ22uFrOgHKmnoUIQ=";
ldflags = [
"-s"
"-w"
"-X=main.version=${finalAttrs.version}"
];
preBuild = ''
ldflags+=" -X=main.commit=$(<.git_head)"
'';
# Test failure in vendored yaml package, see:
# https://github.com/google/yamlfmt/issues/256
checkFlags = [ "-run=!S/TestNodeRoundtrip" ];
nativeInstallCheckInputs = [
versionCheckHook
];
doInstallCheck = true;
versionCheckProgramArg = "--version";
meta = {
description = "Extensible command line tool or library to format yaml files";
homepage = "https://github.com/google/yamlfmt";
changelog = "https://github.com/google/yamlfmt/releases/tag/v${finalAttrs.version}";
license = lib.licenses.asl20;
maintainers = [ ];
mainProgram = "yamlfmt";
};
})

View File

@@ -0,0 +1,46 @@
{
lib,
buildGraalvmNativeImage,
fetchurl,
}:
buildGraalvmNativeImage (finalAttrs: {
pname = "yamlscript";
version = "0.2.4";
src = fetchurl {
url = "https://github.com/yaml/yamlscript/releases/download/${finalAttrs.version}/yamlscript.cli-${finalAttrs.version}-standalone.jar";
hash = "sha256-iNkHdKPrO0dgpvxGiRdvWIhnuh9yKySgYAcVNMUVQcU=";
};
extraNativeImageBuildArgs = [
"--native-image-info"
"--no-fallback"
"--initialize-at-build-time"
"--enable-preview"
"-H:+ReportExceptionStackTraces"
"-H:IncludeResources=SCI_VERSION"
"-H:Log=registerResource:"
"-J-Dclojure.spec.skip-macros=true"
"-J-Dclojure.compiler.direct-linking=true"
];
doInstallCheck = true;
installCheckPhase = ''
runHook preInstallCheck
$out/bin/ys -e 'say: (+ 1 2)' | fgrep 3
runHook postInstallCheck
'';
meta = {
description = "Programming in YAML";
homepage = "https://github.com/yaml/yamlscript";
sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
license = lib.licenses.mit;
mainProgram = "ys";
maintainers = with lib.maintainers; [ sgo ];
};
})

View File

@@ -0,0 +1,40 @@
{
lib,
fetchFromGitHub,
python3Packages,
}:
python3Packages.buildPythonPackage rec {
pname = "yams";
# nixpkgs-update: no auto update
version = "0.7.3";
pyproject = true;
src = fetchFromGitHub {
owner = "Berulacks";
repo = "yams";
rev = version;
sha256 = "1zkhcys9i0s6jkaz24an690rvnkv1r84jxpaa84sf46abi59ijh8";
};
build-system = with python3Packages; [ setuptools ];
dependencies = with python3Packages; [
pyyaml
psutil
mpd2
requests
];
doCheck = false;
pythonImportsCheck = [ "yams.scrobble" ];
meta = with lib; {
homepage = "https://github.com/Berulacks/yams";
description = "Last.FM scrobbler for MPD";
mainProgram = "yams";
license = licenses.gpl3Only;
maintainers = with maintainers; [ ccellado ];
};
}

View File

@@ -0,0 +1,97 @@
{
lib,
stdenv,
fetchurl,
makeBinaryWrapper,
installShellFiles,
buildPackages,
withShellCompletions ? stdenv.hostPlatform.emulatorAvailable buildPackages,
# update script
writers,
python3Packages,
nix,
# tests
testers,
}:
let
pname = "yandex-cloud";
sources = lib.importJSON ./sources.json;
inherit (sources) version binaries;
in
stdenv.mkDerivation (finalAttrs: {
inherit pname version;
src = fetchurl binaries.${stdenv.hostPlatform.system};
dontUnpack = true;
strictDeps = true;
nativeBuildInputs = [
installShellFiles
makeBinaryWrapper
];
emulator = lib.optionalString (
withShellCompletions && !stdenv.buildPlatform.canExecute stdenv.hostPlatform
) (stdenv.hostPlatform.emulator buildPackages);
installPhase = ''
runHook preInstall
mkdir -p -- "$out/bin"
cp -- "$src" "$out/bin/yc"
chmod +x -- "$out/bin/yc"
''
+ lib.optionalString withShellCompletions ''
for shell in bash zsh; do
''${emulator:+"$emulator"} "$out/bin/yc" completion $shell >yc.$shell
installShellCompletion yc.$shell
done
''
+ ''
makeWrapper "$out/bin/yc" "$out/bin/docker-credential-yc" \
--add-flags --no-user-output \
--add-flags container \
--add-flags docker-credential
runHook postInstall
'';
passthru = {
updateScript = writers.writePython3 "${pname}-updater" {
libraries = with python3Packages; [ requests ];
makeWrapperArgs = [
"--prefix"
"PATH"
":"
(lib.makeBinPath [ nix ])
];
} ./update.py;
tests.version = testers.testVersion { package = finalAttrs.finalPackage; };
};
meta = {
description = "Command line interface that helps you interact with Yandex Cloud services";
homepage = "https://cloud.yandex/docs/cli";
changelog = "https://cloud.yandex/docs/cli/release-notes#version${version}";
sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
license = lib.licenses.unfree;
maintainers = [ lib.maintainers.tie ];
platforms = [
"aarch64-darwin"
"x86_64-darwin"
"aarch64-linux"
"x86_64-linux"
# Built with GO386=sse2.
#
# Unfortunately, we dont have anything about SSE2 support in lib.systems,
# so we cant mark this a broken or bad platform if host platform does not
# support SSE2. See also https://github.com/NixOS/nixpkgs/issues/132217
#
# Perhaps it would be possible to mark it as broken if platform declares
# GO386=softfloat once https://github.com/NixOS/nixpkgs/pull/256761 is
# ready and merged.
"i686-linux"
];
mainProgram = "yc";
};
})

View File

@@ -0,0 +1,25 @@
{
"version": "0.168.0",
"binaries": {
"aarch64-darwin": {
"url": "https://storage.yandexcloud.net/yandexcloud-yc/release/0.168.0/darwin/arm64/yc",
"hash": "sha256-BeaUE3hSFNw9xoIsqfPVI3d4c2mE/mXQPGKx43DEE38="
},
"aarch64-linux": {
"url": "https://storage.yandexcloud.net/yandexcloud-yc/release/0.168.0/linux/arm64/yc",
"hash": "sha256-H0H+V94jQJCLJODcUj1ekK7v3PpipFLpuPaCtAKtEh0="
},
"i686-linux": {
"url": "https://storage.yandexcloud.net/yandexcloud-yc/release/0.168.0/linux/386/yc",
"hash": "sha256-TgqkCo3kitCLd8LhmJH5uaf6dA2Zq1HkPczGk7NBpJ4="
},
"x86_64-darwin": {
"url": "https://storage.yandexcloud.net/yandexcloud-yc/release/0.168.0/darwin/amd64/yc",
"hash": "sha256-xom3Ml8+3IHew2CskcnDj+VWQdD+A7DjEjq3pGrwlIU="
},
"x86_64-linux": {
"url": "https://storage.yandexcloud.net/yandexcloud-yc/release/0.168.0/linux/amd64/yc",
"hash": "sha256-hj1zCcq4FYvWhfX0t9P/8wl94M0Rl6ieROPt4szYRZo="
}
}
}

View File

@@ -0,0 +1,107 @@
import json
import os
import requests
import shutil
import subprocess
import sys
import tempfile
# See YC_SDK_STORAGE_URL in
# https://storage.yandexcloud.net/yandexcloud-yc/install.sh
storage_url = "https://storage.yandexcloud.net/yandexcloud-yc"
systems = [
("aarch64", "darwin"),
("aarch64", "linux"),
("i686", "linux"),
("x86_64", "darwin"),
("x86_64", "linux"),
]
def to_goarch(cpu):
return {
"aarch64": "arm64",
"i686": "386",
"x86_64": "amd64",
}.get(cpu, cpu)
nixpkgs_path = "."
attr_path = os.getenv("UPDATE_NIX_ATTR_PATH", "yandex-cloud")
package_attrs = json.loads(subprocess.run(
[
"nix",
"--extra-experimental-features", "nix-command",
"eval",
"--json",
"--file", nixpkgs_path,
"--apply", """p: {
dir = dirOf p.meta.position;
version = p.version;
}""",
"--",
attr_path,
],
stdout=subprocess.PIPE,
text=True,
check=True,
).stdout)
old_version = package_attrs["version"]
new_version = requests.get(f"{storage_url}/release/stable").text.rstrip()
if new_version == old_version:
sys.exit()
binaries = {}
for cpu, kernel in systems:
goos = kernel
goarch = to_goarch(cpu)
system = f"{cpu}-{kernel}"
url = f"{storage_url}/release/{new_version}/{goos}/{goarch}/yc"
nix_hash = subprocess.run(
[
"nix-prefetch-url",
"--type", "sha256",
url,
],
stdout=subprocess.PIPE,
text=True,
check=True,
).stdout.rstrip()
sri_hash = subprocess.run(
[
"nix",
"--extra-experimental-features", "nix-command",
"hash",
"to-sri",
"--type", "sha256",
"--",
nix_hash,
],
stdout=subprocess.PIPE,
text=True,
check=True,
).stdout.rstrip()
binaries[system] = {
"url": url,
"hash": sri_hash,
}
package_dir = package_attrs["dir"]
file_path = os.path.join(package_dir, "sources.json")
file_content = json.dumps({
"version": new_version,
"binaries": binaries,
}, indent=2) + "\n"
with tempfile.NamedTemporaryFile(mode="w") as t:
t.write(file_content)
t.flush()
shutil.copyfile(t.name, file_path)

View File

@@ -0,0 +1,93 @@
{
lib,
stdenv,
fetchurl,
writeText,
zlib,
rpmextract,
patchelf,
which,
}:
let
p =
if stdenv.hostPlatform.is64bit then
{
arch = "x86_64";
gcclib = "${lib.getLib stdenv.cc.cc}/lib";
sha256 = "sha256-HH/pLZmDr6m/B3e6MHafDGnNWR83oR2y1ijVMR/LOF0=";
webarchive = "20220519080155";
}
else
{
arch = "i386";
gcclib = "${lib.getLib stdenv.cc.cc}/lib";
sha256 = "sha256-28dmdnJf+qh9r3F0quwlYXB/UqcOzcHzuzFq8vt2bf0=";
webarchive = "20220519080430";
};
in
stdenv.mkDerivation rec {
pname = "yandex-disk";
version = "0.1.6.1080";
src = fetchurl {
urls = [
"https://repo.yandex.ru/yandex-disk/rpm/stable/${p.arch}/${pname}-${version}-1.fedora.${p.arch}.rpm"
"https://web.archive.org/web/${p.webarchive}/https://repo.yandex.ru/yandex-disk/rpm/stable/${p.arch}/${pname}-${version}-1.fedora.${p.arch}.rpm"
];
sha256 = p.sha256;
};
buildInputs = [
zlib
stdenv.cc.cc
];
builder = writeText "builder.sh" ''
mkdir -pv $out/bin
mkdir -pv $out/share
mkdir -pv $out/etc
mkdir -pv unpacked
cd unpacked
${rpmextract}/bin/rpmextract $src
mkdir -p $out/share/bash-completion/completions
cp -r -t $out/bin usr/bin/*
cp -r -t $out/share usr/share/*
cp -r -t $out/share/bash-completion/completions etc/bash_completion.d/*
sed -i 's@have@${which}/bin/which >/dev/null 2>\&1@' \
$out/share/bash-completion/completions/yandex-disk-completion.bash
${patchelf}/bin/patchelf \
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath "${zlib.out}/lib:${p.gcclib}" \
$out/bin/yandex-disk
'';
meta = {
homepage = "https://help.yandex.com/disk/cli-clients.xml";
description = "Free cloud file storage service";
maintainers = with lib.maintainers; [
smironov
jagajaga
];
platforms = [
"i686-linux"
"x86_64-linux"
];
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
license = lib.licenses.unfree;
longDescription = ''
Yandex.Disk console client for Linux lets you manage files on Disk without
using a window interface or programs that support WebDAV. The advantages
of the console client compared to a WebDAV connection:
* low system resource requirements;
* faster file reading and writing speeds;
* faster syncing with Disk's server;
* no need to be constantly connected to work with files.
'';
mainProgram = "yandex-disk";
};
}

View File

@@ -0,0 +1,123 @@
{
fetchurl,
stdenvNoCC,
lib,
makeWrapper,
p7zip,
asar,
jq,
python3,
electron,
fetchFromGitHub,
electronArguments ? "",
# Whether to enable tray menu by default
trayEnabled ? true,
# Style of tray: 1 - default style, 2 - mono black, 3 - mono white
trayStyle ? 1,
# Whether to leave application in tray disregarding of its play state
trayAlways ? false,
# Whether to enable developers tools
devTools ? false,
# Vibe animation FPS can be from 0 (black screen) to any reasonable number.
# Recommended 25 - 144. Default 25.
vibeAnimationMaxFps ? 25,
# Yandex Music's custom Windows-styled titlebar. Also makes the window frameless.
customTitleBar ? false,
}:
assert lib.assertMsg (trayStyle >= 1 && trayStyle <= 3) "Tray style must be withing 1 and 3";
assert lib.assertMsg (vibeAnimationMaxFps >= 0) "Vibe animation max FPS must be greater then 0";
stdenvNoCC.mkDerivation rec {
pname = "yandex-music";
version = "5.63.1";
src = fetchFromGitHub {
owner = "cucumber-sp";
repo = "yandex-music-linux";
# tags are retagged for some bug fixes
rev = "066a6c7f503304d2181db04c5ed379a80f9137b8";
hash = "sha256-z+gmUG0/7ykF42+OlFGZC268Tj8+vpfgZRYrW4otpfM=";
};
nativeBuildInputs = [
p7zip
asar
jq
python3
makeWrapper
];
passthru.updateScript = ./update.sh;
ymExe =
let
ym_info = builtins.fromJSON (builtins.readFile ./ym_info.json);
in
fetchurl {
url = ym_info.exe_link;
hash = ym_info.exe_hash;
};
buildPhase = ''
runHook preBuild
bash "./repack.sh" -o "./app" "$ymExe"
runHook postBuild
'';
config =
let
inherit (lib) optionalString;
in
''
ELECTRON_ARGS="${electronArguments}"
VIBE_ANIMATION_MAX_FPS=${toString vibeAnimationMaxFps}
''
+ optionalString trayEnabled ''
TRAY_ENABLED=${toString trayStyle}
''
+ optionalString trayAlways ''
ALWAYS_LEAVE_TO_TRAY=1
''
+ optionalString devTools ''
DEV_TOOLS=1
''
+ optionalString customTitleBar ''
CUSTOM_TITLE_BAR=1
'';
installPhase = ''
runHook preInstall
mkdir -p "$out/share/nodejs"
mv app/yandex-music.asar "$out/share/nodejs"
CONFIG_FILE="$out/share/yandex-music.conf"
echo "$config" >> "$CONFIG_FILE"
install -Dm755 "$src/templates/yandex-music.sh" "$out/bin/yandex-music"
substituteInPlace "$out/bin/yandex-music" \
--replace-fail "%electron_path%" "${electron}/bin/electron" \
--replace-fail "%asar_path%" "$out/share/nodejs/yandex-music.asar"
wrapProgram "$out/bin/yandex-music" \
--set-default YANDEX_MUSIC_CONFIG "$CONFIG_FILE"
install -Dm644 "./app/favicon.png" "$out/share/pixmaps/yandex-music.png"
install -Dm644 "./app/favicon.png" "$out/share/icons/hicolor/48x48/apps/yandex-music.png"
install -Dm644 "./app/favicon.svg" "$out/share/icons/hicolor/scalable/apps/yandex-music.svg"
install -Dm644 "$src/templates/desktop" "$out/share/applications/yandex-music.desktop"
runHook postInstall
'';
meta = {
description = "Personal recommendations, selections for any occasion and new music";
homepage = "https://music.yandex.ru/";
downloadPage = "https://music.yandex.ru/download/";
changelog = "https://github.com/cucumber-sp/yandex-music-linux/releases/tag/v${version}";
license = lib.licenses.unfree;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ shved ];
};
}

View File

@@ -0,0 +1,70 @@
#!/usr/bin/env nix-shell
#! nix-shell -i bash -p common-updater-scripts fd jq
set -eou pipefail
OWNER="cucumber-sp"
REPO="yandex-music-linux"
URL="https://api.github.com/repos/$OWNER/$REPO"
RAW="https://raw.githubusercontent.com/$OWNER/$REPO"
attrname="yandex-music"
latest_release="$(curl --silent "$URL/releases/latest")"
latest_tag="$(curl --silent "$URL/tags?per_page=1")"
commit_hash="$(jq -r '.[0].commit.sha' <<<"$latest_tag")"
tag=$(jq -r '.tag_name' <<<"$latest_release")
# drop 'v' prefix
version="${tag#v}"
date=$(jq -r '.created_at' <<<"$latest_release")
# truncate time
date=${date%T*}
importTree="(let tree = import ./.; in if builtins.isFunction tree then tree {} else tree)"
# Old version with rc part (e.g. 5.61.1rc3)
oldVersion=$(nix-instantiate --eval -E "with $importTree; $attrname.version" | tr -d '"')
# Rc part of old version (without "rc) (e.g. 3)
oldVersionRc="${oldVersion##*rc}"
# If old version does not have "rc" part - assume rc is 0
if [ "$oldVersionRc" == "$oldVersion" ]; then
oldVersionRc="0"
fi
# Old version w/o rc part (e.g 5.61.1)
oldVersion="${oldVersion%%rc*}"
# Remove "rc" part from new version. There should be no "rc" part at all but
# better to play it safe.
version="${version%%rc*}"
rc=""
# If new version is the same as old version - increase rc and format rc part
if [ "$version" == "$oldVersion" ]; then
rc="rc$((oldVersionRc + 1))";
fi
# update version; otherwise fail
update-source-version "$attrname" "$version$rc" --ignore-same-hash --rev="$commit_hash"
# set yandex-music dir
dir="pkgs/by-name/ya/yandex-music"
# download and save new version of 'exe' file
ym_info=$(curl --silent "$RAW/$commit_hash/utility/version_info.json" |\
jq '.ym')
exe_name="$(jq -r '.exe_name' <<<"$ym_info")"
exe_link="$(jq -r '.exe_link' <<<"$ym_info")"
exe_sha256="$(jq -r '.exe_sha256' <<<"$ym_info")"
exe_hash="$(nix-hash --to-sri --type sha256 "$exe_sha256")"
jq '.' > "$dir/ym_info.json" <<- EOJSON ||\
echo "Please run the script in the root of the Nixpkgs repo"
{
"version": "$version",
"exe_name": "$exe_name",
"exe_link": "$exe_link",
"exe_hash": "$exe_hash"
}
EOJSON

View File

@@ -0,0 +1,6 @@
{
"version": "5.63.1",
"exe_name": "Yandex_Music_x64_5.63.1.exe",
"exe_link": "https://music-desktop-application.s3.yandex.net/stable/Yandex_Music_x64_5.63.1.exe",
"exe_hash": "sha256-mGDjo/HjRRWtCGV95vtBwZpUepR/5opy6NQpM3HBVHo="
}

View File

@@ -0,0 +1,124 @@
{
lib,
stdenv,
clangStdenv,
lld,
# Available labels: https://github.com/yaneurao/YaneuraOu/blob/59f6265cebbd4f03138091098059a881a021eefa/source/Makefile#L53-L92
targetLabel ?
with stdenv.hostPlatform;
if isDarwin then
if isAarch64 then
"APPLEM1"
else if avx2Support then
"APPLEAVX2"
else
"APPLESSE42"
else if isx86_64 then
if avx512Support then
"AVX512"
else if avx2Support then
"AVX2"
else if sse4_2Support then
"SSE42"
else if sse4_1Support then
"SSE41"
else if ssse3Support then
"SSSE3"
else
"SSE2"
else if isx86_32 then
"NO_SSE"
else
"OTHER",
fetchFromGitHub,
fetchurl,
_7zz,
nix-update-script,
}:
# Use clangStdenv instead of the default stdenv because:
# - The upstream author treats clang++ as the primary compiler in the docs
# and Makefile, even though the code also builds with g++.
# - With just stdenv the build fails on macOS, while it works out of the box
# with clangStdenv.
clangStdenv.mkDerivation (finalAttrs: {
pname = "yaneuraou";
version = "8.60";
src = fetchFromGitHub {
owner = "yaneurao";
repo = "YaneuraOu";
tag = "v${finalAttrs.version}git";
hash = "sha256-1awnGCGIdeMAqAd0TWgoJr5spJo2mFBWdR3iMc2i4OM=";
};
sourceRoot = "${finalAttrs.src.name}/source";
nativeBuildInputs = lib.optionals (!stdenv.hostPlatform.isDarwin) [
lld
];
buildInputs = [
stdenv.cc.cc # For libstdc++.so.6
];
buildFlags = [
"TARGET_CPU=${targetLabel}"
"YANEURAOU_EDITION=YANEURAOU_ENGINE_NNUE"
"COMPILER=clang++"
"OBJDIR=$NIX_BUILD_TOP/obj"
];
installPhase = ''
runHook preInstall
mkdir -p "$out/bin"
mv ./YaneuraOu-by-* "$out/bin/YaneuraOu"
runHook postInstall
'';
doInstallCheck = true;
nativeInstallCheckInputs = [
_7zz
];
installCheckPhase =
let
nnue = fetchurl {
url = "https://github.com/yaneurao/YaneuraOu/releases/download/suisho5/Suisho5.7z";
hash = "sha256-ZzTjo9KOZ7kgbDRC9tEPFhSBODJ9/4Ecre389YH3mAk=";
};
in
''
runHook preInstallCheck
7zz x '${nnue}'
usi_command="setoption name EvalDir value $PWD
isready
go byoyomi 1000
wait"
usi_output="$("$out/bin/YaneuraOu" <<< "$usi_command")"
[[ "$usi_output" == *'bestmove'* ]]
runHook postInstallCheck
'';
passthru = {
updateScript = nix-update-script {
extraArgs = [
"--version-regex=^v([\\d.]+)git$"
];
};
};
meta = {
description = "USI compliant shogi engine";
homepage = "https://github.com/yaneurao/YaneuraOu";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [
kachick
];
mainProgram = "YaneuraOu";
platforms = lib.platforms.unix ++ lib.platforms.windows;
};
})

View File

@@ -0,0 +1,45 @@
{
lib,
stdenv,
buildGoModule,
fetchFromGitHub,
installShellFiles,
}:
buildGoModule rec {
pname = "yanic";
version = "1.8.3";
src = fetchFromGitHub {
owner = "FreifunkBremen";
repo = "yanic";
rev = "v${version}";
hash = "sha256-6jGuqqUr9DJyPYAVBBHc5qtfJIbvjGndT2Y+RSLMzhY=";
};
vendorHash = "sha256-TcmkPBHxpmTgXNW8gPkzMpjPGCQu/HrZqAu9jDpPEjo=";
ldflags = [
"-X github.com/FreifunkBremen/yanic/cmd.VERSION=${version}"
"-s"
"-w"
];
nativeBuildInputs = [ installShellFiles ];
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
installShellCompletion --cmd yanic \
--bash <($out/bin/yanic completion bash) \
--fish <($out/bin/yanic completion fish) \
--zsh <($out/bin/yanic completion zsh)
'';
meta = with lib; {
description = "Tool to collect and aggregate respondd data";
homepage = "https://github.com/FreifunkBremen/yanic";
changelog = "https://github.com/FreifunkBremen/yanic/releases/tag/${src.rev}";
license = licenses.agpl3Only;
maintainers = with maintainers; [ herbetom ];
mainProgram = "yanic";
};
}

View File

@@ -0,0 +1,39 @@
{
lib,
stdenv,
fetchFromGitHub,
xsel,
}:
stdenv.mkDerivation rec {
pname = "yank";
version = "1.3.0";
src = fetchFromGitHub {
owner = "mptre";
repo = "yank";
rev = "v${version}";
sha256 = "sha256-sZiZki2Zl0Tfmls5KrLGxT94Bdf9TA9EwoaLoFOX9B4=";
};
installFlags = [ "PREFIX=$(out)" ];
makeFlags = [ "YANKCMD=${xsel}/bin/xsel" ];
meta = with lib; {
homepage = "https://github.com/mptre/yank";
description = "Yank terminal output to clipboard";
longDescription = ''
Read input from stdin and display a selection interface that allows a
field to be selected and copied to the clipboard. Fields are determined
by splitting the input on a delimiter sequence, optionally specified
using the -d option. New line, carriage return and tab characters are
always treated as delimiters.
'';
downloadPage = "https://github.com/mptre/yank/releases";
license = licenses.mit;
maintainers = [ maintainers.dochang ];
platforms = platforms.unix;
mainProgram = "yank";
};
}

View File

@@ -0,0 +1,32 @@
{
lib,
stdenvNoCC,
fetchzip,
}:
stdenvNoCC.mkDerivation {
pname = "yanone-kaffeesatz";
version = "2004";
src = fetchzip {
url = "https://yanone.de/2015/data/UIdownloads/Yanone%20Kaffeesatz.zip";
stripRoot = false;
hash = "sha256-8yAB73UJ77/c8/VLqiFeT1KtoBQzOh+vWrI+JA2dCoY=";
};
installPhase = ''
runHook preInstall
install -Dm644 *.otf -t $out/share/fonts/opentype
runHook postInstall
'';
meta = {
description = "Free font classic";
maintainers = with lib.maintainers; [ mt-caret ];
platforms = with lib.platforms; all;
homepage = "https://yanone.de/fonts/kaffeesatz/";
license = lib.licenses.ofl;
};
}

View File

@@ -0,0 +1,43 @@
{
lib,
fetchFromGitLab,
python3,
nix-update-script,
}:
python3.pkgs.buildPythonApplication {
pname = "yaookctl";
version = "0-unstable-2025-09-25";
src = fetchFromGitLab {
owner = "yaook";
repo = "yaookctl";
rev = "255dc7db8d532937be5b49f326ffcb346507b1e7";
hash = "sha256-Hf+vmH4FrSMlNhYWeImn7//7Lt9k3nJoHT9LJwma3Yw=";
};
pyproject = true;
build-system = [ python3.pkgs.setuptools ];
dontCheckRuntimeDeps = true;
dependencies = with python3.pkgs; [
babel
click
click-option-group
kubernetes-asyncio
prettytable
typing-extensions
];
passthru.updateScript = nix-update-script {
extraArgs = [ "--version=branch" ];
};
meta = {
homepage = "https://gitlab.com/yaook/yaookctl";
description = "Toolbox for interacting with Yaook clusters";
license = lib.licenses.mit;
mainProgram = "yaookctl";
maintainers = with lib.maintainers; [ lykos153 ];
};
}

View File

@@ -0,0 +1,64 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
pkg-config,
R,
readline,
gmp,
zlib,
librdf_raptor2,
nix-update-script,
}:
stdenv.mkDerivation {
pname = "yap";
version = "7.6.0-unstable-2025-05-23";
src = fetchFromGitHub {
owner = "vscosta";
repo = "yap";
rev = "010bb5e48d2f4fbdc0c47ae9faa830a179b3c31b";
hash = "sha256-ojhporq7vCEtdwCIRHwzjpc6dbFFXAgF+p6M7eL3JIE=";
};
nativeBuildInputs = [
cmake
pkg-config
R
];
buildInputs = [
readline
gmp
zlib
librdf_raptor2
];
cmakeFlags = [
(lib.cmakeBool "WITH_READLINE" true)
(lib.cmakeBool "WITH_R" true)
(lib.cmakeBool "WITH_Raptor2" true)
(lib.cmakeBool "WITH_CUDD" false)
(lib.cmakeBool "WITH_Gecode" false)
];
# -fcommon: workaround build failure on -fno-common toolchains like upstream
# gcc-10. Otherwise build fails as:
# ld: libYap.a(pl-dtoa.o):/build/yap-6.3.3/H/pl-yap.h:230: multiple definition of `ATOM_';
# libYap.a(pl-buffer.o):/build/yap-6.3.3/H/pl-yap.h:230: first defined here
env.NIX_CFLAGS_COMPILE = "-fpermissive -fcommon";
passthru.updateScript = nix-update-script { extraArgs = [ "--version=branch" ]; };
meta = {
# linux 32 bit build fails.
broken =
(stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) || !stdenv.hostPlatform.is64bit;
homepage = "https://github.com/vscosta/yap";
description = "ISO-compatible high-performance Prolog compiler";
license = lib.licenses.artistic2;
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,55 @@
{
lib,
SDL2,
fetchFromGitHub,
pkg-config,
stdenv,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "yapesdl";
version = "0.80.1";
src = fetchFromGitHub {
owner = "calmopyrin";
repo = "yapesdl";
rev = "v${finalAttrs.version}";
hash = "sha256-VCjxdVatu1h6VNMkLYL8Nknwn7ax0J2OhO1bc7dnQRA=";
};
nativeBuildInputs = [
SDL2
pkg-config
];
buildInputs = [
SDL2
];
makeFlags = [ "CC=${stdenv.cc.targetPrefix}c++" ];
outputs = [
"out"
"doc"
];
strictDeps = true;
installPhase = ''
runHook preInstall
install -Dm755 yapesdl -t ''${!outputBin}/bin/
install -Dm755 README.SDL -t ''${!outputDoc}/share/doc/yapesdl/
runHook postInstall
'';
meta = {
homepage = "http://yape.plus4.net/";
description = "Multiplatform Commodore 64 and 264 family emulator";
changelog = "https://github.com/calmopyrin/yapesdl/releases/tag/${finalAttrs.src.rev}";
license = lib.licenses.gpl2Plus;
mainProgram = "yapesdl";
maintainers = [ ];
platforms = lib.platforms.unix;
broken = stdenv.hostPlatform.isDarwin;
};
})

View File

@@ -0,0 +1,60 @@
{
lib,
python3,
fetchFromGitHub,
fetchpatch,
}:
python3.pkgs.buildPythonApplication rec {
pname = "yarGen";
version = "0.23.4";
format = "other";
src = fetchFromGitHub {
owner = "Neo23x0";
repo = "yarGen";
rev = version;
sha256 = "6PJNAeeLAyUlZcIi0g57sO1Ex6atn7JhbK9kDbNrZ6A=";
};
patches = [
# https://github.com/Neo23x0/yarGen/pull/33
(fetchpatch {
name = "use-built-in-scandir.patch";
url = "https://github.com/Neo23x0/yarGen/commit/cae14ac8efeb5536885792cae99d1d0f7fb6fde3.patch";
sha256 = "0z6925r7n1iysld5c8li5nkm1dbxg8j7pn0626a4vic525vf8ndl";
})
# https://github.com/Neo23x0/yarGen/pull/34
(fetchpatch {
name = "use-cwd-for-abspath.patch";
url = "https://github.com/Neo23x0/yarGen/commit/441dafb702149f5728c2c6736fc08741a46deb26.patch";
sha256 = "lNp3oC2BM7tBzN4AetvPr+xJLz6KkZxQmsldeZaxJQU=";
})
];
postPatch = ''
substituteInPlace yarGen.py \
--replace "./3rdparty/strings.xml" "$out/share/yarGen/3rdparty/strings.xml"
'';
installPhase = ''
runHook preInstall
install -Dt "$out/bin" yarGen.py
install -Dt "$out/share/yarGen/3rdparty" 3rdparty/strings.xml
runHook postInstall
'';
propagatedBuildInputs = with python3.pkgs; [
pefile
lxml
];
meta = with lib; {
description = "Generator for YARA rules";
mainProgram = "yarGen.py";
homepage = "https://github.com/Neo23x0/yarGen";
license = licenses.bsd3;
maintainers = [ ];
};
}

View File

@@ -0,0 +1,60 @@
{
lib,
rust,
stdenv,
fetchFromGitHub,
rustPlatform,
installShellFiles,
cargo-c,
testers,
yara-x,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "yara-x";
version = "1.6.0";
src = fetchFromGitHub {
owner = "VirusTotal";
repo = "yara-x";
tag = "v${finalAttrs.version}";
hash = "sha256-LpdpdzUof+Buz5QQcWUr23AsSyfvUQYPp7RhHWXRb+I=";
};
cargoHash = "sha256-IO8ER92vWO3Q9MntaGwdhEFgy9G35Q3LOG5GU5rJpQY=";
nativeBuildInputs = [
installShellFiles
cargo-c
];
postBuild = ''
${rust.envVars.setEnv} cargo cbuild --release --frozen --prefix=${placeholder "out"} --target ${stdenv.hostPlatform.rust.rustcTarget}
'';
postInstall = ''
${rust.envVars.setEnv} cargo cinstall --release --frozen --prefix=${placeholder "out"} --target ${stdenv.hostPlatform.rust.rustcTarget}
''
+ lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
installShellCompletion --cmd yr \
--bash <($out/bin/yr completion bash) \
--fish <($out/bin/yr completion fish) \
--zsh <($out/bin/yr completion zsh)
'';
passthru.tests.version = testers.testVersion {
package = yara-x;
};
meta = {
description = "Tool to do pattern matching for malware research";
homepage = "https://virustotal.github.io/yara-x/";
changelog = "https://github.com/VirusTotal/yara-x/releases/tag/v${finalAttrs.version}";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [
fab
lesuisse
];
mainProgram = "yr";
};
})

View File

@@ -0,0 +1,71 @@
{
lib,
stdenv,
fetchFromGitHub,
autoreconfHook,
pkg-config,
protobufc,
withCrypto ? true,
openssl,
enableCuckoo ? true,
jansson,
enableDex ? true,
enableDotNet ? true,
enableMacho ? true,
enableMagic ? true,
file,
enableStatic ? false,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "yara";
version = "4.5.4";
src = fetchFromGitHub {
owner = "VirusTotal";
repo = "yara";
tag = "v${finalAttrs.version}";
hash = "sha256-vSwjP0wbC65jEOxY9zrHAV1gEhcZ96emqvkuUw20Twc=";
};
nativeBuildInputs = [
autoreconfHook
pkg-config
];
buildInputs = [
protobufc
]
++ lib.optionals withCrypto [ openssl ]
++ lib.optionals enableMagic [ file ]
++ lib.optionals enableCuckoo [ jansson ];
preConfigure = "./bootstrap.sh";
configureFlags = [
(lib.withFeature withCrypto "crypto")
(lib.enableFeature enableCuckoo "cuckoo")
(lib.enableFeature enableDex "dex")
(lib.enableFeature enableDotNet "dotnet")
(lib.enableFeature enableMacho "macho")
(lib.enableFeature enableMagic "magic")
(lib.enableFeature enableStatic "static")
];
doCheck = enableStatic;
# bin/yara contain forbidden references to /build/.
preFixup = lib.optionalString stdenv.hostPlatform.isLinux ''
patchelf --shrink-rpath --allowed-rpath-prefixes "$NIX_STORE" $out/bin/yara
'';
meta = {
description = "Tool to perform pattern matching for malware-related tasks";
homepage = "http://Virustotal.github.io/yara/";
changelog = "https://github.com/VirusTotal/yara/releases/tag/v${finalAttrs.version}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "yara";
platforms = lib.platforms.all;
};
})

View File

@@ -0,0 +1,48 @@
{
lib,
python3,
fetchFromGitHub,
gitUpdater,
}:
python3.pkgs.buildPythonApplication rec {
pname = "yaralyzer";
version = "1.0.9";
pyproject = true;
src = fetchFromGitHub {
owner = "michelcrypt4d4mus";
repo = "yaralyzer";
tag = "v${version}";
hash = "sha256-OGMvDPwR4WFINKJpoP242Xhi3mhDzrUypClVGgIIHJI=";
};
build-system = with python3.pkgs; [
poetry-core
];
dependencies = with python3.pkgs; [
chardet
python-dotenv
rich
rich-argparse-plus
yara-python
];
pythonImportsCheck = [
"yaralyzer"
];
passthru = {
updateScript = gitUpdater { rev-prefix = "v"; };
};
meta = {
description = "Tool to visually inspect and force decode YARA and regex matches";
homepage = "https://github.com/michelcrypt4d4mus/yaralyzer";
changelog = "https://github.com/michelcrypt4d4mus/yaralyzer/blob/${src.tag}/CHANGELOG.md";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "yaralyze";
};
}

View File

@@ -0,0 +1,128 @@
{
lib,
stdenv,
fetchzip,
autoPatchelfHook,
alsa-lib,
gtk3,
zlib,
dbus,
hidapi,
libGL,
libXcursor,
libXext,
libXi,
libXinerama,
libxkbcommon,
libXrandr,
libXScrnSaver,
libXxf86vm,
udev,
vulkan-loader,
wayland, # (not used by default, enable with SDL_VIDEODRIVER=wayland - doesn't support HiDPI)
makeDesktopItem,
nix-update-script,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "yarg";
version = "0.13.0";
src = fetchzip {
url = "https://github.com/YARC-Official/YARG/releases/download/v${finalAttrs.version}/YARG_v${finalAttrs.version}-Linux-x86_64.zip";
stripRoot = false;
hash = "sha256-3auQc4Vq0m/f40PvWgbo0U2jUWaDA6OzKOj96ZG2RxA=";
};
nativeBuildInputs = [ autoPatchelfHook ];
buildInputs = [
# Load-time libraries (loaded from DT_NEEDED section in ELF binary)
alsa-lib
gtk3
(lib.getLib stdenv.cc.cc)
zlib
# Run-time libraries (loaded with dlopen)
dbus
hidapi
libGL
libXcursor
libXext
libXi
libXinerama
libxkbcommon
libXrandr
libXScrnSaver
libXxf86vm
udev
vulkan-loader
wayland
];
desktopItem = makeDesktopItem {
name = "yarg";
desktopName = "YARG";
comment = finalAttrs.meta.description;
icon = "yarg";
exec = "yarg";
categories = [ "Game" ];
};
installPhase = ''
runHook preInstall
install -Dm755 YARG "$out/bin/yarg"
install -Dm644 UnityPlayer.so "$out/libexec/yarg/UnityPlayer.so"
mkdir -p "$out/share/pixmaps"
cp -r YARG_Data "$out/share/yarg"
ln -s "$out/share/yarg" "$out/bin/yarg_Data"
ln -s "$out/share/yarg/Resources/UnityPlayer.png" "$out/share/pixmaps/yarg.png"
install -Dm644 "$desktopItem/share/applications/yarg.desktop" "$out/share/applications/yarg.desktop"
runHook postInstall
'';
# Patch required run-time libraries as load-time libraries
#
# Libraries found with:
# > strings UnityPlayer.so | grep '\.so'
# and:
# > LD_DEBUG=libs yarg
postFixup = ''
patchelf \
--add-needed libasound.so.2 \
--add-needed libdbus-1.so.3 \
--add-needed libGL.so.1 \
--add-needed libhidapi-hidraw.so.0 \
--add-needed libpthread.so.0 \
--add-needed libudev.so.1 \
--add-needed libvulkan.so.1 \
--add-needed libwayland-client.so.0 \
--add-needed libwayland-cursor.so.0 \
--add-needed libwayland-egl.so.1 \
--add-needed libX11.so.6 \
--add-needed libXcursor.so.1 \
--add-needed libXext.so.6 \
--add-needed libXi.so.6 \
--add-needed libXinerama.so.1 \
--add-needed libxkbcommon.so.0 \
--add-needed libXrandr.so.2 \
--add-needed libXss.so.1 \
--add-needed libXxf86vm.so.1 \
"$out/libexec/yarg/UnityPlayer.so"
'';
passthru.updateScript = nix-update-script { };
meta = with lib; {
description = "Free, open-source, plastic guitar game";
homepage = "https://yarg.in";
changelog = "https://github.com/YARC-Official/YARG/releases/tag/v${finalAttrs.version}";
license = licenses.lgpl3Plus;
maintainers = with maintainers; [ kira-bruneau ];
platforms = [ "x86_64-linux" ];
sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
};
})

View File

@@ -0,0 +1,36 @@
{
lib,
stdenv,
fetchFromGitHub,
installShellFiles,
}:
stdenv.mkDerivation rec {
pname = "yarn-bash-completion";
version = "0.17.0";
src = fetchFromGitHub {
owner = "dsifford";
repo = "yarn-completion";
rev = "v${version}";
sha256 = "0xflbrbwskjqv3knvc8jqygpvfxh5ak66q7w22d1ng8gwrfqzcng";
};
strictDeps = true;
nativeBuildInputs = [ installShellFiles ];
installPhase = ''
runHook preInstall
installShellCompletion --cmd yarn ./yarn-completion.bash
runHook postInstall
'';
meta = with lib; {
homepage = "https://github.com/dsifford/yarn-completion/";
description = "Bash completion for Yarn";
license = licenses.mit;
maintainers = with maintainers; [ DamienCassou ];
};
}

View File

@@ -0,0 +1,118 @@
diff --git a/packages/plugin-essentials/sources/commands/install.ts b/packages/plugin-essentials/sources/commands/install.ts
index 9dcd02d12..cf1765a20 100644
--- a/packages/plugin-essentials/sources/commands/install.ts
+++ b/packages/plugin-essentials/sources/commands/install.ts
@@ -254,6 +254,7 @@ export default class YarnCommand extends BaseCommand {
// If migrating from a v1 install, we automatically enable the node-modules linker,
// since that's likely what the author intended to do.
if (content?.includes(`yarn lockfile v1`)) {
+ throw new Error("Tried to use yarn-berry_3.yarnConfigHook (nixpkgs), but found a yarn v1 lockfile");
const nmReport = await StreamReport.start({
configuration,
json: this.json,
diff --git a/packages/plugin-git/sources/GitFetcher.ts b/packages/plugin-git/sources/GitFetcher.ts
index fe2a4fce8..bfa82728e 100644
--- a/packages/plugin-git/sources/GitFetcher.ts
+++ b/packages/plugin-git/sources/GitFetcher.ts
@@ -50,9 +50,14 @@ export class GitFetcher implements Fetcher {
}
async cloneFromRemote(locator: Locator, opts: FetchOptions) {
- const cloneTarget = await gitUtils.clone(locator.reference, opts.project.configuration);
-
const repoUrlParts = gitUtils.splitRepoUrl(locator.reference);
+
+ if (repoUrlParts.treeish.protocol !== "commit") {
+ throw new Error(`Missing source for git dependency ${locator.reference}`);
+ };
+
+ const cloneTarget = opts.cache.checkoutPath(repoUrlParts.treeish.request);
+
const packagePath = ppath.join(cloneTarget, `package.tgz` as PortablePath);
await scriptUtils.prepareExternalProject(cloneTarget, packagePath, {
diff --git a/packages/plugin-npm/sources/NpmSemverFetcher.ts b/packages/plugin-npm/sources/NpmSemverFetcher.ts
index 0f69423c7..5b21462a5 100644
--- a/packages/plugin-npm/sources/NpmSemverFetcher.ts
+++ b/packages/plugin-npm/sources/NpmSemverFetcher.ts
@@ -47,6 +47,7 @@ export class NpmSemverFetcher implements Fetcher {
}
private async fetchFromNetwork(locator: Locator, opts: FetchOptions) {
+ throw new Error(`Missing sources for ${structUtils.prettyLocator(opts.project.configuration, locator)}`);
let sourceBuffer;
try {
sourceBuffer = await npmHttpUtils.get(NpmSemverFetcher.getLocatorUrl(locator), {
diff --git a/packages/yarnpkg-core/sources/Cache.ts b/packages/yarnpkg-core/sources/Cache.ts
index d5e686420..374b5d67f 100644
--- a/packages/yarnpkg-core/sources/Cache.ts
+++ b/packages/yarnpkg-core/sources/Cache.ts
@@ -158,6 +158,10 @@ export class Cache {
}
}
+ checkoutPath(commit: string): string {
+ return ppath.join(ppath.join(this.cwd, "../checkouts"), commit);
+ }
+
async fetchPackageFromCache(locator: Locator, expectedChecksum: string | null, {onHit, onMiss, loader, ...opts}: {onHit?: () => void, onMiss?: () => void, loader?: () => Promise<ZipFS> } & CacheOptions): Promise<[FakeFS<PortablePath>, () => void, string | null]> {
const mirrorPath = this.getLocatorMirrorPath(locator);
diff --git a/packages/yarnpkg-core/sources/scriptUtils.ts b/packages/yarnpkg-core/sources/scriptUtils.ts
index b3c2c5903..641687745 100644
--- a/packages/yarnpkg-core/sources/scriptUtils.ts
+++ b/packages/yarnpkg-core/sources/scriptUtils.ts
@@ -262,20 +262,6 @@ export async function prepareExternalProject(cwd: PortablePath, outputPath: Port
? [`workspace`, workspace]
: [];
- // `set version` will update the Manifest to contain a `packageManager` field with the latest
- // Yarn version which causes the results to change depending on when this command was run,
- // therefore we revert any change made to it.
- const manifestPath = ppath.join(cwd, Filename.manifest);
- const manifestBuffer = await xfs.readFilePromise(manifestPath);
-
- // Makes sure that we'll be using Yarn 1.x
- const version = await execUtils.pipevp(process.execPath, [process.argv[1], `set`, `version`, `classic`, `--only-if-needed`], {cwd, env, stdin, stdout, stderr, end: execUtils.EndStrategy.ErrorCode});
- if (version.code !== 0)
- return version.code;
-
- // Revert any changes made to the Manifest by `set version`.
- await xfs.writeFilePromise(manifestPath, manifestBuffer);
-
// Otherwise Yarn 1 will pack the .yarn directory :(
await xfs.appendFilePromise(ppath.join(cwd, `.npmignore` as PortablePath), `/.yarn\n`);
@@ -284,16 +270,8 @@ export async function prepareExternalProject(cwd: PortablePath, outputPath: Port
// Remove environment variables that limit the install to just production dependencies
delete env.NODE_ENV;
- // Run an install; we can't avoid it unless we inspect the
- // package.json, which I don't want to do to keep the codebase
- // clean (even if it has a slight perf cost when cloning v1 repos)
- const install = await execUtils.pipevp(`yarn`, [`install`], {cwd, env, stdin, stdout, stderr, end: execUtils.EndStrategy.ErrorCode});
- if (install.code !== 0)
- return install.code;
-
- stdout.write(`\n`);
-
- const pack = await execUtils.pipevp(`yarn`, [...workspaceCli, `pack`, `--filename`, npath.fromPortablePath(outputPath)], {cwd, env, stdin, stdout, stderr});
+ env["SKIP_YARN_COREPACK_CHECK"] = "1";
+ const pack = await execUtils.pipevp(`@yarnv1@`, [...workspaceCli, `--offline`, `pack`, `--filename`, npath.fromPortablePath(outputPath)], {cwd, env, stdin, stdout, stderr});
if (pack.code !== 0)
return pack.code;
@@ -372,13 +350,6 @@ export async function prepareExternalProject(cwd: PortablePath, outputPath: Port
delete env.NPM_CONFIG_PRODUCTION;
delete env.NODE_ENV;
- // We can't use `npm ci` because some projects don't have npm
- // lockfiles that are up-to-date. Hopefully npm won't decide
- // to change the versions randomly.
- const install = await execUtils.pipevp(`npm`, [`install`], {cwd, env, stdin, stdout, stderr, end: execUtils.EndStrategy.ErrorCode});
- if (install.code !== 0)
- return install.code;
-
const packStream = new PassThrough();
const packPromise = miscUtils.bufferStream(packStream);

View File

@@ -0,0 +1,114 @@
diff --git a/packages/plugin-essentials/sources/commands/install.ts b/packages/plugin-essentials/sources/commands/install.ts
index 90ba55349..ef5368c1b 100644
--- a/packages/plugin-essentials/sources/commands/install.ts
+++ b/packages/plugin-essentials/sources/commands/install.ts
@@ -302,6 +302,7 @@ export default class YarnCommand extends BaseCommand {
for (const rule of LOCKFILE_MIGRATION_RULES) {
if (rule.selector(lockfileLastVersion) && typeof configuration.sources.get(rule.name) === `undefined`) {
+ throw new Error(`Tried to use yarn-berry_4.yarnConfigHook (nixpkgs) which expects lockfile version 8, but found lockfile version ${lockfileLastVersion}`);
configuration.use(`<compat>`, {[rule.name]: rule.value}, project.cwd, {overwrite: true});
newSettings[rule.name] = rule.value;
}
diff --git a/packages/plugin-git/sources/GitFetcher.ts b/packages/plugin-git/sources/GitFetcher.ts
index d9f8d85c7..4db9f9008 100644
--- a/packages/plugin-git/sources/GitFetcher.ts
+++ b/packages/plugin-git/sources/GitFetcher.ts
@@ -50,7 +50,11 @@ export class GitFetcher implements Fetcher {
async cloneFromRemote(locator: Locator, opts: FetchOptions) {
const repoUrlParts = gitUtils.splitRepoUrl(locator.reference);
- const cloneTarget = await gitUtils.clone(locator.reference, opts.project.configuration);
+ if (repoUrlParts.treeish.protocol !== "commit") {
+ throw new Error(`Missing source for git dependency ${locator.reference}`);
+ };
+
+ const cloneTarget = opts.cache.checkoutPath(repoUrlParts.treeish.request);
const projectPath = ppath.resolve(cloneTarget, repoUrlParts.extra.cwd ?? PortablePath.dot);
const packagePath = ppath.join(projectPath, `package.tgz`);
diff --git a/packages/plugin-npm/sources/NpmSemverFetcher.ts b/packages/plugin-npm/sources/NpmSemverFetcher.ts
index 7347859aa..ea5767f88 100644
--- a/packages/plugin-npm/sources/NpmSemverFetcher.ts
+++ b/packages/plugin-npm/sources/NpmSemverFetcher.ts
@@ -45,6 +45,7 @@ export class NpmSemverFetcher implements Fetcher {
}
private async fetchFromNetwork(locator: Locator, opts: FetchOptions) {
+ throw new Error(`Missing sources for ${structUtils.prettyLocator(opts.project.configuration, locator)}`);
let sourceBuffer;
try {
sourceBuffer = await npmHttpUtils.get(NpmSemverFetcher.getLocatorUrl(locator), {
diff --git a/packages/yarnpkg-core/sources/Cache.ts b/packages/yarnpkg-core/sources/Cache.ts
index b712ecf11..c7effbc61 100644
--- a/packages/yarnpkg-core/sources/Cache.ts
+++ b/packages/yarnpkg-core/sources/Cache.ts
@@ -225,6 +225,10 @@ export class Cache {
}
}
+ checkoutPath(commit: string): string {
+ return ppath.join(ppath.join(this.cwd, "../checkouts"), commit);
+ }
+
async fetchPackageFromCache(locator: Locator, expectedChecksum: string | null, {onHit, onMiss, loader, ...opts}: {onHit?: () => void, onMiss?: () => void, loader?: () => Promise<ZipFS>} & CacheOptions): Promise<[FakeFS<PortablePath>, () => void, string | null]> {
const mirrorPath = this.getLocatorMirrorPath(locator);
diff --git a/packages/yarnpkg-core/sources/scriptUtils.ts b/packages/yarnpkg-core/sources/scriptUtils.ts
index 2dcd7e59e..a2a7f9791 100644
--- a/packages/yarnpkg-core/sources/scriptUtils.ts
+++ b/packages/yarnpkg-core/sources/scriptUtils.ts
@@ -262,20 +262,6 @@ export async function prepareExternalProject(cwd: PortablePath, outputPath: Port
? [`workspace`, workspace]
: [];
- // `set version` will update the Manifest to contain a `packageManager` field with the latest
- // Yarn version which causes the results to change depending on when this command was run,
- // therefore we revert any change made to it.
- const manifestPath = ppath.join(cwd, Filename.manifest);
- const manifestBuffer = await xfs.readFilePromise(manifestPath);
-
- // Makes sure that we'll be using Yarn 1.x
- const version = await execUtils.pipevp(process.execPath, [process.argv[1], `set`, `version`, `classic`, `--only-if-needed`, `--yarn-path`], {cwd, env, stdin, stdout, stderr, end: execUtils.EndStrategy.ErrorCode});
- if (version.code !== 0)
- return version.code;
-
- // Revert any changes made to the Manifest by `set version`.
- await xfs.writeFilePromise(manifestPath, manifestBuffer);
-
// Otherwise Yarn 1 will pack the .yarn directory :(
await xfs.appendFilePromise(ppath.join(cwd, `.npmignore`), `/.yarn\n`);
@@ -284,16 +270,8 @@ export async function prepareExternalProject(cwd: PortablePath, outputPath: Port
// Remove environment variables that limit the install to just production dependencies
delete env.NODE_ENV;
- // Run an install; we can't avoid it unless we inspect the
- // package.json, which I don't want to do to keep the codebase
- // clean (even if it has a slight perf cost when cloning v1 repos)
- const install = await execUtils.pipevp(`yarn`, [`install`], {cwd, env, stdin, stdout, stderr, end: execUtils.EndStrategy.ErrorCode});
- if (install.code !== 0)
- return install.code;
-
- stdout.write(`\n`);
-
- const pack = await execUtils.pipevp(`yarn`, [...workspaceCli, `pack`, `--filename`, npath.fromPortablePath(outputPath)], {cwd, env, stdin, stdout, stderr});
+ env["SKIP_YARN_COREPACK_CHECK"] = "1";
+ const pack = await execUtils.pipevp(`@yarnv1@`, [...workspaceCli, `--offline`, `pack`, `--filename`, npath.fromPortablePath(outputPath)], {cwd, env, stdin, stdout, stderr});
if (pack.code !== 0)
return pack.code;
@@ -372,13 +350,6 @@ export async function prepareExternalProject(cwd: PortablePath, outputPath: Port
delete env.NPM_CONFIG_PRODUCTION;
delete env.NODE_ENV;
- // We can't use `npm ci` because some projects don't have npm
- // lockfiles that are up-to-date. Hopefully npm won't decide
- // to change the versions randomly.
- const install = await execUtils.pipevp(`npm`, [`install`, `--legacy-peer-deps`], {cwd, env, stdin, stdout, stderr, end: execUtils.EndStrategy.ErrorCode});
- if (install.code !== 0)
- return install.code;
-
const packStream = new PassThrough();
const packPromise = miscUtils.bufferStream(packStream);

View File

@@ -0,0 +1,87 @@
{
lib,
newScope,
yarn-berry,
yarn,
replaceVars,
libzip,
zlib,
zlib-ng,
}:
let
variantOverlays = {
"3" = final: {
berryCacheVersion = "8";
berryOfflinePatches = [
(replaceVars ./berry-3-offline.patch {
yarnv1 = lib.getExe yarn;
})
];
# Known good version: 1.11.3
libzip =
(libzip.override {
# Known good version: 1.3.1
zlib = zlib;
}).overrideAttrs
(oA: {
patches = (oA.patches or [ ]) ++ [
(final.yarn-berry-fetcher.src + "/libzip-revert-to-old-versionneeded-behavior.patch")
];
});
};
"4" = final: {
berryCacheVersion = "10";
berryOfflinePatches = [
(replaceVars ./berry-4-offline.patch {
yarnv1 = lib.getExe yarn;
})
];
# Known good version: 1.11.3
libzip =
(libzip.override {
# Known good version: 2.2.4
zlib = zlib-ng.override {
withZlibCompat = true;
};
}).overrideAttrs
(oA: {
patches = (oA.patches or [ ]) ++ [
(final.yarn-berry-fetcher.src + "/libzip-revert-to-old-versionneeded-behavior.patch")
];
});
};
};
in
lib.makeScope newScope (
final:
let
berryVersion = lib.versions.major yarn-berry.version;
err = throw ''
Berry version ${toString berryVersion} not supported by yarn-berry-fetcher.
Supported versions: ${lib.concatStringsSep ", " (lib.attrNames variantOverlays)}
'';
variantOverlay = (variantOverlays.${berryVersion} or err) final;
in
(
{
inherit yarn-berry berryVersion;
yarn-berry-offline = final.yarn-berry.overrideAttrs (old: {
pname = old.pname + "-offline";
patches = (old.patches or [ ]) ++ final.berryOfflinePatches;
});
yarn-berry-fetcher = final.callPackage ./yarn-berry-fetcher.nix { };
fetchYarnBerryDeps = final.callPackage ./fetch-yarn-berry-deps.nix { };
yarnBerryConfigHook = final.callPackage ./yarn-berry-config-hook.nix { };
}
// variantOverlay
)
)

View File

@@ -0,0 +1,78 @@
{
lib,
stdenv,
yarn-berry-fetcher,
nix-prefetch-git,
cacert,
berryVersion,
}:
{
src ? null,
hash ? "",
sha256 ? "",
...
}@args:
let
hash_ =
if hash != "" then
{
outputHashAlgo = null;
outputHash = hash;
}
else if sha256 != "" then
{
outputHashAlgo = "sha256";
outputHash = sha256;
}
else
{
outputHashAlgo = "sha256";
outputHash = lib.fakeSha256;
};
in
stdenv.mkDerivation (
{
# The name is fixed as to not produce multiple store paths with the same content
name = "offline";
dontUnpack = src == null;
dontInstall = true;
nativeBuildInputs = [
yarn-berry-fetcher
nix-prefetch-git
cacert
];
buildPhase = ''
runHook preBuild
yarnLock=''${yarnLock:=$PWD/yarn.lock}
yarn-berry-fetcher fetch $yarnLock $missingHashes
runHook postBuild
'';
outputHashMode = "recursive";
dontFixup = true; # fixup phase does the patching of the shebangs, and FODs must never contain nix store paths.
passthru = {
inherit berryVersion;
};
}
// hash_
// (removeAttrs args (
[
"name"
"pname"
"version"
"hash"
"sha256"
]
++ (lib.optional (src == null) "src")
))
)

View File

@@ -0,0 +1,24 @@
{
makeSetupHook,
yarn-berry-offline,
srcOnly,
nodejs,
diffutils,
}:
makeSetupHook {
name = "yarn-berry-config-hook";
substitutions = {
# Specify `diff` by abspath to ensure that the user's build
# inputs do not cause us to find the wrong binaries.
diff = "${diffutils}/bin/diff";
yarn_offline = "${yarn-berry-offline}/bin/yarn";
nodeSrc = srcOnly nodejs;
nodeGyp = "${nodejs}/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js";
};
meta = {
description = "Install nodejs dependencies from an offline yarn cache produced by fetchYarnDeps";
};
} ./yarn-berry-config-hook.sh

View File

@@ -0,0 +1,92 @@
yarnBerryConfigHook() {
echo "Executing yarnBerryConfigHook"
# Use a constant HOME directory
export HOME=$(mktemp -d)
if [[ -n "$yarnOfflineCache" ]]; then
offlineCache="$yarnOfflineCache"
fi
if [[ -z "$offlineCache" ]]; then
echo yarnBerryConfigHook: No yarnOfflineCache or offlineCache were defined\! >&2
exit 2
fi
local -r cacheLockfile="$offlineCache/yarn.lock"
local -r srcLockfile="$PWD/yarn.lock"
echo "Validating consistency between $srcLockfile and $cacheLockfile"
if ! @diff@ "$srcLockfile" "$cacheLockfile"; then
# If the diff failed, first double-check that the file exists, so we can
# give a friendlier error msg.
if ! [ -e "$srcLockfile" ]; then
echo
echo "ERROR: Missing yarn.lock from src. Expected to find it at: $srcLockfile"
echo "Hint: You can copy a vendored yarn.lock file via postPatch."
echo
exit 1
fi
if ! [ -e "$cacheLockfile" ]; then
echo
echo "ERROR: Missing lockfile from cache. Expected to find it at: $cacheLockfile"
echo
exit 1
fi
echo
echo "ERROR: fetchYarnDeps hash is out of date"
echo
echo "The yarn.lock in src is not the same as the in $offlineCache."
echo
echo "To fix the issue:"
echo '1. Use `lib.fakeHash` as the fetchYarnBerryDeps hash value'
echo "2. Build the derivation and wait for it to fail with a hash mismatch"
echo "3. Copy the 'got: sha256-' value back into the fetchYarnBerryDeps hash field"
echo
exit 1
fi
if [[ -n "$missingHashes" ]] || [[ -f "$offlineCache/missing-hashes.json" ]]; then
echo "Validating consistency of missing-hashes.json"
if [[ -z "$missingHashes" ]]; then
echo "You must specify missingHashes in your derivation"
exit 1
fi
if ! @diff@ "$missingHashes" "$offlineCache/missing-hashes.json"; then
exit 1
fi
fi
YARN_IGNORE_PATH=1 @yarn_offline@ config set enableTelemetry false
YARN_IGNORE_PATH=1 @yarn_offline@ config set enableGlobalCache false
# The cache needs to be writable in case yarn needs to re-pack any patch: or git dependencies
rm -rf ./.yarn/cache
mkdir -p ./.yarn
cp -r --reflink=auto $offlineCache/cache ./.yarn/cache
chmod u+w -R ./.yarn/cache
[ -d $offlineCache/checkouts ] && cp -r --reflink=auto $offlineCache/checkouts ./.yarn/checkouts
[ -d $offlineCache/checkouts ] && chmod u+w -R ./.yarn/checkouts
export npm_config_nodedir="@nodeSrc@"
export npm_config_node_gyp="@nodeGyp@"
YARN_IGNORE_PATH=1 @yarn_offline@ install --mode=skip-build --inline-builds
if [[ -z "${dontYarnBerryPatchShebangs-}" ]]; then
echo "Running patchShebangs in between the Link and the Build step..."
patchShebangs node_modules
fi
if ! [[ "$YARN_ENABLE_SCRIPTS" == "0" || "$YARN_ENABLE_SCRIPTS" == "false" ]]; then
YARN_IGNORE_PATH=1 @yarn_offline@ install --inline-builds
fi
echo "finished yarnBerryConfigHook"
}
if [[ -z "${dontYarnBerryInstallDeps-}" ]]; then
postConfigureHooks+=(yarnBerryConfigHook)
fi

View File

@@ -0,0 +1,49 @@
{
lib,
rustPlatform,
fetchFromGitLab,
libzip,
openssl,
pkg-config,
berryVersion,
berryCacheVersion,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "yarn-berry-${toString berryVersion}-fetcher";
version = "1.2.3";
src = fetchFromGitLab {
domain = "cyberchaos.dev";
owner = "yuka";
repo = "yarn-berry-fetcher";
tag = finalAttrs.version;
hash = "sha256-Qfhx1lwd050GabP2Xj0kRi4nIlOHUE4xbZO0kO0IJ8A=";
};
cargoHash = "sha256-tOu1x8kmVCXKvthV0xyzisTb7BwOtfWTyu/cv4HRbpc=";
env.YARN_ZIP_SUPPORTED_CACHE_VERSION = berryCacheVersion;
env.LIBZIP_SYS_USE_PKG_CONFIG = 1;
nativeBuildInputs = [
rustPlatform.bindgenHook
pkg-config
];
buildInputs = [
libzip
openssl
];
meta = {
homepage = "https://cyberchaos.dev/yuka/yarn-berry-fetcher";
license = lib.licenses.mit;
mainProgram = "yarn-berry-fetcher";
maintainers = with lib.maintainers; [
yuka
flokli
];
};
})

View File

@@ -0,0 +1,79 @@
{
fetchFromGitHub,
lib,
nodejs,
stdenv,
testers,
yarn,
callPackage,
berryVersion ? 4,
}:
let
version_4 = "4.10.3";
version_3 = "3.8.7";
hash_4 = "sha256-sPA9XxWuYvxw/eYAsePuHOaaY2jIBRAv5YfDgVUF6YY=";
hash_3 = "sha256-vRrk+Fs/7dZha3h7yI5NpMfd1xezesnigpFgTRCACZo=";
in
stdenv.mkDerivation (finalAttrs: {
pname = "yarn-berry";
version = if berryVersion == 4 then version_4 else version_3;
src = fetchFromGitHub {
owner = "yarnpkg";
repo = "berry";
tag = "@yarnpkg/cli/${finalAttrs.version}";
hash = if berryVersion == 4 then hash_4 else hash_3;
};
buildInputs = [
nodejs
];
nativeBuildInputs = [
nodejs
yarn
];
strictDeps = true;
dontConfigure = true;
buildPhase = ''
runHook preBuild
yarn workspace @yarnpkg/cli build:cli
runHook postBuild
'';
installPhase = ''
runHook preInstall
install -Dm 755 ./packages/yarnpkg-cli/bundles/yarn.js "$out/bin/yarn"
runHook postInstall
'';
passthru = {
updateScript = ./update.sh;
tests = {
version = testers.testVersion {
package = finalAttrs.finalPackage;
};
};
}
// (callPackage ./fetcher { yarn-berry = finalAttrs; });
meta = with lib; {
homepage = "https://yarnpkg.com/";
changelog = "https://github.com/yarnpkg/berry/releases/tag/${finalAttrs.src.tag}";
description = "Fast, reliable, and secure dependency management";
license = licenses.bsd2;
maintainers = with maintainers; [
ryota-ka
pyrox0
DimitarNestorov
];
platforms = platforms.unix;
mainProgram = "yarn";
};
})

View File

@@ -0,0 +1,23 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p common-updater-scripts curl jq
set -eou pipefail
payload=$(jq -cn --rawfile query /dev/stdin '{"query": $query}' <<EOF | curl -s -H "Authorization: bearer $GITHUB_TOKEN" -d '@-' https://api.github.com/graphql
{
repository(owner: "yarnpkg", name: "berry") {
tag: refs(refPrefix: "refs/tags/@yarnpkg/cli/", first: 50, orderBy: {field: TAG_COMMIT_DATE, direction: DESC}) {
nodes {
name
}
}
}
}
EOF
)
version=$(jq -r "[.data.repository.tag.nodes[].name | select(contains(\"-\")|not)] | max_by(split(\".\") | map(tonumber))" <<< "$payload")
version3=$(jq -r "[.data.repository.tag.nodes[].name | select(contains(\"-\")|not)] | map(select(. < \"4.0.0\")) | sort | last" <<< "$payload")
update-source-version yarn-berry_4 "$version" --version-key="version_4"
update-source-version yarn-berry_3 "$version3" --version-key="version_3"

View File

@@ -0,0 +1,592 @@
{
"name": "@vht/yarn-lock-converter",
"version": "0.0.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@vht/yarn-lock-converter",
"version": "0.0.2",
"license": "MIT",
"dependencies": {
"@yarnpkg/lockfile": "^1.1.0",
"cacache": "^15.3.0",
"js-yaml": "^4.1.0",
"yargs": "^17.3.1"
},
"bin": {
"yarn-lock-converter": "index.js"
},
"engines": {
"node": ">=12.0.0"
}
},
"node_modules/@gar/promisify": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
"integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw=="
},
"node_modules/@npmcli/fs": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz",
"integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==",
"dependencies": {
"@gar/promisify": "^1.0.1",
"semver": "^7.3.5"
}
},
"node_modules/@npmcli/move-file": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz",
"integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==",
"deprecated": "This functionality has been moved to @npmcli/fs",
"dependencies": {
"mkdirp": "^1.0.4",
"rimraf": "^3.0.2"
},
"engines": {
"node": ">=10"
}
},
"node_modules/@yarnpkg/lockfile": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz",
"integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ=="
},
"node_modules/aggregate-error": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
"integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
"dependencies": {
"clean-stack": "^2.0.0",
"indent-string": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"engines": {
"node": ">=8"
}
},
"node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
"color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
},
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"node_modules/cacache": {
"version": "15.3.0",
"resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz",
"integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==",
"dependencies": {
"@npmcli/fs": "^1.0.0",
"@npmcli/move-file": "^1.0.1",
"chownr": "^2.0.0",
"fs-minipass": "^2.0.0",
"glob": "^7.1.4",
"infer-owner": "^1.0.4",
"lru-cache": "^6.0.0",
"minipass": "^3.1.1",
"minipass-collect": "^1.0.2",
"minipass-flush": "^1.0.5",
"minipass-pipeline": "^1.2.2",
"mkdirp": "^1.0.3",
"p-map": "^4.0.0",
"promise-inflight": "^1.0.1",
"rimraf": "^3.0.2",
"ssri": "^8.0.1",
"tar": "^6.0.2",
"unique-filename": "^1.1.1"
},
"engines": {
"node": ">= 10"
}
},
"node_modules/chownr": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
"integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
"engines": {
"node": ">=10"
}
},
"node_modules/clean-stack": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
"integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
"engines": {
"node": ">=6"
}
},
"node_modules/cliui": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
"integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.1",
"wrap-ansi": "^7.0.0"
},
"engines": {
"node": ">=12"
}
},
"node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
"color-name": "~1.1.4"
},
"engines": {
"node": ">=7.0.0"
}
},
"node_modules/color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
},
"node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
},
"node_modules/escalade": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
"integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
"engines": {
"node": ">=6"
}
},
"node_modules/fs-minipass": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
"integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
"dependencies": {
"minipass": "^3.0.0"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
},
"node_modules/get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"engines": {
"node": "6.* || 8.* || >= 10.*"
}
},
"node_modules/glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.1.1",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
},
"engines": {
"node": "*"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/imurmurhash": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
"integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
"engines": {
"node": ">=0.8.19"
}
},
"node_modules/indent-string": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
"integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
"engines": {
"node": ">=8"
}
},
"node_modules/infer-owner": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
"integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A=="
},
"node_modules/inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"node_modules/inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"node_modules/is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"engines": {
"node": ">=8"
}
},
"node_modules/js-yaml": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dependencies": {
"argparse": "^2.0.1"
},
"bin": {
"js-yaml": "bin/js-yaml.js"
}
},
"node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dependencies": {
"yallist": "^4.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dependencies": {
"brace-expansion": "^1.1.7"
},
"engines": {
"node": "*"
}
},
"node_modules/minipass": {
"version": "3.3.6",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
"dependencies": {
"yallist": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/minipass-collect": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
"integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
"dependencies": {
"minipass": "^3.0.0"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/minipass-flush": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
"integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
"dependencies": {
"minipass": "^3.0.0"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/minipass-pipeline": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
"integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
"dependencies": {
"minipass": "^3.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/minizlib": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
"integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
"dependencies": {
"minipass": "^3.0.0",
"yallist": "^4.0.0"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/mkdirp": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
"bin": {
"mkdirp": "bin/cmd.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"dependencies": {
"wrappy": "1"
}
},
"node_modules/p-map": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
"integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
"dependencies": {
"aggregate-error": "^3.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/promise-inflight": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
"integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g=="
},
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
"dependencies": {
"glob": "^7.1.3"
},
"bin": {
"rimraf": "bin.js"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/semver": {
"version": "7.5.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz",
"integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
"dependencies": {
"lru-cache": "^6.0.0"
},
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/ssri": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
"integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
"dependencies": {
"minipass": "^3.1.1"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dependencies": {
"ansi-regex": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/tar": {
"version": "6.1.14",
"resolved": "https://registry.npmjs.org/tar/-/tar-6.1.14.tgz",
"integrity": "sha512-piERznXu0U7/pW7cdSn7hjqySIVTYT6F76icmFk7ptU7dDYlXTm5r9A6K04R2vU3olYgoKeo1Cg3eeu5nhftAw==",
"dependencies": {
"chownr": "^2.0.0",
"fs-minipass": "^2.0.0",
"minipass": "^5.0.0",
"minizlib": "^2.1.1",
"mkdirp": "^1.0.3",
"yallist": "^4.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/tar/node_modules/minipass": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
"integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
"engines": {
"node": ">=8"
}
},
"node_modules/unique-filename": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
"integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
"dependencies": {
"unique-slug": "^2.0.0"
}
},
"node_modules/unique-slug": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
"integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
"dependencies": {
"imurmurhash": "^0.1.4"
}
},
"node_modules/wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
},
"node_modules/y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"engines": {
"node": ">=10"
}
},
"node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/yargs": {
"version": "17.7.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
"integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
"dependencies": {
"cliui": "^8.0.1",
"escalade": "^3.1.1",
"get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
"string-width": "^4.2.3",
"y18n": "^5.0.5",
"yargs-parser": "^21.1.1"
},
"engines": {
"node": ">=12"
}
},
"node_modules/yargs-parser": {
"version": "21.1.1",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
"engines": {
"node": ">=12"
}
}
}
}

View File

@@ -0,0 +1,51 @@
{
lib,
buildNpmPackage,
fetchurl,
nodejs,
testers,
yarn-lock-converter,
}:
let
source = lib.importJSON ./source.json;
in
buildNpmPackage rec {
pname = "yarn-lock-converter";
inherit (source) version;
src = fetchurl {
url = "https://registry.npmjs.org/@vht/yarn-lock-converter/-/yarn-lock-converter-${version}.tgz";
hash = "sha256-CP1wI33fgtp4GSjasktbfWuUjGzCuK3XR+p64aPAryQ=";
};
npmDepsHash = source.deps;
dontBuild = true;
nativeBuildInputs = [ nodejs ];
postPatch = ''
# Use generated package-lock.json as upstream does not provide one
ln -s ${./package-lock.json} package-lock.json
'';
postInstall = ''
mv $out/bin/@vht/yarn-lock-converter $out/bin/yarn-lock-converter
rmdir $out/bin/@vht
'';
passthru = {
tests.version = testers.testVersion {
package = yarn-lock-converter;
};
updateScript = ./update.sh;
};
meta = with lib; {
description = "Converts modern Yarn v2+ yarn.lock files into a Yarn v1 format";
homepage = "https://github.com/VHT/yarn-lock-converter";
license = licenses.mit;
maintainers = with maintainers; [ gador ];
mainProgram = "yarn-lock-converter";
};
}

View File

@@ -0,0 +1,6 @@
{
"version": "0.0.2",
"integrity": "sha512-58Oy9qP081Jr+h9EOYB0ItCQ7IfU0RBbkHN4AQR3h6aPDjIOPYTiEyczmTfsLQcAyCFl0MV1kU8QL1xBALKkYw==",
"filename": "vht-yarn-lock-converter-0.0.2.tgz",
"deps": "sha256-GCTjZ3x+ZgE762yUWQZzEOOwfAr7W0z/cySlehRILf4="
}

View File

@@ -0,0 +1,25 @@
#!/usr/bin/env nix-shell
#! nix-shell -i bash -p nodejs libarchive prefetch-npm-deps moreutils
# shellcheck shell=bash
set -exuo pipefail
cd -- "$(dirname -- "${BASH_SOURCE[0]}")"
TMPDIR="$(mktemp -d)"
trap 'rm -r -- "$TMPDIR"' EXIT
pushd -- "$TMPDIR"
npm pack "@vht/yarn-lock-converter" --json | jq '.[0] | { version, integrity, filename }' > source.json
bsdtar -x -f "$(jq -r .filename source.json)"
pushd package
npm install --package-lock-only
popd
DEPS="$(prefetch-npm-deps package/package-lock.json)"
jq ".deps = \"$DEPS\"" source.json | sponge source.json
popd
cp -t . -- "$TMPDIR/source.json" "$TMPDIR/package/package-lock.json"

View File

@@ -0,0 +1,64 @@
{
lib,
fetchFromGitHub,
fetchzip,
nodejs,
stdenvNoCC,
testers,
gitUpdater,
withNode ? true,
}:
let
completion = fetchFromGitHub {
owner = "dsifford";
repo = "yarn-completion";
rev = "v0.17.0";
hash = "sha256-z7KPXeYPPRuaEPxgY6YqsLt9n8cSsW3n2FhOzVde1HU=";
};
in
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "yarn";
version = "1.22.22";
src = fetchzip {
url = "https://github.com/yarnpkg/yarn/releases/download/v${finalAttrs.version}/yarn-v${finalAttrs.version}.tar.gz";
sha256 = "sha256-kFa+kmnBerTB7fY/IvfAFy/4LWvrl9lrRHMOUdOZ+Wg=";
};
buildInputs = lib.optionals withNode [ nodejs ];
installPhase = ''
mkdir -p $out/{bin,libexec/yarn/,share/bash-completion/completions/}
cp -R . $out/libexec/yarn
ln -s $out/libexec/yarn/bin/yarn.js $out/bin/yarn
ln -s $out/libexec/yarn/bin/yarn.js $out/bin/yarnpkg
ln -s ${completion}/yarn-completion.bash $out/share/bash-completion/completions/yarn.bash
'';
passthru = {
tests.version = lib.optionalAttrs withNode (
testers.testVersion {
package = finalAttrs.finalPackage;
}
);
updateScript = gitUpdater {
url = "https://github.com/yarnpkg/yarn.git";
rev-prefix = "v";
};
};
meta = with lib; {
description = "Fast, reliable, and secure dependency management for javascript";
homepage = "https://classic.yarnpkg.com/";
changelog = "https://github.com/yarnpkg/yarn/blob/v${finalAttrs.version}/CHANGELOG.md";
license = licenses.bsd2;
maintainers = with maintainers; [
offline
screendriver
];
platforms = platforms.all;
mainProgram = "yarn";
};
})

View File

@@ -0,0 +1,38 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
ace,
}:
stdenv.mkDerivation rec {
pname = "yarp";
version = "2.3.70.2";
src = fetchFromGitHub {
owner = "robotology";
repo = "yarp";
rev = "v${version}";
sha256 = "0mphh899niy30xbjjwi9xpsliq8mladfldbbbjfngdrqfhiray1a";
};
nativeBuildInputs = [ cmake ];
buildInputs = [ ace ];
cmakeFlags = [
"-DYARP_COMPILE_UNMAINTAINED:BOOL=ON"
"-DCREATE_YARPC:BOOL=ON"
"-DCREATE_YARPCXX:BOOL=ON"
"-DCMAKE_INSTALL_LIBDIR=${placeholder "out"}/lib"
];
postInstall = "mv ./$out/lib/*.so $out/lib/";
meta = {
description = "Yet Another Robot Platform";
homepage = "http://yarp.it";
license = lib.licenses.lgpl21;
platforms = lib.platforms.linux;
maintainers = [ lib.maintainers.nico202 ];
};
}

View File

@@ -0,0 +1,56 @@
{
lib,
stdenv,
buildGoModule,
fetchFromGitHub,
versionCheckHook,
nix-update-script,
nixosTests,
}:
buildGoModule rec {
pname = "yarr";
version = "2.5";
src = fetchFromGitHub {
owner = "nkanaev";
repo = "yarr";
rev = "v${version}";
hash = "sha256-yII0KV4AKIS1Tfhvj588O631JDArnr0/30rNynTSwzk=";
};
vendorHash = null;
ldflags = [
"-s"
"-w"
"-X main.Version=${version}"
"-X main.GitHash=none"
];
tags = [
"sqlite_foreign_keys"
"sqlite_json"
];
doInstallCheck = true;
nativeInstallCheckInputs = [ versionCheckHook ];
versionCheckProgramArg = "--version";
passthru = {
updateScript = nix-update-script { };
tests = lib.optionalAttrs stdenv.hostPlatform.isLinux nixosTests.yarr;
};
meta = {
description = "Yet another rss reader";
mainProgram = "yarr";
homepage = "https://github.com/nkanaev/yarr";
changelog = "https://github.com/nkanaev/yarr/blob/v${version}/doc/changelog.txt";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
sikmir
christoph-heiss
];
};
}

View File

@@ -0,0 +1,56 @@
{
lib,
stdenv,
fetchFromGitHub,
meson,
sassc,
pkg-config,
glib,
ninja,
python3,
gtk3,
gnome,
gnome-themes-extra,
}:
stdenv.mkDerivation rec {
pname = "yaru-remix";
version = "40";
src = fetchFromGitHub {
owner = "Muqtxdir";
repo = "yaru-remix";
rev = "v${version}";
sha256 = "0xilhw5gbxsyy80ixxgj0nw6w782lz9dsinhi24026li1xny804c";
};
nativeBuildInputs = [
meson
sassc
pkg-config
glib
ninja
python3
];
buildInputs = [
gtk3
gnome-themes-extra
];
dontDropIconThemeCache = true;
postPatch = "patchShebangs .";
meta = with lib; {
description = "Fork of the Yaru GTK theme";
homepage = "https://github.com/Muqtxdir/yaru-remix";
license = with licenses; [
cc-by-sa-40
gpl3Plus
lgpl21Only
lgpl3Only
];
platforms = platforms.linux;
maintainers = with maintainers; [ hoppla20 ];
};
}

View File

@@ -0,0 +1,63 @@
{
lib,
stdenv,
fetchFromGitHub,
meson,
sassc,
pkg-config,
glib,
ninja,
python3,
gtk3,
gnome-themes-extra,
gtk-engine-murrine,
humanity-icon-theme,
hicolor-icon-theme,
}:
stdenv.mkDerivation rec {
pname = "yaru";
version = "25.10.2";
src = fetchFromGitHub {
owner = "ubuntu";
repo = "yaru";
rev = version;
hash = "sha256-3NTqRmAdO3+9e9B7Fe0B9PPeMUBAmin+51cfqAijV0w=";
};
nativeBuildInputs = [
meson
sassc
pkg-config
glib
ninja
python3
];
buildInputs = [
gtk3
gnome-themes-extra
];
propagatedBuildInputs = [
humanity-icon-theme
hicolor-icon-theme
];
propagatedUserEnvPkgs = [ gtk-engine-murrine ];
dontDropIconThemeCache = true;
postPatch = "patchShebangs .";
meta = with lib; {
description = "Ubuntu community theme 'yaru' - default Ubuntu theme since 18.10";
homepage = "https://github.com/ubuntu/yaru";
license = with licenses; [
cc-by-sa-40
gpl3Plus
lgpl21Only
lgpl3Only
];
platforms = platforms.linux;
maintainers = with maintainers; [ moni ];
};
}

View File

@@ -0,0 +1,32 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
}:
stdenvNoCC.mkDerivation rec {
pname = "yas";
version = "7.1.0";
src = fetchFromGitHub {
owner = "niXman";
repo = "yas";
rev = version;
hash = "sha256-2+CpftWOEnntYBCc1IoR5eySbmhrMVunpUTZRdQ5I+A=";
};
installPhase = ''
runHook preInstall
mkdir -p $out/include/yas
cp -r include/yas/* $out/include/yas
runHook postInstall
'';
meta = with lib; {
homepage = "https://github.com/niXman/yas";
description = "Yet Another Serialization";
license = licenses.boost;
maintainers = [ ];
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,44 @@
{
lib,
stdenvNoCC,
fetchurl,
unzrip,
}:
stdenvNoCC.mkDerivation {
pname = "yasashisa-gothic";
version = "0-unstable-2014-03-13";
src = fetchurl {
url = "http://flop.sakura.ne.jp/font/fontna-op/07Yasashisa.zip";
hash = "sha256-JmsRvUak9FBjDw8wNA2R3lEt52/UpElleziQqa5Pm4w=";
};
unpackPhase = ''
runHook preUnpack
${lib.getExe unzrip} -O SHIFT_JIS "$src"
runHook postUnpack
'';
installPhase = ''
runHook preInstall
install -Dm444 "07Yasashisa/07.ttf" -t "$out/share/fonts/truetype"
install -Dm444 "07Yasashisa/-/OpenType/YasashisaGothic.otf" -t "$out/share/fonts/opentype"
runHook postInstall
'';
meta = with lib; {
description = "Free gothic style font by Fontna";
homepage = "http://www.fontna.com/blog/379/";
license = with licenses; [
ipa
mplus
];
platforms = platforms.all;
maintainers = with maintainers; [ h7x4 ];
};
}

View File

@@ -0,0 +1,31 @@
{
lib,
stdenv,
go-md2man,
fetchFromGitHub,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "yascreen";
version = "2.06";
src = fetchFromGitHub {
owner = "bbonev";
repo = "yascreen";
tag = "v${finalAttrs.version}";
hash = "sha256-CIeWghtOnuQmEMwIpC1Xo1zLsuV4c0V7YAXTqUAzX1g=";
};
nativeBuildInputs = [ go-md2man ];
makeFlags = [ "PREFIX=${placeholder "out"}" ];
meta = {
homepage = "https://github.com/bbonev/yascreen";
changelog = "https://github.com/bbonev/yascreen/releases/tag/${finalAttrs.src.tag}";
description = "Curses replacement for daemons and embedded apps";
license = lib.licenses.lgpl3Plus;
maintainers = [ lib.maintainers.arezvov ];
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,38 @@
{
stdenv,
lib,
fetchFromGitHub,
gettext,
ncurses,
asciidoc,
}:
stdenv.mkDerivation rec {
pname = "yash";
version = "2.60";
src = fetchFromGitHub {
owner = "magicant";
repo = "yash";
rev = version;
hash = "sha256-iHM1f+zdYsfuqmyel+vlFi+TQukmN91SyZCHJLXPnTs=";
};
strictDeps = true;
nativeBuildInputs = [
asciidoc
gettext
];
buildInputs = [ ncurses ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ gettext ];
meta = with lib; {
homepage = "https://yash.osdn.jp/index.html.en";
description = "Yet another POSIX-compliant shell";
mainProgram = "yash";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ qbit ];
platforms = platforms.all;
};
passthru.shellPath = "/bin/yash";
}

View File

@@ -0,0 +1,17 @@
diff --git a/libyasm/bitvect.h b/libyasm/bitvect.h
index 3aee3a53..a13470ad 100644
--- a/libyasm/bitvect.h
+++ b/libyasm/bitvect.h
@@ -83,7 +83,11 @@ typedef Z_longword *Z_longwordptr;
#ifdef MACOS_TRADITIONAL
#define boolean Boolean
#else
- typedef enum boolean { false = FALSE, true = TRUE } boolean;
+ #if __STDC_VERSION__ < 202311L
+ typedef enum boolean { false = FALSE, true = TRUE } boolean;
+ #else
+ typedef bool boolean;
+ #endif
#endif
#endif

View File

@@ -0,0 +1,30 @@
{
lib,
stdenv,
fetchurl,
buildPackages,
}:
stdenv.mkDerivation rec {
pname = "yasm";
version = "1.3.0";
src = fetchurl {
url = "https://www.tortall.net/projects/yasm/releases/yasm-${version}.tar.gz";
sha256 = "0gv0slmm0qpq91za3v2v9glff3il594x5xsrbgab7xcmnh0ndkix";
};
patches = [
# https://github.com/yasm/yasm/pull/287
./gcc-15.patch
];
depsBuildBuild = [ buildPackages.stdenv.cc ];
meta = with lib; {
homepage = "http://www.tortall.net/projects/yasm/";
description = "Complete rewrite of the NASM assembler";
license = licenses.bsd2;
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,25 @@
Disable openpty() and forkpty() prototypes when needed.
--- a/yasr/yasr.h
+++ b/yasr/yasr.h
@@ -308,8 +308,10 @@ extern void opt_set(int num, void *val);
extern void opt_queue_empty(int ll);
extern void opt_write(FILE * fp);
+#ifndef HAVE_OPENPTY
/* openpty.c prototypes */
extern int openpty(int *, int *, char *, struct termios *, struct winsize *);
+#endif
/* cfmakeraw.c prototypes */
extern void cfmakeraw(struct termios *);
@@ -317,8 +319,10 @@ extern void cfmakeraw(struct termios *);
/* login_tty.c prototypes */
extern int login_tty(int);
+#ifndef HAVE_FORKPTY
/* forkpty.c prototypes */
extern int forkpty(int *, char *, struct termios *, struct winsize *);
+#endif
/* tbc - Would it be more efficient to ensure that "blank" grids always held
ascii 0x20 rather than ascii 0x00? */

View File

@@ -0,0 +1,11 @@
--- a/yasr/config.c.orig 2011-11-28 03:56:58.764995828 +0100
+++ a/yasr/config.c 2011-11-28 03:57:00.048967703 +0100
@@ -60,7 +60,7 @@
int args, arg[16], *argp;
int i, key, ln = 0, mode = 0;
char *home, *ptr, *s;
- char confname[MAXPATHLEN];
+ char confname[strlen(PACKAGE_DATA_DIR) + 10 + 1];
if ((home = getenv("HOME")) != NULL)
{

View File

@@ -0,0 +1,18 @@
diff --git a/yasr.conf b/yasr.conf
index 1e07fc6..72f5922 100644
--- a/yasr.conf
+++ b/yasr.conf
@@ -59,11 +59,11 @@ synthesizer=emacspeak server
#synthesizer=speech dispatcher
#synthesizer port=S0
#synthesizer port=l0
-synthesizer port=|/usr/local/bin/eflite
+synthesizer port=|eflite
# Below line appropriate for Speech Dispatcher in its default configuration
#synthesizer port=127.0.0.1:6560
key echo=off
-shell=/bin/bash
+shell=/bin/sh
special=off
up and down arrows=speak line
DisableKey=6925

View File

@@ -0,0 +1,14 @@
Index: yasr-0.6.9/yasr/tts.c
===================================================================
--- yasr-0.6.9.orig/yasr/tts.c 2008-02-03 00:10:07.000000000 +1100
+++ yasr-0.6.9/yasr/tts.c 2012-02-05 10:59:06.059007839 +1100
@@ -281,6 +281,9 @@
char *p = synth[tts.synth].unspeakable;
if (ch < 32) return 1;
+ /* characters with high bit set cause DECTALK to crash */
+ if (tts.synth == TTS_DECTALK && ch & 0x80)
+ return 1;
while (*p)
{
if (*p++ == ch) return 1;

View File

@@ -0,0 +1,33 @@
{
lib,
stdenv,
fetchurl,
}:
stdenv.mkDerivation rec {
pname = "yasr";
version = "0.6.9";
src = fetchurl {
url = "https://sourceforge.net/projects/yasr/files/yasr/${version}/${pname}-${version}.tar.gz";
sha256 = "1prv9r9y6jb5ga5578ldiw507fa414m60xhlvjl29278p3x7rwa1";
};
patches = [
./10_fix_openpty_forkpty_declarations.patch
./20_maxpathlen.patch
./30_conf.patch
./40_dectalk_extended_chars.patch
]; # taken from the debian yasr package
meta = {
homepage = "https://yasr.sourceforge.net";
description = "General-purpose console screen reader";
longDescription = "Yasr is a general-purpose console screen reader for GNU/Linux and other Unix-like operating systems.";
platforms = lib.platforms.linux;
license = lib.licenses.gpl2;
maintainers = [ ];
mainProgram = "yasr";
};
}

View File

@@ -0,0 +1,28 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "yatas";
version = "1.5.1";
src = fetchFromGitHub {
owner = "padok-team";
repo = "YATAS";
tag = "v${version}";
hash = "sha256-gw4aZ7SLUz5WLUb1z4zDtI6Ca0tEWhE5wobp5NRvjkg=";
};
vendorHash = "sha256-zp5EVJe5Q6o6C0CZ8u+oEFEOy0NU5SgVN+cSc6A/jZ4=";
meta = {
description = "Tool to audit AWS infrastructure for misconfiguration or potential security issues";
homepage = "https://github.com/padok-team/YATAS";
changelog = "https://github.com/padok-team/YATAS/releases/tag/v${version}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "yatas";
};
}

View File

@@ -0,0 +1,51 @@
{
stdenv,
fetchurl,
lib,
openssl,
pkg-config,
}:
stdenv.mkDerivation rec {
pname = "yate";
version = "6.4.0-1";
src = fetchurl {
url = "http://voip.null.ro/tarballs/yate${lib.versions.major version}/${pname}-${version}.tar.gz";
hash = "sha256-jCPca/+/jUeNs6hZZLUBl3HI9sms9SIPNGVRanSKA7A=";
};
# TODO zaptel ? postgres ?
nativeBuildInputs = [ pkg-config ];
buildInputs = [ openssl ];
# /dev/null is used when linking which is a impure path for the wrapper
postPatch = ''
patchShebangs configure
substituteInPlace configure --replace ",/dev/null" ""
'';
enableParallelBuilding = false; # fails to build if true
# --unresolved-symbols=ignore-in-shared-libs makes ld no longer find --library=yate? Why?
preBuild = ''
export NIX_LDFLAGS="-L$TMP/yate $NIX_LDFLAGS"
find . -type f -iname Makefile | xargs sed -i \
-e 's@-Wl,--unresolved-symbols=ignore-in-shared-libs@@' \
-e 's@-Wl,--retain-symbols-file@@'
'';
meta = {
description = "Yet another telephony engine";
homepage = "https://yate.ro/";
# Yate's license is GPL with an exception for linking with
# OpenH323 and PWlib (licensed under MPL).
license = lib.licenses.gpl2Only;
maintainers = [ lib.maintainers.marcweber ];
platforms = [
"i686-linux"
"x86_64-linux"
];
};
}

View File

@@ -0,0 +1,32 @@
{
lib,
fetchFromGitHub,
buildGoModule,
}:
buildGoModule (finalAttrs: {
pname = "yatto";
version = "0.18.1";
src = fetchFromGitHub {
owner = "handlebargh";
repo = "yatto";
tag = "v${finalAttrs.version}";
hash = "sha256-GI/Q9lI6SqIOSYi5shMKlgegS8WdlWSFsPs7WLCB6Qg=";
};
vendorHash = "sha256-BqOuZUtyA7a8imzj3Oj1SUZ4k3kNjDYWiPlQRG9I0m8=";
ldflags = [
"-s"
"-w"
];
meta = {
description = "Terminal-based to-do application built with Bubble Tea";
homepage = "https://github.com/handlebargh/yatto";
changelog = "https://github.com/handlebargh/yatto/releases/tag/${finalAttrs.version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ gwg313 ];
mainProgram = "yatto";
};
})

View File

@@ -0,0 +1,59 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch2,
intltool,
pkg-config,
wrapGAppsHook3,
gtk3,
miniupnpc,
}:
stdenv.mkDerivation {
pname = "yaup";
version = "unstable-2019-10-16";
src = fetchFromGitHub {
owner = "Holarse-Linuxgaming";
repo = "yaup";
rev = "7ee3fdbd8c1ecf0a0e6469c47560e26082808250";
hash = "sha256-RWnNjpgXRYncz9ID8zirENffy1UsfHD1H6Mmd8DKN4k=";
};
patches = [
# Fix build with miniupnpc 2.2.8
# https://github.com/Holarse-Linuxgaming/yaup/pull/6
(fetchpatch2 {
url = "https://github.com/Holarse-Linuxgaming/yaup/commit/c92134e305932785a60bd72131388f507b4d1853.patch?full_index=1";
hash = "sha256-Exqkfp9VYIf9JpAc10cO8NuEAWvI5Houi7CLXV5zBDY=";
})
];
nativeBuildInputs = [
intltool
pkg-config
wrapGAppsHook3
];
buildInputs = [
gtk3
miniupnpc
];
meta = with lib; {
homepage = "https://github.com/Holarse-Linuxgaming/yaup";
description = "Yet Another UPnP Portmapper";
longDescription = ''
Portmapping made easy.
Portforward your incoming traffic to a specified local ip.
Mostly used for IPv4.
'';
license = licenses.gpl3Plus;
maintainers = with maintainers; [ fgaz ];
platforms = platforms.all;
# ld: unknown option: --export-dynamic
broken = stdenv.hostPlatform.isDarwin;
mainProgram = "yaup";
};
}

View File

@@ -0,0 +1,44 @@
{
lib,
stdenv,
fetchFromGitHub,
erlang,
pam,
perl,
autoreconfHook,
}:
stdenv.mkDerivation rec {
pname = "yaws";
version = "2.2.0";
src = fetchFromGitHub {
owner = "erlyaws";
repo = "yaws";
rev = "yaws-${version}";
hash = "sha256-acO8Vc8sZJl22HUml2kTxVswLEirqMbqHQdRIbkkcvs=";
};
configureFlags = [ "--with-extrainclude=${pam}/include/security" ];
nativeBuildInputs = [ autoreconfHook ];
buildInputs = [
erlang
pam
perl
];
postInstall = ''
sed -i "s#which #type -P #" $out/bin/yaws
'';
meta = with lib; {
description = "Webserver for dynamic content written in Erlang";
mainProgram = "yaws";
homepage = "https://github.com/erlyaws/yaws";
license = licenses.bsd2;
platforms = platforms.linux;
maintainers = [ ];
};
}

View File

@@ -0,0 +1,64 @@
{
lib,
stdenv,
fetchFromGitHub,
makeWrapper,
maim,
slop,
ffmpeg,
byzanz,
libnotify,
xdpyinfo,
}:
stdenv.mkDerivation rec {
pname = "yaxg";
version = "0-unstable-2018-05-03";
src = fetchFromGitHub {
owner = "DanielFGray";
repo = "yaxg";
rev = "9d6af75da2ec25dba4b8d784e431064033d67ad2";
sha256 = "01p6ghp1vfrlnrm78bgbl9ppqwsdxh761g0qa172dpvsqg91l1p6";
};
nativeBuildInputs = [ makeWrapper ];
buildInputs = [
maim
slop
ffmpeg
byzanz
libnotify
xdpyinfo
];
installPhase = ''
mkdir -p $out/bin/
mv yaxg $out/bin/
chmod +x $out/bin/yaxg
wrapProgram $out/bin/yaxg --prefix PATH : ${
lib.makeBinPath [
maim
slop
ffmpeg
byzanz
libnotify
xdpyinfo
]
}
'';
meta = with lib; {
inherit (src.meta) homepage;
description = "Yet Another X Grabber script";
longDescription = ''
Capture and record your screen with callbacks. Wraps maim, slop, ffmpeg,
and byzanz to enable still image, video, or gif recording of part or all
of your screen. Similar command-line interface to scrot but is overall
more flexible and less buggy.
'';
platforms = platforms.all;
license = licenses.gpl3Plus;
mainProgram = "yaxg";
};
}

View File

@@ -0,0 +1,72 @@
{
lib,
stdenv,
buildGoModule,
fetchFromGitHub,
pacman,
libarchive,
installShellFiles,
}:
buildGoModule (finalAttrs: {
pname = "yay";
version = "12.5.0";
src = fetchFromGitHub {
owner = "Jguer";
repo = "yay";
tag = "v${finalAttrs.version}";
hash = "sha256-qcNjEy8W+6hjTqzkYk8MqHN8owrSONZPB4sXSOstGSE=";
};
vendorHash = "sha256-8auZMcfaC0nI0vj1VRz8g/4ijFd57oALYaszGUb0K9A=";
nativeBuildInputs = [ installShellFiles ];
buildInputs = [
pacman
libarchive
];
env.CGO_ENABLED = 1;
checkFlags =
let
skippedTests = [
# need fhs
"TestAlpmExecutor"
"TestBuildRuntime"
"TestPacmanConf"
# need su/sudo/doas
"TestNewConfig"
"TestNewConfigAURDEST"
"TestNewConfigAURDESTTildeExpansion"
"TestConfiguration_setPrivilegeElevator"
"TestConfiguration_setPrivilegeElevator_su"
"TestConfiguration_setPrivilegeElevator_no_path"
"TestConfiguration_setPrivilegeElevator_doas"
"TestConfiguration_setPrivilegeElevator_pacman_auth_doas"
"TestConfiguration_setPrivilegeElevator_custom_script"
"TestConfiguration_setPrivilegeElevator_pacman_auth_sudo"
];
in
[ "-skip=^${builtins.concatStringsSep "$|^" skippedTests}$" ];
postInstall = ''
installManPage doc/yay.8
''
+ lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
installShellCompletion --name yay.bash --bash completions/bash
installShellCompletion --name yay.fish --fish completions/fish
installShellCompletion --name _yay --zsh completions/zsh
'';
meta = {
description = "AUR Helper written in Go";
homepage = "https://github.com/Jguer/yay";
mainProgram = "yay";
platforms = lib.platforms.linux;
license = with lib.licenses; [ gpl3Plus ];
maintainers = [ ];
};
})

View File

@@ -0,0 +1,43 @@
{
lib,
rustPlatform,
fetchFromGitHub,
pkg-config,
makeWrapper,
openssl,
ffmpeg,
}:
rustPlatform.buildRustPackage rec {
pname = "yaydl";
version = "0.17.3";
src = fetchFromGitHub {
owner = "dertuxmalwieder";
repo = "yaydl";
rev = "release-${version}";
sha256 = "sha256-bDsI61iWKgXDJ6wnK8a+1HCMlgRM0ol0bWb6a8IiY08=";
};
cargoHash = "sha256-WLWz+xzkxIqlYkNgefyc7c13YjPWpYz9VUlUfWwDN+g=";
nativeBuildInputs = [
pkg-config
makeWrapper
];
buildInputs = [ openssl ];
postInstall = ''
wrapProgram $out/bin/yaydl \
--prefix PATH : ${lib.makeBinPath [ ffmpeg ]}
'';
meta = with lib; {
homepage = "https://code.rosaelefanten.org/yaydl";
description = "Yet another youtube down loader";
license = licenses.cddl;
maintainers = [ ];
mainProgram = "yaydl";
};
}

View File

@@ -0,0 +1,70 @@
{
rustPlatform,
fetchFromGitHub,
lib,
installShellFiles,
rust-jemalloc-sys,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "yazi";
version = "25.5.31";
srcs = builtins.attrValues finalAttrs.passthru.srcs;
sourceRoot = finalAttrs.passthru.srcs.code_src.name;
cargoHash = "sha256-5oNhqiQYkzaNZ1vK3hV5vWQCNr6D9VPNoqkS8ZOLf/4=";
env.YAZI_GEN_COMPLETIONS = true;
env.VERGEN_GIT_SHA = "Nixpkgs";
env.VERGEN_BUILD_DATE = "2025-05-30";
nativeBuildInputs = [ installShellFiles ];
buildInputs = [ rust-jemalloc-sys ];
postInstall = ''
installShellCompletion --cmd yazi \
--bash ./yazi-boot/completions/yazi.bash \
--fish ./yazi-boot/completions/yazi.fish \
--zsh ./yazi-boot/completions/_yazi
installManPage ../${finalAttrs.passthru.srcs.man_src.name}/yazi{.1,-config.5}
install -Dm444 assets/yazi.desktop -t $out/share/applications
install -Dm444 assets/logo.png $out/share/pixmaps/yazi.png
'';
passthru.updateScript.command = [ ./update.sh ];
passthru.srcs = {
code_src = fetchFromGitHub {
owner = "sxyazi";
repo = "yazi";
tag = "v${finalAttrs.version}";
hash = "sha256-Er9d/5F34c2Uw+DN/9j+j7TdeWiSxMQlZSgsATC04cM=";
};
man_src = fetchFromGitHub {
name = "manpages"; # needed to ensure name is unique
owner = "yazi-rs";
repo = "manpages";
rev = "8950e968f4a1ad0b83d5836ec54a070855068dbf";
hash = "sha256-kEVXejDg4ChFoMNBvKlwdFEyUuTcY2VuK9j0PdafKus=";
};
};
meta = {
description = "Blazing fast terminal file manager written in Rust, based on async I/O";
homepage = "https://github.com/sxyazi/yazi";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
eljamm
khaneliman
linsui
matthiasbeyer
uncenter
xyenon
];
mainProgram = "yazi";
};
})

View File

@@ -0,0 +1,52 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p bash nix-update curl coreutils jq common-updater-scripts gawk
set -eux
NIXPKGS_DIR="$PWD"
SCRIPT_DIR="$(dirname "${BASH_SOURCE[0]}")"
# Get latest release
YAZI_RELEASE=$(
curl --silent ${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} \
https://api.github.com/repos/sxyazi/yazi/releases/latest
)
# Get release information
latestBuildDate=$(echo "$YAZI_RELEASE" | jq -r ".published_at")
latestVersion=$(echo "$YAZI_RELEASE" | jq -r ".tag_name")
latestBuildDate="${latestBuildDate%T*}" # remove the timestamp and get the date
latestVersion="${latestVersion:1}" # remove first char 'v'
oldVersion=$(nix eval --raw -f "$NIXPKGS_DIR" yazi-unwrapped.version)
if [[ "$oldVersion" == "$latestVersion" ]]; then
echo "Yazi is up-to-date: ${oldVersion}"
exit 0
fi
echo "Updating code sources"
update-source-version yazi-unwrapped "${latestVersion}" --source-key=passthru.srcs.code_src
pushd "$SCRIPT_DIR"
echo "Updating build date"
sed -i 's#env.VERGEN_BUILD_DATE = "[^"]*"#env.VERGEN_BUILD_DATE = "'"${latestBuildDate}"'"#' package.nix
echo "Updating cargoHash"
# Set cargoHash to an empty string
sed -i -E 's/cargoHash = ".*?"/cargoHash = ""/' package.nix
# Build and get new hash
cargoHash=$( (nix-build "$NIXPKGS_DIR" -A yazi-unwrapped 2>&1 || true) | awk '/got/{print $2}')
if [ "$cargoHash" == "" ]; then
echo "Failed to get cargoHash, please update it manually"
exit 0
fi
sed -i -E 's/cargoHash = ".*?"/cargoHash = "'"$cargoHash"'"/' package.nix
popd

View File

@@ -0,0 +1,106 @@
{
lib,
formats,
runCommand,
makeWrapper,
extraPackages ? [ ],
optionalDeps ? [
jq
poppler-utils
_7zz
ffmpeg
fd
ripgrep
fzf
zoxide
imagemagick
chafa
resvg
],
# deps
file,
yazi-unwrapped,
# optional deps
jq,
poppler-utils,
_7zz,
ffmpeg,
fd,
ripgrep,
fzf,
zoxide,
imagemagick,
chafa,
resvg,
settings ? { },
plugins ? { },
flavors ? { },
initLua ? null,
}:
let
runtimePaths = [ file ] ++ optionalDeps ++ extraPackages;
settingsFormat = formats.toml { };
files = [
"yazi"
"theme"
"keymap"
];
configHome =
if (settings == { } && initLua == null && plugins == { } && flavors == { }) then
null
else
runCommand "YAZI_CONFIG_HOME" { } ''
mkdir -p "$out"
${lib.concatMapStringsSep "\n" (
name:
lib.optionalString (settings ? ${name} && settings.${name} != { }) ''
ln -s ${settingsFormat.generate "${name}.toml" settings.${name}} "$out/${name}.toml"
''
) files}
mkdir "$out/plugins"
${lib.optionalString (plugins != { }) ''
${lib.concatStringsSep "\n" (
lib.mapAttrsToList (
name: value:
''ln -s ${value} "$out/plugins/${if lib.hasSuffix ".yazi" name then name else "${name}.yazi"}"''
) plugins
)}
''}
mkdir "$out/flavors"
${lib.optionalString (flavors != { }) ''
${lib.concatStringsSep "\n" (
lib.mapAttrsToList (
name: value:
''ln -s ${value} "$out/flavors/${if lib.hasSuffix ".yazi" name then name else "${name}.yazi"}"''
) flavors
)}
''}
${lib.optionalString (initLua != null) ''ln -s "${initLua}" "$out/init.lua"''}
'';
in
runCommand yazi-unwrapped.name
{
inherit (yazi-unwrapped) pname version meta;
nativeBuildInputs = [ makeWrapper ];
}
''
mkdir -p "$out/bin"
ln -s "${yazi-unwrapped}/share" "$out/share"
ln -s ${lib.getExe' yazi-unwrapped "ya"} "$out/bin/ya"
makeWrapper ${lib.getExe' yazi-unwrapped "yazi"} "$out/bin/yazi" \
--prefix PATH : ${lib.makeBinPath runtimePaths} \
${lib.optionalString (configHome != null) "--set YAZI_CONFIG_HOME ${configHome}"}
''

View File

@@ -0,0 +1,23 @@
{
lib,
fetchFromGitHub,
mkYaziPlugin,
}:
mkYaziPlugin {
pname = "bypass.yazi";
version = "25.3.2-unstable-2025-06-01";
src = fetchFromGitHub {
owner = "Rolv-Apneseth";
repo = "bypass.yazi";
rev = "c1e5fcf6eeed0bfceb57b9738da6db9d0fb8af56";
hash = "sha256-ZndDtTMkEwuIMXG4SGe4B95Nw4fChfFhxJHj+IY30Kc=";
};
meta = {
description = "Yazi plugin for skipping directories with only a single sub-directory";
homepage = "https://github.com/Rolv-Apneseth/bypass.yazi";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ khaneliman ];
};
}

View File

@@ -0,0 +1,22 @@
{
lib,
fetchFromGitHub,
mkYaziPlugin,
}:
mkYaziPlugin {
pname = "chmod.yazi";
version = "25.5.31-unstable-2025-06-26";
src = fetchFromGitHub {
owner = "yazi-rs";
repo = "plugins";
rev = "7c174cc0ae1e07876218868e5e0917308201c081";
hash = "sha256-RE93ZNlG6CRGZz7YByXtO0mifduh6MMGls6J9IYwaFA=";
};
meta = {
description = "Execute chmod on the selected files to change their mode";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ khaneliman ];
};
}

View File

@@ -0,0 +1,81 @@
{
lib,
callPackage,
stdenvNoCC,
writeShellScript,
}:
let
root = ./.;
updateScript = ./update.py;
mkYaziPlugin =
args@{
pname,
src,
meta ? { },
installPhase ? null,
...
}:
let
# Extract the plugin name from pname (removing .yazi suffix if present)
pluginName = lib.removeSuffix ".yazi" pname;
in
stdenvNoCC.mkDerivation (
args
// {
installPhase =
if installPhase != null then
installPhase
else if (src ? owner && src.owner == "yazi-rs") then
# NOTE: License is a relative symbolic link
# We remove the link and copy the true license
''
runHook preInstall
cp -r ${pname} $out
rm $out/LICENSE
cp LICENSE $out
runHook postInstall
''
else
# Normal plugins don't require special installation other than to copy their contents.
''
runHook preInstall
cp -r . $out
runHook postInstall
'';
meta = meta // {
description = meta.description or "";
platforms = meta.platforms or lib.platforms.all;
homepage =
if (src ? owner && src.owner == "yazi-rs") then
"https://github.com/yazi-rs/plugins/tree/main/${pname}"
else
meta.homepage or null;
};
passthru = (args.passthru or { }) // {
updateScript = {
command = writeShellScript "update-${pluginName}" ''
export PLUGIN_NAME="${pluginName}"
export PLUGIN_PNAME="${pname}"
exec ${updateScript}
'';
supportedFeatures = [ "commit" ];
};
};
}
);
call = name: callPackage (root + "/${name}") { inherit mkYaziPlugin; };
in
lib.pipe root [
builtins.readDir
(lib.filterAttrs (_: type: type == "directory"))
(builtins.mapAttrs (name: _: call name))
]
// {
inherit mkYaziPlugin;
}

View File

@@ -0,0 +1,22 @@
{
lib,
fetchFromGitHub,
mkYaziPlugin,
}:
mkYaziPlugin {
pname = "diff.yazi";
version = "25.2.7-unstable-2025-03-02";
src = fetchFromGitHub {
owner = "yazi-rs";
repo = "plugins";
rev = "b44c245500b34e713732a9130bf436b13b4777e9";
hash = "sha256-nZ8yfnKvNLM5aA+mmQ3PkfM5lwSKwWnkQewcg9GwseI=";
};
meta = {
description = "Diff the selected file with the hovered file, create a living patch, and copy it to the clipboard";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ khaneliman ];
};
}

View File

@@ -0,0 +1,23 @@
{
lib,
fetchFromGitHub,
mkYaziPlugin,
}:
mkYaziPlugin {
pname = "duckdb.yazi";
version = "25.4.8-unstable-2025-05-29";
src = fetchFromGitHub {
owner = "wylie102";
repo = "duckdb.yazi";
rev = "3f8c8633d4b02d3099cddf9e892ca5469694ba22";
hash = "sha256-XQM459V3HbPgXKgd9LnAIKRQOAaJPdZA/Tp91TSGHqY=";
};
meta = {
description = "Yazi plugin that uses duckdb to preview data files";
homepage = "https://github.com/wylie102/duckdb.yazi";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ khaneliman ];
};
}

View File

@@ -0,0 +1,22 @@
{
lib,
fetchFromGitHub,
mkYaziPlugin,
}:
mkYaziPlugin {
pname = "full-border.yazi";
version = "25.2.26-unstable-2025-05-28";
src = fetchFromGitHub {
owner = "yazi-rs";
repo = "plugins";
rev = "f9b3f8876eaa74d8b76e5b8356aca7e6a81c0fb7";
hash = "sha256-EoIrbyC7WgRzrEtvso2Sr6HnNW91c5E+RZGqnjEi6Zo=";
};
meta = {
description = "Add a full border to Yazi to make it look fancier";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ khaneliman ];
};
}

View File

@@ -0,0 +1,22 @@
{
lib,
fetchFromGitHub,
mkYaziPlugin,
}:
mkYaziPlugin {
pname = "git.yazi";
version = "25.5.31-unstable-2025-07-05";
src = fetchFromGitHub {
owner = "yazi-rs";
repo = "plugins";
rev = "cbc4450a6c238114362e3c2fbca355166c2a2202";
hash = "sha256-otD7zmm/Juh68D2czRhtU7CZFIaMgADxuo8p68cS7fk=";
};
meta = {
description = "Show the status of Git file changes as linemode in the file list";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ khaneliman ];
};
}

View File

@@ -0,0 +1,31 @@
{
lib,
fetchFromGitHub,
mkYaziPlugin,
}:
mkYaziPlugin {
pname = "gitui.yazi";
version = "0-unstable-2025-05-26";
src = fetchFromGitHub {
owner = "gclarkjr5";
repo = "gitui.yazi";
rev = "397e9cf9cff536a43e746d72e0e81fd5c3050d2d";
hash = "sha256-Bo16/5XuSxRhN6URwTBxuw0FTMHLF3nV1UDBQQJFHMM=";
};
installPhase = ''
runHook preInstall
cp -r . $out
mv $out/init.lua $out/main.lua
runHook postInstall
'';
meta = {
description = "Plugin for Yazi to manage git repos with gitui";
homepage = "https://github.com/gclarkjr5/gitui.yazi";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ felipe-9 ];
};
}

View File

@@ -0,0 +1,23 @@
{
lib,
fetchFromGitHub,
mkYaziPlugin,
}:
mkYaziPlugin {
pname = "glow.yazi";
version = "0-unstable-2025-06-13";
src = fetchFromGitHub {
owner = "Reledia";
repo = "glow.yazi";
rev = "bd3eaa58c065eaf216a8d22d64c62d8e0e9277e9";
hash = "sha256-mzW/ut/LTEriZiWF8YMRXG9hZ70OOC0irl5xObTNO40=";
};
meta = {
description = "Glow preview plugin for yazi";
homepage = "https://github.com/Reledia/glow.yazi";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ khaneliman ];
};
}

Some files were not shown because too many files have changed in this diff Show More