Merge master into staging-next

Changed files
+654 -399
maintainers
nixos
pkgs
applications
misc
tint2
networking
browsers
brave
instant-messengers
teamspeak
seaweedfs
video
qmplay2
window-managers
sway
development
python-modules
google-cloud-artifact-registry
slack-bolt
slack-sdk
trimesh
wandb
tools
capnproto-rust
symfony-cli
os-specific
servers
stdenv
tools
top-level
+3
maintainers/maintainer-list.nix
···
github = "gigglesquid";
githubId = 3685154;
name = "Jack connors";
+
keys = [{
+
fingerprint = "21DF 8034 B212 EDFF 9F19 9C19 F65B 7583 7ABF D019";
+
}];
};
gila = {
email = "jeffry.molanus@gmail.com";
+256 -257
nixos/modules/services/networking/syncthing.nix
···
opt = options.services.syncthing;
defaultUser = "syncthing";
defaultGroup = defaultUser;
+
settingsFormat = pkgs.formats.json { };
+
cleanedConfig = converge (filterAttrsRecursive (_: v: v != null && v != {})) cfg.settings;
-
devices = mapAttrsToList (name: device: {
+
devices = mapAttrsToList (_: device: device // {
deviceID = device.id;
-
inherit (device) name addresses introducer autoAcceptFolders;
-
}) cfg.devices;
+
}) cfg.settings.devices;
-
folders = mapAttrsToList ( _: folder: {
-
inherit (folder) path id label type;
-
devices = map (device: { deviceId = cfg.devices.${device}.id; }) folder.devices;
-
rescanIntervalS = folder.rescanInterval;
-
fsWatcherEnabled = folder.watch;
-
fsWatcherDelayS = folder.watchDelay;
-
ignorePerms = folder.ignorePerms;
-
ignoreDelete = folder.ignoreDelete;
-
versioning = folder.versioning;
-
}) (filterAttrs (
-
_: folder:
+
folders = mapAttrsToList (_: folder: folder //
+
throwIf (folder?rescanInterval || folder?watch || folder?watchDelay) ''
+
The options services.syncthing.settings.folders.<name>.{rescanInterval,watch,watchDelay}
+
were removed. Please use, respectively, {rescanIntervalS,fsWatcherEnabled,fsWatcherDelayS} instead.
+
'' {
+
devices = map (device:
+
if builtins.isString device then
+
{ deviceId = cfg.settings.devices.${device}.id; }
+
else
+
device
+
) folder.devices;
+
}) (filterAttrs (_: folder:
folder.enable
-
) cfg.folders);
+
) cfg.settings.folders);
updateConfig = pkgs.writers.writeDash "merge-syncthing-config" ''
set -efu
···
old_cfg=$(curl ${cfg.guiAddress}/rest/config)
# generate the new config by merging with the NixOS config options
-
new_cfg=$(printf '%s\n' "$old_cfg" | ${pkgs.jq}/bin/jq -c '. * {
-
"devices": ('${escapeShellArg (builtins.toJSON devices)}'${optionalString (cfg.devices == {} || ! cfg.overrideDevices) " + .devices"}),
-
"folders": ('${escapeShellArg (builtins.toJSON folders)}'${optionalString (cfg.folders == {} || ! cfg.overrideFolders) " + .folders"})
-
} * '${escapeShellArg (builtins.toJSON cfg.extraOptions)})
+
new_cfg=$(printf '%s\n' "$old_cfg" | ${pkgs.jq}/bin/jq -c ${escapeShellArg ''. * ${builtins.toJSON cleanedConfig} * {
+
"devices": ('${escapeShellArg (builtins.toJSON devices)}'${optionalString (cfg.settings.devices == {} || ! cfg.overrideDevices) " + .devices"}),
+
"folders": ('${escapeShellArg (builtins.toJSON folders)}'${optionalString (cfg.settings.folders == {} || ! cfg.overrideFolders) " + .folders"})
+
}''})
# send the new config
curl -X PUT -d "$new_cfg" ${cfg.guiAddress}/rest/config
···
default = true;
description = mdDoc ''
Whether to delete the devices which are not configured via the
-
[devices](#opt-services.syncthing.devices) option.
+
[devices](#opt-services.syncthing.settings.devices) option.
If set to `false`, devices added via the web
interface will persist and will have to be deleted manually.
'';
};
-
devices = mkOption {
-
default = {};
-
description = mdDoc ''
-
Peers/devices which Syncthing should communicate with.
-
-
Note that you can still add devices manually, but those changes
-
will be reverted on restart if [overrideDevices](#opt-services.syncthing.overrideDevices)
-
is enabled.
-
'';
-
example = {
-
bigbox = {
-
id = "7CFNTQM-IMTJBHJ-3UWRDIU-ZGQJFR6-VCXZ3NB-XUH3KZO-N52ITXR-LAIYUAU";
-
addresses = [ "tcp://192.168.0.10:51820" ];
-
};
-
};
-
type = types.attrsOf (types.submodule ({ name, ... }: {
-
options = {
-
-
name = mkOption {
-
type = types.str;
-
default = name;
-
description = lib.mdDoc ''
-
The name of the device.
-
'';
-
};
-
-
addresses = mkOption {
-
type = types.listOf types.str;
-
default = [];
-
description = lib.mdDoc ''
-
The addresses used to connect to the device.
-
If this is left empty, dynamic configuration is attempted.
-
'';
-
};
-
-
id = mkOption {
-
type = types.str;
-
description = mdDoc ''
-
The device ID. See <https://docs.syncthing.net/dev/device-ids.html>.
-
'';
-
};
-
-
introducer = mkOption {
-
type = types.bool;
-
default = false;
-
description = mdDoc ''
-
Whether the device should act as an introducer and be allowed
-
to add folders on this computer.
-
See <https://docs.syncthing.net/users/introducer.html>.
-
'';
-
};
-
-
autoAcceptFolders = mkOption {
-
type = types.bool;
-
default = false;
-
description = mdDoc ''
-
Automatically create or share folders that this device advertises at the default path.
-
See <https://docs.syncthing.net/users/config.html?highlight=autoaccept#config-file-format>.
-
'';
-
};
-
-
};
-
}));
-
};
-
overrideFolders = mkOption {
type = types.bool;
default = true;
description = mdDoc ''
Whether to delete the folders which are not configured via the
-
[folders](#opt-services.syncthing.folders) option.
+
[folders](#opt-services.syncthing.settings.folders) option.
If set to `false`, folders added via the web
interface will persist and will have to be deleted manually.
'';
};
-
folders = mkOption {
-
default = {};
-
description = mdDoc ''
-
Folders which should be shared by Syncthing.
+
settings = mkOption {
+
type = types.submodule {
+
freeformType = settingsFormat.type;
+
options = {
+
# global options
+
options = mkOption {
+
default = {};
+
description = mdDoc ''
+
The options element contains all other global configuration options
+
'';
+
type = types.submodule ({ name, ... }: {
+
freeformType = settingsFormat.type;
+
options = {
+
localAnnounceEnabled = mkOption {
+
type = types.nullOr types.bool;
+
default = null;
+
description = lib.mdDoc ''
+
Whether to send announcements to the local LAN, also use such announcements to find other devices.
+
'';
+
};
-
Note that you can still add folders manually, but those changes
-
will be reverted on restart if [overrideFolders](#opt-services.syncthing.overrideFolders)
-
is enabled.
-
'';
-
example = literalExpression ''
-
{
-
"/home/user/sync" = {
-
id = "syncme";
-
devices = [ "bigbox" ];
-
};
-
}
-
'';
-
type = types.attrsOf (types.submodule ({ name, ... }: {
-
options = {
+
localAnnouncePort = mkOption {
+
type = types.nullOr types.int;
+
default = null;
+
description = lib.mdDoc ''
+
The port on which to listen and send IPv4 broadcast announcements to.
+
'';
+
};
-
enable = mkOption {
-
type = types.bool;
-
default = true;
-
description = lib.mdDoc ''
-
Whether to share this folder.
-
This option is useful when you want to define all folders
-
in one place, but not every machine should share all folders.
-
'';
-
};
+
relaysEnabled = mkOption {
+
type = types.nullOr types.bool;
+
default = null;
+
description = lib.mdDoc ''
+
When true, relays will be connected to and potentially used for device to device connections.
+
'';
+
};
-
path = mkOption {
-
# TODO for release 23.05: allow relative paths again and set
-
# working directory to cfg.dataDir
-
type = types.str // {
-
check = x: types.str.check x && (substring 0 1 x == "/" || substring 0 2 x == "~/");
-
description = types.str.description + " starting with / or ~/";
-
};
-
default = name;
-
description = lib.mdDoc ''
-
The path to the folder which should be shared.
-
Only absolute paths (starting with `/`) and paths relative to
-
the [user](#opt-services.syncthing.user)'s home directory
-
(starting with `~/`) are allowed.
-
'';
-
};
+
urAccepted = mkOption {
+
type = types.nullOr types.int;
+
default = null;
+
description = lib.mdDoc ''
+
Whether the user has accepted to submit anonymous usage data.
+
The default, 0, mean the user has not made a choice, and Syncthing will ask at some point in the future.
+
"-1" means no, a number above zero means that that version of usage reporting has been accepted.
+
'';
+
};
-
id = mkOption {
-
type = types.str;
-
default = name;
-
description = lib.mdDoc ''
-
The ID of the folder. Must be the same on all devices.
-
'';
-
};
+
limitBandwidthInLan = mkOption {
+
type = types.nullOr types.bool;
+
default = null;
+
description = lib.mdDoc ''
+
Whether to apply bandwidth limits to devices in the same broadcast domain as the local device.
+
'';
+
};
-
label = mkOption {
-
type = types.str;
-
default = name;
-
description = lib.mdDoc ''
-
The label of the folder.
-
'';
+
maxFolderConcurrency = mkOption {
+
type = types.nullOr types.int;
+
default = null;
+
description = lib.mdDoc ''
+
This option controls how many folders may concurrently be in I/O-intensive operations such as syncing or scanning.
+
The mechanism is described in detail in a [separate chapter](https://docs.syncthing.net/advanced/option-max-concurrency.html).
+
'';
+
};
+
};
+
});
};
+
# device settings
devices = mkOption {
-
type = types.listOf types.str;
-
default = [];
+
default = {};
description = mdDoc ''
-
The devices this folder should be shared with. Each device must
-
be defined in the [devices](#opt-services.syncthing.devices) option.
+
Peers/devices which Syncthing should communicate with.
+
+
Note that you can still add devices manually, but those changes
+
will be reverted on restart if [overrideDevices](#opt-services.syncthing.overrideDevices)
+
is enabled.
'';
+
example = {
+
bigbox = {
+
id = "7CFNTQM-IMTJBHJ-3UWRDIU-ZGQJFR6-VCXZ3NB-XUH3KZO-N52ITXR-LAIYUAU";
+
addresses = [ "tcp://192.168.0.10:51820" ];
+
};
+
};
+
type = types.attrsOf (types.submodule ({ name, ... }: {
+
freeformType = settingsFormat.type;
+
options = {
+
+
name = mkOption {
+
type = types.str;
+
default = name;
+
description = lib.mdDoc ''
+
The name of the device.
+
'';
+
};
+
+
id = mkOption {
+
type = types.str;
+
description = mdDoc ''
+
The device ID. See <https://docs.syncthing.net/dev/device-ids.html>.
+
'';
+
};
+
+
autoAcceptFolders = mkOption {
+
type = types.bool;
+
default = false;
+
description = mdDoc ''
+
Automatically create or share folders that this device advertises at the default path.
+
See <https://docs.syncthing.net/users/config.html?highlight=autoaccept#config-file-format>.
+
'';
+
};
+
+
};
+
}));
};
-
versioning = mkOption {
-
default = null;
+
# folder settings
+
folders = mkOption {
+
default = {};
description = mdDoc ''
-
How to keep changed/deleted files with Syncthing.
-
There are 4 different types of versioning with different parameters.
-
See <https://docs.syncthing.net/users/versioning.html>.
+
Folders which should be shared by Syncthing.
+
+
Note that you can still add folders manually, but those changes
+
will be reverted on restart if [overrideFolders](#opt-services.syncthing.overrideFolders)
+
is enabled.
'';
example = literalExpression ''
-
[
-
{
-
versioning = {
-
type = "simple";
-
params.keep = "10";
-
};
-
}
-
{
-
versioning = {
-
type = "trashcan";
-
params.cleanoutDays = "1000";
-
};
-
}
-
{
-
versioning = {
-
type = "staggered";
-
fsPath = "/syncthing/backup";
-
params = {
-
cleanInterval = "3600";
-
maxAge = "31536000";
-
};
-
};
-
}
-
{
-
versioning = {
-
type = "external";
-
params.versionsPath = pkgs.writers.writeBash "backup" '''
-
folderpath="$1"
-
filepath="$2"
-
rm -rf "$folderpath/$filepath"
-
''';
-
};
-
}
-
]
+
{
+
"/home/user/sync" = {
+
id = "syncme";
+
devices = [ "bigbox" ];
+
};
+
}
'';
-
type = with types; nullOr (submodule {
+
type = types.attrsOf (types.submodule ({ name, ... }: {
+
freeformType = settingsFormat.type;
options = {
-
type = mkOption {
-
type = enum [ "external" "simple" "staggered" "trashcan" ];
+
+
enable = mkOption {
+
type = types.bool;
+
default = true;
+
description = lib.mdDoc ''
+
Whether to share this folder.
+
This option is useful when you want to define all folders
+
in one place, but not every machine should share all folders.
+
'';
+
};
+
+
path = mkOption {
+
# TODO for release 23.05: allow relative paths again and set
+
# working directory to cfg.dataDir
+
type = types.str // {
+
check = x: types.str.check x && (substring 0 1 x == "/" || substring 0 2 x == "~/");
+
description = types.str.description + " starting with / or ~/";
+
};
+
default = name;
+
description = lib.mdDoc ''
+
The path to the folder which should be shared.
+
Only absolute paths (starting with `/`) and paths relative to
+
the [user](#opt-services.syncthing.user)'s home directory
+
(starting with `~/`) are allowed.
+
'';
+
};
+
+
id = mkOption {
+
type = types.str;
+
default = name;
+
description = lib.mdDoc ''
+
The ID of the folder. Must be the same on all devices.
+
'';
+
};
+
+
label = mkOption {
+
type = types.str;
+
default = name;
+
description = lib.mdDoc ''
+
The label of the folder.
+
'';
+
};
+
+
devices = mkOption {
+
type = types.listOf types.str;
+
default = [];
description = mdDoc ''
-
The type of versioning.
-
See <https://docs.syncthing.net/users/versioning.html>.
+
The devices this folder should be shared with. Each device must
+
be defined in the [devices](#opt-services.syncthing.settings.devices) option.
'';
};
-
fsPath = mkOption {
-
default = "";
-
type = either str path;
+
+
versioning = mkOption {
+
default = null;
description = mdDoc ''
-
Path to the versioning folder.
+
How to keep changed/deleted files with Syncthing.
+
There are 4 different types of versioning with different parameters.
See <https://docs.syncthing.net/users/versioning.html>.
'';
+
example = literalExpression ''
+
[
+
{
+
versioning = {
+
type = "simple";
+
params.keep = "10";
+
};
+
}
+
{
+
versioning = {
+
type = "trashcan";
+
params.cleanoutDays = "1000";
+
};
+
}
+
{
+
versioning = {
+
type = "staggered";
+
fsPath = "/syncthing/backup";
+
params = {
+
cleanInterval = "3600";
+
maxAge = "31536000";
+
};
+
};
+
}
+
{
+
versioning = {
+
type = "external";
+
params.versionsPath = pkgs.writers.writeBash "backup" '''
+
folderpath="$1"
+
filepath="$2"
+
rm -rf "$folderpath/$filepath"
+
''';
+
};
+
}
+
]
+
'';
+
type = with types; nullOr (submodule {
+
freeformType = settingsFormat.type;
+
options = {
+
type = mkOption {
+
type = enum [ "external" "simple" "staggered" "trashcan" ];
+
description = mdDoc ''
+
The type of versioning.
+
See <https://docs.syncthing.net/users/versioning.html>.
+
'';
+
};
+
};
+
});
};
-
params = mkOption {
-
type = attrsOf (either str path);
+
+
copyOwnershipFromParent = mkOption {
+
type = types.bool;
+
default = false;
description = mdDoc ''
-
The parameters for versioning. Structure depends on
-
[versioning.type](#opt-services.syncthing.folders._name_.versioning.type).
-
See <https://docs.syncthing.net/users/versioning.html>.
+
On Unix systems, tries to copy file/folder ownership from the parent directory (the directory it’s located in).
+
Requires running Syncthing as a privileged user, or granting it additional capabilities (e.g. CAP_CHOWN on Linux).
'';
};
};
-
});
-
};
-
-
rescanInterval = mkOption {
-
type = types.int;
-
default = 3600;
-
description = lib.mdDoc ''
-
How often the folder should be rescanned for changes.
-
'';
-
};
-
-
type = mkOption {
-
type = types.enum [ "sendreceive" "sendonly" "receiveonly" "receiveencrypted" ];
-
default = "sendreceive";
-
description = lib.mdDoc ''
-
Whether to only send changes for this folder, only receive them
-
or both. `receiveencrypted` can be used for untrusted devices. See
-
<https://docs.syncthing.net/users/untrusted.html> for reference.
-
'';
-
};
-
-
watch = mkOption {
-
type = types.bool;
-
default = true;
-
description = lib.mdDoc ''
-
Whether the folder should be watched for changes by inotify.
-
'';
-
};
-
-
watchDelay = mkOption {
-
type = types.int;
-
default = 10;
-
description = lib.mdDoc ''
-
The delay after an inotify event is triggered.
-
'';
-
};
-
-
ignorePerms = mkOption {
-
type = types.bool;
-
default = true;
-
description = lib.mdDoc ''
-
Whether to ignore permission changes.
-
'';
+
}));
};
-
ignoreDelete = mkOption {
-
type = types.bool;
-
default = false;
-
description = mdDoc ''
-
Whether to skip deleting files that are deleted by peers.
-
See <https://docs.syncthing.net/advanced/folder-ignoredelete.html>.
-
'';
-
};
};
-
}));
-
};
-
-
extraOptions = mkOption {
-
type = types.addCheck (pkgs.formats.json {}).type isAttrs;
+
};
default = {};
description = mdDoc ''
Extra configuration options for Syncthing.
···
This option was removed because Syncthing now has the inotify functionality included under the name "fswatcher".
It can be enabled on a per-folder basis through the web interface.
'')
+
(mkRenamedOptionModule [ "services" "syncthing" "extraOptions" ] [ "services" "syncthing" "settings" ])
+
(mkRenamedOptionModule [ "services" "syncthing" "folders" ] [ "services" "syncthing" "settings" "folders" ])
+
(mkRenamedOptionModule [ "services" "syncthing" "devices" ] [ "services" "syncthing" "settings" "devices" ])
+
(mkRenamedOptionModule [ "services" "syncthing" "options" ] [ "services" "syncthing" "settings" "options" ])
] ++ map (o:
mkRenamedOptionModule [ "services" "syncthing" "declarative" o ] [ "services" "syncthing" o ]
) [ "cert" "key" "devices" "folders" "overrideDevices" "overrideFolders" "extraOptions"];
···
];
};
};
-
syncthing-init = mkIf (
-
cfg.devices != {} || cfg.folders != {} || cfg.extraOptions != {}
-
) {
+
syncthing-init = mkIf (cleanedConfig != {}) {
description = "Syncthing configuration updater";
requisite = [ "syncthing.service" ];
after = [ "syncthing.service" ];
+1 -1
nixos/modules/services/networking/twingate.nix
···
config = lib.mkIf cfg.enable {
systemd.packages = [ cfg.package ];
systemd.services.twingate = {
-
preStart = "cp -r -n ${cfg.package}/etc/twingate/. /etc/twingate/";
+
preStart = "cp -r --update=none ${cfg.package}/etc/twingate/. /etc/twingate/";
wantedBy = [ "multi-user.target" ];
};
+1
nixos/tests/all-tests.nix
···
switchTest = handleTest ./switch-test.nix {};
sympa = handleTest ./sympa.nix {};
syncthing = handleTest ./syncthing.nix {};
+
syncthing-no-settings = handleTest ./syncthing-no-settings.nix {};
syncthing-init = handleTest ./syncthing-init.nix {};
syncthing-relay = handleTest ./syncthing-relay.nix {};
systemd = handleTest ./systemd.nix {};
+4 -4
nixos/tests/syncthing-init.nix
···
nodes.machine = {
services.syncthing = {
enable = true;
-
devices.${testName} = {
+
settings.devices.testDevice = {
id = testId;
};
-
folders.testFolder = {
+
settings.folders.testFolder = {
path = "/tmp/test";
-
devices = [ testName ];
+
devices = [ "testDevice" ];
};
-
extraOptions.gui.user = "guiUser";
+
settings.gui.user = "guiUser";
};
};
+18
nixos/tests/syncthing-no-settings.nix
···
+
import ./make-test-python.nix ({ lib, pkgs, ... }: {
+
name = "syncthing";
+
meta.maintainers = with pkgs.lib.maintainers; [ chkno ];
+
+
nodes = {
+
a = {
+
environment.systemPackages = with pkgs; [ curl libxml2 syncthing ];
+
services.syncthing = {
+
enable = true;
+
};
+
};
+
};
+
# Test that indeed a syncthing-init.service systemd service is not created.
+
#
+
testScript = /* python */ ''
+
a.succeed("systemctl list-unit-files | awk '$1 == \"syncthing-init.service\" {exit 1;}'")
+
'';
+
})
+15 -4
pkgs/applications/misc/tint2/default.nix
···
{ lib, stdenv
, fetchFromGitLab
+
, fetchpatch
, pkg-config
, cmake
, gettext
···
stdenv.mkDerivation rec {
pname = "tint2";
-
version = "17.0.2";
+
version = "17.1.3";
src = fetchFromGitLab {
-
owner = "o9000";
+
owner = "nick87720z";
repo = "tint2";
rev = version;
-
sha256 = "sha256-SqpAjclwu3HN07LAZgvXGzjMK6G+nYLDdl90o1+9aog=";
+
hash = "sha256-9sEe/Gnj+FWLPbWBtfL1YlNNC12j7/KjQ40xdkaFJVQ=";
};
+
patches = [
+
# Fix crashes with glib >= 2.76
+
# https://patchespromptly.com/glib2/
+
# https://gitlab.com/nick87720z/tint2/-/issues/4
+
(fetchpatch {
+
url = "https://gitlab.com/nick87720z/tint2/uploads/7de4501a4fa4fffa5ba8bb0fa3d19f78/glib.patch";
+
hash = "sha256-K547KYlRkVl1s2THi3ZCRuM447EFJwTqUEBjKQnV8Sc=";
+
})
+
];
+
nativeBuildInputs = [
pkg-config
cmake
···
'';
meta = with lib; {
-
homepage = "https://gitlab.com/o9000/tint2";
+
homepage = "https://gitlab.com/nick87720z/tint2";
description = "Simple panel/taskbar unintrusive and light (memory, cpu, aestetic)";
license = licenses.gpl2Only;
platforms = platforms.linux;
+2 -2
pkgs/applications/networking/browsers/brave/default.nix
···
stdenv.mkDerivation rec {
pname = "brave";
-
version = "1.52.130";
+
version = "1.56.9";
src = fetchurl {
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb";
-
sha256 = "sha256-TKCAv1gGdAU9KDcrrREPgFjZOPNwTAfLrCh33DAf41U=";
+
sha256 = "sha256-cw41xUewYB/M6xHZhhL9nX1J9vnNGA9TFJWI/Qwdu/k=";
};
dontConfigure = true;
+19 -15
pkgs/applications/networking/instant-messengers/teamspeak/client.nix
···
{ lib, stdenv, fetchurl, makeWrapper, makeDesktopItem, zlib, glib, libpng, freetype, openssl
, xorg, fontconfig, qtbase, qtwebengine, qtwebchannel, qtsvg, qtwebsockets, xkeyboard_config
-
, alsa-lib, libpulseaudio ? null, libredirect, quazip, which, unzip, llvmPackages_10, writeShellScriptBin
+
, alsa-lib, libpulseaudio ? null, libredirect, quazip, which, unzip, perl, llvmPackages
}:
let
-
arch = if stdenv.is64bit then "amd64" else "x86";
+
arch = "amd64";
-
libDir = if stdenv.is64bit then "lib64" else "lib";
+
libDir = "lib64";
deps =
[ zlib glib libpng freetype xorg.libSM xorg.libICE xorg.libXrender openssl
xorg.libXrandr xorg.libXfixes xorg.libXcursor xorg.libXinerama
xorg.libxcb fontconfig xorg.libXext xorg.libX11 alsa-lib qtbase qtwebengine qtwebchannel qtsvg
-
qtwebsockets libpulseaudio quazip llvmPackages_10.libcxx llvmPackages_10.libcxxabi # llvmPackages_11 and higher crash https://github.com/NixOS/nixpkgs/issues/161395
+
qtwebsockets libpulseaudio quazip llvmPackages.libcxx llvmPackages.libcxxabi
];
desktopItem = makeDesktopItem {
···
genericName = "TeamSpeak";
categories = [ "Network" ];
};
-
-
fakeLess = writeShellScriptBin "less" "cat";
-
in
stdenv.mkDerivation rec {
pname = "teamspeak-client";
-
version = "3.5.6";
+
version = "3.6.0";
src = fetchurl {
url = "https://files.teamspeak-services.com/releases/client/${version}/TeamSpeak3-Client-linux_${arch}-${version}.run";
-
sha256 = if stdenv.is64bit
-
then "sha256:0hjai1bd4mq3g2dlyi0zkn8s4zlgxd38skw77mb78nc4di5gvgpg"
-
else "sha256:1y1c65nap91nv9xkvd96fagqbfl56p9n0rl6iac0i29bkysdmija";
+
hash = "sha256-ZbElnFoQmXdtCR9lb6eOz4dMzSwpfjC1DvG3VbDoSEA=";
};
# grab the plugin sdk for the desktop icon
···
sha256 = "1bywmdj54glzd0kffvr27r84n4dsd0pskkbmh59mllbxvj0qwy7f";
};
-
nativeBuildInputs = [ makeWrapper fakeLess which unzip ];
+
nativeBuildInputs = [
+
makeWrapper
+
which
+
unzip
+
perl # Installer script needs `shasum`
+
];
+
# This just runs the installer script. If it gets stuck at something like
+
# ++ exec
+
# + PAGER_PATH=
+
# it's looking for a dependency and didn't find it. Check the script and make sure the dep is in nativeBuildInputs.
unpackPhase =
''
-
echo -e '\ny' | sh -xe $src
+
echo -e '\ny' | PAGER=cat sh -xe $src
cd TeamSpeak*
'';
···
url = "https://www.teamspeak.com/en/privacy-and-terms/";
free = false;
};
-
maintainers = with maintainers; [ lhvwb lukegb ];
-
platforms = [ "i686-linux" "x86_64-linux" ];
+
maintainers = with maintainers; [ lhvwb lukegb atemu ];
+
platforms = [ "x86_64-linux" ];
};
}
+14 -3
pkgs/applications/networking/seaweedfs/default.nix
···
{ lib
, fetchFromGitHub
+
, fetchpatch
, buildGoModule
, testers
, seaweedfs
···
buildGoModule rec {
pname = "seaweedfs";
-
version = "3.53";
+
version = "3.54";
src = fetchFromGitHub {
owner = "seaweedfs";
repo = "seaweedfs";
rev = version;
-
hash = "sha256-VfKzptMxT2ra1uVzbL52EWjEGHTxmnh5xZGiQpRivTU=";
+
hash = "sha256-2E2ANJIKWhUUxxSqk5+QROeoKnp1Akl5Bp+i8pPTkuQ=";
};
-
vendorHash = "sha256-kL6huukrM4YeU7uvj7abXOEAvRhm1Nfp4JODW4BTy0A=";
+
patches = [
+
# Fix build on aarch64-darwin
+
# (remove again when v3.55 is released)
+
# https://github.com/seaweedfs/seaweedfs/pull/4679
+
(fetchpatch {
+
url = "https://github.com/seaweedfs/seaweedfs/commit/1bfc9581e0bc04f394187a0d39f319ad65df5aca.patch";
+
hash = "sha256-znQFtm8BYAjuvXa+vibawBb+uhnjOL9/o0sXNoXwLk8=";
+
})
+
];
+
+
vendorHash = "sha256-VK7BmApGq+X1oNjcwCSYHcEvVjL87t8fgJXLNQSfy3I=";
subPackages = [ "weed" ];
+8 -2
pkgs/applications/video/qmplay2/default.nix
···
, alsa-lib
, cmake
, ffmpeg
+
, fribidi
, game-music-emu
+
, libXdmcp
, libXv
, libass
, libcddb
···
, libpulseaudio
, libsidplayfp
, libva
+
, libxcb
, pkg-config
, qtbase
, qttools
···
stdenv.mkDerivation (finalAttrs: {
pname = "qmplay2";
-
version = "23.02.05";
+
version = "23.06.17";
src = fetchFromGitHub {
owner = "zaps166";
repo = "QMPlay2";
rev = finalAttrs.version;
-
sha256 = "sha256-ZDpUgD9qTvjopGFVrwTBSEmrXn+4aKq2zeqoTnXwmI8=";
fetchSubmodules = true;
+
hash = "sha256-f4lIXB0eTyteCJdWFP0XnsnxGWc32CV+HlqpaCjmgOE=";
};
nativeBuildInputs = [
···
buildInputs = [
alsa-lib
ffmpeg
+
fribidi
game-music-emu
+
libXdmcp
libXv
libass
libcddb
···
libpulseaudio
libsidplayfp
libva
+
libxcb
qtbase
qttools
taglib
+10 -4
pkgs/applications/window-managers/sway/osd.nix
···
, pkg-config
, wrapGAppsHook
, gtk-layer-shell
+
, libevdev
+
, libinput
, libpulseaudio
+
, udev
}:
rustPlatform.buildRustPackage {
pname = "swayosd";
-
version = "unstable-2023-05-09";
+
version = "unstable-2023-07-18";
src = fetchFromGitHub {
owner = "ErikReider";
repo = "SwayOSD";
-
rev = "5c2176ae6a01a18fdc2b0f5d5f593737b5765914";
-
hash = "sha256-rh42J6LWgNPOWYLaIwocU1JtQnA5P1jocN3ywVOfYoc=";
+
rev = "b14c83889c7860c174276d05dec6554169a681d9";
+
hash = "sha256-MJuTwEI599Y7q+0u0DMxRYaXsZfpksc2csgnK9Ghp/E=";
};
-
cargoHash = "sha256-ZcgrUcRQTcEYhw2mpJDuYDz3I/u/2Q+O60ajXYRMeow=";
+
cargoHash = "sha256-pExpzQwuHREhgkj+eZ8drBVsh/B3WiQBBh906O6ymFw=";
nativeBuildInputs = [
wrapGAppsHook
···
buildInputs = [
gtk-layer-shell
+
libevdev
+
libinput
libpulseaudio
+
udev
];
meta = with lib; {
+41
pkgs/development/python-modules/google-cloud-artifact-registry/default.nix
···
+
{ buildPythonPackage
+
, fetchPypi
+
, google-api-core
+
, grpc-google-iam-v1
+
, lib
+
, pytestCheckHook
+
, pythonOlder
+
}:
+
+
buildPythonPackage rec {
+
pname = "google-cloud-artifact-registry";
+
version = "1.8.2";
+
format = "setuptools";
+
+
disabled = pythonOlder "3.7";
+
+
src = fetchPypi {
+
inherit pname version;
+
hash = "sha256-FuuxwOMV7IB1drn5hzX7p4BwJYQCUsgnZNVR+E6XKhM=";
+
};
+
+
propagatedBuildInputs = [
+
google-api-core
+
grpc-google-iam-v1
+
] ++ google-api-core.optional-dependencies.grpc;
+
+
nativeCheckInputs = [ pytestCheckHook ];
+
+
pythonImportsCheck = [
+
"google.cloud.artifactregistry"
+
"google.cloud.artifactregistry_v1"
+
"google.cloud.artifactregistry_v1beta2"
+
];
+
+
meta = with lib; {
+
description = "Google Cloud Artifact Registry API client library";
+
homepage = "https://github.com/googleapis/google-cloud-python";
+
license = licenses.asl20;
+
maintainers = with maintainers; [ samuela ];
+
};
+
}
+81
pkgs/development/python-modules/slack-bolt/default.nix
···
+
{ buildPythonPackage
+
, chalice
+
, cherrypy
+
, django
+
, falcon
+
, fastapi
+
, fetchFromGitHub
+
, flask
+
, flask-sockets
+
, lib
+
, moto
+
, numpy
+
, pyramid
+
, pytest-asyncio
+
, pytestCheckHook
+
, sanic
+
, sanic-testing
+
, slack-sdk
+
, starlette
+
, tornado
+
}:
+
+
buildPythonPackage rec {
+
pname = "slack-bolt";
+
version = "1.18.0";
+
format = "setuptools";
+
+
src = fetchFromGitHub {
+
owner = "slackapi";
+
repo = "bolt-python";
+
rev = "refs/tags/v${version}";
+
hash = "sha256-s9djd/MDNnyNkjkeApY6Fb1mhI6iop8RghaSJdi4eAs=";
+
};
+
+
propagatedBuildInputs = [ slack-sdk ];
+
+
nativeCheckInputs = [
+
chalice
+
cherrypy
+
django
+
falcon
+
fastapi
+
flask
+
flask-sockets
+
moto
+
pyramid
+
pytest-asyncio
+
pytestCheckHook
+
sanic
+
sanic-testing
+
starlette
+
tornado
+
];
+
+
# Work around "Read-only file system: '/homeless-shelter'" errors
+
preCheck = ''
+
export HOME="$(mktemp -d)"
+
'';
+
+
disabledTestPaths = [
+
# boddle is not packaged as of 2023-07-15
+
"tests/adapter_tests/bottle/"
+
];
+
+
disabledTests = [
+
# Require network access
+
"test_events"
+
"test_interactions"
+
"test_lazy_listener_calls"
+
"test_lazy_listeners"
+
];
+
+
pythonImportsCheck = [ "slack_bolt" ];
+
+
meta = with lib; {
+
description = "A framework to build Slack apps using Python";
+
homepage = "https://github.com/slackapi/bolt-python";
+
license = licenses.mit;
+
maintainers = with maintainers; [ samuela ];
+
};
+
}
+3 -4
pkgs/development/python-modules/slack-sdk/default.nix
···
, boto3
, buildPythonPackage
, codecov
-
, databases
, fetchFromGitHub
, flake8
, flask-sockets
···
buildPythonPackage rec {
pname = "slack-sdk";
-
version = "3.20.2";
+
version = "3.21.3";
format = "setuptools";
disabled = pythonOlder "3.6";
···
owner = "slackapi";
repo = "python-slack-sdk";
rev = "refs/tags/v${version}";
-
hash = "sha256-2MPXV+rVXZYMTZe11T8x8GKQmHZwUlkwarCkheVkERo=";
+
hash = "sha256-begpT/DaDqOi8HZE10FCuIIv18KSU/i5G/Z5DXKUT7Y=";
};
propagatedBuildInputs = [
···
nativeCheckInputs = [
codecov
-
databases
flake8
flask-sockets
moto
···
"test_start_raises_an_error_if_rtm_ws_url_is_not_returned"
"test_org_installation"
"test_interactions"
+
"test_issue_690_oauth_access"
];
pythonImportsCheck = [
+6 -2
pkgs/development/python-modules/trimesh/default.nix
···
, buildPythonPackage
, fetchPypi
, setuptools
+
, pythonOlder
, numpy
, lxml
}:
buildPythonPackage rec {
pname = "trimesh";
-
version = "3.22.4";
+
version = "3.22.5";
format = "pyproject";
+
disabled = pythonOlder "3.7";
+
src = fetchPypi {
inherit pname version;
-
hash = "sha256-DFOtanrrc3Jufuu5ybbbc0xJX29CVp2tFOP93QFoJeM=";
+
hash = "sha256-Lk30HShbVSBeiclfxJUkd7W2HfvLsZiUdYqebLI7otw=";
};
nativeBuildInputs = [ setuptools ];
···
meta = with lib; {
description = "Python library for loading and using triangular meshes";
homepage = "https://trimsh.org/";
+
changelog = "https://github.com/mikedh/trimesh/releases/tag/${version}";
license = licenses.mit;
maintainers = with maintainers; [ gebner ];
};
+21 -13
pkgs/development/python-modules/wandb/default.nix
···
{ lib
, stdenv
, appdirs
+
, azure-containerregistry
, azure-core
+
, azure-identity
+
, azure-storage-blob
, bokeh
, boto3
, buildPythonPackage
···
, flask
, git
, gitpython
+
, google-cloud-artifact-registry
, google-cloud-compute
, google-cloud-storage
, hypothesis
···
buildPythonPackage rec {
pname = "wandb";
-
version = "0.15.3";
+
version = "0.15.5";
format = "setuptools";
disabled = pythonOlder "3.6";
···
owner = pname;
repo = pname;
rev = "refs/tags/v${version}";
-
hash = "sha256-i1Lo6xbkCgRTJwRjk2bXkZ5a/JRUCzFzmEuPQlPvZf4=";
+
hash = "sha256-etS1NkkskA5Lg/38QIdzCVWgqZpjpT2LwaWF1k7WVXs=";
};
patches = [
···
];
nativeCheckInputs = [
+
azure-containerregistry
azure-core
+
azure-identity
+
azure-storage-blob
bokeh
boto3
flask
+
google-cloud-artifact-registry
google-cloud-compute
google-cloud-storage
hypothesis
···
"tests/pytest_tests/system_tests/test_sweep/test_wandb_agent.py"
"tests/pytest_tests/system_tests/test_sweep/test_wandb_sweep.py"
"tests/pytest_tests/system_tests/test_system_metrics/test_open_metrics.py"
-
"tests/pytest_tests/system_tests/tests_launch/test_github_reference.py"
-
"tests/pytest_tests/system_tests/tests_launch/test_job.py"
-
"tests/pytest_tests/system_tests/tests_launch/test_launch_add.py"
-
"tests/pytest_tests/system_tests/tests_launch/test_launch_cli.py"
-
"tests/pytest_tests/system_tests/tests_launch/test_launch_kubernetes.py"
-
"tests/pytest_tests/system_tests/tests_launch/test_launch_local_container.py"
-
"tests/pytest_tests/system_tests/tests_launch/test_launch_run.py"
-
"tests/pytest_tests/system_tests/tests_launch/test_launch_sweep_cli.py"
-
"tests/pytest_tests/system_tests/tests_launch/test_launch_sweep.py"
-
"tests/pytest_tests/system_tests/tests_launch/test_launch.py"
-
"tests/pytest_tests/system_tests/tests_launch/test_wandb_reference.py"
+
"tests/pytest_tests/system_tests/test_launch/test_github_reference.py"
+
"tests/pytest_tests/system_tests/test_launch/test_job.py"
+
"tests/pytest_tests/system_tests/test_launch/test_launch_add.py"
+
"tests/pytest_tests/system_tests/test_launch/test_launch_cli.py"
+
"tests/pytest_tests/system_tests/test_launch/test_launch_kubernetes.py"
+
"tests/pytest_tests/system_tests/test_launch/test_launch_local_container.py"
+
"tests/pytest_tests/system_tests/test_launch/test_launch_run.py"
+
"tests/pytest_tests/system_tests/test_launch/test_launch_sweep_cli.py"
+
"tests/pytest_tests/system_tests/test_launch/test_launch_sweep.py"
+
"tests/pytest_tests/system_tests/test_launch/test_launch.py"
+
"tests/pytest_tests/system_tests/test_launch/test_wandb_reference.py"
# Tries to access /homeless-shelter
"tests/pytest_tests/unit_tests/test_tables.py"
+9 -4
pkgs/development/tools/capnproto-rust/default.nix
···
rustPlatform.buildRustPackage rec {
pname = "capnproto-rust";
-
version = "0.17.1";
+
version = "0.17.2";
src = fetchCrate {
crateName = "capnpc";
inherit version;
-
sha256 = "sha256-7RfJUYV3X9w0FALP3pbhmeIqrWLqlgr4oNvPnBc+RY8=";
+
hash = "sha256-WVjXVLVoTCAtA8a6+zaX4itAaPCWb2c0trtSsxBopO4=";
};
-
cargoHash = "sha256-wmoXdukXWagW61jbFBODnIjlBrV6Q+wgvuFG/TqkvVk=";
+
cargoHash = "sha256-h9YArxHnY14T8eQCS4JVItjaCjv+2dorcOVBir7r6SY=";
+
+
postInstall = ''
+
mkdir -p $out/include/capnp
+
cp rust.capnp $out/include/capnp
+
'';
nativeCheckInputs = [
capnproto
···
description = "Cap'n Proto codegen plugin for Rust";
homepage = "https://github.com/capnproto/capnproto-rust";
license = licenses.mit;
-
maintainers = with maintainers; [ mikroskeem ];
+
maintainers = with maintainers; [ mikroskeem solson ];
};
}
+6 -6
pkgs/development/tools/symfony-cli/default.nix
···
buildGoModule rec {
pname = "symfony-cli";
-
version = "5.5.6";
-
vendorHash = "sha256-AfgDsd4W8wV0GeymD9SLeHtOeFP9qbFy+GTdMxQSkDA=";
+
version = "5.5.7";
+
vendorHash = "sha256-OXV/hTSHJvYfe2SiFamkedC01J/DOgd8I60yIpQToos=";
src = fetchFromGitHub {
owner = "symfony-cli";
repo = "symfony-cli";
rev = "v${version}";
-
sha256 = "sha256-lE8RBjBXucL0DJjEnBLbHqOVE6g358rwmaEUqU6QhOw=";
+
hash = "sha256-LC6QQIVHllBRu8B6XfV8SuTB3O+FmqYr+LQnVmLj2nU=";
};
ldflags = [
···
$GOPATH/bin/symfony-cli
'';
-
meta = with lib; {
+
meta = {
description = "Symfony CLI";
homepage = "https://github.com/symfony-cli/symfony-cli";
-
license = licenses.agpl3Plus;
-
maintainers = with maintainers; [ drupol ];
+
license = lib.licenses.agpl3Plus;
mainProgram = "symfony";
+
maintainers = with lib.maintainers; [ drupol ];
};
}
+37
pkgs/os-specific/linux/fanout/default.nix
···
+
{ lib, stdenv, fetchFromGitHub, kernel, kmod }:
+
+
stdenv.mkDerivation rec {
+
pname = "fanout";
+
version = "unstable-2022-10-17-${kernel.version}";
+
+
src = fetchFromGitHub {
+
owner = "bob-linuxtoys";
+
repo = "fanout";
+
rev = "69b1cc69bf425d1a5f83b4e84d41272f1caa0144";
+
hash = "sha256-Q19c88KDFu0A6MejZgKYei9J2693EjRkKtR9hcRcHa0=";
+
};
+
+
preBuild = ''
+
substituteInPlace Makefile --replace "modules_install" "INSTALL_MOD_PATH=$out modules_install"
+
'';
+
+
patches = [
+
./remove_auto_mknod.patch
+
];
+
+
hardeningDisable = [ "format" "pic" ];
+
+
nativeBuildInputs = [ kmod ] ++ kernel.moduleBuildDependencies;
+
+
makeFlags = kernel.makeFlags ++ [
+
"KERNELDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
+
];
+
+
meta = with lib; {
+
description = "Kernel-based publish-subscribe system";
+
homepage = "https://github.com/bob-linuxtoys/fanout";
+
license = licenses.gpl2Only;
+
maintainers = with maintainers; [ therishidesai ];
+
platforms = platforms.linux;
+
};
+
}
+13
pkgs/os-specific/linux/fanout/remove_auto_mknod.patch
···
+
diff --git a/fanout.c b/fanout.c
+
index f5d2a55..87125f4 100644
+
--- a/fanout.c
+
+++ b/fanout.c
+
@@ -13,7 +13,7 @@
+
/* Comment out to forgo the creation of /dev entries
+
* The companion udev rules 'fanout.rules' sets the special file mode
+
*/
+
-#define DEV_MKNOD
+
+// #define DEV_MKNOD
+
+
#include <linux/kernel.h>
+
#include <linux/module.h>
+2 -1
pkgs/servers/mastodon/default.nix
···
passthru = {
tests.mastodon = nixosTests.mastodon;
-
updateScript = callPackage ./update.nix {};
+
# run with: nix-shell ./maintainers/scripts/update.nix --argstr package mastodon
+
updateScript = ./update.sh;
};
meta = with lib; {
-29
pkgs/servers/mastodon/update.nix
···
-
{ runCommand
-
, lib
-
, makeWrapper
-
, yarn2nix
-
, bundix
-
, coreutils
-
, diffutils
-
, nix-prefetch-github
-
, gnused
-
, jq
-
}:
-
let
-
binPath = lib.makeBinPath [ yarn2nix bundix coreutils diffutils nix-prefetch-github gnused jq ];
-
in
-
runCommand "mastodon-update-script"
-
{
-
nativeBuildInputs = [ makeWrapper ];
-
-
meta = {
-
maintainers = with lib.maintainers; [ happy-river ];
-
description = "Utility to generate Nix expressions for Mastodon's dependencies";
-
platforms = lib.platforms.unix;
-
};
-
} ''
-
mkdir -p $out/bin
-
cp ${./update.sh} $out/bin/update.sh
-
patchShebangs $out/bin/update.sh
-
wrapProgram $out/bin/update.sh --prefix PATH : ${binPath}
-
''
+12 -11
pkgs/servers/mastodon/update.sh
···
-
#!/usr/bin/env bash
+
#!/usr/bin/env nix-shell
+
#! nix-shell -i bash -p yarn2nix bundix coreutils diffutils nix-prefetch-github gnused jq
set -e
OWNER=mastodon
···
esac
done
-
if [[ -z "$VERSION" || -n "$POSITIONAL" ]]; then
-
echo "Usage: update.sh [--owner OWNER] [--repo REPO] --ver VERSION [--rev REVISION] [--patches PATCHES]"
-
echo "OWNER and repo must be paths on github."
-
echo "If VERSION is not a revision acceptable to 'git checkout', you must provide one in REVISION."
+
if [[ -n "$POSITIONAL" ]]; then
+
echo "Usage: update.sh [--owner OWNER] [--repo REPO] [--ver VERSION] [--rev REVISION] [--patches PATCHES]"
+
echo "OWNER and REPO must be paths on github."
+
echo "If REVISION is not provided, the latest tag from github.com/mastodon/mastodon is fetched and VERSION is calculated from it."
echo "If OWNER and REPO are not provided, it defaults they default to mastodon and mastodon."
echo "PATCHES, if provided, should be one or more Nix expressions separated by spaces."
exit 1
fi
if [[ -z "$REVISION" ]]; then
-
REVISION="$VERSION"
+
REVISION="$(curl ${GITHUB_TOKEN:+" -u \":$GITHUB_TOKEN\""} -s "https://api.github.com/repos/$OWNER/$REPO/releases" | jq -r 'map(select(.prerelease == false)) | .[0].tag_name')"
+
VERSION="$(echo "$REVISION" | cut -c2-)"
fi
rm -f gemset.nix version.nix source.nix
-
TARGET_DIR="$PWD"
-
+
cd "$(dirname "${BASH_SOURCE[0]}")" || exit 1
WORK_DIR=$(mktemp -d)
···
# This file was generated by pkgs.mastodon.updateScript.
{ fetchFromGitHub, applyPatches }: let
src = fetchFromGitHub {
-
owner = "mastodon";
-
repo = "mastodon";
+
owner = "$OWNER";
+
repo = "$REPO";
rev = "$REVISION";
hash = "$HASH";
};
···
echo "Creating gemset.nix"
bundix --lockfile="$SOURCE_DIR/Gemfile.lock" --gemfile="$SOURCE_DIR/Gemfile"
-
echo "" >> "$TARGET_DIR/gemset.nix" # Create trailing newline to please EditorConfig checks
+
echo "" >> gemset.nix # Create trailing newline to please EditorConfig checks
+2 -2
pkgs/servers/nosql/apache-jena/binary.nix
···
stdenv.mkDerivation rec {
pname = "apache-jena";
-
version = "4.8.0";
+
version = "4.9.0";
src = fetchurl {
url = "mirror://apache/jena/binaries/apache-jena-${version}.tar.gz";
-
hash = "sha256-kAbhH0E2C1ToxDQgFUqWxvknCeFZbtqFhOmiSJ//ciU=";
+
hash = "sha256-kUsEdEKwYjyM5G8YKTt90fWzX21hiulRj3W5jK45Keg=";
};
nativeBuildInputs = [
makeWrapper
+18 -4
pkgs/servers/nosql/apache-jena/fuseki-binary.nix
···
-
{ lib, stdenv, fetchurl, java, makeWrapper }:
+
{ lib
+
, stdenv
+
, fetchurl
+
, java
+
, coreutils
+
, which
+
, makeWrapper
+
# For the test
+
, pkgs
+
}:
stdenv.mkDerivation rec {
pname = "apache-jena-fuseki";
-
version = "4.8.0";
+
version = "4.9.0";
src = fetchurl {
url = "mirror://apache/jena/binaries/apache-jena-fuseki-${version}.tar.gz";
-
hash = "sha256-rJCY8vG1vfEGGA0gsIqNFXKl75O2Zp4zUIWSDfplpVE=";
+
hash = "sha256-t25Q0lb+ecR12cDD1p6eZnzLxW0kZpPOFGvo5YK7AlI=";
};
nativeBuildInputs = [
makeWrapper
···
ln -s "$out"/{fuseki-backup,fuseki-server,fuseki} "$out/bin"
for i in "$out"/bin/*; do
wrapProgram "$i" \
-
--prefix "PATH" : "${java}/bin/" \
+
--prefix "PATH" : "${java}/bin/:${coreutils}/bin:${which}/bin" \
--set-default "FUSEKI_HOME" "$out" \
;
done
'';
+
passthru = {
+
tests = {
+
basic-test = pkgs.callPackage ./fuseki-test.nix { };
+
};
+
};
meta = with lib; {
description = "SPARQL server";
license = licenses.asl20;
+18
pkgs/servers/nosql/apache-jena/fuseki-test.nix
···
+
{ lib, runCommandNoCC, apache-jena-fuseki, curl }:
+
runCommandNoCC "fuseki-test-${apache-jena-fuseki.name}"
+
{ nativeBuildInputs = [ curl apache-jena-fuseki ]; } ''
+
export FUSEKI_BASE="$PWD/fuseki-base"
+
mkdir -p "$FUSEKI_BASE/db"
+
FUSEKI_ARGS="--update --loc=$FUSEKI_BASE/db /dataset" fuseki start
+
fuseki status
+
for i in $(seq 120); do
+
if curl http://127.0.0.1:3030/dataset/data; then
+
break;
+
fi
+
sleep 1
+
done
+
curl -d 'update=insert+data+{+<test://subject>+<test://predicate>+<test://object>+}' http://127.0.0.1:3030/dataset/update > /dev/null
+
curl http://127.0.0.1:3030/dataset/data | grep -C999 'test://predicate'
+
curl -d 'query=select+?s+?p+?o+where+{+?s+?p+?o+.+}' http://127.0.0.1:3030/dataset/query | grep -C999 'test://predicate'
+
touch $out
+
''
+1 -4
pkgs/stdenv/adapters.nix
···
"--disable-shared" # brrr...
];
}));
-
} // lib.optionalAttrs (stdenv0.hostPlatform.libc == "libc") {
+
} // lib.optionalAttrs (stdenv0.hostPlatform.libc == "glibc") {
extraBuildInputs = (old.extraBuildInputs or []) ++ [
pkgs.glibc.static
];
···
# Apple does not provide a static version of libSystem or crt0.o
# So we can’t build static binaries without extensive hacks.
++ lib.optional (!stdenv.hostPlatform.isDarwin) makeStaticBinaries
-
-
# Glibc doesn’t come with static runtimes by default.
-
# ++ lib.optional (stdenv.hostPlatform.libc == "glibc") ((lib.flip overrideInStdenv) [ self.glibc.static ])
);
+1 -1
pkgs/tools/security/metasploit/Gemfile
···
# frozen_string_literal: true
source "https://rubygems.org"
-
gem "metasploit-framework", git: "https://github.com/rapid7/metasploit-framework", ref: "refs/tags/6.3.25"
+
gem "metasploit-framework", git: "https://github.com/rapid7/metasploit-framework", ref: "refs/tags/6.3.26"
+9 -9
pkgs/tools/security/metasploit/Gemfile.lock
···
GIT
remote: https://github.com/rapid7/metasploit-framework
-
revision: ba44d1810c38a63f46b3c1fb9290de4a384b802d
-
ref: refs/tags/6.3.25
+
revision: dd1f90dd6fd267d8430d8e0299ebcfe6a85327cf
+
ref: refs/tags/6.3.26
specs:
-
metasploit-framework (6.3.25)
+
metasploit-framework (6.3.26)
actionpack (~> 7.0)
activerecord (~> 7.0)
activesupport (~> 7.0)
···
arel-helpers (2.14.0)
activerecord (>= 3.1.0, < 8)
aws-eventstream (1.2.0)
-
aws-partitions (1.785.0)
+
aws-partitions (1.790.0)
aws-sdk-core (3.178.0)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.5)
jmespath (~> 1, >= 1.6.1)
-
aws-sdk-ec2 (1.389.0)
+
aws-sdk-ec2 (1.392.0)
aws-sdk-core (~> 3, >= 3.177.0)
aws-sigv4 (~> 1.1)
-
aws-sdk-iam (1.85.0)
+
aws-sdk-iam (1.86.0)
aws-sdk-core (~> 3, >= 3.177.0)
aws-sigv4 (~> 1.1)
aws-sdk-kms (1.71.0)
aws-sdk-core (~> 3, >= 3.177.0)
aws-sigv4 (~> 1.1)
-
aws-sdk-s3 (1.129.0)
+
aws-sdk-s3 (1.131.0)
aws-sdk-core (~> 3, >= 3.177.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.6)
···
i18n (1.14.1)
concurrent-ruby (~> 1.0)
io-console (0.6.0)
-
irb (1.7.3)
+
irb (1.7.4)
reline (>= 0.3.6)
jmespath (1.6.2)
jsobfu (0.4.2)
···
webrick
metasploit_payloads-mettle (1.0.20)
method_source (1.0.0)
-
mini_portile2 (2.8.2)
+
mini_portile2 (2.8.4)
minitest (5.18.1)
mqtt (0.6.0)
msgpack (1.6.1)
+2 -2
pkgs/tools/security/metasploit/default.nix
···
};
in stdenv.mkDerivation rec {
pname = "metasploit-framework";
-
version = "6.3.25";
+
version = "6.3.26";
src = fetchFromGitHub {
owner = "rapid7";
repo = "metasploit-framework";
rev = version;
-
sha256 = "sha256-ezAlfG9ZDJ1QowwNUCpkHkjxV2qKITE/qftN2sWq6CE=";
+
sha256 = "sha256-GSf+GE4LeZxmhTskiwWjWf9rc6K4wg357MuK5cbLuMs=";
};
nativeBuildInputs = [ makeWrapper ];
+15 -15
pkgs/tools/security/metasploit/gemset.nix
···
platforms = [];
source = {
remotes = ["https://rubygems.org"];
-
sha256 = "05m0c3h1z0jhaqiciil55fshrjvc725cf1lc0g933pf98vqflb0r";
+
sha256 = "1mjzb10zyx78hnnz6j4bjv3awpgajfi0nmavrhy9x1qsf7yc9bjd";
type = "gem";
};
-
version = "1.785.0";
+
version = "1.790.0";
};
aws-sdk-core = {
groups = ["default"];
···
platforms = [];
source = {
remotes = ["https://rubygems.org"];
-
sha256 = "19pfwc0884g9afjh18q76snr9ldnihksmagf36yiqchnvvk956lj";
+
sha256 = "15vb0gn23xig6alcxh487r0jl5cdxm45b6zihh3wscvfzwqq0n5n";
type = "gem";
};
-
version = "1.389.0";
+
version = "1.392.0";
};
aws-sdk-iam = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
-
sha256 = "12hk0ylwjc6jq4qvw08v27ggh9pgfyi1j24jjb0lxb1p21m8ljpi";
+
sha256 = "02bp18pi29zncznkzkjzlg5j1cl99q41xvw0z5qx9q55mcwaj7i8";
type = "gem";
};
-
version = "1.85.0";
+
version = "1.86.0";
};
aws-sdk-kms = {
groups = ["default"];
···
platforms = [];
source = {
remotes = ["https://rubygems.org"];
-
sha256 = "06hgrc39ngs8nis2f85z5gg4ihskk9x3xv6vamc4wx927nsymf42";
+
sha256 = "1855m1v6lh9rji543nvk0fjn98ma0q2978zc4f5y76qsibl7fg6c";
type = "gem";
};
-
version = "1.129.0";
+
version = "1.131.0";
};
aws-sdk-ssm = {
groups = ["default"];
···
platforms = [];
source = {
remotes = ["https://rubygems.org"];
-
sha256 = "0dhwvflcssva4s7ad4sddr2zra8723l2hm1px2rg63ljnh0bgvr3";
+
sha256 = "158ca10kj3qqnql5g8f1g2arsnhgdl79mg74manpf8ldkwjjn3n8";
type = "gem";
};
-
version = "1.7.3";
+
version = "1.7.4";
};
jmespath = {
groups = ["default"];
···
platforms = [];
source = {
fetchSubmodules = false;
-
rev = "ba44d1810c38a63f46b3c1fb9290de4a384b802d";
-
sha256 = "08g8mb2xlkgvm4zk28cad9bz2j0ychm5038cld89s32rdxy2ac3v";
+
rev = "dd1f90dd6fd267d8430d8e0299ebcfe6a85327cf";
+
sha256 = "1jxqrg3fb2nbxkwhvhmql9rnpzsrlc2qn91vhmk9qy8b9qcgw9qr";
type = "git";
url = "https://github.com/rapid7/metasploit-framework";
};
-
version = "6.3.25";
+
version = "6.3.26";
};
metasploit-model = {
groups = ["default"];
···
platforms = [];
source = {
remotes = ["https://rubygems.org"];
-
sha256 = "0z7f38iq37h376n9xbl4gajdrnwzq284c9v1py4imw3gri2d5cj6";
+
sha256 = "02mj8mpd6ck5gpcnsimx5brzggw5h5mmmpq2djdypfq16wcw82qq";
type = "gem";
};
-
version = "2.8.2";
+
version = "2.8.4";
};
minitest = {
groups = ["default"];
+2
pkgs/top-level/linux-kernels.nix
···
evdi = callPackage ../os-specific/linux/evdi { };
+
fanout = callPackage ../os-specific/linux/fanout { };
+
fwts-efi-runtime = callPackage ../os-specific/linux/fwts/module.nix { };
gcadapter-oc-kmod = callPackage ../os-specific/linux/gcadapter-oc-kmod { };
+4
pkgs/top-level/python-packages.nix
···
google-cloud-appengine-logging = callPackage ../development/python-modules/google-cloud-appengine-logging { };
+
google-cloud-artifact-registry = callPackage ../development/python-modules/google-cloud-artifact-registry { };
+
google-cloud-asset = callPackage ../development/python-modules/google-cloud-asset { };
google-cloud-audit-log = callPackage ../development/python-modules/google-cloud-audit-log { };
···
skytemple-ssb-debugger = callPackage ../development/python-modules/skytemple-ssb-debugger { };
+
+
slack-bolt = callPackage ../development/python-modules/slack-bolt { };
slack-sdk = callPackage ../development/python-modules/slack-sdk { };