mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-10 18:12:34 +09:00
Merge master into staging-next
This commit is contained in:
commit
723e1a67de
63 changed files with 1503 additions and 876 deletions
|
@ -9493,6 +9493,12 @@
|
|||
githubId = 1318743;
|
||||
name = "Ivar";
|
||||
};
|
||||
ivyfanchiang = {
|
||||
email = "dev@ivyfanchiang.ca";
|
||||
github = "hexadecimalDinosaur";
|
||||
githubId = 36890802;
|
||||
name = "Ivy Fan-Chiang";
|
||||
};
|
||||
iwanb = {
|
||||
email = "tracnar@gmail.com";
|
||||
github = "iwanb";
|
||||
|
|
|
@ -1471,6 +1471,7 @@
|
|||
./services/web-apps/netbox.nix
|
||||
./services/web-apps/nextcloud.nix
|
||||
./services/web-apps/nextcloud-notify_push.nix
|
||||
./services/web-apps/nextcloud-whiteboard-server.nix
|
||||
./services/web-apps/nextjs-ollama-llm-ui.nix
|
||||
./services/web-apps/nexus.nix
|
||||
./services/web-apps/nifi.nix
|
||||
|
|
|
@ -96,7 +96,12 @@ in {
|
|||
|
||||
extraConfig = lib.mkOption {
|
||||
description = ''
|
||||
Docker extra registry configuration via environment variables.
|
||||
Docker extra registry configuration.
|
||||
'';
|
||||
example = lib.literalExpression ''
|
||||
{
|
||||
log.level = "debug";
|
||||
}
|
||||
'';
|
||||
default = {};
|
||||
type = lib.types.attrs;
|
||||
|
|
|
@ -0,0 +1,72 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
inherit (lib)
|
||||
mkIf
|
||||
mkEnableOption
|
||||
mkOption
|
||||
types
|
||||
literalExpression
|
||||
;
|
||||
cfg = config.services.nextcloud-whiteboard-server;
|
||||
|
||||
in
|
||||
{
|
||||
options.services.nextcloud-whiteboard-server = {
|
||||
|
||||
enable = mkEnableOption "Nextcloud backend server for the Whiteboard app";
|
||||
|
||||
settings = mkOption {
|
||||
type = types.attrsOf types.str;
|
||||
default = { };
|
||||
description = ''
|
||||
Settings to configure backend server. Especially the Nextcloud host
|
||||
url has to be set. The required environment variable `JWT_SECRET_KEY`
|
||||
should be set via the secrets option.
|
||||
'';
|
||||
example = literalExpression ''
|
||||
{
|
||||
NEXTCLOUD_URL = "https://nextcloud.example.org";
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
secrets = lib.mkOption {
|
||||
type = with types; listOf str;
|
||||
description = ''
|
||||
A list of files containing the various secrets. Should be in the
|
||||
format expected by systemd's `EnvironmentFile` directory.
|
||||
'';
|
||||
default = [ ];
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
systemd.services.nextcloud-whiteboard-server = {
|
||||
description = "Nextcloud backend server for the Whiteboard app";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network-online.target" ];
|
||||
wants = [ "network-online.target" ];
|
||||
environment = cfg.settings;
|
||||
serviceConfig = {
|
||||
ExecStart = "${lib.getExe pkgs.nextcloud-whiteboard-server}";
|
||||
WorkingDirectory = "%S/whiteboard";
|
||||
StateDirectory = "whiteboard";
|
||||
EnvironmentFile = [ cfg.secrets ];
|
||||
DynamicUser = true;
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
meta.maintainers = with lib.maintainers; [ onny ];
|
||||
|
||||
}
|
|
@ -107,7 +107,10 @@ let
|
|||
|
||||
wrapperArgsStr = if lib.isString wrapperArgs then wrapperArgs else lib.escapeShellArgs wrapperArgs;
|
||||
|
||||
generatedWrapperArgs =
|
||||
generatedWrapperArgs = let
|
||||
binPath = lib.makeBinPath (lib.optional finalAttrs.withRuby rubyEnv ++ lib.optional finalAttrs.withNodeJs nodejs);
|
||||
in
|
||||
|
||||
# vim accepts a limited number of commands so we join them all
|
||||
[
|
||||
"--add-flags" ''--cmd "lua ${providerLuaRc}"''
|
||||
|
@ -116,10 +119,15 @@ let
|
|||
"--add-flags" ''--cmd "set packpath^=${finalPackdir}"''
|
||||
"--add-flags" ''--cmd "set rtp^=${finalPackdir}"''
|
||||
]
|
||||
++ lib.optionals finalAttrs.withRuby [
|
||||
"--set" "GEM_HOME" "${rubyEnv}/${rubyEnv.ruby.gemPath}"
|
||||
] ++ lib.optionals (binPath != "") [
|
||||
"--suffix" "PATH" ":" binPath
|
||||
]
|
||||
;
|
||||
|
||||
providerLuaRc = neovimUtils.generateProviderRc {
|
||||
inherit withPython3 withNodeJs withPerl;
|
||||
inherit (finalAttrs) withPython3 withNodeJs withPerl;
|
||||
withRuby = rubyEnv != null;
|
||||
};
|
||||
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "kube-router";
|
||||
version = "2.2.1";
|
||||
version = "2.2.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cloudnativelabs";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-Pm/CrB/RxCvEhNdCyfI7kF62cxpx96Cj2zWmW0wl5wM=";
|
||||
hash = "sha256-ABSjF3Wd7Ue/c+j2BvjB0UgAMccGUgJsj33JHMG8ijs=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-sIWRODIV3iJ5FdVjVwesqfbYivOlqZAvPSYa38vhCMA=";
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
, readline70
|
||||
, xz
|
||||
, cups
|
||||
, glibc
|
||||
, libaio
|
||||
, vulkan-loader
|
||||
, alsa-lib
|
||||
|
@ -20,8 +19,7 @@
|
|||
, libxcrypt-legacy
|
||||
, libGL
|
||||
, numactl
|
||||
, libX11
|
||||
, libXi
|
||||
, xorg
|
||||
, kmod
|
||||
, python3
|
||||
, autoPatchelfHook
|
||||
|
@ -29,48 +27,17 @@
|
|||
, symlinkJoin
|
||||
, enableInstaller ? false, bzip2, sqlite
|
||||
, enableMacOSGuests ? false, fetchFromGitHub, unzip
|
||||
, enableGuestTools ? true,
|
||||
}:
|
||||
|
||||
let
|
||||
# base - versions
|
||||
version = "17.5.2";
|
||||
build = "23775571";
|
||||
version = "17.6.1";
|
||||
build = "24319023";
|
||||
baseUrl = "https://softwareupdate.vmware.com/cds/vmw-desktop/ws/${version}/${build}/linux";
|
||||
|
||||
# tools - versions
|
||||
toolsVersion = "12.4.0";
|
||||
toolsBuild = "23259341";
|
||||
|
||||
# macOS - versions
|
||||
fusionVersion = "13.5.2";
|
||||
fusionBuild = "23775688";
|
||||
unlockerVersion = "3.0.5";
|
||||
|
||||
guestToolsSrc =
|
||||
let
|
||||
fetchComponent = (system: hash: fetchzip {
|
||||
inherit hash;
|
||||
url = "${baseUrl}/packages/vmware-tools-${system}-${toolsVersion}-${toolsBuild}.x86_64.component.tar";
|
||||
stripRoot = false;
|
||||
} + "/vmware-tools-${system}-${toolsVersion}-${toolsBuild}.x86_64.component");
|
||||
in lib.mapAttrsToList fetchComponent {
|
||||
linux = "sha256-vT08mR6cCXZjiQgb9jy+MaqYzS0hFbNUM7xGAHIJ8Ao=";
|
||||
linuxPreGlibc25 = "sha256-BodN1lxuhxyLlxIQSlVhGKItJ10VPlti/sEyxcRF2SA=";
|
||||
netware = "sha256-o/S4wAYLR782Fn20fTQ871+rzsa1twnAxb9laV16XIk=";
|
||||
solaris = "sha256-3LdFoI4TD5zxlohDGR3DRGbF6jwDZAoSMEpHWU4vSGU=";
|
||||
winPre2k = "sha256-+QcvWfY3aCDxUwAfSuj7Wf9sxIO+ztWBrRolMim8Dfw=";
|
||||
winPreVista = "sha256-3NgO/GdRFTpKNo45TMet0msjzxduuoF4nVLtnOUTHUA=";
|
||||
windows = "sha256-2F7UPjNvtibmWAJxpB8IOnol12aMOGMy+403WeCTXw8=";
|
||||
};
|
||||
|
||||
# macOS - ISOs
|
||||
darwinIsoSrc = fetchzip {
|
||||
url = "https://softwareupdate.vmware.com/cds/vmw-desktop/fusion/${fusionVersion}/${fusionBuild}/universal/core/com.vmware.fusion.zip.tar";
|
||||
sha256 = "sha256-DDLRWAVRI3ZeXV5bUXWwput9mEC1qsJUsjojI0CJYMI=";
|
||||
stripRoot = false;
|
||||
} + "/com.vmware.fusion.zip";
|
||||
|
||||
# macOS - Unlocker
|
||||
unlockerSrc = fetchFromGitHub {
|
||||
owner = "paolo-projects";
|
||||
|
@ -104,7 +71,6 @@ stdenv.mkDerivation rec {
|
|||
readline
|
||||
xz
|
||||
cups
|
||||
glibc
|
||||
libaio
|
||||
vulkan-loader
|
||||
alsa-lib
|
||||
|
@ -112,9 +78,21 @@ stdenv.mkDerivation rec {
|
|||
libxcrypt-legacy
|
||||
libGL
|
||||
numactl
|
||||
libX11
|
||||
libXi
|
||||
kmod
|
||||
xorg.libX11
|
||||
xorg.libXau
|
||||
xorg.libXcomposite
|
||||
xorg.libXcursor
|
||||
xorg.libXdamage
|
||||
xorg.libXdmcp
|
||||
xorg.libXext
|
||||
xorg.libXfixes
|
||||
xorg.libXft
|
||||
xorg.libXinerama
|
||||
xorg.libXi
|
||||
xorg.libXrandr
|
||||
xorg.libXrender
|
||||
xorg.libXScrnSaver
|
||||
xorg.libXtst
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ python3 vmware-unpack-env autoPatchelfHook makeWrapper ]
|
||||
|
@ -123,23 +101,13 @@ stdenv.mkDerivation rec {
|
|||
|
||||
src = fetchzip {
|
||||
url = "${baseUrl}/core/VMware-Workstation-${version}-${build}.x86_64.bundle.tar";
|
||||
sha256 = "sha256-5PZZpXN/V687TXjqeTm8MEays4/QTf02jVfdpi9C7GI=";
|
||||
sha256 = "sha256-VzfiIawBDz0f1w3eynivW41Pn4SqvYf/8o9q14hln4s=";
|
||||
stripRoot = false;
|
||||
} + "/VMware-Workstation-${version}-${build}.x86_64.bundle";
|
||||
|
||||
unpackPhase = let
|
||||
guestTools = lib.optionalString enableGuestTools (lib.concatMapStringsSep " " (src: "--install-component ${src}") guestToolsSrc);
|
||||
in
|
||||
unpackPhase =
|
||||
''
|
||||
${vmware-unpack-env}/bin/vmware-unpack-env -c "sh ${src} ${guestTools} --extract unpacked"
|
||||
|
||||
${lib.optionalString enableMacOSGuests ''
|
||||
mkdir -p fusion/
|
||||
unzip "${darwinIsoSrc}" \
|
||||
"payload/VMware Fusion.app/Contents/Library/isoimages/x86_x64/darwin.iso" \
|
||||
"payload/VMware Fusion.app/Contents/Library/isoimages/x86_x64/darwinPre15.iso" \
|
||||
-d fusion/
|
||||
''}
|
||||
${vmware-unpack-env}/bin/vmware-unpack-env -c "sh ${src} --extract unpacked"
|
||||
'';
|
||||
|
||||
postPatch = lib.optionalString enableMacOSGuests ''
|
||||
|
@ -258,8 +226,8 @@ stdenv.mkDerivation rec {
|
|||
--add-needed ${libpulseaudio}/lib/libpulse.so.0 \
|
||||
--add-needed ${libGL}/lib/libEGL.so.1 \
|
||||
--add-needed ${numactl}/lib/libnuma.so.1 \
|
||||
--add-needed ${libX11}/lib/libX11.so.6 \
|
||||
--add-needed ${libXi}/lib/libXi.so.6 \
|
||||
--add-needed ${xorg.libX11}/lib/libX11.so.6 \
|
||||
--add-needed ${xorg.libXi}/lib/libXi.so.6 \
|
||||
--add-needed ${libGL}/lib/libGL.so.1 \
|
||||
$out/lib/vmware/bin/$binary
|
||||
done
|
||||
|
@ -282,28 +250,6 @@ stdenv.mkDerivation rec {
|
|||
unpacked="unpacked/vmware-network-editor"
|
||||
cp -r $unpacked/lib $out/lib/vmware/
|
||||
|
||||
mkdir -p $out/lib/vmware/isoimages/
|
||||
|
||||
${lib.optionalString enableGuestTools ''
|
||||
echo "Installing VMware Tools"
|
||||
cp unpacked/vmware-tools-linux/linux.iso \
|
||||
unpacked/vmware-tools-linuxPreGlibc25/linuxPreGlibc25.iso \
|
||||
unpacked/vmware-tools-netware/netware.iso \
|
||||
unpacked/vmware-tools-solaris/solaris.iso \
|
||||
unpacked/vmware-tools-winPre2k/winPre2k.iso \
|
||||
unpacked/vmware-tools-winPreVista/winPreVista.iso \
|
||||
unpacked/vmware-tools-windows/windows.iso \
|
||||
$out/lib/vmware/isoimages/
|
||||
''}
|
||||
|
||||
${lib.optionalString enableMacOSGuests ''
|
||||
echo "Installing VMWare Tools for MacOS"
|
||||
cp -v \
|
||||
"fusion/payload/VMware Fusion.app/Contents/Library/isoimages/x86_x64/darwin.iso" \
|
||||
"fusion/payload/VMware Fusion.app/Contents/Library/isoimages/x86_x64/darwinPre15.iso" \
|
||||
$out/lib/vmware/isoimages/
|
||||
''}
|
||||
|
||||
## VMware Player Application
|
||||
echo "Installing VMware Player Application"
|
||||
unpacked="unpacked/vmware-player-app"
|
||||
|
@ -408,6 +354,14 @@ stdenv.mkDerivation rec {
|
|||
rm $out/lib/vmware/bin/vmware-vmx
|
||||
ln -s /run/wrappers/bin/vmware-vmx $out/lib/vmware/bin/vmware-vmx
|
||||
|
||||
# Remove shipped X11 libraries
|
||||
for lib in $out/lib/vmware/lib/* $out/lib/vmware-ovftool/lib*.so*; do
|
||||
lib_name="$(basename "$lib")"
|
||||
if [[ "$lib_name" == libX* || "$lib_name" == libxcb* ]]; then
|
||||
rm -rf "$lib"
|
||||
fi
|
||||
done
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
|
|
|
@ -141,6 +141,12 @@ py.pkgs.buildPythonApplication rec {
|
|||
export HOME=$(mktemp -d)
|
||||
'';
|
||||
|
||||
# Propagating dependencies leaks them through $PYTHONPATH which causes issues
|
||||
# when used in nix-shell.
|
||||
postFixup = ''
|
||||
rm $out/nix-support/propagated-build-inputs
|
||||
'';
|
||||
|
||||
pytestFlagsArray = [
|
||||
"-Wignore::DeprecationWarning"
|
||||
];
|
||||
|
|
|
@ -44,12 +44,12 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
''
|
||||
# Uses pkg_get_variable, cannot substitute prefix with that
|
||||
substituteInPlace data/CMakeLists.txt \
|
||||
--replace "\''${SYSTEMD_USER_DIR}" "$out/lib/systemd/user"
|
||||
--replace-fail "\''${SYSTEMD_USER_DIR}" "$out/lib/systemd/user"
|
||||
|
||||
# Bad concatenation
|
||||
substituteInPlace libmessaging-menu/messaging-menu.pc.in \
|
||||
--replace "\''${exec_prefix}/@CMAKE_INSTALL_LIBDIR@" '@CMAKE_INSTALL_FULL_LIBDIR@' \
|
||||
--replace "\''${prefix}/@CMAKE_INSTALL_INCLUDEDIR@" '@CMAKE_INSTALL_FULL_INCLUDEDIR@'
|
||||
--replace-fail "\''${exec_prefix}/@CMAKE_INSTALL_LIBDIR@" '@CMAKE_INSTALL_FULL_LIBDIR@' \
|
||||
--replace-fail "\''${prefix}/@CMAKE_INSTALL_INCLUDEDIR@" '@CMAKE_INSTALL_FULL_INCLUDEDIR@'
|
||||
|
||||
# Fix tests with gobject-introspection 1.80 not installing GLib introspection data
|
||||
substituteInPlace tests/CMakeLists.txt \
|
||||
|
|
|
@ -10,13 +10,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "bustools";
|
||||
version = "0.44.0";
|
||||
version = "0.44.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "BUStools";
|
||||
repo = "bustools";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-chdHwwnhHFGJLu4KZmFJp3SZ26GFnbelm3Qz0yeKoBs=";
|
||||
sha256 = "sha256-0Y+9T9V+l20hqxpKbSWsEB0tt8A/ctYcoPN2n/roxvg=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
|
|
@ -1,19 +1,18 @@
|
|||
{ lib
|
||||
, fetchFromGitHub
|
||||
, stdenv
|
||||
, cmake
|
||||
, pkg-config
|
||||
, installShellFiles
|
||||
, libclang
|
||||
, clang
|
||||
, llvmPackages
|
||||
, libllvm
|
||||
, yaml-cpp
|
||||
, elfutils
|
||||
, libunwind
|
||||
, enableLibcxx ? false
|
||||
, debug ? false
|
||||
,
|
||||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
stdenv,
|
||||
cmake,
|
||||
pkg-config,
|
||||
installShellFiles,
|
||||
libclang,
|
||||
llvmPackages,
|
||||
libllvm,
|
||||
yaml-cpp,
|
||||
elfutils,
|
||||
libunwind,
|
||||
enableLibcxx ? false,
|
||||
debug ? false,
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "clang-uml";
|
||||
|
@ -26,17 +25,27 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
hash = "sha256-YzHlauVuFLT2PmfqJBNwqQ/P7d7tyl3brk7Vo/kTOF4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
pkg-config
|
||||
installShellFiles
|
||||
] ++ (if debug then [
|
||||
elfutils
|
||||
libunwind
|
||||
] else [ ]);
|
||||
nativeBuildInputs =
|
||||
[
|
||||
cmake
|
||||
pkg-config
|
||||
installShellFiles
|
||||
]
|
||||
++ (
|
||||
if debug then
|
||||
[
|
||||
elfutils
|
||||
libunwind
|
||||
]
|
||||
else
|
||||
[ ]
|
||||
);
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCUSTOM_COMPILE_OPTIONS=-Wno-error=sign-compare"
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
clang
|
||||
libclang
|
||||
libllvm
|
||||
yaml-cpp
|
||||
|
@ -63,7 +72,7 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
dontFixup = debug;
|
||||
dontStrip = debug;
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
description = "Customizable automatic UML diagram generator for C++ based on Clang";
|
||||
longDescription = ''
|
||||
clang-uml is an automatic C++ to UML class, sequence, package and include diagram generator, driven by YAML configuration files.
|
||||
|
@ -71,9 +80,9 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
The configuration file or files for clang-uml define the types and contents of each generated diagram.
|
||||
The diagrams can be generated in PlantUML, MermaidJS and JSON formats.
|
||||
'';
|
||||
maintainers = with maintainers; [ eymeric ];
|
||||
maintainers = with lib.maintainers; [ eymeric ];
|
||||
homepage = "https://clang-uml.github.io/";
|
||||
license = licenses.asl20;
|
||||
platforms = platforms.all;
|
||||
license = lib.licenses.asl20;
|
||||
platforms = lib.platforms.all;
|
||||
};
|
||||
})
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
diff --git a/XOptions/xoptions.cpp b/XOptions/xoptions.cpp
|
||||
index ca5723e..30574a5 100755
|
||||
--- a/XOptions/xoptions.cpp
|
||||
+++ b/XOptions/xoptions.cpp
|
||||
@@ -1531,14 +1531,7 @@ bool XOptions::checkNative(const QString &sIniFileName)
|
||||
#if defined(Q_OS_MAC)
|
||||
bResult = true;
|
||||
#elif defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
|
||||
- QString sApplicationDirPath = qApp->applicationDirPath();
|
||||
-
|
||||
- if ((sApplicationDirPath == "/bin") || (sApplicationDirPath == "/usr/bin") || (sApplicationDirPath == "/usr/local/bin") ||
|
||||
- (sApplicationDirPath.contains("/usr/local/bin$")) || isAppImage()) {
|
||||
- bResult = true;
|
||||
- } else {
|
||||
- bResult = false;
|
||||
- }
|
||||
+ bResult = true;
|
||||
#elif defined(Q_OS_WIN)
|
||||
QString sApplicationDirPath = qApp->applicationDirPath();
|
||||
|
||||
@@ -1565,22 +1558,7 @@ QString XOptions::getApplicationDataPath()
|
||||
#ifdef Q_OS_MAC
|
||||
sResult = sApplicationDirPath + "/../Resources";
|
||||
#elif defined(Q_OS_LINUX)
|
||||
- if (isNative()) {
|
||||
- if (sApplicationDirPath.contains("/usr/local/bin$")) {
|
||||
- QString sPrefix = sApplicationDirPath.section("/usr/local/bin", 0, 0);
|
||||
-
|
||||
- sResult += sPrefix + QString("/usr/local/lib/%1").arg(qApp->applicationName());
|
||||
- } else {
|
||||
- if (sApplicationDirPath.contains("/tmp/.mount_")) // AppImage
|
||||
- {
|
||||
- sResult = sApplicationDirPath.section("/", 0, 2);
|
||||
- }
|
||||
-
|
||||
- sResult += QString("/usr/lib/%1").arg(qApp->applicationName());
|
||||
- }
|
||||
- } else {
|
||||
- sResult = sApplicationDirPath;
|
||||
- }
|
||||
+ sResult = sApplicationDirPath + "/../lib/die";
|
||||
#elif defined(Q_OS_FREEBSD)
|
||||
sResult = QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation).at(1) + QDir::separator() + qApp->applicationName();
|
||||
#else
|
68
pkgs/by-name/de/detect-it-easy/package.nix
Normal file
68
pkgs/by-name/de/detect-it-easy/package.nix
Normal file
|
@ -0,0 +1,68 @@
|
|||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
libsForQt5,
|
||||
freetype,
|
||||
graphite2,
|
||||
icu,
|
||||
krb5,
|
||||
systemdLibs,
|
||||
imagemagick,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "detect-it-easy";
|
||||
version = "3.09";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "horsicq";
|
||||
repo = "DIE-engine";
|
||||
rev = finalAttrs.version;
|
||||
fetchSubmodules = true;
|
||||
hash = "sha256-A9YZBlGf3j+uSefPiDhrS1Qtu6vaLm4Yodt7BioGD2Q=";
|
||||
};
|
||||
|
||||
patches = [ ./0001-remove-hard-coded-paths-in-xoptions.patch ];
|
||||
|
||||
buildInputs = [
|
||||
libsForQt5.qtbase
|
||||
libsForQt5.qtscript
|
||||
libsForQt5.qtsvg
|
||||
graphite2
|
||||
freetype
|
||||
icu
|
||||
krb5
|
||||
systemdLibs
|
||||
];
|
||||
nativeBuildInputs = [
|
||||
libsForQt5.wrapQtAppsHook
|
||||
libsForQt5.qmake
|
||||
imagemagick
|
||||
];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
# work around wrongly created dirs in `install.sh`
|
||||
# https://github.com/horsicq/DIE-engine/issues/110
|
||||
preInstall = ''
|
||||
mkdir -p $out/bin
|
||||
mkdir -p $out/share/applications
|
||||
mkdir -p $out/share/icons
|
||||
'';
|
||||
|
||||
# clean up wrongly created dirs in `install.sh` and broken .desktop file
|
||||
postInstall = ''
|
||||
rm -r $out/lib/{bin,share}
|
||||
grep -v "Version=#VERSION#" $src/LINUX/die.desktop > $out/share/applications/die.desktop
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Program for determining types of files for Windows, Linux and MacOS.";
|
||||
mainProgram = "die";
|
||||
homepage = "https://github.com/horsicq/Detect-It-Easy";
|
||||
maintainers = with lib.maintainers; [ ivyfanchiang ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
license = lib.licenses.mit;
|
||||
};
|
||||
})
|
310
pkgs/by-name/fa/factorio/package.nix
Normal file
310
pkgs/by-name/fa/factorio/package.nix
Normal file
|
@ -0,0 +1,310 @@
|
|||
{
|
||||
lib,
|
||||
alsa-lib,
|
||||
factorio-utils,
|
||||
fetchurl,
|
||||
libGL,
|
||||
libICE,
|
||||
libSM,
|
||||
libX11,
|
||||
libXcursor,
|
||||
libXext,
|
||||
libXi,
|
||||
libXinerama,
|
||||
libXrandr,
|
||||
libpulseaudio,
|
||||
libxkbcommon,
|
||||
makeDesktopItem,
|
||||
makeWrapper,
|
||||
releaseType,
|
||||
stdenv,
|
||||
wayland,
|
||||
|
||||
mods-dat ? null,
|
||||
versionsJson ? ./versions.json,
|
||||
username ? "",
|
||||
token ? "", # get/reset token at https://factorio.com/profile
|
||||
experimental ? false, # true means to always use the latest branch
|
||||
...
|
||||
}@args:
|
||||
|
||||
assert
|
||||
releaseType == "alpha"
|
||||
|| releaseType == "headless"
|
||||
|| releaseType == "demo"
|
||||
|| releaseType == "expansion";
|
||||
|
||||
let
|
||||
|
||||
inherit (lib) importJSON;
|
||||
|
||||
mods = args.mods or [ ];
|
||||
|
||||
helpMsg = ''
|
||||
|
||||
===FETCH FAILED===
|
||||
Please ensure you have set the username and token with config.nix, or
|
||||
/etc/nix/nixpkgs-config.nix if on NixOS.
|
||||
|
||||
Your token can be seen at https://factorio.com/profile (after logging in). It is
|
||||
not as sensitive as your password, but should still be safeguarded. There is a
|
||||
link on that page to revoke/invalidate the token, if you believe it has been
|
||||
leaked or wish to take precautions.
|
||||
|
||||
Example:
|
||||
{
|
||||
packageOverrides = pkgs: {
|
||||
factorio = pkgs.factorio.override {
|
||||
username = "FactorioPlayer1654";
|
||||
token = "d5ad5a8971267c895c0da598688761";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
Alternatively, instead of providing the username+token, you may manually
|
||||
download the release through https://factorio.com/download , then add it to
|
||||
the store using e.g.:
|
||||
|
||||
releaseType=alpha
|
||||
version=0.17.74
|
||||
nix-prefetch-url file://\''$HOME/Downloads/factorio_\''${releaseType}_x64_\''${version}.tar.xz --name factorio_\''${releaseType}_x64-\''${version}.tar.xz
|
||||
|
||||
Note the ultimate "_" is replaced with "-" in the --name arg!
|
||||
'';
|
||||
|
||||
desktopItem = makeDesktopItem {
|
||||
name = "factorio";
|
||||
desktopName = "Factorio";
|
||||
comment = "A game in which you build and maintain factories.";
|
||||
exec = "factorio";
|
||||
icon = "factorio";
|
||||
categories = [ "Game" ];
|
||||
};
|
||||
|
||||
branch = if experimental then "experimental" else "stable";
|
||||
|
||||
# NB `experimental` directs us to take the latest build, regardless of its branch;
|
||||
# hence the (stable, experimental) pairs may sometimes refer to the same distributable.
|
||||
versions = importJSON versionsJson;
|
||||
binDists = makeBinDists versions;
|
||||
|
||||
actual =
|
||||
binDists.${stdenv.hostPlatform.system}.${releaseType}.${branch}
|
||||
or (throw "Factorio ${releaseType}-${branch} binaries for ${stdenv.hostPlatform.system} are not available for download.");
|
||||
|
||||
makeBinDists =
|
||||
versions:
|
||||
let
|
||||
f =
|
||||
path: name: value:
|
||||
if builtins.isAttrs value then
|
||||
if value ? "name" then makeBinDist value else builtins.mapAttrs (f (path ++ [ name ])) value
|
||||
else
|
||||
throw "expected attrset at ${toString path} - got ${toString value}";
|
||||
in
|
||||
builtins.mapAttrs (f [ ]) versions;
|
||||
makeBinDist =
|
||||
{
|
||||
name,
|
||||
version,
|
||||
tarDirectory,
|
||||
url,
|
||||
sha256,
|
||||
needsAuth,
|
||||
candidateHashFilenames ? [ ],
|
||||
}:
|
||||
{
|
||||
inherit version tarDirectory;
|
||||
src =
|
||||
if !needsAuth then
|
||||
fetchurl { inherit name url sha256; }
|
||||
else
|
||||
(lib.overrideDerivation
|
||||
(fetchurl {
|
||||
inherit name url sha256;
|
||||
curlOptsList = [
|
||||
"--get"
|
||||
"--data-urlencode"
|
||||
"username@username"
|
||||
"--data-urlencode"
|
||||
"token@token"
|
||||
];
|
||||
})
|
||||
(_: {
|
||||
# This preHook hides the credentials from /proc
|
||||
preHook =
|
||||
if username != "" && token != "" then
|
||||
''
|
||||
echo -n "${username}" >username
|
||||
echo -n "${token}" >token
|
||||
''
|
||||
else
|
||||
''
|
||||
# Deliberately failing since username/token was not provided, so we can't fetch.
|
||||
# We can't use builtins.throw since we want the result to be used if the tar is in the store already.
|
||||
exit 1
|
||||
'';
|
||||
failureHook = ''
|
||||
cat <<EOF
|
||||
${helpMsg}
|
||||
EOF
|
||||
'';
|
||||
})
|
||||
);
|
||||
};
|
||||
|
||||
configBaseCfg = ''
|
||||
use-system-read-write-data-directories=false
|
||||
[path]
|
||||
read-data=$out/share/factorio/data/
|
||||
[other]
|
||||
check_updates=false
|
||||
'';
|
||||
|
||||
updateConfigSh = ''
|
||||
#! $SHELL
|
||||
if [[ -e ~/.factorio/config.cfg ]]; then
|
||||
# Config file exists, but may have wrong path.
|
||||
# Try to edit it. I'm sure this is perfectly safe and will never go wrong.
|
||||
sed -i 's|^read-data=.*|read-data=$out/share/factorio/data/|' ~/.factorio/config.cfg
|
||||
else
|
||||
# Config file does not exist. Phew.
|
||||
install -D $out/share/factorio/config-base.cfg ~/.factorio/config.cfg
|
||||
fi
|
||||
'';
|
||||
|
||||
modDir = factorio-utils.mkModDirDrv mods mods-dat;
|
||||
|
||||
base = with actual; {
|
||||
# remap -expansion to -space-age to better match the attr name in nixpkgs.
|
||||
pname = "factorio-${if releaseType == "expansion" then "space-age" else releaseType}";
|
||||
inherit version src;
|
||||
|
||||
preferLocalBuild = true;
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/{bin,share/factorio}
|
||||
cp -a data $out/share/factorio
|
||||
cp -a bin/${tarDirectory}/factorio $out/bin/factorio
|
||||
patchelf \
|
||||
--set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
|
||||
$out/bin/factorio
|
||||
'';
|
||||
|
||||
passthru.updateScript =
|
||||
if (username != "" && token != "") then
|
||||
[
|
||||
./update.py
|
||||
"--username=${username}"
|
||||
"--token=${token}"
|
||||
]
|
||||
else
|
||||
null;
|
||||
|
||||
meta = {
|
||||
description = "Game in which you build and maintain factories";
|
||||
longDescription = ''
|
||||
Factorio is a game in which you build and maintain factories.
|
||||
|
||||
You will be mining resources, researching technologies, building
|
||||
infrastructure, automating production and fighting enemies. Use your
|
||||
imagination to design your factory, combine simple elements into
|
||||
ingenious structures, apply management skills to keep it working and
|
||||
finally protect it from the creatures who don't really like you.
|
||||
|
||||
Factorio has been in development since spring of 2012, and reached
|
||||
version 1.0 in mid 2020.
|
||||
'';
|
||||
homepage = "https://www.factorio.com/";
|
||||
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
||||
license = lib.licenses.unfree;
|
||||
maintainers = with lib.maintainers; [
|
||||
Baughn
|
||||
elitak
|
||||
priegger
|
||||
lukegb
|
||||
];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
mainProgram = "factorio";
|
||||
};
|
||||
};
|
||||
|
||||
releases = rec {
|
||||
headless = base;
|
||||
demo = base // {
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
buildInputs = [ libpulseaudio ];
|
||||
|
||||
libPath = lib.makeLibraryPath [
|
||||
alsa-lib
|
||||
libGL
|
||||
libICE
|
||||
libSM
|
||||
libX11
|
||||
libXcursor
|
||||
libXext
|
||||
libXi
|
||||
libXinerama
|
||||
libXrandr
|
||||
libpulseaudio
|
||||
libxkbcommon
|
||||
wayland
|
||||
];
|
||||
|
||||
installPhase =
|
||||
base.installPhase
|
||||
+ ''
|
||||
wrapProgram $out/bin/factorio \
|
||||
--prefix LD_LIBRARY_PATH : /run/opengl-driver/lib:$libPath \
|
||||
--run "$out/share/factorio/update-config.sh" \
|
||||
--argv0 "" \
|
||||
--add-flags "-c \$HOME/.factorio/config.cfg" \
|
||||
${lib.optionalString (mods != [ ]) "--add-flags --mod-directory=${modDir}"}
|
||||
|
||||
# TODO Currently, every time a mod is changed/added/removed using the
|
||||
# modlist, a new derivation will take up the entire footprint of the
|
||||
# client. The only way to avoid this is to remove the mods arg from the
|
||||
# package function. The modsDir derivation will have to be built
|
||||
# separately and have the user specify it in the .factorio config or
|
||||
# right along side it using a symlink into the store I think i will
|
||||
# just remove mods for the client derivation entirely. this is much
|
||||
# cleaner and more useful for headless mode.
|
||||
|
||||
# TODO: trying to toggle off a mod will result in read-only-fs-error.
|
||||
# not much we can do about that except warn the user somewhere. In
|
||||
# fact, no exit will be clean, since this error will happen on close
|
||||
# regardless. just prints an ugly stacktrace but seems to be otherwise
|
||||
# harmless, unless maybe the user forgets and tries to use the mod
|
||||
# manager.
|
||||
|
||||
install -m0644 <(cat << EOF
|
||||
${configBaseCfg}
|
||||
EOF
|
||||
) $out/share/factorio/config-base.cfg
|
||||
|
||||
install -m0755 <(cat << EOF
|
||||
${updateConfigSh}
|
||||
EOF
|
||||
) $out/share/factorio/update-config.sh
|
||||
|
||||
mkdir -p $out/share/icons/hicolor/{64x64,128x128}/apps
|
||||
cp -a data/core/graphics/factorio-icon.png $out/share/icons/hicolor/64x64/apps/factorio.png
|
||||
cp -a data/core/graphics/factorio-icon@2x.png $out/share/icons/hicolor/128x128/apps/factorio.png
|
||||
ln -s ${desktopItem}/share/applications $out/share/
|
||||
'';
|
||||
};
|
||||
alpha = demo // {
|
||||
|
||||
installPhase =
|
||||
demo.installPhase
|
||||
+ ''
|
||||
cp -a doc-html $out/share/factorio
|
||||
'';
|
||||
};
|
||||
expansion = alpha;
|
||||
};
|
||||
|
||||
in
|
||||
stdenv.mkDerivation (releases.${releaseType})
|
289
pkgs/by-name/fa/factorio/update.py
Executable file
289
pkgs/by-name/fa/factorio/update.py
Executable file
|
@ -0,0 +1,289 @@
|
|||
#!/usr/bin/env nix-shell
|
||||
#! nix-shell -i python -p "python3.withPackages (ps: with ps; [ ps.absl-py ps.requests ])"
|
||||
|
||||
from collections import defaultdict
|
||||
import copy
|
||||
from dataclasses import dataclass
|
||||
import json
|
||||
import os.path
|
||||
from typing import Callable, Dict
|
||||
|
||||
from absl import app
|
||||
from absl import flags
|
||||
from absl import logging
|
||||
import requests
|
||||
|
||||
|
||||
FACTORIO_RELEASES = "https://factorio.com/api/latest-releases"
|
||||
FACTORIO_HASHES = "https://factorio.com/download/sha256sums/"
|
||||
|
||||
|
||||
FLAGS = flags.FLAGS
|
||||
|
||||
flags.DEFINE_string("out", "", "Output path for versions.json.")
|
||||
flags.DEFINE_list(
|
||||
"release_type",
|
||||
"",
|
||||
"If non-empty, a comma-separated list of release types to update (e.g. alpha).",
|
||||
)
|
||||
flags.DEFINE_list(
|
||||
"release_channel",
|
||||
"",
|
||||
"If non-empty, a comma-separated list of release channels to update (e.g. experimental).",
|
||||
)
|
||||
|
||||
|
||||
@dataclass
|
||||
class System:
|
||||
nix_name: str
|
||||
url_name: str
|
||||
tar_name: str
|
||||
|
||||
|
||||
@dataclass
|
||||
class ReleaseType:
|
||||
name: str
|
||||
hash_filename_format: list[str]
|
||||
needs_auth: bool = False
|
||||
|
||||
|
||||
@dataclass
|
||||
class ReleaseChannel:
|
||||
name: str
|
||||
|
||||
|
||||
FactorioVersionsJSON = Dict[str, Dict[str, str]]
|
||||
OurVersionJSON = Dict[str, Dict[str, Dict[str, Dict[str, str]]]]
|
||||
|
||||
FactorioHashes = Dict[str, str]
|
||||
|
||||
|
||||
SYSTEMS = [
|
||||
System(nix_name="x86_64-linux", url_name="linux64", tar_name="x64"),
|
||||
]
|
||||
|
||||
RELEASE_TYPES = [
|
||||
ReleaseType(
|
||||
"alpha",
|
||||
needs_auth=True,
|
||||
hash_filename_format=["factorio_linux_{version}.tar.xz"],
|
||||
),
|
||||
ReleaseType("demo", hash_filename_format=["factorio_demo_x64_{version}.tar.xz"]),
|
||||
ReleaseType(
|
||||
"headless",
|
||||
hash_filename_format=[
|
||||
"factorio-headless_linux_{version}.tar.xz",
|
||||
"factorio_headless_x64_{version}.tar.xz",
|
||||
],
|
||||
),
|
||||
ReleaseType(
|
||||
"expansion",
|
||||
needs_auth=True,
|
||||
hash_filename_format=["factorio-space-age_linux_{version}.tar.xz"],
|
||||
),
|
||||
]
|
||||
|
||||
RELEASE_CHANNELS = [
|
||||
ReleaseChannel("experimental"),
|
||||
ReleaseChannel("stable"),
|
||||
]
|
||||
|
||||
|
||||
def find_versions_json() -> str:
|
||||
if FLAGS.out:
|
||||
return FLAGS.out
|
||||
try_paths = ["pkgs/by-name/fa/factorio/versions.json", "versions.json"]
|
||||
for path in try_paths:
|
||||
if os.path.exists(path):
|
||||
return path
|
||||
raise Exception(
|
||||
"Couldn't figure out where to write versions.json; try specifying --out"
|
||||
)
|
||||
|
||||
|
||||
def fetch_versions() -> FactorioVersionsJSON:
|
||||
return json.loads(requests.get(FACTORIO_RELEASES).text)
|
||||
|
||||
|
||||
def fetch_hashes() -> FactorioHashes:
|
||||
resp = requests.get(FACTORIO_HASHES)
|
||||
resp.raise_for_status()
|
||||
out = {}
|
||||
for ln in resp.text.split("\n"):
|
||||
ln = ln.strip()
|
||||
if not ln:
|
||||
continue
|
||||
sha256, filename = ln.split()
|
||||
out[filename] = sha256
|
||||
return out
|
||||
|
||||
|
||||
def generate_our_versions(factorio_versions: FactorioVersionsJSON) -> OurVersionJSON:
|
||||
def rec_dd():
|
||||
return defaultdict(rec_dd)
|
||||
|
||||
output = rec_dd()
|
||||
|
||||
# Deal with times where there's no experimental version
|
||||
for rc in RELEASE_CHANNELS:
|
||||
if rc.name not in factorio_versions or not factorio_versions[rc.name]:
|
||||
factorio_versions[rc.name] = factorio_versions["stable"]
|
||||
for rt in RELEASE_TYPES:
|
||||
if (
|
||||
rt.name not in factorio_versions[rc.name]
|
||||
or not factorio_versions[rc.name][rt.name]
|
||||
):
|
||||
factorio_versions[rc.name][rt.name] = factorio_versions["stable"][
|
||||
rt.name
|
||||
]
|
||||
|
||||
for system in SYSTEMS:
|
||||
for release_type in RELEASE_TYPES:
|
||||
for release_channel in RELEASE_CHANNELS:
|
||||
version = factorio_versions[release_channel.name].get(release_type.name)
|
||||
if version is None:
|
||||
continue
|
||||
this_release = {
|
||||
"name": f"factorio_{release_type.name}_{system.tar_name}-{version}.tar.xz",
|
||||
"url": f"https://factorio.com/get-download/{version}/{release_type.name}/{system.url_name}",
|
||||
"version": version,
|
||||
"needsAuth": release_type.needs_auth,
|
||||
"candidateHashFilenames": [
|
||||
fmt.format(version=version)
|
||||
for fmt in release_type.hash_filename_format
|
||||
],
|
||||
"tarDirectory": system.tar_name,
|
||||
}
|
||||
output[system.nix_name][release_type.name][release_channel.name] = (
|
||||
this_release
|
||||
)
|
||||
return output
|
||||
|
||||
|
||||
def iter_version(
|
||||
versions: OurVersionJSON,
|
||||
it: Callable[[str, str, str, Dict[str, str]], Dict[str, str]],
|
||||
) -> OurVersionJSON:
|
||||
versions = copy.deepcopy(versions)
|
||||
for system_name, system in versions.items():
|
||||
for release_type_name, release_type in system.items():
|
||||
for release_channel_name, release in release_type.items():
|
||||
release_type[release_channel_name] = it(
|
||||
system_name, release_type_name, release_channel_name, dict(release)
|
||||
)
|
||||
return versions
|
||||
|
||||
|
||||
def merge_versions(old: OurVersionJSON, new: OurVersionJSON) -> OurVersionJSON:
|
||||
"""Copies already-known hashes from version.json to avoid having to re-fetch."""
|
||||
|
||||
def _merge_version(
|
||||
system_name: str,
|
||||
release_type_name: str,
|
||||
release_channel_name: str,
|
||||
release: Dict[str, str],
|
||||
) -> Dict[str, str]:
|
||||
old_system = old.get(system_name, {})
|
||||
old_release_type = old_system.get(release_type_name, {})
|
||||
old_release = old_release_type.get(release_channel_name, {})
|
||||
if FLAGS.release_type and release_type_name not in FLAGS.release_type:
|
||||
logging.info(
|
||||
"%s/%s/%s: not in --release_type, not updating",
|
||||
system_name,
|
||||
release_type_name,
|
||||
release_channel_name,
|
||||
)
|
||||
return old_release
|
||||
if FLAGS.release_channel and release_channel_name not in FLAGS.release_channel:
|
||||
logging.info(
|
||||
"%s/%s/%s: not in --release_channel, not updating",
|
||||
system_name,
|
||||
release_type_name,
|
||||
release_channel_name,
|
||||
)
|
||||
return old_release
|
||||
if "sha256" not in old_release:
|
||||
logging.info(
|
||||
"%s/%s/%s: not copying sha256 since it's missing",
|
||||
system_name,
|
||||
release_type_name,
|
||||
release_channel_name,
|
||||
)
|
||||
return release
|
||||
if not all(
|
||||
old_release.get(k, None) == release[k] for k in ["name", "version", "url"]
|
||||
):
|
||||
logging.info(
|
||||
"%s/%s/%s: not copying sha256 due to mismatch",
|
||||
system_name,
|
||||
release_type_name,
|
||||
release_channel_name,
|
||||
)
|
||||
return release
|
||||
release["sha256"] = old_release["sha256"]
|
||||
return release
|
||||
|
||||
return iter_version(new, _merge_version)
|
||||
|
||||
|
||||
def fill_in_hash(
|
||||
versions: OurVersionJSON, factorio_hashes: FactorioHashes
|
||||
) -> OurVersionJSON:
|
||||
"""Fill in sha256 hashes for anything missing them."""
|
||||
|
||||
def _fill_in_hash(
|
||||
system_name: str,
|
||||
release_type_name: str,
|
||||
release_channel_name: str,
|
||||
release: Dict[str, str],
|
||||
) -> Dict[str, str]:
|
||||
for candidate_filename in release["candidateHashFilenames"]:
|
||||
if candidate_filename in factorio_hashes:
|
||||
release["sha256"] = factorio_hashes[candidate_filename]
|
||||
break
|
||||
else:
|
||||
logging.error(
|
||||
"%s/%s/%s: failed to find any of %s in %s",
|
||||
system_name,
|
||||
release_type_name,
|
||||
release_channel_name,
|
||||
release["candidateHashFilenames"],
|
||||
FACTORIO_HASHES,
|
||||
)
|
||||
return release
|
||||
if "sha256" in release:
|
||||
logging.info(
|
||||
"%s/%s/%s: skipping fetch, sha256 already present",
|
||||
system_name,
|
||||
release_type_name,
|
||||
release_channel_name,
|
||||
)
|
||||
return release
|
||||
return release
|
||||
|
||||
return iter_version(versions, _fill_in_hash)
|
||||
|
||||
|
||||
def main(argv):
|
||||
factorio_versions = fetch_versions()
|
||||
factorio_hashes = fetch_hashes()
|
||||
new_our_versions = generate_our_versions(factorio_versions)
|
||||
old_our_versions = None
|
||||
our_versions_path = find_versions_json()
|
||||
if our_versions_path:
|
||||
logging.info("Loading old versions.json from %s", our_versions_path)
|
||||
with open(our_versions_path, "r") as f:
|
||||
old_our_versions = json.load(f)
|
||||
if old_our_versions:
|
||||
logging.info("Merging in old hashes")
|
||||
new_our_versions = merge_versions(old_our_versions, new_our_versions)
|
||||
logging.info("Updating hashes from Factorio SHA256")
|
||||
new_our_versions = fill_in_hash(new_our_versions, factorio_hashes)
|
||||
with open(our_versions_path, "w") as f:
|
||||
logging.info("Writing versions.json to %s", our_versions_path)
|
||||
json.dump(new_our_versions, f, sort_keys=True, indent=2)
|
||||
f.write("\n")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run(main)
|
102
pkgs/by-name/fa/factorio/versions.json
Normal file
102
pkgs/by-name/fa/factorio/versions.json
Normal file
|
@ -0,0 +1,102 @@
|
|||
{
|
||||
"x86_64-linux": {
|
||||
"alpha": {
|
||||
"experimental": {
|
||||
"candidateHashFilenames": [
|
||||
"factorio_linux_2.0.9.tar.xz"
|
||||
],
|
||||
"name": "factorio_alpha_x64-2.0.9.tar.xz",
|
||||
"needsAuth": true,
|
||||
"sha256": "34c21cd3cbe91b65483786ccb4467b5d4766c748cbbddd2ce3b30d319d163e3b",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/2.0.9/alpha/linux64",
|
||||
"version": "2.0.9"
|
||||
},
|
||||
"stable": {
|
||||
"candidateHashFilenames": [
|
||||
"factorio_linux_2.0.8.tar.xz"
|
||||
],
|
||||
"name": "factorio_alpha_x64-2.0.8.tar.xz",
|
||||
"needsAuth": true,
|
||||
"sha256": "94ea36a5b9103369df7158a8281039dd2f1d7fa7bb3a2d854c715250dd73e185",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/2.0.8/alpha/linux64",
|
||||
"version": "2.0.8"
|
||||
}
|
||||
},
|
||||
"demo": {
|
||||
"experimental": {
|
||||
"candidateHashFilenames": [
|
||||
"factorio_demo_x64_1.1.110.tar.xz"
|
||||
],
|
||||
"name": "factorio_demo_x64-1.1.110.tar.xz",
|
||||
"needsAuth": false,
|
||||
"sha256": "bddb91dcba9f300c25d590f861772eaf41f0b6ce8ae6b754de00d0e5f3eb5a35",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/1.1.110/demo/linux64",
|
||||
"version": "1.1.110"
|
||||
},
|
||||
"stable": {
|
||||
"candidateHashFilenames": [
|
||||
"factorio_demo_x64_1.1.110.tar.xz"
|
||||
],
|
||||
"name": "factorio_demo_x64-1.1.110.tar.xz",
|
||||
"needsAuth": false,
|
||||
"sha256": "bddb91dcba9f300c25d590f861772eaf41f0b6ce8ae6b754de00d0e5f3eb5a35",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/1.1.110/demo/linux64",
|
||||
"version": "1.1.110"
|
||||
}
|
||||
},
|
||||
"expansion": {
|
||||
"experimental": {
|
||||
"candidateHashFilenames": [
|
||||
"factorio-space-age_linux_2.0.9.tar.xz"
|
||||
],
|
||||
"name": "factorio_expansion_x64-2.0.9.tar.xz",
|
||||
"needsAuth": true,
|
||||
"sha256": "6369d23550a7a721d3de1d34253e8321ee601fa759d1fb5efac9abc28aa7509d",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/2.0.9/expansion/linux64",
|
||||
"version": "2.0.9"
|
||||
},
|
||||
"stable": {
|
||||
"candidateHashFilenames": [
|
||||
"factorio-space-age_linux_2.0.8.tar.xz"
|
||||
],
|
||||
"name": "factorio_expansion_x64-2.0.8.tar.xz",
|
||||
"needsAuth": true,
|
||||
"sha256": "408eae824daa761564b1ea7b81925efe05298cbaffd120eea235341ac05a6a60",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/2.0.8/expansion/linux64",
|
||||
"version": "2.0.8"
|
||||
}
|
||||
},
|
||||
"headless": {
|
||||
"experimental": {
|
||||
"candidateHashFilenames": [
|
||||
"factorio-headless_linux_2.0.9.tar.xz",
|
||||
"factorio_headless_x64_2.0.9.tar.xz"
|
||||
],
|
||||
"name": "factorio_headless_x64-2.0.9.tar.xz",
|
||||
"needsAuth": false,
|
||||
"sha256": "f499077b3e2c1313452c350f1faf17db31cae2a0fa738f69166e97c3caa3c86d",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/2.0.9/headless/linux64",
|
||||
"version": "2.0.9"
|
||||
},
|
||||
"stable": {
|
||||
"candidateHashFilenames": [
|
||||
"factorio-headless_linux_2.0.8.tar.xz",
|
||||
"factorio_headless_x64_2.0.8.tar.xz"
|
||||
],
|
||||
"name": "factorio_headless_x64-2.0.8.tar.xz",
|
||||
"needsAuth": false,
|
||||
"sha256": "d9594c4d552a3e4f965b188a4774da8c8b010fc23ddb0efc63b1d94818dde1ca",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/2.0.8/headless/linux64",
|
||||
"version": "2.0.8"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -9,6 +9,8 @@
|
|||
hyprlang,
|
||||
hyprutils,
|
||||
pam,
|
||||
sdbus-cpp_2,
|
||||
systemdLibs,
|
||||
wayland,
|
||||
wayland-protocols,
|
||||
wayland-scanner,
|
||||
|
@ -24,13 +26,13 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "hyprlock";
|
||||
version = "0.4.1";
|
||||
version = "0.5.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "hyprwm";
|
||||
repo = "hyprlock";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-w+AyYuqlZ/uWEimiptlHjtDFECm/JlUOD2ciCw8/+/8=";
|
||||
hash = "sha256-sUIsjWpZLplSJXWyJcDZdvDweksXLH5r9GSkwg0kgBw=";
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
|
@ -54,6 +56,8 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
mesa
|
||||
pam
|
||||
pango
|
||||
sdbus-cpp_2
|
||||
systemdLibs
|
||||
wayland
|
||||
wayland-protocols
|
||||
];
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
{ lib, buildGoModule, fetchFromGitHub, nix-update-script, testers, immich-go }:
|
||||
buildGoModule rec {
|
||||
pname = "immich-go";
|
||||
version = "0.22.0";
|
||||
version = "0.22.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "simulot";
|
||||
repo = "immich-go";
|
||||
rev = "${version}";
|
||||
hash = "sha256-dSyVn7CQqZ/tCxF/Yl12eubWkZrV5FM8uRexCjZILbw=";
|
||||
hash = "sha256-6bLjHKkEghbY+UQFrgbfeHwOjtks1HjXbDXEr7DuJbU=";
|
||||
|
||||
# Inspired by: https://github.com/NixOS/nixpkgs/blob/f2d7a289c5a5ece8521dd082b81ac7e4a57c2c5c/pkgs/applications/graphics/pdfcpu/default.nix#L20-L32
|
||||
# The intention here is to write the information into files in the `src`'s
|
||||
|
|
|
@ -16,15 +16,15 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "mixxc";
|
||||
version = "0.2.2";
|
||||
version = "0.2.3";
|
||||
|
||||
src = fetchCrate {
|
||||
pname = "mixxc";
|
||||
inherit version;
|
||||
hash = "sha256-Y/9l8t6Vz7yq9T1AyoHnWmIcju1rfcV0S74hiK1fEjo=";
|
||||
hash = "sha256-d/bMDqDR+sBtsI3ToCcByDxqd+aE6rDPRvGBcodU6iA=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-l9inqqUiLObrqd/8pNobwBbLaiPJD39YK/38CWfDh+Q=";
|
||||
cargoHash = "sha256-RoVqQaSlIvAb8mWJNOyALjCHejFEfxjJADQfHZ5EiOs=";
|
||||
|
||||
cargoBuildFlags = [ "--locked" ];
|
||||
|
||||
|
|
35
pkgs/by-name/ne/nextcloud-whiteboard-server/package.nix
Normal file
35
pkgs/by-name/ne/nextcloud-whiteboard-server/package.nix
Normal file
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
lib,
|
||||
buildNpmPackage,
|
||||
fetchFromGitHub,
|
||||
stdenv,
|
||||
makeWrapper,
|
||||
nodejs,
|
||||
}:
|
||||
buildNpmPackage rec {
|
||||
pname = "nextcloud-whiteboard-server";
|
||||
version = "1.0.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nextcloud";
|
||||
repo = "whiteboard";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-27w8FZz9PbVdYV7yR5iRXi5edw7U/3bLVYfdRa8yPzo=";
|
||||
};
|
||||
|
||||
npmDepsHash = "sha256-SwFQRDRo7Q8+0zYWx5szahJzDSoxkkJDPQ3qEdNLVaE=";
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
postInstall = ''
|
||||
makeWrapper ${lib.getExe nodejs} "$out/bin/nextcloud-whiteboard-server" \
|
||||
--add-flags "$out/lib/node_modules/whiteboard/websocket_server/main.js"
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Backend server for the Nextcloud Whiteboard app";
|
||||
homepage = "https://apps.nextcloud.com/apps/whiteboard";
|
||||
license = lib.licenses.agpl3Plus;
|
||||
maintainers = [ lib.maintainers.onny ];
|
||||
};
|
||||
}
|
|
@ -7,14 +7,14 @@
|
|||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "pdftitle";
|
||||
version = "0.14";
|
||||
version = "0.15";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "metebalci";
|
||||
repo = "pdftitle";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-7tIvvRlaKRC3/eRUS8F3d3qiJnCU0Z14Pj9E4v0X4+o=";
|
||||
hash = "sha256-IEctzvNHlGYUMl3jfTVNinmfMviVQ9q15OZtRN1mhZc=";
|
||||
};
|
||||
|
||||
build-system = with python3Packages; [
|
||||
|
|
|
@ -1,24 +1,28 @@
|
|||
{ lib
|
||||
, buildGoModule
|
||||
, fetchFromGitHub
|
||||
{
|
||||
lib,
|
||||
buildGoModule,
|
||||
fetchFromGitHub,
|
||||
}:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "spirit";
|
||||
version = "0.5.0";
|
||||
version = "0.6.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cashapp";
|
||||
repo = "spirit";
|
||||
rev = "v${version}-prerelease";
|
||||
hash = "sha256-e0Eu7BeOwZA8UKwonuuOde1idzaIMtprWya7nxgqyjs=";
|
||||
hash = "sha256-mI4nO/yQdCrqxCDyOYQPQ905EVreYPEiupe+F4RjIqw=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-es1PGgLoE3DklnQziRjWmY7f6NNVd24L2JiuLkol6HI=";
|
||||
|
||||
subPackages = [ "cmd/spirit" ];
|
||||
|
||||
ldflags = [ "-s" "-w" ];
|
||||
ldflags = [
|
||||
"-s"
|
||||
"-w"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/cashapp/spirit";
|
||||
|
|
|
@ -25,7 +25,7 @@ let
|
|||
# See upstream issue for rocksdb 9.X support
|
||||
# https://github.com/stalwartlabs/mail-server/issues/407
|
||||
rocksdb = rocksdb_8_11;
|
||||
version = "0.10.3";
|
||||
version = "0.10.5";
|
||||
in
|
||||
rustPlatform.buildRustPackage {
|
||||
pname = "stalwart-mail";
|
||||
|
@ -35,11 +35,11 @@ rustPlatform.buildRustPackage {
|
|||
owner = "stalwartlabs";
|
||||
repo = "mail-server";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-xpNSMZWWiFU6OOooAD7ENzOggqYHdU88baPsXnovpXU=";
|
||||
hash = "sha256-MD9zAWeitP3cXxzR4znqL551AGFbOcRzhV3goY6l/iY=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
cargoHash = "sha256-qiKfHrxQ4TSSomDLlPJ2+GOEri/ZuMCvUNdxRVoplgg=";
|
||||
cargoHash = "sha256-ug49H6RWLlDdJNVW/BJcqNsG/NDNgWiqR8GiZ/HVrvY=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
|
|
|
@ -6,16 +6,16 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "tex-fmt";
|
||||
version = "0.4.4";
|
||||
version = "0.4.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "WGUNDERWOOD";
|
||||
repo = "tex-fmt";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-o8TlD0qxz/0sS45tnBNXYNDzp+VAhH3Ym1odSleD/uw=";
|
||||
hash = "sha256-Ii/z9ZmsWCHxxqUbkcu7HRBuN2LiLCxzUvqRexwQ/Co=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-N3kCeBisjeOAG45QPQhplGRAvj5kebEX4U9pisM/GUQ=";
|
||||
cargoHash = "sha256-2vPxsXKInH18h/AoOWfl0VteUBmxWDzZa6AtpKfY5Hs=";
|
||||
|
||||
meta = {
|
||||
description = "LaTeX formatter written in Rust";
|
||||
|
|
|
@ -2,16 +2,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "tootik";
|
||||
version = "0.11.4";
|
||||
version = "0.12.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dimkr";
|
||||
repo = "tootik";
|
||||
rev = version;
|
||||
hash = "sha256-b4uSztroeOKPOyPwxVB3ofkAmDpWFstHDQX2IwQwG/4=";
|
||||
hash = "sha256-v7+WDxGUWCrZMhm0TXMIZTQZTzHYNauX2LIOV3zz+9A=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-B+SmzNLAXIjkUO1JGpD1eqa52Z1zOdPiG8urvLFXf88=";
|
||||
vendorHash = "sha256-wmyaTZX181w4Kiiw1sZ4NeIDY63PwW+ayvtwrLSiF24=";
|
||||
|
||||
nativeBuildInputs = [ openssl ];
|
||||
|
||||
|
|
|
@ -22,12 +22,12 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "tradingview";
|
||||
version = "2.9.2";
|
||||
revision = "59";
|
||||
version = "2.9.3";
|
||||
revision = "60";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://api.snapcraft.io/api/v1/snaps/download/nJdITJ6ZJxdvfu8Ch7n5kH5P99ClzBYV_${finalAttrs.revision}.snap";
|
||||
hash = "sha256-qGQZKl8h23H8npdIBeVw3aCZPZiCfPsawzQxUY31Ujs=";
|
||||
hash = "sha256-Oa3YfmXDiqKxEMJloTu6ihJ6LKoz2XwQ0su1KrlSaYo=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
diff --git a/crates/turborepo-lib/src/lib.rs b/crates/turborepo-lib/src/lib.rs
|
||||
index e8d41933da..26b8c7c92f 100644
|
||||
--- a/crates/turborepo-lib/src/lib.rs
|
||||
+++ b/crates/turborepo-lib/src/lib.rs
|
||||
@@ -2,6 +2,7 @@
|
||||
#![feature(box_patterns)]
|
||||
#![feature(error_generic_member_access)]
|
||||
#![feature(hash_extract_if)]
|
||||
+#![feature(lazy_cell)]
|
||||
#![feature(option_get_or_insert_default)]
|
||||
#![feature(once_cell_try)]
|
||||
#![feature(panic_info_message)]
|
|
@ -18,21 +18,16 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "turbo-unwrapped";
|
||||
version = "2.0.12";
|
||||
version = "2.2.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "vercel";
|
||||
repo = "turbo";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-rh9BX8M3Kgu07Pz4G3AM6S9zeK3Bb6CzOpcYo7rQgIw=";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-MDvwitzZVPVjdIVEAV1aKMAVeLSTMM2owH5RSfVg+rU=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# upstream uses nightly where lazy_cell is stable
|
||||
./enable-lazy_cell.patch
|
||||
];
|
||||
|
||||
cargoHash = "sha256-oZHSoPrPCUwXSrxEASm4LuYO+XHyNDRRl38Q7U7F/lk=";
|
||||
cargoHash = "sha256-XBI/eiOyKk80ZDFLD2HCTFYRWvC7qtzQY/zFCmKdKSM=";
|
||||
|
||||
nativeBuildInputs =
|
||||
[
|
||||
|
|
|
@ -9,13 +9,13 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "whatsie";
|
||||
version = "4.16.0";
|
||||
version = "4.16.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "keshavbhatt";
|
||||
repo = "whatsie";
|
||||
rev = "refs/tags/v${finalAttrs.version}";
|
||||
hash = "sha256-+sbnpaR+pR5aKbGUIVM3yRpco7/jE9LkCbQKrgFDYwM=";
|
||||
hash = "sha256-9G+2yYc5Lcmw5NvLnn7jVZ4Fw79L29KbhiE2CYh6SLM=";
|
||||
};
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/src";
|
||||
|
|
|
@ -8,13 +8,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "xchm";
|
||||
version = "1.36";
|
||||
version = "1.37";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rzvncj";
|
||||
repo = "xCHM";
|
||||
rev = version;
|
||||
sha256 = "sha256-+RbFE/jOD8sofHMCFgTIfgokrXYqDbCSSnN6SdEZ/b0=";
|
||||
sha256 = "sha256-UMn8ds4nheuYSu0PesxdGoyxyn5AcKq9WByeRUxxx3k=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
|
@ -37,6 +37,7 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
homepage = "https://codeberg.org/jbruchon/libjodycode";
|
||||
changelog = "https://codeberg.org/jbruchon/libjodycode/src/branch/master/CHANGES.txt";
|
||||
license = lib.licenses.mit;
|
||||
platforms = lib.platforms.all;
|
||||
maintainers = with lib.maintainers; [ pbsds ];
|
||||
};
|
||||
})
|
||||
|
|
|
@ -1,53 +1,71 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, expat
|
||||
, pkg-config
|
||||
, systemd
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
cmake,
|
||||
expat,
|
||||
pkg-config,
|
||||
systemdLibs,
|
||||
}:
|
||||
let
|
||||
generic =
|
||||
{
|
||||
version,
|
||||
rev ? "v${version}",
|
||||
hash,
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "sdbus-cpp";
|
||||
inherit version;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "sdbus-cpp";
|
||||
version = "1.5.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "kistler-group";
|
||||
repo = "sdbus-cpp";
|
||||
inherit rev hash;
|
||||
};
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kistler-group";
|
||||
repo = "sdbus-cpp";
|
||||
rev = "v${version}";
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
expat
|
||||
systemdLibs
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
(lib.cmakeBool "BUILD_CODE_GEN" true)
|
||||
];
|
||||
|
||||
meta = {
|
||||
homepage = "https://github.com/Kistler-Group/sdbus-cpp";
|
||||
changelog = "https://github.com/Kistler-Group/sdbus-cpp/blob/v${version}/ChangeLog";
|
||||
description = "High-level C++ D-Bus library designed to provide easy-to-use yet powerful API";
|
||||
longDescription = ''
|
||||
sdbus-c++ is a high-level C++ D-Bus library for Linux designed to provide
|
||||
expressive, easy-to-use API in modern C++.
|
||||
It adds another layer of abstraction on top of sd-bus, a nice, fresh C
|
||||
D-Bus implementation by systemd.
|
||||
It's been written primarily as a replacement of dbus-c++, which currently
|
||||
suffers from a number of (unresolved) bugs, concurrency issues and
|
||||
inherent design complexities and limitations.
|
||||
'';
|
||||
license = lib.licenses.lgpl2Only;
|
||||
maintainers = [ ];
|
||||
platforms = lib.platforms.linux;
|
||||
mainProgram = "sdbus-c++-xml2cpp";
|
||||
};
|
||||
});
|
||||
in
|
||||
{
|
||||
sdbus-cpp = generic {
|
||||
version = "1.5.0";
|
||||
hash = "sha256-oO8QNffwNI245AEPdutOGqxj4qyusZYK3bZWLh2Lcag=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
expat
|
||||
systemd
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DBUILD_CODE_GEN=ON"
|
||||
];
|
||||
|
||||
meta = {
|
||||
homepage = "https://github.com/Kistler-Group/sdbus-cpp";
|
||||
changelog = "https://github.com/Kistler-Group/sdbus-cpp/blob/v${version}/ChangeLog";
|
||||
description = "High-level C++ D-Bus library designed to provide easy-to-use yet powerful API";
|
||||
longDescription = ''
|
||||
sdbus-c++ is a high-level C++ D-Bus library for Linux designed to provide
|
||||
expressive, easy-to-use API in modern C++.
|
||||
It adds another layer of abstraction on top of sd-bus, a nice, fresh C
|
||||
D-Bus implementation by systemd.
|
||||
It's been written primarily as a replacement of dbus-c++, which currently
|
||||
suffers from a number of (unresolved) bugs, concurrency issues and
|
||||
inherent design complexities and limitations.
|
||||
'';
|
||||
license = lib.licenses.lgpl2Only;
|
||||
maintainers = [ ];
|
||||
platforms = lib.platforms.linux;
|
||||
mainProgram = "sdbus-c++-xml2cpp";
|
||||
sdbus-cpp_2 = generic {
|
||||
version = "2.0.0";
|
||||
hash = "sha256-W8V5FRhV3jtERMFrZ4gf30OpIQLYoj2yYGpnYOmH2+g=";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -7,14 +7,15 @@
|
|||
cargo,
|
||||
rustPlatform,
|
||||
rustc,
|
||||
setuptools,
|
||||
setuptools-rust,
|
||||
libiconv,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "cryptg";
|
||||
version = "0.4";
|
||||
format = "setuptools";
|
||||
version = "0.5";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.7";
|
||||
|
||||
|
@ -22,16 +23,20 @@ buildPythonPackage rec {
|
|||
owner = "cher-nov";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-2HP1mKGPr8wOL5B0APJks3EVBicX2iMFI7vLJGTa1PM=";
|
||||
hash = "sha256-uJfMetplTyRT95P/8ljz4H4ASYMXEM7jROWSpjftKjU=";
|
||||
};
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoTarball {
|
||||
inherit src;
|
||||
hash = "sha256-AqSVFOB9Lfvk9h3GtoYlEOXBEt7YZYLhCDNKM9upQ2U=";
|
||||
hash = "sha256-HDMztt7/ZpPlpy0IMGuWGGo4vwKhraFTmTTPr9tC+Ok=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
build-system = [
|
||||
setuptools
|
||||
setuptools-rust
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
rustPlatform.cargoSetupHook
|
||||
rustc
|
||||
cargo
|
||||
|
@ -44,6 +49,10 @@ buildPythonPackage rec {
|
|||
|
||||
pythonImportsCheck = [ "cryptg" ];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace pyproject.toml --replace-fail "setuptools[core]" "setuptools"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Official Telethon extension to provide much faster cryptography for Telegram API requests";
|
||||
homepage = "https://github.com/cher-nov/cryptg";
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
django,
|
||||
pythonOlder,
|
||||
djangorestframework,
|
||||
pytestCheckHook,
|
||||
pytest-django,
|
||||
python,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "djangorestframework-csv";
|
||||
version = "3.0.2";
|
||||
format = "setuptools";
|
||||
|
||||
disabled = pythonOlder "3.8";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mjumbewu";
|
||||
repo = "django-rest-framework-csv";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-XtMkSucB7+foRpTaRfGF1Co0n3ONNGyzex6MXR4xM5c=";
|
||||
};
|
||||
|
||||
dependencies = [
|
||||
django
|
||||
djangorestframework
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
pytestCheckHook
|
||||
pytest-django
|
||||
];
|
||||
|
||||
checkPhase = ''
|
||||
runHook preCheck
|
||||
${python.interpreter} manage.py test
|
||||
runHook postCheck
|
||||
'';
|
||||
|
||||
pythonImportsCheck = [ "rest_framework_csv" ];
|
||||
|
||||
meta = {
|
||||
description = "CSV Tools for Django REST Framework";
|
||||
homepage = "https://github.com/mjumbewu/django-rest-framework-csv";
|
||||
changelog = "https://github.com/mjumbewu/django-rest-framework-csv/releases/tag/${version}";
|
||||
license = lib.licenses.bsd2;
|
||||
maintainers = [ lib.maintainers.onny ];
|
||||
};
|
||||
}
|
|
@ -15,7 +15,7 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "gcal-sync";
|
||||
version = "6.1.6";
|
||||
version = "6.2.0";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.10";
|
||||
|
@ -24,7 +24,7 @@ buildPythonPackage rec {
|
|||
owner = "allenporter";
|
||||
repo = "gcal_sync";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-dVpPq2TJsR+0VWfup2SNLsnBP2j/HUQsoxJebNkD8Sw=";
|
||||
hash = "sha256-424PRKjQnpb6fH+iSAqkoOhlvugW7W3wjUxCHTc/A20=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ setuptools ];
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchPypi,
|
||||
pythonOlder,
|
||||
fetchFromGitHub,
|
||||
|
||||
# build-system
|
||||
hatchling,
|
||||
|
||||
# dependencies
|
||||
ipykernel,
|
||||
exceptiongroup,
|
||||
ipython,
|
||||
jupyter-client,
|
||||
jupyter-core,
|
||||
|
@ -13,6 +15,8 @@
|
|||
pygments,
|
||||
pyzmq,
|
||||
traitlets,
|
||||
|
||||
# tests
|
||||
flaky,
|
||||
pexpect,
|
||||
pytestCheckHook,
|
||||
|
@ -21,27 +25,29 @@
|
|||
buildPythonPackage rec {
|
||||
pname = "jupyter-console";
|
||||
version = "6.6.3";
|
||||
format = "pyproject";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.7";
|
||||
|
||||
src = fetchPypi {
|
||||
pname = "jupyter_console";
|
||||
inherit version;
|
||||
hash = "sha256-VmpL8xyHrb+t8izfhG4wabWace1dpx1rpNiqrRSlNTk=";
|
||||
src = fetchFromGitHub {
|
||||
owner = "jupyter";
|
||||
repo = "jupyter_console";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-jdSeZCspcjEQVBpJyxVnwJ5SAq+SS1bW9kqp/F/zwCQ=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ hatchling ];
|
||||
postPatch =
|
||||
# Use wrapped executable in tests
|
||||
let
|
||||
binPath = "${placeholder "out"}/bin/jupyter-console";
|
||||
in
|
||||
''
|
||||
substituteInPlace jupyter_console/tests/test_console.py \
|
||||
--replace-fail "'-m', 'jupyter_console', " "" \
|
||||
--replace-fail "sys.executable" "'${binPath}'"
|
||||
'';
|
||||
|
||||
postPatch = ''
|
||||
# use wrapped executable in tests
|
||||
substituteInPlace jupyter_console/tests/test_console.py \
|
||||
--replace "args = ['-m', 'jupyter_console', '--colors=NoColor']" "args = ['--colors=NoColor']" \
|
||||
--replace "cmd = sys.executable" "cmd = '${placeholder "out"}/bin/jupyter-console'" \
|
||||
--replace "check_output([sys.executable, '-m', 'jupyter_console'," "check_output(['${placeholder "out"}/bin/jupyter-console',"
|
||||
'';
|
||||
build-system = [ hatchling ];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
dependencies = [
|
||||
ipykernel
|
||||
ipython
|
||||
jupyter-client
|
||||
|
@ -50,7 +56,7 @@ buildPythonPackage rec {
|
|||
pygments
|
||||
pyzmq
|
||||
traitlets
|
||||
] ++ lib.optionals (pythonOlder "3.11") [ exceptiongroup ];
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "jupyter_console" ];
|
||||
|
||||
|
@ -64,6 +70,14 @@ buildPythonPackage rec {
|
|||
export HOME=$TMPDIR
|
||||
'';
|
||||
|
||||
disabledTests = [
|
||||
# Flaky: pexpect.exceptions.TIMEOUT: Timeout exceeded
|
||||
"test_console_starts"
|
||||
"test_display_text"
|
||||
];
|
||||
|
||||
__darwinAllowLocalNetworking = true;
|
||||
|
||||
meta = {
|
||||
description = "Jupyter terminal console";
|
||||
mainProgram = "jupyter-console";
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "nebula3-python";
|
||||
version = "3.8.2";
|
||||
version = "3.8.3";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.8";
|
||||
|
@ -23,7 +23,7 @@ buildPythonPackage rec {
|
|||
owner = "vesoft-inc";
|
||||
repo = "nebula-python";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-XwrrT5Vuwqw57u3Xt9nS4NjmFG2VD62gWSVfeek2478=";
|
||||
hash = "sha256-p2dXpcOwVKbdfRKKTAc4LhaNuTjvPd8BBBI8aUivaZ4=";
|
||||
};
|
||||
|
||||
build-system = [ pdm-backend ];
|
||||
|
|
77
pkgs/development/python-modules/pesq/default.nix
Normal file
77
pkgs/development/python-modules/pesq/default.nix
Normal file
|
@ -0,0 +1,77 @@
|
|||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
|
||||
# build-system
|
||||
cython,
|
||||
numpy,
|
||||
setuptools,
|
||||
|
||||
# tests
|
||||
pytestCheckHook,
|
||||
scipy,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "pesq";
|
||||
version = "0.0.4";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ludlows";
|
||||
repo = "PESQ";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-JuwZ+trFKGMetS3cC3pEQsV+wbj6+klFnC3THOd8bPE=";
|
||||
};
|
||||
|
||||
postPatch =
|
||||
# pythonRemoveDeps does not work for removing pytest-runner
|
||||
''
|
||||
substituteInPlace setup.py \
|
||||
--replace-fail ", 'pytest-runner'" ""
|
||||
''
|
||||
# Flaky tests: numerical equality is not satisfied on ARM platforms
|
||||
+ ''
|
||||
substituteInPlace tests/test_pesq.py \
|
||||
--replace-fail \
|
||||
"assert score == 1.6072081327438354" \
|
||||
"assert abs(score - 1.6072081327438354) < 1e-5" \
|
||||
--replace-fail \
|
||||
"assert score == [1.6072081327438354]" \
|
||||
"assert np.allclose(np.array(score), np.array([1.6072081327438354]))"
|
||||
'';
|
||||
|
||||
build-system = [
|
||||
cython
|
||||
setuptools
|
||||
numpy
|
||||
];
|
||||
|
||||
dependencies = [
|
||||
numpy
|
||||
];
|
||||
|
||||
pythonImportsCheck = [
|
||||
"pesq"
|
||||
"pesq.cypesq"
|
||||
];
|
||||
|
||||
# Prevents importing the `pesq` module from the source files (which lack the cypesq extension)
|
||||
preCheck = ''
|
||||
rm -rf pesq
|
||||
'';
|
||||
|
||||
nativeCheckInputs = [
|
||||
pytestCheckHook
|
||||
scipy
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "PESQ (Perceptual Evaluation of Speech Quality) Wrapper for Python Users";
|
||||
homepage = "https://github.com/ludlows/PESQ";
|
||||
changelog = "https://github.com/ludlows/PESQ/releases/tag/v${version}";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ GaetanLepage ];
|
||||
};
|
||||
}
|
|
@ -13,21 +13,21 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "pyvlx";
|
||||
version = "0.2.23";
|
||||
version = "0.2.25";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.10";
|
||||
disabled = pythonOlder "3.11";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Julius2342";
|
||||
repo = "pyvlx";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-J+oJQHsULrJQNdZqYsl2hufNubMwV1KtG10jZH0jbU4=";
|
||||
hash = "sha256-c0HlmqLvpIn2GXorOArBKJ0YzvWz1spmhWwm6Gow2iU=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ setuptools ];
|
||||
build-system = [ setuptools ];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
dependencies = [
|
||||
pyyaml
|
||||
typing-extensions
|
||||
zeroconf
|
||||
|
@ -45,7 +45,7 @@ buildPythonPackage rec {
|
|||
'';
|
||||
homepage = "https://github.com/Julius2342/pyvlx";
|
||||
changelog = "https://github.com/Julius2342/pyvlx/releases/tag/${version}";
|
||||
license = with licenses; [ lgpl2Only ];
|
||||
license = licenses.lgpl2Only;
|
||||
maintainers = with maintainers; [ fab ];
|
||||
broken = stdenv.hostPlatform.isDarwin;
|
||||
};
|
||||
|
|
|
@ -9,14 +9,14 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "survey";
|
||||
version = "5.4.0";
|
||||
version = "5.4.2";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.7";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-JT0tcNBReNdfbZrwSgv0OFcBz9Hp1N5JF4nP9oXfTJs=";
|
||||
hash = "sha256-4vnjtSbw2y/o+fSWDl/CqTEZkl0jULGOLURdZ0BpKvY=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
|
|
|
@ -11,14 +11,14 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "trimesh";
|
||||
version = "4.5.0";
|
||||
version = "4.5.1";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.8";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-/EnZ+8KeJQF3daAk5d+A9iXJ3dv5gs4+pdNEUHCVBCU=";
|
||||
hash = "sha256-LoUXn9vuHocqoA1CpbKGBaBTApaIV6gyGk36Q5ByWxw=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
{
|
||||
lib,
|
||||
bleak,
|
||||
bleak-retry-connector,
|
||||
bleak,
|
||||
bluetooth-data-tools,
|
||||
bluetooth-sensor-state-data,
|
||||
buildPythonPackage,
|
||||
cryptography,
|
||||
fetchFromGitHub,
|
||||
home-assistant-bluetooth,
|
||||
orjson,
|
||||
poetry-core,
|
||||
pycryptodomex,
|
||||
pytestCheckHook,
|
||||
|
@ -17,7 +18,7 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "xiaomi-ble";
|
||||
version = "0.32.0";
|
||||
version = "0.33.0";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.9";
|
||||
|
@ -26,7 +27,7 @@ buildPythonPackage rec {
|
|||
owner = "Bluetooth-Devices";
|
||||
repo = "xiaomi-ble";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-dZJsB40BMPo0tOFq0vLILrwfezf5dnspFK/aZWOV4uc=";
|
||||
hash = "sha256-7/4Ea8IiRPxhgMiazSylYZAmznqIula2yCEUAyIHBBg=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
@ -46,6 +47,7 @@ buildPythonPackage rec {
|
|||
bluetooth-sensor-state-data
|
||||
cryptography
|
||||
home-assistant-bluetooth
|
||||
orjson
|
||||
pycryptodomex
|
||||
sensor-state-data
|
||||
];
|
||||
|
|
|
@ -7,11 +7,11 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "allure";
|
||||
version = "2.30.0";
|
||||
version = "2.31.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/allure-framework/allure2/releases/download/${finalAttrs.version}/allure-${finalAttrs.version}.tgz";
|
||||
hash = "sha256-jYdinK7it2MDwrWZmxPHR5YqZhhVIo2vMZDCX38+igU=";
|
||||
hash = "sha256-rhuIf+lwxw55SscOmtCsbrcIdjpTTM9joQbMbx8G0Uw=";
|
||||
};
|
||||
|
||||
dontConfigure = true;
|
||||
|
|
|
@ -7,16 +7,16 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "rustywind";
|
||||
version = "0.22.0";
|
||||
version = "0.23.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "avencera";
|
||||
repo = "rustywind";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-dK8tO7rIsu1zVmA2reduBe8vM6L6oesig1tE+ajGSXM=";
|
||||
hash = "sha256-NRIWjmKjteJibqnOjkkUY9eKIM65H7NaRX8rn1MdXmY=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-yZQSY2zqVpmhMd6+Avg2vBh0WQB2FJ2fiMuy5x9Zl9U=";
|
||||
cargoHash = "sha256-yUODUAhWtRGCj3U9nBlw3+5dNv6vGHXmJzUd8hGKnu0=";
|
||||
|
||||
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
darwin.apple_sdk.frameworks.Security
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
version = "1.1.29";
|
||||
version = "1.1.31";
|
||||
pname = "bun";
|
||||
|
||||
src = passthru.sources.${stdenvNoCC.hostPlatform.system} or (throw "Unsupported system: ${stdenvNoCC.hostPlatform.system}");
|
||||
|
@ -51,19 +51,19 @@ stdenvNoCC.mkDerivation rec {
|
|||
sources = {
|
||||
"aarch64-darwin" = fetchurl {
|
||||
url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-darwin-aarch64.zip";
|
||||
hash = "sha256-RSMuealmdHe7qGFwhK9e51TED3PaCwSqzd4aj2RKMxE=";
|
||||
hash = "sha256-dOQFfkxCiOFmAr11CjSdSKNpiLERkbVWawAuy8ASkJE=";
|
||||
};
|
||||
"aarch64-linux" = fetchurl {
|
||||
url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-linux-aarch64.zip";
|
||||
hash = "sha256-gY+MDJqDjQamxQsk/CJJVuHsBAfwgrebs/h6nI0HV78=";
|
||||
hash = "sha256-ZuU14GvAtf1n1sA8amtZUSGp5iJ5qp/SI2wrw4Gwe/4=";
|
||||
};
|
||||
"x86_64-darwin" = fetchurl {
|
||||
url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-darwin-x64-baseline.zip";
|
||||
hash = "sha256-j5jpgofGcfjto/3CtBsC4QV411lUGdk2wHwLGmLduo4=";
|
||||
hash = "sha256-qN8ciVHzHH8GgR89GDgfvteMV+YawMUQLiXNwYyN+wU=";
|
||||
};
|
||||
"x86_64-linux" = fetchurl {
|
||||
url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-linux-x64.zip";
|
||||
hash = "sha256-RnKczYB/IkUYVBnRktCFhHsmvObQovVMfCilqJq3q1g=";
|
||||
hash = "sha256-zHitG4Ktt+iCKk9GrC3C4MRSWhUxh89kW9bUeHzqNJs=";
|
||||
};
|
||||
};
|
||||
updateScript = writeShellScript "update-bun" ''
|
||||
|
|
|
@ -1,280 +0,0 @@
|
|||
{ lib
|
||||
, alsa-lib
|
||||
, factorio-utils
|
||||
, fetchurl
|
||||
, libGL
|
||||
, libICE
|
||||
, libSM
|
||||
, libX11
|
||||
, libXcursor
|
||||
, libXext
|
||||
, libXi
|
||||
, libXinerama
|
||||
, libXrandr
|
||||
, libpulseaudio
|
||||
, libxkbcommon
|
||||
, makeDesktopItem
|
||||
, makeWrapper
|
||||
, releaseType
|
||||
, stdenv
|
||||
, wayland
|
||||
|
||||
, mods-dat ? null
|
||||
, versionsJson ? ./versions.json
|
||||
, username ? ""
|
||||
, token ? "" # get/reset token at https://factorio.com/profile
|
||||
, experimental ? false # true means to always use the latest branch
|
||||
, ...
|
||||
} @ args:
|
||||
|
||||
assert releaseType == "alpha"
|
||||
|| releaseType == "headless"
|
||||
|| releaseType == "demo"
|
||||
|| releaseType == "expansion";
|
||||
|
||||
let
|
||||
|
||||
inherit (lib) importJSON;
|
||||
|
||||
mods = args.mods or [ ];
|
||||
|
||||
helpMsg = ''
|
||||
|
||||
===FETCH FAILED===
|
||||
Please ensure you have set the username and token with config.nix, or
|
||||
/etc/nix/nixpkgs-config.nix if on NixOS.
|
||||
|
||||
Your token can be seen at https://factorio.com/profile (after logging in). It is
|
||||
not as sensitive as your password, but should still be safeguarded. There is a
|
||||
link on that page to revoke/invalidate the token, if you believe it has been
|
||||
leaked or wish to take precautions.
|
||||
|
||||
Example:
|
||||
{
|
||||
packageOverrides = pkgs: {
|
||||
factorio = pkgs.factorio.override {
|
||||
username = "FactorioPlayer1654";
|
||||
token = "d5ad5a8971267c895c0da598688761";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
Alternatively, instead of providing the username+token, you may manually
|
||||
download the release through https://factorio.com/download , then add it to
|
||||
the store using e.g.:
|
||||
|
||||
releaseType=alpha
|
||||
version=0.17.74
|
||||
nix-prefetch-url file://\''$HOME/Downloads/factorio_\''${releaseType}_x64_\''${version}.tar.xz --name factorio_\''${releaseType}_x64-\''${version}.tar.xz
|
||||
|
||||
Note the ultimate "_" is replaced with "-" in the --name arg!
|
||||
'';
|
||||
|
||||
desktopItem = makeDesktopItem {
|
||||
name = "factorio";
|
||||
desktopName = "Factorio";
|
||||
comment = "A game in which you build and maintain factories.";
|
||||
exec = "factorio";
|
||||
icon = "factorio";
|
||||
categories = [ "Game" ];
|
||||
};
|
||||
|
||||
branch = if experimental then "experimental" else "stable";
|
||||
|
||||
# NB `experimental` directs us to take the latest build, regardless of its branch;
|
||||
# hence the (stable, experimental) pairs may sometimes refer to the same distributable.
|
||||
versions = importJSON versionsJson;
|
||||
binDists = makeBinDists versions;
|
||||
|
||||
actual = binDists.${stdenv.hostPlatform.system}.${releaseType}.${branch} or (throw "Factorio ${releaseType}-${branch} binaries for ${stdenv.hostPlatform.system} are not available for download.");
|
||||
|
||||
makeBinDists = versions:
|
||||
let
|
||||
f = path: name: value:
|
||||
if builtins.isAttrs value then
|
||||
if value ? "name" then
|
||||
makeBinDist value
|
||||
else
|
||||
builtins.mapAttrs (f (path ++ [ name ])) value
|
||||
else
|
||||
throw "expected attrset at ${toString path} - got ${toString value}";
|
||||
in
|
||||
builtins.mapAttrs (f [ ]) versions;
|
||||
makeBinDist = { name, version, tarDirectory, url, sha256, needsAuth }: {
|
||||
inherit version tarDirectory;
|
||||
src =
|
||||
if !needsAuth then
|
||||
fetchurl { inherit name url sha256; }
|
||||
else
|
||||
(lib.overrideDerivation
|
||||
(fetchurl {
|
||||
inherit name url sha256;
|
||||
curlOptsList = [
|
||||
"--get"
|
||||
"--data-urlencode"
|
||||
"username@username"
|
||||
"--data-urlencode"
|
||||
"token@token"
|
||||
];
|
||||
})
|
||||
(_: {
|
||||
# This preHook hides the credentials from /proc
|
||||
preHook =
|
||||
if username != "" && token != "" then ''
|
||||
echo -n "${username}" >username
|
||||
echo -n "${token}" >token
|
||||
'' else ''
|
||||
# Deliberately failing since username/token was not provided, so we can't fetch.
|
||||
# We can't use builtins.throw since we want the result to be used if the tar is in the store already.
|
||||
exit 1
|
||||
'';
|
||||
failureHook = ''
|
||||
cat <<EOF
|
||||
${helpMsg}
|
||||
EOF
|
||||
'';
|
||||
}));
|
||||
};
|
||||
|
||||
configBaseCfg = ''
|
||||
use-system-read-write-data-directories=false
|
||||
[path]
|
||||
read-data=$out/share/factorio/data/
|
||||
[other]
|
||||
check_updates=false
|
||||
'';
|
||||
|
||||
updateConfigSh = ''
|
||||
#! $SHELL
|
||||
if [[ -e ~/.factorio/config.cfg ]]; then
|
||||
# Config file exists, but may have wrong path.
|
||||
# Try to edit it. I'm sure this is perfectly safe and will never go wrong.
|
||||
sed -i 's|^read-data=.*|read-data=$out/share/factorio/data/|' ~/.factorio/config.cfg
|
||||
else
|
||||
# Config file does not exist. Phew.
|
||||
install -D $out/share/factorio/config-base.cfg ~/.factorio/config.cfg
|
||||
fi
|
||||
'';
|
||||
|
||||
modDir = factorio-utils.mkModDirDrv mods mods-dat;
|
||||
|
||||
base = with actual; {
|
||||
pname = "factorio-${releaseType}";
|
||||
inherit version src;
|
||||
|
||||
preferLocalBuild = true;
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/{bin,share/factorio}
|
||||
cp -a data $out/share/factorio
|
||||
cp -a bin/${tarDirectory}/factorio $out/bin/factorio
|
||||
patchelf \
|
||||
--set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
|
||||
$out/bin/factorio
|
||||
'';
|
||||
|
||||
passthru.updateScript =
|
||||
if (username != "" && token != "") then [
|
||||
./update.py
|
||||
"--username=${username}"
|
||||
"--token=${token}"
|
||||
] else null;
|
||||
|
||||
meta = {
|
||||
description = "Game in which you build and maintain factories";
|
||||
longDescription = ''
|
||||
Factorio is a game in which you build and maintain factories.
|
||||
|
||||
You will be mining resources, researching technologies, building
|
||||
infrastructure, automating production and fighting enemies. Use your
|
||||
imagination to design your factory, combine simple elements into
|
||||
ingenious structures, apply management skills to keep it working and
|
||||
finally protect it from the creatures who don't really like you.
|
||||
|
||||
Factorio has been in development since spring of 2012, and reached
|
||||
version 1.0 in mid 2020.
|
||||
'';
|
||||
homepage = "https://www.factorio.com/";
|
||||
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
||||
license = lib.licenses.unfree;
|
||||
maintainers = with lib.maintainers; [ Baughn elitak priegger lukegb ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
mainProgram = "factorio";
|
||||
};
|
||||
};
|
||||
|
||||
releases = rec {
|
||||
headless = base;
|
||||
demo = base // {
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
buildInputs = [ libpulseaudio ];
|
||||
|
||||
libPath = lib.makeLibraryPath [
|
||||
alsa-lib
|
||||
libGL
|
||||
libICE
|
||||
libSM
|
||||
libX11
|
||||
libXcursor
|
||||
libXext
|
||||
libXi
|
||||
libXinerama
|
||||
libXrandr
|
||||
libpulseaudio
|
||||
libxkbcommon
|
||||
wayland
|
||||
];
|
||||
|
||||
installPhase = base.installPhase + ''
|
||||
wrapProgram $out/bin/factorio \
|
||||
--prefix LD_LIBRARY_PATH : /run/opengl-driver/lib:$libPath \
|
||||
--run "$out/share/factorio/update-config.sh" \
|
||||
--argv0 "" \
|
||||
--add-flags "-c \$HOME/.factorio/config.cfg" \
|
||||
${lib.optionalString (mods!=[]) "--add-flags --mod-directory=${modDir}"}
|
||||
|
||||
# TODO Currently, every time a mod is changed/added/removed using the
|
||||
# modlist, a new derivation will take up the entire footprint of the
|
||||
# client. The only way to avoid this is to remove the mods arg from the
|
||||
# package function. The modsDir derivation will have to be built
|
||||
# separately and have the user specify it in the .factorio config or
|
||||
# right along side it using a symlink into the store I think i will
|
||||
# just remove mods for the client derivation entirely. this is much
|
||||
# cleaner and more useful for headless mode.
|
||||
|
||||
# TODO: trying to toggle off a mod will result in read-only-fs-error.
|
||||
# not much we can do about that except warn the user somewhere. In
|
||||
# fact, no exit will be clean, since this error will happen on close
|
||||
# regardless. just prints an ugly stacktrace but seems to be otherwise
|
||||
# harmless, unless maybe the user forgets and tries to use the mod
|
||||
# manager.
|
||||
|
||||
install -m0644 <(cat << EOF
|
||||
${configBaseCfg}
|
||||
EOF
|
||||
) $out/share/factorio/config-base.cfg
|
||||
|
||||
install -m0755 <(cat << EOF
|
||||
${updateConfigSh}
|
||||
EOF
|
||||
) $out/share/factorio/update-config.sh
|
||||
|
||||
mkdir -p $out/share/icons/hicolor/{64x64,128x128}/apps
|
||||
cp -a data/core/graphics/factorio-icon.png $out/share/icons/hicolor/64x64/apps/factorio.png
|
||||
cp -a data/core/graphics/factorio-icon@2x.png $out/share/icons/hicolor/128x128/apps/factorio.png
|
||||
ln -s ${desktopItem}/share/applications $out/share/
|
||||
'';
|
||||
};
|
||||
alpha = demo // {
|
||||
|
||||
installPhase = demo.installPhase + ''
|
||||
cp -a doc-html $out/share/factorio
|
||||
'';
|
||||
};
|
||||
expansion = alpha;
|
||||
};
|
||||
|
||||
in
|
||||
stdenv.mkDerivation (releases.${releaseType})
|
|
@ -1,191 +0,0 @@
|
|||
#!/usr/bin/env nix-shell
|
||||
#! nix-shell -i python -p "python3.withPackages (ps: with ps; [ ps.absl-py ps.requests ])" nix
|
||||
|
||||
from collections import defaultdict
|
||||
import copy
|
||||
from dataclasses import dataclass
|
||||
import json
|
||||
import os.path
|
||||
import subprocess
|
||||
from typing import Callable, Dict
|
||||
|
||||
from absl import app
|
||||
from absl import flags
|
||||
from absl import logging
|
||||
import requests
|
||||
|
||||
|
||||
FACTORIO_API = "https://factorio.com/api/latest-releases"
|
||||
|
||||
|
||||
FLAGS = flags.FLAGS
|
||||
|
||||
flags.DEFINE_string('username', '', 'Factorio username for retrieving binaries.')
|
||||
flags.DEFINE_string('token', '', 'Factorio token for retrieving binaries.')
|
||||
flags.DEFINE_string('out', '', 'Output path for versions.json.')
|
||||
flags.DEFINE_list('release_type', '', 'If non-empty, a comma-separated list of release types to update (e.g. alpha).')
|
||||
flags.DEFINE_list('release_channel', '', 'If non-empty, a comma-separated list of release channels to update (e.g. experimental).')
|
||||
|
||||
|
||||
@dataclass
|
||||
class System:
|
||||
nix_name: str
|
||||
url_name: str
|
||||
tar_name: str
|
||||
|
||||
|
||||
@dataclass
|
||||
class ReleaseType:
|
||||
name: str
|
||||
needs_auth: bool = False
|
||||
|
||||
|
||||
@dataclass
|
||||
class ReleaseChannel:
|
||||
name: str
|
||||
|
||||
|
||||
FactorioVersionsJSON = Dict[str, Dict[str, str]]
|
||||
OurVersionJSON = Dict[str, Dict[str, Dict[str, Dict[str, str]]]]
|
||||
|
||||
|
||||
SYSTEMS = [
|
||||
System(nix_name="x86_64-linux", url_name="linux64", tar_name="x64"),
|
||||
]
|
||||
|
||||
RELEASE_TYPES = [
|
||||
ReleaseType("alpha", needs_auth=True),
|
||||
ReleaseType("expansion", needs_auth=True),
|
||||
ReleaseType("demo"),
|
||||
ReleaseType("headless"),
|
||||
]
|
||||
|
||||
RELEASE_CHANNELS = [
|
||||
ReleaseChannel("experimental"),
|
||||
ReleaseChannel("stable"),
|
||||
]
|
||||
|
||||
|
||||
def find_versions_json() -> str:
|
||||
if FLAGS.out:
|
||||
return FLAGS.out
|
||||
try_paths = ["pkgs/games/factorio/versions.json", "versions.json"]
|
||||
for path in try_paths:
|
||||
if os.path.exists(path):
|
||||
return path
|
||||
raise Exception("Couldn't figure out where to write versions.json; try specifying --out")
|
||||
|
||||
|
||||
def fetch_versions() -> FactorioVersionsJSON:
|
||||
return json.loads(requests.get("https://factorio.com/api/latest-releases").text)
|
||||
|
||||
|
||||
def generate_our_versions(factorio_versions: FactorioVersionsJSON) -> OurVersionJSON:
|
||||
rec_dd = lambda: defaultdict(rec_dd)
|
||||
output = rec_dd()
|
||||
|
||||
# Deal with times where there's no experimental version
|
||||
for rc in RELEASE_CHANNELS:
|
||||
if not factorio_versions[rc.name]:
|
||||
factorio_versions[rc.name] = factorio_versions['stable']
|
||||
|
||||
for system in SYSTEMS:
|
||||
for release_type in RELEASE_TYPES:
|
||||
for release_channel in RELEASE_CHANNELS:
|
||||
version = factorio_versions[release_channel.name].get(release_type.name)
|
||||
if version == None:
|
||||
continue
|
||||
this_release = {
|
||||
"name": f"factorio_{release_type.name}_{system.tar_name}-{version}.tar.xz",
|
||||
"url": f"https://factorio.com/get-download/{version}/{release_type.name}/{system.url_name}",
|
||||
"version": version,
|
||||
"needsAuth": release_type.needs_auth,
|
||||
"tarDirectory": system.tar_name,
|
||||
}
|
||||
output[system.nix_name][release_type.name][release_channel.name] = this_release
|
||||
return output
|
||||
|
||||
|
||||
def iter_version(versions: OurVersionJSON, it: Callable[[str, str, str, Dict[str, str]], Dict[str, str]]) -> OurVersionJSON:
|
||||
versions = copy.deepcopy(versions)
|
||||
for system_name, system in versions.items():
|
||||
for release_type_name, release_type in system.items():
|
||||
for release_channel_name, release in release_type.items():
|
||||
release_type[release_channel_name] = it(system_name, release_type_name, release_channel_name, dict(release))
|
||||
return versions
|
||||
|
||||
|
||||
def merge_versions(old: OurVersionJSON, new: OurVersionJSON) -> OurVersionJSON:
|
||||
"""Copies already-known hashes from version.json to avoid having to re-fetch."""
|
||||
def _merge_version(system_name: str, release_type_name: str, release_channel_name: str, release: Dict[str, str]) -> Dict[str, str]:
|
||||
old_system = old.get(system_name, {})
|
||||
old_release_type = old_system.get(release_type_name, {})
|
||||
old_release = old_release_type.get(release_channel_name, {})
|
||||
if FLAGS.release_type and release_type_name not in FLAGS.release_type:
|
||||
logging.info("%s/%s/%s: not in --release_type, not updating", system_name, release_type_name, release_channel_name)
|
||||
return old_release
|
||||
if FLAGS.release_channel and release_channel_name not in FLAGS.release_channel:
|
||||
logging.info("%s/%s/%s: not in --release_channel, not updating", system_name, release_type_name, release_channel_name)
|
||||
return old_release
|
||||
if not "sha256" in old_release:
|
||||
logging.info("%s/%s/%s: not copying sha256 since it's missing", system_name, release_type_name, release_channel_name)
|
||||
return release
|
||||
if not all(old_release.get(k, None) == release[k] for k in ['name', 'version', 'url']):
|
||||
logging.info("%s/%s/%s: not copying sha256 due to mismatch", system_name, release_type_name, release_channel_name)
|
||||
return release
|
||||
release["sha256"] = old_release["sha256"]
|
||||
return release
|
||||
return iter_version(new, _merge_version)
|
||||
|
||||
|
||||
def nix_prefetch_url(name: str, url: str, algo: str = 'sha256') -> str:
|
||||
cmd = ['nix-prefetch-url', '--type', algo, '--name', name, url]
|
||||
logging.info('running %s', cmd)
|
||||
out = subprocess.check_output(cmd)
|
||||
return out.decode('utf-8').strip()
|
||||
|
||||
|
||||
def fill_in_hash(versions: OurVersionJSON) -> OurVersionJSON:
|
||||
"""Fill in sha256 hashes for anything missing them."""
|
||||
urls_to_hash = {}
|
||||
def _fill_in_hash(system_name: str, release_type_name: str, release_channel_name: str, release: Dict[str, str]) -> Dict[str, str]:
|
||||
if "sha256" in release:
|
||||
logging.info("%s/%s/%s: skipping fetch, sha256 already present", system_name, release_type_name, release_channel_name)
|
||||
return release
|
||||
url = release["url"]
|
||||
if url in urls_to_hash:
|
||||
logging.info("%s/%s/%s: found url %s in cache", system_name, release_type_name, release_channel_name, url)
|
||||
release["sha256"] = urls_to_hash[url]
|
||||
return release
|
||||
logging.info("%s/%s/%s: fetching %s", system_name, release_type_name, release_channel_name, url)
|
||||
if release["needsAuth"]:
|
||||
if not FLAGS.username or not FLAGS.token:
|
||||
raise Exception("fetching %s/%s/%s from %s requires --username and --token" % (system_name, release_type_name, release_channel_name, url))
|
||||
url += f"?username={FLAGS.username}&token={FLAGS.token}"
|
||||
release["sha256"] = nix_prefetch_url(release["name"], url)
|
||||
urls_to_hash[url] = release["sha256"]
|
||||
return release
|
||||
return iter_version(versions, _fill_in_hash)
|
||||
|
||||
|
||||
def main(argv):
|
||||
factorio_versions = fetch_versions()
|
||||
new_our_versions = generate_our_versions(factorio_versions)
|
||||
old_our_versions = None
|
||||
our_versions_path = find_versions_json()
|
||||
if our_versions_path:
|
||||
logging.info('Loading old versions.json from %s', our_versions_path)
|
||||
with open(our_versions_path, 'r') as f:
|
||||
old_our_versions = json.load(f)
|
||||
if old_our_versions:
|
||||
logging.info('Merging in old hashes')
|
||||
new_our_versions = merge_versions(old_our_versions, new_our_versions)
|
||||
logging.info('Fetching necessary tars to get hashes')
|
||||
new_our_versions = fill_in_hash(new_our_versions)
|
||||
with open(our_versions_path, 'w') as f:
|
||||
logging.info('Writing versions.json to %s', our_versions_path)
|
||||
json.dump(new_our_versions, f, sort_keys=True, indent=2)
|
||||
f.write("\n")
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(main)
|
|
@ -1,68 +0,0 @@
|
|||
{
|
||||
"x86_64-linux": {
|
||||
"alpha": {
|
||||
"experimental": {
|
||||
"name": "factorio_alpha_x64-2.0.8.tar.xz",
|
||||
"needsAuth": true,
|
||||
"sha256": "11g1fgfm0lki9j2jsfmvlxzisbyx7482ia2qf7gnjcqhp6jkdsll",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/2.0.8/alpha/linux64",
|
||||
"version": "2.0.8"
|
||||
},
|
||||
"stable": {
|
||||
"name": "factorio_alpha_x64-2.0.8.tar.xz",
|
||||
"needsAuth": true,
|
||||
"sha256": "11g1fgfm0lki9j2jsfmvlxzisbyx7482ia2qf7gnjcqhp6jkdsll",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/2.0.8/alpha/linux64",
|
||||
"version": "2.0.8"
|
||||
}
|
||||
},
|
||||
"demo": {
|
||||
"experimental": {
|
||||
"name": "factorio_demo_x64-1.1.110.tar.xz",
|
||||
"needsAuth": false,
|
||||
"sha256": "0dasxgrybl00vrabgrlarsvg0hdg5rvn3y4hsljhqc4zpbf93nxx",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/1.1.110/demo/linux64",
|
||||
"version": "1.1.110"
|
||||
},
|
||||
"stable": {
|
||||
"name": "factorio_demo_x64-1.1.110.tar.xz",
|
||||
"needsAuth": false,
|
||||
"sha256": "0dasxgrybl00vrabgrlarsvg0hdg5rvn3y4hsljhqc4zpbf93nxx",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/1.1.110/demo/linux64",
|
||||
"version": "1.1.110"
|
||||
}
|
||||
},
|
||||
"expansion": {
|
||||
"stable": {
|
||||
"name": "factorio_expansion_x64-2.0.8.tar.xz",
|
||||
"needsAuth": true,
|
||||
"sha256": "0q3abb01ld1mlbp21lgzpa62j1gybs982yzan5j1axma9n1ax3j0",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/2.0.8/expansion/linux64",
|
||||
"version": "2.0.8"
|
||||
}
|
||||
},
|
||||
"headless": {
|
||||
"experimental": {
|
||||
"name": "factorio_headless_x64-2.0.8.tar.xz",
|
||||
"needsAuth": false,
|
||||
"sha256": "1jp1vlc4indicgy0xnrxq87h32wcv9s4g2hqbfb4ygiaam6lqnfr",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/2.0.8/headless/linux64",
|
||||
"version": "2.0.8"
|
||||
},
|
||||
"stable": {
|
||||
"name": "factorio_headless_x64-2.0.8.tar.xz",
|
||||
"needsAuth": false,
|
||||
"sha256": "1jp1vlc4indicgy0xnrxq87h32wcv9s4g2hqbfb4ygiaam6lqnfr",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/2.0.8/headless/linux64",
|
||||
"version": "2.0.8"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,15 +2,15 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "vmware-modules";
|
||||
version = "workstation-17.5.1-unstable-2024-01-12-${kernel.version}";
|
||||
version = "workstation-17.6.1-unstable-2024-10-12-${kernel.version}";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mkubecek";
|
||||
owner = "philipl";
|
||||
repo = "vmware-host-modules";
|
||||
# Developer no longer provides tags for kernel compatibility fixes
|
||||
# Commit hash for branch workstation-17.5.1 as of 2024-03-07
|
||||
rev = "2c6d66f3f1947384038b765c897b102ecdb18298";
|
||||
hash = "sha256-VKN6nxtgQqElVrSD5++UdngjZio4+vmetGCgTAfgtTs=";
|
||||
# Commit hash for branch workstation-17.6.1 as of 2024-10-15
|
||||
rev = "3a7595bddb2239c2149d7f730a4b57c8bb120d99";
|
||||
hash = "sha256-YqRnym5bOZ2ApMegOAeiUNyhsEsF5g1TVALtkUz/v6E=";
|
||||
};
|
||||
|
||||
hardeningDisable = [ "pic" ];
|
||||
|
|
|
@ -70,9 +70,9 @@
|
|||
]
|
||||
},
|
||||
"forms": {
|
||||
"hash": "sha256-JhLaTXll2kh/TaWXR1DfUCHuxaJlUMU1oY9ry9yoTTg=",
|
||||
"url": "https://github.com/nextcloud-releases/forms/releases/download/v4.3.1/forms-v4.3.1.tar.gz",
|
||||
"version": "4.3.1",
|
||||
"hash": "sha256-iU2bqojO+pvMvKDiw+ANMvsH71Ul+8yQ+uNvJfa1ngc=",
|
||||
"url": "https://github.com/nextcloud-releases/forms/releases/download/v4.3.2/forms-v4.3.2.tar.gz",
|
||||
"version": "4.3.2",
|
||||
"description": "**Simple surveys and questionnaires, self-hosted!**\n\n- **📝 Simple design:** No mass of options, only the essentials. Works well on mobile of course.\n- **📊 View & export results:** Results are visualized and can also be exported as CSV in the same format used by Google Forms.\n- **🔒 Data under your control!** Unlike in Google Forms, Typeform, Doodle and others, the survey info and responses are kept private on your instance.\n- **🧑💻 Connect to your software:** Easily integrate Forms into your service with our full-fledged [REST-API](https://github.com/nextcloud/forms/blob/main/docs/API.md).\n- **🙋 Get involved!** We have lots of stuff planned like more question types, collaboration on forms, [and much more](https://github.com/nextcloud/forms/milestones)!",
|
||||
"homepage": "https://github.com/nextcloud/forms",
|
||||
"licenses": [
|
||||
|
@ -90,9 +90,9 @@
|
|||
]
|
||||
},
|
||||
"groupfolders": {
|
||||
"hash": "sha256-PaDPYHUzkqY24Hzpi4e3DkvT32f+WYmx7WUNRevqIh8=",
|
||||
"url": "https://github.com/nextcloud-releases/groupfolders/releases/download/v16.0.10/groupfolders-v16.0.10.tar.gz",
|
||||
"version": "16.0.10",
|
||||
"hash": "sha256-Plgmnp3fIzvHVcy8+wEmjNHegHqBeUtcbsRA/PHEAlc=",
|
||||
"url": "https://github.com/nextcloud-releases/groupfolders/releases/download/v16.0.11/groupfolders-v16.0.11.tar.gz",
|
||||
"version": "16.0.11",
|
||||
"description": "Admin configured folders shared with everyone in a group.\n\nFolders can be configured from *Group folders* in the admin settings.\n\nAfter a folder is created, the admin can give access to the folder to one or more groups, control their write/sharing permissions and assign a quota for the folder.",
|
||||
"homepage": "https://github.com/nextcloud/groupfolders",
|
||||
"licenses": [
|
||||
|
@ -130,9 +130,9 @@
|
|||
]
|
||||
},
|
||||
"mail": {
|
||||
"hash": "sha256-8xQglDlOudopTsEqvnlsOTwOU6eAt6argVSXDxJdWUA=",
|
||||
"url": "https://github.com/nextcloud-releases/mail/releases/download/v3.7.8/mail-v3.7.8.tar.gz",
|
||||
"version": "3.7.8",
|
||||
"hash": "sha256-Y591RR3m4k8G0+sNU+hRN013LikCFJ/41SbrILEfp8A=",
|
||||
"url": "https://github.com/nextcloud-releases/mail/releases/download/v3.7.9/mail-v3.7.9.tar.gz",
|
||||
"version": "3.7.9",
|
||||
"description": "**💌 A mail app for Nextcloud**\n\n- **🚀 Integration with other Nextcloud apps!** Currently Contacts, Calendar & Files – more to come.\n- **📥 Multiple mail accounts!** Personal and company account? No problem, and a nice unified inbox. Connect any IMAP account.\n- **🔒 Send & receive encrypted mails!** Using the great [Mailvelope](https://mailvelope.com) browser extension.\n- **🙈 We’re not reinventing the wheel!** Based on the great [Horde](https://horde.org) libraries.\n- **📬 Want to host your own mail server?** We do not have to reimplement this as you could set up [Mail-in-a-Box](https://mailinabox.email)!\n\n## Ethical AI Rating\n\n### Priority Inbox\n\nPositive:\n* The software for training and inferencing of this model is open source.\n* The model is created and trained on-premises based on the user's own data.\n* The training data is accessible to the user, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Thread Summaries (opt-in)\n\n**Rating:** 🟢/🟡/🟠/🔴\n\nThe rating depends on the installed text processing backend. See [the rating overview](https://docs.nextcloud.com/server/latest/admin_manual/ai/index.html) for details.\n\nLearn more about the Nextcloud Ethical AI Rating [in our blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).",
|
||||
"homepage": "https://github.com/nextcloud/mail#readme",
|
||||
"licenses": [
|
||||
|
@ -250,9 +250,9 @@
|
|||
]
|
||||
},
|
||||
"richdocuments": {
|
||||
"hash": "sha256-nk5l9naHHBmpZe0oNzRNuYchbOl2asPgoRaM1vQ3CLc=",
|
||||
"url": "https://github.com/nextcloud-releases/richdocuments/releases/download/v8.3.11/richdocuments-v8.3.11.tar.gz",
|
||||
"version": "8.3.11",
|
||||
"hash": "sha256-MD6zuKfGdDeItmgO9NxJogUCgVS/8b5w/TZh9mPTQno=",
|
||||
"url": "https://github.com/nextcloud-releases/richdocuments/releases/download/v8.3.12/richdocuments-v8.3.12.tar.gz",
|
||||
"version": "8.3.12",
|
||||
"description": "This application can connect to a Collabora Online (or other) server (WOPI-like Client). Nextcloud is the WOPI Host. Please read the documentation to learn more about that.\n\nYou can also edit your documents off-line with the Collabora Office app from the **[Android](https://play.google.com/store/apps/details?id=com.collabora.libreoffice)** and **[iOS](https://apps.apple.com/us/app/collabora-office/id1440482071)** store.",
|
||||
"homepage": "https://collaboraoffice.com/",
|
||||
"licenses": [
|
||||
|
@ -320,9 +320,9 @@
|
|||
]
|
||||
},
|
||||
"user_oidc": {
|
||||
"hash": "sha256-8e4xQjOWSVAps6dg4jvN3MGVSOhaOgjPHPpTOgXKFJY=",
|
||||
"url": "https://github.com/nextcloud-releases/user_oidc/releases/download/v6.0.1/user_oidc-v6.0.1.tar.gz",
|
||||
"version": "6.0.1",
|
||||
"hash": "sha256-tF68YonuCQ90XuZvZnS7NmJApk3P2741XhFjnyb7TSQ=",
|
||||
"url": "https://github.com/nextcloud-releases/user_oidc/releases/download/v6.1.0/user_oidc-v6.1.0.tar.gz",
|
||||
"version": "6.1.0",
|
||||
"description": "Allows flexible configuration of an OIDC server as Nextcloud login user backend.",
|
||||
"homepage": "https://github.com/nextcloud/user_oidc",
|
||||
"licenses": [
|
||||
|
@ -338,5 +338,15 @@
|
|||
"licenses": [
|
||||
"agpl"
|
||||
]
|
||||
},
|
||||
"whiteboard": {
|
||||
"hash": "sha256-3Q0B4nAVoerolDlBmjp0KwTWXLzETPrrZxnmfSDF5Gk=",
|
||||
"url": "https://github.com/nextcloud-releases/whiteboard/releases/download/v1.0.4/whiteboard-v1.0.4.tar.gz",
|
||||
"version": "1.0.4",
|
||||
"description": "The official whiteboard app for Nextcloud. It allows users to create and share whiteboards with other users and collaborate in real-time.\n\n**Whiteboard requires a separate collaboration server to work.** Please see the [documentation](https://github.com/nextcloud/whiteboard?tab=readme-ov-file#backend) on how to install it.\n\n- 🎨 Drawing shapes, writing text, connecting elements\n- 📝 Real-time collaboration\n- 🖼️ Add images with drag and drop\n- 📊 Easily add mermaid diagrams\n- ✨ Use the Smart Picker to embed other elements from Nextcloud\n- 📦 Image export\n- 💪 Strong foundation: We use Excalidraw as our base library",
|
||||
"homepage": "https://github.com/nextcloud/whiteboard",
|
||||
"licenses": [
|
||||
"agpl"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -70,9 +70,9 @@
|
|||
]
|
||||
},
|
||||
"forms": {
|
||||
"hash": "sha256-JhLaTXll2kh/TaWXR1DfUCHuxaJlUMU1oY9ry9yoTTg=",
|
||||
"url": "https://github.com/nextcloud-releases/forms/releases/download/v4.3.1/forms-v4.3.1.tar.gz",
|
||||
"version": "4.3.1",
|
||||
"hash": "sha256-iU2bqojO+pvMvKDiw+ANMvsH71Ul+8yQ+uNvJfa1ngc=",
|
||||
"url": "https://github.com/nextcloud-releases/forms/releases/download/v4.3.2/forms-v4.3.2.tar.gz",
|
||||
"version": "4.3.2",
|
||||
"description": "**Simple surveys and questionnaires, self-hosted!**\n\n- **📝 Simple design:** No mass of options, only the essentials. Works well on mobile of course.\n- **📊 View & export results:** Results are visualized and can also be exported as CSV in the same format used by Google Forms.\n- **🔒 Data under your control!** Unlike in Google Forms, Typeform, Doodle and others, the survey info and responses are kept private on your instance.\n- **🧑💻 Connect to your software:** Easily integrate Forms into your service with our full-fledged [REST-API](https://github.com/nextcloud/forms/blob/main/docs/API.md).\n- **🙋 Get involved!** We have lots of stuff planned like more question types, collaboration on forms, [and much more](https://github.com/nextcloud/forms/milestones)!",
|
||||
"homepage": "https://github.com/nextcloud/forms",
|
||||
"licenses": [
|
||||
|
@ -90,9 +90,9 @@
|
|||
]
|
||||
},
|
||||
"groupfolders": {
|
||||
"hash": "sha256-3CG5lp1lcPzcvOjcQIFcP8OVZvWCq3iNf4OUCu3X7t8=",
|
||||
"url": "https://github.com/nextcloud-releases/groupfolders/releases/download/v17.0.4/groupfolders-v17.0.4.tar.gz",
|
||||
"version": "17.0.4",
|
||||
"hash": "sha256-/pREdGW7kM2imVx6Jk5iZ9odQpk/93AwkFECVPJhyuI=",
|
||||
"url": "https://github.com/nextcloud-releases/groupfolders/releases/download/v17.0.5/groupfolders-v17.0.5.tar.gz",
|
||||
"version": "17.0.5",
|
||||
"description": "Admin configured folders shared with everyone in a group.\n\nFolders can be configured from *Group folders* in the admin settings.\n\nAfter a folder is created, the admin can give access to the folder to one or more groups, control their write/sharing permissions and assign a quota for the folder.",
|
||||
"homepage": "https://github.com/nextcloud/groupfolders",
|
||||
"licenses": [
|
||||
|
@ -130,9 +130,9 @@
|
|||
]
|
||||
},
|
||||
"mail": {
|
||||
"hash": "sha256-8xQglDlOudopTsEqvnlsOTwOU6eAt6argVSXDxJdWUA=",
|
||||
"url": "https://github.com/nextcloud-releases/mail/releases/download/v3.7.8/mail-v3.7.8.tar.gz",
|
||||
"version": "3.7.8",
|
||||
"hash": "sha256-Y591RR3m4k8G0+sNU+hRN013LikCFJ/41SbrILEfp8A=",
|
||||
"url": "https://github.com/nextcloud-releases/mail/releases/download/v3.7.9/mail-v3.7.9.tar.gz",
|
||||
"version": "3.7.9",
|
||||
"description": "**💌 A mail app for Nextcloud**\n\n- **🚀 Integration with other Nextcloud apps!** Currently Contacts, Calendar & Files – more to come.\n- **📥 Multiple mail accounts!** Personal and company account? No problem, and a nice unified inbox. Connect any IMAP account.\n- **🔒 Send & receive encrypted mails!** Using the great [Mailvelope](https://mailvelope.com) browser extension.\n- **🙈 We’re not reinventing the wheel!** Based on the great [Horde](https://horde.org) libraries.\n- **📬 Want to host your own mail server?** We do not have to reimplement this as you could set up [Mail-in-a-Box](https://mailinabox.email)!\n\n## Ethical AI Rating\n\n### Priority Inbox\n\nPositive:\n* The software for training and inferencing of this model is open source.\n* The model is created and trained on-premises based on the user's own data.\n* The training data is accessible to the user, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Thread Summaries (opt-in)\n\n**Rating:** 🟢/🟡/🟠/🔴\n\nThe rating depends on the installed text processing backend. See [the rating overview](https://docs.nextcloud.com/server/latest/admin_manual/ai/index.html) for details.\n\nLearn more about the Nextcloud Ethical AI Rating [in our blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).",
|
||||
"homepage": "https://github.com/nextcloud/mail#readme",
|
||||
"licenses": [
|
||||
|
@ -140,8 +140,8 @@
|
|||
]
|
||||
},
|
||||
"maps": {
|
||||
"hash": "sha256-BmXs6Oepwnm+Cviy4awm3S8P9AiJTt1BnAQNb4TxVYE=",
|
||||
"url": "https://github.com/nextcloud/maps/releases/download/v1.4.0/maps-1.4.0.tar.gz",
|
||||
"hash": "sha256-FmRhpPRpMnCHkJFaVvQuR6Y7Pd7vpP+tUVih919g/fQ=",
|
||||
"url": "https://github.com/nextcloud/maps/releases/download/v1.4.0-1-nightly/maps-1.4.0-1-nightly.tar.gz",
|
||||
"version": "1.4.0",
|
||||
"description": "**The whole world fits inside your cloud!**\n\n- **🗺 Beautiful map:** Using [OpenStreetMap](https://www.openstreetmap.org) and [Leaflet](https://leafletjs.com), you can choose between standard map, satellite, topographical, dark mode or even watercolor! 🎨\n- **⭐ Favorites:** Save your favorite places, privately! Sync with [GNOME Maps](https://github.com/nextcloud/maps/issues/30) and mobile apps is planned.\n- **🧭 Routing:** Possible using either [OSRM](http://project-osrm.org), [GraphHopper](https://www.graphhopper.com) or [Mapbox](https://www.mapbox.com).\n- **🖼 Photos on the map:** No more boring slideshows, just show directly where you were!\n- **🙋 Contacts on the map:** See where your friends live and plan your next visit.\n- **📱 Devices:** Lost your phone? Check the map!\n- **〰 Tracks:** Load GPS tracks or past trips. Recording with [PhoneTrack](https://f-droid.org/en/packages/net.eneiluj.nextcloud.phonetrack/) or [OwnTracks](https://owntracks.org) is planned.",
|
||||
"homepage": "https://github.com/nextcloud/maps",
|
||||
|
@ -250,9 +250,9 @@
|
|||
]
|
||||
},
|
||||
"richdocuments": {
|
||||
"hash": "sha256-fcKzfo8tyYiZTwqMnR6vP+dTwTYt1UfBZG8ortPDCNg=",
|
||||
"url": "https://github.com/nextcloud-releases/richdocuments/releases/download/v8.4.7/richdocuments-v8.4.7.tar.gz",
|
||||
"version": "8.4.7",
|
||||
"hash": "sha256-oRk06JoOvHUD4D7htl/B+CyCz9ybSIAZCELxV3v4uCU=",
|
||||
"url": "https://github.com/nextcloud-releases/richdocuments/releases/download/v8.4.8/richdocuments-v8.4.8.tar.gz",
|
||||
"version": "8.4.8",
|
||||
"description": "This application can connect to a Collabora Online (or other) server (WOPI-like Client). Nextcloud is the WOPI Host. Please read the documentation to learn more about that.\n\nYou can also edit your documents off-line with the Collabora Office app from the **[Android](https://play.google.com/store/apps/details?id=com.collabora.libreoffice)** and **[iOS](https://apps.apple.com/us/app/collabora-office/id1440482071)** store.",
|
||||
"homepage": "https://collaboraoffice.com/",
|
||||
"licenses": [
|
||||
|
@ -320,9 +320,9 @@
|
|||
]
|
||||
},
|
||||
"user_oidc": {
|
||||
"hash": "sha256-8e4xQjOWSVAps6dg4jvN3MGVSOhaOgjPHPpTOgXKFJY=",
|
||||
"url": "https://github.com/nextcloud-releases/user_oidc/releases/download/v6.0.1/user_oidc-v6.0.1.tar.gz",
|
||||
"version": "6.0.1",
|
||||
"hash": "sha256-tF68YonuCQ90XuZvZnS7NmJApk3P2741XhFjnyb7TSQ=",
|
||||
"url": "https://github.com/nextcloud-releases/user_oidc/releases/download/v6.1.0/user_oidc-v6.1.0.tar.gz",
|
||||
"version": "6.1.0",
|
||||
"description": "Allows flexible configuration of an OIDC server as Nextcloud login user backend.",
|
||||
"homepage": "https://github.com/nextcloud/user_oidc",
|
||||
"licenses": [
|
||||
|
@ -338,5 +338,15 @@
|
|||
"licenses": [
|
||||
"agpl"
|
||||
]
|
||||
},
|
||||
"whiteboard": {
|
||||
"hash": "sha256-3Q0B4nAVoerolDlBmjp0KwTWXLzETPrrZxnmfSDF5Gk=",
|
||||
"url": "https://github.com/nextcloud-releases/whiteboard/releases/download/v1.0.4/whiteboard-v1.0.4.tar.gz",
|
||||
"version": "1.0.4",
|
||||
"description": "The official whiteboard app for Nextcloud. It allows users to create and share whiteboards with other users and collaborate in real-time.\n\n**Whiteboard requires a separate collaboration server to work.** Please see the [documentation](https://github.com/nextcloud/whiteboard?tab=readme-ov-file#backend) on how to install it.\n\n- 🎨 Drawing shapes, writing text, connecting elements\n- 📝 Real-time collaboration\n- 🖼️ Add images with drag and drop\n- 📊 Easily add mermaid diagrams\n- ✨ Use the Smart Picker to embed other elements from Nextcloud\n- 📦 Image export\n- 💪 Strong foundation: We use Excalidraw as our base library",
|
||||
"homepage": "https://github.com/nextcloud/whiteboard",
|
||||
"licenses": [
|
||||
"agpl"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,9 +10,9 @@
|
|||
]
|
||||
},
|
||||
"calendar": {
|
||||
"hash": "sha256-mlxW7ALSUr3t7fd4H/TDWASzsSlPKojOLh76v8wd1w0=",
|
||||
"url": "https://github.com/nextcloud-releases/calendar/releases/download/v5.0.0/calendar-v5.0.0.tar.gz",
|
||||
"version": "5.0.0",
|
||||
"hash": "sha256-v9qjcyc2UBZK7QeO1XBZu11coPI92PRZcTipzBEMm3c=",
|
||||
"url": "https://github.com/nextcloud-releases/calendar/releases/download/v5.0.1/calendar-v5.0.1.tar.gz",
|
||||
"version": "5.0.1",
|
||||
"description": "The Calendar app is a user interface for Nextcloud's CalDAV server. Easily sync events from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Contacts - more to come.\n* 🌐 **WebCal Support!** Want to see your favorite team’s matchdays in your calendar? No problem!\n* 🙋 **Attendees!** Invite people to your events\n* ⌚️ **Free/Busy!** See when your attendees are available to meet\n* ⏰ **Reminders!** Get alarms for events inside your browser and via email\n* 🔍 Search! Find your events at ease\n* ☑️ Tasks! See tasks with a due date directly in the calendar\n* 🙈 **We’re not reinventing the wheel!** Based on the great [c-dav library](https://github.com/nextcloud/cdav-library), [ical.js](https://github.com/mozilla-comm/ical.js) and [fullcalendar](https://github.com/fullcalendar/fullcalendar) libraries.",
|
||||
"homepage": "https://github.com/nextcloud/calendar/",
|
||||
"licenses": [
|
||||
|
@ -70,9 +70,9 @@
|
|||
]
|
||||
},
|
||||
"forms": {
|
||||
"hash": "sha256-JhLaTXll2kh/TaWXR1DfUCHuxaJlUMU1oY9ry9yoTTg=",
|
||||
"url": "https://github.com/nextcloud-releases/forms/releases/download/v4.3.1/forms-v4.3.1.tar.gz",
|
||||
"version": "4.3.1",
|
||||
"hash": "sha256-iU2bqojO+pvMvKDiw+ANMvsH71Ul+8yQ+uNvJfa1ngc=",
|
||||
"url": "https://github.com/nextcloud-releases/forms/releases/download/v4.3.2/forms-v4.3.2.tar.gz",
|
||||
"version": "4.3.2",
|
||||
"description": "**Simple surveys and questionnaires, self-hosted!**\n\n- **📝 Simple design:** No mass of options, only the essentials. Works well on mobile of course.\n- **📊 View & export results:** Results are visualized and can also be exported as CSV in the same format used by Google Forms.\n- **🔒 Data under your control!** Unlike in Google Forms, Typeform, Doodle and others, the survey info and responses are kept private on your instance.\n- **🧑💻 Connect to your software:** Easily integrate Forms into your service with our full-fledged [REST-API](https://github.com/nextcloud/forms/blob/main/docs/API.md).\n- **🙋 Get involved!** We have lots of stuff planned like more question types, collaboration on forms, [and much more](https://github.com/nextcloud/forms/milestones)!",
|
||||
"homepage": "https://github.com/nextcloud/forms",
|
||||
"licenses": [
|
||||
|
@ -90,9 +90,9 @@
|
|||
]
|
||||
},
|
||||
"groupfolders": {
|
||||
"hash": "sha256-jSDp8+s0bqYHMZ95UaiAMkMQdYL7tmdbde5mLG6gLOk=",
|
||||
"url": "https://github.com/nextcloud-releases/groupfolders/releases/download/v18.0.2/groupfolders-v18.0.2.tar.gz",
|
||||
"version": "18.0.2",
|
||||
"hash": "sha256-IrxzWjxqsA6prPn/gKj9MAw0R/1Qi3kHsddNU5E9sVk=",
|
||||
"url": "https://github.com/nextcloud-releases/groupfolders/releases/download/v18.0.3/groupfolders-v18.0.3.tar.gz",
|
||||
"version": "18.0.3",
|
||||
"description": "Admin configured folders shared with everyone in a group.\n\nFolders can be configured from *Group folders* in the admin settings.\n\nAfter a folder is created, the admin can give access to the folder to one or more groups, control their write/sharing permissions and assign a quota for the folder.",
|
||||
"homepage": "https://github.com/nextcloud/groupfolders",
|
||||
"licenses": [
|
||||
|
@ -130,9 +130,9 @@
|
|||
]
|
||||
},
|
||||
"mail": {
|
||||
"hash": "sha256-u0h9zCT/l9cUUFppKazx4oLkHYzlgGcb0OBOy1CXOG8=",
|
||||
"url": "https://github.com/nextcloud-releases/mail/releases/download/v4.0.1/mail-v4.0.1.tar.gz",
|
||||
"version": "4.0.1",
|
||||
"hash": "sha256-iCK+B/BP4fCzaELNxL/A9OJ6Y34gZl9KIgh7lmSgtSA=",
|
||||
"url": "https://github.com/nextcloud-releases/mail/releases/download/v4.0.2/mail-v4.0.2.tar.gz",
|
||||
"version": "4.0.2",
|
||||
"description": "**💌 A mail app for Nextcloud**\n\n- **🚀 Integration with other Nextcloud apps!** Currently Contacts, Calendar & Files – more to come.\n- **📥 Multiple mail accounts!** Personal and company account? No problem, and a nice unified inbox. Connect any IMAP account.\n- **🔒 Send & receive encrypted mails!** Using the great [Mailvelope](https://mailvelope.com) browser extension.\n- **🙈 We’re not reinventing the wheel!** Based on the great [Horde](https://horde.org) libraries.\n- **📬 Want to host your own mail server?** We do not have to reimplement this as you could set up [Mail-in-a-Box](https://mailinabox.email)!\n\n## Ethical AI Rating\n\n### Priority Inbox\n\nPositive:\n* The software for training and inferencing of this model is open source.\n* The model is created and trained on-premises based on the user's own data.\n* The training data is accessible to the user, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Thread Summaries (opt-in)\n\n**Rating:** 🟢/🟡/🟠/🔴\n\nThe rating depends on the installed text processing backend. See [the rating overview](https://docs.nextcloud.com/server/latest/admin_manual/ai/index.html) for details.\n\nLearn more about the Nextcloud Ethical AI Rating [in our blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).",
|
||||
"homepage": "https://github.com/nextcloud/mail#readme",
|
||||
"licenses": [
|
||||
|
@ -240,9 +240,9 @@
|
|||
]
|
||||
},
|
||||
"richdocuments": {
|
||||
"hash": "sha256-sM536BlvbNNrGL++ZQItvnOBk+85Hr1Sxr6/0SZTm+g=",
|
||||
"url": "https://github.com/nextcloud-releases/richdocuments/releases/download/v8.5.1/richdocuments-v8.5.1.tar.gz",
|
||||
"version": "8.5.1",
|
||||
"hash": "sha256-7sdMClIyQxeCToP40mKDzD4kY/wjSe8WyNl2dlis1a8=",
|
||||
"url": "https://github.com/nextcloud-releases/richdocuments/releases/download/v8.5.2/richdocuments-v8.5.2.tar.gz",
|
||||
"version": "8.5.2",
|
||||
"description": "This application can connect to a Collabora Online (or other) server (WOPI-like Client). Nextcloud is the WOPI Host. Please read the documentation to learn more about that.\n\nYou can also edit your documents off-line with the Collabora Office app from the **[Android](https://play.google.com/store/apps/details?id=com.collabora.libreoffice)** and **[iOS](https://apps.apple.com/us/app/collabora-office/id1440482071)** store.",
|
||||
"homepage": "https://collaboraoffice.com/",
|
||||
"licenses": [
|
||||
|
@ -290,9 +290,9 @@
|
|||
]
|
||||
},
|
||||
"user_oidc": {
|
||||
"hash": "sha256-8e4xQjOWSVAps6dg4jvN3MGVSOhaOgjPHPpTOgXKFJY=",
|
||||
"url": "https://github.com/nextcloud-releases/user_oidc/releases/download/v6.0.1/user_oidc-v6.0.1.tar.gz",
|
||||
"version": "6.0.1",
|
||||
"hash": "sha256-tF68YonuCQ90XuZvZnS7NmJApk3P2741XhFjnyb7TSQ=",
|
||||
"url": "https://github.com/nextcloud-releases/user_oidc/releases/download/v6.1.0/user_oidc-v6.1.0.tar.gz",
|
||||
"version": "6.1.0",
|
||||
"description": "Allows flexible configuration of an OIDC server as Nextcloud login user backend.",
|
||||
"homepage": "https://github.com/nextcloud/user_oidc",
|
||||
"licenses": [
|
||||
|
@ -308,5 +308,15 @@
|
|||
"licenses": [
|
||||
"agpl"
|
||||
]
|
||||
},
|
||||
"whiteboard": {
|
||||
"hash": "sha256-3Q0B4nAVoerolDlBmjp0KwTWXLzETPrrZxnmfSDF5Gk=",
|
||||
"url": "https://github.com/nextcloud-releases/whiteboard/releases/download/v1.0.4/whiteboard-v1.0.4.tar.gz",
|
||||
"version": "1.0.4",
|
||||
"description": "The official whiteboard app for Nextcloud. It allows users to create and share whiteboards with other users and collaborate in real-time.\n\n**Whiteboard requires a separate collaboration server to work.** Please see the [documentation](https://github.com/nextcloud/whiteboard?tab=readme-ov-file#backend) on how to install it.\n\n- 🎨 Drawing shapes, writing text, connecting elements\n- 📝 Real-time collaboration\n- 🖼️ Add images with drag and drop\n- 📊 Easily add mermaid diagrams\n- ✨ Use the Smart Picker to embed other elements from Nextcloud\n- 📦 Image export\n- 💪 Strong foundation: We use Excalidraw as our base library",
|
||||
"homepage": "https://github.com/nextcloud/whiteboard",
|
||||
"licenses": [
|
||||
"agpl"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,4 +37,5 @@
|
|||
, "unsplash": "agpl3Only"
|
||||
, "user_oidc": "agpl3Plus"
|
||||
, "user_saml": "agpl3Plus"
|
||||
, "whiteboard": "agpl3Plus"
|
||||
}
|
||||
|
|
|
@ -10,4 +10,5 @@ lib.makeScope newScope (self: with self; {
|
|||
units = callPackage ./units.nix { inherit IOKit Foundation; };
|
||||
highlight = callPackage ./highlight.nix { inherit IOKit Foundation; };
|
||||
dbus = callPackage ./dbus.nix { inherit dbus; nushell_plugin_dbus = self.dbus; };
|
||||
skim = callPackage ./skim.nix { inherit IOKit CoreFoundation; };
|
||||
})
|
||||
|
|
55
pkgs/shells/nushell/plugins/skim.nix
Normal file
55
pkgs/shells/nushell/plugins/skim.nix
Normal file
|
@ -0,0 +1,55 @@
|
|||
{
|
||||
stdenv,
|
||||
runCommand,
|
||||
lib,
|
||||
rustPlatform,
|
||||
nix-update-script,
|
||||
fetchFromGitHub,
|
||||
IOKit,
|
||||
CoreFoundation,
|
||||
nushell,
|
||||
skim,
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "nu_plugin_skim";
|
||||
version = "0.8.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "idanarye";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-3q2qt35lZ07N8E3p4/BoYX1H4B8qcKXJWnZhdJhgpJE=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-+RYrQsB8LVjxZsQ7dVDK6GT6nXSM4b+qpILOe0Q2SjA=";
|
||||
|
||||
nativeBuildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ rustPlatform.bindgenHook ];
|
||||
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
IOKit
|
||||
CoreFoundation
|
||||
];
|
||||
|
||||
passthru = {
|
||||
updateScript = nix-update-script { };
|
||||
tests.check =
|
||||
let
|
||||
nu = lib.getExe nushell;
|
||||
plugin = lib.getExe skim;
|
||||
in
|
||||
runCommand "${pname}-test" { } ''
|
||||
touch $out
|
||||
${nu} -n -c "plugin add --plugin-config $out ${plugin}"
|
||||
${nu} -n -c "plugin use --plugin-config $out skim"
|
||||
'';
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "A nushell plugin that adds integrates the skim fuzzy finder";
|
||||
mainProgram = "nu_plugin_skim";
|
||||
homepage = "https://github.com/idanarye/nu_plugin_skim";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ aftix ];
|
||||
platforms = with platforms; all;
|
||||
};
|
||||
}
|
|
@ -18,13 +18,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "pgbackrest";
|
||||
version = "2.53.1";
|
||||
version = "2.54.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pgbackrest";
|
||||
repo = "pgbackrest";
|
||||
rev = "release/${version}";
|
||||
sha256 = "sha256-gCjPwDV7jlUwWUhuXHKqL/kigsu3V0ikxhcB3EIBvU0=";
|
||||
sha256 = "sha256-EYpzVrEM0GrCJcGnFT4XfN6pULqsSMyH02b0zGInH7U=";
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
|
|
|
@ -28,18 +28,18 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "stratisd";
|
||||
version = "3.7.2";
|
||||
version = "3.7.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "stratis-storage";
|
||||
repo = pname;
|
||||
rev = "refs/tags/stratisd-v${version}";
|
||||
hash = "sha256-pxLf/YLd7vdAjGRQDvJvwhJXpMUiI3dge5Y5x895SPA=";
|
||||
hash = "sha256-W8ssLTFU36t6iLrt9S9V8qcN7EP4IsL7VbhNPLpftio=";
|
||||
};
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoTarball {
|
||||
inherit src;
|
||||
hash = "sha256-btSj69yBbnbK+jdWdMi3rQGKMOLWcwY5Zn3hmEWk/Hs=";
|
||||
hash = "sha256-Qv2qknWNx2OQeucUFwL1veu3MSF+fd19jFfHCCVGprM=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
|
|
@ -5,15 +5,15 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "askalono";
|
||||
version = "0.4.6";
|
||||
version = "0.5.0";
|
||||
|
||||
src = fetchCrate {
|
||||
pname = "askalono-cli";
|
||||
inherit version;
|
||||
hash = "sha256-7l5bHSsmuMoHbbOI3TAYFeHwD3Y62JvfrrXZa08V3+U=";
|
||||
hash = "sha256-LwyUaU4m9fk+mG8FBfkbj9nBvd8KokwlV7cE7EBwk0Q=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-OkN8V37GApJvremRJlWG3HSpWgMC17Ge8JMTiQVoc/g=";
|
||||
cargoHash = "sha256-7yFdoXK9Nyg1uT0mtiXs6evOu1U1quxL7iMMMyxqxqk=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "Tool to detect open source licenses from texts";
|
||||
|
|
|
@ -9,16 +9,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "saml2aws";
|
||||
version = "2.36.17";
|
||||
version = "2.36.18";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Versent";
|
||||
repo = "saml2aws";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-2bt/AUcXwXf1TxPesfXSyoiBeLHx+LGgDk4xbXEAcaY=";
|
||||
sha256 = "sha256-sj+6EnpPPsl/MWMxan6dXIqJO8NePcwnVFrTCcM1SbQ=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-gtl8T8wXnpLgDZc6qSgFKpA+XbcLNHf20ieBkyNdE+s=";
|
||||
vendorHash = "sha256-mi2Jqiy1T1fcuasrIXPkhu8VTmq78WFOK/d3i7CXkhw=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ AppKit ];
|
||||
|
|
|
@ -448,6 +448,10 @@ with pkgs;
|
|||
|
||||
circt = callPackage ../development/compilers/circt { };
|
||||
|
||||
clang-uml = callPackage ../by-name/cl/clang-uml/package.nix {
|
||||
stdenv = clangStdenv;
|
||||
};
|
||||
|
||||
classicube = callPackage ../games/classicube { };
|
||||
|
||||
clj-kondo = callPackage ../development/tools/clj-kondo { };
|
||||
|
@ -1910,7 +1914,7 @@ with pkgs;
|
|||
|
||||
scarab = callPackage ../tools/games/scarab { };
|
||||
|
||||
sdbus-cpp = callPackage ../development/libraries/sdbus-cpp { };
|
||||
inherit (callPackage ../development/libraries/sdbus-cpp { }) sdbus-cpp sdbus-cpp_2;
|
||||
|
||||
sdlookup = callPackage ../tools/security/sdlookup { };
|
||||
|
||||
|
@ -33618,8 +33622,6 @@ with pkgs;
|
|||
|
||||
xchainkeys = callPackage ../tools/X11/xchainkeys { };
|
||||
|
||||
xchm = callPackage ../applications/misc/xchm { };
|
||||
|
||||
inherit (xorg) xcompmgr;
|
||||
|
||||
x-create-mouse-void = callPackage ../applications/window-managers/x-create-mouse-void { };
|
||||
|
@ -34588,7 +34590,7 @@ with pkgs;
|
|||
fltk = fltk-minimal;
|
||||
};
|
||||
|
||||
factorio = callPackage ../games/factorio { releaseType = "alpha"; };
|
||||
factorio = callPackage ../by-name/fa/factorio/package.nix { releaseType = "alpha"; };
|
||||
|
||||
factorio-experimental = factorio.override { releaseType = "alpha"; experimental = true; };
|
||||
|
||||
|
@ -34602,9 +34604,9 @@ with pkgs;
|
|||
|
||||
factorio-space-age-experimental = factorio.override { releaseType = "expansion"; experimental = true; };
|
||||
|
||||
factorio-mods = callPackage ../games/factorio/mods.nix { };
|
||||
factorio-mods = callPackage ../by-name/fa/factorio/mods.nix { };
|
||||
|
||||
factorio-utils = callPackage ../games/factorio/utils.nix { };
|
||||
factorio-utils = callPackage ../by-name/fa/factorio/utils.nix { };
|
||||
|
||||
fairymax = callPackage ../games/fairymax { };
|
||||
|
||||
|
|
|
@ -3520,6 +3520,8 @@ self: super: with self; {
|
|||
|
||||
djangorestframework-camel-case = callPackage ../development/python-modules/djangorestframework-camel-case { };
|
||||
|
||||
djangorestframework-csv = callPackage ../development/python-modules/djangorestframework-csv { };
|
||||
|
||||
djangorestframework-guardian = callPackage ../development/python-modules/djangorestframework-guardian { };
|
||||
|
||||
djangorestframework-guardian2 = callPackage ../development/python-modules/djangorestframework-guardian2 { };
|
||||
|
@ -9896,6 +9898,8 @@ self: super: with self; {
|
|||
|
||||
pescea = callPackage ../development/python-modules/pescea { };
|
||||
|
||||
pesq = callPackage ../development/python-modules/pesq { };
|
||||
|
||||
pex = callPackage ../development/python-modules/pex { };
|
||||
|
||||
pexif = callPackage ../development/python-modules/pexif { };
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue