Merge master into staging-next

This commit is contained in:
nixpkgs-ci[bot] 2025-07-05 12:06:19 +00:00 committed by GitHub
commit d5e57e9a43
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
105 changed files with 2508 additions and 1417 deletions

View File

@ -56,6 +56,8 @@
- [mautrix-discord](https://github.com/mautrix/discord), a Matrix-Discord puppeting/relay bridge. Available as [services.mautrix-discord](#opt-services.mautrix-discord.enable). - [mautrix-discord](https://github.com/mautrix/discord), a Matrix-Discord puppeting/relay bridge. Available as [services.mautrix-discord](#opt-services.mautrix-discord.enable).
- [SuiteNumérique Meet](https://github.com/suitenumerique/meet) is an open source alternative to Google Meet and Zoom powered by LiveKit: HD video calls, screen sharing, and chat features. Built with Django and React. Available as [services.lasuite-meet](#opt-services.lasuite-meet.enable).
## Backward Incompatibilities {#sec-release-25.11-incompatibilities} ## Backward Incompatibilities {#sec-release-25.11-incompatibilities}
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. --> <!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->

View File

@ -155,8 +155,9 @@ in
// lib.optionalAttrs (!cfg.waylandFrontend) { // lib.optionalAttrs (!cfg.waylandFrontend) {
GTK_IM_MODULE = "fcitx"; GTK_IM_MODULE = "fcitx";
QT_IM_MODULE = "fcitx"; QT_IM_MODULE = "fcitx";
} };
// lib.optionalAttrs cfg.ignoreUserConfig {
environment.sessionVariables = lib.mkIf cfg.ignoreUserConfig {
SKIP_FCITX_USER_PATH = "1"; SKIP_FCITX_USER_PATH = "1";
}; };
}; };

View File

@ -1596,6 +1596,7 @@
./services/web-apps/komga.nix ./services/web-apps/komga.nix
./services/web-apps/lanraragi.nix ./services/web-apps/lanraragi.nix
./services/web-apps/lasuite-docs.nix ./services/web-apps/lasuite-docs.nix
./services/web-apps/lasuite-meet.nix
./services/web-apps/lemmy.nix ./services/web-apps/lemmy.nix
./services/web-apps/limesurvey.nix ./services/web-apps/limesurvey.nix
./services/web-apps/mainsail.nix ./services/web-apps/mainsail.nix

View File

@ -293,7 +293,7 @@ in
'' ''
mkdir -p $out mkdir -p $out
if [ -d $package/share/man ]; then if [ -d $package/share/man ]; then
find $package/share/man -type f | xargs ${pkgs.python3.pythonOnBuildForHost.interpreter} ${patchedGenerator}/create_manpage_completions.py --directory $out >/dev/null find -L $package/share/man -type f | xargs ${pkgs.python3.pythonOnBuildForHost.interpreter} ${patchedGenerator}/create_manpage_completions.py --directory $out >/dev/null
fi fi
''; '';
in in

View File

@ -150,13 +150,10 @@ in
wantedBy = [ "timers.target" ]; wantedBy = [ "timers.target" ];
timerConfig.OnCalendar = cfg.refreshInterval; timerConfig.OnCalendar = cfg.refreshInterval;
}; };
security.pam.services.sshd.text = lib.mkIf cfg.enableMotdInSSHD (
lib.mkDefault ( security.pam.services.sshd.showMotd = lib.mkIf cfg.enableMotdInSSHD true;
lib.mkAfter '' users.motdFile = lib.mkIf cfg.enableMotdInSSHD "/var/lib/rust-motd/motd";
session optional ${pkgs.pam}/lib/security/pam_motd.so motd=/var/lib/rust-motd/motd
''
)
);
services.openssh.extraConfig = services.openssh.extraConfig =
lib.mkIf (cfg.settings ? last_login && cfg.settings.last_login != { }) lib.mkIf (cfg.settings ? last_login && cfg.settings.last_login != { })
'' ''

View File

@ -0,0 +1,449 @@
{
config,
lib,
pkgs,
utils,
...
}:
let
inherit (lib)
getExe
mapAttrs
mkEnableOption
mkIf
mkPackageOption
mkOption
types
optional
optionalString
;
cfg = config.services.lasuite-meet;
pythonEnvironment = mapAttrs (
_: value:
if value == null then
"None"
else if value == true then
"True"
else if value == false then
"False"
else
toString value
) cfg.settings;
commonServiceConfig = {
RuntimeDirectory = "lasuite-meet";
StateDirectory = "lasuite-meet";
WorkingDirectory = "/var/lib/lasuite-meet";
User = "lasuite-meet";
DynamicUser = true;
SupplementaryGroups = mkIf cfg.redis.createLocally [
config.services.redis.servers.lasuite-meet.group
];
# hardening
AmbientCapabilities = "";
CapabilityBoundingSet = [ "" ];
DevicePolicy = "closed";
LockPersonality = true;
NoNewPrivileges = true;
PrivateDevices = true;
PrivateTmp = true;
PrivateUsers = true;
ProcSubset = "pid";
ProtectClock = true;
ProtectControlGroups = true;
ProtectHome = true;
ProtectHostname = true;
ProtectKernelLogs = true;
ProtectKernelModules = true;
ProtectKernelTunables = true;
ProtectProc = "invisible";
ProtectSystem = "strict";
RemoveIPC = true;
RestrictAddressFamilies = [
"AF_INET"
"AF_INET6"
"AF_UNIX"
];
RestrictNamespaces = true;
RestrictRealtime = true;
RestrictSUIDSGID = true;
SystemCallArchitectures = "native";
MemoryDenyWriteExecute = true;
EnvironmentFile = optional (cfg.environmentFile != null) cfg.environmentFile;
UMask = "0077";
};
in
{
options.services.lasuite-meet = {
enable = mkEnableOption "SuiteNumérique Meet";
backendPackage = mkPackageOption pkgs "lasuite-meet" { };
frontendPackage = mkPackageOption pkgs "lasuite-meet-frontend" { };
bind = mkOption {
type = types.str;
default = "unix:/run/lasuite-meet/gunicorn.sock";
example = "127.0.0.1:8000";
description = ''
The path, host/port or file descriptior to bind the gunicorn socket to.
See <https://docs.gunicorn.org/en/stable/settings.html#bind> for possible options.
'';
};
enableNginx = mkEnableOption "enable and configure Nginx for reverse proxying" // {
default = true;
};
secretKeyPath = mkOption {
type = types.nullOr types.path;
default = null;
description = ''
Path to the Django secret key.
The key can be generated using:
```
python3 -c 'import secrets; print(secrets.token_hex())'
```
If not set, the secret key will be automatically generated.
'';
};
postgresql = {
createLocally = mkEnableOption "Configure local PostgreSQL database server for meet";
};
redis = {
createLocally = mkEnableOption "Configure local Redis cache server for meet";
};
livekit = {
enable = mkEnableOption "Configure local livekit server" // {
default = true;
};
openFirewall = mkEnableOption "Open firewall ports for livekit";
keyFile = mkOption {
type = lib.types.path;
description = ''
LiveKit key file holding one or multiple application secrets.
Use `livekit-server generate-keys` to generate a random key name and secret.
The file should have the YAML format `<keyname>: <secret>`.
Example:
`lasuite-meet: f6lQGaHtM5HfgZjIcec3cOCRfiDqIine4CpZZnqdT5cE`
Individual key/secret pairs need to be passed to clients to connect to this instance.
'';
};
settings = mkOption {
type = types.attrs;
default = { };
description = ''
Settings to pass to the livekit server.
See `services.livekit.settings` for more details.
'';
};
};
gunicorn = {
extraArgs = mkOption {
type = types.listOf types.str;
default = [
"--name=meet"
"--workers=3"
];
description = ''
Extra arguments to pass to the gunicorn process.
'';
};
};
celery = {
extraArgs = mkOption {
type = types.listOf types.str;
default = [ ];
description = ''
Extra arguments to pass to the celery process.
'';
};
};
domain = mkOption {
type = types.str;
description = ''
Domain name of the meet instance.
'';
};
settings = mkOption {
type = types.submodule {
freeformType = types.attrsOf (
types.nullOr (
types.oneOf [
types.str
types.bool
types.path
types.int
]
)
);
options = {
DJANGO_CONFIGURATION = mkOption {
type = types.str;
internal = true;
default = "Production";
description = "The configuration that Django will use";
};
DJANGO_SETTINGS_MODULE = mkOption {
type = types.str;
internal = true;
default = "meet.settings";
description = "The configuration module that Django will use";
};
DJANGO_SECRET_KEY_FILE = mkOption {
type = types.path;
default =
if cfg.secretKeyPath == null then "/var/lib/lasuite-meet/django_secret_key" else cfg.secretKeyPath;
description = "The path to the file containing Django's secret key";
};
DJANGO_DATA_DIR = mkOption {
type = types.path;
default = "/var/lib/lasuite-meet";
description = "Path to the data directory";
};
DJANGO_ALLOWED_HOSTS = mkOption {
type = types.str;
default = if cfg.enableNginx then "localhost,127.0.0.1,${cfg.domain}" else "";
defaultText = lib.literalExpression ''
if cfg.enableNginx then "localhost,127.0.0.1,$${cfg.domain}" else ""
'';
description = "Comma-separated list of hosts that are able to connect to the server";
};
DB_NAME = mkOption {
type = types.str;
default = "lasuite-meet";
description = "Name of the database";
};
DB_USER = mkOption {
type = types.str;
default = "lasuite-meet";
description = "User of the database";
};
DB_HOST = mkOption {
type = types.nullOr types.str;
default = if cfg.postgresql.createLocally then "/run/postgresql" else null;
description = "Host of the database";
};
REDIS_URL = mkOption {
type = types.nullOr types.str;
default =
if cfg.redis.createLocally then
"unix://${config.services.redis.servers.lasuite-meet.unixSocket}?db=0"
else
null;
description = "URL of the redis backend";
};
CELERY_BROKER_URL = mkOption {
type = types.nullOr types.str;
default =
if cfg.redis.createLocally then
"redis+socket://${config.services.redis.servers.lasuite-meet.unixSocket}?db=1"
else
null;
description = "URL of the redis backend for celery";
};
LIVEKIT_API_URL = mkOption {
type = types.nullOr types.str;
default = if cfg.enableNginx && cfg.livekit.enable then "http://${cfg.domain}/livekit" else null;
defaultText = lib.literalExpression ''
if cfg.enableNginx && cfg.livekit.enable then
"http://$${cfg.domain}/livekit"
else
null
'';
description = "URL to the livekit server";
};
};
};
default = { };
example = ''
{
DJANGO_ALLOWED_HOSTS = "*";
}
'';
description = ''
Configuration options of meet.
See https://github.com/suitenumerique/meet/blob/v${cfg.backendPackage.version}/docs/env.md
`REDIS_URL` and `CELERY_BROKER_URL` are set if `services.lasuite-meet.redis.createLocally` is true.
`DB_NAME` `DB_USER` and `DB_HOST` are set if `services.lasuite-meet.postgresql.createLocally` is true.
'';
};
environmentFile = mkOption {
type = types.nullOr types.path;
default = null;
description = ''
Path to environment file.
This can be useful to pass secrets to meet via tools like `agenix` or `sops`.
'';
};
};
config = mkIf cfg.enable {
systemd.services.lasuite-meet = {
description = "Meet from SuiteNumérique";
after =
[ "network.target" ]
++ (optional cfg.postgresql.createLocally "postgresql.service")
++ (optional cfg.redis.createLocally "redis-lasuite-meet.service");
wants =
(optional cfg.postgresql.createLocally "postgresql.service")
++ (optional cfg.redis.createLocally "redis-lasuite-meet.service");
wantedBy = [ "multi-user.target" ];
preStart = ''
ln -sfT ${cfg.backendPackage}/share/static /var/lib/lasuite-meet/static
if [ ! -f .version ]; then
touch .version
fi
if [ "${cfg.backendPackage.version}" != "$(cat .version)" ]; then
${getExe cfg.backendPackage} migrate
echo -n "${cfg.backendPackage.version}" > .version
fi
${optionalString (cfg.secretKeyPath == null) ''
if [[ ! -f /var/lib/lasuite-meet/django_secret_key ]]; then
(
umask 0377
tr -dc A-Za-z0-9 < /dev/urandom | head -c64 | ${pkgs.moreutils}/bin/sponge /var/lib/lasuite-meet/django_secret_key
)
fi
''}
'';
environment = pythonEnvironment;
serviceConfig = {
ExecStart = utils.escapeSystemdExecArgs (
[
(lib.getExe' cfg.backendPackage "gunicorn")
"--bind=${cfg.bind}"
]
++ cfg.gunicorn.extraArgs
++ [ "meet.wsgi:application" ]
);
} // commonServiceConfig;
};
systemd.services.lasuite-meet-celery = {
description = "Meet Celery broker from SuiteNumérique";
after =
[ "network.target" ]
++ (optional cfg.postgresql.createLocally "postgresql.service")
++ (optional cfg.redis.createLocally "redis-lasuite-meet.service");
wants =
(optional cfg.postgresql.createLocally "postgresql.service")
++ (optional cfg.redis.createLocally "redis-lasuite-meet.service");
wantedBy = [ "multi-user.target" ];
environment = pythonEnvironment;
serviceConfig = {
ExecStart = utils.escapeSystemdExecArgs (
[ (lib.getExe' cfg.backendPackage "celery") ]
++ cfg.celery.extraArgs
++ [
"--app=meet.celery_app"
"worker"
]
);
} // commonServiceConfig;
};
services.postgresql = mkIf cfg.postgresql.createLocally {
enable = true;
ensureDatabases = [ "lasuite-meet" ];
ensureUsers = [
{
name = "lasuite-meet";
ensureDBOwnership = true;
}
];
};
services.redis.servers.lasuite-meet = mkIf cfg.redis.createLocally { enable = true; };
services.livekit = mkIf cfg.livekit.enable {
inherit (cfg.livekit)
enable
settings
keyFile
openFirewall
;
};
services.nginx = mkIf cfg.enableNginx {
enable = true;
virtualHosts.${cfg.domain} = {
root = cfg.frontendPackage;
extraConfig = ''
error_page 404 = /index.html;
'';
locations."/api" = {
proxyPass = "http://${cfg.bind}";
recommendedProxySettings = true;
};
locations."/admin" = {
proxyPass = "http://${cfg.bind}";
recommendedProxySettings = true;
};
locations."/livekit" = mkIf cfg.livekit.enable {
proxyPass = "http://localhost:${toString config.services.livekit.settings.port}";
recommendedProxySettings = true;
proxyWebsockets = true;
extraConfig = ''
rewrite ^/livekit/(.*)$ /$1 break;
'';
};
};
};
};
meta = {
buildDocsInSandbox = false;
maintainers = [ lib.maintainers.soyouzpanda ];
};
}

View File

@ -164,7 +164,7 @@ in
nginx.virtualHosts.${cfgN.hostName}.locations."^~ /push/" = { nginx.virtualHosts.${cfgN.hostName}.locations."^~ /push/" = {
proxyPass = "http://unix:${cfg.socketPath}"; proxyPass = "http://unix:${cfg.socketPath}";
proxyWebsockets = true; proxyWebsockets = true;
recommendedProxySettings = true; recommendedProxySettings = lib.mkDefault true;
extraConfig = # nginx extraConfig = # nginx
'' ''
# disable in case it was configured on a higher level # disable in case it was configured on a higher level

View File

@ -577,11 +577,14 @@ in
config = { config = {
dbtype = mkOption { dbtype = mkOption {
type = types.enum [ type = types.nullOr (
types.enum [
"sqlite" "sqlite"
"pgsql" "pgsql"
"mysql" "mysql"
]; ]
);
default = null;
description = "Database type."; description = "Database type.";
}; };
dbname = mkOption { dbname = mkOption {
@ -1086,6 +1089,17 @@ in
instead of password. instead of password.
''; '';
} }
{
assertion = cfg.config.dbtype != null;
message = ''
`services.nextcloud.config.dbtype` must be set explicitly (pgsql, mysql, or sqlite)
Before 25.05, it used to default to sqlite but that is not recommended by upstream.
Either set it to sqlite as it used to be, or convert to another type as described
in the official db conversion page:
https://docs.nextcloud.com/server/latest/admin_manual/configuration_database/db_conversion.html
'';
}
]; ];
} }

View File

@ -771,6 +771,7 @@ in
_module.args.latestKernel = true; _module.args.latestKernel = true;
}; };
lasuite-docs = runTest ./web-apps/lasuite-docs.nix; lasuite-docs = runTest ./web-apps/lasuite-docs.nix;
lasuite-meet = runTest ./web-apps/lasuite-meet.nix;
lavalink = runTest ./lavalink.nix; lavalink = runTest ./lavalink.nix;
leaps = runTest ./leaps.nix; leaps = runTest ./leaps.nix;
lemmy = runTest ./lemmy.nix; lemmy = runTest ./lemmy.nix;

View File

@ -0,0 +1,141 @@
{ lib, ... }:
let
domain = "meet.local";
oidcDomain = "127.0.0.1:8080";
in
{
name = "lasuite-meet";
meta.maintainers = with lib.maintainers; [ soyouzpanda ];
nodes.machine =
{ pkgs, ... }:
{
virtualisation.memorySize = 4 * 1024;
networking.hosts."127.0.0.1" = [ domain ];
environment.systemPackages = with pkgs; [ jq ];
services.lasuite-meet = {
enable = true;
enableNginx = true;
livekit = {
enable = true;
keyFile = pkgs.writeText "lasuite-meet-livekit-keys" ''
lasuite-meet: ca50qKzxEXVIu61wHshAyJNzlWw8vlIwUuzxQbUK1rG
'';
};
redis.createLocally = true;
postgresql.createLocally = true;
inherit domain;
settings = {
DJANGO_SECRET_KEY_FILE = pkgs.writeText "django-secret-file" ''
8540db59c03943d48c3ed1a0f96ce3b560e0f45274f120f7ee4dace3cc366a6b
'';
OIDC_OP_JWKS_ENDPOINT = "http://${oidcDomain}/dex/keys";
OIDC_OP_AUTHORIZATION_ENDPOINT = "http://${oidcDomain}/dex/auth/mock";
OIDC_OP_TOKEN_ENDPOINT = "http://${oidcDomain}/dex/token";
OIDC_OP_USER_ENDPOINT = "http://${oidcDomain}/dex/userinfo";
OIDC_RP_CLIENT_ID = "lasuite-meet";
OIDC_RP_SIGN_ALGO = "RS256";
OIDC_RP_SCOPES = "openid email";
OIDC_RP_CLIENT_SECRET = "lasuitemeetclientsecret";
LOGIN_REDIRECT_URL = "http://${domain}";
LOGIN_REDIRECT_URL_FAILURE = "http://${domain}";
LOGOUT_REDIRECT_URL = "http://${domain}";
LIVEKIT_API_KEY = "lasuite-meet";
LIVEKIT_API_SECRET = "ca50qKzxEXVIu61wHshAyJNzlWw8vlIwUuzxQbUK1rG";
# Disable HTTPS feature in tests because we're running on a HTTP connection
DJANGO_SECURE_PROXY_SSL_HEADER = "";
DJANGO_SECURE_SSL_REDIRECT = false;
DJANGO_CSRF_COOKIE_SECURE = false;
DJANGO_SESSION_COOKIE_SECURE = false;
DJANGO_CSRF_TRUSTED_ORIGINS = "http://*";
};
};
services.dex = {
enable = true;
settings = {
issuer = "http://${oidcDomain}/dex";
storage = {
type = "postgres";
config.host = "/var/run/postgresql";
};
web.http = "127.0.0.1:8080";
oauth2.skipApprovalScreen = true;
staticClients = [
{
id = "lasuite-meet";
name = "Meet";
redirectURIs = [ "http://${domain}/api/v1.0/callback/" ];
secretFile = "/etc/dex/lasuite-meet";
}
];
connectors = [
{
type = "mockPassword";
id = "mock";
name = "Example";
config = {
username = "admin";
password = "password";
};
}
];
};
};
environment.etc."dex/lasuite-meet" = {
mode = "0400";
user = "dex";
text = "lasuitemeetclientsecret";
};
services.postgresql = {
enable = true;
ensureDatabases = [ "dex" ];
ensureUsers = [
{
name = "dex";
ensureDBOwnership = true;
}
];
};
};
testScript = ''
with subtest("Wait for units to start"):
machine.wait_for_unit("dex.service")
machine.wait_for_unit("lasuite-meet.service")
machine.wait_for_unit("lasuite-meet-celery.service")
with subtest("Wait for web servers to start"):
machine.wait_until_succeeds("curl -fs 'http://${domain}/api/v1.0/authenticate/'", timeout=120)
machine.wait_until_succeeds("curl -fs '${oidcDomain}/dex/auth/mock?client_id=lasuite-meet&response_type=code&redirect_uri=http://${domain}/api/v1.0/callback/&scope=openid'", timeout=120)
with subtest("Login"):
state, nonce = machine.succeed("curl -fs -c cjar 'http://${domain}/api/v1.0/authenticate/' -w '%{redirect_url}' | sed -n 's/.*state=\\(.*\\)&nonce=\\(.*\\)/\\1 \\2/p'").strip().split(' ')
oidc_state = machine.succeed(f"curl -fs '${oidcDomain}/dex/auth/mock?client_id=lasuite-meet&response_type=code&redirect_uri=http://${domain}/api/v1.0/callback/&scope=openid+email&state={state}&nonce={nonce}' | sed -n 's/.*state=\\(.*\\)\">.*/\\1/p'").strip()
code = machine.succeed(f"curl -fs '${oidcDomain}/dex/auth/mock/login?back=&state={oidc_state}' -d 'login=admin&password=password' -w '%{{redirect_url}}' | sed -n 's/.*code=\\(.*\\)&.*/\\1/p'").strip()
print(f"Got approval code {code}")
machine.succeed(f"curl -fs -c cjar -b cjar 'http://${domain}/api/v1.0/callback/?code={code}&state={state}'")
with subtest("Create a room"):
csrf_token = machine.succeed("grep csrftoken cjar | cut -f 7 | tr -d '\n'")
room_id = machine.succeed(f"curl -fs -c cjar -b cjar 'http://${domain}/api/v1.0/rooms/' -X POST -H 'Content-Type: application/json' -H 'X-CSRFToken: {csrf_token}' -H 'Referer: http://${domain}' -d '{{\"name\": \"aaa-bbbb-ccc\"}}' | jq .id -r").strip()
print(f"Created room with id {room_id}")
'';
}

View File

@ -12,13 +12,13 @@
}: }:
mkLibretroCore { mkLibretroCore {
core = "mupen64plus-next"; core = "mupen64plus-next";
version = "0-unstable-2025-06-04"; version = "0-unstable-2025-07-01";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "libretro"; owner = "libretro";
repo = "mupen64plus-libretro-nx"; repo = "mupen64plus-libretro-nx";
rev = "0346d3ef26016bb4de604cf918d004bd791447ee"; rev = "1b693cdac7c42979f6ef53ffe260a76454f0cf45";
hash = "sha256-DV6X94BHr97S1jW3zNUDx6w35JcEnSFNgv6fCi2amek="; hash = "sha256-hano/fv7LcinEOYfwwzhn+gXTsB8hDav0KQw5XkmXmY=";
}; };
# Fix for GCC 14 # Fix for GCC 14

View File

@ -108,7 +108,6 @@ let
grantleetheme = callPackage ./grantleetheme { }; grantleetheme = callPackage ./grantleetheme { };
gwenview = callPackage ./gwenview { }; gwenview = callPackage ./gwenview { };
incidenceeditor = callPackage ./incidenceeditor.nix { }; incidenceeditor = callPackage ./incidenceeditor.nix { };
itinerary = callPackage ./itinerary.nix { };
juk = callPackage ./juk.nix { }; juk = callPackage ./juk.nix { };
kaccounts-integration = callPackage ./kaccounts-integration.nix { }; kaccounts-integration = callPackage ./kaccounts-integration.nix { };
kaccounts-providers = callPackage ./kaccounts-providers.nix { }; kaccounts-providers = callPackage ./kaccounts-providers.nix { };
@ -271,7 +270,6 @@ let
krecorder = callPackage ./krecorder.nix { }; krecorder = callPackage ./krecorder.nix { };
ktrip = callPackage ./ktrip.nix { }; ktrip = callPackage ./ktrip.nix { };
kweather = callPackage ./kweather.nix { }; kweather = callPackage ./kweather.nix { };
neochat = callPackage ./neochat.nix { };
plasmatube = callPackage ./plasmatube { }; plasmatube = callPackage ./plasmatube { };
qmlkonsole = callPackage ./qmlkonsole.nix { }; qmlkonsole = callPackage ./qmlkonsole.nix { };
telly-skout = callPackage ./telly-skout.nix { }; telly-skout = callPackage ./telly-skout.nix { };

View File

@ -1,73 +0,0 @@
{
mkDerivation,
lib,
extra-cmake-modules,
karchive,
kcalendarcore,
kcontacts,
kdbusaddons,
kfilemetadata,
kholidays,
kio,
kirigami-addons,
kitemmodels,
kitinerary,
kmime,
knotifications,
kosmindoormap,
kpkpass,
kpublictransport,
kunitconversion,
libquotient,
networkmanager-qt,
prison,
qqc2-desktop-style,
qtpositioning,
qtquickcontrols2,
shared-mime-info,
}:
mkDerivation {
pname = "itinerary";
outputs = [
"out"
"dev"
];
nativeBuildInputs = [
extra-cmake-modules
shared-mime-info # for update-mime-database
];
buildInputs = [
karchive
kcalendarcore
kcontacts
kdbusaddons
kfilemetadata
kholidays
kio
kirigami-addons
kitemmodels
kitinerary
kmime
knotifications
kosmindoormap
kpkpass
kpublictransport
kunitconversion
libquotient
networkmanager-qt
prison
qqc2-desktop-style
qtpositioning
qtquickcontrols2
];
meta.license = with lib.licenses; [
asl20
bsd3
cc0
lgpl2Plus
];
}

View File

@ -1,77 +0,0 @@
{
mkDerivation,
lib,
cmake,
extra-cmake-modules,
pkg-config,
wrapQtAppsHook,
cmark,
kconfig,
kdbusaddons,
ki18n,
kio,
kirigami-addons,
kirigami2,
kitemmodels,
knotifications,
kquickcharts,
kquickimageedit,
libpulseaudio,
libquotient,
libsecret,
olm,
qcoro,
qqc2-desktop-style,
qtgraphicaleffects,
qtlocation,
qtmultimedia,
qtquickcontrols2,
sonnet,
}:
mkDerivation {
pname = "neochat";
nativeBuildInputs = [
cmake
extra-cmake-modules
pkg-config
wrapQtAppsHook
];
buildInputs = [
cmark
kconfig
kdbusaddons
kio
ki18n
kirigami-addons
kirigami2
kitemmodels
knotifications
kquickcharts
kquickimageedit
libpulseaudio
libquotient
libsecret
olm
qcoro
qtgraphicaleffects
qtlocation
qtmultimedia
qtquickcontrols2
qqc2-desktop-style
sonnet
];
meta = with lib; {
description = "Client for matrix, the decentralized communication protocol";
mainProgram = "neochat";
homepage = "https://apps.kde.org/en/neochat";
license = licenses.gpl3Only;
maintainers = with maintainers; [ peterhoeg ];
platforms = with platforms; linux;
};
}

View File

@ -331,14 +331,6 @@
name = "incidenceeditor-23.08.5.tar.xz"; name = "incidenceeditor-23.08.5.tar.xz";
}; };
}; };
itinerary = {
version = "23.08.5";
src = fetchurl {
url = "${mirror}/stable/release-service/23.08.5/src/itinerary-23.08.5.tar.xz";
sha256 = "19r7k64a4dalarxm7j2jf2p86cnxqxah0iqj68ibazhl1sdqrqs2";
name = "itinerary-23.08.5.tar.xz";
};
};
juk = { juk = {
version = "23.08.5"; version = "23.08.5";
src = fetchurl { src = fetchurl {
@ -1747,14 +1739,6 @@
name = "minuet-23.08.5.tar.xz"; name = "minuet-23.08.5.tar.xz";
}; };
}; };
neochat = {
version = "23.08.5";
src = fetchurl {
url = "${mirror}/stable/release-service/23.08.5/src/neochat-23.08.5.tar.xz";
sha256 = "0cj6j08g5ng1vifpb49rks9kp4mfb3h466n6afw9dk0xxgccc06k";
name = "neochat-23.08.5.tar.xz";
};
};
okular = { okular = {
version = "23.08.5"; version = "23.08.5";
src = fetchurl { src = fetchurl {

View File

@ -115,14 +115,6 @@
name = "kweather-23.01.0.tar.xz"; name = "kweather-23.01.0.tar.xz";
}; };
}; };
neochat = {
version = "23.01.0";
src = fetchurl {
url = "${mirror}/stable/plasma-mobile/23.01.0/neochat-23.01.0.tar.xz";
sha256 = "0pkas8whwy1ih4sx9vaa7k55iiiy955dh4d53i4l1d0sjdf8pysd";
name = "neochat-23.01.0.tar.xz";
};
};
plasma-dialer = { plasma-dialer = {
version = "23.01.0"; version = "23.01.0";
src = fetchurl { src = fetchurl {

View File

@ -7,13 +7,13 @@
rustPlatform.buildRustPackage (finalAttrs: { rustPlatform.buildRustPackage (finalAttrs: {
pname = "amazon-q-cli"; pname = "amazon-q-cli";
version = "1.12.1"; version = "1.12.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "aws"; owner = "aws";
repo = "amazon-q-developer-cli-autocomplete"; repo = "amazon-q-developer-cli-autocomplete";
tag = "v${finalAttrs.version}"; tag = "v${finalAttrs.version}";
hash = "sha256-oY2hDOsws2WVQPKEFhGNPHITo26p/UZ5XzvRX7DoMyc="; hash = "sha256-TIKG1nzpmjiHE+EjTJR+/GklQNJQeUzmDXaPEiRT80Y=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [
@ -22,7 +22,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
useFetchCargoVendor = true; useFetchCargoVendor = true;
cargoHash = "sha256-xriK88OY6W1cOZVgiUPBIuItVHwEyFNq5Ywh367K6CU="; cargoHash = "sha256-lJbHPqQ3eybo03oZY2VyKlsxcTdbdrc8q8AjV+IahEY=";
cargoBuildFlags = [ cargoBuildFlags = [
"-p" "-p"

View File

@ -6,32 +6,28 @@
python3.pkgs.buildPythonApplication rec { python3.pkgs.buildPythonApplication rec {
pname = "arjun"; pname = "arjun";
version = "2.2.2"; version = "2.2.7";
pyproject = true; pyproject = true;
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "s0md3v"; owner = "s0md3v";
repo = "Arjun"; repo = "Arjun";
tag = version; tag = version;
hash = "sha256-odVUFs517RSp66MymniSeTKTntQtXomjC68Hhdsglf0="; hash = "sha256-XEfCQEvRCvmNQ8yOlaR0nd7knhK1fQIrXEfQgrdVDrs=";
}; };
nativeBuildInputs = with python3.pkgs; [ build-system = with python3.pkgs; [ setuptools ];
setuptools
wheel
];
propagatedBuildInputs = with python3.pkgs; [ dependencies = with python3.pkgs; [
requests
dicttoxml dicttoxml
ratelimit
requests
]; ];
# Project has no tests # Project has no tests
doCheck = false; doCheck = false;
pythonImportsCheck = [ pythonImportsCheck = [ "arjun" ];
"arjun"
];
meta = { meta = {
description = "HTTP parameter discovery suite"; description = "HTTP parameter discovery suite";

View File

@ -9,13 +9,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "arping"; pname = "arping";
version = "2.25"; version = "2.26";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ThomasHabets"; owner = "ThomasHabets";
repo = "arping"; repo = "arping";
rev = "arping-${version}"; rev = "arping-${version}";
hash = "sha256-SAdbgPmApmFToYrAm8acUapZMEMQr5MO7bQOTO2hd2c="; hash = "sha256-uZsUo12ez6sz95fmOg5cmVBJNRH3eEhio8V2efQ29BU=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View File

@ -23,8 +23,7 @@ rustPlatform.buildRustPackage rec {
nativeBuildInputs = [ installShellFiles ]; nativeBuildInputs = [ installShellFiles ];
# 10 passed; 47 failed https://hydra.nixos.org/build/148943783/nixlog/1 __darwinAllowLocalNetworking = true;
doCheck = !stdenv.hostPlatform.isDarwin;
preConfigure = '' preConfigure = ''
export BANDWHICH_GEN_DIR=_shell-files export BANDWHICH_GEN_DIR=_shell-files

View File

@ -16,6 +16,7 @@
xcbutilkeysyms, xcbutilkeysyms,
xcbutilrenderutil, xcbutilrenderutil,
xcbutilwm, xcbutilwm,
libxml2,
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "binaryninja-free"; pname = "binaryninja-free";
@ -66,6 +67,12 @@ stdenv.mkDerivation rec {
xcbutilwm xcbutilwm
]; ];
preFixup = ''
# Fix libxml2 breakage. See https://github.com/NixOS/nixpkgs/pull/396195#issuecomment-2881757108
mkdir -p "$out/lib"
ln -s "${lib.getLib libxml2}/lib/libxml2.so" "$out/lib/libxml2.so.2"
'';
installPhase = '' installPhase = ''
runHook preInstall runHook preInstall
mkdir -p $out/ mkdir -p $out/

View File

@ -15,6 +15,8 @@ stdenv.mkDerivation rec {
sha256 = "sha256-YCE0DXuOT5tCOfLlemMH7I2F8c7HEK1NEUJvtfqnCg8="; sha256 = "sha256-YCE0DXuOT5tCOfLlemMH7I2F8c7HEK1NEUJvtfqnCg8=";
}; };
env.NIX_LDFLAGS = lib.optionalString stdenv.hostPlatform.isDarwin "-framework CoreFoundation";
makeFlags = [ "PREFIX=$(out)" ]; makeFlags = [ "PREFIX=$(out)" ];
installTargets = installTargets =

View File

@ -7,16 +7,16 @@
buildGoModule rec { buildGoModule rec {
pname = "certspotter"; pname = "certspotter";
version = "0.20.0"; version = "0.21.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "SSLMate"; owner = "SSLMate";
repo = "certspotter"; repo = "certspotter";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-CX0YchfX6EwIjH+m1FEHqfuXurg51JC4l+97BgXYXJg="; hash = "sha256-cJIjJyWvy/prx97jUvVToJsEdMa0MpqATD9rO8G2biY=";
}; };
vendorHash = "sha256-+6Gu3y708XXX7CHvZmEh7j3ILNBi/++8Mud34mOrtmA="; vendorHash = "sha256-CLq/QFnZ5OLv7wT+VYr5SkSgmwt1g6cBYcAlB4Z/3wE=";
ldflags = [ ldflags = [
"-s" "-s"

View File

@ -6,11 +6,11 @@
}: }:
let let
pname = "chatbox"; pname = "chatbox";
version = "1.14.1"; version = "1.14.3";
src = fetchurl { src = fetchurl {
url = "https://download.chatboxai.app/releases/Chatbox-${version}-x86_64.AppImage"; url = "https://download.chatboxai.app/releases/Chatbox-${version}-x86_64.AppImage";
hash = "sha256-2k2G6VMO83ztuknr4FRE0eUtsweV0eu9JSNgKaVuatQ="; hash = "sha256-Qsf58SQANBic3LHY52vzCHO9W74cdP0EWtHB2uL45R0=";
}; };
appimageContents = appimageTools.extract { inherit pname version src; }; appimageContents = appimageTools.extract { inherit pname version src; };

View File

@ -9,13 +9,13 @@
buildGoModule rec { buildGoModule rec {
pname = "cilium-cli"; pname = "cilium-cli";
version = "0.18.4"; version = "0.18.5";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "cilium"; owner = "cilium";
repo = "cilium-cli"; repo = "cilium-cli";
tag = "v${version}"; tag = "v${version}";
hash = "sha256-S+LtNIbtZVxk77eySYYZqr+Bicibl7vLo0nqkxUpkME="; hash = "sha256-2lmf0bKmlNt+axgwiNPKcaq08Bf/88sp3JEkS8dkP7M=";
}; };
nativeBuildInputs = [ installShellFiles ]; nativeBuildInputs = [ installShellFiles ];

View File

@ -21,7 +21,7 @@
llvmPackages_19.stdenv.mkDerivation (finalAttrs: { llvmPackages_19.stdenv.mkDerivation (finalAttrs: {
pname = "clickhouse"; pname = "clickhouse";
version = "25.3.4.190"; version = "25.3.5.42";
src = fetchFromGitHub rec { src = fetchFromGitHub rec {
owner = "ClickHouse"; owner = "ClickHouse";
@ -29,7 +29,7 @@ llvmPackages_19.stdenv.mkDerivation (finalAttrs: {
tag = "v${finalAttrs.version}-lts"; tag = "v${finalAttrs.version}-lts";
fetchSubmodules = true; fetchSubmodules = true;
name = "clickhouse-${tag}.tar.gz"; name = "clickhouse-${tag}.tar.gz";
hash = "sha256-8KH0mziVlayu9g4EwW+hpSV97P72CYDKwGCZ5ycDUwE="; hash = "sha256-LvGl9XJK6Emt7HnV/Orp7qEmJSr3TBJZtApL6GrWIMg=";
postFetch = '' postFetch = ''
# delete files that make the source too big # delete files that make the source too big
rm -rf $out/contrib/llvm-project/llvm/test rm -rf $out/contrib/llvm-project/llvm/test

View File

@ -0,0 +1,37 @@
{
lib,
buildGoModule,
fetchFromGitHub,
versionCheckHook,
}:
buildGoModule (finalAttrs: {
pname = "clusterlint";
version = "0.12.0";
src = fetchFromGitHub {
owner = "digitalocean";
repo = "clusterlint";
tag = "v${finalAttrs.version}";
hash = "sha256-R6Dm7raIYxpulVtadU5AsSwCd5waOBOJRdD3o2vgGM4=";
};
vendorHash = null;
ldflags = [ "-X main.Version=${finalAttrs.version}" ];
# One subpackage fails to build
excludedPackages = [ "example-plugin" ];
nativeInstallCheckInputs = [ versionCheckHook ];
doInstallCheck = true;
meta = {
description = "Best practices checker for Kubernetes clusters";
homepage = "https://github.com/digitalocean/clusterlint";
changelog = "https://github.com/digitalocean/clusterlint/releases/tag/v${finalAttrs.version}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ jherland ];
mainProgram = "clusterlint";
};
})

View File

@ -6,18 +6,18 @@
buildGoModule rec { buildGoModule rec {
pname = "cnquery"; pname = "cnquery";
version = "11.59.0"; version = "11.60.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "mondoohq"; owner = "mondoohq";
repo = "cnquery"; repo = "cnquery";
tag = "v${version}"; tag = "v${version}";
hash = "sha256-xSHIKy9kQrbDhLuTfJd1yDAt/Z7mqYNv4XT6fQZftho="; hash = "sha256-Vu7UfTinjuyc49Kb5GW8uXrP5/bszGt9ktxilGDqY0M=";
}; };
subPackages = [ "apps/cnquery" ]; subPackages = [ "apps/cnquery" ];
vendorHash = "sha256-NGrDYN7+JozAmtysSBUcKPiQwKs/fUiQkUVEGrmTTCk="; vendorHash = "sha256-5vNLaOG4vYgetiQLRIzFkrlFgH6Dwa/VHCv0HWWow30=";
ldflags = [ ldflags = [
"-w" "-w"

View File

@ -55,17 +55,28 @@ stdenvNoCC.mkDerivation (finalAttrs: {
dontConfigure = true; dontConfigure = true;
dontBuild = true; dontBuild = true;
prePatch = '' prePatch =
''
substituteInPlace ${lib.optionalString stdenvNoCC.hostPlatform.isDarwin "Contents/Eclipse/"}dbeaver.ini \ substituteInPlace ${lib.optionalString stdenvNoCC.hostPlatform.isDarwin "Contents/Eclipse/"}dbeaver.ini \
--replace-fail '-Xmx1024m' '-Xmx${override_xmx}' --replace-fail '-Xmx1024m' '-Xmx${override_xmx}'
''
# remove the bundled JRE configuration on Darwin
# dont use substituteInPlace here because it would match "-vmargs"
+ lib.optionalString stdenvNoCC.hostPlatform.isDarwin ''
sed -i -e '/^-vm$/ { N; d; }' Contents/Eclipse/dbeaver.ini
''; '';
preInstall = '' preInstall =
''
# most directories are for different architectures, only keep what we need # most directories are for different architectures, only keep what we need
shopt -s extglob shopt -s extglob
pushd ${lib.optionalString stdenvNoCC.hostPlatform.isDarwin "Contents/Eclipse/"}plugins/com.sun.jna_*/com/sun/jna/ pushd ${lib.optionalString stdenvNoCC.hostPlatform.isDarwin "Contents/Eclipse/"}plugins/com.sun.jna_*/com/sun/jna/
rm -r !(ptr|internal|linux-x86-64|linux-aarch64|darwin-x86-64|darwin-aarch64)/ rm -r !(ptr|internal|linux-x86-64|linux-aarch64|darwin-x86-64|darwin-aarch64)/
popd popd
''
# remove the bundled JRE on Darwin
+ lib.optionalString stdenvNoCC.hostPlatform.isDarwin ''
rm -r Contents/Eclipse/jre/
''; '';
installPhase = installPhase =

View File

@ -8,6 +8,7 @@
xorg, xorg,
gnugrep, gnugrep,
ghostscript, ghostscript,
libnotify,
}: }:
python3Packages.buildPythonApplication rec { python3Packages.buildPythonApplication rec {
@ -44,6 +45,7 @@ python3Packages.buildPythonApplication rec {
ghostscript ghostscript
gnugrep gnugrep
xorg.xrandr xorg.xrandr
libnotify
] ]
}" }"
) )

View File

@ -6,14 +6,14 @@
python3Packages.buildPythonApplication rec { python3Packages.buildPythonApplication rec {
pname = "dotbot"; pname = "dotbot";
version = "1.21.0"; version = "1.22.0";
pyproject = true; pyproject = true;
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "anishathalye"; owner = "anishathalye";
repo = "dotbot"; repo = "dotbot";
tag = "v${version}"; tag = "v${version}";
hash = "sha256-f+ykGXcQ1hLptGElQ5ZTt8z0SXnlTbdcf922AVF78bU="; hash = "sha256-3U8lIsqy95Ulxa5f2hHGFmuAqQ7WZtikvgaplX6GTF0=";
}; };
preCheck = '' preCheck = ''
@ -37,7 +37,7 @@ python3Packages.buildPythonApplication rec {
dotfiles. dotfiles.
''; '';
homepage = "https://github.com/anishathalye/dotbot"; homepage = "https://github.com/anishathalye/dotbot";
changelog = "https://github.com/anishathalye/dotbot/blob/v${version}/CHANGELOG.md"; changelog = "https://github.com/anishathalye/dotbot/blob/${src.tag}/CHANGELOG.md";
license = lib.licenses.mit; license = lib.licenses.mit;
maintainers = with lib.maintainers; [ ludat ]; maintainers = with lib.maintainers; [ ludat ];
}; };

View File

@ -1,7 +1,6 @@
{ {
buildGoModule, buildGoModule,
fetchFromGitHub, fetchFromGitHub,
stdenv,
bpftools, bpftools,
lib, lib,
nspr, nspr,
@ -18,6 +17,9 @@
bash, bash,
zsh, zsh,
nix-update-script, nix-update-script,
llvmPackages,
withNonBTF ? false,
kernel ? null,
}: }:
buildGoModule rec { buildGoModule rec {
@ -33,6 +35,7 @@ buildGoModule rec {
}; };
nativeBuildInputs = [ nativeBuildInputs = [
llvmPackages.libllvm
clang clang
fd fd
bpftools bpftools
@ -94,13 +97,20 @@ buildGoModule rec {
--replace-fail '"errors"' ' ' --replace-fail '"errors"' ' '
''; '';
postConfigure = '' postConfigure =
''
sed -i '/git/d' Makefile sed -i '/git/d' Makefile
sed -i '/git/d' variables.mk sed -i '/git/d' variables.mk
substituteInPlace Makefile \ substituteInPlace Makefile \
--replace-fail '/bin/bash' '${lib.getExe bash}' --replace-fail '/bin/bash' '${lib.getExe bash}'
''
+ lib.optionalString withNonBTF ''
substituteInPlace variables.mk \
--replace-fail "-emit-llvm" "-emit-llvm -I${kernel.dev}/lib/modules/${kernel.modDirVersion}/build/include -Wno-error=implicit-function-declaration"
KERN_BUILD_PATH=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build KERN_SRC_PATH=${kernel.dev}/lib/modules/${kernel.modDirVersion}/source make ebpf_noncore
''
+ ''
make ebpf make ebpf
go-bindata -pkg assets -o "assets/ebpf_probe.go" $(find user/bytecode -name "*.o" -printf "./%p ") go-bindata -pkg assets -o "assets/ebpf_probe.go" $(find user/bytecode -name "*.o" -printf "./%p ")
''; '';

View File

@ -59,13 +59,13 @@
}: }:
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "fastfetch"; pname = "fastfetch";
version = "2.46.0"; version = "2.47.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "fastfetch-cli"; owner = "fastfetch-cli";
repo = "fastfetch"; repo = "fastfetch";
tag = finalAttrs.version; tag = finalAttrs.version;
hash = "sha256-gRDG3lbUcApUushUPCpTkzc6FOB/CHrsVZwdRn6IEL8="; hash = "sha256-xe86u40zW1+2O4s6e64HlpxiaLIRpjgKLPNnSEGlioQ=";
}; };
outputs = [ outputs = [

View File

@ -1,60 +0,0 @@
{
lib,
stdenv,
python3Packages,
python3,
fetchFromGitHub,
pkgsCross,
makeWrapper,
}:
let
arm-embedded-cc = pkgsCross.arm-embedded.buildPackages.gcc;
in
stdenv.mkDerivation {
pname = "fusee-launcher";
version = "unstable-2018-07-14";
src = fetchFromGitHub {
owner = "Cease-and-DeSwitch";
repo = "fusee-launcher";
rev = "265e8f3e1987751ec41db6f1946d132b296aba43";
sha256 = "1pqkgw5bk0xcz9x7pc1f0r0b9nsc8jnnvcs1315d8ml8mx23fshm";
};
makeFlags = [
"CROSS_COMPILE=${arm-embedded-cc.targetPrefix}"
];
installPhase = ''
mkdir -p $out/bin $out/share
cp fusee-launcher.py $out/bin/fusee-launcher
cp intermezzo.bin $out/share/intermezzo.bin
# Wrap with path to intermezzo.bin relocator binary in /share
wrapProgram $out/bin/fusee-launcher \
--add-flags "--relocator $out/share/intermezzo.bin" \
--prefix PYTHONPATH : "$PYTHONPATH:$(toPythonPath $out)"
'';
nativeBuildInputs = [
arm-embedded-cc
makeWrapper
python3Packages.wrapPython
];
buildInputs = [
python3
python3Packages.pyusb
];
pythonPath = with python3Packages; [ pyusb ];
meta = with lib; {
homepage = "https://github.com/Cease-and-DeSwitch/fusee-launcher";
description = "Work-in-progress launcher for one of the Tegra X1 bootROM exploits";
mainProgram = "fusee-launcher";
license = licenses.gpl2;
maintainers = with maintainers; [ pneumaticat ];
};
}

View File

@ -6,13 +6,13 @@
buildGoModule rec { buildGoModule rec {
pname = "gh-poi"; pname = "gh-poi";
version = "0.13.0"; version = "0.14.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "seachicken"; owner = "seachicken";
repo = "gh-poi"; repo = "gh-poi";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-foUv6+QIfPlYwgTwxFvEgGeOw/mpC80+ntHo29LQbB8="; hash = "sha256-bbmNzxGRg7nKfB8xu90ZkKrhWwY24G6h8TW07f9IpTY=";
}; };
ldflags = [ ldflags = [
@ -20,10 +20,10 @@ buildGoModule rec {
"-w" "-w"
]; ];
vendorHash = "sha256-D/YZLwwGJWCekq9mpfCECzJyJ/xSlg7fC6leJh+e8i0="; vendorHash = "sha256-ciOJpVqSPJJLX/sqrztqB3YSoMUrEnn52gGddE80rV0=";
# Skip checks because some of test suites require fixture. # Skip checks because some of test suites require fixture.
# See: https://github.com/seachicken/gh-poi/blob/v0.13.0/.github/workflows/contract-test.yml#L28-L29 # See: https://github.com/seachicken/gh-poi/blob/v0.14.0/.github/workflows/contract-test.yml#L28-L29
doCheck = false; doCheck = false;
meta = with lib; { meta = with lib; {

View File

@ -2,6 +2,7 @@
lib, lib,
buildGoModule, buildGoModule,
fetchFromGitHub, fetchFromGitHub,
nix-update-script,
}: }:
buildGoModule rec { buildGoModule rec {
@ -22,12 +23,16 @@ buildGoModule rec {
"-w" "-w"
]; ];
passthru.updateScript = nix-update-script { };
meta = with lib; { meta = with lib; {
description = "Source code linter that can be used to find code that will cause problems with Go's error wrapping scheme"; description = "Source code linter that can be used to find code that will cause problems with Go's error wrapping scheme";
homepage = "https://github.com/polyfloyd/go-errorlint"; homepage = "https://github.com/polyfloyd/go-errorlint";
changelog = "https://github.com/polyfloyd/go-errorlint/blob/${src.rev}/CHANGELOG.md"; changelog = "https://github.com/polyfloyd/go-errorlint/blob/${src.rev}/CHANGELOG.md";
license = licenses.mit; license = licenses.mit;
maintainers = with maintainers; [ meain ]; maintainers = with maintainers; [
meain
polyfloyd
];
mainProgram = "go-errorlint"; mainProgram = "go-errorlint";
}; };
} }

View File

@ -19,14 +19,14 @@
stdenvNoCC.mkDerivation (finalAttrs: { stdenvNoCC.mkDerivation (finalAttrs: {
pname = "home-manager"; pname = "home-manager";
version = "0-unstable-2025-06-22"; version = "0-unstable-2025-07-02";
src = fetchFromGitHub { src = fetchFromGitHub {
name = "home-manager-source"; name = "home-manager-source";
owner = "nix-community"; owner = "nix-community";
repo = "home-manager"; repo = "home-manager";
rev = "7c35504839f915abec86a96435b881ead7eb6a2b"; rev = "89af52d9a893af013f5f4c1d2d56912106827153";
hash = "sha256-6WH0aRFay79r775RuTqUcnoZNm6A4uHxU1sbcNIk63s="; hash = "sha256-ENTd/sd4Vz/VJYn14SVqW1OH2m7WIAvsm9A9SrmDZRY=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View File

@ -5,15 +5,15 @@
scdoc, scdoc,
}: }:
buildGoModule rec { buildGoModule (finalAttrs: {
pname = "hut"; pname = "hut";
version = "0.7.0"; version = "0.7.0";
src = fetchFromSourcehut { src = fetchFromSourcehut {
owner = "~xenrox"; owner = "~xenrox";
repo = "hut"; repo = "hut";
rev = "v${version}"; rev = "v${finalAttrs.version}";
sha256 = "sha256-pc6E3ORDmaMhoNe8GQeYZrxhe5ySQqsMPe/iUbclnGk="; hash = "sha256-pc6E3ORDmaMhoNe8GQeYZrxhe5ySQqsMPe/iUbclnGk=";
}; };
vendorHash = "sha256-/51cv/EvcBCyCOf91vJ5M75p0bkAQqVoRUp+C+i70Os="; vendorHash = "sha256-/51cv/EvcBCyCOf91vJ5M75p0bkAQqVoRUp+C+i70Os=";
@ -24,6 +24,11 @@ buildGoModule rec {
makeFlags = [ "PREFIX=$(out)" ]; makeFlags = [ "PREFIX=$(out)" ];
ldflags = [
# Recommended in 0.7.0 release notes https://git.sr.ht/~xenrox/hut/refs/v0.7.0
"-X main.version=v${finalAttrs.version}"
];
postBuild = '' postBuild = ''
make $makeFlags completions doc/hut.1 make $makeFlags completions doc/hut.1
''; '';
@ -32,11 +37,11 @@ buildGoModule rec {
make $makeFlags install make $makeFlags install
''; '';
meta = with lib; { meta = {
homepage = "https://sr.ht/~xenrox/hut/"; homepage = "https://sr.ht/~xenrox/hut/";
description = "CLI tool for Sourcehut / sr.ht"; description = "CLI tool for Sourcehut / sr.ht";
license = licenses.agpl3Only; license = lib.licenses.agpl3Only;
maintainers = with maintainers; [ fgaz ]; maintainers = with lib.maintainers; [ fgaz ];
mainProgram = "hut"; mainProgram = "hut";
}; };
} })

View File

@ -8,11 +8,11 @@
stdenvNoCC.mkDerivation rec { stdenvNoCC.mkDerivation rec {
pname = "junicode"; pname = "junicode";
version = "2.209"; version = "2.211";
src = fetchzip { src = fetchzip {
url = "https://github.com/psb1558/Junicode-font/releases/download/v${version}/Junicode_${version}.zip"; url = "https://github.com/psb1558/Junicode-font/releases/download/v${version}/Junicode_${version}.zip";
hash = "sha256-hdCDLwTiyE2ZpFgmYAX7YWCujUwozIozD+k/lCStJUg="; hash = "sha256-ZFJqNIsuWVph3U73lbcXVKXgzt+5cPxetvcAAzt0jvg=";
}; };
outputs = [ outputs = [

View File

@ -5,10 +5,10 @@ locations, which are later patched up to refer to the package outputs,
thus ensuring the style always uses the fonts packaged with it. thus ensuring the style always uses the fonts packaged with it.
diff --git a/TeX/junicode.sty b/TeX/junicode.sty diff --git a/TeX/junicode.sty b/TeX/junicode.sty
index 83bd45d..8fe671c 100644 index 3f80068..af3e3ba 100644
--- a/TeX/junicode.sty --- a/TeX/junicode.sty
+++ b/TeX/junicode.sty +++ b/TeX/junicode.sty
@@ -208,7 +208,14 @@ @@ -211,7 +211,14 @@
\RequirePackage{fontspec} \RequirePackage{fontspec}
\defaultfontfeatures{Ligatures=TeX, Extension=.\junicode@fonttype} \defaultfontfeatures{Ligatures=TeX, Extension=.\junicode@fonttype}
@ -24,7 +24,7 @@ index 83bd45d..8fe671c 100644
\ifxetex \ifxetex
\typeout{\junicode@regstylename} \typeout{\junicode@regstylename}
@@ -219,6 +226,7 @@ @@ -222,6 +229,7 @@
ItalicFont = *-\junicode@italstylename, ItalicFont = *-\junicode@italstylename,
BoldFont = *-\junicode@boldstylename, BoldFont = *-\junicode@boldstylename,
BoldItalicFont = *-\junicode@boldstylename Italic, BoldItalicFont = *-\junicode@boldstylename Italic,
@ -32,7 +32,7 @@ index 83bd45d..8fe671c 100644
]{Junicode} ]{Junicode}
\fi \fi
\ifluatex \ifluatex
@@ -230,6 +238,7 @@ @@ -233,6 +241,7 @@
ItalicFont = *-\junicode@italstylename, ItalicFont = *-\junicode@italstylename,
BoldFont = *-\junicode@boldstylename, BoldFont = *-\junicode@boldstylename,
BoldItalicFont = *-\junicode@boldstylename Italic, BoldItalicFont = *-\junicode@boldstylename Italic,
@ -40,7 +40,7 @@ index 83bd45d..8fe671c 100644
]{Junicode} ]{Junicode}
\fi \fi
@@ -242,6 +251,7 @@ @@ -245,6 +254,7 @@
#3 #3
Numbers = {\junicode@figurealign,\junicode@figurestyle}, Numbers = {\junicode@figurealign,\junicode@figurestyle},
SmallCapsFeatures = {Letters=SmallCaps}, SmallCapsFeatures = {Letters=SmallCaps},
@ -48,7 +48,7 @@ index 83bd45d..8fe671c 100644
] ]
} }
\fi \fi
@@ -252,6 +262,7 @@ @@ -255,6 +265,7 @@
#3 #3
Numbers = {\junicode@figurealign,\junicode@figurestyle}, Numbers = {\junicode@figurealign,\junicode@figurestyle},
SmallCapsFeatures = {Letters=SmallCaps}, SmallCapsFeatures = {Letters=SmallCaps},
@ -57,10 +57,10 @@ index 83bd45d..8fe671c 100644
} }
\fi \fi
diff --git a/TeX/junicodevf.lua b/TeX/junicodevf.lua diff --git a/TeX/junicodevf.lua b/TeX/junicodevf.lua
index 7148668..acebe82 100644 index 9c58f79..6ddcb55 100644
--- a/TeX/junicodevf.lua --- a/TeX/junicodevf.lua
+++ b/TeX/junicodevf.lua +++ b/TeX/junicodevf.lua
@@ -148,7 +148,7 @@ function mkfontcommands() @@ -118,7 +118,7 @@ function mkfontcommands()
romfontcmd = "jRegular" romfontcmd = "jRegular"
italfontcmd = "jItalic" italfontcmd = "jItalic"
end end
@ -70,12 +70,12 @@ index 7148668..acebe82 100644
end end
end end
diff --git a/TeX/junicodevf.sty b/TeX/junicodevf.sty diff --git a/TeX/junicodevf.sty b/TeX/junicodevf.sty
index c01ccaf..07a99ad 100644 index da987d0..4475add 100644
--- a/TeX/junicodevf.sty --- a/TeX/junicodevf.sty
+++ b/TeX/junicodevf.sty +++ b/TeX/junicodevf.sty
@@ -168,11 +168,13 @@ mkwidthcommands(wdindex, adjustment)}} @@ -132,10 +132,12 @@ mkmainfontcommand(style_idx, weight_option, weight_adjust, width_option, width_a
% Set the main font, then the alternate styles. It appears that
% DECLARE THE FONTS % the fonts aren't embedded in the PDF unless actually used.
-\setmainfont{JunicodeVF}[ -\setmainfont{JunicodeVF}[
- ItalicFont = {*-Italic}, - ItalicFont = {*-Italic},
@ -85,35 +85,35 @@ index c01ccaf..07a99ad 100644
+ ItalicFont = {JunicodeVF-Italic}, + ItalicFont = {JunicodeVF-Italic},
+ BoldFont = {JunicodeVF-Roman}, + BoldFont = {JunicodeVF-Roman},
+ BoldItalicFont = {JunicodeVF-Italic}, + BoldItalicFont = {JunicodeVF-Italic},
Renderer = HarfBuzz,
+ Extension = .ttf, + Extension = .ttf,
+ Path = @@@truetype_path@@@, + Path = @@@truetype_path@@@,
Renderer = {\junicodevf@renderer},
Numbers = {\junicodevf@figurealign,\junicodevf@figurestyle}, Numbers = {\junicodevf@figurealign,\junicodevf@figurestyle},
\MainDef, \MainDef,
UprightFeatures = {\MainRegDef @@ -152,6 +154,8 @@ mkmainfontcommand(style_idx, weight_option, weight_adjust, width_option, width_a
@@ -188,6 +190,8 @@ mkwidthcommands(wdindex, adjustment)}}
\newcommand*{\junicodevf@newfont}[4]{ \newcommand*{\junicodevf@newfont}[4]{
\setfontface#1{#2}[ \setfontface#1{#2}[
Renderer = HarfBuzz, Renderer = {\junicodevf@renderer},
+ Extension = .ttf, + Extension = .ttf,
+ Path = @@@truetype_path@@@, + Path = @@@truetype_path@@@,
Numbers = {\junicodevf@figurealign,\junicodevf@figurestyle}, Numbers = {\junicodevf@figurealign,\junicodevf@figurestyle},
SmallCapsFont = {*}, SmallCapsFont = {*},
SmallCapsFeatures = {Letters=SmallCaps}, SmallCapsFeatures = {Letters=SmallCaps},
@@ -200,43 +204,59 @@ mkwidthcommands(wdindex, adjustment)}} @@ -164,43 +168,60 @@ mkmainfontcommand(style_idx, weight_option, weight_adjust, width_option, width_a
% ENLARGED FACES % ENLARGED FACES
-\setfontface\EnlargedOne{JunicodeVF}[ -\setfontface\EnlargedOne{JunicodeVF}[
+\setfontface\EnlargedOne{JunicodeVF-Roman}[ +\setfontface\EnlargedOne{JunicodeVF-Roman}[
Renderer = HarfBuzz, Renderer = {\junicodevf@renderer},
+ Extension = .ttf, + Extension = .ttf,
+ Path = @@@truetype_path@@@, + Path = @@@truetype_path@@@,
\ENLAOneSizeDef \ENLAOneSizeDef
] ]
\setfontface\EnlargedOneItalic{JunicodeVF-Italic}[ \setfontface\EnlargedOneItalic{JunicodeVF-Italic}[
Renderer = HarfBuzz, Renderer = {\junicodevf@renderer},
+ Renderer = HarfBuzz,
+ Extension = .ttf, + Extension = .ttf,
+ Path = @@@truetype_path@@@, + Path = @@@truetype_path@@@,
\ENLAOneSizeDef \ENLAOneSizeDef
@ -121,14 +121,14 @@ index c01ccaf..07a99ad 100644
-\setfontface\EnlargedTwo{JunicodeVF}[ -\setfontface\EnlargedTwo{JunicodeVF}[
+\setfontface\EnlargedTwo{JunicodeVF-Roman}[ +\setfontface\EnlargedTwo{JunicodeVF-Roman}[
Renderer = HarfBuzz, Renderer = {\junicodevf@renderer},
+ Extension = .ttf, + Extension = .ttf,
+ Path = @@@truetype_path@@@, + Path = @@@truetype_path@@@,
\ENLATwoSizeDef \ENLATwoSizeDef
] ]
\setfontface\EnlargedTwoItalic{JunicodeVF-Italic}[ \setfontface\EnlargedTwoItalic{JunicodeVF-Italic}[
Renderer = HarfBuzz, Renderer = {\junicodevf@renderer},
+ Extension = .ttf, + Extension = .ttf,
+ Path = @@@truetype_path@@@, + Path = @@@truetype_path@@@,
\ENLATwoSizeDef \ENLATwoSizeDef
@ -136,14 +136,14 @@ index c01ccaf..07a99ad 100644
-\setfontface\EnlargedThree{JunicodeVF}[ -\setfontface\EnlargedThree{JunicodeVF}[
+\setfontface\EnlargedThree{JunicodeVF-Roman}[ +\setfontface\EnlargedThree{JunicodeVF-Roman}[
Renderer = HarfBuzz, Renderer = {\junicodevf@renderer},
+ Extension = .ttf, + Extension = .ttf,
+ Path = @@@truetype_path@@@, + Path = @@@truetype_path@@@,
\ENLAThreeSizeDef \ENLAThreeSizeDef
] ]
\setfontface\EnlargedThreeItalic{JunicodeVF-Italic}[ \setfontface\EnlargedThreeItalic{JunicodeVF-Italic}[
Renderer = HarfBuzz, Renderer = {\junicodevf@renderer},
+ Extension = .ttf, + Extension = .ttf,
+ Path = @@@truetype_path@@@, + Path = @@@truetype_path@@@,
\ENLAThreeSizeDef \ENLAThreeSizeDef
@ -151,14 +151,14 @@ index c01ccaf..07a99ad 100644
-\setfontface\EnlargedFour{JunicodeVF}[ -\setfontface\EnlargedFour{JunicodeVF}[
+\setfontface\EnlargedFour{JunicodeVF-Roman}[ +\setfontface\EnlargedFour{JunicodeVF-Roman}[
Renderer = HarfBuzz, Renderer = {\junicodevf@renderer},
+ Extension = .ttf, + Extension = .ttf,
+ Path = @@@truetype_path@@@, + Path = @@@truetype_path@@@,
\ENLAFourSizeDef \ENLAFourSizeDef
] ]
\setfontface\EnlargedFourItalic{JunicodeVF-Italic}[ \setfontface\EnlargedFourItalic{JunicodeVF-Italic}[
Renderer = HarfBuzz, Renderer = {\junicodevf@renderer},
+ Extension = .ttf, + Extension = .ttf,
+ Path = @@@truetype_path@@@, + Path = @@@truetype_path@@@,
\ENLAFourSizeDef \ENLAFourSizeDef

View File

@ -22,11 +22,11 @@
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "kamailio"; pname = "kamailio";
version = "6.0.1"; version = "6.0.2";
src = fetchurl { src = fetchurl {
url = "https://www.kamailio.org/pub/kamailio/${finalAttrs.version}/src/kamailio-${finalAttrs.version}_src.tar.gz"; url = "https://www.kamailio.org/pub/kamailio/${finalAttrs.version}/src/kamailio-${finalAttrs.version}_src.tar.gz";
hash = "sha256-jB1htMFHBtwnSNN7GtQFU5cnYgWpTgvXDjn9mMR1PQE="; hash = "sha256-Ax3MhQZJ8cCuGUTZUThiT2XWAGgFIlwjnKqQvao28h0=";
}; };
buildInputs = [ buildInputs = [

View File

@ -15,7 +15,7 @@ buildGoModule (finalAttrs: {
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "krillinai"; owner = "krillinai";
repo = "KrillinAI"; repo = "KlicStudio";
tag = "v${finalAttrs.version}"; tag = "v${finalAttrs.version}";
hash = "sha256-RHlQeTFeG23LjLwczSGIghH3XPFTR6ZVDFk2KlRQGoA="; hash = "sha256-RHlQeTFeG23LjLwczSGIghH3XPFTR6ZVDFk2KlRQGoA=";
}; };
@ -46,8 +46,8 @@ buildGoModule (finalAttrs: {
meta = { meta = {
description = "Video translation and dubbing tool"; description = "Video translation and dubbing tool";
homepage = "https://github.com/krillinai/KrillinAI"; homepage = "https://github.com/krillinai/KlicStudio";
changelog = "https://github.com/krillinai/KrillinAI/releases/tag/v${finalAttrs.version}"; changelog = "https://github.com/krillinai/KlicStudio/releases/tag/v${finalAttrs.version}";
mainProgram = "krillinai-desktop"; mainProgram = "krillinai-desktop";
license = lib.licenses.gpl3Plus; license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ emaryn ]; maintainers = with lib.maintainers; [ emaryn ];

View File

@ -0,0 +1,51 @@
{
lib,
fetchFromGitHub,
fetchNpmDeps,
buildNpmPackage,
}:
buildNpmPackage rec {
pname = "lasuite-meet-frontend";
version = "0.1.27";
src = fetchFromGitHub {
owner = "suitenumerique";
repo = "meet";
tag = "v${version}";
hash = "sha256-EMhsQPrONaQmNJ/FFoYlP5KKXT8vm7LwUHmEZd0oZeE=";
};
sourceRoot = "source/src/frontend";
npmDeps = fetchNpmDeps {
inherit version src;
sourceRoot = "source/src/frontend";
hash = "sha256-7wXzcn6aGAkRUOCI6MU0AlPGngBWJtdbAfnZZDaMWec=";
};
buildPhase = ''
runHook preBuild
npm run build
runHook postBuild
'';
installPhase = ''
runHook preInstall
cp -r dist $out
runHook postInstall
'';
meta = {
description = "Open source alternative to Google Meet and Zoom powered by LiveKit: HD video calls, screen sharing, and chat features. Built with Django and React";
homepage = "https://github.com/suitenumerique/meet";
changelog = "https://github.com/suitenumerique/meet/blob/${src.tag}/CHANGELOG.md";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ soyouzpanda ];
platforms = lib.platforms.all;
};
}

View File

@ -0,0 +1,113 @@
{
lib,
python3,
fetchFromGitHub,
nixosTests,
}:
let
python = python3.override {
self = python3;
packageOverrides = (self: super: { django = super.django_5_2; });
};
in
python.pkgs.buildPythonApplication rec {
pname = "lasuite-meet";
version = "0.1.27";
pyproject = true;
src = fetchFromGitHub {
owner = "suitenumerique";
repo = "meet";
tag = "v${version}";
hash = "sha256-EMhsQPrONaQmNJ/FFoYlP5KKXT8vm7LwUHmEZd0oZeE=";
};
sourceRoot = "source/src/backend";
patches = [
# Support configuration throught environment variables for SECURE_*
./secure_settings.patch
];
build-system = with python.pkgs; [ setuptools ];
dependencies = with python.pkgs; [
aiohttp
boto3
brevo-python
brotli
celery
django
django-configurations
django-cors-headers
django-countries
django-extensions
django-lasuite
django-parler
django-redis
django-storages
django-timezone-field
djangorestframework
dockerflow
drf-spectacular
drf-spectacular-sidecar
easy-thumbnails
factory-boy
gunicorn
jsonschema
june-analytics-python
livekit-api
markdown
mozilla-django-oidc
nested-multipart-parser
psycopg
pyjwt
pyopenssl
python-frontmatter
redis
requests
sentry-sdk
whitenoise
];
pythonRelaxDeps = true;
postBuild = ''
export DJANGO_DATA_DIR=$(pwd)/data
${python.pythonOnBuildForHost.interpreter} manage.py collectstatic --noinput --clear
'';
postInstall =
let
pythonPath = python.pkgs.makePythonPath dependencies;
in
''
mkdir -p $out/{bin,share}
cp ./manage.py $out/bin/.manage.py
cp -r data/static $out/share
chmod +x $out/bin/.manage.py
makeWrapper $out/bin/.manage.py $out/bin/meet \
--prefix PYTHONPATH : "${pythonPath}"
makeWrapper ${lib.getExe python.pkgs.celery} $out/bin/celery \
--prefix PYTHONPATH : "${pythonPath}:$out/${python.sitePackages}"
makeWrapper ${lib.getExe python.pkgs.gunicorn} $out/bin/gunicorn \
--prefix PYTHONPATH : "${pythonPath}:$out/${python.sitePackages}"
'';
passthru.tests = {
login-and-create-room = nixosTests.lasuite-meet;
};
meta = {
description = "Open source alternative to Google Meet and Zoom powered by LiveKit: HD video calls, screen sharing, and chat features. Built with Django and React";
homepage = "https://github.com/suitenumerique/meet";
changelog = "https://github.com/suitenumerique/meet/blob/${src.tag}/CHANGELOG.md";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ soyouzpanda ];
mainProgram = "meet";
platforms = lib.platforms.all;
};
}

View File

@ -0,0 +1,52 @@
From d7bbf24df5eecb61caebdf55b0d26da60a9d9609 Mon Sep 17 00:00:00 2001
From: soyouzpanda <soyouzpanda@soyouzpanda.fr>
Date: Fri, 16 May 2025 23:41:12 +0200
Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=94=A7(backend)=20allow=20SECURE=20en?=
=?UTF-8?q?vironment=20variables=20to=20be=20configured?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
meet/settings.py | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/meet/settings.py b/meet/settings.py
index ebb0837..9c67986 100755
--- a/meet/settings.py
+++ b/meet/settings.py
@@ -755,19 +755,24 @@ class Production(Base):
# - Your proxy sets the X-Forwarded-Proto header and sends it to Django
#
# In other cases, you should comment the following line to avoid security issues.
- SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
- SECURE_HSTS_SECONDS = 60
- SECURE_HSTS_PRELOAD = True
- SECURE_HSTS_INCLUDE_SUBDOMAINS = True
- SECURE_SSL_REDIRECT = True
+ SECURE_PROXY_SSL_HEADER = values.TupleValue(("HTTP_X_FORWARDED_PROTO", "https"),
+ environ_name="SECURE_PROXY_SSL_HEADER")
+ SECURE_HSTS_SECONDS = values.IntegerValue(
+ 60, environ_name="SECURE_HSTS_SECONDS")
+ SECURE_HSTS_PRELOAD = values.BooleanValue(
+ True, environ_name="SECURE_HSTS_PRELOAD")
+ SECURE_HSTS_INCLUDE_SUBDOMAINS = values.BooleanValue(
+ True, environ_name="SECURE_HSTS_INCLUDE_SUBDOMAINS")
+ SECURE_SSL_REDIRECT = values.BooleanValue(
+ True, environ_name="SECURE_SSL_REDIRECT")
SECURE_REDIRECT_EXEMPT = [
"^__lbheartbeat__",
"^__heartbeat__",
]
# Modern browsers require to have the `secure` attribute on cookies with `Samesite=none`
- CSRF_COOKIE_SECURE = True
- SESSION_COOKIE_SECURE = True
+ CSRF_COOKIE_SECURE = values.BooleanValue(True, environ_name="CSRF_COOKIE_SECURE")
+ SESSION_COOKIE_SECURE = values.BooleanValue(True, environ_name="SESSION_COOKIE_SECURE")
# Privacy
SECURE_REFERRER_POLICY = "same-origin"
--
2.47.2

View File

@ -8,13 +8,13 @@
}: }:
buildGoModule rec { buildGoModule rec {
pname = "lazygit"; pname = "lazygit";
version = "0.52.0"; version = "0.53.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "jesseduffield"; owner = "jesseduffield";
repo = "lazygit"; repo = "lazygit";
tag = "v${version}"; tag = "v${version}";
hash = "sha256-tbFRovaB0f+0VyX34DEXvWYjV3fipc5kbRNhm7rVMlo="; hash = "sha256-u9ccwRdRQEVNC1/nFRSKJ9RCWJI1mM9Ak3bDVMIWD6E=";
}; };
vendorHash = null; vendorHash = null;

View File

@ -18,6 +18,14 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-QFqNGv2+XXe1Dt8HAoqXEHWXFNU/IQ2c9FYEqehrWdI="; hash = "sha256-QFqNGv2+XXe1Dt8HAoqXEHWXFNU/IQ2c9FYEqehrWdI=";
}; };
# On macOS with a case-insensitive filesystem, "sdl.h" shadows <SDL.h>
postPatch = lib.optionalString stdenv.buildPlatform.isDarwin ''
mv src/sdl.h src/lbhd_sdl.h
for file in src/*.cpp src/*.h; do
substituteInPlace "$file" --replace-quiet 'sdl.h' 'lbhd_sdl.h'
done
'';
buildInputs = [ buildInputs = [
SDL2 SDL2
SDL2_image SDL2_image
@ -40,6 +48,5 @@ stdenv.mkDerivation (finalAttrs: {
mainProgram = "lbreakouthd"; mainProgram = "lbreakouthd";
maintainers = with lib.maintainers; [ ]; maintainers = with lib.maintainers; [ ];
inherit (SDL2.meta) platforms; inherit (SDL2.meta) platforms;
broken = stdenv.hostPlatform.isDarwin;
}; };
}) })

View File

@ -0,0 +1,42 @@
{
lib,
buildGoModule,
fetchFromGitHub,
versionCheckHook,
}:
buildGoModule (finalAttrs: {
pname = "mcp-k8s-go";
version = "0.3.5";
src = fetchFromGitHub {
owner = "strowk";
repo = "mcp-k8s-go";
tag = "v${finalAttrs.version}";
hash = "sha256-6DKhcUwXBap7Ts+T46GJJxKS6LXTfScZZEQV0PhuVfQ=";
};
vendorHash = "sha256-nP9cVXV1qyYancePz1mMNq911Ou7k5nVckQzbM05HpQ=";
doCheck = false;
ldflags = [
"-s"
"-w"
"-X main.version=${finalAttrs.version}"
];
nativeInstallCheckInputs = [
versionCheckHook
];
doInstallCheck = true;
versionCheckProgramArg = "--version";
meta = {
description = "MCP server connecting to Kubernetes";
homepage = "https://github.com/strowk/mcp-k8s-go";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ pilz ];
mainProgram = "mcp-k8s-go";
};
})

View File

@ -5,59 +5,33 @@
fetchpatch, fetchpatch,
cmake, cmake,
qttools,
wrapQtAppsHook,
curl, curl,
ffmpeg, ffmpeg,
libmediainfo, libmediainfo,
libzen, libzen,
qt5compat ? null, # qt6 only libsForQt5,
qtbase, qt6Packages,
qtdeclarative,
qtmultimedia, qtVersion ? 6,
qtsvg,
qtwayland,
quazip,
}: }:
let let
qtVersion = lib.versions.major qtbase.version; qt' = if qtVersion == 5 then libsForQt5 else qt6Packages;
in in
stdenv.mkDerivation rec { stdenv.mkDerivation (finalAttrs: {
pname = "mediaelch"; pname = "mediaelch";
version = "2.12.0"; version = "2.12.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Komet"; owner = "Komet";
repo = "MediaElch"; repo = "MediaElch";
rev = "v${version}"; tag = "v${finalAttrs.version}";
hash = "sha256-m2d4lnyD8HhhqovMdeG36dMK+4kJA7rlPHE2tlhfevo="; hash = "sha256-m2d4lnyD8HhhqovMdeG36dMK+4kJA7rlPHE2tlhfevo=";
fetchSubmodules = true; fetchSubmodules = true;
}; };
nativeBuildInputs = [
cmake
qttools
wrapQtAppsHook
];
buildInputs =
[
curl
ffmpeg
libmediainfo
libzen
qtbase
qtdeclarative
qtmultimedia
qtsvg
qtwayland
quazip
]
++ lib.optionals (qtVersion == "6") [
qt5compat
];
patches = [ patches = [
# fix from: https://github.com/Komet/MediaElch/pull/1878 # fix from: https://github.com/Komet/MediaElch/pull/1878
(fetchpatch { (fetchpatch {
@ -66,10 +40,34 @@ stdenv.mkDerivation rec {
}) })
]; ];
nativeBuildInputs = [
cmake
qt'.qttools
qt'.wrapQtAppsHook
];
buildInputs =
[
curl
ffmpeg
libmediainfo
libzen
qt'.qtbase
qt'.qtdeclarative
qt'.qtmultimedia
qt'.qtsvg
qt'.qtwayland
qt'.quazip
]
++ lib.optionals (qtVersion == 6) [
qt'.qt5compat
];
cmakeFlags = [ cmakeFlags = [
"-DDISABLE_UPDATER=ON" (lib.cmakeBool "DISABLE_UPDATER" true)
"-DUSE_EXTERN_QUAZIP=ON" (lib.cmakeBool "ENABLE_TESTS" finalAttrs.finalPackage.doCheck or false)
"-DMEDIAELCH_FORCE_QT${qtVersion}=ON" (lib.cmakeBool "MEDIAELCH_FORCE_QT${toString qtVersion}" true)
(lib.cmakeBool "USE_EXTERN_QUAZIP" true)
]; ];
# libmediainfo.so.0 is loaded dynamically # libmediainfo.so.0 is loaded dynamically
@ -77,12 +75,22 @@ stdenv.mkDerivation rec {
"--prefix LD_LIBRARY_PATH : ${libmediainfo}/lib" "--prefix LD_LIBRARY_PATH : ${libmediainfo}/lib"
]; ];
meta = with lib; { env = {
HOME = "/tmp"; # for the font cache
LANG = "C.UTF-8";
QT_QPA_PLATFORM = "offscreen"; # the tests require a UI
};
doCheck = true;
checkTarget = "unit_test"; # the other tests require network connectivity
meta = {
homepage = "https://mediaelch.de/mediaelch/"; homepage = "https://mediaelch.de/mediaelch/";
description = "Media Manager for Kodi"; description = "Media Manager for Kodi";
mainProgram = "MediaElch"; mainProgram = "MediaElch";
license = licenses.lgpl3Only; license = lib.licenses.lgpl3Only;
maintainers = with maintainers; [ stunkymonkey ]; maintainers = with lib.maintainers; [ stunkymonkey ];
platforms = platforms.linux; platforms = lib.platforms.linux;
}; };
} })

View File

@ -0,0 +1,31 @@
{
buildGoModule,
fetchFromGitHub,
lib,
}:
buildGoModule (finalAttrs: {
pname = "memcached-exporter";
version = "0.15.3";
src = fetchFromGitHub {
owner = "prometheus";
repo = "memcached_exporter";
tag = "v${finalAttrs.version}";
hash = "sha256-Y2y8XMR+YHbxFQFYqwtQ4aRi71jD6l3witEwjxAjuOc=";
};
vendorHash = "sha256-Q2b8/QA12HI6ynLU5aNmwOal+snHd1Be6p3UWk4DJhw=";
# Tests touch the network
doCheck = false;
meta = {
changelog = "https://github.com/prometheus/memcached_exporter/releases/tag/${finalAttrs.src.tag}";
description = "Exports metrics from memcached servers for consumption by Prometheus";
homepage = "https://github.com/prometheus/memcached_exporter";
license = lib.licenses.asl20;
mainProgram = "memcached_exporter";
teams = with lib.teams; [ deshaw ];
};
})

View File

@ -13,16 +13,16 @@
rustPlatform.buildRustPackage (finalAttrs: { rustPlatform.buildRustPackage (finalAttrs: {
pname = "moon"; pname = "moon";
version = "1.37.3"; version = "1.38.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "moonrepo"; owner = "moonrepo";
repo = "moon"; repo = "moon";
tag = "v${finalAttrs.version}"; tag = "v${finalAttrs.version}";
hash = "sha256-XBuB26ghUUXkQrUDZCt7L4c8aW5odI7BqDdM6Si8Nck="; hash = "sha256-z1wMXbpKtHei2cLehfYFd0hUAl8yooZlqeLA/sozFoo=";
}; };
cargoHash = "sha256-7XcpJngFzWvVdmYWLf3jYLVG/rgXaetP1w4vAt6INDQ="; cargoHash = "sha256-m7nQE+6rp1RHVgR5xt41RCIgcWm+2jomYDQQUIpsfIE=";
env = { env = {
RUSTFLAGS = "-C strip=symbols"; RUSTFLAGS = "-C strip=symbols";

View File

@ -233,7 +233,7 @@ stdenv.mkDerivation rec {
'') '')
+ (lib.optionalString (enableX11 || enableGL) '' + (lib.optionalString (enableX11 || enableGL) ''
mkdir -p $bin/share/icons/hicolor/48x48/apps mkdir -p $bin/share/icons/hicolor/48x48/apps
cp docs/logo/mupdf-icon-48.png $bin/share/icons/hicolor/48x48/apps cp docs/logo/mupdf-icon-48.png $bin/share/icons/hicolor/48x48/apps/mupdf.png
'') '')
+ ( + (
if enableGL then if enableGL then

View File

@ -6,13 +6,13 @@
buildGoModule rec { buildGoModule rec {
pname = "nhost-cli"; pname = "nhost-cli";
version = "1.29.9"; version = "1.31.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "nhost"; owner = "nhost";
repo = "cli"; repo = "cli";
tag = "v${version}"; tag = "v${version}";
hash = "sha256-9UxB/tshTwMg4K7K0Fs1Ld96ET6Drg77GJgONj4cRmM="; hash = "sha256-JMRFvJv/Ynnk0maT27sprTpWjCgGDw0x2sK+woS9uQk=";
}; };
vendorHash = null; vendorHash = null;

View File

@ -20,13 +20,13 @@
stdenvNoCC.mkDerivation rec { stdenvNoCC.mkDerivation rec {
pname = "noto-fonts${suffix}"; pname = "noto-fonts${suffix}";
version = "2025.06.01"; version = "2025.07.01";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "notofonts"; owner = "notofonts";
repo = "notofonts.github.io"; repo = "notofonts.github.io";
rev = "noto-monthly-release-${version}"; rev = "noto-monthly-release-${version}";
hash = "sha256-6lbNJjkf6lnPPZzHO3vtsXEuPQs6ewslgnQIeDhF2yk="; hash = "sha256-H2mUG2+7+lVCjoAVvsuFK5NNm5LpjyF9ySlF3vriR1w=";
}; };
outputs = [ outputs = [

View File

@ -33,7 +33,7 @@
}: }:
let let
openrct2-version = "0.4.22"; openrct2-version = "0.4.23";
# Those versions MUST match the pinned versions within the CMakeLists.txt # Those versions MUST match the pinned versions within the CMakeLists.txt
# file. The REPLAYS repository from the CMakeLists.txt is not necessary. # file. The REPLAYS repository from the CMakeLists.txt is not necessary.
@ -67,7 +67,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "OpenRCT2"; owner = "OpenRCT2";
repo = "OpenRCT2"; repo = "OpenRCT2";
rev = "v${openrct2-version}"; rev = "v${openrct2-version}";
hash = "sha256-dFELAfJIgizM0nRc4SMrFGIqFQo/ImTtR89GVkb4/TQ="; hash = "sha256-vCnMVfRTF79oWsYorsI5/Mj7/P32G5uZMskW2SUSYlg=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View File

@ -7,13 +7,13 @@
buildGoModule rec { buildGoModule rec {
pname = "orchard"; pname = "orchard";
version = "0.34.0"; version = "0.35.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "cirruslabs"; owner = "cirruslabs";
repo = "orchard"; repo = "orchard";
rev = version; rev = version;
hash = "sha256-7XKiFViGjz0/jrvN6JdCFy1lw4fN2Bz43WWKcgZ7ZzU="; hash = "sha256-K9lPI1wl+F6piksRMh7WgRPIAXpAvSTPjX+5MIddIZQ=";
# populate values that require us to use git. By doing this in postFetch we # populate values that require us to use git. By doing this in postFetch we
# can delete .git afterwards and maintain better reproducibility of the src. # can delete .git afterwards and maintain better reproducibility of the src.
leaveDotGit = true; leaveDotGit = true;
@ -24,7 +24,7 @@ buildGoModule rec {
''; '';
}; };
vendorHash = "sha256-LExITpIVaMIxt+CkH7SRkbSPRO842Pl9lgSqZenE4uA="; vendorHash = "sha256-+lH9TNceOYmGeoWUy4xnDr1TtSW81ZELljPfCv8zwEE=";
nativeBuildInputs = [ installShellFiles ]; nativeBuildInputs = [ installShellFiles ];

View File

@ -6,13 +6,13 @@
buildGoModule rec { buildGoModule rec {
pname = "pluto"; pname = "pluto";
version = "5.21.7"; version = "5.21.8";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "FairwindsOps"; owner = "FairwindsOps";
repo = "pluto"; repo = "pluto";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-1Sgq8WBx0jPPmuNvUfiDs9CvV0IjCp0+n8OUlVjGj3w="; hash = "sha256-41ud7SRaivhmtBY6ekKIpRijTuLqJ/tLi0dTHDsGAps=";
}; };
vendorHash = "sha256-4kiLgwr8wr/L4anxgZVAE6IFdbBvTgcUlf5KIcT+lRk="; vendorHash = "sha256-4kiLgwr8wr/L4anxgZVAE6IFdbBvTgcUlf5KIcT+lRk=";

View File

@ -0,0 +1,33 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "pphack";
version = "0.1.0";
src = fetchFromGitHub {
owner = "edoardottt";
repo = "pphack";
tag = "v${version}";
hash = "sha256-SWMY+t8NzbUqAeLsqia5KAXXOjoMRMZVVa8YdTLcG5A=";
};
vendorHash = "sha256-smJp3GDo1KOrEjEJnxtyrlHmb/L70QqhDWjCZ4U1qJs=";
ldflags = [
"-s"
"-w"
];
meta = {
description = "Client-Side Prototype Pollution Scanner";
homepage = "https://github.com/edoardottt/pphack";
changelog = "https://github.com/edoardottt/pphack/releases/tag/${src.tag}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "pphack";
};
}

View File

@ -10,17 +10,17 @@
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "proto"; pname = "proto";
version = "0.50.0"; version = "0.50.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "moonrepo"; owner = "moonrepo";
repo = "proto"; repo = "proto";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-ilbqT5826FB20uCzt2a6QYCD2rDNto7nxz1mjHGDbAA="; hash = "sha256-Ol0l+9pkMDmb09a6gsDxP9KIpIIeDNHp9cGBbfWHBNA=";
}; };
useFetchCargoVendor = true; useFetchCargoVendor = true;
cargoHash = "sha256-bAsFzu1RzOMufFb2WCRd0pDl8O8eVsoZn79BPWql1xg="; cargoHash = "sha256-kc/NC1WGOChdPXq1q83j5GBrcYTEpPCauIZ/q02caUU=";
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
libiconv libiconv

View File

@ -0,0 +1,31 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule (finalAttrs: {
pname = "protoc-gen-lint";
version = "0.3.0";
src = fetchFromGitHub {
owner = "ckaznocha";
repo = "protoc-gen-lint";
tag = "v${finalAttrs.version}";
hash = "sha256-8+fPkXmigP8ZqcFGCnw1KZhJQcahDjKnZUJ1eqaHhs0=";
};
vendorHash = null;
meta = {
description = "Plug-in for Google's Protocol Buffers compiler to check .proto files for style violations";
homepage = "https://github.com/ckaznocha/protoc-gen-lint";
changelog = "https://github.com/ckaznocha/protoc-gen-lint/releases/tag/v${finalAttrs.version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
jherland
jk
];
mainProgram = "protoc-gen-lint";
};
})

View File

@ -8,16 +8,18 @@
python3Packages.buildPythonApplication rec { python3Packages.buildPythonApplication rec {
pname = "pssh"; pname = "pssh";
version = "2.3.4"; version = "2.3.5";
format = "setuptools"; pyproject = true;
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "lilydjwg"; owner = "lilydjwg";
repo = "pssh"; repo = "pssh";
rev = "v${version}"; tag = "v${version}";
hash = "sha256-B1dIa6hNeq4iE8GKVhTp3Gzq7vp+v5Yyzj8uF8X71yg="; hash = "sha256-JZOO5xmW34lvWzGL4tC9fquZOOYhub0/aa/iQ63rjHE=";
}; };
build-system = with python3Packages; [ setuptools ];
postPatch = '' postPatch = ''
for f in bin/*; do for f in bin/*; do
substituteInPlace $f \ substituteInPlace $f \
@ -37,6 +39,7 @@ python3Packages.buildPythonApplication rec {
including pssh, pscp, prsync, pnuke and pslurp. including pssh, pscp, prsync, pnuke and pslurp.
''; '';
inherit (src.meta) homepage; inherit (src.meta) homepage;
changelog = "https://github.com/lilydjwg/pssh/blob/${src.tag}/ChangeLog";
license = licenses.bsd3; license = licenses.bsd3;
platforms = platforms.linux ++ platforms.darwin; platforms = platforms.linux ++ platforms.darwin;
maintainers = with maintainers; [ chris-martin ]; maintainers = with maintainers; [ chris-martin ];

View File

@ -98,9 +98,7 @@ stdenv.mkDerivation (finalAttrs: {
--tags -leaks \ --tags -leaks \
--skipunit integration/aof-multi-part \ --skipunit integration/aof-multi-part \
--skipunit integration/failover \ --skipunit integration/failover \
${lib.optionalString ( --skipunit integration/replication-rdbchannel
stdenv.hostPlatform.system == "aarch64-linux"
) "--skipunit integration/replication-rdbchannel"}
runHook postCheck runHook postCheck
''; '';

View File

@ -11,13 +11,13 @@
buildGoModule rec { buildGoModule rec {
pname = "rosa"; pname = "rosa";
version = "1.2.53"; version = "1.2.54";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "openshift"; owner = "openshift";
repo = "rosa"; repo = "rosa";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-t8hJscLk0tRi7CC6maE478CEbOkJtVkbXA0Ag1DxFB4="; hash = "sha256-mW4uwviyzGI8mMaQsnedV1vTm26ae6VSoihMzvSCAjc=";
}; };
vendorHash = null; vendorHash = null;

View File

@ -19,14 +19,14 @@
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "s7"; pname = "s7";
version = "11.5-unstable-2025-06-25"; version = "11.5-unstable-2025-07-04";
src = fetchFromGitLab { src = fetchFromGitLab {
domain = "cm-gitlab.stanford.edu"; domain = "cm-gitlab.stanford.edu";
owner = "bil"; owner = "bil";
repo = "s7"; repo = "s7";
rev = "0030b5a1e968bc0d6d3cdfd083703c9f5dcf93aa"; rev = "3bf6fbd10602b1148addb1d5c59560a3599472a1";
hash = "sha256-SqRzPSzahZeWxbWhQIUyXzRBq0x6gxb6Sd7oVqTIaF4="; hash = "sha256-cI7DIZNFL1QmTYlP+yQp/BbgIvn8ej59PxzvfhTnpwM=";
}; };
buildInputs = [ buildInputs = [

View File

@ -0,0 +1,32 @@
{
lib,
stdenvNoCC,
fetchurl,
unzip,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "saman_ttf";
version = "1.001";
src = fetchurl {
url = "https://github.com/tcgumus/saman/releases/download/v${finalAttrs.version}/SamanDere-Regular.ttf";
hash = "sha256-hLlo4qtxL1RDiA9PpRvo2F7rdCVGPs2G8NHKydLfJXU=";
};
dontUnpack = true;
installPhase = ''
runHook preInstall
install -Dm644 $src $out/share/fonts/truetype/SamanDere-Regular.ttf
runHook postInstall
'';
meta = {
description = "Medium contrast sans serif font for web use";
homepage = "https://github.com/tcgumus/saman";
license = lib.licenses.ofl;
platforms = lib.platforms.all;
maintainers = with lib.maintainers; [ gigahawk ];
};
})

View File

@ -8,17 +8,17 @@
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "simple-http-server"; pname = "simple-http-server";
version = "0.6.12"; version = "0.6.13";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "TheWaWaR"; owner = "TheWaWaR";
repo = "simple-http-server"; repo = "simple-http-server";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-WaUBMGZaIjce83mskEtH9PLYDDlBL1MNoY8lz4++684="; sha256 = "sha256-uTzzQg1UJ+PG2poIKd+LO0T0y7z48ZK0f196zIgeZhs=";
}; };
useFetchCargoVendor = true; useFetchCargoVendor = true;
cargoHash = "sha256-5oZTT2qBtupuF2thhfko7mgWLu+e7+P92V+DPsPZ1Ak="; cargoHash = "sha256-y+pNDg73fAHs9m0uZr6z0HTA/vB3fFM5qukJycuIxnY=";
nativeBuildInputs = [ pkg-config ]; nativeBuildInputs = [ pkg-config ];

View File

@ -0,0 +1,30 @@
{
lib,
rustPlatform,
fetchCrate,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "svd2rust-form";
version = "0.13.0";
src = fetchCrate {
pname = "form";
inherit (finalAttrs) version;
hash = "sha256-7+5HEyP7480UM5dydavoiclX3YTvW46V8r+Vpqt4xWk=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-ItNBQKye1GD01KFBubMLxksv8OCWIxya/LlZ9g6Jdg8=";
meta = {
description = "Library for splitting apart a large file with multiple modules into the idiomatic rust directory structure";
mainProgram = "form";
homepage = "https://github.com/djmcgill/form";
changelog = "https://github.com/djmcgill/form/blob/main/CHANGELOG.md";
license = with lib.licenses; [
mit
];
maintainers = with lib.maintainers; [ fidgetingbits ];
};
})

View File

@ -23,7 +23,7 @@
}: }:
let let
version = "1.84.2"; version = "1.84.3";
in in
buildGoModule { buildGoModule {
pname = "tailscale"; pname = "tailscale";
@ -38,7 +38,7 @@ buildGoModule {
owner = "tailscale"; owner = "tailscale";
repo = "tailscale"; repo = "tailscale";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-dSYophk7oogLmlRBr05Quhx+iMUuJU2VXhAZVtJLTts="; hash = "sha256-0HvUNpyi6xzS3PtbgMvh6bLRhV77CZRrVSKGMr7JtbE=";
}; };
vendorHash = "sha256-QBYCMOWQOBCt+69NtJtluhTZIOiBWcQ78M9Gbki6bN0="; vendorHash = "sha256-QBYCMOWQOBCt+69NtJtluhTZIOiBWcQ78M9Gbki6bN0=";

View File

@ -16,17 +16,17 @@
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "termusic"; pname = "termusic";
version = "0.10.0"; version = "0.11.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tramhao"; owner = "tramhao";
repo = "termusic"; repo = "termusic";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-Yd23Jk2BFuLtxgF8vgat0wTGq6ahHHBd/HjGI9BY9z4="; hash = "sha256-89eqOeSq9uI4re3Oq0/ORMzMjYA4pLw7ZYyfGPXWtfg=";
}; };
useFetchCargoVendor = true; useFetchCargoVendor = true;
cargoHash = "sha256-1WomL0O5QS2NHu4k6TuA2jLtDKyxlY0iVCgH9pb6CHI="; cargoHash = "sha256-yzmZC1JwTHefAE2X/D1yfVZN4wGxnH+FkXGqKMuaVeM=";
useNextest = true; useNextest = true;

View File

@ -3,27 +3,30 @@
stdenv, stdenv,
fetchFromGitHub, fetchFromGitHub,
cmake, cmake,
nix-update-script,
}: }:
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "tslib"; pname = "tslib";
version = "1.23"; version = "1.23";
hash = "sha256-2YJDADh/WCksAEIjngAdji98YGmwjpvxSBZkxAwFc7k=";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "libts"; owner = "libts";
repo = "tslib"; repo = "tslib";
rev = finalAttrs.version; tag = finalAttrs.version;
sha256 = finalAttrs.hash; hash = "sha256-2YJDADh/WCksAEIjngAdji98YGmwjpvxSBZkxAwFc7k=";
}; };
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];
passthru.updateScript = nix-update-script { };
meta = { meta = {
description = "Touchscreen access library"; description = "Touchscreen access library";
homepage = "http://www.tslib.org/"; homepage = "http://www.tslib.org/";
license = lib.licenses.lgpl21; license = lib.licenses.lgpl21;
platforms = lib.platforms.all; platforms = lib.platforms.all;
maintainers = with lib.maintainers; [ shogo ]; maintainers = with lib.maintainers; [ shogo ];
teams = with lib.teams; [ ngi ];
}; };
}) })

View File

@ -24,7 +24,10 @@ let
pname = "typora"; pname = "typora";
version = "1.10.8"; version = "1.10.8";
src = fetchurl { src = fetchurl {
url = "https://download.typora.io/linux/typora_${version}_amd64.deb"; urls = [
"https://download.typora.io/linux/typora_${version}_amd64.deb"
"https://download2.typoraio.cn/linux/typora_${version}_amd64.deb"
];
hash = "sha256-7auxTtdVafvM2fIpQVvEey1Q6eLVG3mLdjdZXcqSE/Q="; hash = "sha256-7auxTtdVafvM2fIpQVvEey1Q6eLVG3mLdjdZXcqSE/Q=";
}; };

View File

@ -6,16 +6,16 @@
buildGoModule rec { buildGoModule rec {
pname = "versitygw"; pname = "versitygw";
version = "1.0.14"; version = "1.0.15";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "versity"; owner = "versity";
repo = "versitygw"; repo = "versitygw";
tag = "v${version}"; tag = "v${version}";
hash = "sha256-/64SiVZUXGRI3guvSIqDBXOmbxucPCZEceCObTee6jI="; hash = "sha256-gRVUR1BlGVLS6+OZUvOVgoRNDiHrDSDu2L3iBwZ/zbg=";
}; };
vendorHash = "sha256-HzPjHNZdQ+IJl91QviVG6zydhTb/1tOZGdFBpHLUTfE="; vendorHash = "sha256-7efskc/3bj8/8D5LgQnkC4TYib+73fpDyRKDDcFVRvA=";
doCheck = false; # Require access to online S3 services doCheck = false; # Require access to online S3 services

View File

@ -50,13 +50,13 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "vpp"; pname = "vpp";
version = "25.02"; version = "25.06";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "FDio"; owner = "FDio";
repo = "vpp"; repo = "vpp";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-UDO1mlOEQNCmtR18CCTF+ng5Ms9gfTsnohSygLlPopY="; hash = "sha256-BuHKPQA4qHoADqBg2IztlzUMpbvYKK5uH7ktChSW5vk=";
}; };
postPatch = '' postPatch = ''

View File

@ -14,14 +14,14 @@
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "waycheck"; pname = "waycheck";
version = "1.6.0"; version = "1.7.0";
src = fetchFromGitLab { src = fetchFromGitLab {
domain = "gitlab.freedesktop.org"; domain = "gitlab.freedesktop.org";
owner = "serebit"; owner = "serebit";
repo = "waycheck"; repo = "waycheck";
rev = "v${finalAttrs.version}"; rev = "v${finalAttrs.version}";
hash = "sha256-w6JasxkxwWrkWECsW/dCMj2HcnmeM/VVMnkOXzwNWCQ="; hash = "sha256-wO3+Vwi4wM/NfRdHUt0AVEE6UPr7wkY12JBVzLFqM4c=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View File

@ -7,17 +7,17 @@
rustPlatform.buildRustPackage (finalAttrs: { rustPlatform.buildRustPackage (finalAttrs: {
pname = "wgsl-analyzer"; pname = "wgsl-analyzer";
version = "2025-06-02"; version = "2025-06-28";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "wgsl-analyzer"; owner = "wgsl-analyzer";
repo = "wgsl-analyzer"; repo = "wgsl-analyzer";
tag = finalAttrs.version; tag = finalAttrs.version;
hash = "sha256-bLwehCmWzqDmmg4iGM21BOUquSYJSY2LIqlKuB1bAlA="; hash = "sha256-X4BUZWrCmyixM6D7785jsQ4XYhXemQ7ycl0FUijevkg=";
}; };
useFetchCargoVendor = true; useFetchCargoVendor = true;
cargoHash = "sha256-Z+slANnmrY5bhM8+Ki+l29OAbpqnx38n53CFCuOR6cM="; cargoHash = "sha256-PEhvnIVjNi0O2ZqzSW/CRaK4r5pzd7sMUDhB2eGpqk8=";
checkFlags = [ checkFlags = [
# Imports failures # Imports failures

View File

@ -9,13 +9,13 @@
buildGoModule rec { buildGoModule rec {
pname = "xk6"; pname = "xk6";
version = "1.0.0"; version = "1.0.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "grafana"; owner = "grafana";
repo = "xk6"; repo = "xk6";
tag = "v${version}"; tag = "v${version}";
hash = "sha256-lSEMToo4Bjh9j2Z/wG64TIeHdJ/+HpYlEXyqIK9MJ/Y="; hash = "sha256-uFW8TogMq0Uo0SXzO7V8xK4UCo+u6CTArIWIwz+kyZc=";
}; };
vendorHash = null; vendorHash = null;

View File

@ -231,6 +231,10 @@ rustPlatform.buildRustPackage (finalAttrs: {
# Flaky: unreliably fails on certain hosts (including Hydra) # Flaky: unreliably fails on certain hosts (including Hydra)
"--skip=zed::tests::test_window_edit_state_restoring_enabled" "--skip=zed::tests::test_window_edit_state_restoring_enabled"
] ]
++ lib.optionals stdenv.hostPlatform.isDarwin [
# Flaky: unreliably fails on certain hosts (including Hydra)
"--skip=zed::open_listener::tests::test_open_workspace_with_directory"
]
++ lib.optionals stdenv.hostPlatform.isLinux [ ++ lib.optionals stdenv.hostPlatform.isLinux [
# Fails on certain hosts (including Hydra) for unclear reason # Fails on certain hosts (including Hydra) for unclear reason
"--skip=test_open_paths_action" "--skip=test_open_paths_action"

View File

@ -7,15 +7,15 @@ let
originalDrv = fetchFromGitHub { originalDrv = fetchFromGitHub {
owner = "Aylur"; owner = "Aylur";
repo = "astal"; repo = "astal";
rev = "4820a3e37cc8eb81db6ed991528fb23472a8e4de"; rev = "ac90f09385a2295da9fdc108aaba4a317aaeacc7";
hash = "sha256-SaHAtzUyfm4urAcUEZlBFn7dWhoDqA6kaeFZ11CCTf8="; hash = "sha256-AodIKw7TmI7rHVcOfEsO82stupMYIMVQeLAUQfVxnkU=";
}; };
in in
originalDrv.overrideAttrs ( originalDrv.overrideAttrs (
final: prev: { final: prev: {
name = "${final.pname}-${final.version}"; # fetchFromGitHub already defines name name = "${final.pname}-${final.version}"; # fetchFromGitHub already defines name
pname = "astal-source"; pname = "astal-source";
version = "0-unstable-2025-05-12"; version = "0-unstable-2025-06-28";
meta = prev.meta // { meta = prev.meta // {
description = "Building blocks for creating custom desktop shells (source)"; description = "Building blocks for creating custom desktop shells (source)";

View File

@ -10,9 +10,6 @@
qtkeychain, qtkeychain,
}: }:
let
isQt6 = lib.versions.major qtbase.version == "6";
in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "libquotient"; pname = "libquotient";
version = "0.9.1"; version = "0.9.1";
@ -41,7 +38,6 @@ stdenv.mkDerivation rec {
cmakeFlags = [ cmakeFlags = [
"-DQuotient_ENABLE_E2EE=ON" "-DQuotient_ENABLE_E2EE=ON"
(lib.cmakeBool "BUILD_WITH_QT6" isQt6)
]; ];
# https://github.com/quotient-im/libQuotient/issues/551 # https://github.com/quotient-im/libQuotient/issues/551

View File

@ -6,27 +6,24 @@
protobuf, protobuf,
pytest-asyncio, pytest-asyncio,
pytestCheckHook, pytestCheckHook,
pythonOlder,
zeroconf, zeroconf,
}: }:
buildPythonPackage rec { buildPythonPackage rec {
pname = "aiobafi6"; pname = "aiobafi6";
version = "0.9.0"; version = "0.10.0";
format = "pyproject"; pyproject = true;
disabled = pythonOlder "3.10";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "jfroy"; owner = "jfroy";
repo = "aiobafi6"; repo = "aiobafi6";
tag = version; tag = version;
hash = "sha256-QxjrspvNrcMcGChjj1B4QF/SnWCsGmPxnI2bWAL6BiI="; hash = "sha256-7NIpIRVs6PFPByrGfVDA6P7JTvXGrzbH/lOPdPfZH04=";
}; };
nativeBuildInputs = [ poetry-core ]; build-system = [ poetry-core ];
propagatedBuildInputs = [ dependencies = [
protobuf protobuf
zeroconf zeroconf
]; ];
@ -40,10 +37,10 @@ buildPythonPackage rec {
meta = with lib; { meta = with lib; {
description = "Library for communication with the Big Ass Fans i6 firmware"; description = "Library for communication with the Big Ass Fans i6 firmware";
mainProgram = "aiobafi6";
homepage = "https://github.com/jfroy/aiobafi6"; homepage = "https://github.com/jfroy/aiobafi6";
changelog = "https://github.com/jfroy/aiobafi6/releases/tag/0.8.2"; changelog = "https://github.com/jfroy/aiobafi6/releases/tag/${src.tag}";
license = licenses.asl20; license = licenses.asl20;
maintainers = with maintainers; [ fab ]; maintainers = with maintainers; [ fab ];
mainProgram = "aiobafi6";
}; };
} }

View File

@ -0,0 +1,68 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
cython,
numpy,
setuptools,
wheel,
pytestCheckHook,
pyvista,
nix-update-script,
}:
buildPythonPackage rec {
pname = "fast-simplification";
version = "0.1.11";
pyproject = true;
src = fetchFromGitHub {
owner = "pyvista";
repo = "fast-simplification";
tag = "v${version}";
hash = "sha256-3mqcFTNrq1W376ctJJumzeQccaB4cvoTNW8BHEnv5t8=";
};
build-system = [
cython
numpy
setuptools
wheel
];
dependencies = [
numpy
];
nativeCheckInputs = [
pytestCheckHook
pyvista
];
disabledTests = [
# need network to download data
"test_collapses_louis"
"test_human"
];
# make sure import the built version, not the source one
preCheck = ''
rm -r fast_simplification
'';
pythonImportsCheck = [
"fast_simplification"
];
passthru.updateScript = nix-update-script { };
meta = {
description = "Fast Quadratic Mesh Simplification";
homepage = "https://github.com/pyvista/fast-simplification";
changelog = "https://github.com/pyvista/fast-simplification/releases/tag/v${version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
yzx9
];
};
}

View File

@ -16,7 +16,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "homematicip"; pname = "homematicip";
version = "2.0.6"; version = "2.0.7";
pyproject = true; pyproject = true;
disabled = pythonOlder "3.12"; disabled = pythonOlder "3.12";
@ -25,7 +25,7 @@ buildPythonPackage rec {
owner = "hahn-th"; owner = "hahn-th";
repo = "homematicip-rest-api"; repo = "homematicip-rest-api";
tag = version; tag = version;
hash = "sha256-HV+4ZmYr6LsSBbQnr4PUD2u0y6uWxuCMUgNh7gG9IH8="; hash = "sha256-j4/QKNzX8Zi8mgS4DOBVBAwLBsM4qBEXCSIkub04KBQ=";
}; };
build-system = [ build-system = [

View File

@ -0,0 +1,37 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
infinity,
pytestCheckHook,
setuptools,
}:
buildPythonPackage rec {
pname = "intervals";
version = "0.9.2";
pyproject = true;
src = fetchFromGitHub {
owner = "kvesteri";
repo = "intervals";
tag = version;
hash = "sha256-5SwbGF7RU+2wgGnqhhFCdV89tsEIum4w7RwPU7+3MRQ=";
};
build-system = [ setuptools ];
dependencies = [ infinity ];
nativeCheckInputs = [ pytestCheckHook ];
pythonImportsCheck = [ "intervals" ];
meta = {
description = "Tools for handling intervals (ranges of comparable objects)";
homepage = "https://github.com/kvesteri/intervals";
changelog = "https://github.com/kvesteri/intervals/blob/${version}/CHANGES.rst";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ jherland ];
};
}

View File

@ -11,13 +11,13 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "llama-index-vector-stores-postgres"; pname = "llama-index-vector-stores-postgres";
version = "0.5.3"; version = "0.5.4";
pyproject = true; pyproject = true;
src = fetchPypi { src = fetchPypi {
pname = "llama_index_vector_stores_postgres"; pname = "llama_index_vector_stores_postgres";
inherit version; inherit version;
hash = "sha256-P4gn+1mm4m8iah7F1yAbMm9+cAfyt+WKxH4Jcq+9O2k="; hash = "sha256-328F/9fBSOTTZjqzhs8Fmnb7WbPJs0EQrdl/wVShbio=";
}; };
pythonRemoveDeps = [ "psycopg2-binary" ]; pythonRemoveDeps = [ "psycopg2-binary" ];

View File

@ -0,0 +1,43 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
poetry-core,
pytestCheckHook,
}:
buildPythonPackage rec {
pname = "pytest-asyncio-cooperative";
version = "0.40.0";
pyproject = true;
src = fetchFromGitHub {
owner = "willemt";
repo = "pytest-asyncio-cooperative";
tag = "v${version}";
hash = "sha256-WA2swhgpn7Ct409tk91gQiHUZCXQLO0eznqskOVlU1U=";
};
build-system = [ poetry-core ];
nativeCheckInputs = [ pytestCheckHook ];
disabledTestPaths = [
"example/hypothesis_test.py"
];
disabledTests = [
"test_tmp_path"
"test_session_scope_gen"
"test_session_scope_async_gen"
"test_retry"
];
pythonImportsCheck = [ "pytest_asyncio_cooperative" ];
meta = {
description = "Use asyncio to run your I/O bound test suite efficiently and quickly";
homepage = "https://github.com/willemt/pytest-asyncio-cooperative";
changelog = "https://github.com/willemt/pytest-asyncio-cooperative/releases/tag/v${version}";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ jherland ];
};
}

View File

@ -68,7 +68,7 @@ buildPythonPackage rec {
"test_tls_ext_noca" "test_tls_ext_noca"
]; ];
doCheck = !stdenv.hostPlatform.isDarwin; __darwinAllowLocalNetworking = true;
meta = with lib; { meta = with lib; {
description = "Python modules for implementing LDAP clients"; description = "Python modules for implementing LDAP clients";

View File

@ -1,28 +1,31 @@
{ {
lib, lib,
buildPythonPackage,
fetchPypi,
aiohttp, aiohttp,
buildPythonPackage,
click, click,
fetchFromGitHub,
poetry-core,
requests, requests,
setuptools,
}: }:
buildPythonPackage rec { buildPythonPackage rec {
pname = "python-mystrom"; pname = "python-mystrom";
version = "2.2.0"; version = "2.4.0";
format = "setuptools"; pyproject = true;
src = fetchPypi { src = fetchFromGitHub {
inherit pname version; owner = "home-assistant-ecosystem";
hash = "sha256-VFsTA/isBw0H7qXQhOX6K2p1QcVxO7q5TIzf8YivVgc="; repo = "python-mystrom";
tag = version;
hash = "sha256-zG1T+wC0GznNwP3fi8GKtY9Csq9hyX0vw+h7ARVPQFQ=";
}; };
propagatedBuildInputs = [ build-system = [ poetry-core ];
dependencies = [
aiohttp aiohttp
click click
requests requests
setuptools
]; ];
# no tests are present # no tests are present
@ -36,14 +39,14 @@ buildPythonPackage rec {
meta = with lib; { meta = with lib; {
description = "Python API client for interacting with myStrom devices"; description = "Python API client for interacting with myStrom devices";
mainProgram = "mystrom";
longDescription = '' longDescription = ''
Asynchronous Python API client for interacting with myStrom devices. Asynchronous Python API client for interacting with myStrom devices.
There is support for bulbs, motion sensors, plugs and buttons. There is support for bulbs, motion sensors, plugs and buttons.
''; '';
homepage = "https://github.com/home-assistant-ecosystem/python-mystrom"; homepage = "https://github.com/home-assistant-ecosystem/python-mystrom";
changelog = "https://github.com/home-assistant-ecosystem/python-mystrom/releases/tag/${version}"; changelog = "https://github.com/home-assistant-ecosystem/python-mystrom/releases/tag/${src.tag}";
license = with licenses; [ mit ]; license = licenses.mit;
maintainers = with maintainers; [ fab ]; maintainers = with maintainers; [ fab ];
mainProgram = "mystrom";
}; };
} }

View File

@ -24,7 +24,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "python-roborock"; pname = "python-roborock";
version = "2.19.0"; version = "2.23.0";
pyproject = true; pyproject = true;
disabled = pythonOlder "3.11"; disabled = pythonOlder "3.11";
@ -33,7 +33,7 @@ buildPythonPackage rec {
owner = "humbertogontijo"; owner = "humbertogontijo";
repo = "python-roborock"; repo = "python-roborock";
tag = "v${version}"; tag = "v${version}";
hash = "sha256-d0rjMo9/ZsqygxdNf78t3Ct2VJjvYQrCrYkIeG6Zkkc="; hash = "sha256-R4whfpm7DuR5KNbQv0e+KEK9clNO5AN7wCQ6ShyaGC0=";
}; };
postPatch = '' postPatch = ''

View File

@ -0,0 +1,49 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
pythonOlder,
hatchling,
optype,
scipy,
}:
buildPythonPackage rec {
pname = "scipy-stubs";
version = "1.16.0.0";
pyproject = true;
src = fetchFromGitHub {
owner = "scipy";
repo = "scipy-stubs";
tag = "v${version}";
hash = "sha256-LuBypvtbLp7Zo8Rou1JwBwJjZr0BBic25dhX5Yg1Esk=";
};
disabled = pythonOlder "3.11";
build-system = [
hatchling
];
dependencies = [
optype
];
optional-dependencies = {
scipy = [
scipy
];
};
nativeCheckInputs = [
scipy
];
meta = {
description = "Typing Stubs for SciPy";
homepage = "https://github.com/scipy/scipy-stubs";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ jolars ];
};
}

View File

@ -7,12 +7,12 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "tftpy"; pname = "tftpy";
version = "0.8.5"; version = "0.8.6";
format = "pyproject"; format = "pyproject";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
hash = "sha256-3TjjdEUw0MMPoccV1/pFQxm8jTmbtAwFg5zHcfBdDmw="; hash = "sha256-9hb2pDo21IHCZlc2CFl7ndPHxjgYQV1yqgTx0XlUgOo=";
}; };
nativeBuildInputs = [ setuptools ]; nativeBuildInputs = [ setuptools ];

View File

@ -7,13 +7,13 @@
buildGoModule rec { buildGoModule rec {
pname = "fastly-exporter"; pname = "fastly-exporter";
version = "9.4.0"; version = "9.5.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "fastly"; owner = "fastly";
repo = "fastly-exporter"; repo = "fastly-exporter";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-C2lm9E60mjMCkMnUNdm3P+OXx0nUc7JwV1zNYnmlVt0="; hash = "sha256-W3VVnI83RKwNkQj4njvZS+ANklNR27BWIrJmdcmSq2I=";
}; };
vendorHash = "sha256-wbkm6b8xTGAQ4bCjIOVvJVA7sckPxtDiwMcjglaL/Pk="; vendorHash = "sha256-wbkm6b8xTGAQ4bCjIOVvJVA7sckPxtDiwMcjglaL/Pk=";

View File

@ -13,6 +13,7 @@
editline, editline,
ncurses, ncurses,
clangStdenv, clangStdenv,
nixpkgs-review,
nix-direnv, nix-direnv,
nix-fast-build, nix-fast-build,
colmena, colmena,
@ -92,6 +93,10 @@ let
stdenv = lixStdenv; stdenv = lixStdenv;
}; };
nixpkgs-review = nixpkgs-review.override {
nix = self.lix;
};
nix-direnv = nix-direnv.override { nix-direnv = nix-direnv.override {
nix = self.lix; nix = self.lix;
}; };

View File

@ -21,16 +21,17 @@ let
platforms = oldMeta.platforms or ghidra.meta.platforms; platforms = oldMeta.platforms or ghidra.meta.platforms;
}; };
buildGhidraExtension = buildGhidraExtension = lib.extendMkDerivation {
constructDrv = stdenv.mkDerivation;
extendDrvArgs =
finalAttrs:
{ {
pname, pname,
nativeBuildInputs ? [ ], nativeBuildInputs ? [ ],
meta ? { }, meta ? { },
... ...
}@args: }@args:
stdenv.mkDerivation ( {
args
// {
nativeBuildInputs = nativeBuildInputs ++ [ nativeBuildInputs = nativeBuildInputs ++ [
unzip unzip
jdk jdk
@ -67,18 +68,19 @@ let
''; '';
meta = metaCommon meta; meta = metaCommon meta;
} };
); };
buildGhidraScripts = buildGhidraScripts = lib.extendMkDerivation {
constructDrv = stdenv.mkDerivation;
extendDrvArgs =
finalAttrs:
{ {
pname, pname,
meta ? { }, meta ? { },
... ...
}@args: }@args:
stdenv.mkDerivation ( {
args
// {
installPhase = '' installPhase = ''
runHook preInstall runHook preInstall
@ -100,8 +102,8 @@ let
''; '';
meta = metaCommon meta; meta = metaCommon meta;
} };
); };
in in
{ {
inherit buildGhidraExtension buildGhidraScripts; inherit buildGhidraExtension buildGhidraScripts;

View File

@ -3,26 +3,23 @@
fetchFromGitHub, fetchFromGitHub,
buildGhidraExtension, buildGhidraExtension,
}: }:
let buildGhidraExtension (finalAttrs: {
version = "3.0.6";
in
buildGhidraExtension {
pname = "findcrypt"; pname = "findcrypt";
inherit version; version = "3.0.6";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "antoniovazquezblanco"; owner = "antoniovazquezblanco";
repo = "GhidraFindcrypt"; repo = "GhidraFindcrypt";
rev = "v${version}"; rev = "v${finalAttrs.version}";
hash = "sha256-VWi1MP72Vl4XCrbTvRA6qYPk2QyvRyVb9N8QQ/Zml0A="; hash = "sha256-VWi1MP72Vl4XCrbTvRA6qYPk2QyvRyVb9N8QQ/Zml0A=";
}; };
meta = { meta = {
description = "Ghidra analysis plugin to locate cryptographic constants"; description = "Ghidra analysis plugin to locate cryptographic constants";
homepage = "https://github.com/antoniovazquezblanco/GhidraFindcrypt"; homepage = "https://github.com/antoniovazquezblanco/GhidraFindcrypt";
downloadPage = "https://github.com/antoniovazquezblanco/GhidraFindcrypt/releases/tag/v${version}"; downloadPage = "https://github.com/antoniovazquezblanco/GhidraFindcrypt/releases/tag/v${finalAttrs.version}";
changelog = "https://github.com/antoniovazquezblanco/GhidraFindcrypt/releases/tag/v${version}"; changelog = "https://github.com/antoniovazquezblanco/GhidraFindcrypt/releases/tag/v${finalAttrs.version}";
license = lib.licenses.gpl3; license = lib.licenses.gpl3;
maintainers = [ lib.maintainers.BonusPlay ]; maintainers = [ lib.maintainers.BonusPlay ];
}; };
} })

View File

@ -4,22 +4,20 @@
gradle, gradle,
fetchFromGitHub, fetchFromGitHub,
}: }:
let ghidra.buildGhidraExtension (finalAttrs: {
version = "0.5.1";
self = ghidra.buildGhidraExtension {
pname = "ghidra-delinker-extension"; pname = "ghidra-delinker-extension";
inherit version; version = "0.5.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "boricj"; owner = "boricj";
repo = "ghidra-delinker-extension"; repo = "ghidra-delinker-extension";
rev = "v${version}"; rev = "v${finalAttrs.version}";
hash = "sha256-h6F50Z7S6tPOl9mIhChLKoFxHuAkq/n36ysUEFwWGxI="; hash = "sha256-h6F50Z7S6tPOl9mIhChLKoFxHuAkq/n36ysUEFwWGxI=";
}; };
postPatch = '' postPatch = ''
substituteInPlace build.gradle \ substituteInPlace build.gradle \
--replace-fail '"''${getGitHash()}"' '"v${version}"' --replace-fail '"''${getGitHash()}"' '"v${finalAttrs.version}"'
''; '';
gradleBuildTask = "buildExtension"; gradleBuildTask = "buildExtension";
@ -27,7 +25,7 @@ let
__darwinAllowLocalNetworking = true; __darwinAllowLocalNetworking = true;
mitmCache = gradle.fetchDeps { mitmCache = gradle.fetchDeps {
pkg = self; pkg = finalAttrs.finalPackage;
data = ./deps.json; data = ./deps.json;
}; };
@ -38,6 +36,4 @@ let
maintainers = [ lib.maintainers.jchw ]; maintainers = [ lib.maintainers.jchw ];
platforms = lib.platforms.unix; platforms = lib.platforms.unix;
}; };
}; })
in
self

View File

@ -3,22 +3,22 @@
fetchFromGitHub, fetchFromGitHub,
buildGhidraExtension, buildGhidraExtension,
}: }:
buildGhidraExtension rec { buildGhidraExtension (finalAttrs: {
pname = "Ghidra-GolangAnalyzerExtension"; pname = "Ghidra-GolangAnalyzerExtension";
version = "1.2.4"; version = "1.2.4";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "mooncat-greenpy"; owner = "mooncat-greenpy";
repo = "Ghidra_GolangAnalyzerExtension"; repo = "Ghidra_GolangAnalyzerExtension";
rev = version; rev = finalAttrs.version;
hash = "sha256-uxozIJ+BLcP1vBnLOCZD9ueY10hd37fON/Miii3zabo="; hash = "sha256-uxozIJ+BLcP1vBnLOCZD9ueY10hd37fON/Miii3zabo=";
}; };
meta = { meta = {
description = "Facilitates the analysis of Golang binaries using Ghidra"; description = "Facilitates the analysis of Golang binaries using Ghidra";
homepage = "https://github.com/mooncat-greenpy/Ghidra_GolangAnalyzerExtension"; homepage = "https://github.com/mooncat-greenpy/Ghidra_GolangAnalyzerExtension";
downloadPage = "https://github.com/mooncat-greenpy/Ghidra_GolangAnalyzerExtension/releases/tag/${version}"; downloadPage = "https://github.com/mooncat-greenpy/Ghidra_GolangAnalyzerExtension/releases/tag/${finalAttrs.version}";
license = lib.licenses.mit; license = lib.licenses.mit;
maintainers = [ lib.maintainers.ivyfanchiang ]; maintainers = [ lib.maintainers.ivyfanchiang ];
}; };
} })

View File

@ -24,14 +24,14 @@ let
} }
); );
self = buildGhidraExtension rec { self = buildGhidraExtension (finalAttrs: {
pname = "kaiju"; pname = "kaiju";
version = "250610"; version = "250610";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "CERTCC"; owner = "CERTCC";
repo = "kaiju"; repo = "kaiju";
rev = version; rev = finalAttrs.version;
hash = "sha256-qqUnWakQDOBw3sI/6iWD9140iRAsM5PUEQJSV/3/8FQ="; hash = "sha256-qqUnWakQDOBw3sI/6iWD9140iRAsM5PUEQJSV/3/8FQ=";
}; };
@ -58,7 +58,7 @@ let
meta = { meta = {
description = "A Java implementation of some features of the CERT Pharos Binary Analysis Framework for Ghidra"; description = "A Java implementation of some features of the CERT Pharos Binary Analysis Framework for Ghidra";
homepage = "https://github.com/CERTCC/kaiju"; homepage = "https://github.com/CERTCC/kaiju";
downloadPage = "https://github.com/CERTCC/kaiju/releases/tag/${version}"; downloadPage = "https://github.com/CERTCC/kaiju/releases/tag/${finalAttrs.version}";
license = lib.licenses.bsd3; license = lib.licenses.bsd3;
maintainers = [ lib.maintainers.ivyfanchiang ]; maintainers = [ lib.maintainers.ivyfanchiang ];
platforms = [ platforms = [
@ -68,6 +68,6 @@ let
"aarch64-darwin" "aarch64-darwin"
]; ];
}; };
}; });
in in
self self

View File

@ -3,14 +3,14 @@
fetchFromGitHub, fetchFromGitHub,
buildGhidraExtension, buildGhidraExtension,
}: }:
buildGhidraExtension rec { buildGhidraExtension (finalAttrs: {
pname = "lightkeeper"; pname = "lightkeeper";
version = "1.2.4"; version = "1.2.4";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "WorksButNotTested"; owner = "WorksButNotTested";
repo = "lightkeeper"; repo = "lightkeeper";
rev = version; rev = finalAttrs.version;
hash = "sha256-aGMWg6VQleKH/txlxpSw19QOotWZSqeW5Ve2SpWGhgA="; hash = "sha256-aGMWg6VQleKH/txlxpSw19QOotWZSqeW5Ve2SpWGhgA=";
}; };
preConfigure = '' preConfigure = ''
@ -21,4 +21,4 @@ buildGhidraExtension rec {
homepage = "https://github.com/WorksButNotTested/lightkeeper"; homepage = "https://github.com/WorksButNotTested/lightkeeper";
license = lib.licenses.asl20; license = lib.licenses.asl20;
}; };
} })

View File

@ -5,17 +5,14 @@
ghidra, ghidra,
ant, ant,
}: }:
let buildGhidraExtension (finalAttrs: {
version = "2.3.1";
in
buildGhidraExtension {
pname = "wasm"; pname = "wasm";
inherit version; version = "2.3.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "nneonneo"; owner = "nneonneo";
repo = "ghidra-wasm-plugin"; repo = "ghidra-wasm-plugin";
rev = "v${version}"; rev = "v${finalAttrs.version}";
hash = "sha256-aoSMNzv+TgydiXM4CbvAyu/YsxmdZPvpkZkYEE3C+V4="; hash = "sha256-aoSMNzv+TgydiXM4CbvAyu/YsxmdZPvpkZkYEE3C+V4=";
}; };
@ -35,9 +32,9 @@ buildGhidraExtension {
meta = { meta = {
description = "Ghidra Wasm plugin with disassembly and decompilation support"; description = "Ghidra Wasm plugin with disassembly and decompilation support";
homepage = "https://github.com/nneonneo/ghidra-wasm-plugin"; homepage = "https://github.com/nneonneo/ghidra-wasm-plugin";
downloadPage = "https://github.com/nneonneo/ghidra-wasm-plugin/releases/tag/v${version}"; downloadPage = "https://github.com/nneonneo/ghidra-wasm-plugin/releases/tag/v${finalAttrs.version}";
changelog = "https://github.com/nneonneo/ghidra-wasm-plugin/releases/tag/v${version}"; changelog = "https://github.com/nneonneo/ghidra-wasm-plugin/releases/tag/v${finalAttrs.version}";
license = lib.licenses.gpl3; license = lib.licenses.gpl3;
maintainers = [ lib.maintainers.BonusPlay ]; maintainers = [ lib.maintainers.BonusPlay ];
}; };
} })

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