Merge master into staging-next

This commit is contained in:
github-actions[bot] 2023-07-22 00:02:13 +00:00 committed by GitHub
commit c05c2c2f5c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
34 changed files with 669 additions and 414 deletions

View File

@ -6047,6 +6047,9 @@
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";

View File

@ -7,25 +7,27 @@ let
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
@ -54,10 +56,10 @@ let
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
@ -99,287 +101,282 @@ in {
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.
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, ... }: {
settings = mkOption {
type = types.submodule {
freeformType = settingsFormat.type;
options = {
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 = [];
# global options
options = mkOption {
default = {};
description = mdDoc ''
The devices this folder should be shared with. Each device must
be defined in the [devices](#opt-services.syncthing.devices) option.
The options element contains all other global configuration options
'';
};
versioning = mkOption {
default = null;
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>.
'';
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 {
type = types.submodule ({ name, ... }: {
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>.
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.
'';
};
fsPath = mkOption {
default = "";
type = either str path;
description = mdDoc ''
Path to the versioning folder.
See <https://docs.syncthing.net/users/versioning.html>.
localAnnouncePort = mkOption {
type = types.nullOr types.int;
default = null;
description = lib.mdDoc ''
The port on which to listen and send IPv4 broadcast announcements to.
'';
};
params = mkOption {
type = attrsOf (either str path);
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>.
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.
'';
};
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.
'';
};
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.
'';
};
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).
'';
};
};
});
};
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;
# device settings
devices = mkOption {
default = {};
description = mdDoc ''
Whether to skip deleting files that are deleted by peers.
See <https://docs.syncthing.net/advanced/folder-ignoredelete.html>.
'';
};
};
}));
};
Peers/devices which Syncthing should communicate with.
extraOptions = mkOption {
type = types.addCheck (pkgs.formats.json {}).type isAttrs;
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>.
'';
};
};
}));
};
# folder settings
folders = mkOption {
default = {};
description = mdDoc ''
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 ''
{
"/home/user/sync" = {
id = "syncme";
devices = [ "bigbox" ];
};
}
'';
type = types.attrsOf (types.submodule ({ name, ... }: {
freeformType = settingsFormat.type;
options = {
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 devices this folder should be shared with. Each device must
be defined in the [devices](#opt-services.syncthing.settings.devices) option.
'';
};
versioning = mkOption {
default = null;
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>.
'';
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>.
'';
};
};
});
};
copyOwnershipFromParent = mkOption {
type = types.bool;
default = false;
description = mdDoc ''
On Unix systems, tries to copy file/folder ownership from the parent directory (the directory its located in).
Requires running Syncthing as a privileged user, or granting it additional capabilities (e.g. CAP_CHOWN on Linux).
'';
};
};
}));
};
};
};
default = {};
description = mdDoc ''
Extra configuration options for Syncthing.
@ -530,6 +527,10 @@ in {
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"];
@ -615,9 +616,7 @@ in {
];
};
};
syncthing-init = mkIf (
cfg.devices != {} || cfg.folders != {} || cfg.extraOptions != {}
) {
syncthing-init = mkIf (cleanedConfig != {}) {
description = "Syncthing configuration updater";
requisite = [ "syncthing.service" ];
after = [ "syncthing.service" ];

View File

@ -12,7 +12,7 @@ in
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" ];
};

View File

@ -728,6 +728,7 @@ in {
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 {};

View File

@ -10,14 +10,14 @@ in {
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";
};
};

View File

@ -0,0 +1,18 @@
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;}'")
'';
})

View File

@ -1,5 +1,6 @@
{ lib, stdenv
, fetchFromGitLab
, fetchpatch
, pkg-config
, cmake
, gettext
@ -24,15 +25,25 @@
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
@ -72,7 +83,7 @@ stdenv.mkDerivation rec {
'';
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;

View File

@ -91,11 +91,11 @@ in
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;

View File

@ -1,19 +1,19 @@
{ 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 {
@ -25,21 +25,16 @@ let
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
@ -48,11 +43,20 @@ stdenv.mkDerivation rec {
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*
'';
@ -110,8 +114,8 @@ stdenv.mkDerivation rec {
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" ];
};
}

View File

@ -1,5 +1,6 @@
{ lib
, fetchFromGitHub
, fetchpatch
, buildGoModule
, testers
, seaweedfs
@ -7,16 +8,26 @@
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" ];

View File

@ -4,7 +4,9 @@
, alsa-lib
, cmake
, ffmpeg
, fribidi
, game-music-emu
, libXdmcp
, libXv
, libass
, libcddb
@ -12,6 +14,7 @@
, libpulseaudio
, libsidplayfp
, libva
, libxcb
, pkg-config
, qtbase
, qttools
@ -23,14 +26,14 @@
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 = [
@ -42,7 +45,9 @@ stdenv.mkDerivation (finalAttrs: {
buildInputs = [
alsa-lib
ffmpeg
fribidi
game-music-emu
libXdmcp
libXv
libass
libcddb
@ -50,6 +55,7 @@ stdenv.mkDerivation (finalAttrs: {
libpulseaudio
libsidplayfp
libva
libxcb
qtbase
qttools
taglib

View File

@ -4,21 +4,24 @@
, 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
@ -27,7 +30,10 @@ rustPlatform.buildRustPackage {
buildInputs = [
gtk-layer-shell
libevdev
libinput
libpulseaudio
udev
];
meta = with lib; {

View File

@ -0,0 +1,41 @@
{ 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 ];
};
}

View File

@ -0,0 +1,81 @@
{ 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 ];
};
}

View File

@ -5,7 +5,6 @@
, boto3
, buildPythonPackage
, codecov
, databases
, fetchFromGitHub
, flake8
, flask-sockets
@ -21,7 +20,7 @@
buildPythonPackage rec {
pname = "slack-sdk";
version = "3.20.2";
version = "3.21.3";
format = "setuptools";
disabled = pythonOlder "3.6";
@ -30,7 +29,7 @@ buildPythonPackage rec {
owner = "slackapi";
repo = "python-slack-sdk";
rev = "refs/tags/v${version}";
hash = "sha256-2MPXV+rVXZYMTZe11T8x8GKQmHZwUlkwarCkheVkERo=";
hash = "sha256-begpT/DaDqOi8HZE10FCuIIv18KSU/i5G/Z5DXKUT7Y=";
};
propagatedBuildInputs = [
@ -44,7 +43,6 @@ buildPythonPackage rec {
nativeCheckInputs = [
codecov
databases
flake8
flask-sockets
moto
@ -67,6 +65,7 @@ buildPythonPackage rec {
"test_start_raises_an_error_if_rtm_ws_url_is_not_returned"
"test_org_installation"
"test_interactions"
"test_issue_690_oauth_access"
];
pythonImportsCheck = [

View File

@ -2,18 +2,21 @@
, 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 ];
@ -33,6 +36,7 @@ buildPythonPackage rec {
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 ];
};

View File

@ -1,7 +1,10 @@
{ lib
, stdenv
, appdirs
, azure-containerregistry
, azure-core
, azure-identity
, azure-storage-blob
, bokeh
, boto3
, buildPythonPackage
@ -11,6 +14,7 @@
, flask
, git
, gitpython
, google-cloud-artifact-registry
, google-cloud-compute
, google-cloud-storage
, hypothesis
@ -51,7 +55,7 @@
buildPythonPackage rec {
pname = "wandb";
version = "0.15.3";
version = "0.15.5";
format = "setuptools";
disabled = pythonOlder "3.6";
@ -60,7 +64,7 @@ buildPythonPackage rec {
owner = pname;
repo = pname;
rev = "refs/tags/v${version}";
hash = "sha256-i1Lo6xbkCgRTJwRjk2bXkZ5a/JRUCzFzmEuPQlPvZf4=";
hash = "sha256-etS1NkkskA5Lg/38QIdzCVWgqZpjpT2LwaWF1k7WVXs=";
};
patches = [
@ -94,10 +98,14 @@ buildPythonPackage rec {
];
nativeCheckInputs = [
azure-containerregistry
azure-core
azure-identity
azure-storage-blob
bokeh
boto3
flask
google-cloud-artifact-registry
google-cloud-compute
google-cloud-storage
hypothesis
@ -213,17 +221,17 @@ buildPythonPackage rec {
"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"

View File

@ -6,15 +6,20 @@
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
@ -24,6 +29,6 @@ rustPlatform.buildRustPackage rec {
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 ];
};
}

View File

@ -2,14 +2,14 @@
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 = [
@ -27,11 +27,11 @@ buildGoModule rec {
$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 ];
};
}

View File

@ -0,0 +1,37 @@
{ 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;
};
}

View File

@ -0,0 +1,13 @@
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>

View File

@ -156,7 +156,8 @@ stdenv.mkDerivation rec {
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; {

View File

@ -1,29 +0,0 @@
{ 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}
''

View File

@ -1,4 +1,5 @@
#!/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
@ -41,22 +42,22 @@ while [[ $# -gt 0 ]]; do
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)
@ -85,8 +86,8 @@ cat > source.nix << EOF
# 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";
};
@ -99,4 +100,4 @@ SOURCE_DIR="$(nix-build --no-out-link -E '(import <nixpkgs> {}).callPackage ./so
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

View File

@ -2,10 +2,10 @@
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

View File

@ -1,11 +1,20 @@
{ 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
@ -16,11 +25,16 @@ stdenv.mkDerivation rec {
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;

View File

@ -0,0 +1,18 @@
{ 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
''

View File

@ -67,7 +67,7 @@ rec {
"--disable-shared" # brrr...
];
}));
} // lib.optionalAttrs (stdenv0.hostPlatform.libc == "libc") {
} // lib.optionalAttrs (stdenv0.hostPlatform.libc == "glibc") {
extraBuildInputs = (old.extraBuildInputs or []) ++ [
pkgs.glibc.static
];
@ -121,9 +121,6 @@ rec {
# Apple does not provide a static version of libSystem or crt0.o
# So we cant build static binaries without extensive hacks.
++ lib.optional (!stdenv.hostPlatform.isDarwin) makeStaticBinaries
# Glibc doesnt come with static runtimes by default.
# ++ lib.optional (stdenv.hostPlatform.libc == "glibc") ((lib.flip overrideInStdenv) [ self.glibc.static ])
);

View File

@ -1,4 +1,4 @@
# 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"

View File

@ -1,9 +1,9 @@
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)
@ -131,22 +131,22 @@ GEM
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)
@ -212,7 +212,7 @@ GEM
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)
@ -258,7 +258,7 @@ GEM
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)

View File

@ -15,13 +15,13 @@ let
};
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 ];

View File

@ -104,10 +104,10 @@
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"];
@ -124,20 +124,20 @@
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"];
@ -154,10 +154,10 @@
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"];
@ -534,10 +534,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0dhwvflcssva4s7ad4sddr2zra8723l2hm1px2rg63ljnh0bgvr3";
sha256 = "158ca10kj3qqnql5g8f1g2arsnhgdl79mg74manpf8ldkwjjn3n8";
type = "gem";
};
version = "1.7.3";
version = "1.7.4";
};
jmespath = {
groups = ["default"];
@ -634,12 +634,12 @@
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"];
@ -696,10 +696,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0z7f38iq37h376n9xbl4gajdrnwzq284c9v1py4imw3gri2d5cj6";
sha256 = "02mj8mpd6ck5gpcnsimx5brzggw5h5mmmpq2djdypfq16wcw82qq";
type = "gem";
};
version = "2.8.2";
version = "2.8.4";
};
minitest = {
groups = ["default"];

View File

@ -349,6 +349,8 @@ in {
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 { };

View File

@ -4281,6 +4281,8 @@ self: super: with self; {
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 { };
@ -11589,6 +11591,8 @@ self: super: with self; {
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 { };
slackclient = callPackage ../development/python-modules/slackclient { };