Merge staging-next into staging
This commit is contained in:
@@ -10078,6 +10078,13 @@
|
||||
githubId = 11212268;
|
||||
name = "gruve-p";
|
||||
};
|
||||
gs-101 = {
|
||||
email = "gabrielsantosdesouza@disroot.org";
|
||||
github = "gs-101";
|
||||
githubId = 172639817;
|
||||
keys = [ { fingerprint = "D1D3 37F6 CB32 02DC B9BA 337B F9D8 EABC F57E ED58"; } ];
|
||||
name = "Gabriel Santos";
|
||||
};
|
||||
gschwartz = {
|
||||
email = "gsch@pennmedicine.upenn.edu";
|
||||
github = "GregorySchwartz";
|
||||
@@ -13739,6 +13746,12 @@
|
||||
githubId = 41012641;
|
||||
name = "Benjamin Kaylor";
|
||||
};
|
||||
kaynetik = {
|
||||
email = "aleksandar@nesovic.dev";
|
||||
github = "kaynetik";
|
||||
githubId = 48174247;
|
||||
name = "Aleksandar Nesovic";
|
||||
};
|
||||
kazcw = {
|
||||
email = "kaz@lambdaverse.org";
|
||||
github = "kazcw";
|
||||
|
||||
@@ -880,7 +880,6 @@
|
||||
./services/misc/ihaskell.nix
|
||||
./services/misc/iio-niri.nix
|
||||
./services/misc/input-remapper.nix
|
||||
./services/misc/inventree.nix
|
||||
./services/misc/invidious-router.nix
|
||||
./services/misc/irkerd.nix
|
||||
./services/misc/jackett.nix
|
||||
|
||||
@@ -1,446 +0,0 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.services.inventree;
|
||||
pkg = cfg.package;
|
||||
|
||||
mysqlLocal = cfg.database.createLocally && cfg.database.dbtype == "mysql";
|
||||
pgsqlLocal = cfg.database.createLocally && cfg.database.dbtype == "postgresql";
|
||||
|
||||
manage = pkgs.writeShellScriptBin "inventree-manage" ''
|
||||
set -a
|
||||
${lib.toShellVars cfg.settings}
|
||||
${lib.optionalString (
|
||||
cfg.database.passwordFile != null
|
||||
) ''INVENTREE_DB_PASSWORD="$(<"${cfg.database.passwordFile}")"''}
|
||||
set +a
|
||||
|
||||
pushd "${cfg.dataDir}"
|
||||
sudo=exec
|
||||
if [[ "$USER" != ${cfg.user} ]]; then
|
||||
${
|
||||
if config.security.sudo.enable then
|
||||
"sudo='exec ${config.security.wrapperDir}/sudo -u ${cfg.user} -E'"
|
||||
else
|
||||
">&2 echo 'Aborting, inventree-manage must be run as user `${cfg.user}`!'; exit 2"
|
||||
}
|
||||
fi
|
||||
$sudo ${cfg.package}/bin/inventree "$@"
|
||||
popd
|
||||
'';
|
||||
|
||||
in
|
||||
{
|
||||
meta.buildDocsInSandbox = false;
|
||||
meta.maintainers = with lib.maintainers; [
|
||||
kurogeek
|
||||
];
|
||||
|
||||
options.services.inventree = with lib; {
|
||||
enable = lib.mkEnableOption "inventree";
|
||||
|
||||
dataDir = mkOption {
|
||||
type = types.str;
|
||||
default = "/var/lib/inventree";
|
||||
description = "Inventree's data storage path. Will be `/var/lib/inventree` by default.";
|
||||
};
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
description = "Which package to use for the InvenTree instance.";
|
||||
default = pkgs.inventree;
|
||||
defaultText = literalExpression "pkgs.inventree";
|
||||
};
|
||||
|
||||
adminPasswordFile = mkOption {
|
||||
type = types.nullOr lib.types.path;
|
||||
default = null;
|
||||
example = "/run/keys/inventree-password";
|
||||
description = "Path to a file containing admin password";
|
||||
};
|
||||
|
||||
secretKeyFile = mkOption {
|
||||
type = types.path;
|
||||
default = "${cfg.dataDir}/secret_key.txt";
|
||||
defaultText = lib.literalExpression ''"''${cfg.dataDir}/secret_key.txt"'';
|
||||
example = "/run/keys/inventree-secret-key";
|
||||
description = ''
|
||||
Path to a file containing the secret key
|
||||
'';
|
||||
};
|
||||
|
||||
database = {
|
||||
dbtype = mkOption {
|
||||
type = lib.types.nullOr (
|
||||
lib.types.enum [
|
||||
"postgresql"
|
||||
"mysql"
|
||||
]
|
||||
);
|
||||
default = "postgresql";
|
||||
description = "Database type.";
|
||||
};
|
||||
dbhost = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default =
|
||||
if pgsqlLocal then
|
||||
"/run/postgresql"
|
||||
else if mysqlLocal then
|
||||
"/run/mysqld/mysqld.sock"
|
||||
else
|
||||
"localhost";
|
||||
defaultText = "localhost";
|
||||
example = "localhost";
|
||||
description = ''
|
||||
Database host or socket path.
|
||||
If [](#opt-services.inventree.database.createLocally) is true and
|
||||
[](#opt-services.inventree.database.dbtype) is either `postgresql` or `mysql`,
|
||||
defaults to the correct Unix socket instead.
|
||||
'';
|
||||
};
|
||||
dbport = mkOption {
|
||||
type = types.port;
|
||||
default = 5432;
|
||||
description = "Database host port.";
|
||||
};
|
||||
dbname = mkOption {
|
||||
type = types.str;
|
||||
default = "inventree";
|
||||
description = "Database name.";
|
||||
};
|
||||
dbuser = mkOption {
|
||||
type = types.str;
|
||||
default = "inventree";
|
||||
description = "Database username.";
|
||||
};
|
||||
passwordFile = mkOption {
|
||||
type = with types; nullOr path;
|
||||
default = null;
|
||||
example = "/run/keys/inventree-dbpassword";
|
||||
description = ''
|
||||
A file containing the password corresponding to
|
||||
<option>database.dbuser</option>.
|
||||
'';
|
||||
};
|
||||
createLocally = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Create the database and database user locally.";
|
||||
};
|
||||
};
|
||||
|
||||
domain = mkOption {
|
||||
type = types.str;
|
||||
default = "localhost";
|
||||
example = "inventree.example.com";
|
||||
description = ''
|
||||
The INVENTREE_SITE_URL option defines the base URL for the
|
||||
InvenTree server. This is a critical setting, and it is required
|
||||
for correct operation of the server. If not specified, the
|
||||
server will attempt to determine the site URL automatically -
|
||||
but this may not always be correct!
|
||||
|
||||
The site URL is the URL that users will use to access the
|
||||
InvenTree server. For example, if the server is accessible at
|
||||
`https://inventree.example.com`, the site URL should be set to
|
||||
`https://inventree.example.com`. Note that this is not
|
||||
necessarily the same as the internal URL that the server is
|
||||
running on - the internal URL will depend entirely on your
|
||||
server configuration and may be obscured by a reverse proxy or
|
||||
other such setup.
|
||||
'';
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "inventree";
|
||||
description = "User under which InvenTree runs.";
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "inventree";
|
||||
description = "Group under which InvenTree runs.";
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
type =
|
||||
with lib.types;
|
||||
attrsOf (
|
||||
nullOr (oneOf [
|
||||
path
|
||||
str
|
||||
])
|
||||
);
|
||||
default = { };
|
||||
description = ''
|
||||
InvenTree config options.
|
||||
|
||||
See [the documentation](https://docs.inventree.org/en/stable/start/config/) for available options.
|
||||
'';
|
||||
example = {
|
||||
INVENTREE_CACHE_ENABLED = true;
|
||||
INVENTREE_CACHE_HOST = "localhost";
|
||||
|
||||
INVENTREE_EMAIL_HOST = "smtp.example.com";
|
||||
INVENTREE_EMAIL_PORT = 25;
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable (
|
||||
lib.mkMerge [
|
||||
{
|
||||
services.inventree.settings = {
|
||||
INVENTREE_DB_ENGINE = cfg.database.dbtype;
|
||||
INVENTREE_DB_NAME = cfg.database.dbname;
|
||||
INVENTREE_DB_HOST = cfg.database.dbhost;
|
||||
INVENTREE_DB_USER = cfg.database.dbuser;
|
||||
INVENTREE_DB_PORT = toString cfg.database.dbport;
|
||||
|
||||
INVENTREE_CONFIG_FILE = lib.mkDefault "${cfg.dataDir}/config/config.yaml";
|
||||
INVENTREE_OIDC_PRIVATE_KEY_FILE = lib.mkDefault "${cfg.dataDir}/config/oidc_private_key.txt";
|
||||
INVENTREE_STATIC_ROOT = lib.mkDefault "${cfg.dataDir}/data/static_root";
|
||||
INVENTREE_MEDIA_ROOT = lib.mkDefault "${cfg.dataDir}/data/media";
|
||||
INVENTREE_BACKUP_DIR = lib.mkDefault "${cfg.dataDir}/data/backups";
|
||||
INVENTREE_SITE_URL = lib.mkDefault "http://${cfg.domain}";
|
||||
INVENTREE_PLUGIN_FILE = lib.mkDefault "${cfg.dataDir}/data/plugins/plugins.txt";
|
||||
INVENTREE_PLUGIN_DIR = lib.mkDefault "${cfg.dataDir}/data/plugins";
|
||||
INVENTREE_ADMIN_PASSWORD_FILE = lib.mkDefault cfg.adminPasswordFile;
|
||||
INVENTREE_SECRET_KEY_FILE = lib.mkDefault cfg.secretKeyFile;
|
||||
INVENTREE_AUTO_UPDATE = lib.mkDefault "false";
|
||||
};
|
||||
environment.systemPackages = [ manage ];
|
||||
systemd.tmpfiles.rules = (
|
||||
map (dir: "d ${dir} 0755 inventree inventree") [
|
||||
"${cfg.dataDir}"
|
||||
"${cfg.dataDir}/config"
|
||||
"${cfg.dataDir}/data"
|
||||
"${cfg.dataDir}/data/static_root"
|
||||
"${cfg.dataDir}/data/media"
|
||||
"${cfg.dataDir}/data/backups"
|
||||
"${cfg.dataDir}/data/plugins"
|
||||
]
|
||||
);
|
||||
|
||||
services.postgresql = lib.mkIf pgsqlLocal {
|
||||
enable = true;
|
||||
ensureDatabases = [ cfg.database.dbname ];
|
||||
ensureUsers = [
|
||||
{
|
||||
name = cfg.database.dbuser;
|
||||
ensureDBOwnership = true;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
services.mysql = lib.mkIf mysqlLocal {
|
||||
enable = true;
|
||||
package = lib.mkDefault pkgs.mariadb;
|
||||
ensureDatabases = [ cfg.database.dbname ];
|
||||
ensureUsers = [
|
||||
{
|
||||
name = cfg.database.dbuser;
|
||||
ensurePermissions = {
|
||||
"${cfg.database.dbname}.*" = "ALL PRIVILEGES";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
services.nginx.enable = true;
|
||||
services.nginx.virtualHosts.${cfg.domain} = {
|
||||
locations =
|
||||
let
|
||||
unixPath = config.systemd.sockets.inventree-server.socketConfig.ListenStream;
|
||||
in
|
||||
{
|
||||
"/" = {
|
||||
extraConfig = ''
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Forwarded-By $server_addr:$server_port;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header CLIENT_IP $remote_addr;
|
||||
|
||||
proxy_pass_request_headers on;
|
||||
|
||||
proxy_redirect off;
|
||||
|
||||
client_max_body_size 100M;
|
||||
|
||||
proxy_buffering off;
|
||||
proxy_request_buffering off;
|
||||
'';
|
||||
proxyPass = "http://unix:${unixPath}";
|
||||
};
|
||||
"/auth" = {
|
||||
extraConfig = ''
|
||||
internal;
|
||||
proxy_pass_request_body off;
|
||||
proxy_set_header Content-Length "";
|
||||
proxy_set_header X-Original-URI $request_uri;
|
||||
'';
|
||||
proxyPass = "http://unix:${unixPath}:/auth/";
|
||||
};
|
||||
"/static/" = {
|
||||
alias = "${cfg.settings.INVENTREE_STATIC_ROOT}/";
|
||||
extraConfig = ''
|
||||
autoindex on;
|
||||
|
||||
# Caching settings
|
||||
expires 30d;
|
||||
add_header Pragma public;
|
||||
add_header Cache-Control "public";
|
||||
'';
|
||||
};
|
||||
"/media/" = {
|
||||
alias = "${cfg.settings.INVENTREE_MEDIA_ROOT}/";
|
||||
extraConfig = ''
|
||||
auth_request /auth;
|
||||
add_header Content-disposition "attachment";
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.inventree-setup = {
|
||||
description = "Inventree setup";
|
||||
wantedBy = [ "inventree.target" ];
|
||||
partOf = [ "inventree.target" ];
|
||||
after = lib.optional mysqlLocal "mysql.service" ++ lib.optional pgsqlLocal "postgresql.target";
|
||||
requires = lib.optional mysqlLocal "mysql.service" ++ lib.optional pgsqlLocal "postgresql.target";
|
||||
before = [
|
||||
"inventree-static.service"
|
||||
"inventree-server.service"
|
||||
"inventree-qcluster.service"
|
||||
];
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
RemainAfterExit = true;
|
||||
PrivateTmp = true;
|
||||
}
|
||||
// lib.optionalAttrs (cfg.database.passwordFile != null) {
|
||||
LoadCredential = "db_password:${cfg.database.passwordFile}";
|
||||
};
|
||||
environment = cfg.settings;
|
||||
script = ''
|
||||
set -euo pipefail
|
||||
umask u=rwx,g=,o=
|
||||
|
||||
${
|
||||
lib.optionalString (cfg.database.passwordFile != null) ''
|
||||
INVENTREE_DB_PASSWORD=$(<"$CREDENTIALS_DIRECTORY/db_password")
|
||||
''
|
||||
} \
|
||||
exec ${pkg}/bin/inventree migrate
|
||||
'';
|
||||
};
|
||||
|
||||
systemd.services.inventree-static = {
|
||||
description = "Inventree static migration";
|
||||
wantedBy = [ "inventree.target" ];
|
||||
partOf = [ "inventree.target" ];
|
||||
before = [ "inventree-server.service" ];
|
||||
environment = cfg.settings;
|
||||
serviceConfig = {
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
StateDirectory = "inventree";
|
||||
PrivateTmp = true;
|
||||
}
|
||||
// lib.optionalAttrs (cfg.database.passwordFile != null) {
|
||||
LoadCredential = "db_password:${cfg.database.passwordFile}";
|
||||
};
|
||||
script = ''
|
||||
${
|
||||
lib.optionalString (cfg.database.passwordFile != null) ''
|
||||
INVENTREE_DB_PASSWORD=$(<"$CREDENTIALS_DIRECTORY/db_password")
|
||||
''
|
||||
} \
|
||||
exec ${pkg}/bin/inventree collectstatic --no-input
|
||||
'';
|
||||
};
|
||||
|
||||
systemd.services.inventree-server = {
|
||||
description = "Inventree Gunicorn service";
|
||||
requiredBy = [ "inventree.target" ];
|
||||
partOf = [ "inventree.target" ];
|
||||
environment = cfg.settings;
|
||||
serviceConfig = {
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
StateDirectory = "inventree";
|
||||
PrivateTmp = true;
|
||||
}
|
||||
// lib.optionalAttrs (cfg.database.passwordFile != null) {
|
||||
LoadCredential = "db_password:${cfg.database.passwordFile}";
|
||||
};
|
||||
script = ''
|
||||
${
|
||||
lib.optionalString (cfg.database.passwordFile != null) ''
|
||||
INVENTREE_DB_PASSWORD=$(<"$CREDENTIALS_DIRECTORY/db_password")
|
||||
''
|
||||
} \
|
||||
exec ${pkg}/bin/gunicorn InvenTree.wsgi
|
||||
'';
|
||||
};
|
||||
|
||||
systemd.sockets.inventree-server = {
|
||||
wantedBy = [ "sockets.target" ];
|
||||
partOf = [ "inventree.target" ];
|
||||
socketConfig.ListenStream = "/run/inventree/gunicorn.socket";
|
||||
};
|
||||
|
||||
systemd.services.inventree-qcluster = {
|
||||
description = "InvenTree qcluster server";
|
||||
requiredBy = [ "inventree.target" ];
|
||||
wantedBy = [ "inventree.target" ];
|
||||
partOf = [ "inventree.target" ];
|
||||
environment = cfg.settings;
|
||||
serviceConfig = {
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
StateDirectory = "inventree";
|
||||
PrivateTmp = true;
|
||||
}
|
||||
// lib.optionalAttrs (cfg.database.passwordFile != null) {
|
||||
LoadCredential = "db_password:${cfg.database.passwordFile}";
|
||||
};
|
||||
script = ''
|
||||
${
|
||||
lib.optionalString (cfg.database.passwordFile != null) ''
|
||||
INVENTREE_DB_PASSWORD=$(<"$CREDENTIALS_DIRECTORY/db_password")
|
||||
''
|
||||
} \
|
||||
exec ${pkg}/bin/inventree qcluster
|
||||
'';
|
||||
};
|
||||
|
||||
systemd.targets.inventree = {
|
||||
description = "Target for all InvenTree services";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
wants = [ "network-online.target" ];
|
||||
after = [ "network-online.target" ];
|
||||
};
|
||||
|
||||
users = lib.optionalAttrs (cfg.user == cfg.user) {
|
||||
users.${cfg.user} = {
|
||||
group = cfg.group;
|
||||
isSystemUser = true;
|
||||
home = cfg.dataDir;
|
||||
};
|
||||
groups.${cfg.group}.members = [ cfg.user ];
|
||||
};
|
||||
}
|
||||
]
|
||||
);
|
||||
}
|
||||
@@ -797,7 +797,6 @@ in
|
||||
installer = handleTest ./installer.nix { };
|
||||
installer-systemd-stage-1 = handleTest ./installer-systemd-stage-1.nix { };
|
||||
intune = runTest ./intune.nix;
|
||||
inventree = runTest ./inventree.nix;
|
||||
invidious = runTest ./invidious.nix;
|
||||
invoiceplane = runTest ./invoiceplane.nix;
|
||||
iodine = runTest ./iodine.nix;
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
{ lib, ... }:
|
||||
{
|
||||
name = "inventree";
|
||||
meta.maintainers = with lib.maintainers; [
|
||||
kurogeek
|
||||
];
|
||||
|
||||
nodes = {
|
||||
psqlTest = {
|
||||
services.inventree = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
mysqlTest = {
|
||||
services.inventree = {
|
||||
enable = true;
|
||||
database.dbtype = "mysql";
|
||||
};
|
||||
};
|
||||
};
|
||||
testScript = ''
|
||||
start_all()
|
||||
psqlTest.wait_for_unit("inventree.target")
|
||||
psqlTest.wait_for_unit("inventree-server.service")
|
||||
psqlTest.wait_for_open_unix_socket("/run/inventree/gunicorn.socket")
|
||||
psqlTest.wait_until_succeeds("curl -sf http://localhost/web")
|
||||
|
||||
mysqlTest.wait_for_unit("inventree.target")
|
||||
mysqlTest.wait_for_unit("inventree-server.service")
|
||||
mysqlTest.wait_for_open_unix_socket("/run/inventree/gunicorn.socket")
|
||||
mysqlTest.wait_until_succeeds("curl -sf http://localhost/web")
|
||||
'';
|
||||
}
|
||||
@@ -5360,8 +5360,8 @@ let
|
||||
mktplcRef = {
|
||||
name = "pretty-ts-errors";
|
||||
publisher = "yoavbls";
|
||||
version = "0.8.3";
|
||||
hash = "sha256-YhYHtn0/en0hOts+s/Imln9WzwSrUhwBJPH1qdISUrM=";
|
||||
version = "0.8.4";
|
||||
hash = "sha256-FyoT9S58aBkq9Q95fC8NaaHlCoUOpCBcOO8+/I33V70=";
|
||||
};
|
||||
meta = {
|
||||
description = "Make TypeScript errors prettier and human-readable in VSCode";
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
fetchFromGitHub,
|
||||
installFonts,
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "alcarin-tengwar";
|
||||
version = "0.83";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Tosche";
|
||||
repo = "Alcarin-Tengwar";
|
||||
rev = "a4530d430ea01871b0b0a54d1de218d2ffde0ea5";
|
||||
hash = "sha256-W1PJ2ABjtGUhWp6XBUq6Zox7uG81tMEs13GidfwgD6Q=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ installFonts ];
|
||||
|
||||
meta = {
|
||||
description = "Typeface designed to provide Tengwar symbols";
|
||||
homepage = "https://github.com/Tosche/Alcarin-Tengwar";
|
||||
license = lib.licenses.ofl;
|
||||
maintainers = with lib.maintainers; [ gs-101 ];
|
||||
platforms = lib.platforms.all;
|
||||
};
|
||||
})
|
||||
@@ -10,11 +10,11 @@
|
||||
}:
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "copilot-language-server";
|
||||
version = "1.448.0";
|
||||
version = "1.453.0";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://github.com/github/copilot-language-server-release/releases/download/${finalAttrs.version}/copilot-language-server-js-${finalAttrs.version}.zip";
|
||||
hash = "sha256-0baWiU6fwJFprJG05YpsXFWXj17ff920sL7hCGV83GI=";
|
||||
hash = "sha256-TOzJhXCogARHgljy6DDG0AbsboAAwwReWEVVlAXzMss=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
{
|
||||
lib,
|
||||
python3Packages,
|
||||
fetchFromGitea,
|
||||
makeWrapper,
|
||||
libjpeg,
|
||||
exiftool,
|
||||
}:
|
||||
|
||||
python3Packages.buildPythonApplication (finalAttrs: {
|
||||
pname = "cropgui";
|
||||
version = "0.9";
|
||||
|
||||
src = fetchFromGitea {
|
||||
domain = "codeberg.org";
|
||||
owner = "jepler";
|
||||
repo = "cropgui";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-pmo36mWTwDzqE5osXUsM3YzOAPXewLjfrDHIg6hCYjY=";
|
||||
};
|
||||
|
||||
pyproject = false;
|
||||
|
||||
nativeBuildInputs = [
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
dependencies = with python3Packages; [
|
||||
pillow
|
||||
tkinter
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/${python3Packages.python.sitePackages}
|
||||
cp *.py $out/${python3Packages.python.sitePackages}
|
||||
|
||||
install -Dm755 cropgui.desktop $out/share/applications/cropgui.desktop
|
||||
install -Dm644 cropgui.png $out/share/icons/hicolor/48x48/apps/cropgui.png
|
||||
|
||||
mkdir -p $out/bin
|
||||
makeWrapper $out/${python3Packages.python.sitePackages}/cropgui.py $out/bin/cropgui \
|
||||
--prefix PATH : ${
|
||||
lib.makeBinPath [
|
||||
libjpeg
|
||||
exiftool
|
||||
]
|
||||
} \
|
||||
--prefix PYTHONPATH : "$out/${python3Packages.python.sitePackages}:$PYTHONPATH"
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Gtk frontend for lossless cropping of jpeg images";
|
||||
homepage = "https://codeberg.org/jepler/cropgui";
|
||||
license = lib.licenses.gpl2Only;
|
||||
maintainers = [ lib.maintainers.dwoffinden ];
|
||||
mainProgram = "cropgui";
|
||||
platforms = lib.platforms.all;
|
||||
};
|
||||
})
|
||||
@@ -9,16 +9,16 @@
|
||||
|
||||
buildGo126Module (finalAttrs: {
|
||||
pname = "crush";
|
||||
version = "0.47.2";
|
||||
version = "0.49.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "charmbracelet";
|
||||
repo = "crush";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-Lmp2DYrlzxVnll9x1jcnw/QgYjhA9RHpciQZ7mAUK5Y=";
|
||||
hash = "sha256-/1Z5S28yJCxjpQwM5hLTmgKU7OxAcxjmBROktQSstTE=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-pBZdmQRnPfvhz66+DGQx/ZMMiYeKBfWThybw4RXsjno=";
|
||||
vendorHash = "sha256-xakV5Alm3EwDk5VkSINxJM1C3uF492QzA+BQkqZ6qB4=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"dependencies": {}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
{
|
||||
lib,
|
||||
buildDubPackage,
|
||||
fetchFromGitHub,
|
||||
}:
|
||||
buildDubPackage (finalAttrs: {
|
||||
pname = "ddhx";
|
||||
version = "0.9.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dd86k";
|
||||
repo = "ddhx";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-AFhxrYncqVnHfro4sUgCT1ZBeL3CUwcwhnGXVuFQ9ak=";
|
||||
};
|
||||
|
||||
dubLock = ./dub-lock.json;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
install -Dm755 ddhx -t $out/bin
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = {
|
||||
description = "Console text-mode hex editor, inspired by GNU nano and vim";
|
||||
homepage = "https://github.com/dd86k/ddhx";
|
||||
changelog = "https://github.com/dd86k/ddhx/releases/tag/v${finalAttrs.version}";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [ lib.maintainers.ryand56 ];
|
||||
platforms = lib.platforms.unix;
|
||||
};
|
||||
})
|
||||
@@ -3,6 +3,7 @@
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
cmake,
|
||||
cppcheck,
|
||||
doxygen,
|
||||
graphviz,
|
||||
pkg-config,
|
||||
@@ -10,7 +11,7 @@
|
||||
nix-update-script,
|
||||
}:
|
||||
let
|
||||
version = "4.2.0";
|
||||
version = "5.0.0";
|
||||
versionPrefix = "gz-cmake${lib.versions.major version}";
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
@@ -21,33 +22,42 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
owner = "gazebosim";
|
||||
repo = "gz-cmake";
|
||||
tag = "${versionPrefix}_${finalAttrs.version}";
|
||||
hash = "sha256-+bMOcGWfcwPhxR9CBp4iH02CZC4oplCjsTDpPDsDnSs=";
|
||||
hash = "sha256-XF7oglj9Xr6F8a+6uowrY5a040yl4FZlFfW/Y0BJwOs=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs examples/test_c_child_requires_c_no_deps.bash
|
||||
substituteInPlace examples/CMakeLists.txt --replace-fail \
|
||||
"$""{CMAKE_INSTALL_LIBDIR}" "${if stdenv.hostPlatform.isDarwin then "lib" else "lib64"}"
|
||||
substituteInPlace examples/CMakeLists.txt \
|
||||
--replace-fail "$""{CMAKE_INSTALL_LIBDIR}" "${
|
||||
if stdenv.hostPlatform.isDarwin then "lib" else "lib64"
|
||||
}"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
cppcheck
|
||||
doxygen
|
||||
graphviz
|
||||
pkg-config
|
||||
python3
|
||||
];
|
||||
|
||||
doBuildExamples = false;
|
||||
|
||||
cmakeFlags = [
|
||||
(lib.cmakeBool "BUILDSYSTEM_TESTING" finalAttrs.doCheck)
|
||||
(lib.cmakeBool "BUILD_TESTING" finalAttrs.doCheck)
|
||||
(lib.cmakeBool "BUILD_EXAMPLES" finalAttrs.doBuildExamples)
|
||||
];
|
||||
|
||||
nativeCheckInputs = [ python3 ];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
# Extract the version by matching the tag's prefix.
|
||||
passthru.updateScript = nix-update-script {
|
||||
extraArgs = [ "--version-regex=${versionPrefix}_([\\d\\.]+)" ];
|
||||
passthru = {
|
||||
# bulk updater selects wrong tag
|
||||
skipBulkUpdates = true;
|
||||
updateScript = nix-update-script {
|
||||
extraArgs = [ "--version-regex=gz-cmake(.*)" ];
|
||||
};
|
||||
};
|
||||
|
||||
meta = {
|
||||
@@ -57,5 +67,6 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
license = lib.licenses.asl20;
|
||||
platforms = lib.platforms.unix;
|
||||
maintainers = with lib.maintainers; [ guelakais ];
|
||||
badPlatforms = lib.platforms.darwin; # hard replicable building error
|
||||
};
|
||||
})
|
||||
|
||||
@@ -21,13 +21,13 @@
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "gz-utils";
|
||||
version = "3.1.1";
|
||||
version = "4.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "gazebosim";
|
||||
repo = "gz-utils";
|
||||
tag = "gz-utils${lib.versions.major finalAttrs.version}_${finalAttrs.version}";
|
||||
hash = "sha256-fYzysdB608jfMb/EbqiGD4hXmPxcaVTUrt9Wx0dBlto=";
|
||||
hash = "sha256-fZonC/o5CNHdK/R3IgEoo1llehy36MwvXPQCgFnP8Ls=";
|
||||
};
|
||||
|
||||
outputs = [
|
||||
|
||||
@@ -1,291 +0,0 @@
|
||||
{
|
||||
fetchFromGitHub,
|
||||
fetchYarnDeps,
|
||||
lib,
|
||||
nodejs,
|
||||
python312,
|
||||
stdenv,
|
||||
yarnBuildHook,
|
||||
yarnConfigHook,
|
||||
yarnInstallHook,
|
||||
}:
|
||||
let
|
||||
python3 = python312.override {
|
||||
self = python3;
|
||||
packageOverrides = self: super: {
|
||||
django = super.django_4;
|
||||
};
|
||||
};
|
||||
|
||||
version = "1.1.10";
|
||||
src = fetchFromGitHub {
|
||||
owner = "inventree";
|
||||
repo = "inventree";
|
||||
tag = "${version}";
|
||||
hash = "sha256-TPB/3pFIU+ui4c+CbqIKTyAfJ/Xepm/RIhZeYhTrgI4=";
|
||||
};
|
||||
|
||||
frontend =
|
||||
let
|
||||
frontendSource = src + "/src/frontend";
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
pname = "inventree-frontend";
|
||||
inherit version;
|
||||
|
||||
src = frontendSource;
|
||||
|
||||
yarnOfflineCache = fetchYarnDeps {
|
||||
yarnLock = finalAttrs.src + "/yarn.lock";
|
||||
hash = "sha256-Ijbkx+INZgsvMhkzo8h/FUY75W3UHnKAdUjQRD8kJZw=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
nodejs
|
||||
yarnConfigHook
|
||||
yarnBuildHook
|
||||
yarnInstallHook
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
mkdir -p $out
|
||||
|
||||
export PATH=$PATH:$TMP/frontend/node_modules/.bin
|
||||
substituteInPlace $TMP/frontend/vite.config.ts --replace-warn "../../src/backend/InvenTree/web/static/web" "$out/static/web"
|
||||
|
||||
npm run extract
|
||||
npm run compile
|
||||
npm run build
|
||||
'';
|
||||
});
|
||||
in
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "inventree";
|
||||
pyproject = true;
|
||||
inherit version src;
|
||||
|
||||
dependencies =
|
||||
with python3.pkgs;
|
||||
[
|
||||
django
|
||||
dj-rest-auth
|
||||
django-allauth
|
||||
django-cleanup
|
||||
django-cors-headers
|
||||
django-crispy-forms
|
||||
django-dbbackup
|
||||
django-error-report-2
|
||||
django-filter
|
||||
django-flags
|
||||
django-formtools
|
||||
django-ical
|
||||
django-import-export
|
||||
django-maintenance-mode
|
||||
django-markdownify
|
||||
django-money
|
||||
django-mptt
|
||||
django-mailbox
|
||||
django-anymail
|
||||
django-q2
|
||||
django-redis
|
||||
django-sesame
|
||||
django-sql-utils
|
||||
django-sslserver
|
||||
django-stdimage
|
||||
django-storages
|
||||
django-structlog
|
||||
django-taggit
|
||||
django-oauth-toolkit
|
||||
django-otp
|
||||
django-user-sessions
|
||||
django-weasyprint
|
||||
standard-imghdr
|
||||
django-xforwardedfor-middleware
|
||||
djangorestframework-simplejwt
|
||||
djangorestframework
|
||||
drf-spectacular
|
||||
|
||||
bleach
|
||||
cryptography
|
||||
distutils
|
||||
dulwich
|
||||
feedparser
|
||||
gunicorn
|
||||
jinja2
|
||||
pdf2image
|
||||
pillow
|
||||
pint
|
||||
python-barcode
|
||||
python-dotenv
|
||||
qrcode
|
||||
pytz
|
||||
pyyaml
|
||||
rapidfuzz
|
||||
sentry-sdk
|
||||
structlog
|
||||
tablib
|
||||
tinycss2
|
||||
weasyprint
|
||||
whitenoise
|
||||
pypdf
|
||||
ppf-datamatrix
|
||||
psycopg2
|
||||
mysqlclient
|
||||
requests-mock
|
||||
|
||||
opentelemetry-api
|
||||
opentelemetry-sdk
|
||||
opentelemetry-exporter-otlp
|
||||
opentelemetry-instrumentation-django
|
||||
opentelemetry-instrumentation-requests
|
||||
opentelemetry-instrumentation-redis
|
||||
opentelemetry-instrumentation-sqlite3
|
||||
opentelemetry-instrumentation-system-metrics
|
||||
opentelemetry-instrumentation-wsgi
|
||||
]
|
||||
++ tablib.optional-dependencies.all
|
||||
++ tablib.optional-dependencies.xls
|
||||
++ tablib.optional-dependencies.xlsx
|
||||
++ djangorestframework-simplejwt.optional-dependencies.crypto
|
||||
++ django-anymail.optional-dependencies.amazon-ses
|
||||
++ django-allauth.optional-dependencies.socialaccount
|
||||
++ django-allauth.optional-dependencies.saml
|
||||
++ django-allauth.optional-dependencies.openid
|
||||
++ django-allauth.optional-dependencies.mfa;
|
||||
|
||||
build-system = [ python3.pkgs.setuptools ];
|
||||
|
||||
prePatch =
|
||||
let
|
||||
skippedCheckFunctions = [
|
||||
"test_task_check_for_updates"
|
||||
"test_download_image"
|
||||
"test_commit_info"
|
||||
"test_rates"
|
||||
"test_download_build_orders"
|
||||
"test_valid_url"
|
||||
"test_refresh_endpoint"
|
||||
"test_download_csv"
|
||||
"test_download_line_items"
|
||||
"test_export"
|
||||
"test_download_xlsx"
|
||||
"test_download_csv"
|
||||
"test_export"
|
||||
"test_part_label_translation"
|
||||
"test_part_download"
|
||||
"test_date_filters"
|
||||
"test_bom_export"
|
||||
"test_hash"
|
||||
"test_date"
|
||||
"test_api_call"
|
||||
"test_function_errors"
|
||||
"test_stocktake_exporter"
|
||||
"test_return"
|
||||
"test_plugin_install"
|
||||
"test_full_process"
|
||||
"test_package_loading"
|
||||
"test_export"
|
||||
"test_users_exist"
|
||||
"test_import_part"
|
||||
"test_model_names"
|
||||
];
|
||||
skippedFuncScripts = builtins.map (funcName: ''
|
||||
grep -rlZ ${funcName} . | while IFS= read -r -d "" file; do
|
||||
substituteInPlace "$file" --replace-fail "${funcName}" "skip_${funcName}"
|
||||
done
|
||||
'') skippedCheckFunctions;
|
||||
in
|
||||
''
|
||||
${lib.concatStringsSep "\n" skippedFuncScripts}
|
||||
'';
|
||||
|
||||
installPhase =
|
||||
let
|
||||
pythonPath = python3.pkgs.makePythonPath dependencies;
|
||||
in
|
||||
''
|
||||
runHook preInstall
|
||||
|
||||
# Don't need to bother with a non-maintained library from ages ago
|
||||
substituteInPlace src/backend/InvenTree/InvenTree/settings.py --replace-fail "django_slowtests.testrunner.DiscoverSlowestTestsRunner" "django.test.runner.DiscoverRunner"
|
||||
|
||||
mkdir -p $out/lib/${pname}/src/backend/InvenTree/web/
|
||||
cp -r src $out/lib/${pname}
|
||||
ln -s ${frontend}/static $out/lib/${pname}/src/backend/InvenTree/web
|
||||
# cp -r ${frontend}/static $out/lib/${pname}/src/backend/InvenTree/web
|
||||
|
||||
chmod +x $out/lib/${pname}/src/backend/InvenTree/manage.py
|
||||
|
||||
makeWrapper $out/lib/${pname}/src/backend/InvenTree/manage.py $out/bin/${pname} \
|
||||
--prefix PYTHONPATH : "${pythonPath}:$out/lib/${pname}/src/backend/InvenTree"
|
||||
|
||||
makeWrapper ${lib.getExe python3.pkgs.gunicorn} $out/bin/gunicorn \
|
||||
--prefix PYTHONPATH : "${pythonPath}:$out/${python3.sitePackages}":"${pythonPath}:$out/lib/${pname}/src/backend/InvenTree"
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
doCheck = true;
|
||||
env = {
|
||||
DJANGO_SETTINGS_MODULE = "InvenTree.settings";
|
||||
};
|
||||
|
||||
checkPhase = ''
|
||||
runHook preCheck
|
||||
|
||||
tmpDir=$(mktemp -d)
|
||||
mkdir -p $tmpDir/media
|
||||
mkdir -p $tmpDir/.cache/fontconfig
|
||||
export HOME=$tmpDir
|
||||
export INVENTREE_STATIC_ROOT=$tmpDir
|
||||
export INVENTREE_MEDIA_ROOT=$tmpDir/media
|
||||
export INVENTREE_BACKUP_DIR=$tmpDir
|
||||
export INVENTREE_DB_ENGINE=django.db.backends.sqlite3
|
||||
export INVENTREE_DB_NAME=inventree.db
|
||||
export INVENTREE_SITE_URL="http://localhost:8000"
|
||||
|
||||
export INVENTREE_PLUGINS_ENABLED=true
|
||||
export INVENTREE_PLUGIN_TESTING=true
|
||||
export INVENTREE_PLUGIN_TESTING_SETUP=true
|
||||
|
||||
pushd src/backend/InvenTree
|
||||
${python3.interpreter} ./manage.py check
|
||||
${python3.interpreter} ./manage.py migrate
|
||||
|
||||
${python3.interpreter} ./manage.py test --failfast
|
||||
popd
|
||||
|
||||
runHook postCheck
|
||||
'';
|
||||
|
||||
nativeCheckInputs = with python3.pkgs; [
|
||||
django-test-migrations
|
||||
pytest-django
|
||||
pytest-env
|
||||
pytestCheckHook
|
||||
invoke
|
||||
coverage
|
||||
pytest-cov
|
||||
pdfminer-six
|
||||
];
|
||||
passthru =
|
||||
let
|
||||
pythonPath = python3.pkgs.makePythonPath dependencies;
|
||||
in
|
||||
{
|
||||
inherit frontend;
|
||||
pythonPath = pythonPath;
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Open Source Inventory Management System";
|
||||
homepage = "https://inventree.org/";
|
||||
changelog = "https://github.com/paperless-ngx/paperless-ngx/releases/tag/${src.tag}";
|
||||
license = lib.licenses.mit;
|
||||
platforms = lib.platforms.linux;
|
||||
mainProgram = "inventree";
|
||||
maintainers = with lib.maintainers; [
|
||||
kurogeek
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,24 +1,24 @@
|
||||
{
|
||||
lib,
|
||||
buildGoModule,
|
||||
buildGo126Module,
|
||||
fetchFromGitHub,
|
||||
installShellFiles,
|
||||
nixosTests,
|
||||
nix-update-script,
|
||||
}:
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
buildGo126Module (finalAttrs: {
|
||||
pname = "miniflux";
|
||||
version = "2.2.17";
|
||||
version = "2.2.18";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "miniflux";
|
||||
repo = "v2";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-Ru9yhI7EhLEdxmB3umOyub/SjmRY+tYxGsh2tEdZGCQ=";
|
||||
hash = "sha256-r5MFYdWV17u2ogxN01w9FpP/ErgqQmTEl5Nizg9FzCY=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-BRgS58D8G6TGo7+jGjlmHrNUvVLgBE5Mm7/A/PekoI8=";
|
||||
vendorHash = "sha256-F1FbenWzokNnF6xiZeqpu5HWs1PZo0WtlZX/ePTvBTE=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
||||
@@ -3,19 +3,26 @@
|
||||
python3Packages,
|
||||
fetchFromGitHub,
|
||||
}:
|
||||
|
||||
python3Packages.buildPythonApplication {
|
||||
python3Packages.buildPythonApplication (finalAttrs: {
|
||||
pname = "owocr";
|
||||
version = "1.7.5-unstable-2024-06-26";
|
||||
version = "1.26.3";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "AuroraWright";
|
||||
repo = "owocr";
|
||||
rev = "743c64aa16a760f87bf5ea1f54364d828eb3eddb"; # no tags
|
||||
hash = "sha256-TXQwJRgRp7fZBN0r4XGVtlb+iOMRqEUf+LbfBG/vsr8=";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-/eee0uOWZgjHKhN3Ie75qxXqlSH1Fm3ipDYkvyIK5LM=";
|
||||
};
|
||||
|
||||
# we use pystray directly to avoid making a new package
|
||||
# that only carries a single patch for windows double click support.
|
||||
# pythonRelaxDeps was not successful in patching
|
||||
postPatch = ''
|
||||
substituteInPlace pyproject.toml \
|
||||
--replace-fail "pystrayfix>=0.19.8" "pystray"
|
||||
'';
|
||||
|
||||
build-system = [ python3Packages.setuptools ];
|
||||
|
||||
dependencies = with python3Packages; [
|
||||
@@ -41,6 +48,13 @@ python3Packages.buildPythonApplication {
|
||||
manga-ocr
|
||||
rapidocr
|
||||
requests # winRT OCR
|
||||
python3Packages.obsws-python
|
||||
python3Packages.pystray
|
||||
python3Packages.pynputfix
|
||||
curl-cffi
|
||||
pygobject3
|
||||
dbus-python
|
||||
pywayland
|
||||
];
|
||||
|
||||
doCheck = false; # no tests
|
||||
@@ -51,4 +65,4 @@ python3Packages.buildPythonApplication {
|
||||
license = lib.licenses.asl20;
|
||||
maintainers = with lib.maintainers; [ sigmanificient ];
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -8,12 +8,12 @@ Subject: [PATCH] fix git hash
|
||||
1 file changed, 2 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/lib/utils/git-hash.ts b/lib/utils/git-hash.ts
|
||||
index 9a8131696..f1f568fb4 100644
|
||||
index 458651a..795bb88 100644
|
||||
--- a/lib/utils/git-hash.ts
|
||||
+++ b/lib/utils/git-hash.ts
|
||||
@@ -1,14 +1,6 @@
|
||||
import { execSync } from 'child_process';
|
||||
|
||||
import { execSync } from 'node:child_process';
|
||||
|
||||
-let gitHash = process.env.HEROKU_SLUG_COMMIT?.slice(0, 8) || process.env.VERCEL_GIT_COMMIT_SHA?.slice(0, 8);
|
||||
-let gitDate: Date | undefined;
|
||||
-if (!gitHash) {
|
||||
@@ -26,5 +26,5 @@ index 9a8131696..f1f568fb4 100644
|
||||
-}
|
||||
+let gitHash = '@GIT_HASH@'.slice(0, 8);
|
||||
+let gitDate = new Date('Thu Jan 1 00:00:00 1970 +0000');
|
||||
|
||||
export { gitHash, gitDate };
|
||||
|
||||
export { gitDate, gitHash };
|
||||
|
||||
@@ -1,45 +1,31 @@
|
||||
diff --git a/scripts/workflow/build-routes.ts b/scripts/workflow/build-routes.ts
|
||||
index 1bbb64cc5..941d86149 100644
|
||||
--- a/scripts/workflow/build-routes.ts
|
||||
+++ b/scripts/workflow/build-routes.ts
|
||||
@@ -1,5 +1,6 @@
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
+import { exit } from 'node:process';
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: RSSHub Nix packagers
|
||||
Date: Mon, 10 Mar 2026 00:00:00 +0000
|
||||
Subject: [PATCH] support BUILD_ROUTES_MODE for offline builds
|
||||
|
||||
Add BUILD_ROUTES_MODE environment variable support to lib/registry.ts
|
||||
so that route metadata can be built using directoryImport without
|
||||
executing module-level code that would trigger network requests.
|
||||
This is required for building in the Nix sandbox (no network access).
|
||||
|
||||
---
|
||||
lib/registry.ts | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/lib/registry.ts b/lib/registry.ts
|
||||
--- a/lib/registry.ts
|
||||
+++ b/lib/registry.ts
|
||||
@@ -56,7 +56,12 @@
|
||||
|
||||
import { parse } from 'tldts';
|
||||
import toSource from 'tosource';
|
||||
@@ -11,17 +12,7 @@ import { getCurrentPath } from '../../lib/utils/helpers';
|
||||
let namespaces: NamespacesType = {};
|
||||
|
||||
const __dirname = getCurrentPath(import.meta.url);
|
||||
|
||||
-const foloAnalysis = await (
|
||||
- await fetch('https://raw.githubusercontent.com/RSSNext/rsshub-docs/refs/heads/main/rsshub-analytics.json', {
|
||||
- headers: {
|
||||
- 'user-agent': config.trueUA,
|
||||
- },
|
||||
- })
|
||||
-).json();
|
||||
-const foloAnalysisResult = foloAnalysis.data as Record<string, { subscriptionCount: number; topFeeds: any[] }>;
|
||||
-const foloAnalysisTop100 = Object.entries(foloAnalysisResult)
|
||||
- .sort((a, b) => b[1].subscriptionCount - a[1].subscriptionCount)
|
||||
- .slice(0, 150);
|
||||
+const foloAnalysisTop100: any[] = [];
|
||||
|
||||
const maintainers: Record<string, string[]> = {};
|
||||
const radar: {
|
||||
@@ -100,7 +91,7 @@ const uniquePaths = [...allRoutePaths].toSorted();
|
||||
const routePathsType = `// This file is auto-generated by scripts/workflow/build-routes.ts
|
||||
// Do not edit manually
|
||||
|
||||
-export type RoutePath =
|
||||
+export type RoutePath =
|
||||
${uniquePaths.map((path) => ` | \`${path}\``).join('\n')};
|
||||
`;
|
||||
|
||||
@@ -110,3 +101,5 @@ fs.writeFileSync(path.join(__dirname, '../../assets/build/maintainers.json'), JS
|
||||
fs.writeFileSync(path.join(__dirname, '../../assets/build/routes.json'), JSON.stringify(namespaces, null, 2));
|
||||
fs.writeFileSync(path.join(__dirname, '../../assets/build/routes.js'), `export default ${JSON.stringify(namespaces, null, 2)}`.replaceAll(/"module": "(.*)"\n/g, `"module": $1\n`));
|
||||
fs.writeFileSync(path.join(__dirname, '../../assets/build/route-paths.ts'), routePathsType);
|
||||
+
|
||||
+exit(0);
|
||||
-if (config.isPackage) {
|
||||
+if (process.env.BUILD_ROUTES_MODE) {
|
||||
+ modules = directoryImport({
|
||||
+ targetDirectoryPath: path.join(__dirname, './routes'),
|
||||
+ importPattern: /\.tsx?$/,
|
||||
+ }) as typeof modules;
|
||||
+} else if (config.isPackage) {
|
||||
namespaces = (await import('../assets/build/routes.js')).default;
|
||||
} else {
|
||||
switch (process.env.NODE_ENV || process.env.VERCEL_ENV) {
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
makeBinaryWrapper,
|
||||
nix-update-script,
|
||||
nodejs,
|
||||
pnpm_9,
|
||||
pnpm_10,
|
||||
fetchPnpmDeps,
|
||||
pnpmConfigHook,
|
||||
replaceVars,
|
||||
@@ -11,39 +12,43 @@
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rsshub";
|
||||
version = "0-unstable-2025-11-28";
|
||||
version = "0-unstable-2026-03-08";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "DIYgod";
|
||||
repo = "RSSHub";
|
||||
rev = "b6dbafe33e0c3e3a4ba5a1edd2da29b70412389f";
|
||||
hash = "sha256-FsevO2nb6leuuRmzCLIy093FCafl3Y/CsSp1ydJOnKY=";
|
||||
rev = "1ad606f40f512f24ec76462299c46066e495603f";
|
||||
hash = "sha256-hHCId59SazbR96fwAlY3De2hH5woklpALXGf9OzyY3A=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
(replaceVars ./0001-fix-git-hash.patch {
|
||||
"GIT_HASH" = finalAttrs.src.rev;
|
||||
GIT_HASH = finalAttrs.src.rev;
|
||||
})
|
||||
./0002-fix-network-call.patch
|
||||
];
|
||||
|
||||
pnpmDeps = fetchPnpmDeps {
|
||||
inherit (finalAttrs) pname version src;
|
||||
pnpm = pnpm_9;
|
||||
fetcherVersion = 3;
|
||||
hash = "sha256-jV+MpdNeaVHut0eUP7F9SmJZuLDGQE8ULR8LsiOE7Ug=";
|
||||
hash = "sha256-aJNc6gY6/OZZp577ZhblRIPBCFXV0rE7w8SbwslQM0k=";
|
||||
pnpm = pnpm_10;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
makeBinaryWrapper
|
||||
nodejs
|
||||
pnpmConfigHook
|
||||
pnpm_9
|
||||
pnpm_10
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
pnpm build
|
||||
# First build route metadata using directoryImport (avoids executing
|
||||
# module-level code that would trigger network requests)
|
||||
BUILD_ROUTES_MODE=1 pnpm run build:routes
|
||||
# Then build the application
|
||||
pnpm run build
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
@@ -57,13 +62,13 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
preFixup = ''
|
||||
makeWrapper ${lib.getExe nodejs} $out/bin/rsshub \
|
||||
--chdir "$out/lib/rsshub" \
|
||||
--set "NODE_ENV" "production" \
|
||||
--set "NO_LOGFILES" "true" \
|
||||
--set "TSX_TSCONFIG_PATH" "$out/lib/rsshub/tsconfig.json" \
|
||||
--append-flags "$out/lib/rsshub/dist/index.mjs"
|
||||
--add-flags "$out/lib/rsshub/dist/index.mjs"
|
||||
'';
|
||||
|
||||
passthru.updateScript = nix-update-script { extraArgs = [ "--version=branch=master" ]; };
|
||||
|
||||
meta = {
|
||||
description = "RSS feed generator";
|
||||
longDescription = ''
|
||||
@@ -75,7 +80,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
new features and bug fixes.
|
||||
'';
|
||||
homepage = "https://docs.rsshub.app";
|
||||
license = lib.licenses.mit;
|
||||
license = lib.licenses.agpl3Only;
|
||||
maintainers = with lib.maintainers; [ xinyangli ];
|
||||
mainProgram = "rsshub";
|
||||
platforms = lib.platforms.all;
|
||||
|
||||
@@ -7,16 +7,16 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "runn";
|
||||
version = "1.3.0";
|
||||
version = "1.6.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "k1LoW";
|
||||
repo = "runn";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-hDPXYGKDTvVFyMU08OeIxp70w9gimgY9qp9j38Ea5bc=";
|
||||
hash = "sha256-zxlPm27RwSXBSq/k7gxY/d4oozU/bpD7AIKZHzGxwh8=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-gLemeaNAmFVm9Ld2b3QTjdlKMye0TpKVSuQHj0ToMN4=";
|
||||
vendorHash = "sha256-RHJkMKCz39M4LEEyicO4SQDL7thcCr93Cj2NrkrkM0c=";
|
||||
|
||||
subPackages = [ "cmd/runn" ];
|
||||
|
||||
|
||||
@@ -2,31 +2,34 @@
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
gcc,
|
||||
lua54Packages,
|
||||
lua55Packages,
|
||||
readline,
|
||||
}:
|
||||
lua54Packages.buildLuaPackage {
|
||||
lua55Packages.buildLuaPackage {
|
||||
pname = "sbarLua";
|
||||
version = "0-unstable-2024-08-12";
|
||||
version = "0-unstable-2026-03-06";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "FelixKratz";
|
||||
repo = "SbarLua";
|
||||
rev = "437bd2031da38ccda75827cb7548e7baa4aa9978";
|
||||
hash = "sha256-F0UfNxHM389GhiPQ6/GFbeKQq5EvpiqQdvyf7ygzkPg=";
|
||||
rev = "dba9cc421b868c918d5c23c408544a28aadf2f2f";
|
||||
hash = "sha256-lhLTrdufA3ALJ2S5HLdgNOr5seWIWEHkVhZNPObzbvI=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ gcc ];
|
||||
|
||||
buildInputs = [ readline ];
|
||||
|
||||
makeFlags = [ "INSTALL_DIR=$(out)/lib/lua/${lua54Packages.lua.luaversion}" ];
|
||||
makeFlags = [ "INSTALL_DIR=$(out)/lib/lua/${lua55Packages.lua.luaversion}" ];
|
||||
|
||||
meta = {
|
||||
description = "Lua API for SketchyBar";
|
||||
homepage = "https://github.com/FelixKratz/SbarLua/";
|
||||
license = lib.licenses.gpl3;
|
||||
maintainers = [ lib.maintainers.khaneliman ];
|
||||
maintainers = [
|
||||
lib.maintainers.khaneliman
|
||||
lib.maintainers.kaynetik
|
||||
];
|
||||
platforms = lib.platforms.darwin;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -11,13 +11,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "schemesh";
|
||||
version = "0.9.3";
|
||||
version = "1.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cosmos72";
|
||||
repo = "schemesh";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-OhQpXFg3eroVpw4zkENM4zwqHqGNolstlq9oLhQ2cbY=";
|
||||
hash = "sha256-Tt3pxzti/Vv5JiP0kiplv6gOPiFU75tKoKyvpEPPztw=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
# Generated by ./update.sh - do not update manually!
|
||||
# Last updated: 2025-12-15
|
||||
# Last updated: 2026-03-14
|
||||
{ fetchurl }:
|
||||
{
|
||||
aarch64-darwin = {
|
||||
version = "4.47.72";
|
||||
version = "4.48.100";
|
||||
src = fetchurl {
|
||||
url = "https://downloads.slack-edge.com/desktop-releases/mac/arm64/4.47.72/Slack-4.47.72-macOS.dmg";
|
||||
hash = "sha256-AihMQAjMMRWJftQOp9gnIC/df8nnrKnkpRym8sdtUkA=";
|
||||
url = "https://downloads.slack-edge.com/desktop-releases/mac/arm64/4.48.100/Slack-4.48.100-macOS.dmg";
|
||||
hash = "sha256-vzgxVBRncNQ4mchSgbe9vm3kEiPXHeMlhm3Xq4COi7A=";
|
||||
};
|
||||
};
|
||||
x86_64-darwin = {
|
||||
version = "4.47.72";
|
||||
version = "4.48.100";
|
||||
src = fetchurl {
|
||||
url = "https://downloads.slack-edge.com/desktop-releases/mac/x64/4.47.72/Slack-4.47.72-macOS.dmg";
|
||||
hash = "sha256-H1Dqtlqz1FxDqq4iAZJsTkugLp+WVU9fKB+H19l+vug=";
|
||||
url = "https://downloads.slack-edge.com/desktop-releases/mac/x64/4.48.100/Slack-4.48.100-macOS.dmg";
|
||||
hash = "sha256-5IEIgDxdE2Pnpy3gkJT3Cwzo3hRoTPziFAj30SnapVQ=";
|
||||
};
|
||||
};
|
||||
x86_64-linux = {
|
||||
version = "4.47.72";
|
||||
version = "4.48.100";
|
||||
src = fetchurl {
|
||||
url = "https://downloads.slack-edge.com/desktop-releases/linux/x64/4.47.72/slack-desktop-4.47.72-amd64.deb";
|
||||
hash = "sha256-o1WOTBG5u4jL+NGbTEZq+afM2UwUJZ0gtsWKsnsOkvE=";
|
||||
url = "https://downloads.slack-edge.com/desktop-releases/linux/x64/4.48.100/slack-desktop-4.48.100-amd64.deb";
|
||||
hash = "sha256-un+GE8zKDrag6YQMYN8+0ki7J3877FfMFqqucHhPBgk=";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -9,19 +9,19 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "tombi";
|
||||
version = "0.9.2";
|
||||
version = "0.9.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "tombi-toml";
|
||||
repo = "tombi";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-K3kdIGOUADliz0X2UMwFpzOnQ9/q0HnmHCz45A2Zi8w=";
|
||||
hash = "sha256-sqzdZqs8qMCA3VSXPsBTVZ4fgZUogVl7mQKnbateV/Y=";
|
||||
};
|
||||
|
||||
# Tests relies on the presence of network
|
||||
doCheck = false;
|
||||
cargoBuildFlags = [ "--package tombi-cli" ];
|
||||
cargoHash = "sha256-+MKyDJIbPyfnQPJV3pM+USdMrxIgloTGbSwpi1R+eTg=";
|
||||
cargoHash = "sha256-bW7VfL/3XIGVhQOPNDXURsolGG3gBHAsTEC7FO2P0bI=";
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace Cargo.toml \
|
||||
|
||||
@@ -5,11 +5,12 @@
|
||||
copyDesktopItems,
|
||||
makeDesktopItem,
|
||||
openjdk,
|
||||
writeScript,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "visual-paradigm-ce";
|
||||
version = "17.3.20260101";
|
||||
version = "18.0.20260303";
|
||||
|
||||
src =
|
||||
let
|
||||
@@ -21,9 +22,20 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
url = "https://eu10-dl.visual-paradigm.com/visual-paradigm/vpce${majorMinor}/${suffix}/Visual_Paradigm_CE_${
|
||||
builtins.replaceStrings [ "." ] [ "_" ] majorMinor
|
||||
}_${suffix}_Linux64_InstallFree.tar.gz";
|
||||
hash = "sha256-RAujr6tws3HTyoZc6/MTbc5HEqyX9XmSl4IPJNayjQA=";
|
||||
hash = "sha256-n6cijv9ndliqcvcbIOnMB/mwIjkOzWe1AcJZB+HdHBg=";
|
||||
};
|
||||
|
||||
passthru.updateScript = writeScript "update-visual-paradigm-ce" ''
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p curl gnused common-updater-scripts
|
||||
|
||||
set -eu -o pipefail
|
||||
|
||||
version = "$(curl -Ls -o /dev/null -w %{url_effective} https://www.visual-paradigm.com/downloads/vpce/checksum.html | sed -E 's#.*/vpce([0-9]+\.[0-9]+)/([0-9]+)/.*#\1.\2#')"
|
||||
|
||||
update-source-version visual-paradigm-ce "$version"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
copyDesktopItems
|
||||
];
|
||||
|
||||
@@ -44,18 +44,21 @@ let
|
||||
{
|
||||
aarch64-darwin = any-darwin;
|
||||
x86_64-darwin = any-darwin;
|
||||
# use https://web.archive.org/save to archive the Linux versions
|
||||
# add `if_` at the end of timestamps to avoid toolbar insertion
|
||||
# for a more complicated guide, see https://en.wikipedia.org/wiki/Help:Using_the_Wayback_Machine
|
||||
aarch64-linux = {
|
||||
version = "4.1.0.13";
|
||||
version = "4.1.1.4";
|
||||
src = fetchurl {
|
||||
url = "https://web.archive.org/web/20251209092116if_/https://dldir1v6.qq.com/weixin/Universal/Linux/WeChatLinux_arm64.AppImage";
|
||||
hash = "sha256-/d5crM6IGd0k0fSlBSQx4TpIVX/8iib+an0VMkWMNdw=";
|
||||
url = "https://web.archive.org/web/20260311102559if_/https://dldir1v6.qq.com/weixin/Universal/Linux/WeChatLinux_arm64.AppImage";
|
||||
hash = "sha256-YlWJxT62tXDaNwYVpsPMC5elFH8fsbI1HjTQn6ePiPo=";
|
||||
};
|
||||
};
|
||||
x86_64-linux = {
|
||||
version = "4.1.0.13";
|
||||
version = "4.1.1.4";
|
||||
src = fetchurl {
|
||||
url = "https://web.archive.org/web/20251219062558if_/https://dldir1v6.qq.com/weixin/Universal/Linux/WeChatLinux_x86_64.AppImage";
|
||||
hash = "sha256-+r5Ebu40GVGG2m2lmCFQ/JkiDsN/u7XEtnLrB98602w=";
|
||||
url = "https://web.archive.org/web/20260311102439if_/https://dldir1v6.qq.com/weixin/Universal/Linux/WeChatLinux_x86_64.AppImage";
|
||||
hash = "sha256-XxAvFnlljqurGPDgRr+DnuCKbdVvgXBPh02DLHY3Oz8=";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,80 +0,0 @@
|
||||
{
|
||||
buildPythonPackage,
|
||||
coverage,
|
||||
django,
|
||||
django-storages,
|
||||
fetchFromGitHub,
|
||||
flake8,
|
||||
gnupg,
|
||||
lib,
|
||||
pep8,
|
||||
psycopg2,
|
||||
pylint,
|
||||
pytest-django,
|
||||
pytestCheckHook,
|
||||
python-dotenv,
|
||||
python-gnupg,
|
||||
pytz,
|
||||
setuptools,
|
||||
testfixtures,
|
||||
tox,
|
||||
pythonOlder,
|
||||
}:
|
||||
buildPythonPackage rec {
|
||||
pname = "django-dbbackup";
|
||||
version = "4.3.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "django-dbbackup";
|
||||
repo = "django-dbbackup";
|
||||
tag = version;
|
||||
hash = "sha256-w+LfU5I7swnCJpwqBqoCTRUCZjKoIxK3OC+8CrihLEI=";
|
||||
};
|
||||
|
||||
disabled = pythonOlder "3.9";
|
||||
|
||||
dependencies = [
|
||||
django
|
||||
python-gnupg
|
||||
pytz
|
||||
];
|
||||
|
||||
build-system = [ setuptools ];
|
||||
doCheck = true;
|
||||
preCheck = ''
|
||||
tempDir=$(mktemp -d)
|
||||
export HOME=$tempDir
|
||||
export DJANGO_SETTINGS_MODULE=dbbackup.tests.settings
|
||||
'';
|
||||
pythonImportsCheck = [ "dbbackup" ];
|
||||
disabledTestPaths = [
|
||||
# Specific gnupg version required, which aren't provided in upstream
|
||||
"dbbackup/tests/commands/test_dbrestore.py::DbrestoreCommandRestoreBackupTest::test_decrypt"
|
||||
"dbbackup/tests/test_connectors/test_base.py::BaseCommandDBConnectorTest::test_run_command_with_parent_env"
|
||||
"dbbackup/tests/test_utils.py::Encrypt_FileTest::test_func"
|
||||
"dbbackup/tests/test_utils.py::Compress_FileTest::test_func"
|
||||
];
|
||||
nativeCheckInputs = [
|
||||
coverage
|
||||
django-storages
|
||||
flake8
|
||||
gnupg
|
||||
pep8
|
||||
psycopg2
|
||||
pylint
|
||||
pytest-django
|
||||
pytestCheckHook
|
||||
python-dotenv
|
||||
testfixtures
|
||||
tox
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Management commands to help backup and restore your project database and media files";
|
||||
homepage = "https://github.com/Archmonger/django-dbbackup";
|
||||
changelog = "https://github.com/Archmonger/django-dbbackup/releases/tag/${version}";
|
||||
license = licenses.bsd3;
|
||||
maintainers = with maintainers; [ kurogeek ];
|
||||
};
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
buildPythonPackage,
|
||||
django,
|
||||
fetchFromGitHub,
|
||||
lib,
|
||||
setuptools,
|
||||
pythonOlder,
|
||||
}:
|
||||
buildPythonPackage rec {
|
||||
pname = "django-error-report-2";
|
||||
version = "0.4.2";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "matmair";
|
||||
repo = "django-error-report-2";
|
||||
tag = version;
|
||||
hash = "sha256-ZCaslqgruJxM8345/jSlZGruM+27H9hvwL0wtPkUzc0=";
|
||||
};
|
||||
|
||||
disabled = pythonOlder "3.6";
|
||||
|
||||
dependencies = [
|
||||
django
|
||||
];
|
||||
|
||||
build-system = [ setuptools ];
|
||||
# There is no tests on upstream
|
||||
doCheck = false;
|
||||
pythonImportsCheck = [ "error_report" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Log/View Django server errors.";
|
||||
homepage = "https://github.com/matmair/django-error-report-2";
|
||||
changelog = "https://github.com/matmair/django-error-report-2/releases/tag/${version}";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ kurogeek ];
|
||||
};
|
||||
}
|
||||
@@ -1,60 +0,0 @@
|
||||
{
|
||||
buildPythonPackage,
|
||||
coverage,
|
||||
django,
|
||||
django-debug-toolbar,
|
||||
fetchFromGitHub,
|
||||
jinja2,
|
||||
lib,
|
||||
pytest-django,
|
||||
pytestCheckHook,
|
||||
setuptools-scm,
|
||||
setuptools,
|
||||
}:
|
||||
buildPythonPackage rec {
|
||||
pname = "django-flags";
|
||||
version = "5.2.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cfpb";
|
||||
repo = "django-flags";
|
||||
tag = version;
|
||||
hash = "sha256-4UOueNXfDouTqpLpG391zcGHTTJ8GfznYmEl33YKdv8=";
|
||||
};
|
||||
|
||||
dependencies = [
|
||||
django
|
||||
];
|
||||
|
||||
build-system = [
|
||||
setuptools
|
||||
setuptools-scm
|
||||
];
|
||||
doCheck = true;
|
||||
preCheck = ''
|
||||
export DJANGO_SETTINGS_MODULE=flags.tests.settings
|
||||
'';
|
||||
pythonImportsCheck = [ "flags" ];
|
||||
nativeCheckInputs = [
|
||||
coverage
|
||||
(django-debug-toolbar.overrideAttrs (old: rec {
|
||||
version = "5.2.0";
|
||||
src = old.src.override {
|
||||
tag = version;
|
||||
hash = "sha256-/oWirfJaiHVRI1m3N1QveutX2sag8fjYqJYCZ8BnMa0=";
|
||||
};
|
||||
}))
|
||||
jinja2
|
||||
pytest-django
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Feature flags for Django projects";
|
||||
homepage = "https://github.com/cfpb/django-flags";
|
||||
changelog = "https://github.com/cfpb/django-flags/releases/tag/${version}";
|
||||
license = licenses.cc0;
|
||||
maintainers = with maintainers; [ kurogeek ];
|
||||
};
|
||||
}
|
||||
@@ -1,61 +0,0 @@
|
||||
{
|
||||
buildPythonPackage,
|
||||
django,
|
||||
fetchFromGitHub,
|
||||
lib,
|
||||
pytest-django,
|
||||
pytestCheckHook,
|
||||
setuptools-scm,
|
||||
icalendar,
|
||||
django-recurrence,
|
||||
pythonOlder,
|
||||
}:
|
||||
buildPythonPackage rec {
|
||||
pname = "django-ical";
|
||||
version = "1.9.2";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jazzband";
|
||||
repo = "django-ical";
|
||||
tag = version;
|
||||
hash = "sha256-DUe0loayGcUS7MTyLn+g0KBxbIY7VsaoQNHGSMbMI3U=";
|
||||
};
|
||||
|
||||
disabled = pythonOlder "3.7";
|
||||
|
||||
dependencies = [
|
||||
django
|
||||
django-recurrence
|
||||
# Latest version didn't pass the test
|
||||
(icalendar.overrideAttrs (old: rec {
|
||||
version = "6.0.0";
|
||||
src = old.src.override {
|
||||
tag = "v${version}";
|
||||
hash = "sha256-eWFDY/pNVfcUk3PfB0vXqh9swuSGtflUw44IMDJI+yI=";
|
||||
};
|
||||
}))
|
||||
];
|
||||
|
||||
build-system = [ setuptools-scm ];
|
||||
doCheck = true;
|
||||
preCheck = ''
|
||||
export DJANGO_SETTINGS_MODULE=test_settings
|
||||
'';
|
||||
pythonImportsCheck = [
|
||||
"icalendar"
|
||||
"django_ical"
|
||||
];
|
||||
nativeCheckInputs = [
|
||||
pytest-django
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "iCal feeds for Django based on Django's syndication feed framework.";
|
||||
homepage = "https://github.com/jazzband/django-ical";
|
||||
changelog = "https://github.com/jazzband/django-ical/releases/tag/${version}";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ kurogeek ];
|
||||
};
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
{
|
||||
buildPythonPackage,
|
||||
django,
|
||||
fetchFromGitHub,
|
||||
lib,
|
||||
pytest-django,
|
||||
pytestCheckHook,
|
||||
setuptools,
|
||||
six,
|
||||
pythonOlder,
|
||||
}:
|
||||
buildPythonPackage rec {
|
||||
pname = "django-mailbox";
|
||||
version = "4.10.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "coddingtonbear";
|
||||
repo = "django-mailbox";
|
||||
tag = version;
|
||||
hash = "sha256-7CBUnqveTSfdc+8x8sZUqvwYW3vKjZKfOPVWFSo4es0=";
|
||||
};
|
||||
|
||||
disabled = pythonOlder "3.8";
|
||||
|
||||
dependencies = [
|
||||
django
|
||||
six
|
||||
];
|
||||
|
||||
build-system = [ setuptools ];
|
||||
doCheck = true;
|
||||
preCheck = ''
|
||||
substituteInPlace setup.cfg --replace-fail "pytest" "tool:pytest"
|
||||
export DJANGO_SETTINGS_MODULE=django_mailbox.tests.settings
|
||||
'';
|
||||
pythonImportsCheck = [ "django_mailbox" ];
|
||||
nativeCheckInputs = [
|
||||
pytest-django
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Import mail from POP3, IMAP, local email mailboxes or directly from Postfix or Exim4 into your Django application automatically.";
|
||||
homepage = "https://github.com/coddingtonbear/django-mailbox";
|
||||
changelog = "https://github.com/coddingtonbear/django-mailbox/releases/tag/${version}";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ kurogeek ];
|
||||
};
|
||||
}
|
||||
@@ -1,53 +0,0 @@
|
||||
{
|
||||
buildPythonPackage,
|
||||
django,
|
||||
fetchFromGitHub,
|
||||
lib,
|
||||
pytest-django,
|
||||
pytestCheckHook,
|
||||
setuptools,
|
||||
markdown,
|
||||
bleach,
|
||||
tinycss2,
|
||||
}:
|
||||
buildPythonPackage rec {
|
||||
pname = "django-markdownify";
|
||||
version = "0.9.6";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "erwinmatijsen";
|
||||
repo = "django-markdownify";
|
||||
tag = version;
|
||||
hash = "sha256-L/N0jjxBz7aQletOg+qairgq4utifPz4oqjT9AcljLI=";
|
||||
};
|
||||
|
||||
dependencies = [
|
||||
django
|
||||
markdown
|
||||
bleach
|
||||
];
|
||||
|
||||
build-system = [ setuptools ];
|
||||
doCheck = true;
|
||||
preCheck = ''
|
||||
export DJANGO_SETTINGS_MODULE=markdownify.checks
|
||||
'';
|
||||
nativeCheckInputs = [
|
||||
tinycss2
|
||||
pytest-django
|
||||
pytestCheckHook
|
||||
];
|
||||
pythonImportsCheck = [ "markdownify" ];
|
||||
disabledTests = [
|
||||
# Test settings didn't setup DjangoTemplates
|
||||
"test_markdownify_nodelist"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Markdown template filter for Django";
|
||||
homepage = "https://github.com/erwinmatijsen/django-markdownify";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ kurogeek ];
|
||||
};
|
||||
}
|
||||
@@ -1,52 +0,0 @@
|
||||
{
|
||||
fetchFromGitHub,
|
||||
buildPythonPackage,
|
||||
setuptools,
|
||||
lib,
|
||||
django,
|
||||
py-moneyed,
|
||||
certifi,
|
||||
pytestCheckHook,
|
||||
pytest-django,
|
||||
pytest-cov,
|
||||
}:
|
||||
buildPythonPackage rec {
|
||||
pname = "django-money";
|
||||
version = "3.6.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "django-money";
|
||||
repo = "django-money";
|
||||
tag = version;
|
||||
hash = "sha256-VxAKTtrbDMRhiLxqjVYt7pLGl0sy9F1iwswP/hxQ01k=";
|
||||
};
|
||||
|
||||
dependencies = [
|
||||
django
|
||||
certifi
|
||||
py-moneyed
|
||||
];
|
||||
|
||||
build-system = [ setuptools ];
|
||||
doCheck = true;
|
||||
nativeCheckInputs = [
|
||||
pytestCheckHook
|
||||
pytest-django
|
||||
pytest-cov
|
||||
];
|
||||
pythonImportsCheck = [ "djmoney" ];
|
||||
|
||||
# avoid tests which import mixer, an abandoned library
|
||||
disabledTests = [
|
||||
"test_mixer_blend"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Money fields for Django forms and models.";
|
||||
homepage = "https://github.com/django-money/django-money";
|
||||
changelog = "https://github.com/django-money/django-money/releases/tag/${version}";
|
||||
license = licenses.bsd3;
|
||||
maintainers = with maintainers; [ kurogeek ];
|
||||
};
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
{
|
||||
buildPythonPackage,
|
||||
django,
|
||||
fetchFromGitHub,
|
||||
lib,
|
||||
python-dateutil,
|
||||
pytest-django,
|
||||
pytestCheckHook,
|
||||
pytest-cov,
|
||||
pytest-sugar,
|
||||
setuptools-scm,
|
||||
pythonOlder,
|
||||
}:
|
||||
buildPythonPackage rec {
|
||||
pname = "django-recurrence";
|
||||
version = "1.11.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jazzband";
|
||||
repo = "django-recurrence";
|
||||
tag = version;
|
||||
hash = "sha256-Ytf4fFTVFIQ+6IBhwRMtCkonP0POivv4TrYok37nghA=";
|
||||
};
|
||||
|
||||
disabled = pythonOlder "3.7";
|
||||
|
||||
dependencies = [
|
||||
django
|
||||
python-dateutil
|
||||
];
|
||||
|
||||
build-system = [ setuptools-scm ];
|
||||
doCheck = true;
|
||||
pythonImportsCheck = [ "recurrence" ];
|
||||
nativeCheckInputs = [
|
||||
pytest-django
|
||||
pytest-cov
|
||||
pytest-sugar
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Utility for working with recurring dates in Django.";
|
||||
homepage = "https://github.com/jazzband/django-recurrence";
|
||||
changelog = "https://github.com/jazzband/django-recurrence/releases/tag/${version}";
|
||||
license = licenses.bsd3;
|
||||
maintainers = with maintainers; [ kurogeek ];
|
||||
};
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
{
|
||||
buildPythonPackage,
|
||||
django,
|
||||
lib,
|
||||
fetchurl,
|
||||
setuptools-scm,
|
||||
pythonOlder,
|
||||
}:
|
||||
buildPythonPackage {
|
||||
pname = "django-sslserver";
|
||||
version = "0.22";
|
||||
format = "wheel";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://files.pythonhosted.org/packages/6f/97/e4011f3944f83a7d2aaaf893c3689ad70e8d2ae46fb6e14fd0e3b0c6ce0b/django_sslserver-0.22-py3-none-any.whl";
|
||||
hash = "sha256-xZijY9LM3CQhwI3bPYsJc/gOjkejpbdOSiiW8hwpR8U=";
|
||||
};
|
||||
|
||||
disabled = pythonOlder "3.4";
|
||||
|
||||
dependencies = [
|
||||
django
|
||||
];
|
||||
|
||||
build-system = [ setuptools-scm ];
|
||||
doCheck = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "A SSL-enabled development server for Django";
|
||||
homepage = "https://github.com/teddziuba/django-sslserver";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ kurogeek ];
|
||||
};
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
{
|
||||
buildPythonPackage,
|
||||
django,
|
||||
fetchFromGitHub,
|
||||
lib,
|
||||
pytest-django,
|
||||
pytestCheckHook,
|
||||
setuptools-scm,
|
||||
pillow,
|
||||
pytest-cov,
|
||||
gettext,
|
||||
pythonOlder,
|
||||
pythonAtLeast,
|
||||
}:
|
||||
buildPythonPackage rec {
|
||||
pname = "django-stdimage";
|
||||
version = "6.0.2";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "codingjoe";
|
||||
repo = "django-stdimage";
|
||||
tag = version;
|
||||
hash = "sha256-uwVU3Huc5fitAweShJjcMW//GBeIpJcxqKKLGo/EdIs=";
|
||||
};
|
||||
|
||||
disabled = pythonOlder "3.8" || pythonAtLeast "3.13";
|
||||
|
||||
dependencies = [
|
||||
django
|
||||
pillow
|
||||
];
|
||||
|
||||
build-system = [ setuptools-scm ];
|
||||
nativeBuildInputs = [ gettext ];
|
||||
|
||||
doCheck = true;
|
||||
preCheck = ''
|
||||
export DJANGO_SETTINGS_MODULE=tests.settings
|
||||
'';
|
||||
disabledTests = [
|
||||
# SuspiciousFileOperation: Detected path traversal attempt (Even appear in upstream)
|
||||
"test_variations_override"
|
||||
];
|
||||
pythonImportsCheck = [
|
||||
"stdimage"
|
||||
"stdimage.validators"
|
||||
"stdimage.models"
|
||||
];
|
||||
nativeCheckInputs = [
|
||||
pytest-django
|
||||
pytest-cov
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Django Standardized Image Field";
|
||||
homepage = "https://github.com/codingjoe/django-stdimage";
|
||||
changelog = "https://github.com/codingjoe/django-stdimage/releases/tag/${version}";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ kurogeek ];
|
||||
};
|
||||
}
|
||||
@@ -1,81 +0,0 @@
|
||||
{
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
lib,
|
||||
setuptools,
|
||||
python,
|
||||
pkgs,
|
||||
}:
|
||||
buildPythonPackage rec {
|
||||
pname = "django-structlog";
|
||||
version = "10.0.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jrobichaud";
|
||||
repo = "django-structlog";
|
||||
tag = version;
|
||||
hash = "sha256-BNZ+nk2NK5x2YsTDZjH5BVizXAyLZhKp8zRvkWi068k=";
|
||||
};
|
||||
|
||||
dependencies = with python.pkgs; [
|
||||
colorama
|
||||
django
|
||||
django-allauth
|
||||
crispy-bootstrap5
|
||||
django-crispy-forms
|
||||
django-environ
|
||||
django-extensions
|
||||
django-ipware
|
||||
django-model-utils
|
||||
django-ninja
|
||||
django-redis
|
||||
djangorestframework
|
||||
structlog
|
||||
];
|
||||
|
||||
optional-dependencies.celery = with python.pkgs; [ celery ];
|
||||
|
||||
build-system = [ setuptools ];
|
||||
doCheck = true;
|
||||
preCheck = ''
|
||||
export DJANGO_SETTINGS_MODULE=config.settings.test_demo_app
|
||||
|
||||
${pkgs.valkey}/bin/redis-server &
|
||||
REDIS_PID=$!
|
||||
'';
|
||||
postCheck = ''
|
||||
kill $REDIS_PID
|
||||
'';
|
||||
|
||||
pytestFlags = [
|
||||
"-x"
|
||||
"--cov=./django_structlog_demo_project"
|
||||
"--cov-append django_structlog_demo_project"
|
||||
];
|
||||
pythonImportsCheck = [
|
||||
"structlog"
|
||||
"django_structlog"
|
||||
];
|
||||
|
||||
nativeCheckInputs = with python.pkgs; [
|
||||
celery
|
||||
factory-boy
|
||||
pytest-asyncio
|
||||
pytest-cov
|
||||
pytest-django
|
||||
pytest-mock
|
||||
pytest-sugar
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
__darwinAllowLocalNetworking = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Structured Logging for Django";
|
||||
homepage = "https://github.com/jrobichaud/django-structlog";
|
||||
changelog = "https://github.com/jrobichaud/django-structlog/releases/tag/${version}";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ kurogeek ];
|
||||
};
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
{
|
||||
fetchFromGitHub,
|
||||
buildPythonPackage,
|
||||
setuptools-scm,
|
||||
lib,
|
||||
django,
|
||||
}:
|
||||
buildPythonPackage rec {
|
||||
pname = "django-user-sessions";
|
||||
version = "3.0.3";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jazzband";
|
||||
repo = "django-user-sessions";
|
||||
tag = version;
|
||||
hash = "sha256-vHLeEmlVil1iJi+YkxL5c04Vq/b5b43tjC2ZcjH4/Ys=";
|
||||
};
|
||||
|
||||
dependencies = [
|
||||
django
|
||||
];
|
||||
|
||||
build-system = [ setuptools-scm ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Extend Django sessions with a foreign key back to the user, allowing enumerating all user's sessions.";
|
||||
homepage = "https://github.com/jazzband/django-user-sessions";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ kurogeek ];
|
||||
};
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
{
|
||||
buildPythonPackage,
|
||||
django,
|
||||
fetchFromGitHub,
|
||||
lib,
|
||||
setuptools,
|
||||
}:
|
||||
buildPythonPackage rec {
|
||||
pname = "django-xforwardedfor-middleware";
|
||||
version = "2.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "allo-";
|
||||
repo = "django-xforwardedfor-middleware";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-dDXSb17kXOSeIgY6wid1QFHhUjrapasWgCEb/El51eA=";
|
||||
};
|
||||
|
||||
dependencies = [
|
||||
django
|
||||
];
|
||||
|
||||
build-system = [ setuptools ];
|
||||
doCheck = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Use the X-Forwarded-For header to get the real ip of a request";
|
||||
homepage = "https://github.com/allo-/django-xforwardedfor-middleware";
|
||||
license = licenses.publicDomain;
|
||||
maintainers = with maintainers; [ kurogeek ];
|
||||
};
|
||||
}
|
||||
@@ -11,14 +11,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "gerbonara";
|
||||
version = "1.6.1";
|
||||
version = "1.6.2";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jaseg";
|
||||
repo = "gerbonara";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-kzEjfM9QrT+izwyCnNdN6Bv6lk1rzqs7tfDvERzJzzI=";
|
||||
hash = "sha256-fT13JMoOvKMxdHoagZAmIsGhU3M1S4bEmKUHae+EJcI=";
|
||||
};
|
||||
|
||||
build-system = [ uv-build ];
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
buildPythonPackage,
|
||||
hatchling,
|
||||
tomli,
|
||||
websocket-client,
|
||||
}:
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "obsws-python";
|
||||
version = "5.5";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "aatikturk";
|
||||
repo = "obsws-python";
|
||||
rev = "f70583d7ca250c1f3a0df768d3cfd41663a6023b"; # no tags
|
||||
hash = "sha256-krIiSmn/56Ao4fH6Y7JSQ11Euqt0tIq4JJjxqrt8MZc=";
|
||||
};
|
||||
|
||||
build-system = [ hatchling ];
|
||||
|
||||
dependencies = [
|
||||
tomli
|
||||
websocket-client
|
||||
];
|
||||
|
||||
doCheck = false; # attempts to connect to OBS
|
||||
|
||||
meta = {
|
||||
description = "Python SDK for OBS Studio WebSocket v5.0";
|
||||
homepage = "https://github.com/aatikturk/obsws-python";
|
||||
license = lib.licenses.gpl3Only;
|
||||
maintainers = with lib.maintainers; [ sigmanificient ];
|
||||
};
|
||||
})
|
||||
@@ -1,6 +1,5 @@
|
||||
{
|
||||
buildPythonPackage,
|
||||
pythonOlder,
|
||||
hatchling,
|
||||
opentelemetry-instrumentation,
|
||||
opentelemetry-instrumentation-dbapi,
|
||||
@@ -13,8 +12,6 @@ buildPythonPackage {
|
||||
pname = "opentelemetry-instrumentation-sqlite3";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.8";
|
||||
|
||||
sourceRoot = "${opentelemetry-instrumentation.src.name}/instrumentation/opentelemetry-instrumentation-sqlite3";
|
||||
|
||||
build-system = [ hatchling ];
|
||||
@@ -33,6 +30,6 @@ buildPythonPackage {
|
||||
|
||||
meta = opentelemetry-instrumentation.meta // {
|
||||
homepage = "https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/instrumentation/opentelemetry-instrumentation-sqlite3";
|
||||
description = "OpenTelemetry Instrumentation for Django";
|
||||
description = "OpenTelemetry SQLite3 instrumentation";
|
||||
};
|
||||
}
|
||||
|
||||
+1
-3
@@ -14,8 +14,6 @@ buildPythonPackage {
|
||||
pname = "opentelemetry-instrumentation-system-metrics";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.8";
|
||||
|
||||
sourceRoot = "${opentelemetry-instrumentation.src.name}/instrumentation/opentelemetry-instrumentation-system-metrics";
|
||||
|
||||
build-system = [ hatchling ];
|
||||
@@ -35,6 +33,6 @@ buildPythonPackage {
|
||||
|
||||
meta = opentelemetry-instrumentation.meta // {
|
||||
homepage = "https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/instrumentation/opentelemetry-instrumentation-system-metrics";
|
||||
description = "OpenTelemetry Instrumentation for Django";
|
||||
description = "OpenTelemetry System Metrics Instrumentation";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "peakrdl-rust";
|
||||
version = "0.5.1";
|
||||
version = "0.6.2";
|
||||
|
||||
pyproject = true;
|
||||
|
||||
@@ -19,7 +19,7 @@ buildPythonPackage rec {
|
||||
owner = "darsor";
|
||||
repo = "PeakRDL-rust";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-rcVM7ljFWlEXLxG7ASXE2iZ+WYazeMFE0sgTzkviOP0=";
|
||||
hash = "sha256-YU2JZGC8AF3mhzwozItgqtWsrs4YEltZiP1rNkPfZ7M=";
|
||||
};
|
||||
|
||||
build-system = [ uv-build ];
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
setuptools-scm,
|
||||
pythonOlder,
|
||||
fetchPypi,
|
||||
pytestCheckHook,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "ppf-datamatrix";
|
||||
version = "0.2";
|
||||
format = "pyproject";
|
||||
|
||||
disabled = pythonOlder "3.6";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-jwNNnJDkCPYPixCic7qrgQFMmoHJg9wevcMdTKWsVYI=";
|
||||
};
|
||||
|
||||
doCheck = true;
|
||||
pythonImportsCheck = [ "ppf.datamatrix" ];
|
||||
nativeCheckInputs = [ pytestCheckHook ];
|
||||
|
||||
build-system = [ setuptools-scm ];
|
||||
|
||||
meta = {
|
||||
description = "Pure-python package to generate data matrix codes.";
|
||||
homepage = "https://github.com/adrianschlatter/ppf.datamatrix";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ kurogeek ];
|
||||
};
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchPypi,
|
||||
setuptools,
|
||||
babel,
|
||||
pythonOlder,
|
||||
typing-extensions,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "py-moneyed";
|
||||
version = "3.0";
|
||||
format = "pyproject";
|
||||
|
||||
disabled = pythonOlder "3.7";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-SQbw8CzyuR7bouFW8tTpp48iQFmrjI+i/yYjDHXYlOg=";
|
||||
};
|
||||
|
||||
dependencies = [
|
||||
babel
|
||||
typing-extensions
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "moneyed" ];
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
meta = {
|
||||
description = "Provides Currency and Money classes for use in your Python code.";
|
||||
homepage = "https://github.com/py-moneyed/py-moneyed";
|
||||
license = lib.licenses.bsd3;
|
||||
maintainers = with lib.maintainers; [ kurogeek ];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
gitUpdater,
|
||||
|
||||
# build-system
|
||||
setuptools,
|
||||
setuptools-lint,
|
||||
sphinx,
|
||||
|
||||
# dependencies
|
||||
xlib,
|
||||
evdev,
|
||||
six,
|
||||
|
||||
# tests
|
||||
unittestCheckHook,
|
||||
}:
|
||||
|
||||
buildPythonPackage {
|
||||
pname = "pynputfix";
|
||||
version = "1.8.2";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "AuroraWright";
|
||||
repo = "pynputfix";
|
||||
tag = "1.8.2";
|
||||
hash = "sha256-SKw745hh0G2NoWgUUjShyjiG2NYPd4iJlWx7IeGpW/4=";
|
||||
};
|
||||
|
||||
passthru.updateScript = gitUpdater {
|
||||
rev-prefix = "v";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace setup.py \
|
||||
--replace-fail "'sphinx >=1.3.1'," "" \
|
||||
--replace-fail "'twine >=4.0']" "]"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
setuptools
|
||||
setuptools-lint
|
||||
sphinx
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
six
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isLinux [
|
||||
evdev
|
||||
xlib
|
||||
];
|
||||
|
||||
doCheck = false; # requires running X server
|
||||
|
||||
nativeCheckInputs = [ unittestCheckHook ];
|
||||
|
||||
meta = {
|
||||
broken = stdenv.hostPlatform.isDarwin;
|
||||
description = "Library to control and monitor input devices";
|
||||
homepage = "https://github.com/moses-palmer/pynput";
|
||||
license = lib.licenses.lgpl3;
|
||||
maintainers = with lib.maintainers; [ sigmanificient ];
|
||||
};
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
buildPythonPackage,
|
||||
fetchFromGitLab,
|
||||
setuptools,
|
||||
@@ -47,6 +48,9 @@ buildPythonPackage rec {
|
||||
|
||||
pythonImportsCheck = [ "swh.auth" ];
|
||||
|
||||
# Many broken tests on Darwin. Disabling them for now.
|
||||
doCheck = !stdenv.hostPlatform.isDarwin;
|
||||
|
||||
nativeCheckInputs = [
|
||||
aiocache
|
||||
djangorestframework
|
||||
|
||||
@@ -81,6 +81,9 @@ buildPythonPackage rec {
|
||||
|
||||
__darwinAllowLocalNetworking = true;
|
||||
|
||||
# Many broken tests on Darwin. Disabling them for now.
|
||||
doCheck = !stdenv.hostPlatform.isDarwin;
|
||||
|
||||
nativeCheckInputs = [
|
||||
aiohttp-utils
|
||||
flask
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
buildPythonPackage,
|
||||
fetchFromGitLab,
|
||||
setuptools,
|
||||
@@ -45,6 +46,16 @@ buildPythonPackage rec {
|
||||
pytest-mock
|
||||
];
|
||||
|
||||
disabledTestPaths = [
|
||||
# AssertionError: assert {'author': {'email': b'', 'fullname': b'foo', 'name': b'foo'}, 'date': {'offset_bytes': b'+0200', 'timestamp': {'micro...': 1234567890}}, 'id': b'\x80Y\xdcN\x17\xfc\xd0\xe5\x1c\xa3\xbc\xd6\xb8\x0fEw\xd2\x81\xfd\x08', 'message': b'foo', ...} is None
|
||||
"swh/journal/tests/test_kafka_writer.py"
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
#Fatal Python error: Segmentation fault"
|
||||
"swh/journal/tests/test_client.py"
|
||||
"swh/journal/tests/test_pytest_plugin.py"
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "Persistent logger of changes to the archive, with publish-subscribe support";
|
||||
homepage = "https://gitlab.softwareheritage.org/swh/devel/swh-journal";
|
||||
|
||||
@@ -81,6 +81,9 @@ buildPythonPackage rec {
|
||||
|
||||
pythonImportsCheck = [ "swh.objstorage" ];
|
||||
|
||||
# Many broken tests on Darwin. Disabling them for now.
|
||||
doCheck = !stdenv.hostPlatform.isDarwin;
|
||||
|
||||
enabledTestPaths = [ "swh/objstorage/tests" ];
|
||||
|
||||
nativeCheckInputs = [
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
buildPythonPackage,
|
||||
fetchFromGitLab,
|
||||
setuptools,
|
||||
@@ -65,6 +66,13 @@ buildPythonPackage rec {
|
||||
types-requests
|
||||
];
|
||||
|
||||
disabledTests = lib.optionals (stdenv.hostPlatform.isDarwin) [
|
||||
# Failed: Failed to start the server after 5 seconds.
|
||||
"test_add_provenance_with_release"
|
||||
"test_add_provenance_with_revision"
|
||||
"test_scanner_result"
|
||||
];
|
||||
|
||||
disabledTestPaths = [
|
||||
# pytestRemoveBytecodePhase fails with: "error (ignored): error: opening directory "/tmp/nix-build-python3.12-swh-scanner-0.8.3.drv-5/build/pytest-of-nixbld/pytest-0/test_randomdir_policy_info_cal0/big-directory/dir/dir/dir/ ......"
|
||||
"swh/scanner/tests/test_policy.py"
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
buildPythonPackage,
|
||||
fetchFromGitLab,
|
||||
setuptools,
|
||||
@@ -65,6 +66,9 @@ buildPythonPackage rec {
|
||||
|
||||
pythonImportsCheck = [ "swh.scheduler" ];
|
||||
|
||||
# Many broken tests on Darwin. Disabling them for now.
|
||||
doCheck = !stdenv.hostPlatform.isDarwin;
|
||||
|
||||
nativeCheckInputs = [
|
||||
plotille
|
||||
postgresql
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
stdenv,
|
||||
buildPythonPackage,
|
||||
click,
|
||||
cmake,
|
||||
@@ -62,6 +63,18 @@ buildPythonPackage rec {
|
||||
rm src/swh/shard/*.py
|
||||
'';
|
||||
|
||||
disabledTests = [
|
||||
"test_setup_log_handler_with_env_configuration"
|
||||
]
|
||||
++ lib.optionals (stdenv.hostPlatform.isDarwin) [
|
||||
# assert (51675136 - 51396608) < (100 * 1024)
|
||||
"test_memleak"
|
||||
# ValueError: Cannot convert negative int
|
||||
"test_write_above_rlimit_fsize"
|
||||
# ValueError: Cannot convert negative int
|
||||
"test_finalize_above_rlimit_fsize"
|
||||
];
|
||||
|
||||
meta = {
|
||||
changelog = "https://gitlab.softwareheritage.org/swh/devel/swh-shard/-/tags/v2.2.0";
|
||||
description = "Shard File Format for the Software Heritage Object Storage";
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
buildPythonPackage,
|
||||
fetchFromGitLab,
|
||||
setuptools,
|
||||
@@ -74,6 +75,9 @@ buildPythonPackage rec {
|
||||
|
||||
pythonImportsCheck = [ "swh.storage" ];
|
||||
|
||||
# Many broken tests on Darwin. Disabling them for now.
|
||||
doCheck = !stdenv.hostPlatform.isDarwin;
|
||||
|
||||
nativeCheckInputs = [
|
||||
postgresql
|
||||
postgresqlTestHook
|
||||
|
||||
@@ -12,14 +12,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "wolf-comm";
|
||||
version = "0.0.47";
|
||||
version = "0.0.48";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "janrothkegel";
|
||||
repo = "wolf-comm";
|
||||
tag = version;
|
||||
hash = "sha256-/34smUrsWKNEd5OPPIsDnW3zfq6nhKX3Yp+UBk+Nibw=";
|
||||
hash = "sha256-w+7Z7A7q9RP+9ORYgvcqWDjV/XOUuXvE67LlOyzhSDY=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
@@ -4160,8 +4160,6 @@ self: super: with self; {
|
||||
|
||||
django-currentuser = callPackage ../development/python-modules/django-currentuser { };
|
||||
|
||||
django-dbbackup = callPackage ../development/python-modules/django-dbbackup { };
|
||||
|
||||
django-debug-toolbar = callPackage ../development/python-modules/django-debug-toolbar { };
|
||||
|
||||
django-dynamic-preferences =
|
||||
@@ -4176,8 +4174,6 @@ self: super: with self; {
|
||||
|
||||
django-environ = callPackage ../development/python-modules/django-environ { };
|
||||
|
||||
django-error-report-2 = callPackage ../development/python-modules/django-error-report-2 { };
|
||||
|
||||
django-extensions = callPackage ../development/python-modules/django-extensions { };
|
||||
|
||||
django-filer = callPackage ../development/python-modules/django-filer { };
|
||||
@@ -4186,8 +4182,6 @@ self: super: with self; {
|
||||
|
||||
django-filter = callPackage ../development/python-modules/django-filter { };
|
||||
|
||||
django-flags = callPackage ../development/python-modules/django-flags { };
|
||||
|
||||
django-formset-js-improved =
|
||||
callPackage ../development/python-modules/django-formset-js-improved
|
||||
{ };
|
||||
@@ -4222,8 +4216,6 @@ self: super: with self; {
|
||||
|
||||
django-i18nfield = callPackage ../development/python-modules/django-i18nfield { };
|
||||
|
||||
django-ical = callPackage ../development/python-modules/django-ical { };
|
||||
|
||||
django-import-export = callPackage ../development/python-modules/django-import-export { };
|
||||
|
||||
django-ipware = callPackage ../development/python-modules/django-ipware { };
|
||||
@@ -4252,14 +4244,10 @@ self: super: with self; {
|
||||
callPackage ../development/python-modules/django-login-required-middleware
|
||||
{ };
|
||||
|
||||
django-mailbox = callPackage ../development/python-modules/django-mailbox { };
|
||||
|
||||
django-mailman3 = callPackage ../development/python-modules/django-mailman3 { };
|
||||
|
||||
django-maintenance-mode = callPackage ../development/python-modules/django-maintenance-mode { };
|
||||
|
||||
django-markdownify = callPackage ../development/python-modules/django-markdownify { };
|
||||
|
||||
django-markdownx = callPackage ../development/python-modules/django-markdownx { };
|
||||
|
||||
django-markup = callPackage ../development/python-modules/django-markup { };
|
||||
@@ -4278,8 +4266,6 @@ self: super: with self; {
|
||||
|
||||
django-modeltranslation = callPackage ../development/python-modules/django-modeltranslation { };
|
||||
|
||||
django-money = callPackage ../development/python-modules/django-money { };
|
||||
|
||||
django-mptt = callPackage ../development/python-modules/django-mptt { };
|
||||
|
||||
django-multiselectfield = callPackage ../development/python-modules/django-multiselectfield { };
|
||||
@@ -4348,8 +4334,6 @@ self: super: with self; {
|
||||
|
||||
django-ratelimit = callPackage ../development/python-modules/django-ratelimit { };
|
||||
|
||||
django-recurrence = callPackage ../development/python-modules/django-recurrence { };
|
||||
|
||||
django-redis = callPackage ../development/python-modules/django-redis { };
|
||||
|
||||
django-registration = callPackage ../development/python-modules/django-registration { };
|
||||
@@ -4392,19 +4376,10 @@ self: super: with self; {
|
||||
|
||||
django-sql-utils = callPackage ../development/python-modules/django-sql-utils { };
|
||||
|
||||
django-sslserver = callPackage ../development/python-modules/django-sslserver { };
|
||||
|
||||
django-statici18n = callPackage ../development/python-modules/django-statici18n { };
|
||||
|
||||
django-stdimage = callPackage ../development/python-modules/django-stdimage {
|
||||
django = django_4;
|
||||
pytest-django = pytest-django.override { django = django_4; };
|
||||
};
|
||||
|
||||
django-storages = callPackage ../development/python-modules/django-storages { };
|
||||
|
||||
django-structlog = callPackage ../development/python-modules/django-structlog { };
|
||||
|
||||
django-stubs = callPackage ../development/python-modules/django-stubs { };
|
||||
|
||||
django-stubs-ext = callPackage ../development/python-modules/django-stubs-ext { };
|
||||
@@ -4437,8 +4412,6 @@ self: super: with self; {
|
||||
|
||||
django-types = callPackage ../development/python-modules/django-types { };
|
||||
|
||||
django-user-sessions = callPackage ../development/python-modules/django-user-sessions { };
|
||||
|
||||
django-valkey = callPackage ../development/python-modules/django-valkey { };
|
||||
|
||||
django-versatileimagefield =
|
||||
@@ -4455,10 +4428,6 @@ self: super: with self; {
|
||||
|
||||
django-widget-tweaks = callPackage ../development/python-modules/django-widget-tweaks { };
|
||||
|
||||
django-xforwardedfor-middleware =
|
||||
callPackage ../development/python-modules/django-xforwardedfor-middleware
|
||||
{ };
|
||||
|
||||
# LTS in extended support phase
|
||||
django_4 = callPackage ../development/python-modules/django/4.nix { };
|
||||
|
||||
@@ -11334,6 +11303,8 @@ self: super: with self; {
|
||||
|
||||
obstore = callPackage ../development/python-modules/obstore { };
|
||||
|
||||
obsws-python = callPackage ../development/python-modules/obsws-python { };
|
||||
|
||||
oca-port = callPackage ../development/python-modules/oca-port { };
|
||||
|
||||
ochre = callPackage ../development/python-modules/ochre { };
|
||||
@@ -12758,8 +12729,6 @@ self: super: with self; {
|
||||
|
||||
ppdeep = callPackage ../development/python-modules/ppdeep { };
|
||||
|
||||
ppf-datamatrix = callPackage ../development/python-modules/ppf-datamatrix { };
|
||||
|
||||
ppft = callPackage ../development/python-modules/ppft { };
|
||||
|
||||
ppk2-api = callPackage ../development/python-modules/ppk2-api { };
|
||||
@@ -13128,8 +13097,6 @@ self: super: with self; {
|
||||
|
||||
py-melissa-climate = callPackage ../development/python-modules/py-melissa-climate { };
|
||||
|
||||
py-moneyed = callPackage ../development/python-modules/py-moneyed { };
|
||||
|
||||
py-multiaddr = callPackage ../development/python-modules/py-multiaddr { };
|
||||
|
||||
py-multibase = callPackage ../development/python-modules/py-multibase { };
|
||||
@@ -14367,6 +14334,8 @@ self: super: with self; {
|
||||
|
||||
pynput = callPackage ../development/python-modules/pynput { };
|
||||
|
||||
pynputfix = callPackage ../development/python-modules/pynputfix { };
|
||||
|
||||
pynrrd = callPackage ../development/python-modules/pynrrd { };
|
||||
|
||||
pynslookup = callPackage ../development/python-modules/pynslookup { };
|
||||
|
||||
Reference in New Issue
Block a user