Merge staging-next into staging

authored by github-actions[bot] and committed by GitHub fb357a06 08f03671

+654 -399
+3
maintainers/maintainer-list.nix
··· 6047 github = "gigglesquid"; 6048 githubId = 3685154; 6049 name = "Jack connors"; 6050 }; 6051 gila = { 6052 email = "jeffry.molanus@gmail.com";
··· 6047 github = "gigglesquid"; 6048 githubId = 3685154; 6049 name = "Jack connors"; 6050 + keys = [{ 6051 + fingerprint = "21DF 8034 B212 EDFF 9F19 9C19 F65B 7583 7ABF D019"; 6052 + }]; 6053 }; 6054 gila = { 6055 email = "jeffry.molanus@gmail.com";
+256 -257
nixos/modules/services/networking/syncthing.nix
··· 7 opt = options.services.syncthing; 8 defaultUser = "syncthing"; 9 defaultGroup = defaultUser; 10 11 - devices = mapAttrsToList (name: device: { 12 deviceID = device.id; 13 - inherit (device) name addresses introducer autoAcceptFolders; 14 - }) cfg.devices; 15 16 - folders = mapAttrsToList ( _: folder: { 17 - inherit (folder) path id label type; 18 - devices = map (device: { deviceId = cfg.devices.${device}.id; }) folder.devices; 19 - rescanIntervalS = folder.rescanInterval; 20 - fsWatcherEnabled = folder.watch; 21 - fsWatcherDelayS = folder.watchDelay; 22 - ignorePerms = folder.ignorePerms; 23 - ignoreDelete = folder.ignoreDelete; 24 - versioning = folder.versioning; 25 - }) (filterAttrs ( 26 - _: folder: 27 folder.enable 28 - ) cfg.folders); 29 30 updateConfig = pkgs.writers.writeDash "merge-syncthing-config" '' 31 set -efu ··· 54 old_cfg=$(curl ${cfg.guiAddress}/rest/config) 55 56 # generate the new config by merging with the NixOS config options 57 - new_cfg=$(printf '%s\n' "$old_cfg" | ${pkgs.jq}/bin/jq -c '. * { 58 - "devices": ('${escapeShellArg (builtins.toJSON devices)}'${optionalString (cfg.devices == {} || ! cfg.overrideDevices) " + .devices"}), 59 - "folders": ('${escapeShellArg (builtins.toJSON folders)}'${optionalString (cfg.folders == {} || ! cfg.overrideFolders) " + .folders"}) 60 - } * '${escapeShellArg (builtins.toJSON cfg.extraOptions)}) 61 62 # send the new config 63 curl -X PUT -d "$new_cfg" ${cfg.guiAddress}/rest/config ··· 99 default = true; 100 description = mdDoc '' 101 Whether to delete the devices which are not configured via the 102 - [devices](#opt-services.syncthing.devices) option. 103 If set to `false`, devices added via the web 104 interface will persist and will have to be deleted manually. 105 ''; 106 }; 107 108 - devices = mkOption { 109 - default = {}; 110 - description = mdDoc '' 111 - Peers/devices which Syncthing should communicate with. 112 - 113 - Note that you can still add devices manually, but those changes 114 - will be reverted on restart if [overrideDevices](#opt-services.syncthing.overrideDevices) 115 - is enabled. 116 - ''; 117 - example = { 118 - bigbox = { 119 - id = "7CFNTQM-IMTJBHJ-3UWRDIU-ZGQJFR6-VCXZ3NB-XUH3KZO-N52ITXR-LAIYUAU"; 120 - addresses = [ "tcp://192.168.0.10:51820" ]; 121 - }; 122 - }; 123 - type = types.attrsOf (types.submodule ({ name, ... }: { 124 - options = { 125 - 126 - name = mkOption { 127 - type = types.str; 128 - default = name; 129 - description = lib.mdDoc '' 130 - The name of the device. 131 - ''; 132 - }; 133 - 134 - addresses = mkOption { 135 - type = types.listOf types.str; 136 - default = []; 137 - description = lib.mdDoc '' 138 - The addresses used to connect to the device. 139 - If this is left empty, dynamic configuration is attempted. 140 - ''; 141 - }; 142 - 143 - id = mkOption { 144 - type = types.str; 145 - description = mdDoc '' 146 - The device ID. See <https://docs.syncthing.net/dev/device-ids.html>. 147 - ''; 148 - }; 149 - 150 - introducer = mkOption { 151 - type = types.bool; 152 - default = false; 153 - description = mdDoc '' 154 - Whether the device should act as an introducer and be allowed 155 - to add folders on this computer. 156 - See <https://docs.syncthing.net/users/introducer.html>. 157 - ''; 158 - }; 159 - 160 - autoAcceptFolders = mkOption { 161 - type = types.bool; 162 - default = false; 163 - description = mdDoc '' 164 - Automatically create or share folders that this device advertises at the default path. 165 - See <https://docs.syncthing.net/users/config.html?highlight=autoaccept#config-file-format>. 166 - ''; 167 - }; 168 - 169 - }; 170 - })); 171 - }; 172 - 173 overrideFolders = mkOption { 174 type = types.bool; 175 default = true; 176 description = mdDoc '' 177 Whether to delete the folders which are not configured via the 178 - [folders](#opt-services.syncthing.folders) option. 179 If set to `false`, folders added via the web 180 interface will persist and will have to be deleted manually. 181 ''; 182 }; 183 184 - folders = mkOption { 185 - default = {}; 186 - description = mdDoc '' 187 - Folders which should be shared by Syncthing. 188 189 - Note that you can still add folders manually, but those changes 190 - will be reverted on restart if [overrideFolders](#opt-services.syncthing.overrideFolders) 191 - is enabled. 192 - ''; 193 - example = literalExpression '' 194 - { 195 - "/home/user/sync" = { 196 - id = "syncme"; 197 - devices = [ "bigbox" ]; 198 - }; 199 - } 200 - ''; 201 - type = types.attrsOf (types.submodule ({ name, ... }: { 202 - options = { 203 204 - enable = mkOption { 205 - type = types.bool; 206 - default = true; 207 - description = lib.mdDoc '' 208 - Whether to share this folder. 209 - This option is useful when you want to define all folders 210 - in one place, but not every machine should share all folders. 211 - ''; 212 - }; 213 214 - path = mkOption { 215 - # TODO for release 23.05: allow relative paths again and set 216 - # working directory to cfg.dataDir 217 - type = types.str // { 218 - check = x: types.str.check x && (substring 0 1 x == "/" || substring 0 2 x == "~/"); 219 - description = types.str.description + " starting with / or ~/"; 220 - }; 221 - default = name; 222 - description = lib.mdDoc '' 223 - The path to the folder which should be shared. 224 - Only absolute paths (starting with `/`) and paths relative to 225 - the [user](#opt-services.syncthing.user)'s home directory 226 - (starting with `~/`) are allowed. 227 - ''; 228 - }; 229 230 - id = mkOption { 231 - type = types.str; 232 - default = name; 233 - description = lib.mdDoc '' 234 - The ID of the folder. Must be the same on all devices. 235 - ''; 236 - }; 237 238 - label = mkOption { 239 - type = types.str; 240 - default = name; 241 - description = lib.mdDoc '' 242 - The label of the folder. 243 - ''; 244 }; 245 246 devices = mkOption { 247 - type = types.listOf types.str; 248 - default = []; 249 description = mdDoc '' 250 - The devices this folder should be shared with. Each device must 251 - be defined in the [devices](#opt-services.syncthing.devices) option. 252 ''; 253 }; 254 255 - versioning = mkOption { 256 - default = null; 257 description = mdDoc '' 258 - How to keep changed/deleted files with Syncthing. 259 - There are 4 different types of versioning with different parameters. 260 - See <https://docs.syncthing.net/users/versioning.html>. 261 ''; 262 example = literalExpression '' 263 - [ 264 - { 265 - versioning = { 266 - type = "simple"; 267 - params.keep = "10"; 268 - }; 269 - } 270 - { 271 - versioning = { 272 - type = "trashcan"; 273 - params.cleanoutDays = "1000"; 274 - }; 275 - } 276 - { 277 - versioning = { 278 - type = "staggered"; 279 - fsPath = "/syncthing/backup"; 280 - params = { 281 - cleanInterval = "3600"; 282 - maxAge = "31536000"; 283 - }; 284 - }; 285 - } 286 - { 287 - versioning = { 288 - type = "external"; 289 - params.versionsPath = pkgs.writers.writeBash "backup" ''' 290 - folderpath="$1" 291 - filepath="$2" 292 - rm -rf "$folderpath/$filepath" 293 - '''; 294 - }; 295 - } 296 - ] 297 ''; 298 - type = with types; nullOr (submodule { 299 options = { 300 - type = mkOption { 301 - type = enum [ "external" "simple" "staggered" "trashcan" ]; 302 description = mdDoc '' 303 - The type of versioning. 304 - See <https://docs.syncthing.net/users/versioning.html>. 305 ''; 306 }; 307 - fsPath = mkOption { 308 - default = ""; 309 - type = either str path; 310 description = mdDoc '' 311 - Path to the versioning folder. 312 See <https://docs.syncthing.net/users/versioning.html>. 313 ''; 314 }; 315 - params = mkOption { 316 - type = attrsOf (either str path); 317 description = mdDoc '' 318 - The parameters for versioning. Structure depends on 319 - [versioning.type](#opt-services.syncthing.folders._name_.versioning.type). 320 - See <https://docs.syncthing.net/users/versioning.html>. 321 ''; 322 }; 323 }; 324 - }); 325 - }; 326 - 327 - rescanInterval = mkOption { 328 - type = types.int; 329 - default = 3600; 330 - description = lib.mdDoc '' 331 - How often the folder should be rescanned for changes. 332 - ''; 333 - }; 334 - 335 - type = mkOption { 336 - type = types.enum [ "sendreceive" "sendonly" "receiveonly" "receiveencrypted" ]; 337 - default = "sendreceive"; 338 - description = lib.mdDoc '' 339 - Whether to only send changes for this folder, only receive them 340 - or both. `receiveencrypted` can be used for untrusted devices. See 341 - <https://docs.syncthing.net/users/untrusted.html> for reference. 342 - ''; 343 - }; 344 - 345 - watch = mkOption { 346 - type = types.bool; 347 - default = true; 348 - description = lib.mdDoc '' 349 - Whether the folder should be watched for changes by inotify. 350 - ''; 351 - }; 352 - 353 - watchDelay = mkOption { 354 - type = types.int; 355 - default = 10; 356 - description = lib.mdDoc '' 357 - The delay after an inotify event is triggered. 358 - ''; 359 - }; 360 - 361 - ignorePerms = mkOption { 362 - type = types.bool; 363 - default = true; 364 - description = lib.mdDoc '' 365 - Whether to ignore permission changes. 366 - ''; 367 }; 368 369 - ignoreDelete = mkOption { 370 - type = types.bool; 371 - default = false; 372 - description = mdDoc '' 373 - Whether to skip deleting files that are deleted by peers. 374 - See <https://docs.syncthing.net/advanced/folder-ignoredelete.html>. 375 - ''; 376 - }; 377 }; 378 - })); 379 - }; 380 - 381 - extraOptions = mkOption { 382 - type = types.addCheck (pkgs.formats.json {}).type isAttrs; 383 default = {}; 384 description = mdDoc '' 385 Extra configuration options for Syncthing. ··· 530 This option was removed because Syncthing now has the inotify functionality included under the name "fswatcher". 531 It can be enabled on a per-folder basis through the web interface. 532 '') 533 ] ++ map (o: 534 mkRenamedOptionModule [ "services" "syncthing" "declarative" o ] [ "services" "syncthing" o ] 535 ) [ "cert" "key" "devices" "folders" "overrideDevices" "overrideFolders" "extraOptions"]; ··· 615 ]; 616 }; 617 }; 618 - syncthing-init = mkIf ( 619 - cfg.devices != {} || cfg.folders != {} || cfg.extraOptions != {} 620 - ) { 621 description = "Syncthing configuration updater"; 622 requisite = [ "syncthing.service" ]; 623 after = [ "syncthing.service" ];
··· 7 opt = options.services.syncthing; 8 defaultUser = "syncthing"; 9 defaultGroup = defaultUser; 10 + settingsFormat = pkgs.formats.json { }; 11 + cleanedConfig = converge (filterAttrsRecursive (_: v: v != null && v != {})) cfg.settings; 12 13 + devices = mapAttrsToList (_: device: device // { 14 deviceID = device.id; 15 + }) cfg.settings.devices; 16 17 + folders = mapAttrsToList (_: folder: folder // 18 + throwIf (folder?rescanInterval || folder?watch || folder?watchDelay) '' 19 + The options services.syncthing.settings.folders.<name>.{rescanInterval,watch,watchDelay} 20 + were removed. Please use, respectively, {rescanIntervalS,fsWatcherEnabled,fsWatcherDelayS} instead. 21 + '' { 22 + devices = map (device: 23 + if builtins.isString device then 24 + { deviceId = cfg.settings.devices.${device}.id; } 25 + else 26 + device 27 + ) folder.devices; 28 + }) (filterAttrs (_: folder: 29 folder.enable 30 + ) cfg.settings.folders); 31 32 updateConfig = pkgs.writers.writeDash "merge-syncthing-config" '' 33 set -efu ··· 56 old_cfg=$(curl ${cfg.guiAddress}/rest/config) 57 58 # generate the new config by merging with the NixOS config options 59 + new_cfg=$(printf '%s\n' "$old_cfg" | ${pkgs.jq}/bin/jq -c ${escapeShellArg ''. * ${builtins.toJSON cleanedConfig} * { 60 + "devices": ('${escapeShellArg (builtins.toJSON devices)}'${optionalString (cfg.settings.devices == {} || ! cfg.overrideDevices) " + .devices"}), 61 + "folders": ('${escapeShellArg (builtins.toJSON folders)}'${optionalString (cfg.settings.folders == {} || ! cfg.overrideFolders) " + .folders"}) 62 + }''}) 63 64 # send the new config 65 curl -X PUT -d "$new_cfg" ${cfg.guiAddress}/rest/config ··· 101 default = true; 102 description = mdDoc '' 103 Whether to delete the devices which are not configured via the 104 + [devices](#opt-services.syncthing.settings.devices) option. 105 If set to `false`, devices added via the web 106 interface will persist and will have to be deleted manually. 107 ''; 108 }; 109 110 overrideFolders = mkOption { 111 type = types.bool; 112 default = true; 113 description = mdDoc '' 114 Whether to delete the folders which are not configured via the 115 + [folders](#opt-services.syncthing.settings.folders) option. 116 If set to `false`, folders added via the web 117 interface will persist and will have to be deleted manually. 118 ''; 119 }; 120 121 + settings = mkOption { 122 + type = types.submodule { 123 + freeformType = settingsFormat.type; 124 + options = { 125 + # global options 126 + options = mkOption { 127 + default = {}; 128 + description = mdDoc '' 129 + The options element contains all other global configuration options 130 + ''; 131 + type = types.submodule ({ name, ... }: { 132 + freeformType = settingsFormat.type; 133 + options = { 134 + localAnnounceEnabled = mkOption { 135 + type = types.nullOr types.bool; 136 + default = null; 137 + description = lib.mdDoc '' 138 + Whether to send announcements to the local LAN, also use such announcements to find other devices. 139 + ''; 140 + }; 141 142 + localAnnouncePort = mkOption { 143 + type = types.nullOr types.int; 144 + default = null; 145 + description = lib.mdDoc '' 146 + The port on which to listen and send IPv4 broadcast announcements to. 147 + ''; 148 + }; 149 150 + relaysEnabled = mkOption { 151 + type = types.nullOr types.bool; 152 + default = null; 153 + description = lib.mdDoc '' 154 + When true, relays will be connected to and potentially used for device to device connections. 155 + ''; 156 + }; 157 158 + urAccepted = mkOption { 159 + type = types.nullOr types.int; 160 + default = null; 161 + description = lib.mdDoc '' 162 + Whether the user has accepted to submit anonymous usage data. 163 + The default, 0, mean the user has not made a choice, and Syncthing will ask at some point in the future. 164 + "-1" means no, a number above zero means that that version of usage reporting has been accepted. 165 + ''; 166 + }; 167 168 + limitBandwidthInLan = mkOption { 169 + type = types.nullOr types.bool; 170 + default = null; 171 + description = lib.mdDoc '' 172 + Whether to apply bandwidth limits to devices in the same broadcast domain as the local device. 173 + ''; 174 + }; 175 176 + maxFolderConcurrency = mkOption { 177 + type = types.nullOr types.int; 178 + default = null; 179 + description = lib.mdDoc '' 180 + This option controls how many folders may concurrently be in I/O-intensive operations such as syncing or scanning. 181 + The mechanism is described in detail in a [separate chapter](https://docs.syncthing.net/advanced/option-max-concurrency.html). 182 + ''; 183 + }; 184 + }; 185 + }); 186 }; 187 188 + # device settings 189 devices = mkOption { 190 + default = {}; 191 description = mdDoc '' 192 + Peers/devices which Syncthing should communicate with. 193 + 194 + Note that you can still add devices manually, but those changes 195 + will be reverted on restart if [overrideDevices](#opt-services.syncthing.overrideDevices) 196 + is enabled. 197 ''; 198 + example = { 199 + bigbox = { 200 + id = "7CFNTQM-IMTJBHJ-3UWRDIU-ZGQJFR6-VCXZ3NB-XUH3KZO-N52ITXR-LAIYUAU"; 201 + addresses = [ "tcp://192.168.0.10:51820" ]; 202 + }; 203 + }; 204 + type = types.attrsOf (types.submodule ({ name, ... }: { 205 + freeformType = settingsFormat.type; 206 + options = { 207 + 208 + name = mkOption { 209 + type = types.str; 210 + default = name; 211 + description = lib.mdDoc '' 212 + The name of the device. 213 + ''; 214 + }; 215 + 216 + id = mkOption { 217 + type = types.str; 218 + description = mdDoc '' 219 + The device ID. See <https://docs.syncthing.net/dev/device-ids.html>. 220 + ''; 221 + }; 222 + 223 + autoAcceptFolders = mkOption { 224 + type = types.bool; 225 + default = false; 226 + description = mdDoc '' 227 + Automatically create or share folders that this device advertises at the default path. 228 + See <https://docs.syncthing.net/users/config.html?highlight=autoaccept#config-file-format>. 229 + ''; 230 + }; 231 + 232 + }; 233 + })); 234 }; 235 236 + # folder settings 237 + folders = mkOption { 238 + default = {}; 239 description = mdDoc '' 240 + Folders which should be shared by Syncthing. 241 + 242 + Note that you can still add folders manually, but those changes 243 + will be reverted on restart if [overrideFolders](#opt-services.syncthing.overrideFolders) 244 + is enabled. 245 ''; 246 example = literalExpression '' 247 + { 248 + "/home/user/sync" = { 249 + id = "syncme"; 250 + devices = [ "bigbox" ]; 251 + }; 252 + } 253 ''; 254 + type = types.attrsOf (types.submodule ({ name, ... }: { 255 + freeformType = settingsFormat.type; 256 options = { 257 + 258 + enable = mkOption { 259 + type = types.bool; 260 + default = true; 261 + description = lib.mdDoc '' 262 + Whether to share this folder. 263 + This option is useful when you want to define all folders 264 + in one place, but not every machine should share all folders. 265 + ''; 266 + }; 267 + 268 + path = mkOption { 269 + # TODO for release 23.05: allow relative paths again and set 270 + # working directory to cfg.dataDir 271 + type = types.str // { 272 + check = x: types.str.check x && (substring 0 1 x == "/" || substring 0 2 x == "~/"); 273 + description = types.str.description + " starting with / or ~/"; 274 + }; 275 + default = name; 276 + description = lib.mdDoc '' 277 + The path to the folder which should be shared. 278 + Only absolute paths (starting with `/`) and paths relative to 279 + the [user](#opt-services.syncthing.user)'s home directory 280 + (starting with `~/`) are allowed. 281 + ''; 282 + }; 283 + 284 + id = mkOption { 285 + type = types.str; 286 + default = name; 287 + description = lib.mdDoc '' 288 + The ID of the folder. Must be the same on all devices. 289 + ''; 290 + }; 291 + 292 + label = mkOption { 293 + type = types.str; 294 + default = name; 295 + description = lib.mdDoc '' 296 + The label of the folder. 297 + ''; 298 + }; 299 + 300 + devices = mkOption { 301 + type = types.listOf types.str; 302 + default = []; 303 description = mdDoc '' 304 + The devices this folder should be shared with. Each device must 305 + be defined in the [devices](#opt-services.syncthing.settings.devices) option. 306 ''; 307 }; 308 + 309 + versioning = mkOption { 310 + default = null; 311 description = mdDoc '' 312 + How to keep changed/deleted files with Syncthing. 313 + There are 4 different types of versioning with different parameters. 314 See <https://docs.syncthing.net/users/versioning.html>. 315 ''; 316 + example = literalExpression '' 317 + [ 318 + { 319 + versioning = { 320 + type = "simple"; 321 + params.keep = "10"; 322 + }; 323 + } 324 + { 325 + versioning = { 326 + type = "trashcan"; 327 + params.cleanoutDays = "1000"; 328 + }; 329 + } 330 + { 331 + versioning = { 332 + type = "staggered"; 333 + fsPath = "/syncthing/backup"; 334 + params = { 335 + cleanInterval = "3600"; 336 + maxAge = "31536000"; 337 + }; 338 + }; 339 + } 340 + { 341 + versioning = { 342 + type = "external"; 343 + params.versionsPath = pkgs.writers.writeBash "backup" ''' 344 + folderpath="$1" 345 + filepath="$2" 346 + rm -rf "$folderpath/$filepath" 347 + '''; 348 + }; 349 + } 350 + ] 351 + ''; 352 + type = with types; nullOr (submodule { 353 + freeformType = settingsFormat.type; 354 + options = { 355 + type = mkOption { 356 + type = enum [ "external" "simple" "staggered" "trashcan" ]; 357 + description = mdDoc '' 358 + The type of versioning. 359 + See <https://docs.syncthing.net/users/versioning.html>. 360 + ''; 361 + }; 362 + }; 363 + }); 364 }; 365 + 366 + copyOwnershipFromParent = mkOption { 367 + type = types.bool; 368 + default = false; 369 description = mdDoc '' 370 + On Unix systems, tries to copy file/folder ownership from the parent directory (the directory it’s located in). 371 + Requires running Syncthing as a privileged user, or granting it additional capabilities (e.g. CAP_CHOWN on Linux). 372 ''; 373 }; 374 }; 375 + })); 376 }; 377 378 }; 379 + }; 380 default = {}; 381 description = mdDoc '' 382 Extra configuration options for Syncthing. ··· 527 This option was removed because Syncthing now has the inotify functionality included under the name "fswatcher". 528 It can be enabled on a per-folder basis through the web interface. 529 '') 530 + (mkRenamedOptionModule [ "services" "syncthing" "extraOptions" ] [ "services" "syncthing" "settings" ]) 531 + (mkRenamedOptionModule [ "services" "syncthing" "folders" ] [ "services" "syncthing" "settings" "folders" ]) 532 + (mkRenamedOptionModule [ "services" "syncthing" "devices" ] [ "services" "syncthing" "settings" "devices" ]) 533 + (mkRenamedOptionModule [ "services" "syncthing" "options" ] [ "services" "syncthing" "settings" "options" ]) 534 ] ++ map (o: 535 mkRenamedOptionModule [ "services" "syncthing" "declarative" o ] [ "services" "syncthing" o ] 536 ) [ "cert" "key" "devices" "folders" "overrideDevices" "overrideFolders" "extraOptions"]; ··· 616 ]; 617 }; 618 }; 619 + syncthing-init = mkIf (cleanedConfig != {}) { 620 description = "Syncthing configuration updater"; 621 requisite = [ "syncthing.service" ]; 622 after = [ "syncthing.service" ];
+1 -1
nixos/modules/services/networking/twingate.nix
··· 12 config = lib.mkIf cfg.enable { 13 systemd.packages = [ cfg.package ]; 14 systemd.services.twingate = { 15 - preStart = "cp -r -n ${cfg.package}/etc/twingate/. /etc/twingate/"; 16 wantedBy = [ "multi-user.target" ]; 17 }; 18
··· 12 config = lib.mkIf cfg.enable { 13 systemd.packages = [ cfg.package ]; 14 systemd.services.twingate = { 15 + preStart = "cp -r --update=none ${cfg.package}/etc/twingate/. /etc/twingate/"; 16 wantedBy = [ "multi-user.target" ]; 17 }; 18
+1
nixos/tests/all-tests.nix
··· 728 switchTest = handleTest ./switch-test.nix {}; 729 sympa = handleTest ./sympa.nix {}; 730 syncthing = handleTest ./syncthing.nix {}; 731 syncthing-init = handleTest ./syncthing-init.nix {}; 732 syncthing-relay = handleTest ./syncthing-relay.nix {}; 733 systemd = handleTest ./systemd.nix {};
··· 728 switchTest = handleTest ./switch-test.nix {}; 729 sympa = handleTest ./sympa.nix {}; 730 syncthing = handleTest ./syncthing.nix {}; 731 + syncthing-no-settings = handleTest ./syncthing-no-settings.nix {}; 732 syncthing-init = handleTest ./syncthing-init.nix {}; 733 syncthing-relay = handleTest ./syncthing-relay.nix {}; 734 systemd = handleTest ./systemd.nix {};
+4 -4
nixos/tests/syncthing-init.nix
··· 10 nodes.machine = { 11 services.syncthing = { 12 enable = true; 13 - devices.${testName} = { 14 id = testId; 15 }; 16 - folders.testFolder = { 17 path = "/tmp/test"; 18 - devices = [ testName ]; 19 }; 20 - extraOptions.gui.user = "guiUser"; 21 }; 22 }; 23
··· 10 nodes.machine = { 11 services.syncthing = { 12 enable = true; 13 + settings.devices.testDevice = { 14 id = testId; 15 }; 16 + settings.folders.testFolder = { 17 path = "/tmp/test"; 18 + devices = [ "testDevice" ]; 19 }; 20 + settings.gui.user = "guiUser"; 21 }; 22 }; 23
+18
nixos/tests/syncthing-no-settings.nix
···
··· 1 + import ./make-test-python.nix ({ lib, pkgs, ... }: { 2 + name = "syncthing"; 3 + meta.maintainers = with pkgs.lib.maintainers; [ chkno ]; 4 + 5 + nodes = { 6 + a = { 7 + environment.systemPackages = with pkgs; [ curl libxml2 syncthing ]; 8 + services.syncthing = { 9 + enable = true; 10 + }; 11 + }; 12 + }; 13 + # Test that indeed a syncthing-init.service systemd service is not created. 14 + # 15 + testScript = /* python */ '' 16 + a.succeed("systemctl list-unit-files | awk '$1 == \"syncthing-init.service\" {exit 1;}'") 17 + ''; 18 + })
+15 -4
pkgs/applications/misc/tint2/default.nix
··· 1 { lib, stdenv 2 , fetchFromGitLab 3 , pkg-config 4 , cmake 5 , gettext ··· 24 25 stdenv.mkDerivation rec { 26 pname = "tint2"; 27 - version = "17.0.2"; 28 29 src = fetchFromGitLab { 30 - owner = "o9000"; 31 repo = "tint2"; 32 rev = version; 33 - sha256 = "sha256-SqpAjclwu3HN07LAZgvXGzjMK6G+nYLDdl90o1+9aog="; 34 }; 35 36 nativeBuildInputs = [ 37 pkg-config 38 cmake ··· 72 ''; 73 74 meta = with lib; { 75 - homepage = "https://gitlab.com/o9000/tint2"; 76 description = "Simple panel/taskbar unintrusive and light (memory, cpu, aestetic)"; 77 license = licenses.gpl2Only; 78 platforms = platforms.linux;
··· 1 { lib, stdenv 2 , fetchFromGitLab 3 + , fetchpatch 4 , pkg-config 5 , cmake 6 , gettext ··· 25 26 stdenv.mkDerivation rec { 27 pname = "tint2"; 28 + version = "17.1.3"; 29 30 src = fetchFromGitLab { 31 + owner = "nick87720z"; 32 repo = "tint2"; 33 rev = version; 34 + hash = "sha256-9sEe/Gnj+FWLPbWBtfL1YlNNC12j7/KjQ40xdkaFJVQ="; 35 }; 36 37 + patches = [ 38 + # Fix crashes with glib >= 2.76 39 + # https://patchespromptly.com/glib2/ 40 + # https://gitlab.com/nick87720z/tint2/-/issues/4 41 + (fetchpatch { 42 + url = "https://gitlab.com/nick87720z/tint2/uploads/7de4501a4fa4fffa5ba8bb0fa3d19f78/glib.patch"; 43 + hash = "sha256-K547KYlRkVl1s2THi3ZCRuM447EFJwTqUEBjKQnV8Sc="; 44 + }) 45 + ]; 46 + 47 nativeBuildInputs = [ 48 pkg-config 49 cmake ··· 83 ''; 84 85 meta = with lib; { 86 + homepage = "https://gitlab.com/nick87720z/tint2"; 87 description = "Simple panel/taskbar unintrusive and light (memory, cpu, aestetic)"; 88 license = licenses.gpl2Only; 89 platforms = platforms.linux;
+2 -2
pkgs/applications/networking/browsers/brave/default.nix
··· 91 92 stdenv.mkDerivation rec { 93 pname = "brave"; 94 - version = "1.52.130"; 95 96 src = fetchurl { 97 url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb"; 98 - sha256 = "sha256-TKCAv1gGdAU9KDcrrREPgFjZOPNwTAfLrCh33DAf41U="; 99 }; 100 101 dontConfigure = true;
··· 91 92 stdenv.mkDerivation rec { 93 pname = "brave"; 94 + version = "1.56.9"; 95 96 src = fetchurl { 97 url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb"; 98 + sha256 = "sha256-cw41xUewYB/M6xHZhhL9nX1J9vnNGA9TFJWI/Qwdu/k="; 99 }; 100 101 dontConfigure = true;
+19 -15
pkgs/applications/networking/instant-messengers/teamspeak/client.nix
··· 1 { lib, stdenv, fetchurl, makeWrapper, makeDesktopItem, zlib, glib, libpng, freetype, openssl 2 , xorg, fontconfig, qtbase, qtwebengine, qtwebchannel, qtsvg, qtwebsockets, xkeyboard_config 3 - , alsa-lib, libpulseaudio ? null, libredirect, quazip, which, unzip, llvmPackages_10, writeShellScriptBin 4 }: 5 6 let 7 8 - arch = if stdenv.is64bit then "amd64" else "x86"; 9 10 - libDir = if stdenv.is64bit then "lib64" else "lib"; 11 12 deps = 13 [ zlib glib libpng freetype xorg.libSM xorg.libICE xorg.libXrender openssl 14 xorg.libXrandr xorg.libXfixes xorg.libXcursor xorg.libXinerama 15 xorg.libxcb fontconfig xorg.libXext xorg.libX11 alsa-lib qtbase qtwebengine qtwebchannel qtsvg 16 - qtwebsockets libpulseaudio quazip llvmPackages_10.libcxx llvmPackages_10.libcxxabi # llvmPackages_11 and higher crash https://github.com/NixOS/nixpkgs/issues/161395 17 ]; 18 19 desktopItem = makeDesktopItem { ··· 25 genericName = "TeamSpeak"; 26 categories = [ "Network" ]; 27 }; 28 - 29 - fakeLess = writeShellScriptBin "less" "cat"; 30 - 31 in 32 33 stdenv.mkDerivation rec { 34 pname = "teamspeak-client"; 35 36 - version = "3.5.6"; 37 38 src = fetchurl { 39 url = "https://files.teamspeak-services.com/releases/client/${version}/TeamSpeak3-Client-linux_${arch}-${version}.run"; 40 - sha256 = if stdenv.is64bit 41 - then "sha256:0hjai1bd4mq3g2dlyi0zkn8s4zlgxd38skw77mb78nc4di5gvgpg" 42 - else "sha256:1y1c65nap91nv9xkvd96fagqbfl56p9n0rl6iac0i29bkysdmija"; 43 }; 44 45 # grab the plugin sdk for the desktop icon ··· 48 sha256 = "1bywmdj54glzd0kffvr27r84n4dsd0pskkbmh59mllbxvj0qwy7f"; 49 }; 50 51 - nativeBuildInputs = [ makeWrapper fakeLess which unzip ]; 52 53 unpackPhase = 54 '' 55 - echo -e '\ny' | sh -xe $src 56 cd TeamSpeak* 57 ''; 58 ··· 110 url = "https://www.teamspeak.com/en/privacy-and-terms/"; 111 free = false; 112 }; 113 - maintainers = with maintainers; [ lhvwb lukegb ]; 114 - platforms = [ "i686-linux" "x86_64-linux" ]; 115 }; 116 } 117
··· 1 { lib, stdenv, fetchurl, makeWrapper, makeDesktopItem, zlib, glib, libpng, freetype, openssl 2 , xorg, fontconfig, qtbase, qtwebengine, qtwebchannel, qtsvg, qtwebsockets, xkeyboard_config 3 + , alsa-lib, libpulseaudio ? null, libredirect, quazip, which, unzip, perl, llvmPackages 4 }: 5 6 let 7 8 + arch = "amd64"; 9 10 + libDir = "lib64"; 11 12 deps = 13 [ zlib glib libpng freetype xorg.libSM xorg.libICE xorg.libXrender openssl 14 xorg.libXrandr xorg.libXfixes xorg.libXcursor xorg.libXinerama 15 xorg.libxcb fontconfig xorg.libXext xorg.libX11 alsa-lib qtbase qtwebengine qtwebchannel qtsvg 16 + qtwebsockets libpulseaudio quazip llvmPackages.libcxx llvmPackages.libcxxabi 17 ]; 18 19 desktopItem = makeDesktopItem { ··· 25 genericName = "TeamSpeak"; 26 categories = [ "Network" ]; 27 }; 28 in 29 30 stdenv.mkDerivation rec { 31 pname = "teamspeak-client"; 32 33 + version = "3.6.0"; 34 35 src = fetchurl { 36 url = "https://files.teamspeak-services.com/releases/client/${version}/TeamSpeak3-Client-linux_${arch}-${version}.run"; 37 + hash = "sha256-ZbElnFoQmXdtCR9lb6eOz4dMzSwpfjC1DvG3VbDoSEA="; 38 }; 39 40 # grab the plugin sdk for the desktop icon ··· 43 sha256 = "1bywmdj54glzd0kffvr27r84n4dsd0pskkbmh59mllbxvj0qwy7f"; 44 }; 45 46 + nativeBuildInputs = [ 47 + makeWrapper 48 + which 49 + unzip 50 + perl # Installer script needs `shasum` 51 + ]; 52 53 + # This just runs the installer script. If it gets stuck at something like 54 + # ++ exec 55 + # + PAGER_PATH= 56 + # it's looking for a dependency and didn't find it. Check the script and make sure the dep is in nativeBuildInputs. 57 unpackPhase = 58 '' 59 + echo -e '\ny' | PAGER=cat sh -xe $src 60 cd TeamSpeak* 61 ''; 62 ··· 114 url = "https://www.teamspeak.com/en/privacy-and-terms/"; 115 free = false; 116 }; 117 + maintainers = with maintainers; [ lhvwb lukegb atemu ]; 118 + platforms = [ "x86_64-linux" ]; 119 }; 120 } 121
+14 -3
pkgs/applications/networking/seaweedfs/default.nix
··· 1 { lib 2 , fetchFromGitHub 3 , buildGoModule 4 , testers 5 , seaweedfs ··· 7 8 buildGoModule rec { 9 pname = "seaweedfs"; 10 - version = "3.53"; 11 12 src = fetchFromGitHub { 13 owner = "seaweedfs"; 14 repo = "seaweedfs"; 15 rev = version; 16 - hash = "sha256-VfKzptMxT2ra1uVzbL52EWjEGHTxmnh5xZGiQpRivTU="; 17 }; 18 19 - vendorHash = "sha256-kL6huukrM4YeU7uvj7abXOEAvRhm1Nfp4JODW4BTy0A="; 20 21 subPackages = [ "weed" ]; 22
··· 1 { lib 2 , fetchFromGitHub 3 + , fetchpatch 4 , buildGoModule 5 , testers 6 , seaweedfs ··· 8 9 buildGoModule rec { 10 pname = "seaweedfs"; 11 + version = "3.54"; 12 13 src = fetchFromGitHub { 14 owner = "seaweedfs"; 15 repo = "seaweedfs"; 16 rev = version; 17 + hash = "sha256-2E2ANJIKWhUUxxSqk5+QROeoKnp1Akl5Bp+i8pPTkuQ="; 18 }; 19 20 + patches = [ 21 + # Fix build on aarch64-darwin 22 + # (remove again when v3.55 is released) 23 + # https://github.com/seaweedfs/seaweedfs/pull/4679 24 + (fetchpatch { 25 + url = "https://github.com/seaweedfs/seaweedfs/commit/1bfc9581e0bc04f394187a0d39f319ad65df5aca.patch"; 26 + hash = "sha256-znQFtm8BYAjuvXa+vibawBb+uhnjOL9/o0sXNoXwLk8="; 27 + }) 28 + ]; 29 + 30 + vendorHash = "sha256-VK7BmApGq+X1oNjcwCSYHcEvVjL87t8fgJXLNQSfy3I="; 31 32 subPackages = [ "weed" ]; 33
+8 -2
pkgs/applications/video/qmplay2/default.nix
··· 4 , alsa-lib 5 , cmake 6 , ffmpeg 7 , game-music-emu 8 , libXv 9 , libass 10 , libcddb ··· 12 , libpulseaudio 13 , libsidplayfp 14 , libva 15 , pkg-config 16 , qtbase 17 , qttools ··· 23 24 stdenv.mkDerivation (finalAttrs: { 25 pname = "qmplay2"; 26 - version = "23.02.05"; 27 28 src = fetchFromGitHub { 29 owner = "zaps166"; 30 repo = "QMPlay2"; 31 rev = finalAttrs.version; 32 - sha256 = "sha256-ZDpUgD9qTvjopGFVrwTBSEmrXn+4aKq2zeqoTnXwmI8="; 33 fetchSubmodules = true; 34 }; 35 36 nativeBuildInputs = [ ··· 42 buildInputs = [ 43 alsa-lib 44 ffmpeg 45 game-music-emu 46 libXv 47 libass 48 libcddb ··· 50 libpulseaudio 51 libsidplayfp 52 libva 53 qtbase 54 qttools 55 taglib
··· 4 , alsa-lib 5 , cmake 6 , ffmpeg 7 + , fribidi 8 , game-music-emu 9 + , libXdmcp 10 , libXv 11 , libass 12 , libcddb ··· 14 , libpulseaudio 15 , libsidplayfp 16 , libva 17 + , libxcb 18 , pkg-config 19 , qtbase 20 , qttools ··· 26 27 stdenv.mkDerivation (finalAttrs: { 28 pname = "qmplay2"; 29 + version = "23.06.17"; 30 31 src = fetchFromGitHub { 32 owner = "zaps166"; 33 repo = "QMPlay2"; 34 rev = finalAttrs.version; 35 fetchSubmodules = true; 36 + hash = "sha256-f4lIXB0eTyteCJdWFP0XnsnxGWc32CV+HlqpaCjmgOE="; 37 }; 38 39 nativeBuildInputs = [ ··· 45 buildInputs = [ 46 alsa-lib 47 ffmpeg 48 + fribidi 49 game-music-emu 50 + libXdmcp 51 libXv 52 libass 53 libcddb ··· 55 libpulseaudio 56 libsidplayfp 57 libva 58 + libxcb 59 qtbase 60 qttools 61 taglib
+10 -4
pkgs/applications/window-managers/sway/osd.nix
··· 4 , pkg-config 5 , wrapGAppsHook 6 , gtk-layer-shell 7 , libpulseaudio 8 }: 9 10 rustPlatform.buildRustPackage { 11 pname = "swayosd"; 12 - version = "unstable-2023-05-09"; 13 14 src = fetchFromGitHub { 15 owner = "ErikReider"; 16 repo = "SwayOSD"; 17 - rev = "5c2176ae6a01a18fdc2b0f5d5f593737b5765914"; 18 - hash = "sha256-rh42J6LWgNPOWYLaIwocU1JtQnA5P1jocN3ywVOfYoc="; 19 }; 20 21 - cargoHash = "sha256-ZcgrUcRQTcEYhw2mpJDuYDz3I/u/2Q+O60ajXYRMeow="; 22 23 nativeBuildInputs = [ 24 wrapGAppsHook ··· 27 28 buildInputs = [ 29 gtk-layer-shell 30 libpulseaudio 31 ]; 32 33 meta = with lib; {
··· 4 , pkg-config 5 , wrapGAppsHook 6 , gtk-layer-shell 7 + , libevdev 8 + , libinput 9 , libpulseaudio 10 + , udev 11 }: 12 13 rustPlatform.buildRustPackage { 14 pname = "swayosd"; 15 + version = "unstable-2023-07-18"; 16 17 src = fetchFromGitHub { 18 owner = "ErikReider"; 19 repo = "SwayOSD"; 20 + rev = "b14c83889c7860c174276d05dec6554169a681d9"; 21 + hash = "sha256-MJuTwEI599Y7q+0u0DMxRYaXsZfpksc2csgnK9Ghp/E="; 22 }; 23 24 + cargoHash = "sha256-pExpzQwuHREhgkj+eZ8drBVsh/B3WiQBBh906O6ymFw="; 25 26 nativeBuildInputs = [ 27 wrapGAppsHook ··· 30 31 buildInputs = [ 32 gtk-layer-shell 33 + libevdev 34 + libinput 35 libpulseaudio 36 + udev 37 ]; 38 39 meta = with lib; {
+41
pkgs/development/python-modules/google-cloud-artifact-registry/default.nix
···
··· 1 + { buildPythonPackage 2 + , fetchPypi 3 + , google-api-core 4 + , grpc-google-iam-v1 5 + , lib 6 + , pytestCheckHook 7 + , pythonOlder 8 + }: 9 + 10 + buildPythonPackage rec { 11 + pname = "google-cloud-artifact-registry"; 12 + version = "1.8.2"; 13 + format = "setuptools"; 14 + 15 + disabled = pythonOlder "3.7"; 16 + 17 + src = fetchPypi { 18 + inherit pname version; 19 + hash = "sha256-FuuxwOMV7IB1drn5hzX7p4BwJYQCUsgnZNVR+E6XKhM="; 20 + }; 21 + 22 + propagatedBuildInputs = [ 23 + google-api-core 24 + grpc-google-iam-v1 25 + ] ++ google-api-core.optional-dependencies.grpc; 26 + 27 + nativeCheckInputs = [ pytestCheckHook ]; 28 + 29 + pythonImportsCheck = [ 30 + "google.cloud.artifactregistry" 31 + "google.cloud.artifactregistry_v1" 32 + "google.cloud.artifactregistry_v1beta2" 33 + ]; 34 + 35 + meta = with lib; { 36 + description = "Google Cloud Artifact Registry API client library"; 37 + homepage = "https://github.com/googleapis/google-cloud-python"; 38 + license = licenses.asl20; 39 + maintainers = with maintainers; [ samuela ]; 40 + }; 41 + }
+81
pkgs/development/python-modules/slack-bolt/default.nix
···
··· 1 + { buildPythonPackage 2 + , chalice 3 + , cherrypy 4 + , django 5 + , falcon 6 + , fastapi 7 + , fetchFromGitHub 8 + , flask 9 + , flask-sockets 10 + , lib 11 + , moto 12 + , numpy 13 + , pyramid 14 + , pytest-asyncio 15 + , pytestCheckHook 16 + , sanic 17 + , sanic-testing 18 + , slack-sdk 19 + , starlette 20 + , tornado 21 + }: 22 + 23 + buildPythonPackage rec { 24 + pname = "slack-bolt"; 25 + version = "1.18.0"; 26 + format = "setuptools"; 27 + 28 + src = fetchFromGitHub { 29 + owner = "slackapi"; 30 + repo = "bolt-python"; 31 + rev = "refs/tags/v${version}"; 32 + hash = "sha256-s9djd/MDNnyNkjkeApY6Fb1mhI6iop8RghaSJdi4eAs="; 33 + }; 34 + 35 + propagatedBuildInputs = [ slack-sdk ]; 36 + 37 + nativeCheckInputs = [ 38 + chalice 39 + cherrypy 40 + django 41 + falcon 42 + fastapi 43 + flask 44 + flask-sockets 45 + moto 46 + pyramid 47 + pytest-asyncio 48 + pytestCheckHook 49 + sanic 50 + sanic-testing 51 + starlette 52 + tornado 53 + ]; 54 + 55 + # Work around "Read-only file system: '/homeless-shelter'" errors 56 + preCheck = '' 57 + export HOME="$(mktemp -d)" 58 + ''; 59 + 60 + disabledTestPaths = [ 61 + # boddle is not packaged as of 2023-07-15 62 + "tests/adapter_tests/bottle/" 63 + ]; 64 + 65 + disabledTests = [ 66 + # Require network access 67 + "test_events" 68 + "test_interactions" 69 + "test_lazy_listener_calls" 70 + "test_lazy_listeners" 71 + ]; 72 + 73 + pythonImportsCheck = [ "slack_bolt" ]; 74 + 75 + meta = with lib; { 76 + description = "A framework to build Slack apps using Python"; 77 + homepage = "https://github.com/slackapi/bolt-python"; 78 + license = licenses.mit; 79 + maintainers = with maintainers; [ samuela ]; 80 + }; 81 + }
+3 -4
pkgs/development/python-modules/slack-sdk/default.nix
··· 5 , boto3 6 , buildPythonPackage 7 , codecov 8 - , databases 9 , fetchFromGitHub 10 , flake8 11 , flask-sockets ··· 21 22 buildPythonPackage rec { 23 pname = "slack-sdk"; 24 - version = "3.20.2"; 25 format = "setuptools"; 26 27 disabled = pythonOlder "3.6"; ··· 30 owner = "slackapi"; 31 repo = "python-slack-sdk"; 32 rev = "refs/tags/v${version}"; 33 - hash = "sha256-2MPXV+rVXZYMTZe11T8x8GKQmHZwUlkwarCkheVkERo="; 34 }; 35 36 propagatedBuildInputs = [ ··· 44 45 nativeCheckInputs = [ 46 codecov 47 - databases 48 flake8 49 flask-sockets 50 moto ··· 67 "test_start_raises_an_error_if_rtm_ws_url_is_not_returned" 68 "test_org_installation" 69 "test_interactions" 70 ]; 71 72 pythonImportsCheck = [
··· 5 , boto3 6 , buildPythonPackage 7 , codecov 8 , fetchFromGitHub 9 , flake8 10 , flask-sockets ··· 20 21 buildPythonPackage rec { 22 pname = "slack-sdk"; 23 + version = "3.21.3"; 24 format = "setuptools"; 25 26 disabled = pythonOlder "3.6"; ··· 29 owner = "slackapi"; 30 repo = "python-slack-sdk"; 31 rev = "refs/tags/v${version}"; 32 + hash = "sha256-begpT/DaDqOi8HZE10FCuIIv18KSU/i5G/Z5DXKUT7Y="; 33 }; 34 35 propagatedBuildInputs = [ ··· 43 44 nativeCheckInputs = [ 45 codecov 46 flake8 47 flask-sockets 48 moto ··· 65 "test_start_raises_an_error_if_rtm_ws_url_is_not_returned" 66 "test_org_installation" 67 "test_interactions" 68 + "test_issue_690_oauth_access" 69 ]; 70 71 pythonImportsCheck = [
+6 -2
pkgs/development/python-modules/trimesh/default.nix
··· 2 , buildPythonPackage 3 , fetchPypi 4 , setuptools 5 , numpy 6 , lxml 7 }: 8 9 buildPythonPackage rec { 10 pname = "trimesh"; 11 - version = "3.22.4"; 12 format = "pyproject"; 13 14 src = fetchPypi { 15 inherit pname version; 16 - hash = "sha256-DFOtanrrc3Jufuu5ybbbc0xJX29CVp2tFOP93QFoJeM="; 17 }; 18 19 nativeBuildInputs = [ setuptools ]; ··· 33 meta = with lib; { 34 description = "Python library for loading and using triangular meshes"; 35 homepage = "https://trimsh.org/"; 36 license = licenses.mit; 37 maintainers = with maintainers; [ gebner ]; 38 };
··· 2 , buildPythonPackage 3 , fetchPypi 4 , setuptools 5 + , pythonOlder 6 , numpy 7 , lxml 8 }: 9 10 buildPythonPackage rec { 11 pname = "trimesh"; 12 + version = "3.22.5"; 13 format = "pyproject"; 14 15 + disabled = pythonOlder "3.7"; 16 + 17 src = fetchPypi { 18 inherit pname version; 19 + hash = "sha256-Lk30HShbVSBeiclfxJUkd7W2HfvLsZiUdYqebLI7otw="; 20 }; 21 22 nativeBuildInputs = [ setuptools ]; ··· 36 meta = with lib; { 37 description = "Python library for loading and using triangular meshes"; 38 homepage = "https://trimsh.org/"; 39 + changelog = "https://github.com/mikedh/trimesh/releases/tag/${version}"; 40 license = licenses.mit; 41 maintainers = with maintainers; [ gebner ]; 42 };
+21 -13
pkgs/development/python-modules/wandb/default.nix
··· 1 { lib 2 , stdenv 3 , appdirs 4 , azure-core 5 , bokeh 6 , boto3 7 , buildPythonPackage ··· 11 , flask 12 , git 13 , gitpython 14 , google-cloud-compute 15 , google-cloud-storage 16 , hypothesis ··· 51 52 buildPythonPackage rec { 53 pname = "wandb"; 54 - version = "0.15.3"; 55 format = "setuptools"; 56 57 disabled = pythonOlder "3.6"; ··· 60 owner = pname; 61 repo = pname; 62 rev = "refs/tags/v${version}"; 63 - hash = "sha256-i1Lo6xbkCgRTJwRjk2bXkZ5a/JRUCzFzmEuPQlPvZf4="; 64 }; 65 66 patches = [ ··· 94 ]; 95 96 nativeCheckInputs = [ 97 azure-core 98 bokeh 99 boto3 100 flask 101 google-cloud-compute 102 google-cloud-storage 103 hypothesis ··· 213 "tests/pytest_tests/system_tests/test_sweep/test_wandb_agent.py" 214 "tests/pytest_tests/system_tests/test_sweep/test_wandb_sweep.py" 215 "tests/pytest_tests/system_tests/test_system_metrics/test_open_metrics.py" 216 - "tests/pytest_tests/system_tests/tests_launch/test_github_reference.py" 217 - "tests/pytest_tests/system_tests/tests_launch/test_job.py" 218 - "tests/pytest_tests/system_tests/tests_launch/test_launch_add.py" 219 - "tests/pytest_tests/system_tests/tests_launch/test_launch_cli.py" 220 - "tests/pytest_tests/system_tests/tests_launch/test_launch_kubernetes.py" 221 - "tests/pytest_tests/system_tests/tests_launch/test_launch_local_container.py" 222 - "tests/pytest_tests/system_tests/tests_launch/test_launch_run.py" 223 - "tests/pytest_tests/system_tests/tests_launch/test_launch_sweep_cli.py" 224 - "tests/pytest_tests/system_tests/tests_launch/test_launch_sweep.py" 225 - "tests/pytest_tests/system_tests/tests_launch/test_launch.py" 226 - "tests/pytest_tests/system_tests/tests_launch/test_wandb_reference.py" 227 228 # Tries to access /homeless-shelter 229 "tests/pytest_tests/unit_tests/test_tables.py"
··· 1 { lib 2 , stdenv 3 , appdirs 4 + , azure-containerregistry 5 , azure-core 6 + , azure-identity 7 + , azure-storage-blob 8 , bokeh 9 , boto3 10 , buildPythonPackage ··· 14 , flask 15 , git 16 , gitpython 17 + , google-cloud-artifact-registry 18 , google-cloud-compute 19 , google-cloud-storage 20 , hypothesis ··· 55 56 buildPythonPackage rec { 57 pname = "wandb"; 58 + version = "0.15.5"; 59 format = "setuptools"; 60 61 disabled = pythonOlder "3.6"; ··· 64 owner = pname; 65 repo = pname; 66 rev = "refs/tags/v${version}"; 67 + hash = "sha256-etS1NkkskA5Lg/38QIdzCVWgqZpjpT2LwaWF1k7WVXs="; 68 }; 69 70 patches = [ ··· 98 ]; 99 100 nativeCheckInputs = [ 101 + azure-containerregistry 102 azure-core 103 + azure-identity 104 + azure-storage-blob 105 bokeh 106 boto3 107 flask 108 + google-cloud-artifact-registry 109 google-cloud-compute 110 google-cloud-storage 111 hypothesis ··· 221 "tests/pytest_tests/system_tests/test_sweep/test_wandb_agent.py" 222 "tests/pytest_tests/system_tests/test_sweep/test_wandb_sweep.py" 223 "tests/pytest_tests/system_tests/test_system_metrics/test_open_metrics.py" 224 + "tests/pytest_tests/system_tests/test_launch/test_github_reference.py" 225 + "tests/pytest_tests/system_tests/test_launch/test_job.py" 226 + "tests/pytest_tests/system_tests/test_launch/test_launch_add.py" 227 + "tests/pytest_tests/system_tests/test_launch/test_launch_cli.py" 228 + "tests/pytest_tests/system_tests/test_launch/test_launch_kubernetes.py" 229 + "tests/pytest_tests/system_tests/test_launch/test_launch_local_container.py" 230 + "tests/pytest_tests/system_tests/test_launch/test_launch_run.py" 231 + "tests/pytest_tests/system_tests/test_launch/test_launch_sweep_cli.py" 232 + "tests/pytest_tests/system_tests/test_launch/test_launch_sweep.py" 233 + "tests/pytest_tests/system_tests/test_launch/test_launch.py" 234 + "tests/pytest_tests/system_tests/test_launch/test_wandb_reference.py" 235 236 # Tries to access /homeless-shelter 237 "tests/pytest_tests/unit_tests/test_tables.py"
+9 -4
pkgs/development/tools/capnproto-rust/default.nix
··· 6 7 rustPlatform.buildRustPackage rec { 8 pname = "capnproto-rust"; 9 - version = "0.17.1"; 10 11 src = fetchCrate { 12 crateName = "capnpc"; 13 inherit version; 14 - sha256 = "sha256-7RfJUYV3X9w0FALP3pbhmeIqrWLqlgr4oNvPnBc+RY8="; 15 }; 16 17 - cargoHash = "sha256-wmoXdukXWagW61jbFBODnIjlBrV6Q+wgvuFG/TqkvVk="; 18 19 nativeCheckInputs = [ 20 capnproto ··· 24 description = "Cap'n Proto codegen plugin for Rust"; 25 homepage = "https://github.com/capnproto/capnproto-rust"; 26 license = licenses.mit; 27 - maintainers = with maintainers; [ mikroskeem ]; 28 }; 29 }
··· 6 7 rustPlatform.buildRustPackage rec { 8 pname = "capnproto-rust"; 9 + version = "0.17.2"; 10 11 src = fetchCrate { 12 crateName = "capnpc"; 13 inherit version; 14 + hash = "sha256-WVjXVLVoTCAtA8a6+zaX4itAaPCWb2c0trtSsxBopO4="; 15 }; 16 17 + cargoHash = "sha256-h9YArxHnY14T8eQCS4JVItjaCjv+2dorcOVBir7r6SY="; 18 + 19 + postInstall = '' 20 + mkdir -p $out/include/capnp 21 + cp rust.capnp $out/include/capnp 22 + ''; 23 24 nativeCheckInputs = [ 25 capnproto ··· 29 description = "Cap'n Proto codegen plugin for Rust"; 30 homepage = "https://github.com/capnproto/capnproto-rust"; 31 license = licenses.mit; 32 + maintainers = with maintainers; [ mikroskeem solson ]; 33 }; 34 }
+6 -6
pkgs/development/tools/symfony-cli/default.nix
··· 2 3 buildGoModule rec { 4 pname = "symfony-cli"; 5 - version = "5.5.6"; 6 - vendorHash = "sha256-AfgDsd4W8wV0GeymD9SLeHtOeFP9qbFy+GTdMxQSkDA="; 7 8 src = fetchFromGitHub { 9 owner = "symfony-cli"; 10 repo = "symfony-cli"; 11 rev = "v${version}"; 12 - sha256 = "sha256-lE8RBjBXucL0DJjEnBLbHqOVE6g358rwmaEUqU6QhOw="; 13 }; 14 15 ldflags = [ ··· 27 $GOPATH/bin/symfony-cli 28 ''; 29 30 - meta = with lib; { 31 description = "Symfony CLI"; 32 homepage = "https://github.com/symfony-cli/symfony-cli"; 33 - license = licenses.agpl3Plus; 34 - maintainers = with maintainers; [ drupol ]; 35 mainProgram = "symfony"; 36 }; 37 }
··· 2 3 buildGoModule rec { 4 pname = "symfony-cli"; 5 + version = "5.5.7"; 6 + vendorHash = "sha256-OXV/hTSHJvYfe2SiFamkedC01J/DOgd8I60yIpQToos="; 7 8 src = fetchFromGitHub { 9 owner = "symfony-cli"; 10 repo = "symfony-cli"; 11 rev = "v${version}"; 12 + hash = "sha256-LC6QQIVHllBRu8B6XfV8SuTB3O+FmqYr+LQnVmLj2nU="; 13 }; 14 15 ldflags = [ ··· 27 $GOPATH/bin/symfony-cli 28 ''; 29 30 + meta = { 31 description = "Symfony CLI"; 32 homepage = "https://github.com/symfony-cli/symfony-cli"; 33 + license = lib.licenses.agpl3Plus; 34 mainProgram = "symfony"; 35 + maintainers = with lib.maintainers; [ drupol ]; 36 }; 37 }
+37
pkgs/os-specific/linux/fanout/default.nix
···
··· 1 + { lib, stdenv, fetchFromGitHub, kernel, kmod }: 2 + 3 + stdenv.mkDerivation rec { 4 + pname = "fanout"; 5 + version = "unstable-2022-10-17-${kernel.version}"; 6 + 7 + src = fetchFromGitHub { 8 + owner = "bob-linuxtoys"; 9 + repo = "fanout"; 10 + rev = "69b1cc69bf425d1a5f83b4e84d41272f1caa0144"; 11 + hash = "sha256-Q19c88KDFu0A6MejZgKYei9J2693EjRkKtR9hcRcHa0="; 12 + }; 13 + 14 + preBuild = '' 15 + substituteInPlace Makefile --replace "modules_install" "INSTALL_MOD_PATH=$out modules_install" 16 + ''; 17 + 18 + patches = [ 19 + ./remove_auto_mknod.patch 20 + ]; 21 + 22 + hardeningDisable = [ "format" "pic" ]; 23 + 24 + nativeBuildInputs = [ kmod ] ++ kernel.moduleBuildDependencies; 25 + 26 + makeFlags = kernel.makeFlags ++ [ 27 + "KERNELDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" 28 + ]; 29 + 30 + meta = with lib; { 31 + description = "Kernel-based publish-subscribe system"; 32 + homepage = "https://github.com/bob-linuxtoys/fanout"; 33 + license = licenses.gpl2Only; 34 + maintainers = with maintainers; [ therishidesai ]; 35 + platforms = platforms.linux; 36 + }; 37 + }
+13
pkgs/os-specific/linux/fanout/remove_auto_mknod.patch
···
··· 1 + diff --git a/fanout.c b/fanout.c 2 + index f5d2a55..87125f4 100644 3 + --- a/fanout.c 4 + +++ b/fanout.c 5 + @@ -13,7 +13,7 @@ 6 + /* Comment out to forgo the creation of /dev entries 7 + * The companion udev rules 'fanout.rules' sets the special file mode 8 + */ 9 + -#define DEV_MKNOD 10 + +// #define DEV_MKNOD 11 + 12 + #include <linux/kernel.h> 13 + #include <linux/module.h>
+2 -1
pkgs/servers/mastodon/default.nix
··· 156 157 passthru = { 158 tests.mastodon = nixosTests.mastodon; 159 - updateScript = callPackage ./update.nix {}; 160 }; 161 162 meta = with lib; {
··· 156 157 passthru = { 158 tests.mastodon = nixosTests.mastodon; 159 + # run with: nix-shell ./maintainers/scripts/update.nix --argstr package mastodon 160 + updateScript = ./update.sh; 161 }; 162 163 meta = with lib; {
-29
pkgs/servers/mastodon/update.nix
··· 1 - { runCommand 2 - , lib 3 - , makeWrapper 4 - , yarn2nix 5 - , bundix 6 - , coreutils 7 - , diffutils 8 - , nix-prefetch-github 9 - , gnused 10 - , jq 11 - }: 12 - let 13 - binPath = lib.makeBinPath [ yarn2nix bundix coreutils diffutils nix-prefetch-github gnused jq ]; 14 - in 15 - runCommand "mastodon-update-script" 16 - { 17 - nativeBuildInputs = [ makeWrapper ]; 18 - 19 - meta = { 20 - maintainers = with lib.maintainers; [ happy-river ]; 21 - description = "Utility to generate Nix expressions for Mastodon's dependencies"; 22 - platforms = lib.platforms.unix; 23 - }; 24 - } '' 25 - mkdir -p $out/bin 26 - cp ${./update.sh} $out/bin/update.sh 27 - patchShebangs $out/bin/update.sh 28 - wrapProgram $out/bin/update.sh --prefix PATH : ${binPath} 29 - ''
···
+12 -11
pkgs/servers/mastodon/update.sh
··· 1 - #!/usr/bin/env bash 2 set -e 3 4 OWNER=mastodon ··· 41 esac 42 done 43 44 - if [[ -z "$VERSION" || -n "$POSITIONAL" ]]; then 45 - echo "Usage: update.sh [--owner OWNER] [--repo REPO] --ver VERSION [--rev REVISION] [--patches PATCHES]" 46 - echo "OWNER and repo must be paths on github." 47 - echo "If VERSION is not a revision acceptable to 'git checkout', you must provide one in REVISION." 48 echo "If OWNER and REPO are not provided, it defaults they default to mastodon and mastodon." 49 echo "PATCHES, if provided, should be one or more Nix expressions separated by spaces." 50 exit 1 51 fi 52 53 if [[ -z "$REVISION" ]]; then 54 - REVISION="$VERSION" 55 fi 56 57 rm -f gemset.nix version.nix source.nix 58 - TARGET_DIR="$PWD" 59 - 60 61 WORK_DIR=$(mktemp -d) 62 ··· 85 # This file was generated by pkgs.mastodon.updateScript. 86 { fetchFromGitHub, applyPatches }: let 87 src = fetchFromGitHub { 88 - owner = "mastodon"; 89 - repo = "mastodon"; 90 rev = "$REVISION"; 91 hash = "$HASH"; 92 }; ··· 99 100 echo "Creating gemset.nix" 101 bundix --lockfile="$SOURCE_DIR/Gemfile.lock" --gemfile="$SOURCE_DIR/Gemfile" 102 - echo "" >> "$TARGET_DIR/gemset.nix" # Create trailing newline to please EditorConfig checks
··· 1 + #!/usr/bin/env nix-shell 2 + #! nix-shell -i bash -p yarn2nix bundix coreutils diffutils nix-prefetch-github gnused jq 3 set -e 4 5 OWNER=mastodon ··· 42 esac 43 done 44 45 + if [[ -n "$POSITIONAL" ]]; then 46 + echo "Usage: update.sh [--owner OWNER] [--repo REPO] [--ver VERSION] [--rev REVISION] [--patches PATCHES]" 47 + echo "OWNER and REPO must be paths on github." 48 + echo "If REVISION is not provided, the latest tag from github.com/mastodon/mastodon is fetched and VERSION is calculated from it." 49 echo "If OWNER and REPO are not provided, it defaults they default to mastodon and mastodon." 50 echo "PATCHES, if provided, should be one or more Nix expressions separated by spaces." 51 exit 1 52 fi 53 54 if [[ -z "$REVISION" ]]; then 55 + 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')" 56 + VERSION="$(echo "$REVISION" | cut -c2-)" 57 fi 58 59 rm -f gemset.nix version.nix source.nix 60 + cd "$(dirname "${BASH_SOURCE[0]}")" || exit 1 61 62 WORK_DIR=$(mktemp -d) 63 ··· 86 # This file was generated by pkgs.mastodon.updateScript. 87 { fetchFromGitHub, applyPatches }: let 88 src = fetchFromGitHub { 89 + owner = "$OWNER"; 90 + repo = "$REPO"; 91 rev = "$REVISION"; 92 hash = "$HASH"; 93 }; ··· 100 101 echo "Creating gemset.nix" 102 bundix --lockfile="$SOURCE_DIR/Gemfile.lock" --gemfile="$SOURCE_DIR/Gemfile" 103 + echo "" >> gemset.nix # Create trailing newline to please EditorConfig checks
+2 -2
pkgs/servers/nosql/apache-jena/binary.nix
··· 2 3 stdenv.mkDerivation rec { 4 pname = "apache-jena"; 5 - version = "4.8.0"; 6 src = fetchurl { 7 url = "mirror://apache/jena/binaries/apache-jena-${version}.tar.gz"; 8 - hash = "sha256-kAbhH0E2C1ToxDQgFUqWxvknCeFZbtqFhOmiSJ//ciU="; 9 }; 10 nativeBuildInputs = [ 11 makeWrapper
··· 2 3 stdenv.mkDerivation rec { 4 pname = "apache-jena"; 5 + version = "4.9.0"; 6 src = fetchurl { 7 url = "mirror://apache/jena/binaries/apache-jena-${version}.tar.gz"; 8 + hash = "sha256-kUsEdEKwYjyM5G8YKTt90fWzX21hiulRj3W5jK45Keg="; 9 }; 10 nativeBuildInputs = [ 11 makeWrapper
+18 -4
pkgs/servers/nosql/apache-jena/fuseki-binary.nix
··· 1 - { lib, stdenv, fetchurl, java, makeWrapper }: 2 3 stdenv.mkDerivation rec { 4 pname = "apache-jena-fuseki"; 5 - version = "4.8.0"; 6 src = fetchurl { 7 url = "mirror://apache/jena/binaries/apache-jena-fuseki-${version}.tar.gz"; 8 - hash = "sha256-rJCY8vG1vfEGGA0gsIqNFXKl75O2Zp4zUIWSDfplpVE="; 9 }; 10 nativeBuildInputs = [ 11 makeWrapper ··· 16 ln -s "$out"/{fuseki-backup,fuseki-server,fuseki} "$out/bin" 17 for i in "$out"/bin/*; do 18 wrapProgram "$i" \ 19 - --prefix "PATH" : "${java}/bin/" \ 20 --set-default "FUSEKI_HOME" "$out" \ 21 ; 22 done 23 ''; 24 meta = with lib; { 25 description = "SPARQL server"; 26 license = licenses.asl20;
··· 1 + { lib 2 + , stdenv 3 + , fetchurl 4 + , java 5 + , coreutils 6 + , which 7 + , makeWrapper 8 + # For the test 9 + , pkgs 10 + }: 11 12 stdenv.mkDerivation rec { 13 pname = "apache-jena-fuseki"; 14 + version = "4.9.0"; 15 src = fetchurl { 16 url = "mirror://apache/jena/binaries/apache-jena-fuseki-${version}.tar.gz"; 17 + hash = "sha256-t25Q0lb+ecR12cDD1p6eZnzLxW0kZpPOFGvo5YK7AlI="; 18 }; 19 nativeBuildInputs = [ 20 makeWrapper ··· 25 ln -s "$out"/{fuseki-backup,fuseki-server,fuseki} "$out/bin" 26 for i in "$out"/bin/*; do 27 wrapProgram "$i" \ 28 + --prefix "PATH" : "${java}/bin/:${coreutils}/bin:${which}/bin" \ 29 --set-default "FUSEKI_HOME" "$out" \ 30 ; 31 done 32 ''; 33 + passthru = { 34 + tests = { 35 + basic-test = pkgs.callPackage ./fuseki-test.nix { }; 36 + }; 37 + }; 38 meta = with lib; { 39 description = "SPARQL server"; 40 license = licenses.asl20;
+18
pkgs/servers/nosql/apache-jena/fuseki-test.nix
···
··· 1 + { lib, runCommandNoCC, apache-jena-fuseki, curl }: 2 + runCommandNoCC "fuseki-test-${apache-jena-fuseki.name}" 3 + { nativeBuildInputs = [ curl apache-jena-fuseki ]; } '' 4 + export FUSEKI_BASE="$PWD/fuseki-base" 5 + mkdir -p "$FUSEKI_BASE/db" 6 + FUSEKI_ARGS="--update --loc=$FUSEKI_BASE/db /dataset" fuseki start 7 + fuseki status 8 + for i in $(seq 120); do 9 + if curl http://127.0.0.1:3030/dataset/data; then 10 + break; 11 + fi 12 + sleep 1 13 + done 14 + curl -d 'update=insert+data+{+<test://subject>+<test://predicate>+<test://object>+}' http://127.0.0.1:3030/dataset/update > /dev/null 15 + curl http://127.0.0.1:3030/dataset/data | grep -C999 'test://predicate' 16 + curl -d 'query=select+?s+?p+?o+where+{+?s+?p+?o+.+}' http://127.0.0.1:3030/dataset/query | grep -C999 'test://predicate' 17 + touch $out 18 + ''
+1 -4
pkgs/stdenv/adapters.nix
··· 67 "--disable-shared" # brrr... 68 ]; 69 })); 70 - } // lib.optionalAttrs (stdenv0.hostPlatform.libc == "libc") { 71 extraBuildInputs = (old.extraBuildInputs or []) ++ [ 72 pkgs.glibc.static 73 ]; ··· 121 # Apple does not provide a static version of libSystem or crt0.o 122 # So we can’t build static binaries without extensive hacks. 123 ++ lib.optional (!stdenv.hostPlatform.isDarwin) makeStaticBinaries 124 - 125 - # Glibc doesn’t come with static runtimes by default. 126 - # ++ lib.optional (stdenv.hostPlatform.libc == "glibc") ((lib.flip overrideInStdenv) [ self.glibc.static ]) 127 ); 128 129
··· 67 "--disable-shared" # brrr... 68 ]; 69 })); 70 + } // lib.optionalAttrs (stdenv0.hostPlatform.libc == "glibc") { 71 extraBuildInputs = (old.extraBuildInputs or []) ++ [ 72 pkgs.glibc.static 73 ]; ··· 121 # Apple does not provide a static version of libSystem or crt0.o 122 # So we can’t build static binaries without extensive hacks. 123 ++ lib.optional (!stdenv.hostPlatform.isDarwin) makeStaticBinaries 124 ); 125 126
+1 -1
pkgs/tools/security/metasploit/Gemfile
··· 1 # frozen_string_literal: true 2 source "https://rubygems.org" 3 4 - gem "metasploit-framework", git: "https://github.com/rapid7/metasploit-framework", ref: "refs/tags/6.3.25"
··· 1 # frozen_string_literal: true 2 source "https://rubygems.org" 3 4 + gem "metasploit-framework", git: "https://github.com/rapid7/metasploit-framework", ref: "refs/tags/6.3.26"
+9 -9
pkgs/tools/security/metasploit/Gemfile.lock
··· 1 GIT 2 remote: https://github.com/rapid7/metasploit-framework 3 - revision: ba44d1810c38a63f46b3c1fb9290de4a384b802d 4 - ref: refs/tags/6.3.25 5 specs: 6 - metasploit-framework (6.3.25) 7 actionpack (~> 7.0) 8 activerecord (~> 7.0) 9 activesupport (~> 7.0) ··· 131 arel-helpers (2.14.0) 132 activerecord (>= 3.1.0, < 8) 133 aws-eventstream (1.2.0) 134 - aws-partitions (1.785.0) 135 aws-sdk-core (3.178.0) 136 aws-eventstream (~> 1, >= 1.0.2) 137 aws-partitions (~> 1, >= 1.651.0) 138 aws-sigv4 (~> 1.5) 139 jmespath (~> 1, >= 1.6.1) 140 - aws-sdk-ec2 (1.389.0) 141 aws-sdk-core (~> 3, >= 3.177.0) 142 aws-sigv4 (~> 1.1) 143 - aws-sdk-iam (1.85.0) 144 aws-sdk-core (~> 3, >= 3.177.0) 145 aws-sigv4 (~> 1.1) 146 aws-sdk-kms (1.71.0) 147 aws-sdk-core (~> 3, >= 3.177.0) 148 aws-sigv4 (~> 1.1) 149 - aws-sdk-s3 (1.129.0) 150 aws-sdk-core (~> 3, >= 3.177.0) 151 aws-sdk-kms (~> 1) 152 aws-sigv4 (~> 1.6) ··· 212 i18n (1.14.1) 213 concurrent-ruby (~> 1.0) 214 io-console (0.6.0) 215 - irb (1.7.3) 216 reline (>= 0.3.6) 217 jmespath (1.6.2) 218 jsobfu (0.4.2) ··· 258 webrick 259 metasploit_payloads-mettle (1.0.20) 260 method_source (1.0.0) 261 - mini_portile2 (2.8.2) 262 minitest (5.18.1) 263 mqtt (0.6.0) 264 msgpack (1.6.1)
··· 1 GIT 2 remote: https://github.com/rapid7/metasploit-framework 3 + revision: dd1f90dd6fd267d8430d8e0299ebcfe6a85327cf 4 + ref: refs/tags/6.3.26 5 specs: 6 + metasploit-framework (6.3.26) 7 actionpack (~> 7.0) 8 activerecord (~> 7.0) 9 activesupport (~> 7.0) ··· 131 arel-helpers (2.14.0) 132 activerecord (>= 3.1.0, < 8) 133 aws-eventstream (1.2.0) 134 + aws-partitions (1.790.0) 135 aws-sdk-core (3.178.0) 136 aws-eventstream (~> 1, >= 1.0.2) 137 aws-partitions (~> 1, >= 1.651.0) 138 aws-sigv4 (~> 1.5) 139 jmespath (~> 1, >= 1.6.1) 140 + aws-sdk-ec2 (1.392.0) 141 aws-sdk-core (~> 3, >= 3.177.0) 142 aws-sigv4 (~> 1.1) 143 + aws-sdk-iam (1.86.0) 144 aws-sdk-core (~> 3, >= 3.177.0) 145 aws-sigv4 (~> 1.1) 146 aws-sdk-kms (1.71.0) 147 aws-sdk-core (~> 3, >= 3.177.0) 148 aws-sigv4 (~> 1.1) 149 + aws-sdk-s3 (1.131.0) 150 aws-sdk-core (~> 3, >= 3.177.0) 151 aws-sdk-kms (~> 1) 152 aws-sigv4 (~> 1.6) ··· 212 i18n (1.14.1) 213 concurrent-ruby (~> 1.0) 214 io-console (0.6.0) 215 + irb (1.7.4) 216 reline (>= 0.3.6) 217 jmespath (1.6.2) 218 jsobfu (0.4.2) ··· 258 webrick 259 metasploit_payloads-mettle (1.0.20) 260 method_source (1.0.0) 261 + mini_portile2 (2.8.4) 262 minitest (5.18.1) 263 mqtt (0.6.0) 264 msgpack (1.6.1)
+2 -2
pkgs/tools/security/metasploit/default.nix
··· 15 }; 16 in stdenv.mkDerivation rec { 17 pname = "metasploit-framework"; 18 - version = "6.3.25"; 19 20 src = fetchFromGitHub { 21 owner = "rapid7"; 22 repo = "metasploit-framework"; 23 rev = version; 24 - sha256 = "sha256-ezAlfG9ZDJ1QowwNUCpkHkjxV2qKITE/qftN2sWq6CE="; 25 }; 26 27 nativeBuildInputs = [ makeWrapper ];
··· 15 }; 16 in stdenv.mkDerivation rec { 17 pname = "metasploit-framework"; 18 + version = "6.3.26"; 19 20 src = fetchFromGitHub { 21 owner = "rapid7"; 22 repo = "metasploit-framework"; 23 rev = version; 24 + sha256 = "sha256-GSf+GE4LeZxmhTskiwWjWf9rc6K4wg357MuK5cbLuMs="; 25 }; 26 27 nativeBuildInputs = [ makeWrapper ];
+15 -15
pkgs/tools/security/metasploit/gemset.nix
··· 104 platforms = []; 105 source = { 106 remotes = ["https://rubygems.org"]; 107 - sha256 = "05m0c3h1z0jhaqiciil55fshrjvc725cf1lc0g933pf98vqflb0r"; 108 type = "gem"; 109 }; 110 - version = "1.785.0"; 111 }; 112 aws-sdk-core = { 113 groups = ["default"]; ··· 124 platforms = []; 125 source = { 126 remotes = ["https://rubygems.org"]; 127 - sha256 = "19pfwc0884g9afjh18q76snr9ldnihksmagf36yiqchnvvk956lj"; 128 type = "gem"; 129 }; 130 - version = "1.389.0"; 131 }; 132 aws-sdk-iam = { 133 groups = ["default"]; 134 platforms = []; 135 source = { 136 remotes = ["https://rubygems.org"]; 137 - sha256 = "12hk0ylwjc6jq4qvw08v27ggh9pgfyi1j24jjb0lxb1p21m8ljpi"; 138 type = "gem"; 139 }; 140 - version = "1.85.0"; 141 }; 142 aws-sdk-kms = { 143 groups = ["default"]; ··· 154 platforms = []; 155 source = { 156 remotes = ["https://rubygems.org"]; 157 - sha256 = "06hgrc39ngs8nis2f85z5gg4ihskk9x3xv6vamc4wx927nsymf42"; 158 type = "gem"; 159 }; 160 - version = "1.129.0"; 161 }; 162 aws-sdk-ssm = { 163 groups = ["default"]; ··· 534 platforms = []; 535 source = { 536 remotes = ["https://rubygems.org"]; 537 - sha256 = "0dhwvflcssva4s7ad4sddr2zra8723l2hm1px2rg63ljnh0bgvr3"; 538 type = "gem"; 539 }; 540 - version = "1.7.3"; 541 }; 542 jmespath = { 543 groups = ["default"]; ··· 634 platforms = []; 635 source = { 636 fetchSubmodules = false; 637 - rev = "ba44d1810c38a63f46b3c1fb9290de4a384b802d"; 638 - sha256 = "08g8mb2xlkgvm4zk28cad9bz2j0ychm5038cld89s32rdxy2ac3v"; 639 type = "git"; 640 url = "https://github.com/rapid7/metasploit-framework"; 641 }; 642 - version = "6.3.25"; 643 }; 644 metasploit-model = { 645 groups = ["default"]; ··· 696 platforms = []; 697 source = { 698 remotes = ["https://rubygems.org"]; 699 - sha256 = "0z7f38iq37h376n9xbl4gajdrnwzq284c9v1py4imw3gri2d5cj6"; 700 type = "gem"; 701 }; 702 - version = "2.8.2"; 703 }; 704 minitest = { 705 groups = ["default"];
··· 104 platforms = []; 105 source = { 106 remotes = ["https://rubygems.org"]; 107 + sha256 = "1mjzb10zyx78hnnz6j4bjv3awpgajfi0nmavrhy9x1qsf7yc9bjd"; 108 type = "gem"; 109 }; 110 + version = "1.790.0"; 111 }; 112 aws-sdk-core = { 113 groups = ["default"]; ··· 124 platforms = []; 125 source = { 126 remotes = ["https://rubygems.org"]; 127 + sha256 = "15vb0gn23xig6alcxh487r0jl5cdxm45b6zihh3wscvfzwqq0n5n"; 128 type = "gem"; 129 }; 130 + version = "1.392.0"; 131 }; 132 aws-sdk-iam = { 133 groups = ["default"]; 134 platforms = []; 135 source = { 136 remotes = ["https://rubygems.org"]; 137 + sha256 = "02bp18pi29zncznkzkjzlg5j1cl99q41xvw0z5qx9q55mcwaj7i8"; 138 type = "gem"; 139 }; 140 + version = "1.86.0"; 141 }; 142 aws-sdk-kms = { 143 groups = ["default"]; ··· 154 platforms = []; 155 source = { 156 remotes = ["https://rubygems.org"]; 157 + sha256 = "1855m1v6lh9rji543nvk0fjn98ma0q2978zc4f5y76qsibl7fg6c"; 158 type = "gem"; 159 }; 160 + version = "1.131.0"; 161 }; 162 aws-sdk-ssm = { 163 groups = ["default"]; ··· 534 platforms = []; 535 source = { 536 remotes = ["https://rubygems.org"]; 537 + sha256 = "158ca10kj3qqnql5g8f1g2arsnhgdl79mg74manpf8ldkwjjn3n8"; 538 type = "gem"; 539 }; 540 + version = "1.7.4"; 541 }; 542 jmespath = { 543 groups = ["default"]; ··· 634 platforms = []; 635 source = { 636 fetchSubmodules = false; 637 + rev = "dd1f90dd6fd267d8430d8e0299ebcfe6a85327cf"; 638 + sha256 = "1jxqrg3fb2nbxkwhvhmql9rnpzsrlc2qn91vhmk9qy8b9qcgw9qr"; 639 type = "git"; 640 url = "https://github.com/rapid7/metasploit-framework"; 641 }; 642 + version = "6.3.26"; 643 }; 644 metasploit-model = { 645 groups = ["default"]; ··· 696 platforms = []; 697 source = { 698 remotes = ["https://rubygems.org"]; 699 + sha256 = "02mj8mpd6ck5gpcnsimx5brzggw5h5mmmpq2djdypfq16wcw82qq"; 700 type = "gem"; 701 }; 702 + version = "2.8.4"; 703 }; 704 minitest = { 705 groups = ["default"];
+2
pkgs/top-level/linux-kernels.nix
··· 349 350 evdi = callPackage ../os-specific/linux/evdi { }; 351 352 fwts-efi-runtime = callPackage ../os-specific/linux/fwts/module.nix { }; 353 354 gcadapter-oc-kmod = callPackage ../os-specific/linux/gcadapter-oc-kmod { };
··· 349 350 evdi = callPackage ../os-specific/linux/evdi { }; 351 352 + fanout = callPackage ../os-specific/linux/fanout { }; 353 + 354 fwts-efi-runtime = callPackage ../os-specific/linux/fwts/module.nix { }; 355 356 gcadapter-oc-kmod = callPackage ../os-specific/linux/gcadapter-oc-kmod { };
+4
pkgs/top-level/python-packages.nix
··· 4281 4282 google-cloud-appengine-logging = callPackage ../development/python-modules/google-cloud-appengine-logging { }; 4283 4284 google-cloud-asset = callPackage ../development/python-modules/google-cloud-asset { }; 4285 4286 google-cloud-audit-log = callPackage ../development/python-modules/google-cloud-audit-log { }; ··· 11590 }; 11591 11592 skytemple-ssb-debugger = callPackage ../development/python-modules/skytemple-ssb-debugger { }; 11593 11594 slack-sdk = callPackage ../development/python-modules/slack-sdk { }; 11595
··· 4281 4282 google-cloud-appengine-logging = callPackage ../development/python-modules/google-cloud-appengine-logging { }; 4283 4284 + google-cloud-artifact-registry = callPackage ../development/python-modules/google-cloud-artifact-registry { }; 4285 + 4286 google-cloud-asset = callPackage ../development/python-modules/google-cloud-asset { }; 4287 4288 google-cloud-audit-log = callPackage ../development/python-modules/google-cloud-audit-log { }; ··· 11592 }; 11593 11594 skytemple-ssb-debugger = callPackage ../development/python-modules/skytemple-ssb-debugger { }; 11595 + 11596 + slack-bolt = callPackage ../development/python-modules/slack-bolt { }; 11597 11598 slack-sdk = callPackage ../development/python-modules/slack-sdk { }; 11599