diff options
Diffstat (limited to 'nixpkgs/pkgs/misc')
266 files changed, 31860 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/misc/acpilight/default.nix b/nixpkgs/pkgs/misc/acpilight/default.nix new file mode 100644 index 000000000000..91bb87829131 --- /dev/null +++ b/nixpkgs/pkgs/misc/acpilight/default.nix @@ -0,0 +1,34 @@ +{ lib, stdenv, fetchgit, python3, coreutils }: + +stdenv.mkDerivation rec { + pname = "acpilight"; + version = "1.2"; + + src = fetchgit { + url = "https://gitlab.com/wavexx/acpilight.git"; + rev = "v${version}"; + sha256 = "1r0r3nx6x6vkpal6vci0zaa1n9dfacypldf6k8fxg7919vzxdn1w"; + }; + + pyenv = python3.withPackages (pythonPackages: with pythonPackages; [ + configargparse + ]); + + postConfigure = '' + substituteInPlace 90-backlight.rules --replace /bin ${coreutils}/bin + substituteInPlace Makefile --replace udevadm true + ''; + + buildInputs = [ pyenv ]; + + makeFlags = [ "DESTDIR=$(out) prefix=" ]; + + meta = with lib; { + homepage = "https://gitlab.com/wavexx/acpilight"; + description = "ACPI backlight control"; + license = licenses.gpl3; + maintainers = with maintainers; [ smakarov ]; + platforms = platforms.linux; + mainProgram = "xbacklight"; + }; +} diff --git a/nixpkgs/pkgs/misc/ananicy-cpp/default.nix b/nixpkgs/pkgs/misc/ananicy-cpp/default.nix new file mode 100644 index 000000000000..9a771a470339 --- /dev/null +++ b/nixpkgs/pkgs/misc/ananicy-cpp/default.nix @@ -0,0 +1,70 @@ +{ lib +, clangStdenv +, fetchFromGitLab +, cmake +, pkg-config +, spdlog +, nlohmann_json +, systemd +, libbpf +, elfutils +, bpftools +, zlib +}: + +clangStdenv.mkDerivation rec { + pname = "ananicy-cpp"; + version = "1.1.1"; + + src = fetchFromGitLab { + owner = "ananicy-cpp"; + repo = "ananicy-cpp"; + rev = "v${version}"; + fetchSubmodules = true; + sha256 = "sha256-oPinSc00+Z6SxjfTh7DttcXSjsLv1X0NI+O37C8M8GY="; + }; + + strictDeps = true; + + nativeBuildInputs = [ + cmake + pkg-config + bpftools + ]; + + buildInputs = [ + spdlog + nlohmann_json + systemd + libbpf + elfutils + zlib + ]; + + # BPF A call to built-in function '__stack_chk_fail' is not supported. + hardeningDisable = [ "stackprotector" ]; + + cmakeFlags = [ + "-DUSE_EXTERNAL_JSON=ON" + "-DUSE_EXTERNAL_SPDLOG=ON" + "-DUSE_EXTERNAL_FMTLIB=ON" + "-DUSE_BPF_PROC_IMPL=ON" + "-DBPF_BUILD_LIBBPF=OFF" + "-DENABLE_SYSTEMD=ON" + "-DVERSION=${version}" + ]; + + postInstall = '' + rm -rf "$out"/include + rm -rf "$out"/lib/cmake + ''; + + meta = with lib; { + homepage = "https://gitlab.com/ananicy-cpp/ananicy-cpp"; + description = "Rewrite of ananicy in c++ for lower cpu and memory usage"; + license = licenses.gpl3Only; + platforms = platforms.linux; + maintainers = with maintainers; [ artturin ]; + mainProgram = "ananicy-cpp"; + }; +} diff --git a/nixpkgs/pkgs/misc/ananicy-rules-cachyos/default.nix b/nixpkgs/pkgs/misc/ananicy-rules-cachyos/default.nix new file mode 100644 index 000000000000..096528fa3538 --- /dev/null +++ b/nixpkgs/pkgs/misc/ananicy-rules-cachyos/default.nix @@ -0,0 +1,32 @@ +{ lib, stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + pname = "ananicy"; + version = "unstable-2023-10-11"; + + src = fetchFromGitHub { + owner = "CachyOS"; + repo = "ananicy-rules"; + rev = "3dafc3eb667b6ed7024359de78bf961c7248954d"; + sha256 = "sha256-bMwM/2R6jdgrQ6C0JnHyMp9L4OWI6KVGcninrr7wLQ8="; + }; + + dontConfigure = true; + dontBuild = true; + + installPhase = '' + runHook preBuild + mkdir -p $out + cp -r * $out + rm $out/README.md + runHook postBuild + ''; + + meta = with lib; { + homepage = "https://github.com/CachyOS/ananicy-rules"; + description = "ananicy-cpp-rules for CachyOS "; + license = licenses.gpl3Only; + platforms = platforms.linux; + maintainers = with maintainers; [ artturin ]; + }; +} diff --git a/nixpkgs/pkgs/misc/ananicy/default.nix b/nixpkgs/pkgs/misc/ananicy/default.nix new file mode 100644 index 000000000000..9567f2d4d0f7 --- /dev/null +++ b/nixpkgs/pkgs/misc/ananicy/default.nix @@ -0,0 +1,53 @@ +{ lib, stdenv, python3, fetchFromGitHub, makeWrapper, schedtool, sysctl, util-linux, fetchpatch }: + +stdenv.mkDerivation rec { + pname = "ananicy"; + version = "unstable-2023-03-21"; + + src = fetchFromGitHub { + owner = "nefelim4ag"; + repo = "ananicy"; + rev = "1e2cc9a62ba3b6793e59da66aa0039f89e1ad49f"; + sha256 = "sha256-nHp47eYI36edka+cBMzayPHEflAzpgLx0VehhsyYpwI="; + }; + + patches = [ + # https://github.com/Nefelim4ag/Ananicy/pull/437 + # fix makefile destinations + (fetchpatch { + url = "https://github.com/Nefelim4ag/Ananicy/commit/dbda0f50670de3f249991706ef1cc107c5197a2f.patch"; + sha256 = "sha256-vMcJxekg2QUbm253CLAv3tmo5kedSlw+/PI/LamNWwc="; + # only used for debian packaging. lets exclude it so the patch applies even when that file is changed + excludes = [ "package.sh" ]; + }) + ]; + + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ python3 ]; + + makeFlags = [ + "PREFIX=$(out)" + "SYSCONFDIR=${placeholder "out"}/etc" + ]; + + dontConfigure = true; + dontBuild = true; + + postInstall = '' + wrapProgram $out/bin/ananicy \ + --prefix PATH : ${lib.makeBinPath [ schedtool util-linux ]} + + substituteInPlace $out/lib/systemd/system/ananicy.service \ + --replace "/sbin/sysctl" "${sysctl}/bin/sysctl" \ + --replace "/usr/bin/ananicy" "$out/bin/ananicy" + ''; + + meta = with lib; { + homepage = "https://github.com/Nefelim4ag/Ananicy"; + description = "Another auto nice daemon, with community rules support"; + license = licenses.gpl3Only; + platforms = platforms.linux; + maintainers = with maintainers; [ artturin ]; + mainProgram = "ananicy"; + }; +} diff --git a/nixpkgs/pkgs/misc/apulse/default.nix b/nixpkgs/pkgs/misc/apulse/default.nix new file mode 100644 index 000000000000..00b53851b829 --- /dev/null +++ b/nixpkgs/pkgs/misc/apulse/default.nix @@ -0,0 +1,34 @@ +{ lib, stdenv, fetchFromGitHub, alsa-lib, cmake, pkg-config, glib +, tracingSupport ? true, logToStderr ? true }: + +let oz = x: if x then "1" else "0"; in + +stdenv.mkDerivation rec { + pname = "apulse"; + version = "0.1.13"; + + src = fetchFromGitHub { + owner = "i-rinat"; + repo = pname; + rev = "v${version}"; + sha256 = "1p6fh6ah5v3qz7dxhcsixx38bxg44ypbim4m03bxk3ls5i9xslmn"; + }; + + nativeBuildInputs = [ cmake pkg-config ]; + + buildInputs = [ alsa-lib glib ]; + + cmakeFlags = [ + "-DWITH_TRACE=${oz tracingSupport}" + "-DLOG_TO_STDERR=${oz logToStderr}" + ]; + + meta = with lib; { + description = "PulseAudio emulation for ALSA"; + homepage = "https://github.com/i-rinat/apulse"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = [ maintainers.jagajaga ]; + mainProgram = "apulse"; + }; +} diff --git a/nixpkgs/pkgs/misc/apulse/pressureaudio.nix b/nixpkgs/pkgs/misc/apulse/pressureaudio.nix new file mode 100644 index 000000000000..638334f44a5d --- /dev/null +++ b/nixpkgs/pkgs/misc/apulse/pressureaudio.nix @@ -0,0 +1,82 @@ +{ stdenv, apulse, libpulseaudio, pkg-config, intltool }: + +stdenv.mkDerivation { + pname = "libpressureaudio"; + version = apulse.version; + + src = libpulseaudio.src; + + nativeBuildInputs = [ pkg-config intltool ]; + + dontConfigure = true; + dontBuild = true; + + installPhase = '' + echo "Copying libraries from apulse." + mkdir -p $out/lib + ls ${apulse}/lib/apulse $out/lib + cp -a ${apulse}/lib/apulse/* $out/lib/ + + echo "Copying headers from pulseaudio." + mkdir -p $out/include/pulse + cp -a src/pulse/*.h $out/include/pulse + + echo "Generating custom pkgconfig definitions." + mkdir -p $out/lib/pkgconfig + for a in libpulse.pc libpulse-simple.pc libpulse-mainloop-glib.pc ; do + cat > $out/lib/pkgconfig/$a << EOF + prefix=$out + libdir=$out/lib + includedir=$out/include + + EOF + done + + cat >> $out/lib/pkgconfig/libpulse.pc << EOF + Name: libpulse + Description: PulseAudio Client Interface + Version: ${libpulseaudio.version}-rebootstrapped + Libs: -L$out/lib -lpulse + Cflags: -I$out/include -D_REENTRANT + EOF + + cat >> $out/lib/pkgconfig/libpulse-simple.pc << EOF + Name: libpulse-simple + Description: PulseAudio Simplified Synchronous Client Interface + Version: ${libpulseaudio.version}-rebootstrapped + Libs: -L$out/lib -lpulse-simple + Cflags: -I$out/include -D_REENTRANT + Requires: libpulse + EOF + + cat >> $out/lib/pkgconfig/libpulse-mainloop-glib.pc << EOF + Name: libpulse-mainloop-glib + Description: PulseAudio GLib 2.0 Main Loop Wrapper + Version: ${libpulseaudio.version}-rebootstrapped + Libs: -L$out/lib -lpulse-mainloop-glib + Cflags: -I$out/include -D_REENTRANT + Requires: libpulse glib-2.0 + EOF + ''; + + meta = apulse.meta // { + description = "libpulse without any sound daemons over pure ALSA"; + longDescription = '' + apulse (${apulse.meta.homepage}) implements most of libpulse + API over pure ALSA in 5% LOC of the original PulseAudio. + + But apulse is made to be used as a wrapper that substitutes its + replacement libs into LD_LIBRARY_PATH. The problem with that is + that you still have to link against the original libpulse. + + pressureaudio (http://git.r-36.net/pressureaudio/) wraps apulse + with everything you need to replace libpulse completely. + + This derivation is a reimplementation of pressureaudio in pure + nix. + + You can simply override libpulse with this and most + packages would just work. + ''; + }; +} diff --git a/nixpkgs/pkgs/misc/arm-trusted-firmware/default.nix b/nixpkgs/pkgs/misc/arm-trusted-firmware/default.nix new file mode 100644 index 000000000000..f3025572429e --- /dev/null +++ b/nixpkgs/pkgs/misc/arm-trusted-firmware/default.nix @@ -0,0 +1,160 @@ +{ lib, stdenv, fetchFromGitHub, openssl, pkgsCross, buildPackages + +# Warning: this blob (hdcp.bin) runs on the main CPU (not the GPU) at +# privilege level EL3, which is above both the kernel and the +# hypervisor. +# +# This parameter applies only to platforms which are believed to use +# hdcp.bin. On all other platforms, or if unfreeIncludeHDCPBlob=false, +# hdcp.bin will be deleted before building. +, unfreeIncludeHDCPBlob ? true +}: + +let + buildArmTrustedFirmware = { filesToInstall + , installDir ? "$out" + , platform ? null + , platformCanUseHDCPBlob ? false # set this to true if the platform is able to use hdcp.bin + , extraMakeFlags ? [] + , extraMeta ? {} + , ... } @ args: + + # delete hdcp.bin if either: the platform is thought to + # not need it or unfreeIncludeHDCPBlob is false + let deleteHDCPBlobBeforeBuild = !platformCanUseHDCPBlob || !unfreeIncludeHDCPBlob; in + + stdenv.mkDerivation (rec { + + pname = "arm-trusted-firmware${lib.optionalString (platform != null) "-${platform}"}"; + version = "2.10.0"; + + src = fetchFromGitHub { + owner = "ARM-software"; + repo = "arm-trusted-firmware"; + rev = "v${version}"; + hash = "sha256-CAuftVST9Fje/DWaaoX0K2SfWwlGMaUFG4huuwsTOSU="; + }; + + patches = lib.optionals deleteHDCPBlobBeforeBuild [ + # this is a rebased version of https://gitlab.com/vicencb/kevinboot/-/blob/master/atf.patch + ./remove-hdcp-blob.patch + ]; + + postPatch = lib.optionalString deleteHDCPBlobBeforeBuild '' + rm plat/rockchip/rk3399/drivers/dp/hdcp.bin + ''; + + depsBuildBuild = [ buildPackages.stdenv.cc ]; + + # For Cortex-M0 firmware in RK3399 + nativeBuildInputs = [ pkgsCross.arm-embedded.stdenv.cc ]; + + buildInputs = [ openssl ]; + + makeFlags = [ + "HOSTCC=$(CC_FOR_BUILD)" + "M0_CROSS_COMPILE=${pkgsCross.arm-embedded.stdenv.cc.targetPrefix}" + "CROSS_COMPILE=${stdenv.cc.targetPrefix}" + # binutils 2.39 regression + # `warning: /build/source/build/rk3399/release/bl31/bl31.elf has a LOAD segment with RWX permissions` + # See also: https://developer.trustedfirmware.org/T996 + "LDFLAGS=-no-warn-rwx-segments" + ] ++ (lib.optional (platform != null) "PLAT=${platform}") + ++ extraMakeFlags; + + installPhase = '' + runHook preInstall + + mkdir -p ${installDir} + cp ${lib.concatStringsSep " " filesToInstall} ${installDir} + + runHook postInstall + ''; + + hardeningDisable = [ "all" ]; + dontStrip = true; + + # Fatal error: can't create build/sun50iw1p1/release/bl31/sunxi_clocks.o: No such file or directory + enableParallelBuilding = false; + + meta = with lib; { + homepage = "https://github.com/ARM-software/arm-trusted-firmware"; + description = "A reference implementation of secure world software for ARMv8-A"; + license = [ licenses.bsd3 ] ++ lib.optionals (!deleteHDCPBlobBeforeBuild) [ licenses.unfreeRedistributable ]; + maintainers = with maintainers; [ lopsided98 ]; + } // extraMeta; + } // builtins.removeAttrs args [ "extraMeta" ]); + +in { + inherit buildArmTrustedFirmware; + + armTrustedFirmwareTools = buildArmTrustedFirmware rec { + # Normally, arm-trusted-firmware builds the build tools for buildPlatform + # using CC_FOR_BUILD (or as it calls it HOSTCC). Since want to build them + # for the hostPlatform here, we trick it by overriding the HOSTCC setting + # and, to be safe, remove CC_FOR_BUILD from the environment. + depsBuildBuild = [ ]; + extraMakeFlags = [ + "HOSTCC=${stdenv.cc.targetPrefix}gcc" + "fiptool" "certtool" + ]; + filesToInstall = [ + "tools/fiptool/fiptool" + "tools/cert_create/cert_create" + ]; + postInstall = '' + mkdir -p "$out/bin" + find "$out" -type f -executable -exec mv -t "$out/bin" {} + + ''; + }; + + armTrustedFirmwareAllwinner = buildArmTrustedFirmware rec { + platform = "sun50i_a64"; + extraMeta.platforms = ["aarch64-linux"]; + filesToInstall = ["build/${platform}/release/bl31.bin"]; + }; + + armTrustedFirmwareAllwinnerH616 = buildArmTrustedFirmware rec { + platform = "sun50i_h616"; + extraMeta.platforms = ["aarch64-linux"]; + filesToInstall = ["build/${platform}/release/bl31.bin"]; + }; + + armTrustedFirmwareAllwinnerH6 = buildArmTrustedFirmware rec { + platform = "sun50i_h6"; + extraMeta.platforms = ["aarch64-linux"]; + filesToInstall = ["build/${platform}/release/bl31.bin"]; + }; + + armTrustedFirmwareQemu = buildArmTrustedFirmware rec { + platform = "qemu"; + extraMeta.platforms = ["aarch64-linux"]; + filesToInstall = [ + "build/${platform}/release/bl1.bin" + "build/${platform}/release/bl2.bin" + "build/${platform}/release/bl31.bin" + ]; + }; + + armTrustedFirmwareRK3328 = buildArmTrustedFirmware rec { + extraMakeFlags = [ "bl31" ]; + platform = "rk3328"; + extraMeta.platforms = ["aarch64-linux"]; + filesToInstall = [ "build/${platform}/release/bl31/bl31.elf"]; + }; + + armTrustedFirmwareRK3399 = buildArmTrustedFirmware rec { + extraMakeFlags = [ "bl31" ]; + platform = "rk3399"; + extraMeta.platforms = ["aarch64-linux"]; + filesToInstall = [ "build/${platform}/release/bl31/bl31.elf"]; + platformCanUseHDCPBlob = true; + }; + + armTrustedFirmwareS905 = buildArmTrustedFirmware rec { + extraMakeFlags = [ "bl31" ]; + platform = "gxbb"; + extraMeta.platforms = ["aarch64-linux"]; + filesToInstall = [ "build/${platform}/release/bl31.bin"]; + }; +} diff --git a/nixpkgs/pkgs/misc/arm-trusted-firmware/remove-hdcp-blob.patch b/nixpkgs/pkgs/misc/arm-trusted-firmware/remove-hdcp-blob.patch new file mode 100644 index 000000000000..7f99fbdcabfd --- /dev/null +++ b/nixpkgs/pkgs/misc/arm-trusted-firmware/remove-hdcp-blob.patch @@ -0,0 +1,47 @@ +diff --git a/plat/rockchip/rk3399/drivers/dp/cdn_dp.c b/plat/rockchip/rk3399/drivers/dp/cdn_dp.c +index a8773f4f6..8e28c4830 100644 +--- a/plat/rockchip/rk3399/drivers/dp/cdn_dp.c ++++ b/plat/rockchip/rk3399/drivers/dp/cdn_dp.c +@@ -13,17 +13,6 @@ + + #include <cdn_dp.h> + +-__asm__( +- ".pushsection .text.hdcp_handler, \"ax\", %progbits\n" +- ".global hdcp_handler\n" +- ".balign 4\n" +- "hdcp_handler:\n" +- ".incbin \"" HDCPFW "\"\n" +- ".type hdcp_handler, %function\n" +- ".size hdcp_handler, .- hdcp_handler\n" +- ".popsection\n" +-); +- + static uint64_t *hdcp_key_pdata; + static struct cdn_dp_hdcp_key_1x key; + +@@ -38,7 +27,7 @@ uint64_t dp_hdcp_ctrl(uint64_t type) + return 0; + case HDCP_KEY_DATA_START_DECRYPT: + if (hdcp_key_pdata == (uint64_t *)(&key + 1)) +- return hdcp_handler(&key); ++ return PSCI_E_DISABLED; + else + return PSCI_E_INVALID_PARAMS; + assert(0); /* Unreachable */ +diff --git a/plat/rockchip/rk3399/platform.mk b/plat/rockchip/rk3399/platform.mk +index a658fb286..5edb6a25b 100644 +--- a/plat/rockchip/rk3399/platform.mk ++++ b/plat/rockchip/rk3399/platform.mk +@@ -88,11 +88,6 @@ $(eval $(call add_define_val,RK3399M0PMUFW,\"$(RK3399M0PMUFW)\")) + ifdef PLAT_RK_DP_HDCP + BL31_SOURCES += ${RK_PLAT_SOC}/drivers/dp/cdn_dp.c + +-HDCPFW=${RK_PLAT_SOC}/drivers/dp/hdcp.bin +-$(eval $(call add_define_val,HDCPFW,\"$(HDCPFW)\")) +- +-${BUILD_PLAT}/bl31/cdn_dp.o: CCACHE_EXTRAFILES=$(HDCPFW) +-${RK_PLAT_SOC}/drivers/dp/cdn_dp.c: $(HDCPFW) + endif + + # CCACHE_EXTRAFILES is needed because ccache doesn't handle .incbin diff --git a/nixpkgs/pkgs/misc/autoadb/default.nix b/nixpkgs/pkgs/misc/autoadb/default.nix new file mode 100644 index 000000000000..8832d314df85 --- /dev/null +++ b/nixpkgs/pkgs/misc/autoadb/default.nix @@ -0,0 +1,23 @@ +{ lib, rustPlatform, fetchFromGitHub }: + +rustPlatform.buildRustPackage rec { + pname = "autoadb"; + version = "unstable-2020-06-01"; + + src = fetchFromGitHub { + owner = "rom1v"; + repo = pname; + rev = "7f8402983603a9854bf618a384f679a17cd85e2d"; + sha256 = "sha256-9Sv38dCtvbqvxSnRpq+HsIwF/rfLUVZbi0J+mltLres="; + }; + + cargoSha256 = "1gzg1lhq8gp790mrc8fw8dg146k8lg20pnk45m2ssnmdka0826f7"; + + meta = with lib; { + description = "Execute a command whenever a device is adb-connected"; + homepage = "https://github.com/rom1v/autoadb"; + license = licenses.asl20; + maintainers = with maintainers; [ shawn8901 ]; + mainProgram = "autoadb"; + }; +} diff --git a/nixpkgs/pkgs/misc/autotiling-rs/default.nix b/nixpkgs/pkgs/misc/autotiling-rs/default.nix new file mode 100644 index 000000000000..094694016679 --- /dev/null +++ b/nixpkgs/pkgs/misc/autotiling-rs/default.nix @@ -0,0 +1,24 @@ +{ lib, fetchFromGitHub, rustPlatform }: + +rustPlatform.buildRustPackage rec { + pname = "autotiling-rs"; + version = "0.1.3"; + + src = fetchFromGitHub { + owner = "ammgws"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-LQbmF2M6pWa0QEbKF770x8TFLMGrJeq5HnXHvLrDDPA="; + }; + + cargoHash = "sha256-wot5GKBA2TBrA/jnWD0eypPRqUodmk/TJlYJMl3/gm4="; + + meta = with lib; { + description = "Autotiling for sway (and possibly i3)"; + homepage = "https://github.com/ammgws/autotiling-rs"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ dit7ya ]; + mainProgram = "autotiling-rs"; + }; +} diff --git a/nixpkgs/pkgs/misc/autotiling/default.nix b/nixpkgs/pkgs/misc/autotiling/default.nix new file mode 100644 index 000000000000..301712a1f1df --- /dev/null +++ b/nixpkgs/pkgs/misc/autotiling/default.nix @@ -0,0 +1,26 @@ +{ lib, buildPythonApplication, fetchFromGitHub, i3ipc, importlib-metadata }: + +buildPythonApplication rec { + pname = "autotiling"; + version = "1.8"; + + src = fetchFromGitHub { + owner = "nwg-piotr"; + repo = pname; + rev = "refs/tags/v${version}"; + sha256 = "sha256-4iiiiuXCHFXEeA99ikq/G3q2KXBZ7vwpfET7QtoDVds="; + }; + + propagatedBuildInputs = [ i3ipc importlib-metadata ]; + doCheck = false; + + meta = with lib; { + homepage = "https://github.com/nwg-piotr/autotiling"; + description = "Script for sway and i3 to automatically switch the horizontal / vertical window split orientation"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = with maintainers; [ artturin ]; + mainProgram = "autotiling"; + }; +} + diff --git a/nixpkgs/pkgs/misc/barebox/default.nix b/nixpkgs/pkgs/misc/barebox/default.nix new file mode 100644 index 000000000000..cb77a607e016 --- /dev/null +++ b/nixpkgs/pkgs/misc/barebox/default.nix @@ -0,0 +1,96 @@ +{ stdenv +, lib +, fetchurl +, bison +, dtc +, flex +, libusb1 +, lzop +, openssl +, pkg-config +, buildPackages +}: + +let + buildBarebox = { + filesToInstall + , installDir ? "$out" + , defconfig + , extraMeta ? {} + , ... } @ args: stdenv.mkDerivation rec { + pname = "barebox-${defconfig}"; + + version = "2020.12.0"; + + src = fetchurl { + url = "https://www.barebox.org/download/barebox-${version}.tar.bz2"; + sha256 = "06vsd95ihaa2nywpqy6k0c7xwk2pzws4yvbp328yd2pfiigachrv"; + }; + + postPatch = '' + patchShebangs scripts + ''; + + nativeBuildInputs = [ + bison + dtc + flex + openssl + libusb1 + lzop + pkg-config + ]; + depsBuildBuild = [ buildPackages.stdenv.cc ]; + + hardeningDisable = [ "all" ]; + + makeFlags = [ + "DTC=dtc" + "CROSS_COMPILE=${stdenv.cc.targetPrefix}" + ]; + + configurePhase = '' + runHook preConfigure + + make ${defconfig} + + runHook postConfigure + ''; + + installPhase = '' + runHook preInstall + + mkdir -p ${installDir} + cp ${lib.concatStringsSep " " filesToInstall} ${installDir} + + runHook postInstall + ''; + + enableParallelBuilding = true; + + dontStrip = true; + + meta = with lib; { + homepage = "https://www.barebox.org"; + description = "The Swiss Army Knive for bare metal"; + license = licenses.gpl2; + maintainers = with maintainers; [ emantor ]; + } // extraMeta; + } // removeAttrs args [ "extraMeta" ]; + +in { + inherit buildBarebox; + + bareboxTools = buildBarebox { + defconfig = "hosttools_defconfig"; + installDir = "$out/bin"; + extraMeta.platforms = lib.platforms.linux; + filesToInstall = [ + "scripts/bareboximd" + "scripts/imx/imx-usb-loader" + "scripts/omap4_usbboot" + "scripts/omap3-usb-loader" + "scripts/kwboot" + ]; + }; +} diff --git a/nixpkgs/pkgs/misc/base16-builder/default.nix b/nixpkgs/pkgs/misc/base16-builder/default.nix new file mode 100644 index 000000000000..af57f2a90de3 --- /dev/null +++ b/nixpkgs/pkgs/misc/base16-builder/default.nix @@ -0,0 +1,8 @@ +{ stdenv, pkgs }: + +let + nodePackages = import ./node-packages.nix { + inherit pkgs; + inherit (stdenv.hostPlatform) system; + }; +in nodePackages.base16-builder diff --git a/nixpkgs/pkgs/misc/base16-builder/generate.sh b/nixpkgs/pkgs/misc/base16-builder/generate.sh new file mode 100755 index 000000000000..ebcdc72ed1bc --- /dev/null +++ b/nixpkgs/pkgs/misc/base16-builder/generate.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env nix-shell +#! nix-shell -i bash -p nodePackages.node2nix +exec node2nix --nodejs-18 \ + --input node-packages.json \ + --output node-packages-generated.nix \ + --supplement-input supplement.json \ + --composition node-packages.nix \ + --node-env ./../../development/node-packages/node-env.nix \ diff --git a/nixpkgs/pkgs/misc/base16-builder/node-packages-generated.nix b/nixpkgs/pkgs/misc/base16-builder/node-packages-generated.nix new file mode 100644 index 000000000000..312e4c3b3cde --- /dev/null +++ b/nixpkgs/pkgs/misc/base16-builder/node-packages-generated.nix @@ -0,0 +1,1875 @@ +# This file has been generated by node2nix 1.11.1. Do not edit! + +{nodeEnv, fetchurl, fetchgit, nix-gitignore, stdenv, lib, globalBuildInputs ? []}: + +let + sources = { + "@mapbox/node-pre-gyp-1.0.10" = { + name = "_at_mapbox_slash_node-pre-gyp"; + packageName = "@mapbox/node-pre-gyp"; + version = "1.0.10"; + src = fetchurl { + url = "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz"; + sha512 = "4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA=="; + }; + }; + "abbrev-1.1.1" = { + name = "abbrev"; + packageName = "abbrev"; + version = "1.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz"; + sha512 = "nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="; + }; + }; + "agent-base-6.0.2" = { + name = "agent-base"; + packageName = "agent-base"; + version = "6.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz"; + sha512 = "RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="; + }; + }; + "ansi-regex-2.1.1" = { + name = "ansi-regex"; + packageName = "ansi-regex"; + version = "2.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"; + sha512 = "TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA=="; + }; + }; + "ansi-regex-5.0.1" = { + name = "ansi-regex"; + packageName = "ansi-regex"; + version = "5.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz"; + sha512 = "quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="; + }; + }; + "ansi-styles-2.2.1" = { + name = "ansi-styles"; + packageName = "ansi-styles"; + version = "2.2.1"; + src = fetchurl { + url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz"; + sha512 = "kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA=="; + }; + }; + "any-promise-0.1.0" = { + name = "any-promise"; + packageName = "any-promise"; + version = "0.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/any-promise/-/any-promise-0.1.0.tgz"; + sha512 = "lqzY9o+BbeGHRCOyxQkt/Tgvz0IZhTmQiA+LxQW8wSNpcTbj8K+0cZiSEvbpNZZP9/11Gy7dnLO3GNWUXO4d1g=="; + }; + }; + "aproba-2.0.0" = { + name = "aproba"; + packageName = "aproba"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz"; + sha512 = "lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ=="; + }; + }; + "are-we-there-yet-2.0.0" = { + name = "are-we-there-yet"; + packageName = "are-we-there-yet"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz"; + sha512 = "Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw=="; + }; + }; + "argparse-1.0.10" = { + name = "argparse"; + packageName = "argparse"; + version = "1.0.10"; + src = fetchurl { + url = "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz"; + sha512 = "o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="; + }; + }; + "array-find-index-1.0.2" = { + name = "array-find-index"; + packageName = "array-find-index"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz"; + sha512 = "M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw=="; + }; + }; + "balanced-match-1.0.2" = { + name = "balanced-match"; + packageName = "balanced-match"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"; + sha512 = "3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="; + }; + }; + "boxen-0.3.1" = { + name = "boxen"; + packageName = "boxen"; + version = "0.3.1"; + src = fetchurl { + url = "https://registry.npmjs.org/boxen/-/boxen-0.3.1.tgz"; + sha512 = "u9JPc+sK+tsB7uH0870GNESSm2I005T9nE9fug2X/6COxMJ9qXmSducVSFt5f3xdZgR/PtKXVJTxN296cMCP6w=="; + }; + }; + "brace-expansion-1.1.11" = { + name = "brace-expansion"; + packageName = "brace-expansion"; + version = "1.1.11"; + src = fetchurl { + url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"; + sha512 = "iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="; + }; + }; + "bulk-replace-0.0.1" = { + name = "bulk-replace"; + packageName = "bulk-replace"; + version = "0.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/bulk-replace/-/bulk-replace-0.0.1.tgz"; + sha512 = "IxLEnfsCYLjlpf6mG7SWpWgA4A8IAT5dAX3FxXHFn+6FTLf3ums771elQ74sj1BCOVanBf6esu0rEC6zgwfmIg=="; + }; + }; + "camelcase-2.1.1" = { + name = "camelcase"; + packageName = "camelcase"; + version = "2.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz"; + sha512 = "DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw=="; + }; + }; + "camelcase-keys-2.1.0" = { + name = "camelcase-keys"; + packageName = "camelcase-keys"; + version = "2.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz"; + sha512 = "bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ=="; + }; + }; + "capture-stack-trace-1.0.2" = { + name = "capture-stack-trace"; + packageName = "capture-stack-trace"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.2.tgz"; + sha512 = "X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w=="; + }; + }; + "chalk-1.1.3" = { + name = "chalk"; + packageName = "chalk"; + version = "1.1.3"; + src = fetchurl { + url = "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz"; + sha512 = "U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A=="; + }; + }; + "chownr-2.0.0" = { + name = "chownr"; + packageName = "chownr"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz"; + sha512 = "bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="; + }; + }; + "code-point-at-1.1.0" = { + name = "code-point-at"; + packageName = "code-point-at"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz"; + sha512 = "RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA=="; + }; + }; + "color-support-1.1.3" = { + name = "color-support"; + packageName = "color-support"; + version = "1.1.3"; + src = fetchurl { + url = "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz"; + sha512 = "qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg=="; + }; + }; + "commander-1.1.1" = { + name = "commander"; + packageName = "commander"; + version = "1.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/commander/-/commander-1.1.1.tgz"; + sha512 = "71Rod2AhcH3JhkBikVpNd0pA+fWsmAaVoti6OR38T76chA7vE3pSerS0Jor4wDw+tOueD2zLVvFOw5H0Rcj7rA=="; + }; + }; + "concat-map-0.0.1" = { + name = "concat-map"; + packageName = "concat-map"; + version = "0.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"; + sha512 = "/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="; + }; + }; + "configstore-2.1.0" = { + name = "configstore"; + packageName = "configstore"; + version = "2.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/configstore/-/configstore-2.1.0.tgz"; + sha512 = "BOCxwwxF5WPspp1OBq9j0JLyL5JgJOTssz9PdOHr8VWjFijaC3PpjU48vFEX3uxx8sTusnVQckLbNzBq6fmkGw=="; + }; + }; + "console-control-strings-1.1.0" = { + name = "console-control-strings"; + packageName = "console-control-strings"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz"; + sha512 = "ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="; + }; + }; + "core-util-is-1.0.3" = { + name = "core-util-is"; + packageName = "core-util-is"; + version = "1.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz"; + sha512 = "ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="; + }; + }; + "create-error-class-3.0.2" = { + name = "create-error-class"; + packageName = "create-error-class"; + version = "3.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz"; + sha512 = "gYTKKexFO3kh200H1Nit76sRwRtOY32vQd3jpAQKpLtZqyNsSQNfI4N7o3eP2wUjV35pTWKRYqFUDBvUha/Pkw=="; + }; + }; + "currently-unhandled-0.4.1" = { + name = "currently-unhandled"; + packageName = "currently-unhandled"; + version = "0.4.1"; + src = fetchurl { + url = "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz"; + sha512 = "/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng=="; + }; + }; + "debug-4.3.4" = { + name = "debug"; + packageName = "debug"; + version = "4.3.4"; + src = fetchurl { + url = "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"; + sha512 = "PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="; + }; + }; + "decamelize-1.2.0" = { + name = "decamelize"; + packageName = "decamelize"; + version = "1.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz"; + sha512 = "z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="; + }; + }; + "deep-extend-0.6.0" = { + name = "deep-extend"; + packageName = "deep-extend"; + version = "0.6.0"; + src = fetchurl { + url = "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz"; + sha512 = "LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="; + }; + }; + "delegates-1.0.0" = { + name = "delegates"; + packageName = "delegates"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz"; + sha512 = "bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="; + }; + }; + "detect-libc-2.0.1" = { + name = "detect-libc"; + packageName = "detect-libc"; + version = "2.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz"; + sha512 = "463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w=="; + }; + }; + "dot-prop-3.0.0" = { + name = "dot-prop"; + packageName = "dot-prop"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz"; + sha512 = "k4ELWeEU3uCcwub7+dWydqQBRjAjkV9L33HjVRG5Xo2QybI6ja/v+4W73SRi8ubCqJz0l9XsTP1NbewfyqaSlw=="; + }; + }; + "duplexer2-0.1.4" = { + name = "duplexer2"; + packageName = "duplexer2"; + version = "0.1.4"; + src = fetchurl { + url = "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz"; + sha512 = "asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA=="; + }; + }; + "ejs-2.7.4" = { + name = "ejs"; + packageName = "ejs"; + version = "2.7.4"; + src = fetchurl { + url = "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz"; + sha512 = "7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA=="; + }; + }; + "emoji-regex-8.0.0" = { + name = "emoji-regex"; + packageName = "emoji-regex"; + version = "8.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz"; + sha512 = "MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="; + }; + }; + "encoding-0.1.13" = { + name = "encoding"; + packageName = "encoding"; + version = "0.1.13"; + src = fetchurl { + url = "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz"; + sha512 = "ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A=="; + }; + }; + "error-ex-1.3.2" = { + name = "error-ex"; + packageName = "error-ex"; + version = "1.3.2"; + src = fetchurl { + url = "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz"; + sha512 = "7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g=="; + }; + }; + "escape-string-regexp-1.0.5" = { + name = "escape-string-regexp"; + packageName = "escape-string-regexp"; + version = "1.0.5"; + src = fetchurl { + url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"; + sha512 = "vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="; + }; + }; + "esprima-4.0.1" = { + name = "esprima"; + packageName = "esprima"; + version = "4.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz"; + sha512 = "eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="; + }; + }; + "filled-array-1.1.0" = { + name = "filled-array"; + packageName = "filled-array"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/filled-array/-/filled-array-1.1.0.tgz"; + sha512 = "4XwZ1k4rgoF3Yap59MyXFmiUh2zu9fht32NYPSRYwLv4o8BWHxi60I1VH5kHje14qGMoS3qyfHQUsN16ROOugQ=="; + }; + }; + "find-up-1.1.2" = { + name = "find-up"; + packageName = "find-up"; + version = "1.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz"; + sha512 = "jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA=="; + }; + }; + "fs-minipass-2.1.0" = { + name = "fs-minipass"; + packageName = "fs-minipass"; + version = "2.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz"; + sha512 = "V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg=="; + }; + }; + "fs-promise-0.3.1" = { + name = "fs-promise"; + packageName = "fs-promise"; + version = "0.3.1"; + src = fetchurl { + url = "https://registry.npmjs.org/fs-promise/-/fs-promise-0.3.1.tgz"; + sha512 = "JjkAd4+JaA8VTL1vmX54f7xz6AgBZ9VA6mXlIvN8eJMJGZMVyJ6fdRyjwCP0pIuEkWkM0XcbVz/4F6sFu7OdQg=="; + }; + }; + "fs.realpath-1.0.0" = { + name = "fs.realpath"; + packageName = "fs.realpath"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"; + sha512 = "OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="; + }; + }; + "function-bind-1.1.1" = { + name = "function-bind"; + packageName = "function-bind"; + version = "1.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"; + sha512 = "yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="; + }; + }; + "gauge-3.0.2" = { + name = "gauge"; + packageName = "gauge"; + version = "3.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz"; + sha512 = "+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q=="; + }; + }; + "get-stdin-4.0.1" = { + name = "get-stdin"; + packageName = "get-stdin"; + version = "4.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz"; + sha512 = "F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw=="; + }; + }; + "glob-7.2.3" = { + name = "glob"; + packageName = "glob"; + version = "7.2.3"; + src = fetchurl { + url = "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"; + sha512 = "nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="; + }; + }; + "got-5.7.1" = { + name = "got"; + packageName = "got"; + version = "5.7.1"; + src = fetchurl { + url = "https://registry.npmjs.org/got/-/got-5.7.1.tgz"; + sha512 = "1qd54GLxvVgzuidFmw9ze9umxS3rzhdBH6Wt6BTYrTQUXTN01vGGYXwzLzYLowNx8HBH3/c7kRyvx90fh13i7Q=="; + }; + }; + "graceful-fs-4.2.11" = { + name = "graceful-fs"; + packageName = "graceful-fs"; + version = "4.2.11"; + src = fetchurl { + url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz"; + sha512 = "RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="; + }; + }; + "has-1.0.3" = { + name = "has"; + packageName = "has"; + version = "1.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/has/-/has-1.0.3.tgz"; + sha512 = "f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw=="; + }; + }; + "has-ansi-2.0.0" = { + name = "has-ansi"; + packageName = "has-ansi"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz"; + sha512 = "C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg=="; + }; + }; + "has-unicode-2.0.1" = { + name = "has-unicode"; + packageName = "has-unicode"; + version = "2.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz"; + sha512 = "8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="; + }; + }; + "hepburn-1.2.0" = { + name = "hepburn"; + packageName = "hepburn"; + version = "1.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/hepburn/-/hepburn-1.2.0.tgz"; + sha512 = "xWjHb03dN/ivNcqG2vqA//sHQ0oapYGZ9QV/2TR7m2+cggxzoVpbDxZn9s/Zm1tF88/7a1IpdZyn00tNP5oABA=="; + }; + }; + "hosted-git-info-2.8.9" = { + name = "hosted-git-info"; + packageName = "hosted-git-info"; + version = "2.8.9"; + src = fetchurl { + url = "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz"; + sha512 = "mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw=="; + }; + }; + "https-proxy-agent-5.0.1" = { + name = "https-proxy-agent"; + packageName = "https-proxy-agent"; + version = "5.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz"; + sha512 = "dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA=="; + }; + }; + "iconv-lite-0.6.3" = { + name = "iconv-lite"; + packageName = "iconv-lite"; + version = "0.6.3"; + src = fetchurl { + url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz"; + sha512 = "4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="; + }; + }; + "imurmurhash-0.1.4" = { + name = "imurmurhash"; + packageName = "imurmurhash"; + version = "0.1.4"; + src = fetchurl { + url = "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz"; + sha512 = "JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="; + }; + }; + "indent-string-2.1.0" = { + name = "indent-string"; + packageName = "indent-string"; + version = "2.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz"; + sha512 = "aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg=="; + }; + }; + "inflight-1.0.6" = { + name = "inflight"; + packageName = "inflight"; + version = "1.0.6"; + src = fetchurl { + url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"; + sha512 = "k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA=="; + }; + }; + "inherits-2.0.4" = { + name = "inherits"; + packageName = "inherits"; + version = "2.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"; + sha512 = "k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="; + }; + }; + "ini-1.3.8" = { + name = "ini"; + packageName = "ini"; + version = "1.3.8"; + src = fetchurl { + url = "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz"; + sha512 = "JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="; + }; + }; + "is-arrayish-0.2.1" = { + name = "is-arrayish"; + packageName = "is-arrayish"; + version = "0.2.1"; + src = fetchurl { + url = "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz"; + sha512 = "zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="; + }; + }; + "is-core-module-2.12.0" = { + name = "is-core-module"; + packageName = "is-core-module"; + version = "2.12.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz"; + sha512 = "RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ=="; + }; + }; + "is-finite-1.1.0" = { + name = "is-finite"; + packageName = "is-finite"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz"; + sha512 = "cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w=="; + }; + }; + "is-fullwidth-code-point-1.0.0" = { + name = "is-fullwidth-code-point"; + packageName = "is-fullwidth-code-point"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz"; + sha512 = "1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw=="; + }; + }; + "is-fullwidth-code-point-3.0.0" = { + name = "is-fullwidth-code-point"; + packageName = "is-fullwidth-code-point"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz"; + sha512 = "zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="; + }; + }; + "is-npm-1.0.0" = { + name = "is-npm"; + packageName = "is-npm"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz"; + sha512 = "9r39FIr3d+KD9SbX0sfMsHzb5PP3uimOiwr3YupUaUFG4W0l1U57Rx3utpttV7qz5U3jmrO5auUa04LU9pyHsg=="; + }; + }; + "is-obj-1.0.1" = { + name = "is-obj"; + packageName = "is-obj"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz"; + sha512 = "l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg=="; + }; + }; + "is-redirect-1.0.0" = { + name = "is-redirect"; + packageName = "is-redirect"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz"; + sha512 = "cr/SlUEe5zOGmzvj9bUyC4LVvkNVAXu4GytXLNMr1pny+a65MpQ9IJzFHD5vi7FyJgb4qt27+eS3TuQnqB+RQw=="; + }; + }; + "is-retry-allowed-1.2.0" = { + name = "is-retry-allowed"; + packageName = "is-retry-allowed"; + version = "1.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz"; + sha512 = "RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg=="; + }; + }; + "is-stream-1.1.0" = { + name = "is-stream"; + packageName = "is-stream"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz"; + sha512 = "uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ=="; + }; + }; + "is-utf8-0.2.1" = { + name = "is-utf8"; + packageName = "is-utf8"; + version = "0.2.1"; + src = fetchurl { + url = "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz"; + sha512 = "rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q=="; + }; + }; + "isarray-1.0.0" = { + name = "isarray"; + packageName = "isarray"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"; + sha512 = "VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="; + }; + }; + "js-yaml-3.14.1" = { + name = "js-yaml"; + packageName = "js-yaml"; + version = "3.14.1"; + src = fetchurl { + url = "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz"; + sha512 = "okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g=="; + }; + }; + "keypress-0.1.0" = { + name = "keypress"; + packageName = "keypress"; + version = "0.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz"; + sha512 = "x0yf9PL/nx9Nw9oLL8ZVErFAk85/lslwEP7Vz7s5SI1ODXZIgit3C5qyWjw4DxOuO/3Hb4866SQh28a1V1d+WA=="; + }; + }; + "latest-version-2.0.0" = { + name = "latest-version"; + packageName = "latest-version"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/latest-version/-/latest-version-2.0.0.tgz"; + sha512 = "8925wFYLfWBciewimt0VmDyYw0GFCRcbFSTrZGt4JgQ7lh5jb/kodMlUt0uMaxXdRKVi+7F3ib30N7fTv83ikw=="; + }; + }; + "limax-1.7.0" = { + name = "limax"; + packageName = "limax"; + version = "1.7.0"; + src = fetchurl { + url = "https://registry.npmjs.org/limax/-/limax-1.7.0.tgz"; + sha512 = "ibcGylOXT5vry2JKfKwLWx2tZudRYWm4SzG9AE/cc5zqwW+3nQy/uPLUvfAUChRdmqxVrK6SNepmO7ZY8RoKfA=="; + }; + }; + "load-json-file-1.1.0" = { + name = "load-json-file"; + packageName = "load-json-file"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz"; + sha512 = "cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A=="; + }; + }; + "loud-rejection-1.6.0" = { + name = "loud-rejection"; + packageName = "loud-rejection"; + version = "1.6.0"; + src = fetchurl { + url = "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz"; + sha512 = "RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ=="; + }; + }; + "lowercase-keys-1.0.1" = { + name = "lowercase-keys"; + packageName = "lowercase-keys"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz"; + sha512 = "G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA=="; + }; + }; + "lru-cache-6.0.0" = { + name = "lru-cache"; + packageName = "lru-cache"; + version = "6.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz"; + sha512 = "Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA=="; + }; + }; + "make-dir-3.1.0" = { + name = "make-dir"; + packageName = "make-dir"; + version = "3.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz"; + sha512 = "g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw=="; + }; + }; + "map-obj-1.0.1" = { + name = "map-obj"; + packageName = "map-obj"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz"; + sha512 = "7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg=="; + }; + }; + "meow-3.7.0" = { + name = "meow"; + packageName = "meow"; + version = "3.7.0"; + src = fetchurl { + url = "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz"; + sha512 = "TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA=="; + }; + }; + "minimatch-3.1.2" = { + name = "minimatch"; + packageName = "minimatch"; + version = "3.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"; + sha512 = "J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="; + }; + }; + "minimist-1.2.8" = { + name = "minimist"; + packageName = "minimist"; + version = "1.2.8"; + src = fetchurl { + url = "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz"; + sha512 = "2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="; + }; + }; + "minipass-3.3.6" = { + name = "minipass"; + packageName = "minipass"; + version = "3.3.6"; + src = fetchurl { + url = "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz"; + sha512 = "DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="; + }; + }; + "minipass-5.0.0" = { + name = "minipass"; + packageName = "minipass"; + version = "5.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz"; + sha512 = "3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ=="; + }; + }; + "minizlib-2.1.2" = { + name = "minizlib"; + packageName = "minizlib"; + version = "2.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz"; + sha512 = "bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="; + }; + }; + "mkdirp-0.5.6" = { + name = "mkdirp"; + packageName = "mkdirp"; + version = "0.5.6"; + src = fetchurl { + url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz"; + sha512 = "FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw=="; + }; + }; + "mkdirp-1.0.4" = { + name = "mkdirp"; + packageName = "mkdirp"; + version = "1.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz"; + sha512 = "vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="; + }; + }; + "ms-2.1.2" = { + name = "ms"; + packageName = "ms"; + version = "2.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"; + sha512 = "sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="; + }; + }; + "node-addon-api-3.2.1" = { + name = "node-addon-api"; + packageName = "node-addon-api"; + version = "3.2.1"; + src = fetchurl { + url = "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz"; + sha512 = "mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A=="; + }; + }; + "node-fetch-2.6.10" = { + name = "node-fetch"; + packageName = "node-fetch"; + version = "2.6.10"; + src = fetchurl { + url = "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.10.tgz"; + sha512 = "5YytjUVbwzjE/BX4N62vnPPkGNxlJPwdA9/ArUc4pcM6cYS4Hinuv4VazzwjMGgnWuiQqcemOanib/5PpcsGug=="; + }; + }; + "node-status-codes-1.0.0" = { + name = "node-status-codes"; + packageName = "node-status-codes"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz"; + sha512 = "1cBMgRxdMWE8KeWCqk2RIOrvUb0XCwYfEsY5/y2NlXyq4Y/RumnOZvTj4Nbr77+Vb2C+kyBoRTdkNOS8L3d/aQ=="; + }; + }; + "nodejieba-2.5.2" = { + name = "nodejieba"; + packageName = "nodejieba"; + version = "2.5.2"; + src = fetchurl { + url = "https://registry.npmjs.org/nodejieba/-/nodejieba-2.5.2.tgz"; + sha512 = "ByskJvaBrQ2eV+5M0OeD80S5NKoGaHc9zi3Z/PTKl/95eac2YF8RmWduq9AknLpkQLrLAIcqurrtC6BzjpKwwg=="; + }; + }; + "nopt-5.0.0" = { + name = "nopt"; + packageName = "nopt"; + version = "5.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz"; + sha512 = "Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ=="; + }; + }; + "normalize-package-data-2.5.0" = { + name = "normalize-package-data"; + packageName = "normalize-package-data"; + version = "2.5.0"; + src = fetchurl { + url = "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz"; + sha512 = "/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA=="; + }; + }; + "npmlog-5.0.1" = { + name = "npmlog"; + packageName = "npmlog"; + version = "5.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz"; + sha512 = "AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw=="; + }; + }; + "number-is-nan-1.0.1" = { + name = "number-is-nan"; + packageName = "number-is-nan"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz"; + sha512 = "4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ=="; + }; + }; + "object-assign-4.1.1" = { + name = "object-assign"; + packageName = "object-assign"; + version = "4.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"; + sha512 = "rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="; + }; + }; + "once-1.4.0" = { + name = "once"; + packageName = "once"; + version = "1.4.0"; + src = fetchurl { + url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz"; + sha512 = "lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="; + }; + }; + "open-0.0.5" = { + name = "open"; + packageName = "open"; + version = "0.0.5"; + src = fetchurl { + url = "https://registry.npmjs.org/open/-/open-0.0.5.tgz"; + sha512 = "+X/dJYLapVO1VbC620DhtNZK9U4/kQVaTQp/Gh7cb6UTLYfGZzzU2ZXkWrOA/wBrf4UqAFwtLqXYTxe4tSnWQQ=="; + }; + }; + "os-homedir-1.0.2" = { + name = "os-homedir"; + packageName = "os-homedir"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz"; + sha512 = "B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ=="; + }; + }; + "os-tmpdir-1.0.2" = { + name = "os-tmpdir"; + packageName = "os-tmpdir"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz"; + sha512 = "D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g=="; + }; + }; + "osenv-0.1.5" = { + name = "osenv"; + packageName = "osenv"; + version = "0.1.5"; + src = fetchurl { + url = "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz"; + sha512 = "0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g=="; + }; + }; + "package-json-2.4.0" = { + name = "package-json"; + packageName = "package-json"; + version = "2.4.0"; + src = fetchurl { + url = "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz"; + sha512 = "PRg65iXMTt/uK8Rfh5zvzkUbfAPitF17YaCY+IbHsYgksiLvtzWWTUildHth3mVaZ7871OJ7gtP4LBRBlmAdXg=="; + }; + }; + "parse-json-2.2.0" = { + name = "parse-json"; + packageName = "parse-json"; + version = "2.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz"; + sha512 = "QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ=="; + }; + }; + "path-exists-2.1.0" = { + name = "path-exists"; + packageName = "path-exists"; + version = "2.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz"; + sha512 = "yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ=="; + }; + }; + "path-is-absolute-1.0.1" = { + name = "path-is-absolute"; + packageName = "path-is-absolute"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"; + sha512 = "AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="; + }; + }; + "path-parse-1.0.7" = { + name = "path-parse"; + packageName = "path-parse"; + version = "1.0.7"; + src = fetchurl { + url = "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz"; + sha512 = "LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="; + }; + }; + "path-type-1.1.0" = { + name = "path-type"; + packageName = "path-type"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz"; + sha512 = "S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg=="; + }; + }; + "pify-2.3.0" = { + name = "pify"; + packageName = "pify"; + version = "2.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz"; + sha512 = "udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="; + }; + }; + "pinkie-2.0.4" = { + name = "pinkie"; + packageName = "pinkie"; + version = "2.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz"; + sha512 = "MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg=="; + }; + }; + "pinkie-promise-2.0.1" = { + name = "pinkie-promise"; + packageName = "pinkie-promise"; + version = "2.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz"; + sha512 = "0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw=="; + }; + }; + "pinyin-2.11.2" = { + name = "pinyin"; + packageName = "pinyin"; + version = "2.11.2"; + src = fetchurl { + url = "https://registry.npmjs.org/pinyin/-/pinyin-2.11.2.tgz"; + sha512 = "tAWDBcowj09j/vLUjty98nVqrbTVNhutf1VcyID4p0sxTFPzRyXw7n7Ic0HQwBdWFIWrrDP8bYiT64gaT6h3gA=="; + }; + }; + "prepend-http-1.0.4" = { + name = "prepend-http"; + packageName = "prepend-http"; + version = "1.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz"; + sha512 = "PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg=="; + }; + }; + "process-nextick-args-2.0.1" = { + name = "process-nextick-args"; + packageName = "process-nextick-args"; + version = "2.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz"; + sha512 = "3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="; + }; + }; + "rc-1.2.8" = { + name = "rc"; + packageName = "rc"; + version = "1.2.8"; + src = fetchurl { + url = "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz"; + sha512 = "y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw=="; + }; + }; + "read-all-stream-3.1.0" = { + name = "read-all-stream"; + packageName = "read-all-stream"; + version = "3.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz"; + sha512 = "DI1drPHbmBcUDWrJ7ull/F2Qb8HkwBncVx8/RpKYFSIACYaVRQReISYPdZz/mt1y1+qMCOrfReTopERmaxtP6w=="; + }; + }; + "read-pkg-1.1.0" = { + name = "read-pkg"; + packageName = "read-pkg"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz"; + sha512 = "7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ=="; + }; + }; + "read-pkg-up-1.0.1" = { + name = "read-pkg-up"; + packageName = "read-pkg-up"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz"; + sha512 = "WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A=="; + }; + }; + "readable-stream-2.3.8" = { + name = "readable-stream"; + packageName = "readable-stream"; + version = "2.3.8"; + src = fetchurl { + url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz"; + sha512 = "8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="; + }; + }; + "readable-stream-3.6.2" = { + name = "readable-stream"; + packageName = "readable-stream"; + version = "3.6.2"; + src = fetchurl { + url = "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz"; + sha512 = "9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="; + }; + }; + "redent-1.0.0" = { + name = "redent"; + packageName = "redent"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz"; + sha512 = "qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g=="; + }; + }; + "registry-auth-token-3.4.0" = { + name = "registry-auth-token"; + packageName = "registry-auth-token"; + version = "3.4.0"; + src = fetchurl { + url = "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz"; + sha512 = "4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A=="; + }; + }; + "registry-url-3.1.0" = { + name = "registry-url"; + packageName = "registry-url"; + version = "3.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz"; + sha512 = "ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA=="; + }; + }; + "repeating-2.0.1" = { + name = "repeating"; + packageName = "repeating"; + version = "2.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz"; + sha512 = "ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A=="; + }; + }; + "resolve-1.22.3" = { + name = "resolve"; + packageName = "resolve"; + version = "1.22.3"; + src = fetchurl { + url = "https://registry.npmjs.org/resolve/-/resolve-1.22.3.tgz"; + sha512 = "P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw=="; + }; + }; + "rimraf-3.0.2" = { + name = "rimraf"; + packageName = "rimraf"; + version = "3.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz"; + sha512 = "JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA=="; + }; + }; + "safe-buffer-5.1.2" = { + name = "safe-buffer"; + packageName = "safe-buffer"; + version = "5.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"; + sha512 = "Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="; + }; + }; + "safe-buffer-5.2.1" = { + name = "safe-buffer"; + packageName = "safe-buffer"; + version = "5.2.1"; + src = fetchurl { + url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"; + sha512 = "rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="; + }; + }; + "safer-buffer-2.1.2" = { + name = "safer-buffer"; + packageName = "safer-buffer"; + version = "2.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"; + sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="; + }; + }; + "semver-5.7.1" = { + name = "semver"; + packageName = "semver"; + version = "5.7.1"; + src = fetchurl { + url = "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz"; + sha512 = "sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="; + }; + }; + "semver-6.3.0" = { + name = "semver"; + packageName = "semver"; + version = "6.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz"; + sha512 = "b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="; + }; + }; + "semver-7.5.0" = { + name = "semver"; + packageName = "semver"; + version = "7.5.0"; + src = fetchurl { + url = "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz"; + sha512 = "+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA=="; + }; + }; + "semver-diff-2.1.0" = { + name = "semver-diff"; + packageName = "semver-diff"; + version = "2.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz"; + sha512 = "gL8F8L4ORwsS0+iQ34yCYv///jsOq0ZL7WP55d1HnJ32o7tyFYEFQZQA22mrLIacZdU6xecaBBZ+uEiffGNyXw=="; + }; + }; + "set-blocking-2.0.0" = { + name = "set-blocking"; + packageName = "set-blocking"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz"; + sha512 = "KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="; + }; + }; + "signal-exit-3.0.7" = { + name = "signal-exit"; + packageName = "signal-exit"; + version = "3.0.7"; + src = fetchurl { + url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz"; + sha512 = "wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="; + }; + }; + "slide-1.1.6" = { + name = "slide"; + packageName = "slide"; + version = "1.1.6"; + src = fetchurl { + url = "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz"; + sha512 = "NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw=="; + }; + }; + "spdx-correct-3.2.0" = { + name = "spdx-correct"; + packageName = "spdx-correct"; + version = "3.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz"; + sha512 = "kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA=="; + }; + }; + "spdx-exceptions-2.3.0" = { + name = "spdx-exceptions"; + packageName = "spdx-exceptions"; + version = "2.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz"; + sha512 = "/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A=="; + }; + }; + "spdx-expression-parse-3.0.1" = { + name = "spdx-expression-parse"; + packageName = "spdx-expression-parse"; + version = "3.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz"; + sha512 = "cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q=="; + }; + }; + "spdx-license-ids-3.0.13" = { + name = "spdx-license-ids"; + packageName = "spdx-license-ids"; + version = "3.0.13"; + src = fetchurl { + url = "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz"; + sha512 = "XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w=="; + }; + }; + "speakingurl-14.0.1" = { + name = "speakingurl"; + packageName = "speakingurl"; + version = "14.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz"; + sha512 = "1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ=="; + }; + }; + "sprintf-js-1.0.3" = { + name = "sprintf-js"; + packageName = "sprintf-js"; + version = "1.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz"; + sha512 = "D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="; + }; + }; + "string-width-1.0.2" = { + name = "string-width"; + packageName = "string-width"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz"; + sha512 = "0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw=="; + }; + }; + "string-width-4.2.3" = { + name = "string-width"; + packageName = "string-width"; + version = "4.2.3"; + src = fetchurl { + url = "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"; + sha512 = "wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="; + }; + }; + "string_decoder-1.1.1" = { + name = "string_decoder"; + packageName = "string_decoder"; + version = "1.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"; + sha512 = "n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="; + }; + }; + "string_decoder-1.3.0" = { + name = "string_decoder"; + packageName = "string_decoder"; + version = "1.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"; + sha512 = "hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="; + }; + }; + "strip-ansi-3.0.1" = { + name = "strip-ansi"; + packageName = "strip-ansi"; + version = "3.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz"; + sha512 = "VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg=="; + }; + }; + "strip-ansi-6.0.1" = { + name = "strip-ansi"; + packageName = "strip-ansi"; + version = "6.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"; + sha512 = "Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="; + }; + }; + "strip-bom-2.0.0" = { + name = "strip-bom"; + packageName = "strip-bom"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz"; + sha512 = "kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g=="; + }; + }; + "strip-indent-1.0.1" = { + name = "strip-indent"; + packageName = "strip-indent"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz"; + sha512 = "I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA=="; + }; + }; + "strip-json-comments-2.0.1" = { + name = "strip-json-comments"; + packageName = "strip-json-comments"; + version = "2.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz"; + sha512 = "4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ=="; + }; + }; + "supports-color-2.0.0" = { + name = "supports-color"; + packageName = "supports-color"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz"; + sha512 = "KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g=="; + }; + }; + "supports-preserve-symlinks-flag-1.0.0" = { + name = "supports-preserve-symlinks-flag"; + packageName = "supports-preserve-symlinks-flag"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"; + sha512 = "ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="; + }; + }; + "tar-6.1.14" = { + name = "tar"; + packageName = "tar"; + version = "6.1.14"; + src = fetchurl { + url = "https://registry.npmjs.org/tar/-/tar-6.1.14.tgz"; + sha512 = "piERznXu0U7/pW7cdSn7hjqySIVTYT6F76icmFk7ptU7dDYlXTm5r9A6K04R2vU3olYgoKeo1Cg3eeu5nhftAw=="; + }; + }; + "timed-out-3.1.3" = { + name = "timed-out"; + packageName = "timed-out"; + version = "3.1.3"; + src = fetchurl { + url = "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz"; + sha512 = "3RB4qgvPkxF/FGPnrzaWLhW1rxNK2sdH0mFjbhxkfTR6QXvcM3EtYm9L44UrhODZrZ+yhDXeMncLqi8QXn2MJg=="; + }; + }; + "tr46-0.0.3" = { + name = "tr46"; + packageName = "tr46"; + version = "0.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz"; + sha512 = "N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="; + }; + }; + "trim-newlines-1.0.0" = { + name = "trim-newlines"; + packageName = "trim-newlines"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz"; + sha512 = "Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw=="; + }; + }; + "unzip-response-1.0.2" = { + name = "unzip-response"; + packageName = "unzip-response"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz"; + sha512 = "pwCcjjhEcpW45JZIySExBHYv5Y9EeL2OIGEfrSKp2dMUFGFv4CpvZkwJbVge8OvGH2BNNtJBx67DuKuJhf+N5Q=="; + }; + }; + "update-notifier-0.6.3" = { + name = "update-notifier"; + packageName = "update-notifier"; + version = "0.6.3"; + src = fetchurl { + url = "https://registry.npmjs.org/update-notifier/-/update-notifier-0.6.3.tgz"; + sha512 = "Gjt2a7j+qL2wvazHPSkWZOay4NfZe7WpV63OtrKbK6Uxyta0U1aS7f++XSNpljIinKYLC8wrNfPHYkPmV5AhbQ=="; + }; + }; + "url-parse-lax-1.0.0" = { + name = "url-parse-lax"; + packageName = "url-parse-lax"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz"; + sha512 = "BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA=="; + }; + }; + "util-deprecate-1.0.2" = { + name = "util-deprecate"; + packageName = "util-deprecate"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"; + sha512 = "EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="; + }; + }; + "uuid-2.0.3" = { + name = "uuid"; + packageName = "uuid"; + version = "2.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz"; + sha512 = "FULf7fayPdpASncVy4DLh3xydlXEJJpvIELjYjNeQWYUZ9pclcpvCZSr2gkmN2FrrGcI7G/cJsIEwk5/8vfXpg=="; + }; + }; + "validate-npm-package-license-3.0.4" = { + name = "validate-npm-package-license"; + packageName = "validate-npm-package-license"; + version = "3.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz"; + sha512 = "DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew=="; + }; + }; + "webidl-conversions-3.0.1" = { + name = "webidl-conversions"; + packageName = "webidl-conversions"; + version = "3.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz"; + sha512 = "2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="; + }; + }; + "whatwg-url-5.0.0" = { + name = "whatwg-url"; + packageName = "whatwg-url"; + version = "5.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz"; + sha512 = "saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="; + }; + }; + "wide-align-1.1.5" = { + name = "wide-align"; + packageName = "wide-align"; + version = "1.1.5"; + src = fetchurl { + url = "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz"; + sha512 = "eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg=="; + }; + }; + "widest-line-1.0.0" = { + name = "widest-line"; + packageName = "widest-line"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz"; + sha512 = "r5vvGtqsHUHn98V0jURY4Ts86xJf6+SzK9rpWdV8/73nURB3WFPIHd67aOvPw2fSuunIyHjAUqiJ2TY0x4E5gw=="; + }; + }; + "wrappy-1.0.2" = { + name = "wrappy"; + packageName = "wrappy"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"; + sha512 = "l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="; + }; + }; + "write-file-atomic-1.3.4" = { + name = "write-file-atomic"; + packageName = "write-file-atomic"; + version = "1.3.4"; + src = fetchurl { + url = "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz"; + sha512 = "SdrHoC/yVBPpV0Xq/mUZQIpW2sWXAShb/V4pomcJXh92RuaO+f3UTWItiR3Px+pLnV2PvC2/bfn5cwr5X6Vfxw=="; + }; + }; + "xdg-basedir-2.0.0" = { + name = "xdg-basedir"; + packageName = "xdg-basedir"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz"; + sha512 = "NF1pPn594TaRSUO/HARoB4jK8I+rWgcpVlpQCK6/6o5PHyLUt2CSiDrpUZbQ6rROck+W2EwF8mBJcTs+W98J9w=="; + }; + }; + "yallist-4.0.0" = { + name = "yallist"; + packageName = "yallist"; + version = "4.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"; + sha512 = "3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="; + }; + }; + }; +in +{ + base16-builder = nodeEnv.buildNodePackage { + name = "base16-builder"; + packageName = "base16-builder"; + version = "1.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/base16-builder/-/base16-builder-1.3.0.tgz"; + sha512 = "fXzZ8Pn1mVA0POzZJ1tQzFHlHdVHpR+z31xlbECEy+7yW3jdkYvFtZl9V0SPJSwkOA5aPQALqi4rM0BCtJiAVA=="; + }; + dependencies = [ + sources."@mapbox/node-pre-gyp-1.0.10" + sources."abbrev-1.1.1" + sources."agent-base-6.0.2" + sources."ansi-regex-2.1.1" + sources."ansi-styles-2.2.1" + sources."any-promise-0.1.0" + sources."aproba-2.0.0" + sources."are-we-there-yet-2.0.0" + sources."argparse-1.0.10" + sources."array-find-index-1.0.2" + sources."balanced-match-1.0.2" + (sources."boxen-0.3.1" // { + dependencies = [ + sources."is-fullwidth-code-point-1.0.0" + sources."string-width-1.0.2" + ]; + }) + sources."brace-expansion-1.1.11" + sources."bulk-replace-0.0.1" + sources."camelcase-2.1.1" + sources."camelcase-keys-2.1.0" + sources."capture-stack-trace-1.0.2" + sources."chalk-1.1.3" + sources."chownr-2.0.0" + sources."code-point-at-1.1.0" + sources."color-support-1.1.3" + sources."commander-1.1.1" + sources."concat-map-0.0.1" + (sources."configstore-2.1.0" // { + dependencies = [ + sources."mkdirp-0.5.6" + ]; + }) + sources."console-control-strings-1.1.0" + sources."core-util-is-1.0.3" + sources."create-error-class-3.0.2" + sources."currently-unhandled-0.4.1" + sources."debug-4.3.4" + sources."decamelize-1.2.0" + sources."deep-extend-0.6.0" + sources."delegates-1.0.0" + sources."detect-libc-2.0.1" + sources."dot-prop-3.0.0" + (sources."duplexer2-0.1.4" // { + dependencies = [ + sources."readable-stream-2.3.8" + sources."safe-buffer-5.1.2" + sources."string_decoder-1.1.1" + ]; + }) + sources."ejs-2.7.4" + sources."emoji-regex-8.0.0" + sources."encoding-0.1.13" + sources."error-ex-1.3.2" + sources."escape-string-regexp-1.0.5" + sources."esprima-4.0.1" + sources."filled-array-1.1.0" + sources."find-up-1.1.2" + (sources."fs-minipass-2.1.0" // { + dependencies = [ + sources."minipass-3.3.6" + ]; + }) + sources."fs-promise-0.3.1" + sources."fs.realpath-1.0.0" + sources."function-bind-1.1.1" + (sources."gauge-3.0.2" // { + dependencies = [ + sources."ansi-regex-5.0.1" + sources."strip-ansi-6.0.1" + ]; + }) + sources."get-stdin-4.0.1" + sources."glob-7.2.3" + (sources."got-5.7.1" // { + dependencies = [ + sources."readable-stream-2.3.8" + sources."safe-buffer-5.1.2" + sources."string_decoder-1.1.1" + ]; + }) + sources."graceful-fs-4.2.11" + sources."has-1.0.3" + sources."has-ansi-2.0.0" + sources."has-unicode-2.0.1" + sources."hepburn-1.2.0" + sources."hosted-git-info-2.8.9" + sources."https-proxy-agent-5.0.1" + sources."iconv-lite-0.6.3" + sources."imurmurhash-0.1.4" + sources."indent-string-2.1.0" + sources."inflight-1.0.6" + sources."inherits-2.0.4" + sources."ini-1.3.8" + sources."is-arrayish-0.2.1" + sources."is-core-module-2.12.0" + sources."is-finite-1.1.0" + sources."is-fullwidth-code-point-3.0.0" + sources."is-npm-1.0.0" + sources."is-obj-1.0.1" + sources."is-redirect-1.0.0" + sources."is-retry-allowed-1.2.0" + sources."is-stream-1.1.0" + sources."is-utf8-0.2.1" + sources."isarray-1.0.0" + sources."js-yaml-3.14.1" + sources."keypress-0.1.0" + sources."latest-version-2.0.0" + sources."limax-1.7.0" + sources."load-json-file-1.1.0" + sources."loud-rejection-1.6.0" + sources."lowercase-keys-1.0.1" + sources."lru-cache-6.0.0" + (sources."make-dir-3.1.0" // { + dependencies = [ + sources."semver-6.3.0" + ]; + }) + sources."map-obj-1.0.1" + sources."meow-3.7.0" + sources."minimatch-3.1.2" + sources."minimist-1.2.8" + sources."minipass-5.0.0" + (sources."minizlib-2.1.2" // { + dependencies = [ + sources."minipass-3.3.6" + ]; + }) + sources."mkdirp-1.0.4" + sources."ms-2.1.2" + sources."node-addon-api-3.2.1" + sources."node-fetch-2.6.10" + sources."node-status-codes-1.0.0" + sources."nodejieba-2.5.2" + sources."nopt-5.0.0" + (sources."normalize-package-data-2.5.0" // { + dependencies = [ + sources."semver-5.7.1" + ]; + }) + sources."npmlog-5.0.1" + sources."number-is-nan-1.0.1" + sources."object-assign-4.1.1" + sources."once-1.4.0" + sources."open-0.0.5" + sources."os-homedir-1.0.2" + sources."os-tmpdir-1.0.2" + sources."osenv-0.1.5" + (sources."package-json-2.4.0" // { + dependencies = [ + sources."semver-5.7.1" + ]; + }) + sources."parse-json-2.2.0" + sources."path-exists-2.1.0" + sources."path-is-absolute-1.0.1" + sources."path-parse-1.0.7" + sources."path-type-1.1.0" + sources."pify-2.3.0" + sources."pinkie-2.0.4" + sources."pinkie-promise-2.0.1" + sources."pinyin-2.11.2" + sources."prepend-http-1.0.4" + sources."process-nextick-args-2.0.1" + sources."rc-1.2.8" + (sources."read-all-stream-3.1.0" // { + dependencies = [ + sources."readable-stream-2.3.8" + sources."safe-buffer-5.1.2" + sources."string_decoder-1.1.1" + ]; + }) + sources."read-pkg-1.1.0" + sources."read-pkg-up-1.0.1" + sources."readable-stream-3.6.2" + sources."redent-1.0.0" + sources."registry-auth-token-3.4.0" + sources."registry-url-3.1.0" + sources."repeating-2.0.1" + sources."resolve-1.22.3" + sources."rimraf-3.0.2" + sources."safe-buffer-5.2.1" + sources."safer-buffer-2.1.2" + sources."semver-7.5.0" + (sources."semver-diff-2.1.0" // { + dependencies = [ + sources."semver-5.7.1" + ]; + }) + sources."set-blocking-2.0.0" + sources."signal-exit-3.0.7" + sources."slide-1.1.6" + sources."spdx-correct-3.2.0" + sources."spdx-exceptions-2.3.0" + sources."spdx-expression-parse-3.0.1" + sources."spdx-license-ids-3.0.13" + sources."speakingurl-14.0.1" + sources."sprintf-js-1.0.3" + (sources."string-width-4.2.3" // { + dependencies = [ + sources."ansi-regex-5.0.1" + sources."strip-ansi-6.0.1" + ]; + }) + sources."string_decoder-1.3.0" + sources."strip-ansi-3.0.1" + sources."strip-bom-2.0.0" + sources."strip-indent-1.0.1" + sources."strip-json-comments-2.0.1" + sources."supports-color-2.0.0" + sources."supports-preserve-symlinks-flag-1.0.0" + sources."tar-6.1.14" + sources."timed-out-3.1.3" + sources."tr46-0.0.3" + sources."trim-newlines-1.0.0" + sources."unzip-response-1.0.2" + sources."update-notifier-0.6.3" + sources."url-parse-lax-1.0.0" + sources."util-deprecate-1.0.2" + sources."uuid-2.0.3" + sources."validate-npm-package-license-3.0.4" + sources."webidl-conversions-3.0.1" + sources."whatwg-url-5.0.0" + sources."wide-align-1.1.5" + (sources."widest-line-1.0.0" // { + dependencies = [ + sources."is-fullwidth-code-point-1.0.0" + sources."string-width-1.0.2" + ]; + }) + sources."wrappy-1.0.2" + sources."write-file-atomic-1.3.4" + sources."xdg-basedir-2.0.0" + sources."yallist-4.0.0" + ]; + buildInputs = globalBuildInputs; + meta = { + description = "Base16 Builder is a nimble command-line tool that generates themes for your favourite programs."; + homepage = "https://github.com/base16-builder/base16-builder#readme"; + license = "MIT"; + }; + production = true; + bypassCache = true; + reconstructLock = true; + }; +} diff --git a/nixpkgs/pkgs/misc/base16-builder/node-packages.json b/nixpkgs/pkgs/misc/base16-builder/node-packages.json new file mode 100644 index 000000000000..3266c128bc4e --- /dev/null +++ b/nixpkgs/pkgs/misc/base16-builder/node-packages.json @@ -0,0 +1,3 @@ +[ + "base16-builder" +] diff --git a/nixpkgs/pkgs/misc/base16-builder/node-packages.nix b/nixpkgs/pkgs/misc/base16-builder/node-packages.nix new file mode 100644 index 000000000000..2bf491c2e665 --- /dev/null +++ b/nixpkgs/pkgs/misc/base16-builder/node-packages.nix @@ -0,0 +1,21 @@ +# This file has been generated by node2nix 1.11.1. Do not edit! + +{pkgs ? import <nixpkgs> { + inherit system; + }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs_18"}: + +let + globalBuildInputs = pkgs.lib.attrValues (import ./supplement.nix { + inherit nodeEnv; + inherit (pkgs) stdenv lib nix-gitignore fetchurl fetchgit; + }); + nodeEnv = import ../../development/node-packages/node-env.nix { + inherit (pkgs) stdenv lib python2 runCommand writeTextFile writeShellScript; + inherit pkgs nodejs; + libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null; + }; +in +import ./node-packages-generated.nix { + inherit (pkgs) fetchurl nix-gitignore stdenv lib fetchgit; + inherit nodeEnv globalBuildInputs; +} diff --git a/nixpkgs/pkgs/misc/base16-builder/supplement.json b/nixpkgs/pkgs/misc/base16-builder/supplement.json new file mode 100644 index 000000000000..2838e627165f --- /dev/null +++ b/nixpkgs/pkgs/misc/base16-builder/supplement.json @@ -0,0 +1,3 @@ +[ + "node-pre-gyp" +] diff --git a/nixpkgs/pkgs/misc/base16-builder/supplement.nix b/nixpkgs/pkgs/misc/base16-builder/supplement.nix new file mode 100644 index 000000000000..e6abbfeb42ee --- /dev/null +++ b/nixpkgs/pkgs/misc/base16-builder/supplement.nix @@ -0,0 +1,693 @@ +# This file has been generated by node2nix 1.11.1. Do not edit! + +{nodeEnv, fetchurl, fetchgit, nix-gitignore, stdenv, lib, globalBuildInputs ? []}: + +let + sources = { + "abbrev-1.1.1" = { + name = "abbrev"; + packageName = "abbrev"; + version = "1.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz"; + sha512 = "nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="; + }; + }; + "ansi-regex-2.1.1" = { + name = "ansi-regex"; + packageName = "ansi-regex"; + version = "2.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"; + sha512 = "TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA=="; + }; + }; + "aproba-1.2.0" = { + name = "aproba"; + packageName = "aproba"; + version = "1.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz"; + sha512 = "Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="; + }; + }; + "are-we-there-yet-1.1.7" = { + name = "are-we-there-yet"; + packageName = "are-we-there-yet"; + version = "1.1.7"; + src = fetchurl { + url = "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz"; + sha512 = "nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g=="; + }; + }; + "balanced-match-1.0.2" = { + name = "balanced-match"; + packageName = "balanced-match"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"; + sha512 = "3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="; + }; + }; + "brace-expansion-1.1.11" = { + name = "brace-expansion"; + packageName = "brace-expansion"; + version = "1.1.11"; + src = fetchurl { + url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"; + sha512 = "iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="; + }; + }; + "chownr-1.1.4" = { + name = "chownr"; + packageName = "chownr"; + version = "1.1.4"; + src = fetchurl { + url = "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz"; + sha512 = "jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="; + }; + }; + "code-point-at-1.1.0" = { + name = "code-point-at"; + packageName = "code-point-at"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz"; + sha512 = "RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA=="; + }; + }; + "concat-map-0.0.1" = { + name = "concat-map"; + packageName = "concat-map"; + version = "0.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"; + sha512 = "/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="; + }; + }; + "console-control-strings-1.1.0" = { + name = "console-control-strings"; + packageName = "console-control-strings"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz"; + sha512 = "ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="; + }; + }; + "core-util-is-1.0.3" = { + name = "core-util-is"; + packageName = "core-util-is"; + version = "1.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz"; + sha512 = "ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="; + }; + }; + "debug-3.2.7" = { + name = "debug"; + packageName = "debug"; + version = "3.2.7"; + src = fetchurl { + url = "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz"; + sha512 = "CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="; + }; + }; + "deep-extend-0.6.0" = { + name = "deep-extend"; + packageName = "deep-extend"; + version = "0.6.0"; + src = fetchurl { + url = "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz"; + sha512 = "LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="; + }; + }; + "delegates-1.0.0" = { + name = "delegates"; + packageName = "delegates"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz"; + sha512 = "bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="; + }; + }; + "detect-libc-1.0.3" = { + name = "detect-libc"; + packageName = "detect-libc"; + version = "1.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz"; + sha512 = "pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg=="; + }; + }; + "fs-minipass-1.2.7" = { + name = "fs-minipass"; + packageName = "fs-minipass"; + version = "1.2.7"; + src = fetchurl { + url = "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz"; + sha512 = "GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA=="; + }; + }; + "fs.realpath-1.0.0" = { + name = "fs.realpath"; + packageName = "fs.realpath"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"; + sha512 = "OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="; + }; + }; + "gauge-2.7.4" = { + name = "gauge"; + packageName = "gauge"; + version = "2.7.4"; + src = fetchurl { + url = "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz"; + sha512 = "14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg=="; + }; + }; + "glob-7.2.3" = { + name = "glob"; + packageName = "glob"; + version = "7.2.3"; + src = fetchurl { + url = "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"; + sha512 = "nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="; + }; + }; + "has-unicode-2.0.1" = { + name = "has-unicode"; + packageName = "has-unicode"; + version = "2.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz"; + sha512 = "8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="; + }; + }; + "iconv-lite-0.4.24" = { + name = "iconv-lite"; + packageName = "iconv-lite"; + version = "0.4.24"; + src = fetchurl { + url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz"; + sha512 = "v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="; + }; + }; + "ignore-walk-3.0.4" = { + name = "ignore-walk"; + packageName = "ignore-walk"; + version = "3.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz"; + sha512 = "PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ=="; + }; + }; + "inflight-1.0.6" = { + name = "inflight"; + packageName = "inflight"; + version = "1.0.6"; + src = fetchurl { + url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"; + sha512 = "k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA=="; + }; + }; + "inherits-2.0.4" = { + name = "inherits"; + packageName = "inherits"; + version = "2.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"; + sha512 = "k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="; + }; + }; + "ini-1.3.8" = { + name = "ini"; + packageName = "ini"; + version = "1.3.8"; + src = fetchurl { + url = "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz"; + sha512 = "JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="; + }; + }; + "is-fullwidth-code-point-1.0.0" = { + name = "is-fullwidth-code-point"; + packageName = "is-fullwidth-code-point"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz"; + sha512 = "1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw=="; + }; + }; + "isarray-1.0.0" = { + name = "isarray"; + packageName = "isarray"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"; + sha512 = "VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="; + }; + }; + "minimatch-3.1.2" = { + name = "minimatch"; + packageName = "minimatch"; + version = "3.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"; + sha512 = "J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="; + }; + }; + "minimist-1.2.8" = { + name = "minimist"; + packageName = "minimist"; + version = "1.2.8"; + src = fetchurl { + url = "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz"; + sha512 = "2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="; + }; + }; + "minipass-2.9.0" = { + name = "minipass"; + packageName = "minipass"; + version = "2.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz"; + sha512 = "wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg=="; + }; + }; + "minizlib-1.3.3" = { + name = "minizlib"; + packageName = "minizlib"; + version = "1.3.3"; + src = fetchurl { + url = "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz"; + sha512 = "6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q=="; + }; + }; + "mkdirp-0.5.6" = { + name = "mkdirp"; + packageName = "mkdirp"; + version = "0.5.6"; + src = fetchurl { + url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz"; + sha512 = "FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw=="; + }; + }; + "ms-2.1.3" = { + name = "ms"; + packageName = "ms"; + version = "2.1.3"; + src = fetchurl { + url = "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"; + sha512 = "6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="; + }; + }; + "needle-2.9.1" = { + name = "needle"; + packageName = "needle"; + version = "2.9.1"; + src = fetchurl { + url = "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz"; + sha512 = "6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ=="; + }; + }; + "nopt-4.0.3" = { + name = "nopt"; + packageName = "nopt"; + version = "4.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz"; + sha512 = "CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg=="; + }; + }; + "npm-bundled-1.1.2" = { + name = "npm-bundled"; + packageName = "npm-bundled"; + version = "1.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz"; + sha512 = "x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ=="; + }; + }; + "npm-normalize-package-bin-1.0.1" = { + name = "npm-normalize-package-bin"; + packageName = "npm-normalize-package-bin"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz"; + sha512 = "EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA=="; + }; + }; + "npm-packlist-1.4.8" = { + name = "npm-packlist"; + packageName = "npm-packlist"; + version = "1.4.8"; + src = fetchurl { + url = "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz"; + sha512 = "5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A=="; + }; + }; + "npmlog-4.1.2" = { + name = "npmlog"; + packageName = "npmlog"; + version = "4.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz"; + sha512 = "2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg=="; + }; + }; + "number-is-nan-1.0.1" = { + name = "number-is-nan"; + packageName = "number-is-nan"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz"; + sha512 = "4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ=="; + }; + }; + "object-assign-4.1.1" = { + name = "object-assign"; + packageName = "object-assign"; + version = "4.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"; + sha512 = "rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="; + }; + }; + "once-1.4.0" = { + name = "once"; + packageName = "once"; + version = "1.4.0"; + src = fetchurl { + url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz"; + sha512 = "lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="; + }; + }; + "os-homedir-1.0.2" = { + name = "os-homedir"; + packageName = "os-homedir"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz"; + sha512 = "B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ=="; + }; + }; + "os-tmpdir-1.0.2" = { + name = "os-tmpdir"; + packageName = "os-tmpdir"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz"; + sha512 = "D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g=="; + }; + }; + "osenv-0.1.5" = { + name = "osenv"; + packageName = "osenv"; + version = "0.1.5"; + src = fetchurl { + url = "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz"; + sha512 = "0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g=="; + }; + }; + "path-is-absolute-1.0.1" = { + name = "path-is-absolute"; + packageName = "path-is-absolute"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"; + sha512 = "AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="; + }; + }; + "process-nextick-args-2.0.1" = { + name = "process-nextick-args"; + packageName = "process-nextick-args"; + version = "2.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz"; + sha512 = "3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="; + }; + }; + "rc-1.2.8" = { + name = "rc"; + packageName = "rc"; + version = "1.2.8"; + src = fetchurl { + url = "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz"; + sha512 = "y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw=="; + }; + }; + "readable-stream-2.3.8" = { + name = "readable-stream"; + packageName = "readable-stream"; + version = "2.3.8"; + src = fetchurl { + url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz"; + sha512 = "8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="; + }; + }; + "rimraf-2.7.1" = { + name = "rimraf"; + packageName = "rimraf"; + version = "2.7.1"; + src = fetchurl { + url = "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz"; + sha512 = "uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w=="; + }; + }; + "safe-buffer-5.1.2" = { + name = "safe-buffer"; + packageName = "safe-buffer"; + version = "5.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"; + sha512 = "Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="; + }; + }; + "safe-buffer-5.2.1" = { + name = "safe-buffer"; + packageName = "safe-buffer"; + version = "5.2.1"; + src = fetchurl { + url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"; + sha512 = "rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="; + }; + }; + "safer-buffer-2.1.2" = { + name = "safer-buffer"; + packageName = "safer-buffer"; + version = "2.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"; + sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="; + }; + }; + "sax-1.2.4" = { + name = "sax"; + packageName = "sax"; + version = "1.2.4"; + src = fetchurl { + url = "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz"; + sha512 = "NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="; + }; + }; + "semver-5.7.1" = { + name = "semver"; + packageName = "semver"; + version = "5.7.1"; + src = fetchurl { + url = "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz"; + sha512 = "sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="; + }; + }; + "set-blocking-2.0.0" = { + name = "set-blocking"; + packageName = "set-blocking"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz"; + sha512 = "KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="; + }; + }; + "signal-exit-3.0.7" = { + name = "signal-exit"; + packageName = "signal-exit"; + version = "3.0.7"; + src = fetchurl { + url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz"; + sha512 = "wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="; + }; + }; + "string-width-1.0.2" = { + name = "string-width"; + packageName = "string-width"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz"; + sha512 = "0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw=="; + }; + }; + "string_decoder-1.1.1" = { + name = "string_decoder"; + packageName = "string_decoder"; + version = "1.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"; + sha512 = "n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="; + }; + }; + "strip-ansi-3.0.1" = { + name = "strip-ansi"; + packageName = "strip-ansi"; + version = "3.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz"; + sha512 = "VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg=="; + }; + }; + "strip-json-comments-2.0.1" = { + name = "strip-json-comments"; + packageName = "strip-json-comments"; + version = "2.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz"; + sha512 = "4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ=="; + }; + }; + "tar-4.4.19" = { + name = "tar"; + packageName = "tar"; + version = "4.4.19"; + src = fetchurl { + url = "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz"; + sha512 = "a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA=="; + }; + }; + "util-deprecate-1.0.2" = { + name = "util-deprecate"; + packageName = "util-deprecate"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"; + sha512 = "EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="; + }; + }; + "wide-align-1.1.5" = { + name = "wide-align"; + packageName = "wide-align"; + version = "1.1.5"; + src = fetchurl { + url = "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz"; + sha512 = "eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg=="; + }; + }; + "wrappy-1.0.2" = { + name = "wrappy"; + packageName = "wrappy"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"; + sha512 = "l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="; + }; + }; + "yallist-3.1.1" = { + name = "yallist"; + packageName = "yallist"; + version = "3.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz"; + sha512 = "a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="; + }; + }; + }; +in +{ + node-pre-gyp = nodeEnv.buildNodePackage { + name = "node-pre-gyp"; + packageName = "node-pre-gyp"; + version = "0.17.0"; + src = fetchurl { + url = "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.17.0.tgz"; + sha512 = "abzZt1hmOjkZez29ppg+5gGqdPLUuJeAEwVPtHYEJgx0qzttCbcKFpxrCQn2HYbwCv2c+7JwH4BgEzFkUGpn4A=="; + }; + dependencies = [ + sources."abbrev-1.1.1" + sources."ansi-regex-2.1.1" + sources."aproba-1.2.0" + sources."are-we-there-yet-1.1.7" + sources."balanced-match-1.0.2" + sources."brace-expansion-1.1.11" + sources."chownr-1.1.4" + sources."code-point-at-1.1.0" + sources."concat-map-0.0.1" + sources."console-control-strings-1.1.0" + sources."core-util-is-1.0.3" + sources."debug-3.2.7" + sources."deep-extend-0.6.0" + sources."delegates-1.0.0" + sources."detect-libc-1.0.3" + sources."fs-minipass-1.2.7" + sources."fs.realpath-1.0.0" + sources."gauge-2.7.4" + sources."glob-7.2.3" + sources."has-unicode-2.0.1" + sources."iconv-lite-0.4.24" + sources."ignore-walk-3.0.4" + sources."inflight-1.0.6" + sources."inherits-2.0.4" + sources."ini-1.3.8" + sources."is-fullwidth-code-point-1.0.0" + sources."isarray-1.0.0" + sources."minimatch-3.1.2" + sources."minimist-1.2.8" + sources."minipass-2.9.0" + sources."minizlib-1.3.3" + sources."mkdirp-0.5.6" + sources."ms-2.1.3" + sources."needle-2.9.1" + sources."nopt-4.0.3" + sources."npm-bundled-1.1.2" + sources."npm-normalize-package-bin-1.0.1" + sources."npm-packlist-1.4.8" + sources."npmlog-4.1.2" + sources."number-is-nan-1.0.1" + sources."object-assign-4.1.1" + sources."once-1.4.0" + sources."os-homedir-1.0.2" + sources."os-tmpdir-1.0.2" + sources."osenv-0.1.5" + sources."path-is-absolute-1.0.1" + sources."process-nextick-args-2.0.1" + sources."rc-1.2.8" + sources."readable-stream-2.3.8" + sources."rimraf-2.7.1" + sources."safe-buffer-5.1.2" + sources."safer-buffer-2.1.2" + sources."sax-1.2.4" + sources."semver-5.7.1" + sources."set-blocking-2.0.0" + sources."signal-exit-3.0.7" + sources."string-width-1.0.2" + sources."string_decoder-1.1.1" + sources."strip-ansi-3.0.1" + sources."strip-json-comments-2.0.1" + (sources."tar-4.4.19" // { + dependencies = [ + sources."safe-buffer-5.2.1" + ]; + }) + sources."util-deprecate-1.0.2" + sources."wide-align-1.1.5" + sources."wrappy-1.0.2" + sources."yallist-3.1.1" + ]; + buildInputs = globalBuildInputs; + meta = { + description = "Node.js native addon binary install tool"; + homepage = "https://github.com/mapbox/node-pre-gyp#readme"; + license = "BSD-3-Clause"; + }; + production = true; + bypassCache = true; + reconstructLock = true; + }; +} diff --git a/nixpkgs/pkgs/misc/beep/default.nix b/nixpkgs/pkgs/misc/beep/default.nix new file mode 100644 index 000000000000..180b53e1e768 --- /dev/null +++ b/nixpkgs/pkgs/misc/beep/default.nix @@ -0,0 +1,29 @@ +{ lib, stdenv, fetchFromGitHub }: + +# this package is working only as root +# in order to work as a non privileged user you would need to suid the bin + +stdenv.mkDerivation rec { + pname = "beep"; + version = "1.4.12"; + + src = fetchFromGitHub { + owner = "spkr-beep"; + repo = "beep"; + rev = "v${version}"; + sha256 = "sha256-gDgGI9F+wW2cN89IwP93PkMv6vixJA2JckF78nxZ+TU="; + }; + + makeFlags = [ "prefix=${placeholder "out"}"]; + + # causes redefinition of _FORTIFY_SOURCE + hardeningDisable = [ "fortify3" ]; + + meta = with lib; { + description = "The advanced PC speaker beeper"; + homepage = "https://github.com/spkr-beep/beep"; + license = licenses.gpl2Only; + platforms = platforms.linux; + mainProgram = "beep"; + }; +} diff --git a/nixpkgs/pkgs/misc/brightnessctl/default.nix b/nixpkgs/pkgs/misc/brightnessctl/default.nix new file mode 100644 index 000000000000..460b8199d697 --- /dev/null +++ b/nixpkgs/pkgs/misc/brightnessctl/default.nix @@ -0,0 +1,33 @@ +{ lib, stdenv, fetchFromGitHub, pkg-config, systemd }: + +stdenv.mkDerivation rec { + pname = "brightnessctl"; + version = "0.5.1"; + + src = fetchFromGitHub { + owner = "Hummer12007"; + repo = "brightnessctl"; + rev = version; + sha256 = "0immxc7almmpg80n3bdn834p3nrrz7bspl2syhb04s3lawa5y2lq"; + }; + + postPatch = '' + substituteInPlace Makefile \ + --replace "pkg-config" "$PKG_CONFIG" + ''; + + makeFlags = [ "PREFIX=" "DESTDIR=$(out)" "ENABLE_SYSTEMD=1" ]; + + nativeBuildInputs = [ pkg-config ]; + buildInputs = [ systemd ]; + + meta = with lib; { + homepage = "https://github.com/Hummer12007/brightnessctl"; + description = "This program allows you read and control device brightness"; + license = licenses.mit; + maintainers = with maintainers; [ megheaiulian ]; + platforms = platforms.linux; + mainProgram = "brightnessctl"; + }; + +} diff --git a/nixpkgs/pkgs/misc/calaos/installer/default.nix b/nixpkgs/pkgs/misc/calaos/installer/default.nix new file mode 100644 index 000000000000..7b24ddb94d9d --- /dev/null +++ b/nixpkgs/pkgs/misc/calaos/installer/default.nix @@ -0,0 +1,34 @@ +{ mkDerivation, lib, stdenv, fetchFromGitHub, qmake, qttools, qtbase }: + +mkDerivation rec { + pname = "calaos_installer"; + version = "3.11"; + + src = fetchFromGitHub { + owner = "calaos"; + repo = "calaos_installer"; + rev = "v${version}"; + sha256 = "sha256-e/f58VtGmKukdv4rIrGljXhA9d/xUycM5V6I1FT5qeY="; + }; + + nativeBuildInputs = [ qmake qttools ]; + buildInputs = [ qtbase ]; + + qmakeFlags = [ "REVISION=${version}" ]; + + installPhase = if stdenv.isDarwin then '' + mkdir -p $out/Applications + cp -a calaos_installer.app $out/Applications + '' else '' + mkdir -p $out/bin + cp -a calaos_installer $out/bin + ''; + + meta = with lib; { + description = "Calaos Installer, a tool to create calaos configuration"; + homepage = "https://www.calaos.fr/"; + license = licenses.gpl3Plus; + platforms = platforms.all; + maintainers = with maintainers; [ tiramiseb ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cbeams/default.nix b/nixpkgs/pkgs/misc/cbeams/default.nix new file mode 100644 index 000000000000..928b03df09f7 --- /dev/null +++ b/nixpkgs/pkgs/misc/cbeams/default.nix @@ -0,0 +1,21 @@ +{ lib, buildPythonApplication, fetchPypi, isPy3k, blessings, docopt }: + +buildPythonApplication rec { + pname = "cbeams"; + version = "1.0.3"; + disabled = !isPy3k; + + src = fetchPypi { + inherit pname version; + sha256 = "1agcjg6kmcyvk834xd2j60mi349qi9iw3dc2vwpd7pqwq1daq3gi"; + }; + + propagatedBuildInputs = [ blessings docopt ]; + + meta = with lib; { + homepage = "https://github.com/tartley/cbeams"; + description = "Command-line program to draw animated colored circles in the terminal"; + license = licenses.bsd3; + maintainers = with maintainers; [ oxzi ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cliscord/default.nix b/nixpkgs/pkgs/misc/cliscord/default.nix new file mode 100644 index 000000000000..1f8de323efe3 --- /dev/null +++ b/nixpkgs/pkgs/misc/cliscord/default.nix @@ -0,0 +1,35 @@ +{ lib +, stdenv +, rustPlatform +, openssl +, pkg-config +, fetchFromGitHub +, fetchpatch +, Security +}: + +rustPlatform.buildRustPackage rec { + pname = "cliscord"; + version = "unstable-2022-10-07"; + + src = fetchFromGitHub { + owner = "somebody1234"; + repo = pname; + rev = "d62317d55c07ece8c9d042dcd74b62e58c9bfaeb"; + hash = "sha256-dmR49yyErahOUxR9pGW1oYy8Wq5SWOprK317u+JPBv4="; + }; + + buildInputs = [ openssl ] ++ lib.optional stdenv.isDarwin Security; + + nativeBuildInputs = [ pkg-config ]; + + cargoHash = "sha256-Z8ras6W4BnAWjHe6rPd1X1d3US5gq7CxnBAkW//OTsg="; + + meta = with lib; { + description = "Simple command-line tool to send text and files to discord"; + homepage = "https://github.com/somebody1234/cliscord"; + license = licenses.mit; + maintainers = with maintainers; [ lom ]; + mainProgram = "cliscord"; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/cups-pk-helper.nix b/nixpkgs/pkgs/misc/cups/cups-pk-helper.nix new file mode 100644 index 000000000000..1a3b4ebfbef6 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/cups-pk-helper.nix @@ -0,0 +1,30 @@ +{ lib, stdenv, fetchurl, intltool, pkg-config, glib, polkit, cups, fetchpatch }: + +stdenv.mkDerivation rec { + version = "0.2.6"; + pname = "cups-pk-helper"; + + src = fetchurl { + url = "https://www.freedesktop.org/software/cups-pk-helper/releases/cups-pk-helper-${version}.tar.xz"; + sha256 = "0a52jw6rm7lr5nbyksiia0rn7sasyb5cjqcb95z1wxm2yprgi6lm"; + }; + + nativeBuildInputs = [ pkg-config intltool ]; + buildInputs = [ glib polkit cups ]; + + patches = [ + # Don't use etc/dbus-1/system.d + (fetchpatch { + url = "https://gitlab.freedesktop.org/cups-pk-helper/cups-pk-helper/merge_requests/2.patch"; + sha256 = "1kamhr5kn8c1y0q8xbip0fgr7maf3dyddlvab4n0iypk7rwwikl0"; + }) + ]; + + meta = with lib; { + description = "PolicyKit helper to configure cups with fine-grained privileges"; + homepage = "https://www.freedesktop.org/wiki/Software/cups-pk-helper/"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = [ maintainers.bjornfor ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/default.nix b/nixpkgs/pkgs/misc/cups/default.nix new file mode 100644 index 000000000000..c8df29776db9 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/default.nix @@ -0,0 +1,153 @@ +{ lib, stdenv +, fetchurl +, pkg-config +, removeReferencesTo +, zlib +, libjpeg +, libpng +, libtiff +, pam +, dbus +, enableSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd +, systemd +, acl +, gmp +, darwin +, libusb1 ? null +, gnutls ? null +, avahi ? null +, libpaper ? null +, coreutils +, nixosTests +}: + +stdenv.mkDerivation rec { + pname = "cups"; + version = "2.4.7"; + + src = fetchurl { + url = "https://github.com/OpenPrinting/cups/releases/download/v${version}/cups-${version}-source.tar.gz"; + sha256 = "sha256-3VQijdkDUmQozn43lhr67SMK0xB4gUHadc66oINiz2w="; + }; + + outputs = [ "out" "lib" "dev" "man" ]; + + postPatch = '' + substituteInPlace cups/testfile.c \ + --replace 'cupsFileFind("cat", "/bin' 'cupsFileFind("cat", "${coreutils}/bin' + + # The cups.socket unit shouldn't be part of cups.service: stopping the + # service would stop the socket and break subsequent socket activations. + # See https://github.com/apple/cups/issues/6005 + sed -i '/PartOf=cups.service/d' scheduler/cups.socket.in + '' + lib.optionalString (stdenv.hostPlatform.isDarwin && lib.versionOlder stdenv.hostPlatform.darwinSdkVersion "12") '' + substituteInPlace backend/usb-darwin.c \ + --replace "kIOMainPortDefault" "kIOMasterPortDefault" + ''; + + nativeBuildInputs = [ pkg-config removeReferencesTo ]; + + buildInputs = [ zlib libjpeg libpng libtiff libusb1 gnutls libpaper ] + ++ lib.optionals stdenv.isLinux [ avahi pam dbus acl ] + ++ lib.optional enableSystemd systemd + ++ lib.optionals stdenv.isDarwin (with darwin; [ + configd apple_sdk.frameworks.ApplicationServices + ]); + + propagatedBuildInputs = [ gmp ]; + + configurePlatforms = lib.optionals stdenv.isLinux [ "build" "host" ]; + configureFlags = [ + "--localstatedir=/var" + "--sysconfdir=/etc" + "--enable-raw-printing" + "--enable-threads" + ] ++ lib.optionals stdenv.isLinux [ + "--enable-dbus" + "--enable-pam" + "--with-dbusdir=${placeholder "out"}/share/dbus-1" + ] ++ lib.optional (libusb1 != null) "--enable-libusb" + ++ lib.optional (gnutls != null) "--enable-ssl" + ++ lib.optional (avahi != null) "--enable-avahi" + ++ lib.optional (libpaper != null) "--enable-libpaper"; + + # AR has to be an absolute path + preConfigure = '' + export AR="${lib.getBin stdenv.cc.bintools.bintools}/bin/${stdenv.cc.targetPrefix}ar" + configureFlagsArray+=( + # Put just lib/* and locale into $lib; this didn't work directly. + # lib/cups is moved back to $out in postInstall. + # Beware: some parts of cups probably don't fully respect these. + "--prefix=$lib" + "--datadir=$out/share" + "--localedir=$lib/share/locale" + + "--with-systemd=$out/lib/systemd/system" + + ${lib.optionalString stdenv.isDarwin '' + "--with-bundledir=$out" + ''} + ) + ''; + + installFlags = + [ # Don't try to write in /var at build time. + "CACHEDIR=$(TMPDIR)/dummy" + "LAUNCHD_DIR=$(TMPDIR)/dummy" + "LOGDIR=$(TMPDIR)/dummy" + "REQUESTS=$(TMPDIR)/dummy" + "STATEDIR=$(TMPDIR)/dummy" + # Idem for /etc. + "PAMDIR=$(out)/etc/pam.d" + "XINETD=$(out)/etc/xinetd.d" + "SERVERROOT=$(out)/etc/cups" + # Idem for /usr. + "MENUDIR=$(out)/share/applications" + "ICONDIR=$(out)/share/icons" + # Work around a Makefile bug. + "CUPS_PRIMARY_SYSTEM_GROUP=root" + ]; + + enableParallelBuilding = true; + + postInstall = '' + libexec=${if stdenv.isDarwin then "libexec/cups" else "lib/cups"} + moveToOutput $libexec "$out" + + # $lib contains references to $out/share/cups. + # CUPS is working without them, so they are not vital. + find "$lib" -type f -exec grep -q "$out" {} \; \ + -printf "removing references from %p\n" \ + -exec remove-references-to -t "$out" {} + + + # Delete obsolete stuff that conflicts with cups-filters. + rm -rf $out/share/cups/banners $out/share/cups/data/testprint + + moveToOutput bin/cups-config "$dev" + sed -e "/^cups_serverbin=/s|$lib|$out|" \ + -i "$dev/bin/cups-config" + + for f in "$out"/lib/systemd/system/*; do + substituteInPlace "$f" --replace "$lib/$libexec" "$out/$libexec" + done + '' + lib.optionalString stdenv.isLinux '' + # Use xdg-open when on Linux + substituteInPlace "$out"/share/applications/cups.desktop \ + --replace "Exec=htmlview" "Exec=xdg-open" + ''; + + passthru.tests = { + inherit (nixosTests) + printing-service + printing-socket + ; + }; + + meta = with lib; { + homepage = "https://openprinting.github.io/cups/"; + description = "A standards-based printing system for UNIX"; + license = licenses.asl20; + maintainers = with maintainers; [ matthewbauer ]; + platforms = platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/brgenml1cupswrapper/default.nix b/nixpkgs/pkgs/misc/cups/drivers/brgenml1cupswrapper/default.nix new file mode 100644 index 000000000000..e309e8e8b264 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/brgenml1cupswrapper/default.nix @@ -0,0 +1,125 @@ +{ lib, stdenv, fetchurl, makeWrapper, cups, perl, coreutils, gnused, gnugrep +, brgenml1lpr, debugLvl ? "0"}: + +/* + [Setup instructions](http://support.brother.com/g/s/id/linux/en/instruction_prn1a.html). + + URI example + ~ `lpd://BRW0080927AFBCE/binary_p1` + + Logging + ------- + + `/tmp/br_cupswrapper_ml1.log` when `DEBUG > 0` in `brother_lpdwrapper_BrGenML1`. + Note that when `DEBUG > 1` the wrapper stops performing its function. Better + keep `DEBUG == 1` unless this is desirable. + + Now activable through this package's `debugLvl` parameter whose value is to be + used to establish `DEBUG`. + + Issues + ------ + + 1. > Error: /tmp/brBrGenML1rc_15642 :cannot open file !! + + Fixed. + + 2. > touch: cannot touch '/tmp/BrGenML1_latest_print_info': Permission denied + + Fixed. + + 3. > perl: warning: Falling back to the standard locale ("C"). + + are supported and installed on your system. + LANG = "en_US.UTF-8" + LC_ALL = (unset), + LANGUAGE = (unset), + perl: warning: Please check that your locale settings: + perl: warning: Setting locale failed. + + TODO: Address. + + 4. Since nixos 16.03 release, in `brother_lpdwrapper_BrGenML1`: + + > sh: grep: command not found + sh: chmod: command not found + sh: cp: command not found + Error: /tmp/brBrGenML1rc_1850 :cannot open file !! + sh: sed: command not found + + Fixed by use of a wrapper that brings `coreutils`, `gnused`, `gnugrep` + in `PATH`. +*/ + +stdenv.mkDerivation rec { + pname = "brgenml1cupswrapper"; + version = "3.1.0-1"; + + src = fetchurl { + url = "https://download.brother.com/welcome/dlf101125/brgenml1cupswrapper-${version}.i386.deb"; + sha256 = "0kd2a2waqr10kfv1s8is3nd5dlphw4d1343srdsbrlbbndja3s6r"; + }; + + unpackPhase = '' + ar x $src + tar xfvz data.tar.gz + ''; + + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ cups perl coreutils gnused gnugrep brgenml1lpr ]; + + dontBuild = true; + + patchPhase = '' + WRAPPER=opt/brother/Printers/BrGenML1/cupswrapper/brother_lpdwrapper_BrGenML1 + PAPER_CFG=opt/brother/Printers/BrGenML1/cupswrapper/paperconfigml1 + + substituteInPlace $WRAPPER \ + --replace "basedir =~" "basedir = \"${brgenml1lpr}/opt/brother/Printers/BrGenML1\"; #" \ + --replace "PRINTER =~" "PRINTER = \"BrGenML1\"; #" \ + --replace "\$DEBUG=0;" "\$DEBUG=${debugLvl};" + + # Fixing issue #1 and #2. + substituteInPlace $WRAPPER \ + --replace "\`cp " "\`cp -p " \ + --replace "\$TEMPRC\`" "\$TEMPRC; chmod a+rw \$TEMPRC\`" \ + --replace "\`mv " "\`cp -p " + + # This config script make this assumption that the *.ppd are found in a global location `/etc/cups/ppd`. + substituteInPlace $PAPER_CFG \ + --replace "/etc/cups/ppd" "$out/share/cups/model" + ''; + + + installPhase = '' + CUPSFILTER_DIR=$out/lib/cups/filter + CUPSPPD_DIR=$out/share/cups/model + CUPSWRAPPER_DIR=opt/brother/Printers/BrGenML1/cupswrapper + + mkdir -p $out/$CUPSWRAPPER_DIR + cp -rp $CUPSWRAPPER_DIR/* $out/$CUPSWRAPPER_DIR + + mkdir -p $CUPSFILTER_DIR + # Fixing issue #4. + makeWrapper \ + $out/$CUPSWRAPPER_DIR/brother_lpdwrapper_BrGenML1 \ + $CUPSFILTER_DIR/brother_lpdwrapper_BrGenML1 \ + --prefix PATH : ${coreutils}/bin \ + --prefix PATH : ${gnused}/bin \ + --prefix PATH : ${gnugrep}/bin + + mkdir -p $CUPSPPD_DIR + ln -s $out/$CUPSWRAPPER_DIR/brother-BrGenML1-cups-en.ppd $CUPSPPD_DIR + ''; + + dontPatchELF = true; + dontStrip = true; + + meta = { + description = "Brother BrGenML1 CUPS wrapper driver"; + homepage = "http://www.brother.com"; + platforms = lib.platforms.linux; + license = lib.licenses.gpl2Plus; + maintainers = with lib.maintainers; [ jraygauthier ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/brgenml1lpr/default.nix b/nixpkgs/pkgs/misc/cups/drivers/brgenml1lpr/default.nix new file mode 100644 index 000000000000..1e838db93263 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/brgenml1lpr/default.nix @@ -0,0 +1,95 @@ +{ lib, stdenv, fetchurl, cups, perl, ghostscript, which, makeWrapper}: + +/* + [Setup instructions](http://support.brother.com/g/s/id/linux/en/instruction_prn1a.html). + + URI example + ~ `lpd://BRW0080927AFBCE/binary_p1` + + Logging + ------- + + `/tmp/br_lpdfilter_ml1.log` when `$ENV{LPD_DEBUG} > 0` in `filter_BrGenML1` + which is activated automatically when `DEBUG > 0` in `brother_lpdwrapper_BrGenML1` + from the cups wrapper. + + Issues + ------ + + - filter_BrGenML1 ln 196 `my $GHOST_SCRIPT=`which gs`;` + + `GHOST_SCRIPT` is empty resulting in an empty `/tmp/br_lpdfilter_ml1_gsout.dat` file. + See `/tmp/br_lpdfilter_ml1.log` for the executed command. + + Notes + ----- + + - The `setupPrintcap` has totally no use in our context. +*/ + +let + myPatchElf = file: with lib; '' + patchelf --set-interpreter \ + ${stdenv.cc.libc}/lib/ld-linux${optionalString stdenv.is64bit "-x86-64"}.so.2 \ + ${file} + ''; +in +stdenv.mkDerivation rec { + pname = "brgenml1lpr"; + version = "3.1.0-1"; + + src = fetchurl { + url = "https://download.brother.com/welcome/dlf101123/brgenml1lpr-${version}.i386.deb"; + sha256 = "0zdvjnrjrz9sba0k525linxp55lr4cyivfhqbkq1c11br2nvy09f"; + }; + + unpackPhase = '' + ar x $src + tar xfvz data.tar.gz + ''; + + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ cups perl stdenv.cc.libc ghostscript which ]; + + dontBuild = true; + + patchPhase = '' + INFDIR=opt/brother/Printers/BrGenML1/inf + LPDDIR=opt/brother/Printers/BrGenML1/lpd + + # Setup max debug log by default. + substituteInPlace $LPDDIR/filter_BrGenML1 \ + --replace "BR_PRT_PATH =~" "BR_PRT_PATH = \"$out/opt/brother/Printers/BrGenML1\"; #" \ + --replace "PRINTER =~" "PRINTER = \"BrGenML1\"; #" + + ${myPatchElf "$INFDIR/braddprinter"} + ${myPatchElf "$LPDDIR/brprintconflsr3"} + ${myPatchElf "$LPDDIR/rawtobr3"} + ''; + + installPhase = '' + INFDIR=opt/brother/Printers/BrGenML1/inf + LPDDIR=opt/brother/Printers/BrGenML1/lpd + + mkdir -p $out/$INFDIR + cp -rp $INFDIR/* $out/$INFDIR + mkdir -p $out/$LPDDIR + cp -rp $LPDDIR/* $out/$LPDDIR + + wrapProgram $out/$LPDDIR/filter_BrGenML1 \ + --prefix PATH ":" "${ghostscript}/bin" \ + --prefix PATH ":" "${which}/bin" + ''; + + dontPatchELF = true; + + + meta = { + description = "Brother BrGenML1 LPR driver"; + homepage = "http://www.brother.com"; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + platforms = lib.platforms.linux; + license = lib.licenses.unfreeRedistributable; + maintainers = with lib.maintainers; [ jraygauthier ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/brlaser/default.nix b/nixpkgs/pkgs/misc/cups/drivers/brlaser/default.nix new file mode 100644 index 000000000000..b0dfd8d8170a --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/brlaser/default.nix @@ -0,0 +1,63 @@ +{ lib, stdenv, fetchFromGitHub, cmake, zlib, cups }: + +stdenv.mkDerivation rec { + pname = "brlaser"; + version = "6"; + + src = fetchFromGitHub { + owner = "pdewacht"; + repo = "brlaser"; + rev = "v${version}"; + sha256 = "1995s69ksq1fz0vb34v0ndiqncrinbrlpmp70rkl6az7kag99s80"; + }; + + nativeBuildInputs = [ cmake ]; + buildInputs = [ zlib cups ]; + + cmakeFlags = [ "-DCUPS_SERVER_BIN=lib/cups" "-DCUPS_DATA_DIR=share/cups" ]; + + meta = with lib; { + description = "A CUPS driver for Brother laser printers"; + longDescription = + '' + Although most Brother printers support a standard printer language such as PCL or PostScript, not all do. If you have a monochrome Brother laser printer (or multi-function device) and the other open source drivers don't work, this one might help. + + This driver is known to work with these printers: + + Brother DCP-1510 + Brother DCP-1602 + Brother DCP-7030 + Brother DCP-7040 + Brother DCP-7055 + Brother DCP-7055W + Brother DCP-7060D + Brother DCP-7065DN + Brother DCP-7080 + Brother DCP-L2500D + Brother DCP-L2520D + Brother DCP-L2540DW + Brother HL-1110 + Brother HL-1200 + Brother HL-2030 + Brother HL-2140 + Brother HL-2220 + Brother HL-2270DW + Brother HL-5030 + Brother HL-L2300D + Brother HL-L2320D + Brother HL-L2340D + Brother HL-L2360D + Brother MFC-1910W + Brother MFC-7240 + Brother MFC-7360N + Brother MFC-7365DN + Brother MFC-7840W + Brother MFC-L2710DW + Lenovo M7605D + ''; + homepage = "https://github.com/pdewacht/brlaser"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = with maintainers; [ StijnDW ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/brother/dcp375cw/default.nix b/nixpkgs/pkgs/misc/cups/drivers/brother/dcp375cw/default.nix new file mode 100644 index 000000000000..c9e92e839a0e --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/brother/dcp375cw/default.nix @@ -0,0 +1,97 @@ +{ lib, stdenv, fetchurl, cups, dpkg, gnused, makeWrapper, ghostscript, file +, a2ps, coreutils, gnugrep, which, gawk }: + +let + version = "1.1.3"; + model = "dcp375cw"; +in rec { + driver = stdenv.mkDerivation { + pname = "${model}-lpr"; + inherit version; + + src = fetchurl { + url = + "https://download.brother.com/welcome/dlf005427/dcp375cwlpr-${version}-1.i386.deb"; + sha256 = + "6daf0144b5802ea8da394ca14db0e6f0200d4049545649283791f899b7f7bd26"; + }; + + nativeBuildInputs = [ dpkg makeWrapper ]; + buildInputs = [ cups ghostscript a2ps gawk ]; + unpackPhase = "dpkg-deb -x $src $out"; + + installPhase = '' + substituteInPlace $out/opt/brother/Printers/${model}/lpd/filter${model} \ + --replace /opt "$out/opt" + + patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ + $out/opt/brother/Printers/${model}/lpd/br${model}filter + + mkdir -p $out/lib/cups/filter/ + ln -s $out/opt/brother/Printers/${model}/lpd/filter${model} $out/lib/cups/filter/brlpdwrapper${model} + + wrapProgram $out/opt/brother/Printers/${model}/lpd/filter${model} \ + --prefix PATH ":" ${ + lib.makeBinPath [ + gawk + ghostscript + a2ps + file + gnused + gnugrep + coreutils + which + ] + } + ''; + + meta = with lib; { + homepage = "http://www.brother.com/"; + description = "Brother ${model} printer driver"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = licenses.unfree; + platforms = platforms.linux; + downloadPage = + "https://support.brother.com/g/b/downloadlist.aspx?c=gb&lang=en&prod=${model}_all&os=128"; + maintainers = with maintainers; [ marcovergueira ]; + }; + }; + + cupswrapper = stdenv.mkDerivation { + pname = "${model}-cupswrapper"; + inherit version; + + src = fetchurl { + url = + "https://download.brother.com/welcome/dlf005429/dcp375cwcupswrapper-${version}-1.i386.deb"; + sha256 = + "9a255728b595d2667b2caf9d0d332b677e1a6829a3ec1ed6d4e900a44069cf2d"; + }; + + nativeBuildInputs = [ dpkg makeWrapper ]; + buildInputs = [ cups ghostscript a2ps gawk ]; + unpackPhase = "dpkg-deb -x $src $out"; + + installPhase = '' + for f in $out/opt/brother/Printers/${model}/cupswrapper/cupswrapper${model}; do + wrapProgram $f --prefix PATH : ${ + lib.makeBinPath [ coreutils ghostscript gnugrep gnused ] + } + done + + mkdir -p $out/share/cups/model + ln -s $out/opt/brother/Printers/${model}/cupswrapper/brother_${model}_printer_en.ppd $out/share/cups/model/ + ''; + + meta = with lib; { + homepage = "http://www.brother.com/"; + description = "Brother ${model} printer CUPS wrapper driver"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = licenses.unfree; + platforms = platforms.linux; + downloadPage = + "https://support.brother.com/g/b/downloadlist.aspx?c=gb&lang=en&prod=${model}_all&os=128"; + maintainers = with maintainers; [ marcovergueira ]; + }; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/brother/dcp9020cdw/default.nix b/nixpkgs/pkgs/misc/cups/drivers/brother/dcp9020cdw/default.nix new file mode 100644 index 000000000000..ddae34eaec83 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/brother/dcp9020cdw/default.nix @@ -0,0 +1,101 @@ +{ lib +, stdenv +, fetchurl +, cups +, dpkg +, gnused +, makeWrapper +, ghostscript +, file +, a2ps +, coreutils +, gnugrep +, which +, gawk +}: + +let + version = "1.1.2"; + model = "dcp9020cdw"; +in +rec { + driver = stdenv.mkDerivation { + pname = "${model}-lpr"; + inherit version; + + src = fetchurl { + url = "https://download.brother.com/welcome/dlf100441/dcp9020cdwlpr-${version}-1.i386.deb"; + sha256 = "1z6nma489s0a0b0a8wyg38yxanz4k99dg29fyjs4jlprsvmwk56y"; + }; + + nativeBuildInputs = [ dpkg makeWrapper ]; + buildInputs = [ cups ghostscript a2ps gawk ]; + unpackPhase = "dpkg-deb -x $src $out"; + + installPhase = '' + substituteInPlace $out/opt/brother/Printers/${model}/lpd/filter${model} \ + --replace /opt "$out/opt" + + patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ + $out/opt/brother/Printers/${model}/lpd/br${model}filter + + mkdir -p $out/lib/cups/filter/ + ln -s $out/opt/brother/Printers/${model}/lpd/filter${model} $out/lib/cups/filter/brother_lpdwrapper_${model} + + wrapProgram $out/opt/brother/Printers/${model}/lpd/filter${model} \ + --prefix PATH ":" ${lib.makeBinPath [ + gawk + ghostscript + a2ps + file + gnused + gnugrep + coreutils + which + ]} + ''; + + meta = with lib; { + homepage = "http://www.brother.com/"; + description = "Brother ${model} printer driver"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = licenses.unfree; + platforms = platforms.linux; + downloadPage = "https://support.brother.com/g/b/downloadlist.aspx?c=gb&lang=en&prod=${model}_eu&os=128"; + maintainers = with maintainers; [ pshirshov ]; + }; + }; + + cupswrapper = stdenv.mkDerivation { + pname = "${model}-cupswrapper"; + inherit version; + + src = fetchurl { + url = "https://download.brother.com/welcome/dlf100443/dcp9020cdwcupswrapper-${version}-1.i386.deb"; + sha256 = "04yqm1qv9p4hgp1p6mqq4siygl4056s6flv6kqln8mvmcr8zaq1s"; + }; + + nativeBuildInputs = [ dpkg makeWrapper ]; + buildInputs = [ cups ghostscript a2ps gawk ]; + unpackPhase = "dpkg-deb -x $src $out"; + + installPhase = '' + for f in $out/opt/brother/Printers/${model}/cupswrapper/cupswrapper${model}; do + wrapProgram $f --prefix PATH : ${lib.makeBinPath [ coreutils ghostscript gnugrep gnused ]} + done + + mkdir -p $out/share/cups/model + ln -s $out/opt/brother/Printers/${model}/cupswrapper/brother_${model}_printer_en.ppd $out/share/cups/model/ + ''; + + meta = with lib; { + homepage = "http://www.brother.com/"; + description = "Brother ${model} printer CUPS wrapper driver"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = licenses.unfree; + platforms = platforms.linux; + downloadPage = "https://support.brother.com/g/b/downloadlist.aspx?c=gb&lang=en&prod=${model}_eu&os=128"; + maintainers = with maintainers; [ pshirshov ]; + }; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/brother/hll2375dw/default.nix b/nixpkgs/pkgs/misc/cups/drivers/brother/hll2375dw/default.nix new file mode 100644 index 000000000000..a6c2db9f90b1 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/brother/hll2375dw/default.nix @@ -0,0 +1,104 @@ +{ lib +, stdenv +, fetchurl +, dpkg +, autoPatchelfHook +, makeWrapper +, perl +, gnused +, ghostscript +, file +, coreutils +, gnugrep +, which +}: + +let + arches = [ "x86_64" "i686" "armv7l" ]; + + runtimeDeps = [ + ghostscript + file + gnused + gnugrep + coreutils + which + ]; +in + +stdenv.mkDerivation rec { + pname = "cups-brother-hll2375dw"; + version = "4.0.0-1"; + + nativeBuildInputs = [ dpkg makeWrapper autoPatchelfHook ]; + buildInputs = [ perl ]; + + src = fetchurl { + url = "https://download.brother.com/welcome/dlf103535//hll2375dwpdrv-${version}.i386.deb"; + hash = "sha256-N5VCBZLFrfw29QjjzlSvQ12urvyaf7ez/RJ08UwqHdk="; + }; + + unpackPhase = "dpkg-deb -x $src ."; + + patches = [ + # The brother lpdwrapper uses a temporary file to convey the printer settings. + # The original settings file will be copied with "400" permissions and the "brprintconflsr3" + # binary cannot alter the temporary file later on. This fixes the permissions so the can be modified. + # Since this is all in briefly in the temporary directory of systemd-cups and not accessible by others, + # it shouldn't be a security concern. + ./fix-perm.patch + ]; + + installPhase = '' + runHook preInstall + mkdir -p $out + cp -ar opt $out/opt + # delete unnecessary files for the current architecture + '' + lib.concatMapStrings + (arch: '' + echo Deleting files for ${arch} + rm -r "$out/opt/brother/Printers/HLL2375DW/lpd/${arch}" + '') + (builtins.filter (arch: arch != stdenv.hostPlatform.linuxArch) arches) + '' + # bundled scripts don't understand the arch subdirectories for some reason + ln -s \ + "$out/opt/brother/Printers/HLL2375DW/lpd/${stdenv.hostPlatform.linuxArch}/"* \ + "$out/opt/brother/Printers/HLL2375DW/lpd/" + + # Fix global references and replace auto discovery mechanism with hardcoded values + substituteInPlace $out/opt/brother/Printers/HLL2375DW/lpd/lpdfilter \ + --replace "my \$BR_PRT_PATH =" "my \$BR_PRT_PATH = \"$out/opt/brother/Printers/HLL2375DW\"; #" \ + --replace "PRINTER =~" "PRINTER = \"HLL2375DW\"; #" + substituteInPlace $out/opt/brother/Printers/HLL2375DW/cupswrapper/lpdwrapper \ + --replace "my \$basedir = C" "my \$basedir = \"$out/opt/brother/Printers/HLL2375DW\" ; #" \ + --replace "PRINTER =~" "PRINTER = \"HLL2375DW\"; #" + + # Make sure all executables have the necessary runtime dependencies available + find "$out" -executable -and -type f | while read file; do + wrapProgram "$file" --prefix PATH : "${lib.makeBinPath runtimeDeps}" + done + + # Symlink filter and ppd into a location where CUPS will discover it + mkdir -p $out/lib/cups/filter + mkdir -p $out/share/cups/model + mkdir -p $out/etc/opt/brother/Printers/HLL2375DW/inf + + ln -s $out/opt/brother/Printers/HLL2375DW/inf/brHLL2375DWrc \ + $out/etc/opt/brother/Printers/HLL2375DW/inf/brHLL2375DWrc + ln -s \ + $out/opt/brother/Printers/HLL2375DW/cupswrapper/lpdwrapper \ + $out/lib/cups/filter/brother_lpdwrapper_HLL2375DW + ln -s \ + $out/opt/brother/Printers/HLL2375DW/cupswrapper/brother-HLL2375DW-cups-en.ppd \ + $out/share/cups/model/ + runHook postInstall + ''; + + meta = with lib; { + homepage = "http://www.brother.com/"; + description = "Brother HLL2375DW printer driver"; + license = licenses.unfree; + platforms = builtins.map (arch: "${arch}-linux") arches; + maintainers = [ maintainers.gador ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/brother/hll2375dw/fix-perm.patch b/nixpkgs/pkgs/misc/cups/drivers/brother/hll2375dw/fix-perm.patch new file mode 100644 index 000000000000..6d85ad5bd53d --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/brother/hll2375dw/fix-perm.patch @@ -0,0 +1,10 @@ +--- a/opt/brother/Printers/HLL2375DW/cupswrapper/lpdwrapper 2022-12-07 18:32:29.950543083 +0100 ++++ b/opt/brother/Printers/HLL2375DW/cupswrapper/lpdwrapper 2022-12-07 18:46:03.046989151 +0100 +@@ -379,6 +379,7 @@ + + + `cp $basedir/inf/br${PRINTER}rc $TEMPRC`; ++`chmod 666 $TEMPRC`; + $ENV{BRPRINTERRCFILE} = $TEMPRC; + + logprint( 0 , "TEMPRC = $TEMPRC\n"); \ No newline at end of file diff --git a/nixpkgs/pkgs/misc/cups/drivers/brother/mfc465cncupswrapper/default.nix b/nixpkgs/pkgs/misc/cups/drivers/brother/mfc465cncupswrapper/default.nix new file mode 100644 index 000000000000..c64e48a86ce8 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/brother/mfc465cncupswrapper/default.nix @@ -0,0 +1,82 @@ +{ lib +, stdenv +, fetchurl +, dpkg +, makeWrapper +, coreutils +, gnugrep +, gnused +, mfc465cnlpr +, pkgsi686Linux +, psutils +}: + +stdenv.mkDerivation rec { + pname = "mfc465cncupswrapper"; + version = "1.0.1-1"; + + src = fetchurl { + url = "https://download.brother.com/welcome/dlf006134/${pname}-${version}.i386.deb"; + sha256 = "59a62ed3cf10f1565c08ace55832bd48bd5034f7067662870edf7ff3bf0cb76a"; + }; + + unpackPhase = '' + dpkg-deb -x $src $out + ''; + + nativeBuildInputs = [ + dpkg + makeWrapper + ]; + + dontBuild = true; + + installPhase = '' + lpr=${mfc465cnlpr}/usr/local/Brother/Printer/mfc465cn + dir=$out/usr/local/Brother/Printer/mfc465cn + interpreter=${pkgsi686Linux.glibc.out}/lib/ld-linux.so.2 + patchelf --set-interpreter "$interpreter" "$dir/cupswrapper/brcupsconfpt1" + substituteInPlace $dir/cupswrapper/cupswrappermfc465cn \ + --replace "mkdir -p /usr" ": # mkdir -p /usr" \ + --replace '/''${printer_model}' "/mfc465cn" \ + --replace 'br''${printer_model}' "brmfc465cn" \ + --replace 'brlpdwrapper''${printer_model}' "brlpdwrappermfc465cn" \ + --replace 'filter''${printer_model}' "filtermfc465cn" \ + --replace ' ''${printer_name}' " MFC465CN" \ + --replace ' ''${device_name}' " MFC-465CN" \ + --replace '(''${device_name}' "(MFC-465CN" \ + --replace ':''${device_name}' ":MFC-465CN" \ + --replace '/''${device_name}' "/MFC-465CN" \ + --replace 'BR''${pcfilename}' "BR465" \ + --replace '/''${device_model}' "/Printer" \ + --replace '/usr/lib64/cups/filter/brlpdwrappermfc465cn' "$out/lib/cups/filter/brlpdwrappermfc465cn" \ + --replace '/usr/local/Brother/Printer/mfc465cn/lpd/filtermfc465cn' "$lpr/lpd/filtermfc465cn" \ + --replace '/usr/share/ppd/brmfc465cn.ppd' "$dir/cupswrapper/brmfc465.ppd" \ + --replace '/usr/share/cups/model/brmfc465cn.ppd' "$dir/cupswrapper/brmfc465.ppd" \ + --replace '/usr/lib/cups/filter/brlpdwrappermfc465cn' "$out/usr/lib/cups/filter/brlpdwrappermfc465cn" \ + --replace 'nup="psnup' "nup=\"${psutils}/bin/psnup" \ + --replace '/usr/bin/psnup' "${psutils}/bin/psnup" \ + --replace '/usr/local/Brother/Printer/mfc465cn/cupswrapper/brcupsconfpt1' "$dir/cupswrapper/brcupsconfpt1" \ + --replace '/usr/local/Brother/Printer/mfc465cn/inf' "$lpr/inf" + # Create the PPD file from the cupswrapper file + sed -n '/ENDOFPPDFILE1/,/ENDOFPPDFILE1/p' "$dir/cupswrapper/cupswrappermfc465cn" | head -n -1 | tail -n +2 > $dir/cupswrapper/brmfc465.ppd + sed -n '/ENDOFPPDFILE_END/,/ENDOFPPDFILE_END/p' "$dir/cupswrapper/cupswrappermfc465cn" | head -n -1 | tail -n +2 >> $dir/cupswrapper/brmfc465.ppd + chmod 644 $dir/cupswrapper/brmfc465.ppd + mkdir -p $out/lib/cups/filter + mkdir -p $out/share/cups/model + ln $dir/cupswrapper/cupswrappermfc465cn $out/lib/cups/filter + ln $dir/cupswrapper/brmfc465.ppd $out/share/cups/model + sed -n '/!ENDOFWFILTER!/,/!ENDOFWFILTER!/p' "$dir/cupswrapper/cupswrappermfc465cn" | sed '1 br; b; :r s/.*/printer_model=mfc465cn; cat <<!ENDOFWFILTER!/' | bash > $out/lib/cups/filter/brlpdwrappermfc465cn + sed -i "/#! \/bin\/sh/a PATH=${lib.makeBinPath [ coreutils gnused gnugrep ]}:\$PATH" $out/lib/cups/filter/brlpdwrappermfc465cn + chmod 755 $out/lib/cups/filter/brlpdwrappermfc465cn + ''; + + meta = with lib; { + description = "Brother MFC-465CN CUPS wrapper driver"; + homepage = "http://www.brother.com/"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = with maintainers; [ phrogg ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/brother/mfc465cnlpr/default.nix b/nixpkgs/pkgs/misc/cups/drivers/brother/mfc465cnlpr/default.nix new file mode 100644 index 000000000000..dc0be00a6932 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/brother/mfc465cnlpr/default.nix @@ -0,0 +1,67 @@ +{ stdenv +, lib +, fetchurl +, dpkg +, makeWrapper +, coreutils +, file +, gawk +, ghostscript +, gnused +, pkgsi686Linux +}: + +stdenv.mkDerivation rec { + pname = "mfc465cnlpr"; + version = "1.0.1-1"; + + src = fetchurl { + url = "https://download.brother.com/welcome/dlf006132/${pname}-${version}.i386.deb"; + sha256 = "cfe0289510bf36bee6014286ea78b1ebc6bbb948dbfd3aee02f0664a7743f99b"; + }; + + unpackPhase = '' + dpkg-deb -x $src $out + ''; + + nativeBuildInputs = [ + dpkg + makeWrapper + ]; + + dontBuild = true; + + installPhase = '' + dir=$out/usr/local/Brother/Printer/mfc465cn + patchelf --set-interpreter ${pkgsi686Linux.glibc.out}/lib/ld-linux.so.2 $dir/lpd/brmfc465cnfilter + wrapProgram $dir/inf/setupPrintcapij \ + --prefix PATH : ${lib.makeBinPath [ + coreutils + ]} + substituteInPlace $dir/lpd/filtermfc465cn \ + --replace "BR_PRT_PATH=" "BR_PRT_PATH=\"$dir/\" #" + wrapProgram $dir/lpd/filtermfc465cn \ + --prefix PATH : ${lib.makeBinPath [ + coreutils + file + ghostscript + gnused + ]} + substituteInPlace $dir/lpd/psconvertij2 \ + --replace '`which gs`' "${ghostscript}/bin/gs" + wrapProgram $dir/lpd/psconvertij2 \ + --prefix PATH : ${lib.makeBinPath [ + gnused + gawk + ]} + chmod -R a+w $dir/inf/ + ''; + + meta = with lib; { + description = "Brother MFC-465CN LPR printer driver"; + homepage = "http://www.brother.com/"; + license = licenses.unfree; + maintainers = with maintainers; [ phrogg ]; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/brother/mfcl3770cdw/default.nix b/nixpkgs/pkgs/misc/cups/drivers/brother/mfcl3770cdw/default.nix new file mode 100644 index 000000000000..828b4bb831b6 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/brother/mfcl3770cdw/default.nix @@ -0,0 +1,90 @@ +{ pkgsi686Linux +, stdenv +, fetchurl +, dpkg +, makeWrapper +, coreutils +, ghostscript +, gnugrep +, gnused +, which +, perl +, lib +}: + +let + model = "mfcl3770cdw"; + version = "1.0.2-0"; + src = fetchurl { + url = "https://download.brother.com/welcome/dlf103935/${model}pdrv-${version}.i386.deb"; + sha256 = "09fhbzhpjymhkwxqyxzv24b06ybmajr6872yp7pri39595mhrvay"; + }; + reldir = "opt/brother/Printers/${model}/"; + +in rec { + driver = pkgsi686Linux.stdenv.mkDerivation rec { + inherit src version; + name = "${model}drv-${version}"; + + nativeBuildInputs = [ dpkg makeWrapper ]; + + unpackPhase = "dpkg-deb -x $src $out"; + + installPhase = '' + dir="$out/${reldir}" + substituteInPlace $dir/lpd/filter_${model} \ + --replace /usr/bin/perl ${perl}/bin/perl \ + --replace "BR_PRT_PATH =~" "BR_PRT_PATH = \"$dir\"; #" \ + --replace "PRINTER =~" "PRINTER = \"${model}\"; #" + wrapProgram $dir/lpd/filter_${model} \ + --prefix PATH : ${lib.makeBinPath [ + coreutils ghostscript gnugrep gnused which + ]} + # need to use i686 glibc here, these are 32bit proprietary binaries + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + $dir/lpd/brmfcl3770cdwfilter + ''; + + meta = { + description = "Brother ${lib.strings.toUpper model} driver"; + homepage = "http://www.brother.com/"; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + license = lib.licenses.unfree; + platforms = [ "x86_64-linux" "i686-linux" ]; + maintainers = [ lib.maintainers.steveej ]; + }; + }; + + cupswrapper = stdenv.mkDerivation rec { + inherit version src; + name = "${model}cupswrapper-${version}"; + + nativeBuildInputs = [ dpkg makeWrapper ]; + + unpackPhase = "dpkg-deb -x $src $out"; + + installPhase = '' + basedir=${driver}/${reldir} + dir=$out/${reldir} + substituteInPlace $dir/cupswrapper/brother_lpdwrapper_${model} \ + --replace /usr/bin/perl ${perl}/bin/perl \ + --replace "basedir =~" "basedir = \"$basedir\"; #" \ + --replace "PRINTER =~" "PRINTER = \"${model}\"; #" + wrapProgram $dir/cupswrapper/brother_lpdwrapper_${model} \ + --prefix PATH : ${lib.makeBinPath [ coreutils gnugrep gnused ]} + mkdir -p $out/lib/cups/filter + mkdir -p $out/share/cups/model + ln $dir/cupswrapper/brother_lpdwrapper_${model} $out/lib/cups/filter + ln $dir/cupswrapper/brother_${model}_printer_en.ppd $out/share/cups/model + ''; + + meta = { + description = "Brother ${lib.strings.toUpper model} CUPS wrapper driver"; + homepage = "http://www.brother.com/"; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + license = lib.licenses.gpl2; + platforms = [ "x86_64-linux" "i686-linux" ]; + maintainers = [ lib.maintainers.steveej ]; + }; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/canon/default.nix b/nixpkgs/pkgs/misc/cups/drivers/canon/default.nix new file mode 100644 index 000000000000..8614bdda2ab2 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/canon/default.nix @@ -0,0 +1,199 @@ +{ lib +, stdenv +, fetchurl +, unzip +, autoconf +, automake +, libtool_1_5 +, makeWrapper +, cups +, jbigkit +, glib +, gtk3 +, gdk-pixbuf +, pango +, cairo +, coreutils +, atk +, pkg-config +, libxml2 +, runtimeShell +, libredirect +, ghostscript +, pkgs +, zlib +}: + +let + system = + if stdenv.hostPlatform.system == "x86_64-linux" then "intel" + else if stdenv.hostPlatform.system == "aarch64-linux" then "arm" + else throw "Unsupported platform for Canon UFR2 Drivers: ${stdenv.hostPlatform.system}"; + ld64 = "${stdenv.cc}/nix-support/dynamic-linker"; + libs = pkgs: lib.makeLibraryPath buildInputs; + + version = "5.70"; + dl = "8/0100007658/33"; + + versionNoDots = builtins.replaceStrings [ "." ] [ "" ] version; + src_canon = fetchurl { + url = "http://gdlp01.c-wss.com/gds/${dl}/linux-UFRII-drv-v${versionNoDots}-m17n-11.tar.gz"; + hash = "sha256-d5VHlPpUPAr3RWVdQRdn42YLuVekOw1IaMFLVt1Iu7o="; + }; + + buildInputs = [ cups zlib jbigkit glib gtk3 libxml2 gdk-pixbuf pango cairo atk ]; +in +stdenv.mkDerivation rec { + pname = "canon-cups-ufr2"; + inherit version; + src = src_canon; + + postUnpack = '' + ( + cd $sourceRoot + tar -xf Sources/cnrdrvcups-lb-${version}-1.11.tar.xz + sed -ie "s@_prefix=/usr@_prefix=$out@" cnrdrvcups-common-${version}/allgen.sh + sed -ie "s@_libdir=/usr/lib@_libdir=$out/lib@" cnrdrvcups-common-${version}/allgen.sh + sed -ie "s@_bindir=/usr/bin@_bindir=$out/bin@" cnrdrvcups-common-${version}/allgen.sh + sed -ie "s@/usr@$out@" cnrdrvcups-common-${version}/{{backend,rasterfilter}/Makefile.am,rasterfilter/cnrasterproc.h} + sed -ie "s@etc/cngplp@$out/etc/cngplp@" cnrdrvcups-common-${version}/cngplp/Makefile.am + sed -ie "s@usr/share/cngplp@$out/usr/share/cngplp@" cnrdrvcups-common-${version}/cngplp/src/Makefile.am + patchShebangs cnrdrvcups-common-${version} + + sed -ie "s@_prefix=/usr@_prefix=$out@" cnrdrvcups-lb-${version}/allgen.sh + sed -ie "s@_libdir=/usr/lib@_libdir=$out/lib@" cnrdrvcups-lb-${version}/allgen.sh + sed -ie "s@_bindir=/usr/bin@_bindir=$out/bin@" cnrdrvcups-lb-${version}/allgen.sh + sed -ie '/^cd \.\.\/cngplp/,/^cd files/{/^cd files/!{d}}' cnrdrvcups-lb-${version}/allgen.sh + sed -ie "s@cd \.\./pdftocpca@cd pdftocpca@" cnrdrvcups-lb-${version}/allgen.sh + sed -ie "s@/usr@$out@" cnrdrvcups-lb-${version}/pdftocpca/Makefile.am + sed -i "/CNGPLPDIR/d" cnrdrvcups-lb-${version}/Makefile + patchShebangs cnrdrvcups-lb-${version} + ) + ''; + + nativeBuildInputs = [ makeWrapper unzip autoconf automake libtool_1_5 pkg-config ]; + + inherit buildInputs; + + installPhase = '' + runHook preInstall + + ( + cd cnrdrvcups-common-${version} + ./allgen.sh + make install + ) + ( + cd cnrdrvcups-common-${version}/Rule + mkdir -p $out/share/cups/usb + install -m 644 *.usb-quirks $out/share/cups/usb + ) + ( + cd cnrdrvcups-lb-${version} + ./allgen.sh + make install + + mkdir -p $out/share/cups/model + install -m 644 ppd/*.ppd $out/share/cups/model/ + ) + + ( + cd lib + mkdir -p $out/lib + install -m 755 libs64/${system}/libColorGearCufr2.so.2.0.0 $out/lib + install -m 755 libs64/${system}/libcaepcmufr2.so.1.0 $out/lib + install -m 755 libs64/${system}/libcaiocnpkbidir.so.1.0.0 $out/lib + install -m 755 libs64/${system}/libcaiousb.so.1.0.0 $out/lib + install -m 755 libs64/${system}/libcaiowrapufr2.so.1.0.0 $out/lib + install -m 755 libs64/${system}/libcanon_slimufr2.so.1.0.0 $out/lib + install -m 755 libs64/${system}/libcanonufr2r.so.1.0.0 $out/lib + install -m 755 libs64/${system}/libcnaccm.so.1.0 $out/lib + install -m 755 libs64/${system}/libcnlbcmr.so.1.0 $out/lib + install -m 755 libs64/${system}/libcnncapcmr.so.1.0 $out/lib + install -m 755 libs64/${system}/libufr2filterr.so.1.0.0 $out/lib + + install -m 755 libs64/${system}/cnpdfdrv $out/bin + install -m 755 libs64/${system}/cnpkbidir $out/bin + install -m 755 libs64/${system}/cnpkmoduleufr2r $out/bin + install -m 755 libs64/${system}/cnrsdrvufr2 $out/bin + install -m 755 libs64/${system}/cnsetuputil2 $out/bin/cnsetuputil2 + + mkdir -p $out/share/cnpkbidir + install -m 644 libs64/${system}/cnpkbidir_info* $out/share/cnpkbidir + + mkdir -p $out/share/ufr2filter + install -m 644 libs64/${system}/ThLB* $out/share/ufr2filter + ) + + ( + cd $out/lib + + ln -sf libColorGearCufr2.so.2.0.0 libColorGearCufr2.so + ln -sf libColorGearCufr2.so.2.0.0 libColorGearCufr2.so.2 + ln -sf libcaepcmufr2.so.1.0 libcaepcmufr2.so + ln -sf libcaepcmufr2.so.1.0 libcaepcmufr2.so.1 + ln -sf libcaiocnpkbidir.so.1.0.0 libcaiocnpkbidir.so + ln -sf libcaiocnpkbidir.so.1.0.0 libcaiocnpkbidir.so.1 + ln -sf libcaiowrapufr2.so.1.0.0 libcaiowrapufr2.so + ln -sf libcaiowrapufr2.so.1.0.0 libcaiowrapufr2.so.1 + ln -sf libcanon_slimufr2.so.1.0.0 libcanon_slimufr2.so + ln -sf libcanon_slimufr2.so.1.0.0 libcanon_slimufr2.so.1 + ln -sf libcanonufr2r.so.1.0.0 libcanonufr2r.so + ln -sf libcanonufr2r.so.1.0.0 libcanonufr2r.so.1 + ln -sf libcnlbcmr.so.1.0 libcnlbcmr.so + ln -sf libcnlbcmr.so.1.0 libcnlbcmr.so.1 + ln -sf libufr2filterr.so.1.0.0 libufr2filterr.so + ln -sf libufr2filterr.so.1.0.0 libufr2filterr.so.1 + ln -sf libuictlufr2r.so.1.0.0 libuictlufr2r.so + ln -sf libuictlufr2r.so.1.0.0 libuictlufr2r.so.1 + + patchelf --set-rpath "$(cat $NIX_CC/nix-support/orig-cc)/lib:${libs pkgs}:${stdenv.cc.cc.lib}/lib64:${stdenv.cc.libc}/lib64:$out/lib" libcanonufr2r.so.1.0.0 + patchelf --set-rpath "$(cat $NIX_CC/nix-support/orig-cc)/lib:${libs pkgs}:${stdenv.cc.cc.lib}/lib64:${stdenv.cc.libc}/lib64" libcaepcmufr2.so.1.0 + patchelf --set-rpath "$(cat $NIX_CC/nix-support/orig-cc)/lib:${libs pkgs}:${stdenv.cc.cc.lib}/lib64:${stdenv.cc.libc}/lib64" libColorGearCufr2.so.2.0.0 + ) + + ( + cd $out/bin + patchelf --set-interpreter "$(cat ${ld64})" --set-rpath "${lib.makeLibraryPath buildInputs}:${stdenv.cc.cc.lib}/lib64:${stdenv.cc.libc}/lib64" cnsetuputil2 cnpdfdrv + patchelf --set-interpreter "$(cat ${ld64})" --set-rpath "${lib.makeLibraryPath buildInputs}:${stdenv.cc.cc.lib}/lib64:${stdenv.cc.libc}/lib64:$out/lib" cnpkbidir cnrsdrvufr2 cnpkmoduleufr2r cnjbigufr2 + + wrapProgram $out/bin/cnrsdrvufr2 \ + --prefix LD_LIBRARY_PATH ":" "$out/lib" \ + --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \ + --set NIX_REDIRECTS /usr/bin/cnpkmoduleufr2r=$out/bin/cnpkmoduleufr2r:/usr/bin/cnjbigufr2=$out/bin/cnjbigufr2 + + wrapProgram $out/bin/cnsetuputil2 \ + --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \ + --set NIX_REDIRECTS /usr/share/cnsetuputil2=$out/usr/share/cnsetuputil2 + ) + + ( + cd lib/data/ufr2 + mkdir -p $out/share/caepcm + install -m 644 *.ICC $out/share/caepcm + install -m 644 *.icc $out/share/caepcm + install -m 644 *.PRF $out/share/caepcm + install -m 644 CnLB* $out/share/caepcm + ) + + ( + cd cnrdrvcups-utility-${version}/data + mkdir -p $out/usr/share/cnsetuputil2 + install -m 644 cnsetuputil* $out/usr/share/cnsetuputil2 + ) + + makeWrapper "${ghostscript}/bin/gs" "$out/bin/gs" \ + --prefix LD_LIBRARY_PATH ":" "$out/lib" \ + --prefix PATH ":" "$out/bin" + + runHook postInstall + ''; + + meta = with lib; { + description = "CUPS Linux drivers for Canon printers"; + homepage = "http://www.canon.com/"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = licenses.unfree; + maintainers = with maintainers; [ lluchs ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/carps-cups/default.nix b/nixpkgs/pkgs/misc/cups/drivers/carps-cups/default.nix new file mode 100644 index 000000000000..32e92da16084 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/carps-cups/default.nix @@ -0,0 +1,44 @@ +{ stdenv +, lib +, fetchFromGitHub +, cups +}: + +stdenv.mkDerivation { + pname = "carps-cups"; + version = "unstable-2018-03-05"; + + src = fetchFromGitHub { + owner = "ondrej-zary"; + repo = "carps-cups"; + rev = "18d80d1d6f473dd9132e4b6d8b5c592c74982f17"; + sha256 = "0mjj9hs5lqxi0qamgb4sxfz4fvf7ggi66bxd37bkz3fl0g9xff70"; + }; + + preBuild = '' + export CUPS_DATADIR="${cups}/share/cups" + ''; + + installPhase = '' + CUPSDIR="$out/lib/cups" + CUPSDATADIR="$out/share/cups" + + mkdir -p "$CUPSDIR/filter" "$CUPSDATADIR/drv" "$CUPSDATADIR/usb" + + install -s rastertocarps $CUPSDIR/filter + install -m 644 carps.drv $CUPSDATADIR/drv/ + install -m 644 carps.usb-quirks $CUPSDATADIR/usb/ + ''; + + buildInputs = [ cups ]; + + meta = with lib; { + description = "CUPS Linux drivers for Canon printers"; + homepage = "https://www.canon.com/"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ + ewok + ]; + }; +} + diff --git a/nixpkgs/pkgs/misc/cups/drivers/cnijfilter2/default.nix b/nixpkgs/pkgs/misc/cups/drivers/cnijfilter2/default.nix new file mode 100644 index 000000000000..8520ba7aff2e --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/cnijfilter2/default.nix @@ -0,0 +1,150 @@ +{ stdenv, lib, fetchzip, autoconf, automake, cups, glib, libxml2, libusb1, libtool +, withDebug ? false }: + +stdenv.mkDerivation { + pname = "cnijfilter2"; + + version = "6.40"; + + src = fetchzip { + url = "https://gdlp01.c-wss.com/gds/1/0100011381/01/cnijfilter2-source-6.40-1.tar.gz"; + sha256 = "3RoG83jLOsdTEmvUkkxb7wa8oBrJA4v1mGtxTGwSowU="; + }; + + nativeBuildInputs = [ automake autoconf ]; + buildInputs = [ + cups glib libxml2 libusb1 libtool + ]; + + patches = [ + ./patches/get_protocol.patch + ]; + + # lgmon3's --enable-libdir flag is used soley for specifying in which + # directory the cnnnet.ini cache file should reside. + # NixOS uses /var/cache/cups, and given the name, it seems like a reasonable + # place to put the cnnet.ini file, and thus we do so. + # + # Note that the drivers attempt to dlopen + # $out/lib/cups/filter/libcnbpcnclapicom2.so + buildPhase = '' + mkdir -p $out/lib + cp com/libs_bin_x86_64/* $out/lib + mkdir -p $out/lib/cups/filter + ln -s $out/lib/libcnbpcnclapicom2.so $out/lib/cups/filter + + export NIX_LDFLAGS="$NIX_LDFLAGS -L$out/lib" + '' + lib.optionalString withDebug '' + export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -D__DEBUG__ -DDEBUG_LOG" + '' + '' + + ( + cd lgmon3 + substituteInPlace src/Makefile.am \ + --replace /usr/include/libusb-1.0 \ + ${libusb1.dev}/include/libusb-1.0 + ./autogen.sh --prefix=$out --enable-progpath=$out/bin \ + --datadir=$out/share \ + --enable-libdir=/var/cache/cups + make + ) + + ( + cd cmdtocanonij2 + ./autogen.sh --prefix=$out + make + ) + + ( + cd cmdtocanonij3 + ./autogen.sh --prefix=$out + make + ) + + ( + cd cnijbe2 + substituteInPlace src/Makefile.am \ + --replace "/usr/lib/cups/backend" \ + "$out/lib/cups/backend" + ./autogen.sh --prefix=$out --enable-progpath=$out/bin + make + ) + + ( + cd rastertocanonij + ./autogen.sh --prefix=$out --enable-progpath=$out/bin + make + ) + + ( + cd tocanonij + ./autogen.sh --prefix=$out --enable-progpath=$out/bin + make + ) + + ( + cd tocnpwg + ./autogen.sh --prefix=$out --enable-progpath=$out/bin + make + ) + ''; + + installPhase = '' + ( + cd lgmon3 + make install + ) + + ( + cd cmdtocanonij2 + make install + ) + + ( + cd cmdtocanonij3 + make install + ) + + ( + cd cnijbe2 + make install + ) + + ( + cd rastertocanonij + make install + ) + + ( + cd tocanonij + make install + ) + + ( + cd tocnpwg + make install + ) + + mkdir -p $out/share/cups/model + cp ppd/*.ppd $out/share/cups/model + ''; + + meta = with lib; { + description = "Canon InkJet printer drivers for many Pixma series printers."; + longDescription = '' + Canon InjKet printer drivers for series E200, E300, E3100, E3300, E4200, E450, E470, E480, + G3000, G3010, G4000, G4010, G5000, G5080, G6000, G6050, G6080, G7000, G7050, G7080, GM2000, + GM2080, GM4000, GM4080, iB4000, iB4100, iP110, MB2000, MB2100, MB2300, MB2700, MB5000, + MB5100, MB5300, MB5400, MG2900, MG3000, MG3600, MG5600, MG5700, MG6600, MG6700, MG6800, + MG6900, MG7500, MG7700, MX490, TR4500, TR703, TR7500, TR7530, TR8500, TR8530, TR8580, TR9530, + TS200, TS300, TS3100, TS3300, TS5000, TS5100, TS5300, TS5380, TS6000, TS6100, TS6130, TS6180, + TS6200, TS6230, TS6280, TS6300, TS6330, TS6380, TS700, TS708, TS7330, TS8000, TS8100, TS8130, + TS8180, TS8200, TS8230, TS8280, TS8300, TS8330, TS8380, TS9000, TS9100, TS9180, TS9500, + TS9580, XK50, XK60, XK70, XK80. + ''; + homepage = "https://hk.canon/en/support/0101048401/1"; + license = licenses.unfree; + platforms = [ "i686-linux" "x86_64-linux" ]; + maintainers = with maintainers; [ ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/cnijfilter2/patches/get_protocol.patch b/nixpkgs/pkgs/misc/cups/drivers/cnijfilter2/patches/get_protocol.patch new file mode 100644 index 000000000000..18cb1ce1d014 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/cnijfilter2/patches/get_protocol.patch @@ -0,0 +1,14 @@ +# Resolves the compilation issue reported at https://github.com/NixOS/nixpkgs/pull/180681#issuecomment-1192304711 +# An identical issue was previously reported in Gentoo: https://bugs.gentoo.org/723186 +# This patch is taken from the solution of Alfredo Tupone (https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=24688d64544b43f2c14be54531ad8764419dde09) +--- a/lgmon3/src/cnijlgmon3.c 2022-07-22 12:44:32.194641628 +0100 ++++ b/lgmon3/src/cnijlgmon3.c 2022-07-22 12:43:53.954817724 +0100 +@@ -55,7 +55,7 @@ + int (*GET_STATUS)(char *, int, int *, int * , char *); + int (*GET_STATUS2)(char *, int, char *, int *, int * , char *, char *); + int (*GET_STATUS2_MAINTENANCE)(char *, int, char *, int *, int * , char *, char *); +-int (*GET_PROTOCOL)(char *, size_t); ++static int (*GET_PROTOCOL)(char *, size_t); + + + int main(int argc, char *argv[]) diff --git a/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_2_80/default.nix b/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_2_80/default.nix new file mode 100644 index 000000000000..1a573c032e7f --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_2_80/default.nix @@ -0,0 +1,118 @@ +{ stdenv, lib, fetchzip, + autoconf, automake, libtool, + cups, popt, libtiff, libpng, + ghostscript }: + +/* this derivation is basically just a transcription of the rpm .spec + file included in the tarball */ + +stdenv.mkDerivation { + pname = "cnijfilter"; + + /* important note about versions: cnijfilter packages seem to use + versions in a non-standard way. the version indicates which + printers are supported in the package. so this package should + not be "upgraded" in the usual way. + + instead, if you want to include another version supporting your + printer, you should try to abstract out the common things (which + should be pretty much everything except the version and the 'pr' + and 'pr_id' values to loop over). */ + version = "2.80"; + + src = fetchzip { + url = "http://gdlp01.c-wss.com/gds/1/0100000841/01/cnijfilter-common-2.80-1.tar.gz"; + sha256 = "06s9nl155yxmx56056y22kz1p5b2sb5fhr3gf4ddlczjkd1xch53"; + }; + + nativeBuildInputs = [ autoconf automake ]; + buildInputs = [ libtool + cups popt libtiff libpng + ghostscript ]; + + patches = [ ./patches/missing-include.patch + ./patches/libpng15.patch ]; + + postPatch = '' + sed -i "s|/usr/lib/cups/backend|$out/lib/cups/backend|" backend/src/Makefile.am; + sed -i "s|/usr|$out|" backend/src/cnij_backend_common.c; + sed -i "s|/usr/bin|${ghostscript}/bin|" pstocanonij/filter/pstocanonij.c; + sed -i "s|/usr/local|$out|" libs/bjexec/bjexec.c; + ''; + + configurePhase = '' + cd libs + ./autogen.sh --prefix=$out; + + cd ../cngpij + ./autogen.sh --prefix=$out --enable-progpath=$out/bin; + + cd ../pstocanonij + ./autogen.sh --prefix=$out --enable-progpath=$out/bin; + + cd ../backend + ./autogen.sh --prefix=$out; + cd ..; + ''; + + preInstall = '' + mkdir -p $out/bin $out/lib/cups/filter $out/share/cups/model; + ''; + + postInstall = '' + for pr in mp140 mp210 ip3500 mp520 ip4500 mp610; do + cd ppd; + ./autogen.sh --prefix=$out --program-suffix=$pr + make clean; + make; + make install; + + cd ../cnijfilter; + ./autogen.sh --prefix=$out --program-suffix=$pr --enable-libpath=/var/lib/cups/path/lib/bjlib --enable-binpath=$out/bin; + make clean; + make; + make install; + + cd ..; + done; + + mkdir -p $out/lib/bjlib; + for pr_id in 315 316 319 328 326 327; do + install -c -m 755 $pr_id/database/* $out/lib/bjlib; + install -c -s -m 755 $pr_id/libs_bin/*.so.* $out/lib; + done; + + pushd $out/lib; + for so_file in *.so.*; do + ln -s $so_file ''${so_file/.so.*/}.so; + patchelf --set-rpath $out/lib $so_file; + done; + popd; + ''; + + /* the tarball includes some pre-built shared libraries. we run + 'patchelf --set-rpath' on them just a few lines above, so that + they can find each other. but that's not quite enough. some of + those libraries load each other in non-standard ways -- they + don't list each other in the DT_NEEDED section. so, if the + standard 'patchelf --shrink-rpath' (from + pkgs/development/tools/misc/patchelf/setup-hook.sh) is run on + them, it undoes the --set-rpath. this prevents that. */ + dontPatchELF = true; + + # fortify hardening makes the filter crash + # https://github.com/NixOS/nixpkgs/issues/276125 + hardeningDisable = [ "fortify3" ]; + + meta = with lib; { + description = "Canon InkJet printer drivers for the iP5400, MP520, MP210, MP140, iP3500, and MP610 series. (MP520 drivers also work for MX700.)"; + homepage = "http://support-asia.canon-asia.com/content/EN/0100084101.html"; + sourceProvenance = with sourceTypes; [ + fromSource + binaryNativeCode + ]; + license = licenses.unfree; + platforms = platforms.linux; + maintainers = with maintainers; [ jerith666 ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_2_80/patches/libpng15.patch b/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_2_80/patches/libpng15.patch new file mode 100644 index 000000000000..f5b3a1b13db5 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_2_80/patches/libpng15.patch @@ -0,0 +1,23 @@ +diff -aur cnijfilter-source-3.20-1/cnijfilter/src/bjfimage.c cnijfilter-source-3.20-1.new/cnijfilter/src/bjfimage.c +--- cnijfilter-source-3.20-1/cnijfilter/src/bjfimage.c 2009-03-26 06:11:05.000000000 +0100 ++++ cnijfilter-source-3.20-1.new/cnijfilter/src/bjfimage.c 2012-02-10 09:33:52.512334139 +0100 +@@ -1520,8 +1520,8 @@ + short tmpformat; + short retbyte = 0; + short bpp = 3; +- long width = 0; +- long length = 0; ++ png_uint_32 width = 0; ++ png_uint_32 length = 0; + long rstep = 0; + long RasterLength = 0; + long i; +@@ -1574,7 +1574,7 @@ + goto onErr; + } + +- if (setjmp (png_p->jmpbuf)) ++ if (setjmp (png_jmpbuf(png_p))) + { + png_destroy_read_struct(&png_p, &info_p, (png_infopp)NULL); + goto onErr; diff --git a/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_2_80/patches/missing-include.patch b/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_2_80/patches/missing-include.patch new file mode 100644 index 000000000000..20c2d756d1eb --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_2_80/patches/missing-include.patch @@ -0,0 +1,20 @@ +--- a/backend/src/cnij_backend_common.c 2008-09-01 10:05:44.000000000 +0200 ++++ b/backend/src/cnij_backend_common.c 2012-05-06 17:38:40.000000000 +0200 +@@ -39,6 +39,7 @@ + // CUPS Header + #include <cups/cups.h> + #include <cups/ipp.h> ++#include <cups/ppd.h> + + // Header file for CANON + #include "cnij_backend_common.h" +--- a/cngpijmon/src/bjcupsmon_cups.c 2008-09-02 12:28:24.000000000 +0200 ++++ b/cngpijmon/src/bjcupsmon_cups.c 2012-05-06 17:39:20.000000000 +0200 +@@ -21,6 +21,7 @@ + /*** Includes ***/ + #include <cups/cups.h> + #include <cups/language.h> ++#include <cups/ppd.h> + #include <sys/types.h> + #include <unistd.h> + #include <pwd.h> diff --git a/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_4_00/default.nix b/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_4_00/default.nix new file mode 100644 index 000000000000..d632ed12d89b --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_4_00/default.nix @@ -0,0 +1,156 @@ +{ stdenv, lib, fetchzip, + autoconf, automake, libtool, + cups, popt, libtiff, libpng, + ghostscript, glib, libusb1, libxml2 }: + +/* this derivation is basically just a transcription of the rpm .spec + file included in the tarball */ + +let arch = + if stdenv.hostPlatform.system == "x86_64-linux" then "64" + else if stdenv.hostPlatform.system == "i686-linux" then "32" + else throw "Unsupported system ${stdenv.hostPlatform.system}"; + +in stdenv.mkDerivation { + pname = "cnijfilter"; + + /* important note about versions: cnijfilter packages seem to use + versions in a non-standard way. the version indicates which + printers are supported in the package. so this package should + not be "upgraded" in the usual way. + + instead, if you want to include another version supporting your + printer, you should try to abstract out the common things (which + should be pretty much everything except the version and the 'pr' + and 'pr_id' values to loop over). */ + version = "4.00"; + + src = fetchzip { + url = "http://gdlp01.c-wss.com/gds/5/0100005515/01/cnijfilter-source-4.00-1.tar.gz"; + sha256 = "1f6vpx1z3qa88590i5m0s49j9n90vpk81xmw6pvj0nfd3qbvzkya"; + }; + + nativeBuildInputs = [ autoconf automake ]; + buildInputs = [ libtool + cups popt libtiff libpng + ghostscript glib libusb1 libxml2 ]; + + # patches from https://github.com/tokiclover/bar-overlay/tree/master/net-print/cnijfilter + patches = [ + ./patches/cnijfilter-3.80-1-cups-1.6.patch + ./patches/cnijfilter-3.80-6-cups-1.6.patch + ./patches/cnijfilter-4.00-4-ppd.patch + ./patches/cnijfilter-4.00-5-abi_x86_32.patch + ./patches/cnijfilter-4.00-6-headers.patch + ./patches/cnijfilter-4.00-7-sysctl.patch + ]; + + postPatch = '' + sed -i "s|/usr/lib/cups/backend|$out/lib/cups/backend|" backend/src/Makefile.am; + sed -i "s|/usr/lib/cups/backend|$out/lib/cups/backend|" backendnet/backend/Makefile.am; + sed -i "s|/usr/lib/cups/backend|$out/lib/cups/backend|" cnijbe/src/Makefile.am; + sed -i "s|/usr|$out|" backend/src/cnij_backend_common.c; + sed -i "s|/usr/bin|${ghostscript}/bin|" pstocanonij/filter/pstocanonij.c; + ''; + + configurePhase = '' + cd libs + ./autogen.sh --prefix=$out + + cd ../bscc2sts + ./autogen.sh + + cd ../cnijnpr + ./autogen.sh --prefix=$out --enable-libpath=$out/lib/bjlib + + cd ../cngpij + ./autogen.sh --prefix=$out --enable-progpath=$out/bin + + cd ../cngpijmnt + ./autogen.sh --prefix=$out --enable-progpath=$out/bin + + cd ../pstocanonij + ./autogen.sh --prefix=$out --enable-progpath=$out/bin + + cd ../backend + ./autogen.sh --prefix=$out + + cd ../backendnet + ./autogen.sh --prefix=$out --enable-libpath=$out/lib/bjlib --enable-progpath=$out/bin + + cd ../cmdtocanonij + ./autogen.sh --prefix=$out --datadir=$out/share + + cd ../cnijbe + ./autogen.sh --prefix=$out --enable-progpath=$out/bin + + cd ../lgmon2 + substituteInPlace src/Makefile.am \ + --replace /usr/include/libusb-1.0 \ + ${libusb1.dev}/include/libusb-1.0 + ./autogen.sh --prefix=$out --enable-libpath=$out/lib/bjlib --enable-progpath=$out/bin + + cd ..; + + sed -e "s,cnijlgmon2_LDADD =,cnijlgmon2_LDADD = -L../../com/libs_bin${arch}," \ + -i lgmon2/src/Makefile.am || die + ''; + + preInstall = '' + mkdir -p $out/bin $out/lib/cups/filter $out/share/cups/model; + ''; + + postInstall = '' + set -o xtrace + for pr in mg2400 mg2500 mg3500 mg5500 mg6400 mg6500 mg7100 p200; do + cd ppd; + ./autogen.sh --prefix=$out --program-suffix=$pr + make clean; + make; + make install; + + cd ../cnijfilter; + ./autogen.sh --prefix=$out --program-suffix=$pr --enable-libpath=/var/lib/cups/path/lib/bjlib --enable-binpath=$out/bin; + make clean; + make; + make install; + + cd ..; + done; + + mkdir -p $out/lib/bjlib; + for pr_id in 423 424 425 426 427 428 429 430; do + install -c -m 755 $pr_id/database/* $out/lib/bjlib; + install -c -s -m 755 $pr_id/libs_bin${arch}/*.so.* $out/lib; + done; + + pushd $out/lib; + for so_file in *.so.*; do + ln -s $so_file ''${so_file/.so.*/}.so; + patchelf --set-rpath $out/lib $so_file; + done; + popd; + ''; + + /* the tarball includes some pre-built shared libraries. we run + 'patchelf --set-rpath' on them just a few lines above, so that + they can find each other. but that's not quite enough. some of + those libraries load each other in non-standard ways -- they + don't list each other in the DT_NEEDED section. so, if the + standard 'patchelf --shrink-rpath' (from + pkgs/development/tools/misc/patchelf/setup-hook.sh) is run on + them, it undoes the --set-rpath. this prevents that. */ + dontPatchELF = true; + + meta = with lib; { + description = "Canon InkJet printer drivers for the MG2400 MG2500 MG3500 MG5500 MG6400 MG6500 MG7100 and P200 series"; + homepage = "https://www.canon-europe.com/support/consumer_products/products/fax__multifunctionals/inkjet/pixma_mg_series/pixma_mg5550.aspx?type=drivers&driverdetailid=tcm:13-1094072"; + sourceProvenance = with sourceTypes; [ + fromSource + binaryNativeCode + ]; + license = licenses.unfree; + platforms = platforms.linux; + maintainers = with maintainers; [ chpatrick ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_4_00/patches/cnijfilter-3.80-1-cups-1.6.patch b/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_4_00/patches/cnijfilter-3.80-1-cups-1.6.patch new file mode 100644 index 000000000000..dfc0bb2268cb --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_4_00/patches/cnijfilter-3.80-1-cups-1.6.patch @@ -0,0 +1,62 @@ +--- a/cngpij/cngpij/bjcups.c ++++ a/cngpij/cngpij/bjcups.c +@@ -698,8 +719,8 @@ + else { + pRequest = ippNew(); + +- pRequest->request.op.operation_id = CUPS_GET_PRINTERS; +- pRequest->request.op.request_id = 1; ++ ippSetOperation(pRequest, CUPS_GET_PRINTERS); ++ ippSetRequestId(pRequest, 1); + + pLanguage = bjcupsLangDefault(); // cupsLangDefault() -> bjcupsLangDefault() for cups-1.1.19 + +@@ -708,29 +729,29 @@ + ippAddString(pRequest, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, NULL); + + if ((pResponse = cupsDoRequest(pHTTP, pRequest, "/")) != NULL) { +- if (pResponse->request.status.status_code > IPP_OK_CONFLICT) { ++ if (ippGetStatusCode(pResponse) > IPP_OK_CONFLICT) { + fputs("ERROR: IPP ERROR\n", stderr); + goto onErr; + } + else { +- pAttribute = pResponse->attrs; ++ pAttribute = ippFirstAttribute(pResponse); + + while (pAttribute != NULL) { +- while (pAttribute != NULL && pAttribute->group_tag != IPP_TAG_PRINTER) { +- pAttribute = pAttribute->next; ++ while (pAttribute != NULL && ippGetGroupTag(pAttribute) != IPP_TAG_PRINTER) { ++ pAttribute = ippNextAttribute(pResponse); + } + if (pAttribute == NULL) { + break; + } + +- while (pAttribute != NULL && pAttribute->group_tag == IPP_TAG_PRINTER) { +- if (strcmp(pAttribute->name, "printer-name") == 0 && pAttribute->value_tag == IPP_TAG_NAME) { +- pPrinter = pAttribute->values[0].string.text; ++ while (pAttribute != NULL && ippGetGroupTag(pAttribute) == IPP_TAG_PRINTER) { ++ if (strcmp(ippGetName(pAttribute), "printer-name") == 0 && ippGetValueTag(pAttribute) == IPP_TAG_NAME) { ++ pPrinter = ippGetString(pAttribute, 0, NULL); + } +- if (strcmp(pAttribute->name, "device-uri") == 0 && pAttribute->value_tag == IPP_TAG_URI) { +- pDUri = pAttribute->values[0].string.text; ++ if (strcmp(ippGetName(pAttribute), "device-uri") == 0 && ippGetValueTag(pAttribute) == IPP_TAG_URI) { ++ pDUri = ippGetString(pAttribute, 0, NULL); + } +- pAttribute = pAttribute->next; ++ pAttribute = ippNextAttribute(pResponse); + } + + if (strcasecmp(pDestName, pPrinter) == 0) { +@@ -739,7 +760,7 @@ + } + + if (pAttribute != NULL) +- pAttribute = pAttribute->next; ++ pAttribute = ippNextAttribute(pResponse); + } + } + diff --git a/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_4_00/patches/cnijfilter-3.80-6-cups-1.6.patch b/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_4_00/patches/cnijfilter-3.80-6-cups-1.6.patch new file mode 100644 index 000000000000..6b51d4837d45 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_4_00/patches/cnijfilter-3.80-6-cups-1.6.patch @@ -0,0 +1,87 @@ +diff --git a/cngpijmnt/src/getipc.c b/cngpijmnt/src/getipc.c +index 8688032..54c7933 100755 +--- a/cngpijmnt/src/getipc.c ++++ b/cngpijmnt/src/getipc.c +@@ -42,7 +42,7 @@ int GetIPCData(LPIPCU pipc, char *sname) + int server_fd; + int client_fd; + char buf[128]; +- size_t len; ++ socklen_t len; + short ret = RET_ERROR; + + if( (server_fd = socket(PF_UNIX, SOCK_STREAM, 0)) < 0 ) + +--- a/cngpijmnt/src/main.c 2016-11-12 23:39:03.534855723 +0100 ++++ b/cngpijmnt/src/main.c 2016-11-12 23:47:02.521847145 +0100 +@@ -308,8 +308,8 @@ + *pResponse; // Pointer to CUPS IPP response. + ipp_attribute_t *pAttribute; // Pointer to CUPS attributes. + cups_lang_t *pLanguage; // Pointer to language. +- char *pPrinter = NULL; // Pointer to printer name. +- char *pDUri = NULL; // Pointer to Device uri. ++ const char *pPrinter = NULL; // Pointer to printer name. ++ const char *pDUri = NULL; // Pointer to Device uri. + short retVal = -1; // Return value. + /*** Parameters end ***/ + +@@ -321,8 +321,8 @@ + else { + pRequest = ippNew(); + +- pRequest->request.op.operation_id = CUPS_GET_PRINTERS; +- pRequest->request.op.request_id = 1; ++ ippSetOperation(pRequest, CUPS_GET_PRINTERS); ++ ippSetRequestId(pRequest, 1); + + pLanguage = bjcupsLangDefault(); // cupsLangDefault() -> bjcupsLangDefault() for cups-1.1.19 + +@@ -331,29 +331,29 @@ + ippAddString(pRequest, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, NULL); + + if ((pResponse = cupsDoRequest(pHTTP, pRequest, "/")) != NULL) { +- if (pResponse->request.status.status_code > IPP_OK_CONFLICT) { ++ if (ippGetStatusCode(pResponse) > IPP_OK_CONFLICT) { + fputs("ERROR: IPP ERROR\n", stderr); + goto onErr; + } + else { +- pAttribute = pResponse->attrs; ++ pAttribute = ippFirstAttribute(pResponse); + + while (pAttribute != NULL) { +- while (pAttribute != NULL && pAttribute->group_tag != IPP_TAG_PRINTER) { +- pAttribute = pAttribute->next; ++ while (pAttribute != NULL && ippGetGroupTag(pAttribute) != IPP_TAG_PRINTER) { ++ pAttribute = ippNextAttribute(pResponse); + } + if (pAttribute == NULL) { + break; + } + +- while (pAttribute != NULL && pAttribute->group_tag == IPP_TAG_PRINTER) { +- if (strcmp(pAttribute->name, "printer-name") == 0 && pAttribute->value_tag == IPP_TAG_NAME) { +- pPrinter = pAttribute->values[0].string.text; ++ while (pAttribute != NULL && ippGetGroupTag(pAttribute) == IPP_TAG_PRINTER) { ++ if (strcmp(ippGetName(pAttribute), "printer-name") == 0 && ippGetValueTag(pAttribute) == IPP_TAG_NAME) { ++ pPrinter = ippGetString(pAttribute, 0, NULL); + } +- if (strcmp(pAttribute->name, "device-uri") == 0 && pAttribute->value_tag == IPP_TAG_URI) { +- pDUri = pAttribute->values[0].string.text; ++ if (strcmp(ippGetName(pAttribute), "device-uri") == 0 && ippGetValueTag(pAttribute) == IPP_TAG_URI) { ++ pDUri = ippGetString(pAttribute, 0, NULL); + } +- pAttribute = pAttribute->next; ++ pAttribute = ippNextAttribute(pResponse); + } + + if (strcasecmp(pDestName, pPrinter) == 0) { +@@ -362,7 +362,7 @@ + } + + if (pAttribute != NULL) +- pAttribute = pAttribute->next; ++ pAttribute = ippNextAttribute(pResponse); + } + } + diff --git a/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_4_00/patches/cnijfilter-4.00-4-ppd.patch b/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_4_00/patches/cnijfilter-4.00-4-ppd.patch new file mode 100644 index 000000000000..92bef72ba056 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_4_00/patches/cnijfilter-4.00-4-ppd.patch @@ -0,0 +1,10 @@ +--- a/backend/src/cnij_backend_common.c 2016-11-13 00:08:34.600824006 +0100 ++++ a/backend/src/cnij_backend_common.c 2016-11-13 00:08:52.037823694 +0100 +@@ -37,6 +37,7 @@ + // CUPS Header + #include <cups/cups.h> + #include <cups/ipp.h> ++#include <cups/ppd.h> + + // Header file for CANON + #include "cnij_backend_common.h" diff --git a/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_4_00/patches/cnijfilter-4.00-5-abi_x86_32.patch b/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_4_00/patches/cnijfilter-4.00-5-abi_x86_32.patch new file mode 100644 index 000000000000..dc85801a256b --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_4_00/patches/cnijfilter-4.00-5-abi_x86_32.patch @@ -0,0 +1,45 @@ +--- a/backendnet/configure.in 2014-08-11 08:38:46.034984462 +0200 ++++ a/backendnet/configure.in 2014-08-11 08:35:42.902985813 +0200 +@@ -19,7 +19,11 @@ + AC_DEFINE_UNQUOTED(BJLIB_PATH, "$enable_libpath") + AC_SUBST(BJLIB_PATH) + +-ARC=`getconf LONG_BIT` ++case "$ABI" in ++ x86) ARC=32;; ++ amd64) ARC=64;; ++ *) ARC=`getconf LONG_BIT`;; ++esac + AC_SUBST(ARC) + + # Checks for programs. +--- a/cnijfilter/configure.in 2014-08-11 08:39:44.426984031 +0200 ++++ a/cnijfilter/configure.in 2014-08-11 08:35:19.788985984 +0200 +@@ -43,7 +43,11 @@ + esac + AC_SUBST(CNCL_LIB_ID) + +-ARC=`getconf LONG_BIT` ++case "$ABI" in ++ x86) ARC=32;; ++ amd64) ARC=64;; ++ *) ARC=`getconf LONG_BIT`;; ++esac + AC_SUBST(ARC) + + AC_PROG_CC +--- a/cnijnpr/configure.in 2014-08-11 08:41:12.712983380 +0200 ++++ a/cnijnpr/configure.in 2014-08-11 08:40:44.354983589 +0200 +@@ -37,7 +37,11 @@ + + CFLAGS="-O2" + +-ARC=`getconf LONG_BIT` ++case "$ABI" in ++ x86) ARC=32;; ++ amd64) ARC=64;; ++ *) ARC=`getconf LONG_BIT`;; ++esac + AC_SUBST(ARC) + + AC_OUTPUT(Makefile diff --git a/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_4_00/patches/cnijfilter-4.00-6-headers.patch b/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_4_00/patches/cnijfilter-4.00-6-headers.patch new file mode 100644 index 000000000000..7dba79995114 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_4_00/patches/cnijfilter-4.00-6-headers.patch @@ -0,0 +1,11 @@ +--- a/cnijnpr/src/cnijnpr.c 2016-11-13 21:51:33.844977618 +0100 ++++ a/cnijnpr/src/cnijnpr.c 2016-11-13 21:52:03.129977094 +0100 +@@ -34,6 +34,8 @@ + #include <sys/ioctl.h> + #include <net/if.h> + #include <sys/sysctl.h> ++#include <sys/types.h> ++#include <unistd.h> + #include <config.h> + #include <fcntl.h> + diff --git a/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_4_00/patches/cnijfilter-4.00-7-sysctl.patch b/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_4_00/patches/cnijfilter-4.00-7-sysctl.patch new file mode 100644 index 000000000000..a28ca208492b --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/cnijfilter_4_00/patches/cnijfilter-4.00-7-sysctl.patch @@ -0,0 +1,10 @@ +--- a/cnijnpr/src/cnijnpr.c ++++ b/cnijnpr/src/cnijnpr.c +@@ -33,7 +33,6 @@ + #include <signal.h> + #include <sys/ioctl.h> + #include <net/if.h> +-#include <sys/sysctl.h> + #include <sys/types.h> + #include <unistd.h> + #include <config.h> diff --git a/nixpkgs/pkgs/misc/cups/drivers/cups-bjnp/default.nix b/nixpkgs/pkgs/misc/cups/drivers/cups-bjnp/default.nix new file mode 100644 index 000000000000..6c8c8f21a3a2 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/cups-bjnp/default.nix @@ -0,0 +1,31 @@ +{lib, stdenv, fetchurl, cups}: + +stdenv.mkDerivation rec { + pname = "cups-bjnp"; + version = "1.2.2"; + + src = fetchurl { + url = "mirror://sourceforge/cups-bjnp/cups-bjnp-${version}.tar.gz"; + sha256 = "0sb0vm1sf8ismzd9ba33qswxmsirj2z1b7lnyrc9v5ixm7q0bnrm"; + }; + + preConfigure = ''configureFlags="--with-cupsbackenddir=$out/lib/cups/backend"''; + + buildInputs = [cups]; + env.NIX_CFLAGS_COMPILE = toString [ + "-include stdio.h" + "-Wno-error=stringop-truncation" + "-Wno-error=deprecated-declarations" + ]; + + meta = { + description = "CUPS back-end for Canon printers"; + longDescription = '' + CUPS back-end for the canon printers using the proprietary USB over IP + BJNP protocol. This back-end allows Cups to print over the network to a + Canon printer. The design is based on reverse engineering of the protocol. + ''; + homepage = "http://cups-bjnp.sourceforge.net"; + platforms = lib.platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/cups-drv-rastertosag-gdi/default.nix b/nixpkgs/pkgs/misc/cups/drivers/cups-drv-rastertosag-gdi/default.nix new file mode 100644 index 000000000000..4f1ad6c9911e --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/cups-drv-rastertosag-gdi/default.nix @@ -0,0 +1,58 @@ +{ lib +, fetchzip +, fetchpatch +, cups +, python3Packages +, patchPpdFilesHook +}: + +python3Packages.buildPythonApplication rec { + pname = "rastertosag-gdi"; + version = "0.1"; + src = fetchzip { + url = "https://www.openprinting.org/download/printing/${pname}/${pname}-${version}.tar.gz"; + sha256 = "1ldplpv497j8vhw24sksg3fiw8c5pqr0wajajh7p5xpvb6zlcmvw"; + }; + patches = [ + # port to python 3 + ( fetchpatch { + url = "https://sources.debian.org/data/main/r/${pname}/0.1-7/debian/patches/0001-${pname}-python3.patch"; + sha256 = "1l3xbrs67025595k9ba5794q3s74anizpbxwsshcfhmbrzd9h8hg"; + }) + ]; + format = "other"; + nativeBuildInputs = [ (lib.getBin cups) patchPpdFilesHook ]; + # The source image also brings pre-built ppd files, + # but we prefer to generate from source where possible, so + # the following line generates ppd files from the drv file. + postBuild = '' + ppdc -v -d . -I "${cups}/share/cups/ppdc" rastertosag-gdi.drv + ''; + installPhase = '' + runHook preInstall + install -vDm 0644 -t "${placeholder "out"}/share/cups/model/rastertosag-gdi/" *.ppd + install -vDm 0755 -t "${placeholder "out"}/bin/" rastertosag-gdi + install -vd "${placeholder "out"}/lib/cups/filter/" + ln -vst "${placeholder "out"}/lib/cups/filter/" "${placeholder "out"}/bin/rastertosag-gdi" + runHook postInstall + ''; + ppdFileCommands = [ "rastertosag-gdi" ]; + postFixup = '' + gzip -9nv "${placeholder "out"}/share/cups/model/rastertosag-gdi"/*.ppd + ''; + meta = { + description = "CUPS driver for Ricoh Aficio SP 1000S and SP 1100S printers"; + downloadPage = "https://www.openprinting.org/download/printing/rastertosag-gdi/"; + homepage = "https://www.openprinting.org/driver/rastertosag-gdi/"; + license = lib.licenses.free; # just "GPL", according to README + maintainers = [ lib.maintainers.yarny ]; + longDescription = '' + This package brings CUPS raster filter + for Ricoh Aficio SP 1000S and SP 1100S. + In contrast to other Ricoh laser printers, + they use the proprietary SAG-GDI raster format by + Sagem Communication and do not understand PCL or PostScript. + Therefore they do not work with Ricoh's PPD files. + ''; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/cups-pdf-to-pdf/default.nix b/nixpkgs/pkgs/misc/cups/drivers/cups-pdf-to-pdf/default.nix new file mode 100644 index 000000000000..a26216cbc727 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/cups-pdf-to-pdf/default.nix @@ -0,0 +1,62 @@ +{ lib +, stdenv +, fetchFromGitHub +, cups +, coreutils +, nixosTests +}: + +stdenv.mkDerivation rec { + pname = "cups-pdf-to-pdf"; + version = "unstable-2021-12-22"; + + src = fetchFromGitHub { + owner = "alexivkin"; + repo = "CUPS-PDF-to-PDF"; + rev = "c14428c2ca8e95371daad7db6d11c84046b1a2d4"; + hash = "sha256-pa4PFf8OAFSra0hSazmKUfbMYL/cVWvYA1lBf7c7jmY="; + }; + + buildInputs = [ cups ]; + + postPatch = '' + sed -r 's|(gscall, size, ")cp |\1${coreutils}/bin/cp |' cups-pdf.c -i + ''; + + # gcc command line is taken from original cups-pdf's README file + # https://fossies.org/linux/cups-pdf/README + # however, we replace gcc with $CC following + # https://nixos.org/manual/nixpkgs/stable/#sec-darwin + buildPhase = '' + runHook preBuild + $CC -O9 -s cups-pdf.c -o cups-pdf -lcups + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + install -Dt $out/lib/cups/backend cups-pdf + install -Dm 0644 -t $out/etc/cups cups-pdf.conf + install -Dm 0644 -t $out/share/cups/model *.ppd + runHook postInstall + ''; + + passthru.tests.vmtest = nixosTests.cups-pdf; + + meta = with lib; { + description = "A CUPS backend that turns print jobs into searchable PDF files"; + homepage = "https://github.com/alexivkin/CUPS-PDF-to-PDF"; + license = licenses.gpl2Only; + maintainers = [ maintainers.yarny ]; + longDescription = '' + cups-pdf is a CUPS backend that generates a PDF file for each print job and puts this file + into a folder on the local machine such that the print job's owner can access the file. + + https://www.cups-pdf.de/ + + cups-pdf-to-pdf is a fork of cups-pdf which tries hard to preserve the original text of the print job by avoiding rasterization. + + Note that in order to use this package, you have to make sure that the cups-pdf program is called with root privileges. + ''; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/dymo/default.nix b/nixpkgs/pkgs/misc/cups/drivers/dymo/default.nix new file mode 100644 index 000000000000..97dcbde2b8b5 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/dymo/default.nix @@ -0,0 +1,28 @@ +{ stdenv, lib, fetchurl, cups, ... }: + +stdenv.mkDerivation rec { + pname = "cups-dymo"; + version = "1.4.0.5"; + + # exposed version and 'real' version may differ + # in this case the download states '1.4.0' but the real version is '1.4.0.5' + # this has the potential to break future builds + dl-name = "dymo-cups-drivers-1.4.0"; + + src = fetchurl { + url = "http://download.dymo.com/dymo/Software/Download%20Drivers/Linux/Download/${dl-name}.tar.gz"; + sha256 = "0wagsrz3q7yrkzb5ws0m5faq68rqnqfap9p98sgk5jl6x7krf1y6"; + }; + + buildInputs = [ cups ]; + patches = [ ./fix-includes.patch ]; + + makeFlags = [ "cupsfilterdir=$(out)/lib/cups/filter" "cupsmodeldir=$(out)/share/cups/model" ]; + + meta = { + description = "CUPS Linux drivers and SDK for DYMO printers"; + homepage = "https://www.dymo.com/"; + license = lib.licenses.gpl2; + maintainers = with lib.maintainers; [ makefu ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/dymo/fix-includes.patch b/nixpkgs/pkgs/misc/cups/drivers/dymo/fix-includes.patch new file mode 100644 index 000000000000..55f71369a001 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/dymo/fix-includes.patch @@ -0,0 +1,80 @@ +diff -rp dymo-cups-drivers-1.4.0.5/src/common/CupsFilter.h dymo-cups-drivers-1.4.0.5-fix/src/common/CupsFilter.h +*** dymo-cups-drivers-1.4.0.5/src/common/CupsFilter.h 2012-02-07 14:22:37.000000000 +0100 +--- dymo-cups-drivers-1.4.0.5-fix/src/common/CupsFilter.h 2017-03-27 23:10:17.638976126 +0200 +*************** +*** 22,29 **** +--- 22,31 ---- + #define hfc4bbdea_8a1b_427c_9ab5_50b84576b19e + + #include <cups/cups.h> ++ #include <cups/ppd.h> + #include <cups/raster.h> + #include <memory> ++ #include <stdio.h> + #include <string> + #include "CupsPrintEnvironment.h" + #include "ErrorDiffusionHalftoning.h" +diff -rp dymo-cups-drivers-1.4.0.5/src/common/CupsPrintEnvironment.h dymo-cups-drivers-1.4.0.5-fix/src/common/CupsPrintEnvironment.h +*** dymo-cups-drivers-1.4.0.5/src/common/CupsPrintEnvironment.h 2012-02-07 14:22:37.000000000 +0100 +--- dymo-cups-drivers-1.4.0.5-fix/src/common/CupsPrintEnvironment.h 2017-03-27 23:10:17.638976126 +0200 +*************** +*** 22,27 **** +--- 22,28 ---- + #define h952b1c81_8931_433a_8479_7ae6d8e85a86 + + #include "PrinterDriver.h" ++ #include <stdio.h> + + namespace DymoPrinterDriver + { +diff -rp dymo-cups-drivers-1.4.0.5/src/lm/CupsFilterLabelManager.h dymo-cups-drivers-1.4.0.5-fix/src/lm/CupsFilterLabelManager.h +*** dymo-cups-drivers-1.4.0.5/src/lm/CupsFilterLabelManager.h 2012-02-07 14:22:38.000000000 +0100 +--- dymo-cups-drivers-1.4.0.5-fix/src/lm/CupsFilterLabelManager.h 2017-03-27 23:10:17.635976126 +0200 +*************** +*** 22,27 **** +--- 22,28 ---- + #define he780684b_6efc_428d_bfdb_c5422b1ed982 + + #include <cups/cups.h> ++ #include <cups/ppd.h> + #include <cups/raster.h> + #include "LabelManagerDriver.h" + #include "LabelManagerLanguageMonitor.h" +*************** public: +*** 50,53 **** + + /* + * End of "$Id: CupsFilterLabelManager.h 14880 2011-03-31 16:29:05Z aleksandr $". +! */ +\ No newline at end of file +--- 51,54 ---- + + /* + * End of "$Id: CupsFilterLabelManager.h 14880 2011-03-31 16:29:05Z aleksandr $". +! */ +diff -rp dymo-cups-drivers-1.4.0.5/src/lw/CupsFilterLabelWriter.h dymo-cups-drivers-1.4.0.5-fix/src/lw/CupsFilterLabelWriter.h +*** dymo-cups-drivers-1.4.0.5/src/lw/CupsFilterLabelWriter.h 2012-02-07 14:22:37.000000000 +0100 +--- dymo-cups-drivers-1.4.0.5-fix/src/lw/CupsFilterLabelWriter.h 2017-03-27 23:10:17.632976126 +0200 +*************** +*** 22,27 **** +--- 22,28 ---- + #define hd8574b83_b264_47b2_8d33_a46ae75691d2 + + #include <cups/cups.h> ++ #include <cups/ppd.h> + #include <cups/raster.h> + #include "LabelWriterDriver.h" + #include "LabelWriterLanguageMonitor.h" +diff -rp dymo-cups-drivers-1.4.0.5/src/common/CupsPrintEnvironment.cpp dymo-cups-drivers-1.4.0.5-fix/src/common/CupsPrintEnvironment.cpp +*** dymo-cups-drivers-1.4.0.5/src/common/CupsPrintEnvironment.cpp 2019-12-16 19:37:23.429662838 +0000 +--- dymo-cups-drivers-1.4.0.5-fix/src/common/CupsPrintEnvironment.cpp 2019-12-16 19:41:48.506991614 +0000 +*************** +*** 23,28 **** +--- 23,29 ---- + #include "CupsPrintEnvironment.h" + #include <errno.h> + #include <cups/cups.h> ++ #include <cups/sidechannel.h> + #include <cassert> + + namespace DymoPrinterDriver diff --git a/nixpkgs/pkgs/misc/cups/drivers/estudio/default.nix b/nixpkgs/pkgs/misc/cups/drivers/estudio/default.nix new file mode 100644 index 000000000000..1af8d1f575b8 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/estudio/default.nix @@ -0,0 +1,50 @@ +{ lib, stdenv, fetchurl, perl }: + +stdenv.mkDerivation { + pname = "cups-toshiba-estudio"; + version = "7.89"; + + src = fetchurl { + url = "http://business.toshiba.com/downloads/KB/f1Ulds/15178/TOSHIBA_ColorMFP_CUPS.tar"; + sha256 = "0qz4r7q55i0adf4fv3aqnfqgi2pz3jb1jixkqm9x6nk4vanyjf4r"; + }; + + buildInputs = [ perl ]; + + patchPhase = '' + patchShebangs lib/ + gunzip share/cups/model/Toshiba/TOSHIBA_ColorMFP_CUPS.gz + sed -i "s+/usr+$out+" share/cups/model/Toshiba/TOSHIBA_ColorMFP_CUPS + gzip share/cups/model/Toshiba/TOSHIBA_ColorMFP_CUPS + ''; + + installPhase = '' + mkdir -p $out/lib/cups/filter + mkdir -p $out/share/cups/model/Toshiba + cp {.,$out}/lib/cups/filter/est6550_Authentication + chmod 755 $out/lib/cups/filter/est6550_Authentication + cp {.,$out}/share/cups/model/Toshiba/TOSHIBA_ColorMFP_CUPS.gz + chmod 755 $out/share/cups/model/Toshiba/TOSHIBA_ColorMFP_CUPS.gz + ''; + + meta = with lib; { + description = "Printer only driver for the Toshiba e-STUDIO class of printers"; + longDescription = '' + This driver supports the following printers: TOSHIBA e-STUDIO2000AC, + TOSHIBA e-STUDIO2005AC, TOSHIBA e-STUDIO2040C, TOSHIBA e-STUDIO2050C, + TOSHIBA e-STUDIO2055C, TOSHIBA e-STUDIO2500AC, TOSHIBA e-STUDIO2505AC, + TOSHIBA e-STUDIO2540C, TOSHIBA e-STUDIO2550C, TOSHIBA e-STUDIO2555C, + TOSHIBA e-STUDIO287CS, TOSHIBA e-STUDIO3005AC, TOSHIBA e-STUDIO3040C, + TOSHIBA e-STUDIO3055C, TOSHIBA e-STUDIO347CS, TOSHIBA e-STUDIO3505AC, + TOSHIBA e-STUDIO3540C, TOSHIBA e-STUDIO3555C, TOSHIBA e-STUDIO407CS, + TOSHIBA e-STUDIO4505AC, TOSHIBA e-STUDIO4540C, TOSHIBA e-STUDIO4555C, + TOSHIBA e-STUDIO5005AC, TOSHIBA e-STUDIO5055C, TOSHIBA e-STUDIO5506AC, + TOSHIBA e-STUDIO5540C, TOSHIBA e-STUDIO5560C, TOSHIBA e-STUDIO6506AC, + TOSHIBA e-STUDIO6540C, TOSHIBA e-STUDIO6550C, TOSHIBA e-STUDIO6560C, + TOSHIBA e-STUDIO6570C and TOSHIBA e-STUDIO7506AC. + ''; + homepage = "https://business.toshiba.com/support/downloads/index.html"; + license = licenses.unfree; + maintainers = [ maintainers.jpotier ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/fflinuxprint/default.nix b/nixpkgs/pkgs/misc/cups/drivers/fflinuxprint/default.nix new file mode 100644 index 000000000000..8cfd29b5c1cc --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/fflinuxprint/default.nix @@ -0,0 +1,52 @@ +{ autoPatchelfHook +, cups +, dpkg +, fetchurl +, lib +, stdenv +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "fflinuxprint"; + version = "1.1.3-4"; + + src = fetchurl { + url = "https://support-fb.fujifilm.com/driver_downloads/fflinuxprint_${finalAttrs.version}_amd64.deb"; + hash = "sha256-Q0qB4gvEWa10KGt6SngVqraxFePxIQ62nTrFZ44vyrU="; + curlOpts = "--user-agent Mozilla/5.0"; # HTTP 410 otherwise + }; + + sourceRoot = "."; + unpackCmd = "dpkg-deb -x $curSrc ."; + + nativeBuildInputs = [ + autoPatchelfHook + dpkg + ]; + + buildInputs = [ + cups + ]; + + dontConfigure = true; + dontBuild = true; + + installPhase = '' + runHook preInstall + + mkdir -p $out/share/cups/model + mv {etc,usr/lib} $out + mv usr/share/ppd/fujifilm/* $out/share/cups/model + + runHook postInstall + ''; + + meta = { + description = "FujiFILM Linux Printer Driver"; + homepage = "https://support-fb.fujifilm.com"; + license = lib.licenses.unfree; + maintainers = with lib.maintainers; [ jaduff ]; + platforms = lib.platforms.linux; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + }; +}) diff --git a/nixpkgs/pkgs/misc/cups/drivers/foomatic-db-engine/default.nix b/nixpkgs/pkgs/misc/cups/drivers/foomatic-db-engine/default.nix new file mode 100644 index 000000000000..7c1bc55d3330 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/foomatic-db-engine/default.nix @@ -0,0 +1,95 @@ +{ lib +, perlPackages +, fetchFromGitHub +, withCupsAccess ? false # needed to access local cups server +, cups +, cups-filters +, curl +, withSocketAccess ? false # needed to access network printers +, netcat-gnu +, withSMBAccess ? false # needed to access SMB-connected printers +, samba +, autoconf +, automake +, file +, makeWrapper +}: + +perlPackages.buildPerlPackage rec { + pname = "foomatic-db-engine"; + version = "unstable-2022-05-03"; + + src = fetchFromGitHub { + # there is also a daily snapshot at the `downloadPage`, + # but it gets deleted quickly and would provoke 404 errors + owner = "OpenPrinting"; + repo = "foomatic-db-engine"; + rev = "2e6f14b54748fa121a4d2e3d480010e10b070c5a"; + hash = "sha256-m7FQTxWmawbtm24h8UqznGKXgX41JhOtyyFMRwEhm5k="; + }; + + outputs = [ "out" ]; + + propagatedBuildInputs = [ + perlPackages.Clone + perlPackages.DBI + perlPackages.XMLLibXML + ]; + + buildInputs = + # provide some "cups-*" commands to `foomatic-{configure,printjob}` + # so that they can manage a local cups server (add queues, add jobs...) + lib.optionals withCupsAccess [ cups cups-filters curl ] + # the commands `foomatic-{configure,getpjloptions}` need + # netcat if they are used to query or alter a network + # printer via AppSocket/HP JetDirect protocol + ++ lib.optional withSocketAccess netcat-gnu + # `foomatic-configure` can be used to access printers that are + # shared via the SMB protocol, but it needs the `smbclient` binary + ++ lib.optional withSMBAccess samba + ; + + nativeBuildInputs = [ autoconf automake file makeWrapper ]; + + # sed-substitute indirection is more robust against + # characters in paths that might need escaping + prePatch = '' + sed -Ei 's|^(S?BINSEARCHPATH=).+$|\1"@PATH@"|g' configure.ac + substituteInPlace configure.ac --subst-var PATH + touch Makefile.PL # `buildPerlPackage` fails unless this exists + ''; + + preConfigure = '' + ./make_configure + ''; + + configureFlags = [ + "--sysconfdir=${placeholder "out"}/etc" + "LIBDIR=${placeholder "out"}/share/foomatic" + "PERLPREFIX=${placeholder "out"}" + ]; + + postFixup = '' + for bin in "${placeholder "out"}/bin"/*; do + test '!' -L "$bin" || continue # skip symlink + wrapProgram "$bin" --set PERL5LIB "$PERL5LIB" + done + ''; + + doCheck = false; # no tests, would fail + + meta = { + changelog = "https://github.com/OpenPrinting/foomatic-db-engine/blob/${src.rev}/ChangeLog"; + description = "OpenPrinting printer support database engine"; + downloadPage = "https://www.openprinting.org/download/foomatic/"; + homepage = "https://openprinting.github.io/projects/02-foomatic/"; + license = lib.licenses.gpl2Only; + maintainers = [ lib.maintainers.yarny ]; + longDescription = '' + Foomatic's database engine generates PPD files + from the data in Foomatic's XML database. + It also contains scripts to directly + generate print queues and handle jobs. + ''; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/foomatic-db-nonfree/default.nix b/nixpkgs/pkgs/misc/cups/drivers/foomatic-db-nonfree/default.nix new file mode 100644 index 000000000000..a9ce7228f45f --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/foomatic-db-nonfree/default.nix @@ -0,0 +1,87 @@ +{ lib +, stdenv +, fetchFromGitHub +, autoconf +, automake +, perl +}: + +stdenv.mkDerivation rec { + pname = "foomatic-db-nonfree"; + version = "unstable-2015-06-05"; + + src = fetchFromGitHub { + # there is also a daily snapshot at the `downloadPage`, + # but it gets deleted quickly and would provoke 404 errors + owner = "OpenPrinting"; + repo = "foomatic-db-nonfree"; + rev = "6ddae02ac89240c019f8b5026cfe70e30fd2b3db"; + hash = "sha256-cRZH0CXg03FEqUJdxaNnPVXjf8+ct86PjhL59WQbw60="; + }; + + nativeBuildInputs = [ autoconf automake perl ]; + + # sed-substitute indirection is more robust against + # characters in paths that might need escaping + postPatch = '' + sed -Ei -e 's|^(S?BINSEARCHPATH=).+$|\1"@PATH@"|g' \ + -e 's|^(DATASEARCHPATH=).+$|\1"@DATA@"|g' configure.ac + substituteInPlace configure.ac \ + --subst-var PATH \ + --subst-var-by DATA "${placeholder "out"}/share" + ''; + + preConfigure = '' + mkdir -p "${placeholder "out"}/share/foomatic/db/source" + ./make_configure + ''; + + # make ppd files available to cups, + # use a package-specific subdirectory to avoid + # conflicts with other ppd-containing packages + postInstall = '' + if ! [[ -d "${placeholder "out"}/share/foomatic/db/source/PPD" ]]; then + echo "failed to create share/foomatic/db/source/PPD" + exit 1 + fi + mkdir -p "${placeholder "out"}/share/cups/model" + ln -s "${placeholder "out"}/share/foomatic/db/source/PPD" \ + "${placeholder "out"}/share/cups/model/foomatic-db-nonfree" + ''; + + # we might patch ppd file commands with `patchPpdFilesHook`, + # but the only command "rastertophaser6100" isn't packaged yet + + # compress ppd files + postFixup = '' + echo 'compressing ppd files' + find -H "${placeholder "out"}/share/cups/model/foomatic-db-nonfree" -type f -iname '*.ppd' -print0 \ + | xargs -0r -n 64 -P "$NIX_BUILD_CORES" gzip -9n + ''; + + meta = { + changelog = "https://github.com/OpenPrinting/foomatic-db-nonfree/blob/${src.rev}/ChangeLog"; + description = "OpenPrinting printer support database (unfree content)"; + downloadPage = "https://www.openprinting.org/download/foomatic/"; + homepage = "https://openprinting.github.io/projects/02-foomatic/"; + license = lib.licenses.unfree; + maintainers = [ lib.maintainers.yarny ]; + # list printer manufacturers here so people + # searching for ppd files can find this package + longDescription = '' + The collected knowledge about printers, + drivers, and driver options in XML files, + used by `foomatic-db-engine` to generate PPD files. + This is a package of PPD and Foomatic XML files + that may have restrictions that keep them + from being used on a variety of machines + for licensing and other non-technical reasons. + The XML files in this package enable `foomatic-db-ppds` + to create about 120 additional PPD files, for printer from + Dell, Genicom, Lexmark, Oce, Tektronix and Xerox. + Besides the XML files, this package contains + about 130 PPD files, for printers from + Dell, Genicom, Lexmark, Oce and Xerox. + ''; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/foomatic-db-ppds/default.nix b/nixpkgs/pkgs/misc/cups/drivers/foomatic-db-ppds/default.nix new file mode 100644 index 000000000000..bdc1e0a9b5fe --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/foomatic-db-ppds/default.nix @@ -0,0 +1,122 @@ +{ lib +, foomatic-db +, foomatic-db-nonfree +, buildEnv +, foomatic-db-engine +, stdenv +, cups-filters +, ghostscript +, netpbm +, perl +, psutils +, patchPpdFilesHook +, withNonfreeDb ? false # include foomatic-db-nonfree ppd files +}: + +let + foomatic-db-packages = [ foomatic-db ] ++ + lib.lists.optional withNonfreeDb foomatic-db-nonfree; + + foomatic-db-combined = buildEnv { + name = "foomatic-db-combined"; + paths = foomatic-db-packages; + pathsToLink = [ "/share/foomatic" ]; + # `foomatic-db-combined` is a nativeBuildInput of `foomatic-db-ppds`. + # The setup hook defined here helps scripts in + # `foomatic-db-engine` to find the database. + postBuild = '' + mkdir -p "${placeholder "out"}"/{etc/cups,nix-support} + cat >> "${placeholder "out"}/nix-support/setup-hook" << eof + export FOOMATICDB="${placeholder "out"}/share/foomatic" + eof + ''; + }; + + # the effective license is `free` if all database + # packages have free licenses, `unfree` otherwise + isFree = lib.trivial.pipe foomatic-db-packages [ + (lib.lists.map (lib.attrsets.attrByPath [ "meta" "license" ] lib.licenses.unfree)) + (lib.lists.all (lib.attrsets.attrByPath [ "free" ] true)) + ]; +in + +stdenv.mkDerivation { + pname = "foomatic-db-ppds"; + # the effective version is simply the + # highest version of all database packages + version = lib.trivial.pipe foomatic-db-packages [ + (lib.lists.map (lib.attrsets.getAttr "version")) + (lib.lists.sort lib.strings.versionOlder) + lib.lists.reverseList + lib.lists.head + ]; + + buildInputs = [ + cups-filters + ghostscript + netpbm + perl + psutils + ]; + + nativeBuildInputs = [ + foomatic-db-combined + foomatic-db-engine + patchPpdFilesHook + ]; + + dontUnpack = true; + + installPhase = '' + runHook preInstall + mkdir -p "${placeholder "out"}/share/cups/model" + foomatic-compiledb -j "$NIX_BUILD_CORES" -d "${placeholder "out"}/share/cups/model/foomatic-db-ppds" + runHook postInstall + ''; + + # Comments indicate the respective + # package the command is contained in. + ppdFileCommands = [ + "cat" "echo" # coreutils + "foomatic-rip" # cups-filters or foomatic-filters + "gs" # ghostscript + "pnmflip" "pnmgamma" "pnmnoraw" # netpbm + "perl" # perl + "psresize" # psutils + # These commands aren't packaged yet. + # ppd files using these likely won't work. + #"c2050" "c2070" "cjet" "lm1100" + #"pbm2l2030" "pbm2lwxl" "rastertophaser6100" + ]; + + # compress ppd files + postFixup = '' + echo 'compressing ppd files' + find -H "${placeholder "out"}/share/cups/model/foomatic-db-ppds" -type f -iname '*.ppd' -print0 \ + | xargs -0r -n 64 -P "$NIX_BUILD_CORES" gzip -9n + ''; + + meta = { + description = "OpenPrinting ppd files"; + homepage = "https://openprinting.github.io/projects/02-foomatic/"; + license = if isFree then lib.licenses.free else lib.licenses.unfree; + maintainers = [ lib.maintainers.yarny ]; + # list printer manufacturers here so people + # searching for ppd files can find this package + longDescription = '' + All PPD files available in + OpenPrinting's Foomatic database. + This package contains about 8,800 PPD files, + for printers from + Alps, Anitech, Apollo, Apple, Avery, Brother, Canon, + Citizen, CItoh, Compaq, DEC, Dell, Dymo-CoStar, Epson, + Fujitsu, FujiXerox, Generic, Genicom, Gestetner, + Heidelberg, Hitachi, HP, IBM, Imagen, Imagistics, + InfoPrint, Infotec, Kodak, KONICAMINOLTA, Kyocera, Lanier, + Lexmark, Minolta, MinoltaQMS, Mitsubishi, NEC, NRG, Oce, + Oki, Olivetti, Panasonic, PCPI, Pentax, QMS, Raven, Ricoh, + Samsung, Savin, Seiko, Sharp, SiPix, Sony, Star, Tally, + Tektronix, TexasInstruments, Toshiba, Xante and Xerox. + ''; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/foomatic-db/default.nix b/nixpkgs/pkgs/misc/cups/drivers/foomatic-db/default.nix new file mode 100644 index 000000000000..cb8156b0a0a9 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/foomatic-db/default.nix @@ -0,0 +1,103 @@ +{ lib +, stdenv +, fetchFromGitHub +, cups +, cups-filters +, ghostscript +, gnused +, perl +, autoconf +, automake +, patchPpdFilesHook +}: + +stdenv.mkDerivation rec { + pname = "foomatic-db"; + version = "unstable-2023-09-02"; + + src = fetchFromGitHub { + # there is also a daily snapshot at the `downloadPage`, + # but it gets deleted quickly and would provoke 404 errors + owner = "OpenPrinting"; + repo = "foomatic-db"; + rev = "4e6ab90da63afddee33d80115acb44149d2d292b"; + hash = "sha256-wtDGJUyViiCenCY4zvr0Ia4ecZpoDsDSWwlYYs3YMT8="; + }; + + buildInputs = [ cups cups-filters ghostscript gnused perl ]; + + nativeBuildInputs = [ autoconf automake patchPpdFilesHook perl ]; + + # sed-substitute indirection is more robust + # against characters in paths that might need escaping + postPatch = '' + sed -Ei -e 's|^(S?BINSEARCHPATH=).+$|\1"@PATH@"|g' \ + -e 's|^(DATASEARCHPATH=).+$|\1"@DATA@"|g' configure.ac + substituteInPlace configure.ac \ + --subst-var PATH \ + --subst-var-by DATA "${placeholder "out"}/share" + ''; + + preConfigure = '' + mkdir -p "${placeholder "out"}/share/foomatic/db/source" + ./make_configure + ''; + + # don't let the intaller gzip ppd files as we would + # have to unzip them later in order to patch them + configureFlags = [ "--disable-gzip-ppds" ]; + + # make ppd files available to cups, + # use a package-specific subdirectory to avoid + # conflicts with other ppd-containing packages + postInstall = '' + if ! [[ -d "${placeholder "out"}/share/foomatic/db/source/PPD" ]]; then + echo "failed to create share/foomatic/db/source/PPD" + exit 1 + fi + mkdir -p "${placeholder "out"}/share/cups/model" + ln -s "${placeholder "out"}/share/foomatic/db/source/PPD" \ + "${placeholder "out"}/share/cups/model/foomatic-db" + ''; + + # Comments indicate the respective + # package the command is contained in. + ppdFileCommands = [ + "cat" "date" "printf" # coreutils + "rastertohp" # cups + "foomatic-rip" # cups-filters or foomatic-filters + "gs" # ghostscript + "sed" # gnused + "perl" # perl + ]; + + # compress ppd files + postFixup = '' + echo 'compressing ppd files' + find -H "${placeholder "out"}/share/cups/model/foomatic-db" -type f -iname '*.ppd' -print0 \ + | xargs -0r -n 64 -P "$NIX_BUILD_CORES" gzip -9n + ''; + + meta = { + changelog = "https://github.com/OpenPrinting/foomatic-db/blob/${src.rev}/ChangeLog"; + description = "OpenPrinting printer support database (free content)"; + downloadPage = "https://www.openprinting.org/download/foomatic/"; + homepage = "https://openprinting.github.io/projects/02-foomatic/"; + license = lib.licenses.free; # mostly GPL and MIT, see README in source dir + maintainers = [ lib.maintainers.yarny ]; + # list printer manufacturers here so people + # searching for ppd files can find this package + longDescription = '' + The collected knowledge about printers, + drivers, and driver options in XML files, + used by `foomatic-db-engine` to generate PPD files. + PPD files generated from the XML files in this package + are contained in the package 'foomatic-db-ppds'. + Besides the XML files, this package contains + about 6,700 PPD files, for printers from + Brother, Canon, Epson, Gestetner, HP, InfoPrint, + Infotec, KONICA_MINOLTA, Kyocera, Lanier, Lexmark, NRG, + Oce, Oki, Ricoh, Samsung, Savin, Sharp, Toshiba and Utax. + ''; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/fxlinuxprint/default.nix b/nixpkgs/pkgs/misc/cups/drivers/fxlinuxprint/default.nix new file mode 100644 index 000000000000..e0936b73b08a --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/fxlinuxprint/default.nix @@ -0,0 +1,52 @@ +{ stdenv, lib, fetchzip, dpkg, autoPatchelfHook, cups }: +let + debPlatform = + if stdenv.hostPlatform.system == "x86_64-linux" then "amd64" + else if stdenv.hostPlatform.system == "i686-linux" then "i386" + else throw "Unsupported system: ${stdenv.hostPlatform.system}"; +in +stdenv.mkDerivation rec { + pname = "fxlinuxprint"; + version = "1.1.2-1"; + + # https://support-fb.fujifilm.com/driver_downloads/fxlinuxpdf112119031.zip is gone + src = fetchzip { + url = "https://github.com/NixOS/nixpkgs/files/12232817/fxlinuxpdf112119031.zip"; + sha256 = "1mv07ch6ysk9bknfmjqsgxb803sj6vfin29s9knaqv17jvgyh0n3"; + }; + + nativeBuildInputs = [ dpkg autoPatchelfHook ]; + buildInputs = [ cups ]; + + sourceRoot = "."; + unpackCmd = "dpkg-deb -x $curSrc/fxlinuxprint_${version}_${debPlatform}.deb ."; + + dontConfigure = true; + dontBuild = true; + + installPhase = '' + mkdir -p $out + mv etc $out + mv usr/lib $out + + mkdir -p $out/share/cups/model + mv usr/share/ppd/FujiXerox/* $out/share/cups/model + ''; + + meta = with lib; { + description = "Fuji Xerox Linux Printer Driver"; + longDescription = '' + DocuPrint P365/368 d + DocuPrint CM315/318 z + DocuPrint CP315/318 dw + ApeosPort-VI C2271/C3370/C3371/C4471/C5571/C6671/C7771 + DocuCentre-VI C2271/C3370/C3371/C4471/C5571/C6671/C7771 + DocuPrint 3205 d/3208 d/3505 d/3508 d/4405 d/4408 d + ''; + homepage = "https://onlinesupport.fujixerox.com"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = licenses.unfree; + maintainers = with maintainers; [ delan ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/hl1110/default.nix b/nixpkgs/pkgs/misc/cups/drivers/hl1110/default.nix new file mode 100644 index 000000000000..07143b0991fb --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/hl1110/default.nix @@ -0,0 +1,75 @@ +{lib, stdenv, fetchurl, cups, dpkg, gnused, makeWrapper, ghostscript, file, a2ps, coreutils, gawk }: + +let + version = "3.0.1-1"; +cupsdeb = fetchurl { + url = "http://download.brother.com/welcome/dlf100421/hl1110cupswrapper-${version}.i386.deb"; + sha256 = "a87880f4ece764a724411b5b24d15d1b912f6ffc6ecbfd9fac4cd5eda13d2eb7"; +}; +srcdir = "hl1110cupswrapper-GPL_src-${version}"; +cupssrc = fetchurl { + url = "http://download.brother.com/welcome/dlf100422/${srcdir}.tar.gz"; + sha256 = "be1dce6a4608cb253b0b382db30bf5885da46b010e8eb595b15c435e2487761c"; +}; +lprdeb = fetchurl { + url = "http://download.brother.com/welcome/dlf100419/hl1110lpr-${version}.i386.deb"; + sha256 = "5af241782a0d500d7f47e06ea43d61127f4019b5b1c6e68b4c1cb4521a742c22"; +}; + in +stdenv.mkDerivation { + pname = "cups-brother-hl1110"; + inherit version; + + srcs = [ lprdeb cupssrc cupsdeb ]; + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ cups ghostscript dpkg a2ps ]; + unpackPhase = '' + tar -xvf ${cupssrc} + ''; + buildPhase = '' + gcc -Wall ${srcdir}/brcupsconfig/brcupsconfig.c -o brcupsconfig4 + ''; + installPhase = '' + # install lpr + dpkg-deb -x ${lprdeb} $out + + substituteInPlace $out/opt/brother/Printers/HL1110/lpd/filter_HL1110 \ + --replace /opt "$out/opt" \ + + sed -i '/GHOST_SCRIPT=/c\GHOST_SCRIPT=gs' $out/opt/brother/Printers/HL1110/lpd/psconvert2 + + patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-linux.so.2 $out/opt/brother/Printers/HL1110/lpd/brprintconflsr3 + patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-linux.so.2 $out/opt/brother/Printers/HL1110/lpd/rawtobr3 + patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-linux.so.2 $out/opt/brother/Printers/HL1110/inf/braddprinter + + wrapProgram $out/opt/brother/Printers/HL1110/lpd/psconvert2 \ + --prefix PATH ":" ${ lib.makeBinPath [ gnused coreutils gawk ] } + + wrapProgram $out/opt/brother/Printers/HL1110/lpd/filter_HL1110 \ + --prefix PATH ":" ${ lib.makeBinPath [ ghostscript a2ps file gnused coreutils ] } + + + dpkg-deb -x ${cupsdeb} $out + + substituteInPlace $out/opt/brother/Printers/HL1110/cupswrapper/brother_lpdwrapper_HL1110 --replace /opt "$out/opt" + + mkdir -p $out/lib/cups/filter + ln -s $out/opt/brother/Printers/HL1110/cupswrapper/brother_lpdwrapper_HL1110 $out/lib/cups/filter/brother_lpdwrapper_HL1110 + ln -s $out/opt/brother/Printers/HL1110/cupswrapper/brother-HL1110-cups-en.ppd $out/lib/cups/filter/brother-HL1110-cups-en.ppd + cp brcupsconfig4 $out/opt/brother/Printers/HL1110/cupswrapper/ + ln -s $out/opt/brother/Printers/HL1110/cupswrapper/brcupsconfig4 $out/lib/cups/filter/brcupsconfig4 + + wrapProgram $out/opt/brother/Printers/HL1110/cupswrapper/brother_lpdwrapper_HL1110 \ + --prefix PATH ":" ${ lib.makeBinPath [ gnused coreutils gawk ] } + + ''; + + meta = { + homepage = "http://www.brother.com/"; + description = "Brother HL1110 printer driver"; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + license = lib.licenses.unfree; + platforms = lib.platforms.linux; + downloadPage = "http://support.brother.com/g/b/downloadlist.aspx?c=eu_ot&lang=en&prod=hl1110_us_eu_as&os=128#SelectLanguageType-561_0_1"; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/hl1210w/default.nix b/nixpkgs/pkgs/misc/cups/drivers/hl1210w/default.nix new file mode 100644 index 000000000000..c8cd6e95651b --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/hl1210w/default.nix @@ -0,0 +1,64 @@ +{lib, stdenv, pkgsi686Linux, fetchurl, cups, dpkg, gnused, makeWrapper, ghostscript, file, a2ps, coreutils, gawk}: + +let + version = "3.0.1-1"; + cupsdeb = fetchurl { + url = "https://download.brother.com/welcome/dlf101546/hl1210wcupswrapper-${version}.i386.deb"; + sha256 = "0395mnw6c7qpjgjch9in5q9p2fjdqvz9bwfwp6q1hzhs08ryk7w0"; + }; + lprdeb = fetchurl { + url = "https://download.brother.com/welcome/dlf101547/hl1210wlpr-${version}.i386.deb"; + sha256 = "1sl3g2cd4a2gygryrr27ax3qaa65cbirz3kzskd8afkwqpmjyv7j"; + }; +in +stdenv.mkDerivation { + pname = "cups-brother-hl1210W"; + inherit version; + + srcs = [ lprdeb cupsdeb ]; + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ cups ghostscript dpkg a2ps ]; + dontUnpack = true; + + installPhase = '' + # install lpr + dpkg-deb -x ${lprdeb} $out + + substituteInPlace $out/opt/brother/Printers/HL1210W/lpd/filter_HL1210W \ + --replace /opt "$out/opt" + + sed -i '/GHOST_SCRIPT=/c\GHOST_SCRIPT=gs' $out/opt/brother/Printers/HL1210W/lpd/psconvert2 + + patchelf --set-interpreter ${pkgsi686Linux.glibc.out}/lib/ld-linux.so.2 $out/opt/brother/Printers/HL1210W/lpd/brprintconflsr3 + patchelf --set-interpreter ${pkgsi686Linux.glibc.out}/lib/ld-linux.so.2 $out/opt/brother/Printers/HL1210W/lpd/rawtobr3 + patchelf --set-interpreter ${pkgsi686Linux.glibc.out}/lib/ld-linux.so.2 $out/opt/brother/Printers/HL1210W/inf/braddprinter + + wrapProgram $out/opt/brother/Printers/HL1210W/lpd/psconvert2 \ + --prefix PATH ":" ${ lib.makeBinPath [ gnused coreutils gawk ] } + wrapProgram $out/opt/brother/Printers/HL1210W/lpd/filter_HL1210W \ + --prefix PATH ":" ${ lib.makeBinPath [ ghostscript a2ps file gnused coreutils ] } + + # install cups + dpkg-deb -x ${cupsdeb} $out + + substituteInPlace $out/opt/brother/Printers/HL1210W/cupswrapper/brother_lpdwrapper_HL1210W --replace /opt "$out/opt" + + mkdir -p $out/lib/cups/filter + ln -s $out/opt/brother/Printers/HL1210W/cupswrapper/brother_lpdwrapper_HL1210W $out/lib/cups/filter/brother_lpdwrapper_HL1210W + ln -s $out/opt/brother/Printers/HL1210W/cupswrapper/brother-HL1210W-cups-en.ppd $out/lib/cups/filter/brother-HL1210W-cups-en.ppd + # cp brcupsconfig4 $out/opt/brother/Printers/HL1110/cupswrapper/ + ln -s $out/opt/brother/Printers/HL1210W/cupswrapper/brcupsconfig4 $out/lib/cups/filter/brcupsconfig4 + + wrapProgram $out/opt/brother/Printers/HL1210W/cupswrapper/brother_lpdwrapper_HL1210W \ + --prefix PATH ":" ${ lib.makeBinPath [ gnused coreutils gawk ] } + ''; + + meta = { + homepage = "http://www.brother.com/"; + description = "Brother HL1210W printer driver"; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + license = lib.licenses.unfree; + platforms = lib.platforms.linux; + downloadPage = "https://support.brother.com/g/b/downloadlist.aspx?c=nz&lang=en&prod=hl1210w_eu_as&os=128"; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/hl2260d/default.nix b/nixpkgs/pkgs/misc/cups/drivers/hl2260d/default.nix new file mode 100644 index 000000000000..9883bd99a314 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/hl2260d/default.nix @@ -0,0 +1,89 @@ +{ lib, stdenv, fetchurl, cups, dpkg, gnused, makeWrapper, ghostscript, coreutils, perl, gnugrep, which +, debugLvl ? "0" +}: + +let + version = "3.2.0-1"; + lprdeb = fetchurl { + url = "https://download.brother.com/welcome/dlf102692/hl2260dlpr-${version}.i386.deb"; + hash = "sha256-R+cM2SKc/MP6keo3PUrKXPC6a2dEQQdBunrpNtAHlH0="; + }; + + cupsdeb = fetchurl { + url = "https://download.brother.com/welcome/dlf102693/hl2260dcupswrapper-${version}.i386.deb"; + hash = "sha256-k6+ulZVoFTpEY6WJ9TO9Rzp2c4dwPqL3NY5/XYJpvOc="; + }; +in +stdenv.mkDerivation { + pname = "cups-brother-hl2260d"; + inherit version; + + nativeBuildInputs = [ makeWrapper dpkg ]; + buildInputs = [ cups ghostscript perl ]; + + dontPatchELF = true; + dontBuild = true; + + unpackPhase = '' + mkdir -p $out + dpkg-deb -x ${cupsdeb} $out + dpkg-deb -x ${lprdeb} $out + ''; + + patchPhase = '' + # Patch lpr + INFDIR=$out/opt/brother/Printers/HL2260D/inf + LPDDIR=$out/opt/brother/Printers/HL2260D/lpd + + substituteInPlace $LPDDIR/filter_HL2260D \ + --replace "BR_PRT_PATH =~" "BR_PRT_PATH = \"$out/opt/brother/Printers/HL2260D\"; #" \ + --replace "PRINTER =~" "PRINTER = \"HL2260D\"; #" + + patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ + $INFDIR/braddprinter + patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ + $LPDDIR/brprintconflsr3 + patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ + $LPDDIR/rawtobr3 + + # Patch cupswrapper + WRAPPER=$out/opt/brother/Printers/HL2260D/cupswrapper/brother_lpdwrapper_HL2260D + PAPER_CFG=$out/opt/brother/Printers/HL2260D/cupswrapper/paperconfigml1 + + substituteInPlace $WRAPPER \ + --replace "basedir =~" "basedir = \"$out/opt/brother/Printers/HL2260D\"; #" \ + --replace "PRINTER =~" "PRINTER = \"HL2260D\"; #" \ + --replace "\$DEBUG=0;" "\$DEBUG=${debugLvl};" + substituteInPlace $WRAPPER \ + --replace "\`cp " "\`cp -p " \ + --replace "\$TEMPRC\`" "\$TEMPRC; chmod a+rw \$TEMPRC\`" \ + --replace "\`mv " "\`cp -p " + # This config script make this assumption that the *.ppd are found in a global location `/etc/cups/ppd`. + substituteInPlace $PAPER_CFG \ + --replace "/etc/cups/ppd" "$out/share/cups/model" + ''; + + installPhase = '' + mkdir -p $out/share/cups/model + ln -s $out/opt/brother/Printers/HL2260D/cupswrapper/brother-HL2260D-cups-en.ppd $out/share/cups/model + + mkdir -p $out/lib/cups/filter/ + makeWrapper \ + $out/opt/brother/Printers/HL2260D/cupswrapper/brother_lpdwrapper_HL2260D \ + $out/lib/cups/filter/brother_lpdwrapper_HL2260D \ + --prefix PATH : ${lib.makeBinPath [coreutils gnugrep gnused]} + + wrapProgram $out/opt/brother/Printers/HL2260D/lpd/filter_HL2260D \ + --prefix PATH ":" ${ lib.makeBinPath [ ghostscript which ] } + ''; + + meta = with lib; { + homepage = "http://www.brother.com/"; + description = "Brother HL-2260D printer driver"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = licenses.unfree; + platforms = [ "x86_64-linux" "i686-linux" ]; + downloadPage = "https://support.brother.com/g/b/downloadtop.aspx?c=cn_ot&lang=en&prod=hl2260d_cn"; + maintainers = with maintainers; [ u2x1 ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/hl3140cw/default.nix b/nixpkgs/pkgs/misc/cups/drivers/hl3140cw/default.nix new file mode 100644 index 000000000000..2eceb64d3668 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/hl3140cw/default.nix @@ -0,0 +1,80 @@ +{lib, stdenv, fetchurl, cups, dpkg, gnused, makeWrapper, ghostscript, file, a2ps, coreutils, gawk }: + +let + version = "1.1.4-0"; + cupsdeb = fetchurl { + url = "https://download.brother.com/welcome/dlf007070/hl3140cwcupswrapper-${version}.i386.deb"; + sha256 = "a76281828ca6ee86c63034673577fadcf5f24e8ed003213bdbb6bf47a7aced6f"; + }; + srcdir = "hl3140cw_cupswrapper_GPL_source_${version}"; + cupssrc = fetchurl { + url = "https://download.brother.com/welcome/dlf006740/${srcdir}.tar.gz"; + sha256 = "1wp85rbvbar6rqqkaffymxjpls6jx9m9230dlrpqwy5akiaxf0rl"; + }; + lprdeb = fetchurl { + url = "https://support.brother.com/g/b/files/dlf/dlf007068/hl3140cwlpr-1.1.2-1.i386.deb"; + sha256 = "601f392b52ed7080f71b780181823bb8f6abfd0591146b452ba1f23e21f9f865"; + }; +in +stdenv.mkDerivation { + pname = "cups-brother-hl3140cw"; + inherit version; + nativeBuildInputs = [ makeWrapper dpkg ]; + buildInputs = [ cups ghostscript a2ps ]; + + unpackPhase = '' + tar -xvf ${cupssrc} + ''; + + buildPhase = '' + gcc -Wall ${srcdir}/brcupsconfig/brcupsconfig.c -o brcupsconfpt1 + ''; + + installPhase = '' + # install lpr + dpkg-deb -x ${lprdeb} $out + + substituteInPlace $out/opt/brother/Printers/hl3140cw/lpd/filterhl3140cw \ + --replace /opt "$out/opt" + substituteInPlace $out/opt/brother/Printers/hl3140cw/inf/setupPrintcapij \ + --replace /opt "$out/opt" + + sed -i '/GHOST_SCRIPT=/c\GHOST_SCRIPT=gs' $out/opt/brother/Printers/hl3140cw/lpd/psconvertij2 + + patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-linux.so.2 $out/opt/brother/Printers/hl3140cw/lpd/brhl3140cwfilter + patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-linux.so.2 $out/usr/bin/brprintconf_hl3140cw + + wrapProgram $out/opt/brother/Printers/hl3140cw/lpd/psconvertij2 \ + --prefix PATH ":" ${ lib.makeBinPath [ gnused coreutils gawk ] } + + wrapProgram $out/opt/brother/Printers/hl3140cw/lpd/filterhl3140cw \ + --prefix PATH ":" ${ lib.makeBinPath [ ghostscript a2ps file gnused coreutils ] } + + + dpkg-deb -x ${cupsdeb} $out + + substituteInPlace $out/opt/brother/Printers/hl3140cw/cupswrapper/cupswrapperhl3140cw \ + --replace /opt "$out/opt" + + mkdir -p $out/lib/cups/filter + ln -s $out/opt/brother/Printers/hl3140cw/cupswrapper/cupswrapperhl3140cw $out/lib/cups/filter/cupswrapperhl3140cw + + ln -s $out/opt/brother/Printers/hl3140cw/cupswrapper/brother_hl3140cw_printer_en.ppd $out/lib/cups/filter/brother_hl3140cw_printer_en.ppd + + cp brcupsconfpt1 $out/opt/brother/Printers/hl3140cw/cupswrapper/ + ln -s $out/opt/brother/Printers/hl3140cw/cupswrapper/brcupsconfpt1 $out/lib/cups/filter/brcupsconfpt1 + ln -s $out/opt/brother/Printers/hl3140cw/lpd/filterhl3140cw $out/lib/cups/filter/brother_lpdwrapper_hl3140cw + + wrapProgram $out/opt/brother/Printers/hl3140cw/cupswrapper/cupswrapperhl3140cw \ + --prefix PATH ":" ${ lib.makeBinPath [ gnused coreutils gawk ] } + ''; + + meta = { + homepage = "http://www.brother.com/"; + description = "Brother hl3140cw printer driver"; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + license = lib.licenses.unfree; + platforms = lib.platforms.linux; + downloadPage = "https://support.brother.com/g/b/downloadlist.aspx?c=eu_ot&lang=en&prod=hl3140cw_us_eu&os=128"; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/hll2340dw/default.nix b/nixpkgs/pkgs/misc/cups/drivers/hll2340dw/default.nix new file mode 100644 index 000000000000..74f3c3819ae8 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/hll2340dw/default.nix @@ -0,0 +1,72 @@ +{ lib, stdenv, fetchurl, cups, dpkg, gnused, makeWrapper, ghostscript, file +, a2ps, coreutils, perl, gnugrep, which +}: + +let + version = "3.2.0-1"; + lprdeb = fetchurl { + url = "https://download.brother.com/welcome/dlf101912/hll2340dlpr-${version}.i386.deb"; + sha256 = "c0ae98b49b462cd8fbef445550f2177ce9d8bf627c904e182daa8cbaf8781e50"; + }; + + cupsdeb = fetchurl { + url = "https://download.brother.com/welcome/dlf101913/hll2340dcupswrapper-${version}.i386.deb"; + sha256 = "8aa24a6a825e3a4d5b51778cb46fe63032ec5a731ace22f9ef2b0ffcc2033cc9"; + }; + +in +stdenv.mkDerivation { + pname = "cups-brother-hll2340dw"; + inherit version; + + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ cups ghostscript dpkg a2ps ]; + + dontUnpack = true; + + installPhase = '' + mkdir -p $out + dpkg-deb -x ${cupsdeb} $out + dpkg-deb -x ${lprdeb} $out + + substituteInPlace $out/opt/brother/Printers/HLL2340D/lpd/filter_HLL2340D \ + --replace /opt "$out/opt" \ + --replace /usr/bin/perl ${perl}/bin/perl \ + --replace "BR_PRT_PATH =~" "BR_PRT_PATH = \"$out/opt/brother/Printers/HLL2340D/\"; #" \ + --replace "PRINTER =~" "PRINTER = \"HLL2340D\"; #" + + patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ + $out/opt/brother/Printers/HLL2340D/lpd/brprintconflsr3 + patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ + $out/opt/brother/Printers/HLL2340D/lpd/rawtobr3 + + for f in \ + $out/opt/brother/Printers/HLL2340D/cupswrapper/brother_lpdwrapper_HLL2340D \ + $out/opt/brother/Printers/HLL2340D/cupswrapper/paperconfigml1 \ + ; do + wrapProgram $f \ + --prefix PATH : ${lib.makeBinPath [ + coreutils ghostscript gnugrep gnused + ]} + done + + mkdir -p $out/lib/cups/filter/ + ln -s $out/opt/brother/Printers/HLL2340D/lpd/filter_HLL2340D $out/lib/cups/filter/brother_lpdwrapper_HLL2340D + + mkdir -p $out/share/cups/model + ln -s $out/opt/brother/Printers/HLL2340D/cupswrapper/brother-HLL2340D-cups-en.ppd $out/share/cups/model/ + + wrapProgram $out/opt/brother/Printers/HLL2340D/lpd/filter_HLL2340D \ + --prefix PATH ":" ${ lib.makeBinPath [ ghostscript a2ps file gnused gnugrep coreutils which ] } + ''; + + meta = with lib; { + homepage = "http://www.brother.com/"; + description = "Brother hl-l2340dw printer driver"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = licenses.unfree; + platforms = platforms.linux; + downloadPage = "https://support.brother.com/g/b/downloadlist.aspx?c=us&lang=es&prod=hll2340dw_us_eu_as&os=128&flang=English"; + maintainers = [ maintainers.qknight ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/hll2350dw/default.nix b/nixpkgs/pkgs/misc/cups/drivers/hll2350dw/default.nix new file mode 100644 index 000000000000..f018c8b64544 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/hll2350dw/default.nix @@ -0,0 +1,95 @@ +{ lib +, stdenv +, fetchurl +, dpkg +, autoPatchelfHook +, makeWrapper +, perl +, gnused +, ghostscript +, file +, coreutils +, gnugrep +, which +}: + +let + arches = [ "x86_64" "i686" "armv7l" ]; + + runtimeDeps = [ + ghostscript + file + gnused + gnugrep + coreutils + which + ]; +in + +stdenv.mkDerivation rec { + pname = "cups-brother-hll2350dw"; + version = "4.0.0-1"; + + nativeBuildInputs = [ dpkg makeWrapper autoPatchelfHook ]; + buildInputs = [ perl ]; + + dontUnpack = true; + + src = fetchurl { + url = "https://download.brother.com/welcome/dlf103566/hll2350dwpdrv-${version}.i386.deb"; + sha256 = "0b7hhln105agc3rwpi7cjlx5nf4d2yk9iksahdv3725nnd06lg46"; + }; + + installPhase = '' + runHook preInstall + + mkdir -p $out + dpkg-deb -x $src $out + + # delete unnecessary files for the current architecture + '' + lib.concatMapStrings (arch: '' + echo Deleting files for ${arch} + rm -r "$out/opt/brother/Printers/HLL2350DW/lpd/${arch}" + '') (builtins.filter (arch: arch != stdenv.hostPlatform.linuxArch) arches) + '' + + # bundled scripts don't understand the arch subdirectories for some reason + ln -s \ + "$out/opt/brother/Printers/HLL2350DW/lpd/${stdenv.hostPlatform.linuxArch}/"* \ + "$out/opt/brother/Printers/HLL2350DW/lpd/" + + # Fix global references and replace auto discovery mechanism with hardcoded values + substituteInPlace $out/opt/brother/Printers/HLL2350DW/lpd/lpdfilter \ + --replace /opt "$out/opt" \ + --replace "my \$BR_PRT_PATH =" "my \$BR_PRT_PATH = \"$out/opt/brother/Printers/HLL2350DW\"; #" \ + --replace "PRINTER =~" "PRINTER = \"HLL2350DW\"; #" + + # Make sure all executables have the necessary runtime dependencies available + find "$out" -executable -and -type f | while read file; do + wrapProgram "$file" --prefix PATH : "${lib.makeBinPath runtimeDeps}" + done + + # Symlink filter and ppd into a location where CUPS will discover it + mkdir -p $out/lib/cups/filter + mkdir -p $out/share/cups/model + + ln -s \ + $out/opt/brother/Printers/HLL2350DW/lpd/lpdfilter \ + $out/lib/cups/filter/brother_lpdwrapper_HLL2350DW + + ln -s \ + $out/opt/brother/Printers/HLL2350DW/cupswrapper/brother-HLL2350DW-cups-en.ppd \ + $out/share/cups/model/ + + runHook postInstall + ''; + + meta = with lib; { + homepage = "http://www.brother.com/"; + description = "Brother HL-L2350DW printer driver"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = licenses.unfree; + platforms = builtins.map (arch: "${arch}-linux") arches; + downloadPage = "https://support.brother.com/g/b/downloadlist.aspx?c=us_ot&lang=en&prod=hll2350dw_us_eu_as&os=128"; + maintainers = [ maintainers.sternenseemann ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/hll2390dw-cups/default.nix b/nixpkgs/pkgs/misc/cups/drivers/hll2390dw-cups/default.nix new file mode 100644 index 000000000000..bd9974d5b644 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/hll2390dw-cups/default.nix @@ -0,0 +1,72 @@ +{ lib, stdenv, fetchurl, makeWrapper +, cups +, dpkg +, a2ps, ghostscript, gnugrep, gnused, coreutils, file, perl, which +}: + +stdenv.mkDerivation rec { + pname = "hll2390dw-cups"; + version = "4.0.0-1"; + + src = fetchurl { + # The i386 part is a lie. There are x86, x86_64 and armv7l drivers. + # Though this builds only supports x86_64 for now. + url = "https://download.brother.com/welcome/dlf103579/hll2390dwpdrv-${version}.i386.deb"; + sha256 = "0w8rxh1sa5amxr87qmzs4m2p06b1b36wn2q127mg427sbkh1rwni"; + }; + + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ cups ghostscript dpkg a2ps ]; + + dontUnpack = true; + + installPhase = '' + dpkg-deb -x $src $out + + substituteInPlace $out/opt/brother/Printers/HLL2390DW/lpd/lpdfilter \ + --replace /opt "$out/opt" \ + --replace /usr/bin/perl ${perl}/bin/perl \ + --replace "BR_PRT_PATH =~" "BR_PRT_PATH = \"$out\"; #" \ + --replace "PRINTER =~" "PRINTER = \"HLL2390DW\"; #" + + # FIXME : Allow i686 and armv7l variations to be setup instead. + _PLAT=x86_64 + patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ + $out/opt/brother/Printers/HLL2390DW/lpd/$_PLAT/brprintconflsr3 + patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ + $out/opt/brother/Printers/HLL2390DW/lpd/$_PLAT/rawtobr3 + ln -s $out/opt/brother/Printers/HLL2390DW/lpd/$_PLAT/brprintconflsr3 $out/opt/brother/Printers/HLL2390DW/lpd/brprintconflsr3 + ln -s $out/opt/brother/Printers/HLL2390DW/lpd/$_PLAT/rawtobr3 $out/opt/brother/Printers/HLL2390DW/lpd/rawtobr3 + + for f in \ + $out/opt/brother/Printers/HLL2390DW/cupswrapper/lpdwrapper \ + $out/opt/brother/Printers/HLL2390DW/cupswrapper/paperconfigml2 \ + ; do + #substituteInPlace $f \ + wrapProgram $f \ + --prefix PATH : ${lib.makeBinPath [ + coreutils ghostscript gnugrep gnused + ]} + done + + mkdir -p $out/lib/cups/filter/ + ln -s $out/opt/brother/Printers/HLL2390DW/lpd/lpdfilter $out/lib/cups/filter/brother_lpdwrapper_HLL2390DW + + mkdir -p $out/share/cups/model + ln -s $out/opt/brother/Printers/HLL2390DW/cupswrapper/brother-HLL2390DW-cups-en.ppd $out/share/cups/model/ + + wrapProgram $out/opt/brother/Printers/HLL2390DW/lpd/lpdfilter \ + --prefix PATH ":" ${ lib.makeBinPath [ ghostscript a2ps file gnused gnugrep coreutils which ] } + ''; + + meta = with lib; { + homepage = "http://www.brother.com/"; + description = "Brother HL-L2390DW combined print driver"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = licenses.unfree; + platforms = [ "x86_64-linux" ]; + downloadPage = "http://support.brother.com/g/b/downloadlist.aspx?c=us_ot&lang=en&prod=hll2390dw_us&os=128"; + maintainers = [ maintainers.samueldr ]; + }; +} + diff --git a/nixpkgs/pkgs/misc/cups/drivers/hll3230cdw/default.nix b/nixpkgs/pkgs/misc/cups/drivers/hll3230cdw/default.nix new file mode 100644 index 000000000000..aff134d7a33a --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/hll3230cdw/default.nix @@ -0,0 +1,76 @@ +{ stdenv, lib, fetchurl, perl, gnused, dpkg, makeWrapper, autoPatchelfHook, libredirect }: + +stdenv.mkDerivation rec { + pname = "cups-brother-hll3230cdw"; + version = "1.0.2"; + src = fetchurl { + url = "https://download.brother.com/welcome/dlf103925/hll3230cdwpdrv-${version}-0.i386.deb"; + sha256 = "9d49abc584bf22bc381510618a34107ead6ab14562b51831fefd6009947aa5a9"; + }; + + nativeBuildInputs = [ dpkg makeWrapper autoPatchelfHook ]; + + buildInputs = [ perl gnused libredirect ]; + + unpackPhase = "dpkg-deb -x $src ."; + + installPhase = '' + runHook preInstall + + mkdir -p "$out" + cp -pr opt "$out" + cp -pr usr/bin "$out/bin" + rm "$out/opt/brother/Printers/hll3230cdw/cupswrapper/cupswrapperhll3230cdw" + + mkdir -p "$out/lib/cups/filter" "$out/share/cups/model" + + ln -s "$out/opt/brother/Printers/hll3230cdw/cupswrapper/brother_lpdwrapper_hll3230cdw" \ + "$out/lib/cups/filter/brother_lpdwrapper_hll3230cdw" + ln -s "$out/opt/brother/Printers/hll3230cdw/cupswrapper/brother_hll3230cdw_printer_en.ppd" \ + "$out/share/cups/model/brother_hll3230cdw_printer_en.ppd" + + runHook postInstall + ''; + + # Fix global references and replace auto discovery mechanism + # with hardcoded values. + # + # The configuration binary 'brprintconf_hll3230cdw' and lpd filter + # 'brhll3230cdwfilter' has hardcoded /opt format strings. There isn't + # sufficient space in the binaries to substitute a path in the store, so use + # libredirect to get it to see the correct path. The configuration binary + # also uses this format string to print configuration locations. Here the + # wrapper output is processed to point into the correct location in the + # store. + + postFixup = '' + substituteInPlace $out/opt/brother/Printers/hll3230cdw/lpd/filter_hll3230cdw \ + --replace "my \$BR_PRT_PATH =" "my \$BR_PRT_PATH = \"$out/opt/brother/Printers/hll3230cdw/\"; #" \ + --replace "PRINTER =~" "PRINTER = \"hll3230cdw\"; #" + + substituteInPlace $out/opt/brother/Printers/hll3230cdw/cupswrapper/brother_lpdwrapper_hll3230cdw \ + --replace "PRINTER =~" "PRINTER = \"hll3230cdw\"; #" \ + --replace "my \$basedir = \`readlink \$0\`" "my \$basedir = \"$out/opt/brother/Printers/hll3230cdw/\"" + + wrapProgram $out/bin/brprintconf_hll3230cdw \ + --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \ + --set NIX_REDIRECTS /opt=$out/opt + + wrapProgram $out/opt/brother/Printers/hll3230cdw/lpd/brhll3230cdwfilter \ + --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \ + --set NIX_REDIRECTS /opt=$out/opt + + substituteInPlace $out/bin/brprintconf_hll3230cdw \ + --replace \"\$"@"\" \"\$"@\" | LD_PRELOAD= ${gnused}/bin/sed -E '/^(function list :|resource file :).*/{s#/opt#$out/opt#}'" + ''; + + meta = with lib; { + description = "Brother HL-L3230CDW printer driver"; + license = licenses.unfree; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + maintainers = with maintainers; [ aplund ]; + platforms = [ "x86_64-linux" "i686-linux" ]; + homepage = "http://www.brother.com/"; + downloadPage = "https://support.brother.com/g/b/downloadend.aspx?c=us&lang=en&prod=hll3230cdw_us_eu_as&os=128&dlid=dlf103925_000&flang=4&type3=10283"; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/kyocera-ecosys-m2x35-40-p2x35-40dnw/default.nix b/nixpkgs/pkgs/misc/cups/drivers/kyocera-ecosys-m2x35-40-p2x35-40dnw/default.nix new file mode 100644 index 000000000000..985a172d8731 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/kyocera-ecosys-m2x35-40-p2x35-40dnw/default.nix @@ -0,0 +1,33 @@ +{ stdenv +, lib +, fetchzip + # can either be "EU" or "Global"; it's unclear what the difference is +, region ? "Global" + # can be either "English", "French", "German", "Italian", "Portguese" or "Spanish" +, language ? "English" +}: + +stdenv.mkDerivation rec { + pname = "cups-kyocera-ecosys-m2x35-40-p2x35-40dnw"; + version = "8.1606"; + + src = let + urlVersion = builtins.replaceStrings [ "." ] [ "_" ] version; + in fetchzip { + url = "https://www.kyoceradocumentsolutions.de/content/download-center/de/drivers/all/Linux_${urlVersion}_ECOSYS_M2x35_40_P2x35_40dnw_zip.download.zip"; + sha256 = "10crxdfj62ini70vv471445zi6q0l9fmg2jsd74sp6fr0qa0kvr7"; + }; + + installPhase = '' + mkdir -p $out/share/cups/model/Kyocera + cp ${region}/${language}/*.PPD $out/share/cups/model/Kyocera/ + ''; + + meta = with lib; { + description = "PPD files for Kyocera ECOSYS M2040dn/M2135dn/M2540dn/M2540dw/M2635dn/M2635dw/M2640idw/M2735dw/P2040dn/M2040dw/P2235dn/P2235dw"; + homepage = "https://www.kyoceradocumentsolutions.com"; + license = licenses.unfree; + maintainers = with maintainers; [ hexa ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/kyocera-ecosys-m552x-p502x/default.nix b/nixpkgs/pkgs/misc/cups/drivers/kyocera-ecosys-m552x-p502x/default.nix new file mode 100644 index 000000000000..66e3d036bcc6 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/kyocera-ecosys-m552x-p502x/default.nix @@ -0,0 +1,29 @@ +{ stdenv +, lib +, fetchzip + # can either be "EU" or "Global"; it's unclear what the difference is +, region ? "Global" +}: + +stdenv.mkDerivation rec { + pname = "cups-kyocera-ecosys-m552x-p502x"; + version = "8.1602"; + + src = fetchzip { + url = "https://www.kyoceradocumentsolutions.de/content/download-center/de/drivers/all/Linux_8_1602_ECOSYS_M5521_5526_P5021_5026_zip.download.zip"; + sha256 = "sha256-XDH5deZmWNghfoO7JaYYvnVq++mbQ8RwLY57L2CKYaY="; + }; + + installPhase = '' + mkdir -p $out/share/cups/model/Kyocera + cp ${region}/English/*.PPD $out/share/cups/model/Kyocera/ + ''; + + meta = with lib; { + description = "PPD files for Kyocera ECOSYS M5521cdn/M5521cdw/M5526cdn/M5526cdw/P5021cdn/P5021cdw/P5026cdn/P5026cdw"; + homepage = "https://www.kyoceradocumentsolutions.com"; + license = licenses.unfree; + maintainers = [ maintainers.mbrgm ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/kyocera/default.nix b/nixpkgs/pkgs/misc/cups/drivers/kyocera/default.nix new file mode 100644 index 000000000000..cd435bc49662 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/kyocera/default.nix @@ -0,0 +1,58 @@ +{ lib +, stdenv +, cups +, fetchzip +, patchPpdFilesHook +}: + +let + platform = + if stdenv.hostPlatform.system == "x86_64-linux" then "64bit" + else if stdenv.hostPlatform.system == "i686-linux" then "32bit" + else throw "Unsupported system: ${stdenv.hostPlatform.system}"; + + libPath = lib.makeLibraryPath [ cups ]; +in + +stdenv.mkDerivation { + pname = "cups-kyocera"; + version = "1.1203"; + + dontPatchELF = true; + dontStrip = true; + + src = fetchzip { + url = "https://web.archive.org/web/20220709011705/https://cdn.kyostatics.net/dlc/ru/driver/all/linuxdrv_1_1203_fs-1x2xmfp.-downloadcenteritem-Single-File.downloadcenteritem.tmp/LinuxDrv_1.1203_FS-1x2xMFP.zip"; + sha256 = "0z1pbgidkibv4j21z0ys8cq1lafc6687syqa07qij2qd8zp15wiz"; + }; + + nativeBuildInputs = [ patchPpdFilesHook ]; + + installPhase = '' + runHook preInstall + + tar -xvf ${platform}/Global/English.tar.gz + install -Dm755 English/rastertokpsl $out/lib/cups/filter/rastertokpsl + patchelf \ + --set-rpath ${libPath} \ + --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ + $out/lib/cups/filter/rastertokpsl + + mkdir -p $out/share/cups/model/Kyocera + cd English + cp *.ppd $out/share/cups/model/Kyocera + + runHook postInstall + ''; + + ppdFileCommands = [ "rastertokpsl" ]; + + meta = with lib; { + description = "CUPS drivers for several Kyocera FS-{1020,1025,1040,1060,1120,1125} printers"; + homepage = "https://www.kyoceradocumentsolutions.ru/index/service_support/download_center.false.driver.FS1040._.EN.html#"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = licenses.unfree; + maintainers = [ maintainers.vanzef ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/kyodialog/default.nix b/nixpkgs/pkgs/misc/cups/drivers/kyodialog/default.nix new file mode 100644 index 000000000000..ad2d113465ce --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/kyodialog/default.nix @@ -0,0 +1,110 @@ +{ lib +, stdenv +, fetchzip +, cups +, autoPatchelfHook +, python3Packages + +# Sets the default paper format: use "EU" for A4, or "Global" for Letter +, region ? "EU" +# optional GUI, quite redundant to CUPS admin web GUI +, withQtGui ? false +, qt5 +}: + +# Open issues: +# +# Printing in grayscale mode (e.g. the test page) generates a warning +# > [Job 59] Grayscale/monochrome printing requested for this job but Poppler is not able to convert to grayscale/monochrome PostScript. +# > [Job 59] Use \"pdftops-renderer\" option (see cups-filters README file) to use Ghostscript or MuPDF for the PDF -> PostScript conversion. +# +# This is related to https://github.com/OpenPrinting/cups-filters/issues/169. + +assert region == "Global" || region == "EU"; + +let + kyodialog_version = "9.3"; + date = "20230720"; +in +stdenv.mkDerivation rec { + pname = "cups-kyodialog"; + version = "${kyodialog_version}-${date}"; + + dontStrip = true; + + src = fetchzip { + # Steps to find the release download URL: + # 1. Go to https://www.kyoceradocumentsolutions.us/en/support/downloads.html + # 2. Search for printer model, e.g. "TASKalfa 6053ci" + # 3. Locate e.g. "Linux Print Driver (9.3)" in the list + urls = [ + "https://www.kyoceradocumentsolutions.us/content/download-center-americas/us/drivers/drivers/KyoceraLinuxPackages_${date}_tar_gz.download.gz" + "https://web.archive.org/web/20231021143259/https://www.kyoceradocumentsolutions.us/content/download-center-americas/us/drivers/drivers/KyoceraLinuxPackages_${date}_tar_gz.download.gz" + ]; + hash = "sha256-3h2acOmaQIiqe2Fd9QiqEfre5TrxzRrll6UlUruwj1o="; + extension = "tar.gz"; + stripRoot = false; + postFetch = '' + # delete redundant Linux package dirs to reduce size in the Nix store; only keep Debian + rm -r $out/{CentOS,Fedora,OpenSUSE,Redhat,Ubuntu} + ''; + }; + + sourceRoot = "."; + + unpackCmd = let + platforms = { + x86_64-linux = "amd64"; + i686-linux = "i386"; + }; + platform = platforms.${stdenv.hostPlatform.system} or (throw "unsupported system: ${stdenv.hostPlatform.system}"); + in '' + ar p "$src/Debian/${region}/kyodialog_${platform}/kyodialog_${kyodialog_version}-0_${platform}.deb" data.tar.gz | tar -xz + ''; + + nativeBuildInputs = [ autoPatchelfHook python3Packages.wrapPython ] + ++ lib.optionals withQtGui [ qt5.wrapQtAppsHook ]; + + buildInputs = [ cups ] ++ lib.optionals withQtGui [ qt5.qtbase ]; + + # For lib/cups/filter/kyofilter_pre_H. + # The source already contains a copy of pypdf3, but we use the Nix package + propagatedBuildInputs = with python3Packages; [ reportlab pypdf3 setuptools ]; + + installPhase = '' + # allow cups to find the ppd files + mkdir -p $out/share/cups/model + mv ./usr/share/kyocera${kyodialog_version}/ppd${kyodialog_version} $out/share/cups/model/Kyocera + + # remove absolute path prefixes to filters in ppd + find $out -name "*.ppd" -exec sed -E -i "s:/usr/lib/cups/filter/::g" {} \; + + + mkdir -p $out/lib/cups/ + mv ./usr/lib/cups/filter/ $out/lib/cups/ + # for lib/cups/filter/kyofilter_pre_H + wrapPythonProgramsIn $out/lib/cups/filter "$propagatedBuildInputs" + + + install -Dm444 usr/share/doc/kyodialog/copyright $out/share/doc/${pname}/copyright + '' + lib.optionalString withQtGui '' + install -D usr/bin/kyoPPDWrite_H $out/bin/kyoPPDWrite_H + install -D usr/bin/kyodialog${kyodialog_version} $out/bin/kyodialog + + install -Dm444 usr/share/kyocera${kyodialog_version}/appicon_H.png $out/share/${pname}/icons/appicon_H.png + + install -Dm444 usr/share/applications/kyodialog${kyodialog_version}.desktop $out/share/applications/kyodialog.desktop + substituteInPlace $out/share/applications/kyodialog.desktop \ + --replace Exec=\"/usr/bin/kyodialog${kyodialog_version}\" Exec=\"$out/bin/kyodialog\" \ + --replace Icon=/usr/share/kyocera/appicon_H.png Icon=$out/share/${pname}/icons/appicon_H.png + ''; + + meta = with lib; { + description = "CUPS drivers for several Kyocera printers"; + homepage = "https://www.kyoceradocumentsolutions.com"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = licenses.unfree; + maintainers = [ maintainers.steveej ]; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/mfc5890cncupswrapper/default.nix b/nixpkgs/pkgs/misc/cups/drivers/mfc5890cncupswrapper/default.nix new file mode 100644 index 000000000000..26e90cbf6bba --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/mfc5890cncupswrapper/default.nix @@ -0,0 +1,76 @@ +{ lib +, findutils +, stdenv +, fetchurl +, dpkg +, makeWrapper +, coreutils +, gnugrep +, gnused +, mfc5890cnlpr +, pkgsi686Linux +, psutils +}: + +stdenv.mkDerivation rec { + pname = "mfc5890cncupswrapper"; + version = "1.1.2-2"; + + src = fetchurl { + url = "https://download.brother.com/welcome/dlf006170/${pname}-${version}.i386.deb"; + hash = "sha256-UOCwzB09/a1/2rliY+hTrslSvO5ztVj51auisPx7OIQ="; + }; + + unpackPhase = '' + dpkg-deb -x $src $out + ''; + + nativeBuildInputs = [ + dpkg + makeWrapper + ]; + + dontBuild = true; + + installPhase = '' + lpr=${mfc5890cnlpr}/usr/local/Brother/Printer/mfc5890cn + dir=$out/usr/local/Brother/Printer/mfc5890cn + + interpreter=${pkgsi686Linux.glibc.out}/lib/ld-linux.so.2 + patchelf --set-interpreter "$interpreter" "$dir/cupswrapper/brcupsconfpt1" + + #comment out lpadmin commands to prohibit changes to CUPS config by just installing this driver. + substituteInPlace $dir/cupswrapper/cupswrappermfc5890cn \ + --replace "lpadmin" "#lpadmin" \ + --replace "/usr/" "$out/usr/" + + #mfc5890cnlpr is a dependency of this package. Link all files of mfc5890cnlpr into the $out/usr folder, as other scripts depend on these files being present. + #Ideally, we would use substituteInPlace for each file this package actually requires. But the scripts of Brother use variables to dynamically build the paths + #at runtime, making this approach more complex. Hence, the easier route of simply linking all files was choosen. + find "$lpr" -type f -exec sh -c "mkdir -vp \$(echo '{}' | sed 's|$lpr|$dir|g' | xargs dirname) && ln -s '{}' \$(echo '{}' | sed 's|$lpr|$dir|g')" \; + + mkdir -p $out/usr/share/ppd/ + mkdir -p $out/usr/lib64/cups/filter + sed -i '941,972d' $dir/cupswrapper/cupswrappermfc5890cn + $dir/cupswrapper/cupswrappermfc5890cn + + chmod +x $out/usr/lib64/cups/filter/brlpdwrappermfc5890cn + wrapProgram $out/usr/lib64/cups/filter/brlpdwrappermfc5890cn --prefix PATH : ${lib.makeBinPath [coreutils psutils gnugrep gnused]} + + mkdir -p $out/lib/cups/filter + mkdir -p $out/share/cups/model + ln $out/usr/lib64/cups/filter/brlpdwrappermfc5890cn $out/lib/cups/filter + ln $dir/cupswrapper/cupswrappermfc5890cn $out/lib/cups/filter + ln $out/usr/share/ppd/brmfc5890cn.ppd $out/share/cups/model + ''; + + meta = with lib; { + description = "Brother MFC-5890CN CUPS wrapper driver."; + longDescription = "Brother MFC-5890CN CUPS wrapper driver. Use the connection string 'lpd://\${IP_ADDRESS}/binary_p1' when connecting to this printer via the network."; + homepage = "http://www.brother.com/"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = with maintainers; [ martinramm ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/mfc5890cnlpr/default.nix b/nixpkgs/pkgs/misc/cups/drivers/mfc5890cnlpr/default.nix new file mode 100644 index 000000000000..7878d77afc04 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/mfc5890cnlpr/default.nix @@ -0,0 +1,75 @@ +{ stdenv +, a2ps +, lib +, fetchurl +, dpkg +, makeWrapper +, coreutils +, file +, gawk +, ghostscript +, gnused +, pkgsi686Linux +}: + +stdenv.mkDerivation rec { + pname = "mfc5890cnlpr"; + version = "1.1.2-2"; + + src = fetchurl { + url = "https://download.brother.com/welcome/dlf006168/${pname}-${version}.i386.deb"; + sha256 = "119h3s1p9pv83mrfv6cmxpc0v33xf8c9nw5clj9yafv3aizxy6dp"; + }; + + unpackPhase = '' + dpkg-deb -x $src $out + ''; + + nativeBuildInputs = [ + dpkg + makeWrapper + ]; + + dontBuild = true; + + installPhase = '' + dir=$out/usr/local/Brother/Printer/mfc5890cn + + patchelf --set-interpreter ${pkgsi686Linux.glibc.out}/lib/ld-linux.so.2 $dir/lpd/brmfc5890cnfilter + + wrapProgram $dir/inf/setupPrintcapij \ + --prefix PATH : ${lib.makeBinPath [ + coreutils + ]} + + substituteInPlace $dir/lpd/filtermfc5890cn \ + --replace "/usr/" "$out/usr/" + + wrapProgram $dir/lpd/filtermfc5890cn \ + --prefix PATH : ${lib.makeBinPath [ + a2ps + coreutils + file + ghostscript + gnused + ]} + + substituteInPlace $dir/lpd/psconvertij2 \ + --replace '`which gs`' "${ghostscript}/bin/gs" + + wrapProgram $dir/lpd/psconvertij2 \ + --prefix PATH : ${lib.makeBinPath [ + gnused + gawk + ]} + ''; + + meta = with lib; { + description = "Brother MFC-5890CN LPR printer driver"; + homepage = "http://www.brother.com/"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = licenses.unfree; + maintainers = with maintainers; [ martinramm ]; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/mfc9140cdncupswrapper/default.nix b/nixpkgs/pkgs/misc/cups/drivers/mfc9140cdncupswrapper/default.nix new file mode 100644 index 000000000000..c38b52618651 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/mfc9140cdncupswrapper/default.nix @@ -0,0 +1,69 @@ +{ lib +, stdenv +, fetchurl +, dpkg +, makeWrapper +, coreutils +, gnugrep +, gnused +, mfc9140cdnlpr +, pkgsi686Linux +, psutils +}: + +stdenv.mkDerivation rec { + pname = "mfc9140cdncupswrapper"; + version = "1.1.4-0"; + + src = fetchurl { + url = "https://download.brother.com/welcome/dlf100407/${pname}-${version}.i386.deb"; + sha256 = "18aramgqgra1shdhsa75i0090hk9i267gvabildwsk52kq2b96c6"; + }; + + unpackPhase = '' + dpkg-deb -x $src $out + ''; + + nativeBuildInputs = [ + dpkg + makeWrapper + ]; + + dontBuild = true; + + installPhase = '' + lpr=${mfc9140cdnlpr}/opt/brother/Printers/mfc9140cdn + dir=$out/opt/brother/Printers/mfc9140cdn + + interpreter=${pkgsi686Linux.glibc.out}/lib/ld-linux.so.2 + patchelf --set-interpreter "$interpreter" "$dir/cupswrapper/brcupsconfpt1" + + substituteInPlace $dir/cupswrapper/cupswrappermfc9140cdn \ + --replace "mkdir -p /usr" ": # mkdir -p /usr" \ + --replace '/opt/brother/''${device_model}/''${printer_model}/lpd/filter''${printer_model}' "$lpr/lpd/filtermfc9140cdn" \ + --replace '/usr/share/ppd/Brother/brother_''${printer_model}_printer_en.ppd' "$dir/cupswrapper/brother_mfc9140cdn_printer_en.ppd" \ + --replace '/usr/share/cups/model/Brother/brother_''${printer_model}_printer_en.ppd' "$dir/cupswrapper/brother_mfc9140cdn_printer_en.ppd" \ + --replace '/opt/brother/Printers/''${printer_model}/' "$lpr/" \ + --replace 'nup="psnup' "nup=\"${psutils}/bin/psnup" \ + --replace '/usr/bin/psnup' "${psutils}/bin/psnup" + + mkdir -p $out/lib/cups/filter + mkdir -p $out/share/cups/model + + ln $dir/cupswrapper/cupswrappermfc9140cdn $out/lib/cups/filter + ln $dir/cupswrapper/brother_mfc9140cdn_printer_en.ppd $out/share/cups/model + + sed -n '/!ENDOFWFILTER!/,/!ENDOFWFILTER!/p' "$dir/cupswrapper/cupswrappermfc9140cdn" | sed '1 br; b; :r s/.*/printer_model=mfc9140cdn; cat <<!ENDOFWFILTER!/' | bash > $out/lib/cups/filter/brother_lpdwrapper_mfc9140cdn + sed -i "/#! \/bin\/sh/a PATH=${lib.makeBinPath [ coreutils gnused gnugrep ]}:\$PATH" $out/lib/cups/filter/brother_lpdwrapper_mfc9140cdn + chmod +x $out/lib/cups/filter/brother_lpdwrapper_mfc9140cdn + ''; + + meta = with lib; { + description = "Brother MFC-9140CDN CUPS wrapper driver"; + homepage = "http://www.brother.com/"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = with maintainers; [ hexa ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/mfc9140cdnlpr/default.nix b/nixpkgs/pkgs/misc/cups/drivers/mfc9140cdnlpr/default.nix new file mode 100644 index 000000000000..ab20016c7ff0 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/mfc9140cdnlpr/default.nix @@ -0,0 +1,74 @@ +{ stdenv +, lib +, fetchurl +, dpkg +, makeWrapper +, coreutils +, file +, gawk +, ghostscript +, gnused +, pkgsi686Linux +}: + +stdenv.mkDerivation rec { + pname = "mfc9140cdnlpr"; + version = "1.1.2-1"; + + src = fetchurl { + url = "https://download.brother.com/welcome/dlf100405/${pname}-${version}.i386.deb"; + sha256 = "1wqx8njrv078fc3vlq90qyrfg3cw9kr9m6f3qvfnkhq1f95fbslh"; + }; + + unpackPhase = '' + dpkg-deb -x $src $out + ''; + + nativeBuildInputs = [ + dpkg + makeWrapper + ]; + + dontBuild = true; + + installPhase = '' + dir=$out/opt/brother/Printers/mfc9140cdn + + patchelf --set-interpreter ${pkgsi686Linux.glibc.out}/lib/ld-linux.so.2 $dir/lpd/brmfc9140cdnfilter + + wrapProgram $dir/inf/setupPrintcapij \ + --prefix PATH : ${lib.makeBinPath [ + coreutils + ]} + + substituteInPlace $dir/lpd/filtermfc9140cdn \ + --replace "BR_CFG_PATH=" "BR_CFG_PATH=\"$dir/\" #" \ + --replace "BR_LPD_PATH=" "BR_LPD_PATH=\"$dir/\" #" + + wrapProgram $dir/lpd/filtermfc9140cdn \ + --prefix PATH : ${lib.makeBinPath [ + coreutils + file + ghostscript + gnused + ]} + + substituteInPlace $dir/lpd/psconvertij2 \ + --replace '`which gs`' "${ghostscript}/bin/gs" + + wrapProgram $dir/lpd/psconvertij2 \ + --prefix PATH : ${lib.makeBinPath [ + gnused + gawk + ]} + ''; + + meta = with lib; { + description = "Brother MFC-9140CDN LPR printer driver"; + homepage = "http://www.brother.com/"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = licenses.unfree; + maintainers = with maintainers; [ hexa ]; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/mfcj470dwcupswrapper/default.nix b/nixpkgs/pkgs/misc/cups/drivers/mfcj470dwcupswrapper/default.nix new file mode 100644 index 000000000000..dc54611d335a --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/mfcj470dwcupswrapper/default.nix @@ -0,0 +1,62 @@ +{ lib, stdenv, fetchurl, mfcj470dwlpr, makeWrapper}: + +stdenv.mkDerivation rec { + pname = "mfcj470dw-cupswrapper"; + version = "3.0.0-1"; + + src = fetchurl { + url = "https://download.brother.com/welcome/dlf006866/mfcj470dw_cupswrapper_GPL_source_${version}.tar.gz"; + sha256 = "b88f9b592723a00c024129560367f40a560ca3cba06fd99512ab368dd6855853"; + }; + + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ mfcj470dwlpr ]; + + patchPhase = '' + WRAPPER=cupswrapper/cupswrappermfcj470dw + + substituteInPlace $WRAPPER \ + --replace /opt "${mfcj470dwlpr}/opt" \ + --replace /usr "${mfcj470dwlpr}/usr" \ + --replace /etc "$out/etc" + + substituteInPlace $WRAPPER \ + --replace "cp " "cp -p " + ''; + + buildPhase = '' + cd brcupsconfpt1 + make all + cd .. + ''; + + installPhase = '' + TARGETFOLDER=$out/opt/brother/Printers/mfcj470dw/cupswrapper/ + PPDFOLDER=$out/share/cups/model/ + FILTERFOLDER=$out/lib/cups/filter/ + + mkdir -p $TARGETFOLDER + mkdir -p $PPDFOLDER + mkdir -p $FILTERFOLDER + + cp brcupsconfpt1/brcupsconfpt1 $TARGETFOLDER + cp cupswrapper/cupswrappermfcj470dw $TARGETFOLDER + cp PPD/brother_mfcj470dw_printer_en.ppd $PPDFOLDER + + ln -s ${mfcj470dwlpr}/lib/cups/filter/brother_lpdwrapper_mfcj470dw $FILTERFOLDER/ + ''; + + cleanPhase = '' + cd brcupsconfpt1 + make clean + ''; + + meta = { + homepage = "http://www.brother.com/"; + description = "Brother MFC-J470DW CUPS wrapper driver"; + license = lib.licenses.gpl2; + platforms = lib.platforms.linux; + downloadPage = "http://support.brother.com/g/b/downloadlist.aspx?c=us&lang=en&prod=mfcj470dw_us_eu_as&os=128"; + maintainers = [ lib.maintainers.yochai ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/mfcj470dwlpr/default.nix b/nixpkgs/pkgs/misc/cups/drivers/mfcj470dwlpr/default.nix new file mode 100644 index 000000000000..28be1b580a44 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/mfcj470dwlpr/default.nix @@ -0,0 +1,46 @@ +{ lib, stdenv, fetchurl, cups, dpkg, ghostscript, a2ps, coreutils, gnused, gawk, file, makeWrapper }: + +stdenv.mkDerivation rec { + pname = "mfcj470dw-cupswrapper"; + version = "3.0.0-1"; + + src = fetchurl { + url = "https://download.brother.com/welcome/dlf006843/mfcj470dwlpr-${version}.i386.deb"; + sha256 = "7202dd895d38d50bb767080f2995ed350eed99bc2b7871452c3c915c8eefc30a"; + }; + + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ cups ghostscript dpkg a2ps ]; + + dontUnpack = true; + + installPhase = '' + dpkg-deb -x $src $out + + substituteInPlace $out/opt/brother/Printers/mfcj470dw/lpd/filtermfcj470dw \ + --replace /opt "$out/opt" \ + + sed -i '/GHOST_SCRIPT=/c\GHOST_SCRIPT=gs' $out/opt/brother/Printers/mfcj470dw/lpd/psconvertij2 + + patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-linux.so.2 $out/opt/brother/Printers/mfcj470dw/lpd/brmfcj470dwfilter + + mkdir -p $out/lib/cups/filter/ + ln -s $out/opt/brother/Printers/mfcj470dw/lpd/filtermfcj470dw $out/lib/cups/filter/brother_lpdwrapper_mfcj470dw + + wrapProgram $out/opt/brother/Printers/mfcj470dw/lpd/psconvertij2 \ + --prefix PATH ":" ${ lib.makeBinPath [ gnused coreutils gawk ] } + + wrapProgram $out/opt/brother/Printers/mfcj470dw/lpd/filtermfcj470dw \ + --prefix PATH ":" ${ lib.makeBinPath [ ghostscript a2ps file gnused coreutils ] } + ''; + + meta = { + homepage = "http://www.brother.com/"; + description = "Brother MFC-J470DW LPR driver"; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + license = lib.licenses.unfree; + platforms = lib.platforms.linux; + downloadPage = "http://support.brother.com/g/b/downloadlist.aspx?c=us&lang=en&prod=mfcj470dw_us_eu_as&os=128"; + maintainers = [ lib.maintainers.yochai ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/mfcj6510dwcupswrapper/default.nix b/nixpkgs/pkgs/misc/cups/drivers/mfcj6510dwcupswrapper/default.nix new file mode 100644 index 000000000000..1653ced85c5a --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/mfcj6510dwcupswrapper/default.nix @@ -0,0 +1,65 @@ +{ lib, stdenv, fetchurl, mfcj6510dwlpr, makeWrapper}: + +stdenv.mkDerivation rec { + pname = "mfcj6510dw-cupswrapper"; + version = "3.0.0-1"; + + src = fetchurl { + url = "https://download.brother.com/welcome/dlf006814/mfcj6510dw_cupswrapper_GPL_source_${version}.tar.gz"; + sha256 = "0y5iffybxjin8injrdmc9n9hl4s6b8n6ck76m1z78bzi88vwmhai"; + }; + + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ mfcj6510dwlpr ]; + + buildPhase = '' + cd brcupsconfig + make all + cd .. + ''; + + installPhase = '' + TARGETFOLDER=$out/opt/brother/Printers/mfcj6510dw/cupswrapper + mkdir -p $TARGETFOLDER + cp PPD/brother_mfcj6510dw_printer_en.ppd $TARGETFOLDER + cp brcupsconfig/brcupsconfpt1 $TARGETFOLDER + cp scripts/cupswrappermfcj6510dw $TARGETFOLDER + sed -i -e '26,304d' $TARGETFOLDER/cupswrappermfcj6510dw + substituteInPlace $TARGETFOLDER/cupswrappermfcj6510dw \ + --replace "\$ppd_file_name" "$TARGETFOLDER/brother_mfcj6510dw_printer_en.ppd" + + CPUSFILTERFOLDER=$out/lib/cups/filter + mkdir -p $TARGETFOLDER $CPUSFILTERFOLDER + ln -s ${mfcj6510dwlpr}/lib/cups/filter/brother_lpdwrapper_mfcj6510dw $out/lib/cups/filter/brother_lpdwrapper_mfcj6510dw + ##TODO: Use the cups filter instead of the LPR one. + #cp scripts/cupswrappermfcj6510dw $CPUSFILTERFOLDER/brother_lpdwrapper_mfcj6510dw + #sed -i -e '110,258!d' $CPUSFILTERFOLDER/brother_lpdwrapper_mfcj6510dw + #sed -i -e '33,40d' $CPUSFILTERFOLDER/brother_lpdwrapper_mfcj6510dw + #sed -i -e '34,35d' $CPUSFILTERFOLDER/brother_lpdwrapper_mfcj6510dw + #substituteInPlace $CPUSFILTERFOLDER/brother_lpdwrapper_mfcj6510dw \ + # --replace "/opt/brother/$``{device_model``}/$``{printer_model``}/lpd/filter$``{printer_model``}" \ + # "${mfcj6510dwlpr}/opt/brother/Printers/mfcj6510dw/lpd/filtermfcj6510dw" \ + # --replace "/opt/brother/Printers/$``{printer_model``}/inf/br$``{printer_model``}rc" \ + # "${mfcj6510dwlpr}/opt/brother/Printers/mfcj6510dw/inf/brmfcj6510dwrc" \ + # --replace "/opt/brother/$``{device_model``}/$``{printer_model``}/cupswrapper/brcupsconfpt1" \ + # "$out/opt/brother/Printers/mfcj6510dw/cupswrapper/brcupsconfpt1" \ + # --replace "/usr/share/cups/model/Brother/brother_" "$out/opt/brother/Printers/mfcj6510dw/cupswrapper/brother_" + #substituteInPlace $CPUSFILTERFOLDER/brother_lpdwrapper_mfcj6510dw \ + # --replace "$``{printer_model``}" "mfcj6510dw" \ + # --replace "$``{printer_name``}" "MFCJ6510DW" + ''; + + cleanPhase = '' + cd brcupsconfpt1 + make clean + ''; + + meta = with lib; { + homepage = "http://www.brother.com/"; + description = "Brother MFC-J6510DW CUPS wrapper driver"; + license = with licenses; gpl2; + platforms = with platforms; linux; + downloadPage = "http://support.brother.com/g/b/downloadlist.aspx?c=us&lang=en&prod=mfcj6510dw_all&os=128"; + maintainers = with maintainers; [ ramkromberg ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/mfcj6510dwlpr/default.nix b/nixpkgs/pkgs/misc/cups/drivers/mfcj6510dwlpr/default.nix new file mode 100644 index 000000000000..0af79443ef6d --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/mfcj6510dwlpr/default.nix @@ -0,0 +1,90 @@ +{ lib, stdenv, fetchurl, pkgsi686Linux, dpkg, makeWrapper, coreutils, gnused, gawk, file, cups, util-linux, xxd, runtimeShell +, ghostscript, a2ps }: + +# Why: +# The executable "brprintconf_mfcj6510dw" binary is looking for "/opt/brother/Printers/%s/inf/br%sfunc" and "/opt/brother/Printers/%s/inf/br%src". +# Whereby, %s is printf(3) string substitution for stdin's arg0 (the command's own filename) from the 10th char forwards, as a runtime dependency. +# e.g. Say the filename is "0123456789ABCDE", the runtime will be looking for /opt/brother/Printers/ABCDE/inf/brABCDEfunc. +# Presumably, the binary was designed to be deployed under the filename "printconf_mfcj6510dw", whereby it will search for "/opt/brother/Printers/mfcj6510dw/inf/brmfcj6510dwfunc". +# For NixOS, we want to change the string to the store path of brmfcj6510dwfunc and brmfcj6510dwrc but we're faced with two complications: +# 1. Too little room to specify the nix store path. We can't even take advantage of %s by renaming the file to the store path hash since the variable is too short and can't contain the whole hash. +# 2. The binary needs the directory it's running from to be r/w. +# What: +# As such, we strip the path and substitution altogether, leaving only "brmfcj6510dwfunc" and "brmfcj6510dwrc", while filling the leftovers with nulls. +# Fully null terminating the cstrings is necessary to keep the array the same size and preventing overflows. +# We then use a shell script to link and execute the binary, func and rc files in a temporary directory. +# How: +# In the package, we dump the raw binary as a string of search-able hex values using hexdump. We execute the substitution with sed. We then convert the hex values back to binary form using xxd. +# We also write a shell script that invoked "mktemp -d" to produce a r/w temporary directory and link what we need in the temporary directory. +# Result: +# The user can run brprintconf_mfcj6510dw in the shell. + +stdenv.mkDerivation rec { + pname = "mfcj6510dwlpr"; + version = "3.0.0-1"; + + src = fetchurl { + url = "https://download.brother.com/welcome/dlf006614/mfcj6510dwlpr-${version}.i386.deb"; + sha256 = "1ccvx393pqavsgzd8igrzlin5jrsf01d3acyvwqd1d0yz5jgqy6d"; + }; + + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ cups ghostscript dpkg a2ps ]; + + dontUnpack = true; + + brprintconf_mfcj6510dw_script = '' + #!${runtimeShell} + cd $(mktemp -d) + ln -s @out@/usr/bin/brprintconf_mfcj6510dw_patched brprintconf_mfcj6510dw_patched + ln -s @out@/opt/brother/Printers/mfcj6510dw/inf/brmfcj6510dwfunc brmfcj6510dwfunc + ln -s @out@/opt/brother/Printers/mfcj6510dw/inf/brmfcj6510dwrc brmfcj6510dwrc + ./brprintconf_mfcj6510dw_patched "$@" + ''; + + installPhase = '' + dpkg-deb -x $src $out + substituteInPlace $out/opt/brother/Printers/mfcj6510dw/lpd/filtermfcj6510dw \ + --replace /opt "$out/opt" + substituteInPlace $out/opt/brother/Printers/mfcj6510dw/lpd/psconvertij2 \ + --replace "GHOST_SCRIPT=`which gs`" "GHOST_SCRIPT=${ghostscript}/bin/gs" + substituteInPlace $out/opt/brother/Printers/mfcj6510dw/inf/setupPrintcapij \ + --replace "/opt/brother/Printers" "$out/opt/brother/Printers" \ + --replace "printcap.local" "printcap" + + patchelf --set-interpreter ${pkgsi686Linux.stdenv.cc.libc.out}/lib/ld-linux.so.2 \ + --set-rpath $out/opt/brother/Printers/mfcj6510dw/inf:$out/opt/brother/Printers/mfcj6510dw/lpd \ + $out/opt/brother/Printers/mfcj6510dw/lpd/brmfcj6510dwfilter + patchelf --set-interpreter ${pkgsi686Linux.stdenv.cc.libc.out}/lib/ld-linux.so.2 $out/usr/bin/brprintconf_mfcj6510dw + + #stripping the hardcoded path. + ${util-linux}/bin/hexdump -ve '1/1 "%.2X"' $out/usr/bin/brprintconf_mfcj6510dw | \ + sed 's.2F6F70742F62726F746865722F5072696E746572732F25732F696E662F6272257366756E63.62726d66636a36353130647766756e63000000000000000000000000000000000000000000.' | \ + sed 's.2F6F70742F62726F746865722F5072696E746572732F25732F696E662F627225737263.62726D66636A3635313064777263000000000000000000000000000000000000000000.' | \ + ${xxd}/bin/xxd -r -p > $out/usr/bin/brprintconf_mfcj6510dw_patched + chmod +x $out/usr/bin/brprintconf_mfcj6510dw_patched + #executing from current dir. segfaults if it's not r\w. + mkdir -p $out/bin + echo -n "$brprintconf_mfcj6510dw_script" > $out/bin/brprintconf_mfcj6510dw + chmod +x $out/bin/brprintconf_mfcj6510dw + substituteInPlace $out/bin/brprintconf_mfcj6510dw --replace @out@ $out + + mkdir -p $out/lib/cups/filter/ + ln -s $out/opt/brother/Printers/mfcj6510dw/lpd/filtermfcj6510dw $out/lib/cups/filter/brother_lpdwrapper_mfcj6510dw + + wrapProgram $out/opt/brother/Printers/mfcj6510dw/lpd/psconvertij2 \ + --prefix PATH ":" ${ lib.makeBinPath [ coreutils gnused gawk ] } + wrapProgram $out/opt/brother/Printers/mfcj6510dw/lpd/filtermfcj6510dw \ + --prefix PATH ":" ${ lib.makeBinPath [ coreutils gnused file ghostscript a2ps ] } + ''; + + meta = with lib; { + description = "Brother MFC-J6510DW LPR driver"; + downloadPage = "http://support.brother.com/g/b/downloadlist.aspx?c=us&lang=en&prod=mfcj6510dw_all&os=128"; + homepage = "http://www.brother.com/"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = with licenses; unfree; + maintainers = with maintainers; [ ramkromberg ]; + platforms = with platforms; linux; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/mfcl2700dncupswrapper/default.nix b/nixpkgs/pkgs/misc/cups/drivers/mfcl2700dncupswrapper/default.nix new file mode 100644 index 000000000000..0b145dfa3853 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/mfcl2700dncupswrapper/default.nix @@ -0,0 +1,44 @@ +{ coreutils, dpkg, fetchurl, gnugrep, gnused, makeWrapper, mfcl2700dnlpr, perl, lib, stdenv }: + +stdenv.mkDerivation rec { + pname = "mfcl2700dncupswrapper"; + version = "3.2.0-1"; + + src = fetchurl { + url = "https://download.brother.com/welcome/dlf102086/mfcl2700dncupswrapper-${version}.i386.deb"; + sha256 = "07w48mah0xbv4h8vsh1qd5cd4b463bx8y6gc5x9pfgsxsy6h6da1"; + }; + + nativeBuildInputs = [ dpkg makeWrapper ]; + + dontUnpack = true; + + installPhase = '' + dpkg-deb -x $src $out + + basedir=${mfcl2700dnlpr}/opt/brother/Printers/MFCL2700DN + dir=$out/opt/brother/Printers/MFCL2700DN + + substituteInPlace $dir/cupswrapper/brother_lpdwrapper_MFCL2700DN \ + --replace /usr/bin/perl ${perl}/bin/perl \ + --replace "basedir =~" "basedir = \"$basedir\"; #" \ + --replace "PRINTER =~" "PRINTER = \"MFCL2700DN\"; #" + + wrapProgram $dir/cupswrapper/brother_lpdwrapper_MFCL2700DN \ + --prefix PATH : ${lib.makeBinPath [ coreutils gnugrep gnused ]} + + mkdir -p $out/lib/cups/filter + mkdir -p $out/share/cups/model + + ln $dir/cupswrapper/brother_lpdwrapper_MFCL2700DN $out/lib/cups/filter + ln $dir/cupswrapper/brother-MFCL2700DN-cups-en.ppd $out/share/cups/model + ''; + + meta = { + description = "Brother MFC-L2700DN CUPS wrapper driver"; + homepage = "http://www.brother.com/"; + license = lib.licenses.gpl2Plus; + maintainers = [ lib.maintainers.tv ]; + platforms = lib.platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/mfcl2700dnlpr/default.nix b/nixpkgs/pkgs/misc/cups/drivers/mfcl2700dnlpr/default.nix new file mode 100644 index 000000000000..7e0c95582f53 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/mfcl2700dnlpr/default.nix @@ -0,0 +1,45 @@ +{ lib, stdenv, coreutils, dpkg, fetchurl, ghostscript, gnugrep, gnused, makeWrapper, perl, which }: + +stdenv.mkDerivation rec { + pname = "mfcl2700dnlpr"; + version = "3.2.0-1"; + + src = fetchurl { + url = "https://download.brother.com/welcome/dlf102085/${pname}-${version}.i386.deb"; + sha256 = "170qdzxlqikzvv2wphvfb37m19mn13az4aj88md87ka3rl5knk4m"; + }; + + nativeBuildInputs = [ dpkg makeWrapper ]; + + dontUnpack = true; + + installPhase = '' + dpkg-deb -x $src $out + + dir=$out/opt/brother/Printers/MFCL2700DN + + substituteInPlace $dir/lpd/filter_MFCL2700DN \ + --replace /usr/bin/perl ${perl}/bin/perl \ + --replace "BR_PRT_PATH =~" "BR_PRT_PATH = \"$dir\"; #" \ + --replace "PRINTER =~" "PRINTER = \"MFCL2700DN\"; #" + + wrapProgram $dir/lpd/filter_MFCL2700DN \ + --prefix PATH : ${lib.makeBinPath [ + coreutils ghostscript gnugrep gnused which + ]} + + interpreter=$(cat $NIX_CC/nix-support/dynamic-linker) + patchelf --set-interpreter "$interpreter" $dir/inf/braddprinter + patchelf --set-interpreter "$interpreter" $dir/lpd/brprintconflsr3 + patchelf --set-interpreter "$interpreter" $dir/lpd/rawtobr3 + ''; + + meta = { + description = "Brother MFC-L2700DN LPR driver"; + homepage = "http://www.brother.com/"; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + license = lib.licenses.unfree; + maintainers = [ lib.maintainers.tv ]; + platforms = [ "i686-linux" ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/mfcl2720dwcupswrapper/default.nix b/nixpkgs/pkgs/misc/cups/drivers/mfcl2720dwcupswrapper/default.nix new file mode 100644 index 000000000000..f30f9abae334 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/mfcl2720dwcupswrapper/default.nix @@ -0,0 +1,47 @@ +{ lib, stdenv, fetchurl, dpkg, makeWrapper, coreutils, gnugrep, gnused, perl, mfcl2720dwlpr }: + +stdenv.mkDerivation rec { + pname = "mfcl2720dwcupswrapper"; + version = "3.2.0-1"; + + src = fetchurl { + url = "https://download.brother.com/welcome/dlf101802/${pname}-${version}.i386.deb"; + sha256 = "6d131926ce22c51b1854d2b91e426cc7ecbf5d6dabd698ef51a417090e35c598"; + }; + + nativeBuildInputs = [ dpkg makeWrapper ]; + + dontUnpack = true; + + installPhase = '' + dpkg-deb -x $src $out + + basedir=${mfcl2720dwlpr}/opt/brother/Printers/MFCL2720DW + dir=$out/opt/brother/Printers/MFCL2720DW + + substituteInPlace $dir/cupswrapper/brother_lpdwrapper_MFCL2720DW \ + --replace /usr/bin/perl ${perl}/bin/perl \ + --replace "basedir =~" "basedir = \"$basedir\"; #" \ + --replace "PRINTER =~" "PRINTER = \"MFCL2720DW\"; #" + + substituteInPlace $dir/cupswrapper/paperconfigml1 \ + --replace /usr/bin/perl ${perl}/bin/perl + + wrapProgram $dir/cupswrapper/brother_lpdwrapper_MFCL2720DW \ + --prefix PATH : ${lib.makeBinPath [ coreutils gnugrep gnused ]} + + mkdir -p $out/lib/cups/filter + mkdir -p $out/share/cups/model + + ln $dir/cupswrapper/brother_lpdwrapper_MFCL2720DW $out/lib/cups/filter + ln $dir/cupswrapper/brother-MFCL2720DW-cups-en.ppd $out/share/cups/model + ''; + + meta = { + description = "Brother MFC-L2720DW CUPS wrapper driver"; + homepage = "http://www.brother.com/"; + license = lib.licenses.gpl2; + platforms = [ "x86_64-linux" "i686-linux" ]; + maintainers = [ lib.maintainers.xeji ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/mfcl2720dwlpr/default.nix b/nixpkgs/pkgs/misc/cups/drivers/mfcl2720dwlpr/default.nix new file mode 100644 index 000000000000..36600a4505aa --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/mfcl2720dwlpr/default.nix @@ -0,0 +1,46 @@ +{ pkgs, lib, stdenv, fetchurl, dpkg, makeWrapper, coreutils, ghostscript, gnugrep, gnused, which, perl }: + +stdenv.mkDerivation rec { + pname = "mfcl2720dwlpr"; + version = "3.2.0-1"; + + src = fetchurl { + url = "https://download.brother.com/welcome/dlf101801/${pname}-${version}.i386.deb"; + sha256 = "088217e9ad118ec1e7f3d3f8f60f3bd839fe2c7d7c1136b249e9ac648dc742af"; + }; + + nativeBuildInputs = [ dpkg makeWrapper ]; + + dontUnpack = true; + + installPhase = '' + dpkg-deb -x $src $out + + dir=$out/opt/brother/Printers/MFCL2720DW + + substituteInPlace $dir/lpd/filter_MFCL2720DW \ + --replace /usr/bin/perl ${perl}/bin/perl \ + --replace "BR_PRT_PATH =~" "BR_PRT_PATH = \"$dir\"; #" \ + --replace "PRINTER =~" "PRINTER = \"MFCL2720DW\"; #" + + wrapProgram $dir/lpd/filter_MFCL2720DW \ + --prefix PATH : ${lib.makeBinPath [ + coreutils ghostscript gnugrep gnused which + ]} + + # need to use i686 glibc here, these are 32bit proprietary binaries + interpreter=${pkgs.pkgsi686Linux.glibc}/lib/ld-linux.so.2 + patchelf --set-interpreter "$interpreter" $dir/inf/braddprinter + patchelf --set-interpreter "$interpreter" $dir/lpd/brprintconflsr3 + patchelf --set-interpreter "$interpreter" $dir/lpd/rawtobr3 + ''; + + meta = { + description = "Brother MFC-L2720DW lpr driver"; + homepage = "http://www.brother.com/"; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + license = lib.licenses.unfree; + platforms = [ "x86_64-linux" "i686-linux" ]; + maintainers = [ lib.maintainers.xeji ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/mfcl2740dwcupswrapper/default.nix b/nixpkgs/pkgs/misc/cups/drivers/mfcl2740dwcupswrapper/default.nix new file mode 100644 index 000000000000..2cad0ceba55b --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/mfcl2740dwcupswrapper/default.nix @@ -0,0 +1,45 @@ +{ lib, stdenv, fetchurl, dpkg, makeWrapper, coreutils, gnugrep, gnused, perl, mfcl2740dwlpr }: + +stdenv.mkDerivation rec { + pname = "mfcl2740dwcupswrapper"; + version = "3.2.0-1"; + + src = fetchurl { + url = "https://download.brother.com/welcome/dlf101726/${pname}-${version}.i386.deb"; + sha256 = "078453e19f20ab6c7fc4d63c3e09f162f3d1410c04c23a294b6ffbd720b35ffb"; + }; + + nativeBuildInputs = [ dpkg makeWrapper ]; + + unpackPhase = "dpkg-deb -x $src $out"; + + installPhase = '' + basedir=${mfcl2740dwlpr}/opt/brother/Printers/MFCL2740DW + dir=$out/opt/brother/Printers/MFCL2740DW + + substituteInPlace $dir/cupswrapper/brother_lpdwrapper_MFCL2740DW \ + --replace /usr/bin/perl ${perl}/bin/perl \ + --replace "basedir =~" "basedir = \"$basedir\"; #" \ + --replace "PRINTER =~" "PRINTER = \"MFCL2740DW\"; #" + + substituteInPlace $dir/cupswrapper/paperconfigml1 \ + --replace /usr/bin/perl ${perl}/bin/perl + + wrapProgram $dir/cupswrapper/brother_lpdwrapper_MFCL2740DW \ + --prefix PATH : ${lib.makeBinPath [ coreutils gnugrep gnused ]} + + mkdir -p $out/lib/cups/filter + mkdir -p $out/share/cups/model + + ln $dir/cupswrapper/brother_lpdwrapper_MFCL2740DW $out/lib/cups/filter + ln $dir/cupswrapper/brother-MFCL2740DW-cups-en.ppd $out/share/cups/model + ''; + + meta = { + description = "Brother MFC-L2740DW CUPS wrapper driver"; + homepage = "http://www.brother.com/"; + license = lib.licenses.gpl2; + platforms = [ "x86_64-linux" "i686-linux" ]; + maintainers = [ lib.maintainers.Enzime ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/mfcl2740dwlpr/default.nix b/nixpkgs/pkgs/misc/cups/drivers/mfcl2740dwlpr/default.nix new file mode 100644 index 000000000000..9c4dfa2f9978 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/mfcl2740dwlpr/default.nix @@ -0,0 +1,44 @@ +{ pkgsi686Linux, lib, stdenv, fetchurl, dpkg, makeWrapper, coreutils, ghostscript, gnugrep, gnused, which, perl }: + +stdenv.mkDerivation rec { + pname = "mfcl2740dwlpr"; + version = "3.2.0-1"; + + src = fetchurl { + url = "https://download.brother.com/welcome/dlf101727/${pname}-${version}.i386.deb"; + sha256 = "10a2bc672bd54e718b478f3afc7e47d451557f7d5513167d3ad349a3d00bffaf"; + }; + + nativeBuildInputs = [ dpkg makeWrapper ]; + + unpackPhase = "dpkg-deb -x $src $out"; + + installPhase = '' + dir=$out/opt/brother/Printers/MFCL2740DW + + substituteInPlace $dir/lpd/filter_MFCL2740DW \ + --replace /usr/bin/perl ${perl}/bin/perl \ + --replace "BR_PRT_PATH =~" "BR_PRT_PATH = \"$dir\"; #" \ + --replace "PRINTER =~" "PRINTER = \"MFCL2740DW\"; #" + + wrapProgram $dir/lpd/filter_MFCL2740DW \ + --prefix PATH : ${lib.makeBinPath [ + coreutils ghostscript gnugrep gnused which + ]} + + # need to use i686 glibc here, these are 32bit proprietary binaries + interpreter=${pkgsi686Linux.glibc}/lib/ld-linux.so.2 + patchelf --set-interpreter "$interpreter" $dir/inf/braddprinter + patchelf --set-interpreter "$interpreter" $dir/lpd/brprintconflsr3 + patchelf --set-interpreter "$interpreter" $dir/lpd/rawtobr3 + ''; + + meta = { + description = "Brother MFC-L2740DW lpr driver"; + homepage = "http://www.brother.com/"; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + license = lib.licenses.unfree; + platforms = [ "x86_64-linux" "i686-linux" ]; + maintainers = [ lib.maintainers.Enzime ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/mfcl2750dw/default.nix b/nixpkgs/pkgs/misc/cups/drivers/mfcl2750dw/default.nix new file mode 100644 index 000000000000..73753b0dea07 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/mfcl2750dw/default.nix @@ -0,0 +1,94 @@ +{ lib +, stdenv +, fetchurl +, dpkg +, autoPatchelfHook +, makeWrapper +, perl +, gnused +, ghostscript +, file +, coreutils +, gnugrep +, which +}: + +let + arches = [ "x86_64" "i686" "armv7l" ]; + + runtimeDeps = [ + ghostscript + file + gnused + gnugrep + coreutils + which + ]; +in + +stdenv.mkDerivation rec { + pname = "cups-brother-mfcl2750dw"; + version = "4.0.0-1"; + + nativeBuildInputs = [ dpkg makeWrapper autoPatchelfHook ]; + buildInputs = [ perl ]; + + dontUnpack = true; + + src = fetchurl { + url = "https://download.brother.com/welcome/dlf103530/mfcl2750dwpdrv-${version}.i386.deb"; + hash = "sha256-3uDwzLQTF8r1tsGZ7ChGhk4ryQmVsZYdUaj9eFaC0jc="; + }; + + installPhase = '' + runHook preInstall + + mkdir -p $out + dpkg-deb -x $src $out + + # delete unnecessary files for the current architecture + '' + lib.concatMapStrings (arch: '' + echo Deleting files for ${arch} + rm -r "$out/opt/brother/Printers/MFCL2750DW/lpd/${arch}" + '') (builtins.filter (arch: arch != stdenv.hostPlatform.linuxArch) arches) + '' + + # bundled scripts don't understand the arch subdirectories for some reason + ln -s \ + "$out/opt/brother/Printers/MFCL2750DW/lpd/${stdenv.hostPlatform.linuxArch}/"* \ + "$out/opt/brother/Printers/MFCL2750DW/lpd/" + + # Fix global references and replace auto discovery mechanism with hardcoded values + substituteInPlace $out/opt/brother/Printers/MFCL2750DW/lpd/lpdfilter \ + --replace /opt "$out/opt" \ + --replace "my \$BR_PRT_PATH =" "my \$BR_PRT_PATH = \"$out/opt/brother/Printers/MFCL2750DW\"; #" \ + --replace "PRINTER =~" "PRINTER = \"MFCL2750DW\"; #" + + # Make sure all executables have the necessary runtime dependencies available + find "$out" -executable -and -type f | while read file; do + wrapProgram "$file" --prefix PATH : "${lib.makeBinPath runtimeDeps}" + done + + # Symlink filter and ppd into a location where CUPS will discover it + mkdir -p $out/lib/cups/filter + mkdir -p $out/share/cups/model + + ln -s \ + $out/opt/brother/Printers/MFCL2750DW/lpd/lpdfilter \ + $out/lib/cups/filter/brother_lpdwrapper_MFCL2750DW + + ln -s \ + $out/opt/brother/Printers/MFCL2750DW/cupswrapper/brother-MFCL2750DW-cups-en.ppd \ + $out/share/cups/model/ + + runHook postInstall + ''; + + meta = with lib; { + homepage = "http://www.brother.com/"; + description = "Brother MFC-L2750DW printer driver"; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + license = licenses.unfree; + platforms = builtins.map (arch: "${arch}-linux") arches; + maintainers = [ maintainers.lovesegfault ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/mfcl8690cdwcupswrapper/default.nix b/nixpkgs/pkgs/misc/cups/drivers/mfcl8690cdwcupswrapper/default.nix new file mode 100644 index 000000000000..dbc6a8fc8e5e --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/mfcl8690cdwcupswrapper/default.nix @@ -0,0 +1,45 @@ +{ coreutils, dpkg, fetchurl, gnugrep, gnused, makeWrapper, +mfcl8690cdwlpr, perl, lib, stdenv}: + +stdenv.mkDerivation rec { + pname = "mfcl8690cdwcupswrapper"; + version = "1.4.0-0"; + + src = fetchurl { + url = "http://download.brother.com/welcome/dlf103250/${pname}-${version}.i386.deb"; + sha256 = "1bl9r8mmj4vnanwpfjqgq3c9lf2v46wp5k6r2n9iqprf7ldd1kb2"; + }; + + nativeBuildInputs = [ dpkg makeWrapper ]; + + dontUnpack = true; + + installPhase = '' + dpkg-deb -x $src $out + + basedir=${mfcl8690cdwlpr}/opt/brother/Printers/mfcl8690cdw + dir=$out/opt/brother/Printers/mfcl8690cdw + + substituteInPlace $dir/cupswrapper/brother_lpdwrapper_mfcl8690cdw \ + --replace /usr/bin/perl ${perl}/bin/perl \ + --replace "basedir =~" "basedir = \"$basedir/\"; #" \ + --replace "PRINTER =~" "PRINTER = \"mfcl8690cdw\"; #" + + wrapProgram $dir/cupswrapper/brother_lpdwrapper_mfcl8690cdw \ + --prefix PATH : ${lib.makeBinPath [ coreutils gnugrep gnused ]} + + mkdir -p $out/lib/cups/filter + mkdir -p $out/share/cups/model + + ln $dir/cupswrapper/brother_lpdwrapper_mfcl8690cdw $out/lib/cups/filter + ln $dir/cupswrapper/brother_mfcl8690cdw_printer_en.ppd $out/share/cups/model + ''; + + meta = { + description = "Brother MFC-L8690CDW CUPS wrapper driver"; + homepage = "http://www.brother.com/"; + license = lib.licenses.unfree; + platforms = lib.platforms.linux; + maintainers = [ ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/mfcl8690cdwlpr/default.nix b/nixpkgs/pkgs/misc/cups/drivers/mfcl8690cdwlpr/default.nix new file mode 100644 index 000000000000..f290b9563cc7 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/mfcl8690cdwlpr/default.nix @@ -0,0 +1,46 @@ +{ coreutils, dpkg, fetchurl, file, ghostscript, gnugrep, gnused, +makeWrapper, perl, pkgs, lib, stdenv, which }: + +stdenv.mkDerivation rec { + pname = "mfcl8690cdwlpr"; + version = "1.3.0-0"; + + src = fetchurl { + url = "http://download.brother.com/welcome/dlf103241/${pname}-${version}.i386.deb"; + sha256 = "0x8zd4b1psmw1znp2ibncs37xm5mljcy9yza2rx8jm8lp0a3l85v"; + }; + + nativeBuildInputs = [ dpkg makeWrapper ]; + + dontUnpack = true; + + installPhase = '' + dpkg-deb -x $src $out + + dir=$out/opt/brother/Printers/mfcl8690cdw + filter=$dir/lpd/filter_mfcl8690cdw + + substituteInPlace $filter \ + --replace /usr/bin/perl ${perl}/bin/perl \ + --replace "BR_PRT_PATH =~" "BR_PRT_PATH = \"$dir/\"; #" \ + --replace "PRINTER =~" "PRINTER = \"mfcl8690cdw\"; #" + + wrapProgram $filter \ + --prefix PATH : ${lib.makeBinPath [ + coreutils file ghostscript gnugrep gnused which + ]} + + # need to use i686 glibc here, these are 32bit proprietary binaries + interpreter=${pkgs.pkgsi686Linux.glibc}/lib/ld-linux.so.2 + patchelf --set-interpreter "$interpreter" $dir/lpd/brmfcl8690cdwfilter + ''; + + meta = { + description = "Brother MFC-L8690CDW LPR printer driver"; + homepage = "http://www.brother.com/"; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + license = lib.licenses.unfree; + maintainers = [ ]; + platforms = [ "x86_64-linux" "i686-linux" ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/samsung/1.00.36/default.nix b/nixpkgs/pkgs/misc/cups/drivers/samsung/1.00.36/default.nix new file mode 100644 index 000000000000..47700265231f --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/samsung/1.00.36/default.nix @@ -0,0 +1,120 @@ +{ lib, stdenv, fetchurl, cups, libusb-compat-0_1, libxml2, perl }: + +let + + arch = if stdenv.system == "x86_64-linux" + then "x86_64" + else "i386"; + +in stdenv.mkDerivation rec { + pname = "samsung-unified-linux-driver"; + version = "1.00.36"; + + src = fetchurl { + sha256 = "1a7ngd03x0bkdl7pszy5zqqic0plxvdxqm5w7klr6hbdskx1lir9"; + url = "http://www.bchemnet.com/suldr/driver/UnifiedLinuxDriver-${version}.tar.gz"; + }; + + buildInputs = [ + cups + libusb-compat-0_1 + libxml2 + perl + ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin + cp -R ${arch}/{gettext,pstosecps,rastertospl,smfpnetdiscovery,usbresetter} $out/bin + + mkdir -p $out/etc/sane.d/dll.d/ + install -m644 noarch/etc/smfp.conf $out/etc/sane.d + echo smfp >> $out/etc/sane.d/dll.d/smfp-scanner.conf + + mkdir -p $out/etc/smfp-common/scanner/share/ + install -m644 noarch/libsane-smfp.cfg $out/etc/smfp-common/scanner/share/ + install -m644 noarch/pagesize.xml $out/etc/smfp-common/scanner/share/ + + mkdir -p $out/etc/samsung/scanner/share/ + install -m644 noarch/oem.conf $out/etc/samsung/scanner/share/ + + mkdir -p $out/lib + install -m755 ${arch}/libscmssc.so* $out/lib + + mkdir -p $out/lib/cups/backend + ln -s $out/bin/smfpnetdiscovery $out/lib/cups/backend + + mkdir -p $out/lib/cups/filter + ln -s $out/bin/{pstosecps,rastertospl} $out/lib/cups/filter + ln -s $ghostscript/bin/gs $out/lib/cups/filter + + mkdir -p $out/lib/sane + install -m755 ${arch}/libsane-smfp.so* $out/lib/sane + ln -s libsane-smfp.so.1.0.1 $out/lib/sane/libsane-smfp.so.1 + ln -s libsane-smfp.so.1 $out/lib/sane/libsane-smfp.so + + perl -pi -e \ + 's|/opt/smfp-common/scanner/.usedby/|/tmp/\0\0fp-common/scanner/.usedby/|g' \ + $out/lib/sane/libsane-smfp.so.1.0.1 + perl -pi -e 's|/opt|/etc|g' \ + $out/lib/sane/libsane-smfp.so.1.0.1 \ + $out/bin/rastertospl \ + noarch/package_utils \ + noarch/pre_install.sh + + mkdir -p $out/lib/udev/rules.d + ( + OEM_FILE=noarch/oem.conf + INSTALL_LOG_FILE=/dev/null + . noarch/scripting_utils + . noarch/package_utils + . noarch/scanner-script.pkg + fill_full_template noarch/etc/smfp.rules.in $out/lib/udev/rules.d/60_smfp_samsung.rules + chmod -x $out/lib/udev/rules.d/60_smfp_samsung.rules + ) + + mkdir -p $out/share + cp -R noarch/share/* $out/share + gzip -9 $out/share/ppd/*.ppd + rm -r $out/share/locale/*/*/install.mo + + mkdir -p $out/share/cups + cd $out/share/cups + ln -s ../ppd . + ln -s ppd model + + runHook postInstall + ''; + + preFixup = '' + for bin in "$out/bin/"*; do + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$bin" + patchelf --set-rpath "$out/lib:${lib.getLib cups}/lib" "$bin" + done + + patchelf --set-rpath "$out/lib:${lib.getLib cups}/lib" "$out/lib/libscmssc.so" + patchelf --set-rpath "$out/lib:${libxml2.out}/lib:${libusb-compat-0_1.out}/lib" "$out/lib/sane/libsane-smfp.so.1.0.1" + + ln -s ${stdenv.cc.cc.lib}/lib/libstdc++.so.6 $out/lib/ + ''; + + # all binaries are already stripped + dontStrip = true; + + # we did this in prefixup already + dontPatchELF = true; + + meta = with lib; { + description = "Unified Linux Driver for Samsung printers and scanners"; + homepage = "http://www.bchemnet.com/suldr"; + downloadPage = "http://www.bchemnet.com/suldr/driver/"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = licenses.unfree; + + # Tested on linux-x86_64. Might work on linux-i386. + # Probably won't work on anything else. + platforms = platforms.linux; + maintainers = with maintainers; [ ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/samsung/1.00.36/module.nix b/nixpkgs/pkgs/misc/cups/drivers/samsung/1.00.36/module.nix new file mode 100644 index 000000000000..e98da9de2b60 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/samsung/1.00.36/module.nix @@ -0,0 +1,44 @@ +# the original samsung-unified-linux-driver_1_00_36 has some paths +# hardcoded in binary files +# +# nixos samsung-unified-linux-driver_1_00_36 tries to fix those paths +# by patching the binaries +# +# this module is needed to put the expected files in the new paths +# +# printing works without problems +# +# scanning works, except one detail: sometimes it is possible to scan +# more pages in sequence. most of the time though, scanning stops +# working after one page. this problem happens both with scanimage +# and simple-scan. errors indicate an I/O error. scanning works +# again after turning the device off and on. atm i have no idea how +# to fix this and no time to do more about it. +{config, pkgs, lib ? pkgs.lib, ...}: +with lib; +let + cfg = config.services.samsung-unified-linux-driver_1_00_36; + pkg = pkgs.samsung-unified-linux-driver_1_00_36; +in { + options = { + services.samsung-unified-linux-driver_1_00_36 = { + enable = mkEnableOption "enable samsung-unified-linux-driver_1_00_36"; + }; + }; + config = mkIf cfg.enable { + services.printing.drivers = [pkg]; + hardware.sane.extraBackends = [pkg]; + environment.etc = { + "samsung/scanner/share/oem.conf".source + = "${pkg}/etc/samsung/scanner/share/oem.conf"; + "smfp-common/scanner/share/libsane-smfp.cfg".source + = "${pkg}/etc/smfp-common/scanner/share/libsane-smfp.cfg"; + "smfp-common/scanner/share/pagesize.xml".source + = "${pkg}/etc/smfp-common/scanner/share/pagesize.xml"; + "sane.d/smfp.conf".source + = "${pkg}/etc/sane.d/smfp.conf"; + "sane.d/dll.d/smfp-scanner.conf".source + = "${pkg}/etc/sane.d/dll.d/smfp-scanner.conf"; + }; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/samsung/1.00.37.nix b/nixpkgs/pkgs/misc/cups/drivers/samsung/1.00.37.nix new file mode 100644 index 000000000000..59a210e6f534 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/samsung/1.00.37.nix @@ -0,0 +1,102 @@ +{ lib, stdenv, fetchurl, cups, libusb-compat-0_1, libxml2 }: + +let + + arch = if stdenv.hostPlatform.system == "x86_64-linux" + then "x86_64" + else "i386"; + +in stdenv.mkDerivation rec { + pname = "samsung-unified-linux-driver"; + version = "1.00.37"; + + src = fetchurl { + sha256 = "0r66l9zp0p1qgakh4j08hynwsr4lsgq5yrpxyr0x4ldvl0z2b1bb"; + url = "http://www.bchemnet.com/suldr/driver/UnifiedLinuxDriver-${version}.tar.gz"; + }; + + buildInputs = [ + cups + libusb-compat-0_1 + libxml2 + ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin + cp -R ${arch}/{gettext,pstosecps,rastertospl,smfpnetdiscovery,usbresetter} $out/bin + + mkdir -p $out/etc/sane.d/dll.d/ + install -m644 noarch/etc/smfp.conf $out/etc/sane.d + echo smfp >> $out/etc/sane.d/dll.d/smfp-scanner.conf + + mkdir -p $out/lib + install -m755 ${arch}/libscmssc.so* $out/lib + + mkdir -p $out/lib/cups/backend + ln -s $out/bin/smfpnetdiscovery $out/lib/cups/backend + + mkdir -p $out/lib/cups/filter + ln -s $out/bin/{pstosecps,rastertospl} $out/lib/cups/filter + ln -s $ghostscript/bin/gs $out/lib/cups/filter + + mkdir -p $out/lib/sane + install -m755 ${arch}/libsane-smfp.so* $out/lib/sane + ln -s libsane-smfp.so.1.0.1 $out/lib/sane/libsane-smfp.so.1 + ln -s libsane-smfp.so.1 $out/lib/sane/libsane-smfp.so + + mkdir -p $out/lib/udev/rules.d + ( + OEM_FILE=noarch/oem.conf + INSTALL_LOG_FILE=/dev/null + . noarch/scripting_utils + . noarch/package_utils + . noarch/scanner-script.pkg + fill_full_template noarch/etc/smfp.rules.in $out/lib/udev/rules.d/60_smfp_samsung.rules + chmod -x $out/lib/udev/rules.d/60_smfp_samsung.rules + ) + + mkdir -p $out/share + cp -R noarch/share/* $out/share + gzip -9 $out/share/ppd/*.ppd + rm -r $out/share/locale/*/*/install.mo + + mkdir -p $out/share/cups + cd $out/share/cups + ln -s ../ppd . + ln -s ppd model + + runHook postInstall + ''; + + preFixup = '' + for bin in "$out/bin/"*; do + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$bin" + patchelf --set-rpath "$out/lib:${lib.getLib cups}/lib" "$bin" + done + + patchelf --set-rpath "$out/lib:${lib.getLib cups}/lib" "$out/lib/libscmssc.so" + patchelf --set-rpath "$out/lib:${libxml2.out}/lib:${libusb-compat-0_1.out}/lib" "$out/lib/sane/libsane-smfp.so.1.0.1" + + ln -s ${stdenv.cc.cc.lib}/lib/libstdc++.so.6 $out/lib/ + ''; + + # all binaries are already stripped + dontStrip = true; + + # we did this in prefixup already + dontPatchELF = true; + + meta = with lib; { + description = "Unified Linux Driver for Samsung printers and scanners"; + homepage = "http://www.bchemnet.com/suldr"; + downloadPage = "http://www.bchemnet.com/suldr/driver/"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = licenses.unfree; + + # Tested on linux-x86_64. Might work on linux-i386. + # Probably won't work on anything else. + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/samsung/4.00.39/builder.sh b/nixpkgs/pkgs/misc/cups/drivers/samsung/4.00.39/builder.sh new file mode 100644 index 000000000000..829bc6509e06 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/samsung/4.00.39/builder.sh @@ -0,0 +1,36 @@ +if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; elif [ -f .attrs.sh ]; then . .attrs.sh; fi +source $stdenv/setup + +arch=$(uname -m) +echo "$arch" | egrep -q '^i[3456]86$' && arch=i386 +echo "Installing for $arch" + +unpackPhase +patchPhase + +set -v + +cd cdroot/Linux +mkdir -p $out/opt +cp -r $arch/at_root/* $out +cp -r $arch/at_opt/* $out/opt +#cp -r noarch/at_root/* $out +cp -r noarch/at_opt/* $out/opt + +cd $out +test -d usr/lib64 && ln -s usr/lib64 lib || + ln -s usr/lib lib +mkdir -p share/cups +cd share/cups +ln -s ../../opt/share/* . +ln -s ppd model + +cd $out/lib/cups/filter +for i in $(ls); do + echo "Patching $i..." + patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) $i || + echo "Couldn't set interpreter!" + patchelf --set-rpath $cups/lib:$gcc/lib:$glibc/lib $i # This might not be necessary. +done + +ln -s $ghostscript/bin/gs $out/lib/cups/filter diff --git a/nixpkgs/pkgs/misc/cups/drivers/samsung/4.01.17.nix b/nixpkgs/pkgs/misc/cups/drivers/samsung/4.01.17.nix new file mode 100644 index 000000000000..eaba99839f61 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/samsung/4.01.17.nix @@ -0,0 +1,96 @@ +# Tested on linux-x86_64. Might work on linux-i386. Probably won't work on anything else. + +# To use this driver in NixOS, add it to printing.drivers in configuration.nix. +# configuration.nix might look like this when you're done: +# { pkgs, ... }: { +# printing = { +# enable = true; +# drivers = [ pkgs.samsung-unified-linux-driver_4_01_17 ]; +# }; +# (more stuff) +# } +# (This advice was tested on the 1st November 2016.) + +{ lib +, stdenv +, cups +, libusb-compat-0_1 +, fetchurl +, patchPpdFilesHook +}: + +# Do not bump lightly! Visit <http://www.bchemnet.com/suldr/supported.html> +# to see what will break when upgrading. Consider a new versioned attribute. +let + installationPath = if stdenv.hostPlatform.system == "x86_64-linux" then "x86_64" else "i386"; + appendPath = lib.optionalString (stdenv.hostPlatform.system == "x86_64-linux") "64"; + libPath = lib.makeLibraryPath [ cups libusb-compat-0_1 ] + ":$out/lib:${stdenv.cc.cc.lib}/lib${appendPath}"; +in stdenv.mkDerivation rec { + pname = "samsung-UnifiedLinuxDriver"; + version = "4.01.17"; + + src = fetchurl { + url = "http://www.bchemnet.com/suldr/driver/UnifiedLinuxDriver-${version}.tar.gz"; + sha256 = "1vv3pzvqpg1dq3xjr8161x2yp3v7ca75vil56ranhw5pkjwq66x0"; + }; + + nativeBuildInputs = [ patchPpdFilesHook ]; + + dontPatchELF = true; + dontStrip = true; + + installPhase = '' + runHook preInstall + + cd Linux/${installationPath} + mkdir -p $out/lib/cups/{backend,filter} + install -Dm755 mfp $out/lib/cups/backend/ + install -Dm755 pstosecps pstospl pstosplc rastertospl rastertosplc $out/lib/cups/filter/ + install -Dm755 libscmssc.so $out/lib/ + + GLOBIGNORE=*.so + for exe in $out/lib/cups/**/*; do + echo "Patching $exe" + patchelf \ + --set-rpath ${libPath} \ + --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ + $exe + done + unset GLOBIGNORE + + install -v at_root/usr/lib${appendPath}/libmfp.so.1.0.1 $out/lib + cd $out/lib + ln -s -f libmfp.so.1.0.1 libmfp.so.1 + ln -s -f libmfp.so.1 libmfp.so + + for lib in $out/lib/*.so; do + echo "Patching $lib" + patchelf \ + --set-rpath ${libPath} \ + $lib + done + + mkdir -p $out/share/cups/model/samsung + cd - + cd ../noarch/at_opt/share/ppd + cp -r ./* $out/share/cups/model/samsung + + runHook postInstall + ''; + + ppdFileCommands = [ + "pstosecps" + "pstospl" + "pstosplc" + "rastertospl" + ]; + + meta = with lib; { + description = "Samsung's Linux printing drivers; includes binaries without source code"; + homepage = "http://www.samsung.com/"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = licenses.unfree; + platforms = platforms.linux; + maintainers = with maintainers; [ joko ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/splix/default.nix b/nixpkgs/pkgs/misc/cups/drivers/splix/default.nix new file mode 100644 index 000000000000..d3ae34a80ae5 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/splix/default.nix @@ -0,0 +1,54 @@ +{ lib, stdenv, fetchsvn, fetchurl, cups, cups-filters, jbigkit, zlib }: + +let + + color-profiles = stdenv.mkDerivation { + pname = "splix-color-profiles"; + version = "unstable-2007-06-25"; + + src = fetchurl { + url = "http://splix.ap2c.org/samsung_cms.tar.bz2"; + sha256 = "1156flics5m9m7a4hdmcc2nphbdyary6dfmbcrmsp9xb7ivsypdl"; + }; + + installPhase = '' + mkdir -p $out/share/cups/profiles/samsung + cp * $out/share/cups/profiles/samsung/ + ''; + }; + +in stdenv.mkDerivation rec { + pname = "splix-svn"; + version = "315"; + + src = fetchsvn { + # We build this from svn, because splix hasn't been in released in several years + # although the community has been adding some new printer models. + url = "svn://svn.code.sf.net/p/splix/code/splix"; + rev = version; + sha256 = "16wbm4xnz35ca3mw2iggf5f4jaxpyna718ia190ka6y4ah932jxl"; + }; + + postPatch = '' + mv -v *.ppd ppd/ + substituteInPlace src/pstoqpdl.cpp \ + --replace "RASTERDIR \"/\" RASTERTOQPDL" "\"$out/lib/cups/filter/rastertoqpdl\"" \ + --replace "RASTERDIR" "\"${cups-filters}/lib/cups/filter\"" \ + ''; + + makeFlags = [ + "CUPSFILTER=$(out)/lib/cups/filter" + "CUPSPPD=$(out)/share/cups/model" + "CUPSPROFILE=${color-profiles}/share/cups/profiles" + ]; + + buildInputs = [ cups zlib jbigkit ]; + + meta = with lib; { + description = "CUPS drivers for SPL (Samsung Printer Language) printers"; + homepage = "http://splix.ap2c.org"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = with maintainers; [ ]; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/drivers/zj-58/default.nix b/nixpkgs/pkgs/misc/cups/drivers/zj-58/default.nix new file mode 100644 index 000000000000..0e2534997e35 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/drivers/zj-58/default.nix @@ -0,0 +1,28 @@ +{lib, stdenv, fetchFromGitHub, cups}: + +stdenv.mkDerivation { + pname = "cups-zj-58"; + version = "2018-02-22"; + + src = fetchFromGitHub { + owner = "klirichek"; + repo = "zj-58"; + rev = "e4212cd"; + sha256 = "1w2qkspm4qqg5h8n6gmakzhiww7gag64chvy9kf89xsl3wsyp6pi"; + }; + + buildInputs = [ cups ]; + + installPhase = '' + install -D rastertozj $out/lib/cups/filter/rastertozj + install -D ZJ-58.ppd $out/share/cups/model/zjiang/ZJ-58.ppd + ''; + + meta = with lib; { + description = "CUPS filter for thermal printer Zjiang ZJ-58"; + homepage = "https://github.com/klirichek/zj-58"; + platforms = platforms.linux; + maintainers = with maintainers; [ makefu ]; + license = licenses.bsd2; + }; +} diff --git a/nixpkgs/pkgs/misc/cups/filters.nix b/nixpkgs/pkgs/misc/cups/filters.nix new file mode 100644 index 000000000000..c1654782db26 --- /dev/null +++ b/nixpkgs/pkgs/misc/cups/filters.nix @@ -0,0 +1,122 @@ +{ lib +, avahi +, bc +, coreutils +, cups +, dbus +, dejavu_fonts +, fetchurl +, fetchpatch +, fontconfig +, gawk +, ghostscript +, gnugrep +, gnused +, ijs +, libexif +, libjpeg +, liblouis +, libpng +, makeWrapper +, mupdf +, perl +, pkg-config +, poppler +, poppler_utils +, qpdf +, stdenv +, which +, withAvahi ? true +}: + +let + binPath = lib.makeBinPath [ bc coreutils gawk gnused gnugrep which ]; + +in +stdenv.mkDerivation rec { + pname = "cups-filters"; + version = "1.28.17"; + + src = fetchurl { + url = "https://github.com/OpenPrinting/cups-filters/releases/download/${version}/${pname}-${version}.tar.xz"; + hash = "sha256-Jwo3UqlgNoqpnUMftdNPQDmyrJQ8V22EBhLR2Bhcm7k="; + }; + + patches = [ + (fetchpatch { + name = "CVE-2023-24805.patch"; + url = "https://github.com/OpenPrinting/cups-filters/commit/93e60d3df358c0ae6f3dba79e1c9684657683d89.patch"; + hash = "sha256-KgWTYFr2uShL040azzE+KaNyBPy7Gs/hCnEgQmmPCys="; + }) + ]; + + nativeBuildInputs = [ pkg-config makeWrapper ]; + + buildInputs = [ + cups + dbus + fontconfig + ghostscript + ijs + libexif + libjpeg + liblouis # braille embosser support + libpng + mupdf + perl + poppler + poppler_utils + qpdf + ] ++ lib.optionals withAvahi [ avahi ]; + + configureFlags = [ + "--with-mutool-path=${mupdf}/bin/mutool" + "--with-pdftops=pdftops" + "--with-pdftops-path=${poppler_utils}/bin/pdftops" + "--with-gs-path=${ghostscript}/bin/gs" + "--with-pdftocairo-path=${poppler_utils}/bin/pdftocairo" + "--with-ippfind-path=${cups}/bin/ippfind" + "--enable-imagefilters" + "--with-rcdir=no" + "--with-shell=${stdenv.shell}" + "--with-test-font-path=${dejavu_fonts}/share/fonts/truetype/DejaVuSans.ttf" + "--localstatedir=/var" + "--sysconfdir=/etc" + ] ++ lib.optionals (!withAvahi) [ "--disable-avahi" ]; + + makeFlags = [ "CUPS_SERVERBIN=$(out)/lib/cups" "CUPS_DATADIR=$(out)/share/cups" "CUPS_SERVERROOT=$(out)/etc/cups" ]; + + # https://github.com/OpenPrinting/cups-filters/issues/512 + env.NIX_CFLAGS_COMPILE = "-std=c++17"; + + postConfigure = + '' + # Ensure that bannertopdf can find the PDF templates in + # $out. (By default, it assumes that cups and cups-filters are + # installed in the same prefix.) + substituteInPlace config.h --replace ${cups.out}/share/cups/data $out/share/cups/data + + # Ensure that gstoraster can find gs in $PATH. + substituteInPlace filter/gstoraster.c --replace execve execvpe + + # Patch shebangs of generated build scripts + patchShebangs filter + ''; + + postInstall = + '' + for i in $out/lib/cups/filter/*; do + wrapProgram "$i" --prefix PATH ':' ${binPath} + done + ''; + + enableParallelBuilding = true; + doCheck = true; + + meta = { + homepage = "http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups-filters"; + description = "Backends, filters, and other software that was once part of the core CUPS distribution but is no longer maintained by Apple Inc"; + license = lib.licenses.gpl2; + platforms = lib.platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/misc/documentation-highlighter/LICENSE b/nixpkgs/pkgs/misc/documentation-highlighter/LICENSE new file mode 100644 index 000000000000..2250cc7eca9b --- /dev/null +++ b/nixpkgs/pkgs/misc/documentation-highlighter/LICENSE @@ -0,0 +1,29 @@ +BSD 3-Clause License + +Copyright (c) 2006, Ivan Sagalaev. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/nixpkgs/pkgs/misc/documentation-highlighter/README.md b/nixpkgs/pkgs/misc/documentation-highlighter/README.md new file mode 100644 index 000000000000..569c90affed9 --- /dev/null +++ b/nixpkgs/pkgs/misc/documentation-highlighter/README.md @@ -0,0 +1,47 @@ +This file was generated with pkgs/misc/documentation-highlighter/update.sh + +# Highlight.js CDN Assets + +[![install size](https://packagephobia.now.sh/badge?p=highlight.js)](https://packagephobia.now.sh/result?p=highlight.js) + +**This package contains only the CDN build assets of highlight.js.** + +This may be what you want if you'd like to install the pre-built distributable highlight.js client-side assets via NPM. If you're wanting to use highlight.js mainly on the server-side you likely want the [highlight.js][1] package instead. + +To access these files via CDN:<br> +https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@latest/build/ + +**If you just want a single .js file with the common languages built-in: +<https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@latest/build/highlight.min.js>** + +--- + +## Highlight.js + +Highlight.js is a syntax highlighter written in JavaScript. It works in +the browser as well as on the server. It works with pretty much any +markup, doesn’t depend on any framework, and has automatic language +detection. + +If you'd like to read the full README:<br> +<https://github.com/highlightjs/highlight.js/blob/main/README.md> + +## License + +Highlight.js is released under the BSD License. See [LICENSE][7] file +for details. + +## Links + +The official site for the library is at <https://highlightjs.org/>. + +The Github project may be found at: <https://github.com/highlightjs/highlight.js> + +Further in-depth documentation for the API and other topics is at +<http://highlightjs.readthedocs.io/>. + +A list of the Core Team and contributors can be found in the [CONTRIBUTORS.md][8] file. + +[1]: https://www.npmjs.com/package/highlight.js +[7]: https://github.com/highlightjs/highlight.js/blob/main/LICENSE +[8]: https://github.com/highlightjs/highlight.js/blob/main/CONTRIBUTORS.md diff --git a/nixpkgs/pkgs/misc/documentation-highlighter/default.nix b/nixpkgs/pkgs/misc/documentation-highlighter/default.nix new file mode 100644 index 000000000000..3a7f5b21c69e --- /dev/null +++ b/nixpkgs/pkgs/misc/documentation-highlighter/default.nix @@ -0,0 +1,22 @@ +{ lib, runCommand }: +runCommand "documentation-highlighter" { + meta = { + description = "Highlight.js sources for the Nix Ecosystem's documentation"; + homepage = "https://highlightjs.org"; + license = lib.licenses.bsd3; + platforms = lib.platforms.all; + maintainers = [ lib.maintainers.grahamc ]; + }; + src = lib.sources.cleanSourceWith { + src = ./.; + filter = path: type: lib.elem (baseNameOf path) ([ + "highlight.pack.js" + "LICENSE" + "loader.js" + "mono-blue.css" + "README.md" + ]); + }; +} '' + cp -r "$src" "$out" +'' diff --git a/nixpkgs/pkgs/misc/documentation-highlighter/highlight.pack.js b/nixpkgs/pkgs/misc/documentation-highlighter/highlight.pack.js new file mode 100644 index 000000000000..b8008d3650f0 --- /dev/null +++ b/nixpkgs/pkgs/misc/documentation-highlighter/highlight.pack.js @@ -0,0 +1,345 @@ +/*! + Highlight.js v11.9.0 (git: b7ec4bfafc) + (c) 2006-2023 undefined and other contributors + License: BSD-3-Clause + */ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{ +const i=t[n],s=typeof i;"object"!==s&&"function"!==s||Object.isFrozen(i)||e(i) +})),t}class t{constructor(e){ +void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1} +ignoreMatch(){this.isMatchIgnored=!0}}function n(e){ +return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'") +}function i(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const s=e=>!!e.scope +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=n(e)}openNode(e){if(!s(e))return;const t=((e,{prefix:t})=>{ +if(e.startsWith("language:"))return e.replace("language:","language-") +;if(e.includes(".")){const n=e.split(".") +;return[`${t}${n.shift()}`,...n.map(((e,t)=>`${e}${"_".repeat(t+1)}`))].join(" ") +}return`${t}${e}`})(e.scope,{prefix:this.classPrefix});this.span(t)} +closeNode(e){s(e)&&(this.buffer+="</span>")}value(){return this.buffer}span(e){ +this.buffer+=`<span class="${e}">`}}const r=(e={})=>{const t={children:[]} +;return Object.assign(t,e),t};class a{constructor(){ +this.rootNode=r(),this.stack=[this.rootNode]}get top(){ +return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){ +this.top.children.push(e)}openNode(e){const t=r({scope:e}) +;this.add(t),this.stack.push(t)}closeNode(){ +if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){ +for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)} +walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e}static _collapse(e){ +"string"!=typeof e&&e.children&&(e.children.every((e=>"string"==typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{ +a._collapse(e)})))}}class c extends a{constructor(e){super(),this.options=e} +addText(e){""!==e&&this.add(e)}startScope(e){this.openNode(e)}endScope(){ +this.closeNode()}__addSublanguage(e,t){const n=e.root +;t&&(n.scope="language:"+t),this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){ +return this.closeAllNodes(),!0}}function l(e){ +return e?"string"==typeof e?e:e.source:null}function g(e){return h("(?=",e,")")} +function u(e){return h("(?:",e,")*")}function d(e){return h("(?:",e,")?")} +function h(...e){return e.map((e=>l(e))).join("")}function f(...e){const t=(e=>{ +const t=e[e.length-1] +;return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{} +})(e);return"("+(t.capture?"":"?:")+e.map((e=>l(e))).join("|")+")"} +function p(e){return RegExp(e.toString()+"|").exec("").length-1} +const b=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./ +;function m(e,{joinWith:t}){let n=0;return e.map((e=>{n+=1;const t=n +;let i=l(e),s="";for(;i.length>0;){const e=b.exec(i);if(!e){s+=i;break} +s+=i.substring(0,e.index), +i=i.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?s+="\\"+(Number(e[1])+t):(s+=e[0], +"("===e[0]&&n++)}return s})).map((e=>`(${e})`)).join(t)} +const E="[a-zA-Z]\\w*",x="[a-zA-Z_]\\w*",w="\\b\\d+(\\.\\d+)?",y="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",_="\\b(0b[01]+)",O={ +begin:"\\\\[\\s\\S]",relevance:0},v={scope:"string",begin:"'",end:"'", +illegal:"\\n",contains:[O]},k={scope:"string",begin:'"',end:'"',illegal:"\\n", +contains:[O]},N=(e,t,n={})=>{const s=i({scope:"comment",begin:e,end:t, +contains:[]},n);s.contains.push({scope:"doctag", +begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)", +end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0}) +;const o=f("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/) +;return s.contains.push({begin:h(/[ ]+/,"(",o,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),s +},S=N("//","$"),M=N("/\\*","\\*/"),R=N("#","$");var j=Object.freeze({ +__proto__:null,APOS_STRING_MODE:v,BACKSLASH_ESCAPE:O,BINARY_NUMBER_MODE:{ +scope:"number",begin:_,relevance:0},BINARY_NUMBER_RE:_,COMMENT:N, +C_BLOCK_COMMENT_MODE:M,C_LINE_COMMENT_MODE:S,C_NUMBER_MODE:{scope:"number", +begin:y,relevance:0},C_NUMBER_RE:y,END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}}),HASH_COMMENT_MODE:R,IDENT_RE:E, +MATCH_NOTHING_RE:/\b\B/,METHOD_GUARD:{begin:"\\.\\s*"+x,relevance:0}, +NUMBER_MODE:{scope:"number",begin:w,relevance:0},NUMBER_RE:w, +PHRASAL_WORDS_MODE:{ +begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/ +},QUOTE_STRING_MODE:k,REGEXP_MODE:{scope:"regexp",begin:/\/(?=[^/\n]*\/)/, +end:/\/[gimuy]*/,contains:[O,{begin:/\[/,end:/\]/,relevance:0,contains:[O]}]}, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=h(t,/.*\b/,e.binary,/\b.*/)),i({scope:"meta",begin:t, +end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)}, +TITLE_MODE:{scope:"title",begin:E,relevance:0},UNDERSCORE_IDENT_RE:x, +UNDERSCORE_TITLE_MODE:{scope:"title",begin:x,relevance:0}});function A(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function I(e,t){ +void 0!==e.className&&(e.scope=e.className,delete e.className)}function T(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=A,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function L(e,t){ +Array.isArray(e.illegal)&&(e.illegal=f(...e.illegal))}function B(e,t){ +if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function P(e,t){ +void 0===e.relevance&&(e.relevance=1)}const D=(e,t)=>{if(!e.beforeMatch)return +;if(e.starts)throw Error("beforeMatch cannot be used with starts") +;const n=Object.assign({},e);Object.keys(e).forEach((t=>{delete e[t] +})),e.keywords=n.keywords,e.begin=h(n.beforeMatch,g(n.begin)),e.starts={ +relevance:0,contains:[Object.assign(n,{endsParent:!0})] +},e.relevance=0,delete n.beforeMatch +},H=["of","and","for","in","not","or","if","then","parent","list","value"],C="keyword" +;function $(e,t,n=C){const i=Object.create(null) +;return"string"==typeof e?s(n,e.split(" ")):Array.isArray(e)?s(n,e):Object.keys(e).forEach((n=>{ +Object.assign(i,$(e[n],t,n))})),i;function s(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;i[n[0]]=[e,U(n[0],n[1])]}))}}function U(e,t){ +return t?Number(t):(e=>H.includes(e.toLowerCase()))(e)?0:1}const z={},W=e=>{ +console.error(e)},X=(e,...t)=>{console.log("WARN: "+e,...t)},G=(e,t)=>{ +z[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),z[`${e}/${t}`]=!0) +},K=Error();function F(e,t,{key:n}){let i=0;const s=e[n],o={},r={} +;for(let e=1;e<=t.length;e++)r[e+i]=s[e],o[e+i]=!0,i+=p(t[e-1]) +;e[n]=r,e[n]._emit=o,e[n]._multi=!0}function Z(e){(e=>{ +e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope, +delete e.scope)})(e),"string"==typeof e.beginScope&&(e.beginScope={ +_wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope +}),(e=>{if(Array.isArray(e.begin)){ +if(e.skip||e.excludeBegin||e.returnBegin)throw W("skip, excludeBegin, returnBegin not compatible with beginScope: {}"), +K +;if("object"!=typeof e.beginScope||null===e.beginScope)throw W("beginScope must be object"), +K;F(e,e.begin,{key:"beginScope"}),e.begin=m(e.begin,{joinWith:""})}})(e),(e=>{ +if(Array.isArray(e.end)){ +if(e.skip||e.excludeEnd||e.returnEnd)throw W("skip, excludeEnd, returnEnd not compatible with endScope: {}"), +K +;if("object"!=typeof e.endScope||null===e.endScope)throw W("endScope must be object"), +K;F(e,e.end,{key:"endScope"}),e.end=m(e.end,{joinWith:""})}})(e)}function V(e){ +function t(t,n){ +return RegExp(l(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":"")) +}class n{constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=p(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null) +;const e=this.regexes.map((e=>e[1]));this.matcherRe=t(m(e,{joinWith:"|" +}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex +;const t=this.matcherRe.exec(e);if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),i=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,i)}}class s{constructor(){ +this.rules=[],this.multiRegexes=[], +this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){ +if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=i(e.classNameAliases||{}),function n(o,r){const a=o +;if(o.isCompiled)return a +;[I,B,Z,D].forEach((e=>e(o,r))),e.compilerExtensions.forEach((e=>e(o,r))), +o.__beforeBegin=null,[T,L,P].forEach((e=>e(o,r))),o.isCompiled=!0;let c=null +;return"object"==typeof o.keywords&&o.keywords.$pattern&&(o.keywords=Object.assign({},o.keywords), +c=o.keywords.$pattern, +delete o.keywords.$pattern),c=c||/\w+/,o.keywords&&(o.keywords=$(o.keywords,e.case_insensitive)), +a.keywordPatternRe=t(c,!0), +r&&(o.begin||(o.begin=/\B|\b/),a.beginRe=t(a.begin),o.end||o.endsWithParent||(o.end=/\B|\b/), +o.end&&(a.endRe=t(a.end)), +a.terminatorEnd=l(a.end)||"",o.endsWithParent&&r.terminatorEnd&&(a.terminatorEnd+=(o.end?"|":"")+r.terminatorEnd)), +o.illegal&&(a.illegalRe=t(o.illegal)), +o.contains||(o.contains=[]),o.contains=[].concat(...o.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>i(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:q(e)?i(e,{ +starts:e.starts?i(e.starts):null +}):Object.isFrozen(e)?i(e):e))("self"===e?o:e)))),o.contains.forEach((e=>{n(e,a) +})),o.starts&&n(o.starts,r),a.matcher=(e=>{const t=new s +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(a),a}(e)}function q(e){ +return!!e&&(e.endsWithParent||q(e.starts))}class J extends Error{ +constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}} +const Y=n,Q=i,ee=Symbol("nomatch"),te=n=>{ +const i=Object.create(null),s=Object.create(null),o=[];let r=!0 +;const a="Could not find the language '{}', did you forget to load/include a language module?",l={ +disableAutodetect:!0,name:"Plain text",contains:[]};let p={ +ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +cssSelector:"pre code",languages:null,__emitter:c};function b(e){ +return p.noHighlightRe.test(e)}function m(e,t,n){let i="",s="" +;"object"==typeof t?(i=e, +n=t.ignoreIllegals,s=t.language):(G("10.7.0","highlight(lang, code, ...args) has been deprecated."), +G("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"), +s=e,i=t),void 0===n&&(n=!0);const o={code:i,language:s};N("before:highlight",o) +;const r=o.result?o.result:E(o.language,o.code,n) +;return r.code=o.code,N("after:highlight",r),r}function E(e,n,s,o){ +const c=Object.create(null);function l(){if(!N.keywords)return void M.addText(R) +;let e=0;N.keywordPatternRe.lastIndex=0;let t=N.keywordPatternRe.exec(R),n="" +;for(;t;){n+=R.substring(e,t.index) +;const s=_.case_insensitive?t[0].toLowerCase():t[0],o=(i=s,N.keywords[i]);if(o){ +const[e,i]=o +;if(M.addText(n),n="",c[s]=(c[s]||0)+1,c[s]<=7&&(j+=i),e.startsWith("_"))n+=t[0];else{ +const n=_.classNameAliases[e]||e;u(t[0],n)}}else n+=t[0] +;e=N.keywordPatternRe.lastIndex,t=N.keywordPatternRe.exec(R)}var i +;n+=R.substring(e),M.addText(n)}function g(){null!=N.subLanguage?(()=>{ +if(""===R)return;let e=null;if("string"==typeof N.subLanguage){ +if(!i[N.subLanguage])return void M.addText(R) +;e=E(N.subLanguage,R,!0,S[N.subLanguage]),S[N.subLanguage]=e._top +}else e=x(R,N.subLanguage.length?N.subLanguage:null) +;N.relevance>0&&(j+=e.relevance),M.__addSublanguage(e._emitter,e.language) +})():l(),R=""}function u(e,t){ +""!==e&&(M.startScope(t),M.addText(e),M.endScope())}function d(e,t){let n=1 +;const i=t.length-1;for(;n<=i;){if(!e._emit[n]){n++;continue} +const i=_.classNameAliases[e[n]]||e[n],s=t[n];i?u(s,i):(R=s,l(),R=""),n++}} +function h(e,t){ +return e.scope&&"string"==typeof e.scope&&M.openNode(_.classNameAliases[e.scope]||e.scope), +e.beginScope&&(e.beginScope._wrap?(u(R,_.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap), +R=""):e.beginScope._multi&&(d(e.beginScope,t),R="")),N=Object.create(e,{parent:{ +value:N}}),N}function f(e,n,i){let s=((e,t)=>{const n=e&&e.exec(t) +;return n&&0===n.index})(e.endRe,i);if(s){if(e["on:end"]){const i=new t(e) +;e["on:end"](n,i),i.isMatchIgnored&&(s=!1)}if(s){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return f(e.parent,n,i)}function b(e){ +return 0===N.matcher.regexIndex?(R+=e[0],1):(T=!0,0)}function m(e){ +const t=e[0],i=n.substring(e.index),s=f(N,e,i);if(!s)return ee;const o=N +;N.endScope&&N.endScope._wrap?(g(), +u(t,N.endScope._wrap)):N.endScope&&N.endScope._multi?(g(), +d(N.endScope,e)):o.skip?R+=t:(o.returnEnd||o.excludeEnd||(R+=t), +g(),o.excludeEnd&&(R=t));do{ +N.scope&&M.closeNode(),N.skip||N.subLanguage||(j+=N.relevance),N=N.parent +}while(N!==s.parent);return s.starts&&h(s.starts,e),o.returnEnd?0:t.length} +let w={};function y(i,o){const a=o&&o[0];if(R+=i,null==a)return g(),0 +;if("begin"===w.type&&"end"===o.type&&w.index===o.index&&""===a){ +if(R+=n.slice(o.index,o.index+1),!r){const t=Error(`0 width match regex (${e})`) +;throw t.languageName=e,t.badRule=w.rule,t}return 1} +if(w=o,"begin"===o.type)return(e=>{ +const n=e[0],i=e.rule,s=new t(i),o=[i.__beforeBegin,i["on:begin"]] +;for(const t of o)if(t&&(t(e,s),s.isMatchIgnored))return b(n) +;return i.skip?R+=n:(i.excludeBegin&&(R+=n), +g(),i.returnBegin||i.excludeBegin||(R=n)),h(i,e),i.returnBegin?0:n.length})(o) +;if("illegal"===o.type&&!s){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(N.scope||"<unnamed>")+'"') +;throw e.mode=N,e}if("end"===o.type){const e=m(o);if(e!==ee)return e} +if("illegal"===o.type&&""===a)return 1 +;if(I>1e5&&I>3*o.index)throw Error("potential infinite loop, way more iterations than matches") +;return R+=a,a.length}const _=O(e) +;if(!_)throw W(a.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const v=V(_);let k="",N=o||v;const S={},M=new p.__emitter(p);(()=>{const e=[] +;for(let t=N;t!==_;t=t.parent)t.scope&&e.unshift(t.scope) +;e.forEach((e=>M.openNode(e)))})();let R="",j=0,A=0,I=0,T=!1;try{ +if(_.__emitTokens)_.__emitTokens(n,M);else{for(N.matcher.considerAll();;){ +I++,T?T=!1:N.matcher.considerAll(),N.matcher.lastIndex=A +;const e=N.matcher.exec(n);if(!e)break;const t=y(n.substring(A,e.index),e) +;A=e.index+t}y(n.substring(A))}return M.finalize(),k=M.toHTML(),{language:e, +value:k,relevance:j,illegal:!1,_emitter:M,_top:N}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{language:e,value:Y(n), +illegal:!0,relevance:0,_illegalBy:{message:t.message,index:A, +context:n.slice(A-100,A+100),mode:t.mode,resultSoFar:k},_emitter:M};if(r)return{ +language:e,value:Y(n),illegal:!1,relevance:0,errorRaised:t,_emitter:M,_top:N} +;throw t}}function x(e,t){t=t||p.languages||Object.keys(i);const n=(e=>{ +const t={value:Y(e),illegal:!1,relevance:0,_top:l,_emitter:new p.__emitter(p)} +;return t._emitter.addText(e),t})(e),s=t.filter(O).filter(k).map((t=>E(t,e,!1))) +;s.unshift(n);const o=s.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(O(e.language).supersetOf===t.language)return 1 +;if(O(t.language).supersetOf===e.language)return-1}return 0})),[r,a]=o,c=r +;return c.secondBest=a,c}function w(e){let t=null;const n=(e=>{ +let t=e.className+" ";t+=e.parentNode?e.parentNode.className:"" +;const n=p.languageDetectRe.exec(t);if(n){const t=O(n[1]) +;return t||(X(a.replace("{}",n[1])), +X("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"} +return t.split(/\s+/).find((e=>b(e)||O(e)))})(e);if(b(n))return +;if(N("before:highlightElement",{el:e,language:n +}),e.dataset.highlighted)return void console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",e) +;if(e.children.length>0&&(p.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."), +console.warn("https://github.com/highlightjs/highlight.js/wiki/security"), +console.warn("The element with unescaped HTML:"), +console.warn(e)),p.throwUnescapedHTML))throw new J("One of your code blocks includes unescaped HTML.",e.innerHTML) +;t=e;const i=t.textContent,o=n?m(i,{language:n,ignoreIllegals:!0}):x(i) +;e.innerHTML=o.value,e.dataset.highlighted="yes",((e,t,n)=>{const i=t&&s[t]||n +;e.classList.add("hljs"),e.classList.add("language-"+i) +})(e,n,o.language),e.result={language:o.language,re:o.relevance, +relevance:o.relevance},o.secondBest&&(e.secondBest={ +language:o.secondBest.language,relevance:o.secondBest.relevance +}),N("after:highlightElement",{el:e,result:o,text:i})}let y=!1;function _(){ +"loading"!==document.readyState?document.querySelectorAll(p.cssSelector).forEach(w):y=!0 +}function O(e){return e=(e||"").toLowerCase(),i[e]||i[s[e]]} +function v(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach((e=>{ +s[e.toLowerCase()]=t}))}function k(e){const t=O(e) +;return t&&!t.disableAutodetect}function N(e,t){const n=e;o.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +y&&_()}),!1),Object.assign(n,{highlight:m,highlightAuto:x,highlightAll:_, +highlightElement:w, +highlightBlock:e=>(G("10.7.0","highlightBlock will be removed entirely in v12.0"), +G("10.7.0","Please use highlightElement now."),w(e)),configure:e=>{p=Q(p,e)}, +initHighlighting:()=>{ +_(),G("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")}, +initHighlightingOnLoad:()=>{ +_(),G("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.") +},registerLanguage:(e,t)=>{let s=null;try{s=t(n)}catch(t){ +if(W("Language definition for '{}' could not be registered.".replace("{}",e)), +!r)throw t;W(t),s=l} +s.name||(s.name=e),i[e]=s,s.rawDefinition=t.bind(null,n),s.aliases&&v(s.aliases,{ +languageName:e})},unregisterLanguage:e=>{delete i[e] +;for(const t of Object.keys(s))s[t]===e&&delete s[t]}, +listLanguages:()=>Object.keys(i),getLanguage:O,registerAliases:v, +autoDetection:k,inherit:Q,addPlugin:e=>{(e=>{ +e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{ +e["before:highlightBlock"](Object.assign({block:t.el},t)) +}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{ +e["after:highlightBlock"](Object.assign({block:t.el},t))})})(e),o.push(e)}, +removePlugin:e=>{const t=o.indexOf(e);-1!==t&&o.splice(t,1)}}),n.debugMode=()=>{ +r=!1},n.safeMode=()=>{r=!0},n.versionString="11.9.0",n.regex={concat:h, +lookahead:g,either:f,optional:d,anyNumberOfTimes:u} +;for(const t in j)"object"==typeof j[t]&&e(j[t]);return Object.assign(n,j),n +},ne=te({});return ne.newInstance=()=>te({}),ne}() +;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);/*! `bash` grammar compiled for Highlight.js 11.9.0 */ +(()=>{var e=(()=>{"use strict";return e=>{const s=e.regex,t={},n={begin:/\$\{/, +end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]};Object.assign(t,{ +className:"variable",variants:[{ +begin:s.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},n]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE] +},i=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),c={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},o={className:"string",begin:/"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,t,a]};a.contains.push(o);const r={begin:/\$?\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t] +},l=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),m={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{ +name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/, +keyword:["if","then","else","elif","fi","for","while","until","in","do","done","case","esac","function","select"], +literal:["true","false"], +built_in:["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset","alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias","set","shopt","autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp","chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"] +},contains:[l,e.SHEBANG(),m,r,i,c,{match:/(\/[a-z._-]+)+/},o,{match:/\\"/},{ +className:"string",begin:/'/,end:/'/},{match:/\\'/},t]}}})() +;hljs.registerLanguage("bash",e)})();/*! `nix` grammar compiled for Highlight.js 11.9.0 */ +(()=>{var e=(()=>{"use strict";return e=>{const n={ +keyword:["rec","with","let","in","inherit","assert","if","else","then"], +literal:["true","false","or","and","null"], +built_in:["import","abort","baseNameOf","dirOf","isNull","builtins","map","removeAttrs","throw","toString","derivation"] +},s={className:"subst",begin:/\$\{/,end:/\}/,keywords:n},a={className:"string", +contains:[{className:"char.escape",begin:/''\$/},s],variants:[{begin:"''", +end:"''"},{begin:'"',end:'"'}] +},i=[e.NUMBER_MODE,e.HASH_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,{ +begin:/[a-zA-Z0-9-_]+(\s*=)/,returnBegin:!0,relevance:0,contains:[{ +className:"attr",begin:/\S+/,relevance:.2}]}];return s.contains=i,{name:"Nix", +aliases:["nixos"],keywords:n,contains:i}}})();hljs.registerLanguage("nix",e) +})();/*! `shell` grammar compiled for Highlight.js 11.9.0 */ +(()=>{var s=(()=>{"use strict";return s=>({name:"Shell Session", +aliases:["console","shellsession"],contains:[{className:"meta.prompt", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})();hljs.registerLanguage("shell",s)})(); \ No newline at end of file diff --git a/nixpkgs/pkgs/misc/documentation-highlighter/loader.js b/nixpkgs/pkgs/misc/documentation-highlighter/loader.js new file mode 100644 index 000000000000..cf0fdac574dd --- /dev/null +++ b/nixpkgs/pkgs/misc/documentation-highlighter/loader.js @@ -0,0 +1,6 @@ +/* This file is NOT part of highlight.js */ +document.addEventListener('DOMContentLoaded', (event) => { + document.querySelectorAll('.programlisting, .screen').forEach((element) => { + hljs.highlightElement(element); + }); +}); diff --git a/nixpkgs/pkgs/misc/documentation-highlighter/mono-blue.css b/nixpkgs/pkgs/misc/documentation-highlighter/mono-blue.css new file mode 100644 index 000000000000..bc9bceae4b10 --- /dev/null +++ b/nixpkgs/pkgs/misc/documentation-highlighter/mono-blue.css @@ -0,0 +1,56 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + Five-color theme from a single blue hue. +*/ +.hljs { + background: #eaeef3; + color: #00193a +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-title, +.hljs-section, +.hljs-doctag, +.hljs-name, +.hljs-strong { + font-weight: bold +} +.hljs-comment { + color: #738191 +} +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-addition, +.hljs-tag, +.hljs-quote, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #0048ab +} +.hljs-meta, +.hljs-subst, +.hljs-symbol, +.hljs-regexp, +.hljs-attribute, +.hljs-deletion, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-bullet { + color: #4c81c9 +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/nixpkgs/pkgs/misc/documentation-highlighter/update.sh b/nixpkgs/pkgs/misc/documentation-highlighter/update.sh new file mode 100755 index 000000000000..8d44e9ddd9a1 --- /dev/null +++ b/nixpkgs/pkgs/misc/documentation-highlighter/update.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p curl -p unzip + +set -eu +set -o pipefail + +root=$(pwd) + +if [ ! -f "./update.sh" ]; then + echo "Please run this script from within pkgs/misc/documentation-highlighter/!" + exit 1 +fi + +scratch=$(mktemp -d -t tmp.XXXXXXXXXX) +function finish { + rm -rf "$scratch" +} +trap finish EXIT + + +mkdir $scratch/src +cd $scratch/src + +curl \ + -X POST \ + -H 'Content-Type: application/json' \ + --data-raw '{ + "api": 2, + "languages": ["bash", "nix", "shell"] + }' \ + https://highlightjs.org/api/download > $scratch/out.zip + + +unzip "$scratch/out.zip" +out="$root/" +mkdir -p "$out" +cp ./highlight.min.js "$out/highlight.pack.js" +cp ./{LICENSE,styles/mono-blue.css} "$out" + +( + echo "This file was generated with pkgs/misc/documentation-highlighter/update.sh" + echo "" + cat README.md +) > "$out/README.md" diff --git a/nixpkgs/pkgs/misc/drivers/argononed/default.nix b/nixpkgs/pkgs/misc/drivers/argononed/default.nix new file mode 100644 index 000000000000..5fa28c17c529 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/argononed/default.nix @@ -0,0 +1,48 @@ +{ lib, stdenv, fetchFromGitLab, dtc, installShellFiles }: + +stdenv.mkDerivation rec { + pname = "argononed"; + version = "unstable-2022-03-26"; + + src = fetchFromGitLab { + owner = "DarkElvenAngel"; + repo = pname; + rev = "97c4fa07fc2c09ffc3bd86e0f6319d50fa639578"; + sha256 = "sha256-5/xUYbprRiwD+FN8V2cUpHxnTbBkEsFG2wfsEXrCrgQ="; + }; + + patches = [ ./fix-hardcoded-reboot-poweroff-paths.patch ]; + + postPatch = '' + patchShebangs configure + ''; + + nativeBuildInputs = [ installShellFiles ]; + + buildInputs = [ dtc ]; + + installPhase = '' + runHook preInstall + + install -Dm755 build/argononed $out/bin/argononed + install -Dm755 build/argonone-cli $out/bin/argonone-cli + install -Dm755 build/argonone-shutdown $out/lib/systemd/system-shutdown/argonone-shutdown + install -Dm644 build/argonone.dtbo $out/boot/overlays/argonone.dtbo + + install -Dm644 OS/_common/argononed.service $out/lib/systemd/system/argononed.service + install -Dm644 OS/_common/argononed.logrotate $out/etc/logrotate.d/argononed + install -Dm644 LICENSE $out/share/argononed/LICENSE + + installShellCompletion --bash --name argonone-cli OS/_common/argonone-cli-complete.bash + + runHook postInstall + ''; + + meta = with lib; { + homepage = "https://gitlab.com/DarkElvenAngel/argononed"; + description = "A replacement daemon for the Argon One Raspberry Pi case"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = [ maintainers.misterio77 ]; + }; +} diff --git a/nixpkgs/pkgs/misc/drivers/argononed/fix-hardcoded-reboot-poweroff-paths.patch b/nixpkgs/pkgs/misc/drivers/argononed/fix-hardcoded-reboot-poweroff-paths.patch new file mode 100644 index 000000000000..88bcb6ddd25e --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/argononed/fix-hardcoded-reboot-poweroff-paths.patch @@ -0,0 +1,18 @@ +--- a/src/argononed.c ++++ b/src/argononed.c +@@ -783,13 +783,13 @@ + { + log_message(LOG_DEBUG, "EXEC REBOOT"); + sync(); +- system("/sbin/reboot"); ++ system("/run/current-system/sw/bin/reboot"); + } + if (count >= 39 && count <= 41) + { + log_message(LOG_DEBUG, "EXEC SHUTDOWN"); + sync(); +- system("/sbin/poweroff"); ++ system("/run/current-system/sw/bin/poweroff"); + } + #else + log_message(LOG_INFO,"Daemon Ready"); diff --git a/nixpkgs/pkgs/misc/drivers/dell-530cdn/default.nix b/nixpkgs/pkgs/misc/drivers/dell-530cdn/default.nix new file mode 100644 index 000000000000..9cabd8fa3396 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/dell-530cdn/default.nix @@ -0,0 +1,13 @@ +{ runCommand, fetchurl, rpm, cpio }: let + version = "1.3-1"; + + src = fetchurl { + url = "http://downloads.dell.com/printer/Dell-5130cdn-Color-Laser-${version}.noarch.rpm"; + sha256 = "0pj32sj6jcdnpa5v75af0hnvx4z0ky0m1k2522cfdx4cb1r2lna9"; + }; +in runCommand "Dell-5130cdn-Color-Laser-1.3-1" {} '' + mkdir -p usr/share/cups/model + ${rpm}/bin/rpm2cpio ${src} | ${cpio}/bin/cpio -i + mkdir -p $out/share/ppd + mv usr/share/cups/model/Dell $out/share/ppd +'' diff --git a/nixpkgs/pkgs/misc/drivers/epkowa/default.nix b/nixpkgs/pkgs/misc/drivers/epkowa/default.nix new file mode 100644 index 000000000000..460ebb8a3af0 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/epkowa/default.nix @@ -0,0 +1,449 @@ +{ lib, stdenv +, fetchurl +, fetchpatch +, makeWrapper +, symlinkJoin +, pkg-config +, libtool +, gtk2 +, libxml2 +, libxslt +, libusb-compat-0_1 +, sane-backends +, rpm +, cpio +, getopt +, autoPatchelfHook +, gcc +}: +let common_meta = { + homepage = "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + license = with lib.licenses; epson; + platforms = with lib.platforms; linux; +}; +in +############################ +# +# PLUGINS +# +############################ + +# adding a plugin for another printer shouldn't be too difficult, but you need the firmware to test... +let plugins = { + v330 = stdenv.mkDerivation rec { + name = "iscan-v330-bundle"; + version = "2.30.4"; + + src = fetchurl { + # To find new versions, visit + # http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX and search for + # some printer like for instance "WF-7210" to get to the most recent + # version. + # NOTE: Don't forget to update the webarchive link too! + urls = [ + "https://download2.ebz.epson.net/iscan/plugin/perfection-v330/rpm/x64/iscan-perfection-v330-bundle-${version}.x64.rpm.tar.gz" + "https://web.archive.org/web/https://download2.ebz.epson.net/iscan/plugin/perfection-v330/rpm/x64/iscan-perfection-v330-bundle-${version}.x64.rpm.tar.gz" + ]; + sha256 = "056c04pfsf98nnknphg28l489isqb6y4l2c8g7wqhclwgj7m338i"; + }; + + nativeBuildInputs = [ autoPatchelfHook rpm ]; + + installPhase = '' + ${rpm}/bin/rpm2cpio plugins/esci-interpreter-perfection-v330-*.x86_64.rpm | ${cpio}/bin/cpio -idmv + mkdir $out{,/share,/lib} + cp -r ./usr/share/{iscan-data,esci}/ $out/share/ + cp -r ./usr/lib64/esci $out/lib + ''; + + passthru = { + registrationCommand = '' + $registry --add interpreter usb 0x04b8 0x0142 "$plugin/lib/esci/libesci-interpreter-perfection-v330 $plugin/share/esci/esfwad.bin" + ''; + hw = "Perfection V330 Photo"; + }; + meta = common_meta // { description = "Plugin to support " + passthru.hw + " scanner in sane"; }; + }; + v370 = stdenv.mkDerivation rec { + name = "iscan-v370-bundle"; + version = "2.30.4"; + + src = fetchurl { + urls = [ + "https://download2.ebz.epson.net/iscan/plugin/perfection-v370/rpm/x64/iscan-perfection-v370-bundle-${version}.x64.rpm.tar.gz" + "https://web.archive.org/web/https://download2.ebz.epson.net/iscan/plugin/perfection-v370/rpm/x64/iscan-perfection-v370-bundle-${version}.x64.rpm.tar.gz" + ]; + sha256 = "1ff7adp9mha1i2ibllz540xkagpy8r757h4s3h60bgxbyzv2yggr"; + }; + + nativeBuildInputs = [ autoPatchelfHook rpm ]; + + installPhase = '' + cd plugins + ${rpm}/bin/rpm2cpio iscan-plugin-perfection-v370-*.x86_64.rpm | ${cpio}/bin/cpio -idmv + + + mkdir -p $out/share $out/lib + cp -r usr/share/{iscan-data,iscan}/ $out/share + cp -r usr/lib64/iscan $out/lib + mv $out/share/iscan $out/share/esci + mv $out/lib/iscan $out/lib/esci + ''; + + passthru = { + registrationCommand = '' + $registry --add interpreter usb 0x04b8 0x014a "$plugin/lib/esci/libiscan-plugin-perfection-v370 $plugin/share/esci/esfwdd.bin" + ''; + hw = "Perfection V37/V370"; + }; + meta = common_meta // { description = "Plugin to support " + passthru.hw + " scanner in sane"; }; + }; + v600 = stdenv.mkDerivation rec { + pname = "iscan-gt-x820-bundle"; + version = "2.30.4"; + + nativeBuildInputs = [ autoPatchelfHook rpm ]; + src = fetchurl { + urls = [ + "https://download2.ebz.epson.net/iscan/plugin/gt-x820/rpm/x64/iscan-gt-x820-bundle-${version}.x64.rpm.tar.gz" + "https://web.archive.org/web/https://download2.ebz.epson.net/iscan/plugin/gt-x820/rpm/x64/iscan-gt-x820-bundle-${version}.x64.rpm.tar.gz" + ]; + sha256 = "1vlba7dsgpk35nn3n7is8nwds3yzlk38q43mppjzwsz2d2n7sr33"; + }; + installPhase = '' + cd plugins + ${rpm}/bin/rpm2cpio iscan-plugin-gt-x820-*.x86_64.rpm | ${cpio}/bin/cpio -idmv + mkdir $out + cp -r usr/share $out + cp -r usr/lib64 $out/lib + mv $out/share/iscan $out/share/esci + mv $out/lib/iscan $out/lib/esci + ''; + passthru = { + registrationCommand = '' + $registry --add interpreter usb 0x04b8 0x013a "$plugin/lib/esci/libesintA1 $plugin/share/esci/esfwA1.bin" + ''; + hw = "Perfection V600 Photo"; + }; + meta = common_meta // { description = "iscan esci x820 plugin for " + passthru.hw; }; + }; + x770 = stdenv.mkDerivation rec { + pname = "iscan-gt-x770-bundle"; + version = "2.30.4"; + + nativeBuildInputs = [ autoPatchelfHook rpm ]; + src = fetchurl { + urls = [ + "https://download2.ebz.epson.net/iscan/plugin/gt-x770/rpm/x64/iscan-gt-x770-bundle-${version}.x64.rpm.tar.gz" + "https://web.archive.org/web/https://download2.ebz.epson.net/iscan/plugin/gt-x770/rpm/x64/iscan-gt-x770-bundle-${version}.x64.rpm.tar.gz" + ]; + sha256 = "1chxdm6smv2d14pn2jl9xyd0vr42diy7vpskd3b9a61gf5h3gj03"; + }; + installPhase = '' + cd plugins + ${rpm}/bin/rpm2cpio iscan-plugin-gt-x770-*.x86_64.rpm | ${cpio}/bin/cpio -idmv + mkdir $out + cp -r usr/share $out + cp -r usr/lib64 $out/lib + mv $out/share/iscan $out/share/esci + mv $out/lib/iscan $out/lib/esci + ''; + passthru = { + registrationCommand = '' + $registry --add interpreter usb 0x04b8 0x0130 "$plugin/lib/esci/libesint7C $plugin/share/esci/esfw7C.bin" + ''; + hw = "Perfection V500 Photo"; + }; + meta = common_meta // { description = "iscan esci x770 plugin for " + passthru.hw; }; + }; + f720 = stdenv.mkDerivation rec { + pname = "iscan-gt-f720-bundle"; + version = "2.30.4"; + + nativeBuildInputs = [ autoPatchelfHook ]; + buildInputs = [ gcc.cc.lib ]; + src = fetchurl { + urls = [ + "https://download2.ebz.epson.net/iscan/plugin/gt-f720/rpm/x64/iscan-gt-f720-bundle-${version}.x64.rpm.tar.gz" + "https://web.archive.org/web/https://download2.ebz.epson.net/iscan/plugin/gt-f720/rpm/x64/iscan-gt-f720-bundle-${version}.x64.rpm.tar.gz" + ]; + sha256 = "1xnbmb2rn610kqpg1x6k1cc13zlmx2f3l2xnj6809rnhg96qqn20"; + }; + installPhase = '' + cd plugins + ${rpm}/bin/rpm2cpio esci-interpreter-gt-f720-*.x86_64.rpm | ${cpio}/bin/cpio -idmv + mkdir $out + cp -r usr/share $out + cp -r usr/lib64 $out/lib + ''; + + passthru = { + registrationCommand = '' + $registry --add interpreter usb 0x04b8 0x0131 "$plugin/lib/esci/libesci-interpreter-gt-f720 $plugin/share/esci/esfw8b.bin" + ''; + hw = "GT-F720, GT-S620, Perfection V30, Perfection V300 Photo"; + }; + + meta = common_meta // { description = "iscan esci f720 plugin for " + passthru.hw; }; + }; + s80 = stdenv.mkDerivation rec { + pname = "iscan-gt-s80-bundle"; + version = "2.30.4"; + + nativeBuildInputs = [ autoPatchelfHook ]; + buildInputs = [ gcc.cc.lib libtool ]; + src = fetchurl { + urls = [ + "https://download2.ebz.epson.net/iscan/plugin/gt-s80/rpm/x64/iscan-gt-s80-bundle-${version}.x64.rpm.tar.gz" + "https://web.archive.org/web/https://download2.ebz.epson.net/iscan/plugin/gt-s80/rpm/x64/iscan-gt-s80-bundle-${version}.x64.rpm.tar.gz" + ]; + sha256 = "00qfdgs03k7bbs67zjrk8hbxvlyinsmk890amp9cmpfjfzdxgg58"; + }; + installPhase = '' + cd plugins + ${rpm}/bin/rpm2cpio esci-interpreter-gt-s80-*.x86_64.rpm | ${cpio}/bin/cpio -idmv + ${rpm}/bin/rpm2cpio iscan-plugin-esdip-*.x86_64.rpm | ${cpio}/bin/cpio -idmv + mkdir $out + cp -r usr/share $out + cp -r usr/lib64 $out/lib + mkdir $out/share/esci + ''; + + passthru = { + registrationCommand = '' + $registry --add interpreter usb 0x04b8 0x0136 "$plugin/lib/esci/libesci-interpreter-gt-s80.so" + $registry --add interpreter usb 0x04b8 0x0137 "$plugin/lib/esci/libesci-interpreter-gt-s50.so" + $registry --add interpreter usb 0x04b8 0x0143 "$plugin/lib/esci/libesci-interpreter-gt-s50.so" + $registry --add interpreter usb 0x04b8 0x0144 "$plugin/lib/esci/libesci-interpreter-gt-s80.so" + ''; + hw = "ES-D200, ED-D350, ES-D400, GT-S50, GT-S55, GT-S80, GT-S85"; + }; + + meta = common_meta // { description = "iscan esci s80 plugin for " + passthru.hw; }; + }; + s650 = stdenv.mkDerivation rec { + name = "iscan-gt-s650-bundle"; + version = "2.30.4"; + + src = fetchurl { + urls = [ + "https://download2.ebz.epson.net/iscan/plugin/gt-s650/rpm/x64/iscan-gt-s650-bundle-${version}.x64.rpm.tar.gz" + "https://web.archive.org/web/https://download2.ebz.epson.net/iscan/plugin/gt-s650/rpm/x64/iscan-gt-s650-bundle-${version}.x64.rpm.tar.gz" + ]; + sha256 = "0fn4lz4g0a8l301v6yv7fwl37wgwhz5y90nf681f655xxc91hqh7"; + }; + + nativeBuildInputs = [ autoPatchelfHook rpm ]; + + installPhase = '' + cd plugins + ${rpm}/bin/rpm2cpio iscan-plugin-gt-s650-*.x86_64.rpm | ${cpio}/bin/cpio -idmv + mkdir $out + cp -r usr/share $out + cp -r usr/lib64 $out/lib + mv $out/share/iscan $out/share/esci + mv $out/lib/iscan $out/lib/esci + ''; + + passthru = { + registrationCommand = '' + $registry --add interpreter usb 0x04b8 0x013c "$plugin/lib/esci/libiscan-plugin-gt-s650 $plugin/share/esci/esfw010c.bin" + $registry --add interpreter usb 0x04b8 0x013d "$plugin/lib/esci/libiscan-plugin-gt-s650 $plugin/share/esci/esfw010c.bin" + ''; + hw = "GT-S650, Perfection V19, Perfection V39"; + }; + meta = common_meta // { description = "iscan GT-S650 for " + passthru.hw; }; + }; + x750 = stdenv.mkDerivation rec { + name = "iscan-gt-x750-bundle"; + version = "2.30.4"; + + src = fetchurl { + urls = [ + "https://download2.ebz.epson.net/iscan/plugin/gt-x750/rpm/x64/iscan-gt-x750-bundle-${version}.x64.rpm.tar.gz" + "https://web.archive.org/web/https://download2.ebz.epson.net/iscan/plugin/gt-x750/rpm/x64/iscan-gt-x750-bundle-${version}.x64.rpm.tar.gz" + ]; + sha256 = "sha256-9EeBHmh1nwSxnTnevPP8RZ4WBdyY+itR3VXo2I7f5N0="; + }; + + nativeBuildInputs = [ autoPatchelfHook rpm ]; + + installPhase = '' + cd plugins + ${rpm}/bin/rpm2cpio iscan-plugin-gt-x750-*.x86_64.rpm | ${cpio}/bin/cpio -idmv + mkdir $out + cp -r usr/share $out + cp -r usr/lib64 $out/lib + mv $out/share/iscan $out/share/esci + mv $out/lib/iscan $out/lib/esci + ''; + + passthru = { + registrationCommand = '' + $registry --add interpreter usb 0x04b8 0x0119 "$plugin/lib/esci/libesint54 $plugin/share/esci/esfw54.bin" + ''; + hw = "GT-X750, Perfection 4490"; + }; + meta = common_meta // { description = "iscan GT-X750 for " + passthru.hw; }; + }; + gt1500 = stdenv.mkDerivation rec { + name = "iscan-gt-1500-bundle"; + version = "2.30.4"; + + src = fetchurl { + urls = [ + "https://download2.ebz.epson.net/iscan/plugin/gt-1500/rpm/x64/iscan-gt-1500-bundle-${version}.x64.rpm.tar.gz" + "https://web.archive.org/web/https://download2.ebz.epson.net/iscan/plugin/gt-1500/rpm/x64/iscan-gt-1500-bundle-${version}.x64.rpm.tar.gz" + ]; + sha256 = "sha256-1rVsbBsb+QtCOT1FsyhgvCbZIN6IeQH7rZXNmsD7cl8="; + }; + + nativeBuildInputs = [ autoPatchelfHook rpm ]; + + installPhase = '' + cd plugins + ${rpm}/bin/rpm2cpio iscan-plugin-gt-1500-*.x86_64.rpm | ${cpio}/bin/cpio -idmv + mkdir $out + cp -r usr/share $out + cp -r usr/lib64 $out/lib + mv $out/share/iscan $out/share/esci + mv $out/lib/iscan $out/lib/esci + ''; + + passthru = { + registrationCommand = '' + $registry --add interpreter usb 0x04b8 0x0133 "$plugin/lib/esci/libesint86 $plugin/share/esci/esfw86.bin" + ''; + hw = "GT-1500"; + }; + meta = common_meta // { description = "iscan GT-1500 for " + passthru.hw; }; + }; + network = stdenv.mkDerivation rec { + pname = "iscan-nt-bundle"; + # for the version, look for the driver of XP-750 in the search page + version = "2.30.4"; + + buildInputs = [ stdenv.cc.cc.lib ]; + nativeBuildInputs = [ autoPatchelfHook ]; + + src = fetchurl { + urls = [ + "https://download2.ebz.epson.net/iscan/general/rpm/x64/iscan-bundle-${version}.x64.rpm.tar.gz" + "https://web.archive.org/web/https://download2.ebz.epson.net/iscan/general/rpm/x64/iscan-bundle-${version}.x64.rpm.tar.gz" + ]; + sha256 = "0jssigsgkxb9i7qa7db291a1gbvwl795i4ahvb7bnqp33czkj85k"; + }; + installPhase = '' + cd plugins + ${rpm}/bin/rpm2cpio iscan-network-nt-*.x86_64.rpm | ${cpio}/bin/cpio -idmv + + mkdir $out + cp -r usr/share $out + cp -r usr/lib64 $out/lib + mkdir $out/share/esci + ''; + passthru = { + registrationCommand = ""; + hw = "network"; + }; + + meta = common_meta // { description = "iscan network plugin"; }; + }; +}; +in +let fwdir = symlinkJoin { + name = "esci-firmware-dir"; + paths = lib.mapAttrsToList (name: value: value + /share/esci) plugins; +}; +in +let iscan-data = stdenv.mkDerivation rec { + pname = "iscan-data"; + version = "1.39.2-1"; + + src = fetchurl { + urls = [ + "http://support.epson.net/linux/src/scanner/iscan/iscan-data_${version}.tar.gz" + "https://web.archive.org/web/http://support.epson.net/linux/src/scanner/iscan/iscan-data_${version}.tar.gz" + ]; + sha256 = "092qhlnjjgz11ifx6mng7mz20i44gc0nlccrbmw18xr5hipbqqka"; + }; + + buildInputs = [ + libxslt + ]; + + meta = common_meta; +}; +in +stdenv.mkDerivation rec { + pname = "iscan"; + version = "2.30.4-2"; + + src = fetchurl { + urls = [ + "http://support.epson.net/linux/src/scanner/iscan/iscan_${version}.tar.gz" + "https://web.archive.org/web/http://support.epson.net/linux/src/scanner/iscan/iscan_${version}.tar.gz" + ]; + sha256 = "1ma76jj0k3bz0fy06fiyl4di4y77rcryb0mwjmzs5ms2vq9rjysr"; + }; + + nativeBuildInputs = [ pkg-config libtool makeWrapper ]; + buildInputs = [ + gtk2 + libxml2 + libusb-compat-0_1 + sane-backends + ]; + + patches = [ + # Patch for compatibility with libpng versions greater than 10499 + (fetchpatch { + urls = [ + "https://gitweb.gentoo.org/repo/gentoo.git/plain/media-gfx/iscan/files/iscan-2.28.1.3+libpng-1.5.patch?h=b6e4c805d53b49da79a0f64ef16bb82d6d800fcf" + "https://web.archive.org/web/https://gitweb.gentoo.org/repo/gentoo.git/plain/media-gfx/iscan/files/iscan-2.28.1.3+libpng-1.5.patch?h=b6e4c805d53b49da79a0f64ef16bb82d6d800fcf" + ]; + sha256 = "04y70qjd220dpyh771fiq50lha16pms98mfigwjczdfmx6kpj1jd"; + }) + # Patch iscan to search appropriate folders for firmware files + ./firmware_location.patch + # Patch deprecated use of sscanf code to use a more modern C99 compatible version + ./sscanf.patch + ]; + patchFlags = [ "-p0" ]; + + configureFlags = [ "--enable-dependency-reduction" "--disable-frontend" ]; + + postConfigure = '' + echo '#define NIX_ESCI_PREFIX "'${fwdir}'"' >> config.h + ''; + + postInstall = '' + mkdir -p $out/etc/sane.d + cp backend/epkowa.conf $out/etc/sane.d + echo "epkowa" > $out/etc/sane.d/dll.conf + ln -s ${iscan-data}/share/iscan-data $out/share/iscan-data + mkdir -p $out/lib/iscan + ln -s ${plugins.network}/lib/iscan/network $out/lib/iscan/network + ''; + postFixup = '' + # iscan-registry is a shell script requiring getopt + wrapProgram $out/bin/iscan-registry --prefix PATH : ${getopt}/bin + registry=$out/bin/iscan-registry; + '' + + lib.concatStrings (lib.mapAttrsToList + (name: value: '' + plugin=${value}; + ${value.passthru.registrationCommand} + '') + plugins); + meta = common_meta // { + description = "sane-epkowa backend for some epson scanners"; + longDescription = '' + Includes gui-less iscan (aka. Image Scan! for Linux). + Supported hardware: at least : + '' + + lib.concatStringsSep ", " (lib.mapAttrsToList (name: value: value.passthru.hw) plugins); + maintainers = with lib.maintainers; [ symphorien dominikh ]; + }; +} diff --git a/nixpkgs/pkgs/misc/drivers/epkowa/firmware_location.patch b/nixpkgs/pkgs/misc/drivers/epkowa/firmware_location.patch new file mode 100644 index 000000000000..0f723a4ff9d7 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/epkowa/firmware_location.patch @@ -0,0 +1,21 @@ +Explanation: +in libesci-interpreter-gt-f720.so in +libesci_interpreter_gt_f720_342::libesci_interpreter_gt_f720_348 at 0xdf74: the +binary blob esfw8b.bin is searched either in /usr/share/esci/ or in +$ESCI_FIRMWARE_DIR. But since this library is to be used wia libsane.so in +every binary in the system, we can't wrapProgram the relevant executables to +set this environment variable. Instead, we patch iscan to set this variable +before loading libesci-interpreter-gt-f720.so. +--- backend/channel-usb.c.orig 2017-08-14 11:24:27.669582456 +0200 ++++ backend/channel-usb.c 2017-08-14 11:31:40.509010897 +0200 +@@ -169,6 +169,10 @@ + { + SANE_Status s; + ++ setenv("ESCI_FIRMWARE_DIR", NIX_ESCI_PREFIX, 1); ++ setenv("ISCAN_FW_DIR", NIX_ESCI_PREFIX, 1); ++ setenv("ISCAN_FIRMWARE_DIR", NIX_ESCI_PREFIX, 1); ++ + s = sanei_usb_open (self->name, &self->fd); + + if (SANE_STATUS_GOOD == s) diff --git a/nixpkgs/pkgs/misc/drivers/epkowa/sscanf.patch b/nixpkgs/pkgs/misc/drivers/epkowa/sscanf.patch new file mode 100644 index 000000000000..7bee9cae5180 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/epkowa/sscanf.patch @@ -0,0 +1,29 @@ +The "%as" verb requests sscanf to allocate a buffer for us. However, +this use of 'a' has been long deprecated, and gcc doesn't support it +in this manner when using -std=c99. The modern replacement is "%ms". + +Without this change, iscan couldn't read the interpreter file, in turn +breaking all scanners that require plugins. +--- backend/cfg-obj.c.orig 2020-03-19 01:27:17.254762077 +0100 ++++ backend/cfg-obj.c 2020-03-19 02:01:52.293329873 +0100 +@@ -1026,7 +1026,7 @@ + char *vendor = NULL; + char *model = NULL; + +- sscanf (string, "%*s %as %as", &vendor, &model); ++ sscanf (string, "%*s %ms %ms", &vendor, &model); + + if (list_append (_cfg->seen[CFG_KEY_SCSI], info)) + { +@@ -1108,10 +1112,10 @@ + char *library = NULL; + char *firmware = NULL; + +- sscanf (string, "%*s %*s %x %x %as %as", ++ sscanf (string, "%*s %*s %x %x %ms %ms", + &vendor, &product, &library, &firmware); + + if (library && _cfg_have_interpreter (library, firmware) + && list_append (_cfg->seen[CFG_KEY_INTERPRETER], info)) + { + diff --git a/nixpkgs/pkgs/misc/drivers/epson-201106w/default.nix b/nixpkgs/pkgs/misc/drivers/epson-201106w/default.nix new file mode 100644 index 000000000000..a5a32644c3a5 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/epson-201106w/default.nix @@ -0,0 +1,77 @@ +{ lib, stdenv, fetchurl, rpmextract, autoreconfHook, file, libjpeg, cups }: + +let + version = "1.0.1"; + filterVersion = "1.0.0"; +in + stdenv.mkDerivation { + + pname = "epson-201106w"; + inherit version; + + src = fetchurl { + # NOTE: Don't forget to update the webarchive link too! + urls = [ + "https://download.ebz.epson.net/dsc/op/stable/SRPMS/epson-inkjet-printer-201106w-${version}-1lsb3.2.src.rpm" + "https://web.archive.org/web/https://download.ebz.epson.net/dsc/op/stable/SRPMS/epson-inkjet-printer-201106w-${version}-1lsb3.2.src.rpm" + ]; + + sha256 = "1yig1xrh1ikblbp7sx706n5nnc237wy4mbch23ymy6akbgqg4aig"; + }; + + nativeBuildInputs = [ rpmextract autoreconfHook file ]; + + buildInputs = [ libjpeg cups ]; + + unpackPhase = '' + rpmextract $src + tar -zxf epson-inkjet-printer-201106w-${version}.tar.gz + tar -zxf epson-inkjet-printer-filter-${filterVersion}.tar.gz + for ppd in epson-inkjet-printer-201106w-${version}/ppds/*; do + substituteInPlace $ppd --replace "/opt/epson-inkjet-printer-201106w" "$out" + substituteInPlace $ppd --replace "/cups/lib" "/lib/cups" + done + cd epson-inkjet-printer-filter-${filterVersion} + ''; + + preConfigure = '' + chmod +x configure + export LDFLAGS="$LDFLAGS -Wl,--no-as-needed" + ''; + + postInstall = '' + cd ../epson-inkjet-printer-201106w-${version} + cp -a lib64 resource watermark $out + mkdir -p $out/share/cups/model/epson-inkjet-printer-201106w + cp -a ppds $out/share/cups/model/epson-inkjet-printer-201106w/ + cp -a Manual.txt $out/doc/ + cp -a README $out/doc/README.driver + ''; + + meta = with lib; { + homepage = "https://www.openprinting.org/driver/epson-201106w"; + description = "Epson printer driver (BX535WD, BX630FW, BX635FWD, ME940FW, NX530, NX635, NX635, SX535WD, WorkForce 545, WorkForce 645"; + longDescription = '' + This software is a filter program used with the Common UNIX Printing + System (CUPS) under Linux. It supplies high quality printing with + Seiko Epson Color Ink Jet Printers. + List of printers supported by this package: + Epson BX535WD Series + Epson BX630FW Series + Epson BX635FWD Series + Epson ME940FW Series + Epson NX530 Series + Epson SX535WD Series + Epson WorkForce 545 Series + Epson WorkForce 645 Series + To use the driver adjust your configuration.nix file: + services.printing = { + enable = true; + drivers = [ pkgs.epson-201106w ]; + }; + ''; + license = with licenses; [ lgpl21 epson ]; + platforms = platforms.linux; + maintainers = [ maintainers.nphilou ]; + }; + } diff --git a/nixpkgs/pkgs/misc/drivers/epson-201401w/default.nix b/nixpkgs/pkgs/misc/drivers/epson-201401w/default.nix new file mode 100644 index 000000000000..cffa631cfe33 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/epson-201401w/default.nix @@ -0,0 +1,67 @@ +{ lib, stdenv, fetchurl, rpmextract, autoreconfHook, file, libjpeg, cups }: + +let + version = "1.0.0"; + filterVersion = "1.0.0"; +in stdenv.mkDerivation { + pname = "epson-201401w"; + inherit version; + + src = fetchurl { + # NOTE: Don't forget to update the webarchive link too! + urls = [ + "https://download3.ebz.epson.net/dsc/f/03/00/03/45/41/92e9c9254f0ee4230a069545ba27ec2858a2c457/epson-inkjet-printer-201401w-1.0.0-1lsb3.2.src.rpm" + "https://web.archive.org/web/20200725175832/https://download3.ebz.epson.net/dsc/f/03/00/03/45/41/92e9c9254f0ee4230a069545ba27ec2858a2c457/epson-inkjet-printer-201401w-1.0.0-1lsb3.2.src.rpm" + ]; + sha256 = "0c60m1sd59s4sda38dc5nniwa7dh1b0kv1maajr0x9d38gqlyk3x"; + }; + patches = [ ./fixbuild.patch ]; + + nativeBuildInputs = [ rpmextract autoreconfHook file ]; + + buildInputs = [ libjpeg cups ]; + + unpackPhase = '' + rpmextract $src + tar -zxf epson-inkjet-printer-201401w-${version}.tar.gz + tar -zxf epson-inkjet-printer-filter-${filterVersion}.tar.gz + for ppd in epson-inkjet-printer-201401w-${version}/ppds/*; do + substituteInPlace $ppd --replace "/opt/epson-inkjet-printer-201401w" "$out" + substituteInPlace $ppd --replace "/cups/lib" "/lib/cups" + done + cd epson-inkjet-printer-filter-${filterVersion} + ''; + + preConfigure = '' + chmod +x configure + ''; + + postInstall = '' + cd ../epson-inkjet-printer-201401w-${version} + cp -a lib64 resource watermark $out + mkdir -p $out/share/cups/model/epson-inkjet-printer-201401w + cp -a ppds $out/share/cups/model/epson-inkjet-printer-201401w/ + cp -a Manual.txt $out/doc/ + cp -a README $out/doc/README.driver + ''; + + meta = with lib; { + homepage = "https://www.openprinting.org/driver/epson-201401w"; + description = + "Epson printer driver (L456, L455, L366, L365, L362, L360, L312, L310, L222, L220, L132, L130)"; + longDescription = '' + This software is a filter program used with the Common UNIX Printing + System (CUPS) under Linux. It supplies high quality printing with + Seiko Epson Color Ink Jet Printers. + + To use the driver adjust your configuration.nix file: + services.printing = { + enable = true; + drivers = [ pkgs.epson-201401w ]; + }; + ''; + license = with licenses; [ lgpl21 epson ]; + platforms = platforms.linux; + maintainers = [ maintainers.lunarequest ]; + }; +} diff --git a/nixpkgs/pkgs/misc/drivers/epson-201401w/fixbuild.patch b/nixpkgs/pkgs/misc/drivers/epson-201401w/fixbuild.patch new file mode 100644 index 000000000000..4baa029a5739 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/epson-201401w/fixbuild.patch @@ -0,0 +1,101 @@ +diff --git a/src/pagemanager/pagemanager.c b/src/pagemanager/pagemanager.c +index 029e6d3..3c1f450 100644 +--- a/src/pagemanager/pagemanager.c ++++ b/src/pagemanager/pagemanager.c +@@ -22,7 +22,7 @@ + #include "epcgdef.h" + #include "debuglog.h" + #include "memory.h" +-#include "raster.h" ++#include "raster-helper.h" + #include "pagemanager.h" + + extern int JobCanceled; +@@ -45,7 +45,7 @@ fetchRaster(EpsPageManager *pageManager) + int error = 0; + int did_fetch = 0; + int read_bytes = 0; +- int nraster; ++ size_t nraster; + + while (error == 0 && did_fetch == 0 && JobCanceled == 0) { + eps_raster_fetch(privateData->raster_h, NULL, 0, 0, &status); +@@ -212,7 +212,7 @@ int pageManagerGetPageRegion(EpsPageManager *pageManager, EpsPageRegion *pageReg + return EPS_OK; + } + +-int pageManagerGetRaster(EpsPageManager *pageManager, char *buf, int bufSize) ++size_t pageManagerGetRaster(EpsPageManager *pageManager, char *buf, int bufSize) + { + PageManagerPrivateData *privateData = NULL; + int error = EPS_OK; +diff --git a/src/pagemanager/pagemanager.h b/src/pagemanager/pagemanager.h +index 87fbbd5..c9743fb 100644 +--- a/src/pagemanager/pagemanager.h ++++ b/src/pagemanager/pagemanager.h +@@ -31,7 +31,7 @@ extern "C" + #define EPS_ERROR -1 + #define EPS_OK 0 + +-typedef int (*EpsRasterSource)(char *buf, int bufSize); ++typedef size_t (*EpsRasterSource)(char *buf, int bufSize); + + typedef struct { + EpsRasterSource rasterSource; +@@ -47,7 +47,7 @@ typedef struct { + EpsPageManager* pageManagerCreate(EpsPageRegion pageRegion, EpsFilterPrintOption filterPrintOption, EpsRasterSource rasterSource); + void pageManagerDestroy(EpsPageManager *pageManager); + int pageManagerGetPageRegion(EpsPageManager *pageManager, EpsPageRegion *pageRegion); +-int pageManagerGetRaster(EpsPageManager *pageManager, char *buf, int bufSize); ++size_t pageManagerGetRaster(EpsPageManager *pageManager, char *buf, int bufSize); + int pageManagerIsNextPage(EpsPageManager *pageManager); + + #ifdef __cplusplus +diff --git a/src/raster/raster.c b/src/raster/raster.c +index 7e4946b..dd5aef6 100644 +--- a/src/raster/raster.c ++++ b/src/raster/raster.c +@@ -218,7 +218,7 @@ eps_raster_init (RASTER * handle, EpsRasterOpt * data, EpsRasterPipeline * pipel + + /* if raster_p equals NULL means that it is need to flush a page. */ + int +-eps_raster_print (RASTER handle, char * raster_p, int raster_bytes, int pixel_num, int * outraster) ++eps_raster_print (RASTER handle, char * raster_p, int raster_bytes, int pixel_num, size_t * outraster) + { + EpsRaster * raster = (EpsRaster *) handle; + EpsRasterPipeline * pipeline = NULL; +diff --git a/src/raster/raster.h b/src/raster/raster.h +index 9be0977..cc5054d 100644 +--- a/src/raster/raster.h ++++ b/src/raster/raster.h +@@ -143,7 +143,7 @@ typedef enum { + } EpsRasterFetchStatus; + + int eps_raster_init (RASTER *, EpsRasterOpt *, EpsRasterPipeline *); +-int eps_raster_print (RASTER, char *, int, int, int *); ++int eps_raster_print (RASTER, char *, int, int, size_t *); + int eps_raster_fetch (RASTER, char *, int, int, EpsRasterFetchStatus *); + int eps_raster_free (RASTER); + +diff --git a/src/raster_to_epson.c b/src/raster_to_epson.c +index 6e621c8..a0811d6 100644 +--- a/src/raster_to_epson.c ++++ b/src/raster_to_epson.c +@@ -33,7 +33,7 @@ + #include <cups/ppd.h> + #include <cups/raster.h> + +-#include "raster.h" ++#include "raster-helper.h" + #include "memory.h" + #include "raster_to_epson.h" + #include "pagemanager.h" +@@ -75,7 +75,7 @@ static int page_no = 0; + static int pageHeight = 0; + #endif + +-int rasterSource(char *buf, int bufSize) ++size_t rasterSource(char *buf, int bufSize) + { + int readBytes = 0; + if (JobCanceled == 0) { diff --git a/nixpkgs/pkgs/misc/drivers/epson-alc1100/cups-data-dir.patch b/nixpkgs/pkgs/misc/drivers/epson-alc1100/cups-data-dir.patch new file mode 100644 index 000000000000..2277a9afcccf --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/epson-alc1100/cups-data-dir.patch @@ -0,0 +1,13 @@ +diff --git a/configure b/configure +index 0053441..9a6b855 100755 +--- a/configure ++++ b/configure +@@ -2833,7 +2833,7 @@ if test $have_cups_config = yes; then + CUPS_LIBS=`cups-config --libs` + CUPS_IMAGE_LIBS=`cups-config --image --libs` + CUPS_SERVER_DIR=`cups-config --serverbin` +- CUPS_DATA_DIR=`cups-config --datadir` ++ CUPS_DATA_DIR="${prefix}/share/cups" + else + { { echo "$as_me:$LINENO: error: *** 'cups-config' missing, please install CUPS or fix your \$PATH ***" >&5 + echo "$as_me: error: *** 'cups-config' missing, please install CUPS or fix your \$PATH ***" >&2;} diff --git a/nixpkgs/pkgs/misc/drivers/epson-alc1100/default.nix b/nixpkgs/pkgs/misc/drivers/epson-alc1100/default.nix new file mode 100644 index 000000000000..f39fb0ad1704 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/epson-alc1100/default.nix @@ -0,0 +1,72 @@ +{ lib, stdenv, fetchurl, cups, pkgsi686Linux, dpkg, psutils, makeWrapper, ghostscript, bash }: + +let + version = "1.2-0"; + + libstdcpp5 = fetchurl { + url = "mirror://ubuntu/pool/universe/g/gcc-3.3/libstdc++5_3.3.6-17ubuntu1_i386.deb"; + sha256 = "10f8zcmqaa7skvg2bz94mnlgqpan4iscvi8913r6iawjh7hiisjy"; + }; +in + stdenv.mkDerivation { + pname = "epson-alc1100"; + inherit version; + + src = fetchurl { + url = "https://download3.ebz.epson.net/dsc/f/03/00/11/33/07/4027e99517b5c388d444b8444d719b4b77f7e9db/Epson-ALC1100-filter-1.2.tar.gz"; + sha256 = "1dfw75a3kj2aa4iicvlk9kz3jarrsikpnpd4cdpw79scfc5mwm2p"; + }; + + patches = [ ./cups-data-dir.patch ./ppd.patch ]; + + nativeBuildInputs = [ dpkg makeWrapper ]; + + buildInputs = [ cups pkgsi686Linux.glibc psutils ghostscript bash ]; + + postUnpack = '' + dpkg -x ${libstdcpp5} libstdcpp5_i386; + + mkdir -p $out/lib; + + mv libstdcpp5_i386/usr/lib/* $out/lib; + ''; + + postFixup = '' + patchelf --set-interpreter ${pkgsi686Linux.glibc}/lib/ld-linux.so.2 \ + --set-rpath "${lib.makeLibraryPath [ + pkgsi686Linux.glibc + "$out" + ]}" $out/bin/alc1100 + + patchelf --set-rpath "${lib.makeLibraryPath [ + pkgsi686Linux.glibc + ]}" $out/lib/libstdc++.so.5.0.7 + + wrapProgram $out/bin/alc1100_lprwrapper.sh \ + --suffix PATH : "\$PATH:${psutils}/bin:/var/lib/cups/path/bin" + + wrapProgram $out/bin/pstoalc1100.sh \ + --suffix PATH : "\$PATH:${psutils}/bin:${ghostscript}/bin:${bash}/bin:/var/lib/cups/path/bin" + ''; + + meta = with lib; { + homepage = "http://download.ebz.epson.net/dsc/search/01/search/"; + description = "Epson AcuLaser C1100 Driver"; + longDescription = '' + This package provides a print filter for printing to EPSON AL-C1100 + printers on Linux systems. + + To use the driver adjust your configuration.nix file: + services.printing = { + enable = true; + drivers = [ pkgs.epson-alc1100 ]; + }; + ''; + + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = with licenses; [ mit eapl ]; + maintainers = [ maintainers.eperuffo ]; + platforms = platforms.linux; + }; + + } diff --git a/nixpkgs/pkgs/misc/drivers/epson-alc1100/ppd.patch b/nixpkgs/pkgs/misc/drivers/epson-alc1100/ppd.patch new file mode 100644 index 000000000000..71d86668f53d --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/epson-alc1100/ppd.patch @@ -0,0 +1,13 @@ +diff --git a/ppd/Epson-AL-C1100-fm3.ppd b/ppd/Epson-AL-C1100-fm3.ppd +index 75c7fff..ecd04c8 100644 +--- a/ppd/Epson-AL-C1100-fm3.ppd ++++ b/ppd/Epson-AL-C1100-fm3.ppd +@@ -68,7 +68,7 @@ + *%*********** Foomatic Configulations ************ + *%pprRIP: foomatic-rip other + *FoomaticIDs: Epson-AL-C1100 alc1100 +-*FoomaticRIPCommandLine: "pstoalc1100.sh %C" ++*FoomaticRIPCommandLine: "/var/lib/cups/path/bin/pstoalc1100.sh %C" + + *%**************** Paper Handling ****************** + diff --git a/nixpkgs/pkgs/misc/drivers/epson-escpr/cups-filter-ppd-dirs.patch b/nixpkgs/pkgs/misc/drivers/epson-escpr/cups-filter-ppd-dirs.patch new file mode 100644 index 000000000000..b9f198b14b74 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/epson-escpr/cups-filter-ppd-dirs.patch @@ -0,0 +1,62 @@ +diff --git a/configure b/configure_new +index 12b4662..6ec641c 100755 +--- a/configure ++++ b/configure_new +@@ -12162,55 +12162,8 @@ else + $as_echo "no" >&6; } + fi + +- +- +-if test "xNONE" != "x${prefix}" ; then +- cups_default_prefix="${prefix}" +-else +- cups_default_prefix="${ac_default_prefix}" +-fi +- +- +-# Check whether --with-cupsfilterdir was given. +-if test "${with_cupsfilterdir+set}" = set; then : +- withval=$with_cupsfilterdir; +-else +- with_cupsfilterdir=no +-fi +- +-if test "xno" = "x${with_cupsfilterdir}"; then +- if test "xyes" = "x$have_cups_config" ; then +- CUPS_FILTER_DIR="${cups_default_prefix}`cups-config --serverbin | sed -e 's,^/[^/][^/]*,,'`/filter" +- else +- CUPS_FILTER_DIR="${cups_default_prefix}/lib/cups/filter" +- fi +-else +- CUPS_FILTER_DIR="${with_cupsfilterdir}" +-fi +- +- +-# Check whether --with-cupsppddir was given. +-if test "${with_cupsppddir+set}" = set; then : +- withval=$with_cupsppddir; +-else +- with_cupsppddir=no +-fi +- +-if test "xno" = "x${with_cupsppddir}"; then +- if test -d "${cups_default_prefix}/share/ppd" ; then +- CUPS_PPD_DIR="${cups_default_prefix}/share/ppd" +- elif test "xyes" = "x$have_cups_config" ; then +- CUPS_PPD_DIR="${cups_default_prefix}`cups-config --datadir | sed -e 's,^/[^/][^/]*,,'`/model" +- else +- CUPS_PPD_DIR="${cups_default_prefix}/share/cups/model" +- fi +-else +- CUPS_PPD_DIR="${with_cupsppddir}" +-fi +- +- +- +- ++CUPS_FILTER_DIR="${prefix}/lib/cups/filter" ++CUPS_PPD_DIR="${prefix}/share/cups/model" + + # Check whether --enable-lsb was given. + if test "${enable_lsb+set}" = set; then : diff --git a/nixpkgs/pkgs/misc/drivers/epson-escpr/default.nix b/nixpkgs/pkgs/misc/drivers/epson-escpr/default.nix new file mode 100644 index 000000000000..7300749235fd --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/epson-escpr/default.nix @@ -0,0 +1,51 @@ +{ lib, stdenv, fetchurl, cups }: + +let version = "1.7.20"; +in stdenv.mkDerivation { + pname = "epson-escpr"; + inherit version; + + src = fetchurl { + # To find new versions, visit + # http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX and search for + # some printer like for instance "WF-7110" to get to the most recent + # version. + # NOTE: Don't forget to update the webarchive link too! + urls = [ + "https://download3.ebz.epson.net/dsc/f/03/00/13/76/45/5ac2ea8f9cf94a48abd64afd0f967f98c4fc24aa/epson-inkjet-printer-escpr-${version}-1lsb3.2.tar.gz" + + "https://web.archive.org/web/https://download3.ebz.epson.net/dsc/f/03/00/13/76/45/5ac2ea8f9cf94a48abd64afd0f967f98c4fc24aa/epson-inkjet-printer-escpr-${version}-1lsb3.2.tar.gz" + ]; + sha256 = "sha256:09rscpm557dgaflylr93wcwmyn6fnvr8nc77abwnq97r6hxwrkhk"; + }; + + patches = [ ./cups-filter-ppd-dirs.patch ]; + + buildInputs = [ cups ]; + + meta = with lib; { + homepage = "http://download.ebz.epson.net/dsc/search/01/search/"; + description = "ESC/P-R Driver (generic driver)"; + longDescription = '' + Epson Inkjet Printer Driver (ESC/P-R) for Linux and the + corresponding PPD files. The list of supported printers + can be found at http://www.openprinting.org/driver/epson-escpr/ . + + To use the driver adjust your configuration.nix file: + services.printing = { + enable = true; + drivers = [ pkgs.epson-escpr ]; + }; + + To setup a wireless printer, enable Avahi which provides + printer's hostname to CUPS and nss-mdns to make this + hostname resolvable: + services.avahi = { + enable = true; + nssmdns4 = true; + };''; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ artuuge ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/misc/drivers/epson-escpr2/cups-filter-ppd-dirs.patch b/nixpkgs/pkgs/misc/drivers/epson-escpr2/cups-filter-ppd-dirs.patch new file mode 100644 index 000000000000..02897f4f44d9 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/epson-escpr2/cups-filter-ppd-dirs.patch @@ -0,0 +1,55 @@ +diff --git a/configure.orig b/configure +index e9d400f..dac1943 100755 +--- a/configure.orig ++++ b/configure +@@ -12184,48 +12184,8 @@ esac + # *) ESCPR_LIB_NAME="escpr2_32" ;; + #esac + +- +- +-# Check whether --with-cupsfilterdir was given. +-if test "${with_cupsfilterdir+set}" = set; then : +- withval=$with_cupsfilterdir; +-else +- with_cupsfilterdir=no +-fi +- +-if test "xno" = "x${with_cupsfilterdir}"; then +- if test "xyes" = "x$have_cups_config" ; then +- CUPS_FILTER_DIR="${cups_default_prefix}`cups-config --serverbin | sed -e 's,^/[^/][^/]*,,'`/filter" +- else +- CUPS_FILTER_DIR="${cups_default_prefix}/lib/cups/filter" +- fi +-else +- CUPS_FILTER_DIR="${with_cupsfilterdir}" +-fi +- +- +-# Check whether --with-cupsppddir was given. +-if test "${with_cupsppddir+set}" = set; then : +- withval=$with_cupsppddir; +-else +- with_cupsppddir=no +-fi +- +-if test "xno" = "x${with_cupsppddir}"; then +- if test -d "${cups_default_prefix}/share/ppd" ; then +- CUPS_PPD_DIR="${cups_default_prefix}/share/ppd" +- elif test "xyes" = "x$have_cups_config" ; then +- CUPS_PPD_DIR="${cups_default_prefix}`cups-config --datadir | sed -e 's,^/[^/][^/]*,,'`/model" +- else +- CUPS_PPD_DIR="${cups_default_prefix}/share/cups/model" +- fi +-else +- CUPS_PPD_DIR="${with_cupsppddir}" +-fi +- +- +- +- ++CUPS_FILTER_DIR="${prefix}/lib/cups/filter" ++CUPS_PPD_DIR="${prefix}/share/cups/model" + + # Check whether --enable-lsb was given. + if test "${enable_lsb+set}" = set; then : diff --git a/nixpkgs/pkgs/misc/drivers/epson-escpr2/default.nix b/nixpkgs/pkgs/misc/drivers/epson-escpr2/default.nix new file mode 100644 index 000000000000..4c3b969b425f --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/epson-escpr2/default.nix @@ -0,0 +1,44 @@ +{ lib, stdenv, fetchurl, cups, rpm, cpio }: + +stdenv.mkDerivation rec { + pname = "epson-inkjet-printer-escpr2"; + version = "1.2.9"; + + src = fetchurl { + # To find new versions, visit + # http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX and search for + # some printer like for instance "WF-7210" to get to the most recent + # version. + url = "https://download3.ebz.epson.net/dsc/f/03/00/15/33/94/3bf10a30a1f8b5b91ddbafa4571c073878ec476b/epson-inkjet-printer-escpr2-1.2.9-1.src.rpm"; + sha256 = "sha256-2smNBTMSqoKYsGUoBtIHS3Fwk9ODbiXaP7Dtq69FG9U="; + }; + + unpackPhase = '' + runHook preUnpack + + rpm2cpio $src | cpio -idmv + tar xvf ${pname}-${version}-1.tar.gz + cd ${pname}-${version} + + runHook postUnpack + ''; + + patches = [ ./cups-filter-ppd-dirs.patch ]; + + buildInputs = [ cups ]; + nativeBuildInputs = [ rpm cpio ]; + + meta = with lib; { + homepage = "http://download.ebz.epson.net/dsc/search/01/search/"; + description = "ESC/P-R 2 Driver (generic driver)"; + longDescription = '' + Epson Inkjet Printer Driver 2 (ESC/P-R 2) for Linux and the + corresponding PPD files. + + Refer to the description of epson-escpr for usage. + ''; + license = licenses.gpl2; + maintainers = with maintainers; [ ma9e ma27 shawn8901 ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/misc/drivers/epson-workforce-635-nx625-series/default.nix b/nixpkgs/pkgs/misc/drivers/epson-workforce-635-nx625-series/default.nix new file mode 100644 index 000000000000..7a467ac1ad39 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/epson-workforce-635-nx625-series/default.nix @@ -0,0 +1,102 @@ +{ + autoreconfHook, cups, libjpeg, rpmextract, + fetchurl, lib, stdenv +}: + +let + srcdirs = { + filter = "epson-inkjet-printer-filter-1.0.0"; + driver = "epson-inkjet-printer-workforce-635-nx625-series-1.0.1"; + }; +in stdenv.mkDerivation rec { + pname = "epson-inkjet-printer-workforce-635-nx625-series"; + version = "1.0.1"; + + src = fetchurl { + # NOTE: Don't forget to update the webarchive link too! + urls = [ + "https://download.ebz.epson.net/dsc/op/stable/SRPMS/${pname}-${version}-1lsb3.2.src.rpm" + "https://web.archive.org/web/https://download.ebz.epson.net/dsc/op/stable/SRPMS/${pname}-${version}-1lsb3.2.src.rpm" + ]; + sha256 = "19nb2h0y9rvv6rg7j262f8sqap9kjvz8kmisxnjg1w0v19zb9zf2"; + }; + sourceRoot = srcdirs.filter; + + nativeBuildInputs = [ autoreconfHook rpmextract ]; + buildInputs = [ cups libjpeg ]; + + unpackPhase = '' + rpmextract "$src" + for i in ${lib.concatStringsSep " " (builtins.attrValues srcdirs)}; do + tar xvf "$i".tar.gz + done + ''; + + preConfigure = '' + chmod u+x configure + ''; + + installPhase = + let + filterdir = "$out/cups/lib/filter"; + docdir = "$out/share/doc"; + ppddir = "$out/share/cups/model/${pname}"; + libdir = + if stdenv.system == "x86_64-linux" then "lib64" + else if stdenv.system == "i686_linux" then "lib" + else throw "other platforms than i686_linux and x86_64-linux are not yet supported"; + in '' + mkdir -p "$out" "${docdir}" "${filterdir}" "${ppddir}" + cp src/epson_inkjet_printer_filter "${filterdir}" + + cd ../${srcdirs.driver} + for ppd in ppds/*; do + substituteInPlace "$ppd" --replace '/opt/${pname}' "$out" + gzip -c "$ppd" > "${ppddir}/''${ppd#*/}" + done + cp COPYING.EPSON README "${docdir}" + cp -r resource watermark ${libdir} "$out" + ''; + + meta = { + description = "Proprietary CUPS drivers for Epson inkjet printers"; + longDescription = '' + This software is a filter program used with Common UNIX Printing + System (CUPS) from the Linux. This can supply the high quality print + with Seiko Epson Color Ink Jet Printers. + + This printer driver is supporting the following printers. + + WorkForce 60 + WorkForce 625 + WorkForce 630 + WorkForce 633 + WorkForce 635 + WorkForce T42WD + Epson Stylus NX625 + Epson Stylus SX525WD + Epson Stylus SX620FW + Epson Stylus TX560WD + Epson Stylus Office B42WD + Epson Stylus Office BX525WD + Epson Stylus Office BX625FWD + Epson Stylus Office TX620FWD + Epson ME OFFICE 82WD + Epson ME OFFICE 85ND + Epson ME OFFICE 900WD + Epson ME OFFICE 960FWD + + License: LGPL and SEIKO EPSON CORPORATION SOFTWARE LICENSE AGREEMENT + + To use the driver adjust your configuration.nix file: + services.printing = { + enable = true; + drivers = [ pkgs.${pname} ]; + }; + ''; + downloadPage = "https://download.ebz.epson.net/dsc/du/02/DriverDownloadInfo.do?LG2=EN&CN2=&DSCMI=16857&DSCCHK=4334d3487503d7f916ccf5d58071b05b7687294f"; + license = with lib.licenses; [ lgpl21 epson ]; + maintainers = [ lib.maintainers.jorsn ]; + platforms = [ "x86_64-linux" "i686-linux" ]; + }; +} diff --git a/nixpkgs/pkgs/misc/drivers/epson_201207w/default.nix b/nixpkgs/pkgs/misc/drivers/epson_201207w/default.nix new file mode 100644 index 000000000000..d5c57b35c32e --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/epson_201207w/default.nix @@ -0,0 +1,77 @@ +{ lib, stdenv, fetchurl, rpmextract, autoreconfHook, file, libjpeg, cups }: + +let + version = "1.0.0"; +in + stdenv.mkDerivation { + + pname = "epson_201207w"; + inherit version; + + src = fetchurl { + # NOTE: Don't forget to update the webarchive link too! + urls = [ + "https://download.ebz.epson.net/dsc/op/stable/SRPMS/epson-inkjet-printer-201207w-${version}-1lsb3.2.src.rpm" + "https://web.archive.org/web/https://download.ebz.epson.net/dsc/op/stable/SRPMS/epson-inkjet-printer-201207w-${version}-1lsb3.2.src.rpm" + ]; + sha256 = "1ixnhn2dk83nh9v8sdivzgc2bm9z2phvsbx8bc6ainbjq6vn7lns"; + }; + + nativeBuildInputs = [ rpmextract autoreconfHook file ]; + + buildInputs = [ libjpeg cups ]; + + unpackPhase = '' + rpmextract $src + tar -zxf epson-inkjet-printer-201207w-${version}.tar.gz + tar -zxf epson-inkjet-printer-filter-${version}.tar.gz + for ppd in epson-inkjet-printer-201207w-${version}/ppds/*; do + substituteInPlace $ppd --replace "/opt/epson-inkjet-printer-201207w" "$out" + substituteInPlace $ppd --replace "/cups/lib" "/lib/cups" + done + cd epson-inkjet-printer-filter-${version} + ''; + + preConfigure = '' + chmod +x configure + export LDFLAGS="$LDFLAGS -Wl,--no-as-needed" + ''; + + postInstall = '' + cd ../epson-inkjet-printer-201207w-${version} + cp -a lib64 resource watermark $out + mkdir -p $out/share/cups/model/epson-inkjet-printer-201207w + cp -a ppds $out/share/cups/model/epson-inkjet-printer-201207w/ + cp -a Manual.txt $out/doc/ + cp -a README $out/doc/README.driver + ''; + + meta = with lib; { + homepage = "https://www.openprinting.org/driver/epson-201207w"; + description = "Epson printer driver (L110, L210, L300, L350, L355, L550, L555)"; + longDescription = '' + This software is a filter program used with the Common UNIX Printing + System (CUPS) under Linux. It supplies high quality printing with + Seiko Epson Color Ink Jet Printers. + + List of printers supported by this package: + Epson L110 Series + Epson L210 Series + Epson L300 Series + Epson L350 Series + Epson L355 Series + Epson L550 Series + Epson L555 Series + + To use the driver adjust your configuration.nix file: + services.printing = { + enable = true; + drivers = [ pkgs.epson_201207w ]; + }; + ''; + license = with licenses; [ lgpl21 epson ]; + maintainers = [ maintainers.romildo ]; + platforms = [ "x86_64-linux" ]; + }; + + } diff --git a/nixpkgs/pkgs/misc/drivers/epsonscan2/build.patch b/nixpkgs/pkgs/misc/drivers/epsonscan2/build.patch new file mode 100644 index 000000000000..6a916511b84a --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/epsonscan2/build.patch @@ -0,0 +1,91 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index a9daee7..7c6da08 100755 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -17,7 +17,6 @@ + # CMakeLists.txt -- template and derived ESC/I ESC/I-2 protocol commands + + project (epsonscan2) +-set (CMAKE_INSTALL_PREFIX "/usr") + cmake_minimum_required (VERSION 2.8.12.2) + + include(GNUInstallDirs) +@@ -86,7 +85,6 @@ set(COMMON_ETC_PATH ${CMAKE_INSTALL_FULL_SYSCONFDIR}) + set(EPSON_WORK_PATH /tmp/epsonWork/) + set(EPSON_SETTINGS_PATH $ENV{HOME}/.epsonscan2/) + +-SET (CMAKE_INSTALL_PREFIX /usr) + set(EPSON_INSTALL_PATH ${CMAKE_INSTALL_FULL_LIBDIR}/epsonscan2/) + set(COMMON_SHARE_PATH ${CMAKE_INSTALL_FULL_DATAROOTDIR}) + +@@ -113,8 +111,8 @@ add_subdirectory(src) + + install(DIRECTORY Resources DESTINATION ${EPSON_INSTALL_ROOT}${EPSON_INSTALL_PATH}) + +-install(FILES epsonscan2.rules DESTINATION ${EPSON_INSTALL_ROOT}/lib/udev/rules.d/ RENAME 60-epsonscan2.rules) +-install(FILES epsonscan2 DESTINATION ${EPSON_INSTALL_ROOT}/etc/sane.d/dll.d) ++install(FILES epsonscan2.rules DESTINATION ${EPSON_INSTALL_ROOT}${CMAKE_INSTALL_PREFIX}/lib/udev/rules.d/ RENAME 60-epsonscan2.rules) ++install(FILES epsonscan2 DESTINATION ${EPSON_INSTALL_ROOT}${CMAKE_INSTALL_PREFIX}/etc/sane.d/dll.d) + install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${EPSON_INSTALL_ROOT}${CMAKE_INSTALL_FULL_LIBDIR}/sane/)") + install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ../epsonscan2/libsane-epsonscan2.so ${EPSON_INSTALL_ROOT}${CMAKE_INSTALL_FULL_LIBDIR}/sane/libsane-epsonscan2.so.1)") + install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ../epsonscan2/libsane-epsonscan2.so ${EPSON_INSTALL_ROOT}${CMAKE_INSTALL_FULL_LIBDIR}/sane/libsane-epsonscan2.so.1.0.0)") +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index c884d83..5ddff0c 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -26,7 +26,9 @@ add_subdirectory(ES2Command/Linux) + add_subdirectory(ES2FileFormat/Linux) + add_subdirectory(Controller) + add_subdirectory(SaneWrapper/Linux) ++if (NOT DEFINED NO_GUI) + add_subdirectory(Standalone) + add_subdirectory(DetectAlert) ++endif () + add_subdirectory(ScanSDK) + +diff --git a/src/Controller/Src/Filter/GetOrientation.cpp b/src/Controller/Src/Filter/GetOrientation.cpp +index 387561e..15448ad 100644 +--- a/src/Controller/Src/Filter/GetOrientation.cpp ++++ b/src/Controller/Src/Filter/GetOrientation.cpp +@@ -12,14 +12,7 @@ namespace epsonscan + + static std::string GetExecPath() + { +-#ifdef AKBMODE +- std::string strDst = "/usr/libexec/"; +- strDst = strDst + DRIVER_NAME; +- strDst = strDst + "-ocr/ocr-engine-getrotate"; +- return strDst.c_str() ; +-#else +- return "/usr/libexec/epsonscan2-ocr/ocr-engine-getrotate" ; +-#endif ++ return "@OCR_ENGINE_GETROTATE@"; + } + static const int kMaxBuf = 256; + +diff --git a/src/Controller/Src/Scanner/Engine.cpp b/src/Controller/Src/Scanner/Engine.cpp +index 9489d4b..670bad9 100644 +--- a/src/Controller/Src/Scanner/Engine.cpp ++++ b/src/Controller/Src/Scanner/Engine.cpp +@@ -263,8 +263,8 @@ SDIError Engine::Open() + //kill es2netif + //kill es2intif + +- system("killall -9 -q es2netif > /dev/null"); +- system("killall -9 -q es2intif > /dev/null"); ++ system("@KILLALL@ -9 -q es2netif > /dev/null"); ++ system("@KILLALL@ -9 -q es2intif > /dev/null"); + + if (engine_) { + return ExchangeError(engine_->Open()); +diff --git a/src/Standalone/CMakeLists.txt b/src/Standalone/CMakeLists.txt +index eff3dd3..c2b3803 100644 +--- a/src/Standalone/CMakeLists.txt ++++ b/src/Standalone/CMakeLists.txt +@@ -167,5 +167,5 @@ target_link_libraries(es2standalone ${QT_LIBRARIES} + ) + + QT5_USE_MODULES(es2standalone Widgets) +-install(TARGETS es2standalone DESTINATION "${EPSON_INSTALL_ROOT}/usr/bin") ++install(TARGETS es2standalone DESTINATION "${EPSON_INSTALL_ROOT}${CMAKE_INSTALL_FULL_BINDIR}") + diff --git a/nixpkgs/pkgs/misc/drivers/epsonscan2/default.nix b/nixpkgs/pkgs/misc/drivers/epsonscan2/default.nix new file mode 100644 index 000000000000..69c4c03b95e6 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/epsonscan2/default.nix @@ -0,0 +1,161 @@ +{ lib +, stdenv +, autoPatchelfHook +, boost +, cmake +, copyDesktopItems +, imagemagick +, fetchpatch +, fetchzip +, killall +, libjpeg +, libpng +, libtiff +, libtool +, libusb1 +, makeDesktopItem +, qtbase +, wrapQtAppsHook + +, withGui ? true +, withNonFreePlugins ? false +}: + +let + pname = "epsonscan2"; + description = "Epson Scan 2 scanner driver for many modern Epson scanners and multifunction printers"; + version = "6.7.61.0"; + + system = stdenv.hostPlatform.system; + + src = fetchzip { + url = "https://download3.ebz.epson.net/dsc/f/03/00/14/53/67/1a6447b4acc5568dfd970feba0518fabea35bca2/epsonscan2-${version}-1.src.tar.gz"; + hash = "sha256-xwvdgmV6Mrs1RC18U2mA+HlTYybeYb0V5lz5hCvC7+8="; + }; + bundle = { + "i686-linux" = fetchzip { + name = "${pname}-bundle"; + url = "https://download3.ebz.epson.net/dsc/f/03/00/14/53/69/3151031c0fb4deea3f48781fd051411b983ccee4/epsonscan2-bundle-${version}.i686.deb.tar.gz"; + hash = "sha256-nq3Nqunt8aMcCf7U7JBYrVscvrhhcwcn8RlhYXLmC2c="; + }; + + "x86_64-linux" = fetchzip { + name = "${pname}-bundle"; + url = "https://download3.ebz.epson.net/dsc/f/03/00/14/53/68/a5e06101ba3f328dd747888e3dddebbb677bb8c8/epsonscan2-bundle-${version}.x86_64.deb.tar.gz"; + hash = "sha256-cFx54CKkZtvhZ5ABuBwB8+IzhT2lu8D3+GZFaMuWf3Y="; + }; + }."${system}" or (throw "Unsupported system: ${system}"); + +in +stdenv.mkDerivation { + inherit pname src version; + + patches = [ + ./build.patch + (fetchpatch { + url = "https://github.com/flathub/net.epson.epsonscan2/raw/master/patches/epsonscan2-crash.patch"; + hash = "sha256-srMxlFfnZuJ3ed5veFcJIiZuW27F/3xOS0yr4ywn4FI="; + }) + (fetchpatch { + url = "https://raw.githubusercontent.com/flathub/net.epson.epsonscan2/master/patches/epsonscan2-oob-container.patch"; + hash = "sha256-FhXZT0bIBYwdFow2USRJl8Q7j2eqpq98Hh0lHFQlUQY="; + }) + (fetchpatch { + url = "https://raw.githubusercontent.com/flathub/net.epson.epsonscan2/master/patches/epsonscan2-xdg-open.patch"; + hash = "sha256-4ih3vZjPwWiiAxKfpLIwbbsk1K2oXSuxGbT5PVwfUsc="; + }) + ]; + + postPatch = '' + substituteInPlace src/Controller/Src/Scanner/Engine.cpp \ + --replace '@KILLALL@' ${killall}/bin/killall + + substituteInPlace src/Controller/Src/Filter/GetOrientation.cpp \ + --replace '@OCR_ENGINE_GETROTATE@' $out/libexec/epsonscan2-ocr/ocr-engine-getrotate + ''; + + nativeBuildInputs = [ + cmake + ] ++ lib.optionals withGui [ + imagemagick # to make icons + wrapQtAppsHook + ] ++ lib.optionals withNonFreePlugins [ + autoPatchelfHook + ]; + + buildInputs = [ + boost + libjpeg + libpng + libtiff + libusb1 + ] ++ lib.optionals withGui [ + copyDesktopItems + qtbase + ] ++ lib.optionals withNonFreePlugins [ + libtool.lib + ]; + + cmakeFlags = [ + # The non-free (Debian) packages uses this directory structure so do the same when compiling + # from source so we can easily merge them. + "-DCMAKE_INSTALL_LIBDIR=lib/${system}-gnu" + ] ++ lib.optionals (!withGui) [ + "-DNO_GUI=ON" + ]; + + postInstall = '' + # But when we put all the libraries in lib/${system}-gnu, then SANE can't find the + # required libraries so create a symlink to where it expects them to be. + mkdir -p $out/lib/sane + for file in $out/lib/${system}-gnu/sane/*.so.*; do + ln -s $file $out/lib/sane/ + done + '' + lib.optionalString withGui '' + # The icon file extension is .ico but it's actually a png! + mkdir -p $out/share/icons/hicolor/{48x48,128x128}/apps + convert $src/Resources/Icons/escan2_app.ico -resize 48x48 $out/share/icons/hicolor/48x48/apps/epsonscan2.png + convert $src/Resources/Icons/escan2_app.ico -resize 128x128 $out/share/icons/hicolor/128x128/apps/epsonscan2.png + '' + lib.optionalString withNonFreePlugins '' + ar xf ${bundle}/plugins/epsonscan2-non-free-plugin_*.deb + tar Jxf data.tar.xz + cp -r usr/* $out + ''; + + desktopItems = lib.optionals withGui [ + (makeDesktopItem { + name = pname; + exec = "epsonscan2"; + icon = "epsonscan2"; + desktopName = "Epson Scan 2"; + genericName = "Epson Scan 2"; + comment = description; + categories = [ "Graphics" "Scanning" ]; + }) + ]; + + meta = { + inherit description; + longDescription = '' + Epson Scan 2 scanner driver including optional non-free plugins such as OCR and network + scanning. + + To use the SANE backend: + <literal> + hardware.sane.extraBackends = [ pkgs.epsonscan2 ]; + </literal> + + Overrides can be used to customise this package. For example, to enable non-free plugins and + disable the Epson GUI: + <literal> + pkgs.epsonscan2.override { withNonFreePlugins = true; withGui = false; } + </literal> + ''; + homepage = "https://support.epson.net/linux/en/epsonscan2.php"; + platforms = [ "i686-linux" "x86_64-linux" ]; + sourceProvenance = with lib.sourceTypes; [ fromSource ] ++ lib.optionals withNonFreePlugins [ binaryNativeCode ]; + license = with lib.licenses; if withNonFreePlugins then unfree else lgpl21Plus; + maintainers = with lib.maintainers; [ james-atkins ]; + }; +} + diff --git a/nixpkgs/pkgs/misc/drivers/foo2zjs/default.nix b/nixpkgs/pkgs/misc/drivers/foo2zjs/default.nix new file mode 100644 index 000000000000..91f6d98e9d55 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/foo2zjs/default.nix @@ -0,0 +1,76 @@ +{ lib, stdenv, fetchurl, foomatic-filters, bc, ghostscript, systemd, vim, time }: + +stdenv.mkDerivation rec { + pname = "foo2zjs"; + version = "20210116"; + + src = fetchurl { + url = "http://www.loegria.net/mirrors/foo2zjs/foo2zjs-${version}.tar.gz"; + sha256 = "14x3wizvncdy0xgvmcx541qanwb7bg76abygqy17bxycn1zh5r1x"; + }; + + buildInputs = [ foomatic-filters bc ghostscript systemd vim ]; + + patches = [ + ./no-hardcode-fw.diff + # Support HBPL1 printers. Updated patch based on + # https://www.dechifro.org/hbpl/ + ./hbpl1.patch + # Fix "Unimplemented paper code" error for hbpl1 printers + # https://github.com/mikerr/foo2zjs/pull/2 + ./papercode-format-fix.patch + # Fix AirPrint color printing for Dell 1250c + # See https://github.com/OpenPrinting/cups/issues/272 + ./dell1250c-color-fix.patch + ]; + + makeFlags = [ + "PREFIX=$(out)" + "APPL=$(out)/share/applications" + "PIXMAPS=$(out)/share/pixmaps" + "UDEVBIN=$(out)/bin" + "UDEVDIR=$(out)/etc/udev/rules.d" + "UDEVD=${systemd}/sbin/udevd" + "LIBUDEVDIR=$(out)/lib/udev/rules.d" + "USBDIR=$(out)/etc/hotplug/usb" + "FOODB=$(out)/share/foomatic/db/source" + "MODEL=$(out)/share/cups/model" + ]; + + installFlags = [ "install-hotplug" ]; + + postPatch = '' + touch all-test + sed -e "/BASENAME=/iPATH=$out/bin:$PATH" -i *-wrapper *-wrapper.in + sed -e "s@PREFIX=/usr@PREFIX=$out@" -i *-wrapper{,.in} + sed -e "s@/usr/share@$out/share@" -i hplj10xx_gui.tcl + sed -e "s@\[.*-x.*/usr/bin/logger.*\]@type logger >/dev/null 2>\&1@" -i *wrapper{,.in} + sed -e '/install-usermap/d' -i Makefile + sed -e "s@/etc/hotplug/usb@$out&@" -i *rules* + sed -e "s@/usr@$out@g" -i hplj1020.desktop + sed -e "/PRINTERID=/s@=.*@=$out/bin/usb_printerid@" -i hplj1000 + ''; + + nativeCheckInputs = [ time ]; + doCheck = false; # fails to find its own binary. Also says "Tests will pass only if you are using ghostscript-8.71-16.fc14". + + preInstall = '' + mkdir -pv $out/{etc/udev/rules.d,lib/udev/rules.d,etc/hotplug/usb} + mkdir -pv $out/share/foomatic/db/source/{opt,printer,driver} + mkdir -pv $out/share/cups/model + mkdir -pv $out/share/{applications,pixmaps} + + mkdir -pv "$out/bin" + cp -v getweb arm2hpdl "$out/bin" + ''; + + meta = with lib; { + description = "ZjStream printer drivers"; + maintainers = with maintainers; + [ + raskin + ]; + platforms = platforms.linux; + license = licenses.gpl2Plus; + }; +} diff --git a/nixpkgs/pkgs/misc/drivers/foo2zjs/dell1250c-color-fix.patch b/nixpkgs/pkgs/misc/drivers/foo2zjs/dell1250c-color-fix.patch new file mode 100644 index 000000000000..4cef4f00ab57 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/foo2zjs/dell1250c-color-fix.patch @@ -0,0 +1,29 @@ +diff --git a/PPD/Dell-1250c.ppd b/PPD/Dell-1250c.ppd +index 828ecd6..98f49e1 100644 +--- a/PPD/Dell-1250c.ppd ++++ b/PPD/Dell-1250c.ppd +@@ -92,15 +92,15 @@ + *FoomaticRIPOptionSetting Quality=normal: " " + *CloseUI: *Quality + +-*OpenUI *ColorMode/Color Mode: PickOne +-*FoomaticRIPOption ColorMode: enum CmdLine A +-*OrderDependency: 120 AnySetup *ColorMode +-*DefaultColorMode: Monochrome +-*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +-*FoomaticRIPOptionSetting ColorMode=Color: "-c " +-*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +-*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +-*CloseUI: *ColorMode ++*OpenUI *ColorModel/Color Mode: PickOne ++*FoomaticRIPOption ColorModel: enum CmdLine A ++*OrderDependency: 120 AnySetup *ColorModel ++*DefaultColorModel: RGB ++*ColorModel RGB/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" ++*FoomaticRIPOptionSetting ColorModel=RGB: "-c " ++*ColorModel Gray/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" ++*FoomaticRIPOptionSetting ColorModel=Gray: " " ++*CloseUI: *ColorModel + + *OpenUI *PageSize/Page Size: PickOne + *FoomaticRIPOption PageSize: enum CmdLine A diff --git a/nixpkgs/pkgs/misc/drivers/foo2zjs/hbpl1.patch b/nixpkgs/pkgs/misc/drivers/foo2zjs/hbpl1.patch new file mode 100644 index 000000000000..7372e164affa --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/foo2zjs/hbpl1.patch @@ -0,0 +1,4676 @@ +--- foo2zjs/ChangeLog 2021-09-27 16:25:00.735904476 +0200 ++++ foo2zjs/ChangeLog 2021-09-27 16:34:10.661647070 +0200 +@@ -89,10 +89,35 @@ + 2014-04-08 Rick Richardson <rick.richardson@comcast.net> + * Upgrade to JBIGKIT 2.1 + ++2014-04-04 Dave Coffin <dcoffin@cybercom.net> ++ * fixed all known bugs in foo2hbpl1.c. It now print multi-page ++ color and grayscale documents without resetting printer. ++ + 2014-04-01 Rick Richardson <rick.richardson@comcast.net> +- * foo2hbpl2 foomatic-db files and PPDs: ++ * foo2hbpl1, foo2hbpl2 foomatic-db files and PPDs: + Bug with default PageSize. +- PLEASE delete and recreate the foo2hbpl2 printers. ++ PLEASE delete and recreate the foo2hbpl1, foo2hbpl2 printers. ++ ++2014-03-30 Rick Richardson <rick.richardson@comcast.net> ++ * foo2hbpl1.c: Cleanup the code ++ ++2014-03-25 Rick Richardson <rick.richardson@comcast.net> ++ * foomatic and PPD stuff for foo2hbpl1 printers: Halftone and ICM ++ ++2014-03-24 Rick Richardson <rick.richardson@comcast.net> ++ * foomatic and PPD stuff for foo2hbpl1 printers ++ preliminary for: Dell 1250c, Dell C1660w, Dell C1760nw, ++ Epson AcuLaser C1700, Fuji-Xerox DocuPrint CP105b ++ * foo2hbpl1-wrapper: allow for gs 7.x or gs 8.x ++ ++2014-03-24 Dave Coffin <dcoffin@cybercom.net> ++ * foo2hbpl1, foo2hbpl1-wrapper, et al: first cut at revision 1 ++ stuff. Color works, mono doesn't. No multiple pages. Printer ++ shows: ++ Restart Printer ++ Contact Support ++ IfMessageReturns ++ 016-313 + + 2014-03-22 Rick Richardson <rick.richardson@comcast.net> + * hbpldecode: another redundancy from Dave Coffin +--- foo2zjs/Makefile 2020-11-27 20:57:33.000000000 +0100 ++++ foo2zjs/Makefile 2021-09-27 16:56:23.363346705 +0200 +@@ -148,6 +148,8 @@ + foo2hiperc.c \ + foo2hiperc.1in \ + hbpl.h \ ++ foo2hbpl1.c \ ++ foo2hbpl1.1in \ + foo2hbpl2.c \ + foo2hbpl2.1in \ + foo2ddst.c \ +@@ -187,6 +189,8 @@ + foo2slx-wrapper.1in \ + foo2hiperc-wrapper.in \ + foo2hiperc-wrapper.1in \ ++ foo2hbpl1-wrapper.in \ ++ foo2hbpl1-wrapper.1in \ + foo2hbpl2-wrapper.in \ + foo2hbpl2-wrapper.1in \ + foo2ddst-wrapper.in \ +@@ -267,7 +271,7 @@ + PROGS+= foo2oak oakdecode + PROGS+= foo2slx slxdecode + PROGS+= foo2hiperc hipercdecode +-PROGS+= foo2hbpl2 hbpldecode ++PROGS+= foo2hbpl1 foo2hbpl2 hbpldecode + PROGS+= gipddecode + PROGS+= foo2ddst ddstdecode + ifneq ($(CUPS_SERVERBIN),) +@@ -279,7 +283,7 @@ + endif + SHELLS= foo2zjs-wrapper foo2oak-wrapper foo2hp2600-wrapper \ + foo2xqx-wrapper foo2lava-wrapper foo2qpdl-wrapper \ +- foo2slx-wrapper foo2hiperc-wrapper foo2hbpl2-wrapper \ ++ foo2slx-wrapper foo2hiperc-wrapper foo2hbpl1-wrapper foo2hbpl2-wrapper \ + foo2ddst-wrapper + SHELLS+= foo2zjs-pstops + SHELLS+= printer-profile +@@ -291,7 +295,7 @@ + MANPAGES+= foo2qpdl-wrapper.1 foo2qpdl.1 qpdldecode.1 + MANPAGES+= foo2slx-wrapper.1 foo2slx.1 slxdecode.1 + MANPAGES+= foo2hiperc-wrapper.1 foo2hiperc.1 hipercdecode.1 +-MANPAGES+= foo2hbpl2-wrapper.1 foo2hbpl2.1 hbpldecode.1 ++MANPAGES+= foo2hbpl1-wrapper.1 foo2hbpl1.1 foo2hbpl2-wrapper.1 foo2hbpl2.1 hbpldecode.1 + MANPAGES+= foo2ddst-wrapper.1 foo2ddst.1 ddstdecode.1 + MANPAGES+= gipddecode.1 + MANPAGES+= foo2zjs-pstops.1 arm2hpdl.1 usb_printerid.1 +@@ -485,6 +489,9 @@ + foo2ddst: foo2ddst.o $(LIBJBG) + $(CC) $(CFLAGS) -o $@ foo2ddst.o $(LIBJBG) + ++foo2hbpl1: foo2hbpl1.o ++ $(CC) $(CFLAGS) -o $@ foo2hbpl1.o ++ + foo2hbpl2: foo2hbpl2.o $(LIBJBG) + $(CC) $(CFLAGS) -o $@ foo2hbpl2.o $(LIBJBG) + +@@ -519,6 +526,12 @@ + -e 's@^PREFIX=.*@PREFIX=$(PREFIX)@' || (rm -f $@ && exit 1) + chmod 555 $@ + ++foo2hbpl1-wrapper: foo2hbpl1-wrapper.in Makefile ++ [ ! -f $@ ] || chmod +w $@ ++ sed < $@.in > $@ \ ++ -e 's@^PREFIX=.*@PREFIX=$(PREFIX)@' || (rm -f $@ && exit 1) ++ chmod 555 $@ ++ + foo2hbpl2-wrapper: foo2hbpl2-wrapper.in Makefile + [ ! -f $@ ] || chmod +w $@ + sed < $@.in > $@ \ +@@ -1231,6 +1244,7 @@ + -rm -f /usr/bin/foo2slx-wrapper /usr/bin/foo2slx /usr/bin/slxdecode + -rm -f /usr/bin/foo2hiperc-wrapper /usr/bin/foo2hiperc + -rm -f /usr/bin/hipercdecode ++ -rm -f /usr/bin/foo2hbpl1-wrapper /usr/bin/foo2hbpl1 + -rm -f /usr/bin/foo2hbpl2-wrapper /usr/bin/foo2hbpl2 + -rm -f /usr/bin/hbpldecode + -rm -f /usr/bin/foo2ddst-wrapper /usr/bin/foo2ddst /usr/bin/ddstdecode +@@ -1265,7 +1279,7 @@ + -rm -f foo2qpdl.o qpdldecode.o + -rm -f foo2slx.o slxdecode.o + -rm -f foo2hiperc.o hipercdecode.o +- -rm -f foo2hbpl2.o hbpldecode.o ++ -rm -f foo2hbpl1.o foo2hbpl2.o hbpldecode.o + -rm -f opldecode.o gipddecode.o + -rm -f foo2dsst.o ddstdecode.o + -rm -f command2foo2lava-pjl.o +@@ -1513,6 +1527,10 @@ + *C3530*) driver=foo2hiperc;; \ + *C5[12568][05]0*) driver=foo2hiperc;; \ + *CLP*|*CLX*|*6110*) driver=foo2qpdl;; \ ++ *1250*) driver=foo2hbpl1;; \ ++ *1660*|*1760*) driver=foo2hbpl1;; \ ++ *C1700*) driver=foo2hbpl1;; \ ++ *CP105*) driver=foo2hbpl1;; \ + *ML-167*) driver=foo2qpdl;; \ + *6015*|*1355*) driver=foo2hbpl2;; \ + *C1765*) driver=foo2hbpl2;; \ +@@ -1607,6 +1625,8 @@ + $(INSTALL) -c -m 644 foo2hiperc.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 foo2hiperc-wrapper.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 hipercdecode.1 $(MANDIR)/man1/ ++ $(INSTALL) -c -m 644 foo2hbpl1.1 $(MANDIR)/man1/ ++ $(INSTALL) -c -m 644 foo2hbpl1-wrapper.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 foo2hbpl2.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 foo2hbpl2-wrapper.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 hbpldecode.1 $(MANDIR)/man1/ +--- foo2zjs/PPD/Dell-1250c.ppd 1970-01-01 00:00:00.000000000 +0000 ++++ foo2zjs/PPD/Dell-1250c.ppd 2014-04-01 11:06:30.000000000 +0000 +@@ -0,0 +1,433 @@ ++*PPD-Adobe: "4.3" ++*% ++*% For information on using this, and to obtain the required backend ++*% script, consult http://www.openprinting.org/ ++*% ++*% This file is published under the GNU General Public License ++*% ++*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with ++*% all programs and environments which use PPD files for dealing with ++*% printer capability information. The printer must be configured with the ++*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This ++*% file and "foomatic-rip" work together to support PPD-controlled printer ++*% driver option access with arbitrary free software printer drivers and ++*% printing spoolers. ++*% ++*% To save this file on your disk, wait until the download has completed ++*% (the animation of the browser logo must stop) and then use the ++*% "Save as..." command in the "File" menu of your browser or in the ++*% pop-up manu when you click on this document with the right mouse button. ++*% DO NOT cut and paste this file into an editor with your mouse. This can ++*% introduce additional line breaks which lead to unexpected results. ++*% ++*% You may save this file as 'Dell-1250c-foo2hbpl1.ppd' ++*% ++*% ++*FormatVersion: "4.3" ++*FileVersion: "1.1" ++*LanguageVersion: English ++*LanguageEncoding: ISOLatin1 ++*PCFileName: "FOO2HBPL.PPD" ++*Manufacturer: "Dell" ++*Product: "(1250c)" ++*cupsVersion: 1.0 ++*cupsManualCopies: True ++*cupsModelNumber: 2 ++*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" ++*%pprRIP: foomatic-rip other ++*ModelName: "Dell 1250c" ++*ShortNickName: "Dell 1250c foo2hbpl1" ++*NickName: "Dell 1250c Foomatic/foo2hbpl1 (recommended)" ++*PSVersion: "(3010.000) 550" ++*PSVersion: "(3010.000) 651" ++*PSVersion: "(3010.000) 652" ++*PSVersion: "(3010.000) 653" ++*PSVersion: "(3010.000) 704" ++*PSVersion: "(3010.000) 705" ++*PSVersion: "(3010.000) 800" ++*LanguageLevel: "3" ++*ColorDevice: True ++*DefaultColorSpace: RGB ++*FileSystem: False ++*Throughput: "1" ++*LandscapeOrientation: Plus90 ++*TTRasterizer: Type42 ++*1284DeviceID: "DRV:Dfoo2hbpl1,R1,M0,TF;" ++ ++*driverName foo2hbpl1/foo2hbpl1: "" ++*driverType F/Filter: "" ++*driverUrl: "http://foo2hbpl.rkkda.com/" ++*driverObsolete: False ++ ++ ++ ++ ++*HWMargins: 9 12.00 9 12 ++*VariablePaperSize: True ++*MaxMediaWidth: 100000 ++*MaxMediaHeight: 100000 ++*NonUIOrderDependency: 135 AnySetup *CustomPageSize ++*CustomPageSize True: "pop pop pop pop pop ++%% FoomaticRIPOptionSetting: PageSize=Custom" ++*End ++*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " ++*ParamCustomPageSize Width: 1 points 36 100000 ++*ParamCustomPageSize Height: 2 points 36 100000 ++*ParamCustomPageSize Orientation: 3 int 0 0 ++*ParamCustomPageSize WidthOffset: 4 points 0 0 ++*ParamCustomPageSize HeightOffset: 5 points 0 0 ++ ++*FoomaticIDs: Dell-1250c foo2hbpl1 ++*FoomaticRIPCommandLine: "foo2hbpl1-wrapper %A" ++ ++*OpenGroup: General/General ++ ++*OpenUI *Quality/Printing Quality: PickOne ++*FoomaticRIPOption Quality: enum CmdLine A ++*OrderDependency: 110 AnySetup *Quality ++*DefaultQuality: normal ++*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" ++*FoomaticRIPOptionSetting Quality=draft: " -t " ++*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" ++*FoomaticRIPOptionSetting Quality=normal: " " ++*CloseUI: *Quality ++ ++*OpenUI *ColorMode/Color Mode: PickOne ++*FoomaticRIPOption ColorMode: enum CmdLine A ++*OrderDependency: 120 AnySetup *ColorMode ++*DefaultColorMode: Monochrome ++*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" ++*FoomaticRIPOptionSetting ColorMode=Color: "-c " ++*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" ++*FoomaticRIPOptionSetting ColorMode=Monochrome: " " ++*CloseUI: *ColorMode ++ ++*OpenUI *PageSize/Page Size: PickOne ++*FoomaticRIPOption PageSize: enum CmdLine A ++*OrderDependency: 135 AnySetup *PageSize ++*DefaultPageSize: Letter ++*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" ++*FoomaticRIPOptionSetting PageSize=Letter: "-p4 " ++*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" ++*FoomaticRIPOptionSetting PageSize=A4: "-p1 " ++*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" ++*FoomaticRIPOptionSetting PageSize=B5jis: "-p2 " ++*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" ++*FoomaticRIPOptionSetting PageSize=Env10: "-p9 " ++*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" ++*FoomaticRIPOptionSetting PageSize=EnvC5: "-p11 " ++*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" ++*FoomaticRIPOptionSetting PageSize=EnvDL: "-p12 " ++*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" ++*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p10 " ++*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" ++*FoomaticRIPOptionSetting PageSize=Executive: "-p5 " ++*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" ++*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p6 " ++*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" ++*FoomaticRIPOptionSetting PageSize=Folio: "-p6 " ++*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" ++*FoomaticRIPOptionSetting PageSize=Legal: "-p7 " ++*CloseUI: *PageSize ++ ++*OpenUI *PageRegion: PickOne ++*OrderDependency: 135 AnySetup *PageRegion ++*DefaultPageRegion: Letter ++*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" ++*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" ++*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" ++*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" ++*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" ++*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" ++*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" ++*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" ++*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" ++*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" ++*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" ++*CloseUI: *PageRegion ++ ++*DefaultImageableArea: Letter ++*ImageableArea Letter/Letter: "9 12.00 603 780.00" ++*ImageableArea A4/A4: "9 12.00 586 830.00" ++*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" ++*ImageableArea Env10/Env #10: "9 12.00 288 672.00" ++*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" ++*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" ++*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" ++*ImageableArea Executive/Executive: "9 12.00 513 744.00" ++*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "9 12.00 603 996.00" ++*ImageableArea Folio/Folio: "9 12.00 603 924.00" ++*ImageableArea Legal/Legal: "9 12.00 603 996.00" ++ ++*DefaultPaperDimension: Letter ++*PaperDimension Letter/Letter: "612 792" ++*PaperDimension A4/A4: "595 842" ++*PaperDimension B5jis/B5 (JIS): "518 727" ++*PaperDimension Env10/Env #10: "297 684" ++*PaperDimension EnvC5/Env C5: "459 649" ++*PaperDimension EnvDL/Env DL: "311 623" ++*PaperDimension EnvMonarch/Env Monarch: "279 540" ++*PaperDimension Executive/Executive: "522 756" ++*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" ++*PaperDimension Folio/Folio: "612 936" ++*PaperDimension Legal/Legal: "612 1008" ++ ++*OpenUI *MediaType/Media Type: PickOne ++*FoomaticRIPOption MediaType: enum CmdLine A ++*OrderDependency: 150 AnySetup *MediaType ++*DefaultMediaType: plain ++*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" ++*FoomaticRIPOptionSetting MediaType=plain: "-m1 " ++*MediaType plain2/Plain Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=plain2" ++*FoomaticRIPOptionSetting MediaType=plain2: "-m8 " ++*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" ++*FoomaticRIPOptionSetting MediaType=bond: "-m2 " ++*MediaType bond2/Bond Side 2: "%% FoomaticRIPOptionSetting: MediaType=bond2" ++*FoomaticRIPOptionSetting MediaType=bond2: "-m9 " ++*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" ++*FoomaticRIPOptionSetting MediaType=envelope: "-m6 " ++*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" ++*FoomaticRIPOptionSetting MediaType=labels: "-m5 " ++*MediaType lwcard/Light Weight Card: "%% FoomaticRIPOptionSetting: MediaType=lwcard" ++*FoomaticRIPOptionSetting MediaType=lwcard: "-m3 " ++*MediaType lwcard2/Light Weight Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwcard2" ++*FoomaticRIPOptionSetting MediaType=lwcard2: "-m10 " ++*MediaType lwgcard/Light Weight Glossy Card: "%% FoomaticRIPOptionSetting: MediaType=lwgcard" ++*FoomaticRIPOptionSetting MediaType=lwgcard: "-m4 " ++*MediaType lwgcard2/Light Weight Glossy Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwgcard2" ++*FoomaticRIPOptionSetting MediaType=lwgcard2: "-m11 " ++*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" ++*FoomaticRIPOptionSetting MediaType=recycled: "-m7 " ++*MediaType recycled2/Recycled Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=recycled2" ++*FoomaticRIPOptionSetting MediaType=recycled2: "-m12 " ++*CloseUI: *MediaType ++ ++*OpenUI *Copies/Copies: PickOne ++*FoomaticRIPOption Copies: int CmdLine A ++*FoomaticRIPOptionPrototype Copies: "-n%s " ++*FoomaticRIPOptionRange Copies: 1 100 ++*OrderDependency: 220 AnySetup *Copies ++*DefaultCopies: 1 ++*FoomaticRIPDefaultCopies: 1 ++*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" ++*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" ++*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" ++*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" ++*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" ++*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" ++*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" ++*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" ++*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" ++*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" ++*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" ++*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" ++*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" ++*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" ++*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" ++*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" ++*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" ++*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" ++*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" ++*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" ++*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" ++*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" ++*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" ++*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" ++*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" ++*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" ++*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" ++*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" ++*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" ++*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" ++*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" ++*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" ++*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" ++*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" ++*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" ++*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" ++*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" ++*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" ++*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" ++*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" ++*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" ++*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" ++*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" ++*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" ++*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" ++*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" ++*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" ++*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" ++*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" ++*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" ++*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" ++*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" ++*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" ++*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" ++*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" ++*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" ++*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" ++*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" ++*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" ++*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" ++*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" ++*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" ++*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" ++*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" ++*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" ++*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" ++*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" ++*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" ++*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" ++*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" ++*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" ++*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" ++*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" ++*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" ++*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" ++*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" ++*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" ++*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" ++*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" ++*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" ++*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" ++*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" ++*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" ++*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" ++*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" ++*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" ++*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" ++*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" ++*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" ++*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" ++*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" ++*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" ++*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" ++*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" ++*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" ++*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" ++*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" ++*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" ++*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" ++*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" ++*CloseUI: *Copies ++ ++*CloseGroup: General ++ ++*OpenGroup: Adjustment/Adjustment ++ ++*OpenUI *halftone/Halftone Algorithm: PickOne ++*FoomaticRIPOption halftone: enum CmdLine A ++*OrderDependency: 110 AnySetup *halftone ++*Defaulthalftone: default ++*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" ++*FoomaticRIPOptionSetting halftone=default: " " ++*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" ++*FoomaticRIPOptionSetting halftone=as: " -qas " ++*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" ++*FoomaticRIPOptionSetting halftone=standard: " -q1 " ++*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" ++*FoomaticRIPOptionSetting halftone=wts: " -qwts " ++*CloseUI: *halftone ++ ++*OpenUI *ICM/ICM Color Profile: PickOne ++*FoomaticRIPOption ICM: enum CmdLine A ++*OrderDependency: 300 AnySetup *ICM ++*DefaultICM: none ++*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" ++*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " ++*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" ++*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " ++*ICM testing2/File testing2.icm: "%% FoomaticRIPOptionSetting: ICM=testing2" ++*FoomaticRIPOptionSetting ICM=testing2: "-C10 -Gtesting2.icm " ++*ICM testing3/File testing3.icm: "%% FoomaticRIPOptionSetting: ICM=testing3" ++*FoomaticRIPOptionSetting ICM=testing3: "-C10 -Gtesting3.icm " ++*CloseUI: *ICM ++ ++*CloseGroup: Adjustment ++ ++*OpenGroup: Miscellaneous/Miscellaneous ++ ++*OpenUI *NupOrient/N-up Orientation: PickOne ++*FoomaticRIPOption NupOrient: enum CmdLine A ++*OrderDependency: 200 AnySetup *NupOrient ++*DefaultNupOrient: port ++*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" ++*FoomaticRIPOptionSetting NupOrient=land: "-ol " ++*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" ++*FoomaticRIPOptionSetting NupOrient=port: " " ++*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" ++*FoomaticRIPOptionSetting NupOrient=sea: "-os " ++*CloseUI: *NupOrient ++ ++*OpenUI *NupPages/N-up Printing: PickOne ++*FoomaticRIPOption NupPages: enum CmdLine A ++*OrderDependency: 200 AnySetup *NupPages ++*DefaultNupPages: 1up ++*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" ++*FoomaticRIPOptionSetting NupPages=1up: " " ++*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" ++*FoomaticRIPOptionSetting NupPages=2up: "-2 " ++*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" ++*FoomaticRIPOptionSetting NupPages=3up: "-3 " ++*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" ++*FoomaticRIPOptionSetting NupPages=4up: "-4 " ++*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" ++*FoomaticRIPOptionSetting NupPages=6up: "-6 " ++*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" ++*FoomaticRIPOptionSetting NupPages=8up: "-8 " ++*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" ++*FoomaticRIPOptionSetting NupPages=10up: "-10 " ++*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" ++*FoomaticRIPOptionSetting NupPages=12up: "-12 " ++*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" ++*FoomaticRIPOptionSetting NupPages=14up: "-14 " ++*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" ++*FoomaticRIPOptionSetting NupPages=15up: "-15 " ++*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" ++*FoomaticRIPOptionSetting NupPages=16up: "-16 " ++*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" ++*FoomaticRIPOptionSetting NupPages=18up: "-18 " ++*CloseUI: *NupPages ++ ++*CloseGroup: Miscellaneous ++ ++ ++*% Generic boilerplate PPD stuff as standard PostScript fonts and so on ++ ++*DefaultFont: Courier ++*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM ++*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM ++*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM ++*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM ++*Font Bookman-Demi: Standard "(001.004S)" Standard ROM ++*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM ++*Font Bookman-Light: Standard "(001.004S)" Standard ROM ++*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM ++*Font Courier: Standard "(002.004S)" Standard ROM ++*Font Courier-Bold: Standard "(002.004S)" Standard ROM ++*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM ++*Font Courier-Oblique: Standard "(002.004S)" Standard ROM ++*Font Helvetica: Standard "(001.006S)" Standard ROM ++*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM ++*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM ++*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM ++*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM ++*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM ++*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM ++*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM ++*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM ++*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM ++*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM ++*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM ++*Font Palatino-Bold: Standard "(001.005S)" Standard ROM ++*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM ++*Font Palatino-Italic: Standard "(001.005S)" Standard ROM ++*Font Palatino-Roman: Standard "(001.005S)" Standard ROM ++*Font Symbol: Special "(001.007S)" Special ROM ++*Font Times-Bold: Standard "(001.007S)" Standard ROM ++*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM ++*Font Times-Italic: Standard "(001.007S)" Standard ROM ++*Font Times-Roman: Standard "(001.007S)" Standard ROM ++*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM ++*Font ZapfDingbats: Special "(001.004S)" Standard ROM ++ +--- foo2zjs/PPD/Dell-C1660.ppd 1970-01-01 00:00:00.000000000 +0000 ++++ foo2zjs/PPD/Dell-C1660.ppd 2014-04-01 11:06:30.000000000 +0000 +@@ -0,0 +1,433 @@ ++*PPD-Adobe: "4.3" ++*% ++*% For information on using this, and to obtain the required backend ++*% script, consult http://www.openprinting.org/ ++*% ++*% This file is published under the GNU General Public License ++*% ++*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with ++*% all programs and environments which use PPD files for dealing with ++*% printer capability information. The printer must be configured with the ++*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This ++*% file and "foomatic-rip" work together to support PPD-controlled printer ++*% driver option access with arbitrary free software printer drivers and ++*% printing spoolers. ++*% ++*% To save this file on your disk, wait until the download has completed ++*% (the animation of the browser logo must stop) and then use the ++*% "Save as..." command in the "File" menu of your browser or in the ++*% pop-up manu when you click on this document with the right mouse button. ++*% DO NOT cut and paste this file into an editor with your mouse. This can ++*% introduce additional line breaks which lead to unexpected results. ++*% ++*% You may save this file as 'Dell-C1660-foo2hbpl1.ppd' ++*% ++*% ++*FormatVersion: "4.3" ++*FileVersion: "1.1" ++*LanguageVersion: English ++*LanguageEncoding: ISOLatin1 ++*PCFileName: "FOO2HBPL.PPD" ++*Manufacturer: "Dell" ++*Product: "(C1660)" ++*cupsVersion: 1.0 ++*cupsManualCopies: True ++*cupsModelNumber: 2 ++*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" ++*%pprRIP: foomatic-rip other ++*ModelName: "Dell C1660" ++*ShortNickName: "Dell C1660 foo2hbpl1" ++*NickName: "Dell C1660 Foomatic/foo2hbpl1 (recommended)" ++*PSVersion: "(3010.000) 550" ++*PSVersion: "(3010.000) 651" ++*PSVersion: "(3010.000) 652" ++*PSVersion: "(3010.000) 653" ++*PSVersion: "(3010.000) 704" ++*PSVersion: "(3010.000) 705" ++*PSVersion: "(3010.000) 800" ++*LanguageLevel: "3" ++*ColorDevice: True ++*DefaultColorSpace: RGB ++*FileSystem: False ++*Throughput: "1" ++*LandscapeOrientation: Plus90 ++*TTRasterizer: Type42 ++*1284DeviceID: "DRV:Dfoo2hbpl1,R1,M0,TF;" ++ ++*driverName foo2hbpl1/foo2hbpl1: "" ++*driverType F/Filter: "" ++*driverUrl: "http://foo2hbpl.rkkda.com/" ++*driverObsolete: False ++ ++ ++ ++ ++*HWMargins: 9 12.00 9 12 ++*VariablePaperSize: True ++*MaxMediaWidth: 100000 ++*MaxMediaHeight: 100000 ++*NonUIOrderDependency: 135 AnySetup *CustomPageSize ++*CustomPageSize True: "pop pop pop pop pop ++%% FoomaticRIPOptionSetting: PageSize=Custom" ++*End ++*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " ++*ParamCustomPageSize Width: 1 points 36 100000 ++*ParamCustomPageSize Height: 2 points 36 100000 ++*ParamCustomPageSize Orientation: 3 int 0 0 ++*ParamCustomPageSize WidthOffset: 4 points 0 0 ++*ParamCustomPageSize HeightOffset: 5 points 0 0 ++ ++*FoomaticIDs: Dell-C1660 foo2hbpl1 ++*FoomaticRIPCommandLine: "foo2hbpl1-wrapper %A" ++ ++*OpenGroup: General/General ++ ++*OpenUI *Quality/Printing Quality: PickOne ++*FoomaticRIPOption Quality: enum CmdLine A ++*OrderDependency: 110 AnySetup *Quality ++*DefaultQuality: normal ++*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" ++*FoomaticRIPOptionSetting Quality=draft: " -t " ++*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" ++*FoomaticRIPOptionSetting Quality=normal: " " ++*CloseUI: *Quality ++ ++*OpenUI *ColorMode/Color Mode: PickOne ++*FoomaticRIPOption ColorMode: enum CmdLine A ++*OrderDependency: 120 AnySetup *ColorMode ++*DefaultColorMode: Monochrome ++*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" ++*FoomaticRIPOptionSetting ColorMode=Color: "-c " ++*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" ++*FoomaticRIPOptionSetting ColorMode=Monochrome: " " ++*CloseUI: *ColorMode ++ ++*OpenUI *PageSize/Page Size: PickOne ++*FoomaticRIPOption PageSize: enum CmdLine A ++*OrderDependency: 135 AnySetup *PageSize ++*DefaultPageSize: Letter ++*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" ++*FoomaticRIPOptionSetting PageSize=Letter: "-p4 " ++*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" ++*FoomaticRIPOptionSetting PageSize=A4: "-p1 " ++*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" ++*FoomaticRIPOptionSetting PageSize=B5jis: "-p2 " ++*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" ++*FoomaticRIPOptionSetting PageSize=Env10: "-p9 " ++*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" ++*FoomaticRIPOptionSetting PageSize=EnvC5: "-p11 " ++*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" ++*FoomaticRIPOptionSetting PageSize=EnvDL: "-p12 " ++*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" ++*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p10 " ++*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" ++*FoomaticRIPOptionSetting PageSize=Executive: "-p5 " ++*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" ++*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p6 " ++*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" ++*FoomaticRIPOptionSetting PageSize=Folio: "-p6 " ++*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" ++*FoomaticRIPOptionSetting PageSize=Legal: "-p7 " ++*CloseUI: *PageSize ++ ++*OpenUI *PageRegion: PickOne ++*OrderDependency: 135 AnySetup *PageRegion ++*DefaultPageRegion: Letter ++*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" ++*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" ++*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" ++*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" ++*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" ++*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" ++*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" ++*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" ++*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" ++*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" ++*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" ++*CloseUI: *PageRegion ++ ++*DefaultImageableArea: Letter ++*ImageableArea Letter/Letter: "9 12.00 603 780.00" ++*ImageableArea A4/A4: "9 12.00 586 830.00" ++*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" ++*ImageableArea Env10/Env #10: "9 12.00 288 672.00" ++*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" ++*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" ++*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" ++*ImageableArea Executive/Executive: "9 12.00 513 744.00" ++*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "9 12.00 603 996.00" ++*ImageableArea Folio/Folio: "9 12.00 603 924.00" ++*ImageableArea Legal/Legal: "9 12.00 603 996.00" ++ ++*DefaultPaperDimension: Letter ++*PaperDimension Letter/Letter: "612 792" ++*PaperDimension A4/A4: "595 842" ++*PaperDimension B5jis/B5 (JIS): "518 727" ++*PaperDimension Env10/Env #10: "297 684" ++*PaperDimension EnvC5/Env C5: "459 649" ++*PaperDimension EnvDL/Env DL: "311 623" ++*PaperDimension EnvMonarch/Env Monarch: "279 540" ++*PaperDimension Executive/Executive: "522 756" ++*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" ++*PaperDimension Folio/Folio: "612 936" ++*PaperDimension Legal/Legal: "612 1008" ++ ++*OpenUI *MediaType/Media Type: PickOne ++*FoomaticRIPOption MediaType: enum CmdLine A ++*OrderDependency: 150 AnySetup *MediaType ++*DefaultMediaType: plain ++*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" ++*FoomaticRIPOptionSetting MediaType=plain: "-m1 " ++*MediaType plain2/Plain Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=plain2" ++*FoomaticRIPOptionSetting MediaType=plain2: "-m8 " ++*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" ++*FoomaticRIPOptionSetting MediaType=bond: "-m2 " ++*MediaType bond2/Bond Side 2: "%% FoomaticRIPOptionSetting: MediaType=bond2" ++*FoomaticRIPOptionSetting MediaType=bond2: "-m9 " ++*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" ++*FoomaticRIPOptionSetting MediaType=envelope: "-m6 " ++*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" ++*FoomaticRIPOptionSetting MediaType=labels: "-m5 " ++*MediaType lwcard/Light Weight Card: "%% FoomaticRIPOptionSetting: MediaType=lwcard" ++*FoomaticRIPOptionSetting MediaType=lwcard: "-m3 " ++*MediaType lwcard2/Light Weight Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwcard2" ++*FoomaticRIPOptionSetting MediaType=lwcard2: "-m10 " ++*MediaType lwgcard/Light Weight Glossy Card: "%% FoomaticRIPOptionSetting: MediaType=lwgcard" ++*FoomaticRIPOptionSetting MediaType=lwgcard: "-m4 " ++*MediaType lwgcard2/Light Weight Glossy Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwgcard2" ++*FoomaticRIPOptionSetting MediaType=lwgcard2: "-m11 " ++*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" ++*FoomaticRIPOptionSetting MediaType=recycled: "-m7 " ++*MediaType recycled2/Recycled Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=recycled2" ++*FoomaticRIPOptionSetting MediaType=recycled2: "-m12 " ++*CloseUI: *MediaType ++ ++*OpenUI *Copies/Copies: PickOne ++*FoomaticRIPOption Copies: int CmdLine A ++*FoomaticRIPOptionPrototype Copies: "-n%s " ++*FoomaticRIPOptionRange Copies: 1 100 ++*OrderDependency: 220 AnySetup *Copies ++*DefaultCopies: 1 ++*FoomaticRIPDefaultCopies: 1 ++*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" ++*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" ++*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" ++*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" ++*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" ++*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" ++*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" ++*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" ++*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" ++*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" ++*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" ++*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" ++*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" ++*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" ++*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" ++*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" ++*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" ++*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" ++*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" ++*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" ++*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" ++*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" ++*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" ++*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" ++*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" ++*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" ++*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" ++*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" ++*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" ++*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" ++*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" ++*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" ++*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" ++*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" ++*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" ++*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" ++*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" ++*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" ++*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" ++*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" ++*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" ++*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" ++*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" ++*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" ++*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" ++*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" ++*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" ++*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" ++*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" ++*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" ++*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" ++*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" ++*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" ++*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" ++*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" ++*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" ++*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" ++*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" ++*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" ++*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" ++*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" ++*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" ++*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" ++*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" ++*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" ++*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" ++*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" ++*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" ++*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" ++*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" ++*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" ++*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" ++*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" ++*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" ++*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" ++*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" ++*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" ++*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" ++*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" ++*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" ++*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" ++*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" ++*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" ++*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" ++*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" ++*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" ++*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" ++*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" ++*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" ++*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" ++*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" ++*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" ++*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" ++*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" ++*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" ++*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" ++*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" ++*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" ++*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" ++*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" ++*CloseUI: *Copies ++ ++*CloseGroup: General ++ ++*OpenGroup: Adjustment/Adjustment ++ ++*OpenUI *halftone/Halftone Algorithm: PickOne ++*FoomaticRIPOption halftone: enum CmdLine A ++*OrderDependency: 110 AnySetup *halftone ++*Defaulthalftone: default ++*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" ++*FoomaticRIPOptionSetting halftone=default: " " ++*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" ++*FoomaticRIPOptionSetting halftone=as: " -qas " ++*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" ++*FoomaticRIPOptionSetting halftone=standard: " -q1 " ++*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" ++*FoomaticRIPOptionSetting halftone=wts: " -qwts " ++*CloseUI: *halftone ++ ++*OpenUI *ICM/ICM Color Profile: PickOne ++*FoomaticRIPOption ICM: enum CmdLine A ++*OrderDependency: 300 AnySetup *ICM ++*DefaultICM: none ++*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" ++*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " ++*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" ++*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " ++*ICM testing2/File testing2.icm: "%% FoomaticRIPOptionSetting: ICM=testing2" ++*FoomaticRIPOptionSetting ICM=testing2: "-C10 -Gtesting2.icm " ++*ICM testing3/File testing3.icm: "%% FoomaticRIPOptionSetting: ICM=testing3" ++*FoomaticRIPOptionSetting ICM=testing3: "-C10 -Gtesting3.icm " ++*CloseUI: *ICM ++ ++*CloseGroup: Adjustment ++ ++*OpenGroup: Miscellaneous/Miscellaneous ++ ++*OpenUI *NupOrient/N-up Orientation: PickOne ++*FoomaticRIPOption NupOrient: enum CmdLine A ++*OrderDependency: 200 AnySetup *NupOrient ++*DefaultNupOrient: port ++*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" ++*FoomaticRIPOptionSetting NupOrient=land: "-ol " ++*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" ++*FoomaticRIPOptionSetting NupOrient=port: " " ++*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" ++*FoomaticRIPOptionSetting NupOrient=sea: "-os " ++*CloseUI: *NupOrient ++ ++*OpenUI *NupPages/N-up Printing: PickOne ++*FoomaticRIPOption NupPages: enum CmdLine A ++*OrderDependency: 200 AnySetup *NupPages ++*DefaultNupPages: 1up ++*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" ++*FoomaticRIPOptionSetting NupPages=1up: " " ++*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" ++*FoomaticRIPOptionSetting NupPages=2up: "-2 " ++*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" ++*FoomaticRIPOptionSetting NupPages=3up: "-3 " ++*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" ++*FoomaticRIPOptionSetting NupPages=4up: "-4 " ++*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" ++*FoomaticRIPOptionSetting NupPages=6up: "-6 " ++*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" ++*FoomaticRIPOptionSetting NupPages=8up: "-8 " ++*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" ++*FoomaticRIPOptionSetting NupPages=10up: "-10 " ++*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" ++*FoomaticRIPOptionSetting NupPages=12up: "-12 " ++*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" ++*FoomaticRIPOptionSetting NupPages=14up: "-14 " ++*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" ++*FoomaticRIPOptionSetting NupPages=15up: "-15 " ++*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" ++*FoomaticRIPOptionSetting NupPages=16up: "-16 " ++*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" ++*FoomaticRIPOptionSetting NupPages=18up: "-18 " ++*CloseUI: *NupPages ++ ++*CloseGroup: Miscellaneous ++ ++ ++*% Generic boilerplate PPD stuff as standard PostScript fonts and so on ++ ++*DefaultFont: Courier ++*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM ++*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM ++*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM ++*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM ++*Font Bookman-Demi: Standard "(001.004S)" Standard ROM ++*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM ++*Font Bookman-Light: Standard "(001.004S)" Standard ROM ++*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM ++*Font Courier: Standard "(002.004S)" Standard ROM ++*Font Courier-Bold: Standard "(002.004S)" Standard ROM ++*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM ++*Font Courier-Oblique: Standard "(002.004S)" Standard ROM ++*Font Helvetica: Standard "(001.006S)" Standard ROM ++*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM ++*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM ++*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM ++*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM ++*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM ++*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM ++*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM ++*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM ++*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM ++*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM ++*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM ++*Font Palatino-Bold: Standard "(001.005S)" Standard ROM ++*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM ++*Font Palatino-Italic: Standard "(001.005S)" Standard ROM ++*Font Palatino-Roman: Standard "(001.005S)" Standard ROM ++*Font Symbol: Special "(001.007S)" Special ROM ++*Font Times-Bold: Standard "(001.007S)" Standard ROM ++*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM ++*Font Times-Italic: Standard "(001.007S)" Standard ROM ++*Font Times-Roman: Standard "(001.007S)" Standard ROM ++*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM ++*Font ZapfDingbats: Special "(001.004S)" Standard ROM ++ +--- foo2zjs/PPD/Dell-C1760.ppd 1970-01-01 00:00:00.000000000 +0000 ++++ foo2zjs/PPD/Dell-C1760.ppd 2014-04-01 11:06:30.000000000 +0000 +@@ -0,0 +1,433 @@ ++*PPD-Adobe: "4.3" ++*% ++*% For information on using this, and to obtain the required backend ++*% script, consult http://www.openprinting.org/ ++*% ++*% This file is published under the GNU General Public License ++*% ++*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with ++*% all programs and environments which use PPD files for dealing with ++*% printer capability information. The printer must be configured with the ++*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This ++*% file and "foomatic-rip" work together to support PPD-controlled printer ++*% driver option access with arbitrary free software printer drivers and ++*% printing spoolers. ++*% ++*% To save this file on your disk, wait until the download has completed ++*% (the animation of the browser logo must stop) and then use the ++*% "Save as..." command in the "File" menu of your browser or in the ++*% pop-up manu when you click on this document with the right mouse button. ++*% DO NOT cut and paste this file into an editor with your mouse. This can ++*% introduce additional line breaks which lead to unexpected results. ++*% ++*% You may save this file as 'Dell-C1760-foo2hbpl1.ppd' ++*% ++*% ++*FormatVersion: "4.3" ++*FileVersion: "1.1" ++*LanguageVersion: English ++*LanguageEncoding: ISOLatin1 ++*PCFileName: "FOO2HBPL.PPD" ++*Manufacturer: "Dell" ++*Product: "(C1760)" ++*cupsVersion: 1.0 ++*cupsManualCopies: True ++*cupsModelNumber: 2 ++*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" ++*%pprRIP: foomatic-rip other ++*ModelName: "Dell C1760" ++*ShortNickName: "Dell C1760 foo2hbpl1" ++*NickName: "Dell C1760 Foomatic/foo2hbpl1 (recommended)" ++*PSVersion: "(3010.000) 550" ++*PSVersion: "(3010.000) 651" ++*PSVersion: "(3010.000) 652" ++*PSVersion: "(3010.000) 653" ++*PSVersion: "(3010.000) 704" ++*PSVersion: "(3010.000) 705" ++*PSVersion: "(3010.000) 800" ++*LanguageLevel: "3" ++*ColorDevice: True ++*DefaultColorSpace: RGB ++*FileSystem: False ++*Throughput: "1" ++*LandscapeOrientation: Plus90 ++*TTRasterizer: Type42 ++*1284DeviceID: "DRV:Dfoo2hbpl1,R1,M0,TF;" ++ ++*driverName foo2hbpl1/foo2hbpl1: "" ++*driverType F/Filter: "" ++*driverUrl: "http://foo2hbpl.rkkda.com/" ++*driverObsolete: False ++ ++ ++ ++ ++*HWMargins: 9 12.00 9 12 ++*VariablePaperSize: True ++*MaxMediaWidth: 100000 ++*MaxMediaHeight: 100000 ++*NonUIOrderDependency: 135 AnySetup *CustomPageSize ++*CustomPageSize True: "pop pop pop pop pop ++%% FoomaticRIPOptionSetting: PageSize=Custom" ++*End ++*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " ++*ParamCustomPageSize Width: 1 points 36 100000 ++*ParamCustomPageSize Height: 2 points 36 100000 ++*ParamCustomPageSize Orientation: 3 int 0 0 ++*ParamCustomPageSize WidthOffset: 4 points 0 0 ++*ParamCustomPageSize HeightOffset: 5 points 0 0 ++ ++*FoomaticIDs: Dell-C1760 foo2hbpl1 ++*FoomaticRIPCommandLine: "foo2hbpl1-wrapper %A" ++ ++*OpenGroup: General/General ++ ++*OpenUI *Quality/Printing Quality: PickOne ++*FoomaticRIPOption Quality: enum CmdLine A ++*OrderDependency: 110 AnySetup *Quality ++*DefaultQuality: normal ++*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" ++*FoomaticRIPOptionSetting Quality=draft: " -t " ++*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" ++*FoomaticRIPOptionSetting Quality=normal: " " ++*CloseUI: *Quality ++ ++*OpenUI *ColorMode/Color Mode: PickOne ++*FoomaticRIPOption ColorMode: enum CmdLine A ++*OrderDependency: 120 AnySetup *ColorMode ++*DefaultColorMode: Monochrome ++*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" ++*FoomaticRIPOptionSetting ColorMode=Color: "-c " ++*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" ++*FoomaticRIPOptionSetting ColorMode=Monochrome: " " ++*CloseUI: *ColorMode ++ ++*OpenUI *PageSize/Page Size: PickOne ++*FoomaticRIPOption PageSize: enum CmdLine A ++*OrderDependency: 135 AnySetup *PageSize ++*DefaultPageSize: Letter ++*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" ++*FoomaticRIPOptionSetting PageSize=Letter: "-p4 " ++*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" ++*FoomaticRIPOptionSetting PageSize=A4: "-p1 " ++*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" ++*FoomaticRIPOptionSetting PageSize=B5jis: "-p2 " ++*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" ++*FoomaticRIPOptionSetting PageSize=Env10: "-p9 " ++*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" ++*FoomaticRIPOptionSetting PageSize=EnvC5: "-p11 " ++*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" ++*FoomaticRIPOptionSetting PageSize=EnvDL: "-p12 " ++*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" ++*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p10 " ++*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" ++*FoomaticRIPOptionSetting PageSize=Executive: "-p5 " ++*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" ++*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p6 " ++*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" ++*FoomaticRIPOptionSetting PageSize=Folio: "-p6 " ++*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" ++*FoomaticRIPOptionSetting PageSize=Legal: "-p7 " ++*CloseUI: *PageSize ++ ++*OpenUI *PageRegion: PickOne ++*OrderDependency: 135 AnySetup *PageRegion ++*DefaultPageRegion: Letter ++*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" ++*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" ++*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" ++*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" ++*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" ++*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" ++*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" ++*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" ++*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" ++*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" ++*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" ++*CloseUI: *PageRegion ++ ++*DefaultImageableArea: Letter ++*ImageableArea Letter/Letter: "9 12.00 603 780.00" ++*ImageableArea A4/A4: "9 12.00 586 830.00" ++*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" ++*ImageableArea Env10/Env #10: "9 12.00 288 672.00" ++*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" ++*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" ++*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" ++*ImageableArea Executive/Executive: "9 12.00 513 744.00" ++*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "9 12.00 603 996.00" ++*ImageableArea Folio/Folio: "9 12.00 603 924.00" ++*ImageableArea Legal/Legal: "9 12.00 603 996.00" ++ ++*DefaultPaperDimension: Letter ++*PaperDimension Letter/Letter: "612 792" ++*PaperDimension A4/A4: "595 842" ++*PaperDimension B5jis/B5 (JIS): "518 727" ++*PaperDimension Env10/Env #10: "297 684" ++*PaperDimension EnvC5/Env C5: "459 649" ++*PaperDimension EnvDL/Env DL: "311 623" ++*PaperDimension EnvMonarch/Env Monarch: "279 540" ++*PaperDimension Executive/Executive: "522 756" ++*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" ++*PaperDimension Folio/Folio: "612 936" ++*PaperDimension Legal/Legal: "612 1008" ++ ++*OpenUI *MediaType/Media Type: PickOne ++*FoomaticRIPOption MediaType: enum CmdLine A ++*OrderDependency: 150 AnySetup *MediaType ++*DefaultMediaType: plain ++*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" ++*FoomaticRIPOptionSetting MediaType=plain: "-m1 " ++*MediaType plain2/Plain Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=plain2" ++*FoomaticRIPOptionSetting MediaType=plain2: "-m8 " ++*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" ++*FoomaticRIPOptionSetting MediaType=bond: "-m2 " ++*MediaType bond2/Bond Side 2: "%% FoomaticRIPOptionSetting: MediaType=bond2" ++*FoomaticRIPOptionSetting MediaType=bond2: "-m9 " ++*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" ++*FoomaticRIPOptionSetting MediaType=envelope: "-m6 " ++*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" ++*FoomaticRIPOptionSetting MediaType=labels: "-m5 " ++*MediaType lwcard/Light Weight Card: "%% FoomaticRIPOptionSetting: MediaType=lwcard" ++*FoomaticRIPOptionSetting MediaType=lwcard: "-m3 " ++*MediaType lwcard2/Light Weight Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwcard2" ++*FoomaticRIPOptionSetting MediaType=lwcard2: "-m10 " ++*MediaType lwgcard/Light Weight Glossy Card: "%% FoomaticRIPOptionSetting: MediaType=lwgcard" ++*FoomaticRIPOptionSetting MediaType=lwgcard: "-m4 " ++*MediaType lwgcard2/Light Weight Glossy Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwgcard2" ++*FoomaticRIPOptionSetting MediaType=lwgcard2: "-m11 " ++*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" ++*FoomaticRIPOptionSetting MediaType=recycled: "-m7 " ++*MediaType recycled2/Recycled Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=recycled2" ++*FoomaticRIPOptionSetting MediaType=recycled2: "-m12 " ++*CloseUI: *MediaType ++ ++*OpenUI *Copies/Copies: PickOne ++*FoomaticRIPOption Copies: int CmdLine A ++*FoomaticRIPOptionPrototype Copies: "-n%s " ++*FoomaticRIPOptionRange Copies: 1 100 ++*OrderDependency: 220 AnySetup *Copies ++*DefaultCopies: 1 ++*FoomaticRIPDefaultCopies: 1 ++*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" ++*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" ++*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" ++*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" ++*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" ++*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" ++*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" ++*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" ++*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" ++*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" ++*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" ++*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" ++*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" ++*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" ++*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" ++*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" ++*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" ++*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" ++*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" ++*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" ++*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" ++*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" ++*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" ++*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" ++*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" ++*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" ++*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" ++*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" ++*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" ++*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" ++*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" ++*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" ++*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" ++*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" ++*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" ++*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" ++*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" ++*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" ++*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" ++*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" ++*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" ++*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" ++*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" ++*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" ++*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" ++*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" ++*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" ++*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" ++*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" ++*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" ++*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" ++*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" ++*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" ++*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" ++*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" ++*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" ++*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" ++*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" ++*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" ++*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" ++*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" ++*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" ++*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" ++*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" ++*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" ++*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" ++*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" ++*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" ++*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" ++*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" ++*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" ++*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" ++*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" ++*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" ++*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" ++*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" ++*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" ++*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" ++*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" ++*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" ++*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" ++*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" ++*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" ++*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" ++*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" ++*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" ++*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" ++*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" ++*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" ++*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" ++*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" ++*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" ++*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" ++*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" ++*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" ++*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" ++*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" ++*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" ++*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" ++*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" ++*CloseUI: *Copies ++ ++*CloseGroup: General ++ ++*OpenGroup: Adjustment/Adjustment ++ ++*OpenUI *halftone/Halftone Algorithm: PickOne ++*FoomaticRIPOption halftone: enum CmdLine A ++*OrderDependency: 110 AnySetup *halftone ++*Defaulthalftone: default ++*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" ++*FoomaticRIPOptionSetting halftone=default: " " ++*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" ++*FoomaticRIPOptionSetting halftone=as: " -qas " ++*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" ++*FoomaticRIPOptionSetting halftone=standard: " -q1 " ++*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" ++*FoomaticRIPOptionSetting halftone=wts: " -qwts " ++*CloseUI: *halftone ++ ++*OpenUI *ICM/ICM Color Profile: PickOne ++*FoomaticRIPOption ICM: enum CmdLine A ++*OrderDependency: 300 AnySetup *ICM ++*DefaultICM: none ++*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" ++*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " ++*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" ++*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " ++*ICM testing2/File testing2.icm: "%% FoomaticRIPOptionSetting: ICM=testing2" ++*FoomaticRIPOptionSetting ICM=testing2: "-C10 -Gtesting2.icm " ++*ICM testing3/File testing3.icm: "%% FoomaticRIPOptionSetting: ICM=testing3" ++*FoomaticRIPOptionSetting ICM=testing3: "-C10 -Gtesting3.icm " ++*CloseUI: *ICM ++ ++*CloseGroup: Adjustment ++ ++*OpenGroup: Miscellaneous/Miscellaneous ++ ++*OpenUI *NupOrient/N-up Orientation: PickOne ++*FoomaticRIPOption NupOrient: enum CmdLine A ++*OrderDependency: 200 AnySetup *NupOrient ++*DefaultNupOrient: port ++*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" ++*FoomaticRIPOptionSetting NupOrient=land: "-ol " ++*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" ++*FoomaticRIPOptionSetting NupOrient=port: " " ++*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" ++*FoomaticRIPOptionSetting NupOrient=sea: "-os " ++*CloseUI: *NupOrient ++ ++*OpenUI *NupPages/N-up Printing: PickOne ++*FoomaticRIPOption NupPages: enum CmdLine A ++*OrderDependency: 200 AnySetup *NupPages ++*DefaultNupPages: 1up ++*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" ++*FoomaticRIPOptionSetting NupPages=1up: " " ++*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" ++*FoomaticRIPOptionSetting NupPages=2up: "-2 " ++*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" ++*FoomaticRIPOptionSetting NupPages=3up: "-3 " ++*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" ++*FoomaticRIPOptionSetting NupPages=4up: "-4 " ++*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" ++*FoomaticRIPOptionSetting NupPages=6up: "-6 " ++*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" ++*FoomaticRIPOptionSetting NupPages=8up: "-8 " ++*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" ++*FoomaticRIPOptionSetting NupPages=10up: "-10 " ++*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" ++*FoomaticRIPOptionSetting NupPages=12up: "-12 " ++*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" ++*FoomaticRIPOptionSetting NupPages=14up: "-14 " ++*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" ++*FoomaticRIPOptionSetting NupPages=15up: "-15 " ++*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" ++*FoomaticRIPOptionSetting NupPages=16up: "-16 " ++*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" ++*FoomaticRIPOptionSetting NupPages=18up: "-18 " ++*CloseUI: *NupPages ++ ++*CloseGroup: Miscellaneous ++ ++ ++*% Generic boilerplate PPD stuff as standard PostScript fonts and so on ++ ++*DefaultFont: Courier ++*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM ++*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM ++*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM ++*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM ++*Font Bookman-Demi: Standard "(001.004S)" Standard ROM ++*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM ++*Font Bookman-Light: Standard "(001.004S)" Standard ROM ++*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM ++*Font Courier: Standard "(002.004S)" Standard ROM ++*Font Courier-Bold: Standard "(002.004S)" Standard ROM ++*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM ++*Font Courier-Oblique: Standard "(002.004S)" Standard ROM ++*Font Helvetica: Standard "(001.006S)" Standard ROM ++*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM ++*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM ++*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM ++*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM ++*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM ++*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM ++*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM ++*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM ++*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM ++*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM ++*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM ++*Font Palatino-Bold: Standard "(001.005S)" Standard ROM ++*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM ++*Font Palatino-Italic: Standard "(001.005S)" Standard ROM ++*Font Palatino-Roman: Standard "(001.005S)" Standard ROM ++*Font Symbol: Special "(001.007S)" Special ROM ++*Font Times-Bold: Standard "(001.007S)" Standard ROM ++*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM ++*Font Times-Italic: Standard "(001.007S)" Standard ROM ++*Font Times-Roman: Standard "(001.007S)" Standard ROM ++*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM ++*Font ZapfDingbats: Special "(001.004S)" Standard ROM ++ +--- foo2zjs/PPD/Epson-AcuLaser_C1700.ppd 1970-01-01 00:00:00.000000000 +0000 ++++ foo2zjs/PPD/Epson-AcuLaser_C1700.ppd 2014-04-01 11:06:31.000000000 +0000 +@@ -0,0 +1,433 @@ ++*PPD-Adobe: "4.3" ++*% ++*% For information on using this, and to obtain the required backend ++*% script, consult http://www.openprinting.org/ ++*% ++*% This file is published under the GNU General Public License ++*% ++*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with ++*% all programs and environments which use PPD files for dealing with ++*% printer capability information. The printer must be configured with the ++*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This ++*% file and "foomatic-rip" work together to support PPD-controlled printer ++*% driver option access with arbitrary free software printer drivers and ++*% printing spoolers. ++*% ++*% To save this file on your disk, wait until the download has completed ++*% (the animation of the browser logo must stop) and then use the ++*% "Save as..." command in the "File" menu of your browser or in the ++*% pop-up manu when you click on this document with the right mouse button. ++*% DO NOT cut and paste this file into an editor with your mouse. This can ++*% introduce additional line breaks which lead to unexpected results. ++*% ++*% You may save this file as 'Epson-AcuLaser_C1700-foo2hbpl1.ppd' ++*% ++*% ++*FormatVersion: "4.3" ++*FileVersion: "1.1" ++*LanguageVersion: English ++*LanguageEncoding: ISOLatin1 ++*PCFileName: "FOO2HBPL.PPD" ++*Manufacturer: "Epson" ++*Product: "(AcuLaser C1700)" ++*cupsVersion: 1.0 ++*cupsManualCopies: True ++*cupsModelNumber: 2 ++*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" ++*%pprRIP: foomatic-rip other ++*ModelName: "Epson AcuLaser C1700" ++*ShortNickName: "Epson AcuLaser C1700 foo2hbpl1" ++*NickName: "Epson AcuLaser C1700 Foomatic/foo2hbpl1 (recommended)" ++*PSVersion: "(3010.000) 550" ++*PSVersion: "(3010.000) 651" ++*PSVersion: "(3010.000) 652" ++*PSVersion: "(3010.000) 653" ++*PSVersion: "(3010.000) 704" ++*PSVersion: "(3010.000) 705" ++*PSVersion: "(3010.000) 800" ++*LanguageLevel: "3" ++*ColorDevice: True ++*DefaultColorSpace: RGB ++*FileSystem: False ++*Throughput: "1" ++*LandscapeOrientation: Plus90 ++*TTRasterizer: Type42 ++*1284DeviceID: "DRV:Dfoo2hbpl1,R1,M0,TF;" ++ ++*driverName foo2hbpl1/foo2hbpl1: "" ++*driverType F/Filter: "" ++*driverUrl: "http://foo2hbpl.rkkda.com/" ++*driverObsolete: False ++ ++ ++ ++ ++*HWMargins: 9 12.00 9 12 ++*VariablePaperSize: True ++*MaxMediaWidth: 100000 ++*MaxMediaHeight: 100000 ++*NonUIOrderDependency: 135 AnySetup *CustomPageSize ++*CustomPageSize True: "pop pop pop pop pop ++%% FoomaticRIPOptionSetting: PageSize=Custom" ++*End ++*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " ++*ParamCustomPageSize Width: 1 points 36 100000 ++*ParamCustomPageSize Height: 2 points 36 100000 ++*ParamCustomPageSize Orientation: 3 int 0 0 ++*ParamCustomPageSize WidthOffset: 4 points 0 0 ++*ParamCustomPageSize HeightOffset: 5 points 0 0 ++ ++*FoomaticIDs: Epson-AcuLaser_C1700 foo2hbpl1 ++*FoomaticRIPCommandLine: "foo2hbpl1-wrapper %A" ++ ++*OpenGroup: General/General ++ ++*OpenUI *Quality/Printing Quality: PickOne ++*FoomaticRIPOption Quality: enum CmdLine A ++*OrderDependency: 110 AnySetup *Quality ++*DefaultQuality: normal ++*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" ++*FoomaticRIPOptionSetting Quality=draft: " -t " ++*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" ++*FoomaticRIPOptionSetting Quality=normal: " " ++*CloseUI: *Quality ++ ++*OpenUI *ColorMode/Color Mode: PickOne ++*FoomaticRIPOption ColorMode: enum CmdLine A ++*OrderDependency: 120 AnySetup *ColorMode ++*DefaultColorMode: Monochrome ++*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" ++*FoomaticRIPOptionSetting ColorMode=Color: "-c " ++*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" ++*FoomaticRIPOptionSetting ColorMode=Monochrome: " " ++*CloseUI: *ColorMode ++ ++*OpenUI *PageSize/Page Size: PickOne ++*FoomaticRIPOption PageSize: enum CmdLine A ++*OrderDependency: 135 AnySetup *PageSize ++*DefaultPageSize: Letter ++*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" ++*FoomaticRIPOptionSetting PageSize=Letter: "-p4 " ++*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" ++*FoomaticRIPOptionSetting PageSize=A4: "-p1 " ++*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" ++*FoomaticRIPOptionSetting PageSize=B5jis: "-p2 " ++*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" ++*FoomaticRIPOptionSetting PageSize=Env10: "-p9 " ++*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" ++*FoomaticRIPOptionSetting PageSize=EnvC5: "-p11 " ++*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" ++*FoomaticRIPOptionSetting PageSize=EnvDL: "-p12 " ++*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" ++*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p10 " ++*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" ++*FoomaticRIPOptionSetting PageSize=Executive: "-p5 " ++*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" ++*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p6 " ++*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" ++*FoomaticRIPOptionSetting PageSize=Folio: "-p6 " ++*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" ++*FoomaticRIPOptionSetting PageSize=Legal: "-p7 " ++*CloseUI: *PageSize ++ ++*OpenUI *PageRegion: PickOne ++*OrderDependency: 135 AnySetup *PageRegion ++*DefaultPageRegion: Letter ++*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" ++*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" ++*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" ++*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" ++*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" ++*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" ++*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" ++*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" ++*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" ++*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" ++*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" ++*CloseUI: *PageRegion ++ ++*DefaultImageableArea: Letter ++*ImageableArea Letter/Letter: "9 12.00 603 780.00" ++*ImageableArea A4/A4: "9 12.00 586 830.00" ++*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" ++*ImageableArea Env10/Env #10: "9 12.00 288 672.00" ++*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" ++*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" ++*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" ++*ImageableArea Executive/Executive: "9 12.00 513 744.00" ++*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "9 12.00 603 996.00" ++*ImageableArea Folio/Folio: "9 12.00 603 924.00" ++*ImageableArea Legal/Legal: "9 12.00 603 996.00" ++ ++*DefaultPaperDimension: Letter ++*PaperDimension Letter/Letter: "612 792" ++*PaperDimension A4/A4: "595 842" ++*PaperDimension B5jis/B5 (JIS): "518 727" ++*PaperDimension Env10/Env #10: "297 684" ++*PaperDimension EnvC5/Env C5: "459 649" ++*PaperDimension EnvDL/Env DL: "311 623" ++*PaperDimension EnvMonarch/Env Monarch: "279 540" ++*PaperDimension Executive/Executive: "522 756" ++*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" ++*PaperDimension Folio/Folio: "612 936" ++*PaperDimension Legal/Legal: "612 1008" ++ ++*OpenUI *MediaType/Media Type: PickOne ++*FoomaticRIPOption MediaType: enum CmdLine A ++*OrderDependency: 150 AnySetup *MediaType ++*DefaultMediaType: plain ++*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" ++*FoomaticRIPOptionSetting MediaType=plain: "-m1 " ++*MediaType plain2/Plain Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=plain2" ++*FoomaticRIPOptionSetting MediaType=plain2: "-m8 " ++*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" ++*FoomaticRIPOptionSetting MediaType=bond: "-m2 " ++*MediaType bond2/Bond Side 2: "%% FoomaticRIPOptionSetting: MediaType=bond2" ++*FoomaticRIPOptionSetting MediaType=bond2: "-m9 " ++*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" ++*FoomaticRIPOptionSetting MediaType=envelope: "-m6 " ++*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" ++*FoomaticRIPOptionSetting MediaType=labels: "-m5 " ++*MediaType lwcard/Light Weight Card: "%% FoomaticRIPOptionSetting: MediaType=lwcard" ++*FoomaticRIPOptionSetting MediaType=lwcard: "-m3 " ++*MediaType lwcard2/Light Weight Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwcard2" ++*FoomaticRIPOptionSetting MediaType=lwcard2: "-m10 " ++*MediaType lwgcard/Light Weight Glossy Card: "%% FoomaticRIPOptionSetting: MediaType=lwgcard" ++*FoomaticRIPOptionSetting MediaType=lwgcard: "-m4 " ++*MediaType lwgcard2/Light Weight Glossy Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwgcard2" ++*FoomaticRIPOptionSetting MediaType=lwgcard2: "-m11 " ++*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" ++*FoomaticRIPOptionSetting MediaType=recycled: "-m7 " ++*MediaType recycled2/Recycled Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=recycled2" ++*FoomaticRIPOptionSetting MediaType=recycled2: "-m12 " ++*CloseUI: *MediaType ++ ++*OpenUI *Copies/Copies: PickOne ++*FoomaticRIPOption Copies: int CmdLine A ++*FoomaticRIPOptionPrototype Copies: "-n%s " ++*FoomaticRIPOptionRange Copies: 1 100 ++*OrderDependency: 220 AnySetup *Copies ++*DefaultCopies: 1 ++*FoomaticRIPDefaultCopies: 1 ++*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" ++*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" ++*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" ++*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" ++*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" ++*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" ++*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" ++*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" ++*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" ++*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" ++*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" ++*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" ++*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" ++*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" ++*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" ++*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" ++*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" ++*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" ++*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" ++*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" ++*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" ++*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" ++*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" ++*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" ++*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" ++*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" ++*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" ++*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" ++*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" ++*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" ++*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" ++*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" ++*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" ++*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" ++*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" ++*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" ++*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" ++*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" ++*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" ++*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" ++*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" ++*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" ++*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" ++*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" ++*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" ++*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" ++*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" ++*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" ++*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" ++*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" ++*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" ++*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" ++*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" ++*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" ++*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" ++*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" ++*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" ++*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" ++*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" ++*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" ++*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" ++*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" ++*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" ++*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" ++*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" ++*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" ++*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" ++*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" ++*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" ++*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" ++*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" ++*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" ++*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" ++*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" ++*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" ++*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" ++*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" ++*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" ++*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" ++*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" ++*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" ++*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" ++*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" ++*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" ++*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" ++*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" ++*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" ++*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" ++*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" ++*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" ++*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" ++*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" ++*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" ++*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" ++*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" ++*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" ++*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" ++*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" ++*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" ++*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" ++*CloseUI: *Copies ++ ++*CloseGroup: General ++ ++*OpenGroup: Adjustment/Adjustment ++ ++*OpenUI *halftone/Halftone Algorithm: PickOne ++*FoomaticRIPOption halftone: enum CmdLine A ++*OrderDependency: 110 AnySetup *halftone ++*Defaulthalftone: default ++*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" ++*FoomaticRIPOptionSetting halftone=default: " " ++*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" ++*FoomaticRIPOptionSetting halftone=as: " -qas " ++*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" ++*FoomaticRIPOptionSetting halftone=standard: " -q1 " ++*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" ++*FoomaticRIPOptionSetting halftone=wts: " -qwts " ++*CloseUI: *halftone ++ ++*OpenUI *ICM/ICM Color Profile: PickOne ++*FoomaticRIPOption ICM: enum CmdLine A ++*OrderDependency: 300 AnySetup *ICM ++*DefaultICM: none ++*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" ++*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " ++*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" ++*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " ++*ICM testing2/File testing2.icm: "%% FoomaticRIPOptionSetting: ICM=testing2" ++*FoomaticRIPOptionSetting ICM=testing2: "-C10 -Gtesting2.icm " ++*ICM testing3/File testing3.icm: "%% FoomaticRIPOptionSetting: ICM=testing3" ++*FoomaticRIPOptionSetting ICM=testing3: "-C10 -Gtesting3.icm " ++*CloseUI: *ICM ++ ++*CloseGroup: Adjustment ++ ++*OpenGroup: Miscellaneous/Miscellaneous ++ ++*OpenUI *NupOrient/N-up Orientation: PickOne ++*FoomaticRIPOption NupOrient: enum CmdLine A ++*OrderDependency: 200 AnySetup *NupOrient ++*DefaultNupOrient: port ++*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" ++*FoomaticRIPOptionSetting NupOrient=land: "-ol " ++*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" ++*FoomaticRIPOptionSetting NupOrient=port: " " ++*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" ++*FoomaticRIPOptionSetting NupOrient=sea: "-os " ++*CloseUI: *NupOrient ++ ++*OpenUI *NupPages/N-up Printing: PickOne ++*FoomaticRIPOption NupPages: enum CmdLine A ++*OrderDependency: 200 AnySetup *NupPages ++*DefaultNupPages: 1up ++*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" ++*FoomaticRIPOptionSetting NupPages=1up: " " ++*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" ++*FoomaticRIPOptionSetting NupPages=2up: "-2 " ++*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" ++*FoomaticRIPOptionSetting NupPages=3up: "-3 " ++*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" ++*FoomaticRIPOptionSetting NupPages=4up: "-4 " ++*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" ++*FoomaticRIPOptionSetting NupPages=6up: "-6 " ++*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" ++*FoomaticRIPOptionSetting NupPages=8up: "-8 " ++*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" ++*FoomaticRIPOptionSetting NupPages=10up: "-10 " ++*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" ++*FoomaticRIPOptionSetting NupPages=12up: "-12 " ++*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" ++*FoomaticRIPOptionSetting NupPages=14up: "-14 " ++*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" ++*FoomaticRIPOptionSetting NupPages=15up: "-15 " ++*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" ++*FoomaticRIPOptionSetting NupPages=16up: "-16 " ++*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" ++*FoomaticRIPOptionSetting NupPages=18up: "-18 " ++*CloseUI: *NupPages ++ ++*CloseGroup: Miscellaneous ++ ++ ++*% Generic boilerplate PPD stuff as standard PostScript fonts and so on ++ ++*DefaultFont: Courier ++*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM ++*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM ++*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM ++*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM ++*Font Bookman-Demi: Standard "(001.004S)" Standard ROM ++*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM ++*Font Bookman-Light: Standard "(001.004S)" Standard ROM ++*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM ++*Font Courier: Standard "(002.004S)" Standard ROM ++*Font Courier-Bold: Standard "(002.004S)" Standard ROM ++*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM ++*Font Courier-Oblique: Standard "(002.004S)" Standard ROM ++*Font Helvetica: Standard "(001.006S)" Standard ROM ++*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM ++*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM ++*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM ++*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM ++*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM ++*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM ++*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM ++*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM ++*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM ++*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM ++*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM ++*Font Palatino-Bold: Standard "(001.005S)" Standard ROM ++*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM ++*Font Palatino-Italic: Standard "(001.005S)" Standard ROM ++*Font Palatino-Roman: Standard "(001.005S)" Standard ROM ++*Font Symbol: Special "(001.007S)" Special ROM ++*Font Times-Bold: Standard "(001.007S)" Standard ROM ++*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM ++*Font Times-Italic: Standard "(001.007S)" Standard ROM ++*Font Times-Roman: Standard "(001.007S)" Standard ROM ++*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM ++*Font ZapfDingbats: Special "(001.004S)" Standard ROM ++ +--- foo2zjs/PPD/Fuji_Xerox-DocuPrint_CP105.ppd 1970-01-01 00:00:00.000000000 +0000 ++++ foo2zjs/PPD/Fuji_Xerox-DocuPrint_CP105.ppd 2014-04-01 11:06:31.000000000 +0000 +@@ -0,0 +1,433 @@ ++*PPD-Adobe: "4.3" ++*% ++*% For information on using this, and to obtain the required backend ++*% script, consult http://www.openprinting.org/ ++*% ++*% This file is published under the GNU General Public License ++*% ++*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with ++*% all programs and environments which use PPD files for dealing with ++*% printer capability information. The printer must be configured with the ++*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This ++*% file and "foomatic-rip" work together to support PPD-controlled printer ++*% driver option access with arbitrary free software printer drivers and ++*% printing spoolers. ++*% ++*% To save this file on your disk, wait until the download has completed ++*% (the animation of the browser logo must stop) and then use the ++*% "Save as..." command in the "File" menu of your browser or in the ++*% pop-up manu when you click on this document with the right mouse button. ++*% DO NOT cut and paste this file into an editor with your mouse. This can ++*% introduce additional line breaks which lead to unexpected results. ++*% ++*% You may save this file as 'Fuji_Xerox-DocuPrint_CP105-foo2hbpl1.ppd' ++*% ++*% ++*FormatVersion: "4.3" ++*FileVersion: "1.1" ++*LanguageVersion: English ++*LanguageEncoding: ISOLatin1 ++*PCFileName: "FOO2HBPL.PPD" ++*Manufacturer: "Fuji Xerox" ++*Product: "(DocuPrint CP105)" ++*cupsVersion: 1.0 ++*cupsManualCopies: True ++*cupsModelNumber: 2 ++*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" ++*%pprRIP: foomatic-rip other ++*ModelName: "Fuji Xerox DocuPrint CP105" ++*ShortNickName: "Fuji Xerox D.P. CP105 foo2hbpl1" ++*NickName: "Fuji Xerox DocuPrint CP105 Foomatic/foo2hbpl1 (recommended)" ++*PSVersion: "(3010.000) 550" ++*PSVersion: "(3010.000) 651" ++*PSVersion: "(3010.000) 652" ++*PSVersion: "(3010.000) 653" ++*PSVersion: "(3010.000) 704" ++*PSVersion: "(3010.000) 705" ++*PSVersion: "(3010.000) 800" ++*LanguageLevel: "3" ++*ColorDevice: True ++*DefaultColorSpace: RGB ++*FileSystem: False ++*Throughput: "1" ++*LandscapeOrientation: Plus90 ++*TTRasterizer: Type42 ++*1284DeviceID: "DRV:Dfoo2hbpl1,R1,M0,TF;" ++ ++*driverName foo2hbpl1/foo2hbpl1: "" ++*driverType F/Filter: "" ++*driverUrl: "http://foo2hbpl.rkkda.com/" ++*driverObsolete: False ++ ++ ++ ++ ++*HWMargins: 9 12.00 9 12 ++*VariablePaperSize: True ++*MaxMediaWidth: 100000 ++*MaxMediaHeight: 100000 ++*NonUIOrderDependency: 135 AnySetup *CustomPageSize ++*CustomPageSize True: "pop pop pop pop pop ++%% FoomaticRIPOptionSetting: PageSize=Custom" ++*End ++*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " ++*ParamCustomPageSize Width: 1 points 36 100000 ++*ParamCustomPageSize Height: 2 points 36 100000 ++*ParamCustomPageSize Orientation: 3 int 0 0 ++*ParamCustomPageSize WidthOffset: 4 points 0 0 ++*ParamCustomPageSize HeightOffset: 5 points 0 0 ++ ++*FoomaticIDs: Fuji_Xerox-DocuPrint_CP105 foo2hbpl1 ++*FoomaticRIPCommandLine: "foo2hbpl1-wrapper %A" ++ ++*OpenGroup: General/General ++ ++*OpenUI *Quality/Printing Quality: PickOne ++*FoomaticRIPOption Quality: enum CmdLine A ++*OrderDependency: 110 AnySetup *Quality ++*DefaultQuality: normal ++*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" ++*FoomaticRIPOptionSetting Quality=draft: " -t " ++*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" ++*FoomaticRIPOptionSetting Quality=normal: " " ++*CloseUI: *Quality ++ ++*OpenUI *ColorMode/Color Mode: PickOne ++*FoomaticRIPOption ColorMode: enum CmdLine A ++*OrderDependency: 120 AnySetup *ColorMode ++*DefaultColorMode: Monochrome ++*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" ++*FoomaticRIPOptionSetting ColorMode=Color: "-c " ++*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" ++*FoomaticRIPOptionSetting ColorMode=Monochrome: " " ++*CloseUI: *ColorMode ++ ++*OpenUI *PageSize/Page Size: PickOne ++*FoomaticRIPOption PageSize: enum CmdLine A ++*OrderDependency: 135 AnySetup *PageSize ++*DefaultPageSize: Letter ++*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" ++*FoomaticRIPOptionSetting PageSize=Letter: "-p4 " ++*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" ++*FoomaticRIPOptionSetting PageSize=A4: "-p1 " ++*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" ++*FoomaticRIPOptionSetting PageSize=B5jis: "-p2 " ++*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" ++*FoomaticRIPOptionSetting PageSize=Env10: "-p9 " ++*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" ++*FoomaticRIPOptionSetting PageSize=EnvC5: "-p11 " ++*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" ++*FoomaticRIPOptionSetting PageSize=EnvDL: "-p12 " ++*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" ++*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p10 " ++*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" ++*FoomaticRIPOptionSetting PageSize=Executive: "-p5 " ++*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" ++*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p6 " ++*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" ++*FoomaticRIPOptionSetting PageSize=Folio: "-p6 " ++*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" ++*FoomaticRIPOptionSetting PageSize=Legal: "-p7 " ++*CloseUI: *PageSize ++ ++*OpenUI *PageRegion: PickOne ++*OrderDependency: 135 AnySetup *PageRegion ++*DefaultPageRegion: Letter ++*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" ++*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" ++*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" ++*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" ++*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" ++*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" ++*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" ++*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" ++*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" ++*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" ++*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" ++*CloseUI: *PageRegion ++ ++*DefaultImageableArea: Letter ++*ImageableArea Letter/Letter: "9 12.00 603 780.00" ++*ImageableArea A4/A4: "9 12.00 586 830.00" ++*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" ++*ImageableArea Env10/Env #10: "9 12.00 288 672.00" ++*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" ++*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" ++*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" ++*ImageableArea Executive/Executive: "9 12.00 513 744.00" ++*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "9 12.00 603 996.00" ++*ImageableArea Folio/Folio: "9 12.00 603 924.00" ++*ImageableArea Legal/Legal: "9 12.00 603 996.00" ++ ++*DefaultPaperDimension: Letter ++*PaperDimension Letter/Letter: "612 792" ++*PaperDimension A4/A4: "595 842" ++*PaperDimension B5jis/B5 (JIS): "518 727" ++*PaperDimension Env10/Env #10: "297 684" ++*PaperDimension EnvC5/Env C5: "459 649" ++*PaperDimension EnvDL/Env DL: "311 623" ++*PaperDimension EnvMonarch/Env Monarch: "279 540" ++*PaperDimension Executive/Executive: "522 756" ++*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" ++*PaperDimension Folio/Folio: "612 936" ++*PaperDimension Legal/Legal: "612 1008" ++ ++*OpenUI *MediaType/Media Type: PickOne ++*FoomaticRIPOption MediaType: enum CmdLine A ++*OrderDependency: 150 AnySetup *MediaType ++*DefaultMediaType: plain ++*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" ++*FoomaticRIPOptionSetting MediaType=plain: "-m1 " ++*MediaType plain2/Plain Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=plain2" ++*FoomaticRIPOptionSetting MediaType=plain2: "-m8 " ++*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" ++*FoomaticRIPOptionSetting MediaType=bond: "-m2 " ++*MediaType bond2/Bond Side 2: "%% FoomaticRIPOptionSetting: MediaType=bond2" ++*FoomaticRIPOptionSetting MediaType=bond2: "-m9 " ++*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" ++*FoomaticRIPOptionSetting MediaType=envelope: "-m6 " ++*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" ++*FoomaticRIPOptionSetting MediaType=labels: "-m5 " ++*MediaType lwcard/Light Weight Card: "%% FoomaticRIPOptionSetting: MediaType=lwcard" ++*FoomaticRIPOptionSetting MediaType=lwcard: "-m3 " ++*MediaType lwcard2/Light Weight Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwcard2" ++*FoomaticRIPOptionSetting MediaType=lwcard2: "-m10 " ++*MediaType lwgcard/Light Weight Glossy Card: "%% FoomaticRIPOptionSetting: MediaType=lwgcard" ++*FoomaticRIPOptionSetting MediaType=lwgcard: "-m4 " ++*MediaType lwgcard2/Light Weight Glossy Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwgcard2" ++*FoomaticRIPOptionSetting MediaType=lwgcard2: "-m11 " ++*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" ++*FoomaticRIPOptionSetting MediaType=recycled: "-m7 " ++*MediaType recycled2/Recycled Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=recycled2" ++*FoomaticRIPOptionSetting MediaType=recycled2: "-m12 " ++*CloseUI: *MediaType ++ ++*OpenUI *Copies/Copies: PickOne ++*FoomaticRIPOption Copies: int CmdLine A ++*FoomaticRIPOptionPrototype Copies: "-n%s " ++*FoomaticRIPOptionRange Copies: 1 100 ++*OrderDependency: 220 AnySetup *Copies ++*DefaultCopies: 1 ++*FoomaticRIPDefaultCopies: 1 ++*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" ++*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" ++*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" ++*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" ++*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" ++*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" ++*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" ++*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" ++*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" ++*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" ++*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" ++*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" ++*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" ++*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" ++*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" ++*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" ++*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" ++*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" ++*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" ++*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" ++*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" ++*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" ++*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" ++*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" ++*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" ++*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" ++*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" ++*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" ++*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" ++*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" ++*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" ++*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" ++*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" ++*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" ++*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" ++*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" ++*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" ++*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" ++*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" ++*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" ++*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" ++*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" ++*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" ++*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" ++*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" ++*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" ++*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" ++*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" ++*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" ++*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" ++*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" ++*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" ++*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" ++*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" ++*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" ++*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" ++*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" ++*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" ++*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" ++*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" ++*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" ++*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" ++*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" ++*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" ++*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" ++*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" ++*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" ++*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" ++*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" ++*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" ++*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" ++*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" ++*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" ++*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" ++*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" ++*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" ++*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" ++*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" ++*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" ++*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" ++*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" ++*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" ++*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" ++*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" ++*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" ++*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" ++*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" ++*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" ++*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" ++*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" ++*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" ++*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" ++*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" ++*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" ++*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" ++*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" ++*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" ++*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" ++*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" ++*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" ++*CloseUI: *Copies ++ ++*CloseGroup: General ++ ++*OpenGroup: Adjustment/Adjustment ++ ++*OpenUI *halftone/Halftone Algorithm: PickOne ++*FoomaticRIPOption halftone: enum CmdLine A ++*OrderDependency: 110 AnySetup *halftone ++*Defaulthalftone: default ++*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" ++*FoomaticRIPOptionSetting halftone=default: " " ++*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" ++*FoomaticRIPOptionSetting halftone=as: " -qas " ++*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" ++*FoomaticRIPOptionSetting halftone=standard: " -q1 " ++*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" ++*FoomaticRIPOptionSetting halftone=wts: " -qwts " ++*CloseUI: *halftone ++ ++*OpenUI *ICM/ICM Color Profile: PickOne ++*FoomaticRIPOption ICM: enum CmdLine A ++*OrderDependency: 300 AnySetup *ICM ++*DefaultICM: none ++*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" ++*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " ++*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" ++*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " ++*ICM testing2/File testing2.icm: "%% FoomaticRIPOptionSetting: ICM=testing2" ++*FoomaticRIPOptionSetting ICM=testing2: "-C10 -Gtesting2.icm " ++*ICM testing3/File testing3.icm: "%% FoomaticRIPOptionSetting: ICM=testing3" ++*FoomaticRIPOptionSetting ICM=testing3: "-C10 -Gtesting3.icm " ++*CloseUI: *ICM ++ ++*CloseGroup: Adjustment ++ ++*OpenGroup: Miscellaneous/Miscellaneous ++ ++*OpenUI *NupOrient/N-up Orientation: PickOne ++*FoomaticRIPOption NupOrient: enum CmdLine A ++*OrderDependency: 200 AnySetup *NupOrient ++*DefaultNupOrient: port ++*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" ++*FoomaticRIPOptionSetting NupOrient=land: "-ol " ++*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" ++*FoomaticRIPOptionSetting NupOrient=port: " " ++*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" ++*FoomaticRIPOptionSetting NupOrient=sea: "-os " ++*CloseUI: *NupOrient ++ ++*OpenUI *NupPages/N-up Printing: PickOne ++*FoomaticRIPOption NupPages: enum CmdLine A ++*OrderDependency: 200 AnySetup *NupPages ++*DefaultNupPages: 1up ++*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" ++*FoomaticRIPOptionSetting NupPages=1up: " " ++*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" ++*FoomaticRIPOptionSetting NupPages=2up: "-2 " ++*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" ++*FoomaticRIPOptionSetting NupPages=3up: "-3 " ++*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" ++*FoomaticRIPOptionSetting NupPages=4up: "-4 " ++*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" ++*FoomaticRIPOptionSetting NupPages=6up: "-6 " ++*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" ++*FoomaticRIPOptionSetting NupPages=8up: "-8 " ++*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" ++*FoomaticRIPOptionSetting NupPages=10up: "-10 " ++*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" ++*FoomaticRIPOptionSetting NupPages=12up: "-12 " ++*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" ++*FoomaticRIPOptionSetting NupPages=14up: "-14 " ++*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" ++*FoomaticRIPOptionSetting NupPages=15up: "-15 " ++*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" ++*FoomaticRIPOptionSetting NupPages=16up: "-16 " ++*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" ++*FoomaticRIPOptionSetting NupPages=18up: "-18 " ++*CloseUI: *NupPages ++ ++*CloseGroup: Miscellaneous ++ ++ ++*% Generic boilerplate PPD stuff as standard PostScript fonts and so on ++ ++*DefaultFont: Courier ++*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM ++*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM ++*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM ++*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM ++*Font Bookman-Demi: Standard "(001.004S)" Standard ROM ++*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM ++*Font Bookman-Light: Standard "(001.004S)" Standard ROM ++*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM ++*Font Courier: Standard "(002.004S)" Standard ROM ++*Font Courier-Bold: Standard "(002.004S)" Standard ROM ++*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM ++*Font Courier-Oblique: Standard "(002.004S)" Standard ROM ++*Font Helvetica: Standard "(001.006S)" Standard ROM ++*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM ++*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM ++*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM ++*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM ++*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM ++*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM ++*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM ++*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM ++*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM ++*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM ++*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM ++*Font Palatino-Bold: Standard "(001.005S)" Standard ROM ++*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM ++*Font Palatino-Italic: Standard "(001.005S)" Standard ROM ++*Font Palatino-Roman: Standard "(001.005S)" Standard ROM ++*Font Symbol: Special "(001.007S)" Special ROM ++*Font Times-Bold: Standard "(001.007S)" Standard ROM ++*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM ++*Font Times-Italic: Standard "(001.007S)" Standard ROM ++*Font Times-Roman: Standard "(001.007S)" Standard ROM ++*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM ++*Font ZapfDingbats: Special "(001.004S)" Standard ROM ++ +--- foo2zjs/README 2014-04-03 19:49:11.000000000 +0000 ++++ foo2zjs/README 2014-03-25 10:49:40.000000000 +0000 +@@ -128,6 +128,17 @@ + - Oki C5100n/C5150n/C5200n + - Oki C5500n/C5600n/C5800n + ++ FOO2HBPL1 ++ --------- ++ foo2hbpl1 converts Ghostscript pbmraw, pgmraw, ppmraw, or pamcmyk32 ++ output formats to monochrome or color HBPL version 1 streams. ++ ++ - Dell 1250c ++ - Dell C1660 ++ - Dell C1760 ++ - Epson AcuLaser C1700 ++ - Fuji-Xerox DocuPrint CP105 ++ + FOO2HBPL2 + --------- + foo2hbpl2 converts Ghostscript pbmraw, bitcmyk, or pksmraw output for‐ +--- foo2zjs/README.in 2014-04-03 19:43:10.000000000 +0000 ++++ foo2zjs/README.in 2014-03-25 10:49:27.000000000 +0000 +@@ -128,6 +128,17 @@ + - Oki C5100n/C5150n/C5200n + - Oki C5500n/C5600n/C5800n + ++ FOO2HBPL1 ++ --------- ++ foo2hbpl1 converts Ghostscript pbmraw, pgmraw, ppmraw, or pamcmyk32 ++ output formats to monochrome or color HBPL version 1 streams. ++ ++ - Dell 1250c ++ - Dell C1660 ++ - Dell C1760 ++ - Epson AcuLaser C1700 ++ - Fuji-Xerox DocuPrint CP105 ++ + FOO2HBPL2 + --------- + foo2hbpl2 converts Ghostscript pbmraw, bitcmyk, or pksmraw output for‐ +--- foo2zjs/foo2hbpl1-wrapper.1in 1970-01-01 00:00:00.000000000 +0000 ++++ foo2zjs/foo2hbpl1-wrapper.1in 2014-03-24 12:30:14.000000000 +0000 +@@ -0,0 +1,240 @@ ++'\" t ++.TH foo2hbpl1-wrapper 1 "${MODpage}" "foo2hbpl1-wrapper ${MODver}" ++#ifndef OLDGROFF ++#include "macros.man" ++#endif ++'\"========================================================================== ++'\" MANUAL PAGE SOURCE ++'\"========================================================================== ++.SH NAME ++foo2hbpl1-wrapper \- Convert Postscript into a ZJS printer stream ++.SH SYNOPSIS ++.B foo2hbpl1-wrapper ++.RI [ options "] [" ps-file ] ++.SH DESCRIPTION ++.B foo2hbpl1-wrapper ++is a Foomatic compatible printer wrapper for the \fBfoo2hbpl1\fP printer driver. ++This script reads a Postscript \fIps-file\fP or standard input ++and converts it to Zenographics ZjStream printer format ++for driving the ++Dell 1250c, Dell C1660w, Dell C1760w, ++Epson AcuLaser C1700, ++and Fuji-Xerox CP105b printers. ++.P ++This script can be used in a standalone fashion, but is intended to ++be called from a printer spooler system which uses the Foomatic ++printer database. ++ ++.SH COMMAND LINE OPTIONS ++.SS Normal Options ++These are the options used to select the parameters of a ++print job that are usually controlled on a per job basis. ++.TP ++.BI \-c ++Print in color (else monochrome). ++.TP ++.BI \-C\0 colormode ++Color correction mode [0]. ++.TS ++n l . ++10 ICM color profile (using -G *.icm file) ++.TE ++.TP ++.BI \-d\0 duplex ++Duplex code to send to printer [1]. ++.TS ++| n l | n l | n l . ++1 off 2 long edge 3 short edge ++.TE ++.TP ++.BI \-m\0 media ++Media code to send to printer [1]. ++.TS ++l r. ++_ ++Media HBPL ++_ ++plain 1 ++bond 2 ++lwcard 3 ++lwgcard 4 ++labels 5 ++envelope 6 ++recycled 7 ++plain2 8 ++bond2 9 ++lwcard2 10 ++lwgcard2 11 ++recycled2 12 ++.TE ++.TP ++.BI \-p\0 paper ++Paper size code to send to printer [1]. ++.TS ++l r. ++_ ++Paper HBPL ++_ ++A4 1 ++B5jis 2 ++letter 4 ++executive 5 ++fanfold german legal 6 ++folio 6 ++legal 7 ++env#10 9 ++envMonarch 10 ++envC5 11 ++envDL 12 ++.TE ++.TP ++.BI \-n\0 copies ++Number of copies [1]. ++.TP ++.BI \-r\0 xres x yres ++Set device resolution in pixels/inch [1200x600]. ++.TP ++.BI \-s\0 source ++Source (Input Slot) code to send to printer [7]. ++.TS ++| n l | n l. ++1 upper 4 manual ++2 lower 7 auto ++.TE ++.TP ++.BI \-t ++Draft mode. Every other pixel is white. ++.TP ++.BI \-T\0 density ++Print density (1-5). The default is 3 (medium). ++.TP ++.BI "\-2 \-3 \-4 \-5 \-6 \-8 \-9 \-10 \-12 \-14 \-15 \-16 \-18" ++Print in N-up. Requires the \fBpsutils\fP package. ++.TP ++.BI \-o\0 orient ++Orientation used for N-up. ++.TS ++l l l. ++Portrait -op (normal) ++Landscape -ol (rotated 90 degrees anticlockwise) ++Seascape -os (rotated 90 degrees clockwise) ++.TE ++.SS Printer Tweaking Options ++These are the options used to customize the operation of \fBfoo2hbpl1\fP ++for a particular printer. ++.TP ++.BI \-u\0 xoff x yoff ++Set the offset of the start of the printable region from the ++upper left corner, in pixels [varies with paper size]. ++The defaults should work on the 2200DL and 2300DL, and have not ++been tested on any other printers. ++.TP ++.BI \-l\0 xoff x yoff ++Set the offset of the end of the printable region from the ++lower right corner, in pixels [varies with paper size]. ++The defaults should work on the 2200DL and 2300DL, and have not ++been tested on any other printers. ++.TP ++.BI \-L\0 mask ++Send the logical clipping values from -u/-l in the ZjStream. ++\fBfoo2hbpl1-wrapper\fP always runs Ghostscript with the ideal page dimensions, ++so that the scale of the image is correct, ++regardless whether or not the printer has unprintable regions. ++This option is used to move the position of the clipped image ++back to where it belongs on the page. The default is to send ++the amount which was clipped by -u and -l, and should be ++good in most cases. ++.TS ++l l. ++0 don't send any logical clipping amounts ++1 only send Y clipping amount ++2 only send X clipping amount ++3 send both X and Y clipping amounts ++.TE ++.TP ++.BI \-P ++Do not send START_PLANE codes on monochrome output. May be ++needed by some monochrome-only printers, such as the ++HP LaserJet 1000. ++.TP ++.BI \-X\0 padlen ++Add extra zero padding to the end of BID segments. The default is ++16 bytes. Padding 16 bytes of zeroes ++is needed for older ZjStream printers, such as the Minolta 2200DL ++and HP LaserJet 1000, and seems harmless to newer ones, such as ++the Minolta 2300DL. So the default should be good for all cases. ++.SS Color Tweaking Options ++These are the options used to control the quality of color output. ++Color correction is currently a WORK IN PROGRESS. ++.TP ++.BI \-g\0 gsopts ++Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, ++etc. This option may appear more than once. ++.TP ++.BI \-G\0 profile.icm ++Convert \fIprofile.icm\fP to a Postscript color rendering ++dictionary (CRD) using \fBfoo2zjs-icc2ps\fP and ++adjust the printer colors by using the Postscript \fBsetcolorrendering\fP ++operator. (WORK IN PROGRESS). ++.TP ++.BI \-G\0 gamma-file.ps ++Prepend \fIgamma-file.ps\fP to the Postscript input to perform ++color correction using the \fBsetcolortransfer\fP Postscript operator. ++For example, the file might contain: ++.br ++{0.333 exp} {0.333 exp} {0.333 exp} {0.333 exp} setcolortransfer ++.TP ++.BI \-I\0 intent ++Select profile intent from the ICM file. ++0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute. ++Default is 0 (perceptual). ++.SS Debugging Options ++These options are used for debugging \fBfoo2hbpl1\fP and its wrapper. ++.TP ++.BI \-S\0 plane ++Output just a single color plane from a color print and print it ++on the black plane. The default is to output all color planes. ++.TS ++l l. ++1 Cyan ++2 Magenta ++3 Yellow ++4 Black ++.TE ++.TP ++.BI \-D\0 level ++Set Debug level [0]. ++ ++.SH EXAMPLES ++Create a monochrome ZjStream from a Postscript document, ++examine it, and then print it using a RAW print queue: ++ ++.RS ++.nf ++foo2hbpl1-wrapper testpage.ps > testpage.prn ++hbpl1decode < testpage.prn ++lpr -P raw testpage.prn ++.fi ++.RE ++.P ++Create a color ZjStream stream from a Postscript document: ++ ++.RS ++.nf ++foo2hbpl1-wrapper -c testpage.ps > testpage.prn ++.fi ++.RE ++ ++.SH FILES ++.BR /usr/bin/foo2hbpl1-wrapper ++.SH SEE ALSO ++.BR foo2hbpl1 (1), ++.BR hbpldecode (1) ++.SH "AUTHOR" ++Rick Richardson <rick.richardson@comcast.net> ++.br ++${URLHBPL}/ ++'\" ++'\" ++'\" ++.em pdf_outline +--- foo2zjs/foo2hbpl1-wrapper.in 1970-01-01 00:00:00.000000000 +0000 ++++ foo2zjs/foo2hbpl1-wrapper.in 2014-04-04 19:06:24.048060000 +0000 +@@ -0,0 +1,577 @@ ++#!/bin/sh ++ ++#* Copyright (C) 2013 Rick Richardson ++#* ++#* This program is free software; you can redistribute it and/or modify ++#* it under the terms of the GNU General Public License as published by ++#* the Free Software Foundation; either version 2 of the License, or ++#* (at your option) any later version. ++#* ++#* This program is distributed in the hope that it will be useful, ++#* but WITHOUT ANY WARRANTY; without even the implied warranty of ++#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++#* GNU General Public License for more details. ++#* ++#* You should have received a copy of the GNU General Public License ++#* along with this program; if not, write to the Free Software ++#* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++#* ++#* Authors: Rick Richardson <rick.richardson@comcast.net> ++ ++VERSION='$Id: foo2hbpl1-wrapper.in,v 1.3 2014/03/24 23:14:24 rick Exp $' ++ ++# ++# Printer Notes: ++# ++# Dell 1250c ++# Dell C1660w ++# Dell C1760w ++# Epson AcuLaser C1700 ++# Fuji-Xerox DocuPrint CP105b ++# ++ ++PROGNAME="$0" ++BASENAME=`basename $PROGNAME` ++PREFIX=/usr ++SHARE=$PREFIX/share/foo2hbpl ++PATH=$PATH:/sw/bin:/opt/local/bin ++ ++# ++# Log the command line, for debugging and problem reports ++# ++if [ -x /usr/bin/logger -o -x /bin/logger ]; then ++ logger -t "$BASENAME" -p lpr.info -- "$BASENAME $@" </dev/null ++fi ++ ++usage() { ++ cat <<EOF ++Usage: ++ $BASENAME [options] [ps-file] ++ ++ Foomatic printer wrapper for the foo2hbpl1 printer driver. ++ This script reads a Postscript ps-file or standard input ++ and converts it to a Xerox HBPL version 1 stream. ++ ++Normal Options: ++-c Print in color (else monochrome) ++-C colormode Colormode [$COLORMODE] ++ 10=ICM RGB color profile (using -G *.icm file) ++-m media Media code to send to printer [$MEDIA] ++ 1=plain, 2=bond, 3=lwcard, 4=lwgcard, 5=labels, ++ 6=envelope, 7=recycled, 8=plain2, 9=bond2, ++ 10=lwcard2, 11=lwgcard2, 12=recycled2 ++-p paper Paper code [$PAPER] ++ letter, legal, a4, executive, env10, monarch, ++ c5, envDL, isob5, jisb5, a5, folio, CustomWxH ++-n copies Number of copies [$COPIES] ++ Resolution is always 600x600 ++-t Draft mode. Every other pixel is white. ++-2/-3/-4/-6/-8/-10/-12/-14/-15/-16/-18 ++ Print with N-up (requires psutils) ++-o orient For N-up: -op is portrait, -ol is landscape, -os is seascape. ++ ++Printer Tweaking Options: ++-u left,top,right,bottom ++ Clip (i.e. white-out) margins of specified width ++ ++Color Tweaking Options: ++-g gsopts Additional options to pass to Ghostscript, such as ++ -dDITHERPPI=nnn, etc. May appear more than once. [] ++-G profile.icm Convert profile.icm to a Postscript CRD using icc2ps and ++ adjust colors using the setcolorrendering PS operator. ++ $SHARE/icm/ will be searched for profile.icm. ++-I intent Select profile intent from ICM file [$INTENT] ++ 0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute ++-G gamma-file.ps Prepend gamma-file to the Postscript input to perform ++ color correction using the setcolortransfer PS operator. ++ ++Debugging Options: ++-D lvl Set Debug level [$DEBUG] ++-V $VERSION ++EOF ++ ++ exit 1 ++} ++ ++# ++# Report an error and exit ++# ++error() { ++ echo "$BASENAME: $1" >&2 ++ exit 1 ++} ++ ++dbgcmd() { ++ if [ $DEBUG -ge 1 ]; then ++ echo "$@" >&2 ++ fi ++ "$@" ++} ++ ++# ++# N-up-ify the job. Requires psnup from psutils package ++# ++nup() { ++ case "$NUP" in ++ [2368]|1[0458]) ++ tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.3in -p$paper -q ++ ;; ++ [49]|1[26]) ++ tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.5in -p$paper -q ++ ;; ++ *) ++ error "Illegal call to nup()." ++ ;; ++ esac ++} ++ ++# ++# Process the options ++# ++ ++# Try to use a local copy of GhostScript 8.54, if available. Otherwise, ++# fallback to whatever the Linux distro has installed (usually 7.07) ++# ++# N.B. := operator used here, when :- would be better, because "ash" ++# doesn't have :- ++if eval gs.foo -v >/dev/null 2>&1; then ++ GSBIN=${GSBIN:-gs.foo} ++else ++ GSBIN=${GSBIN:-gs} ++fi ++ ++CMDLINE="$*" ++DEBUG=0 ++COLOR= ++COLORMODE=default ++MODEL=0 ++MEDIA=1 # plain ++COPIES=1 ++PAPER=letter ++RES=600x600 # do not change this ++SOURCE=1 ++NUP= ++CLIP_ALL= ++BC= ++AIB= ++NOPLANES= ++COLOR2MONO= ++GAMMAFILE=default ++INTENT=0 ++GSOPTS= ++EXTRAPAD= ++SAVETONER= ++NUP_ORIENT= ++GSDEV=-sDEVICE=pgmraw ++# What mode to use if the user wants us to pick the "best" mode ++case `$GSBIN --version` in ++7*) DEFAULTCOLORMODE=10 ++ DEFAULTCOLORMODE=1 ++ ;; ++8.1*) ++ DEFAULTCOLORMODE=1 ++ QUALITY=1 ++ ;; ++*) DEFAULTCOLORMODE=1 ++ ;; ++esac ++while getopts "1:23456789o:b:cC:d:g:l:u:L:m:n:p:q:s:tz:ABS:D:G:I:PX:Vh?" opt ++do ++ case $opt in ++ b) GSBIN="$OPTARG";; ++ c) COLOR=-c;; ++ d) DUPLEX="$OPTARG";; ++ g) GSOPTS="$GSOPTS $OPTARG";; ++ m) MEDIA="$OPTARG";; ++ n) COPIES="$OPTARG";; ++ p) PAPER="$OPTARG";; ++ q) QUALITY="$OPTARG";; ++ s) SOURCE="$OPTARG";; ++ t) SAVETONER="-t";; ++ z) MODEL="$OPTARG";; ++ u) CLIP_ALL="-u $OPTARG";; ++ A) AIB=-A;; ++ B) BC=-B;; ++ C) COLORMODE="$OPTARG";; ++ S) COLOR2MONO="-S$OPTARG";; ++ D) DEBUG="$OPTARG";; ++ G) GAMMAFILE="$OPTARG";; ++ I) INTENT="$OPTARG";; ++ P) NOPLANES=-P;; ++ X) EXTRAPAD="-X $OPTARG";; ++ [234689]) NUP="$opt";; ++ [57]) error "Can't find acceptable layout for $opt-up";; ++ 1) case "$OPTARG" in ++ [024568]) NUP="1$OPTARG";; ++ *) error "Can't find acceptable layout for 1$OPTARG-up";; ++ esac ++ ;; ++ o) case "$OPTARG" in ++ l*) NUP_ORIENT=-l;; ++ s*) NUP_ORIENT=-r;; ++ p*|*) NUP_ORIENT=;; ++ esac;; ++ V) echo "$VERSION"; foo2hbpl -V; foo2zjs-pstops -V; exit 0;; ++ h|\?) ++ if [ "$CMDLINE" != "-?" -a "$CMDLINE" != -h ]; then ++ echo "Illegal command:" ++ echo " $0 $CMDLINE" ++ echo ++ fi ++ usage;; ++ esac ++done ++shift `expr $OPTIND - 1` ++ ++# ++# If there is an argument left, take it as the file to print. ++# Else, the input comes from stdin. ++# ++if [ $# -ge 1 ]; then ++ if [ "$LPJOB" = "" ]; then ++ : # LPJOB="$1" ++ fi ++ exec < $1 ++fi ++ ++# ++# Validate media code ++# ++case "$MEDIA" in ++1|plain) MEDIA=1;; ++2|bond) MEDIA=2;; ++3|lwcard) MEDIA=3;; ++4|lwgcard) MEDIA=4;; ++5|labels) MEDIA=5;; ++6|envelope) MEDIA=6;; ++7|recycled) MEDIA=7;; ++8|plain2) MEDIA=8;; ++9|bond2) MEDIA=9;; ++10|lwcard2) MEDIA=10;; ++11|lwgcard2) MEDIA=11;; ++12|recycled2) MEDIA=12;; ++[0-9]*) ;; ++*) error "Unknown media code $MEDIA";; ++esac ++ ++# ++# Validate source (InputSlot) code ++# ++case "$SOURCE" in ++1|auto) SOURCE=1;; ++2|manual) SOURCE=2;; ++3|multi) SOURCE=3;; ++4|tray1) SOURCE=4;; ++[0-9]*) ;; ++*) error "Unknown source code $SOURCE";; ++esac ++ ++# ++# Figure out the paper dimensions in pixels/inch, and set the ++# default clipping region. Unfortunately, this is a trouble ++# area for ZjStream printers. Various versions of ZjS print ++# engines react differently when asked to print into their ++# unprintable regions. ++# ++set_clipping() { ++ ++ # Set clipping region if it isn't already set ++ if [ "$CLIP_ALL" = "" ]; then ++ CLIP_ALL="-u $1,$2,$3,$4" ++ fi ++} ++ ++case "$PAPER" in ++Custom*x*) ++ # Command line only ++ XDIM=`echo "$PAPER" | sed -e "s/Custom.//" -e "s/x.*//" ` ++ YDIM=`echo "$PAPER" | sed -e "s/.*x//" ` ++ if [ "$XDIM" = "" -o "$YDIM" = "" ]; then ++ error "Custom page size '$PAPER' != 1-99999" ++ fi ++ if [ "$XDIM" -eq 0 -o "$YDIM" -eq 0 ]; then ++ error "Custom page size '$PAPER' != 1-99999" ++ fi ++ XDIM=`dc -e "$XDIM 600* 72/p"` ++ YDIM=`dc -e "$YDIM 600* 72/p"` ++ PAPER=21; paper=letter; ++ DIM="${XDIM}x${YDIM}" ++ ;; ++Custom*) ++ #%%BeginFeature: *CustomPageSize True ++ #216 ++ #360 ++ #0 ++ #0 ++ #0 ++ #pop pop pop pop pop ++ ++ #%%BeginFeature: *CustomPageSize True ++ #792.000000 612.000000 1 0.000000 0.000000 ++ #pop pop pop pop pop ++ ++ if [ $DEBUG = 0 ]; then ++ TMPFILE=/tmp/cus$$ ++ else ++ TMPFILE=/tmp/custom.ps ++ fi ++ cat >$TMPFILE ++ exec <$TMPFILE ++ ++ tmp=`head -n 10000 $TMPFILE \ ++ | sed -n '/CustomPageSize/{n;p;n;p;}' \ ++ | tr '\n' ' '` ++ case "$tmp" in ++ [0-9]*\ [0-9]*) ++ XDIM=`echo "$tmp" | sed 's/ .*//'` ++ YDIM=`echo "$tmp" | sed -e 's/^[^ ]* //' -e 's/ .*//'` ++ ;; ++ *) ++ if [ $DEBUG = 0 ]; then rm -f $TMPFILE; fi ++ error "Custom page size [XY]DIM != 1-99999" ++ ;; ++ esac ++ XDIM=`dc -e "$XDIM 600* 72/p"` ++ YDIM=`dc -e "$YDIM 600* 72/p"` ++ PAPER=21; paper=letter; ++ DIM="${XDIM}x${YDIM}" ++ ;; ++ ++# Use names that Ghostscript recognizes, referring to ++# /usr/share/ghostscript/9.10/Resource/Init/gs_statd.ps ++# foo2hbpl1 will provide the appropriate numeric value ++ ++letter) DIM=5100x6600 ;; ++legal) DIM=5100x8400 ;; ++a4) DIM=4961x7016 ;; ++executive) DIM=4350x6300 ;; ++env10) DIM=2475x5700 ;; ++monarch) DIM=2325x4500 ;; ++c5) DIM=3827x5409 ;; ++envDL) DIM=2599x5197 ;; ++isob5|b5) DIM=4158x5906 ;; ++jisb5) DIM=4299x6071 ;; ++a5) DIM=3496x4961 ;; ++folio) DIM=5100x7800 ;; ++pa4) DIM=4961x6600 ;; ++archA) DIM=5400x7200 ;; ++*) error "Unimplemented paper code $PAPER";; ++esac ++ ++#set_clipping 47 48 51 46 # exact values for Dell C1660w on letter paper ++ set_clipping 51 51 51 51 # default is 0.085 inches all around ++ ++PAPERSIZE="-sPAPERSIZE=$PAPER"; ++ ++# ++# Filter thru psnup if N-up printing has been requested ++# ++case $NUP in ++[234689]|1[024568]) PREFILTER="nup";; ++*) PREFILTER=cat;; ++esac ++if [ "$DEBUG" -ge 9 ]; then ++ PREFILTER="tee /tmp/$BASENAME.ps" ++fi ++ ++# ++# Overload -G. If the file name ends with ".icm" or ".ICM" ++# then convert the ICC color profile to a Postscript CRD, ++# then prepend it to the users job. Select the intent ++# using the -I option. ++# ++ ++create_crd() { ++ # ++ # Create a Postscript CRD ++ # ++ ICC2PS=$PREFIX/bin/foo2zjs-icc2ps ++ if [ -x $ICC2PS ]; then ++ case "$GAMMAFILE" in ++ none | none.icm | */none.icm) ++ ;; ++ *) ++ if [ -x /usr/bin/logger ]; then ++ logger -t "$BASENAME" -p lpr.info -- \ ++ "`basename $ICC2PS` -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps" ++ fi ++ $ICC2PS -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps 2>$ICCTMP.log \ ++ || error "Problem converting .ICM file to Postscript" ++ ;; ++ esac ++ ++ PSTOPS_OPTS="$PSTOPS_OPTS -c" ++ cat > $ICCTMP.usecie.ps <<-EOF ++ %!PS-Adobe-3.0 ++ <</UseCIEColor true>>setpagedevice ++ EOF ++ if [ "$QUALITY" = wts -o "$QUALITY" = as ]; then ++ if [ "$QUALITY" = wts ]; then ++ cat >> $ICCTMP.usecie.ps <<-EOF ++ << /UseWTS true >> setuserparams ++ EOF ++ else ++ cat >> $ICCTMP.usecie.ps <<-EOF ++ << /UseWTS false >> setuserparams ++ EOF ++ fi ++ cat >> $ICCTMP.usecie.ps <<-EOF ++ << ++ /AccurateScreens true ++ /HalftoneType 1 ++ /HalftoneName (Round Dot Screen) cvn ++ /SpotFunction { 180 mul cos exch 180 mul cos add 2 div} ++ /Frequency 137 ++ /Angle 37 ++ >> sethalftone ++ EOF ++ fi ++ cat > $ICCTMP.selcrd.ps <<-EOF ++ /Current /ColorRendering findresource setcolorrendering ++ EOF ++ case "$GAMMAFILE" in ++ none | none.icm | */none.icm) GAMMAFILE="$ICCTMP.usecie.ps";; ++ *) GAMMAFILE="$ICCTMP.usecie.ps $ICCTMP.crd.ps $ICCTMP.selcrd.ps";; ++ esac ++ else ++ GAMMAFILE= ++ fi ++} ++ ++if [ $DEBUG -gt 0 ]; then ++ ICCTMP=/tmp/icc ++else ++ ICCTMP=/tmp/icc$$ ++fi ++ ++if [ "" = "$COLOR" ]; then ++ COLORMODE= ++ GAMMAFILE= ++else ++ case "$COLORMODE" in ++ default) COLORMODE=$DEFAULTCOLORMODE;; ++ esac ++ case "$GAMMAFILE" in ++ default) GAMMAFILE=samclp300-0.icm;; ++ esac ++fi ++ ++CRDBASE="$PREFIX/share/foo2hbpl/crd" ++case "$MODEL" in ++ 0) model=CLP-300;; ++ 1) model=CLP-600;; ++ 2) model=CLP-600;; ++ 3) model=CLP-600;; ++esac ++ ++PSTOPS_OPTS="-n" ++ ++case "$COLORMODE" in ++0|"") ++ # Monochrome ++ ;; ++10|icm) ++ # Use old ICM method ++ AIB=-A ++ BC=-B ++ case "$GAMMAFILE" in ++ none | none.icm | */none.icm) ++ create_crd ++ ;; ++ *.icm|*.ICM|*.icc|*.ICC) ++ # ++ # Its really an .ICM file, not a gamma file. ++ # ++ # The file can be a full path name, or the name of a file in $SHARE/icm/ ++ # ++ if [ -r "$GAMMAFILE" ]; then ++ create_crd ++ elif [ -r "$SHARE/icm/$GAMMAFILE" ]; then ++ GAMMAFILE="$SHARE/icm/$GAMMAFILE" ++ create_crd ++ else ++ GAMMAFILE= ++ fi ++ ;; ++ esac ++ ;; ++1|crd) ++ # CRD ++ GAMMAFILE="" ++ GAMMAFILE="$GAMMAFILE $CRDBASE/${model}cms" ++ GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" ++ # Black text... ++ TMPFILE2=/tmp/black$$ ++ cat $CRDBASE/black-text.ps - >$TMPFILE2 ++ exec <$TMPFILE2 ++ ;; ++*.crd) ++ GAMMAFILE="$CRDBASE/prolog.ps" ++ if [ -f $COLORMODE ]; then ++ GAMMAFILE="$GAMMAFILE $COLORMODE" ++ elif [ -f $CRDBASE/$COLORMODE ]; then ++ GAMMAFILE="$GAMMAFILE $CRDBASE/$COLORMODE" ++ else ++ error "Can't find CRD '$COLORMODE' in . or in $CRDBASE" ++ fi ++ GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" ++ ;; ++*) ++ error "Unknown color method '$COLORMODE'" ++ ;; ++esac ++ ++if [ "" != "$COLOR" ]; then ++ GSDEV=-sDEVICE=pamcmyk32 ++ $GSBIN --help | grep -q pamcmyk32 || GSDEV=-sDEVICE=ppmraw ++fi ++ ++# ++# Figure out USERNAME ++# ++if [ "$LPUSER" != "" ]; then ++ USER="$LPUSER@$LPHOST" ++else ++ USER="" ++fi ++ ++# ++# Main Program, just cobble together the pipeline and run it ++# ++# The malarky with file descriptors 1 and 3 is to avoid a bug in ++# (some versions?) of Ghostscript where Postscript's stdout gets ++# intermingled with the printer drivers output, resulting in ++# corrupted image data. ++# ++GS="$GSBIN -q -dBATCH -dSAFER -dQUIET -dNOPAUSE" ++ ++foo2zjs-pstops $PSTOPS_OPTS | \ ++$PREFILTER \ ++| ($GS $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS \ ++ -sOutputFile="|cat 1>&3" $GAMMAFILE -_ >/dev/null) 3>&1 \ ++| foo2hbpl1 -m$MEDIA $CLIP_ALL -J "$LPJOB" -U "$USER" ++ ++# ++# Log the command line, for debugging and problem reports ++# ++if [ -x /usr/bin/logger ]; then ++ logger -t "$BASENAME" -p lpr.info -- \ ++ "$GSBIN $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS $GAMMAFILE" ++ logger -t "$BASENAME" -p lpr.info -- \ ++ "foo2hbpl1 -m$MEDIA $CLIP_ALL" ++fi ++ ++# ++# Remove cruft ++# ++if [ $DEBUG -eq 0 ]; then ++ for i in crd.ps log usecie.ps selcrd.ps ++ do ++ file="$ICCTMP.$i" ++ [ -f $file ] && rm -f $file ++ done ++ [ -f "$TMPFILE" ] && rm -f $TMPFILE ++ [ -f "$TMPFILE2" ] && rm -f $TMPFILE2 ++fi ++ ++exit 0 +--- foo2zjs/foo2hbpl1.1in 1970-01-01 00:00:00.000000000 +0000 ++++ foo2zjs/foo2hbpl1.1in 2014-03-24 12:30:14.000000000 +0000 +@@ -0,0 +1,68 @@ ++'\" t ++.TH foo2hbpl1 1 "${MODpage}" "foo2hbpl1 ${MODver}" ++#ifndef OLDGROFF ++#include "macros.man" ++#endif ++'\"========================================================================== ++'\" MANUAL PAGE SOURCE ++'\"========================================================================== ++.SH NAME ++foo2hbpl1 \- Convert Ghostscript output to an HBPLv1 printer stream ++.SH SYNOPSIS ++.B foo2hbpl1 ++.RI [ options "] <" pnm-or-pam-file " >" hbpl1-file ++.SH DESCRIPTION ++.B foo2hbpl1 ++converts Ghostscript pbmraw, pgmraw, ppmraw, or pamcmyk32 output ++formats to monochrome or color HBPL version 1 streams, to drive the ++Dell 1250c, Dell C1660w, Dell C1760w, ++Epson AcuLaser C1700, ++and Fuji-Xerox CP105b printers. ++ ++.SH COMMAND LINE OPTIONS ++.TP ++.BI \-J\0 filename ++Filename string to send to printer. ++.TP ++.BI \-U\0 username ++Username string to send to printer. ++.SH EXAMPLES ++Create a black and white ZJS stream: ++ ++.RS ++.nf ++gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ ++ -sPAPERSIZE=letter -r600x600 -sDEVICE=pgmraw \ ++ -sOutputFile=- - < testpage.ps \ ++| foo2hbpl1 >testpage.zm ++.fi ++.RE ++.P ++Create a color ZJS stream: ++ ++.RS ++.nf ++gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ ++ -sPAPERSIZE=letter -g5100x6600 -r600x600 -sDEVICE=pamcmyk32 \ ++ -sOutputFile=- - < testpage.ps \ ++| foo2hbpl1 >testpage.zc ++.fi ++.RE ++ ++.SH FILES ++.BR /usr/bin/foo2hbpl1 ++.SH SEE ALSO ++.BR foo2hbpl1-wrapper (1), ++.BR hbpldecode (1) ++.SH "AUTHOR" ++Rick Richardson <rick.richardson@comcast.net> ++.br ++Peter Korf <peter@niendo.de> ++.br ++Dave Coffin <dcoffin@cybercom.net> ++.br ++${URLHBPL}/ ++'\" ++'\" ++'\" ++.em pdf_outline +--- foo2zjs/foo2hbpl1.c 1970-01-01 00:00:00.000000000 +0000 ++++ foo2zjs/foo2hbpl1.c 2014-04-04 18:18:29.692060000 +0000 +@@ -0,0 +1,692 @@ ++/* ++ ++GENERAL ++This program converts bilevel PBM, 8-bit PGM, 24-bit PPM, and 32-bit ++CMYK PAM files (output by Ghostscript as "pbmraw", "pgmraw", "ppmraw", ++and "pamcmyk32" respectively) to HBPL version 1 for the consumption ++of various Dell, Epson, and Fuji-Xerox printers. ++ ++With this utility, you can print to some Dell and Fuji printers, such as these: ++ - Dell 1250c B/W and Color ++ - Dell C1660 B/W and Color ++ - Dell C1760 B/W and Color ++ - Epson AcuLaser C1700 B/W and Color ++ - Fuji-Xerox DocuPrint CP105 B/W and Color ++ ++AUTHORS ++This program was originally written by Dave Coffin in March 2014. ++ ++LICENSE ++This program is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 2 of the License, or (at ++your option) any later version. ++ ++This program is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with this program; if not, write to the Free Software ++Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ ++If you want to use this program under different license conditions, ++then contact the author for an arrangement. ++ ++*/ ++ ++static char Version[] = "$Id: foo2hbpl1.c,v 1.3 2014/03/30 05:08:32 rick Exp $"; ++ ++#include <time.h> ++#include <stdio.h> ++#include <stdlib.h> ++#include <ctype.h> ++#include <string.h> ++#include <unistd.h> ++#include <stdarg.h> ++#ifdef linux ++ #include <sys/utsname.h> ++#endif ++ ++/* ++ * Command line options ++ */ ++int MediaCode = 0; ++char *Username = NULL; ++char *Filename = NULL; ++int Clip[] = { 8,8,8,8 }; ++ ++void ++usage(void) ++{ ++ fprintf(stderr, ++"Usage:\n" ++" foo2hbpl1 [options] <pamcmyk32-file >hbpl-file\n" ++"\n" ++" Convert Ghostscript pbmraw, pgmraw, ppmraw, or pamcmyk32\n" ++" format to HBPLv1, for the Dell C1660w and other printers.\n" ++"\n" ++" gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \\ \n" ++" -sPAPERSIZE=letter -r600x600 -sDEVICE=pamcmyk32 \\ \n" ++" -sOutputFile=- - < testpage.ps \\ \n" ++" | foo2hbpl1 >testpage.zc\n" ++"\n" ++"Options:\n" ++"-m media Media code to send to printer [1 or 6]\n" ++" 1=plain, 2=bond, 3=lwcard, 4=lwgcard, 5=labels,\n" ++" 6=envelope, 7=recycled, 8=plain2, 9=bond2,\n" ++" 10=lwcard2, 11=lwgcard2, 12=recycled2\n" ++"-u left,top,right,bottom\n" ++" Erase margins of specified width [%d,%d,%d,%d]\n" ++"-J filename Filename string to send to printer\n" ++"-U username Username string to send to printer\n" ++"-V Version %s\n" ++ , Clip[0], Clip[1], Clip[2], Clip[3] ++ , Version); ++} ++ ++void ++error(int fatal, char *fmt, ...) ++{ ++ va_list ap; ++ ++ va_start(ap, fmt); ++ vfprintf(stderr, fmt, ap); ++ va_end(ap); ++ ++ if (fatal) exit(fatal); ++} ++ ++struct stream ++{ ++ unsigned char *buf; ++ int size, off, bits; ++}; ++ ++void ++putbits(struct stream *s, unsigned val, int nbits) ++{ ++ if (s->off + 16 > s->size && ++ !(s->buf = realloc(s->buf, s->size += 0x100000))) ++ error (1, "Out of memory\n"); ++ if (s->bits) ++ { ++ s->off--; ++ val |= s->buf[s->off] >> (8-s->bits) << nbits; ++ nbits += s->bits; ++ } ++ s->bits = nbits & 7; ++ while ((nbits -= 8) > 0) ++ s->buf[s->off++] = val >> nbits; ++ s->buf[s->off++] = val << -nbits; ++} ++ ++/* ++ Runlengths are integers between 1 and 17057 encoded as follows: ++ ++ 1 00 ++ 2 01 0 ++ 3 01 1 ++ 4 100 0 ++ 5 100 1 ++ 6 101 00 ++ 7 101 01 ++ 8 101 10 ++ 9 101 11 ++ 10 110 0000 ++ 11 110 0001 ++ 12 110 0010 ++ ... ++ 25 110 1111 ++ 26 111 000 000 ++ 27 111 000 001 ++ 28 111 000 010 ++ 29 111 000 011 ++ ... ++ 33 111 000 111 ++ 34 111 001 000 ++ ... ++ 41 111 001 111 ++ 42 111 010 000 ++ 50 111 011 0000 ++ 66 111 100 00000 ++ 98 111 101 000000 ++ 162 111 110 000000000 ++ 674 111 111 00000000000000 ++ 17057 111 111 11111111111111 ++*/ ++void ++put_len(struct stream *s, unsigned val) ++{ ++ unsigned code[] = ++ { ++ 1, 0, 2, ++ 2, 2, 3, ++ 4, 8, 4, ++ 6, 0x14, 5, ++ 10, 0x60, 7, ++ 26, 0x1c0, 9, ++ 50, 0x3b0, 10, ++ 66, 0x780, 11, ++ 98, 0xf40, 12, ++ 162, 0x7c00, 15, ++ 674, 0xfc000, 20, ++ 17058 ++ }; ++ int c = 0; ++ ++ if (val < 1 || val > 17057) return; ++ while (val >= code[c+3]) c += 3; ++ putbits(s, val-code[c] + code[c+1], code[c+2]); ++} ++ ++/* ++ CMYK byte differences are encoded as follows: ++ ++ 0 000 ++ +1 001 ++ -1 010 ++ 2 011s0 s = 0 for +, 1 for - ++ 3 011s1 ++ 4 100s00 ++ 5 100s01 ++ 6 100s10 ++ 7 100s11 ++ 8 101s000 ++ 9 101s001 ++ ... ++ 14 101s110 ++ 15 101s111 ++ 16 110s00000 ++ 17 110s00001 ++ 18 110s00010 ++ ... ++ 46 110s11110 ++ 47 110s11111 ++ 48 1110s00000 ++ 49 1110s00001 ++ ... ++ 78 1110s11110 ++ 79 1110s11111 ++ 80 1111s000000 ++ 81 1111s000001 ++ ... ++ 126 1111s101110 ++ 127 1111s101111 ++ 128 11111110000 ++*/ ++void ++put_diff(struct stream *s, signed char val) ++{ ++ static unsigned short code[] = ++ { ++ 2, 3, 3, 1, ++ 4, 4, 3, 2, ++ 8, 5, 3, 3, ++ 16, 6, 3, 5, ++ 48, 14, 4, 5, ++ 80, 15, 4, 6, ++ 129 ++ }; ++ int sign, abs, c = 0; ++ ++ switch (val) ++ { ++ case 0: putbits(s, 0, 3); return; ++ case 1: putbits(s, 1, 3); return; ++ case -1: putbits(s, 2, 3); return; ++ } ++ abs = ((sign = val < 0)) ? -val:val; ++ while (abs >= code[c+4]) c += 4; ++ putbits(s, code[c+1], code[c+2]); ++ putbits(s, sign, 1); ++ putbits(s, abs-code[c], code[c+3]); ++} ++ ++void ++setle(unsigned char *c, int s, int i) ++{ ++ while (s--) ++ { ++ *c++ = i; ++ i >>= 8; ++ } ++} ++ ++void ++start_doc(int color) ++{ ++ char reca[] = { 0x41,0x81,0xa1,0x00,0x82,0xa2,0x07,0x00,0x83,0xa2,0x01,0x00 }; ++ time_t t; ++ struct tm *tmp; ++ char datestr[16], timestr[16]; ++ char cname[128] = "My Computer"; ++ char *mname[] = ++ { "", ++ "NORMAL", ++ "THICK", ++ "HIGHQUALITY", ++ "COAT2", ++ "LABEL", ++ "ENVELOPE", ++ "RECYCLED", ++ "NORMALREV", ++ "THICKSIDE2", ++ "HIGHQUALITYREV", ++ "COATEDPAPER2REV", ++ "RECYCLEREV", ++ }; ++ ++ t = time(NULL); ++ tmp = localtime(&t); ++ strftime(datestr, sizeof datestr, "%m/%d/%Y", tmp); ++ strftime(timestr, sizeof timestr, "%H:%M:%S", tmp); ++ ++ #ifdef linux ++ { ++ struct utsname u; ++ ++ uname(&u); ++ strncpy(cname, u.nodename, 128); ++ cname[127] = 0; ++ } ++ #endif ++ ++/* Lines end with \n, not \r\n */ ++ ++ printf( ++ "\033%%-12345X@PJL SET STRINGCODESET=UTF8\n" ++ "@PJL COMMENT DATE=%s\n" ++ "@PJL COMMENT TIME=%s\n" ++ "@PJL COMMENT DNAME=%s\n" ++ "@PJL JOB MODE=PRINTER\n" ++ "@PJL SET JOBATTR=\"@LUNA=%s\"\n" ++ "@PJL SET JOBATTR=\"@TRCH=OFF\"\n" ++ "@PJL SET DUPLEX=OFF\n" ++ "@PJL SET BINDING=LONGEDGE\n" ++ "@PJL SET IWAMANUALDUP=OFF\n" ++ "@PJL SET JOBATTR=\"@MSIP=%s\"\n" ++ "@PJL SET RENDERMODE=%s\n" ++ "@PJL SET ECONOMODE=OFF\n" ++ "@PJL SET RET=ON\n" ++ "@PJL SET JOBATTR=\"@IREC=OFF\"\n" ++ "@PJL SET JOBATTR=\"@TRAP=ON\"\n" ++ "@PJL SET JOBATTR=\"@JOAU=%s\"\n" ++ "@PJL SET JOBATTR=\"@CNAM=%s\"\n" ++ "@PJL SET COPIES=1\n" ++ "@PJL SET QTY=1\n" ++ "@PJL SET PAPERDIRECTION=SEF\n" ++ "@PJL SET RESOLUTION=600\n" ++ "@PJL SET BITSPERPIXEL=8\n" ++ "@PJL SET JOBATTR=\"@DRDM=XRC\"\n" ++ "@PJL SET JOBATTR=\"@TSCR=11\"\n" ++ "@PJL SET JOBATTR=\"@GSCR=11\"\n" ++ "@PJL SET JOBATTR=\"@ISCR=12\"\n" ++ "@PJL SET JOBATTR=\"@TTRC=11\"\n" ++ "@PJL SET JOBATTR=\"@GTRC=11\"\n" ++ "@PJL SET JOBATTR=\"@ITRC=12\"\n" ++ "@PJL SET JOBATTR=\"@TCPR=11\"\n" ++ "@PJL SET JOBATTR=\"@GCPR=11\"\n" ++ "@PJL SET JOBATTR=\"@ICPR=12\"\n" ++ "@PJL SET JOBATTR=\"@TUCR=11\"\n" ++ "@PJL SET JOBATTR=\"@GUCR=11\"\n" ++ "@PJL SET JOBATTR=\"@IUCR=12\"\n" ++ "@PJL SET JOBATTR=\"@BSPM=OFF\"\n" ++ "@PJL SET JOBATTR=\"@TDFT=0\"\n" ++ "@PJL SET JOBATTR=\"@GDFT=0\"\n" ++ "@PJL SET JOBATTR=\"@IDFT=0\"\n" ++ "@PJL ENTER LANGUAGE=HBPL\n" ++ , datestr, timestr ++ , Filename ? Filename : "" ++ , Username ? Username : "" ++ , mname[MediaCode] ++ , color ? "COLOR" : "GRAYSCALE" ++ , Username ? Username : "" ++ , cname); ++ fwrite (reca, 1, sizeof reca, stdout); ++} ++ ++#define IP (((int *)image) + off) ++#define CP (((char *)image) + off) ++#define DP (((char *)image) + off*deep) ++#define BP(x) ((blank[(off+x) >> 3] << ((off+x) & 7)) & 128) ++#define put_token(s,x) putbits(s, huff[hsel][x] >> 4, huff[hsel][x] & 15) ++ ++void ++encode_page(int color, int width, int height, char *image) ++{ ++ unsigned char head[90] = ++ { ++ 0x43,0x91,0xa1,0x00,0x92,0xa1,0x01,0x93,0xa1,0x01,0x94,0xa1, ++ 0x00,0x95,0xc2,0x00,0x00,0x00,0x00,0x96,0xa1,0x00,0x97,0xc3, ++ 0x00,0x00,0x00,0x00,0x98,0xa1,0x00,0x99,0xa4,0x01,0x00,0x00, ++ 0x00,0x9a,0xc4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x9b, ++ 0xa1,0x00,0x9c,0xa1,0x01,0x9d,0xa1,0x00,0x9e,0xa1,0x02,0x9f, ++ 0xa1,0x05,0xa0,0xa1,0x08,0xa1,0xa1,0x00,0xa2,0xc4,0x00,0x00, ++ 0x00,0x00,0x00,0x00,0x00,0x00,0x51,0x52,0xa3,0xa1,0x00,0xa4, ++ 0xb1,0xa4 ++ }; ++ unsigned char body[52] = ++ { ++ 0x20,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x10,0x32,0x04,0x00, ++ 0xa1,0x42,0x00,0x00,0x00,0x00,0xff ++ }; ++ static short papers[] = ++ { // Official sizes to nearest 1/600 inch ++ // will accept +-1.5mm (35/600 inch) tolerance ++ 0, 5100, 6600, // Letter ++ 2, 5100, 8400, // Legal ++ 4, 4961, 7016, // A4 ++ 6, 4350, 6300, // Executive ++ 13, 2475, 5700, // #10 envelope ++ 15, 2325, 4500, // Monarch envelope ++ 17, 3827, 5409, // C5 envelope ++ 19, 2599, 5197, // DL envelope ++// ??, 4158, 5906, // B5 ISO ++ 22, 4299, 6071, // B5 JIS ++ 30, 3496, 4961, // A5 ++ 410, 5100, 7800, // Folio ++ }; ++ static const unsigned short huff[2][8] = ++ { ++ { 0x01,0x63,0x1c5,0x1d5,0x1e5,0x22,0x3e6 }, // for text & graphics ++ { 0x22,0x63,0x1c5,0x1d5,0x1e5,0x01,0x3e6 }, // for images ++ }; ++ unsigned char *blank; ++ static int pagenum = 0; ++ struct stream stream[5] = { { 0 } }; ++ int dirs[] = { -1,0,-1,1,2 }, rotor[] = { 0,1,2,3,4 }; ++ int i, j, row, col, deep, dir, run, try, bdir, brun, total; ++ int paper = 510, hsel = 0, off = 0, bit = 0, stat = 0; ++ int margin = width-96; ++ ++ for (i = 0; i < sizeof papers / sizeof *papers; i++) ++ if (abs(width-papers[i+1]) < 36 && abs(height-papers[i+2]) < 36) ++ paper = papers[i]; ++ if (!MediaCode) ++ MediaCode = paper & 1 ? 6 : 1; ++ if (!pagenum) ++ start_doc(color); ++ head[12] = paper >> 1; ++ if (paper == 510) ++ { ++ setle (head+15, 2, (width*254+300)/600); // units of 0.1mm ++ setle (head+17, 2, (height*254+300)/600); ++ head[21] = 2; ++ } ++ width = -(-width & -8); ++ setle (head+33, 4, ++pagenum); ++ setle (head+39, 4, width); ++ setle (head+43, 4, height); ++ setle (head+70, 4, width); ++ setle (head+74, 4, height); ++ head[55] = 9 + color*130; ++ if (color) body[6] = 1; ++ else body[4] = 8; ++ ++ deep = 1 + color*3; ++ for (i=1; i < 5; i++) ++ dirs[i] -= width; ++ if (!color) dirs[4] = -8; ++ ++ blank = calloc(height+2, width/8); ++ memset (blank++, -color, width/8+1); ++ for (row = 1; row <= height; row++) ++ { ++ for (col = deep; col < deep*2; col++) ++ image[row*width*deep + col] = -1; ++ for (col = 8; col < width*deep; col += 4) ++ if (*(int *)(image + row*width*deep + col)) ++ { ++ for (col = 12; col < margin/8; col++) ++ blank[row*(width/8)+col] = -1; ++ blank[row*(width/8)+col] = -2 << (~margin & 7); ++ break; ++ } ++ } ++ memset (image, -color, (width+1)*deep); ++ image += (width+1)*deep; ++ blank += width/8; ++ ++ while (off < width * height) ++ { ++ for (bdir = brun = dir = 0; dir < 5; dir++) ++ { ++ try = dirs[rotor[dir]]; ++ for (run = 0; run < 17057; run++, try++) ++ { ++ if (color) ++ { ++ if (IP[run] != IP[try]) break; ++ } ++ else ++ if (CP[run] != CP[try]) break; ++ ++ if (BP(run) != BP(try)) break; ++ } ++ if (run > brun) ++ { ++ bdir = dir; ++ brun = run; ++ } ++ } ++ if (brun == 0) ++ { ++ put_token(stream, 5); ++ for (i = 0; i < deep; i++) ++ put_diff(stream+1+i, DP[i] - DP[i-deep]); ++ bit = 0; ++ off++; ++ stat--; ++ continue; ++ } ++ if (brun > width * height - off) ++ brun = width * height - off; ++ if (bdir) ++ { ++ j = rotor[bdir]; ++ for (i = bdir; i; i--) ++ rotor[i] = rotor[i-1]; ++ rotor[0] = j; ++ } ++ if ((off-1+brun)/width != (off-1)/width) ++ { ++ if (abs(stat) > 8 && ((stat >> 31) & 1) != hsel) ++ { ++ hsel ^= 1; ++ put_token(stream, 6); ++ } ++ stat = 0; ++ } ++ stat += bdir == bit; ++ put_token(stream, bdir - bit); ++ put_len(stream, brun); ++ bit = brun < 17057; ++ off += brun; ++ } ++ ++ putbits(stream, 0xff, 8); ++ for (total = 48, i = 0; i <= deep; i++) ++ { ++ putbits(stream+i, 0xff, 8); ++ stream[i].off--; ++ setle (body+32 + i*4, 4, stream[i].off); ++ total += stream[i].off; ++ } ++ head[85] = 0xa2 + (total > 0xffff)*2; ++ setle (head+86, 4, total); ++ fwrite(head, 1, 88+(total > 0xffff)*2, stdout); ++ fwrite(body, 1, 48, stdout); ++ for (i = 0; i <= deep; i++) ++ { ++ fwrite(stream[i].buf, 1, stream[i].off, stdout); ++ free(stream[i].buf); ++ } ++ free(blank-width/8-1); ++ printf("SD"); ++} ++#undef IP ++#undef CP ++#undef DP ++#undef BP ++#undef put_token ++ ++int ++getint(FILE *fp) ++{ ++ int c, ret; ++ ++ for (;;) ++ { ++ while (isspace(c = fgetc(fp))); ++ if (c == '#') ++ while (fgetc(fp) != '\n'); ++ else break; ++ } ++ if (!isdigit(c)) return -1; ++ for (ret = c-'0'; isdigit(c = fgetc(fp)); ) ++ ret = ret*10 + c-'0'; ++ return ret; ++} ++ ++void ++do_file(FILE *fp) ++{ ++ int type, iwide, ihigh, ideep, imax, ibyte; ++ int wide, deep, byte, row, col, i, k; ++ char tupl[128], line[128]; ++ unsigned char *image, *sp, *dp; ++ ++ while ((type = fgetc(fp)) != EOF) ++ { ++ type = ((type - 'P') << 8) | fgetc(fp); ++ tupl[0] = iwide = ihigh = ideep = deep = imax = ibyte = -1; ++ switch (type) ++ { ++ case '4': ++ deep = 1 + (ideep = 0); ++ goto six; ++ case '5': ++ deep = ideep = 1; ++ goto six; ++ case '6': ++ deep = 1 + (ideep = 3); ++six: iwide = getint(fp); ++ ihigh = getint(fp); ++ imax = type == '4' ? 255 : getint(fp); ++ break; ++ case '7': ++ do ++ { ++ if (!fgets(line, 128, fp)) goto fail; ++ if (!strncmp(line, "WIDTH ",6)) ++ iwide = atoi(line + 6); ++ if (!strncmp(line, "HEIGHT ",7)) ++ ihigh = atoi(line + 7); ++ if (!strncmp(line, "DEPTH ",6)) ++ deep = ideep = atoi(line + 6); ++ if (!strncmp(line, "MAXVAL ",7)) ++ imax = atoi(line + 7); ++ if (!strncmp(line, "TUPLTYPE ",9)) ++ strcpy (tupl, line + 9); ++ } while (strcmp(line, "ENDHDR\n")); ++ if (ideep != 4 || strcmp(tupl, "CMYK\n")) goto fail; ++ break; ++ default: ++ goto fail; ++ } ++ if (iwide <= 0 || ihigh <= 0 || imax != 255) goto fail; ++ wide = -(-iwide & -8); ++ if (ideep) ++ ibyte = iwide * ideep; ++ else ++ ibyte = wide >> 3; ++ byte = wide * deep; ++ image = calloc (ihigh+2, byte); ++ for (row = 1; row <= ihigh; row++) ++ { ++ i = fread (image, ibyte, 1, fp); ++ sp = image; ++ dp = image + row*byte; ++ for (col = 0; col < iwide; col++) ++ { ++ dp += deep; ++ switch (ideep) ++ { ++ case 0: ++ *dp = ((image[col >> 3] >> (~col & 7)) & 1) * 255; ++ break; ++ case 1: ++ *dp = ~*sp; ++ break; ++ case 3: ++ for (k = sp[2], i = 0; i < 2; i++) ++ if (k < sp[i]) k = sp[i]; ++ *dp = ~k; ++ for (i = 0; i < 3; i++) ++ dp[i+1] = k ? (k - sp[i]) * 255 / k : 255; ++ break; ++ case 4: ++ for (i=0; i < 4; i++) ++ dp[i] = sp[((i-1) & 3)]; ++ break; ++ } ++ sp += ideep; ++ } ++ for (i = 0; i < deep*Clip[0]; i++) ++ image[row*byte + deep+i] = 0; ++ for (i = deep*(iwide-Clip[2]); i < byte; i++) ++ image[row*byte + deep+i] = 0; ++ } ++ memset(image+deep, 0, byte*(Clip[1]+1)); ++ memset(image+deep + byte*(ihigh-Clip[3]+1), 0, byte*Clip[3]); ++ encode_page(deep > 1, iwide, ihigh, (char *) image); ++ free(image); ++ } ++ return; ++fail: ++ fprintf (stderr, "Not an acceptable PBM, PPM or PAM file!!!\n"); ++} ++ ++int ++main(int argc, char *argv[]) ++{ ++ int c, i; ++ ++ while ( (c = getopt(argc, argv, "m:u:J:U:V")) != EOF) ++ switch (c) ++ { ++ case 'm': MediaCode = atoi(optarg); break; ++ case 'u': if (sscanf(optarg, "%d,%d,%d,%d", ++ Clip, Clip+1, Clip+2, Clip+3) != 4) ++ error(1, "Must specify four clipping margins!\n"); ++ break; ++ case 'J': if (optarg[0]) Filename = optarg; break; ++ case 'U': if (optarg[0]) Username = optarg; break; ++ case 'V': printf("%s\n", Version); return 0; ++ default: usage(); return 1; ++ } ++ ++ argc -= optind; ++ argv += optind; ++ ++ if (argc == 0) ++ { ++ do_file(stdin); ++ } ++ else ++ { ++ for (i = 0; i < argc; ++i) ++ { ++ FILE *ifp; ++ ++ if (!(ifp = fopen(argv[i], "r"))) ++ error(1, "Can't open '%s' for reading\n", argv[i]); ++ do_file(ifp); ++ fclose(ifp); ++ } ++ } ++ puts("B\033%-12345X@PJL EOJ"); ++ return 0; ++} +--- foo2zjs/foomatic-db/driver/foo2hbpl1.xml 1970-01-01 00:00:00.000000000 +0000 ++++ foo2zjs/foomatic-db/driver/foo2hbpl1.xml 2014-03-24 16:18:13.000000000 +0000 +@@ -0,0 +1,21 @@ ++<driver id="driver/foo2hbpl1"> ++ <name>foo2hbpl1</name> ++ <url>http://foo2hbpl.rkkda.com/</url> ++ <execution> ++ <filter /> ++ <prototype>foo2hbpl1-wrapper %A</prototype> ++ </execution> ++ <comments> <en> ++ ++ This is a driver developed for the Dell 1250c, Dell C1660, Dell C1760, ++ Epson AcuLaser C1700, and the Fuji-Xerox DocuPrint cp105. ++ ++ </en> </comments> ++ <printers> ++ <printer><id>printer/Dell-1250c</id></printer> ++ <printer><id>printer/Dell-C1660</id></printer> ++ <printer><id>printer/Dell-C1760</id></printer> ++ <printer><id>printer/Epson-AcuLaser_C1700</id></printer> ++ <printer><id>printer/Fuji_Xerox-DocuPrint_CP105</id></printer> ++ </printers> ++</driver> +--- foo2zjs/foomatic-db/opt/foo2hbpl1-ColorMode.xml 1970-01-01 00:00:00.000000000 +0000 ++++ foo2zjs/foomatic-db/opt/foo2hbpl1-ColorMode.xml 2014-03-24 15:31:46.000000000 +0000 +@@ -0,0 +1,38 @@ ++<option type="enum" id="opt/foo2hbpl1-ColorMode"> ++ <!-- A multilingual <comments> block can appear here, too; ++ it should be treated as documentation for the user. --> ++ <arg_longname> <en>Color Mode</en> </arg_longname> ++ <arg_shortname> <en>ColorMode</en> </arg_shortname> ++ <arg_execution> ++ <arg_group>General</arg_group> ++ <arg_order>120</arg_order> ++ <arg_spot>A</arg_spot> ++ <arg_required /> ++ <arg_substitution /> ++ <arg_proto>%s </arg_proto> ++ </arg_execution> ++ <constraints> ++ <constraint sense="true"> ++ <driver>foo2hbpl1</driver> ++ <arg_defval>ev/foo2hbpl1-ColorMode-mono</arg_defval> ++ </constraint> ++ </constraints> ++ <enum_vals> ++ <enum_val id="ev/foo2hbpl1-ColorMode-mono"> ++ <ev_longname> <en>Monochrome</en> </ev_longname> ++ <comments><en> ++ Prints in monochrome only ++ </en></comments> ++ <ev_shortname> <en>Monochrome</en> </ev_shortname> ++ <ev_driverval></ev_driverval> ++ </enum_val> ++ <enum_val id="ev/foo2hbpl1-ColorMode-color"> ++ <ev_longname> <en>Color</en> </ev_longname> ++ <comments><en> ++ Prints in color using the best compromise setting. ++ </en></comments> ++ <ev_shortname> <en>Color</en> </ev_shortname> ++ <ev_driverval>-c</ev_driverval> ++ </enum_val> ++ </enum_vals> ++</option> +--- foo2zjs/foomatic-db/opt/foo2hbpl1-ICM.xml 1970-01-01 00:00:00.000000000 +0000 ++++ foo2zjs/foomatic-db/opt/foo2hbpl1-ICM.xml 2014-03-25 10:14:22.000000000 +0000 +@@ -0,0 +1,52 @@ ++<option type="enum" id="opt/foo2hbpl1-ICM"> ++ <comments> ++ <en> ++ This option controls which .ICM file to use for color correction. ++ ICM files are stored in directory /usr/share/foo2hbpl/icm/. ++ </en> ++ </comments> ++ <arg_longname> <en>ICM Color Profile</en> </arg_longname> ++ <arg_shortname> <en>ICM</en> </arg_shortname> ++ <arg_execution> ++ <arg_group>Adjustment</arg_group> ++ <arg_order>300</arg_order> ++ <arg_spot>A</arg_spot> ++ <arg_required /> ++ <arg_substitution /> ++ <arg_proto>%s </arg_proto> ++ </arg_execution> ++ <constraints> ++ <constraint sense="true"> ++ <driver>foo2hbpl1</driver> ++ <arg_defval>ev/foo2hbpl1-ICM-none</arg_defval> ++ </constraint> ++ </constraints> ++ <enum_vals> ++ <enum_val id="ev/foo2hbpl1-ICM-none"> ++ <ev_longname> <en>No ICM color correction</en> </ev_longname> ++ <!-- A multilingual <comments> block can appear here, too; ++ it should be treated as documentation for the user. --> ++ <ev_shortname> <en>none</en> </ev_shortname> ++ <ev_driverval>-C10 -Gnone.icm</ev_driverval> ++ </enum_val> ++ ++ <enum_val id="ev/foo2hbpl1-ICM-testing"> ++ <ev_longname> <en>File testing.icm</en> </ev_longname> ++ <ev_shortname> <en>testing</en> </ev_shortname> ++ <ev_driverval>-C10 -Gtesting.icm</ev_driverval> ++ </enum_val> ++ ++ <enum_val id="ev/foo2hbpl1-ICM-testing2"> ++ <ev_longname> <en>File testing2.icm</en> </ev_longname> ++ <ev_shortname> <en>testing2</en> </ev_shortname> ++ <ev_driverval>-C10 -Gtesting2.icm</ev_driverval> ++ </enum_val> ++ ++ <enum_val id="ev/foo2hbpl1-ICM-testing3"> ++ <ev_longname> <en>File testing3.icm</en> </ev_longname> ++ <ev_shortname> <en>testing3</en> </ev_shortname> ++ <ev_driverval>-C10 -Gtesting3.icm</ev_driverval> ++ </enum_val> ++ ++ </enum_vals> ++</option> +--- foo2zjs/foomatic-db/opt/foo2hbpl1-MediaType.xml 1970-01-01 00:00:00.000000000 +0000 ++++ foo2zjs/foomatic-db/opt/foo2hbpl1-MediaType.xml 2014-03-24 15:50:56.000000000 +0000 +@@ -0,0 +1,82 @@ ++<option type="enum" id="opt/foo2hbpl1-MediaType"> ++ <!-- A multilingual <comments> block can appear here, too; ++ it should be treated as documentation for the user. --> ++ <arg_longname> <en>Media Type</en> </arg_longname> ++ <arg_shortname> <en>MediaType</en> </arg_shortname> ++ <arg_execution> ++ <arg_group>General</arg_group> ++ <arg_order>150</arg_order> ++ <arg_spot>A</arg_spot> ++ <arg_required /> ++ <arg_substitution /> ++ <arg_proto>-m%s </arg_proto> ++ </arg_execution> ++ <constraints> ++ <constraint sense="true"> ++ <driver>foo2hbpl1</driver> ++ <arg_defval>ev/foo2hbpl1-MediaType-1</arg_defval> ++ </constraint> ++ </constraints> ++ <enum_vals> ++ <enum_val id="ev/foo2hbpl1-MediaType-1"> ++ <ev_longname> <en>Plain Paper</en> </ev_longname> ++ <ev_shortname> <en>plain</en> </ev_shortname> ++ <ev_driverval>1</ev_driverval> ++ </enum_val> ++ <enum_val id="ev/foo2hbpl1-MediaType-2"> ++ <ev_longname> <en>Bond</en> </ev_longname> ++ <ev_shortname> <en>bond</en> </ev_shortname> ++ <ev_driverval>2</ev_driverval> ++ </enum_val> ++ <enum_val id="ev/foo2hbpl1-MediaType-3"> ++ <ev_longname> <en>Light Weight Card</en> </ev_longname> ++ <ev_shortname> <en>lwcard</en> </ev_shortname> ++ <ev_driverval>3</ev_driverval> ++ </enum_val> ++ <enum_val id="ev/foo2hbpl1-MediaType-4"> ++ <ev_longname> <en>Light Weight Glossy Card</en> </ev_longname> ++ <ev_shortname> <en>lwgcard</en> </ev_shortname> ++ <ev_driverval>4</ev_driverval> ++ </enum_val> ++ <enum_val id="ev/foo2hbpl1-MediaType-5"> ++ <ev_longname> <en>Labels</en> </ev_longname> ++ <ev_shortname> <en>labels</en> </ev_shortname> ++ <ev_driverval>5</ev_driverval> ++ </enum_val> ++ <enum_val id="ev/foo2hbpl1-MediaType-6"> ++ <ev_longname> <en>Envelope</en> </ev_longname> ++ <ev_shortname> <en>envelope</en> </ev_shortname> ++ <ev_driverval>6</ev_driverval> ++ </enum_val> ++ <enum_val id="ev/foo2hbpl1-MediaType-7"> ++ <ev_longname> <en>Recycled Paper</en> </ev_longname> ++ <ev_shortname> <en>recycled</en> </ev_shortname> ++ <ev_driverval>7</ev_driverval> ++ </enum_val> ++ <enum_val id="ev/foo2hbpl1-MediaType-8"> ++ <ev_longname> <en>Plain Paper Side 2</en> </ev_longname> ++ <ev_shortname> <en>plain2</en> </ev_shortname> ++ <ev_driverval>8</ev_driverval> ++ </enum_val> ++ <enum_val id="ev/foo2hbpl1-MediaType-9"> ++ <ev_longname> <en>Bond Side 2</en> </ev_longname> ++ <ev_shortname> <en>bond2</en> </ev_shortname> ++ <ev_driverval>9</ev_driverval> ++ </enum_val> ++ <enum_val id="ev/foo2hbpl1-MediaType-10"> ++ <ev_longname> <en>Light Weight Card Side 2</en> </ev_longname> ++ <ev_shortname> <en>lwcard2</en> </ev_shortname> ++ <ev_driverval>10</ev_driverval> ++ </enum_val> ++ <enum_val id="ev/foo2hbpl1-MediaType-11"> ++ <ev_longname> <en>Light Weight Glossy Card Side 2</en></ev_longname> ++ <ev_shortname> <en>lwgcard2</en> </ev_shortname> ++ <ev_driverval>11</ev_driverval> ++ </enum_val> ++ <enum_val id="ev/foo2hbpl1-MediaType-12"> ++ <ev_longname> <en>Recycled Paper Side 2</en> </ev_longname> ++ <ev_shortname> <en>recycled2</en> </ev_shortname> ++ <ev_driverval>12</ev_driverval> ++ </enum_val> ++ </enum_vals> ++</option> +--- foo2zjs/foomatic-db/opt/foo2hbpl1-PageSize.xml 1970-01-01 00:00:00.000000000 +0000 ++++ foo2zjs/foomatic-db/opt/foo2hbpl1-PageSize.xml 2014-04-01 11:05:46.000000000 +0000 +@@ -0,0 +1,80 @@ ++<option type="enum" id="opt/foo2hbpl1-PageSize"> ++ <arg_longname> <en>Page Size</en> </arg_longname> ++ <arg_shortname> <en>PageSize</en> </arg_shortname> ++ <arg_execution> ++ <arg_group>General</arg_group> ++ <arg_order>135</arg_order> ++ <arg_spot>A</arg_spot> ++ <arg_required /> ++ <arg_substitution /> ++ <arg_proto>-p%s </arg_proto> ++ </arg_execution> ++ <constraints> ++ <constraint sense="true"> ++ <driver>foo2hbpl1</driver> ++ <arg_defval>ev/foo2hbpl1-PageSize-4</arg_defval> ++ </constraint> ++ </constraints> ++ <enum_vals> ++ <enum_val id="ev/foo2hbpl1-PageSize-1"> ++ <ev_longname> <en>A4</en> </ev_longname> ++ <ev_shortname> <en>A4</en> </ev_shortname> ++ <ev_driverval>1</ev_driverval> ++ </enum_val> ++ <enum_val id="ev/foo2hbpl1-PageSize-2"> ++ <ev_longname> <en>B5 (JIS)</en> </ev_longname> ++ <ev_shortname> <en>B5jis</en> </ev_shortname> ++ <ev_driverval>2</ev_driverval> ++ </enum_val> ++ <enum_val id="ev/foo2hbpl1-PageSize-4"> ++ <ev_longname> <en>Letter</en> </ev_longname> ++ <ev_shortname> <en>Letter</en> </ev_shortname> ++ <ev_driverval>4</ev_driverval> ++ </enum_val> ++ <enum_val id="ev/foo2hbpl1-PageSize-5"> ++ <ev_longname> <en>Executive</en> </ev_longname> ++ <ev_shortname> <en>Executive</en> </ev_shortname> ++ <ev_driverval>5</ev_driverval> ++ </enum_val> ++ <enum_val id="ev/foo2hbpl1-PageSize-6"> ++ <ev_longname> <en>Fanfold German Legal</en> </ev_longname> ++ <ev_shortname> <en>FanfoldGermanLegal</en> </ev_shortname> ++ <ev_driverval>6</ev_driverval> ++ </enum_val> ++ <enum_val id="ev/foo2hbpl1-PageSize-6-alt"> ++ <ev_longname> <en>Folio</en> </ev_longname> ++ <ev_shortname> <en>Folio</en> </ev_shortname> ++ <ev_driverval>6</ev_driverval> ++ </enum_val> ++ <enum_val id="ev/foo2hbpl1-PageSize-7"> ++ <ev_longname> <en>Legal</en> </ev_longname> ++ <ev_shortname> <en>Legal</en> </ev_shortname> ++ <ev_driverval>7</ev_driverval> ++ </enum_val> ++ <enum_val id="ev/foo2hbpl1-PageSize-9"> ++ <ev_longname> <en>Env #10</en> </ev_longname> ++ <ev_shortname> <en>Env10</en> </ev_shortname> ++ <ev_driverval>9</ev_driverval> ++ </enum_val> ++ <enum_val id="ev/foo2hbpl1-PageSize-10"> ++ <ev_longname> <en>Env Monarch</en> </ev_longname> ++ <ev_shortname> <en>EnvMonarch</en> </ev_shortname> ++ <ev_driverval>10</ev_driverval> ++ </enum_val> ++ <enum_val id="ev/foo2hbpl1-PageSize-11"> ++ <ev_longname> <en>Env C5</en> </ev_longname> ++ <ev_shortname> <en>EnvC5</en> </ev_shortname> ++ <ev_driverval>11</ev_driverval> ++ </enum_val> ++ <enum_val id="ev/foo2hbpl1-PageSize-12"> ++ <ev_longname> <en>Env DL</en> </ev_longname> ++ <ev_shortname> <en>EnvDL</en> </ev_shortname> ++ <ev_driverval>12</ev_driverval> ++ </enum_val> ++ <enum_val id="ev/foo2hbpl1-PageSize-Custom"> ++ <ev_longname> <en>Custom</en> </ev_longname> ++ <ev_shortname> <en>Custom</en> </ev_shortname> ++ <ev_driverval>Custom.%0x%1</ev_driverval> ++ </enum_val> ++ </enum_vals> ++</option> +--- foo2zjs/foomatic-db/opt/foo2xxx-Copies.xml 2014-04-03 22:23:27.000000000 +0000 ++++ foo2zjs/foomatic-db/opt/foo2xxx-Copies.xml 2014-03-24 15:32:48.000000000 +0000 +@@ -65,6 +65,10 @@ + <arg_defval>1</arg_defval> + </constraint> + <constraint sense="true"> ++ <driver>foo2hbpl1</driver> ++ <arg_defval>1</arg_defval> ++ </constraint> ++ <constraint sense="true"> + <driver>foo2hbpl2</driver> + <arg_defval>1</arg_defval> + </constraint> +--- foo2zjs/foomatic-db/opt/foo2xxx-Halftone.xml 2014-04-03 22:23:40.000000000 +0000 ++++ foo2zjs/foomatic-db/opt/foo2xxx-Halftone.xml 2014-03-25 10:16:58.000000000 +0000 +@@ -68,6 +68,10 @@ + <arg_defval>ev/foo2xxx-Halftone-Default</arg_defval> + </constraint> + <constraint sense="true"> ++ <driver>foo2hbpl1</driver> ++ <arg_defval>ev/foo2xxx-Halftone-Default</arg_defval> ++ </constraint> ++ <constraint sense="true"> + <driver>foo2hbpl2</driver> + <arg_defval>ev/foo2xxx-Halftone-Default</arg_defval> + </constraint> +--- foo2zjs/foomatic-db/opt/foo2xxx-Nup.xml 2014-04-03 22:24:01.000000000 +0000 ++++ foo2zjs/foomatic-db/opt/foo2xxx-Nup.xml 2014-03-24 15:34:43.000000000 +0000 +@@ -65,6 +65,10 @@ + <arg_defval>ev/foo2xxx-Nup-1</arg_defval> + </constraint> + <constraint sense="true"> ++ <driver>foo2hbpl1</driver> ++ <arg_defval>ev/foo2xxx-Nup-1</arg_defval> ++ </constraint> ++ <constraint sense="true"> + <driver>foo2hbpl2</driver> + <arg_defval>ev/foo2xxx-Nup-1</arg_defval> + </constraint> +--- foo2zjs/foomatic-db/opt/foo2xxx-NupOrient.xml 2014-04-03 22:23:50.000000000 +0000 ++++ foo2zjs/foomatic-db/opt/foo2xxx-NupOrient.xml 2014-03-24 15:35:10.000000000 +0000 +@@ -65,6 +65,10 @@ + <arg_defval>ev/foo2xxx-NupOrient-port</arg_defval> + </constraint> + <constraint sense="true"> ++ <driver>foo2hbpl1</driver> ++ <arg_defval>ev/foo2xxx-NupOrient-port</arg_defval> ++ </constraint> ++ <constraint sense="true"> + <driver>foo2hbpl2</driver> + <arg_defval>ev/foo2xxx-NupOrient-port</arg_defval> + </constraint> +--- foo2zjs/foomatic-db/opt/foo2xxx-Quality.xml 2014-04-03 22:24:12.000000000 +0000 ++++ foo2zjs/foomatic-db/opt/foo2xxx-Quality.xml 2014-03-24 15:35:36.000000000 +0000 +@@ -68,6 +68,10 @@ + <arg_defval>ev/foo2xxx-Quality-Normal</arg_defval> + </constraint> + <constraint sense="true"> ++ <driver>foo2hbpl1</driver> ++ <arg_defval>ev/foo2xxx-Quality-Normal</arg_defval> ++ </constraint> ++ <constraint sense="true"> + <driver>foo2hbpl2</driver> + <arg_defval>ev/foo2xxx-Quality-Normal</arg_defval> + </constraint> +--- foo2zjs/foomatic-db/printer/Dell-1250c.xml 1970-01-01 00:00:00.000000000 +0000 ++++ foo2zjs/foomatic-db/printer/Dell-1250c.xml 2014-03-24 15:58:32.000000000 +0000 +@@ -0,0 +1,70 @@ ++<printer id="printer/Dell-1250c"> ++ <make>Dell</make> ++ <model>1250c</model> ++ <mechanism> ++ <laser/> ++ <color/> ++ <resolution> ++ <dpi> ++ <x>600</x> ++ <y>600</y> ++ </dpi> ++ </resolution> ++ <margins> ++ <general> ++ <unit>inch</unit> ++ <top>0.085</top> ++ <bottom>0.085</bottom> ++ <left>0.085</left> ++ <right>0.085</right> ++ </general> ++ </margins> ++<!-- ++ <consumables> ++ <comments> <en> ++ Toner Cyan (1000 prints) - $45 ++ Toner Magenta (1000 prints) - $45 ++ Toner Yellow (1000 prints) - $45 ++ Toner Black (2000 prints) - $54 ++ Waste Toner (5000 prints) - $10 ++ Drum Kit (20000 prints) - $159 ++ </en> </comments> ++ <partno>106R01271</partno> ++ <partno>106R01272</partno> ++ <partno>106R01273</partno> ++ <partno>106R01274</partno> ++ <partno>108R00722</partno> ++ <partno>108R00744</partno> ++ </consumables> ++--> ++ </mechanism> ++ <url>http://www.pcmag.com/article2/0,2817,2380920,00.asp</url> ++ <lang> ++ <proprietary/> ++ <!--no pjl--><!--No "text"?--> ++ </lang> ++ <autodetect> ++<!-- ++ <parallel> ++ <ieee1284>MFG:Xerox;CMD:SPLC;MDL:Phaser 6110;CLS:PRINTER;STATUS:BUSY;</ieee1284> ++ <manufacturer>Xerox</manufacturer> ++ <model>Phaser 6110</model> ++ <commandset>SPLC</commandset> ++ </parallel> ++--> ++ <snmp> ++ <description>Dell 1250c</description> ++ </snmp> ++ </autodetect> ++ <functionality>C</functionality> ++ <driver>foo2hbpl1</driver> ++ <!--not "unverified"--><!--no "contrib_url"--> ++ <comments> <en> ++ ++ The Dell 1250c is color printer with a 2014 street price of $200. ++ ++ These printers are supported by the foo2hbpl1 open software printer ++ driver. ++ ++ </en> </comments> ++</printer> +--- foo2zjs/foomatic-db/printer/Dell-C1660.xml 1970-01-01 00:00:00.000000000 +0000 ++++ foo2zjs/foomatic-db/printer/Dell-C1660.xml 2014-03-24 15:27:13.000000000 +0000 +@@ -0,0 +1,70 @@ ++<printer id="printer/Dell-C1660"> ++ <make>Dell</make> ++ <model>C1660</model> ++ <mechanism> ++ <laser/> ++ <color/> ++ <resolution> ++ <dpi> ++ <x>600</x> ++ <y>600</y> ++ </dpi> ++ </resolution> ++ <margins> ++ <general> ++ <unit>inch</unit> ++ <top>0.085</top> ++ <bottom>0.085</bottom> ++ <left>0.085</left> ++ <right>0.085</right> ++ </general> ++ </margins> ++<!-- ++ <consumables> ++ <comments> <en> ++ Toner Cyan (1000 prints) - $45 ++ Toner Magenta (1000 prints) - $45 ++ Toner Yellow (1000 prints) - $45 ++ Toner Black (2000 prints) - $54 ++ Waste Toner (5000 prints) - $10 ++ Drum Kit (20000 prints) - $159 ++ </en> </comments> ++ <partno>106R01271</partno> ++ <partno>106R01272</partno> ++ <partno>106R01273</partno> ++ <partno>106R01274</partno> ++ <partno>108R00722</partno> ++ <partno>108R00744</partno> ++ </consumables> ++--> ++ </mechanism> ++ <url>http://accessories.us.dell.com/sna/productdetail.aspx?c=us&cs=04&l=en&s=bsd&sku=225-411</url> ++ <lang> ++ <proprietary/> ++ <!--no pjl--><!--No "text"?--> ++ </lang> ++ <autodetect> ++<!-- ++ <parallel> ++ <ieee1284>MFG:Xerox;CMD:SPLC;MDL:Phaser 6110;CLS:PRINTER;STATUS:BUSY;</ieee1284> ++ <manufacturer>Xerox</manufacturer> ++ <model>Phaser 6110</model> ++ <commandset>SPLC</commandset> ++ </parallel> ++--> ++ <snmp> ++ <description>Dell C1660</description> ++ </snmp> ++ </autodetect> ++ <functionality>C</functionality> ++ <driver>foo2hbpl1</driver> ++ <!--not "unverified"--><!--no "contrib_url"--> ++ <comments> <en> ++ ++ The Dell C1660 is color printer with a 2014 street price of $200. ++ ++ These printers are supported by the foo2hbpl1 open software printer ++ driver. ++ ++ </en> </comments> ++</printer> +--- foo2zjs/foomatic-db/printer/Dell-C1760.xml 1970-01-01 00:00:00.000000000 +0000 ++++ foo2zjs/foomatic-db/printer/Dell-C1760.xml 2014-03-24 16:04:23.000000000 +0000 +@@ -0,0 +1,70 @@ ++<printer id="printer/Dell-C1760"> ++ <make>Dell</make> ++ <model>C1760</model> ++ <mechanism> ++ <laser/> ++ <color/> ++ <resolution> ++ <dpi> ++ <x>600</x> ++ <y>600</y> ++ </dpi> ++ </resolution> ++ <margins> ++ <general> ++ <unit>inch</unit> ++ <top>0.085</top> ++ <bottom>0.085</bottom> ++ <left>0.085</left> ++ <right>0.085</right> ++ </general> ++ </margins> ++<!-- ++ <consumables> ++ <comments> <en> ++ Toner Cyan (1000 prints) - $45 ++ Toner Magenta (1000 prints) - $45 ++ Toner Yellow (1000 prints) - $45 ++ Toner Black (2000 prints) - $54 ++ Waste Toner (5000 prints) - $10 ++ Drum Kit (20000 prints) - $159 ++ </en> </comments> ++ <partno>106R01271</partno> ++ <partno>106R01272</partno> ++ <partno>106R01273</partno> ++ <partno>106R01274</partno> ++ <partno>108R00722</partno> ++ <partno>108R00744</partno> ++ </consumables> ++--> ++ </mechanism> ++ <url>http://accessories.us.dell.com/sna/productdetail.aspx?c=us&cs=04&l=en&s=bsd&sku=225-4111</url> ++ <lang> ++ <proprietary/> ++ <!--no pjl--><!--No "text"?--> ++ </lang> ++ <autodetect> ++<!-- ++ <parallel> ++ <ieee1284>MFG:Xerox;CMD:SPLC;MDL:Phaser 6110;CLS:PRINTER;STATUS:BUSY;</ieee1284> ++ <manufacturer>Xerox</manufacturer> ++ <model>Phaser 6110</model> ++ <commandset>SPLC</commandset> ++ </parallel> ++--> ++ <snmp> ++ <description>Dell C1760</description> ++ </snmp> ++ </autodetect> ++ <functionality>C</functionality> ++ <driver>foo2hbpl1</driver> ++ <!--not "unverified"--><!--no "contrib_url"--> ++ <comments> <en> ++ ++ The Dell C1760 is color printer with a 2014 street price of $300. ++ ++ These printers are supported by the foo2hbpl1 open software printer ++ driver. ++ ++ </en> </comments> ++</printer> +--- foo2zjs/foomatic-db/printer/Epson-AcuLaser_C1700.xml 1970-01-01 00:00:00.000000000 +0000 ++++ foo2zjs/foomatic-db/printer/Epson-AcuLaser_C1700.xml 2014-03-24 16:13:45.000000000 +0000 +@@ -0,0 +1,71 @@ ++<printer id="printer/Epson-AcuLaser_C1700"> ++ <make>Epson</make> ++ <model>AcuLaser C1700</model> ++ <mechanism> ++ <laser/> ++ <color/> ++ <resolution> ++ <dpi> ++ <x>600</x> ++ <y>600</y> ++ </dpi> ++ </resolution> ++ <margins> ++ <general> ++ <unit>inch</unit> ++ <top>0.085</top> ++ <bottom>0.085</bottom> ++ <left>0.085</left> ++ <right>0.085</right> ++ </general> ++ </margins> ++<!-- ++ <consumables> ++ <comments> <en> ++ Toner Cyan (1000 prints) - $45 ++ Toner Magenta (1000 prints) - $45 ++ Toner Yellow (1000 prints) - $45 ++ Toner Black (2000 prints) - $54 ++ Waste Toner (5000 prints) - $10 ++ Drum Kit (20000 prints) - $159 ++ </en> </comments> ++ <partno>106R01271</partno> ++ <partno>106R01272</partno> ++ <partno>106R01273</partno> ++ <partno>106R01274</partno> ++ <partno>108R00722</partno> ++ <partno>108R00744</partno> ++ </consumables> ++--> ++ </mechanism> ++ <url>http://www.epson.co.uk/gb/en/viewcon/corporatesite/products/mainunits/overview/10816</url> ++ <lang> ++ <proprietary/> ++ <!--no pjl--><!--No "text"?--> ++ </lang> ++ <autodetect> ++<!-- ++ <parallel> ++ <ieee1284>MFG:Xerox;CMD:SPLC;MDL:Phaser 6110;CLS:PRINTER;STATUS:BUSY;</ieee1284> ++ <manufacturer>Xerox</manufacturer> ++ <model>Phaser 6110</model> ++ <commandset>SPLC</commandset> ++ </parallel> ++--> ++ <snmp> ++ <description>Epson AcuLaser C1700</description> ++ </snmp> ++ </autodetect> ++ <functionality>C</functionality> ++ <driver>foo2hbpl1</driver> ++ <!--not "unverified"--><!--no "contrib_url"--> ++ <comments> <en> ++ ++ The Epson AcuLaser C1700 is color printer with a 2014 street price ++ of $200. ++ ++ These printers are supported by the foo2hbpl1 open software printer ++ driver. ++ ++ </en> </comments> ++</printer> +--- foo2zjs/foomatic-db/printer/Fuji_Xerox-DocuPrint_CP105.xml 1970-01-01 00:00:00.000000000 +0000 ++++ foo2zjs/foomatic-db/printer/Fuji_Xerox-DocuPrint_CP105.xml 2014-03-24 16:17:06.000000000 +0000 +@@ -0,0 +1,71 @@ ++<printer id="printer/Fuji_Xerox-DocuPrint_CP105"> ++ <make>Fuji Xerox</make> ++ <model>DocuPrint CP105</model> ++ <mechanism> ++ <laser/> ++ <color/> ++ <resolution> ++ <dpi> ++ <x>600</x> ++ <y>600</y> ++ </dpi> ++ </resolution> ++ <margins> ++ <general> ++ <unit>inch</unit> ++ <top>0.085</top> ++ <bottom>0.085</bottom> ++ <left>0.085</left> ++ <right>0.085</right> ++ </general> ++ </margins> ++<!-- ++ <consumables> ++ <comments> <en> ++ Toner Cyan (1000 prints) - $45 ++ Toner Magenta (1000 prints) - $45 ++ Toner Yellow (1000 prints) - $45 ++ Toner Black (2000 prints) - $54 ++ Waste Toner (5000 prints) - $10 ++ Drum Kit (20000 prints) - $159 ++ </en> </comments> ++ <partno>106R01271</partno> ++ <partno>106R01272</partno> ++ <partno>106R01273</partno> ++ <partno>106R01274</partno> ++ <partno>108R00722</partno> ++ <partno>108R00744</partno> ++ </consumables> ++--> ++ </mechanism> ++ <url>http://accessories.us.dell.com/sna/productdetail.aspx?c=us&cs=04&l=en&s=bsd&sku=225-411</url> ++ <lang> ++ <proprietary/> ++ <!--no pjl--><!--No "text"?--> ++ </lang> ++ <autodetect> ++<!-- ++ <parallel> ++ <ieee1284>MFG:Xerox;CMD:SPLC;MDL:Phaser 6110;CLS:PRINTER;STATUS:BUSY;</ieee1284> ++ <manufacturer>Xerox</manufacturer> ++ <model>Phaser 6110</model> ++ <commandset>SPLC</commandset> ++ </parallel> ++--> ++ <snmp> ++ <description>Fuji Xerox DocuPrint CP105</description> ++ </snmp> ++ </autodetect> ++ <functionality>C</functionality> ++ <driver>foo2hbpl1</driver> ++ <!--not "unverified"--><!--no "contrib_url"--> ++ <comments> <en> ++ ++ The Fuji-Xerox DocuPrint CP105 is color printer with a 2014 street ++ price of $200. ++ ++ These printers are supported by the foo2hbpl1 open software printer ++ driver. ++ ++ </en> </comments> ++</printer> diff --git a/nixpkgs/pkgs/misc/drivers/foo2zjs/no-hardcode-fw.diff b/nixpkgs/pkgs/misc/drivers/foo2zjs/no-hardcode-fw.diff new file mode 100644 index 000000000000..003272858a42 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/foo2zjs/no-hardcode-fw.diff @@ -0,0 +1,98 @@ +# +# +# patch "hplj1000" +# from [d5336e74866d31735d97874191351a0dcc092b44] +# to [55102b37684ee5181674d19d866caec2cf603412] +# +============================================================ +--- a/hplj1000 d5336e74866d31735d97874191351a0dcc092b44 ++++ b/hplj1000 55102b37684ee5181674d19d866caec2cf603412 +@@ -39,11 +39,6 @@ DEV="" + DEV="" + + # +-# Directory to find downloadable HP firmware files sihpMMMM.dl +-# +-FWDIR=/usr/share/foo2zjs/firmware +- +-# + # Program used to determine USB printer id information + # + # NOTE: /usr/bin is NOT mounted at this point +@@ -83,57 +78,61 @@ case "$0" in + MODEL=P1005; FWMODEL=$MODEL + USB1=0x03f0 #Vendor + USB2=0x3d17 #Model +- FWDIR=/usr/share/foo2xqx/firmware ++ DRIVER=foo2xqx + ;; + *P1006) + MODEL=P1006; FWMODEL=$MODEL + USB1=0x03f0 #Vendor + USB2=0x3e17 #Model +- FWDIR=/usr/share/foo2xqx/firmware ++ DRIVER=foo2xqx + ;; + *P1007) + MODEL=P1007; FWMODEL=P1005 # Alias + USB1=0x03f0 #Vendor + USB2=0x4817 #Model +- FWDIR=/usr/share/foo2xqx/firmware ++ DRIVER=foo2xqx + ;; + *P1008) + MODEL=P1008; FWMODEL=P1006 # Alias + USB1=0x03f0 #Vendor + USB2=0x4917 #Model +- FWDIR=/usr/share/foo2xqx/firmware ++ DRIVER=foo2xqx + ;; + *P1505) + MODEL=P1505; FWMODEL=$MODEL + USB1=0x03f0 #Vendor + USB2=0x3f17 #Model +- FWDIR=/usr/share/foo2xqx/firmware ++ DRIVER=foo2xqx + ;; + *P1505n) + MODEL=P1505n; FWMODEL=$MODEL + USB1=0x03f0 #Vendor + USB2=0x4017 #Model +- FWDIR=/usr/share/foo2xqx/firmware ++ DRIVER=foo2xqx + ;; + *1000) + MODEL=1000; FWMODEL=$MODEL + USB1=0x03f0 #Vendor + USB2=0x0517 #Model ++ DRIVER=foo2zjs + ;; + *1005) + MODEL=1005; FWMODEL=$MODEL + USB1=0x03f0 #Vendor + USB2=0x1317 #Model ++ DRIVER=foo2zjs + ;; + *1018) + MODEL=1018; FWMODEL=$MODEL + USB1=0x03f0 #Vendor + USB2=0x4117 #Model ++ DRIVER=foo2zjs + ;; + *1020) + MODEL=1020; FWMODEL=$MODEL + USB1=0x03f0 #Vendor + USB2=0x2b17 #Model ++ DRIVER=foo2zjs + ;; + *) + log "Only HP LaserJet 100[05],1018,1020,P100[5678],P1505 are supported" +@@ -203,7 +202,7 @@ load1() { + # + load1() { + _dev="$1" +- fw="$FWDIR/sihp$FWMODEL.dl" ++ fw="${FOO2ZJS_DATADIR:-/usr/share}/$DRIVER/firmware/sihp$FWMODEL.dl" + if [ ! -f "$fw" ]; then + log "Missing HP LaserJet $MODEL firmware file $fw" + log "...read foo2zjs installation instructions and run ./getweb $MODEL" diff --git a/nixpkgs/pkgs/misc/drivers/foo2zjs/papercode-format-fix.patch b/nixpkgs/pkgs/misc/drivers/foo2zjs/papercode-format-fix.patch new file mode 100644 index 000000000000..fb38fc206c98 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/foo2zjs/papercode-format-fix.patch @@ -0,0 +1,101 @@ +From 29ac95ac76a9d9977561cef352f8b803579fea2a Mon Sep 17 00:00:00 2001 +From: Shinbar <richard.shine@gmail.com> +Date: Thu, 26 Mar 2020 19:33:39 +0000 +Subject: [PATCH 1/3] PPDs (e.g. Del-1660.ppd) are specifying paper sizes as + parameters e.g. -p1 which are then being picked up as an invalid paper size + In cups error_log manifesting as: foo2hbpl1-wrapper: Unimplemented paper code + 1 + +Have amended foo2hbpl1-wrapper.in to intepret paper sizes +paper parameters are also now being interpreted. +This has fixed for a Dell 1660w printer, running on Ubuntu 18.04 +--- + foo2hbpl1-wrapper.in | 28 ++++++++++++++-------------- + 1 file changed, 14 insertions(+), 14 deletions(-) + +diff --git a/foo2hbpl1-wrapper.in b/foo2hbpl1-wrapper.in +index 567e891..bb20ed5 100644 +--- a/foo2hbpl1-wrapper.in ++++ b/foo2hbpl1-wrapper.in +@@ -341,20 +341,20 @@ Custom*) + # /usr/share/ghostscript/9.10/Resource/Init/gs_statd.ps + # foo2hbpl1 will provide the appropriate numeric value + +-letter) DIM=5100x6600 ;; +-legal) DIM=5100x8400 ;; +-a4) DIM=4961x7016 ;; +-executive) DIM=4350x6300 ;; +-env10) DIM=2475x5700 ;; +-monarch) DIM=2325x4500 ;; +-c5) DIM=3827x5409 ;; +-envDL) DIM=2599x5197 ;; +-isob5|b5) DIM=4158x5906 ;; +-jisb5) DIM=4299x6071 ;; +-a5) DIM=3496x4961 ;; +-folio) DIM=5100x7800 ;; +-pa4) DIM=4961x6600 ;; +-archA) DIM=5400x7200 ;; ++4|letter|Letter) DIM=5100x6600 ;; ++7|legal|Legal) DIM=5100x8400 ;; ++1|a4|A4) DIM=4961x7016 ;; ++5|executive|Executive) DIM=4350x6300 ;; ++9|env10|Env10) DIM=2475x5700 ;; ++10|monarch|EnvMonarch) DIM=2325x4500 ;; ++11|c5|EnvC5) DIM=3827x5409 ;; ++12|envDL|EnvDL) DIM=2599x5197 ;; ++isob5|b5) DIM=4158x5906 ;; ++2|jisb5|B5jis) DIM=4299x6071 ;; ++a5) DIM=3496x4961 ;; ++6|folio|Folio) DIM=5100x7800 ;; ++pa4) DIM=4961x6600 ;; ++archA) DIM=5400x7200 ;; + *) error "Unimplemented paper code $PAPER";; + esac + + +From 289d55ded5af7d84a91b0ecf26bbea18f3cb2d9e Mon Sep 17 00:00:00 2001 +From: Shinbar <richard.shine@gmail.com> +Date: Fri, 27 Mar 2020 09:19:40 +0000 +Subject: [PATCH 2/3] Added A5 paper size parameter + +--- + foo2hbpl1-wrapper.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/foo2hbpl1-wrapper.in b/foo2hbpl1-wrapper.in +index bb20ed5..474972d 100644 +--- a/foo2hbpl1-wrapper.in ++++ b/foo2hbpl1-wrapper.in +@@ -351,7 +351,7 @@ Custom*) + 12|envDL|EnvDL) DIM=2599x5197 ;; + isob5|b5) DIM=4158x5906 ;; + 2|jisb5|B5jis) DIM=4299x6071 ;; +-a5) DIM=3496x4961 ;; ++3|a5|A5) DIM=3496x4961 ;; + 6|folio|Folio) DIM=5100x7800 ;; + pa4) DIM=4961x6600 ;; + archA) DIM=5400x7200 ;; + +From 393f7a7c70bbf9fa0c39ac1504b220793670d201 Mon Sep 17 00:00:00 2001 +From: Shinbar <richard.shine@gmail.com> +Date: Sun, 29 Mar 2020 10:01:31 +0100 +Subject: [PATCH 3/3] Makefile now works in FreeBSD + +--- + osx-hotplug/Makefile | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +diff --git a/osx-hotplug/Makefile b/osx-hotplug/Makefile +index 4165085..a9aa06a 100644 +--- a/osx-hotplug/Makefile ++++ b/osx-hotplug/Makefile +@@ -64,8 +64,5 @@ clean: + rm -f *.o *.1 + + uninstall: +- ( \ +- echo "g/osx-hplj-hotplug/d"; \ +- echo "w"; \ +- ) | ex $(RC) ++ -(echo "g/osx-hplj-hotplug/d"; echo "w") | ex $(RC) + -rm -f $(BIN)/osx-hplj-hotplug diff --git a/nixpkgs/pkgs/misc/drivers/foomatic-filters/default.nix b/nixpkgs/pkgs/misc/drivers/foomatic-filters/default.nix new file mode 100644 index 000000000000..c9a7d10bd8b0 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/foomatic-filters/default.nix @@ -0,0 +1,47 @@ +{ lib, stdenv, fetchpatch, fetchurl, pkg-config, perl, cups, dbus, enscript }: + +stdenv.mkDerivation rec { + pname = "foomatic-filters"; + version = "4.0.17"; + + src = fetchurl { + url = "https://www.openprinting.org/download/foomatic/foomatic-filters-${version}.tar.gz"; + sha256 = "1qrkgbm5jay2r7sh9qbyf0aiyrsl1mdc844hxf7fhw95a0zfbqm2"; + }; + + nativeBuildInputs = [ pkg-config ]; + buildInputs = [ perl cups dbus enscript ]; + + patches = [ + (fetchpatch { + name = "CVE-2015-8327+CVE-2015-8560.patch"; + url = "https://salsa.debian.org/debian/foomatic-filters/raw/a3abbef2d2f8c7e62d2fe64f64afe294563fdf8f/debian/patches/0500-r7406_also_consider_the_back_tick_as_an_illegal_shell_escape_character.patch"; + sha256 = "055nwi3sjf578nk40bqsch3wx8m2h65hdih0wmxflb6l0hwkq4p4"; + }) + ]; + + preConfigure = + '' + substituteInPlace foomaticrip.c --replace /bin/bash ${stdenv.shell} + ''; + + # Workaround build failure on -fno-common toolchains like upstream + # gcc-10. Otherwise build fails as: + # ld: foomatic_rip-options.o:/build/foomatic-filters-4.0.17/options.c:49: multiple definition of + # `cupsfilter'; foomatic_rip-foomaticrip.o:/build/foomatic-filters-4.0.17/foomaticrip.c:158: first defined here + env.NIX_CFLAGS_COMPILE = "-fcommon"; + + installTargets = [ "install-cups" ]; + + installFlags = [ + "CUPS_FILTERS=$(out)/lib/cups/filter" + "CUPS_BACKENDS=$(out)/lib/cups/backend" + ]; + + meta = { + description = "Foomatic printing filters"; + maintainers = [ lib.maintainers.raskin ]; + platforms = lib.platforms.linux; + license = lib.licenses.gpl2Plus; + }; +} diff --git a/nixpkgs/pkgs/misc/drivers/gutenprint/bin.nix b/nixpkgs/pkgs/misc/drivers/gutenprint/bin.nix new file mode 100644 index 000000000000..4b74b191e7f0 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/gutenprint/bin.nix @@ -0,0 +1,70 @@ +{ lib, stdenv, fetchurl, rpm, cpio, zlib }: + +/* usage: (sorry, its still impure but works!) + +impure directory: +mkdir /opt/gutenprint; sudo cp -r $(nix-build -A gutenprintBin -f $NIXPGS_ALL) /opt/gutenprint + +add the following lines to bindirCmds property of printing/cupsd.nix: + + ln -s ${pkgs.gutenprintBin}/lib/cups/backend/* $out/lib/cups/backend/ + ln -s ${pkgs.gutenprintBin}/lib/cups/filter/* $out/lib/cups/filter/ + mkdir -p $out/lib/cups/model + cat ${pkgs.gutenprintBin}/ppds/Canon/Canon-PIXMA_iP4000-gutenprint.5.0.sim-en.ppd.gz |gunzip > $out/lib/cups/model/Canon-PIXMA_iP4000-gutenprint.5.0.sim-en.ppd + sed -i 's@/opt/gutenprint/cups@${pkgs.gutenprintBin}/cups@' $out/lib/cups/model/Canon-PIXMA_iP4000-gutenprint.5.0.sim-en.ppd + +Then rebuild your system and add your printer using the the localhost:603 cups web interface +select the extracted .ppd file which can be found in the model directory of +sed -n 's/^ServerBin //p' $(sed -n 's/respawn.*-c \(.*''\) -F.*''/\1/p' /etc/event.d/cupsd) +(sorry, cups still doesn't see it. You could copy it into /nix/store/ +*-cups/lib/cups/model/ and you would be able to select canon -> PIXMA 4000 +then. I've tried that. + +TODO tidy this all up. Find source instead of binary. Fix paths ... Find out how to check ink levels etc + +*/ + +stdenv.mkDerivation { + pname = "cups-gutenprint-binary"; + version = "5.0.1"; + + src = if stdenv.hostPlatform.system == "x86_64-linux" then fetchurl { + url = "https://www.openprinting.org/download/printdriver/debian/dists/lsb3.1/main/binary-amd64/gutenprint_5.0.1-1lsb3.1_amd64.deb"; + sha256 = "0an5gba6r6v54r53s2gj2fjk8fzpl4lrksjas2333528b0k8gbbc"; + } else throw "TODO"; # get from openprint.com -> drivers -> gutenprint + + buildInputs = [ rpm cpio ]; + + dontUnpack = true; + dontInstall = true; + dontFixup = true; + + libPath = lib.makeLibraryPath [ stdenv.cc.cc zlib ]; + + buildPhase = '' + ar -x $src data.tar.gz + tar xfz data.tar.gz + cp -r opt/gutenprint $out + + for p in \ + $out/cups/lib/driver/gutenprint.5.0 \ + $out/bin/{escputil,cups-calibrate} \ + $out/cups/lib/driver/gutenprint.5.0 \ + $out/cups/lib/filter/{rastertogutenprint.5.0,commandtocanon,commandtoepson} \ + $out/cups/lib/backend/{canon,epson} \ + $out/sbin/cups-genppd.5.0 \ + ; do + patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath $libPath $p + done + + mkdir $out/lib + ln -s $out/cups/lib $out/lib/cups + ''; + + meta = { + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + description = "Some additional CUPS drivers including Canon drivers"; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/nixpkgs/pkgs/misc/drivers/gutenprint/default.nix b/nixpkgs/pkgs/misc/drivers/gutenprint/default.nix new file mode 100644 index 000000000000..8004af7686e1 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/gutenprint/default.nix @@ -0,0 +1,55 @@ +# this package was called gimp-print in the past +{ stdenv, lib, fetchurl, makeWrapper, pkg-config +, ijs, zlib +, gimp2Support ? false, gimp +, cupsSupport ? true, cups, libusb1, perl +}: + +stdenv.mkDerivation rec { + pname = "gutenprint"; + version = "5.3.4"; + + src = fetchurl { + url = "mirror://sourceforge/gimp-print/gutenprint-${version}.tar.bz2"; + sha256 = "0s0b14hjwvbxksq7af5v8z9g2rfqv9jdmxd9d81m57f5mh6rad0p"; + }; + + strictDeps = true; + nativeBuildInputs = [ makeWrapper pkg-config ] + ++ lib.optionals cupsSupport [ cups perl ]; # for cups-config + buildInputs = + [ ijs zlib ] + ++ lib.optionals gimp2Support [ gimp.gtk gimp ] + ++ lib.optionals cupsSupport [ cups libusb1 perl ]; + + configureFlags = lib.optionals cupsSupport [ + "--disable-static-genppd" # should be harmless on NixOS + ]; + + # FIXME: hacky because we modify generated configure, but I haven't found a better way. + # makeFlags doesn't change this everywhere (e.g. in cups-genppdupdate). + preConfigure = lib.optionalString cupsSupport '' + sed -i \ + -e "s,cups_conf_datadir=.*,cups_conf_datadir=\"$out/share/cups\",g" \ + -e "s,cups_conf_serverbin=.*,cups_conf_serverbin=\"$out/lib/cups\",g" \ + -e "s,cups_conf_serverroot=.*,cups_conf_serverroot=\"$out/etc/cups\",g" \ + configure + '' + lib.optionalString gimp2Support '' + sed -i \ + -e "s,gimp2_plug_indir=.*,gimp2_plug_indir=\"$out/lib/gimp/${gimp.majorVersion}\",g" \ + configure + ''; + + enableParallelBuilding = true; + + # Testing is very, very long. + # doCheck = true; + + meta = with lib; { + description = "Ghostscript and cups printer drivers"; + homepage = "https://sourceforge.net/projects/gimp-print/"; + license = licenses.gpl2; + platforms = platforms.linux; + isGutenprint = true; + }; +} diff --git a/nixpkgs/pkgs/misc/drivers/hplip/default.nix b/nixpkgs/pkgs/misc/drivers/hplip/default.nix new file mode 100644 index 000000000000..eb3b84d04529 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/hplip/default.nix @@ -0,0 +1,288 @@ +{ lib, stdenv, fetchurl, substituteAll +, pkg-config, autoreconfHook +, cups, zlib, libjpeg, libusb1, python3Packages, sane-backends +, dbus, file, ghostscript, usbutils +, net-snmp, openssl, perl, nettools, avahi +, bash, util-linux +# To remove references to gcc-unwrapped +, removeReferencesTo, qt5 +, withQt5 ? true +, withPlugin ? false +, withStaticPPDInstall ? false +}: + +let + + pname = "hplip"; + version = "3.23.8"; + + src = fetchurl { + url = "mirror://sourceforge/hplip/${pname}-${version}.tar.gz"; + hash = "sha256-98wF9ijAz9dQ5UrkFDHB390p6XaC8YtcW6XLLFtLG0Y="; + }; + + plugin = fetchurl { + url = "https://developers.hp.com/sites/default/files/${pname}-${version}-plugin.run"; + hash = "sha256-frsgye3f0M3HE2trKRlfFvMnDEwe+z74IumCdVPrcSY="; + }; + + hplipState = substituteAll { + inherit version; + src = ./hplip.state; + }; + + hplipPlatforms = { + i686-linux = "x86_32"; + x86_64-linux = "x86_64"; + armv6l-linux = "arm32"; + armv7l-linux = "arm32"; + aarch64-linux = "arm64"; + }; + + hplipArch = hplipPlatforms.${stdenv.hostPlatform.system} + or (throw "HPLIP not supported on ${stdenv.hostPlatform.system}"); + + pluginArches = [ "x86_32" "x86_64" "arm32" "arm64" ]; + +in + +assert withPlugin -> builtins.elem hplipArch pluginArches + || throw "HPLIP plugin not supported on ${stdenv.hostPlatform.system}"; + +python3Packages.buildPythonApplication { + inherit pname version src; + format = "other"; + + buildInputs = [ + libjpeg + cups + libusb1 + sane-backends + dbus + file + ghostscript + net-snmp + openssl + perl + zlib + avahi + ] ++ lib.optionals withQt5 [ + qt5.qtwayland + ]; + + nativeBuildInputs = [ + pkg-config + removeReferencesTo + autoreconfHook + ] ++ lib.optional withQt5 qt5.wrapQtAppsHook; + + pythonPath = with python3Packages; [ + dbus + pillow + pygobject3 + reportlab + usbutils + sip4 + dbus-python + distro + ] ++ lib.optionals withQt5 [ + pyqt5 + pyqt5-sip + enum-compat + ]; + + makeWrapperArgs = [ "--prefix" "PATH" ":" "${nettools}/bin" ]; + + patches = [ + # HPLIP's getSystemPPDs() function relies on searching for PPDs below common FHS + # paths, and hp-setup crashes if none of these paths actually exist (which they + # don't on NixOS). Add the equivalent NixOS path, /var/lib/cups/path/share. + # See: https://github.com/NixOS/nixpkgs/issues/21796 + ./hplip-3.20.11-nixos-cups-ppd-search-path.patch + + # Remove all ImageProcessor functionality since that is closed source + (fetchurl { + url = "https://web.archive.org/web/20230226174550/https://sources.debian.org/data/main/h/hplip/3.22.10+dfsg0-1/debian/patches/0028-Remove-ImageProcessor-binary-installs.patch"; + sha256 = "sha256:18njrq5wrf3fi4lnpd1jqmaqr7ph5d7jxm7f15b1wwrbxir1rmml"; + }) + + # Revert changes that break compilation under -Werror=format-security + ./revert-snprintf-change.patch + ]; + + postPatch = '' + # https://github.com/NixOS/nixpkgs/issues/44230 + substituteInPlace createPPD.sh \ + --replace ppdc "${cups}/bin/ppdc" \ + --replace "gzip -c" "gzip -cn" + + # HPLIP hardcodes absolute paths everywhere. Nuke from orbit. + find . -type f -exec sed -i \ + -e s,/etc/hp,$out/etc/hp,g \ + -e s,/etc/sane.d,$out/etc/sane.d,g \ + -e s,/usr/include/libusb-1.0,${libusb1.dev}/include/libusb-1.0,g \ + -e s,/usr/share/hal/fdi/preprobe/10osvendor,$out/share/hal/fdi/preprobe/10osvendor,g \ + -e s,/usr/lib/systemd/system,$out/lib/systemd/system,g \ + -e s,/var/lib/hp,$out/var/lib/hp,g \ + -e s,/usr/bin/perl,${perl}/bin/perl,g \ + -e s,/usr/bin/file,${file}/bin/file,g \ + -e s,/usr/bin/gs,${ghostscript}/bin/gs,g \ + -e s,/usr/share/cups/fonts,${ghostscript}/share/ghostscript/fonts,g \ + -e "s,ExecStart=/usr/bin/python /usr/bin/hp-config_usb_printer,ExecStart=$out/bin/hp-config_usb_printer,g" \ + -e s,Exec=/usr/bin/hp-uiscan,Exec=hp-uiscan,g \ + -e s,Icon=/usr/share/icons/Humanity/devices/48/printer.svg,Icon=printer,g \ + -e s,Icon=@abs_datadir@/hplip/data/images/128x128/hp_logo.png,Icon=hp_logo,g \ + {} + + + echo 'AUTOMAKE_OPTIONS = foreign' >> Makefile.am + ''; + + configureFlags = let out = placeholder "out"; in + [ + "--with-hpppddir=${out}/share/cups/model/HP" + "--with-cupsfilterdir=${out}/lib/cups/filter" + "--with-cupsbackenddir=${out}/lib/cups/backend" + "--with-icondir=${out}/share/applications" + "--with-systraydir=${out}/xdg/autostart" + "--with-mimedir=${out}/etc/cups" + "--enable-policykit" + "--disable-qt4" + + # remove ImageProcessor usage, it causes segfaults, see + # https://bugs.launchpad.net/hplip/+bug/1788706 + # https://bugs.launchpad.net/hplip/+bug/1787289 + "--disable-imageProcessor-build" + ] + ++ lib.optional withStaticPPDInstall "--enable-cups-ppd-install" + ++ lib.optional withQt5 "--enable-qt5" + ; + + # Prevent 'ppdc: Unable to find include file "<font.defs>"' which prevent + # generation of '*.ppd' files. + # This seems to be a 'ppdc' issue when the tool is run in a hermetic sandbox. + # Could not find how to fix the problem in 'ppdc' so this is a workaround. + CUPS_DATADIR = "${cups}/share/cups"; + + makeFlags = let out = placeholder "out"; in [ + "halpredir=${out}/share/hal/fdi/preprobe/10osvendor" + "rulesdir=${out}/etc/udev/rules.d" + "policykit_dir=${out}/share/polkit-1/actions" + "policykit_dbus_etcdir=${out}/etc/dbus-1/system.d" + "policykit_dbus_sharedir=${out}/share/dbus-1/system-services" + "hplip_confdir=${out}/etc/hp" + "hplip_statedir=${out}/var/lib/hp" + ]; + + postConfigure = '' + # don't save timestamp, in order to improve reproducibility + substituteInPlace Makefile \ + --replace "GZIP_ENV = --best" "GZIP_ENV = --best -n" + ''; + + enableParallelBuilding = true; + enableParallelInstalling = false; + + # + # Running `hp-diagnose_plugin -g` can be used to diagnose + # issues with plugins. + # + postInstall = '' + for resolution in 16x16 32x32 64x64 128x128 256x256; do + mkdir -p $out/share/icons/hicolor/$resolution/apps + ln -s $out/share/hplip/data/images/$resolution/hp_logo.png \ + $out/share/icons/hicolor/$resolution/apps/hp_logo.png + done + '' + lib.optionalString withPlugin '' + sh ${plugin} --noexec --keep + cd plugin_tmp + + cp plugin.spec $out/share/hplip/ + + mkdir -p $out/share/hplip/data/firmware + cp *.fw.gz $out/share/hplip/data/firmware + + mkdir -p $out/share/hplip/data/plugins + cp license.txt $out/share/hplip/data/plugins + + mkdir -p $out/share/hplip/prnt/plugins + for plugin in lj hbpl1; do + cp $plugin-${hplipArch}.so $out/share/hplip/prnt/plugins + chmod 0755 $out/share/hplip/prnt/plugins/$plugin-${hplipArch}.so + ln -s $out/share/hplip/prnt/plugins/$plugin-${hplipArch}.so \ + $out/share/hplip/prnt/plugins/$plugin.so + done + + mkdir -p $out/share/hplip/scan/plugins + for plugin in bb_soap bb_marvell bb_soapht bb_escl; do + cp $plugin-${hplipArch}.so $out/share/hplip/scan/plugins + chmod 0755 $out/share/hplip/scan/plugins/$plugin-${hplipArch}.so + ln -s $out/share/hplip/scan/plugins/$plugin-${hplipArch}.so \ + $out/share/hplip/scan/plugins/$plugin.so + done + + mkdir -p $out/share/hplip/fax/plugins + for plugin in fax_marvell; do + cp $plugin-${hplipArch}.so $out/share/hplip/fax/plugins + chmod 0755 $out/share/hplip/fax/plugins/$plugin-${hplipArch}.so + ln -s $out/share/hplip/fax/plugins/$plugin-${hplipArch}.so \ + $out/share/hplip/fax/plugins/$plugin.so + done + + mkdir -p $out/var/lib/hp + cp ${hplipState} $out/var/lib/hp/hplip.state + ''; + + # The installed executables are just symlinks into $out/share/hplip, + # but wrapPythonPrograms ignores symlinks. We cannot replace the Python + # modules in $out/share/hplip with wrapper scripts because they import + # each other as libraries. Instead, we emulate wrapPythonPrograms by + # 1. Calling patchPythonProgram on the original script in $out/share/hplip + # 2. Making our own wrapper pointing directly to the original script. + dontWrapPythonPrograms = true; + # We also avoid double wrapping in case we add qt5 support + dontWrapQtApps = true; + preFixup = '' + buildPythonPath "$out $pythonPath" + + for bin in $out/bin/*; do + py=$(readlink -m $bin) + rm $bin + echo "patching \`$py'..." + patchPythonScript "$py" + echo "wrapping \`$bin'..." + ${if withQt5 then "makeQtWrapper" else "makeWrapper"} "$py" "$bin" \ + --prefix PATH ':' "$program_PATH" \ + --set PYTHONNOUSERSITE "true" \ + $makeWrapperArgs + done + ''; + + postFixup = '' + substituteInPlace $out/etc/hp/hplip.conf --replace /usr $out + # Patch udev rules: + # with plugin, they upload firmware to printers, + # without plugin, they complain about the missing plugin. + substituteInPlace $out/etc/udev/rules.d/56-hpmud.rules \ + --replace {,${bash}}/bin/sh \ + --replace /usr/bin/nohup "" \ + --replace {,${util-linux}/bin/}logger \ + --replace {/usr,$out}/bin + remove-references-to -t ${stdenv.cc.cc} $(readlink -f $out/lib/*.so) + ''; + + # There are some binaries there, which reference gcc-unwrapped otherwise. + stripDebugList = [ + "share/hplip" "lib/cups/backend" "lib/cups/filter" python3Packages.python.sitePackages "lib/sane" + ]; + + meta = with lib; { + description = "Print, scan and fax HP drivers for Linux"; + homepage = "https://developers.hp.com/hp-linux-imaging-and-printing"; + downloadPage = "https://sourceforge.net/projects/hplip/files/hplip/"; + license = if withPlugin + then licenses.unfree + else with licenses; [ mit bsd2 gpl2Plus ]; + platforms = [ "i686-linux" "x86_64-linux" "armv6l-linux" "armv7l-linux" "aarch64-linux" ]; + maintainers = with maintainers; [ ttuegel arthsmn ]; + }; +} diff --git a/nixpkgs/pkgs/misc/drivers/hplip/hplip-3.20.11-nixos-cups-ppd-search-path.patch b/nixpkgs/pkgs/misc/drivers/hplip/hplip-3.20.11-nixos-cups-ppd-search-path.patch new file mode 100644 index 000000000000..d26e13dd2d63 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/hplip/hplip-3.20.11-nixos-cups-ppd-search-path.patch @@ -0,0 +1,24 @@ +From: Bryan Gardiner <bog@khumba.net> +Date: Sat, 9 Jan 2021 16:51:20 -0800 +Subject: [PATCH] Add NixOS CUPS PPD search path. + +--- + base/g.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/base/g.py b/base/g.py +index f73e23f..758f339 100644 +--- a/base/g.py ++++ b/base/g.py +@@ -283,7 +283,7 @@ prop.max_message_len = 8192 + prop.max_message_read = 65536 + prop.read_timeout = 90 + +-prop.ppd_search_path = '/usr/share;/usr/local/share;/usr/lib;/usr/local/lib;/usr/libexec;/opt;/usr/lib64' ++prop.ppd_search_path = '/var/lib/cups/path/share;/usr/share;/usr/local/share;/usr/lib;/usr/local/lib;/usr/libexec;/opt;/usr/lib64' + prop.ppd_search_pattern = 'HP-*.ppd.*' + prop.ppd_download_url = 'http://www.linuxprinting.org/ppd-o-matic.cgi' + prop.ppd_file_suffix = '-hpijs.ppd' +-- +2.29.2 + diff --git a/nixpkgs/pkgs/misc/drivers/hplip/hplip.state b/nixpkgs/pkgs/misc/drivers/hplip/hplip.state new file mode 100644 index 000000000000..9d19a93f3644 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/hplip/hplip.state @@ -0,0 +1,4 @@ +[plugin] +installed=1 +eula=1 +version=@version@ diff --git a/nixpkgs/pkgs/misc/drivers/hplip/revert-snprintf-change.patch b/nixpkgs/pkgs/misc/drivers/hplip/revert-snprintf-change.patch new file mode 100644 index 000000000000..2caa98dc2cff --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/hplip/revert-snprintf-change.patch @@ -0,0 +1,61 @@ +commit f103a260215016fc035bc1399c8accabf83b0264 +Author: Claudio Bley <claudio.bley@gmail.com> +Date: Fri Jul 1 22:29:05 2022 +0200 + + Revert change to hp_ipp.c from 3.22.{4 -> 6} + + This fails compilation: + ``` + protocol/hp_ipp.c: In function ‘addCupsPrinter’: + protocol/hp_ipp.c:113:9: error: format not a string literal and no format arguments [-Werror=format-security] + 113 | snprintf( info,sizeof(info), name ); + | ^~~~~~~~ + ``` + +diff --git a/protocol/hp_ipp.c b/protocol/hp_ipp.c +index 97d827d..af7013b 100644 +--- a/protocol/hp_ipp.c ++++ b/protocol/hp_ipp.c +@@ -110,7 +110,7 @@ int addCupsPrinter(char *name, char *device_uri, char *location, char *ppd_file, + } + + if ( info == NULL ) +- snprintf( info,sizeof(info), name ); ++ strcpy( info, name ); + + sprintf( printer_uri, "ipp://localhost/printers/%s", name ); + +@@ -511,27 +511,27 @@ int __parsePrinterAttributes(ipp_t *response, printer_t **printer_list) + + if ( strcmp(attr_name, "printer-name") == 0 && + val_tag == IPP_TAG_NAME ) { +- snprintf(t_printer->name, sizeof(t_printer->name),ippGetString(attr, 0, NULL) ); ++ strcpy(t_printer->name, ippGetString(attr, 0, NULL) ); + } + else if ( strcmp(attr_name, "device-uri") == 0 && + val_tag == IPP_TAG_URI ) { +- snprintf(t_printer->device_uri,sizeof(t_printer->device_uri), ippGetString(attr, 0, NULL) ); ++ strcpy(t_printer->device_uri, ippGetString(attr, 0, NULL) ); + } + else if ( strcmp(attr_name, "printer-uri-supported") == 0 && + val_tag == IPP_TAG_URI ) { +- snprintf(t_printer->printer_uri,sizeof(t_printer->printer_uri), ippGetString(attr, 0, NULL) ); ++ strcpy(t_printer->printer_uri, ippGetString(attr, 0, NULL) ); + } + else if ( strcmp(attr_name, "printer-info") == 0 && + val_tag == IPP_TAG_TEXT ) { +- snprintf(t_printer->info,sizeof(t_printer->info), ippGetString(attr, 0, NULL) ); ++ strcpy(t_printer->info, ippGetString(attr, 0, NULL) ); + } + else if ( strcmp(attr_name, "printer-location") == 0 && + val_tag == IPP_TAG_TEXT ) { +- snprintf(t_printer->location,sizeof(t_printer->location),ippGetString(attr, 0, NULL) ); ++ strcpy(t_printer->location, ippGetString(attr, 0, NULL) ); + } + else if ( strcmp(attr_name, "printer-make-and-model") == 0 && + val_tag == IPP_TAG_TEXT ) { +- snprintf(t_printer->make_model,sizeof(t_printer->make_model),ippGetString(attr, 0, NULL) ); ++ strcpy(t_printer->make_model, ippGetString(attr, 0, NULL) ); + } + else if ( strcmp(attr_name, "printer-state") == 0 && + val_tag == IPP_TAG_ENUM ) { diff --git a/nixpkgs/pkgs/misc/drivers/infnoise/default.nix b/nixpkgs/pkgs/misc/drivers/infnoise/default.nix new file mode 100644 index 000000000000..47ff00459923 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/infnoise/default.nix @@ -0,0 +1,60 @@ +{ lib, stdenv, fetchFromGitHub, fetchpatch, libftdi +, infnoise, testers }: + +stdenv.mkDerivation rec { + pname = "infnoise"; + version = "0.3.2"; + + src = fetchFromGitHub { + owner = "leetronics"; + repo = "infnoise"; + rev = "e80ddd78085abf3d06df2e0d8c08fd33dade78eb"; + sha256 = "sha256-9MKG1InkV+yrQPBTgi2gZJ3y9Fokb6WbxuAnM7n7FyA="; + }; + + patches = [ + # Patch makefile so we can set defines from the command line instead of it depending on .git + ./makefile.patch + + # Fix getc return type + (fetchpatch { + url = "https://github.com/leetronics/infnoise/commit/7ed7014e14253311c07e530c8f89f1c8f4705c2b.patch"; + sha256 = "sha256-seB/fJaxQ/rXJp5iPtnobXXOccQ2KUAk6HFx31dhOhs="; + }) + ]; + + GIT_COMMIT = src.rev; + GIT_VERSION = version; + GIT_DATE = "2019-08-12"; + + buildInputs = [ libftdi ]; + + makefile = "Makefile.linux"; + makeFlags = [ "PREFIX=$(out)" ]; + postPatch = '' + cd software + substituteInPlace init_scripts/infnoise.service --replace "/usr/local" "$out" + ''; + + postInstall = '' + make -C tools + find ./tools/ -executable -type f -exec \ + sh -c "install -Dm755 {} $out/bin/infnoise-\$(basename {})" \; + ''; + + passthru = { + tests.version = testers.testVersion { package = infnoise; }; + }; + + meta = with lib; { + homepage = "https://github.com/leetronics/infnoise"; + description = "Driver for the Infinite Noise TRNG"; + longDescription = '' + The Infinite Noise TRNG is a USB key hardware true random number generator. + It can either provide rng for userland applications, or provide rng for the OS entropy. + ''; + license = licenses.cc0; + maintainers = with maintainers; [ StijnDW zhaofengli ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/misc/drivers/infnoise/makefile.patch b/nixpkgs/pkgs/misc/drivers/infnoise/makefile.patch new file mode 100644 index 000000000000..871a6c508ce6 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/infnoise/makefile.patch @@ -0,0 +1,14 @@ +diff --git a/software/Makefile.linux b/software/Makefile.linux +index db48aa5..df8b3d2 100644 +--- a/software/Makefile.linux ++++ b/software/Makefile.linux +@@ -1,6 +1,6 @@ +-GIT_VERSION := $(shell git --no-pager describe --tags --always) +-GIT_COMMIT := $(shell git rev-parse --verify HEAD) +-GIT_DATE := $(firstword $(shell git --no-pager show --date=iso-strict --format="%ad" --name-only)) ++GIT_VERSION ?= $(shell git --no-pager describe --tags --always) ++GIT_COMMIT ?= $(shell git rev-parse --verify HEAD) ++GIT_DATE ?= $(firstword $(shell git --no-pager show --date=iso-strict --format="%ad" --name-only)) + + PREFIX = $(DESTDIR)/usr/local + diff --git a/nixpkgs/pkgs/misc/drivers/logiops/default.nix b/nixpkgs/pkgs/misc/drivers/logiops/default.nix new file mode 100644 index 000000000000..71283a406214 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/logiops/default.nix @@ -0,0 +1,26 @@ +{ lib, stdenv, fetchFromGitHub, pkg-config, cmake, udev, libevdev, libconfig }: + +stdenv.mkDerivation rec { + pname = "logiops"; + version = "0.2.3"; + + src = fetchFromGitHub { + owner = "pixlone"; + repo = "logiops"; + rev = "v${version}"; + sha256 = "sha256-1v728hbIM2ODtB+r6SYzItczRJCsbuTvhYD2OUM1+/E="; + }; + + PKG_CONFIG_SYSTEMD_SYSTEMDSYSTEMUNITDIR = "${placeholder "out"}/lib/systemd/system"; + + nativeBuildInputs = [ cmake pkg-config ]; + buildInputs = [ udev libevdev libconfig ]; + + meta = with lib; { + description = "Unofficial userspace driver for HID++ Logitech devices"; + homepage = "https://github.com/PixlOne/logiops"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ ckie ]; + platforms = with platforms; linux; + }; +} diff --git a/nixpkgs/pkgs/misc/drivers/m33-linux/default.nix b/nixpkgs/pkgs/misc/drivers/m33-linux/default.nix new file mode 100644 index 000000000000..84272898f52c --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/m33-linux/default.nix @@ -0,0 +1,26 @@ +{ lib, stdenv, fetchFromGitHub }: + +stdenv.mkDerivation { + pname = "M33-Linux"; + version = "unstable-2016-06-23"; + + src = fetchFromGitHub { + owner = "donovan6000"; + repo = "M3D-Linux"; + rev = "5c1b90c13d260771dac970b49fdc9f840fee5f4a"; + sha256 = "1bvbclkyfcv23vxb4s1zssvygklks1nhp4iwi4v90c1fvyz0356f"; + }; + + installPhase = '' + install -Dm755 m33-linux $out/bin/m33-linux + install -Dm755 90-micro-3d-local.rules $out/lib/udev/rules.d/90-micro-3d-local.rules + ''; + + meta = with lib; { + homepage = "https://github.com/donovan6000/M3D-Linux"; + description = "A Linux program that can communicate with the Micro 3D printer"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = with maintainers; [ abbradar ]; + }; +} diff --git a/nixpkgs/pkgs/misc/drivers/moltengamepad/default.nix b/nixpkgs/pkgs/misc/drivers/moltengamepad/default.nix new file mode 100644 index 000000000000..747866b9cfc9 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/moltengamepad/default.nix @@ -0,0 +1,39 @@ +{ lib, stdenv, fetchFromGitHub, udev }: + +stdenv.mkDerivation { + pname = "moltengamepad"; + version = "unstable-2016-05-04"; + + src = fetchFromGitHub { + owner = "jgeumlek"; + repo = "MoltenGamepad"; + rev = "6656357964c22be97227fc5353b53c6ab1e69929"; + sha256 = "05cpxfzxgm86kxx0a9f76bshjwpz9w1g8bn30ib1i5a3fv7bmirl"; + }; + + hardeningDisable = [ "format" ]; + + buildInputs = [ udev ]; + + buildPhase = '' + make + ''; + + installPhase = '' + mkdir -p $out/bin + cp moltengamepad $out/bin + ''; + + patchPhase = '' + sed -i -e '159d;161d;472d;473d;474d;475d' source/eventlists/key_list.cpp + ''; + + meta = with lib; { + homepage = "https://github.com/jgeumlek/MoltenGamepad"; + description = "Flexible Linux input device translator, geared for gamepads"; + license = licenses.mit; + maintainers = [ maintainers.ebzzry ]; + platforms = platforms.linux; + }; + +} diff --git a/nixpkgs/pkgs/misc/drivers/pantum-driver/default.nix b/nixpkgs/pkgs/misc/drivers/pantum-driver/default.nix new file mode 100644 index 000000000000..fdb54c53fdf6 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/pantum-driver/default.nix @@ -0,0 +1,53 @@ +{ lib +, stdenv +, fetchzip +, libusb1 +, cups +, dpkg +, libjpeg8 +, makeWrapper +, autoPatchelfHook +, enablePtqpdf ? false # Pantum's version of qpdf +}: + +let + architecture = { + i686-linux = "i386"; + x86_64-linux = "amd64"; + }.${stdenv.hostPlatform.system} or (throw "unsupported system ${stdenv.hostPlatform.system}"); +in +stdenv.mkDerivation rec { + pname = "pantum-driver"; + version = "1.1.84"; + + src = fetchzip { + url = "https://drivers.pantum.com/Pantum_Ubuntu_Driver_V${version}_1.zip"; + sha256 = "sha256-UJzYBsGj/TMhQoMourx7UPGBpN0MPi4pEN8m1sXLw/g="; + }; + + buildInputs = [ libusb1 libjpeg8 cups ]; + nativeBuildInputs = [ dpkg autoPatchelfHook ]; + + installPhase = '' + dpkg-deb -x ./Resources/pantum_${version}-1_${architecture}.deb . + + mkdir -p $out $out/lib + cp -r etc $out/ + cp -r usr/lib/cups $out/lib/ + cp -r usr/local/lib/* $out/lib/ + cp -r usr/share $out/ + cp Resources/locale/en_US.UTF-8/* $out/share/doc/pantum/ + '' + lib.optionalString enablePtqpdf '' + cp -r opt/pantum/* $out/ + ln -s $out/lib/libqpdf.so* $out/lib/libqpdf.so + ln -s $out/lib/libqpdf.so $out/lib/libqpdf.so.21 + ''; + + meta = { + description = "Pantum universal driver"; + homepage = "https://global.pantum.com/"; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + license = lib.licenses.unfree; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; +} diff --git a/nixpkgs/pkgs/misc/drivers/postscript-lexmark/default.nix b/nixpkgs/pkgs/misc/drivers/postscript-lexmark/default.nix new file mode 100644 index 000000000000..d9544e4b330d --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/postscript-lexmark/default.nix @@ -0,0 +1,36 @@ +{ lib, stdenv, fetchurl, rpmextract }: +let + version = "20160218"; +in +stdenv.mkDerivation { + pname = "postscript-lexmark"; + inherit version; + + src = fetchurl { + url = "https://www.openprinting.org/download/printdriver/components/lsb3.2/main/RPMS/noarch/openprinting-ppds-postscript-lexmark-${version}-1lsb3.2.noarch.rpm"; + sha256 = "0wbhvypdr96a5ddg6kj41dn9sbl49n7pfi2vs762ij82hm2gvwcm"; + }; + + nativeBuildInputs = [ rpmextract ]; + + sourceRoot = "."; + + unpackPhase = '' + rpmextract $src + for ppd in opt/OpenPrinting-Lexmark/ppds/Lexmark/*; do + gzip -d $ppd + done + ''; + + installPhase = '' + mkdir -p $out/share/cups/model/postscript-lexmark + cp opt/OpenPrinting-Lexmark/ppds/Lexmark/*.ppd $out/share/cups/model/postscript-lexmark/ + cp -r opt/OpenPrinting-Lexmark/doc $out/doc + ''; + + meta = with lib; { + homepage = "https://www.openprinting.org/driver/Postscript-Lexmark/"; + description = "Lexmark Postscript Drivers"; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/misc/drivers/sc-controller/default.nix b/nixpkgs/pkgs/misc/drivers/sc-controller/default.nix new file mode 100644 index 000000000000..009e08967453 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/sc-controller/default.nix @@ -0,0 +1,57 @@ +{ lib, buildPythonApplication, fetchFromGitHub, wrapGAppsHook +, pytestCheckHook +, gtk3, gobject-introspection, libappindicator-gtk3, librsvg +, evdev, pygobject3, pylibacl, bluez, vdf +, linuxHeaders +, libX11, libXext, libXfixes, libusb1, udev +}: + +buildPythonApplication rec { + pname = "sc-controller"; + version = "0.4.8.11"; + + src = fetchFromGitHub { + owner = "Ryochan7"; + repo = pname; + rev = "v${version}"; + sha256 = "xu9QqddJf0cXkhNPrOnE+L8CV5AfgcCyk9DSh+G94c0="; + }; + + nativeBuildInputs = [ wrapGAppsHook gobject-introspection ]; + + buildInputs = [ gtk3 libappindicator-gtk3 librsvg ]; + + propagatedBuildInputs = [ evdev pygobject3 pylibacl vdf ]; + + nativeCheckInputs = [ pytestCheckHook ]; + + postPatch = '' + substituteInPlace scc/paths.py --replace sys.prefix "'$out'" + substituteInPlace scc/uinput.py --replace /usr/include ${linuxHeaders}/include + substituteInPlace scc/device_monitor.py --replace "find_library('bluetooth')" "'libbluetooth.so.3'" + ''; + + LD_LIBRARY_PATH = lib.makeLibraryPath [ libX11 libXext libXfixes libusb1 udev bluez ]; + + preFixup = '' + gappsWrapperArgs+=(--prefix LD_LIBRARY_PATH : "$LD_LIBRARY_PATH") + ''; + + postFixup = '' + ( + # scc runs these scripts as programs. (See find_binary() in scc/tools.py.) + cd $out/lib/python*/site-packages/scc/x11 + patchPythonScript scc-autoswitch-daemon.py + patchPythonScript scc-osd-daemon.py + ) + ''; + + meta = with lib; { + homepage = "https://github.com/Ryochan7/sc-controller"; + # donations: https://www.patreon.com/kozec + description = "User-mode driver and GUI for Steam Controller and other controllers"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = with maintainers; [ orivej rnhmjoj ]; + }; +} diff --git a/nixpkgs/pkgs/misc/drivers/spacenavd/configure-cfgfile-path.patch b/nixpkgs/pkgs/misc/drivers/spacenavd/configure-cfgfile-path.patch new file mode 100644 index 000000000000..268282e96eae --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/spacenavd/configure-cfgfile-path.patch @@ -0,0 +1,63 @@ +diff --git a/src/spnavd.c b/src/spnavd.c +index 2d4eca6..a5227ed 100644 +--- a/src/spnavd.c ++++ b/src/spnavd.c +@@ -27,6 +27,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. + #include <sys/select.h> + #include <sys/socket.h> + #include <sys/un.h> ++#include <sys/types.h> ++#include <pwd.h> + #include "spnavd.h" + #include "logger.h" + #include "dev.h" +@@ -47,13 +49,39 @@ static void handle_events(fd_set *rset); + static void sig_handler(int s); + static char *fix_path(char *str); + +-static char *cfgfile = DEF_CFGFILE; ++static char* config_path; ++char* cfg_path() ++{ ++ char* buf; ++ if((buf = getenv("XDG_CONFIG_HOME"))) { ++ if(config_path == NULL) { ++ config_path = malloc(strlen(buf) + strlen("/spnavrc") + 1); ++ if ( config_path != NULL) { ++ sprintf(config_path, "%s/spnavrc", buf); ++ } ++ }; ++ return config_path; ++ } else { ++ if (!(buf = getenv("HOME"))) { ++ struct passwd *pw = getpwuid(getuid()); ++ buf = pw->pw_dir; ++ } ++ config_path = malloc(strlen(buf) + strlen("/.config/spnavrc") + 1); ++ if ( config_path != NULL) { ++ sprintf(config_path, "%s/.config/spnavrc", buf); ++ } ++ return config_path; ++ } ++} ++ ++static char *cfgfile = NULL; + static char *logfile = DEF_LOGFILE; + static char *pidpath = NULL; + + int main(int argc, char **argv) + { + int i, pid, ret, become_daemon = 1; ++ cfgfile = cfg_path(); + + for(i=1; i<argc; i++) { + if(argv[i][0] == '-') { +@@ -247,7 +275,7 @@ static void print_usage(const char *argv0) + printf("usage: %s [options]\n", argv0); + printf("options:\n"); + printf(" -d: do not daemonize\n"); +- printf(" -c <file>: config file path (default: " DEF_CFGFILE ")\n"); ++ printf(" -c <file>: config file path (default: %s)\n", cfg_path()); + printf(" -l <file>|syslog: log file path or log to syslog (default: " DEF_LOGFILE ")\n"); + printf(" -v: verbose output\n"); + printf(" -V,-version: print version number and exit\n"); diff --git a/nixpkgs/pkgs/misc/drivers/spacenavd/configure-pidfile-path.patch b/nixpkgs/pkgs/misc/drivers/spacenavd/configure-pidfile-path.patch new file mode 100644 index 000000000000..bc2cad9784cb --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/spacenavd/configure-pidfile-path.patch @@ -0,0 +1,82 @@ +diff --git a/src/spnavd.c b/src/spnavd.c +index 03080da..2d4eca6 100644 +--- a/src/spnavd.c ++++ b/src/spnavd.c +@@ -42,12 +42,14 @@ static void cleanup(void); + static void daemonize(void); + static int write_pid_file(void); + static int find_running_daemon(void); ++static char *pidfile_path(void); + static void handle_events(fd_set *rset); + static void sig_handler(int s); + static char *fix_path(char *str); + + static char *cfgfile = DEF_CFGFILE; + static char *logfile = DEF_LOGFILE; ++static char *pidpath = NULL; + + int main(int argc, char **argv) + { +@@ -270,7 +272,7 @@ static void cleanup(void) + remove_device(tmp); + } + +- remove(PIDFILE); ++ remove(pidfile_path()); + } + + static void daemonize(void) +@@ -314,7 +316,7 @@ static int write_pid_file(void) + FILE *fp; + int pid = getpid(); + +- if(!(fp = fopen(PIDFILE, "w"))) { ++ if(!(fp = fopen(pidfile_path(), "w"))) { + return -1; + } + fprintf(fp, "%d\n", pid); +@@ -329,7 +331,7 @@ static int find_running_daemon(void) + struct sockaddr_un addr; + + /* try to open the pid-file */ +- if(!(fp = fopen(PIDFILE, "r"))) { ++ if(!(fp = fopen(pidfile_path(), "r"))) { + return -1; + } + if(fscanf(fp, "%d\n", &pid) != 1) { +@@ -356,6 +358,22 @@ static int find_running_daemon(void) + return pid; + } + ++char *pidfile_path(void) ++{ ++ char *xdg_runtime_dir; ++ if((xdg_runtime_dir = getenv("XDG_RUNTIME_DIR"))) { ++ if ( pidpath == NULL ) { ++ pidpath = malloc(strlen(xdg_runtime_dir) + strlen("/spnavd.pid") + 1); ++ if ( pidpath != NULL ) { ++ sprintf(pidpath, "%s/spnavd.pid", xdg_runtime_dir); ++ } ++ }; ++ return pidpath; ++ } else { ++ return DEFAULT_PIDFILE; ++ } ++} ++ + static void handle_events(fd_set *rset) + { + int dev_fd, hotplug_fd; +diff --git a/src/spnavd.h b/src/spnavd.h +index 2d1c48b..17d22d3 100644 +--- a/src/spnavd.h ++++ b/src/spnavd.h +@@ -26,7 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. + #define DEF_CFGFILE "/etc/spnavrc" + #define DEF_LOGFILE "/var/log/spnavd.log" + +-#define PIDFILE "/var/run/spnavd.pid" ++#define DEFAULT_PIDFILE "/run/spnavd.pid" + #define DEFAULT_SOCK_NAME "/run/spnav.sock" + #define SYSLOG_ID "spnavd" + diff --git a/nixpkgs/pkgs/misc/drivers/spacenavd/configure-socket-path.patch b/nixpkgs/pkgs/misc/drivers/spacenavd/configure-socket-path.patch new file mode 100644 index 000000000000..c59987dcc051 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/spacenavd/configure-socket-path.patch @@ -0,0 +1,118 @@ +diff --git a/src/proto_unix.c b/src/proto_unix.c +index 998f234..d38452c 100644 +--- a/src/proto_unix.c ++++ b/src/proto_unix.c +@@ -36,11 +36,14 @@ enum { + + static int lsock = -1; + ++static char *spath = NULL; ++ + int init_unix(void) + { + int s; + mode_t prev_umask; + struct sockaddr_un addr; ++ char *sock_path; + + if(lsock >= 0) return 0; + +@@ -49,16 +52,18 @@ int init_unix(void) + return -1; + } + +- unlink(SOCK_NAME); /* in case it already exists */ ++ sock_path = socket_path(); ++ ++ unlink(sock_path); /* in case it already exists */ + + memset(&addr, 0, sizeof addr); + addr.sun_family = AF_UNIX; +- strcpy(addr.sun_path, SOCK_NAME); ++ strcpy(addr.sun_path, sock_path); + + prev_umask = umask(0); + + if(bind(s, (struct sockaddr*)&addr, sizeof addr) == -1) { +- logmsg(LOG_ERR, "failed to bind unix socket: %s: %s\n", SOCK_NAME, strerror(errno)); ++ logmsg(LOG_ERR, "failed to bind unix socket: %s: %s\n", sock_path, strerror(errno)); + close(s); + return -1; + } +@@ -68,7 +73,7 @@ int init_unix(void) + if(listen(s, 8) == -1) { + logmsg(LOG_ERR, "listen failed: %s\n", strerror(errno)); + close(s); +- unlink(SOCK_NAME); ++ unlink(sock_path); + return -1; + } + +@@ -82,7 +87,7 @@ void close_unix(void) + close(lsock); + lsock = -1; + +- unlink(SOCK_NAME); ++ unlink(socket_path()); + } + } + +@@ -173,3 +178,19 @@ int handle_uevents(fd_set *rset) + + return 0; + } ++ ++char *socket_path(void) ++{ ++ char *xdg_runtime_dir; ++ if((xdg_runtime_dir = getenv("XDG_RUNTIME_DIR"))) { ++ if ( spath == NULL ) { ++ spath = malloc(strlen(xdg_runtime_dir) + strlen("/spnav.sock") + 1); ++ if ( spath != NULL ) { ++ sprintf(spath, "%s/spnav.sock", xdg_runtime_dir); ++ } ++ }; ++ return spath; ++ } else { ++ return DEFAULT_SOCK_NAME; ++ } ++} +diff --git a/src/proto_unix.h b/src/proto_unix.h +index 045b379..ec4509c 100644 +--- a/src/proto_unix.h ++++ b/src/proto_unix.h +@@ -23,6 +23,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. + #include "event.h" + #include "client.h" + ++char *socket_path(void); + int init_unix(void); + void close_unix(void); + int get_unix_socket(void); +diff --git a/src/spnavd.c b/src/spnavd.c +index cbea191..03080da 100644 +--- a/src/spnavd.c ++++ b/src/spnavd.c +@@ -344,7 +344,7 @@ static int find_running_daemon(void) + } + memset(&addr, 0, sizeof addr); + addr.sun_family = AF_UNIX; +- strncpy(addr.sun_path, SOCK_NAME, sizeof addr.sun_path); ++ strncpy(addr.sun_path, socket_path(), sizeof addr.sun_path); + + if(connect(s, (struct sockaddr*)&addr, sizeof addr) == -1) { + close(s); +diff --git a/src/spnavd.h b/src/spnavd.h +index fa0a916..2d1c48b 100644 +--- a/src/spnavd.h ++++ b/src/spnavd.h +@@ -26,8 +26,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. + #define DEF_CFGFILE "/etc/spnavrc" + #define DEF_LOGFILE "/var/log/spnavd.log" + +-#define SOCK_NAME "/var/run/spnav.sock" + #define PIDFILE "/var/run/spnavd.pid" ++#define DEFAULT_SOCK_NAME "/run/spnav.sock" + #define SYSLOG_ID "spnavd" + + /* Multiple devices support */ diff --git a/nixpkgs/pkgs/misc/drivers/spacenavd/default.nix b/nixpkgs/pkgs/misc/drivers/spacenavd/default.nix new file mode 100644 index 000000000000..eb2fc165cccb --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/spacenavd/default.nix @@ -0,0 +1,46 @@ +{ stdenv, lib, fetchFromGitHub, fetchpatch, libX11, IOKit }: + +stdenv.mkDerivation rec { + version = "0.8"; + pname = "spacenavd"; + + src = fetchFromGitHub { + owner = "FreeSpacenav"; + repo = "spacenavd"; + rev = "v${version}"; + sha256 = "1zz0cm5cgvp9s5n4nzksl8rb11c7sw214bdafzra74smvqfjcjcf"; + }; + + patches = [ + # Fixes Darwin: https://github.com/FreeSpacenav/spacenavd/pull/38 + (fetchpatch { + url = "https://github.com/FreeSpacenav/spacenavd/commit/d6a25d5c3f49b9676d039775efc8bf854737c43c.patch"; + sha256 = "02pdgcvaqc20qf9hi3r73nb9ds7yk2ps9nnxaj0x9p50xjnhfg5c"; + }) + # Changes the socket path from /run/spnav.sock to $XDG_RUNTIME_DIR/spnav.sock + # to allow for a user service + ./configure-socket-path.patch + # Changes the pidfile path from /run/spnavd.pid to $XDG_RUNTIME_DIR/spnavd.pid + # to allow for a user service + ./configure-pidfile-path.patch + # Changes the config file path from /etc/spnavrc to $XDG_CONFIG_HOME/spnavrc or $HOME/.config/spnavrc + # to allow for a user service + ./configure-cfgfile-path.patch + ]; + + buildInputs = [ libX11 ] + ++ lib.optional stdenv.isDarwin IOKit; + + configureFlags = [ "--disable-debug" ]; + + makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ]; + + meta = with lib; { + homepage = "https://spacenav.sourceforge.net/"; + description = "Device driver and SDK for 3Dconnexion 3D input devices"; + longDescription = "A free, compatible alternative, to the proprietary 3Dconnexion device driver and SDK, for their 3D input devices (called 'space navigator', 'space pilot', 'space traveller', etc)"; + license = licenses.gpl3Plus; + platforms = platforms.unix; + maintainers = with maintainers; [ sohalt ]; + }; +} diff --git a/nixpkgs/pkgs/misc/drivers/steamcontroller/default.nix b/nixpkgs/pkgs/misc/drivers/steamcontroller/default.nix new file mode 100644 index 000000000000..50d1133c3820 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/steamcontroller/default.nix @@ -0,0 +1,34 @@ +{ lib, fetchFromGitHub, python3Packages, libusb1, linuxHeaders +}: + +with python3Packages; + +buildPythonApplication { + pname = "steamcontroller"; + version = "2017-08-11"; + + src = fetchFromGitHub { + owner = "ynsta"; + repo = "steamcontroller"; + rev = "80928ce237925e0d0d7a65a45b481435ba6b931e"; + sha256 = "0lv9j2zv8fmkmc0x9r7fa8zac2xrwfczms35qz1nfa1hr84wniid"; + }; + + postPatch = '' + substituteInPlace src/uinput.py --replace \ + "/usr/include" "${linuxHeaders}/include" + ''; + + buildInputs = [ libusb1 ]; + propagatedBuildInputs = [ psutil python3Packages.libusb1 ]; + doCheck = false; + pythonImportsCheck = [ "steamcontroller" ]; + + meta = with lib; { + description = "A standalone Steam controller driver"; + homepage = "https://github.com/ynsta/steamcontroller"; + license = licenses.mit; + maintainers = with maintainers; [ rnhmjoj ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/misc/drivers/sundtek/default.nix b/nixpkgs/pkgs/misc/drivers/sundtek/default.nix new file mode 100644 index 000000000000..da2852e70d56 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/sundtek/default.nix @@ -0,0 +1,53 @@ +{ fetchurl, lib, stdenv }: + +with lib; + +let + version = "2016-01-26"; + rpath = makeLibraryPath [ "$out/lib" "$out/bin" ]; + platform = with stdenv; + if isx86_64 then "64bit" + else + if isi686 then "32bit" + else throw "${system} not considered in build derivation. Might still be supported."; + sha256 = with stdenv; + if isx86_64 then "1jfsng5n3phw5rqpkid9m5j7m7zgj5bifh7swvba7f97y6imdaax" + else "15y6r5w306pcq4g1rn9f7vf70f3a7qhq237ngaf0wxh2nr0aamxp"; + +in + stdenv.mkDerivation { + src = fetchurl { + url = "http://www.sundtek.de/media/netinst/${platform}/installer.tar.gz"; + sha256 = sha256; + }; + pname = "sundtek"; + inherit version; + + sourceRoot = "."; + + installPhase = '' + cp -r opt $out + + # add and fix pkg-config file + mkdir -p $out/lib/pkgconfig + substitute $out/doc/libmedia.pc $out/lib/pkgconfig/libmedia.pc \ + --replace /opt $out + ''; + + postFixup = '' + find $out -type f -exec \ + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" {} \ + patchelf --set-rpath ${rpath} {} \; + ''; + + preferLocalBuild = true; + + meta = { + description = "Sundtek MediaTV driver"; + maintainers = [ maintainers.simonvandel ]; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + platforms = platforms.unix; + license = licenses.unfree; + homepage = "https://support.sundtek.com/index.php/topic,1573.0.html"; + }; + } diff --git a/nixpkgs/pkgs/misc/drivers/utsushi/default.nix b/nixpkgs/pkgs/misc/drivers/utsushi/default.nix new file mode 100644 index 000000000000..e270a21f5d5f --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/utsushi/default.nix @@ -0,0 +1,179 @@ +{ lib, stdenv, writeScriptBin, fetchpatch, fetchFromGitLab, autoreconfHook, pkg-config +, autoconf-archive, libxslt, boost, gtkmm2, imagemagick, sane-backends +, tesseract4, udev, libusb1 +, withNetworkScan ? false, utsushi-networkscan +}: + + +let + fakegit = writeScriptBin "git" '' + #! ${stdenv.shell} -e + if [ "$1" = "describe" ]; then + [ -r .rev ] && cat .rev || true + fi + ''; + +in stdenv.mkDerivation rec { + pname = "imagescan"; + version = "3.65.0"; + + src = fetchFromGitLab { + owner = "utsushi"; + repo = pname; + rev = version; + sha256 = "sha256-CrN9F/WJKmlDN7eozEHtKgGUQBWVwTqwjnrfiATk7lI="; + }; + + patches = [ + (fetchpatch { + url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/media-gfx/iscan/files/iscan-3.63.0-autoconf-2.70.patch?id=4fe8a9e6c60f9163cadad830ba4935c069c67b10"; + sha256 = "sha256-2V4cextjcEQrywe4tvvD5KaVYdXnwdNhTiY/aSNx3mM="; + }) + (fetchpatch { + url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/media-gfx/iscan/files/iscan-3.61.0-imagemagick-7.patch?id=985c92af4730d864e86fa87746185b0246e9db93"; + sha256 = "sha256-dfdVMp3ZfclYeRxYjMIvl+ZdlLn9S+IwQ+OmlHW8318="; + }) + (fetchpatch { + url = "https://raw.githubusercontent.com/archlinux/svntogit-community/b3046e0e78b95440f135fcadb19a9eb531729a58/trunk/boost-1.74.patch"; + sha256 = "sha256-W8R1l7ZPcsfiIy1QBJvh0M8du0w1cnTg3PyAz65v4rE="; + }) + (fetchpatch { + url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/media-gfx/iscan/files/iscan-3.65.0-sane-backends-1.1.patch"; + sha256 = "sha256-AmMZ+/lrUMR7IU+S8MEn0Ji5pqOiD6izFJBsJ0tCCCw="; + }) + ]; + + nativeBuildInputs = [ + autoreconfHook + pkg-config + autoconf-archive + fakegit + libxslt + ]; + + buildInputs = [ + boost.dev + gtkmm2.dev + imagemagick + sane-backends + udev.dev + libusb1.dev + ]; + + env.NIX_CFLAGS_COMPILE = toString [ + "-Wno-error=deprecated-declarations" + "-Wno-error=parentheses" + "-Wno-error=unused-variable" + ]; + + + postPatch = '' + # create fake udev and sane config + mkdir -p $out/etc/{sane.d,udev/rules.d} + touch $out/etc/sane.d/dll.conf + + # absolute paths to convert & tesseract + sed -i '/\[AC_DEFINE(\[HAVE_IMAGE_MAGICK\], \[1\])/a \ MAGICK_CONVERT="${imagemagick}/bin/convert"' configure.ac + substituteInPlace filters/magick.cpp \ + --replace 'convert ' '${imagemagick}/bin/convert ' + substituteInPlace filters/reorient.cpp \ + --replace '"tesseract' '"${tesseract4}/bin/tesseract' + substituteInPlace filters/get-text-orientation \ + --replace '=tesseract' '=${tesseract4}/bin/tesseract' + ''; + + configureFlags = [ + "--with-boost-libdir=${boost}/lib" + "--with-sane-confdir=${placeholder "out"}/etc/sane.d" + "--with-udev-confdir=${placeholder "out"}/etc/udev" + "--with-gtkmm" + "--with-jpeg" + "--with-magick" + "--with-magick-pp" + "--with-sane" + "--with-tiff" + ]; + + installFlags = [ "SANE_BACKENDDIR=${placeholder "out"}/lib/sane" ]; + + enableParallelBuilding = true; + + doInstallCheck = false; + + postInstall = lib.optionalString withNetworkScan '' + ln -s ${utsushi-networkscan}/libexec/utsushi/networkscan $out/libexec/utsushi + ''; + + meta = with lib; { + description = "SANE utsushi backend for some Epson scanners"; + longDescription = '' + ImageScanV3 (aka utsushi) scanner driver. Non-free plugins are not + included, so no network support. To use the SANE backend, in + <literal>/etc/nixos/configuration.nix</literal>: + + <literal> + hardware.sane = { + enable = true; + extraBackends = [ pkgs.utsushi ]; + }; + services.udev.packages = [ pkgs.utsushi ]; + </literal> + + Supported hardware: + DS-1610, DS-1630, DS-1660W, DS-310, DS-320, DS-360W, DS-40, DS-410, + DS-50000, DS-510, DS-520, DS-530, DS-535, DS-535H, DS-5500, DS-560, + DS-570W, DS-575W, DS-60000, DS-6500, DS-70, DS-70000, DS-7500, DS-760, + DS-770, DS-775, DS-780N, DS-80W, DS-860, EC-4020 Series, EC-4030 Series, + EC-4040 Series, EP-10VA Series, EP-30VA Series, EP-708A Series, EP-709A + Series, EP-710A Series, EP-711A Series, EP-712A Series, EP-808A Series, + EP-810A Series, EP-811A Series, EP-812A Series, EP-879A Series, EP-880A + Series, EP-881A Series, EP-882A Series, EP-978A3 Series, EP-979A3 Series, + EP-982A3 Series, EP-M570T Series, ES-200, ES-300W, ES-300WR, ES-400, + ES-50, ES-50, ES-500W, ES-500WR, ES-55R, ES-60W, ES-60WB, ES-60WW, + ES-65WR, ET-16500 Series, ET-2500 Series, ET-2550 Series, ET-2600 Series, + ET-2610 Series, ET-2650 Series, ET-2700 Series, ET-2710 Series, ET-2720 + Series, ET-2750 Series, ET-2760 Series, ET-3600 Series, ET-3700 Series, + ET-3710 Series, ET-3750 Series, ET-3760 Series, ET-4500 Series, ET-4550 + Series, ET-4700 Series, ET-4750 Series, ET-4760 Series, ET-7700 Series, + ET-7750 Series, ET-8700 Series, ET-M2140 Series, ET-M2170 Series, + ET-M3140 Series, ET-M3170 Series, ET-M3180 Series, EW-052A Series, + EW-452A Series, EW-M5071FT Series, EW-M571T Series, EW-M630T Series, + EW-M660FT Series, EW-M670FT Series, EW-M770T Series, EW-M970A3T Series, + FF-640, FF-680W, GT-S650, L1455 Series, L220 Series, L222 Series, L3050 + Series, L3060 Series, L3070 Series, L3100 Series, L3110 Series, L3150 + Series, L3160 Series, L360 Series, L362 Series, L364 Series, L365 Series, + L366 Series, L375 Series, L380 Series, L382 Series, L385 Series, L386 + Series, L395 Series, L396 Series, L405 Series, L4150 Series, L4160 + Series, L455 Series, L475 Series, L485 Series, L486 Series, L495 Series, + L5190 Series, L565 Series, L566 Series, L575 Series, L605 Series, L6160 + Series, L6170 Series, L6190 Series, L655 Series, L7160 Series, L7180 + Series, LX-10000F, LX-10000FK, LX-10010MF, LX-7000F, M2140 Series, M2170 + Series, M3140 Series, M3170 Series, M3180 Series, PX-048A Series, PX-049A + Series, PX-M160T Series, PX-M270FT Series, PX-M270T Series, PX-M380F, + PX-M381FL, PX-M5080F Series, PX-M5081F Series, PX-M680F Series, PX-M7050 + Series, PX-M7050FP, PX-M7050FX, PX-M7070FX, PX-M7110F, PX-M7110FP, + PX-M780F Series, PX-M781F Series, PX-M840FX, PX-M860F, PX-M880FX, + PX-M884F, PX-M885F, PX-M886FL, Perfection V19, Perfection V39, ST-2000 + Series, ST-3000 Series, ST-4000 Series, ST-M3000 Series, WF-2750 Series, + WF-2760 Series, WF-2810 Series, WF-2830 Series, WF-2850 Series, WF-2860 + Series, WF-3720 Series, WF-3730 Series, WF-4720 Series, WF-4730 Series, + WF-4740 Series, WF-6530 Series, WF-6590 Series, WF-7710 Series, WF-7720 + Series, WF-8510 Series, WF-8590 Series, WF-C17590 Series, WF-C20590 + Series, WF-C5710 Series, WF-C5790 Series, WF-C5790BA, WF-C579R Series, + WF-C579RB, WF-C8610 Series, WF-C8690 Series, WF-C8690B, WF-C869R Series, + WF-M20590 Series, WF-M5799 Series, WF-R8590 Series, XP-2100 Series, + XP-220 Series, XP-230 Series, XP-235 Series, XP-240 Series, XP-243 245 + 247 Series, XP-255 257 Series, XP-3100 Series, XP-332 335 Series, XP-340 + Series, XP-342 343 345 Series, XP-352 355 Series, XP-4100 Series, XP-430 + Series, XP-432 435 Series, XP-440 Series, XP-442 445 Series, XP-452 455 + Series, XP-5100 Series, XP-530 Series, XP-540 Series, XP-6000 Series, + XP-6100 Series, XP-630 Series, XP-640 Series, XP-7100 Series, XP-830 + Series, XP-8500 Series, XP-8600 Series, XP-900 Series, XP-960 Series, + XP-970 Series + ''; + homepage = "https://gitlab.com/utsushi/imagescan"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ wucke13 maxwilson ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/misc/drivers/utsushi/networkscan.nix b/nixpkgs/pkgs/misc/drivers/utsushi/networkscan.nix new file mode 100644 index 000000000000..b9aa1cbe904f --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/utsushi/networkscan.nix @@ -0,0 +1,35 @@ +{ lib, stdenv, fetchurl, rpmextract }: + +stdenv.mkDerivation rec { + pname = "imagescan-plugin-networkscan"; + imagescanVersion = "3.65.0"; + version = "1.1.4"; + + src = fetchurl { + urls = [ + "https://buzo.eu/mirror/epson/imagescan-bundle-fedora-32-${imagescanVersion}.x64.rpm.tar.gz" + "https://web.archive.org/web/20221027001620if_/https://download2.ebz.epson.net/imagescanv3/fedora/latest1/rpm/x64/imagescan-bundle-fedora-32-${imagescanVersion}.x64.rpm.tar.gz" + ]; + sha256 = "sha256-fxi63sV+YJOlv1aVTfCPIXOPfNAo+R7zNPvA11sFmMk="; + }; + + nativeBuildInputs = [ rpmextract ]; + + installPhase = '' + rpmextract plugins/imagescan-plugin-networkscan-${version}-*.x86_64.rpm + install -Dm755 usr/libexec/utsushi/networkscan $out/libexec/utsushi/networkscan + patchelf \ + --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ + --set-rpath ${lib.makeLibraryPath [ stdenv.cc.cc ]} \ + $out/libexec/utsushi/networkscan + ''; + + meta = with lib; { + homepage = "https://support.epson.net/linux/en/imagescanv3.php"; + description = "Network scan plugin for ImageScan v3"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = licenses.unfree; + maintainers = with maintainers; [ abbradar ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/nixpkgs/pkgs/misc/drivers/xboxdrv/default.nix b/nixpkgs/pkgs/misc/drivers/xboxdrv/default.nix new file mode 100644 index 000000000000..f81e81ecbea0 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/xboxdrv/default.nix @@ -0,0 +1,44 @@ +{ lib +, stdenv +, fetchFromGitHub +, scons +, libX11 +, pkg-config +, libusb1 +, boost +, glib +, dbus-glib +}: + +stdenv.mkDerivation rec { + pname = "xboxdrv"; + version = "0.8.8"; + + src = fetchFromGitHub { + owner = "xboxdrv"; + repo = "xboxdrv"; + rev = "v${version}"; + hash = "sha256-R0Bt4xfzQA1EmZbf7lcWLwSSUayf5Y711QhlAVhiLrY="; + }; + + makeFlags = [ "PREFIX=$(out)" ]; + nativeBuildInputs = [ pkg-config scons ]; + buildInputs = [ libX11 libusb1 boost glib dbus-glib ]; + enableParallelBuilding = true; + dontUseSconsInstall = true; + + patches = [ + ./fix-60-sec-delay.patch + ./scons-py3.patch + ./scons-v4.2.0.patch + ./xboxdrvctl-py3.patch + ]; + + meta = with lib; { + homepage = "https://xboxdrv.gitlab.io/"; + description = "Xbox/Xbox360 (and more) gamepad driver for Linux that works in userspace"; + license = licenses.gpl3Plus; + maintainers = [ ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/misc/drivers/xboxdrv/fix-60-sec-delay.patch b/nixpkgs/pkgs/misc/drivers/xboxdrv/fix-60-sec-delay.patch new file mode 100644 index 000000000000..da543d2cfa01 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/xboxdrv/fix-60-sec-delay.patch @@ -0,0 +1,27 @@ +From 7326421eeaadbc2aeb3828628c2e65bb7be323a9 Mon Sep 17 00:00:00 2001 +From: buxit <buti@bux.at> +Date: Wed, 2 Nov 2016 16:25:14 +0100 +Subject: [PATCH] fix 60 seconds delay + +use `libusb_handle_events_timeout_completed()` instead of `libusb_handle_events()` +should fix #144 +--- + src/usb_gsource.cpp | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/src/usb_gsource.cpp b/src/usb_gsource.cpp +index 00bf1315..afb38f65 100644 +--- a/src/usb_gsource.cpp ++++ b/src/usb_gsource.cpp +@@ -174,7 +174,10 @@ USBGSource::on_source_dispatch(GSource* source, GSourceFunc callback, gpointer u + gboolean + USBGSource::on_source() + { +- libusb_handle_events(NULL); ++ struct timeval to; ++ to.tv_sec = 0; ++ to.tv_usec = 0; ++ libusb_handle_events_timeout_completed(NULL, &to, NULL); + return TRUE; + } + diff --git a/nixpkgs/pkgs/misc/drivers/xboxdrv/scons-py3.patch b/nixpkgs/pkgs/misc/drivers/xboxdrv/scons-py3.patch new file mode 100644 index 000000000000..4aa6fa619317 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/xboxdrv/scons-py3.patch @@ -0,0 +1,63 @@ +From 17bd43a7d3ef86216abc36b42b4e6a1f70aa9979 Mon Sep 17 00:00:00 2001 +From: xnick <xnick@users.noreply.github.com> +Date: Thu, 12 Oct 2017 20:34:35 +0300 +Subject: [PATCH] Update SConstruct + +python3 compatible +--- + SConstruct | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/SConstruct b/SConstruct +index 4cd79704..c0007054 100644 +--- a/SConstruct ++++ b/SConstruct +@@ -19,7 +19,7 @@ def build_dbus_glue(target, source, env): + xml = re.sub(r"callback = \(([A-Za-z_]+)\) \(marshal_data \? marshal_data : cc->callback\);", + r"union { \1 fn; void* obj; } conv;\n " + "conv.obj = (marshal_data ? marshal_data : cc->callback);\n " +- "callback = conv.fn;", xml) ++ "callback = conv.fn;", xml.decode('utf-8')) + + with open(target[0].get_path(), "w") as f: + f.write(xml) +@@ -29,10 +29,10 @@ def build_bin2h(target, source, env): + Takes a list of files and converts them into a C source that can be included + """ + def c_escape(str): +- return str.translate(string.maketrans("/.-", "___")) ++ return str.translate(bytes.maketrans(b"/.-", b"___")) + +- print target +- print source ++ print(target) ++ print(source) + with open(target[0].get_path(), "w") as fout: + fout.write("// autogenerated by scons Bin2H builder, do not edit by hand!\n\n") + +@@ -45,8 +45,8 @@ def build_bin2h(target, source, env): + data = fin.read() + fout.write("// \"%s\"\n" % src.get_path()) + fout.write("const char %s[] = {" % c_escape(src.get_path())) +- bytes_arr = ["0x%02x" % ord(c) for c in data] +- for i in xrange(len(bytes_arr)): ++ bytes_arr = ["0x%02x" % c for c in data] ++ for i in range(len(bytes_arr)): + if i % 13 == 0: + fout.write("\n ") + fout.write(bytes_arr[i]) +@@ -131,12 +131,12 @@ env.Append(CPPDEFINES = { 'PACKAGE_VERSION': "'\"%s\"'" % package_version }) + conf = Configure(env) + + if not conf.env['CXX']: +- print "g++ must be installed!" ++ print('g++ must be installed!') + Exit(1) + + # X11 checks + if not conf.CheckLibWithHeader('X11', 'X11/Xlib.h', 'C++'): +- print 'libx11-dev must be installed!' ++ print('libx11-dev must be installed!') + Exit(1) + + env = conf.Finish() diff --git a/nixpkgs/pkgs/misc/drivers/xboxdrv/scons-v4.2.0.patch b/nixpkgs/pkgs/misc/drivers/xboxdrv/scons-v4.2.0.patch new file mode 100644 index 000000000000..04b05e8d6ffc --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/xboxdrv/scons-v4.2.0.patch @@ -0,0 +1,20 @@ +--- a/SConstruct 2021-10-31 20:42:44.232084185 -0400 ++++ b/SConstruct 2021-10-31 20:42:54.063024444 -0400 +@@ -36,7 +36,7 @@ + with open(target[0].get_path(), "w") as fout: + fout.write("// autogenerated by scons Bin2H builder, do not edit by hand!\n\n") + +- if env.has_key("BIN2H_NAMESPACE"): ++ if "BIN2H_NAMESPACE" in env: + fout.write("namespace %s {\n\n" % env["BIN2H_NAMESPACE"]) + + # write down data +@@ -62,7 +62,7 @@ + for src in source], ",\n")) + fout.write("\n}\n\n") + +- if env.has_key("BIN2H_NAMESPACE"): ++ if "BIN2H_NAMESPACE" in env: + fout.write("} // namespace %s\n\n" % env["BIN2H_NAMESPACE"]) + + fout.write("/* EOF */\n") diff --git a/nixpkgs/pkgs/misc/drivers/xboxdrv/xboxdrvctl-py3.patch b/nixpkgs/pkgs/misc/drivers/xboxdrv/xboxdrvctl-py3.patch new file mode 100644 index 000000000000..71d8762cb9ca --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/xboxdrv/xboxdrvctl-py3.patch @@ -0,0 +1,73 @@ +--- a/xboxdrvctl 2021-06-21 19:39:51.000000000 -0400 ++++ b/xboxdrvctl 19:43:27.467984928 -0400 +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python2 ++#!/usr/bin/env python3 + + ## Xbox360 USB Gamepad Userspace Driver + ## Copyright (C) 2011 Ingo Ruhnke <grumbel@gmail.com> +@@ -37,23 +37,23 @@ + help="print controller status") + + group.add_option("-s", "--slot", metavar="SLOT", type="int", +- dest="slot", ++ dest="slot", + help="use slot SLOT for actions") + + group.add_option("-l", "--led", metavar="NUM", type="int", +- dest="led", ++ dest="led", + help="set LED") + +-group.add_option("-r", "--rumble", metavar="L:R", +- dest="rumble", ++group.add_option("-r", "--rumble", metavar="L:R", ++ dest="rumble", + help="print controller status") + + group.add_option("-c", "--config", metavar="NUM", type="int", +- dest="config", ++ dest="config", + help="switches to controller configuration NUM") + + group.add_option("--shutdown", action="store_true", +- dest="shutdown", ++ dest="shutdown", + help="shuts down the daemon") + + parser.add_option_group(group) +@@ -69,9 +69,9 @@ + try: + bus.get_object("org.seul.Xboxdrv", '/org/seul/Xboxdrv/Daemon') + except dbus.exceptions.DBusException: +- bus = dbus.SystemBus() ++ bus = dbus.SystemBus() + else: +- print "Error: invalid argument to --bus. Must be 'auto', 'session, or 'system'" ++ print("Error: invalid argument to --bus. Must be 'auto', 'session, or 'system'") + exit() + + if options.status: +@@ -82,19 +82,19 @@ + daemon.Shutdown() + else: + if (options.led or options.rumble or options.config) and options.slot == None: +- print "Error: --slot argument required" ++ print("Error: --slot argument required") + exit() + else: + if options.slot != None: + slot = bus.get_object("org.seul.Xboxdrv", '/org/seul/Xboxdrv/ControllerSlots/%d' % options.slot) +- ++ + if options.led != None: + slot.SetLed(options.led) + + if options.rumble: + m = re.match('^(\d+):(\d+)$', options.rumble) + if not m: +- print "Error: invalid argument to --rumble" ++ print("Error: invalid argument to --rumble") + exit() + else: + left = int(m.group(1)) diff --git a/nixpkgs/pkgs/misc/drivers/xwiimote/default.nix b/nixpkgs/pkgs/misc/drivers/xwiimote/default.nix new file mode 100644 index 000000000000..69ffcdd78865 --- /dev/null +++ b/nixpkgs/pkgs/misc/drivers/xwiimote/default.nix @@ -0,0 +1,28 @@ +{ lib, stdenv, udev, ncurses, pkg-config, fetchurl, bluez }: + +stdenv.mkDerivation rec { + pname = "xwiimote"; + version = "2"; + + src = fetchurl { + url = "https://github.com/dvdhrm/xwiimote/releases/download/xwiimote-${version}/xwiimote-${version}.tar.xz"; + sha256 = "1g9cbhblll47l300zr999xr51x2g98y49l222f77fhswd12kjzhd"; + }; + + nativeBuildInputs = [ pkg-config ]; + buildInputs = [ udev ncurses bluez ]; + + configureFlags = [ "--with-doxygen=no" ]; + + meta = { + homepage = "https://dvdhrm.github.io/xwiimote"; + description = "Userspace utilities to control connected Nintendo Wii Remotes"; + platforms = lib.platforms.linux; + license = lib.licenses.mit; + }; + + postInstallPhase = '' + mkdir -p "$out/etc/X11/xorg.conf.d/" + cp "res/50-xorg-fix-xwiimote.conf" "$out/etc/X11/xorg.conf.d/50-fix-xwiimote.conf" + ''; +} diff --git a/nixpkgs/pkgs/misc/dumb/default.nix b/nixpkgs/pkgs/misc/dumb/default.nix new file mode 100644 index 000000000000..f80dea534a67 --- /dev/null +++ b/nixpkgs/pkgs/misc/dumb/default.nix @@ -0,0 +1,28 @@ +{ lib, stdenv, fetchFromGitHub, cmake, allegro, SDL2 }: + +stdenv.mkDerivation rec { + pname = "dumb"; + version = "2.0.3"; + + nativeBuildInputs = [ cmake ]; + buildInputs = [ allegro SDL2 ]; + + src = fetchFromGitHub { + owner = "kode54"; + repo = "dumb"; + rev = version; + sha256 = "1cnq6rb14d4yllr0yi32p9jmcig8avs3f43bvdjrx4r1mpawspi6"; + }; + + cmakeFlags = [ + "-DBUILD_EXAMPLES='OFF'" + ]; + + meta = with lib; { + homepage = "https://github.com/kode54/dumb"; + description = "Module/tracker based music format parser and player library"; + license = licenses.free; # Derivative of GPL + maintainers = with maintainers; [ Madouura ]; + platforms = platforms.all; + }; +} diff --git a/nixpkgs/pkgs/misc/fastly/default.nix b/nixpkgs/pkgs/misc/fastly/default.nix new file mode 100644 index 000000000000..b5a19d30b523 --- /dev/null +++ b/nixpkgs/pkgs/misc/fastly/default.nix @@ -0,0 +1,83 @@ +{ lib +, fetchurl +, fetchFromGitHub +, installShellFiles +, buildGoModule +, go +, makeWrapper +, viceroy +}: + +buildGoModule rec { + pname = "fastly"; + version = "10.7.0"; + + src = fetchFromGitHub { + owner = "fastly"; + repo = "cli"; + rev = "refs/tags/v${version}"; + hash = "sha256-KqFBsSoiKzvbSG5XanlFcU8NkveksnEbfqNuPeWEb48="; + # The git commit is part of the `fastly version` original output; + # leave that output the same in nixpkgs. Use the `.git` directory + # to retrieve the commit SHA, and remove the directory afterwards, + # since it is not needed after that. + leaveDotGit = true; + postFetch = '' + cd "$out" + git rev-parse --short HEAD > $out/COMMIT + find "$out" -name .git -print0 | xargs -0 rm -rf + ''; + }; + + subPackages = [ + "cmd/fastly" + ]; + + vendorHash = "sha256-Mh737emdQkIoNOAkaTafCoMQnLqXIGMKX6X5ClsmMzc="; + + nativeBuildInputs = [ + installShellFiles + makeWrapper + ]; + + # Flags as provided by the build automation of the project: + # https://github.com/fastly/cli/blob/7844f9f54d56f8326962112b5534e5c40e91bf09/.goreleaser.yml#L14-L18 + ldflags = [ + "-s" + "-w" + "-X github.com/fastly/cli/pkg/revision.AppVersion=v${version}" + "-X github.com/fastly/cli/pkg/revision.Environment=release" + "-X github.com/fastly/cli/pkg/revision.GoHostOS=${go.GOHOSTOS}" + "-X github.com/fastly/cli/pkg/revision.GoHostArch=${go.GOHOSTARCH}" + ]; + preBuild = let + cliConfigToml = fetchurl { + url = "https://web.archive.org/web/20231130153524/https://developer.fastly.com/api/internal/cli-config"; + hash = "sha256-ZKr6D4DI+lr8FDjfLMgpn4Zq4i5kiwcLEDEScuuCBBw="; + }; + in '' + cp ${cliConfigToml} ./pkg/config/config.toml + ldflags+=" -X github.com/fastly/cli/pkg/revision.GitCommit=$(cat COMMIT)" + ''; + + preFixup = '' + wrapProgram $out/bin/fastly --prefix PATH : ${lib.makeBinPath [ viceroy ]} \ + --set FASTLY_VICEROY_USE_PATH 1 + ''; + + postInstall = '' + export HOME="$(mktemp -d)" + installShellCompletion --cmd fastly \ + --bash <($out/bin/fastly --completion-script-bash) \ + --zsh <($out/bin/fastly --completion-script-zsh) + ''; + + meta = with lib; { + description = "Command line tool for interacting with the Fastly API"; + homepage = "https://github.com/fastly/cli"; + changelog = "https://github.com/fastly/cli/blob/v${version}/CHANGELOG.md"; + license = licenses.asl20; + maintainers = with maintainers; [ ereslibre shyim ]; + mainProgram = "fastly"; + }; +} diff --git a/nixpkgs/pkgs/misc/flashfocus/default.nix b/nixpkgs/pkgs/misc/flashfocus/default.nix new file mode 100644 index 000000000000..753f82f6bd44 --- /dev/null +++ b/nixpkgs/pkgs/misc/flashfocus/default.nix @@ -0,0 +1,53 @@ +{ lib, python3Packages, fetchPypi, netcat-openbsd, nix-update-script }: + +python3Packages.buildPythonApplication rec { + pname = "flashfocus"; + version = "2.4.1"; + + format = "pyproject"; + + src = fetchPypi { + inherit pname version; + sha256 = "sha256-O6jRQ6e96b8CuumTD6TGELaz26No7WFZgGSnNSlqzuE="; + }; + + postPatch = '' + substituteInPlace bin/nc_flash_window \ + --replace "nc" "${lib.getExe netcat-openbsd}" + ''; + + nativeBuildInputs = with python3Packages; [ + pythonRelaxDepsHook + setuptools + ]; + + pythonRelaxDeps = [ + "pyyaml" + "xcffib" + ]; + + propagatedBuildInputs = with python3Packages; [ + i3ipc + xcffib + click + cffi + xpybutil + marshmallow + pyyaml + ]; + + # Tests require access to a X session + doCheck = false; + + pythonImportsCheck = [ "flashfocus" ]; + + passthru.updateScript = nix-update-script { }; + + meta = with lib; { + homepage = "https://github.com/fennerm/flashfocus"; + description = "Simple focus animations for tiling window managers"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ artturin ]; + }; +} diff --git a/nixpkgs/pkgs/misc/frescobaldi/default.nix b/nixpkgs/pkgs/misc/frescobaldi/default.nix new file mode 100644 index 000000000000..32bf18af1940 --- /dev/null +++ b/nixpkgs/pkgs/misc/frescobaldi/default.nix @@ -0,0 +1,62 @@ +{ lib, stdenv, buildPythonApplication, fetchFromGitHub, python3Packages, pyqtwebengine, lilypond }: + +buildPythonApplication rec { + pname = "frescobaldi"; + version = "3.2"; + + src = fetchFromGitHub { + owner = "wbsoft"; + repo = "frescobaldi"; + rev = "v${version}"; + sha256 = "sha256-q340ChF7VZcbLMW/nd1so7WScsPfbdeJUjTzsY5dkec="; + }; + + propagatedBuildInputs = with python3Packages; [ + qpageview + lilypond + pygame + python-ly + sip4 + pyqt5 + poppler-qt5 + pyqtwebengine + ]; + + nativeBuildInputs = [ pyqtwebengine.wrapQtAppsHook ]; + + # Needed because source is fetched from git + preBuild = '' + make -C i18n + make -C linux + ''; + + # no tests in shipped with upstream + doCheck = false; + + dontWrapQtApps = true; + makeWrapperArgs = [ + "\${qtWrapperArgs[@]}" + ]; + + meta = with lib; { + homepage = "https://frescobaldi.org/"; + description = "A LilyPond sheet music text editor"; + longDescription = '' + Powerful text editor with syntax highlighting and automatic completion, + Music view with advanced Point & Click, Midi player to proof-listen + LilyPond-generated MIDI files, Midi capturing to enter music, + Powerful Score Wizard to quickly setup a music score, Snippet Manager + to store and apply text snippets, templates or scripts, Use multiple + versions of LilyPond, automatically selects the correct version, Built-in + LilyPond documentation browser and built-in User Guide, Smart + layout-control functions like coloring specific objects in the PDF, + MusicXML import, Modern user iterface with configurable colors, + fonts and keyboard shortcuts + ''; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ sepi ]; + platforms = platforms.all; + broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/trunk/frescobaldi.x86_64-darwin + mainProgram = "frescobaldi"; + }; +} diff --git a/nixpkgs/pkgs/misc/g810-led/default.nix b/nixpkgs/pkgs/misc/g810-led/default.nix new file mode 100644 index 000000000000..5f1c7e1fdae1 --- /dev/null +++ b/nixpkgs/pkgs/misc/g810-led/default.nix @@ -0,0 +1,54 @@ +{ lib +, stdenv +, fetchFromGitHub +, hidapi +, profile ? "/etc/g810-led/profile" +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "g810-led"; + version = "0.4.3"; + + src = fetchFromGitHub { + owner = "MatMoul"; + repo = "g810-led"; + rev = "refs/tags/v${finalAttrs.version}"; + hash = "sha256-GKHtQ7DinqfhclDdPO94KtTLQhhonAoWS4VOvs6CMhY="; + }; + + postPatch = '' + substituteInPlace udev/g810-led.rules \ + --replace "/usr" $out \ + --replace "/etc/g810-led/profile" "${profile}" + ''; + + # GCC 13 cannot find `uint16_t` and other similar types by default anymore + env.CXXFLAGS = "-include cstdint"; + + buildInputs = [ + hidapi + ]; + + installPhase = '' + runHook preInstall + + install -D bin/g810-led $out/bin/g810-led + + # See https://github.com/MatMoul/g810-led#compatible-keyboards- + for keyboard in {g213,g410,g413,g512,g513,g610,g815,g910,gpro}; do + ln -s \./g810-led $out/bin/$keyboard-led + done + + install -D udev/g810-led.rules $out/etc/udev/rules.d/90-g810-led.rules + + runHook postInstall + ''; + + meta = with lib; { + description = "Linux LED controller for some Logitech G Keyboards"; + homepage = "https://github.com/MatMoul/g810-led"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ fab ]; + platforms = platforms.linux; + }; +}) diff --git a/nixpkgs/pkgs/misc/ghostscript/default.nix b/nixpkgs/pkgs/misc/ghostscript/default.nix new file mode 100644 index 000000000000..daf7758b1184 --- /dev/null +++ b/nixpkgs/pkgs/misc/ghostscript/default.nix @@ -0,0 +1,196 @@ +{ config +, stdenv +, lib +, fetchurl +, pkg-config +, zlib +, expat +, openssl +, autoconf +, libjpeg +, libpng +, libtiff +, freetype +, fontconfig +, libpaper +, jbig2dec +, libiconv +, ijs +, lcms2 +, callPackage +, bash +, buildPackages +, openjpeg +, cupsSupport ? config.ghostscript.cups or (!stdenv.isDarwin) +, cups +, x11Support ? cupsSupport +, xorg # with CUPS, X11 only adds very little +, dynamicDrivers ? true + +# for passthru.tests +, graphicsmagick +, imagemagick +, libspectre +, lilypond +, pstoedit +, python3 +}: + +let + fonts = stdenv.mkDerivation { + name = "ghostscript-fonts"; + + srcs = [ + (fetchurl { + url = "mirror://sourceforge/gs-fonts/ghostscript-fonts-std-8.11.tar.gz"; + sha256 = "00f4l10xd826kak51wsmaz69szzm2wp8a41jasr4jblz25bg7dhf"; + }) + (fetchurl { + url = "mirror://gnu/ghostscript/gnu-gs-fonts-other-6.0.tar.gz"; + sha256 = "1cxaah3r52qq152bbkiyj2f7dx1rf38vsihlhjmrvzlr8v6cqil1"; + }) + # ... add other fonts here + ]; + + installPhase = '' + mkdir "$out" + mv -v * "$out/" + ''; + }; + +in +stdenv.mkDerivation rec { + pname = "ghostscript${lib.optionalString x11Support "-with-X"}"; + version = "10.02.1"; + + src = fetchurl { + url = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs${lib.replaceStrings ["."] [""] version}/ghostscript-${version}.tar.xz"; + hash = "sha512-7g91TBvYoYQorRTqo+rYD/i5YnWvUBLnqDhPHxBJDaBW7smuPMeRp6E6JOFuVN9bzN0QnH1ToUU0u9c2CjALEQ="; + }; + + patches = [ + ./urw-font-files.patch + ./doc-no-ref.diff + ]; + + outputs = [ "out" "man" "doc" ]; + + enableParallelBuilding = true; + + depsBuildBuild = [ + buildPackages.stdenv.cc + ]; + + nativeBuildInputs = [ pkg-config autoconf zlib ] + ++ lib.optional cupsSupport cups; + + buildInputs = [ + zlib expat openssl + libjpeg libpng libtiff freetype fontconfig libpaper jbig2dec + libiconv ijs lcms2 bash openjpeg + ] + ++ lib.optionals x11Support [ xorg.libICE xorg.libX11 xorg.libXext xorg.libXt ] + ++ lib.optional cupsSupport cups + ; + + preConfigure = '' + # https://ghostscript.com/doc/current/Make.htm + export CCAUX=$CC_FOR_BUILD + ${lib.optionalString cupsSupport ''export CUPSCONFIG="${cups.dev}/bin/cups-config"''} + + rm -rf jpeg libpng zlib jasper expat tiff lcms2mt jbig2dec freetype cups/libs ijs openjpeg + + sed "s@if ( test -f \$(INCLUDE)[^ ]* )@if ( true )@; s@INCLUDE=/usr/include@INCLUDE=/no-such-path@" -i base/unix-aux.mak + sed "s@^ZLIBDIR=.*@ZLIBDIR=${zlib.dev}/include@" -i configure.ac + + autoconf + ''; + + configureFlags = [ + "--with-system-libtiff" + "--without-tesseract" + ] ++ lib.optionals dynamicDrivers [ + "--enable-dynamic" + "--disable-hidden-visibility" + ] ++ lib.optionals x11Support [ + "--with-x" + ] ++ lib.optionals cupsSupport [ + "--enable-cups" + ]; + + # make check does nothing useful + doCheck = false; + + # don't build/install statically linked bin/gs + buildFlags = [ "so" ] + # without -headerpad, the following error occurs on Darwin when compiling with X11 support (as of 10.02.0) + # error: install_name_tool: changing install names or rpaths can't be redone for: [...]libgs.dylib.10 (the program must be relinked, and you may need to use -headerpad or -headerpad_max_install_names) + ++ lib.optional (x11Support && stdenv.isDarwin) "LDFLAGS=-headerpad_max_install_names"; + installTargets = [ "soinstall" ]; + + postInstall = '' + ln -s gsc "$out"/bin/gs + + cp -r Resource "$out/share/ghostscript/${version}" + + ln -s "${fonts}" "$out/share/ghostscript/fonts" + '' + lib.optionalString stdenv.isDarwin '' + for file in $out/lib/*.dylib* ; do + install_name_tool -id "$file" $file + done + ''; + + # dynamic library name only contains maj.min, eg. '9.53' + dylib_version = lib.versions.majorMinor version; + preFixup = lib.optionalString stdenv.isDarwin '' + install_name_tool -change libgs.dylib.$dylib_version $out/lib/libgs.dylib.$dylib_version $out/bin/gs + install_name_tool -change libgs.dylib.$dylib_version $out/lib/libgs.dylib.$dylib_version $out/bin/gsx + ''; + + # validate dynamic linkage + doInstallCheck = true; + installCheckPhase = '' + runHook preInstallCheck + + $out/bin/gs --version + $out/bin/gsx --version + pushd examples + for f in *.{ps,eps,pdf}; do + echo "Rendering $f" + $out/bin/gs \ + -dNOPAUSE \ + -dBATCH \ + -sDEVICE=bitcmyk \ + -sOutputFile=/dev/null \ + -r600 \ + -dBufferSpace=100000 \ + $f + done + popd # examples + + runHook postInstallCheck + ''; + + passthru.tests = { + test-corpus-render = callPackage ./test-corpus-render.nix {}; + inherit graphicsmagick imagemagick libspectre lilypond pstoedit; + inherit (python3.pkgs) matplotlib; + }; + + meta = { + homepage = "https://www.ghostscript.com/"; + description = "PostScript interpreter (mainline version)"; + longDescription = '' + Ghostscript is the name of a set of tools that provides (i) an + interpreter for the PostScript language and the PDF file format, + (ii) a set of C procedures (the Ghostscript library) that + implement the graphics capabilities that appear as primitive + operations in the PostScript language, and (iii) a wide variety + of output drivers for various file formats and printers. + ''; + license = lib.licenses.agpl3; + platforms = lib.platforms.all; + maintainers = [ lib.maintainers.viric ]; + mainProgram = "gs"; + }; +} diff --git a/nixpkgs/pkgs/misc/ghostscript/doc-no-ref.diff b/nixpkgs/pkgs/misc/ghostscript/doc-no-ref.diff new file mode 100644 index 000000000000..7380ba2f9953 --- /dev/null +++ b/nixpkgs/pkgs/misc/ghostscript/doc-no-ref.diff @@ -0,0 +1,7 @@ +Kill the reference from libgc.so to the documentation directory. +It's bad for closure, and probably not really good for anything. +--- a/base/gs.mak ++++ b/base/gs.mak +@@ -538,1 +538,1 @@ +- $(EXP)$(ECHOGS_XE) -a $(gconfigd_h) -x 23 define -s -u GS_DOCDIR -x 2022 $(GS_DOCDIR) -x 22 ++ $(EXP)$(ECHOGS_XE) -a $(gconfigd_h) -x 23 define -s -u GS_DOCDIR -x 2022 /no-path-to-docs -x 22 diff --git a/nixpkgs/pkgs/misc/ghostscript/test-corpus-render.nix b/nixpkgs/pkgs/misc/ghostscript/test-corpus-render.nix new file mode 100644 index 000000000000..089661293c25 --- /dev/null +++ b/nixpkgs/pkgs/misc/ghostscript/test-corpus-render.nix @@ -0,0 +1,37 @@ +{ stdenv +, fetchgit +, ghostscript +}: + +stdenv.mkDerivation { + pname = "ghostscript-test-corpus-render"; + version = "unstable-2023-05-19"; + + src = fetchgit { + url = "git://git.ghostscript.com/tests.git"; + rev = "f7d5087d3d6c236707842dcd428818c6cb8fb041"; + hash = "sha256-xHOEo1ZJG1GCcEKqaXLDpfRRQxpbSy0bzicKju9hG40="; + }; + + dontConfigure = true; + dontBuild = true; + + doCheck = true; + checkPhase = '' + find . -iregex '.*\.\(ps\|eps\|pdf\)' | while read f; do + echo "Rendering $f" + ${ghostscript}/bin/gs \ + -dNOPAUSE \ + -dBATCH \ + -sDEVICE=bitcmyk \ + -sOutputFile=/dev/null \ + -r600 \ + -dBufferSpace=100000 \ + $f + done + ''; + + installPhase = '' + touch $out + ''; +} diff --git a/nixpkgs/pkgs/misc/ghostscript/urw-font-files.patch b/nixpkgs/pkgs/misc/ghostscript/urw-font-files.patch new file mode 100644 index 000000000000..9a4aab0bbbef --- /dev/null +++ b/nixpkgs/pkgs/misc/ghostscript/urw-font-files.patch @@ -0,0 +1,61 @@ +Sometime between 8.62 and 8.64, the fontmap file was changed such that the +`.pfb' files of the URW++ fonts no longer appear in 8.64, making it impossible +to display/render these fonts. + +--- gnu-ghostscript-8.64/Resource/Init/Fontmap.GS 2009-05-27 02:19:02.000000000 +0200 ++++ gnu-ghostscript-8.62/Resource/Init/Fontmap.GS 2009-05-27 02:19:09.000000000 +0200 +@@ -81,6 +81,54 @@ + % Copyright URW Software, Copyright 1994 by URW. + % + ++% Actual fonts ++ ++/URWBookmanL-DemiBold (b018015l.pfb) ; ++/URWBookmanL-DemiBoldItal (b018035l.pfb) ; ++/URWBookmanL-Ligh (b018012l.pfb) ; ++/URWBookmanL-LighItal (b018032l.pfb) ; ++ ++/NimbusMonL-Regu (n022003l.pfb) ; ++/NimbusMonL-ReguObli (n022023l.pfb) ; ++/NimbusMonL-Bold (n022004l.pfb) ; ++/NimbusMonL-BoldObli (n022024l.pfb) ; ++ ++/URWGothicL-Book (a010013l.pfb) ; ++/URWGothicL-BookObli (a010033l.pfb) ; ++/URWGothicL-Demi (a010015l.pfb) ; ++/URWGothicL-DemiObli (a010035l.pfb) ; ++ ++/NimbusSanL-Regu (n019003l.pfb) ; ++/NimbusSanL-ReguItal (n019023l.pfb) ; ++/NimbusSanL-Bold (n019004l.pfb) ; ++/NimbusSanL-BoldItal (n019024l.pfb) ; ++ ++/NimbusSanL-ReguCond (n019043l.pfb) ; ++/NimbusSanL-ReguCondItal (n019063l.pfb) ; ++/NimbusSanL-BoldCond (n019044l.pfb) ; ++/NimbusSanL-BoldCondItal (n019064l.pfb) ; ++ ++/URWPalladioL-Roma (p052003l.pfb) ; ++/URWPalladioL-Ital (p052023l.pfb) ; ++/URWPalladioL-Bold (p052004l.pfb) ; ++/URWPalladioL-BoldItal (p052024l.pfb) ; ++ ++/CenturySchL-Roma (c059013l.pfb) ; ++/CenturySchL-Ital (c059033l.pfb) ; ++/CenturySchL-Bold (c059016l.pfb) ; ++/CenturySchL-BoldItal (c059036l.pfb) ; ++ ++/NimbusRomNo9L-Regu (n021003l.pfb) ; ++/NimbusRomNo9L-ReguItal (n021023l.pfb) ; ++/NimbusRomNo9L-Medi (n021004l.pfb) ; ++/NimbusRomNo9L-MediItal (n021024l.pfb) ; ++ ++/StandardSymL (s050000l.pfb) ; ++ ++/URWChanceryL-MediItal (z003034l.pfb) ; ++ ++/Dingbats (d050000l.pfb) ; ++ + % Aliases + + /Bookman-Demi /URWBookmanL-DemiBold ; diff --git a/nixpkgs/pkgs/misc/gnu-shepherd/default.nix b/nixpkgs/pkgs/misc/gnu-shepherd/default.nix new file mode 100644 index 000000000000..66f47a8f6ffb --- /dev/null +++ b/nixpkgs/pkgs/misc/gnu-shepherd/default.nix @@ -0,0 +1,24 @@ +{ stdenv, lib, fetchurl, guile, pkg-config, guile-fibers }: + +stdenv.mkDerivation rec { + pname = "gnu-shepherd"; + version = "0.9.3"; + + src = fetchurl { + url = "mirror://gnu/shepherd/shepherd-${version}.tar.gz"; + sha256 = "0qy2yq13xhf05an5ilz7grighdxicx56211yaarqq5qigiiybc32"; + }; + + configureFlags = [ "--localstatedir=/" ]; + + buildInputs = [ guile guile-fibers ]; + nativeBuildInputs = [ pkg-config ]; + + meta = with lib; { + homepage = "https://www.gnu.org/software/shepherd/"; + description = "Service manager that looks after the herd of system services"; + license = with licenses; [ gpl3Plus ]; + platforms = platforms.unix; + maintainers = with maintainers; [ kloenk ]; + }; +} diff --git a/nixpkgs/pkgs/misc/gnuk/default.nix b/nixpkgs/pkgs/misc/gnuk/default.nix new file mode 100644 index 000000000000..afef861c0dc4 --- /dev/null +++ b/nixpkgs/pkgs/misc/gnuk/default.nix @@ -0,0 +1,11 @@ +{ callPackage, fetchgit, ... } @ args: + +callPackage ./generic.nix (args // { + version = "1.2.14"; + + src = fetchgit { + url = "git://git.gniibe.org/gnuk/gnuk.git"; + rev = "177ef67edfa2306c2a369a037362385c354083e1"; + sha256 = "16wa3xsaq4r8caw6c24hnv4j78bklacix4in2y66j35h68ggr3j1"; + }; +}) diff --git a/nixpkgs/pkgs/misc/gnuk/generic.nix b/nixpkgs/pkgs/misc/gnuk/generic.nix new file mode 100644 index 000000000000..2556ff42308f --- /dev/null +++ b/nixpkgs/pkgs/misc/gnuk/generic.nix @@ -0,0 +1,52 @@ +{ lib, stdenv, gcc-arm-embedded, binutils-arm-embedded, makeWrapper +, python3Packages + +# Extra options +, device ? "fsij", vid ? "234b", pid ? "0000" + +# Version specific options +, version, src +, ... +}: + +stdenv.mkDerivation { + pname = "gnuk-${device}"; + + inherit version src; + + nativeBuildInputs = [ gcc-arm-embedded binutils-arm-embedded makeWrapper ]; + buildInputs = with python3Packages; [ python pyusb colorama ]; + + configurePhase = '' + cd src + patchShebangs configure + ./configure --vidpid=${vid}:${pid} + ''; + + installPhase = '' + mkdir -p $out/bin + + find . -name gnuk.bin -exec cp {} $out \; + + #sed -i 's,Exception as e,IOError as e,' ../tool/stlinkv2.py + sed -i ../tool/stlinkv2.py \ + -e "1a import array" \ + -e "s,\(data_received =\) (),\1 array.array('B'),g" \ + -e "s,\(data_received\) = data_received + \(.*\),\1.extend(\2),g" + cp ../tool/stlinkv2.py $out/bin/stlinkv2 + wrapProgram $out/bin/stlinkv2 --prefix PYTHONPATH : "$PYTHONPATH" + + # Some useful helpers + echo "#! ${stdenv.shell} -e" | tee $out/bin/{unlock,flash} + echo "$out/bin/stlinkv2 -u \$@" >> $out/bin/unlock + echo "$out/bin/stlinkv2 -b \$@ $out/gnuk.bin" >> $out/bin/flash + chmod +x $out/bin/{unlock,flash} + ''; + + meta = with lib; { + homepage = "https://www.fsij.org/doc-gnuk/"; + description = "An implementation of USB cryptographic token for gpg"; + license = licenses.gpl3; + platforms = with platforms; linux; + }; +} diff --git a/nixpkgs/pkgs/misc/hdt/default.nix b/nixpkgs/pkgs/misc/hdt/default.nix new file mode 100644 index 000000000000..e7c46d78588d --- /dev/null +++ b/nixpkgs/pkgs/misc/hdt/default.nix @@ -0,0 +1,37 @@ +{ lib, stdenv, fetchFromGitHub, fetchpatch, autoreconfHook, libtool, pkg-config, zlib, serd }: + +stdenv.mkDerivation rec { + pname = "hdt"; + version = "1.3.3"; + + src = fetchFromGitHub { + owner = "rdfhdt"; + repo = "hdt-cpp"; + rev = "v${version}"; + sha256 = "1vsq80jnix6cy78ayag7v8ajyw7h8dqyad1q6xkf2hzz3skvr34z"; + }; + + patches = [ + # Pull fix for gcc-13 compatibility pending upstream inclusion: + # https://github.com/rdfhdt/hdt-cpp/pull/276 + (fetchpatch { + name = "gcc-13.patch"; + url = "https://github.com/rdfhdt/hdt-cpp/commit/1b775835c6661c67cb18f5d6f65638ba7d4ecf3c.patch"; + hash = "sha256-2ppcA+Ztw5G/buW2cwCNbuGeUuvgvSruW3OarWNCIHI="; + }) + ]; + + buildInputs = [ zlib serd ]; + + nativeBuildInputs = [ autoreconfHook libtool pkg-config ]; + + enableParallelBuilding = true; + + meta = with lib; { + homepage = "http://www.rdfhdt.org/"; + description = "Header Dictionary Triples (HDT) is a compression format for RDF data that can also be queried for Triple Patterns"; + license = licenses.lgpl21; + platforms = platforms.linux; + maintainers = [ maintainers.koslambrou ]; + }; +} diff --git a/nixpkgs/pkgs/misc/i3a/default.nix b/nixpkgs/pkgs/misc/i3a/default.nix new file mode 100644 index 000000000000..5c549bc7f16a --- /dev/null +++ b/nixpkgs/pkgs/misc/i3a/default.nix @@ -0,0 +1,25 @@ +{ lib, python3Packages, fetchPypi }: + +python3Packages.buildPythonApplication rec { + pname = "i3a"; + version = "2.1.1"; + + src = fetchPypi { + inherit pname version; + hash = "sha256-b1bB7Gto4aL1rbQXIelBVhutjIvZY+K+Y66BGN7OcCs="; + }; + + nativeBuildInputs = [ python3Packages.setuptools-scm ]; + + propagatedBuildInputs = [ python3Packages.i3ipc ]; + + doCheck = false; + + meta = with lib; { + changelog = "https://git.goral.net.pl/i3a.git/log/"; + description = "A set of scripts used for automation of i3 and sway window manager layouts"; + homepage = "https://git.goral.net.pl/i3a.git/about"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ moni ]; + }; +} diff --git a/nixpkgs/pkgs/misc/ite-backlight/default.nix b/nixpkgs/pkgs/misc/ite-backlight/default.nix new file mode 100644 index 000000000000..aa53ecabff34 --- /dev/null +++ b/nixpkgs/pkgs/misc/ite-backlight/default.nix @@ -0,0 +1,47 @@ +{ lib +, pkgs +, stdenv +, ninja +, libusb1 +, meson +, boost +, fetchFromGitHub +, pkg-config +, microsoft-gsl +}: + +stdenv.mkDerivation rec { + pname = "ite-backlight"; + version = "1.1"; + + src = fetchFromGitHub { + owner = "hexagonal-sun"; + repo = pname; + rev = "v${version}"; + sha256 = "1hany4bn93mac9qyz97r1l858d48zdvvmn3mabzr3441ivqr9j0a"; + }; + + nativeBuildInputs = [ + ninja + pkg-config + meson + microsoft-gsl + ]; + + buildInputs = [ + boost + libusb1 + ]; + + meta = with lib; { + description = "Commands to control ite-backlight devices"; + longDescription = '' + This project aims to provide a set of simple utilities for controlling ITE 8291 + keyboard backlight controllers. + ''; + license = with licenses; [ mit ]; + homepage = "https://github.com/hexagonal-sun/ite-backlight"; + platforms = platforms.linux; + maintainers = with maintainers; [ hexagonal-sun ]; + }; +} diff --git a/nixpkgs/pkgs/misc/jackaudio/default.nix b/nixpkgs/pkgs/misc/jackaudio/default.nix new file mode 100644 index 000000000000..64f386e0378d --- /dev/null +++ b/nixpkgs/pkgs/misc/jackaudio/default.nix @@ -0,0 +1,84 @@ +{ lib, stdenv, fetchFromGitHub, pkg-config, python3Packages, makeWrapper +, libsamplerate, libsndfile, readline, eigen, celt +, wafHook +# Darwin Dependencies +, aften, AudioUnit, CoreAudio, libobjc, Accelerate + +# Optional Dependencies +, dbus ? null, libffado ? null, alsa-lib ? null +, libopus ? null + +# Extra options +, prefix ? "" + +, testers +}: + +let + inherit (python3Packages) python dbus-python; + shouldUsePkg = pkg: if pkg != null && lib.meta.availableOn stdenv.hostPlatform pkg then pkg else null; + + libOnly = prefix == "lib"; + + optDbus = if stdenv.isDarwin then null else shouldUsePkg dbus; + optPythonDBus = if libOnly then null else shouldUsePkg dbus-python; + optLibffado = if libOnly then null else shouldUsePkg libffado; + optAlsaLib = if libOnly then null else shouldUsePkg alsa-lib; + optLibopus = shouldUsePkg libopus; +in +stdenv.mkDerivation (finalAttrs: { + pname = "${prefix}jack2"; + version = "1.9.22"; + + src = fetchFromGitHub { + owner = "jackaudio"; + repo = "jack2"; + rev = "v${finalAttrs.version}"; + sha256 = "sha256-Cslfys5fcZDy0oee9/nM5Bd1+Cg4s/ayXjJJOSQCL4E="; + }; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ pkg-config python makeWrapper wafHook ]; + buildInputs = [ libsamplerate libsndfile readline eigen celt + optDbus optPythonDBus optLibffado optAlsaLib optLibopus + ] ++ lib.optionals stdenv.isDarwin [ + aften AudioUnit CoreAudio Accelerate libobjc + ]; + + postPatch = '' + patchShebangs --build svnversion_regenerate.sh + ''; + + dontAddWafCrossFlags = true; + + wafConfigureFlags = [ + "--classic" + "--autostart=${if (optDbus != null) then "dbus" else "classic"}" + ] ++ lib.optional (optDbus != null) "--dbus" + ++ lib.optional (optLibffado != null) "--firewire" + ++ lib.optional (optAlsaLib != null) "--alsa"; + + postInstall = (if libOnly then '' + rm -rf $out/{bin,share} + rm -rf $out/lib/{jack,libjacknet*,libjackserver*} + '' else lib.optionalString (optDbus != null) '' + wrapProgram $out/bin/jack_control --set PYTHONPATH $PYTHONPATH + ''); + + postFixup = '' + substituteInPlace "$dev/lib/pkgconfig/jack.pc" \ + --replace "$out/include" "$dev/include" + ''; + + passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; + + meta = with lib; { + description = "JACK audio connection kit, version 2 with jackdbus"; + homepage = "https://jackaudio.org"; + license = licenses.gpl2Plus; + pkgConfigModules = [ "jack" ]; + platforms = platforms.unix; + maintainers = with maintainers; [ goibhniu ]; + }; +}) diff --git a/nixpkgs/pkgs/misc/jackaudio/jack1.nix b/nixpkgs/pkgs/misc/jackaudio/jack1.nix new file mode 100644 index 000000000000..4e7375a26916 --- /dev/null +++ b/nixpkgs/pkgs/misc/jackaudio/jack1.nix @@ -0,0 +1,45 @@ +{ lib, stdenv, fetchurl, pkg-config + +# Optional Dependencies +, alsa-lib ? null, db ? null, libuuid ? null, libffado ? null, celt ? null + +, testers +}: + +let + shouldUsePkg = pkg: if pkg != null && lib.meta.availableOn stdenv.hostPlatform pkg then pkg else null; + + optAlsaLib = shouldUsePkg alsa-lib; + optDb = shouldUsePkg db; + optLibuuid = shouldUsePkg libuuid; + optLibffado = shouldUsePkg libffado; + optCelt = shouldUsePkg celt; +in +stdenv.mkDerivation (finalAttrs: { + pname = "jack1"; + version = "0.125.0"; + + src = fetchurl { + url = "https://jackaudio.org/downloads/jack-audio-connection-kit-${finalAttrs.version}.tar.gz"; + sha256 = "0i6l25dmfk2ji2lrakqq9icnwjxklgcjzzk65dmsff91z2zva5rm"; + }; + + configureFlags = [ + (lib.enableFeature (optLibffado != null) "firewire") + ]; + + nativeBuildInputs = [ pkg-config ]; + buildInputs = [ optAlsaLib optDb optLibffado optCelt ]; + propagatedBuildInputs = [ optLibuuid ]; + + passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; + + meta = with lib; { + broken = stdenv.isDarwin; + description = "JACK audio connection kit"; + homepage = "https://jackaudio.org"; + license = with licenses; [ gpl2 lgpl21 ]; + pkgConfigModules = [ "jack" ]; + platforms = platforms.unix; + }; +}) diff --git a/nixpkgs/pkgs/misc/jackaudio/tools.nix b/nixpkgs/pkgs/misc/jackaudio/tools.nix new file mode 100644 index 000000000000..ac14d1528ce4 --- /dev/null +++ b/nixpkgs/pkgs/misc/jackaudio/tools.nix @@ -0,0 +1,65 @@ +{ stdenv +, lib + +, fetchFromGitHub + +, pkg-config +, meson +, ninja + +, jack +, alsa-lib +, libopus +, libsamplerate +, libsndfile +, readline +, zita-alsa-pcmi +, zita-resampler + +, enableAlsa ? stdenv.isLinux +}: + +stdenv.mkDerivation (final: { + pname = "jack-example-tools"; + version = "4"; + + src = fetchFromGitHub { + owner = "jackaudio"; + repo = "jack-example-tools"; + rev = "tags/${final.version}"; + hash = "sha256-5jmynNxwNVLxEZ1MaqQUG6kRwipDkjhrdDCbZHtmAHk="; + }; + + postPatch = '' + patchShebangs scripts + ''; + + nativeBuildInputs = [ pkg-config meson ninja ]; + buildInputs = [ + jack + libopus + libsamplerate + libsndfile + readline + ] ++ lib.optionals enableAlsa [ + alsa-lib + zita-alsa-pcmi + zita-resampler + ]; + + mesonFlags = [ + (lib.mesonEnable "alsa_in_out" enableAlsa) + (lib.mesonEnable "zalsa" enableAlsa) + ]; + + # no tests defined, but prepare for some in the future. + doCheck = true; + + meta = with lib; { + description = "Official examples and tools from the JACK project"; + homepage = "https://jackaudio.org"; + license = licenses.gpl2Plus; + platforms = platforms.unix; + maintainers = with maintainers; [ pennae ]; + }; +}) diff --git a/nixpkgs/pkgs/misc/jitsi-meet-prosody/default.nix b/nixpkgs/pkgs/misc/jitsi-meet-prosody/default.nix new file mode 100644 index 000000000000..c121d88941f7 --- /dev/null +++ b/nixpkgs/pkgs/misc/jitsi-meet-prosody/default.nix @@ -0,0 +1,38 @@ +{ lib, stdenv, fetchurl, dpkg, nixosTests }: + +stdenv.mkDerivation rec { + pname = "jitsi-meet-prosody"; + version = "1.0.7712"; + src = fetchurl { + url = "https://download.jitsi.org/stable/${pname}_${version}-1_all.deb"; + sha256 = "MONg1CxLrfB+cmmXm4r3HqwF1on+vDZ0IODKSr7PsWo="; + }; + + dontBuild = true; + + unpackCmd = "${dpkg}/bin/dpkg-deb -x $src debcontents"; + + installPhase = '' + runHook preInstall + mkdir -p $out/share + mv usr/share/jitsi-meet/prosody-plugins $out/share/ + runHook postInstall + ''; + + passthru.tests = { + single-node-smoke-test = nixosTests.jitsi-meet; + }; + + passthru.updateScript = ./update.sh; + + meta = with lib; { + description = "Prosody configuration for Jitsi Meet"; + longDescription = '' + This package contains configuration for Prosody to be used with Jitsi Meet. + ''; + homepage = "https://github.com/jitsi/jitsi-meet/"; + license = licenses.asl20; + maintainers = teams.jitsi.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/misc/jitsi-meet-prosody/update.sh b/nixpkgs/pkgs/misc/jitsi-meet-prosody/update.sh new file mode 100755 index 000000000000..3c3695b1f6ad --- /dev/null +++ b/nixpkgs/pkgs/misc/jitsi-meet-prosody/update.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p curl pup common-updater-scripts + +set -eu -o pipefail + +version="$(curl https://download.jitsi.org/stable/ | \ + pup 'a[href] text{}' | \ + awk -F'[_-]' '/jitsi-meet-prosody/ {printf $4"\n"}' | \ + sort -Vu | \ + tail -n 1)" + +update-source-version jitsi-meet-prosody "$version" diff --git a/nixpkgs/pkgs/misc/lguf-brightness/default.nix b/nixpkgs/pkgs/misc/lguf-brightness/default.nix new file mode 100644 index 000000000000..0bb288c21763 --- /dev/null +++ b/nixpkgs/pkgs/misc/lguf-brightness/default.nix @@ -0,0 +1,31 @@ +{ lib, stdenv, fetchFromGitHub, cmake, libusb1, ncurses5 }: + +stdenv.mkDerivation rec { + pname = "lguf-brightness"; + + version = "unstable-2018-02-11"; + + src = fetchFromGitHub { + owner = "periklis"; + repo = pname; + rev = "fcb2bc1738d55c83b6395c24edc27267a520a725"; + sha256 = "0cf7cn2kpmlvz00qxqj1m5zxmh7i2x75djbj4wqk7if7a0nlrd5m"; + }; + + nativeBuildInputs = [ cmake ]; + + buildInputs = [ libusb1 ncurses5 ]; + + installPhase = '' + install -D lguf_brightness $out/bin/lguf_brightness + ''; + + meta = with lib; { + description = "Adjust brightness for LG UltraFine 4K display (cross platform)"; + homepage = "https://github.com/periklis/lguf-brightness"; + license = licenses.lgpl21Plus; + maintainers = with maintainers; [ periklis ]; + mainProgram = "lguf_brightness"; + platforms = with platforms; linux ++ darwin; + }; +} diff --git a/nixpkgs/pkgs/misc/libcardiacarrest/default.nix b/nixpkgs/pkgs/misc/libcardiacarrest/default.nix new file mode 100644 index 000000000000..4139c5b0f13e --- /dev/null +++ b/nixpkgs/pkgs/misc/libcardiacarrest/default.nix @@ -0,0 +1,48 @@ +{ lib, stdenv, fetchFromGitHub, pkg-config, glib, libpulseaudio }: + +with lib; + +stdenv.mkDerivation rec { + pname = "libcardiacarrest"; + version = "12.2.8"; # <PA API version>.<version> + + src = fetchFromGitHub { + owner = "oxij"; + repo = "libcardiacarrest"; + rev = "d89639f5b2d298cf74af26880f5ebf50e645166d"; + sha256 = "0vrigwcw3g8zknqyznv6y3437ahn1w00gv3d303smmygr0p8bd94"; + }; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ pkg-config ]; + + buildInputs = [ glib ]; + + makeFlags = [ "PREFIX=$(out)" ]; + + postInstall = '' + moveToOutput $out/include $dev + moveToOutput $out/lib/pkgconfig $dev + moveToOutput $out/lib/cmake $dev + ''; + + meta = src.meta // { + description = "A trivial implementation of libpulse PulseAudio library API"; + longDescription = '' + libcardiacarrest is a trivial implementation of libpulse + PulseAudio library API that unconditionally (but gracefully) + fails to connect to the PulseAudio daemon and does nothing else. + + apulse and pressureaudio (which uses apulse internally) are an + inspiration for this but unlike those two projects + libcardiacarrest is not an emulation layer, all it does is it + gracefully fails to provide the requested PulseAudio service + hoping the application would try something else (e.g. ALSA or + JACK). + ''; + license = libpulseaudio.meta.license; # "same as PA headers" + maintainers = [ maintainers.oxij ]; # also the author + }; + +} diff --git a/nixpkgs/pkgs/misc/lightspark/default.nix b/nixpkgs/pkgs/misc/lightspark/default.nix new file mode 100644 index 000000000000..904028feddaa --- /dev/null +++ b/nixpkgs/pkgs/misc/lightspark/default.nix @@ -0,0 +1,35 @@ +{ lib, stdenv, fetchFromGitHub, pkg-config, cmake, curl, zlib, ffmpeg, glew, pcre +, rtmpdump, cairo, boost, SDL2, libjpeg, pango, xz, nasm, llvm, glibmm +}: + +stdenv.mkDerivation rec { + pname = "lightspark"; + version = "0.8.7"; + + src = fetchFromGitHub { + owner = "lightspark"; + repo = "lightspark"; + rev = version; + hash = "sha256-qX/ft9slWTbvuSyi2jB6YC7D7QTtCybL/dTo1dJp3pQ="; + }; + + postPatch = '' + sed -i 's/SET(ETCDIR "\/etc")/SET(ETCDIR "etc")/g' CMakeLists.txt + ''; + + nativeBuildInputs = [ pkg-config cmake ]; + + buildInputs = [ + curl zlib ffmpeg glew pcre rtmpdump cairo boost SDL2 libjpeg pango xz nasm + llvm glibmm + ]; + + meta = with lib; { + description = "Open source Flash Player implementation"; + homepage = "https://lightspark.github.io/"; + license = licenses.lgpl3Plus; + maintainers = with maintainers; [ jchw ]; + platforms = platforms.linux; + mainProgram = "lightspark"; + }; +} diff --git a/nixpkgs/pkgs/misc/lilypond/default.nix b/nixpkgs/pkgs/misc/lilypond/default.nix new file mode 100644 index 000000000000..5fa5e75a637d --- /dev/null +++ b/nixpkgs/pkgs/misc/lilypond/default.nix @@ -0,0 +1,68 @@ +{ stdenv, lib, fetchurl, ghostscript, gyre-fonts, texinfo, imagemagick, texi2html, guile +, python3, gettext, flex, perl, bison, pkg-config, autoreconfHook, dblatex +, fontconfig, freetype, pango, fontforge, help2man, zip, netpbm, groff +, freefont_ttf, makeFontsConf +, makeWrapper, t1utils, boehmgc, rsync +, texliveSmall, tex ? texliveSmall.withPackages (ps: with ps; [ lh metafont epsf fontinst ]) +}: + +stdenv.mkDerivation rec { + pname = "lilypond"; + version = "2.24.3"; + + src = fetchurl { + url = "http://lilypond.org/download/sources/v${lib.versions.majorMinor version}/lilypond-${version}.tar.gz"; + sha256 = "sha256-3wBfdu969aTNdKEPjnEVJ4t/p58UAYk3tlwQlJjsRL4="; + }; + + postInstall = '' + for f in "$out/bin/"*; do + # Override default argv[0] setting so LilyPond can find + # its Scheme libraries. + wrapProgram "$f" --set GUILE_AUTO_COMPILE 0 \ + --set PATH "${ghostscript}/bin" \ + --argv0 "$f" + done + ''; + + configureFlags = [ + "--disable-documentation" + # FIXME: these URW fonts are not OTF, configure reports "URW++ OTF files... no". + "--with-urwotf-dir=${ghostscript}/share/ghostscript/fonts" + "--with-texgyre-dir=${gyre-fonts}/share/fonts/truetype/" + ]; + + preConfigure = '' + sed -e "s@mem=mf2pt1@mem=$PWD/mf/mf2pt1@" -i scripts/build/mf2pt1.pl + export HOME=$TMPDIR/home + ''; + + nativeBuildInputs = [ autoreconfHook bison flex makeWrapper pkg-config ]; + + buildInputs = + [ ghostscript texinfo imagemagick texi2html guile dblatex tex zip netpbm + python3 gettext perl fontconfig freetype pango + fontforge help2man groff t1utils boehmgc rsync + ]; + + autoreconfPhase = "NOCONFIGURE=1 sh autogen.sh"; + + enableParallelBuilding = true; + + passthru.updateScript = { + command = [ ./update.sh ]; + supportedFeatures = [ "commit" ]; + }; + + meta = with lib; { + description = "Music typesetting system"; + homepage = "http://lilypond.org/"; + license = licenses.gpl3; + maintainers = with maintainers; [ marcweber yurrriq ]; + platforms = platforms.all; + }; + + FONTCONFIG_FILE = lib.optional stdenv.isDarwin (makeFontsConf { + fontDirectories = [ freefont_ttf ]; + }); +} diff --git a/nixpkgs/pkgs/misc/lilypond/fonts.nix b/nixpkgs/pkgs/misc/lilypond/fonts.nix new file mode 100644 index 000000000000..b624498f0920 --- /dev/null +++ b/nixpkgs/pkgs/misc/lilypond/fonts.nix @@ -0,0 +1,138 @@ +{ lib, stdenv, fetchFromGitHub, lilypond }: + +let + + olpFont = { fontName, rev, sha256, version ? rev, ... }: + stdenv.mkDerivation { + inherit version; + pname = "openlilypond-font-${fontName}"; + + src = fetchFromGitHub { + inherit rev sha256; + owner = "OpenLilyPondFonts"; + repo = fontName; + }; + + installPhase = '' + local fontsdir="$out/share/lilypond/${lilypond.version}/fonts" + + install -m755 -d "$fontsdir/otf" + + shopt -s globstar + + for font in {otf,supplementary-fonts,supplementary-files}/**/*.{o,t}tf; do + echo $font + install -Dt "$fontsdir/otf" -m644 "$font" + done + + install -m755 -d "$fontsdir/svg" + for font in {svg,woff}/**.{svg,woff}; do + install -Dt "$fontsdir/svg" -m644 "$font" + done + ''; + + meta = with lib; { + inherit (lilypond.meta) homepage platforms; + description = "${fontName} font for LilyPond"; + license = licenses.ofl; + maintainers = with maintainers; [ yurrriq ]; + }; + }; + +in + +rec { + beethoven = olpFont { + fontName = "beethoven"; + rev = "669f400"; + sha256 = "17wdklg5shmqwnb7b81qavfg52v32wx5yf15c6al0hbvv1nqqj2i"; + }; + bravura = olpFont { + fontName = "bravura"; + rev = "53c7744"; + sha256 = "1p27w1c3bzxlnm6rzq8n7dbfjwbxqjy4r0fhkmk9jbm8awmzw214"; + }; + cadence = olpFont { + fontName = "cadence"; + rev = "1cc0fb7"; + sha256 = "1zxb3m8glh8iwj8mzcgyaxhlq0bji0rwniw702m70h9kpifiim1j"; + }; + gonville = olpFont { + fontName = "gonville"; + rev = "a638bc9"; + sha256 = "15khy9677crgd6bpajn7l1drysgxy49wiym3b248khgpavidwyy9"; + }; + gutenberg1939 = olpFont { + fontName = "gutenberg1939"; + rev = "2316a35"; + sha256 = "1lkhivmrx92z37zfrb5mkhzhwggyaga9cm0wl89r0n2f2kayyc7q"; + }; + haydn = olpFont { + fontName = "haydn"; + rev = "9e7de8b"; + sha256 = "1jmbhb2jm887sdc498l2jilpivq1d8lmmgdb8lp59lv8d9fx105z"; + }; + improviso = olpFont { + fontName = "improviso"; + rev = "0753f5a"; + sha256 = "1clin9c74gjhhira12mwxynxn4b1ixij5bg04mvk828lbr740mfm"; + }; + lilyboulez = olpFont { + fontName = "lilyboulez"; + rev = "e8455fc"; + sha256 = "0mq92x0rbgfb6s7ipgg2zcxika2si30w3ay89rp7m6vwca01649y"; + }; + lilyjazz = olpFont { + fontName = "lilyjazz"; + rev = "8fa7d554"; + sha256 = "1z7px7k2sn7snnj7yfjv0p9axwbn452vn9ww9icmb1249b0d1qry"; + }; + lv-goldenage = olpFont { + fontName = "lv-goldenage"; + rev = "8a92fd3"; + sha256 = "03nbd1vmlaj7wkhsnl2lq09nafv7zj1k518zs966vclzah94qghp"; + }; + paganini = olpFont { + fontName = "paganini"; + rev = "8e4e55a"; + sha256 = "0gw9wr4hfn205j40rpgnfddhzhn9x4pwfinamj5b7607880nvx29"; + }; + profondo = olpFont { + fontName = "profondo"; + rev = "8cfb668"; + sha256 = "0armwbg9y0l935949b7klngws6fq42fi944lws61qvjl61780br8"; + }; + ross = olpFont { + fontName = "ross"; + rev = "aa8127f"; + sha256 = "1w2x3pd1d1z4x0107dpq95v7m547cj4nkkzxgqpmzfqa0074idqd"; + }; + scorlatti = olpFont { + fontName = "scorlatti"; + rev = "1db87da"; + sha256 = "07jam5hwdy6bydrm98cdla6p6rl8lmy8zzsfq46i55l64l3w956h"; + }; + sebastiano = olpFont { + fontName = "sebastiano"; + rev = "44bf262"; + sha256 = "09i8p3p4z6vz69j187cpxvikkgc4pk6gxippahy0k7i7bh0d4qaj"; + }; + + all = [ + beethoven + bravura + cadence + gonville + gutenberg1939 + haydn + improviso + lilyboulez + lilyjazz + lv-goldenage + paganini + profondo + ross + scorlatti + sebastiano + ]; +} diff --git a/nixpkgs/pkgs/misc/lilypond/unstable.nix b/nixpkgs/pkgs/misc/lilypond/unstable.nix new file mode 100644 index 000000000000..77ac8c3e8d36 --- /dev/null +++ b/nixpkgs/pkgs/misc/lilypond/unstable.nix @@ -0,0 +1,14 @@ +{ lib, fetchurl, lilypond }: + +lilypond.overrideAttrs (oldAttrs: rec { + version = "2.25.11"; + src = fetchurl { + url = "https://lilypond.org/download/sources/v${lib.versions.majorMinor version}/lilypond-${version}.tar.gz"; + hash = "sha256-DDvo1LBTnDVSDyRDYF0aEToFsmvW1dlTaMHdpBEOdMI="; + }; + + passthru.updateScript = { + command = [ ./update.sh "unstable" ]; + supportedFeatures = [ "commit" ]; + }; +}) diff --git a/nixpkgs/pkgs/misc/lilypond/update.sh b/nixpkgs/pkgs/misc/lilypond/update.sh new file mode 100755 index 000000000000..e9c3f48805af --- /dev/null +++ b/nixpkgs/pkgs/misc/lilypond/update.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env nix-shell +#!nix-shell -I nixpkgs=./. -i bash -p curl gnused nix + +set -euo pipefail + +if [ $# -gt 0 ] && [ "$1" = "unstable" ]; then + ATTR="lilypond-unstable" + FILE="$(dirname "${BASH_SOURCE[@]}")/unstable.nix" + QUERY="VERSION_DEVEL=" +else + ATTR="lilypond" + FILE="$(dirname "${BASH_SOURCE[@]}")/default.nix" + QUERY="VERSION_STABLE=" +fi + +# update version +PREV=$(nix eval --raw -f default.nix $ATTR.version) +NEXT=$(curl -s 'https://gitlab.com/lilypond/lilypond/-/raw/master/VERSION' | grep "$QUERY" | cut -d= -f2) +sed -i "s|$PREV|$NEXT|" "$FILE" +echo "[{\"commitMessage\":\"$ATTR: $PREV -> $NEXT\"}]" + +# update hash +PREV=$(nix eval --raw -f default.nix $ATTR.src.outputHash) +NEXT=$(nix hash to-sri --type sha256 $(nix-prefetch-url --type sha256 $(nix eval --raw -f default.nix $ATTR.src.url))) +sed -i "s|$PREV|$NEXT|" "$FILE" diff --git a/nixpkgs/pkgs/misc/lilypond/with-fonts.nix b/nixpkgs/pkgs/misc/lilypond/with-fonts.nix new file mode 100644 index 000000000000..2cfd1519795d --- /dev/null +++ b/nixpkgs/pkgs/misc/lilypond/with-fonts.nix @@ -0,0 +1,17 @@ +{ lib, symlinkJoin, makeWrapper +, lilypond, openlilylib-fonts +}: + +lib.appendToName "with-fonts" (symlinkJoin { + inherit (lilypond) meta name version ; + + paths = [ lilypond ] ++ openlilylib-fonts.all; + + nativeBuildInputs = [ makeWrapper ]; + + postBuild = '' + for p in $out/bin/*; do + wrapProgram "$p" --set LILYPOND_DATADIR "$out/share/lilypond/${lilypond.version}" + done + ''; +}) diff --git a/nixpkgs/pkgs/misc/logging/beats/7.x.nix b/nixpkgs/pkgs/misc/logging/beats/7.x.nix new file mode 100644 index 000000000000..ad4d00a8149e --- /dev/null +++ b/nixpkgs/pkgs/misc/logging/beats/7.x.nix @@ -0,0 +1,60 @@ +{ lib, fetchFromGitHub, elk7Version, buildGoModule, libpcap, nixosTests, systemd, config }: + +let beat = package: extraArgs: buildGoModule (rec { + pname = package; + version = elk7Version; + + src = fetchFromGitHub { + owner = "elastic"; + repo = "beats"; + rev = "v${version}"; + hash = "sha256-Quq32/3NeGhrsy17GrIeBiB3LGQuMFTFl3lAyyU6GZM="; + }; + + vendorHash = "sha256-UJjwCRxY1rrymroBqC/SfCVM9vmnQOtLlS3OONih3kM="; + + subPackages = [ package ]; + + meta = with lib; { + homepage = "https://www.elastic.co/products/beats"; + license = licenses.asl20; + maintainers = with maintainers; [ fadenb basvandijk dfithian ]; + platforms = platforms.linux; + }; +} // extraArgs); +in +rec { + auditbeat7 = beat "auditbeat" { meta.description = "Lightweight shipper for audit data"; }; + filebeat7 = beat "filebeat" { + meta.description = "Lightweight shipper for logfiles"; + buildInputs = [ systemd ]; + tags = [ "withjournald" ]; + postFixup = '' + patchelf --set-rpath ${lib.makeLibraryPath [ (lib.getLib systemd) ]} "$out/bin/filebeat" + ''; + }; + heartbeat7 = beat "heartbeat" { meta.description = "Lightweight shipper for uptime monitoring"; }; + metricbeat7 = beat "metricbeat" { + meta.description = "Lightweight shipper for metrics"; + passthru.tests = + lib.optionalAttrs config.allowUnfree ( + assert metricbeat7.drvPath == nixosTests.elk.unfree.ELK-7.elkPackages.metricbeat.drvPath; + { + elk = nixosTests.elk.unfree.ELK-7; + } + ); + }; + packetbeat7 = beat "packetbeat" { + buildInputs = [ libpcap ]; + meta.description = "Network packet analyzer that ships data to Elasticsearch"; + meta.longDescription = '' + Packetbeat is an open source network packet analyzer that ships the + data to Elasticsearch. + + Think of it like a distributed real-time Wireshark with a lot more + analytics features. The Packetbeat shippers sniff the traffic between + your application processes, parse on the fly protocols like HTTP, MySQL, + PostgreSQL, Redis or Thrift and correlate the messages into transactions. + ''; + }; +} diff --git a/nixpkgs/pkgs/misc/logging/pacemaker/default.nix b/nixpkgs/pkgs/misc/logging/pacemaker/default.nix new file mode 100644 index 000000000000..a3d365cd4170 --- /dev/null +++ b/nixpkgs/pkgs/misc/logging/pacemaker/default.nix @@ -0,0 +1,102 @@ +{ lib +, stdenv +, autoconf +, automake +, bash +, bzip2 +, corosync +, dbus +, fetchFromGitHub +, glib +, gnutls +, libqb +, libtool +, libuuid +, libxml2 +, libxslt +, pam +, pkg-config +, python3 +, nixosTests + +# Pacemaker is compiled twice, once with forOCF = true to extract its +# OCF definitions for use in the ocf-resource-agents derivation, then +# again with forOCF = false, where the ocf-resource-agents is provided +# as the OCF_ROOT. +, forOCF ? false +, ocf-resource-agents +} : + +stdenv.mkDerivation rec { + pname = "pacemaker"; + version = "2.1.7"; + + src = fetchFromGitHub { + owner = "ClusterLabs"; + repo = pname; + rev = "Pacemaker-${version}"; + sha256 = "sha256-cvCMIzeyP9oEzHpafOvCORYwWg6cH5qj3qXOUMW4nHA="; + }; + + nativeBuildInputs = [ + autoconf + automake + libtool + pkg-config + ]; + + buildInputs = [ + bash + bzip2 + corosync + dbus.dev + glib + gnutls + libqb + libuuid + libxml2.dev + libxslt.dev + pam + python3 + ]; + + preConfigure = '' + ./autogen.sh --prefix="$out" + ''; + configureFlags = [ + "--exec-prefix=${placeholder "out"}" + "--sysconfdir=/etc" + "--localstatedir=/var" + "--with-initdir=/etc/systemd/system" + "--with-systemdsystemunitdir=/etc/systemd/system" + "--with-corosync" + # allows Type=notify in the systemd service + "--enable-systemd" + ] ++ lib.optional (!forOCF) "--with-ocfdir=${ocf-resource-agents}/usr/lib/ocf"; + + installFlags = [ "DESTDIR=${placeholder "out"}" ]; + + env.NIX_CFLAGS_COMPILE = toString (lib.optionals stdenv.cc.isGNU [ + "-Wno-error=strict-prototypes" + ]); + + enableParallelBuilding = true; + + postInstall = '' + # pacemaker's install linking requires a weirdly nested hierarchy + mv $out$out/* $out + rm -r $out/nix + ''; + + passthru.tests = { + inherit (nixosTests) pacemaker; + }; + + meta = with lib; { + homepage = "https://clusterlabs.org/pacemaker/"; + description = "Pacemaker is an open source, high availability resource manager suitable for both small and large clusters."; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = with maintainers; [ ryantm astro ]; + }; +} diff --git a/nixpkgs/pkgs/misc/long-shebang/default.nix b/nixpkgs/pkgs/misc/long-shebang/default.nix new file mode 100644 index 000000000000..34ad0350771f --- /dev/null +++ b/nixpkgs/pkgs/misc/long-shebang/default.nix @@ -0,0 +1,22 @@ +{ lib, stdenv, fetchurl }: let + version = "1.2.0"; +in stdenv.mkDerivation { + pname = "long-shebang"; + inherit version; + + src = fetchurl { + url = "https://github.com/shlevy/long-shebang/releases/download/v${version}/long-shebang-${version}.tar.xz"; + sha256 = "10h29w1c5bm0rlscyjiz1kzb134rn92as6v4y7i8mhhmdh6mmf79"; + }; + + meta = { + description = "A tool for #! scripts with more than one argument"; + + homepage = "https://github.com/shlevy/long-shebang"; + + license = lib.licenses.mit; + + platforms = lib.platforms.unix; + mainProgram = "long-shebang"; + }; +} diff --git a/nixpkgs/pkgs/misc/lssecret/default.nix b/nixpkgs/pkgs/misc/lssecret/default.nix new file mode 100644 index 000000000000..2e5169974fc1 --- /dev/null +++ b/nixpkgs/pkgs/misc/lssecret/default.nix @@ -0,0 +1,32 @@ +{ lib +, stdenv +, fetchFromGitLab +, pkg-config +, libsecret +}: + +stdenv.mkDerivation rec { + name = "lssecret"; + version = "unstable-2022-12-02"; + + src = fetchFromGitLab { + owner = "GrantMoyer"; + repo = name; + rev = "20fd771a"; + hash = "sha256-yU70WZj4EC/sFJxyq2SQ0YQ6RCQHYiW/aQiYWo7+ujk="; + }; + + nativeBuildInputs = [ pkg-config ]; + buildInputs = [ libsecret ]; + + makeFlags = ["DESTDIR=$(out)"]; + + meta = { + description = "A tool to list passwords and other secrets stored using the org.freedesktop.secrets dbus api"; + homepage = "https://gitlab.com/GrantMoyer/lssecret"; + license = lib.licenses.unlicense; + maintainers = with lib.maintainers; [ genericnerdyusername ]; + platforms = lib.platforms.unix; + mainProgram = "lssecret"; + }; +} diff --git a/nixpkgs/pkgs/misc/meson-tools/default.nix b/nixpkgs/pkgs/misc/meson-tools/default.nix new file mode 100644 index 000000000000..02b162c88098 --- /dev/null +++ b/nixpkgs/pkgs/misc/meson-tools/default.nix @@ -0,0 +1,27 @@ +{ lib, stdenv, fetchFromGitHub, openssl }: + +stdenv.mkDerivation rec { + pname = "meson-tools"; + version = "0.1"; + + src = fetchFromGitHub { + owner = "afaerber"; + repo = pname; + rev = "v${version}"; + sha256 = "1bvshfa9pa012yzdwapi3nalpgcwmfq7d3n3w3mlr357a6kq64qk"; + }; + + buildInputs = [ openssl ]; + + installPhase = '' + mkdir -p "$out/bin" + mv amlbootsig unamlbootsig amlinfo "$out/bin" + ''; + + meta = with lib; { + homepage = "https://github.com/afaerber/meson-tools"; + description = "Tools for Amlogic Meson ARM platforms"; + license = licenses.gpl2; + maintainers = with maintainers; [ lopsided98 ]; + }; +} diff --git a/nixpkgs/pkgs/misc/mlxbf-bootimages/default.nix b/nixpkgs/pkgs/misc/mlxbf-bootimages/default.nix new file mode 100644 index 000000000000..a7552c0bb5cb --- /dev/null +++ b/nixpkgs/pkgs/misc/mlxbf-bootimages/default.nix @@ -0,0 +1,41 @@ +{ stdenv +, lib +, fetchurl +, dpkg +}: + +stdenv.mkDerivation rec { + pname = "mlxbf-bootimages"; + version = "4.0.3-12704"; + + src = fetchurl { + url = let mainVersion = builtins.elemAt (lib.splitString "-" version) 0; in + "https://linux.mellanox.com/public/repo/bluefield/${mainVersion}/bootimages/prod/${pname}-signed_${version}_arm64.deb"; + hash = "sha256-e13XZhxf41240Qu+hh2a9+KIvZCL+8k5JyZrpJCHmI8="; + }; + + nativeBuildInputs = [ + dpkg + ]; + + unpackCmd = "dpkg -x $curSrc src"; + + # Only install /lib. /usr only contains the licenses which are also available + # in /lib. + installPhase = '' + find lib -type f -exec install -D {} $out/{} \; + ''; + + meta = with lib; { + description = "BlueField boot images"; + homepage = "https://github.com/Mellanox/bootimages"; + # It is unclear if the bootimages themselves are Open Source software. They + # never explicitly say they are. They contain Open Source software licensed + # under bsd2, bsd2Patent, bsd3. However, it is probably safer to assume + # they are unfree. See https://github.com/Mellanox/bootimages/issues/3 + license = licenses.unfree; + platforms = [ "aarch64-linux" ]; + maintainers = with maintainers; [ nikstur ]; + }; +} + diff --git a/nixpkgs/pkgs/misc/mnemonicode/default.nix b/nixpkgs/pkgs/misc/mnemonicode/default.nix new file mode 100644 index 000000000000..1cd78fdce093 --- /dev/null +++ b/nixpkgs/pkgs/misc/mnemonicode/default.nix @@ -0,0 +1,29 @@ +{ stdenv, lib, fetchFromGitHub }: + +stdenv.mkDerivation (finalAttrs: { + pname = "mnemonicode"; + version = "1.0.0"; + src = fetchFromGitHub { + owner = "singpolyma"; + repo = "mnemonicode"; + rev = finalAttrs.version; + hash = "sha256-bGipPvLj6ig+lMLsl/Yve8PmuA93ETvhNKoMPh0JMBM="; + }; + installPhase = '' + mkdir -p $out/bin + mv mnencode $out/bin + mv mndecode $out/bin + ''; + meta = with lib; { + homepage = "https://github.com/singpolyma/mnemonicode"; + description = '' + Routines which implement a method for encoding binary data into a sequence + of words which can be spoken over the phone, for example, and converted + back to data on the other side. + ''; + license = licenses.mit; + platforms = platforms.all; + maintainers = with maintainers; [ kirillrdy ]; + mainProgram = "mnencode"; + }; +}) diff --git a/nixpkgs/pkgs/misc/moonfire-nvr/Cargo.lock b/nixpkgs/pkgs/misc/moonfire-nvr/Cargo.lock new file mode 100644 index 000000000000..b7ff7fc7d46f --- /dev/null +++ b/nixpkgs/pkgs/misc/moonfire-nvr/Cargo.lock @@ -0,0 +1,2651 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "ahash" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf6ccdb167abbf410dcb915cabd428929d7f6a04980b54a11f26a39f1c7f7107" +dependencies = [ + "cfg-if", + "getrandom", + "once_cell", + "version_check", +] + +[[package]] +name = "aho-corasick" +version = "0.7.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +dependencies = [ + "memchr", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61" + +[[package]] +name = "arrayref" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" + +[[package]] +name = "arrayvec" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64ct" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b645a089122eccb6111b4f81cbc1a49f5900ac4666bb93ac027feaecf15607bf" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" + +[[package]] +name = "bitstream-io" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d28070975aaf4ef1fd0bd1f29b739c06c2cdd9972e090617fb6dca3b2cb564e" + +[[package]] +name = "blake3" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ae2468a89544a466886840aa467a25b766499f4f04bf7d9fcd10ecee9fccef" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "digest", +] + +[[package]] +name = "block-buffer" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bpaf" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72974597bfc83173d714c0fc785a8ab64ca0f0896cb72b05f2f4c5e682543871" +dependencies = [ + "bpaf_derive", + "owo-colors", + "supports-color", +] + +[[package]] +name = "bpaf_derive" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6b7be5dcfd7bb931b9932e689c69a9b9f50a46cf0b588c90ed73ec28e8e0bf4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.23", +] + +[[package]] +name = "bstr" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b45ea9b00a7b3f2988e9a65ad3917e62123c38dba709b666506207be96d1790b" +dependencies = [ + "memchr", + "once_cell", + "regex-automata", + "serde", +] + +[[package]] +name = "bumpalo" +version = "3.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c" + +[[package]] +name = "cc" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "time 0.1.45", + "wasm-bindgen", + "winapi", +] + +[[package]] +name = "cipher" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1873270f8f7942c191139cb8a40fd228da6c3fd2fc376d7e92d47aa14aeb59e" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "coded" +version = "0.2.0-pre" +source = "git+https://github.com/scottlamb/coded?rev=2c97994974a73243d5dd12134831814f42cdb0e8#2c97994974a73243d5dd12134831814f42cdb0e8" + +[[package]] +name = "constant_time_eq" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3ad85c1f65dc7b37604eb0e89748faf0b9653065f2a8ef69f96a687ec1e9279" + +[[package]] +name = "cookie-factory" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "396de984970346b0d9e93d1415082923c679e5ae5c3ee3dcbd104f5610af126b" + +[[package]] +name = "core-foundation-sys" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" + +[[package]] +name = "cpufeatures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "cstr" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8aa998c33a6d3271e3678950a22134cd7dd27cef86dee1b611b5b14207d1d90b" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "cursive" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5438eb16bdd8af51b31e74764fef5d0a9260227a5ec82ba75c9d11ce46595839" +dependencies = [ + "ahash", + "cfg-if", + "crossbeam-channel", + "cursive_core", + "lazy_static", + "libc", + "log", + "maplit", + "ncurses", + "signal-hook", + "term_size", + "unicode-segmentation", + "unicode-width", +] + +[[package]] +name = "cursive_core" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2de434b364bcca5039553b7ae1b5994b59b679e18bcb03adbc9c8e538446b9b4" +dependencies = [ + "ahash", + "crossbeam-channel", + "enum-map", + "enumset", + "lazy_static", + "log", + "num", + "owning_ref", + "time 0.3.17", + "unicode-segmentation", + "unicode-width", + "xi-unicode", +] + +[[package]] +name = "darling" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0dd3cd20dc6b5a876612a6e5accfe7f3dd883db6d07acfbf14c128f61550dfa" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a784d2ccaf7c98501746bf0be29b2022ba41fd62a2e622af997a03e9f972859f" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "syn 1.0.107", +] + +[[package]] +name = "darling_macro" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7618812407e9402654622dd402b0a89dff9ba93badd6540781526117b92aab7e" +dependencies = [ + "darling_core", + "quote", + "syn 1.0.107", +] + +[[package]] +name = "diff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" + +[[package]] +name = "digest" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" +dependencies = [ + "block-buffer", + "crypto-common", + "subtle", +] + +[[package]] +name = "either" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" + +[[package]] +name = "encoding_rs" +version = "0.8.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enum-map" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50c25992259941eb7e57b936157961b217a4fc8597829ddef0596d6c3cd86e1a" +dependencies = [ + "enum-map-derive", +] + +[[package]] +name = "enum-map-derive" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a4da76b3b6116d758c7ba93f7ec6a35d2e2cf24feda76c6e38a375f4d5c59f2" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.107", +] + +[[package]] +name = "enumset" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19be8061a06ab6f3a6cf21106c873578bf01bd42ad15e0311a9c76161cb1c753" +dependencies = [ + "enumset_derive", +] + +[[package]] +name = "enumset_derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03e7b551eba279bf0fa88b83a46330168c1560a52a94f5126f892f0b364ab3e0" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 1.0.107", +] + +[[package]] +name = "errno" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +dependencies = [ + "errno-dragonfly", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + +[[package]] +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + +[[package]] +name = "fastrand" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" +dependencies = [ + "instant", +] + +[[package]] +name = "flate2" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "four-cc" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3958af68a31b1d1384d3f39b6aa33eb14b6009065b5ca305ddd9712a4237124f" + +[[package]] +name = "futures" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38390104763dc37a5145a53c29c63c1290b5d316d6086ec32c293f6736051bb0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" + +[[package]] +name = "futures-executor" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb" + +[[package]] +name = "futures-macro" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.107", +] + +[[package]] +name = "futures-sink" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9" + +[[package]] +name = "futures-task" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" + +[[package]] +name = "futures-util" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "h2" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h264-reader" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3c095862f1b74a6021f766321767e64fbec34fa76503debbe1da2c04ce23c2c" +dependencies = [ + "bitstream-io", + "hex-slice", + "log", + "memchr", + "rfc6381-codec", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ff8ae62cd3a9102e5637afc8452c55acf3844001bd5374e0b0bd7b6616c038" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashlink" +version = "0.8.1" +source = "git+https://github.com/scottlamb/hashlink?rev=26715ca0efe3f1773a0a22bbde8e36cafcaaed52#26715ca0efe3f1773a0a22bbde8e36cafcaaed52" +dependencies = [ + "hashbrown 0.13.1", +] + +[[package]] +name = "hermit-abi" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hex-slice" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5491a308e0214554f07a81d8944abe45f552871c12e3c3c6e7e5d354039a6c4c" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "http" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-auth" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b40b39d66c28829a0cf4d09f7e139ff8201f7500a5083732848ed3b4b4d850" +dependencies = [ + "base64", + "digest", + "hex", + "md-5", + "memchr", + "rand", + "sha2", +] + +[[package]] +name = "http-body" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "http-serve" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "496ab5f39096e4c915f167c276aea19521ed862beb50f7d2bc530578535689d7" +dependencies = [ + "bytes", + "flate2", + "futures-channel", + "futures-core", + "futures-util", + "http", + "http-body", + "httpdate", + "libc", + "memchr", + "mime", + "pin-project", + "smallvec", + "tokio", + "winapi", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" + +[[package]] +name = "hyper" +version = "0.14.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "034711faac9d2166cb1baf1a2fb0b60b1f277f8492fd72176c17f3515e1abd3c" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "indexmap" +version = "1.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ipnet" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11b0d96e660696543b251e58030cf9787df56da39dab19ad60eae7353040917e" + +[[package]] +name = "is-terminal" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24fddda5af7e54bf7da53067d6e802dbcc381d0a8eef629df528e3ebf68755cb" +dependencies = [ + "hermit-abi 0.3.1", + "rustix", + "windows-sys 0.48.0", +] + +[[package]] +name = "is_ci" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "616cde7c720bb2bb5824a224687d8f77bfd38922027f01d825cd7453be5099fb" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" + +[[package]] +name = "js-sys" +version = "0.3.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.147" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" + +[[package]] +name = "libsqlite3-sys" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29f835d03d717946d28b1d1ed632eb6f0e24a299388ee623d0c23118d3e8a7fa" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0" + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "maplit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "md-5" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" +dependencies = [ + "digest", +] + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + +[[package]] +name = "mime" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" +dependencies = [ + "libc", + "log", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.42.0", +] + +[[package]] +name = "moonfire-base" +version = "0.0.1" +dependencies = [ + "chrono", + "coded", + "futures", + "libc", + "nix", + "nom", + "rusqlite", + "serde", + "serde_json", + "slab", + "time 0.1.45", + "tracing", + "tracing-core", + "tracing-log", + "tracing-subscriber", +] + +[[package]] +name = "moonfire-db" +version = "0.7.7" +dependencies = [ + "base64", + "blake3", + "byteorder", + "cstr", + "diff", + "fnv", + "futures", + "h264-reader", + "hashlink", + "itertools", + "libc", + "moonfire-base", + "nix", + "num-rational", + "odds", + "pretty-hex", + "protobuf", + "protobuf-codegen", + "ring", + "rusqlite", + "scrypt", + "serde", + "serde_json", + "smallvec", + "tempfile", + "time 0.1.45", + "tokio", + "tracing", + "ulid", + "url", + "uuid", +] + +[[package]] +name = "moonfire-nvr" +version = "0.7.7" +dependencies = [ + "base64", + "blake3", + "bpaf", + "byteorder", + "bytes", + "chrono", + "cursive", + "fnv", + "futures", + "h264-reader", + "http", + "http-serve", + "hyper", + "itertools", + "libc", + "log", + "memchr", + "moonfire-base", + "moonfire-db", + "mp4", + "nix", + "nom", + "num-rational", + "password-hash", + "protobuf", + "reffers", + "reqwest", + "retina", + "ring", + "rusqlite", + "serde", + "serde_json", + "smallvec", + "sync_wrapper", + "tempfile", + "time 0.1.45", + "tokio", + "tokio-stream", + "tokio-tungstenite", + "toml", + "tracing", + "tracing-core", + "tracing-futures", + "tracing-log", + "tracing-subscriber", + "tracing-test", + "ulid", + "url", + "uuid", +] + +[[package]] +name = "mp4" +version = "0.9.2" +source = "git+https://github.com/scottlamb/mp4-rust?branch=moonfire#388fb47653305fb153de4e11d8cbc6f307e02ee5" +dependencies = [ + "byteorder", + "bytes", + "num-rational", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "mp4ra-rust" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be9daf03b43bf3842962947c62ba40f411e46a58774c60838038f04a67d17626" +dependencies = [ + "four-cc", +] + +[[package]] +name = "mpeg4-audio-const" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96a1fe2275b68991faded2c80aa4a33dba398b77d276038b8f50701a22e55918" + +[[package]] +name = "ncurses" +version = "5.101.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e2c5d34d72657dc4b638a1c25d40aae81e4f1c699062f72f467237920752032" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "nix" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a58d1d356c6597d08cde02c2f09d785b09e28711837b1ed667dc652c08a694" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", + "memoffset", + "pin-utils", + "static_assertions", +] + +[[package]] +name = "nom" +version = "7.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5507769c4919c998e69e49c839d9dc6e693ede4cc4290d6ad8b41d4f09c548c" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606" +dependencies = [ + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ae39348c8bc5fbd7f40c727a9925f03517afd2ab27d46702108b6a7e5414c19" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-bigint", + "num-integer", + "num-traits", + "serde", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +dependencies = [ + "hermit-abi 0.2.6", + "libc", +] + +[[package]] +name = "num_threads" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +dependencies = [ + "libc", +] + +[[package]] +name = "odds" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfe9f693ec5bf79b8867b34aeaa5a2500e3a90461b486b573bcad3cca42b4d9e" +dependencies = [ + "rawpointer", + "rawslice", + "unchecked-index", +] + +[[package]] +name = "once_cell" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "owning_ref" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ff55baddef9e4ad00f88b6c743a2a8062d4c6ade126c2a528644b8e444d52ce" +dependencies = [ + "stable_deref_trait", +] + +[[package]] +name = "owo-colors" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" + +[[package]] +name = "password-hash" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" +dependencies = [ + "base64ct", + "rand_core", + "subtle", +] + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest", +] + +[[package]] +name = "percent-encoding" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" + +[[package]] +name = "pin-project" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.107", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "pretty-hex" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6fa0831dd7cc608c38a5e323422a0077678fa5744aa2be4ad91c4ece8eec8d5" + +[[package]] +name = "proc-macro2" +version = "1.0.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "protobuf" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55bad9126f378a853655831eb7363b7b01b81d19f8cb1218861086ca4a1a61e" +dependencies = [ + "once_cell", + "protobuf-support", + "thiserror", +] + +[[package]] +name = "protobuf-codegen" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd418ac3c91caa4032d37cb80ff0d44e2ebe637b2fb243b6234bf89cdac4901" +dependencies = [ + "anyhow", + "once_cell", + "protobuf", + "protobuf-parse", + "regex", + "tempfile", + "thiserror", +] + +[[package]] +name = "protobuf-parse" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d39b14605eaa1f6a340aec7f320b34064feb26c93aec35d6a9a2272a8ddfa49" +dependencies = [ + "anyhow", + "indexmap", + "log", + "protobuf", + "protobuf-support", + "tempfile", + "thiserror", + "which", +] + +[[package]] +name = "protobuf-support" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d4d7b8601c814cfb36bcebb79f0e61e45e1e93640cf778837833bbed05c372" +dependencies = [ + "thiserror", +] + +[[package]] +name = "quote" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + +[[package]] +name = "rawslice" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e23c908b26a742e5e3768ea42f19225ef809d3c9e3071bfe3e01c7e9b6fd1cd" +dependencies = [ + "rawpointer", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "reffers" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162d659c5126f0981e174637accc2e8dfb5bec1908c3fd688d8cce663afed248" +dependencies = [ + "stable_deref_trait", +] + +[[package]] +name = "regex" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" + +[[package]] +name = "remove_dir_all" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +dependencies = [ + "winapi", +] + +[[package]] +name = "reqwest" +version = "0.11.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68cc60575865c7831548863cc02356512e3f1dc2f3f82cb837d7fc4cc8f3c97c" +dependencies = [ + "base64", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg", +] + +[[package]] +name = "retina" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8c5ef4eec9b0c6178ac107e1a533bbc5d2ff6a90f8aabd000d71e119c42d96" +dependencies = [ + "base64", + "bitstream-io", + "bytes", + "futures", + "h264-reader", + "hex", + "http-auth", + "log", + "once_cell", + "pin-project", + "pretty-hex", + "rand", + "rtsp-types", + "sdp-types", + "smallvec", + "thiserror", + "time 0.1.45", + "tokio", + "tokio-util", + "url", +] + +[[package]] +name = "rfc6381-codec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4395f46a67f0d57c57f6a5361f3a9a0c0183a19cab3998892ecdc003de6d8037" +dependencies = [ + "four-cc", + "mp4ra-rust", + "mpeg4-audio-const", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin", + "untrusted", + "web-sys", + "winapi", +] + +[[package]] +name = "rtsp-types" +version = "0.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a1aec90dc5d8dec85c14032885770801439acb1651b2f166745ce482a2ddeaf" +dependencies = [ + "cookie-factory", + "nom", + "tinyvec", + "url", +] + +[[package]] +name = "rusqlite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01e213bc3ecb39ac32e81e51ebe31fd888a940515173e3a18a35f8c6e896422a" +dependencies = [ + "bitflags 1.3.2", + "fallible-iterator", + "fallible-streaming-iterator", + "hashlink", + "libsqlite3-sys", + "smallvec", +] + +[[package]] +name = "rustix" +version = "0.38.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aabcb0461ebd01d6b79945797c27f8529082226cb630a9865a71870ff63532a4" +dependencies = [ + "bitflags 2.3.3", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.48.0", +] + +[[package]] +name = "ryu" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" + +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher", +] + +[[package]] +name = "scrypt" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" +dependencies = [ + "hmac", + "password-hash", + "pbkdf2", + "salsa20", + "sha2", +] + +[[package]] +name = "sdp-types" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8db497829e222d081f7b50ac81aec4f69750071a0f76b97b950b0b62204da6e" +dependencies = [ + "bstr", + "fallible-iterator", +] + +[[package]] +name = "serde" +version = "1.0.152" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.152" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.107", +] + +[[package]] +name = "serde_json" +version = "1.0.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "signal-hook" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a253b5e89e2698464fc26b545c9edceb338e18a89effeeecfea192c3025be29d" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +dependencies = [ + "libc", +] + +[[package]] +name = "slab" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" + +[[package]] +name = "socket2" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "subtle" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" + +[[package]] +name = "supports-color" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4950e7174bffabe99455511c39707310e7e9b440364a2fcb1cc21521be57b354" +dependencies = [ + "is-terminal", + "is_ci", +] + +[[package]] +name = "syn" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59fb7d6d8281a51045d62b8eb3a7d1ce347b76f312af50cd3dc0af39c87c1737" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20518fe4a4c9acf048008599e464deb21beeae3d3578418951a189c235a7a9a8" + +[[package]] +name = "tempfile" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +dependencies = [ + "cfg-if", + "fastrand", + "libc", + "redox_syscall", + "remove_dir_all", + "winapi", +] + +[[package]] +name = "term_size" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e4129646ca0ed8f45d09b929036bafad5377103edd06e50bf574b353d2b08d9" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "thiserror" +version = "1.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.107", +] + +[[package]] +name = "thread_local" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "time" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi", +] + +[[package]] +name = "time" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" +dependencies = [ + "itoa", + "libc", + "num_threads", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" + +[[package]] +name = "time-macros" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" +dependencies = [ + "time-core", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + +[[package]] +name = "tokio" +version = "1.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a12a59981d9e3c38d216785b0c37399f6e415e8d0712047620f189371b0bb" +dependencies = [ + "autocfg", + "bytes", + "libc", + "memchr", + "mio", + "num_cpus", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.42.0", +] + +[[package]] +name = "tokio-macros" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.107", +] + +[[package]] +name = "tokio-stream" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d660770404473ccd7bc9f8b28494a811bc18542b915c0855c51e8f419d5223ce" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54319c93411147bced34cb5609a80e0a8e44c5999c93903a81cd866630ec0bfd" +dependencies = [ + "futures-util", + "log", + "tokio", + "tungstenite", +] + +[[package]] +name = "tokio-util" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "toml" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1333c76748e868a4d9d1017b5ab53171dfd095f70c712fdb4653a406547f598f" +dependencies = [ + "serde", +] + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if", + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.107", +] + +[[package]] +name = "tracing-core" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "futures", + "futures-task", + "pin-project", + "tracing", +] + +[[package]] +name = "tracing-log" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +dependencies = [ + "lazy_static", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-serde" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" +dependencies = [ + "serde", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "serde", + "serde_json", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", + "tracing-serde", +] + +[[package]] +name = "tracing-test" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a2c0ff408fe918a94c428a3f2ad04e4afd5c95bbc08fcf868eff750c15728a4" +dependencies = [ + "lazy_static", + "tracing-core", + "tracing-subscriber", + "tracing-test-macro", +] + +[[package]] +name = "tracing-test-macro" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "258bc1c4f8e2e73a977812ab339d503e6feeb92700f6d07a6de4d321522d5c08" +dependencies = [ + "lazy_static", + "quote", + "syn 1.0.107", +] + +[[package]] +name = "try-lock" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" + +[[package]] +name = "tungstenite" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30ee6ab729cd4cf0fd55218530c4522ed30b7b6081752839b68fcec8d0960788" +dependencies = [ + "base64", + "byteorder", + "bytes", + "http", + "httparse", + "log", + "rand", + "sha1", + "thiserror", + "url", + "utf-8", +] + +[[package]] +name = "typenum" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" + +[[package]] +name = "ulid" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13a3aaa69b04e5b66cc27309710a569ea23593612387d67daaf102e73aa974fd" +dependencies = [ + "rand", +] + +[[package]] +name = "unchecked-index" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eeba86d422ce181a719445e51872fa30f1f7413b62becb52e95ec91aa262d85c" + +[[package]] +name = "unicode-bidi" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" + +[[package]] +name = "unicode-ident" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a" + +[[package]] +name = "unicode-width" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "url" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "uuid" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "422ee0de9031b5b948b97a8fc04e3aa35230001a722ddd27943e0be31564ce4c" +dependencies = [ + "getrandom", + "serde", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "want" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +dependencies = [ + "log", + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 1.0.107", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.107", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" + +[[package]] +name = "web-sys" +version = "0.3.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "which" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c831fbbee9e129a8cf93e7747a82da9d95ba8e16621cae60ec2cdc849bacb7b" +dependencies = [ + "either", + "libc", + "once_cell", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +dependencies = [ + "windows_aarch64_gnullvm 0.42.0", + "windows_aarch64_msvc 0.42.0", + "windows_i686_gnu 0.42.0", + "windows_i686_msvc 0.42.0", + "windows_x86_64_gnu 0.42.0", + "windows_x86_64_gnullvm 0.42.0", + "windows_x86_64_msvc 0.42.0", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +dependencies = [ + "windows_aarch64_gnullvm 0.48.0", + "windows_aarch64_msvc 0.48.0", + "windows_i686_gnu 0.48.0", + "windows_i686_msvc 0.48.0", + "windows_x86_64_gnu 0.48.0", + "windows_x86_64_gnullvm 0.48.0", + "windows_x86_64_msvc 0.48.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + +[[package]] +name = "winreg" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +dependencies = [ + "winapi", +] + +[[package]] +name = "xi-unicode" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a67300977d3dc3f8034dae89778f502b6ba20b269527b3223ba59c0cf393bb8a" diff --git a/nixpkgs/pkgs/misc/moonfire-nvr/default.nix b/nixpkgs/pkgs/misc/moonfire-nvr/default.nix new file mode 100644 index 000000000000..0946161ce52f --- /dev/null +++ b/nixpkgs/pkgs/misc/moonfire-nvr/default.nix @@ -0,0 +1,81 @@ +{ lib +, rustPlatform +, buildNpmPackage +, fetchFromGitHub +, pkg-config +, ncurses +, sqlite +, testers +, moonfire-nvr +}: + +let + pname = "moonfire-nvr"; + version = "0.7.7"; + src = fetchFromGitHub { + owner = "scottlamb"; + repo = "moonfire-nvr"; + rev = "v${version}"; + hash = "sha256-+7VahlS+NgaO2knP+xqdlZnNEfjz8yyF/VmjWf77KXI="; + }; + ui = buildNpmPackage { + inherit version src; + pname = "${pname}-ui"; + sourceRoot = "${src.name}/ui"; + npmDepsHash = "sha256-IpZWgMo6Y3vRn9h495ifMB3tQxobLeTLC0xXS1vrKLA="; + installPhase = '' + runHook preInstall + + cp -r build $out + + runHook postInstall + ''; + }; +in rustPlatform.buildRustPackage { + inherit pname version src; + + sourceRoot = "${src.name}/server"; + + cargoLock = { + lockFile = ./Cargo.lock; + outputHashes = { + "coded-0.2.0-pre" = "sha256-ICDvLFCsiPCzAzf3nrRhH/McNPVQz1+uVOmj6Uc5teg="; + "hashlink-0.8.1" = "sha256-h7DEapTVy0SSTaOV9rCkdH3em4A9+PS0k1QQh1+0P4c="; + "mp4-0.9.2" = "sha256-mJZJDzD8Ep9c+4QusyBtRoqAArHK9SLdFxG1AR7JydE="; + }; + }; + + nativeBuildInputs = [ + pkg-config + ]; + + buildInputs = [ + ncurses + sqlite + ]; + + postInstall = '' + mkdir -p $out/lib/ui + ln -s ${ui} $out/lib/ui + ''; + + doCheck = false; + + passthru = { + inherit ui; + tests.version = testers.testVersion { + inherit version; + package = moonfire-nvr; + command = "moonfire-nvr --version"; + }; + }; + + meta = with lib; { + description = "Moonfire NVR, a security camera network video recorder"; + homepage = "https://github.com/scottlamb/moonfire-nvr"; + changelog = "https://github.com/scottlamb/moonfire-nvr/releases/tag/v${version}"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ gaelreyrol ]; + mainProgram = "moonfire-nvr"; + }; +} diff --git a/nixpkgs/pkgs/misc/mxt-app/default.nix b/nixpkgs/pkgs/misc/mxt-app/default.nix new file mode 100644 index 000000000000..0f231bfd2f54 --- /dev/null +++ b/nixpkgs/pkgs/misc/mxt-app/default.nix @@ -0,0 +1,27 @@ +{ lib, stdenv, fetchFromGitHub, autoreconfHook, libtool }: + +stdenv.mkDerivation rec { + version="1.36"; + pname = "mxt-app"; + + src = fetchFromGitHub { + owner = "atmel-maxtouch"; + repo = "mxt-app"; + rev = "v${version}"; + sha256 = "sha256-hS/4d7HUCoulY73Sn1+IAb/IWD4VDht78Tn2jdluzhU="; + }; + + nativeBuildInputs = [ autoreconfHook ]; + buildInputs = [ libtool ]; + + hardeningDisable = [ "fortify" ]; + + meta = with lib; { + description = "Command line utility for Atmel maXTouch devices"; + homepage = "https://github.com/atmel-maxtouch/mxt-app"; + license = licenses.bsd2; + maintainers = [ maintainers.colemickens ]; + platforms = platforms.linux; + mainProgram = "mxt-app"; + }; +} diff --git a/nixpkgs/pkgs/misc/my-env/default.nix b/nixpkgs/pkgs/misc/my-env/default.nix new file mode 100644 index 000000000000..df4c8fc6b63d --- /dev/null +++ b/nixpkgs/pkgs/misc/my-env/default.nix @@ -0,0 +1,152 @@ +# idea: provide a build environments for your developement of preference +/* + #### examples of use: #### + # Add this to your ~/.config/nixpkgs/config.nix: + { + packageOverrides = pkgs : with pkgs; { + sdlEnv = pkgs.myEnvFun { + name = "sdl"; + nativeBuildInputs = [ cmake pkg-config ]; + buildInputs = [ stdenv SDL SDL_image SDL_ttf SDL_gfx SDL_net]; + }; + }; + } + + # Then you can install it by: + # $ nix-env -i env-sdl + # And you can load it simply calling: + # $ load-env-sdl + # and this will update your env vars to have 'make' and 'gcc' finding the SDL + # headers and libs. + + + ##### Another example, more complicated but achieving more: ####### + # Make an environment to build nix from source and create ctags (tagfiles can + # be extracted from TAG_FILES) from every source package. Here would be a + # full ~/.config/nixpkgs/config.nix + { + packageOverrides = pkgs : with pkgs; with sourceAndTags; + let complicatedMyEnv = { name, buildInputs ? [], cTags ? [], extraCmds ? ""}: + pkgs.myEnvFun { + inherit name; + buildInputs = buildInputs + ++ map (x : sourceWithTagsDerivation + ( (addCTaggingInfo x ).passthru.sourceWithTags ) ) cTags; + extraCmds = '' + ${extraCmds} + HOME=${builtins.getEnv "HOME"} + . ~/.bashrc + ''; + }; + in rec { + # this is the example we will be using + nixEnv = complicatedMyEnv { + name = "nix"; + buildInputs = [ libtool stdenv perl curl bzip2 openssl db5 autoconf automake zlib ]; + }; + }; + } + + # Now we should build our newly defined custom environment using this command on a shell, so type: + # $ nix-env -i env-nix + + # You can load the environment simply typing a "load-env-${name}" command. + # $ load-env-nix + # The result using that command should be: + # env-nix loaded + and show you a shell with a prefixed prompt. +*/ + +{ mkDerivation, substituteAll, pkgs }: + { stdenv ? pkgs.stdenv, name, buildInputs ? [] + , propagatedBuildInputs ? [], gcc ? stdenv.cc, extraCmds ? "" + , cleanupCmds ? "", shell ? "${pkgs.bashInteractive}/bin/bash --norc"}: + +mkDerivation { + inherit buildInputs propagatedBuildInputs; + + name = "env-${name}"; + phases = [ "buildPhase" "fixupPhase" ]; + setupNew = substituteAll { + src = ../../stdenv/generic/setup.sh; + inherit gcc; + }; + + buildPhase = let + initialPath = import ../../stdenv/generic/common-path.nix { inherit pkgs; }; + in '' + set -x + mkdir -p "$out/dev-envs" "$out/nix-support" "$out/bin" + s="$out/nix-support/setup-new-modified" + # shut some warning up.., do not use set -e + sed -e 's@set -eu@@' \ + -e 's@assertEnvExists\s\+NIX_STORE@:@' \ + -e 's@trap.*@@' \ + -e '1i initialPath="${toString initialPath}"' \ + "$setupNew" > "$s" + cat >> "$out/dev-envs/''${name/env-/}" << EOF + defaultNativeBuildInputs="$defaultNativeBuildInputs" + buildInputs="$buildInputs" + propagatedBuildInputs="$propagatedBuildInputs" + # the setup-new script wants to write some data to a temp file.. so just let it do that and tidy up afterwards + tmp="\$("${pkgs.coreutils}/bin/mktemp" -d)" + NIX_BUILD_TOP="\$tmp" + phases= + # only do all the setup stuff in nix-support/* + set +e + # This prevents having -rpath /lib in NIX_LDFLAGS + export NIX_NO_SELF_RPATH=1 + if [[ -z "\$ZSH_VERSION" ]]; then + source "$s" + else + setopt interactivecomments + # fix bash indirection + # let's hope the bash arrays aren't used + # substitute is using bash array, so skip it + echo ' + setopt NO_BAD_PATTERN + setopt NO_BANG_HIST + setopt NO_BG_NICE + setopt NO_EQUALS + setopt NO_FUNCTION_ARGZERO + setopt GLOB_SUBST + setopt NO_HUP + setopt INTERACTIVE_COMMENTS + setopt KSH_ARRAYS + setopt NO_MULTIOS + setopt NO_NOMATCH + setopt RM_STAR_SILENT + setopt POSIX_BUILTINS + setopt SH_FILE_EXPANSION + setopt SH_GLOB + setopt SH_OPTION_LETTERS + setopt SH_WORD_SPLIT + ' >> "\$tmp/script" + sed -e 's/\''${!\([^}]*\)}/\''${(P)\1}/g' \ + -e 's/[[]\*\]//' \ + -e 's/substitute() {/ substitute() { return; /' \ + -e 's@PATH=\$@PATH=${pkgs.coreutils}/bin@' \ + "$s" >> "\$tmp/script" + echo "\$tmp/script"; + source "\$tmp/script"; + fi + ${pkgs.coreutils}/bin/rm -fr "\$tmp" + ${extraCmds} + + nix_cleanup() { + : + ${cleanupCmds} + } + + export PATH + echo $name loaded >&2 + + trap nix_cleanup EXIT + EOF + + mkdir -p $out/bin + sed -e 's,@shell@,${shell},' -e s,@myenvpath@,$out/dev-envs/${name}, \ + -e 's,@name@,${name},' ${./loadenv.sh} > $out/bin/load-env-${name} + chmod +x $out/bin/load-env-${name} + ''; +} diff --git a/nixpkgs/pkgs/misc/my-env/loadenv.sh b/nixpkgs/pkgs/misc/my-env/loadenv.sh new file mode 100644 index 000000000000..1688d2f158fb --- /dev/null +++ b/nixpkgs/pkgs/misc/my-env/loadenv.sh @@ -0,0 +1,22 @@ +#!@shell@ + +OLDPATH="$PATH" +OLDTZ="$TZ" +OLD_http_proxy="$http_proxy" +OLD_ftp_proxy="$http_proxy" +source @myenvpath@ + +PATH="$PATH:$OLDPATH" +export PS1="\n@name@:[\u@\h:\w]\$ " +export NIX_MYENV_NAME="@name@" +export buildInputs +export TZ="$OLDTZ" +export http_proxy="$OLD_http_proxy" +export ftp_proxy="$OLD_ftp_proxy" + +if test $# -gt 0; then + exec "$@" +else + exec @shell@ +fi + diff --git a/nixpkgs/pkgs/misc/nflz/default.nix b/nixpkgs/pkgs/misc/nflz/default.nix new file mode 100644 index 000000000000..3d455d908073 --- /dev/null +++ b/nixpkgs/pkgs/misc/nflz/default.nix @@ -0,0 +1,35 @@ +{ fetchCrate +, lib +, rustPlatform +}: + +rustPlatform.buildRustPackage rec { + pname = "nflz"; + version = "1.0.2"; + + src = fetchCrate { + inherit pname version; + hash = "sha256-c9+79zrIU/M1Rh+DiaLJzbrNSa4IKrYk1gP0dsabUiw="; + }; + + cargoHash = "sha256-+SOoZFVJ6mASRKufQE4JmHGKR5rbBgg1PmCrI6dvvko="; + + # Tests do not work in the package published on crates.io, since the folder + # with test resources is not packaged. + doCheck = false; + + meta = { + description = "Numbered Files Leading Zeros helps you to manage ascending numbered file names"; + longDescription = '' + CLI to add leading zeros to ascending numbered file names. + NFLZ stands for Numbered Files Leading Zeros. + + This library helps you to manage files inside your file system that + belong to a set of ordered files. An example are photos from a camera. + ''; + homepage = "https://github.com/phip1611/nflz"; + license = with lib.licenses; [ mit ]; + maintainers = with lib.maintainers; [ phip1611 ]; + mainProgram = "nflz"; + }; +} diff --git a/nixpkgs/pkgs/misc/opcua-client-gui/default.nix b/nixpkgs/pkgs/misc/opcua-client-gui/default.nix new file mode 100644 index 000000000000..962d48be8f8e --- /dev/null +++ b/nixpkgs/pkgs/misc/opcua-client-gui/default.nix @@ -0,0 +1,61 @@ +{ lib +, stdenv +, python3Packages +, fetchFromGitHub +, makeDesktopItem +, copyDesktopItems +, desktopToDarwinBundle +, wrapQtAppsHook +}: + +python3Packages.buildPythonApplication rec { + pname = "opcua-client-gui"; + version = "0.8.4"; + + src = fetchFromGitHub { + owner = "FreeOpcUa"; + repo = "opcua-client-gui"; + rev = version; + hash = "sha256-0BH1Txr3z4a7iFcsfnovmBUreXMvIX2zpZa8QivQVx8="; + }; + + nativeBuildInputs = [ copyDesktopItems wrapQtAppsHook ] + ++ lib.optionals stdenv.isDarwin [ desktopToDarwinBundle ]; + + makeWrapperArgs = [ + "\${qtWrapperArgs[@]}" + ]; + + propagatedBuildInputs = with python3Packages; [ + pyqt5 + asyncua + opcua-widgets + numpy + pyqtgraph + ]; + + #This test uses a deprecated libarby, when updating the package check if the test was updated as well + doCheck = false; + + desktopItems = [ + (makeDesktopItem { + name = "opcua-client"; + exec = "opcua-client"; + comment = "OPC UA Client"; + type = "Application"; + #no icon because the app dosn't have one + desktopName = "opcua-client"; + terminal = false; + categories = [ "Utility" ]; + }) + ]; + + meta = with lib; { + description = "OPC UA GUI Client"; + homepage = "https://github.com/FreeOpcUa/opcua-client-gui"; + platforms = platforms.unix; + license = licenses.gpl3Only; + maintainers = with maintainers; [ janik ]; + mainProgram = "opcua-client"; + }; +} diff --git a/nixpkgs/pkgs/misc/opensbi/default.nix b/nixpkgs/pkgs/misc/opensbi/default.nix new file mode 100644 index 000000000000..347e7deb0d31 --- /dev/null +++ b/nixpkgs/pkgs/misc/opensbi/default.nix @@ -0,0 +1,51 @@ +{ lib +, stdenv +, fetchFromGitHub +, python3 +, withPlatform ? "generic" +, withPayload ? null +, withFDT ? null +}: + +stdenv.mkDerivation rec { + pname = "opensbi"; + version = "1.4"; + + src = fetchFromGitHub { + owner = "riscv-software-src"; + repo = "opensbi"; + rev = "v${version}"; + hash = "sha256-T8ZeAzjM9aeTXitjE7s+m+jjGGtDo2jK1qO5EuKiVLU="; + }; + + postPatch = '' + patchShebangs ./scripts + ''; + + nativeBuildInputs = [ python3 ]; + + installFlags = [ + "I=$(out)" + ]; + + makeFlags = [ + "PLATFORM=${withPlatform}" + ] ++ lib.optionals (withPayload != null) [ + "FW_PAYLOAD_PATH=${withPayload}" + ] ++ lib.optionals (withFDT != null) [ + "FW_FDT_PATH=${withFDT}" + ]; + + enableParallelBuilding = true; + + dontStrip = true; + dontPatchELF = true; + + meta = with lib; { + description = "RISC-V Open Source Supervisor Binary Interface"; + homepage = "https://github.com/riscv-software-src/opensbi"; + license = licenses.bsd2; + maintainers = with maintainers; [ ius nickcao zhaofengli ]; + platforms = [ "riscv64-linux" "riscv32-linux" ]; + }; +} diff --git a/nixpkgs/pkgs/misc/plasma-hud/default.nix b/nixpkgs/pkgs/misc/plasma-hud/default.nix new file mode 100644 index 000000000000..c0cf771da849 --- /dev/null +++ b/nixpkgs/pkgs/misc/plasma-hud/default.nix @@ -0,0 +1,42 @@ +{ lib, python3, fetchFromGitHub, rofi, gobject-introspection }: + +python3.pkgs.buildPythonApplication rec{ + pname = "plasma-hud"; + version = "19.10.1"; + + src = fetchFromGitHub { + owner = "Zren"; + repo = pname; + rev = version; + sha256 = "19vlc156jfdamw7q1pc78fmlf0h3sff5ar3di9j316vbb60js16l"; + }; + + propagatedBuildInputs = with python3.pkgs; [ + rofi + dbus-python + setproctitle + xlib + pygobject3 + gobject-introspection + ]; + format = "other"; + postPatch = '' + sed -i "s:/usr/lib/plasma-hud:$out/bin:" etc/xdg/autostart/plasma-hud.desktop + ''; + + installPhase = '' + patchShebangs $out/bin/plasma-hud + mkdir -p $out/bin $out/etc/xdg/autostart + cp -r $src/usr/lib/plasma-hud/plasma-hud $out/bin/plasma-hud + cp -r $src/etc $out/etc + ''; + + meta = with lib;{ + license = licenses.gpl2Only; + homepage = "https://github.com/Zren/plasma-hud"; + platforms = platforms.unix; + description = "Run menubar commands, much like the Unity 7 Heads-Up Display (HUD)"; + maintainers = with maintainers; [ pasqui23 ]; + mainProgram = "plasma-hud"; + }; +} diff --git a/nixpkgs/pkgs/misc/present/default.nix b/nixpkgs/pkgs/misc/present/default.nix new file mode 100644 index 000000000000..6ed15f03e6e4 --- /dev/null +++ b/nixpkgs/pkgs/misc/present/default.nix @@ -0,0 +1,32 @@ +{ lib, python3Packages, fetchPypi }: + +python3Packages.buildPythonPackage rec { + pname = "present"; + version = "0.6.0"; + + src = fetchPypi { + inherit pname version; + sha256 = "sha256-l9W5L4LD9qRo3rLBkgd2I/aDaj+ucib5UYg+X4RYg6c="; + }; + + propagatedBuildInputs = with python3Packages; [ + click + pyyaml + pyfiglet + asciimatics + mistune + ]; + + pythonImportsCheck = [ "present" ]; + + # TypeError: don't know how to make test from: 0.6.0 + doCheck = false; + + meta = with lib; { + description = "A terminal-based presentation tool with colors and effects."; + homepage = "https://github.com/vinayak-mehta/present"; + license = licenses.asl20; + maintainers = with maintainers; [ lom ]; + mainProgram = "present"; + }; +} diff --git a/nixpkgs/pkgs/misc/ptouch-print/default.nix b/nixpkgs/pkgs/misc/ptouch-print/default.nix new file mode 100644 index 000000000000..da0d3c8c97d3 --- /dev/null +++ b/nixpkgs/pkgs/misc/ptouch-print/default.nix @@ -0,0 +1,35 @@ +{ lib, stdenv +, fetchgit +, autoreconfHook +, gd +, libusb1 +}: + +stdenv.mkDerivation rec { + pname = "ptouch-print"; + version = "1.4.3"; + + src = fetchgit { + url = "https://mockmoon-cybernetics.ch/cgi/cgit/linux/ptouch-print.git"; + rev = "v${version}"; + sha256 = "0i57asg2hj1nfwy5lcb0vhrpvb9dqfhf81vh4i929h1kiqhlw2hx"; + }; + + nativeBuildInputs = [ + autoreconfHook + ]; + + buildInputs = [ + gd + libusb1 + ]; + + meta = with lib; { + description = "Command line tool to print labels on Brother P-Touch printers on Linux"; + license = licenses.gpl3Plus; + homepage = "https://mockmoon-cybernetics.ch/computer/p-touch2430pc/"; + maintainers = with maintainers; [ shamilton ]; + platforms = platforms.linux; + mainProgram = "ptouch-print"; + }; +} diff --git a/nixpkgs/pkgs/misc/pylode/default.nix b/nixpkgs/pkgs/misc/pylode/default.nix new file mode 100644 index 000000000000..7212da7b867f --- /dev/null +++ b/nixpkgs/pkgs/misc/pylode/default.nix @@ -0,0 +1,50 @@ +{ lib +, python3 +, fetchFromGitHub +}: + +python3.pkgs.buildPythonApplication rec { + pname = "pylode"; + version = "2.13.3"; + format = "setuptools"; + + disabled = python3.pythonOlder "3.6"; + + src = fetchFromGitHub { + owner = "RDFLib"; + repo = pname; + rev = "refs/tags/${version}"; + sha256 = "sha256-AtqkxnpEL+580S/iKCaRcsQO6LLYhkJxyNx6fi3atbE="; + }; + + propagatedBuildInputs = with python3.pkgs; [ + beautifulsoup4 + falcon + jinja2 + markdown + python-dateutil + rdflib + requests + ]; + + postPatch = '' + substituteInPlace requirements.txt \ + --replace "rdflib==6.0.0" "rdflib" + ''; + + # Path issues with the tests + doCheck = false; + + pythonImportsCheck = [ + "pylode" + ]; + + meta = with lib; { + description = "OWL ontology documentation tool using Python and templating, based on LODE"; + homepage = "https://github.com/RDFLib/pyLODE"; + # Next release will move to BSD3 + license = licenses.gpl3Only; + maintainers = with maintainers; [ koslambrou ]; + mainProgram = "pylode"; + }; +} diff --git a/nixpkgs/pkgs/misc/rich-cli/default.nix b/nixpkgs/pkgs/misc/rich-cli/default.nix new file mode 100644 index 000000000000..9d03cfc66917 --- /dev/null +++ b/nixpkgs/pkgs/misc/rich-cli/default.nix @@ -0,0 +1,80 @@ +{ lib +, fetchFromGitHub +, python3 +}: + +let + py = python3.override { + packageOverrides = final: prev: { + rich = prev.rich.overridePythonAttrs (old: rec { + version = "12.4.0"; + src = fetchFromGitHub { + owner = "Textualize"; + repo = "rich"; + rev = "refs/tags/v12.4.0"; + hash = "sha256-ryJTusUNpvNF2031ICJWK8ScxHIh+LrXYg7nd0ph4aQ="; + }; + propagatedBuildInputs = with py.pkgs; [ + commonmark + pygments + ]; + doCheck = false; + }); + + textual = prev.textual.overridePythonAttrs (old: rec { + version = "0.1.18"; + src = fetchFromGitHub { + owner = "Textualize"; + repo = "textual"; + rev = "refs/tags/v0.1.18"; + hash = "sha256-XVmbt8r5HL8r64ISdJozmM+9HuyvqbpdejWICzFnfiw="; + }; + doCheck = false; + }); + }; + }; +in + +python3.pkgs.buildPythonApplication rec { + pname = "rich-cli"; + version = "1.8.0"; + format = "pyproject"; + + src = fetchFromGitHub { + owner = "Textualize"; + repo = pname; + rev = "refs/tags/v${version}"; + hash = "sha256-mV5b/J9wX9niiYtlmAUouaAm9mY2zTtDmex7FNWcezQ="; + }; + + postPatch = '' + substituteInPlace pyproject.toml \ + --replace 'rich = "^12.4.0"' 'rich = "*"' \ + --replace 'textual = "^0.1.18"' 'textual = "*"' + ''; + + nativeBuildInputs = with py.pkgs; [ + poetry-core + ]; + + propagatedBuildInputs = with py.pkgs; [ + rich + click + requests + textual + rich-rst + ]; + + pythonImportsCheck = [ + "rich_cli" + ]; + + meta = with lib; { + description = "Command Line Interface to Rich"; + homepage = "https://github.com/Textualize/rich-cli"; + changelog = "https://github.com/Textualize/rich-cli/releases/tag/v${version}"; + license = licenses.mit; + maintainers = with maintainers; [ joelkoen ]; + mainProgram = "rich"; + }; +} diff --git a/nixpkgs/pkgs/misc/riscv-pk/default.nix b/nixpkgs/pkgs/misc/riscv-pk/default.nix new file mode 100644 index 000000000000..66b7321c780d --- /dev/null +++ b/nixpkgs/pkgs/misc/riscv-pk/default.nix @@ -0,0 +1,41 @@ +{ lib, stdenv, fetchFromGitHub, autoreconfHook, payload ? null }: + +stdenv.mkDerivation rec { + pname = "riscv-pk"; + version = "1.0.0"; + + src = fetchFromGitHub { + owner = "riscv"; + repo = "riscv-pk"; + rev = "v${version}"; + sha256 = "1cc0rz4q3a1zw8756b8yysw8lb5g4xbjajh5lvqbjix41hbdx6xz"; + }; + + nativeBuildInputs = [ autoreconfHook ]; + + preConfigure = '' + mkdir build + cd build + ''; + + configureScript = "../configure"; + + configureFlags = lib.optional (payload != null) + "--with-payload=${payload}"; + + hardeningDisable = [ "all" ]; + + postInstall = '' + mv $out/* $out/.cleanup + mv $out/.cleanup/* $out + rmdir $out/.cleanup + ''; + + meta = { + description = "RISC-V Proxy Kernel and Bootloader"; + homepage = "https://github.com/riscv/riscv-pk"; + license = lib.licenses.bsd3; + platforms = lib.platforms.riscv; + maintainers = [ lib.maintainers.shlevy ]; + }; +} diff --git a/nixpkgs/pkgs/misc/rivalcfg/default.nix b/nixpkgs/pkgs/misc/rivalcfg/default.nix new file mode 100644 index 000000000000..f6b45af3af34 --- /dev/null +++ b/nixpkgs/pkgs/misc/rivalcfg/default.nix @@ -0,0 +1,41 @@ +{ lib, fetchFromGitHub, python3Packages }: + +python3Packages.buildPythonPackage rec { + pname = "rivalcfg"; + version = "4.8.0"; + + src = fetchFromGitHub { + owner = "flozz"; + repo = "rivalcfg"; + rev = "v${version}"; + sha256 = "sha256-fCl+XY+R+QF7jWLkqii4v0sbXr7xoX3A3upm+XoBAms="; + }; + + propagatedBuildInputs = with python3Packages; [ hidapi setuptools ]; + + checkInputs = [ python3Packages.pytest ]; + checkPhase = "pytest"; + + # tests are broken + doCheck = false; + + postInstall = '' + set -x + mkdir -p $out/lib/udev/rules.d + tmpl_udev="$out/lib/udev/rules.d/99-rivalcfg.rules" + tmpudev="''${tmpl_udev}.in" + finaludev="$tmpl_udev" + "$out/bin/rivalcfg" --print-udev > "$tmpudev" + substitute "$tmpudev" "$out/lib/udev/rules.d/99-rivalcfg.rules" \ + --replace MODE=\"0666\" "MODE=\"0664\", GROUP=\"input\"" + rm "$tmpudev" + ''; + + meta = with lib; { + description = "Utility program that allows you to configure SteelSeries Rival gaming mice"; + homepage = "https://github.com/flozz/rivalcfg"; + license = licenses.wtfpl; + maintainers = with maintainers; [ ornxka ]; + mainProgram = "rivalcfg"; + }; +} diff --git a/nixpkgs/pkgs/misc/rkdeveloptool-pine64/default.nix b/nixpkgs/pkgs/misc/rkdeveloptool-pine64/default.nix new file mode 100644 index 000000000000..b70298ded96a --- /dev/null +++ b/nixpkgs/pkgs/misc/rkdeveloptool-pine64/default.nix @@ -0,0 +1,45 @@ +{ lib +, stdenv +, fetchurl +, meson +, pkg-config +, libusb1 +, scdoc +, ninja +, cmake +}: + +let + rev = "cce7d2a5c4efd4e7727c440868141229354b327b"; +in +stdenv.mkDerivation { + pname = "rkdeveloptool"; + version = "unstable-2021-09-04"; + + src = fetchurl { + url = "https://gitlab.com/pine64-org/quartz-bsp/rkdeveloptool/-/archive/${rev}/rkdeveloptool-${rev}.tar.gz"; + sha256 = "sha256-u/x1Y1zZ19SYwNLVAvpqjH247RijyDJ1HTDWIsmqlFk="; + }; + + postPatch = '' + substituteInPlace meson.build --replace \ + "udev_rules_dir = udev.get_pkgconfig_variable('udevdir') + '/rules.d'" \ + "udev_rules_dir = '$out/lib/udev'" + ''; + + nativeBuildInputs = [ meson ninja cmake pkg-config scdoc ]; + + buildInputs = [ libusb1 ]; + + meta = + let + inherit (lib) maintainers; + in + { + homepage = "https://gitlab.com/pine64-org/quartz-bsp/rkdeveloptool/"; + description = "A tool from Rockchip to communicate with Rockusb devices (pine64 fork)"; + license = lib.licenses.gpl2; + maintainers = [ maintainers.adisbladis ]; + mainProgram = "rkdeveloptool"; + }; +} diff --git a/nixpkgs/pkgs/misc/rkdeveloptool/default.nix b/nixpkgs/pkgs/misc/rkdeveloptool/default.nix new file mode 100644 index 000000000000..341232e8cf19 --- /dev/null +++ b/nixpkgs/pkgs/misc/rkdeveloptool/default.nix @@ -0,0 +1,28 @@ +{ lib, stdenv, fetchFromGitHub, autoreconfHook, pkg-config, libusb1 }: + +stdenv.mkDerivation { + pname = "rkdeveloptool"; + version = "unstable-2021-04-08"; + + src = fetchFromGitHub { + owner = "rockchip-linux"; + repo = "rkdeveloptool"; + rev = "46bb4c073624226c3f05b37b9ecc50bbcf543f5a"; + sha256 = "eIFzyoY6l3pdfCN0uS16hbVp0qzdG3MtcS1jnDX1Yk0="; + }; + + nativeBuildInputs = [ autoreconfHook pkg-config ]; + + buildInputs = [ libusb1 ]; + + # main.cpp:1568:36: error: '%s' directive output may be truncated writing up to 557 bytes into a region of size 5 + CPPFLAGS = lib.optionals stdenv.cc.isGNU [ "-Wno-error=format-truncation" ]; + + meta = with lib; { + homepage = "https://github.com/rockchip-linux/rkdeveloptool"; + description = "A tool from Rockchip to communicate with Rockusb devices"; + license = licenses.gpl2; + maintainers = [ maintainers.lopsided98 ]; + mainProgram = "rkdeveloptool"; + }; +} diff --git a/nixpkgs/pkgs/misc/sagetex/default.nix b/nixpkgs/pkgs/misc/sagetex/default.nix new file mode 100644 index 000000000000..96513b4f9f39 --- /dev/null +++ b/nixpkgs/pkgs/misc/sagetex/default.nix @@ -0,0 +1,46 @@ +{ lib +, stdenv +, fetchFromGitHub +, writeShellScript +, texliveBasic +}: + +stdenv.mkDerivation rec { + pname = "sagetex"; + version = "3.6.1"; + + src = fetchFromGitHub { + owner = "sagemath"; + repo = "sagetex"; + rev = "v${version}"; + sha256 = "sha256-OfhbXHbGI+DaDHqZCOGiSHJPHjGuT7ZqSEjKweloW38="; + }; + + outputs = [ "tex" ]; + + nativeBuildInputs = [ + texliveBasic + # multiple-outputs.sh fails if $out is not defined + (writeShellScript "force-tex-output.sh" '' + out="''${tex-}" + '') + ]; + + buildPhase = '' + make sagetex.sty + ''; + + installPhase = '' + path="$out/tex/latex/sagetex" + mkdir -p "$path" + cp -va *.sty *.cfg *.def "$path/" + ''; + + meta = with lib; { + description = "Embed code, results of computations, and plots from Sage into LaTeX documents"; + homepage = "https://github.com/sagemath/sagetex"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ alexnortung ]; + platforms = platforms.all; + }; +} diff --git a/nixpkgs/pkgs/misc/sailsd/default.nix b/nixpkgs/pkgs/misc/sailsd/default.nix new file mode 100644 index 000000000000..50eb8e61ca32 --- /dev/null +++ b/nixpkgs/pkgs/misc/sailsd/default.nix @@ -0,0 +1,49 @@ +{ lib, stdenv, fetchFromGitHub, pkg-config, jansson }: + +let + libsailing = fetchFromGitHub { + owner = "sails-simulator"; + repo = "libsailing"; + rev = "9b2863ff0c539cd23d91b0254032a7af9c840574"; + sha256 = "06rcxkwgms9sxqr1swnnc4jnvgs0iahm4cksd475yd1bp5p1gq6j"; + }; +in +stdenv.mkDerivation rec { + version = "0.3.0"; + pname = "sailsd"; + src = fetchFromGitHub { + owner = "sails-simulator"; + repo = "sailsd"; + rev = version; + sha256 = "1s4nlffp683binbdxwwzbsci61kbjylbcr1jf44sv1h1r5d5js05"; + }; + + nativeBuildInputs = [ pkg-config ]; + buildInputs = [ jansson libsailing ]; + + INSTALL_PATH = "$(out)"; + + postUnpack = '' + rmdir $sourceRoot/libsailing + cp -r ${libsailing} $sourceRoot/libsailing + chmod 755 -R $sourceRoot/libsailing + ''; + + patchPhase = '' + substituteInPlace Makefile \ + --replace gcc cc + ''; + + meta = with lib; { + description = "Simulator daemon for autonomous sailing boats"; + homepage = "https://github.com/sails-simulator/sailsd"; + license = licenses.gpl3; + longDescription = '' + Sails is a simulator designed to test the AI of autonomous sailing + robots. It emulates the basic physics of sailing a small single sail + boat''; + maintainers = with maintainers; [ kragniz ]; + platforms = platforms.all; + mainProgram = "sailsd"; + }; +} diff --git a/nixpkgs/pkgs/misc/scrcpy/default.nix b/nixpkgs/pkgs/misc/scrcpy/default.nix new file mode 100644 index 000000000000..a1c8fb43c20f --- /dev/null +++ b/nixpkgs/pkgs/misc/scrcpy/default.nix @@ -0,0 +1,79 @@ +{ lib +, stdenv +, fetchurl +, fetchFromGitHub +, makeWrapper +, meson +, ninja +, pkg-config +, runtimeShell +, installShellFiles + +, android-tools +, ffmpeg +, libusb1 +, SDL2 +}: + +let + version = "2.3.1"; + prebuilt_server = fetchurl { + name = "scrcpy-server"; + inherit version; + url = "https://github.com/Genymobile/scrcpy/releases/download/v${version}/scrcpy-server-v${version}"; + hash = "sha256-9oFIIvwwinpTLyU0hckDgYPGKWpsXfRwqeODtPjnYFs="; + }; +in +stdenv.mkDerivation rec { + pname = "scrcpy"; + inherit version; + + src = fetchFromGitHub { + owner = "Genymobile"; + repo = "scrcpy"; + rev = "refs/tags/v${version}"; + hash = "sha256-RM29WjzsYnn26x/Xr2RKp0p87/v+Jl8skEcAwxhZEtU="; + }; + + # display.c: When run without a hardware accelerator, this allows the command to continue working rather than failing unexpectedly. + # This can happen when running on non-NixOS because then scrcpy seems to have a hard time using the host OpenGL-supporting hardware. + # It would be better to fix the OpenGL problem, but that seems much more intrusive. + postPatch = '' + substituteInPlace app/src/display.c \ + --replace "SDL_RENDERER_ACCELERATED" "SDL_RENDERER_ACCELERATED || SDL_RENDERER_SOFTWARE" + ''; + + nativeBuildInputs = [ makeWrapper meson ninja pkg-config installShellFiles ]; + + buildInputs = [ ffmpeg SDL2 libusb1 ]; + + # Manually install the server jar to prevent Meson from "fixing" it + preConfigure = '' + echo -n > server/meson.build + ''; + + postInstall = '' + mkdir -p "$out/share/scrcpy" + ln -s "${prebuilt_server}" "$out/share/scrcpy/scrcpy-server" + + # runtime dep on `adb` to push the server + wrapProgram "$out/bin/scrcpy" --prefix PATH : "${android-tools}/bin" + '' + lib.optionalString stdenv.isLinux '' + substituteInPlace $out/share/applications/scrcpy-console.desktop \ + --replace "/bin/bash" "${runtimeShell}" + ''; + + meta = with lib; { + description = "Display and control Android devices over USB or TCP/IP"; + homepage = "https://github.com/Genymobile/scrcpy"; + changelog = "https://github.com/Genymobile/scrcpy/releases/tag/v${version}"; + sourceProvenance = with sourceTypes; [ + fromSource + binaryBytecode # server + ]; + license = licenses.asl20; + platforms = platforms.unix; + maintainers = with maintainers; [ deltaevo msfjarvis ]; + mainProgram = "scrcpy"; + }; +} diff --git a/nixpkgs/pkgs/misc/screensavers/alock/default.nix b/nixpkgs/pkgs/misc/screensavers/alock/default.nix new file mode 100644 index 000000000000..46af4b303dd6 --- /dev/null +++ b/nixpkgs/pkgs/misc/screensavers/alock/default.nix @@ -0,0 +1,46 @@ +{ lib, stdenv, fetchFromGitHub, pkg-config, autoreconfHook +, libX11, pam, libgcrypt, libXrender, imlib2 }: + +stdenv.mkDerivation rec { + pname = "alock"; + version = "unstable-2017-07-20"; + + src = fetchFromGitHub { + owner = "Arkq"; + repo = "alock"; + rev = "2035e1d4a2293432f5503e82d10f899232eb0f38"; + sha256 = "sha256-Rm00ytSfEv5Wljz4f/4bbyrK3sCV/oRUwz4DKx0pya8="; + }; + + PAM_DEFAULT_SERVICE = "login"; + + configureFlags = [ + "--enable-pam" + "--enable-hash" + "--enable-xrender" + "--enable-imlib2" + ]; + + nativeBuildInputs = [ pkg-config autoreconfHook ]; + buildInputs = [ + libX11 + pam libgcrypt libXrender imlib2 + ]; + + meta = with lib; { + homepage = "https://github.com/Arkq/alock"; + description = "Simple screen lock application for X server"; + longDescription = '' + alock locks the X server until the user enters a password + via the keyboard. If the authentication was successful + the X server is unlocked and the user can continue to work. + + alock does not provide any fancy animations like xlock or + xscreensaver and never will. It's just for locking the current + X session. + ''; + platforms = platforms.linux; + maintainers = with maintainers; [ ftrvxmtrx chris-martin ]; + license = licenses.mit; + }; +} diff --git a/nixpkgs/pkgs/misc/screensavers/betterlockscreen/default.nix b/nixpkgs/pkgs/misc/screensavers/betterlockscreen/default.nix new file mode 100644 index 000000000000..1c9ee8c1af0a --- /dev/null +++ b/nixpkgs/pkgs/misc/screensavers/betterlockscreen/default.nix @@ -0,0 +1,59 @@ +{ fetchFromGitHub +, lib +, makeWrapper +, stdenv + + # Dependencies (@see https://github.com/pavanjadhaw/betterlockscreen/blob/master/shell.nix) +, bc +, coreutils +, dbus +, withDunst ? true +, dunst +, i3lock-color +, gawk +, gnugrep +, gnused +, imagemagick +, procps +, xorg +}: + +let + runtimeDeps = + [ bc coreutils dbus i3lock-color gawk gnugrep gnused imagemagick procps xorg.xdpyinfo xorg.xrandr xorg.xset ] + ++ lib.optionals withDunst [ dunst ]; +in + +stdenv.mkDerivation rec { + pname = "betterlockscreen"; + version = "4.2.0"; + + src = fetchFromGitHub { + owner = "pavanjadhaw"; + repo = "betterlockscreen"; + rev = "v${version}"; + sha256 = "sha256-e/NyUxrN18+x2zt+JzqVA00P8VdHo8oj9Bx09XKI+Eg="; + }; + + nativeBuildInputs = [ makeWrapper ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin + cp betterlockscreen $out/bin/betterlockscreen + wrapProgram "$out/bin/betterlockscreen" \ + --prefix PATH : "$out/bin:${lib.makeBinPath runtimeDeps}" + + runHook postInstall + ''; + + meta = with lib; { + description = "Fast and sweet looking lockscreen for linux systems with effects!"; + homepage = "https://github.com/pavanjadhaw/betterlockscreen"; + mainProgram = "betterlockscreen"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ eyjhb sebtm ]; + }; +} diff --git a/nixpkgs/pkgs/misc/screensavers/electricsheep/default.nix b/nixpkgs/pkgs/misc/screensavers/electricsheep/default.nix new file mode 100644 index 000000000000..a231d22d90f5 --- /dev/null +++ b/nixpkgs/pkgs/misc/screensavers/electricsheep/default.nix @@ -0,0 +1,76 @@ +{ lib +, stdenv +, fetchFromGitHub +, autoreconfHook +, wxGTK32 +, ffmpeg_4 +, lua5_1 +, curl +, libpng +, xorg +, pkg-config +, flam3 +, libgtop +, boost179 +, tinyxml +, freeglut +, libGLU +, libGL +, glee +}: + +stdenv.mkDerivation rec { + pname = "electricsheep"; + version = "3.0.2-2019-10-05"; + + src = fetchFromGitHub { + owner = "scottdraves"; + repo = pname; + rev = "37ba0fd692d6581f8fe009ed11c9650cd8174123"; + sha256 = "sha256-v/+2dxOY/p6wNAywcFHUAfsZEJw31Syu2MacN/KeyWg="; + }; + + nativeBuildInputs = [ autoreconfHook pkg-config ]; + + buildInputs = [ + wxGTK32 + ffmpeg_4 + lua5_1 + curl + libpng + xorg.libXrender + flam3 + libgtop + boost179 + tinyxml + freeglut + libGLU + libGL + glee + ]; + + preAutoreconf = '' + cd client_generic + sed -i '/ACX_PTHREAD/d' configure.ac + ''; + + configureFlags = [ + "CPPFLAGS=-I${glee}/include/GL" + ]; + + makeFlags = [ + ''CXXFLAGS+="-DGL_GLEXT_PROTOTYPES"'' + ]; + + preBuild = '' + sed -i "s|/usr|$out|" Makefile + ''; + + meta = with lib; { + description = "Electric Sheep, a distributed screen saver for evolving artificial organisms"; + homepage = "https://electricsheep.org/"; + maintainers = with maintainers; [ ]; + platforms = platforms.linux; + license = licenses.gpl2Only; + }; +} diff --git a/nixpkgs/pkgs/misc/screensavers/i3lock-pixeled/default.nix b/nixpkgs/pkgs/misc/screensavers/i3lock-pixeled/default.nix new file mode 100644 index 000000000000..cb7a2fd1e184 --- /dev/null +++ b/nixpkgs/pkgs/misc/screensavers/i3lock-pixeled/default.nix @@ -0,0 +1,40 @@ +{ lib, stdenv, i3lock, imagemagick, scrot, playerctl, fetchFromGitLab }: + +stdenv.mkDerivation rec { + pname = "i3lock-pixeled"; + version = "1.2.1"; + + src = fetchFromGitLab { + owner = "Ma27"; + repo = "i3lock-pixeled"; + rev = version; + sha256 = "1l9yjf9say0mcqnnjkyj4z3f6y83bnx4jsycd1h10p3m8afbh8my"; + }; + + propagatedBuildInputs = [ + i3lock + imagemagick + scrot + playerctl + ]; + + makeFlags = [ + "PREFIX=$(out)/bin" + ]; + + patchPhase = '' + substituteInPlace i3lock-pixeled \ + --replace i3lock "${i3lock}/bin/i3lock" \ + --replace convert "${imagemagick}/bin/convert" \ + --replace scrot "${scrot}/bin/scrot" \ + --replace playerctl "${playerctl}/bin/playerctl" + ''; + + meta = with lib; { + description = "Simple i3lock helper which pixels a screenshot by scaling it down and up to get a pixeled version of the screen when the lock is active"; + homepage = "https://gitlab.com/Ma27/i3lock-pixeled"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ ma27 ]; + }; +} diff --git a/nixpkgs/pkgs/misc/screensavers/light-locker/default.nix b/nixpkgs/pkgs/misc/screensavers/light-locker/default.nix new file mode 100644 index 000000000000..33db5825bc02 --- /dev/null +++ b/nixpkgs/pkgs/misc/screensavers/light-locker/default.nix @@ -0,0 +1,88 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, meson +, ninja +, pkg-config +, gtk3 +, glib +, intltool +, dbus-glib +, libX11 +, libXScrnSaver +, libXxf86vm +, libXext +, systemd +, pantheon +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "light-locker"; + version = "1.9.0"; + + outputs = [ "out" "man" ]; + + src = fetchFromGitHub { + owner = "the-cavalry"; + repo = pname; + rev = "v${version}"; + sha256 = "1z5lcd02gqax65qc14hj5khifg7gr53zy3s5i6apba50lbdlfk46"; + }; + + nativeBuildInputs = [ + intltool + meson + ninja + pkg-config + wrapGAppsHook + ]; + + buildInputs = [ + dbus-glib + glib + gtk3 + libX11 + libXScrnSaver + libXext + libXxf86vm + systemd + ]; + + mesonFlags = [ + "-Dmit-ext=true" + "-Ddpms-ext=true" + "-Dxf86gamma-ext=true" + "-Dsystemd=true" + "-Dupower=true" + "-Dlate-locking=true" + "-Dlock-on-suspend=true" + "-Dlock-on-lid=true" + "-Dgsettings=true" + ]; + + postInstall = '' + ${glib.dev}/bin/glib-compile-schemas $out/share/glib-2.0/schemas + ''; + + passthru = { + updateScript = nix-update-script { }; + }; + + meta = with lib; { + homepage = "https://github.com/the-cavalry/light-locker"; + description = "A simple session-locker for LightDM"; + longDescription = '' + A simple locker (forked from gnome-screensaver) that aims to + have simple, sane, secure defaults and be well integrated with + the desktop while not carrying any desktop-specific + dependencies. + + It relies on LightDM for locking and unlocking your session via + ConsoleKit/UPower or logind/systemd. + ''; + license = licenses.gpl2; + maintainers = with maintainers; [ obadz ] ++ teams.pantheon.members; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/misc/screensavers/multilockscreen/default.nix b/nixpkgs/pkgs/misc/screensavers/multilockscreen/default.nix new file mode 100644 index 000000000000..b0c157c778ad --- /dev/null +++ b/nixpkgs/pkgs/misc/screensavers/multilockscreen/default.nix @@ -0,0 +1,47 @@ +{ + lib, stdenv, makeWrapper, fetchFromGitHub, writeShellScriptBin, + imagemagick, i3lock-color, xdpyinfo, xrandr, bc, feh, procps, xrdb, xset, + gnused, gnugrep, coreutils +}: +let + i3lock = writeShellScriptBin "i3lock" '' + ${i3lock-color}/bin/i3lock-color "$@" + ''; + binPath = lib.makeBinPath [ + imagemagick i3lock + xdpyinfo xrandr xset + bc feh procps xrdb + gnused gnugrep coreutils + ]; +in +stdenv.mkDerivation rec { + pname = "multilockscreen"; + version = "1.2.0"; + + src = fetchFromGitHub { + owner = "jeffmhubbard"; + repo = pname; + rev = "v${version}"; + sha256 = "1bfpbazvhaz9x356nsghz0czysh9b75g79cd9s35v0x0rrzdr9qj"; + }; + + nativeBuildInputs = [ makeWrapper ]; + + installPhase = '' + mkdir -p $out/bin + cp multilockscreen $out/bin/multilockscreen + wrapProgram "$out/bin/multilockscreen" --prefix PATH : "${binPath}" + ''; + + meta = with lib; { + description = "Wrapper script for i3lock-color"; + longDescription = '' + multilockscreen is a wrapper script for i3lock-color. + It allows you to cache background images for i3lock-color with a variety of different effects and adds a stylish indicator. + ''; + homepage = "https://github.com/jeffmhubbard/multilockscreen"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ kylesferrazza ]; + }; +} diff --git a/nixpkgs/pkgs/misc/screensavers/physlock/default.nix b/nixpkgs/pkgs/misc/screensavers/physlock/default.nix new file mode 100644 index 000000000000..b5e9ba8d2b6a --- /dev/null +++ b/nixpkgs/pkgs/misc/screensavers/physlock/default.nix @@ -0,0 +1,27 @@ +{ lib, stdenv, fetchFromGitHub, pam, systemd }: + +stdenv.mkDerivation rec { + version = "13"; + pname = "physlock"; + src = fetchFromGitHub { + owner = "muennich"; + repo = pname; + rev = "v${version}"; + sha256 = "1mz4xxjip5ldiw9jgfq9zvqb6w10bcjfx6939w1appqg8f521a7s"; + }; + + buildInputs = [ pam systemd ]; + + preConfigure = '' + substituteInPlace Makefile \ + --replace "-m 4755 -o root -g root" "" + ''; + + makeFlags = [ "PREFIX=$(out)" "SESSION=systemd" ]; + + meta = with lib; { + description = "A secure suspend/hibernate-friendly alternative to `vlock -an`"; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/misc/screensavers/pipes-rs/default.nix b/nixpkgs/pkgs/misc/screensavers/pipes-rs/default.nix new file mode 100644 index 000000000000..f0e4eca9fa54 --- /dev/null +++ b/nixpkgs/pkgs/misc/screensavers/pipes-rs/default.nix @@ -0,0 +1,33 @@ +{ rustPlatform, fetchFromGitHub, lib }: + +rustPlatform.buildRustPackage rec { + pname = "pipes-rs"; + version = "1.6.3"; + + src = fetchFromGitHub { + owner = "lhvy"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-NrBmkA7sV1RhfG9KEqQNMR5s0l2u66b7KK0toDjQIps="; + }; + + cargoHash = "sha256-cOLPkmUwNdaexgauULraBVVx6mznI9GXhHV3mSEhL0g="; + + doInstallCheck = true; + + installCheckPhase = '' + if [[ "$("$out/bin/${pname}" --version)" == "${pname} ${version}" ]]; then + echo '${pname} smoke check passed' + else + echo '${pname} smoke check failed' + return 1 + fi + ''; + + meta = with lib; { + description = "An over-engineered rewrite of pipes.sh in Rust"; + homepage = "https://github.com/lhvy/pipes-rs"; + license = licenses.blueOak100; + maintainers = [ maintainers.vanilla ]; + }; +} diff --git a/nixpkgs/pkgs/misc/screensavers/pipes/default.nix b/nixpkgs/pkgs/misc/screensavers/pipes/default.nix new file mode 100644 index 000000000000..bbabd02f4751 --- /dev/null +++ b/nixpkgs/pkgs/misc/screensavers/pipes/default.nix @@ -0,0 +1,32 @@ +{ lib, stdenv, fetchFromGitHub, makeWrapper, coreutils, ncurses }: + +stdenv.mkDerivation rec { + pname = "pipes"; + version = "1.3.0"; + + src = fetchFromGitHub { + owner = "pipeseroni"; + repo = "pipes.sh"; + rev = "v${version}"; + hash = "sha256-856OWlnNiGB20571TJg7Ayzcz4r6NqdW5DMDiim09mc="; + }; + + nativeBuildInputs = [ makeWrapper ]; + + installPhase = '' + mkdir $out -p + make PREFIX=$out/ install + + wrapProgram $out/bin/pipes.sh \ + --set PATH "${lib.makeBinPath [ coreutils ncurses ]}" + ''; + + meta = with lib; { + description = "Animated pipes terminal screensaver"; + homepage = "https://github.com/pipeseroni/pipes.sh"; + license = licenses.mit; + maintainers = [ maintainers.matthiasbeyer ]; + mainProgram = "pipes.sh"; + platforms = platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/misc/screensavers/rss-glx/cstddef.patch b/nixpkgs/pkgs/misc/screensavers/rss-glx/cstddef.patch new file mode 100644 index 000000000000..8bec510b0405 --- /dev/null +++ b/nixpkgs/pkgs/misc/screensavers/rss-glx/cstddef.patch @@ -0,0 +1,12 @@ +diff --git i/src/Implicit/impSurface.h w/src/Implicit/impSurface.h +index 41fab81..027587f 100644 +--- i/src/Implicit/impSurface.h ++++ w/src/Implicit/impSurface.h +@@ -25,6 +25,7 @@ + #ifdef WIN32 + #include <windows.h> + #endif ++#include <cstddef> + #include <vector> + #include <GL/gl.h> + diff --git a/nixpkgs/pkgs/misc/screensavers/rss-glx/default.nix b/nixpkgs/pkgs/misc/screensavers/rss-glx/default.nix new file mode 100644 index 000000000000..3ec89194df87 --- /dev/null +++ b/nixpkgs/pkgs/misc/screensavers/rss-glx/default.nix @@ -0,0 +1,42 @@ +{ lib +, stdenv +, fetchurl +, autoconf +, pkg-config +, libX11 +, libXext +, libGLU +, libGL +, imagemagick6 +, libtiff +, bzip2 +}: + +stdenv.mkDerivation rec { + version = "0.9.1"; + pname = "rss-glx"; + + src = fetchurl { + url = "mirror://sourceforge/rss-glx/rss-glx_${version}.tar.bz2"; + sha256 = "1aikafjqrfmv23jnrrm5d56dg6injh4l67zjdxzdapv9chw7g3cg"; + }; + + nativeBuildInputs = [ autoconf pkg-config ]; + buildInputs = [ libGLU libGL libX11 libXext imagemagick6 libtiff bzip2 ]; + + patches = [ + ./cstddef.patch + ]; + + env.NIX_CFLAGS_COMPILE = "-I${imagemagick6.dev}/include/ImageMagick"; + + meta = { + description = "Really Slick Screensavers Port to GLX"; + longDescription = '' + This package currently contains all of the screensavers from the + original collection, plus a few others. + ''; + license = lib.licenses.gpl2; + platforms = lib.platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/misc/screensavers/slock/default.nix b/nixpkgs/pkgs/misc/screensavers/slock/default.nix new file mode 100644 index 000000000000..09fccd11d9e9 --- /dev/null +++ b/nixpkgs/pkgs/misc/screensavers/slock/default.nix @@ -0,0 +1,38 @@ +{ lib, stdenv, fetchurl, writeText +, xorgproto, libX11, libXext, libXrandr, libxcrypt +# default header can be obtained from +# https://git.suckless.org/slock/tree/config.def.h +, conf ? null }: + +stdenv.mkDerivation (finalAttrs: { + pname = "slock"; + version = "1.5"; + + src = fetchurl { + url = "https://dl.suckless.org/tools/slock-${finalAttrs.version}.tar.gz"; + hash = "sha256-ruHj+/aid/tiWjg4BzuXm2SD57rKTOgvVt4f8ZLbDk0="; + }; + + buildInputs = [ xorgproto libX11 libXext libXrandr libxcrypt ]; + + installFlags = [ "PREFIX=$(out)" ]; + + postPatch = "sed -i '/chmod u+s/d' Makefile"; + + preBuild = lib.optionalString (conf != null) '' + cp ${writeText "config.def.h" conf} config.def.h + ''; + + makeFlags = [ "CC:=$(CC)" ]; + + meta = with lib; { + homepage = "https://tools.suckless.org/slock"; + description = "Simple X display locker"; + longDescription = '' + Simple X display locker. This is the simplest X screen locker. + ''; + license = licenses.mit; + maintainers = with maintainers; [ astsmtl ]; + platforms = platforms.linux; + }; +}) diff --git a/nixpkgs/pkgs/misc/screensavers/vlock/default.nix b/nixpkgs/pkgs/misc/screensavers/vlock/default.nix new file mode 100644 index 000000000000..c156373f1481 --- /dev/null +++ b/nixpkgs/pkgs/misc/screensavers/vlock/default.nix @@ -0,0 +1,31 @@ +{ lib, stdenv, fetchurl, pam }: + +stdenv.mkDerivation rec { + pname = "vlock"; + version = "2.2.2"; + + src = fetchurl { + url = "mirror://debian/pool/main/v/vlock/vlock_${version}.orig.tar.gz"; + sha256 = "1b9gv7hmlb8swda5bn40lp1yki8b8wv29vdnhcjqfl6ir98551za"; + }; + + prePatch = '' + sed -i -e '/INSTALL/ { + s/-[og] [^ ]*//g; s/4711/755/ + }' Makefile modules/Makefile + ''; + + patches = [ ./eintr.patch ]; + + configureFlags = [ "VLOCK_GROUP=root" "ROOT_GROUP=root" ]; + + buildInputs = [ pam ]; + + meta = with lib; { + description = "Virtual console locking program"; + license = licenses.gpl2; + maintainers = [ ]; + platforms = platforms.linux; + mainProgram = "vlock"; + }; +} diff --git a/nixpkgs/pkgs/misc/screensavers/vlock/eintr.patch b/nixpkgs/pkgs/misc/screensavers/vlock/eintr.patch new file mode 100644 index 000000000000..64f432434324 --- /dev/null +++ b/nixpkgs/pkgs/misc/screensavers/vlock/eintr.patch @@ -0,0 +1,34 @@ +In systemd I have seen this error, using it as a service: + +vlock-start[14567]: vlock-new: could not activate new terminal: Interrupted system call + +I think this should fix that. + +Also on github: https://github.com/viric/vlock/commit/781a26087f83c7247601b6f82f784cca9266694e + +diff --git a/modules/new.c b/modules/new.c +index e9b15fb..7aed640 100644 +--- a/modules/new.c ++++ b/modules/new.c +@@ -103,9 +103,19 @@ static char *get_console_name(int n) + * file descriptor. */ + static int activate_console(int consfd, int vtno) + { +- int c = ioctl(consfd, VT_ACTIVATE, vtno); ++ int c; ++ do { ++ c = ioctl(consfd, VT_ACTIVATE, vtno); ++ } while(c != 0 && errno == EINTR); + +- return c < 0 ? c : ioctl(consfd, VT_WAITACTIVE, vtno); ++ if (c < 0) ++ return c; ++ ++ do { ++ c = ioctl(consfd, VT_WAITACTIVE, vtno); ++ } while(c != 0 && errno == EINTR); ++ ++ return c; + } + + struct new_console_context { diff --git a/nixpkgs/pkgs/misc/screensavers/xautolock/default.nix b/nixpkgs/pkgs/misc/screensavers/xautolock/default.nix new file mode 100644 index 000000000000..90265afc4284 --- /dev/null +++ b/nixpkgs/pkgs/misc/screensavers/xautolock/default.nix @@ -0,0 +1,36 @@ +{ lib, stdenv, fetchFromGitHub +, imake, gccmakedep, libX11, libXext, libXScrnSaver, xorgproto +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "xautolock"; + version = "2.2-7-ga23dd5c"; + + # This repository contains xautolock-2.2 plus various useful patches that + # were collected from Debian, etc. + src = fetchFromGitHub { + owner = "peti"; + repo = "xautolock"; + rev = "v${finalAttrs.version}"; + hash = "sha256-T2zAbRqSTxRp9u6EdZmIZfVxaGveeZkJgjp1DWgORoI="; + }; + + nativeBuildInputs = [ imake gccmakedep ]; + buildInputs = [ libX11 libXext libXScrnSaver xorgproto ]; + + makeFlags = [ + "BINDIR=$(out)/bin" + "MANPATH=$(out)/share/man" + ]; + + installTargets = [ "install" "install.man" ]; + + meta = with lib; { + description = "Launch a given program when your X session has been idle for a given time"; + homepage = "http://www.ibiblio.org/pub/linux/X11/screensavers"; + maintainers = with maintainers; [ peti ]; + platforms = platforms.linux; + license = licenses.gpl2; + mainProgram = "xautolock"; + }; +}) diff --git a/nixpkgs/pkgs/misc/screensavers/xlockmore/default.nix b/nixpkgs/pkgs/misc/screensavers/xlockmore/default.nix new file mode 100644 index 000000000000..e82c390d56d1 --- /dev/null +++ b/nixpkgs/pkgs/misc/screensavers/xlockmore/default.nix @@ -0,0 +1,42 @@ +{ stdenv, lib, fetchurl, pam ? null, libX11, libXext, libXinerama +, libXdmcp, libXt, autoreconfHook }: + +stdenv.mkDerivation rec { + pname = "xlockmore"; + version = "5.74"; + + src = fetchurl { + url = "http://sillycycle.com/xlock/xlockmore-${version}.tar.xz"; + sha256 = "sha256-SIre4GeovkMaWG4NR+9tfdhrMXaLSPBO5JLy8REWUYQ="; + curlOpts = "--user-agent 'Mozilla/5.0'"; + }; + + # Optionally, it can use GTK. + buildInputs = [ pam libX11 libXext.dev libXinerama libXdmcp libXt ]; + nativeBuildInputs = [ autoreconfHook ]; + + # Don't try to install `xlock' setuid. Password authentication works + # fine via PAM without super user privileges. + configureFlags = + [ "--disable-setuid" + ] ++ (lib.optional (pam != null) "--enable-pam"); + + postPatch = + let makePath = p: lib.concatMapStringsSep " " (x: x + "/" + p) buildInputs; + inputs = "${makePath "lib"} ${makePath "include"}"; + in '' + sed -i 's,\(for ac_dir in\),\1 ${inputs},' configure.ac + sed -i 's,/usr/,/no-such-dir/,g' configure.ac + configureFlags+=" --enable-appdefaultdir=$out/share/X11/app-defaults" + ''; + + hardeningDisable = [ "format" ]; # no build output otherwise + + meta = with lib; { + description = "Screen locker for the X Window System"; + homepage = "http://sillycycle.com/xlockmore.html"; + license = licenses.gpl2; + maintainers = with maintainers; [ pSub ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/misc/screensavers/xss-lock/default.nix b/nixpkgs/pkgs/misc/screensavers/xss-lock/default.nix new file mode 100644 index 000000000000..88b4b6b795f3 --- /dev/null +++ b/nixpkgs/pkgs/misc/screensavers/xss-lock/default.nix @@ -0,0 +1,25 @@ +{ lib, stdenv, fetchFromGitHub, cmake, docutils, pkg-config, glib, libpthreadstubs +, libXau, libXdmcp, xcbutil }: + +stdenv.mkDerivation { + pname = "xss-lock"; + version = "unstable-2018-05-31"; + + src = fetchFromGitHub { + owner = "xdbob"; + repo = "xss-lock"; + rev = "cd0b89df9bac1880ea6ea830251c6b4492d505a5"; + sha256 = "040nqgfh564frvqkrkmak3x3h0yadz6kzk81jkfvd9vd20a9drh7"; + }; + + nativeBuildInputs = [ cmake pkg-config docutils ]; + buildInputs = [ glib libpthreadstubs libXau libXdmcp xcbutil ]; + + meta = with lib; { + description = "Use external locker (such as i3lock) as X screen saver"; + license = licenses.mit; + mainProgram = "xss-lock"; + maintainers = with maintainers; [ malyn offline ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/misc/screensavers/xssproxy/default.nix b/nixpkgs/pkgs/misc/screensavers/xssproxy/default.nix new file mode 100644 index 000000000000..6f28a9ce132e --- /dev/null +++ b/nixpkgs/pkgs/misc/screensavers/xssproxy/default.nix @@ -0,0 +1,29 @@ +{ lib, stdenv, fetchFromGitHub, glib, pkg-config, xorg, dbus }: + +stdenv.mkDerivation rec { + pname = "xssproxy"; + version = "1.1.0"; + + src = fetchFromGitHub { + owner = "vincentbernat"; + repo = "xssproxy"; + rev = "v${version}"; + sha256 = "sha256-BE/v1CJAwKwxlK3Xg3ezD+IXyT7ZFGz3bQzGxFQfEnU="; + }; + + nativeBuildInputs = [ pkg-config ]; + buildInputs = [ glib xorg.libX11 xorg.libXScrnSaver dbus ]; + + makeFlags = [ + "bindir=$(out)/bin" + "man1dir=$(out)/share/man/man1" + ]; + + meta = { + description = "Forward freedesktop.org Idle Inhibition Service calls to Xss"; + homepage = "https://github.com/vincentbernat/xssproxy"; + license = lib.licenses.gpl3; + maintainers = with lib.maintainers; [ benley ]; + platforms = lib.platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/misc/screensavers/xtrlock-pam/default.nix b/nixpkgs/pkgs/misc/screensavers/xtrlock-pam/default.nix new file mode 100644 index 000000000000..b87374df14df --- /dev/null +++ b/nixpkgs/pkgs/misc/screensavers/xtrlock-pam/default.nix @@ -0,0 +1,30 @@ +{ lib, stdenv, fetchFromGitHub, python2, pkg-config, pam, xorg }: + +stdenv.mkDerivation { + pname = "xtrlock-pam"; + version = "3.4-post-20150909"; + + src = fetchFromGitHub { + owner = "aanatoly"; + repo = "xtrlock-pam"; + rev = "6f4920fcfff54791c0779057e9efacbbbbc05df6"; + sha256 = "sha256-TFfs418fpjBrAJNGW8U3jE0K7jQkfL4vCquAViKkXPw="; + }; + + nativeBuildInputs = [ pkg-config ]; + buildInputs = [ python2 pam xorg.libX11 ]; + + configurePhase = '' + substituteInPlace .config/options.py --replace /usr/include/security/pam_appl.h ${pam}/include/security/pam_appl.h + substituteInPlace src/xtrlock.c --replace system-local-login xscreensaver + python configure --prefix=$out + ''; + + meta = { + homepage = "https://github.com/aanatoly/xtrlock-pam"; + description = "PAM based X11 screen locker"; + license = "unknown"; + maintainers = with lib.maintainers; [ ]; + platforms = with lib.platforms; linux; + }; +} diff --git a/nixpkgs/pkgs/misc/seafile-shared/default.nix b/nixpkgs/pkgs/misc/seafile-shared/default.nix new file mode 100644 index 000000000000..5add4a5b530f --- /dev/null +++ b/nixpkgs/pkgs/misc/seafile-shared/default.nix @@ -0,0 +1,64 @@ +{ lib, stdenv +, fetchFromGitHub +, autoreconfHook +, curl +, libevent +, libsearpc +, libuuid +, pkg-config +, python3 +, sqlite +, vala +, libwebsockets +}: + +stdenv.mkDerivation rec { + pname = "seafile-shared"; + version = "9.0.4"; + + src = fetchFromGitHub { + owner = "haiwen"; + repo = "seafile"; + rev = "v${version}"; + sha256 = "sha256-WBbJ6e2I7SGqvZo3yH8L1ZbNPkyA6zTGS12Gq186DL4="; + }; + + nativeBuildInputs = [ + libwebsockets + autoreconfHook + vala + pkg-config + python3 + python3.pkgs.wrapPython + ]; + + buildInputs = [ + libuuid + sqlite + libsearpc + libevent + curl + ]; + + configureFlags = [ + "--disable-server" + "--with-python3" + ]; + + pythonPath = with python3.pkgs; [ + future + pysearpc + ]; + + postFixup = '' + wrapPythonPrograms + ''; + + meta = with lib; { + homepage = "https://github.com/haiwen/seafile"; + description = "Shared components of Seafile: seafile-daemon, libseafile, libseafile python bindings, manuals, and icons"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = with maintainers; [ greizgh schmittlauch ]; + }; +} diff --git a/nixpkgs/pkgs/misc/sndio/default.nix b/nixpkgs/pkgs/misc/sndio/default.nix new file mode 100644 index 000000000000..a65c0cd7b0f5 --- /dev/null +++ b/nixpkgs/pkgs/misc/sndio/default.nix @@ -0,0 +1,29 @@ +{ lib, stdenv, fetchurl, alsa-lib, fixDarwinDylibNames }: + +stdenv.mkDerivation rec { + pname = "sndio"; + version = "1.9.0"; + + src = fetchurl { + url = "https://www.sndio.org/sndio-${version}.tar.gz"; + sha256 = "sha256-8wgm/JwH42nTkk1fzt9qClPA30rh9atQ/pzygFQPaZo="; + }; + + nativeBuildInputs = lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames; + buildInputs = lib.optional stdenv.hostPlatform.isLinux alsa-lib; + configurePlatforms = []; + + postInstall = '' + install -Dm644 contrib/sndiod.service $out/lib/systemd/system/sndiod.service + ''; + + enableParallelBuilding = true; + + meta = with lib; { + homepage = "https://www.sndio.org"; + description = "Small audio and MIDI framework part of the OpenBSD project"; + license = licenses.isc; + maintainers = with maintainers; [ Madouura ]; + platforms = platforms.all; + }; +} diff --git a/nixpkgs/pkgs/misc/solfege/css.patch b/nixpkgs/pkgs/misc/solfege/css.patch new file mode 100644 index 000000000000..40273df0132b --- /dev/null +++ b/nixpkgs/pkgs/misc/solfege/css.patch @@ -0,0 +1,33 @@ +Fix theme parsing errors: https://savannah.gnu.org/bugs/index.php?53107 + +--- a/solfege.css ++++ b/solfege.css +@@ -7,19 +7,19 @@ +-#ProgressionNameLabel, #Feedback { font: "Sans 18" } +-#ProgressionLabelNumber { font: "Sans 12" } +-#BoldText { font: Bold } ++#ProgressionNameLabel, #Feedback { font: 18px Sans } ++#ProgressionLabelNumber { font: 12px Sans } ++#BoldText { font: 12px Sans Bold } + +-#StatisticsH1, #Heading1 { font: Sans 18 } +-#StatisticsH2, #Heading2 { font: Sans 14 } ++#StatisticsH1, #Heading1 { font: 18px Sans } ++#StatisticsH2, #Heading2 { font: 14px Sans } + +-#BpmInactiveLabel { font: Sans 12 } +-#BpmActiveLabel { font: Sans Bold 12 } ++#BpmInactiveLabel { font: 12px Sans } ++#BpmActiveLabel { font: 12px Sans Bold } + + #DIALOGWARNING2 { background: red; } + #DIALOGWARNING { background: yellow; } + + #DEBUGWARNING { + background: red; +- font: Sans Bold 24; ++ font: 24px Sans Bold; + } + +-#FlashBarLabel { font: Sans 16 } ++#FlashBarLabel { font: 16px Sans } diff --git a/nixpkgs/pkgs/misc/solfege/default.nix b/nixpkgs/pkgs/misc/solfege/default.nix new file mode 100644 index 000000000000..63606078abad --- /dev/null +++ b/nixpkgs/pkgs/misc/solfege/default.nix @@ -0,0 +1,74 @@ +{ lib, fetchurl, gettext, pkg-config, texinfo, wrapGAppsHook +, buildPythonApplication, pycairo, pygobject3 +, gdk-pixbuf, gobject-introspection, gtk3, librsvg +, alsa-utils, timidity, mpg123, vorbis-tools, csound, lilypond +, automake, autoconf, txt2man +}: + +buildPythonApplication rec { + pname = "solfege"; + version = "3.23.4"; + + src = fetchurl { + url = "https://alpha.gnu.org/gnu/solfege/solfege-${version}.tar.gz"; + sha256 = "0sc17vf4xz6gy0s0z9ghi68yskikdmyb4gdaxx6imrm40734k8mp"; + }; + + patches = [ + ./css.patch + ./menubar.patch + ./texinfo.patch + ./webbrowser.patch + ]; + + preConfigure = '' + aclocal + autoconf + ''; + + nativeBuildInputs = [ + automake + autoconf + gdk-pixbuf + gettext + pkg-config + texinfo + txt2man + + gobject-introspection + wrapGAppsHook + ]; + + buildInputs = [ + gtk3 + librsvg + ]; + + propagatedBuildInputs = [ + pycairo + pygobject3 + ]; + + preBuild = '' + sed -i -e 's|wav_player=.*|wav_player=${alsa-utils}/bin/aplay|' \ + -e 's|midi_player=.*|midi_player=${timidity}/bin/timidity|' \ + -e 's|mp3_player=.*|mp3_player=${mpg123}/bin/mpg123|' \ + -e 's|ogg_player=.*|ogg_player=${vorbis-tools}/bin/ogg123|' \ + -e 's|csound=.*|csound=${csound}/bin/csound|' \ + -e 's|lilypond-book=.*|lilypond-book=${lilypond}/bin/lilypond-book|' \ + default.config + ''; + + format = "other"; + + enableParallelBuilding = true; + + meta = with lib; { + description = "Ear training program"; + homepage = "https://www.gnu.org/software/solfege/"; + license = licenses.gpl3Only; + platforms = platforms.linux; + maintainers = with maintainers; [ bjornfor orivej anthonyroussel ]; + mainProgram = "solfege"; + }; +} diff --git a/nixpkgs/pkgs/misc/solfege/menubar.patch b/nixpkgs/pkgs/misc/solfege/menubar.patch new file mode 100644 index 000000000000..36d3944af61d --- /dev/null +++ b/nixpkgs/pkgs/misc/solfege/menubar.patch @@ -0,0 +1,7 @@ +Fix https://savannah.gnu.org/bugs/index.php?53109 + +--- a/solfege/mainwin.py ++++ b/solfege/mainwin.py +@@ -270,1 +270,1 @@ +- hdlbox = Gtk.HandleBox() ++ hdlbox = Gtk.HBox() diff --git a/nixpkgs/pkgs/misc/solfege/texinfo.patch b/nixpkgs/pkgs/misc/solfege/texinfo.patch new file mode 100644 index 000000000000..d681b3e901bd --- /dev/null +++ b/nixpkgs/pkgs/misc/solfege/texinfo.patch @@ -0,0 +1,20 @@ +Fix build with texinfo 6.7. Otherwise + + makeinfo -I topdocs --no-split --no-headers --output AUTHORS topdocs/AUTHORS.texi + +fails with + + utf8 "\xC1" does not map to Unicode at /nix/store/...-texinfo-6.7/share/texinfo/Texinfo/ParserNonXS.pm line 1796, <FH> line 38. + +--- a/topdocs/AUTHORS.texi ++++ b/topdocs/AUTHORS.texi +@@ -1,2 +1,3 @@ + \input texinfo ++@documentencoding ISO-8859-1 + @setfilename AUTHORS.info +--- a/topdocs/README.texi ++++ b/topdocs/README.texi +@@ -1,2 +1,3 @@ + \input texinfo ++@documentencoding ISO-8859-1 + @setfilename README.info diff --git a/nixpkgs/pkgs/misc/solfege/webbrowser.patch b/nixpkgs/pkgs/misc/solfege/webbrowser.patch new file mode 100644 index 000000000000..2c9b77d0b8eb --- /dev/null +++ b/nixpkgs/pkgs/misc/solfege/webbrowser.patch @@ -0,0 +1,8 @@ +Fix startup. + +--- a/solfege/mainwin.py ++++ b/solfege/mainwin.py +@@ -27,2 +27,3 @@ import textwrap + try: ++ webbrowser.register_standard_browsers() + i = webbrowser._tryorder.index("x-www-browser") diff --git a/nixpkgs/pkgs/misc/source-and-tags/default.nix b/nixpkgs/pkgs/misc/source-and-tags/default.nix new file mode 100644 index 000000000000..eb243aa4f9b8 --- /dev/null +++ b/nixpkgs/pkgs/misc/source-and-tags/default.nix @@ -0,0 +1,94 @@ +{ stdenv, lib, glibcLocales, unzip, hasktags, ctags } : { + # optional srcDir + annotatedWithSourceAndTagInfo = x : (x ? passthru && x.passthru ? sourceWithTags + || x ? meta && x.meta ? sourceWithTags ); + # hack because passthru doesn't work the way I'd expect. Don't have time to spend on this right now + # that's why I'm abusing meta for the same purpose in ghcsAndLibs + sourceWithTagsFromDerivation = x : if x ? passthru && x.passthru ? sourceWithTags then x.passthru.sourceWithTags + else if x ? meta && x.meta ? sourceWithTags then x.meta.sourceWithTags + else null; + + # createTagFiles = [ { name = "my_tag_name_without_suffix", tagCmd = "ctags -R . -o \$TAG_FILE"; } ] + # tag command must create file named $TAG_FILE + sourceWithTagsDerivation = {name, src, srcDir ? ".", tagSuffix ? "_tags", createTagFiles ? []} : + stdenv.mkDerivation { + inherit src srcDir tagSuffix; + name = "${name}-source-with-tags"; + nativeBuildInputs = [ unzip ]; + # using separate tag directory so that you don't have to glob that much files when starting your editor + # is this a good choice? + installPhase = + let createTags = lib.concatStringsSep "\n" + (map (a: '' + TAG_FILE="$SRC_DEST/${a.name}$tagSuffix" + echo running tag cmd "${a.tagCmd}" in `pwd` + ${a.tagCmd} + TAG_FILES="$TAG_FILES''${TAG_FILES:+:}$TAG_FILE" + '') createTagFiles ); + in '' + SRC_DEST=$out/src/$name + mkdir -p $SRC_DEST + pwd; ls + cp -r $srcDir $SRC_DEST + cd $SRC_DEST + ${createTags} + + mkdir -p $out/nix-support + echo "TAG_FILES=\"\$TAG_FILES\''${TAG_FILES:+:}$TAG_FILES\"" >> $out/nix-support/setup-hook + ''; + }; + # example usage + #testSourceWithTags = sourceWithTagsDerivation (ghc68extraLibs ghcsAndLibs.ghc68).happs_server_darcs.passthru.sourceWithTags; + + + # creates annotated derivation (comments see above) + addHasktagsTaggingInfo = deriv : deriv // { + passthru = { + sourceWithTags = { + inherit (deriv) src; + srcDir = if deriv ? srcDir then deriv.srcDir else "."; + name = deriv.name; + createTagFiles = [ + { name = "${deriv.name}_haskell"; + # tagCmd = "${toString ghcsAndLibs.ghc68.ghc}/bin/hasktags --ignore-close-implementation --ctags `find . -type f -name \"*.*hs\"`; sort tags > \$TAG_FILE"; } + # *.*hs.* to catch gtk2hs .hs.pp files + tagCmd = " + srcs=\"`find . -type f -name \"*.*hs\"; find . -type f -name \"*.*hs*\";`\" + [ -z \"$srcs\" ] || { + # without this creating tag files for lifted-base fails + export LC_ALL=en_US.UTF-8 + export LANG=en_US.UTF-8 + ${lib.optionalString stdenv.isLinux "export LOCALE_ARCHIVE=${glibcLocales}/lib/locale/locale-archive;"} + + ${toString hasktags}/bin/hasktags --ignore-close-implementation --ctags . + mv tags \$TAG_FILE + }"; + } + ]; + }; + }; + }; + + + addCTaggingInfo = deriv : + deriv // { + passthru = { + sourceWithTags = { + inherit (deriv) src; + name = "${deriv.name}-source-ctags"; + createTagFiles = [ + { inherit (deriv) name; + tagCmd = "${toString ctags}/bin/ctags --sort=yes -o \$TAG_FILE -R ."; } + ]; + }; + }; }; +} +/* +experimental +idea: +a) Attach some information to a nexpression telling how to create a tag file which can then be used within your favourite editor + Do this in a way not affecting the expression (using passthru or meta which is ignored when calculating the hash) + implementations: addCTaggingInfo (C / C++) and addHasktagsTaggingInfo (Haskell) +b) use sourceWithTagsDerivation function to create a derivation installing the source along with the generated tag files + so that you can use them easily witihn your favourite text editor +*/ diff --git a/nixpkgs/pkgs/misc/stabber/default.nix b/nixpkgs/pkgs/misc/stabber/default.nix new file mode 100644 index 000000000000..7ec9a8985e1d --- /dev/null +++ b/nixpkgs/pkgs/misc/stabber/default.nix @@ -0,0 +1,38 @@ +{ lib, stdenv, fetchFromGitHub, autoreconfHook, pkg-config, glib, expat +, libmicrohttpd, darwin +}: + +with lib; + +stdenv.mkDerivation { + pname = "stabber-unstable"; + version = "2020-06-08"; + + src = fetchFromGitHub { + owner = "boothj5"; + repo = "stabber"; + rev = "3e5c2200715666aad403d0076e8ab584b329965e"; + sha256 = "0042nbgagl4gcxa5fj7bikjdi1gbk0jwyqnzc5lswpb0l5y0i1ql"; + }; + + postPatch = '' + # New toolchainsd like gcc-13 trigger warnings and fail the build. + substituteInPlace configure.ac --replace "-Werror" "" + ''; + + preAutoreconf = '' + mkdir m4 + ''; + + nativeBuildInputs = [ pkg-config autoreconfHook ]; + buildInputs = [ glib expat libmicrohttpd ] ++ + lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security ]; + + meta = { + description = "Stubbed XMPP Server"; + homepage = "https://github.com/profanity-im/stabber"; + license = licenses.gpl3; + platforms = platforms.unix; + maintainers = with maintainers; [ hschaeidt ]; + }; +} diff --git a/nixpkgs/pkgs/misc/superd/default.nix b/nixpkgs/pkgs/misc/superd/default.nix new file mode 100644 index 000000000000..be018cb24126 --- /dev/null +++ b/nixpkgs/pkgs/misc/superd/default.nix @@ -0,0 +1,43 @@ +{ lib +, buildGoModule +, fetchFromSourcehut +, installShellFiles +, scdoc +}: + +buildGoModule rec { + pname = "superd"; + version = "0.7.1"; + + src = fetchFromSourcehut { + owner = "~craftyguy"; + repo = pname; + rev = version; + hash = "sha256-5g9Y1Lpxp9cUe0sNvU5CdsTGcN+j00gIKPO9pD5j8uM="; + }; + + vendorHash = "sha256-Oa99U3THyWLjH+kWMQAHO5QAS2mmtY7M7leej+gnEqo="; + + nativeBuildInputs = [ + installShellFiles + scdoc + ]; + + postBuild = '' + make doc + ''; + + postInstall = '' + installManPage superd.1 superd.service.5 superctl.1 + installShellCompletion --bash completions/bash/superctl + installShellCompletion --zsh completions/zsh/superctl + ''; + + meta = with lib; { + description = "Unprivileged user service supervisor"; + homepage = "https://sr.ht/~craftyguy/superd/"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = with maintainers; [ chuangzhu wentam ]; + }; +} diff --git a/nixpkgs/pkgs/misc/t-rec/default.nix b/nixpkgs/pkgs/misc/t-rec/default.nix new file mode 100644 index 000000000000..ac99abb7e5cd --- /dev/null +++ b/nixpkgs/pkgs/misc/t-rec/default.nix @@ -0,0 +1,38 @@ +{ lib, stdenv, imagemagick, ffmpeg, rustPlatform, fetchFromGitHub, makeWrapper +, libiconv, Foundation }: + +let + binPath = lib.makeBinPath [ + imagemagick + ffmpeg + ]; +in +rustPlatform.buildRustPackage rec { + pname = "t-rec"; + version = "0.7.6"; + + src = fetchFromGitHub { + owner = "sassman"; + repo = "t-rec-rs"; + rev = "v${version}"; + sha256 = "sha256-o1fO0N65L6Z6W6aBNhS5JqDHIc1MRQx0yECGzVSCsbo="; + }; + + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ imagemagick ] + ++ lib.optionals stdenv.isDarwin [ libiconv Foundation ]; + + postInstall = '' + wrapProgram "$out/bin/t-rec" --prefix PATH : "${binPath}" + ''; + + cargoHash = "sha256-3NExPlHNcoYVkpOzWCyd66chJpeDzQLRJUruSLAwGNw="; + + meta = with lib; { + description = "Blazingly fast terminal recorder that generates animated gif images for the web written in rust"; + homepage = "https://github.com/sassman/t-rec-rs"; + license = with licenses; [ gpl3Only ]; + maintainers = with maintainers; [ hoverbear matthiasbeyer ]; + mainProgram = "t-rec"; + }; +} diff --git a/nixpkgs/pkgs/misc/talkfilters/default.nix b/nixpkgs/pkgs/misc/talkfilters/default.nix new file mode 100644 index 000000000000..3b785dfc5664 --- /dev/null +++ b/nixpkgs/pkgs/misc/talkfilters/default.nix @@ -0,0 +1,26 @@ +{ lib, stdenv, fetchurl }: + +let + pname = "talkfilters"; + version = "2.3.8"; +in + +stdenv.mkDerivation { + name = "${pname}-${version}"; + + src = fetchurl { + url = "http://www.hyperrealm.com/${pname}/${pname}-${version}.tar.gz"; + sha256 = "19nc5vq4bnkjvhk8srqddzhcs93jyvpm9r6lzjzwc1mgf08yg0a6"; + }; + + hardeningDisable = [ "format" ]; + + meta = { + description = "Converts English text into text that mimics a stereotyped or humorous dialect"; + homepage = "https://www.hyperrealm.com/talkfilters/talkfilters.html"; + license = lib.licenses.gpl2; + maintainers = with lib.maintainers; [ ikervagyok ]; + platforms = with lib.platforms; unix; + }; +} + diff --git a/nixpkgs/pkgs/misc/tmux-plugins/default.nix b/nixpkgs/pkgs/misc/tmux-plugins/default.nix new file mode 100644 index 000000000000..2490fada2233 --- /dev/null +++ b/nixpkgs/pkgs/misc/tmux-plugins/default.nix @@ -0,0 +1,728 @@ +{ lib +, fetchFromGitHub +, pkgs +, stdenv +}: + +let + rtpPath = "share/tmux-plugins"; + + addRtp = path: rtpFilePath: attrs: derivation: + derivation // { rtp = "${derivation}/${path}/${rtpFilePath}"; } // { + overrideAttrs = f: mkTmuxPlugin (attrs // f attrs); + }; + + mkTmuxPlugin = a@{ + pluginName, + rtpFilePath ? (builtins.replaceStrings ["-"] ["_"] pluginName) + ".tmux", + namePrefix ? "tmuxplugin-", + src, + unpackPhase ? "", + configurePhase ? ":", + buildPhase ? ":", + addonInfo ? null, + preInstall ? "", + postInstall ? "", + path ? lib.getName pluginName, + ... + }: + if lib.hasAttr "dependencies" a then + throw "dependencies attribute is obselete. see NixOS/nixpkgs#118034" # added 2021-04-01 + else addRtp "${rtpPath}/${path}" rtpFilePath a (stdenv.mkDerivation (a // { + pname = namePrefix + pluginName; + + inherit pluginName unpackPhase configurePhase buildPhase addonInfo preInstall postInstall; + + installPhase = '' + runHook preInstall + + target=$out/${rtpPath}/${path} + mkdir -p $out/${rtpPath} + cp -r . $target + if [ -n "$addonInfo" ]; then + echo "$addonInfo" > $target/addon-info.json + fi + + runHook postInstall + ''; + })); + +in rec { + inherit mkTmuxPlugin; + + mkDerivation = throw "tmuxPlugins.mkDerivation is deprecated, use tmuxPlugins.mkTmuxPlugin instead"; # added 2021-03-14 + + battery = mkTmuxPlugin { + pluginName = "battery"; + version = "unstable-2019-07-04"; + src = fetchFromGitHub { + owner = "tmux-plugins"; + repo = "tmux-battery"; + rev = "f8b8e8451990365e0c98c38c184962e4f83b793b"; + sha256 = "1bhdzsx3kdjqjmm1q4j8937lrpkzf71irr3fqhdbddsghwrrmwim"; + }; + }; + + better-mouse-mode = mkTmuxPlugin { + pluginName = "better-mouse-mode"; + version = "unstable-2021-08-02"; + src = fetchFromGitHub { + owner = "NHDaly"; + repo = "tmux-better-mouse-mode"; + rev = "aa59077c635ab21b251bd8cb4dc24c415e64a58e"; + sha256 = "06346ih3hzwszhkj25g4xv5av7292s6sdbrdpx39p0n3kgf5mwww"; + }; + rtpFilePath = "scroll_copy_mode.tmux"; + meta = { + homepage = "https://github.com/NHDaly/tmux-better-mouse-mode"; + description = "better mouse support for tmux"; + longDescription = + '' + Features: + + * Emulate mouse-support for full-screen programs like less that don't provide built in mouse support. + * Exit copy-mode and return to your prompt by scrolling back all the way down to the bottom. + * Adjust your scrolling speed. + ''; + license = lib.licenses.mit; + platforms = lib.platforms.unix; + maintainers = with lib.maintainers; [ chrispickard ]; + }; + }; + + catppuccin = mkTmuxPlugin { + pluginName = "catppuccin"; + version = "unstable-2023-08-21"; + src = fetchFromGitHub { + owner = "catppuccin"; + repo = "tmux"; + rev = "7a284c98e5df4cc84a1a45ad633916f0b2b916b2"; + hash = "sha256-jxcxW0gEfXaSt8VM3UIs0dKNKaHb8JSEQBBV3SVjW/A="; + }; + postInstall = '' + sed -i -e 's|''${PLUGIN_DIR}/catppuccin-selected-theme.tmuxtheme|''${TMUX_TMPDIR}/catppuccin-selected-theme.tmuxtheme|g' $target/catppuccin.tmux + ''; + meta = with lib; { + homepage = "https://github.com/catppuccin/tmux"; + description = "Soothing pastel theme for Tmux!"; + license = licenses.mit; + platforms = platforms.unix; + maintainers = with maintainers; [ jnsgruk ]; + }; + }; + + continuum = mkTmuxPlugin { + pluginName = "continuum"; + version = "unstable-2022-01-25"; + src = fetchFromGitHub { + owner = "tmux-plugins"; + repo = "tmux-continuum"; + rev = "fc2f31d79537a5b349f55b74c8ca69abaac1ddbb"; + sha256 = "06i1jp83iybw76raaxciqz9a7ypgpkvbyjn6jjap8jpqfmj2wmjb"; + }; + meta = { + homepage = "https://github.com/tmux-plugins/tmux-continuum"; + description = "continuous saving of tmux environment"; + longDescription = + '' + Features: + * continuous saving of tmux environment + * automatic tmux start when computer/server is turned on + * automatic restore when tmux is started + + Together, these features enable uninterrupted tmux usage. No matter the + computer or server restarts, if the machine is on, tmux will be there how + you left it off the last time it was used. + ''; + license = lib.licenses.mit; + platforms = lib.platforms.unix; + maintainers = with lib.maintainers; [ ronanmacf ]; + }; + }; + + copy-toolkit = mkTmuxPlugin rec { + pluginName = "copy-toolkit"; + rtpFilePath = "copytk.tmux"; + version = "1.1"; + src = fetchFromGitHub { + owner = "CrispyConductor"; + repo = "tmux-copy-toolkit"; + rev = "v${version}"; + sha256 = "MEMC9klm+PH66UHwrB2SqdCaZX0LAujL+Woo/hV84m4="; + }; + postInstall = '' + sed -i -e 's|python3 |${pkgs.python3}/bin/python3 |g' $target/copytk.tmux + sed -i -e 's|/bin/bash|${pkgs.bash}/bin/bash|g;s|/bin/cat|${pkgs.coreutils}/bin/cat|g' $target/copytk.py + ''; + meta = { + homepage = "https://github.com/CrispyConductor/tmux-copy-toolkit"; + description = "Various copy-mode tools"; + license = lib.licenses.mit; + platforms = lib.platforms.unix; + maintainers = with lib.maintainers; [ deejayem ]; + }; + }; + + copycat = mkTmuxPlugin { + pluginName = "copycat"; + version = "unstable-2020-01-09"; + src = fetchFromGitHub { + owner = "tmux-plugins"; + repo = "tmux-copycat"; + rev = "77ca3aab2aed8ede3e2b941079b1c92dd221cf5f"; + sha256 = "1bchwzhai8k5rk32n4lrmh56rw944jqxr8imjk74hyaa7bbn81ds"; + }; + }; + + cpu = mkTmuxPlugin { + pluginName = "cpu"; + version = "unstable-2023-01-06"; + src = fetchFromGitHub { + owner = "tmux-plugins"; + repo = "tmux-cpu"; + rev = "98d787191bc3e8f19c3de54b96ba1caf61385861"; + sha256 = "sha256-ymmCI6VYvf94Ot7h2GAboTRBXPIREP+EB33+px5aaJk="; + }; + }; + + ctrlw = mkTmuxPlugin rec { + pluginName = "ctrlw"; + version = "0.1.1"; + src = fetchFromGitHub { + owner = "eraserhd"; + repo = "tmux-ctrlw"; + rev = "v${version}"; + sha256 = "1kv5pqfjczd6z7i9jf6j5xmcai50l9bn5p2p1w1l5fi6cj8cz1k1"; + }; + }; + + dracula = mkTmuxPlugin rec { + pluginName = "dracula"; + version = "2.2.0"; + src = fetchFromGitHub { + owner = "dracula"; + repo = "tmux"; + rev = "v${version}"; + sha256 = "9p+KO3/SrASHGtEk8ioW+BnC4cXndYx4FL0T70lKU2w="; + }; + meta = with lib; { + homepage = "https://draculatheme.com/tmux"; + description = "A feature packed Dracula theme for tmux!"; + license = licenses.mit; + platforms = platforms.unix; + maintainers = with maintainers; [ ethancedwards8 ]; + }; + }; + + extrakto = mkTmuxPlugin { + pluginName = "extrakto"; + version = "unstable-2021-04-04"; + src = fetchFromGitHub { + owner = "laktak"; + repo = "extrakto"; + rev = "de8ac3e8a9fa887382649784ed8cae81f5757f77"; + sha256 = "0mkp9r6mipdm7408w7ls1vfn6i3hj19nmir2bvfcp12b69zlzc47"; + }; + nativeBuildInputs = [ pkgs.makeWrapper ]; + postInstall = '' + for f in extrakto.sh open.sh tmux-extrakto.sh; do + wrapProgram $target/scripts/$f \ + --prefix PATH : ${with pkgs; lib.makeBinPath ( + [ pkgs.fzf pkgs.python3 pkgs.xclip ] + )} + done + + ''; + meta = { + homepage = "https://github.com/laktak/extrakto"; + description = "Fuzzy find your text with fzf instead of selecting it by hand "; + license = lib.licenses.mit; + platforms = lib.platforms.unix; + maintainers = with lib.maintainers; [ kidd ]; + }; + }; + + fingers = mkTmuxPlugin rec { + pluginName = "tmux-fingers"; + rtpFilePath = "load-config.tmux"; + version = "2.1.1"; + src = fetchFromGitHub { + owner = "Morantron"; + repo = "tmux-fingers"; + rev = "${version}"; + sha256 = "sha256-1YMh6m8M6FKf8RPXsOfWCVC5CXSr/MynguwkG7O+oEY="; + }; + nativeBuildInputs = [ pkgs.makeWrapper pkgs.crystal pkgs.shards ]; + postInstall = '' + shards build --production + rm -rf $target/* $target/.* + cp -r bin $target/bin + echo "$target/bin/${pluginName} load-config" > $target/${rtpFilePath} + chmod +x $target/${rtpFilePath} + + wrapProgram $target/${rtpFilePath} \ + --prefix PATH : ${with pkgs; lib.makeBinPath ( + [ gawk ] ++ lib.optionals stdenv.isDarwin [ reattach-to-user-namespace ] + )} + ''; + }; + + fpp = mkTmuxPlugin { + pluginName = "fpp"; + version = "unstable-2016-03-08"; + src = fetchFromGitHub { + owner = "tmux-plugins"; + repo = "tmux-fpp"; + rev = "ca125d5a9c80bb156ac114ac3f3d5951a795c80e"; + sha256 = "1b89s6mfzifi7s5iwf22w7niddpq28w48nmqqy00dv38z4yga5ws"; + }; + postInstall = '' + sed -i -e 's|fpp |${pkgs.fpp}/bin/fpp |g' $target/fpp.tmux + ''; + }; + + fuzzback = mkTmuxPlugin { + pluginName = "fuzzback"; + version = "unstable-2022-11-21"; + src = fetchFromGitHub { + owner = "roosta"; + repo = "tmux-fuzzback"; + rev = "bfd9cf0ef1c35488f0080f0c5ca4fddfdd7e18ec"; + sha256 = "w788xDBkfiLdUVv1oJi0YikFPqVk6LiN6PDfHu8on5E="; + }; + nativeBuildInputs = [ pkgs.makeWrapper ]; + postInstall = '' + for f in fuzzback.sh preview.sh supported.sh; do + chmod +x $target/scripts/$f + wrapProgram $target/scripts/$f \ + --prefix PATH : ${with pkgs; lib.makeBinPath [ coreutils fzf gawk gnused ]} + done + ''; + meta = { + homepage = "https://github.com/roosta/tmux-fuzzback"; + description = "Fuzzy search for terminal scrollback"; + license = lib.licenses.mit; + platforms = lib.platforms.unix; + maintainers = with lib.maintainers; [ deejayem ]; + }; + }; + + fzf-tmux-url = mkTmuxPlugin { + pluginName = "fzf-tmux-url"; + rtpFilePath = "fzf-url.tmux"; + version = "unstable-2021-12-27"; + src = fetchFromGitHub { + owner = "wfxr"; + repo = "tmux-fzf-url"; + rev = "1241fc5682850fe41812cad81c76541674ee305b"; + sha256 = "1270c5nfvgsdajgfahlacqfb5xwg4hwfrciiy0v03d50vg4h0kdi"; + }; + }; + + gruvbox = mkTmuxPlugin { + pluginName = "gruvbox"; + rtpFilePath = "gruvbox-tpm.tmux"; + version = "unstable-2022-04-19"; + src = fetchFromGitHub { + owner = "egel"; + repo = "tmux-gruvbox"; + rev = "3f9e38d7243179730b419b5bfafb4e22b0a969ad"; + sha256 = "1l0kq77rk3cbv0rvh7bmfn90vvqqmywn9jk6gbl9mg3qbynq5wcf"; + }; + }; + + jump = mkTmuxPlugin { + pluginName = "jump"; + version = "2020-06-26"; + rtpFilePath = "tmux-jump.tmux"; + src = fetchFromGitHub { + owner = "schasse"; + repo = "tmux-jump"; + rev = "416f613d3eaadbe1f6f9eda77c49430527ebaffb"; + sha256 = "1xbzdyhsgaq2in0f8f491gwjmx6cxpkf2c35d2dk0kg4jfs505sz"; + }; + postInstall = '' + sed -i -e 's|ruby|${pkgs.ruby}/bin/ruby|g' $target/scripts/tmux-jump.sh + ''; + meta = with lib; { + homepage = "https://github.com/schasse/tmux-jump"; + description = "Vimium/Easymotion like navigation for tmux"; + license = licenses.gpl3; + platforms = platforms.unix; + maintainers = with maintainers; [ arnarg ]; + }; + }; + + logging = mkTmuxPlugin { + pluginName = "logging"; + version = "unstable-2019-04-19"; + src = fetchFromGitHub { + owner = "tmux-plugins"; + repo = "tmux-logging"; + rev = "b085ad423b5d59a2c8b8d71772352e7028b8e1d0"; + sha256 = "0p0sawysalhi8k2a5hdxniqx6kb24kd8rnvfzkjqigzid5ik37js"; + }; + }; + + mode-indicator = mkTmuxPlugin rec { + pluginName = "mode-indicator"; + version = "unstable-2021-10-01"; + src = fetchFromGitHub { + owner = "MunifTanjim"; + repo = "tmux-mode-indicator"; + rev = "11520829210a34dc9c7e5be9dead152eaf3a4423"; + sha256 = "sha256-hlhBKC6UzkpUrCanJehs2FxK5SoYBoiGiioXdx6trC4="; + }; + meta = with lib; { + homepage = "https://github.com/MunifTanjim/tmux-mode-indicator"; + description = "Plugin that displays prompt indicating currently active Tmux mode"; + license = licenses.mit; + platforms = platforms.unix; + maintainers = with maintainers; [ aacebedo ]; + }; + }; + + net-speed = mkTmuxPlugin { + pluginName = "net-speed"; + version = "unstable-2018-12-02"; + src = fetchFromGitHub { + owner = "tmux-plugins"; + repo = "tmux-net-speed"; + rev = "58abb615971cb617821e2e7e41c660334f55a92d"; + sha256 = "1aj06gdhzcxsydjzf21n9kyxigwf38kh2rg8hh7gnjk260ydqlrc"; + }; + }; + + nord = mkTmuxPlugin rec { + pluginName = "nord"; + version = "0.3.0"; + src = pkgs.fetchFromGitHub { + owner = "arcticicestudio"; + repo = "nord-tmux"; + rev = "v${version}"; + sha256 = "14xhh49izvjw4ycwq5gx4if7a0bcnvgsf3irywc3qps6jjcf5ymk"; + }; + }; + + maildir-counter = mkTmuxPlugin { + pluginName = "maildir-counter"; + version = "unstable-2016-11-25"; + src = fetchFromGitHub { + owner = "tmux-plugins"; + repo = "tmux-maildir-counter"; + rev = "9415f0207e71e37cbd870c9443426dbea6da78b9"; + sha256 = "0dwvqhiv9bjwr01hsi5c57n55jyv5ha5m5q1aqgglf4wyhbnfms4"; + }; + }; + + online-status = mkTmuxPlugin { + pluginName = "online-status"; + version = "unstable-2018-11-30"; + src = fetchFromGitHub { + owner = "tmux-plugins"; + repo = "tmux-online-status"; + rev = "ea86704ced8a20f4a431116aa43f57edcf5a6312"; + sha256 = "1hy3vg8v2sir865ylpm2r4ip1zgd4wlrf24jbwh16m23qdcvc19r"; + }; + }; + + open = mkTmuxPlugin { + pluginName = "open"; + version = "unstable-2019-12-02"; + src = fetchFromGitHub { + owner = "tmux-plugins"; + repo = "tmux-open"; + rev = "cedb4584908bd8458fadc8d3e64101d3cbb48d46"; + sha256 = "10s0xdhmg0dhpj13ybcq72pw3xgb2dq5v5h2mwidzqyh9g17wndh"; + }; + }; + + onedark-theme = mkTmuxPlugin { + pluginName = "onedark-theme"; + rtpFilePath = "tmux-onedark-theme.tmux"; + version = "unstable-2020-06-07"; + src = fetchFromGitHub { + owner = "odedlaz"; + repo = "tmux-onedark-theme"; + rev = "3607ef889a47dd3b4b31f66cda7f36da6f81b85c"; + sha256 = "19jljshwp2p83b634cd1mw69091x42jj0dg40ipw61qy6642h2m5"; + }; + }; + + pain-control = mkTmuxPlugin { + pluginName = "pain-control"; + version = "unstable-2020-02-18"; + src = fetchFromGitHub { + owner = "tmux-plugins"; + repo = "tmux-pain-control"; + rev = "2db63de3b08fc64831d833240749133cecb67d92"; + sha256 = "0w7a6n4n86ysiqcqj12j2hg9r5fznvbp3dz8pzas9q1k3avlk0zk"; + }; + }; + + plumb = mkTmuxPlugin rec { + pluginName = "plumb"; + version = "0.1.1"; + src = fetchFromGitHub { + owner = "eraserhd"; + repo = "tmux-plumb"; + rev = "v${version}"; + sha256 = "1c6k4fdl0az9811r6k164mgd4w5la75xr6x7nabmy046xc0z5i2r"; + }; + postInstall = '' + sed -i -e 's,9 plumb,${pkgs.plan9port}/bin/9 plumb,' $target/scripts/plumb + ''; + }; + + power-theme = mkTmuxPlugin { + pluginName = "power"; + rtpFilePath = "tmux-power.tmux"; + version = "unstable-2020-11-18"; + src = pkgs.fetchFromGitHub { + owner = "wfxr"; + repo = "tmux-power"; + rev = "aec44aa5e00cc39eb71c668b1d73823270058e7d"; + sha256 = "11nm8cylx10d565g17acy0bj12n6dcbxp71zca2bmg0j1dq859cm"; + }; + }; + + prefix-highlight = mkTmuxPlugin { + pluginName = "prefix-highlight"; + version = "unstable-2021-03-30"; + src = fetchFromGitHub { + owner = "tmux-plugins"; + repo = "tmux-prefix-highlight"; + rev = "15acc6172300bc2eb13c81718dc53da6ae69de4f"; + sha256 = "08rkflfnynxgv2s26b33l199h6xcqdfmlqbyqa1wkw7h85br3dgl"; + }; + }; + + resurrect = mkTmuxPlugin { + pluginName = "resurrect"; + version = "unstable-2022-05-01"; + src = fetchFromGitHub { + owner = "tmux-plugins"; + repo = "tmux-resurrect"; + rev = "ca6468e2deef11efadfe3a62832ae67742505432"; + sha256 = "0d7jg5dy4jq64679rf2zqmqbvgiqvpcj5jxfljk7d7y86dnqhj3n"; + }; + meta = { + homepage = "https://github.com/tmux-plugins/tmux-resurrect"; + description = "Restore tmux environment after system restart"; + longDescription = + '' + This plugin goes to great lengths to save and restore all the details + from your tmux environment. Here's what's been taken care of: + + * all sessions, windows, panes and their order + * current working directory for each pane + * exact pane layouts within windows (even when zoomed) + * active and alternative session + * active and alternative window for each session + * windows with focus + * active pane for each window + * "grouped sessions" (useful feature when using tmux with multiple monitors) + * programs running within a pane! More details in the restoring programs doc. + + Optional: + * restoring vim and neovim sessions + * restoring pane contents + ''; + license = lib.licenses.mit; + platforms = lib.platforms.unix; + maintainers = with lib.maintainers; [ ronanmacf ]; + }; + }; + + sensible = mkTmuxPlugin { + pluginName = "sensible"; + version = "unstable-2017-09-05"; + src = fetchFromGitHub { + owner = "tmux-plugins"; + repo = "tmux-sensible"; + rev = "e91b178ff832b7bcbbf4d99d9f467f63fd1b76b5"; + sha256 = "1z8dfbwblrbmb8sgb0k8h1q0dvfdz7gw57las8nwd5gj6ss1jyvx"; + }; + postInstall = lib.optionalString stdenv.isDarwin '' + sed -e 's:reattach-to-user-namespace:${pkgs.reattach-to-user-namespace}/bin/reattach-to-user-namespace:g' -i $target/sensible.tmux + ''; + }; + + sessionist = mkTmuxPlugin { + pluginName = "sessionist"; + version = "unstable-2017-12-03"; + src = fetchFromGitHub { + owner = "tmux-plugins"; + repo = "tmux-sessionist"; + rev = "09ec86be38eae98ffc27bd0dde605ed10ae0dc89"; + sha256 = "030q2mmj8akbc26jnqn8n7fckg1025p0ildx4wr401b6p1snnlw4"; + }; + }; + + sidebar = mkTmuxPlugin { + pluginName = "sidebar"; + version = "unstable-2018-11-30"; + src = fetchFromGitHub { + owner = "tmux-plugins"; + repo = "tmux-sidebar"; + rev = "aacbdb45bc5ab69db448a72de4155d0b8dbac677"; + sha256 = "1bp90zbv19kbbiik0bgb893ybss1jqsnk3353a631993xjwsih7c"; + }; + }; + + sysstat = mkTmuxPlugin { + pluginName = "sysstat"; + version = "unstable-2017-12-12"; + src = fetchFromGitHub { + owner = "samoshkin"; + repo = "tmux-plugin-sysstat"; + rev = "29e150f403151f2341f3abcb2b2487a5f011dd23"; + sha256 = "013mv9p6r2r0ls3p60l8hdad4hm8niv3wr27vgm925gxmibi4hyq"; + }; + }; + + tilish = mkTmuxPlugin { + pluginName = "tilish"; + version = "unstable-2023-09-20"; + src = fetchFromGitHub { + owner = "jabirali"; + repo = "tmux-tilish"; + rev = "22f7920837d827dc6cb31143ea916afa677c24c1"; + sha256 = "wP3c+p/DM6ve7GUhi0QEzggct7NS4XUa78sVQFSKrfo="; + }; + + meta = with lib; { + homepage = "https://github.com/jabirali/tmux-tilish"; + description = "Plugin which makes tmux work and feel like i3wm"; + license = licenses.mit; + platforms = platforms.unix; + maintainers = with maintainers; [ arnarg ]; + }; + }; + + tmux-colors-solarized = mkTmuxPlugin { + pluginName = "tmuxcolors"; + version = "unstable-2019-07-14"; + src = fetchFromGitHub { + owner = "seebi"; + repo = "tmux-colors-solarized"; + rev = "e5e7b4f1af37f8f3fc81ca17eadee5ae5d82cd09"; + sha256 = "1l3i82abzi4b395cgdsjg7lcfaq15kyyhijwvrgchzxi95z3hl4x"; + }; + }; + + tmux-fzf = mkTmuxPlugin { + pluginName = "tmux-fzf"; + rtpFilePath = "main.tmux"; + version = "unstable-2023-10-24"; + src = fetchFromGitHub { + owner = "sainnhe"; + repo = "tmux-fzf"; + rev = "d62b6865c0e7c956ad1f0396823a6f34cf7452a7"; + hash = "sha256-hVkSQYvBXrkXbKc98V9hwwvFp6z7/mX1K4N3N9j4NN4="; + }; + postInstall = '' + find $target -type f -print0 | xargs -0 sed -i -e 's|fzf |${pkgs.fzf}/bin/fzf |g' + find $target -type f -print0 | xargs -0 sed -i -e 's|sed |${pkgs.gnused}/bin/sed |g' + find $target -type f -print0 | xargs -0 sed -i -e 's|tput |${pkgs.ncurses}/bin/tput |g' + ''; + meta = { + homepage = "https://github.com/sainnhe/tmux-fzf"; + description = "Use fzf to manage your tmux work environment! "; + longDescription = + '' + Features: + * Manage sessions (attach, detach*, rename, kill*). + * Manage windows (switch, link, move, swap, rename, kill*). + * Manage panes (switch, break, join*, swap, layout, kill*, resize). + * Multiple selection (support for actions marked by *). + * Search commands and append to command prompt. + * Search key bindings and execute. + * User menu. + * Popup window support. + ''; + license = lib.licenses.mit; + platforms = lib.platforms.unix; + maintainers = with lib.maintainers; [ kyleondy ]; + }; + }; + + tmux-thumbs = pkgs.callPackage ./tmux-thumbs { + inherit mkTmuxPlugin; + }; + + urlview = mkTmuxPlugin { + pluginName = "urlview"; + version = "unstable-2016-01-06"; + src = fetchFromGitHub { + owner = "tmux-plugins"; + repo = "tmux-urlview"; + rev = "b84c876cffdd22990b4ab51247e795cbd7813d53"; + sha256 = "1jp4jq57cn116b3i34v6yy69izd8s6mp2ijr260cw86g0470k0fn"; + }; + postInstall = '' + sed -i -e '14,20{s|extract_url|${pkgs.extract_url}/bin/extract_url|g}' $target/urlview.tmux + ''; + }; + + vim-tmux-focus-events = mkTmuxPlugin { + pluginName = "vim-tmux-focus-events"; + version = "unstable-2020-10-05"; + src = fetchFromGitHub { + owner = "tmux-plugins"; + repo = "vim-tmux-focus-events"; + rev = "a568192ca0de4ca0bd7b3cd0249aad491625c941"; + sha256 = "130l73v18md95djkc4s9d0fr018f8f183sjcgy7dgldwdaxlqdi1"; + }; + + meta = with lib; { + homepage = "https://github.com/tmux-plugins/vim-tmux-focus-events"; + description = "Makes FocusGained and FocusLost autocommand events work in vim when using tmux"; + license = licenses.mit; + platforms = platforms.unix; + maintainers = with maintainers; [ ronanmacf ]; + }; + }; + + vim-tmux-navigator = mkTmuxPlugin { + pluginName = "vim-tmux-navigator"; + rtpFilePath = "vim-tmux-navigator.tmux"; + version = "unstable-2022-08-21"; + src = fetchFromGitHub { + owner = "christoomey"; + repo = "vim-tmux-navigator"; + rev = "afb45a55b452b9238159047ce7c6e161bd4a9907"; + hash = "sha256-8A+Yt9uhhAP76EiqUopE8vl7/UXkgU2x000EOcF7pl0="; + }; + }; + + weather = mkTmuxPlugin { + pluginName = "weather"; + version = "unstable-2020-02-08"; + src = fetchFromGitHub { + owner = "xamut"; + repo = "tmux-weather"; + rev = "28a5fbe75bb25a408193d454304e28ddd75e9338"; + hash = "sha256-of9E/npEsF1JVc9ttwrbC5WkIAwCNBJAgTfExfj79i4="; + }; + + meta = with lib; { + homepage = "https://github.com/xamut/tmux-weather"; + description = "Shows weather in the status line"; + license = licenses.mit; + platforms = platforms.unix; + maintainers = with maintainers; [ jfvillablanca ]; + }; + }; + + yank = mkTmuxPlugin { + pluginName = "yank"; + version = "unstable-2021-06-20"; + src = fetchFromGitHub { + owner = "tmux-plugins"; + repo = "tmux-yank"; + rev = "1b1a436e19f095ae8f825243dbe29800a8acd25c"; + sha256 = "hRvkBf+YrWycecnDixAsD4CAHg3KsioomfJ/nLl5Zgs="; + }; + }; +} diff --git a/nixpkgs/pkgs/misc/tmux-plugins/tmux-thumbs/default.nix b/nixpkgs/pkgs/misc/tmux-plugins/tmux-thumbs/default.nix new file mode 100644 index 000000000000..f55a2dbe7b60 --- /dev/null +++ b/nixpkgs/pkgs/misc/tmux-plugins/tmux-thumbs/default.nix @@ -0,0 +1,29 @@ +{ lib, mkTmuxPlugin, fetchFromGitHub, thumbs, substituteAll }: + +mkTmuxPlugin rec { + pluginName = "tmux-thumbs"; + version = "0.7.1"; + rtpFilePath = "tmux-thumbs.tmux"; + + src = fetchFromGitHub { + owner = "fcsonline"; + repo = pluginName; + rev = version; + sha256 = "sha256-PH1nscmVhxJFupS7dlbOb+qEwG/Pa/2P6XFIbR/cfaQ="; + }; + + patches = [ + (substituteAll { + src = ./fix.patch; + tmuxThumbsDir = "${thumbs}/bin"; + }) + ]; + + meta = with lib; { + homepage = "https://github.com/fcsonline/tmux-thumbs"; + description = "A lightning fast version of tmux-fingers written in Rust for copy pasting with vimium/vimperator like hints."; + license = licenses.mit; + platforms = platforms.unix; + maintainers = with maintainers; [ ghostbuster91 ]; + }; +} diff --git a/nixpkgs/pkgs/misc/tmux-plugins/tmux-thumbs/fix.patch b/nixpkgs/pkgs/misc/tmux-plugins/tmux-thumbs/fix.patch new file mode 100644 index 000000000000..326696ebc40a --- /dev/null +++ b/nixpkgs/pkgs/misc/tmux-plugins/tmux-thumbs/fix.patch @@ -0,0 +1,45 @@ +diff --git a/tmux-thumbs.sh b/tmux-thumbs.sh +index 34dd528..8c05d54 100755 +--- a/tmux-thumbs.sh ++++ b/tmux-thumbs.sh +@@ -1,22 +1,8 @@ + #!/usr/bin/env bash + set -Eeu -o pipefail + +-VERSION=$(grep 'version =' Cargo.toml | grep -oe "[0-9]\+.[0-9]\+.[0-9]\+") +- + # Setup env variables to be compatible with compiled and bundled installations + CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +-RELEASE_DIR="${CURRENT_DIR}/target/release" +- +-THUMBS_BINARY="${RELEASE_DIR}/thumbs" +-TMUX_THUMBS_BINARY="${RELEASE_DIR}/tmux-thumbs" +- +-if [ ! -f "$THUMBS_BINARY" ]; then +- tmux split-window "cd ${CURRENT_DIR} && bash ./tmux-thumbs-install.sh" +- exit +-elif [[ $(${THUMBS_BINARY} --version) != "thumbs ${VERSION}" ]]; then +- tmux split-window "cd ${CURRENT_DIR} && bash ./tmux-thumbs-install.sh update" +- exit +-fi + + function get-opt-value() { + tmux show -vg "@thumbs-${1}" 2> /dev/null +@@ -36,7 +22,7 @@ function get-opt-arg() { + fi + } + +-PARAMS=(--dir "${CURRENT_DIR}") ++PARAMS=(--dir @tmuxThumbsDir@) + + function add-param() { + local type opt arg +@@ -51,4 +37,4 @@ add-param upcase-command string + add-param multi-command string + add-param osc52 boolean + +-"${TMUX_THUMBS_BINARY}" "${PARAMS[@]}" || true ++@tmuxThumbsDir@/tmux-thumbs "${PARAMS[@]}" || true + + + diff --git a/nixpkgs/pkgs/misc/tpm2-pkcs11/default.nix b/nixpkgs/pkgs/misc/tpm2-pkcs11/default.nix new file mode 100644 index 000000000000..48ec7839d3e1 --- /dev/null +++ b/nixpkgs/pkgs/misc/tpm2-pkcs11/default.nix @@ -0,0 +1,86 @@ +{ stdenv, lib, fetchFromGitHub, substituteAll +, pkg-config, autoreconfHook, autoconf-archive, makeWrapper, patchelf +, tpm2-tss, tpm2-tools, opensc, openssl, sqlite, python3, glibc, libyaml +, abrmdSupport ? true, tpm2-abrmd ? null +, fapiSupport ? true +}: + +stdenv.mkDerivation rec { + pname = "tpm2-pkcs11"; + version = "1.9.0"; + + src = fetchFromGitHub { + owner = "tpm2-software"; + repo = pname; + rev = version; + sha256 = "sha256-SoHtgZRIYNJg4/w1MIocZAM26mkrM+UOQ+RKCh6nwCk="; + }; + + patches = [ + ./version.patch + ./graceful-fapi-fail.patch + ]; + + # The preConfigure phase doesn't seem to be working here + # ./bootstrap MUST be executed as the first step, before all + # of the autoreconfHook stuff + postPatch = '' + echo ${version} > VERSION + ./bootstrap + ''; + + configureFlags = lib.optionals (!fapiSupport) [ + # Note: this will be renamed to with-fapi in next release. + "--enable-fapi=no" + ]; + + nativeBuildInputs = [ + pkg-config autoreconfHook autoconf-archive makeWrapper patchelf + ]; + buildInputs = [ + tpm2-tss tpm2-tools opensc openssl sqlite libyaml + (python3.withPackages (ps: with ps; [ packaging pyyaml cryptography pyasn1-modules tpm2-pytss ])) + ]; + + outputs = [ "out" "bin" "dev" ]; + + dontStrip = true; + dontPatchELF = true; + + # To be able to use the userspace resource manager, the RUNPATH must + # explicitly include the tpm2-abrmd shared libraries. + preFixup = let + rpath = lib.makeLibraryPath ( + (lib.optional abrmdSupport tpm2-abrmd) + ++ [ + tpm2-tss + sqlite + openssl + glibc + libyaml + ] + ); + in '' + patchelf \ + --set-rpath ${rpath} \ + ${lib.optionalString abrmdSupport "--add-needed ${lib.makeLibraryPath [tpm2-abrmd]}/libtss2-tcti-tabrmd.so"} \ + --add-needed ${lib.makeLibraryPath [tpm2-tss]}/libtss2-tcti-device.so \ + $out/lib/libtpm2_pkcs11.so.0.0.0 + ''; + + postInstall = '' + mkdir -p $bin/bin/ $bin/share/tpm2_pkcs11/ + mv ./tools/* $bin/share/tpm2_pkcs11/ + makeWrapper $bin/share/tpm2_pkcs11/tpm2_ptool.py $bin/bin/tpm2_ptool \ + --prefix PATH : ${lib.makeBinPath [ tpm2-tools ]} + ''; + + meta = with lib; { + description = "A PKCS#11 interface for TPM2 hardware"; + homepage = "https://github.com/tpm2-software/tpm2-pkcs11"; + license = licenses.bsd2; + platforms = platforms.linux; + maintainers = with maintainers; [ ]; + mainProgram = "tpm2_ptool"; + }; +} diff --git a/nixpkgs/pkgs/misc/tpm2-pkcs11/graceful-fapi-fail.patch b/nixpkgs/pkgs/misc/tpm2-pkcs11/graceful-fapi-fail.patch new file mode 100644 index 000000000000..26712e9830c7 --- /dev/null +++ b/nixpkgs/pkgs/misc/tpm2-pkcs11/graceful-fapi-fail.patch @@ -0,0 +1,51 @@ +From 2e3e3c0b0f4e0c19e411fd46358930bf158ad3f5 Mon Sep 17 00:00:00 2001 +From: Jonathan McDowell <noodles@earth.li> +Date: Wed, 1 Feb 2023 09:29:58 +0000 +Subject: [PATCH] Gracefully fail FAPI init when it's not compiled in + +Instead of emitting: + + WARNING: Getting tokens from fapi backend failed. + +errors when FAPI support is not compiled in gracefully fail the FAPI +init and don't log any warnings. We'll still produce a message +indicating this is what's happened in verbose mode, but normal operation +no longer gets an unnecessary message. + +Fixes #792 + +Signed-off-by: Jonathan McDowell <noodles@earth.li> +--- + src/lib/backend.c | 4 +++- + src/lib/backend_fapi.c | 3 ++- + 2 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/src/lib/backend.c b/src/lib/backend.c +index ca5e2ccf..128f58b9 100644 +--- a/src/lib/backend.c ++++ b/src/lib/backend.c +@@ -53,7 +53,9 @@ CK_RV backend_init(void) { + LOGE(msg); + return rv; + } +- LOGW(msg); ++ if (rv != CKR_FUNCTION_NOT_SUPPORTED) { ++ LOGW(msg); ++ } + } else { + fapi_init = true; + } +diff --git a/src/lib/backend_fapi.c b/src/lib/backend_fapi.c +index fe594f0e..3a203632 100644 +--- a/src/lib/backend_fapi.c ++++ b/src/lib/backend_fapi.c +@@ -977,7 +977,8 @@ CK_RV backend_fapi_token_changeauth(token *tok, bool user, twist toldpin, twist + + CK_RV backend_fapi_init(void) { + +- return CKR_OK; ++ LOGV("FAPI not enabled, failing init"); ++ return CKR_FUNCTION_NOT_SUPPORTED; + } + + CK_RV backend_fapi_destroy(void) { diff --git a/nixpkgs/pkgs/misc/tpm2-pkcs11/version.patch b/nixpkgs/pkgs/misc/tpm2-pkcs11/version.patch new file mode 100644 index 000000000000..297a7bd53736 --- /dev/null +++ b/nixpkgs/pkgs/misc/tpm2-pkcs11/version.patch @@ -0,0 +1,10 @@ +--- a/bootstrap ++++ b/bootstrap +@@ -4,7 +4,6 @@ + + # Generate a VERSION file that is included in the dist tarball to avoid needed git + # when calling autoreconf in a release tarball. +-git describe --tags --always --dirty > VERSION + + # generate list of source files for use in Makefile.am + # if you add new source files, you must run ./bootstrap again diff --git a/nixpkgs/pkgs/misc/translatelocally-models/default.nix b/nixpkgs/pkgs/misc/translatelocally-models/default.nix new file mode 100644 index 000000000000..3c71247d1d9a --- /dev/null +++ b/nixpkgs/pkgs/misc/translatelocally-models/default.nix @@ -0,0 +1,43 @@ +{ lib, stdenvNoCC, fetchurl }: + +let + modelSpecs = (builtins.fromJSON (builtins.readFile ./models.json)); + withCodeAsKey = f: { code, ... }@attrs: lib.nameValuePair code (f attrs); + mkModelPackage = { name, code, version, url, checksum }: + stdenvNoCC.mkDerivation { + pname = "translatelocally-model-${code}"; + version = toString version; + + src = fetchurl { + inherit url; + sha256 = checksum; + }; + dontUnpack = true; + + installPhase = '' + TARGET="$out/share/translateLocally/models" + mkdir -p "$TARGET" + tar -xzf "$src" -C "$TARGET" + + # avoid patching shebangs in inconsistently executable extra files + find "$out" -type f -exec chmod -x {} + + ''; + + meta = { + description = "translateLocally model - ${name}"; + homepage = "https://translatelocally.com/"; + # https://github.com/browsermt/students/blob/master/LICENSE.md + license = lib.licenses.cc-by-sa-40; + }; + }; + allModelPkgs = + lib.listToAttrs (map (withCodeAsKey mkModelPackage) modelSpecs); + +in allModelPkgs // { + is-en-tiny = allModelPkgs.is-en-tiny.overrideAttrs (super: { + # missing model https://github.com/XapaJIaMnu/translateLocally/issues/147 + meta = super.meta // { broken = true; }; + }); +} // { + passthru.updateScript = ./update.sh; +} diff --git a/nixpkgs/pkgs/misc/translatelocally-models/models.json b/nixpkgs/pkgs/misc/translatelocally-models/models.json new file mode 100644 index 000000000000..98529a1a9549 --- /dev/null +++ b/nixpkgs/pkgs/misc/translatelocally-models/models.json @@ -0,0 +1,149 @@ +[ + { + "version": 1, + "checksum": "3714539160d5b4dce3ce0d829939315e3daffeaff53647249cc6336d745c09f2", + "url": "https://data.statmt.org/bergamot/models/csen/csen.student.base.tar.gz", + "name": "Czech-English base", + "code": "cs-en-base" + }, + { + "version": 1, + "checksum": "693aa14ecb86275169ad4b01cbca294f3bd38d8d9bc1fad8dd89fa7e937e7d2c", + "url": "https://data.statmt.org/bergamot/models/csen/csen.student.tiny11.tar.gz", + "name": "Czech-English tiny", + "code": "cs-en-tiny" + }, + { + "version": 1, + "checksum": "7a57b4e3a11a2c5e03fc6855ffc2b8f61ce3f1a68aeefa4592577a9eebe25031", + "url": "https://data.statmt.org/bergamot/models/csen/encs.student.base.tar.gz", + "name": "English-Czech base", + "code": "en-cs-base" + }, + { + "version": 1, + "checksum": "f999d6511bdb4f1ff246b0563fdf9b71d836e1c3037fe5306a61836d3b5b8d19", + "url": "https://data.statmt.org/bergamot/models/csen/encs.student.tiny11.tar.gz", + "name": "English-Czech tiny", + "code": "en-cs-tiny" + }, + { + "version": 2, + "checksum": "e7362faa83c4f61e552adf8fbd4bc528fe706746eb9fc1c286ec9af7566e3daf", + "url": "https://data.statmt.org/bergamot/models/deen/deen.student.base.tar.gz", + "name": "German-English base", + "code": "de-en-base" + }, + { + "version": 2, + "checksum": "5c11b6ccfa0533fd5632b3cbccbb054972076266e2d1d989d3babb0ec0b10e28", + "url": "https://data.statmt.org/bergamot/models/deen/deen.student.tiny11.tar.gz", + "name": "German-English tiny", + "code": "de-en-tiny" + }, + { + "version": 2, + "checksum": "cf9ab5a41ce359672ab47579686f9af50fc1fe040552c375ca86912f0fce7827", + "url": "https://data.statmt.org/bergamot/models/deen/ende.student.base.tar.gz", + "name": "English-German base", + "code": "en-de-base" + }, + { + "version": 2, + "checksum": "0e85d1d7ee4f8a3ec12680696ffc11fa97d67a54d068ceafcf390a87df94877f", + "url": "https://data.statmt.org/bergamot/models/deen/ende.student.tiny11.tar.gz", + "name": "English-German tiny", + "code": "en-de-tiny" + }, + { + "version": 1, + "checksum": "adf49d0e2f21b82414bc353ae1f0904d93360caa92203ae9f2fc209a83882d81", + "url": "https://data.statmt.org/bergamot/models/esen/esen.student.tiny11.tar.gz", + "name": "Spanish-English tiny", + "code": "es-en-tiny" + }, + { + "version": 1, + "checksum": "6594dda2a4f5d333969c30f8356f4a9f3fe15a9f8a5fd018b0d85b9d9ad2abb0", + "url": "https://data.statmt.org/bergamot/models/esen/enes.student.tiny11.tar.gz", + "name": "English-Spanish tiny", + "code": "en-es-tiny" + }, + { + "version": 1, + "checksum": "05c6525549c9c621e348f8de74533764ad7696aba8245fc9a504116f8ef4053c", + "url": "https://data.statmt.org/bergamot/models/eten/eten.student.tiny11.tar.gz", + "name": "Estonian-English tiny", + "code": "et-en-tiny" + }, + { + "version": 1, + "checksum": "afce6c566270abdd4db332e8dcf4fe22057ada3b2a1171aab04d0d4817396fb5", + "url": "https://data.statmt.org/bergamot/models/eten/enet.student.tiny11.tar.gz", + "name": "English-Estonian tiny", + "code": "en-et-tiny" + }, + { + "version": 1, + "checksum": "5c1696747590d1a75bef67348dce96bcd3889eb5a06a0f670c3d7232ed79f60e", + "url": "https://data.statmt.org/bergamot/models/isen/isen.student.tiny11.tar.gz", + "name": "Icelandic-English tiny", + "code": "is-en-tiny" + }, + { + "version": 1, + "checksum": "9f5dde2f4f87438c24c9561990636e624c53b527ddc8505f822b22b073069de8", + "url": "https://data.statmt.org/bergamot/models/nben/nben.student.tiny11.tar.gz", + "name": "Norwegian (Bokmål)-English tiny", + "code": "nb-en-tiny" + }, + { + "version": 1, + "checksum": "0bb4b83560caaffae95940574d939999092800a7803fae4c79a97e6481887a4f", + "url": "https://data.statmt.org/bergamot/models/nnen/nnen.student.tiny11.tar.gz", + "name": "Norwegian (Nynorsk)-English tiny", + "code": "nn-en-tiny" + }, + { + "version": 1, + "checksum": "ecfe9c2b0be3406c0205ad2da58f4005893a4ae969e81dd9c523093cf5c7abc3", + "url": "https://data.statmt.org/bergamot/models/bgen/bgen.student.tiny11.tar.gz", + "name": "Bulgarian-English tiny", + "code": "bg-en-tiny" + }, + { + "version": 1, + "checksum": "eb9a7511ae9c89fb91ab6da1e9d5061946ad752e5801351f39c8eddca9705c74", + "url": "https://data.statmt.org/bergamot/models/bgen/enbg.student.tiny11.tar.gz", + "name": "English-Bulgarian tiny", + "code": "en-bg-tiny" + }, + { + "version": 1, + "checksum": "87148203cbda28421d76fffbd7d3cd6c1fc0d6dae2843c248870274d6512a388", + "url": "https://data.statmt.org/bergamot/models/plen/plen.student.tiny11.tar.gz", + "name": "Polish-English tiny", + "code": "pl-en-tiny" + }, + { + "version": 1, + "checksum": "c33219daa12e7872cf7ac8a1b86a2f3e0592ebadd7e756bf11d16d9a7725cf9b", + "url": "https://data.statmt.org/bergamot/models/plen/enpl.student.tiny11.tar.gz", + "name": "English-Polish tiny", + "code": "en-pl-tiny" + }, + { + "version": 1, + "checksum": "817a45ed9ec3228bfb797e5e14781ab7fe9f388fe1e834e280031f05089809f8", + "url": "https://data.statmt.org/bergamot/models/fren/fren.student.tiny11.tar.gz", + "name": "French-English tiny", + "code": "fr-en-tiny" + }, + { + "version": 1, + "checksum": "28deea86d2a02102a7fedf19391a7628386f01f1f532d430306a9728dc5ec2d6", + "url": "https://data.statmt.org/bergamot/models/fren/enfr.student.tiny11.tar.gz", + "name": "English-French tiny", + "code": "en-fr-tiny" + } +] diff --git a/nixpkgs/pkgs/misc/translatelocally-models/update.sh b/nixpkgs/pkgs/misc/translatelocally-models/update.sh new file mode 100755 index 000000000000..4c75508211b6 --- /dev/null +++ b/nixpkgs/pkgs/misc/translatelocally-models/update.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env nix-shell +#! nix-shell -i bash -p curl -p jq + +set -eu -o pipefail + +curl https://translatelocally.com/models.json \ + | jq '.models | map(with_entries(select([.key] | inside([ + "name", + "code", + "version", + "url", + "checksum" + ]))))' \ + > "$(dirname "$0")/models.json" diff --git a/nixpkgs/pkgs/misc/uboot/0001-configs-rpi-allow-for-bigger-kernels.patch b/nixpkgs/pkgs/misc/uboot/0001-configs-rpi-allow-for-bigger-kernels.patch new file mode 100644 index 000000000000..3a6fbeaef411 --- /dev/null +++ b/nixpkgs/pkgs/misc/uboot/0001-configs-rpi-allow-for-bigger-kernels.patch @@ -0,0 +1,45 @@ +From 3d0ce353cf62efea11aa88f814aa23bf8c04acc9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Milan=20P=C3=A4ssler?= <milan@petabyte.dev> +Date: Mon, 11 Jan 2021 15:13:10 +0100 +Subject: [PATCH] configs/rpi: allow for bigger kernels + +--- + include/configs/rpi.h | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/include/configs/rpi.h b/include/configs/rpi.h +index 834f1cd..10ab1e7 100644 +--- a/include/configs/rpi.h ++++ b/include/configs/rpi.h +@@ -153,20 +153,20 @@ + * more than ~700M away from the start of the kernel image but this number can + * be larger OR smaller depending on e.g. the 'vmalloc=xxxM' command line + * parameter given to the kernel. So reserving memory from low to high +- * satisfies this constraint again. Reserving 1M at 0x02600000-0x02700000 for +- * the DTB leaves rest of the free RAM to the initrd starting at 0x02700000. ++ * satisfies this constraint again. Reserving 1M at 0x04700000-0x04800000 for ++ * the DTB leaves rest of the free RAM to the initrd starting at 0x04800000. + * Even with the smallest possible CPU-GPU memory split of the CPU getting +- * only 64M, the remaining 25M starting at 0x02700000 should allow quite +- * large initrds before they start colliding with U-Boot. ++ * only 64M, the remaining 8M starting at 0x04800000 should allow reasonably ++ * sized initrds before they start colliding with U-Boot. + */ + #define ENV_MEM_LAYOUT_SETTINGS \ + "fdt_high=" FDT_HIGH "\0" \ + "initrd_high=" INITRD_HIGH "\0" \ + "kernel_addr_r=0x00080000\0" \ +- "scriptaddr=0x02400000\0" \ +- "pxefile_addr_r=0x02500000\0" \ +- "fdt_addr_r=0x02600000\0" \ +- "ramdisk_addr_r=0x02700000\0" ++ "scriptaddr=0x04500000\0" \ ++ "pxefile_addr_r=0x04600000\0" \ ++ "fdt_addr_r=0x04700000\0" \ ++ "ramdisk_addr_r=0x04800000\0" + + #if CONFIG_IS_ENABLED(CMD_MMC) + #define BOOT_TARGET_MMC(func) \ +-- +2.29.2 + diff --git a/nixpkgs/pkgs/misc/uboot/default.nix b/nixpkgs/pkgs/misc/uboot/default.nix new file mode 100644 index 000000000000..6f32434afaac --- /dev/null +++ b/nixpkgs/pkgs/misc/uboot/default.nix @@ -0,0 +1,583 @@ +{ stdenv +, lib +, bc +, bison +, dtc +, fetchFromGitHub +, fetchpatch +, fetchurl +, flex +, gnutls +, installShellFiles +, libuuid +, meson-tools +, ncurses +, openssl +, swig +, which +, armTrustedFirmwareAllwinner +, armTrustedFirmwareAllwinnerH6 +, armTrustedFirmwareAllwinnerH616 +, armTrustedFirmwareRK3328 +, armTrustedFirmwareRK3399 +, armTrustedFirmwareS905 +, buildPackages +}: + +let + defaultVersion = "2023.07.02"; + defaultSrc = fetchurl { + url = "https://ftp.denx.de/pub/u-boot/u-boot-${defaultVersion}.tar.bz2"; + hash = "sha256-a2pIWBwUq7D5W9h8GvTXQJIkBte4AQAqn5Ryf93gIdU="; + }; + + # Dependencies for the tools need to be included as either native or cross, + # depending on which we're building + toolsDeps = [ + ncurses # tools/kwboot + libuuid # tools/mkeficapsule + gnutls # tools/mkeficapsule + openssl # tools/mkimage + ]; + + buildUBoot = lib.makeOverridable ({ + version ? null + , src ? null + , filesToInstall + , installDir ? "$out" + , defconfig + , extraConfig ? "" + , extraPatches ? [] + , extraMakeFlags ? [] + , extraMeta ? {} + , crossTools ? false + , ... } @ args: stdenv.mkDerivation ({ + pname = "uboot-${defconfig}"; + + version = if src == null then defaultVersion else version; + + src = if src == null then defaultSrc else src; + + patches = [ + ./0001-configs-rpi-allow-for-bigger-kernels.patch + ] ++ extraPatches; + + postPatch = '' + patchShebangs tools + patchShebangs scripts + ''; + + nativeBuildInputs = [ + ncurses # tools/kwboot + bc + bison + dtc + flex + installShellFiles + (buildPackages.python3.withPackages (p: [ + p.libfdt + p.setuptools # for pkg_resources + p.pyelftools + ])) + swig + which # for scripts/dtc-version.sh + ] ++ lib.optionals (!crossTools) toolsDeps; + depsBuildBuild = [ buildPackages.stdenv.cc ]; + buildInputs = lib.optionals crossTools toolsDeps; + + hardeningDisable = [ "all" ]; + + enableParallelBuilding = true; + + makeFlags = [ + "DTC=dtc" + "CROSS_COMPILE=${stdenv.cc.targetPrefix}" + ] ++ extraMakeFlags; + + passAsFile = [ "extraConfig" ]; + + configurePhase = '' + runHook preConfigure + + make ${defconfig} + + cat $extraConfigPath >> .config + + runHook postConfigure + ''; + + installPhase = '' + runHook preInstall + + mkdir -p ${installDir} + cp ${lib.concatStringsSep " " filesToInstall} ${installDir} + + mkdir -p "$out/nix-support" + ${lib.concatMapStrings (file: '' + echo "file binary-dist ${installDir}/${builtins.baseNameOf file}" >> "$out/nix-support/hydra-build-products" + '') filesToInstall} + + runHook postInstall + ''; + + dontStrip = true; + + meta = with lib; { + homepage = "https://www.denx.de/wiki/U-Boot/"; + description = "Boot loader for embedded systems"; + license = licenses.gpl2; + maintainers = with maintainers; [ bartsch dezgeg samueldr lopsided98 ]; + } // extraMeta; + } // removeAttrs args [ "extraMeta" ])); +in { + inherit buildUBoot; + + ubootTools = buildUBoot { + defconfig = "tools-only_defconfig"; + installDir = "$out/bin"; + hardeningDisable = []; + dontStrip = false; + extraMeta.platforms = lib.platforms.linux; + + crossTools = true; + extraMakeFlags = [ "HOST_TOOLS_ALL=y" "NO_SDL=1" "cross_tools" ]; + + outputs = [ "out" "man" ]; + + postInstall = '' + installManPage doc/*.1 + ''; + filesToInstall = [ + "tools/dumpimage" + "tools/fdtgrep" + "tools/kwboot" + "tools/mkenvimage" + "tools/mkimage" + ]; + }; + + ubootA20OlinuxinoLime = buildUBoot { + defconfig = "A20-OLinuXino-Lime_defconfig"; + extraMeta.platforms = ["armv7l-linux"]; + filesToInstall = ["u-boot-sunxi-with-spl.bin"]; + }; + + ubootA20OlinuxinoLime2EMMC = buildUBoot { + defconfig = "A20-OLinuXino-Lime2-eMMC_defconfig"; + extraMeta.platforms = ["armv7l-linux"]; + filesToInstall = ["u-boot-sunxi-with-spl.bin"]; + }; + + ubootAmx335xEVM = buildUBoot { + defconfig = "am335x_evm_defconfig"; + extraMeta.platforms = ["armv7l-linux"]; + filesToInstall = ["MLO" "u-boot.img"]; + }; + + ubootBananaPi = buildUBoot { + defconfig = "Bananapi_defconfig"; + extraMeta.platforms = ["armv7l-linux"]; + filesToInstall = ["u-boot-sunxi-with-spl.bin"]; + }; + + ubootBananaPim3 = buildUBoot { + defconfig = "Sinovoip_BPI_M3_defconfig"; + extraMeta.platforms = ["armv7l-linux"]; + filesToInstall = ["u-boot-sunxi-with-spl.bin"]; + }; + + ubootBananaPim64 = buildUBoot { + defconfig = "bananapi_m64_defconfig"; + extraMeta.platforms = ["aarch64-linux"]; + BL31 = "${armTrustedFirmwareAllwinner}/bl31.bin"; + SCP = "/dev/null"; + filesToInstall = ["u-boot-sunxi-with-spl.bin"]; + }; + + # http://git.denx.de/?p=u-boot.git;a=blob;f=board/solidrun/clearfog/README;hb=refs/heads/master + ubootClearfog = buildUBoot { + defconfig = "clearfog_defconfig"; + extraMeta.platforms = ["armv7l-linux"]; + filesToInstall = ["u-boot-with-spl.kwb"]; + }; + + ubootCubieboard2 = buildUBoot { + defconfig = "Cubieboard2_defconfig"; + extraMeta.platforms = ["armv7l-linux"]; + filesToInstall = ["u-boot-sunxi-with-spl.bin"]; + }; + + ubootGuruplug = buildUBoot { + defconfig = "guruplug_defconfig"; + extraMeta.platforms = ["armv5tel-linux"]; + filesToInstall = ["u-boot.bin"]; + }; + + ubootJetsonTK1 = buildUBoot { + defconfig = "jetson-tk1_defconfig"; + extraMeta.platforms = ["armv7l-linux"]; + filesToInstall = ["u-boot" "u-boot.dtb" "u-boot-dtb-tegra.bin" "u-boot-nodtb-tegra.bin"]; + # tegra-uboot-flasher expects this exact directory layout, sigh... + postInstall = '' + mkdir -p $out/spl + cp spl/u-boot-spl $out/spl/ + ''; + }; + + # Flashing instructions: + # dd if=u-boot.gxl.sd.bin of=<sdcard> conv=fsync,notrunc bs=512 skip=1 seek=1 + # dd if=u-boot.gxl.sd.bin of=<sdcard> conv=fsync,notrunc bs=1 count=444 + ubootLibreTechCC = let + firmwareImagePkg = fetchFromGitHub { + owner = "LibreELEC"; + repo = "amlogic-boot-fip"; + rev = "4369a138ca24c5ab932b8cbd1af4504570b709df"; + sha256 = "sha256-mGRUwdh3nW4gBwWIYHJGjzkezHxABwcwk/1gVRis7Tc="; + meta.license = lib.licenses.unfreeRedistributableFirmware; + }; + in + assert stdenv.buildPlatform.system == "x86_64-linux"; # aml_encrypt_gxl is a x86_64 binary + buildUBoot { + defconfig = "libretech-cc_defconfig"; + extraMeta.platforms = ["aarch64-linux"]; + filesToInstall = ["u-boot.bin"]; + postBuild = '' + # Copy binary files & tools from LibreELEC/amlogic-boot-fip, and u-boot build to working dir + mkdir $out tmp + cp ${firmwareImagePkg}/lepotato/{acs.bin,bl2.bin,bl21.bin,bl30.bin,bl301.bin,bl31.img} \ + ${firmwareImagePkg}/lepotato/{acs_tool.py,aml_encrypt_gxl,blx_fix.sh} \ + u-boot.bin tmp/ + cd tmp + python3 acs_tool.py bl2.bin bl2_acs.bin acs.bin 0 + + bash -e blx_fix.sh bl2_acs.bin zero bl2_zero.bin bl21.bin bl21_zero.bin bl2_new.bin bl2 + [ -f zero ] && rm zero + + bash -e blx_fix.sh bl30.bin zero bl30_zero.bin bl301.bin bl301_zero.bin bl30_new.bin bl30 + [ -f zero ] && rm zero + + ./aml_encrypt_gxl --bl2sig --input bl2_new.bin --output bl2.n.bin.sig + ./aml_encrypt_gxl --bl3enc --input bl30_new.bin --output bl30_new.bin.enc + ./aml_encrypt_gxl --bl3enc --input bl31.img --output bl31.img.enc + ./aml_encrypt_gxl --bl3enc --input u-boot.bin --output bl33.bin.enc + ./aml_encrypt_gxl --bootmk --output $out/u-boot.gxl \ + --bl2 bl2.n.bin.sig --bl30 bl30_new.bin.enc --bl31 bl31.img.enc --bl33 bl33.bin.enc + ''; + }; + + ubootNanoPCT4 = buildUBoot rec { + rkbin = fetchFromGitHub { + owner = "armbian"; + repo = "rkbin"; + rev = "3bd0321cae5ef881a6005fb470009ad5a5d1462d"; + sha256 = "09r4dzxsbs3pff4sh70qnyp30s3rc7pkc46v1m3152s7jqjasp31"; + }; + + defconfig = "nanopc-t4-rk3399_defconfig"; + + extraMeta = { + platforms = ["aarch64-linux"]; + license = lib.licenses.unfreeRedistributableFirmware; + }; + BL31="${armTrustedFirmwareRK3399}/bl31.elf"; + filesToInstall = ["u-boot.itb" "idbloader.img"]; + postBuild = '' + ./tools/mkimage -n rk3399 -T rksd -d ${rkbin}/rk33/rk3399_ddr_800MHz_v1.24.bin idbloader.img + cat ${rkbin}/rk33/rk3399_miniloader_v1.19.bin >> idbloader.img + ''; + }; + + ubootNovena = buildUBoot { + defconfig = "novena_defconfig"; + extraMeta.platforms = ["armv7l-linux"]; + filesToInstall = ["u-boot-dtb.img" "SPL"]; + }; + + # Flashing instructions: + # dd if=bl1.bin.hardkernel of=<device> conv=fsync bs=1 count=442 + # dd if=bl1.bin.hardkernel of=<device> conv=fsync bs=512 skip=1 seek=1 + # dd if=u-boot.gxbb of=<device> conv=fsync bs=512 seek=97 + ubootOdroidC2 = let + firmwareBlobs = fetchFromGitHub { + owner = "armbian"; + repo = "odroidc2-blobs"; + rev = "47c5aac4bcac6f067cebe76e41fb9924d45b429c"; + sha256 = "1ns0a130yxnxysia8c3q2fgyjp9k0nkr689dxk88qh2vnibgchnp"; + meta.license = lib.licenses.unfreeRedistributableFirmware; + }; + in buildUBoot { + defconfig = "odroid-c2_defconfig"; + extraMeta.platforms = ["aarch64-linux"]; + filesToInstall = ["u-boot.bin" "u-boot.gxbb" "${firmwareBlobs}/bl1.bin.hardkernel"]; + postBuild = '' + # BL301 image needs at least 64 bytes of padding after it to place + # signing headers (with amlbootsig) + truncate -s 64 bl301.padding.bin + cat '${firmwareBlobs}/gxb/bl301.bin' bl301.padding.bin > bl301.padded.bin + # The downstream fip_create tool adds a custom TOC entry with UUID + # AABBCCDD-ABCD-EFEF-ABCD-12345678ABCD for the BL301 image. It turns out + # that the firmware blob does not actually care about UUIDs, only the + # order the images appear in the file. Because fiptool does not know + # about the BL301 UUID, we would have to use the --blob option, which adds + # the image to the end of the file, causing the boot to fail. Instead, we + # take advantage of the fact that UUIDs are ignored and just put the + # images in the right order with the wrong UUIDs. In the command below, + # --tb-fw is really --scp-fw and --scp-fw is the BL301 image. + # + # See https://github.com/afaerber/meson-tools/issues/3 for more + # information. + '${buildPackages.armTrustedFirmwareTools}/bin/fiptool' create \ + --align 0x4000 \ + --tb-fw '${firmwareBlobs}/gxb/bl30.bin' \ + --scp-fw bl301.padded.bin \ + --soc-fw '${armTrustedFirmwareS905}/bl31.bin' \ + --nt-fw u-boot.bin \ + fip.bin + cat '${firmwareBlobs}/gxb/bl2.package' fip.bin > boot_new.bin + '${buildPackages.meson-tools}/bin/amlbootsig' boot_new.bin u-boot.img + dd if=u-boot.img of=u-boot.gxbb bs=512 skip=96 + ''; + }; + + ubootOdroidXU3 = buildUBoot { + defconfig = "odroid-xu3_defconfig"; + extraMeta.platforms = ["armv7l-linux"]; + filesToInstall = ["u-boot-dtb.bin"]; + }; + + ubootOlimexA64Olinuxino = buildUBoot { + defconfig = "a64-olinuxino-emmc_defconfig"; + extraMeta.platforms = ["aarch64-linux"]; + BL31 = "${armTrustedFirmwareAllwinner}/bl31.bin"; + SCP = "/dev/null"; + filesToInstall = ["u-boot-sunxi-with-spl.bin"]; + }; + + ubootOrangePiPc = buildUBoot { + defconfig = "orangepi_pc_defconfig"; + extraMeta.platforms = ["armv7l-linux"]; + filesToInstall = ["u-boot-sunxi-with-spl.bin"]; + }; + + ubootOrangePiZeroPlus2H5 = buildUBoot { + defconfig = "orangepi_zero_plus2_defconfig"; + extraMeta.platforms = ["aarch64-linux"]; + BL31 = "${armTrustedFirmwareAllwinner}/bl31.bin"; + SCP = "/dev/null"; + filesToInstall = ["u-boot-sunxi-with-spl.bin"]; + }; + + ubootOrangePiZero = buildUBoot { + defconfig = "orangepi_zero_defconfig"; + extraMeta.platforms = ["armv7l-linux"]; + filesToInstall = ["u-boot-sunxi-with-spl.bin"]; + }; + + ubootOrangePiZero2 = buildUBoot { + defconfig = "orangepi_zero2_defconfig"; + extraMeta.platforms = ["aarch64-linux"]; + BL31 = "${armTrustedFirmwareAllwinnerH616}/bl31.bin"; + filesToInstall = ["u-boot-sunxi-with-spl.bin"]; + }; + + ubootOrangePi3 = buildUBoot { + defconfig = "orangepi_3_defconfig"; + extraMeta.platforms = ["aarch64-linux"]; + BL31 = "${armTrustedFirmwareAllwinnerH6}/bl31.bin"; + SCP = "/dev/null"; + filesToInstall = ["u-boot-sunxi-with-spl.bin"]; + }; + + ubootPcduino3Nano = buildUBoot { + defconfig = "Linksprite_pcDuino3_Nano_defconfig"; + extraMeta.platforms = ["armv7l-linux"]; + filesToInstall = ["u-boot-sunxi-with-spl.bin"]; + }; + + ubootPine64 = buildUBoot { + defconfig = "pine64_plus_defconfig"; + extraMeta.platforms = ["aarch64-linux"]; + BL31 = "${armTrustedFirmwareAllwinner}/bl31.bin"; + SCP = "/dev/null"; + filesToInstall = ["u-boot-sunxi-with-spl.bin"]; + }; + + ubootPine64LTS = buildUBoot { + defconfig = "pine64-lts_defconfig"; + extraMeta.platforms = ["aarch64-linux"]; + BL31 = "${armTrustedFirmwareAllwinner}/bl31.bin"; + SCP = "/dev/null"; + filesToInstall = ["u-boot-sunxi-with-spl.bin"]; + }; + + ubootPinebook = buildUBoot { + defconfig = "pinebook_defconfig"; + extraMeta.platforms = ["aarch64-linux"]; + BL31 = "${armTrustedFirmwareAllwinner}/bl31.bin"; + SCP = "/dev/null"; + filesToInstall = ["u-boot-sunxi-with-spl.bin"]; + }; + + ubootPinebookPro = buildUBoot { + defconfig = "pinebook-pro-rk3399_defconfig"; + extraMeta.platforms = ["aarch64-linux"]; + BL31 = "${armTrustedFirmwareRK3399}/bl31.elf"; + filesToInstall = [ "u-boot.itb" "idbloader.img"]; + }; + + ubootQemuAarch64 = buildUBoot { + defconfig = "qemu_arm64_defconfig"; + extraMeta.platforms = ["aarch64-linux"]; + filesToInstall = ["u-boot.bin"]; + }; + + ubootQemuArm = buildUBoot { + defconfig = "qemu_arm_defconfig"; + extraMeta.platforms = ["armv7l-linux"]; + filesToInstall = ["u-boot.bin"]; + }; + + ubootQemuRiscv64Smode = buildUBoot { + defconfig = "qemu-riscv64_smode_defconfig"; + extraMeta.platforms = ["riscv64-linux"]; + filesToInstall = ["u-boot.bin"]; + }; + + ubootQemuX86 = buildUBoot { + defconfig = "qemu-x86_defconfig"; + extraConfig = '' + CONFIG_USB_UHCI_HCD=y + CONFIG_USB_EHCI_HCD=y + CONFIG_USB_EHCI_GENERIC=y + CONFIG_USB_XHCI_HCD=y + ''; + extraMeta.platforms = [ "i686-linux" "x86_64-linux" ]; + filesToInstall = [ "u-boot.rom" ]; + }; + + ubootRaspberryPi = buildUBoot { + defconfig = "rpi_defconfig"; + extraMeta.platforms = ["armv6l-linux"]; + filesToInstall = ["u-boot.bin"]; + }; + + ubootRaspberryPi2 = buildUBoot { + defconfig = "rpi_2_defconfig"; + extraMeta.platforms = ["armv7l-linux"]; + filesToInstall = ["u-boot.bin"]; + }; + + ubootRaspberryPi3_32bit = buildUBoot { + defconfig = "rpi_3_32b_defconfig"; + extraMeta.platforms = ["armv7l-linux"]; + filesToInstall = ["u-boot.bin"]; + }; + + ubootRaspberryPi3_64bit = buildUBoot { + defconfig = "rpi_3_defconfig"; + extraMeta.platforms = ["aarch64-linux"]; + filesToInstall = ["u-boot.bin"]; + }; + + ubootRaspberryPi4_32bit = buildUBoot { + defconfig = "rpi_4_32b_defconfig"; + extraMeta.platforms = ["armv7l-linux"]; + filesToInstall = ["u-boot.bin"]; + }; + + ubootRaspberryPi4_64bit = buildUBoot { + defconfig = "rpi_4_defconfig"; + extraMeta.platforms = ["aarch64-linux"]; + filesToInstall = ["u-boot.bin"]; + }; + + ubootRaspberryPiZero = buildUBoot { + defconfig = "rpi_0_w_defconfig"; + extraMeta.platforms = ["armv6l-linux"]; + filesToInstall = ["u-boot.bin"]; + }; + + ubootRock64 = buildUBoot { + defconfig = "rock64-rk3328_defconfig"; + extraMeta.platforms = [ "aarch64-linux" ]; + BL31="${armTrustedFirmwareRK3328}/bl31.elf"; + filesToInstall = [ "u-boot.itb" "idbloader.img" "u-boot-rockchip.bin" ]; + }; + + # A special build with much lower memory frequency (666 vs 1600 MT/s) which + # makes ROCK64 V2 boards stable. This is necessary because the DDR3 routing + # on that revision is marginal and not uncoditionally stable at the specified + # frequency. If your ROCK64 is unstable you can try this u-boot variant to + # see if it works better for you. The only disadvantage is lowered memory + # bandwidth. + ubootRock64v2 = buildUBoot { + prePatch = '' + substituteInPlace arch/arm/dts/rk3328-rock64-u-boot.dtsi \ + --replace rk3328-sdram-lpddr3-1600.dtsi rk3328-sdram-lpddr3-666.dtsi + ''; + defconfig = "rock64-rk3328_defconfig"; + extraMeta.platforms = [ "aarch64-linux" ]; + BL31="${armTrustedFirmwareRK3328}/bl31.elf"; + filesToInstall = [ "u-boot.itb" "idbloader.img" "u-boot-rockchip.bin" ]; + }; + + ubootRockPro64 = buildUBoot { + extraPatches = [ + # https://patchwork.ozlabs.org/project/uboot/list/?series=237654&archive=both&state=* + (fetchpatch { + url = "https://patchwork.ozlabs.org/series/237654/mbox/"; + sha256 = "0aiw9zk8w4msd3v8nndhkspjify0yq6a5f0zdy6mhzs0ilq896c3"; + }) + ]; + defconfig = "rockpro64-rk3399_defconfig"; + extraMeta.platforms = ["aarch64-linux"]; + BL31="${armTrustedFirmwareRK3399}/bl31.elf"; + filesToInstall = [ "u-boot.itb" "idbloader.img"]; + }; + + ubootROCPCRK3399 = buildUBoot { + defconfig = "roc-pc-rk3399_defconfig"; + extraMeta.platforms = ["aarch64-linux"]; + filesToInstall = [ "spl/u-boot-spl.bin" "u-boot.itb" "idbloader.img"]; + BL31 = "${armTrustedFirmwareRK3399}/bl31.elf"; + }; + + ubootSheevaplug = buildUBoot { + defconfig = "sheevaplug_defconfig"; + extraMeta.platforms = ["armv5tel-linux"]; + filesToInstall = ["u-boot.kwb"]; + }; + + ubootSopine = buildUBoot { + defconfig = "sopine_baseboard_defconfig"; + extraMeta.platforms = ["aarch64-linux"]; + BL31 = "${armTrustedFirmwareAllwinner}/bl31.bin"; + SCP = "/dev/null"; + filesToInstall = ["u-boot-sunxi-with-spl.bin"]; + }; + + ubootUtilite = buildUBoot { + defconfig = "cm_fx6_defconfig"; + extraMeta.platforms = ["armv7l-linux"]; + filesToInstall = ["u-boot-with-nand-spl.imx"]; + buildFlags = [ "u-boot-with-nand-spl.imx" ]; + extraConfig = '' + CONFIG_CMD_SETEXPR=y + ''; + # sata init; load sata 0 $loadaddr u-boot-with-nand-spl.imx + # sf probe; sf update $loadaddr 0 80000 + }; + + ubootWandboard = buildUBoot { + defconfig = "wandboard_defconfig"; + extraMeta.platforms = ["armv7l-linux"]; + filesToInstall = ["u-boot.img" "SPL"]; + }; + + ubootRockPi4 = buildUBoot { + defconfig = "rock-pi-4-rk3399_defconfig"; + extraMeta.platforms = ["aarch64-linux"]; + BL31 = "${armTrustedFirmwareRK3399}/bl31.elf"; + filesToInstall = [ "u-boot.itb" "idbloader.img"]; + }; +} diff --git a/nixpkgs/pkgs/misc/uq/default.nix b/nixpkgs/pkgs/misc/uq/default.nix new file mode 100644 index 000000000000..a4c9a7d92fb4 --- /dev/null +++ b/nixpkgs/pkgs/misc/uq/default.nix @@ -0,0 +1,26 @@ +{ lib +, fetchFromGitHub +, rustPlatform +}: + +rustPlatform.buildRustPackage rec { + pname = "uq"; + version = "unstable-2018-05-27"; + + src = fetchFromGitHub { + owner = "lostutils"; + repo = "uq"; + rev = "118bc2f3b1cf292afdffbc1cb4415d150b323165"; + sha256 = "1qqqmdk0v1d3ckasmmw5lbrkvhkv0nws4bzi9cfi1ndhrbvbkbxb"; + }; + + cargoSha256 = "1p6008vxm2pi9v31qhsq7zysanal6rcvcl8553373bkqlfd7w5c4"; + + meta = with lib; { + description = "A simple, user-friendly alternative to sort | uniq"; + homepage = "https://github.com/lostutils/uq"; + license = licenses.mit; + maintainers = with maintainers; [ doronbehar matthiasbeyer ]; + mainProgram = "uq"; + }; +} diff --git a/nixpkgs/pkgs/misc/urbit/default.nix b/nixpkgs/pkgs/misc/urbit/default.nix new file mode 100644 index 000000000000..fe31ca17f6aa --- /dev/null +++ b/nixpkgs/pkgs/misc/urbit/default.nix @@ -0,0 +1,40 @@ +{ stdenv +, lib +, fetchzip +}: + +let + os = if stdenv.isDarwin then "macos" else "linux"; + arch = if stdenv.isAarch64 then "aarch64" else "x86_64"; + platform = "${os}-${arch}"; +in +stdenv.mkDerivation rec { + pname = "urbit"; + version = "2.12"; + + src = fetchzip { + url = "https://github.com/urbit/vere/releases/download/vere-v${version}/${platform}.tgz"; + sha256 = { + x86_64-linux = "sha256-N8RYlafw0HcmtGAQMKQb1cG7AivOpWS/5rU8CESJWAw="; + aarch64-linux = "sha256-RsBtwxSdqHVXMk7or1nPAFWd6Ypa0SqjpTihv8riyk4="; + x86_64-darwin = "sha256-/QPI66/gl3mlQHc+8zrEyP4/Hv5vwXlEx1cW2mP33IY="; + aarch64-darwin = "sha256-+2DYohaBxVcR1ZOjuk6GWcNpzb6aJMXq6BxwWw1OeIY="; + }.${stdenv.hostPlatform.system} or (throw "unsupported system ${stdenv.hostPlatform.system}"); + }; + + postInstall = '' + install -m755 -D vere-v${version}-${platform} $out/bin/urbit + ''; + + passthru.updateScript = ./update-bin.sh; + + meta = with lib; { + homepage = "https://urbit.org"; + description = "An operating function"; + platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin"]; + maintainers = [ maintainers.matthew-levan ]; + license = licenses.mit; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + mainProgram = "urbit"; + }; +} diff --git a/nixpkgs/pkgs/misc/urbit/update-bin.sh b/nixpkgs/pkgs/misc/urbit/update-bin.sh new file mode 100755 index 000000000000..b7ee514e10a7 --- /dev/null +++ b/nixpkgs/pkgs/misc/urbit/update-bin.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p curl common-updater-scripts nix-prefetch + +set -euo pipefail + +ROOT="$(dirname "$(readlink -f "$0")")" +NIX_DRV="$ROOT/default.nix" +if [ ! -f "$NIX_DRV" ]; then + echo "ERROR: cannot find urbit in $ROOT" + exit 1 +fi + +fetch_arch() { + VER="$1"; ARCH="$2" + URL="https://github.com/urbit/vere/releases/download/vere-v${VER}/${ARCH}.tgz"; + nix-prefetch "{ stdenv, fetchzip }: +stdenv.mkDerivation rec { + pname = \"vere\"; version = \"${VER}\"; + src = fetchzip { url = \"$URL\"; }; +} +" +} + +replace_sha() { + sed -i "s#$1 = \"sha256-.\{44\}\"#$1 = \"$2\"#" "$NIX_DRV" +} + +VERE_VER=$(curl https://bootstrap.urbit.org/vere/live/last) + +VERE_LINUX_AARCH64_SHA256=$(fetch_arch "$VERE_VER" "linux-aarch64") +VERE_LINUX_X64_SHA256=$(fetch_arch "$VERE_VER" "linux-x86_64") +VERE_DARWIN_AARCH64_SHA256=$(fetch_arch "$VERE_VER" "macos-aarch64") +VERE_DARWIN_X64_SHA256=$(fetch_arch "$VERE_VER" "macos-x86_64") + +sed -i "s/version = \".*\"/version = \"$VERE_VER\"/" "$NIX_DRV" + +replace_sha "aarch64-linux" "$VERE_LINUX_AARCH64_SHA256" +replace_sha "x86_64-linux" "$VERE_LINUX_X64_SHA256" +replace_sha "aarch64-darwin" "$VERE_DARWIN_AARCH64_SHA256" +replace_sha "x86_64-darwin" "$VERE_DARWIN_X64_SHA256" diff --git a/nixpkgs/pkgs/misc/vencord/default.nix b/nixpkgs/pkgs/misc/vencord/default.nix new file mode 100644 index 000000000000..7431334b91ce --- /dev/null +++ b/nixpkgs/pkgs/misc/vencord/default.nix @@ -0,0 +1,65 @@ +{ buildNpmPackage +, fetchFromGitHub +, lib +, esbuild +, buildWebExtension ? false +}: +let + version = "1.6.5"; + gitHash = "d629281"; +in +buildNpmPackage rec { + pname = "vencord"; + inherit version; + + src = fetchFromGitHub { + owner = "Vendicated"; + repo = "Vencord"; + rev = "v${version}"; + hash = "sha256-/aZIjHWqk55Lo2fnu8Dx+iERRO8xOo/xjcmMmTPFj50="; + }; + + ESBUILD_BINARY_PATH = lib.getExe (esbuild.overrideAttrs (final: _: { + version = "0.15.18"; + src = fetchFromGitHub { + owner = "evanw"; + repo = "esbuild"; + rev = "v${final.version}"; + hash = "sha256-b9R1ML+pgRg9j2yrkQmBulPuLHYLUQvW+WTyR/Cq6zE="; + }; + vendorHash = "sha256-+BfxCyg0KkDQpHt/wycy/8CTG6YBA/VJvJFhhzUnSiQ="; + })); + + # Supresses an error about esbuild's version. + npmRebuildFlags = [ "|| true" ]; + + makeCacheWritable = true; + npmDepsHash = "sha256-n9RC1B0VKDQtY3jOH+ZZKD1E6yfszkYSwEnRzzruBjg="; + npmFlags = [ "--legacy-peer-deps" ]; + npmBuildScript = if buildWebExtension then "buildWeb" else "build"; + npmBuildFlags = [ "--" "--standalone" "--disable-updater" ]; + + prePatch = '' + cp ${./package-lock.json} ./package-lock.json + chmod +w ./package-lock.json + ''; + + VENCORD_HASH = gitHash; + VENCORD_REMOTE = "${src.owner}/${src.repo}"; + + installPhase = + if buildWebExtension then '' + cp -r dist/chromium-unpacked/ $out + '' else '' + cp -r dist/ $out + ''; + + passthru.updateScript = ./update.sh; + + meta = with lib; { + description = "Vencord web extension"; + homepage = "https://github.com/Vendicated/Vencord"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ FlafyDev fwam NotAShelf Scrumplex ]; + }; +} diff --git a/nixpkgs/pkgs/misc/vencord/package-lock.json b/nixpkgs/pkgs/misc/vencord/package-lock.json new file mode 100644 index 000000000000..abc52ec812b7 --- /dev/null +++ b/nixpkgs/pkgs/misc/vencord/package-lock.json @@ -0,0 +1,5675 @@ +{ + "name": "vencord", + "version": "1.6.5", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "vencord", + "version": "1.6.5", + "license": "GPL-3.0-or-later", + "dependencies": { + "@sapphi-red/web-noise-suppressor": "0.3.3", + "@vap/core": "0.0.12", + "@vap/shiki": "0.10.5", + "eslint-plugin-simple-header": "^1.0.2", + "fflate": "^0.7.4", + "gifenc": "github:mattdesl/gifenc#64842fca317b112a8590f8fef2bf3825da8f6fe3", + "monaco-editor": "^0.43.0", + "nanoid": "^4.0.2", + "virtual-merge": "^1.0.1" + }, + "devDependencies": { + "@types/chrome": "^0.0.246", + "@types/diff": "^5.0.3", + "@types/lodash": "^4.14.194", + "@types/node": "^18.16.3", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.1", + "@types/yazl": "^2.4.2", + "@typescript-eslint/eslint-plugin": "^5.59.1", + "@typescript-eslint/parser": "^5.59.1", + "diff": "^5.1.0", + "discord-types": "^1.3.26", + "esbuild": "^0.15.18", + "eslint": "^8.46.0", + "eslint-import-resolver-alias": "^1.1.2", + "eslint-plugin-path-alias": "^1.0.0", + "eslint-plugin-simple-import-sort": "^10.0.0", + "eslint-plugin-unused-imports": "^2.0.0", + "highlight.js": "10.6.0", + "moment": "^2.29.4", + "puppeteer-core": "^19.11.1", + "standalone-electron-types": "^1.0.0", + "stylelint": "^15.6.0", + "stylelint-config-standard": "^33.0.0", + "tsx": "^3.12.7", + "type-fest": "^3.9.0", + "typescript": "^5.0.4", + "zip-local": "^0.3.5", + "zustand": "^3.7.2" + }, + "engines": { + "node": ">=18", + "pnpm": ">=8" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.2.tgz", + "integrity": "sha512-sLYGdAdEY2x7TSw9FtmdaTrh2wFtRJO5VMbBrA8tEqEod7GEggFmxTSK9XqExib3yMuYNcvcTdCZIP6ukdjAIA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^2.2.1" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.1.tgz", + "integrity": "sha512-Zmsf2f/CaEPWEVgw29odOj+WEVoiJy9s9NOv5GgNY9mZ1CZ7394By6wONrONrTsnNDv6F9hR02nvFihrGVGHBg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + } + }, + "node_modules/@csstools/media-query-list-parser": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.5.tgz", + "integrity": "sha512-IxVBdYzR8pYe89JiyXQuYk4aVVoCPhMJkz6ElRwlVysjwURTsTk/bmY/z4FfeRE+CRBMlykPwXEVUg8lThv7AQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^2.3.2", + "@csstools/css-tokenizer": "^2.2.1" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.0.tgz", + "integrity": "sha512-hBI9tfBtuPIi885ZsZ32IMEU/5nlZH/KOVYJCOh7gyMxaVLGmLedYqFN6Ui1LXkI8JlC8IsuC0rF0btcRZKd5g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.0.13" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", + "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", + "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", + "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@puppeteer/browsers": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-0.5.0.tgz", + "integrity": "sha512-Uw6oB7VvmPRLE4iKsjuOh8zgDabhNX67dzo8U/BB0f9527qx+4eeUs+korU98OhG5C4ubg7ufBgVi63XYwS6TQ==", + "dev": true, + "dependencies": { + "debug": "4.3.4", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "yargs": "17.7.1" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=14.1.0" + }, + "peerDependencies": { + "typescript": ">= 4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@sapphi-red/web-noise-suppressor": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@sapphi-red/web-noise-suppressor/-/web-noise-suppressor-0.3.3.tgz", + "integrity": "sha512-gAC33DCXYwNTI/k1PxOVHmbbzakUSMbb/DHpoV6rn4pKZtPI1dduULSmAAm/y1ipgIlArnk2JcnQzw4n2tCZHw==" + }, + "node_modules/@types/chrome": { + "version": "0.0.246", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.246.tgz", + "integrity": "sha512-MxGxEomGxsJiL9xe/7ZwVgwdn8XVKWbPvxpVQl3nWOjrS0Ce63JsfzxUc4aU3GvRcUPYsfufHmJ17BFyKxeA4g==", + "dev": true, + "dependencies": { + "@types/filesystem": "*", + "@types/har-format": "*" + } + }, + "node_modules/@types/diff": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/@types/diff/-/diff-5.0.9.tgz", + "integrity": "sha512-RWVEhh/zGXpAVF/ZChwNnv7r4rvqzJ7lYNSmZSVTxjV0PBLf6Qu7RNg+SUtkpzxmiNkjCx0Xn2tPp7FIkshJwQ==", + "dev": true + }, + "node_modules/@types/filesystem": { + "version": "0.0.35", + "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.35.tgz", + "integrity": "sha512-1eKvCaIBdrD2mmMgy5dwh564rVvfEhZTWVQQGRNn0Nt4ZEnJ0C8oSUCzvMKRA4lGde5oEVo+q2MrTTbV/GHDCQ==", + "dev": true, + "dependencies": { + "@types/filewriter": "*" + } + }, + "node_modules/@types/filewriter": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.32.tgz", + "integrity": "sha512-Kpi2GXQyYJdjL8mFclL1eDgihn1SIzorMZjD94kdPZh9E4VxGOeyjPxi5LpsM4Zku7P0reqegZTt2GxhmA9VBg==", + "dev": true + }, + "node_modules/@types/har-format": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.15.tgz", + "integrity": "sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/lodash": { + "version": "4.14.202", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", + "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==", + "dev": true + }, + "node_modules/@types/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.19.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.3.tgz", + "integrity": "sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.2.45", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.45.tgz", + "integrity": "sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.17", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.17.tgz", + "integrity": "sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "dev": true + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yazl": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/@types/yazl/-/yazl-2.4.5.tgz", + "integrity": "sha512-qpmPfx32HS7vlGJf7EsoM9qJnLZhXJBf1KH0hzfdc+D794rljQWh4H0I/UrZy+6Nhqn0l2jdBZXBGZtR1vnHqw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@vap/core": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/@vap/core/-/core-0.0.12.tgz", + "integrity": "sha512-3csHpkE1zUSRTZwl7xIf2uXg1cD4IhhtUm0F6K/dWydc95R5Nj+krB4OTNATuqkewIv/ViCbwjPfkafAgvZQSg==", + "dependencies": { + "eventemitter3": "^4.0.7" + } + }, + "node_modules/@vap/shiki": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@vap/shiki/-/shiki-0.10.5.tgz", + "integrity": "sha512-5BHVGvQT8qonbLSASon5aQFQ18OZU4FxSl9tLSj6oJ0sap3KdMbYcfGq25M9zFZR1g1dJN7fgjmZXBIS5omIdw==", + "dependencies": { + "jsonc-parser": "^3.0.0", + "vscode-oniguruma": "^1.6.1", + "vscode-textmate": "5.2.0" + } + }, + "node_modules/acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", + "dev": true + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "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==", + "dev": true + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-keys": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", + "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", + "dev": true, + "dependencies": { + "camelcase": "^6.3.0", + "map-obj": "^4.1.0", + "quick-lru": "^5.1.1", + "type-fest": "^1.2.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-keys/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/chromium-bidi": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.7.tgz", + "integrity": "sha512-6+mJuFXwTMU6I3vYLs6IL8A1DyQTPjCfIL971X0aMPVGRbGnNfl6i6Cl0NMbxi2bRYLGESt9T2ZIMRM5PAEcIQ==", + "dev": true, + "dependencies": { + "mitt": "3.0.0" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true + }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dev": true, + "dependencies": { + "node-fetch": "2.6.7" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-functions-list": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.1.tgz", + "integrity": "sha512-Nj5YcaGgBtuUmn1D7oHqPW0c9iui7xsTsj5lIX8ZgevdfhmjFfKB3r8moHJtNJnctnYXJyYX5I1pp90HM4TPgQ==", + "dev": true, + "engines": { + "node": ">=12 || >=16" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", + "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dev": true, + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/devtools-protocol": { + "version": "0.0.1107588", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1107588.tgz", + "integrity": "sha512-yIR+pG9x65Xko7bErCUSQaDLrO/P1p3JUzEk7JCU4DowPcGHkTGUGQapcfcLc4qj0UaALwZ+cr0riFgiqpixcg==", + "dev": true + }, + "node_modules/diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/discord-types": { + "version": "1.3.26", + "resolved": "https://registry.npmjs.org/discord-types/-/discord-types-1.3.26.tgz", + "integrity": "sha512-ToG51AOCH+JTQf7b+8vuYQe5Iqwz7nZ7StpECAZ/VZcI1ZhQk13pvt9KkRTfRv1xNvwJ2qib4e3+RifQlo8VPQ==", + "dev": true, + "dependencies": { + "@types/react": "17.0.2", + "moment": "^2.29.1" + } + }, + "node_modules/discord-types/node_modules/@types/react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.2.tgz", + "integrity": "sha512-Xt40xQsrkdvjn1EyWe1Bc0dJLcil/9x2vAuW7ya+PuQip4UYUaXyhzWmAbwRsdMgwOFHpfp7/FFZebDU6Y8VHA==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "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==", + "dev": true + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/esbuild": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", + "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.15.18", + "@esbuild/linux-loong64": "0.15.18", + "esbuild-android-64": "0.15.18", + "esbuild-android-arm64": "0.15.18", + "esbuild-darwin-64": "0.15.18", + "esbuild-darwin-arm64": "0.15.18", + "esbuild-freebsd-64": "0.15.18", + "esbuild-freebsd-arm64": "0.15.18", + "esbuild-linux-32": "0.15.18", + "esbuild-linux-64": "0.15.18", + "esbuild-linux-arm": "0.15.18", + "esbuild-linux-arm64": "0.15.18", + "esbuild-linux-mips64le": "0.15.18", + "esbuild-linux-ppc64le": "0.15.18", + "esbuild-linux-riscv64": "0.15.18", + "esbuild-linux-s390x": "0.15.18", + "esbuild-netbsd-64": "0.15.18", + "esbuild-openbsd-64": "0.15.18", + "esbuild-sunos-64": "0.15.18", + "esbuild-windows-32": "0.15.18", + "esbuild-windows-64": "0.15.18", + "esbuild-windows-arm64": "0.15.18" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", + "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", + "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", + "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", + "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", + "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", + "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", + "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", + "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", + "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", + "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", + "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", + "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", + "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", + "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", + "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", + "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", + "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", + "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", + "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", + "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", + "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.55.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-import-resolver-alias": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-alias/-/eslint-import-resolver-alias-1.1.2.tgz", + "integrity": "sha512-WdviM1Eu834zsfjHtcGHtGfcu+F30Od3V7I9Fi57uhBEwPkjDcii7/yW8jAT+gOhn4P/vOxxNAXbFAKsrrc15w==", + "dev": true, + "engines": { + "node": ">= 4" + }, + "peerDependencies": { + "eslint-plugin-import": ">=1.4.0" + } + }, + "node_modules/eslint-plugin-path-alias": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-path-alias/-/eslint-plugin-path-alias-1.0.0.tgz", + "integrity": "sha512-FXus57yC+Zd3sMv46pbloXYwFeNVNHJqlACr9V68FG/IzGFBBokGJpmjDbEjpt8ZCeVSndUubeDWWl2A8sCNVQ==", + "dev": true, + "dependencies": { + "nanomatch": "^1.2.13" + }, + "peerDependencies": { + "eslint": "^7" + } + }, + "node_modules/eslint-plugin-simple-header": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-header/-/eslint-plugin-simple-header-1.0.2.tgz", + "integrity": "sha512-K1EJ/ueBIjPRA8qR44Ymo+GDmPYYmfoODtainGxVr7PSbX6QiaY+pTuGCrOhO+AtVsYJs8GLSVdGUTXyAxAtOA==" + }, + "node_modules/eslint-plugin-simple-import-sort": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-10.0.0.tgz", + "integrity": "sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==", + "dev": true, + "peerDependencies": { + "eslint": ">=5.0.0" + } + }, + "node_modules/eslint-plugin-unused-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-2.0.0.tgz", + "integrity": "sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A==", + "dev": true, + "dependencies": { + "eslint-rule-composer": "^0.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.0.0", + "eslint": "^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + } + } + }, + "node_modules/eslint-rule-composer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", + "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/fflate": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.7.4.tgz", + "integrity": "sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==" + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-tsconfig": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", + "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gifenc": { + "version": "1.0.3", + "resolved": "git+ssh://git@github.com/mattdesl/gifenc.git#64842fca317b112a8590f8fef2bf3825da8f6fe3", + "integrity": "sha512-TCgWVyjxLxM20WaQQT5neiMbdt2cuFL0BngwxcK8sV9x+M6IF0x3RIETc3VRVxfmRUxzZk+Yfv1b9cLdDnTRIw==", + "license": "MIT" + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "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/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", + "dev": true + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/highlight.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.6.0.tgz", + "integrity": "sha512-8mlRcn5vk/r4+QcqerapwBYTe+iPL5ih6xrNylxrnBdHQiijDETfXX7VIxC3UiCRiINBJfANBAsPzAvRQj8RpQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" + }, + "node_modules/jszip": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.7.0.tgz", + "integrity": "sha512-JIsRKRVC3gTRo2vM4Wy9WBC3TRcfnIZU8k65Phi3izkvPH975FowRYtKGT6PxevA0XnJ/yO8b0QwV0ydVyQwfw==", + "dev": true, + "dependencies": { + "pako": "~1.0.2" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/known-css-properties": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz", + "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==", + "dev": true + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true + }, + "node_modules/meow": { + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", + "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.2", + "camelcase-keys": "^7.0.0", + "decamelize": "^5.0.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.2", + "read-pkg-up": "^8.0.0", + "redent": "^4.0.0", + "trim-newlines": "^4.0.2", + "type-fest": "^1.2.2", + "yargs-parser": "^20.2.9" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/mitt": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", + "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==", + "dev": true + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/monaco-editor": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.43.0.tgz", + "integrity": "sha512-cnoqwQi/9fml2Szamv1XbSJieGJ1Dc8tENVMD26Kcfl7xGQWp7OBKMjlwKVGYFJ3/AXJjSOGvcqK7Ry/j9BM1Q==" + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", + "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^14 || ^16 || >=18" + } + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==", + "dev": true + }, + "node_modules/postcss-safe-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", + "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", + "dev": true, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/postcss/node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/puppeteer-core": { + "version": "19.11.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-19.11.1.tgz", + "integrity": "sha512-qcuC2Uf0Fwdj9wNtaTZ2OvYRraXpAK+puwwVW8ofOhOgLPZyz1c68tsorfIZyCUOpyBisjr+xByu7BMbEYMepA==", + "dev": true, + "dependencies": { + "@puppeteer/browsers": "0.5.0", + "chromium-bidi": "0.4.7", + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "devtools-protocol": "0.0.1107588", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "proxy-from-env": "1.1.0", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.13.0" + }, + "engines": { + "node": ">=14.14.0" + }, + "peerDependencies": { + "typescript": ">= 4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "dev": true, + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", + "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", + "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", + "dev": true, + "dependencies": { + "find-up": "^5.0.0", + "read-pkg": "^6.0.0", + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/redent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", + "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", + "dev": true, + "dependencies": { + "indent-string": "^5.0.0", + "strip-indent": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "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==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/snapdragon/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", + "dev": true + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "dev": true + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/standalone-electron-types": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/standalone-electron-types/-/standalone-electron-types-1.0.0.tgz", + "integrity": "sha512-0HOi/tlTz3mjWhsAz4uRbpQcHMZ+ifj1JzWW9nugykOHClBBG77ps8QinrzX1eow4Iw2pnC+RFaSYRgufF4BOg==", + "dev": true, + "dependencies": { + "@types/node": "^18.8.4" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-search": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", + "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", + "dev": true + }, + "node_modules/stylelint": { + "version": "15.11.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.11.0.tgz", + "integrity": "sha512-78O4c6IswZ9TzpcIiQJIN49K3qNoXTM8zEJzhaTE/xRTCZswaovSEVIa/uwbOltZrk16X4jAxjaOhzz/hTm1Kw==", + "dev": true, + "dependencies": { + "@csstools/css-parser-algorithms": "^2.3.1", + "@csstools/css-tokenizer": "^2.2.0", + "@csstools/media-query-list-parser": "^2.1.4", + "@csstools/selector-specificity": "^3.0.0", + "balanced-match": "^2.0.0", + "colord": "^2.9.3", + "cosmiconfig": "^8.2.0", + "css-functions-list": "^3.2.1", + "css-tree": "^2.3.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.1", + "fastest-levenshtein": "^1.0.16", + "file-entry-cache": "^7.0.0", + "global-modules": "^2.0.0", + "globby": "^11.1.0", + "globjoin": "^0.1.4", + "html-tags": "^3.3.1", + "ignore": "^5.2.4", + "import-lazy": "^4.0.0", + "imurmurhash": "^0.1.4", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.29.0", + "mathml-tag-names": "^2.1.3", + "meow": "^10.1.5", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.28", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^6.0.0", + "postcss-selector-parser": "^6.0.13", + "postcss-value-parser": "^4.2.0", + "resolve-from": "^5.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "style-search": "^0.1.0", + "supports-hyperlinks": "^3.0.0", + "svg-tags": "^1.0.0", + "table": "^6.8.1", + "write-file-atomic": "^5.0.1" + }, + "bin": { + "stylelint": "bin/stylelint.mjs" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + } + }, + "node_modules/stylelint-config-recommended": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-12.0.0.tgz", + "integrity": "sha512-x6x8QNARrGO2sG6iURkzqL+Dp+4bJorPMMRNPScdvaUK8PsynriOcMW7AFDKqkWAS5wbue/u8fUT/4ynzcmqdQ==", + "dev": true, + "peerDependencies": { + "stylelint": "^15.5.0" + } + }, + "node_modules/stylelint-config-standard": { + "version": "33.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-33.0.0.tgz", + "integrity": "sha512-eyxnLWoXImUn77+ODIuW9qXBDNM+ALN68L3wT1lN2oNspZ7D9NVGlNHb2QCUn4xDug6VZLsh0tF8NyoYzkgTzg==", + "dev": true, + "dependencies": { + "stylelint-config-recommended": "^12.0.0" + }, + "peerDependencies": { + "stylelint": "^15.5.0" + } + }, + "node_modules/stylelint/node_modules/balanced-match": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", + "dev": true + }, + "node_modules/stylelint/node_modules/file-entry-cache": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-7.0.2.tgz", + "integrity": "sha512-TfW7/1iI4Cy7Y8L6iqNdZQVvdXn0f8B4QcIXmkIbtTIe/Okm/nSlHb4IwGzRVOd3WfSieCgvf5cMzEfySAIl0g==", + "dev": true, + "dependencies": { + "flat-cache": "^3.2.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/stylelint/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stylelint/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", + "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=14.18" + } + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "node_modules/table": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/to-regex-range/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/trim-newlines": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", + "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsx": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-3.14.0.tgz", + "integrity": "sha512-xHtFaKtHxM9LOklMmJdI3BEnQq/D5F73Of2E1GDrITi9sgoVkvIsrQUTY1G8FlmGtA+awCI4EBlTRRYxkL2sRg==", + "dev": true, + "dependencies": { + "esbuild": "~0.18.20", + "get-tsconfig": "^4.7.2", + "source-map-support": "^0.5.21" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/tsx/node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dev": true, + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/union-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/virtual-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/virtual-merge/-/virtual-merge-1.0.1.tgz", + "integrity": "sha512-h7rzV6n5fZJbDu2lP4iu+IOtsZ00uqECFUxFePK1uY0pz/S5B7FNDJpmdDVfyGL7poyJECEHfTaIpJaknNkU0Q==" + }, + "node_modules/vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==" + }, + "node_modules/vscode-textmate": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz", + "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==" + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", + "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", + "dev": true, + "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": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/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==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zip-local": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/zip-local/-/zip-local-0.3.5.tgz", + "integrity": "sha512-GRV3D5TJY+/PqyeRm5CYBs7xVrKTKzljBoEXvocZu0HJ7tPEcgpSOYa2zFIsCZWgKWMuc4U3yMFgFkERGFIB9w==", + "dev": true, + "dependencies": { + "async": "^1.4.2", + "graceful-fs": "^4.1.3", + "jszip": "^2.6.1", + "q": "^1.4.1" + } + }, + "node_modules/zustand": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz", + "integrity": "sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==", + "dev": true, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + } + } + } + } +} diff --git a/nixpkgs/pkgs/misc/vencord/update.sh b/nixpkgs/pkgs/misc/vencord/update.sh new file mode 100755 index 000000000000..0317f695f91f --- /dev/null +++ b/nixpkgs/pkgs/misc/vencord/update.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env nix-shell +#! nix-shell -I nixpkgs=../../.. -i bash -p curl jq common-updater-scripts prefetch-npm-deps nodejs +set -eou pipefail + +tempDir=$(mktemp -d) + +ghTags=$(curl ${GITHUB_TOKEN:+" -u \":$GITHUB_TOKEN\""} "https://api.github.com/repos/Vendicated/Vencord/tags") +latestTag=$(echo "$ghTags" | jq -r .[0].name) +gitHash=$(echo "$ghTags" | jq -r .[0].commit.sha) + +pushd "$tempDir" +curl "https://raw.githubusercontent.com/Vendicated/Vencord/$latestTag/package.json" -o package.json +npm install --legacy-peer-deps -f + +npmDepsHash=$(prefetch-npm-deps ./package-lock.json) +popd + +pushd ../../.. +update-source-version vencord "${latestTag#v}" +popd + +sed -E 's#\bgitHash = ".*?"#gitHash = "'"${gitHash:0:7}"'"#' -i default.nix +sed -E 's#\bnpmDepsHash = ".*?"#npmDepsHash = "'"$npmDepsHash"'"#' -i default.nix +cp "$tempDir/package-lock.json" package-lock.json diff --git a/nixpkgs/pkgs/misc/wiki-tui/default.nix b/nixpkgs/pkgs/misc/wiki-tui/default.nix new file mode 100644 index 000000000000..e3c6a4f2bb10 --- /dev/null +++ b/nixpkgs/pkgs/misc/wiki-tui/default.nix @@ -0,0 +1,43 @@ +{ lib +, stdenv +, rustPlatform +, fetchFromGitHub +, ncurses +, openssl +, pkg-config +, Security +}: + +rustPlatform.buildRustPackage rec { + pname = "wiki-tui"; + version = "0.8.2"; + + src = fetchFromGitHub { + owner = "Builditluc"; + repo = pname; + rev = "v${version}"; + hash = "sha256-euyg4wYWYerYT3hKdOCjokx8lJldGN7E3PHimDgQy3U="; + }; + + nativeBuildInputs = [ + pkg-config + ]; + + buildInputs = [ + ncurses + openssl + ] ++ lib.optionals stdenv.isDarwin [ + Security + ]; + + cargoHash = "sha256-rKTR7vKt8woWAn7XgNYFiWu4KSiZYhaH+PLEIOfbNIY="; + + meta = with lib; { + description = "A simple and easy to use Wikipedia Text User Interface"; + homepage = "https://github.com/builditluc/wiki-tui"; + changelog = "https://github.com/Builditluc/wiki-tui/releases/tag/v${version}"; + license = licenses.mit; + maintainers = with maintainers; [ lom builditluc matthiasbeyer ]; + mainProgram = "wiki-tui"; + }; +} diff --git a/nixpkgs/pkgs/misc/xosd/default.nix b/nixpkgs/pkgs/misc/xosd/default.nix new file mode 100644 index 000000000000..3190cfb380d8 --- /dev/null +++ b/nixpkgs/pkgs/misc/xosd/default.nix @@ -0,0 +1,21 @@ +{ lib, stdenv, fetchurl, libX11, libXext, libXt, xorgproto }: + +stdenv.mkDerivation rec { + pname = "xosd"; + version = "2.2.14"; + + src = fetchurl { + url = "mirror://sourceforge/libxosd/${pname}-${version}.tar.gz"; + sha256 = "025m7ha89q29swkc7s38knnbn8ysl24g2h5s7imfxflm91psj7sg"; + }; + + buildInputs = [ libX11 libXext libXt xorgproto ]; + + meta = with lib; { + description = "Displays text on your screen"; + homepage = "https://sourceforge.net/projects/libxosd"; + license = licenses.gpl2; + platforms = platforms.linux ++ platforms.darwin; + maintainers = with maintainers; [ pSub ]; + }; +} diff --git a/nixpkgs/pkgs/misc/zeyple/default.nix b/nixpkgs/pkgs/misc/zeyple/default.nix new file mode 100644 index 000000000000..fd5f628676ae --- /dev/null +++ b/nixpkgs/pkgs/misc/zeyple/default.nix @@ -0,0 +1,28 @@ +{ lib, python3Packages, fetchFromGitHub }: + +python3Packages.buildPythonApplication rec { + pname = "zeyple"; + version = "unstable-2021-04-10"; + + format = "other"; + + src = fetchFromGitHub { + owner = "infertux"; + repo = "zeyple"; + rev = "cc125b7b44432542b227887fd7e2701f77fd8ca2"; + sha256 = "0r2d1drg2zvwmn3zg0qb32i9mh03r5di9q1yszx23r32rsax9mxh"; + }; + + propagatedBuildInputs = [ python3Packages.gpgme ]; + installPhase = '' + install -Dm755 $src/zeyple/zeyple.py $out/bin/zeyple + ''; + + meta = with lib; { + description = "Utility program to automatically encrypt outgoing emails with GPG"; + homepage = "https://infertux.com/labs/zeyple/"; + maintainers = with maintainers; [ ettom ]; + license = licenses.agpl3Plus; + mainProgram = "zeyple"; + }; +} |