Merge master into staging-nixos

This commit is contained in:
nixpkgs-ci[bot]
2026-03-31 06:31:35 +00:00
committed by GitHub
37 changed files with 532 additions and 98 deletions
+1
View File
@@ -957,6 +957,7 @@
./services/misc/servarr/sonarr.nix
./services/misc/servarr/whisparr.nix
./services/misc/serviio.nix
./services/misc/shelfmark.nix
./services/misc/shoko.nix
./services/misc/sickbeard.nix
./services/misc/snapper.nix
+131
View File
@@ -0,0 +1,131 @@
{
lib,
pkgs,
config,
...
}:
let
cfg = config.services.shelfmark;
in
{
options.services.shelfmark = {
enable = lib.mkEnableOption "Shelfmark, a self-hosted book and audiobook search and download interface";
package = lib.mkPackageOption pkgs "shelfmark" { };
openFirewall = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Open the appropriate ports in the firewall for Shelfmark.";
};
environment = lib.mkOption {
type = lib.types.submodule {
freeformType = lib.types.attrsOf lib.types.str;
options = {
FLASK_HOST = lib.mkOption {
type = lib.types.str;
default = "127.0.0.1";
example = "0.0.0.0";
description = "The IP address to bind the Shelfmark server to.";
};
FLASK_PORT = lib.mkOption {
type = lib.types.port;
default = 8084;
apply = toString;
description = "TCP port for the Shelfmark web interface.";
};
ENABLE_LOGGING = lib.mkOption {
type = lib.types.bool;
apply = toString;
default = false;
description = "Whether to enable file logging. Disabled by default since systemd captures console output via journald.";
};
CONFIG_DIR = lib.mkOption {
type = lib.types.path;
default = "/var/lib/shelfmark";
description = "Directory for Shelfmark configuration, database, and artwork cache.";
};
};
};
default = { };
example = {
SEARCH_MODE = "universal";
LOG_LEVEL = "DEBUG";
};
description = ''
Environment variables to pass to the Shelfmark service.
See <https://github.com/calibrain/shelfmark/blob/main/docs/environment-variables.md>
for available options.
'';
};
};
config = lib.mkIf cfg.enable {
systemd.services.shelfmark = {
description = "Shelfmark - book and audiobook search and download interface";
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
wantedBy = [ "multi-user.target" ];
inherit (cfg) environment;
serviceConfig = {
DynamicUser = true;
ExecStart = "${lib.getExe cfg.package} -b ${cfg.environment.FLASK_HOST}:${cfg.environment.FLASK_PORT}";
StateDirectory = "shelfmark";
ProtectSystem = "strict";
ProtectHome = true;
PrivateTmp = true;
PrivateDevices = true;
PrivateMounts = true;
ProtectControlGroups = true;
ProtectKernelTunables = true;
RestrictSUIDSGID = true;
RemoveIPC = true;
UMask = "0077";
CapabilityBoundingSet = [ "" ];
NoNewPrivileges = true;
ProtectKernelModules = true;
ProtectKernelLogs = true;
ProtectClock = true;
SystemCallArchitectures = "native";
SystemCallFilter = [
"@system-service"
"~@privileged"
"~@resources"
];
RestrictAddressFamilies = [
"AF_INET"
"AF_INET6"
"AF_UNIX"
];
PrivateUsers = true;
LockPersonality = true;
ProtectHostname = true;
RestrictRealtime = true;
RestrictNamespaces = true;
ProtectProc = "invisible";
ProcSubset = "pid";
DeviceAllow = [ "" ];
};
};
networking.firewall = lib.mkIf cfg.openFirewall {
allowedTCPPorts = [ (lib.toInt cfg.environment.FLASK_PORT) ];
};
};
meta = {
maintainers = with lib.maintainers; [ jamiemagee ];
};
}
+29 -2
View File
@@ -7,6 +7,9 @@
let
cfg = config.virtualisation.incus;
acmeHostDir = config.security.acme.certs."${cfg.useACMEHost}".directory;
preseedFormat = pkgs.formats.yaml { };
nvidiaEnabled = (lib.elem "nvidia" config.services.xserver.videoDrivers);
@@ -292,6 +295,17 @@ in
package = lib.mkPackageOption pkgs [ "incus-ui-canonical" ] { };
};
useACMEHost = lib.mkOption {
type = lib.types.nullOr lib.types.str;
default = null;
example = "incus.example.com";
description = ''
Host of an existing Let's Encrypt certificate to use for TLS.
*Note that this option does not create any certificates and it
doesn't add subdomains to existing ones you will need to create
them manually using {option}`security.acme.certs`.*
'';
};
};
};
@@ -391,6 +405,10 @@ in
'';
};
security.acme.certs = lib.mkIf (cfg.useACMEHost != null) {
"${cfg.useACMEHost}".reloadServices = [ "incus.service" ];
};
systemd.services.incus = {
description = "Incus Container and Virtual Machine Management Daemon";
@@ -402,7 +420,8 @@ in
"lxcfs.service"
"incus.socket"
]
++ lib.optionals config.virtualisation.vswitch.enable [ "ovs-vswitchd.service" ];
++ lib.optionals config.virtualisation.vswitch.enable [ "ovs-vswitchd.service" ]
++ lib.optionals (cfg.useACMEHost != null) [ "acme-${cfg.useACMEHost}.service" ];
requires = [
"lxcfs.service"
@@ -410,7 +429,10 @@ in
]
++ lib.optionals config.virtualisation.vswitch.enable [ "ovs-vswitchd.service" ];
wants = [ "network-online.target" ];
wants = [
"network-online.target"
]
++ lib.optionals (cfg.useACMEHost != null) [ "acme-${cfg.useACMEHost}.service" ];
serviceConfig = {
ExecStart = "${cfg.package}/bin/incusd --group incus-admin";
@@ -427,6 +449,11 @@ in
Restart = "on-failure";
TimeoutStartSec = "${cfg.startTimeout}s";
TimeoutStopSec = "30s";
BindReadOnlyPaths = lib.mkIf (cfg.useACMEHost != null) [
"${acmeHostDir}/fullchain.pem:/var/lib/incus/server.crt"
"${acmeHostDir}/key.pem:/var/lib/incus/server.key"
];
};
};
+1
View File
@@ -1461,6 +1461,7 @@ in
shadps4 = runTest ./shadps4.nix;
sharkey = runTest ./web-apps/sharkey.nix;
shattered-pixel-dungeon = runTest ./shattered-pixel-dungeon.nix;
shelfmark = runTest ./shelfmark.nix;
shiori = runTest ./shiori.nix;
shoko = import ./shoko.nix { inherit runTest; };
signal-desktop = runTest ./signal-desktop.nix;
+1 -1
View File
@@ -86,7 +86,7 @@ in
''
def curl(command: str, proxy: bool = False):
if proxy:
command = "curl --proxy 127.0.0.1:8080 --cacert ~/.mitmproxy/mitmproxy-ca-cert.pem " + command
command = "curl --proxy 127.0.0.1:8080 --cacert ~/.mitmproxy/mitmproxy-ca.pem " + command
else:
command = "curl " + command
return machine.succeed(command)
+20
View File
@@ -0,0 +1,20 @@
{ lib, ... }:
{
name = "shelfmark";
meta.maintainers = with lib.maintainers; [ jamiemagee ];
nodes.machine = {
services.shelfmark = {
enable = true;
environment.FLASK_HOST = "0.0.0.0";
};
};
testScript = ''
machine.wait_for_unit("shelfmark.service")
machine.wait_for_open_port(8084)
with subtest("Health endpoint responds"):
machine.succeed("curl --fail http://localhost:8084/api/health")
'';
}
@@ -219,13 +219,13 @@
"vendorHash": "sha256-6MKWpiDq4yI3mfIJyzEsWLa7gi0+DScI5jKcOcM6Qs0="
},
"cloudposse_utils": {
"hash": "sha256-Fjb+9NG+p+oTvKziRYHaNdAZaUv8Rs/FYLXmtwrfkOI=",
"hash": "sha256-Pf2UHxGEacmtIlSIKACC0MULAZMj5EGKq2q8Tsv79F8=",
"homepage": "https://registry.terraform.io/providers/cloudposse/utils",
"owner": "cloudposse",
"repo": "terraform-provider-utils",
"rev": "v2.4.0",
"rev": "v2.5.0",
"spdx": "Apache-2.0",
"vendorHash": "sha256-LNsJygeBSpY4xawhWfIcYOB0TEVK4DMeyiSgyn8PJ2A="
"vendorHash": "sha256-F4vFlhpPQUa1q7cFfjRooK4krISfpPxdj8uhvDmZQuY="
},
"cloudscale-ch_cloudscale": {
"hash": "sha256-Ynuyn0L5B7d81WXEHoTI03zFzlEP3LGY4yQIl/WBr/8=",
+26
View File
@@ -0,0 +1,26 @@
{
lib,
rustPlatform,
fetchCrate,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "aasvg-rs";
version = "1.0.0";
src = fetchCrate {
inherit (finalAttrs) version;
pname = "aasvg-cli";
hash = "sha256-0qGCXHSCTg2yXLxREOfY7lOA3ZQCNFvST6GTBIsG/f4=";
};
cargoHash = "sha256-zl3IPKKG738cr1Au4Vw9SRstgOp57hM/JhPRNl0VsII=";
meta = {
description = "CLI tool to convert ASCII art diagrams to SVG";
homepage = "https://github.com/bearcove/aasvg-rs";
license = lib.licenses.bsd2;
maintainers = with lib.maintainers; [ chillcicada ];
mainProgram = "aasvg";
};
})
+4 -3
View File
@@ -41,14 +41,14 @@ assert lib.assertMsg (
stdenv.mkDerivation (finalAttrs: {
pname = "cadabra2";
version = "2.5.14";
version = "2.5.14-p1";
src = fetchFromGitHub {
owner = "kpeeters";
repo = "cadabra2";
tag = finalAttrs.version;
fetchSubmodules = true;
hash = "sha256-lQ/xGxWa126EzxDIsXoi3brnECcXLXxzzUizLpRjZOg=";
hash = "sha256-Pbk9SmJ64CZ+yxMj53JpxULBQye2ETDi8xNKw38cC9k=";
};
postPatch = ''
@@ -118,7 +118,8 @@ stdenv.mkDerivation (finalAttrs: {
nativeInstallCheckInputs = [ versionCheckHook ];
versionCheckProgramArg = "--version";
doInstallCheck = !enableBuildAsCppLibrary;
#doInstallCheck = !enableBuildAsCppLibrary;
doInstallCheck = false; # FIXME: remove this line and uncomment the above after next release
passthru.updateScript = nix-update-script { };
+2 -2
View File
@@ -27,13 +27,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "dosbox-x";
version = "2026.01.02";
version = "2026.03.29";
src = fetchFromGitHub {
owner = "joncampbell123";
repo = "dosbox-x";
rev = "dosbox-x-v${finalAttrs.version}";
hash = "sha256-/1DACDf530rzxeLVMLGkB3n6d3d8sN/ci8Q3kHAtZJo=";
hash = "sha256-hOP+hmvVCdFSqXnD6+6OVIQ7allEidKt9W9AT704htA=";
};
# sips is unavailable in sandbox, replacing with imagemagick breaks build due to wrong Foundation propagation(?) so don't generate resolution variants
@@ -0,0 +1,39 @@
From 8c648b4a68e5ebadb4d0f08728e44078954cebae Mon Sep 17 00:00:00 2001
From: kuflierl <41301536+kuflierl@users.noreply.github.com>
Date: Fri, 27 Mar 2026 01:28:17 +0100
Subject: [PATCH] fix: build with minizip 1.3.2
---
src/drivers/Qt/AboutWindow.cpp | 2 +-
src/drivers/Qt/fceuWrapper.cpp | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/drivers/Qt/AboutWindow.cpp b/src/drivers/Qt/AboutWindow.cpp
index 025cf360..5638a3c1 100644
--- a/src/drivers/Qt/AboutWindow.cpp
+++ b/src/drivers/Qt/AboutWindow.cpp
@@ -23,7 +23,7 @@
#include <stdlib.h>
#include <string.h>
#include <string>
-#include <unzip.h>
+#include <minizip/unzip.h>
#ifdef _S9XLUA_H
#include <lua.h>
diff --git a/src/drivers/Qt/fceuWrapper.cpp b/src/drivers/Qt/fceuWrapper.cpp
index 8d241258..5e48eaf7 100644
--- a/src/drivers/Qt/fceuWrapper.cpp
+++ b/src/drivers/Qt/fceuWrapper.cpp
@@ -23,7 +23,7 @@
#include <stdlib.h>
#include <stdint.h>
#include <limits.h>
-#include <unzip.h>
+#include <minizip/unzip.h>
#include <QFileInfo>
#include <QStyleFactory>
--
2.51.2
+4
View File
@@ -40,6 +40,10 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-2QDiAk2HO9oQ1gNvc7QFZSCbWkCDYW5OJWT8f4bmXyg=";
};
patches = [
./0001-fix-build-with-minizip-1.3.2.patch
];
nativeBuildInputs = [
cmake
pkg-config
+2 -2
View File
@@ -11,13 +11,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "ft2-clone";
version = "2.12";
version = "2.13";
src = fetchFromGitHub {
owner = "8bitbubsy";
repo = "ft2-clone";
rev = "v${finalAttrs.version}";
hash = "sha256-Ca4vp2uEF7rZJ+0lAmVqC/6F+2CgbDLK2GkbG5Tn//0=";
hash = "sha256-Ieu7dxNEPz2DVKTfo2sitvtvAeKMCu3EiF6/PKrgETs=";
};
nativeBuildInputs = [ cmake ];
+2 -2
View File
@@ -6,12 +6,12 @@
stdenv.mkDerivation (finalAttrs: {
pname = "gendef";
version = "11.0.1";
version = "14.0.0";
src = fetchgit {
url = "https://git.code.sf.net/p/mingw-w64/mingw-w64.git";
rev = "v${finalAttrs.version}";
hash = "sha256-0vbAHSN+uwxoXXZtbuycP67PxjcB8Ftxd/Oij1gqE3Y=";
hash = "sha256-ZhbY/RvTBI8ELSe0D7uzWi13sspgNZhdYg4LLK0JRng=";
};
sourceRoot = "${finalAttrs.src.name}/mingw-w64-tools/gendef";
+3 -3
View File
@@ -7,16 +7,16 @@
buildNpmPackage (finalAttrs: {
pname = "homebridge";
version = "1.11.3";
version = "1.11.4";
src = fetchFromGitHub {
owner = "homebridge";
repo = "homebridge";
tag = "v${finalAttrs.version}";
hash = "sha256-Hr4pwWsISj4zde5DNOVSciZr1xJmL7M0wG2GU62ZDk4=";
hash = "sha256-usp7zszkEfGsWXApywAolFhG0i59Pr/IvvaBMeU7YHc=";
};
npmDepsHash = "sha256-LPCaqJGMeX8PaGwxfLnxQ5hdNycaE9nUMIU3LM6PHkg=";
npmDepsHash = "sha256-Ci5aIDIEchB0niORK2cRy06qObLplCSogo6wRVXv9Vs=";
# Homebridge's clean phase attempts to install rimraf directly, which fails in nix builds
# rimraf is already in the declared dependencies, so we just don't need to do it.
+11 -7
View File
@@ -11,18 +11,18 @@
}:
let
ocamlPackages = ocaml-ng.ocamlPackages_5_3;
ocamlPackages = ocaml-ng.ocamlPackages_5_4;
in
ocamlPackages.buildDunePackage {
pname = "owi";
version = "0.2-unstable-2026-01-29";
version = "0.2-unstable-2026-03-16";
src = fetchFromGitHub {
owner = "ocamlpro";
repo = "owi";
rev = "07b96ef58021810352caceffbadf2d614785bb0d";
rev = "7fb7af27025501c732d8dda903865b47bc5d4901";
fetchSubmodules = true;
hash = "sha256-vVTAoPWfjbX4c3AXxh4C2igig5LiMLZMpLmLSjLcxgo=";
hash = "sha256-aRNJiW6UTcpJU3fIcEQB3gujmAxsp2dwR1hFeWJrhzs=";
};
nativeBuildInputs = with ocamlPackages; [
@@ -39,11 +39,15 @@ ocamlPackages.buildDunePackage {
];
buildInputs = with ocamlPackages; [
dune-build-info
dune-site
];
propagatedBuildInputs = with ocamlPackages; [
bos
cmdliner
digestif
dune-build-info
dune-site
domainpc
menhirLib
ocaml_intrinsics
ocamlgraph
@@ -52,11 +56,11 @@ ocamlPackages.buildDunePackage {
scfg
sedlex
smtml
symex
synchronizer
uutf
xmlm
yojson
z3
];
postInstall = ''
+17
View File
@@ -17,6 +17,23 @@ rustPlatform.buildRustPackage (finalAttrs: {
cargoHash = "sha256-dCZGPIipSotcA7DT3VvTCYq8+DxWHi5cp/fwh/44Jwc=";
env = {
_DEF_PR_AI_API_KEY = "";
_DEF_PR_AI_URL = "";
_DEF_PR_AI_MODEL = "";
};
cargoBuildFlags = [
"-p pay-respects"
"-p pay-respects-module-runtime-rules"
"-p pay-respects-module-request-ai"
];
cargoTestFlags = [
"-p pay-respects"
"-p pay-respects-module-runtime-rules"
"-p pay-respects-module-request-ai"
];
nativeInstallCheckInputs = [ versionCheckHook ];
doInstallCheck = true;
+2 -2
View File
@@ -18,12 +18,12 @@ let
# We keep the override around even when the versions match, as
# it's likely to become relevant again after the next Poetry update.
poetry-core = super.poetry-core.overridePythonAttrs (old: rec {
version = "2.3.1";
version = "2.3.2";
src = fetchFromGitHub {
owner = "python-poetry";
repo = "poetry-core";
tag = version;
hash = "sha256-gGXAPdFnrS/T7xvw8rpzI/7nW0bXdUiZnPeEwDgtWuQ=";
hash = "sha256-Rv6JCHsqu5rRvihGaUFcRk/NUT90bnIUM01QxUUkxh4=";
};
});
}
@@ -11,13 +11,13 @@
buildPythonPackage rec {
pname = "poetry-plugin-export";
version = "1.9.0-unstable-2025-09-14";
version = "1.10.0";
pyproject = true;
src = fetchFromGitHub {
owner = "python-poetry";
repo = "poetry-plugin-export";
rev = "70a2f386a52687adee7353b51e59dd45aa319ee7";
tag = version;
hash = "sha256-KsvkM4hjG+jrdPVauXYdc6E87Gp7srMg/mJHpWRjaEs=";
};
@@ -36,7 +36,7 @@ buildPythonPackage rec {
];
meta = {
changelog = "https://github.com/python-poetry/poetry-plugin-export/blob/${src.rev}/CHANGELOG.md";
changelog = "https://github.com/python-poetry/poetry-plugin-export/blob/${src.tag}/CHANGELOG.md";
description = "Poetry plugin to export the dependencies to various formats";
license = lib.licenses.mit;
homepage = "https://github.com/python-poetry/poetry-plugin-export";
+2 -2
View File
@@ -35,14 +35,14 @@
buildPythonPackage rec {
pname = "poetry";
version = "2.3.2";
version = "2.3.3";
pyproject = true;
src = fetchFromGitHub {
owner = "python-poetry";
repo = "poetry";
tag = version;
hash = "sha256-zJ7HA/NNBh9gy0WUXTxKBUsC74Yt+ANZuBxMrQrS6XU=";
hash = "sha256-+8zVe2JeQbbqmKOydQw1tZM2PYa5H/5ImBcVpoxYC5w=";
};
build-system = [
+2 -2
View File
@@ -7,11 +7,11 @@
}:
let
pname = "qidi-studio";
version = "2.04.01.11";
version = "2.05.01.52";
src = fetchurl {
url = "https://github.com/QIDITECH/QIDIStudio/releases/download/v${version}/QIDIStudio_v0${version}_Ubuntu24.AppImage";
hash = "sha256-+Uj0S4BOASST+3MqcFNdW1dBQeMxNC5btMUiNVxFs3g=";
hash = "sha256-ikLqTei2smj++AbzNOOwW5PGy2zxmdAvXUQJ1YQ4zMU=";
};
appimageContents = appimageTools.extract {
+2 -2
View File
@@ -9,13 +9,13 @@
# redumper is using C++ modules, this requires latest C++20 compiler and build tools
llvmPackages.libcxxStdenv.mkDerivation (finalAttrs: {
pname = "redumper";
version = "705";
version = "706";
src = fetchFromGitHub {
owner = "superg";
repo = "redumper";
tag = "b${finalAttrs.version}";
hash = "sha256-g824KEdIK/B1DtNPe09AL839DTKeE3xy+NbI1DOkm+U=";
hash = "sha256-RPs5zfDMeXqOKsldlvdAbHM3XO36ezXou5YYxpw7jAo=";
};
nativeBuildInputs = [
+3 -3
View File
@@ -27,13 +27,13 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "ruffle";
version = "0.2.0-nightly-2026-03-20";
version = "0.2.0-nightly-2026-03-29";
src = fetchFromGitHub {
owner = "ruffle-rs";
repo = "ruffle";
tag = lib.strings.removePrefix "0.2.0-" finalAttrs.version;
hash = "sha256-CONx48SDjHu22AXasIMwCpD+s6+6Tsr8+XtderuQzpM=";
hash = "sha256-QJorW1H0pmaa546L0Qk0EayjegA9ObhLwbBgPOccUOM=";
};
postPatch =
@@ -49,7 +49,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
"OpenH264Version(${major}, ${minor}, ${patch})"
'';
cargoHash = "sha256-LfGZuTDkfz0Wn9O8t474Y9US85ewWMPx7qPBjK9gFg8=";
cargoHash = "sha256-WsygyqL8o+cRiHhrVj51F2hOws9wLDr/g0werSXv/i4=";
cargoBuildFlags = lib.optional withRuffleTools "--workspace";
env =
@@ -0,0 +1,25 @@
{
buildNpmPackage,
shelfmark,
}:
buildNpmPackage (finalAttrs: {
pname = "shelfmark-frontend";
inherit (shelfmark) version src;
sourceRoot = "${finalAttrs.src.name}/src/frontend";
npmDepsHash = "sha256-RAzotFGj0FGpfF7iyB5f2fdKFvMLcpJx142yplRwboU=";
installPhase = ''
runHook preInstall
cp -r dist $out
runHook postInstall
'';
meta = {
description = "Shelfmark frontend";
homepage = "https://github.com/calibrain/shelfmark/tree/main/src/frontend";
inherit (shelfmark.meta) changelog license maintainers;
};
})
+96
View File
@@ -0,0 +1,96 @@
{
lib,
stdenv,
fetchFromGitHub,
python3Packages,
makeWrapper,
nixosTests,
shelfmark-frontend,
unrar-free,
}:
let
pythonDeps = with python3Packages; [
flask
flask-cors
flask-socketio
python-socketio
requests
pysocks
defusedxml
beautifulsoup4
tqdm
dnspython
gunicorn
gevent
gevent-websocket
psutil
emoji
rarfile
qbittorrent-api
transmission-rpc
authlib
apprise
];
in
stdenv.mkDerivation (finalAttrs: {
pname = "shelfmark";
version = "1.2.0";
src = fetchFromGitHub {
owner = "calibrain";
repo = "shelfmark";
tag = "v${finalAttrs.version}";
hash = "sha256-t4t7je7Y/aezx/EX7paJIcsCq5qyZeU/+mPLeZ8oTPg=";
};
nativeBuildInputs = [
python3Packages.wrapPython
makeWrapper
];
pythonPath = pythonDeps;
installPhase = ''
runHook preInstall
wrapPythonPrograms
mkdir -p $out/libexec $out/bin
cp -r shelfmark $out/libexec/shelfmark
cp -r data $out/libexec/data
ln -s ${finalAttrs.passthru.frontend} $out/libexec/frontend-dist
makeWrapper ${python3Packages.python.interpreter} $out/bin/shelfmark \
--prefix PATH : ${
lib.makeBinPath [
python3Packages.python
unrar-free
]
} \
--set PYTHONPATH "$out/libexec:$program_PYTHONPATH" \
--set USING_EXTERNAL_BYPASSER true \
--add-flags "-m gunicorn.app.wsgiapp --worker-class geventwebsocket.gunicorn.workers.GeventWebSocketWorker --workers 1 -t 300 shelfmark.main:app"
runHook postInstall
'';
passthru = {
frontend = shelfmark-frontend.override {
shelfmark = finalAttrs.finalPackage;
};
tests = {
inherit (nixosTests) shelfmark;
};
};
meta = {
description = "Self-hosted web interface for searching and downloading books and audiobooks";
homepage = "https://github.com/calibrain/shelfmark";
changelog = "https://github.com/calibrain/shelfmark/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.jamiemagee ];
mainProgram = "shelfmark";
};
})
+3 -3
View File
@@ -11,16 +11,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "snouty";
version = "0.3.3";
version = "0.3.5";
src = fetchFromGitHub {
owner = "antithesishq";
repo = "snouty";
tag = "v${finalAttrs.version}";
hash = "sha256-ScE+Er8k86N6zmEnVEpxWPnW6g6Gyy1TA+2HNGZmqgE=";
hash = "sha256-lE0SHk2pkWPAMRI8seBhP4lMVyruhF8DKW/LSRkqcRw=";
};
cargoHash = "sha256-I/pXyX4Z+tGqVbFjog+GzXJYnBwpyYZsc0lvlBOdT/Q=";
cargoHash = "sha256-b5FVhF+MVexf8ZV3+pUomzCA8fq1Un0g51aLg1muxRM=";
nativeBuildInputs = [
installShellFiles
+7 -4
View File
@@ -1,6 +1,6 @@
{
lib,
stdenv,
stdenvNoCC,
fetchurl,
steam-run,
coreutils,
@@ -24,12 +24,13 @@ let
};
};
in
stdenv.mkDerivation {
stdenvNoCC.mkDerivation {
pname = "steamcmd";
version = "20180104"; # According to steamcmd_linux.tar.gz mtime
src =
srcs.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
srcs.${stdenvNoCC.hostPlatform.system}
or (throw "Unsupported system: ${stdenvNoCC.hostPlatform.system}");
# The source tarball does not have a single top-level directory.
preUnpack = ''
@@ -49,7 +50,9 @@ stdenv.mkDerivation {
--subst-var out \
--subst-var-by coreutils ${coreutils} \
--subst-var-by steamRoot '${steamRoot}' \
--subst-var-by steamRun ${if stdenv.hostPlatform.isLinux then (lib.getExe steam-run) else "exec"}
--subst-var-by steamRun ${
if stdenvNoCC.hostPlatform.isLinux then (lib.getExe steam-run) else "exec"
}
chmod 0755 $out/bin/steamcmd
'';
+3 -3
View File
@@ -10,7 +10,7 @@
buildGoModule (finalAttrs: {
pname = "telegraf";
version = "1.38.1";
version = "1.38.2";
subPackages = [ "cmd/telegraf" ];
@@ -18,10 +18,10 @@ buildGoModule (finalAttrs: {
owner = "influxdata";
repo = "telegraf";
rev = "v${finalAttrs.version}";
hash = "sha256-DKDKEYKm4vlyamGHLE1kPFYBgsZDvkzCGEmqBQ6/VIE=";
hash = "sha256-EfT3uxUTRvAlZcIsm7zDn+6znE7UG+N0yBoGM5Fl8eo=";
};
vendorHash = "sha256-1fsyqCsxABDB4ZBAjshRo+GPtG70CEVu/mWzMoDjhjc=";
vendorHash = "sha256-Ir9/JjnwfrxlF7oCTpsn/e+8UxdZJgCZM2SW3y2h1Rg=";
proxyVendor = true;
ldflags = [
@@ -2,7 +2,6 @@
lib,
stdenv,
fetchFromGitLab,
fetchpatch,
meson,
ninja,
pkg-config,
@@ -176,8 +175,5 @@ in
wlroots_0_20 = generic {
version = "0.20.0";
hash = "sha256-hVJlJiJK6+9RkgkmQzUzb8ypVMqsNhbQG6KfeCvxtb0=";
extraBuildInputs = [
lcms2
];
};
}
@@ -11,6 +11,7 @@
dolmen_model,
dolmen_type,
dune-build-info,
dune-site,
fpath,
hc,
menhirLib,
@@ -18,6 +19,7 @@
# fix eval on legacy ocaml versions
ocaml_intrinsics ? null,
prelude,
ppx_enumerate,
scfg,
yojson,
z3,
@@ -28,13 +30,13 @@
buildDunePackage (finalAttrs: {
pname = "smtml";
version = "0.20.0";
version = "0.24.0";
src = fetchFromGitHub {
owner = "formalsec";
repo = "smtml";
tag = "v${finalAttrs.version}";
hash = "sha256-VnkF+bZXeqaj9LSpyzqH5AM9EQsrW4Rlj5kvyTfYTKE=";
hash = "sha256-9499a8ngL8rTeyhWumn08ZjymD8zOMyyG0ZgjVITSPQ=";
};
minimalOCamlVersion = "4.14";
@@ -45,6 +47,7 @@ buildDunePackage (finalAttrs: {
buildInputs = [
dune-build-info
dune-site
];
propagatedBuildInputs = [
@@ -58,6 +61,7 @@ buildDunePackage (finalAttrs: {
menhirLib
mtime
ocaml_intrinsics
ppx_enumerate
prelude
scfg
yojson
@@ -9,13 +9,13 @@
buildDunePackage (finalAttrs: {
pname = "symex";
version = "0.1";
version = "0.2";
src = fetchFromGitHub {
owner = "ocamlpro";
repo = "symex";
tag = finalAttrs.version;
hash = "sha256-jKwFtxVcBD8Y1bfKRB8Z/MSeQLQWKvk00i8HqodkBbM=";
hash = "sha256-KX+OHiCsAHEw0kBWLUDVakIcshUNXLYjm2f2le75Mj8=";
};
propagatedBuildInputs = [
@@ -20,14 +20,14 @@
buildPythonPackage rec {
pname = "approvaltests";
version = "17.4.0";
version = "17.4.1";
pyproject = true;
src = fetchFromGitHub {
owner = "approvals";
repo = "ApprovalTests.Python";
tag = "v${version}";
hash = "sha256-Xtgzz5Z0tkwr9EmiYs8Nt/MUTvJ8sysySMp8QJnr33A=";
hash = "sha256-8JOd1JRwJS+y5Eh/an0RrGtwBZMPW/ziGTRd1H9Sveo=";
};
postPatch = ''
@@ -3,32 +3,30 @@
buildPythonPackage,
cryptography,
deepdiff,
eval-type-backport,
fetchFromGitHub,
httpcore,
httpx,
lib,
nest-asyncio,
poetry-core,
pydantic,
pypdf,
pypdfium2,
pytest-asyncio,
pytestCheckHook,
python,
python-dateutil,
requests-toolbelt,
typing-inspection,
}:
buildPythonPackage (finalAttrs: {
pname = "unstructured-client";
version = "0.42.9";
version = "0.42.12";
pyproject = true;
src = fetchFromGitHub {
owner = "Unstructured-IO";
repo = "unstructured-python-client";
tag = "v${finalAttrs.version}";
hash = "sha256-+neZK7I5qjidLlM298TrVl5mGFBdGZdxAdFaJIf0tNk=";
hash = "sha256-xuaGvQEu1QpLn33AUgdWW120pVVNVPL08U/SCA7kGvc=";
};
preBuild = ''
@@ -44,14 +42,12 @@ buildPythonPackage (finalAttrs: {
dependencies = [
aiofiles
cryptography
eval-type-backport
httpcore
httpx
nest-asyncio
pydantic
pypdf
python-dateutil
pypdfium2
requests-toolbelt
typing-inspection
];
pythonImportsCheck = [ "unstructured_client" ];
+63 -29
View File
@@ -1863,7 +1863,9 @@ let
});
vegan3d = old.vegan3d.overrideAttrs (attrs: {
RGL_USE_NULL = "true";
env = (attrs.env or { }) // {
RGL_USE_NULL = "true";
};
});
# it can happen that the major version of arrow-cpp is ahead of the
@@ -2187,7 +2189,9 @@ let
});
nanonext = old.nanonext.overrideAttrs (attrs: {
NIX_LDFLAGS = "-lnng -lmbedtls -lmbedx509 -lmbedcrypto";
env = (attrs.env or { }) // {
NIX_LDFLAGS = "-lnng -lmbedtls -lmbedx509 -lmbedcrypto";
};
});
clustermq = old.clustermq.overrideAttrs (attrs: {
@@ -2195,7 +2199,9 @@ let
});
Cairo = old.Cairo.overrideAttrs (attrs: {
NIX_LDFLAGS = "-lfontconfig";
env = (attrs.env or { }) // {
NIX_LDFLAGS = "-lfontconfig";
};
});
curl = old.curl.overrideAttrs (attrs: {
@@ -2511,7 +2517,9 @@ let
});
RAppArmor = old.RAppArmor.overrideAttrs (attrs: {
LIBAPPARMOR_HOME = pkgs.libapparmor;
env = (attrs.env or { }) // {
LIBAPPARMOR_HOME = pkgs.libapparmor;
};
});
# Append cargo path to path variable
@@ -2526,17 +2534,21 @@ let
});
RMySQL = old.RMySQL.overrideAttrs (attrs: {
MYSQL_DIR = "${pkgs.libmysqlclient}";
PKGCONFIG_CFLAGS = "-I${pkgs.libmysqlclient.dev}/include/mysql";
NIX_CFLAGS_LINK = "-L${pkgs.libmysqlclient}/lib/mysql -lmysqlclient";
env = (attrs.env or { }) // {
MYSQL_DIR = "${pkgs.libmysqlclient}";
PKGCONFIG_CFLAGS = "-I${pkgs.libmysqlclient.dev}/include/mysql";
NIX_CFLAGS_LINK = "-L${pkgs.libmysqlclient}/lib/mysql -lmysqlclient";
};
preConfigure = ''
patchShebangs configure
'';
});
devEMF = old.devEMF.overrideAttrs (attrs: {
NIX_CFLAGS_LINK = "-L${pkgs.libxft.out}/lib -lXft";
NIX_LDFLAGS = "-lX11";
env = (attrs.env or { }) // {
NIX_CFLAGS_LINK = "-L${pkgs.libxft.out}/lib -lXft";
NIX_LDFLAGS = "-lX11";
};
});
hdf5r = old.hdf5r.overrideAttrs (attrs: {
@@ -2544,11 +2556,15 @@ let
});
slfm = old.slfm.overrideAttrs (attrs: {
PKG_LIBS = "-L${pkgs.blas}/lib -lblas -L${pkgs.lapack}/lib -llapack";
env = (attrs.env or { }) // {
PKG_LIBS = "-L${pkgs.blas}/lib -lblas -L${pkgs.lapack}/lib -llapack";
};
});
SamplerCompare = old.SamplerCompare.overrideAttrs (attrs: {
PKG_LIBS = "-L${pkgs.blas}/lib -lblas -L${pkgs.lapack}/lib -llapack";
env = (attrs.env or { }) // {
PKG_LIBS = "-L${pkgs.blas}/lib -lblas -L${pkgs.lapack}/lib -llapack";
};
});
FLAMES = old.FLAMES.overrideAttrs (attrs: {
@@ -2559,13 +2575,17 @@ let
preConfigure = ''
patchShebangs configure
'';
PKGCONFIG_CFLAGS = "-I${pkgs.openssl.dev}/include";
PKGCONFIG_LIBS = "-Wl,-rpath,${lib.getLib pkgs.openssl}/lib -L${lib.getLib pkgs.openssl}/lib -lssl -lcrypto";
env = (attrs.env or { }) // {
PKGCONFIG_CFLAGS = "-I${pkgs.openssl.dev}/include";
PKGCONFIG_LIBS = "-Wl,-rpath,${lib.getLib pkgs.openssl}/lib -L${lib.getLib pkgs.openssl}/lib -lssl -lcrypto";
};
});
websocket = old.websocket.overrideAttrs (attrs: {
PKGCONFIG_CFLAGS = "-I${pkgs.openssl.dev}/include";
PKGCONFIG_LIBS = "-Wl,-rpath,${lib.getLib pkgs.openssl}/lib -L${lib.getLib pkgs.openssl}/lib -lssl -lcrypto";
env = (attrs.env or { }) // {
PKGCONFIG_CFLAGS = "-I${pkgs.openssl.dev}/include";
PKGCONFIG_LIBS = "-Wl,-rpath,${lib.getLib pkgs.openssl}/lib -L${lib.getLib pkgs.openssl}/lib -lssl -lcrypto";
};
});
Rserve = old.Rserve.overrideAttrs (attrs: {
@@ -2596,11 +2616,13 @@ let
patchShebangs configure
'';
R_MAKEVARS_SITE = lib.optionalString (pkgs.stdenv.system == "aarch64-linux") (
pkgs.writeText "Makevars" ''
CXX14PICFLAGS = -fPIC
''
);
env = (attrs.env or { }) // {
R_MAKEVARS_SITE = lib.optionalString (pkgs.stdenv.system == "aarch64-linux") (
pkgs.writeText "Makevars" ''
CXX14PICFLAGS = -fPIC
''
);
};
});
acs = old.acs.overrideAttrs (attrs: {
@@ -2613,7 +2635,9 @@ let
preConfigure = ''
patchShebangs configure
'';
NIX_LDFLAGS = "-lfontconfig -lfreetype";
env = (attrs.env or { }) // {
NIX_LDFLAGS = "-lfontconfig -lfreetype";
};
});
magick = old.magick.overrideAttrs (attrs: {
@@ -2642,7 +2666,9 @@ let
preConfigure = ''
export TCLLIBPATH="${pkgs.tclPackages.bwidget}/lib/bwidget${pkgs.tclPackages.bwidget.version}"
'';
TCLLIBPATH = "${pkgs.tclPackages.bwidget}/lib/bwidget${pkgs.tclPackages.bwidget.version}";
env = (attrs.env or { }) // {
TCLLIBPATH = "${pkgs.tclPackages.bwidget}/lib/bwidget${pkgs.tclPackages.bwidget.version}";
};
});
networkscaleup = old.networkscaleup.overrideAttrs (attrs: {
@@ -2856,8 +2882,10 @@ let
preConfigure = ''
patchShebangs configure
'';
PKGCONFIG_CFLAGS = "-I${pkgs.openssl.dev}/include -I${pkgs.cyrus_sasl.dev}/include -I${pkgs.zlib.dev}/include";
PKGCONFIG_LIBS = "-Wl,-rpath,${lib.getLib pkgs.openssl}/lib -L${lib.getLib pkgs.openssl}/lib -L${pkgs.cyrus_sasl.out}/lib -L${pkgs.zlib.out}/lib -lssl -lcrypto -lsasl2 -lz";
env = (attrs.env or { }) // {
PKGCONFIG_CFLAGS = "-I${pkgs.openssl.dev}/include -I${pkgs.cyrus_sasl.dev}/include -I${pkgs.zlib.dev}/include";
PKGCONFIG_LIBS = "-Wl,-rpath,${lib.getLib pkgs.openssl}/lib -L${lib.getLib pkgs.openssl}/lib -L${pkgs.cyrus_sasl.out}/lib -L${pkgs.zlib.out}/lib -lssl -lcrypto -lsasl2 -lz";
};
});
ChemmineOB = old.ChemmineOB.overrideAttrs (attrs: {
@@ -3021,7 +3049,9 @@ let
ChIPXpress = old.ChIPXpress.override { hydraPlatforms = [ ]; };
rgl = old.rgl.overrideAttrs (attrs: {
RGL_USE_NULL = "true";
env = (attrs.env or { }) // {
RGL_USE_NULL = "true";
};
});
Rrdrand = old.Rrdrand.override { platforms = lib.platforms.x86_64 ++ lib.platforms.x86; };
@@ -3053,7 +3083,9 @@ let
dbarts = old.dbarts.override { platforms = lib.platforms.x86_64 ++ lib.platforms.x86; };
geomorph = old.geomorph.overrideAttrs (attrs: {
RGL_USE_NULL = "true";
env = (attrs.env or { }) // {
RGL_USE_NULL = "true";
};
});
gpuMagic = old.gpuMagic.overrideAttrs (_: {
@@ -3107,9 +3139,11 @@ let
postPatch = "patchShebangs configure";
});
redland = old.redland.overrideAttrs (_: {
PKGCONFIG_CFLAGS = "-I${pkgs.redland}/include -I${pkgs.librdf_raptor2}/include/raptor2 -I${pkgs.librdf_rasqal}/include/rasqal";
PKGCONFIG_LIBS = "-L${pkgs.redland}/lib -L${pkgs.librdf_raptor2}/lib -L${pkgs.librdf_rasqal}/lib -lrdf -lraptor2 -lrasqal";
redland = old.redland.overrideAttrs (attrs: {
env = (attrs.env or { }) // {
PKGCONFIG_CFLAGS = "-I${pkgs.redland}/include -I${pkgs.librdf_raptor2}/include/raptor2 -I${pkgs.librdf_rasqal}/include/rasqal";
PKGCONFIG_LIBS = "-L${pkgs.redland}/lib -L${pkgs.librdf_raptor2}/lib -L${pkgs.librdf_rasqal}/lib -lrdf -lraptor2 -lrasqal";
};
});
textshaping = old.textshaping.overrideAttrs (attrs: {
+6
View File
@@ -751,6 +751,12 @@ in
filesToInstall = [ "u-boot.bin" ];
};
ubootRaspberryPiAarch64 = buildUBoot {
defconfig = "rpi_arm64_defconfig";
extraMeta.platforms = [ "aarch64-linux" ];
filesToInstall = [ "u-boot.bin" ];
};
ubootRaspberryPi2 = buildUBoot {
defconfig = "rpi_2_defconfig";
extraMeta.platforms = [ "armv7l-linux" ];
+2
View File
@@ -277,6 +277,8 @@ stdenv.mkDerivation (finalAttrs: {
strictDeps = true;
hardeningDisable = [ "strictflexarrays1" ];
preBuild = ''
export MAKEFLAGS="-j $NIX_BUILD_CORES"
'';
+1
View File
@@ -8944,6 +8944,7 @@ with pkgs;
ubootQuartz64B
ubootRadxaZero3W
ubootRaspberryPi
ubootRaspberryPiAarch64
ubootRaspberryPi2
ubootRaspberryPi3_32bit
ubootRaspberryPi3_64bit