Merge master into staging-next

This commit is contained in:
nixpkgs-ci[bot]
2025-07-29 18:06:19 +00:00
committed by GitHub
71 changed files with 1181 additions and 237 deletions
@@ -23,6 +23,8 @@
- [Fediwall](https://fediwall.social), a web application for live displaying toots from mastodon, inspired by mastowall. Available as [services.fediwall](#opt-services.fediwall.enable).
- [umami](https://github.com/umami-software/umami), a simple, fast, privacy-focused alternative to Google Analytics. Available with [services.umami](#opt-services.umami.enable).
- [FileBrowser](https://filebrowser.org/), a web application for managing and sharing files. Available as [services.filebrowser](#opt-services.filebrowser.enable).
- Options under [networking.getaddrinfo](#opt-networking.getaddrinfo.enable) are now allowed to declaratively configure address selection and sorting behavior of `getaddrinfo` in dual-stack networks.
@@ -40,6 +42,8 @@
- [Chhoto URL](https://github.com/SinTan1729/chhoto-url), a simple, blazingly fast, selfhosted URL shortener with no unnecessary features, written in Rust. Available as [services.chhoto-url](#opt-services.chhoto-url.enable).
- [go-httpbin](https://github.com/mccutchen/go-httpbin), a reasonably complete and well-tested golang port of httpbin, with zero dependencies outside the go stdlib. Available as [services.go-httpbin](#opt-services.go-httpbin.enable).
- [tuwunel](https://matrix-construct.github.io/tuwunel/), a federated chat server implementing the Matrix protocol, forked from Conduwuit. Available as [services.matrix-tuwunel](#opt-services.matrix-tuwunel.enable).
- [Broadcast Box](https://github.com/Glimesh/broadcast-box), a WebRTC broadcast server. Available as [services.broadcast-box](options.html#opt-services.broadcast-box.enable).
+2
View File
@@ -1575,6 +1575,7 @@
./services/web-apps/gerrit.nix
./services/web-apps/glance.nix
./services/web-apps/glitchtip.nix
./services/web-apps/go-httpbin.nix
./services/web-apps/goatcounter.nix
./services/web-apps/gotify-server.nix
./services/web-apps/gotosocial.nix
@@ -1689,6 +1690,7 @@
./services/web-apps/szurubooru.nix
./services/web-apps/trilium.nix
./services/web-apps/tt-rss.nix
./services/web-apps/umami.nix
./services/web-apps/vikunja.nix
./services/web-apps/wakapi.nix
./services/web-apps/weblate.nix
+32 -3
View File
@@ -18,12 +18,16 @@ let
${lib.optionalString (cfg.use != "") "use=${cfg.use}"}
${lib.optionalString (cfg.use == "" && cfg.usev4 != "") "usev4=${cfg.usev4}"}
${lib.optionalString (cfg.use == "" && cfg.usev6 != "") "usev6=${cfg.usev6}"}
login=${cfg.username}
password=${
${lib.optionalString (cfg.username != "") "login=${cfg.username}"}
${
if cfg.protocol == "nsupdate" then
"/run/${RuntimeDirectory}/ddclient.key"
else if (cfg.passwordFile != null) then
"password=@password_placeholder@"
else if (cfg.secretsFile != null) then
"@secrets_placeholder@"
else
"@password_placeholder@"
""
}
protocol=${cfg.protocol}
${lib.optionalString (cfg.script != "") "script=${cfg.script}"}
@@ -49,6 +53,10 @@ let
''
"${pkgs.replace-secret}/bin/replace-secret" "@password_placeholder@" "${cfg.passwordFile}" "/run/${RuntimeDirectory}/ddclient.conf"
''
else if (cfg.secretsFile != null) then
''
"${pkgs.replace-secret}/bin/replace-secret" "@secrets_placeholder@" "${cfg.secretsFile}" "/run/${RuntimeDirectory}/ddclient.conf"
''
else
''
sed -i '/^password=@password_placeholder@$/d' /run/${RuntimeDirectory}/ddclient.conf
@@ -126,6 +134,16 @@ in
'';
};
secretsFile = lib.mkOption {
default = null;
type = nullOr str;
description = ''
A file containing the secrets for the dynamic DNS provider.
This file should contain lines of valid secrets in the format specified by the ddclient documentation.
If this option is set, it overrides the `passwordFile` option.
'';
};
interval = lib.mkOption {
default = "10min";
type = str;
@@ -244,6 +262,17 @@ in
lib.optional (cfg.use != "")
"Setting `use` is deprecated, ddclient now supports `usev4` and `usev6` for separate IPv4/IPv6 configuration.";
assertions = [
{
assertion = !((cfg.passwordFile != null) && (cfg.secretsFile != null));
message = "You cannot use both services.ddclient.passwordFile and services.ddclient.secretsFile at the same time.";
}
{
assertion = !(cfg.protocol == "nsupdate") || (cfg.passwordFile == null && cfg.secretsFile == null);
message = "You cannot use services.ddclient.passwordFile and or services.ddclient.secretsFile when services.ddclient.protocol is \"nsupdate\".";
}
];
systemd.services.ddclient = {
description = "Dynamic DNS Client";
wantedBy = [ "multi-user.target" ];
@@ -0,0 +1,111 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.services.go-httpbin;
environment = lib.mapAttrs (
_: value: if lib.isBool value then lib.boolToString value else toString value
) cfg.settings;
in
{
meta.maintainers = with lib.maintainers; [ defelo ];
options.services.go-httpbin = {
enable = lib.mkEnableOption "go-httpbin";
package = lib.mkPackageOption pkgs "go-httpbin" { };
settings = lib.mkOption {
description = ''
Configuration of go-httpbin.
See <https://github.com/mccutchen/go-httpbin#configuration> for a list of options.
'';
example = {
HOST = "0.0.0.0";
PORT = 8080;
};
type = lib.types.submodule {
freeformType =
with lib.types;
attrsOf (oneOf [
str
int
bool
]);
options = {
HOST = lib.mkOption {
type = lib.types.str;
description = "The host to listen on.";
default = "127.0.0.1";
example = "0.0.0.0";
};
PORT = lib.mkOption {
type = lib.types.port;
description = "The port to listen on.";
example = 8080;
};
};
};
};
};
config = lib.mkIf cfg.enable {
systemd.services.go-httpbin = {
wantedBy = [ "multi-user.target" ];
inherit environment;
serviceConfig = {
User = "go-httpbin";
Group = "go-httpbin";
DynamicUser = true;
ExecStart = lib.getExe cfg.package;
# hardening
AmbientCapabilities = "";
CapabilityBoundingSet = [ "" ];
DevicePolicy = "closed";
LockPersonality = true;
MemoryDenyWriteExecute = 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" ];
RestrictNamespaces = true;
RestrictRealtime = true;
RestrictSUIDSGID = true;
SocketBindAllow = "tcp:${toString cfg.settings.PORT}";
SocketBindDeny = "any";
SystemCallArchitectures = "native";
SystemCallFilter = [
"@system-service"
"~@privileged"
"~@resources"
];
UMask = "0077";
};
};
};
}
@@ -230,7 +230,7 @@ in
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 ""
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";
};
@@ -328,16 +328,10 @@ in
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
(
@@ -346,11 +340,17 @@ in
)
fi
''}
if [ "${cfg.backendPackage.version}" != "$(cat .version)" ]; then
${getExe cfg.backendPackage} migrate
echo -n "${cfg.backendPackage.version}" > .version
fi
'';
environment = pythonEnvironment;
serviceConfig = {
BindReadOnlyPaths = "${cfg.backendPackage}/share/static:/var/lib/lasuite-meet/static";
ExecStart = utils.escapeSystemdExecArgs (
[
(lib.getExe' cfg.backendPackage "gunicorn")
+316
View File
@@ -0,0 +1,316 @@
{
config,
lib,
pkgs,
...
}:
let
inherit (lib)
concatStringsSep
filterAttrs
getExe
hasPrefix
hasSuffix
isString
literalExpression
maintainers
mapAttrs
mkEnableOption
mkIf
mkOption
mkPackageOption
optional
optionalString
types
;
cfg = config.services.umami;
nonFileSettings = filterAttrs (k: _: !hasSuffix "_FILE" k) cfg.settings;
in
{
options.services.umami = {
enable = mkEnableOption "umami";
package = mkPackageOption pkgs "umami" { } // {
apply =
pkg:
pkg.override {
databaseType = cfg.settings.DATABASE_TYPE;
collectApiEndpoint = optionalString (
cfg.settings.COLLECT_API_ENDPOINT != null
) cfg.settings.COLLECT_API_ENDPOINT;
trackerScriptNames = cfg.settings.TRACKER_SCRIPT_NAME;
basePath = cfg.settings.BASE_PATH;
};
};
createPostgresqlDatabase = mkOption {
type = types.bool;
default = true;
example = false;
description = ''
Whether to automatically create the database for Umami using PostgreSQL.
Both the database name and username will be `umami`, and the connection is
made through unix sockets using peer authentication.
'';
};
settings = mkOption {
description = ''
Additional configuration (environment variables) for Umami, see
<https://umami.is/docs/environment-variables> for supported values.
'';
type = types.submodule {
freeformType =
with types;
attrsOf (oneOf [
bool
int
str
]);
options = {
APP_SECRET_FILE = mkOption {
type = types.nullOr (
types.str
// {
# We don't want users to be able to pass a path literal here but
# it should look like a path.
check = it: isString it && types.path.check it;
}
);
default = null;
example = "/run/secrets/umamiAppSecret";
description = ''
A file containing a secure random string. This is used for signing user sessions.
The contents of the file are read through systemd credentials, therefore the
user running umami does not need permissions to read the file.
If you wish to set this to a string instead (not recommended since it will be
placed world-readable in the Nix store), you can use the APP_SECRET option.
'';
};
DATABASE_URL = mkOption {
type = types.nullOr (
types.str
// {
check =
it:
isString it
&& ((hasPrefix "postgresql://" it) || (hasPrefix "postgres://" it) || (hasPrefix "mysql://" it));
}
);
# For some reason, Prisma requires the username in the connection string
# and can't derive it from the current user.
default =
if cfg.createPostgresqlDatabase then
"postgresql://umami@localhost/umami?host=/run/postgresql"
else
null;
defaultText = literalExpression ''if config.services.umami.createPostgresqlDatabase then "postgresql://umami@localhost/umami?host=/run/postgresql" else null'';
example = "postgresql://root:root@localhost/umami";
description = ''
Connection string for the database. Must start with `postgresql://`, `postgres://`
or `mysql://`.
'';
};
DATABASE_URL_FILE = mkOption {
type = types.nullOr (
types.str
// {
# We don't want users to be able to pass a path literal here but
# it should look like a path.
check = it: isString it && types.path.check it;
}
);
default = null;
example = "/run/secrets/umamiDatabaseUrl";
description = ''
A file containing a connection string for the database. The connection string
must start with `postgresql://`, `postgres://` or `mysql://`.
If using this, then DATABASE_TYPE must be set to the appropriate value.
The contents of the file are read through systemd credentials, therefore the
user running umami does not need permissions to read the file.
'';
};
DATABASE_TYPE = mkOption {
type = types.nullOr (
types.enum [
"postgresql"
"mysql"
]
);
default =
if cfg.settings.DATABASE_URL != null && hasPrefix "mysql://" cfg.settings.DATABASE_URL then
"mysql"
else
"postgresql";
defaultText = literalExpression ''if config.services.umami.settings.DATABASE_URL != null && hasPrefix "mysql://" config.services.umami.settings.DATABASE_URL then "mysql" else "postgresql"'';
example = "mysql";
description = ''
The type of database to use. This is automatically inferred from DATABASE_URL, but
must be set manually if you are using DATABASE_URL_FILE.
'';
};
COLLECT_API_ENDPOINT = mkOption {
type = types.nullOr types.str;
default = null;
example = "/api/alternate-send";
description = ''
Allows you to send metrics to a location different than the default `/api/send`.
'';
};
TRACKER_SCRIPT_NAME = mkOption {
type = types.listOf types.str;
default = [ ];
example = [ "tracker.js" ];
description = ''
Allows you to assign a custom name to the tracker script different from the default `script.js`.
'';
};
BASE_PATH = mkOption {
type = types.str;
default = "";
example = "/analytics";
description = ''
Allows you to host Umami under a subdirectory.
You may need to update your reverse proxy settings to correctly handle the BASE_PATH prefix.
'';
};
DISABLE_UPDATES = mkOption {
type = types.bool;
default = true;
example = false;
description = ''
Disables the check for new versions of Umami.
'';
};
DISABLE_TELEMETRY = mkOption {
type = types.bool;
default = false;
example = true;
description = ''
Umami collects completely anonymous telemetry data in order help improve the application.
You can choose to disable this if you don't want to participate.
'';
};
HOSTNAME = mkOption {
type = types.str;
default = "127.0.0.1";
example = "0.0.0.0";
description = ''
The address to listen on.
'';
};
PORT = mkOption {
type = types.port;
default = 3000;
example = 3010;
description = ''
The port to listen on.
'';
};
};
};
default = { };
example = {
APP_SECRET_FILE = "/run/secrets/umamiAppSecret";
DISABLE_TELEMETRY = true;
};
};
};
config = mkIf cfg.enable {
assertions = [
{
assertion = (cfg.settings.APP_SECRET_FILE != null) != (cfg.settings ? APP_SECRET);
message = "One (and only one) of services.umami.settings.APP_SECRET_FILE and services.umami.settings.APP_SECRET must be set.";
}
{
assertion = (cfg.settings.DATABASE_URL_FILE != null) != (cfg.settings.DATABASE_URL != null);
message = "One (and only one) of services.umami.settings.DATABASE_URL_FILE and services.umami.settings.DATABASE_URL must be set.";
}
{
assertion =
cfg.createPostgresqlDatabase
-> cfg.settings.DATABASE_URL == "postgresql://umami@localhost/umami?host=/run/postgresql";
message = "The option config.services.umami.createPostgresqlDatabase is enabled, but config.services.umami.settings.DATABASE_URL has been modified.";
}
];
services.postgresql = mkIf cfg.createPostgresqlDatabase {
enable = true;
ensureDatabases = [ "umami" ];
ensureUsers = [
{
name = "umami";
ensureDBOwnership = true;
ensureClauses.login = true;
}
];
};
systemd.services.umami = {
environment = mapAttrs (_: toString) nonFileSettings;
description = "Umami: a simple, fast, privacy-focused alternative to Google Analytics";
after = [ "network.target" ] ++ (optional (cfg.createPostgresqlDatabase) "postgresql.service");
wantedBy = [ "multi-user.target" ];
script =
let
loadCredentials =
(optional (
cfg.settings.APP_SECRET_FILE != null
) ''export APP_SECRET="$(systemd-creds cat appSecret)"'')
++ (optional (
cfg.settings.DATABASE_URL_FILE != null
) ''export DATABASE_URL="$(systemd-creds cat databaseUrl)"'');
in
''
${concatStringsSep "\n" loadCredentials}
${getExe cfg.package}
'';
serviceConfig = {
Type = "simple";
Restart = "on-failure";
RestartSec = 3;
DynamicUser = true;
LoadCredential =
(optional (cfg.settings.APP_SECRET_FILE != null) "appSecret:${cfg.settings.APP_SECRET_FILE}")
++ (optional (
cfg.settings.DATABASE_URL_FILE != null
) "databaseUrl:${cfg.settings.DATABASE_URL_FILE}");
# Hardening
CapabilityBoundingSet = "";
NoNewPrivileges = true;
PrivateUsers = true;
PrivateTmp = true;
PrivateDevices = true;
PrivateMounts = true;
ProtectClock = true;
ProtectControlGroups = true;
ProtectHome = true;
ProtectHostname = true;
ProtectKernelLogs = true;
ProtectKernelModules = true;
ProtectKernelTunables = true;
RestrictAddressFamilies = (optional cfg.createPostgresqlDatabase "AF_UNIX") ++ [
"AF_INET"
"AF_INET6"
];
RestrictNamespaces = true;
RestrictRealtime = true;
RestrictSUIDSGID = true;
};
};
};
meta.maintainers = with maintainers; [ diogotcorreia ];
}
+2
View File
@@ -618,6 +618,7 @@ in
gnupg = runTest ./gnupg.nix;
goatcounter = runTest ./goatcounter.nix;
go-camo = runTest ./go-camo.nix;
go-httpbin = runTest ./go-httpbin.nix;
go-neb = runTest ./go-neb.nix;
gobgpd = runTest ./gobgpd.nix;
gocd-agent = runTest ./gocd-agent.nix;
@@ -1508,6 +1509,7 @@ in
ucarp = runTest ./ucarp.nix;
udisks2 = runTest ./udisks2.nix;
ulogd = runTest ./ulogd/ulogd.nix;
umami = runTest ./web-apps/umami.nix;
umurmur = runTest ./umurmur.nix;
unbound = runTest ./unbound.nix;
unifi = runTest ./unifi.nix;
+38
View File
@@ -0,0 +1,38 @@
{ lib, ... }:
{
name = "go-httpbin";
meta.maintainers = with lib.maintainers; [ defelo ];
nodes.machine = {
services.go-httpbin = {
enable = true;
settings.PORT = 8000;
};
};
interactive.nodes.machine = {
services.go-httpbin.settings.HOST = "0.0.0.0";
networking.firewall.allowedTCPPorts = [ 8000 ];
virtualisation.forwardPorts = [
{
from = "host";
host.port = 8000;
guest.port = 8000;
}
];
};
testScript = ''
import json
machine.wait_for_unit("go-httpbin.service")
machine.wait_for_open_port(8000)
resp = json.loads(machine.succeed("curl localhost:8000/get?foo=bar"))
assert resp["args"]["foo"] == ["bar"]
assert resp["method"] == "GET"
assert resp["origin"] == "127.0.0.1"
assert resp["url"] == "http://localhost:8000/get?foo=bar"
'';
}
+45
View File
@@ -0,0 +1,45 @@
{ lib, ... }:
{
name = "umami-nixos";
meta.maintainers = with lib.maintainers; [ diogotcorreia ];
nodes.machine =
{ pkgs, ... }:
{
services.umami = {
enable = true;
settings = {
APP_SECRET = "very_secret";
};
};
};
testScript = ''
import json
machine.wait_for_unit("umami.service")
machine.wait_for_open_port(3000)
machine.succeed("curl --fail http://localhost:3000/")
machine.succeed("curl --fail http://localhost:3000/script.js")
res = machine.succeed("""
curl -f --json '{ "username": "admin", "password": "umami" }' http://localhost:3000/api/auth/login
""")
token = json.loads(res)['token']
res = machine.succeed("""
curl -f -H 'Authorization: Bearer %s' --json '{ "domain": "localhost", "name": "Test" }' http://localhost:3000/api/websites
""" % token)
print(res)
websiteId = json.loads(res)['id']
res = machine.succeed("""
curl -f -H 'Authorization: Bearer %s' http://localhost:3000/api/websites/%s
""" % (token, websiteId))
website = json.loads(res)
assert website["name"] == "Test"
assert website["domain"] == "localhost"
'';
}
@@ -1,31 +1,16 @@
{
jq,
lib,
moreutils,
vscode-utils,
eslint,
}:
vscode-utils.buildVscodeMarketplaceExtension {
mktplcRef = {
name = "vscode-eslint";
publisher = "dbaeumer";
version = "3.0.13";
hash = "sha256-l5VvhQPxPaQsPhXUbFW2yGJjaqnNvijn4QkXPjf1WXo=";
version = "3.0.15";
hash = "sha256-oeudNCBrHO3yvw3FrFA4EZk1yODcRRfF/y3U5tdEz4I=";
};
nativeBuildInputs = [
jq
moreutils
];
buildInputs = [ eslint ];
postInstall = ''
cd "$out/$installPrefix"
jq '.contributes.configuration.properties."eslint.nodePath".default = "${eslint}/lib/node_modules"' package.json | sponge package.json
'';
meta = {
changelog = "https://marketplace.visualstudio.com/items/dbaeumer.vscode-eslint/changelog";
description = "Integrates ESLint JavaScript into VS Code";
@@ -1,8 +1,5 @@
{
jq,
lib,
moreutils,
prettier,
vscode-utils,
}:
@@ -14,18 +11,6 @@ vscode-utils.buildVscodeMarketplaceExtension {
hash = "sha256-pNjkJhof19cuK0PsXJ/Q/Zb2H7eoIkfXJMLZJ4lDn7k=";
};
nativeBuildInputs = [
jq
moreutils
];
buildInputs = [ prettier ];
postInstall = ''
cd "$out/$installPrefix"
jq '.contributes.configuration.properties."prettier.prettierPath".default = "${prettier}"' package.json | sponge package.json
'';
meta = {
changelog = "https://marketplace.visualstudio.com/items/esbenp.prettier-vscode/changelog";
description = "Code formatter using prettier";
@@ -5,13 +5,13 @@
}:
mkLibretroCore {
core = "dosbox-pure";
version = "0-unstable-2025-07-10";
version = "0-unstable-2025-07-28";
src = fetchFromGitHub {
owner = "schellingb";
repo = "dosbox-pure";
rev = "92894e7bdb6304d23278dc77f8a9fa7212450f6e";
hash = "sha256-uA/pm3DyT0VCyq85DzZGXjSGrKQ9uoEIfrs839ta97s=";
rev = "4b5f6c964aa56357e19632bf73d1875c2496fdd1";
hash = "sha256-J1NSt2Q4+lWUVqROv5yAM/rXI5COl0FRux3xqFLw20g=";
};
hardeningDisable = [ "format" ];
+2 -2
View File
@@ -23,11 +23,11 @@
stdenv.mkDerivation (finalAttrs: {
pname = "znc";
version = "1.10.0";
version = "1.10.1";
src = fetchurl {
url = "https://znc.in/releases/archive/znc-${finalAttrs.version}.tar.gz";
hash = "sha256-vmWtm2LvVFp+lIby90E07cU7pROtQ6adnYtHZgUzaxk=";
hash = "sha256-Tm52hR2/JgYYWXK1PsXeytaP5TtjpW5N+LizwKbEaAA=";
};
postPatch = ''
+3 -3
View File
@@ -8,16 +8,16 @@
rustPlatform.buildRustPackage rec {
pname = "aiken";
version = "1.1.17";
version = "1.1.19";
src = fetchFromGitHub {
owner = "aiken-lang";
repo = "aiken";
tag = "v${version}";
hash = "sha256-bEsBLihMqYHJa5913Q434xKVufxTrcaxwcANPV9u37U=";
hash = "sha256-S3KIOlOz21ItWI+RoeHPYROIlMbKAoNi7hXwHHjHaJs=";
};
cargoHash = "sha256-Ob4UuBLD6HFbghv4E2XMj+xVeUSFtc9qPUNuUDgZeQA=";
cargoHash = "sha256-RrcP23p3KVIGKiW1crDDn5eoowjX3nTPUWBYtT9qdz0=";
buildInputs = [ openssl ];
+2 -2
View File
@@ -65,13 +65,13 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "amnezia-vpn";
version = "4.8.8.3";
version = "4.8.9.1";
src = fetchFromGitHub {
owner = "amnezia-vpn";
repo = "amnezia-client";
tag = finalAttrs.version;
hash = "sha256-hDbrp6eT+avFepJL55Vl2alOD+IMnyy8MPXZQTEmLJo=";
hash = "sha256-docQqOVzmgqWPhKzOmKeXhssjyhtfYy1fNn0ZGXjsZ0=";
fetchSubmodules = true;
};
+3 -3
View File
@@ -10,13 +10,13 @@
rustPlatform.buildRustPackage {
pname = "artichoke";
version = "0-unstable-2025-06-18";
version = "0-unstable-2025-07-28";
src = fetchFromGitHub {
owner = "artichoke";
repo = "artichoke";
rev = "94921a493f680381c83465e5c50e5d494a7048f6";
hash = "sha256-JdCGCvs7GK/I3yyIl4n9OGtN9VwzmwdDdglwbTHfx0Y=";
rev = "148d3bf4bc361fa3214c02219e50e22e4cf2a3cf";
hash = "sha256-CKCRFSg8ROMhKwiIDU9iAYY/HfGtYlW1zrtn7thxIzY=";
};
cargoHash = "sha256-a43awTdhOlu+KO3B6XQ7Vdv4NbZ3iffq4rpmBBgUcZ8=";
+5 -4
View File
@@ -2,10 +2,11 @@
lib,
fetchzip,
autoPatchelfHook,
libsForQt5,
stdenv,
qt5,
}:
libsForQt5.mkDerivation rec {
stdenv.mkDerivation rec {
pname = "beebeep";
version = "5.8.6";
@@ -15,11 +16,11 @@ libsForQt5.mkDerivation rec {
};
nativeBuildInputs = [
libsForQt5.wrapQtAppsHook
qt5.wrapQtAppsHook
autoPatchelfHook
];
buildInputs = with libsForQt5; [
buildInputs = with qt5; [
qtbase
qtmultimedia
qtx11extras
+5 -10
View File
@@ -18,13 +18,13 @@
python3Packages.buildPythonApplication rec {
pname = "blanket";
version = "0.7.0";
version = "0.8.0";
src = fetchFromGitHub {
owner = "rafaelmardojai";
repo = "blanket";
rev = version;
hash = "sha256-mY7c5i0me7mMbD8c6eGJeaZpR8XI5QVL4n3M+j15Z1c=";
tag = version;
hash = "sha256-LnHL/1DJXiKx9U+JkT4Wjx1vtTmKLpzZ8q6uLT5a2MY=";
};
nativeBuildInputs = [
@@ -49,13 +49,7 @@ python3Packages.buildPythonApplication rec {
propagatedBuildInputs = with python3Packages; [ pygobject3 ];
format = "other";
postPatch = ''
patchShebangs build-aux/meson/postinstall.py
substituteInPlace build-aux/meson/postinstall.py \
--replace-fail gtk-update-icon-cache gtk4-update-icon-cache
'';
pyproject = false;
dontWrapGApps = true;
@@ -69,6 +63,7 @@ python3Packages.buildPythonApplication rec {
meta = {
description = "Listen to different sounds";
changelog = "https://github.com/rafaelmardojai/blanket/releases/tag/${version}";
homepage = "https://github.com/rafaelmardojai/blanket";
license = lib.licenses.gpl3Plus;
mainProgram = "blanket";
+3 -3
View File
@@ -10,14 +10,14 @@
rustPlatform.buildRustPackage rec {
pname = "cargo-bolero";
version = "0.13.3";
version = "0.13.4";
src = fetchCrate {
inherit pname version;
hash = "sha256-xU7a5xEFSrFsQ1K5DIYgACuf+34QeCvGmWvlSSwI03I=";
hash = "sha256-lfBpHaY2UCBMg45S4IW8fcpkGkKJoT4qqR2yq5KiXuE=";
};
cargoHash = "sha256-FMpM42D3h42NfDzH+EVs6NB2RVehFNFAYTMvzRQVt/s=";
cargoHash = "sha256-2URFqLg2aQF7MOpwG6fEPBXyBsLENWpdiXgxW/DJxQE=";
buildInputs = [
libbfd
+3 -3
View File
@@ -8,13 +8,13 @@
}:
ocamlPackages.buildDunePackage {
pname = "cerberus";
version = "0-unstable-2025-06-29";
version = "0-unstable-2025-07-25";
src = fetchFromGitHub {
owner = "rems-project";
repo = "cerberus";
rev = "61700b301f0f1fbc1940db51c50240c397759057";
hash = "sha256-QpgHOQqiJMlMf2RH5/TI3AirdqYPS7HwE9YIlxgorqg=";
rev = "9f8f2d375366e8c6c3c60dcf2da757344d877b14";
hash = "sha256-wwc2XXQ3AdXBhBX7FPhpm56w3g9rrC8tESelcXSwjPE=";
};
minimalOCamlVersion = "4.12";
+3 -3
View File
@@ -11,7 +11,7 @@
buildNpmPackage rec {
pname = "clever-tools";
version = "3.13.1";
version = "3.14.0";
nodejs = nodejs_20;
@@ -19,10 +19,10 @@ buildNpmPackage rec {
owner = "CleverCloud";
repo = "clever-tools";
rev = version;
hash = "sha256-6QzwZmDCts/ci0J2ok1Met9bNiqDHmdYj/PbvWyd4Wk=";
hash = "sha256-gBmYbnKsnqZ4KqjJhNmLB7lzIh3MztmcFVAPtz0dB2A=";
};
npmDepsHash = "sha256-H53g1hbVpArFNy47M5QS2/diWbEyyoLOf86OxVffvwQ=";
npmDepsHash = "sha256-e3H3nLZZHZ+FX0JTPZXX+YknudnzcAKV6o2bqecZTBA=";
nativeBuildInputs = [
installShellFiles
+17 -13
View File
@@ -1,6 +1,7 @@
{
comma,
fetchFromGitHub,
installShellFiles,
fzy,
lib,
nix-index-unwrapped,
@@ -11,16 +12,18 @@
rustPlatform.buildRustPackage rec {
pname = "comma";
version = "2.3.0";
version = "2.3.3";
src = fetchFromGitHub {
owner = "nix-community";
repo = "comma";
rev = "v${version}";
hash = "sha256-JogC9NIS71GyimpqmX2/dhBX1IucK395iWZVVabZxiE=";
hash = "sha256-dNek1a8Yt3icWc8ZpVe1NGuG+eSoTDOmAAJbkYmMocU=";
};
cargoHash = "sha256-Cd4WaOG+OkCM4Q1K9qVzMYOjSi9U8W82JypqUN20x9w=";
cargoHash = "sha256-SJBfWjOVrv2WMIh/cQbaFK8jn3oSbmJpdJM7pkJppDs=";
nativeBuildInputs = [ installShellFiles ];
postPatch = ''
substituteInPlace ./src/main.rs \
@@ -33,20 +36,21 @@ rustPlatform.buildRustPackage rec {
postInstall = ''
ln -s $out/bin/comma $out/bin/,
mkdir -p $out/etc/profile.d
mkdir -p $out/etc/nushell
mkdir -p $out/etc/fish/functions
mkdir -p $out/share/comma
cp $src/etc/comma-command-not-found.sh $out/etc/profile.d
cp $src/etc/comma-command-not-found.nu $out/etc/nushell
cp $src/etc/comma-command-not-found.fish $out/etc/fish/functions
cp $src/etc/command-not-found.sh $out/share/comma
cp $src/etc/command-not-found.nu $out/share/comma
cp $src/etc/command-not-found.fish $out/share/comma
patchShebangs $out/etc/profile.d/comma-command-not-found.sh
patchShebangs $out/share/comma/command-not-found.sh
substituteInPlace \
"$out/etc/profile.d/comma-command-not-found.sh" \
"$out/etc/nushell/comma-command-not-found.nu" \
"$out/etc/fish/functions/comma-command-not-found.fish" \
"$out/share/comma/command-not-found.sh" \
"$out/share/comma/command-not-found.nu" \
"$out/share/comma/command-not-found.fish" \
--replace-fail "comma --ask" "$out/bin/comma --ask"
"$out/bin/comma" --mangen > comma.1
installManPage comma.1
'';
passthru.tests = {
+2 -2
View File
@@ -18,13 +18,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "corsix-th";
version = "0.68.0";
version = "0.69.0";
src = fetchFromGitHub {
owner = "CorsixTH";
repo = "CorsixTH";
rev = "v${finalAttrs.version}";
hash = "sha256-D8ks+fiFJxwClqW1aNtGGa5UxAFvuH2f2guwPxOEQwI=";
hash = "sha256-U8rl24EBjSRJrK2VmCI3YKeEM7U8ynaufEghgVfqrp0=";
};
patches = [
+2 -2
View File
@@ -7,13 +7,13 @@
}:
llvmPackages.stdenv.mkDerivation rec {
pname = "enzyme";
version = "0.0.186";
version = "0.0.187";
src = fetchFromGitHub {
owner = "EnzymeAD";
repo = "Enzyme";
rev = "v${version}";
hash = "sha256-s9YGKHPk4/xy3Re3NdWe1Srjg+inPft0vrQMWaRcGpA=";
hash = "sha256-vdLt7LtVkgcgoUzzl5jb7ERIyQMpY+iSwJpdQpWxoJw=";
};
postPatch = ''
+2 -2
View File
@@ -13,13 +13,13 @@
stdenv.mkDerivation rec {
pname = "git-quick-stats";
version = "2.6.2";
version = "2.7.0";
src = fetchFromGitHub {
repo = "git-quick-stats";
owner = "arzzen";
rev = version;
sha256 = "sha256-OSEX9S6Q4R7fT2ic72GkUI5mW8wC5Hy2GQVeENlTm5E=";
sha256 = "sha256-utY3oD0IqnqyyDJv7i4hLkLCXukNcYSdZcaj8NUwRu0=";
};
nativeBuildInputs = [ makeWrapper ];
+52
View File
@@ -0,0 +1,52 @@
{
lib,
buildGoModule,
fetchFromGitHub,
nixosTests,
nix-update-script,
}:
buildGoModule (finalAttrs: {
pname = "go-httpbin";
version = "2.18.3";
src = fetchFromGitHub {
owner = "mccutchen";
repo = "go-httpbin";
tag = "v${finalAttrs.version}";
hash = "sha256-ixEbmppQ+4Udc5ytV4YPOpOT/iEbhjQIYGoOGL0dIw8=";
};
vendorHash = null;
env.CGO_ENABLED = 0;
ldflags = [
"-s"
"-w"
];
# tests are flaky
doCheck = false;
doInstallCheck = true;
installCheckPhase = ''
runHook preInstallCheck
$out/bin/go-httpbin --help &> /dev/null
runHook postInstallCheck
'';
passthru = {
tests = { inherit (nixosTests) go-httpbin; };
updateScript = nix-update-script { };
};
meta = {
description = "Reasonably complete and well-tested golang port of httpbin, with zero dependencies outside the go stdlib";
homepage = "https://github.com/mccutchen/go-httpbin";
changelog = "https://github.com/mccutchen/go-httpbin/releases/tag/v${finalAttrs.version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ defelo ];
mainProgram = "go-httpbin";
};
})
+3 -3
View File
@@ -11,17 +11,17 @@
buildGoLatestModule (finalAttrs: {
pname = "gopls";
version = "0.19.1";
version = "0.20.0";
src = fetchFromGitHub {
owner = "golang";
repo = "tools";
tag = "gopls/v${finalAttrs.version}";
hash = "sha256-QJnLJNgFtc/MmJ5WWooKcavnPPTYuM4XhUHcbwlvMLY=";
hash = "sha256-DYYitsrdH4nujDFJgdkObEpgElhXI7Yk2IpA/EVVLVo=";
};
modRoot = "gopls";
vendorHash = "sha256-P5wUGXmVvaRUpzmv/SPX8OpCXOCOg6nBI544puNOWCE=";
vendorHash = "sha256-J6QcefSs4XtnktlzG+/+aY6fqkHGd9MMZqi24jAwcd0=";
# https://github.com/golang/tools/blob/9ed98faa/gopls/main.go#L27-L30
ldflags = [ "-X main.version=v${finalAttrs.version}" ];
+6
View File
@@ -3,6 +3,7 @@
stdenv,
fetchFromGitHub,
autoreconfHook,
gettext,
guile,
pkg-config,
texinfo,
@@ -34,6 +35,11 @@ stdenv.mkDerivation (finalAttrs: {
curl
];
# error: possibly undefined macro: AC_LIB_LINKFLAGS_FROM_LIBS
preAutoreconf = ''
cp ${gettext}/share/gettext/m4/lib-{ld,link,prefix}.m4 m4
'';
meta = {
description = "Bindings to cURL for GNU Guile";
homepage = "https://github.com/spk121/guile-curl";
+3 -3
View File
@@ -17,19 +17,19 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "jellyseerr";
version = "2.7.0";
version = "2.7.2";
src = fetchFromGitHub {
owner = "Fallenbagel";
repo = "jellyseerr";
tag = "v${finalAttrs.version}";
hash = "sha256-JzJYRwrwDk8LQZAfWwym+SFTn8YhALghpZb2Dd+3nP4=";
hash = "sha256-MaLmdG98WewnNJt7z6OP9xv6zlNwwu/+YnPM0Iebxj4=";
};
pnpmDeps = pnpm.fetchDeps {
inherit (finalAttrs) pname version src;
fetcherVersion = 1;
hash = "sha256-Ym16jPHMHKmojMQOuMamDsW/u+oP1UhbCP5dooTUzFQ=";
hash = "sha256-3df72m/ARgfelBLE6Bhi8+ThHytowVOBL2Ndk7auDgg=";
};
buildInputs = [ sqlite ];
+2 -2
View File
@@ -33,11 +33,11 @@
stdenv.mkDerivation rec {
pname = "knot-dns";
version = "3.4.7";
version = "3.4.8";
src = fetchurl {
url = "https://secure.nic.cz/files/knot-dns/knot-${version}.tar.xz";
sha256 = "sha256-3TRspvOvq83F6boJ3WZ7AQWQu2akL0VBAh+51vBz2sw=";
sha256 = "sha256-ZzCnPb/BLXnYAA/+ItNtBot0Z+dL7h6xIqxJNezqSfk=";
};
outputs = [
+2 -2
View File
@@ -21,13 +21,13 @@
stdenv.mkDerivation rec {
pname = "lesspipe";
version = "2.18";
version = "2.19";
src = fetchFromGitHub {
owner = "wofr06";
repo = "lesspipe";
rev = "v${version}";
hash = "sha256-GCtcIXGrMH6LOKxjnB2SkUSChQnMj5d939i2atvqK+Q=";
hash = "sha256-V+fB5KkbBRhVSDgB/e7oVEyMKQ7HbR82XQYlqxcLZyQ=";
};
nativeBuildInputs = [
+2 -2
View File
@@ -15,12 +15,12 @@
}:
stdenvNoCC.mkDerivation (finalAttrs: {
name = "lug-helper";
version = "4.1";
version = "4.2";
src = fetchFromGitHub {
owner = "starcitizen-lug";
repo = "lug-helper";
tag = "v${finalAttrs.version}";
hash = "sha256-Pj0jReezB/0yCl5EC+EQ7CVtmgGQrJwVR6pvaP/gtWg=";
hash = "sha256-W8GwDXYHfGdruAMdBei53V5UPYE6yks0+FW48pARknY=";
};
buildInputs = [
@@ -0,0 +1,27 @@
{
lib,
rustPlatform,
fetchFromGitHub,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "mandelbrot-cli";
version = "0-unstable-2025-07-16";
src = fetchFromGitHub {
owner = "IronstoneInnovation";
repo = "mandelbrot_cli";
rev = "36a43d4feace4ac346c6da78262278d4deb6bb94";
hash = "sha256-RGv/B2Zi2hqHWPbo67vTlJIIci3a0tyIgD5+Tnf0yiY=";
};
cargoHash = "sha256-nOhg3nDWGA+0g499EnsX5TNwnZM2NcpqHiyQujOM3OI=";
meta = {
description = "A CLI for generating images of the Mandelbrot Set";
homepage = "https://github.com/IronstoneInnovation/mandelbrot_cli";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ yiyu ];
mainProgram = "mandelbrot-cli";
};
})
+3 -3
View File
@@ -17,12 +17,12 @@ let
in
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "models-dev";
version = "0-unstable-2025-07-23";
version = "0-unstable-2025-07-29";
src = fetchFromGitHub {
owner = "sst";
repo = "models.dev";
rev = "affbfa8012d0dbc0eba81ea51ec32069c71af417";
hash = "sha256-JPcurldPuaFPfwqiWQR83x1uDcL0Dy79kx2TAOiNnyQ=";
rev = "69e91b1cee1dbd737dc60f5f99ce123a81763cda";
hash = "sha256-fr4cgQsW03ukgCxNBtlokAXmqjGh1fFJucWx1dJ7xV0=";
};
node_modules = stdenvNoCC.mkDerivation {
+37 -40
View File
@@ -7,43 +7,21 @@
openssl,
versionCheckHook,
writeShellApplication,
common-updater-scripts,
gitMinimal,
jq,
nix-update,
gitMinimal,
pup,
nixosTests,
}:
let
version = "8.0.11";
srcs = version: {
"x86_64-linux" = {
url = "https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2204-${version}.tgz";
hash = "sha256-XErxsovZyMR1UmwClxn5Bm08hoYHArCtn8TSv/8eDYo=";
};
"aarch64-linux" = {
url = "https://fastdl.mongodb.org/linux/mongodb-linux-aarch64-ubuntu2204-${version}.tgz";
hash = "sha256-p1eBobdnJ/uPZHScWFs3AOB7/BJn/MZQ8+VpOHonY2A=";
};
"x86_64-darwin" = {
url = "https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-${version}.tgz";
hash = "sha256-RLq+aFJixSt3EginpgIHWnR4CGk0KX5cmC3QrbW3jJ8=";
};
"aarch64-darwin" = {
url = "https://fastdl.mongodb.org/osx/mongodb-macos-arm64-${version}.tgz";
hash = "sha256-kNzByPEXi5T3+vr6t/EJuKIDEfGybrsbBqJ8vaEV5tY=";
};
};
in
stdenv.mkDerivation (finalAttrs: {
pname = "mongodb-ce";
inherit version;
version = "8.0.12";
src = fetchurl (
(srcs version).${stdenv.hostPlatform.system}
or (throw "unsupported system: ${stdenv.hostPlatform.system}")
);
src =
finalAttrs.passthru.sources.${stdenv.hostPlatform.system}
or (throw "Unsupported platform for mongodb-ce: ${stdenv.hostPlatform.system}");
nativeBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ];
dontStrip = true;
@@ -59,29 +37,49 @@ stdenv.mkDerivation (finalAttrs: {
install -Dm 755 bin/mongod -t $out/bin
install -Dm 755 bin/mongos -t $out/bin
runHook postInstall
'';
nativeInstallCheckInputs = [ versionCheckHook ];
versionCheckProgram = "${placeholder "out"}/bin/mongod";
versionCheckProgramArg = "--version";
# Only enable the version install check on darwin.
# On Linux, this would fail as mongod relies on tcmalloc, which
# requires access to `/sys/devices/system/cpu/possible`.
# See https://github.com/NixOS/nixpkgs/issues/377016
doInstallCheck = stdenv.hostPlatform.isDarwin;
nativeInstallCheckInputs = [ versionCheckHook ];
versionCheckProgram = "${placeholder "out"}/bin/mongod";
versionCheckProgramArg = "--version";
passthru = {
sources = {
"x86_64-linux" = fetchurl {
url = "https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2404-${finalAttrs.version}.tgz";
hash = "sha256-dmXt+OxvDaJRXEn3hNoiYZ9ob//tmQp2lsU2XunTNLM=";
};
"aarch64-linux" = fetchurl {
url = "https://fastdl.mongodb.org/linux/mongodb-linux-aarch64-ubuntu2404-${finalAttrs.version}.tgz";
hash = "sha256-9FdODnUqzquSKk86BN5OL+fEO07hGYg1VAtytp7ehFM=";
};
"x86_64-darwin" = fetchurl {
url = "https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-${finalAttrs.version}.tgz";
hash = "sha256-LUUhqfgP1tIupe517TdLL97jUvBZsCvzMey3JtMVTmg=";
};
"aarch64-darwin" = fetchurl {
url = "https://fastdl.mongodb.org/osx/mongodb-macos-arm64-${finalAttrs.version}.tgz";
hash = "sha256-9SFfRbIWVXPupxvqmQlkacmcthycu840VIupCNBf7Ew=";
};
};
updateScript =
let
script = writeShellApplication {
name = "${finalAttrs.pname}-updateScript";
runtimeInputs = [
common-updater-scripts
curl
gitMinimal
jq
nix-update
gitMinimal
pup
];
@@ -92,16 +90,15 @@ stdenv.mkDerivation (finalAttrs: {
# Check if the new version is available for download, if not, exit
curl -s https://www.mongodb.com/try/download/community-edition/releases | pup 'h3:not([id]) text{}' | grep "$NEW_VERSION"
if [[ "${version}" = "$NEW_VERSION" ]]; then
if [[ "${finalAttrs.version}" = "$NEW_VERSION" ]]; then
echo "The new version same as the old version."
exit 0
fi
''
+ lib.concatStrings (
map (system: ''
nix-update --system ${system} --version "$NEW_VERSION" ${finalAttrs.pname}
'') finalAttrs.meta.platforms
);
for platform in ${lib.escapeShellArgs finalAttrs.meta.platforms}; do
update-source-version "mongodb-ce" "$NEW_VERSION" --ignore-same-version --source-key="sources.$platform"
done
'';
};
in
{
@@ -125,7 +122,7 @@ stdenv.mkDerivation (finalAttrs: {
(mongos).
'';
maintainers = with lib.maintainers; [ drupol ];
platforms = lib.attrNames (srcs version);
platforms = lib.attrNames finalAttrs.passthru.sources;
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
};
})
+2 -2
View File
@@ -14,12 +14,12 @@
stdenv.mkDerivation (finalAttrs: {
pname = "ocenaudio";
version = "3.15";
version = "3.15.2";
src = fetchurl {
name = "ocenaudio.deb";
url = "https://www.ocenaudio.com/downloads/index.php/ocenaudio_debian12.deb?version=v${finalAttrs.version}";
hash = "sha256-MZjgdCBE+3dG6Ov+wwDKa/0Y8XIihwM50Gc/cgEf2FQ=";
hash = "sha256-sAsa/stC+OF7g7fNQGRT5x0GO0YKzH/lOPzWIZA0YsY=";
};
nativeBuildInputs = [
+2 -2
View File
@@ -81,13 +81,13 @@ buildGoModule (
{
pname = "olivetin";
version = "2025.7.19";
version = "2025.7.28";
src = fetchFromGitHub {
owner = "OliveTin";
repo = "OliveTin";
tag = finalAttrs.version;
hash = "sha256-F1AJ4kbFx+L/t1TSsjbDM761LtA2M9exfjWd9VwRZuE=";
hash = "sha256-gh0Nc7h2Z+Nz7TixmHihFAHI0X0Y2ZeA4OMv3jOYlh4=";
};
modRoot = "service";
@@ -19,7 +19,7 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "piper";
pname = "piper-tts";
version = "2023.11.14-2";
src = fetchFromGitHub {
@@ -65,12 +65,12 @@ stdenv.mkDerivation (finalAttrs: {
inherit piper-train;
};
meta = with lib; {
meta = {
changelog = "https://github.com/rhasspy/piper/releases/tag/v${finalAttrs.version}";
description = "Fast, local neural text to speech system";
homepage = "https://github.com/rhasspy/piper";
license = licenses.mit;
maintainers = with maintainers; [ hexa ];
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ hexa ];
mainProgram = "piper";
};
})
+3 -3
View File
@@ -7,16 +7,16 @@
}:
rustPlatform.buildRustPackage rec {
pname = "railway";
version = "4.5.5";
version = "4.5.6";
src = fetchFromGitHub {
owner = "railwayapp";
repo = "cli";
rev = "v${version}";
hash = "sha256-l+HbtJyP6mygIh+H6MzfRoyz4RTgtF9B4hbQBHVRwhg=";
hash = "sha256-xoBGYdcef1xBlPlUOPudhX0t59OBbNavcg5CeRJiQIY=";
};
cargoHash = "sha256-jzql0ndlQlDHYhfXO5pAKlnQr79QG/MCK+som2qwTfY=";
cargoHash = "sha256-o/wbBp2gIl+Dyxnee7mChVzv5qmrVAcG95i9YMxd5AI=";
nativeBuildInputs = [ pkg-config ];
+3 -3
View File
@@ -7,7 +7,7 @@
rainfrog,
}:
let
version = "0.3.3";
version = "0.3.4";
in
rustPlatform.buildRustPackage {
inherit version;
@@ -17,10 +17,10 @@ rustPlatform.buildRustPackage {
owner = "achristmascarl";
repo = "rainfrog";
tag = "v${version}";
hash = "sha256-nGUk+997TBx/2U3QMF4OpRqzwNzC0ILRraz3kOzzoBw=";
hash = "sha256-uERAYdDM2yKowl8WH6FB1XEbjSO/S79Fdib2QQE95N4=";
};
cargoHash = "sha256-8RvZmQI1WXfM2Sh5bMAkeJVNvOUp8fmM0MznZzCpxgY=";
cargoHash = "sha256-drL2rLuJExJI799Rvh0X/c6kTqJ+3wnqaDSRiz63Nuo=";
passthru = {
tests.version = testers.testVersion {
+5 -7
View File
@@ -9,6 +9,7 @@
installShellFiles,
pkg-config,
python3,
writableTmpDirAsHomeHook,
# buildInputs
libgpg-error,
@@ -19,14 +20,14 @@
nix-update-script,
}:
rustPlatform.buildRustPackage rec {
rustPlatform.buildRustPackage (finalAttrs: {
version = "0.7.0";
pname = "ripasso-cursive";
src = fetchFromGitHub {
owner = "cortex";
repo = "ripasso";
tag = "release-${version}";
tag = "release-${finalAttrs.version}";
hash = "sha256-j98X/+UTea4lCtFfMpClnfcKlvxm4DpOujLc0xc3VUY=";
};
@@ -44,6 +45,7 @@ rustPlatform.buildRustPackage rec {
pkg-config
python3
rustPlatform.bindgenHook
writableTmpDirAsHomeHook
];
buildInputs = [
@@ -54,10 +56,6 @@ rustPlatform.buildRustPackage rec {
xorg.libxcb
];
preCheck = ''
export HOME=$(mktemp -d)
'';
checkFlags = lib.optionals stdenv.hostPlatform.isDarwin [
# Fails in the darwin sandbox with:
# Attempted to create a NULL object.
@@ -81,4 +79,4 @@ rustPlatform.buildRustPackage rec {
maintainers = with lib.maintainers; [ sgo ];
platforms = lib.platforms.unix;
};
}
})
+3 -3
View File
@@ -6,16 +6,16 @@
buildGoModule (finalAttrs: {
pname = "rqlite";
version = "8.39.1";
version = "8.41.0";
src = fetchFromGitHub {
owner = "rqlite";
repo = "rqlite";
tag = "v${finalAttrs.version}";
hash = "sha256-x/J8W+lAC7d6rE3Zzc7vXVvbonCXn33Of2pKljuWpq0=";
hash = "sha256-3jzQ6Kby/v/cBxc1+ejm5PdmhZVVWvBrDEeuf7hqVKw=";
};
vendorHash = "sha256-fj4YyxCIZG6ttmNVZm12xKk3+OcownrqXKc9LCAWk7U=";
vendorHash = "sha256-8Oejfec9QAYRkFGyEB9R/msiwzV+pgDFS+UNfvvTie4=";
subPackages = [
"cmd/rqlite"
+6 -6
View File
@@ -1,14 +1,14 @@
{
"name": "shopify",
"version": "3.82.1",
"version": "3.83.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "shopify",
"version": "3.82.1",
"version": "3.83.0",
"dependencies": {
"@shopify/cli": "3.82.1"
"@shopify/cli": "3.83.0"
},
"bin": {
"shopify": "node_modules/@shopify/cli/bin/run.js"
@@ -579,9 +579,9 @@
}
},
"node_modules/@shopify/cli": {
"version": "3.82.1",
"resolved": "https://registry.npmjs.org/@shopify/cli/-/cli-3.82.1.tgz",
"integrity": "sha512-iIABwasf+aMSBIjaPsKlVSaLp3vcOIPcfiitdoMUJKQhjIVbq8KdwaAa/MLUMe5B+l230zjq/xGB8U3JeJY0eg==",
"version": "3.83.0",
"resolved": "https://registry.npmjs.org/@shopify/cli/-/cli-3.83.0.tgz",
"integrity": "sha512-xdSrGV8FZAqyvtyj1fXeNbBhb9qH76l11vVhoCXKgorSCjmnYlJu9Ugffv3KqkseTR5PZsDzVJ5P6jL3f3iAXQ==",
"license": "MIT",
"os": [
"darwin",
@@ -1,11 +1,11 @@
{
"name": "shopify",
"version": "3.82.1",
"version": "3.83.0",
"private": true,
"bin": {
"shopify": "node_modules/@shopify/cli/bin/run.js"
},
"dependencies": {
"@shopify/cli": "3.82.1"
"@shopify/cli": "3.83.0"
}
}
+2 -2
View File
@@ -5,7 +5,7 @@
shopify-cli,
}:
let
version = "3.82.1";
version = "3.83.0";
in
buildNpmPackage {
pname = "shopify";
@@ -13,7 +13,7 @@ buildNpmPackage {
src = ./manifests;
npmDepsHash = "sha256-s0wlJxA3DUXRGBlLvyesLr9H/nbDc9yHBBWBLjQd8vE=";
npmDepsHash = "sha256-hnIpsPle7L8BrHZONH6vJjlFrTu2w1TsslDj0u8Ot3M=";
dontNpmBuild = true;
passthru = {
@@ -13,13 +13,13 @@
stdenv.mkDerivation rec {
pname = "signalbackup-tools";
version = "20250726";
version = "20250729";
src = fetchFromGitHub {
owner = "bepaald";
repo = "signalbackup-tools";
rev = version;
hash = "sha256-BDrz2AHscjJdlnHW52TWaMGaz8TKVMRLGXs1rn2TQVI=";
tag = version;
hash = "sha256-IHQrtS75c6fAJeRD4fDc9m1Za95h1kvAZ3B7XFwDxdA=";
};
nativeBuildInputs = [
+3 -3
View File
@@ -26,13 +26,13 @@ assert
(!withFirefox && !withChromium) -> throw "Either `withFirefox` or `withChromium` must be enabled.";
buildNpmPackage rec {
pname = "sitespeed-io";
version = "37.8.0";
version = "38.0.0";
src = fetchFromGitHub {
owner = "sitespeedio";
repo = "sitespeed.io";
tag = "v${version}";
hash = "sha256-0bXkVqCen0kUHP8YeFkpdxTd+4Hx6YMZVTjwgWWg6nQ=";
hash = "sha256-PLzUpTvgyE9uxIxejU0qTChTM392+euhUtu3IND5kzw=";
};
postPatch = ''
@@ -50,7 +50,7 @@ buildNpmPackage rec {
dontNpmBuild = true;
npmInstallFlags = [ "--omit=dev" ];
npmDepsHash = "sha256-ZWjlueRZkH5lsalUY/xoOO/22P9Ta5CnmK0UKjapyU8=";
npmDepsHash = "sha256-mjFTE6k0MaGsRagC0Zk7CKTpNn2ow8WXa6KGbLuSVzc=";
postInstall = ''
mv $out/bin/sitespeed{.,-}io
+3 -3
View File
@@ -6,16 +6,16 @@
rustPlatform.buildRustPackage rec {
pname = "sizelint";
version = "0.1.2";
version = "0.1.3";
src = fetchFromGitHub {
owner = "a-kenji";
repo = "sizelint";
tag = "v${version}";
hash = "sha256-RwiopJHVyQE+WwiB5Bd89kfQxLl7TROZSB3aanf3fB0=";
hash = "sha256-06RJrE0w1Xhj364dUUuYadxleX12mkB8yO+h1QLZhH0=";
};
cargoHash = "sha256-Kf6QreDGYM0ndmkOND4zhcDdx6SsXHuj7rcwy6tGyQk=";
cargoHash = "sha256-1kg1xfgzqrbZvazRavM4aW7oyRei9jKW0a+a6z2HLnc=";
meta = {
description = "Lint your file tree based on file sizes";
+3 -3
View File
@@ -20,16 +20,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "stalwart-mail" + (lib.optionalString stalwartEnterprise "-enterprise");
version = "0.13.1";
version = "0.13.2";
src = fetchFromGitHub {
owner = "stalwartlabs";
repo = "stalwart";
tag = "v${finalAttrs.version}";
hash = "sha256-6zoI+yvE1Ep5jh9XthDqphm2zBA4UzhfK7VCKRWIH8g=";
hash = "sha256-VdeHb1HVGXA5RPenhhK4r/kkQiLG8/4qhdxoJ3xIqR4=";
};
cargoHash = "sha256-t4BLko8vIVHZ44yeQoAhss3OxOlxJCErHm9h+FGG+28=";
cargoHash = "sha256-Wu6skjs3Stux5nCX++yoQPeA33Qln67GoKcob++Ldng=";
nativeBuildInputs = [
pkg-config
+3 -3
View File
@@ -17,13 +17,13 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "webadmin";
version = "0.1.31";
version = "0.1.32";
src = fetchFromGitHub {
owner = "stalwartlabs";
repo = "webadmin";
tag = "v${finalAttrs.version}";
hash = "sha256-4+R7QQT0cbKYe6WzgvzreOFULBnWdNcbPC27f4r+M0g=";
hash = "sha256-HmQBMU7o0A20SY4tBw4SPVfHFfw8e0JsNQDNdZcex24=";
};
npmDeps = fetchNpmDeps {
@@ -31,7 +31,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
hash = "sha256-na1HEueX8w7kuDp8LEtJ0nD1Yv39cyk6sEMpS1zix2s=";
};
cargoHash = "sha256-Q05+wH9+NfkfmEDJFLuWVQ7wuDeEu9h1XmOMN6SYdyU=";
cargoHash = "sha256-a2+3uNNSLfb81QXjZfftbwpgjORPRSgC056U3FINP4o=";
postPatch = ''
# Using local tailwindcss for compilation
+3 -3
View File
@@ -8,16 +8,16 @@
rustPlatform.buildRustPackage rec {
pname = "stu";
version = "0.7.2";
version = "0.7.3";
src = fetchFromGitHub {
owner = "lusingander";
repo = "stu";
rev = "v${version}";
hash = "sha256-taxXk6GJ7ulPVPL4nUZwY+ln7Te54kM2xcLsRd7kpK0=";
hash = "sha256-2vnyRTdRr6Y8YlwBSXqcOir5xdu5msPSU3EbsB0Ya34=";
};
cargoHash = "sha256-qc2FvlMjPp0X6EQyxNwJdpB8D1i+QzxFv9qYf/F+gXg=";
cargoHash = "sha256-Us4rQYq+1Akq3i31sPBIC1Df0moicnHF0J5++M8tC2U=";
passthru.tests.version = testers.testVersion { package = stu; };
+3 -3
View File
@@ -7,14 +7,14 @@
python3Packages.buildPythonApplication rec {
pname = "submit50";
version = "3.2.0";
version = "3.2.1";
pyproject = true;
src = fetchFromGitHub {
owner = "cs50";
repo = "submit50";
tag = "v${version}";
hash = "sha256-i1hO9P3FGamo4b733/U7d2fiWLdnTskrHM2BXxxDePc=";
hash = "sha256-D71d8f2XfLrsDRBuEZK7B96UTUkJLkHsCWchDNO8epI=";
};
build-system = [
@@ -40,7 +40,7 @@ python3Packages.buildPythonApplication rec {
description = "Tool for submitting student CS50 code";
homepage = "https://cs50.readthedocs.io/submit50/";
downloadPage = "https://github.com/cs50/submit50";
changelog = "https://github.com/cs50/submit50/releases/tag/v${version}";
changelog = "https://github.com/cs50/submit50/releases/tag/${src.tag}";
license = lib.licenses.gpl3Only;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ ethancedwards8 ];
+3 -3
View File
@@ -16,8 +16,8 @@
stdenv.mkDerivation rec {
pname = "termius";
version = "9.25.1";
revision = "231";
version = "9.26.0";
revision = "232";
src = fetchurl {
# find the latest version with
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
# and the sha512 with
# curl -H 'X-Ubuntu-Series: 16' https://api.snapcraft.io/api/v1/snaps/details/termius-app | jq '.download_sha512' -r
url = "https://api.snapcraft.io/api/v1/snaps/download/WkTBXwoX81rBe3s3OTt3EiiLKBx2QhuS_${revision}.snap";
hash = "sha512-l9ShxjAzreVU3XinBDCNUQjCgXGdyDFdOMkcQgxrowhtu4KfmRioGORSnJeCCPWqIBureWSa5b572wMxCerTCQ==";
hash = "sha512-PBwZS1CcvGFfodM3bqM/YWDJxoF/thZvTWIIPQI1ShjVWbvJUq29J/xeaNyncgQCfowgR8xWIOVpmAjCjjyQ0A==";
};
desktopItem = makeDesktopItem {
+3 -3
View File
@@ -12,13 +12,13 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "tokei";
version = "13.0.0-alpha.8";
version = "13.0.0-alpha.9";
src = fetchFromGitHub {
owner = "XAMPPRocky";
repo = "tokei";
tag = "v${finalAttrs.version}";
hash = "sha256-jCI9VM3y76RI65E5UGuAPuPkDRTMyi+ydx64JWHcGfE=";
hash = "sha256-OSIJYSUwc8SvszEOMgt+d/ljCW2jtBkPw6buof4JpUc=";
};
patches = [
@@ -29,7 +29,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
})
];
cargoHash = "sha256-LzlyrKaRjUo6JnVLQnHidtI4OWa+GrhAc4D8RkL+nmQ=";
cargoHash = "sha256-FIT+c2YzGxJEvLB5uqkdVLWkQ/wlrbCrAkSQEoS4kJw=";
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
+201
View File
@@ -0,0 +1,201 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
fetchurl,
makeWrapper,
nixosTests,
nodejs,
pnpm_10,
prisma-engines,
openssl,
rustPlatform,
# build variables
databaseType ? "postgresql",
collectApiEndpoint ? "",
trackerScriptNames ? [ ],
basePath ? "",
}:
let
sources = lib.importJSON ./sources.json;
pnpm = pnpm_10;
geocities = stdenvNoCC.mkDerivation {
pname = "umami-geocities";
version = sources.geocities.date;
src = fetchurl {
url = "https://raw.githubusercontent.com/GitSquared/node-geolite2-redist/${sources.geocities.rev}/redist/GeoLite2-City.tar.gz";
inherit (sources.geocities) hash;
};
doBuild = false;
installPhase = ''
mkdir -p $out
cp ./GeoLite2-City.mmdb $out/GeoLite2-City.mmdb
'';
meta.license = lib.licenses.cc-by-40;
};
# Pin the specific version of prisma to the one used by upstream
# to guarantee compatibility.
prisma-engines' = prisma-engines.overrideAttrs (old: rec {
version = "6.7.0";
src = fetchFromGitHub {
owner = "prisma";
repo = "prisma-engines";
tag = version;
hash = "sha256-Ty8BqWjZluU6a5xhSAVb2VoTVY91UUj6zoVXMKeLO4o=";
};
cargoHash = "sha256-HjDoWa/JE6izUd+hmWVI1Yy3cTBlMcvD9ANsvqAoHBI=";
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (old) pname;
inherit src version;
hash = cargoHash;
};
});
in
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "umami";
version = "2.19.0";
nativeBuildInputs = [
makeWrapper
nodejs
pnpm.configHook
];
src = fetchFromGitHub {
owner = "umami-software";
repo = "umami";
tag = "v${finalAttrs.version}";
hash = "sha256-luiwGmCujbFGWANSCOiHIov56gsMQ6M+Bj0stcz9he8=";
};
# install dev dependencies as well, for rollup
pnpmInstallFlags = [ "--prod=false" ];
pnpmDeps = pnpm.fetchDeps {
inherit (finalAttrs)
pname
pnpmInstallFlags
version
src
;
fetcherVersion = 2;
hash = "sha256-2GiCeCt/mU5Dm5YHQgJF3127WPHq5QLX8JRcUv6B6lE=";
};
env.CYPRESS_INSTALL_BINARY = "0";
env.NODE_ENV = "production";
env.NEXT_TELEMETRY_DISABLED = "1";
# copy-db-files uses this variable to decide which Prisma schema to use
env.DATABASE_TYPE = databaseType;
env.COLLECT_API_ENDPOINT = collectApiEndpoint;
env.TRACKER_SCRIPT_NAME = lib.concatStringsSep "," trackerScriptNames;
env.BASE_PATH = basePath;
# Allow prisma-cli to find prisma-engines without having to download them
env.PRISMA_QUERY_ENGINE_LIBRARY = "${prisma-engines'}/lib/libquery_engine.node";
env.PRISMA_SCHEMA_ENGINE_BINARY = "${prisma-engines'}/bin/schema-engine";
buildPhase = ''
runHook preBuild
pnpm copy-db-files
pnpm build-db-client # prisma generate
pnpm build-tracker
pnpm build-app
runHook postBuild
'';
checkPhase = ''
runHook preCheck
pnpm test
runHook postCheck
'';
doCheck = true;
installPhase = ''
runHook preInstall
mv .next/standalone $out
mv .next/static $out/.next/static
# Include prisma cli in next standalone build.
# This is preferred to using the prisma in nixpkgs because it guarantees
# the version matches.
# See https://nextjs-forum.com/post/1280550687998083198
# and https://nextjs.org/docs/pages/api-reference/config/next-config-js/output#caveats
# Unfortunately, using outputFileTracingIncludes doesn't work because of pnpm's symlink structure,
# so we just copy the files manually.
mkdir -p $out/node_modules/.bin
cp node_modules/.bin/prisma $out/node_modules/.bin
cp -a node_modules/prisma $out/node_modules
cp -a node_modules/.pnpm/@prisma* $out/node_modules/.pnpm
cp -a node_modules/.pnpm/prisma* $out/node_modules/.pnpm
# remove broken symlinks (some dependencies that are not relevant for running migrations)
find "$out"/node_modules/.pnpm/@prisma* -xtype l -exec rm {} \;
find "$out"/node_modules/.pnpm/prisma* -xtype l -exec rm {} \;
cp -R public $out/public
cp -R prisma $out/prisma
ln -s ${geocities} $out/geo
mkdir -p $out/bin
# Run database migrations before starting umami.
# Add openssl to PATH since it is required for prisma to make SSL connections.
# Force working directory to $out because umami assumes many paths are relative to it (e.g., prisma and geolite).
makeWrapper ${nodejs}/bin/node $out/bin/umami-server \
--set NODE_ENV production \
--set NEXT_TELEMETRY_DISABLED 1 \
--set PRISMA_QUERY_ENGINE_LIBRARY "${prisma-engines'}/lib/libquery_engine.node" \
--set PRISMA_SCHEMA_ENGINE_BINARY "${prisma-engines'}/bin/schema-engine" \
--prefix PATH : ${
lib.makeBinPath [
openssl
nodejs
]
} \
--chdir $out \
--run "$out/node_modules/.bin/prisma migrate deploy" \
--add-flags "$out/server.js"
runHook postInstall
'';
passthru = {
tests = {
inherit (nixosTests) umami;
};
inherit
sources
geocities
;
prisma-engines = prisma-engines';
updateScript = ./update.sh;
};
meta = with lib; {
changelog = "https://github.com/umami-software/umami/releases/tag/v${finalAttrs.version}";
description = "Simple, easy to use, self-hosted web analytics solution";
homepage = "https://umami.is/";
license = with lib.licenses; [
mit
cc-by-40 # geocities
];
platforms = lib.platforms.linux;
mainProgram = "umami-server";
maintainers = with maintainers; [ diogotcorreia ];
};
})
+7
View File
@@ -0,0 +1,7 @@
{
"geocities": {
"rev": "0817bc800279e26e9ff045b7b129385e5b23012e",
"date": "2025-07-29",
"hash": "sha256-Rw9UEvUu7rtXFvHEqKza6kn9LwT6C17zJ/ljoN+t6Ek="
}
}
+50
View File
@@ -0,0 +1,50 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl jq prefetch-yarn-deps nix-prefetch-github coreutils nix-update
# shellcheck shell=bash
# This script exists to update geocities version and pin prisma-engines version
set -euo pipefail
SCRIPT_DIR="$(dirname "${BASH_SOURCE[0]}")"
old_version=$(nix-instantiate --eval -A 'umami.version' default.nix | tr -d '"' || echo "0.0.1")
version=$(curl -s "https://api.github.com/repos/umami-software/umami/releases/latest" | jq -r ".tag_name")
version="${version#v}"
echo "Updating to $version"
if [[ "$old_version" == "$version" ]]; then
echo "Already up to date!"
exit 0
fi
nix-update --version "$version" umami
echo "Fetching geolite"
geocities_rev_date=$(curl https://api.github.com/repos/GitSquared/node-geolite2-redist/branches/master | jq -r ".commit.sha, .commit.commit.author.date")
geocities_rev=$(echo "$geocities_rev_date" | head -1)
geocities_date=$(echo "$geocities_rev_date" | tail -1 | sed 's/T.*//')
# upstream is kind enough to provide a file with the hash of the tar.gz archive
geocities_hash=$(curl -s "https://raw.githubusercontent.com/GitSquared/node-geolite2-redist/$geocities_rev/redist/GeoLite2-City.tar.gz.sha256")
geocities_hash_sri=$(nix-hash --to-sri --type sha256 "$geocities_hash")
cat <<EOF > "$SCRIPT_DIR/sources.json"
{
"geocities": {
"rev": "$geocities_rev",
"date": "$geocities_date",
"hash": "$geocities_hash_sri"
}
}
EOF
echo "Pinning Prisma version"
upstream_src="https://raw.githubusercontent.com/umami-software/umami/v$version"
lock=$(mktemp)
curl -s -o "$lock" "$upstream_src/pnpm-lock.yaml"
prisma_version=$(grep "@prisma/engines@" "$lock" | head -n1 | awk -F"[@']" '{print $4}')
rm "$lock"
nix-update --version "$prisma_version" umami.prisma-engines
+3 -3
View File
@@ -10,16 +10,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "wofi-power-menu";
version = "0.2.9";
version = "0.3.0";
src = fetchFromGitHub {
owner = "szaffarano";
repo = "wofi-power-menu";
tag = "v${finalAttrs.version}";
hash = "sha256-xio/Gt37PJ/0Di22na4USmfah2GV+xM2eV4NnGBeVfY=";
hash = "sha256-/MoMgOrpM0KHIyxqOJmC5N5NddOVVfTs5fDt1/yiBtQ=";
};
cargoHash = "sha256-diDLKP7JGzrXgdZMwSmg70dbFlMLLWp4Ad/ejjiOSlc=";
cargoHash = "sha256-PWPMBYmB1lyCJFhodNSCicYJy29vEUx6k9ScQTPbZdg=";
nativeBuildInputs = [ makeWrapper ];
@@ -461,10 +461,5 @@ stdenv.mkDerivation (finalAttrs: {
# If rustc can't target a platform, we also can't build rustc for
# that platform.
badPlatforms = rustc.badTargetPlatforms;
# Builds, but can't actually compile anything
# https://github.com/NixOS/nixpkgs/issues/311930
# https://github.com/rust-lang/rust/issues/55120
# https://github.com/rust-lang/rust/issues/82521
broken = stdenv.hostPlatform.useLLVM;
};
})
@@ -8,13 +8,13 @@
stdenv.mkDerivation rec {
pname = "qtpbfimageplugin";
version = "4.2";
version = "4.4";
src = fetchFromGitHub {
owner = "tumic0";
repo = "QtPBFImagePlugin";
tag = version;
hash = "sha256-yk/DsLjNLqtmhvPcHDZGsNiAI1zBv1vBtgERvtNjF4I=";
hash = "sha256-WcqhYDfirMfNtUJBvhZ1559NnJun9OuhhVg6o8IcVGQ=";
};
nativeBuildInputs = [
@@ -20,14 +20,14 @@
buildPythonPackage rec {
pname = "posthog";
version = "6.1.0";
version = "6.3.1";
pyproject = true;
src = fetchFromGitHub {
owner = "PostHog";
repo = "posthog-python";
tag = "v${version}";
hash = "sha256-u4qCQYCpMfM/JCyyKOfTTN7vwh3EvlGnxuslUy/d9Bs=";
hash = "sha256-kUIgZJdX+IdMEkIK0DoKYOiv9GSaI+RhOeg9+zK4yvc=";
};
build-system = [ setuptools ];
@@ -18,7 +18,7 @@
buildPythonPackage rec {
pname = "pystac-client";
version = "0.8.6";
version = "0.9.0";
pyproject = true;
disabled = pythonOlder "3.9";
@@ -26,7 +26,7 @@ buildPythonPackage rec {
owner = "stac-utils";
repo = "pystac-client";
tag = "v${version}";
hash = "sha256-rbRxqR6hZy284JfQu5+dukFTBHllqzjo0k9aWhrkRAU=";
hash = "sha256-+DOWf1ZAwylicdSuOBNivi0Z7DxaymZF756X7fogAjc=";
};
build-system = [ setuptools ];
@@ -55,6 +55,12 @@ buildPythonPackage rec {
"vcr"
];
# requires cql2
disabledTests = [
"test_filter_conversion_to_cql2_json"
"test_filter_conversion_to_cql2_text"
];
pythonImportsCheck = [ "pystac_client" ];
meta = {
@@ -27,14 +27,14 @@
buildPythonPackage rec {
pname = "softlayer";
version = "6.2.6";
version = "6.2.7";
pyproject = true;
src = fetchFromGitHub {
owner = "softlayer";
repo = "softlayer-python";
tag = "v${version}";
hash = "sha256-qBhnHFFlP4pqlN/SETXEqYyre/ap60wHe9eCfyiB+kA=";
hash = "sha256-mlC4o39Ol1ALguc9KGpxB0M0vhWz4LG2uwhW8CBrVgg=";
};
build-system = [
@@ -85,7 +85,7 @@ buildPythonPackage rec {
meta = {
description = "Python libraries that assist in calling the SoftLayer API";
homepage = "https://github.com/softlayer/softlayer-python";
changelog = "https://github.com/softlayer/softlayer-python/releases/tag/v${version}";
changelog = "https://github.com/softlayer/softlayer-python/releases/tag/${src.tag}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ onny ];
};
@@ -13,7 +13,7 @@
buildPythonApplication rec {
pname = "gdbgui";
version = "0.15.2.0";
version = "0.15.3.0";
format = "setuptools";
buildInputs = [ gdb ];
@@ -27,7 +27,7 @@ buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
hash = "sha256-vmMlRmjFqhs3Vf+IU9IDtJzt4dZ0yIOmXIVOx5chZPA=";
hash = "sha256-/HyFE0JnoN03CDyCQCo/Y9RyH4YOMoeB7khReIb8t7Y=";
};
postPatch = ''
+86
View File
@@ -0,0 +1,86 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p bash nix-prefetch curl jq gawk gnused nixfmt-rfc-style
set -euo pipefail
SCRIPT_DIR="$(dirname "${BASH_SOURCE[0]}")"
FILE_PATH="$SCRIPT_DIR/xanmod-kernels.nix"
get_old_version() {
local file_path="$1"
local variant="$2"
grep -A 2 "$variant = {" "$file_path" | grep "version =" | cut -d '"' -f 2
}
VARIANT="${1:-lts}"
OLD_VERSION=${UPDATE_NIX_OLD_VERSION:-$(get_old_version "$FILE_PATH" "$VARIANT")}
RELEASES=$(curl --silent https://gitlab.com/api/v4/projects/xanmod%2Flinux/releases)
# list of URLs. latest first, oldest last
RELEASE_URLS=$(echo "$RELEASES" | jq '.[].assets.links.[0].name')
while IFS= read -r url; do
# Get variant, version and suffix from url fields:
# 8 9 NF
# | | |
# https://.../<variant>/<version>-<suffix>
release_variant=$(echo "$url" | awk -F'[/-]' '{print $8}')
release_version=$(echo "$url" | awk -F'[/-]' '{print $9}')
# either xanmod1 or xanmod2
suffix=$(echo "$url" | awk -F'[/-]' '{print $NF}')
if [[ "$release_variant" == "$VARIANT" ]]; then
if [[ "$release_version" == "$OLD_VERSION" ]]; then
echo "Xanmod $VARIANT is up-to-date: ${OLD_VERSION}"
exit 0
else
NEW_VERSION="$release_version"
SUFFIX="$suffix"
break
fi
fi
done < <(echo "$RELEASE_URLS" | jq -r)
echo "Updating Xanmod \"$VARIANT\" from $OLD_VERSION to $NEW_VERSION ($SUFFIX)"
URL="https://gitlab.com/api/v4/projects/xanmod%2Flinux/repository/archive.tar.gz?sha=$NEW_VERSION-$SUFFIX"
HASH="$(nix-prefetch fetchzip --quiet --url "$URL")"
update_variant() {
local file_path="$1"
local variant="$2"
local new_version="$3"
local new_hash="$4"
local suffix="$5"
# ${variant} = { <- range start
# version = ...
# hash = ...
# suffix = ...
# }; <- range end
range_start="^\s*$variant = {"
range_end="^\s*};"
# - Update the version and hash using sed range addresses
# - Remove suffix line, if it exists
sed -i -e "/$range_start/,/$range_end/ {
s|^\s*version = \".*\";| version = \"$new_version\";|;
s|^\s*hash = \".*\";| hash = \"$new_hash\";|;
/^\s*suffix = /d
}" "$file_path"
# Add suffix, if it's different than xanmod1 (the default)
if [[ "$suffix" != "xanmod1" ]]; then
sed -i -e "/$range_start/,/$range_end/ {
s|$range_end| suffix = \"$suffix\";\n };|;
}" "$file_path"
fi
# Apply proper formatting
nixfmt "$file_path"
}
update_variant "$FILE_PATH" "$VARIANT" "$NEW_VERSION" "$HASH" "$SUFFIX"
@@ -13,10 +13,12 @@ let
# NOTE: When updating these, please also take a look at the changes done to
# kernel config in the xanmod version commit
variants = {
# ./update-xanmod.sh lts
lts = {
version = "6.12.40";
hash = "sha256-L8wL47kD+lrnJsrp0B1MZ2Lg8zs+m1vQ24gPGuvxIA0=";
};
# ./update-xanmod.sh main
main = {
version = "6.15.8";
hash = "sha256-P4DpTS0RhvsgBrNDsZMiA1NvCQucuPmJ4GDyF9mZ7ZU=";
@@ -70,6 +72,11 @@ let
RCU_EXP_KTHREAD = yes;
};
extraPassthru.updateScript = [
./update-xanmod.sh
variant
];
extraMeta = {
branch = lib.versions.majorMinor version;
maintainers = with lib.maintainers; [
-5
View File
@@ -4079,9 +4079,6 @@ with pkgs;
pfstools = libsForQt5.callPackage ../tools/graphics/pfstools { };
piper-train = callPackage ../tools/audio/piper/train.nix { };
piper-tts = callPackage ../tools/audio/piper { };
phosh = callPackage ../applications/window-managers/phosh { };
phosh-mobile-settings =
@@ -12806,8 +12803,6 @@ with pkgs;
kubeval-schema = callPackage ../applications/networking/cluster/kubeval/schema.nix { };
kubernetes = callPackage ../applications/networking/cluster/kubernetes { };
kubectl = callPackage ../applications/networking/cluster/kubernetes/kubectl.nix { };
kubectl-convert = kubectl.convert;
kubectl-view-allocations =