diff --git a/ci/OWNERS b/ci/OWNERS index d75b4b22cabf..7e78d66a1855 100644 --- a/ci/OWNERS +++ b/ci/OWNERS @@ -372,6 +372,10 @@ pkgs/development/python-modules/buildcatrust/ @ajs124 @lukegb @mweinelt # LuaPackages /pkgs/development/lua-modules @NixOS/lua +# mpvScripts +/pkgs/applications/video/mpv/scripts @uninsane +/pkgs/applications/video/mpv/scripts.nix @uninsane + # Neovim /pkgs/applications/editors/neovim @NixOS/neovim diff --git a/doc/README.md b/doc/README.md index 889198bc9e35..6ac3edc8af62 100644 --- a/doc/README.md +++ b/doc/README.md @@ -213,6 +213,10 @@ Put each sentence in its own line. This makes reviews and suggestions much easier, since GitHub's review system is based on lines. It also helps identifying long sentences at a glance. +Not everything has been migrated to this format yet. +Please always use it for new content. +When changing existing content, update formatting if possible, but avoid excessive diffs. + ### Writing Function Documentation Function documentation is *reference documentation*, for which diff --git a/doc/contributing/contributing-to-documentation.chapter.md b/doc/contributing/contributing-to-documentation.chapter.md index 777858b901c3..54f7ebcb41b9 100644 --- a/doc/contributing/contributing-to-documentation.chapter.md +++ b/doc/contributing/contributing-to-documentation.chapter.md @@ -1,11 +1,3 @@ # Contributing to Nixpkgs documentation {#chap-contributing} This section has been moved to [doc/README.md](https://github.com/NixOS/nixpkgs/blob/master/doc/README.md). - -## devmode {#sec-contributing-devmode} - -This section has been moved to [doc/README.md](https://github.com/NixOS/nixpkgs/blob/master/doc/README.md). - -## Syntax {#sec-contributing-markup} - -This section has been moved to [doc/README.md](https://github.com/NixOS/nixpkgs/blob/master/doc/README.md). diff --git a/doc/doc-support/package.nix b/doc/doc-support/package.nix index 18830462b870..73d5ccaa1f04 100644 --- a/doc/doc-support/package.nix +++ b/doc/doc-support/package.nix @@ -157,7 +157,7 @@ stdenvNoCC.mkDerivation ( buildArgs = toString ../.; open = "/share/doc/nixpkgs/index.html"; }; - nixos-render-docs-redirects' = writeShellScriptBin "redirects" "${lib.getExe nixos-render-docs-redirects} --file ${toString ../redirects.json} $@"; + nixos-render-docs-redirects' = writeShellScriptBin "redirects" ''${lib.getExe nixos-render-docs-redirects} --file '${toString ../redirects.json}' "$@"''; in mkShellNoCC { packages = [ diff --git a/doc/redirects.json b/doc/redirects.json index f0e7f455d6a5..ffa10799fa6f 100644 --- a/doc/redirects.json +++ b/doc/redirects.json @@ -4663,12 +4663,8 @@ "index.html#reviewing-contributions--merging-pull-requests" ], "chap-contributing": [ - "index.html#chap-contributing" - ], - "sec-contributing-devmode": [ - "index.html#sec-contributing-devmode" - ], - "sec-contributing-markup": [ + "index.html#chap-contributing", + "index.html#sec-contributing-devmode", "index.html#sec-contributing-markup" ], "part-interoperability": [ diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 530f4a018f7b..a7fc53743178 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -4010,6 +4010,12 @@ name = "Builditluc"; keys = [ { fingerprint = "FF16E475723B8C1E57A6B2569374074AE2D6F20E"; } ]; }; + burdzwastaken = { + email = "burdz@burdz.net"; + github = "burdzwastaken"; + githubId = 13855668; + name = "Matt Burdan"; + }; burmudar = { email = "william.bezuidenhout@gmail.com"; github = "burmudar"; diff --git a/nixos/doc/manual/contributing-to-this-manual.chapter.md b/nixos/doc/manual/contributing-to-this-manual.chapter.md index 1b296918f9e2..bf8aea99efef 100644 --- a/nixos/doc/manual/contributing-to-this-manual.chapter.md +++ b/nixos/doc/manual/contributing-to-this-manual.chapter.md @@ -1,7 +1,7 @@ # Contributing to this manual {#chap-contributing} The sources of the NixOS manual are in the [nixos/doc/manual](https://github.com/NixOS/nixpkgs/tree/master/nixos/doc/manual) subdirectory of the [Nixpkgs](https://github.com/NixOS/nixpkgs) repository. -This manual uses the [Nixpkgs manual syntax](https://nixos.org/manual/nixpkgs/unstable/#sec-contributing-markup). +This manual uses the [Nixpkgs manual syntax](https://github.com/NixOS/nixpkgs/blob/master/doc/README.md#syntax) and [stylistic conventions](https://github.com/NixOS/nixpkgs/blob/master/doc/README.md#documentation-conventions). You can quickly check your edits with the following: @@ -13,8 +13,6 @@ $ nix-build nixos/release.nix -A manual.x86_64-linux If the build succeeds, the manual will be in `./result/share/doc/nixos/index.html`. -There's also [a convenient development daemon](https://nixos.org/manual/nixpkgs/unstable/#sec-contributing-devmode). - The above instructions don't deal with the appendix of available `configuration.nix` options, and the manual pages related to NixOS. These are built, and written in a different location and in a different format, as explained in the next sections. ## Development environment {#sec-contributing-development-env} diff --git a/nixos/doc/manual/release-notes/rl-2605.section.md b/nixos/doc/manual/release-notes/rl-2605.section.md index cd40062aca34..ceac6f600655 100644 --- a/nixos/doc/manual/release-notes/rl-2605.section.md +++ b/nixos/doc/manual/release-notes/rl-2605.section.md @@ -18,6 +18,8 @@ - [ImmichFrame](https://immichframe.dev/), display your photos from Immich as a digital photo frame. Available as `services.immichframe`. +- [reaction](https://reaction.ppom.me/), a daemon that scans program outputs for repeated patterns, and takes action. A common usage is to scan ssh and webserver logs, and to ban hosts that cause multiple authentication errors. A modern alternative to fail2ban. Available as [services.reaction](#opt-services.reaction.enable). + - [LibreChat](https://www.librechat.ai/), open-source self-hostable ChatGPT clone with Agents and RAG APIs. Available as [services.librechat](#opt-services.librechat.enable). - [DankMaterialShell](https://danklinux.com), a complete desktop shell for Wayland compositors built with Quickshell. Available as [programs.dms-shell](#opt-programs.dms-shell.enable). diff --git a/nixos/doc/manual/shell.nix b/nixos/doc/manual/shell.nix index 6e9d253e4718..d8bf715b5e51 100644 --- a/nixos/doc/manual/shell.nix +++ b/nixos/doc/manual/shell.nix @@ -10,7 +10,7 @@ let buildArgs = ''${toString ../../release.nix} -A manualHTML.${builtins.currentSystem}''; open = "/${outputPath}/${indexPath}"; }; - nixos-render-docs-redirects = pkgs.writeShellScriptBin "redirects" "${pkgs.lib.getExe pkgs.nixos-render-docs-redirects} --file ${toString ./redirects.json} $@"; + nixos-render-docs-redirects = pkgs.writeShellScriptBin "redirects" ''${pkgs.lib.getExe pkgs.nixos-render-docs-redirects} --file '${toString ./redirects.json}' "$@"''; in pkgs.mkShellNoCC { packages = [ diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index aa3ccdd558ed..f0beafd77364 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -1499,6 +1499,7 @@ ./services/security/pass-secret-service.nix ./services/security/physlock.nix ./services/security/pocket-id.nix + ./services/security/reaction.nix ./services/security/shibboleth-sp.nix ./services/security/sks.nix ./services/security/sshguard.nix diff --git a/nixos/modules/programs/wayland/niri.nix b/nixos/modules/programs/wayland/niri.nix index 58b36fe42ab8..05a9deadf33e 100644 --- a/nixos/modules/programs/wayland/niri.nix +++ b/nixos/modules/programs/wayland/niri.nix @@ -43,10 +43,16 @@ in xdg.portal = { enable = lib.mkDefault true; - configPackages = [ cfg.package ]; - - config.niri = lib.mkIf (!cfg.useNautilus) { - "org.freedesktop.impl.portal.FileChooser" = lib.mkDefault "gtk"; + # NOTE: `configPackages` is ignored when `xdg.portal.config.niri` is defined. + config.niri = { + default = [ + "gnome" + "gtk" + ]; + "org.freedesktop.impl.portal.Access" = "gtk"; + "org.freedesktop.impl.portal.FileChooser" = lib.mkIf (!cfg.useNautilus) "gtk"; + "org.freedesktop.impl.portal.Notification" = "gtk"; + "org.freedesktop.impl.portal.Secret" = "gnome-keyring"; }; # Recommended by upstream, required for screencast support diff --git a/nixos/modules/services/continuous-integration/woodpecker/server.nix b/nixos/modules/services/continuous-integration/woodpecker/server.nix index 5825868e9fe1..3ab4d9070585 100644 --- a/nixos/modules/services/continuous-integration/woodpecker/server.nix +++ b/nixos/modules/services/continuous-integration/woodpecker/server.nix @@ -61,7 +61,7 @@ in UMask = "0007"; ConfigurationDirectory = "woodpecker-server"; EnvironmentFile = cfg.environmentFile; - ExecStart = "${cfg.package}/bin/woodpecker-server"; + ExecStart = lib.getExe cfg.package; Restart = "on-failure"; RestartSec = 15; CapabilityBoundingSet = ""; diff --git a/nixos/modules/services/misc/jellyfin.nix b/nixos/modules/services/misc/jellyfin.nix index 89640b9a3211..b1ea8082ee11 100644 --- a/nixos/modules/services/misc/jellyfin.nix +++ b/nixos/modules/services/misc/jellyfin.nix @@ -129,6 +129,7 @@ in ]; # Security options: + CapabilityBoundingSet = [ "" ]; NoNewPrivileges = true; SystemCallArchitectures = "native"; # AF_NETLINK needed because Jellyfin monitors the network connection @@ -141,11 +142,15 @@ in RestrictNamespaces = !config.boot.isContainer; RestrictRealtime = true; RestrictSUIDSGID = true; + ProcSubset = "pid"; ProtectControlGroups = !config.boot.isContainer; + ProtectClock = true; ProtectHostname = true; ProtectKernelLogs = !config.boot.isContainer; ProtectKernelModules = !config.boot.isContainer; ProtectKernelTunables = !config.boot.isContainer; + ProtectProc = "invisible"; + ProtectSystem = true; LockPersonality = true; PrivateTmp = !config.boot.isContainer; # needed for hardware acceleration @@ -154,21 +159,8 @@ in RemoveIPC = true; SystemCallFilter = [ - "~@clock" - "~@aio" - "~@chown" - "~@cpu-emulation" - "~@debug" - "~@keyring" - "~@memlock" - "~@module" - "~@mount" - "~@obsolete" + "@system-service" "~@privileged" - "~@raw-io" - "~@reboot" - "~@setuid" - "~@swap" ]; SystemCallErrorNumber = "EPERM"; }; diff --git a/nixos/modules/services/network-filesystems/moosefs.nix b/nixos/modules/services/network-filesystems/moosefs.nix index f2f0d403c8a9..52634b2aaf28 100644 --- a/nixos/modules/services/network-filesystems/moosefs.nix +++ b/nixos/modules/services/network-filesystems/moosefs.nix @@ -66,6 +66,7 @@ let masterCfg = settingsFormat.generate "mfsmaster.cfg" cfg.master.settings; metaloggerCfg = settingsFormat.generate "mfsmetalogger.cfg" cfg.metalogger.settings; chunkserverCfg = settingsFormat.generate "mfschunkserver.cfg" cfg.chunkserver.settings; + guiCfg = settingsFormat.generate "mfsgui.cfg" cfg.cgiserver.settings; systemdService = name: extraConfig: configFile: { wantedBy = [ "multi-user.target" ]; @@ -203,8 +204,8 @@ in cgiserver = { enable = lib.mkEnableOption '' - MooseFS CGI server for web interface. - Warning: The CGI server interface should be properly secured from unauthorized access, + MooseFS GUI server (mfsgui) for web interface. + Warning: The GUI server interface should be properly secured from unauthorized access, as it provides full control over your MooseFS installation. ''; @@ -218,21 +219,27 @@ in type = lib.types.submodule { freeformType = settingsFormat.type; options = { - BIND_HOST = lib.mkOption { + DATA_PATH = lib.mkOption { type = lib.types.str; - default = "0.0.0.0"; - description = "IP address to bind CGI server to."; + default = "/var/lib/mfs"; + description = "Directory for lock files."; }; - PORT = lib.mkOption { + GUISERV_LISTEN_HOST = lib.mkOption { + type = lib.types.str; + default = "*"; + description = "IP address to bind GUI server to (* means any)."; + }; + + GUISERV_LISTEN_PORT = lib.mkOption { type = lib.types.port; default = 9425; - description = "Port for CGI server to listen on."; + description = "Port for GUI server to listen on."; }; }; }; default = { }; - description = "CGI server configuration options."; + description = "GUI server configuration options."; }; }; }; @@ -249,22 +256,17 @@ in || cfg.cgiserver.enable ) { - warnings = [ (lib.mkIf (!cfg.runAsUser) "Running MooseFS services as root is not recommended.") ]; + warnings = [ + (lib.mkIf (!cfg.runAsUser) "Running MooseFS services as root is not recommended.") + ]; services.moosefs = { - master.settings = lib.mkIf cfg.master.enable ( - lib.mkMerge [ - { - WORKING_USER = mfsUser; - EXPORTS_FILENAME = toString ( - pkgs.writeText "mfsexports.cfg" (lib.concatStringsSep "\n" cfg.master.exports) - ); - } - (lib.mkIf cfg.cgiserver.enable { - MFSCGISERV = toString cfg.cgiserver.settings.PORT; - }) - ] - ); + master.settings = lib.mkIf cfg.master.enable { + WORKING_USER = mfsUser; + EXPORTS_FILENAME = toString ( + pkgs.writeText "mfsexports.cfg" (lib.concatStringsSep "\n" cfg.master.exports) + ); + }; metalogger.settings = lib.mkIf cfg.metalogger.enable { WORKING_USER = mfsUser; @@ -278,6 +280,10 @@ in pkgs.writeText "mfshdd.cfg" (lib.concatStringsSep "\n" cfg.chunkserver.hdds) ); }; + + cgiserver.settings = lib.mkIf cfg.cgiserver.enable { + WORKING_USER = mfsUser; + }; }; users = @@ -305,7 +311,9 @@ in 9421 ]) (lib.optional cfg.chunkserver.openFirewall 9422) - (lib.optional (cfg.cgiserver.enable && cfg.cgiserver.openFirewall) cfg.cgiserver.settings.PORT) + (lib.optional ( + cfg.cgiserver.enable && cfg.cgiserver.openFirewall + ) cfg.cgiserver.settings.GUISERV_LISTEN_PORT) ]; systemd.tmpfiles.rules = [ @@ -317,6 +325,9 @@ in # Chunkserver directories (lib.optionalString cfg.chunkserver.enable "d ${cfg.chunkserver.settings.DATA_PATH} 0700 ${mfsUser} ${mfsUser} -") + + # GUI server directories + (lib.optionalString cfg.cgiserver.enable "d ${cfg.cgiserver.settings.DATA_PATH} 0700 ${mfsUser} ${mfsUser} -") ] ++ lib.optionals (cfg.chunkserver.enable && cfg.chunkserver.hdds != null) ( map (dir: "d ${dir} 0755 ${mfsUser} ${mfsUser} -") cfg.chunkserver.hdds @@ -355,19 +366,26 @@ in (lib.mkIf cfg.cgiserver.enable { mfs-cgiserv = { - description = "MooseFS CGI Server"; + description = "MooseFS GUI Server"; wantedBy = [ "multi-user.target" ]; after = [ "mfs-master.service" ]; + path = [ + pkgs.bash + pkgs.coreutils + pkgs.python3 + ]; + serviceConfig = { Type = "simple"; - ExecStart = "${pkgs.moosefs}/bin/mfscgiserv -D /var/lib/mfs -f start"; - ExecStop = "${pkgs.moosefs}/bin/mfscgiserv -D /var/lib/mfs stop"; + ExecStart = "${pkgs.moosefs}/bin/mfsgui -f -c ${guiCfg} start"; + ExecStop = "${pkgs.moosefs}/bin/mfsgui -c ${guiCfg} stop"; + ExecReload = "${pkgs.moosefs}/bin/mfsgui -c ${guiCfg} reload"; Restart = "on-failure"; RestartSec = "30s"; User = mfsUser; Group = mfsUser; - WorkingDirectory = "/var/lib/mfs"; + WorkingDirectory = cfg.cgiserver.settings.DATA_PATH; }; }; }) diff --git a/nixos/modules/services/security/reaction.nix b/nixos/modules/services/security/reaction.nix new file mode 100644 index 000000000000..0572913e3bc0 --- /dev/null +++ b/nixos/modules/services/security/reaction.nix @@ -0,0 +1,198 @@ +{ + lib, + pkgs, + config, + ... +}: +let + settingsFormat = pkgs.formats.yaml { }; + + inherit (lib) + mkOption + mkEnableOption + mkPackageOption + types + ; +in +{ + options.services.reaction = { + enable = mkEnableOption "enable reaction"; + + package = mkPackageOption pkgs "reaction" { }; + + settings = mkOption { + description = '' + Configuration for reaction. See the [wiki](https://framagit.org/ppom/reaction-wiki). + + The settings are written as a YAML file. + + Can be used in combination with `settingsFiles` option, both will be present in the configuration directory. + ''; + default = { }; + type = types.submodule { + freeformType = settingsFormat.type; + options = { }; + }; + }; + + settingsFiles = mkOption { + description = '' + Configuration for reaction, see the [wiki](https://framagit.org/ppom/reaction-wiki). + + reaction supports JSON, YAML and JSONnet. For those who prefer to take advantage of JSONnet rather than Nix. + + Can be used in combination with `settings` option, both will be present in the configuration directory. + ''; + default = [ ]; + type = types.listOf types.path; + }; + + loglevel = mkOption { + description = '' + reaction's loglevel. One of DEBUG, INFO, WARN, ERROR. + ''; + default = null; + type = types.nullOr ( + types.enum [ + "DEBUG" + "INFO" + "WARN" + "ERROR" + ] + ); + }; + + stopForFirewall = mkOption { + type = types.bool; + default = false; + description = '' + Whether to stop reaction when reloading the firewall. + + The presence of a reaction chain in the INPUT table may cause the firewall + reload to fail. + One can alternatively cherry-pick the right iptables commands to execute before and after the firewall + ```nix + { + systemd.services.firewall.serviceConfig = { + ExecStopPre = [ "''${pkgs.iptables}/bin/iptables -w -D INPUT -p all -j reaction" ]; + ExecStartPost = [ "''${pkgs.iptables}/bin/iptables -w -I INPUT -p all -j reaction" ]; + }; + } + ``` + ''; + }; + + checkConfig = mkOption { + type = types.bool; + default = true; + description = "Check the syntax of the configuration files at build time"; + }; + + runAsRoot = mkOption { + type = types.bool; + default = false; + description = '' + Whether to run reaction as root. + Defaults to false, where an unprivileged reaction user is created. + + Be sure to give it sufficient permissions. + Example config permitting `iptables` and `journalctl` use + + ```nix + { + # allows reading journal logs of processess + users.users.reaction.extraGroups = [ "systemd-journal" ]; + # allows modifying ip firewall rules + systemd.services.reaction.AmbientCapabilities = [ "CAP_NET_ADMIN" ]; + # optional, if more control over ssh logs is needed + services.openssh.settings.LogLevel = lib.mkDefault "VERBOSE"; + } + ``` + ''; + }; + }; + + config = + let + cfg = config.services.reaction; + + generatedSettings = settingsFormat.generate "reaction.yml" cfg.settings; + namedGeneratedSettings = lib.optional (cfg.settings != { }) { + name = "reaction.yml"; + path = generatedSettings; + }; + + # SAFETY: We can discard the dependencies of "file" in the name attribute because we keep them in the path attribute + # See https://nix.dev/manual/nix/2.32/language/string-context + namedSettingsFiles = builtins.map (file: { + name = builtins.unsafeDiscardStringContext (builtins.baseNameOf file); + path = file; + }) cfg.settingsFiles; + + settingsDir = pkgs.linkFarm "reaction.d" (namedSettingsFiles ++ namedGeneratedSettings); + in + lib.mkIf cfg.enable { + assertions = [ + { + assertion = cfg.settings != { } || (builtins.length cfg.settingsFiles) != 0; + message = "You must specify settings and/or settingsFile options"; + } + ]; + + users = lib.mkIf (!cfg.runAsRoot) { + users.reaction = { + isSystemUser = true; + group = "reaction"; + }; + groups.reaction = { }; + }; + + system.checks = + lib.optional (cfg.checkConfig && pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform) + ( + pkgs.runCommand "reaction-config-validation" { } '' + ${lib.getExe cfg.package} test-config -c ${settingsDir} >/dev/null + echo "reaction config ${settingsDir} is valid" + touch $out + '' + ); + + # Easier to debug conf when we have direct access to it, + # rather than having to look for it in the systemd service file. + environment.etc."reaction".source = settingsDir; + + systemd.services.reaction = { + enable = true; + description = "Scan logs and take action"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + partOf = lib.optionals cfg.stopForFirewall [ "firewall.service" ]; + path = [ pkgs.iptables ]; + unitConfig.ConditionCapability = "CAP_NET_ADMIN"; + serviceConfig = { + Type = "simple"; + User = if (!cfg.runAsRoot) then "reaction" else "root"; + ExecStart = '' + ${lib.getExe cfg.package} start -c ${settingsDir}${ + lib.optionalString (cfg.loglevel != null) " -l ${cfg.loglevel}" + } + ''; + StateDirectory = "reaction"; + RuntimeDirectory = "reaction"; + WorkingDirectory = "/var/lib/reaction"; + + CapabilityBoundingSet = [ "CAP_NET_ADMIN" ]; + }; + }; + + environment.systemPackages = [ cfg.package ]; + }; + + meta.maintainers = + with lib.maintainers; + [ + ppom + phanirithvij + ] + ++ lib.teams.ngi.members; +} diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index e8c426682f09..c1882cc6bdbd 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -1322,6 +1322,8 @@ in rasdaemon = runTest ./rasdaemon.nix; rathole = runTest ./rathole.nix; rauc = runTest ./rauc.nix; + reaction = runTest ./reaction.nix; + reaction-firewall = runTest ./reaction-firewall.nix; readarr = runTest ./readarr.nix; readeck = runTest ./readeck.nix; realm = runTest ./realm.nix; diff --git a/nixos/tests/jellyfin.nix b/nixos/tests/jellyfin.nix index e8fb233bccd5..1e648830f079 100644 --- a/nixos/tests/jellyfin.nix +++ b/nixos/tests/jellyfin.nix @@ -154,5 +154,7 @@ if duration.strip() != "5.000000": raise Exception("Downloaded video has wrong duration") + + machine.log(machine.succeed("systemd-analyze security jellyfin.service | grep -v '✓'")) ''; } diff --git a/nixos/tests/reaction-firewall.nix b/nixos/tests/reaction-firewall.nix new file mode 100644 index 000000000000..7efea1ad4ae0 --- /dev/null +++ b/nixos/tests/reaction-firewall.nix @@ -0,0 +1,79 @@ +{ + lib, + pkgs, + ... +}: +{ + name = "reaction-firewall-interaction"; + + nodes.machine = + { config, pkgs, ... }: + { + services.reaction = { + enable = true; + stopForFirewall = true; # with this enabled restarting firewall will restart reaction + settingsFiles = [ + "${pkgs.reaction}/share/examples/example.jsonnet" + # "${pkgs.reaction}/share/examples/example.yml" # can't specify both because conflicts + ]; + runAsRoot = true; + }; + networking.firewall.enable = true; + }; + + testScript = # py + '' + start_all() + machine.wait_for_unit("multi-user.target") + + # Verify both services start successfully + machine.wait_for_unit("firewall.service") + machine.wait_for_unit("reaction.service") + + # Check reaction chain exists in iptables + output = machine.succeed("iptables -w -L -n") + assert "reaction" in output, "reaction chain not found in iptables" + + # Reload firewall and verify there's no issues due to reaction chain + machine.succeed("systemctl reload firewall") + output = machine.succeed("journalctl -u reaction.service -u firewall.service --no-pager") + assert "ERROR" not in output, "firewall reload failed due to reaction" + + # Verify reaction chain still exists after reload + output = machine.succeed("iptables -w -L -n") + assert "reaction" in output, "reaction chain missing after firewall reload" + + # Restart firewall and verify reaction restarts as well + machine.succeed("systemctl restart firewall") + output = machine.succeed("journalctl -u reaction.service -u firewall.service --no-pager") + assert "INFO stop command" in output and "INFO start command" in output, "reaction did not restart when firewall was restarted" + + output = machine.succeed("iptables -w -L -n") + assert "reaction" in output, "reaction chain missing after firewall restart" + + # Stop reaction manually and verify chains are cleaned up + machine.succeed("systemctl stop reaction") + output = machine.succeed("iptables -w -L -n || true") + assert "reaction" not in output, "reaction chain still exists after stop" + + # Start reaction again and verify it works + machine.succeed("systemctl start reaction") + machine.wait_for_unit("reaction.service") + + output = machine.succeed("iptables -w -L -n") + assert "reaction" in output, "reaction chain not recreated" + ''; + + # Debug interactively with: + # - nix run .#nixosTests.reaction-firewall.driverInteractive -L + # - run_tests() + interactive.sshBackdoor.enable = true; # ssh -o User=root vsock%3 + + meta.maintainers = + with lib.maintainers; + [ + ppom + phanirithvij + ] + ++ lib.teams.ngi.members; +} diff --git a/nixos/tests/reaction.nix b/nixos/tests/reaction.nix new file mode 100644 index 000000000000..af743caa1260 --- /dev/null +++ b/nixos/tests/reaction.nix @@ -0,0 +1,107 @@ +{ + lib, + pkgs, + ... +}: +{ + name = "reaction"; + + nodes.server = _: { + services.reaction = { + enable = true; + stopForFirewall = false; + settingsFiles = [ + "${pkgs.reaction}/share/examples/example.jsonnet" + # "${pkgs.reaction}/share/examples/example.yml" # can't specify both because conflicts + ]; + runAsRoot = false; + }; + services.openssh.enable = true; + + # required to access journal of sshd.service as runAsRoot = false + users.users.reaction.extraGroups = [ "systemd-journal" ]; + # required for allowing reaction to modifiy firewall rules + systemd.services.reaction.serviceConfig.AmbientCapabilities = [ "CAP_NET_ADMIN" ]; + + users.users.nixos.isNormalUser = true; # neeeded to establish a ssh connection, by default root login is succeeding without any password + }; + + nodes.client = _: { + environment.systemPackages = [ + pkgs.sshpass + pkgs.libressl.nc + ]; + }; + + testScript = + { nodes, ... }: # py + '' + start_all() + + # Wait for everything to be ready. + server.wait_for_unit("multi-user.target") + server.wait_for_unit("reaction") + server.wait_for_unit("sshd") + client.wait_for_unit("multi-user.target") + + client_addr = "${(lib.head nodes.client.networking.interfaces.eth1.ipv4.addresses).address}" + server_addr = "${(lib.head nodes.server.networking.interfaces.eth1.ipv4.addresses).address}" + + # Verify there is not ban and the port is reachable from the client. + server.succeed(f"reaction show | grep -q {client_addr} || test $? -eq 1") + client.succeed(f"nc -w3 -z {server_addr} 22") + + # Cause authentication failure log entries. + for _ in range(2): + client.fail(f""" + sshpass -p 'wrongpassword' \ + ssh -o StrictHostKeyChecking=no \ + -o User=nixos \ + -o ServerAliveInterval=1 \ + -o ServerAliveCountMax=2 \ + {server_addr} + """) + + # Verify there is a ban and the port is unreachable from the client. + server.sleep(2) + output = server.succeed("reaction show") + print(output) + assert client_addr in output, f"client did not get banned, {client_addr}" + + client.fail(f"nc -w3 -z {server_addr} 22") + + # Check that unbanning works + output = server.succeed("reaction flush") + print(output) + + client.succeed(f"nc -w3 -z {server_addr} 22") + ''; + + # Debug interactively with: + # - nix run .#nixosTests.reaction.driverInteractive -L + # - run_tests() + # ssh -o User=root vsock%3 (can also do vsock/3, but % works with scp etc.) + # ssh -o User=root vsock%4 + interactive.sshBackdoor.enable = true; + + interactive.nodes.server = + { config, ... }: + { + # not needed, only for manual interactive debugging + virtualisation.memorySize = 4096; + environment.systemPackages = with pkgs; [ + btop + sysz + sshpass + libressl.nc + ]; + }; + + meta.maintainers = + with lib.maintainers; + [ + ppom + phanirithvij + ] + ++ lib.teams.ngi.members; +} diff --git a/nixos/tests/uptermd.nix b/nixos/tests/uptermd.nix index c5020d5ef683..a034fd60d8e4 100644 --- a/nixos/tests/uptermd.nix +++ b/nixos/tests/uptermd.nix @@ -51,15 +51,14 @@ in client1.wait_until_succeeds("pgrep -u root bash") client1.execute("ssh-keygen -t ed25519 -N \"\" -f /root/.ssh/id_ed25519") - client1.send_chars("TERM=xterm upterm host --server ssh://server:1337 --force-command hostname -- bash > /tmp/session-details\n") + client1.send_chars("TERM=xterm upterm host --server ssh://server:1337 --accept --force-command hostname -- bash > /tmp/session-details\n") client1.wait_for_file("/tmp/session-details") - client1.send_key("q") # uptermd can't connect if we don't have a keypair client2.execute("ssh-keygen -t ed25519 -N \"\" -f /root/.ssh/id_ed25519") # Grep the ssh connect command from the output of 'upterm host' - ssh_command = client1.succeed("grep 'SSH Session' /tmp/session-details | cut -d':' -f2-").strip() + ssh_command = client1.succeed("grep 'SSH Command' /tmp/session-details | awk -F'│' '{print $3}'").strip() # Connect with client2. Because we used '--force-command hostname' we should get "client1" as the output output = client2.succeed(ssh_command) diff --git a/pkgs/applications/emulators/libretro/cores/pcsx-rearmed.nix b/pkgs/applications/emulators/libretro/cores/pcsx-rearmed.nix index a4b13d7ef359..907d6487e312 100644 --- a/pkgs/applications/emulators/libretro/cores/pcsx-rearmed.nix +++ b/pkgs/applications/emulators/libretro/cores/pcsx-rearmed.nix @@ -5,13 +5,13 @@ }: mkLibretroCore { core = "pcsx-rearmed"; - version = "0-unstable-2025-11-24"; + version = "0-unstable-2025-12-16"; src = fetchFromGitHub { owner = "libretro"; repo = "pcsx_rearmed"; - rev = "9059485691c44cb3a555464b06eddfb1082d586c"; - hash = "sha256-sm59Xo6bEiajbmRYbCNnWToDLpJPdaJhovJe+g+GWVg="; + rev = "8d91fbdff8f4db6e256370f030a9f6ac8c7f2c62"; + hash = "sha256-3DaKohQ5HoR7Un7mZF4yeFs4fQ0WfVUS15P1HQU0H+0="; }; dontConfigure = true; diff --git a/pkgs/applications/emulators/libretro/cores/stella.nix b/pkgs/applications/emulators/libretro/cores/stella.nix index dc3e0b30b9c1..84b78ba461a8 100644 --- a/pkgs/applications/emulators/libretro/cores/stella.nix +++ b/pkgs/applications/emulators/libretro/cores/stella.nix @@ -5,13 +5,13 @@ }: mkLibretroCore { core = "stella"; - version = "0-unstable-2025-12-03"; + version = "0-unstable-2025-12-14"; src = fetchFromGitHub { owner = "stella-emu"; repo = "stella"; - rev = "cc938d2194290ce25c8fbd149a864705887b1692"; - hash = "sha256-v4l7fgXvReMsqB7fbAzkY2vIfTGnMvSbeb8dPaK/KnA="; + rev = "6d2e3783fde1d99773a57a1ff0c14bfaeec22f93"; + hash = "sha256-/1S09xhwvLg6fDgujWVpHb5jQUqydTVTtEjHk4leYUY="; }; makefile = "Makefile"; diff --git a/pkgs/build-support/fetchdarcs/builder.sh b/pkgs/build-support/fetchdarcs/builder.sh index adc9c55939c3..bbcf59ae0885 100644 --- a/pkgs/build-support/fetchdarcs/builder.sh +++ b/pkgs/build-support/fetchdarcs/builder.sh @@ -1,5 +1,3 @@ -set -u - tagtext="" tagflags="" # Darcs hashes are sha1 (120 bits, 40-character hex) diff --git a/pkgs/by-name/aw/awscli2/package.nix b/pkgs/by-name/aw/awscli2/package.nix index 18ecc92b4754..b8a8e5356aa5 100644 --- a/pkgs/by-name/aw/awscli2/package.nix +++ b/pkgs/by-name/aw/awscli2/package.nix @@ -73,14 +73,14 @@ let in py.pkgs.buildPythonApplication rec { pname = "awscli2"; - version = "2.31.39"; # N.B: if you change this, check if overrides are still up-to-date + version = "2.32.15"; # N.B: if you change this, check if overrides are still up-to-date pyproject = true; src = fetchFromGitHub { owner = "aws"; repo = "aws-cli"; tag = version; - hash = "sha256-IuOamzLmnU3wIhgQIsWbU6GSRM2XLv0eH0gezp9IHNA="; + hash = "sha256-TOXoArw33exbMfKBnNSECymYS8hVzPoVOA7PWzbnroc="; }; postPatch = '' diff --git a/pkgs/by-name/ba/basedpyright/package.nix b/pkgs/by-name/ba/basedpyright/package.nix index 3d5832eca9a8..4c0ec9af0b88 100644 --- a/pkgs/by-name/ba/basedpyright/package.nix +++ b/pkgs/by-name/ba/basedpyright/package.nix @@ -18,13 +18,13 @@ buildNpmPackage rec { pname = "basedpyright"; - version = "1.36.0"; + version = "1.36.1"; src = fetchFromGitHub { owner = "detachhead"; repo = "basedpyright"; tag = "v${version}"; - hash = "sha256-S9//JconHEst7JkmTejwRc9gtmnokEV4otUQURA7pNI="; + hash = "sha256-c0yvnLOwOR4nMYbfyXe/QRUt3qaNRzwuS8UbyviJj9E="; }; npmDepsHash = "sha256-VHQOmRWirZYnoxk/JzGwFFV5QEIyHGg/isDvf/f7uro="; diff --git a/pkgs/by-name/be/bella/package.nix b/pkgs/by-name/be/bella/package.nix new file mode 100644 index 000000000000..ce363020da48 --- /dev/null +++ b/pkgs/by-name/be/bella/package.nix @@ -0,0 +1,70 @@ +{ + lib, + stdenv, + fetchFromGitHub, + pkg-config, + desktop-file-utils, + appstream-glib, + gjs, + glib, + gobject-introspection, + gtk4, + libadwaita, + libportal, + meson, + ninja, + wrapGAppsHook4, + nix-update-script, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "bella"; + version = "0.1.3"; + + src = fetchFromGitHub { + owner = "josephmawa"; + repo = "Bella"; + tag = "v${finalAttrs.version}"; + hash = "sha256-JSzgh56Ph8LjVY2uPfu1tacdr7BBbBzRfdWtcTRga7I="; + }; + + strictDeps = true; + + nativeBuildInputs = [ + pkg-config + desktop-file-utils # `desktop-file-validate`, `update-desktop-database` + appstream-glib # `appstream-util` + gjs + glib # `glib-compile-schemas` + gobject-introspection + gtk4 # `gtk4-update-icon-cache` + meson + ninja + wrapGAppsHook4 + ]; + + buildInputs = [ + libadwaita + libportal + ]; + + # GJS uses argv[0] to find gresource files, and wrappers will cause that mechanism to fail. + # Manually overriding the entrypoint name should do the job. + # + # - https://gitlab.gnome.org/GNOME/gjs/-/blob/6aca7b50785fa1638f144b17060870d721e3f65a/modules/script/package.js#L159 + # - https://gitlab.gnome.org/GNOME/gjs/-/blob/6aca7b50785fa1638f144b17060870d721e3f65a/modules/script/package.js#L37 + preFixup = '' + sed -i "1 a imports.package._findEffectiveEntryPointName = () => 'io.github.josephmawa.Bella';" $out/bin/io.github.josephmawa.Bella + ''; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "Simple eye dropper and color picker"; + homepage = "https://github.com/josephmawa/Bella"; + license = lib.licenses.gpl3Only; + maintainers = with lib.maintainers; [ pluiedev ]; + mainProgram = "io.github.josephmawa.Bella"; + platforms = lib.lists.intersectLists lib.platforms.linux gjs.meta.platforms; + }; +}) diff --git a/pkgs/by-name/bl/blackhole/package.nix b/pkgs/by-name/bl/blackhole/package.nix new file mode 100644 index 000000000000..b84a1a42b8b1 --- /dev/null +++ b/pkgs/by-name/bl/blackhole/package.nix @@ -0,0 +1,55 @@ +{ + stdenv, + lib, + fetchFromGitHub, + xcbuildHook, + apple-sdk, + nix-update-script, + channel ? "256ch", +}: +stdenv.mkDerivation (finalAttrs: { + pname = "blackhole"; + version = "0.6.1"; + + src = fetchFromGitHub { + owner = "existentialaudio"; + repo = "BlackHole"; + tag = "v${finalAttrs.version}"; + hash = "sha256-jFKi5LJdTOMFa1mErH6WsjgCtLCKzwpgn2+T3Fp9MtQ="; + }; + + nativeBuildInputs = [ + xcbuildHook + ]; + + buildInputs = [ apple-sdk ]; + + bundleId = "audio.existential.BlackHole${channel}"; + xcbuildFlags = [ + "-project" + "BlackHole.xcodeproj" + "-configuration" + "Release" + "PRODUCT_BUNDLE_IDENTIFIER=${finalAttrs.bundleId}" + "GCC_PREPROCESSOR_DEFINITIONS=$GCC_PREPROCESSOR_DEFINITIONS kDriver_Name=\\\"blackhole${channel}\\\" kPlugIn_BundleID=\\\"${finalAttrs.bundleId}\\\" kPlugIn_Icon=\\\"BlackHole.icns\\\"" + ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/Library/Audio/Plug-Ins/HAL + mv Products/Release/BlackHole.driver $out/Library/Audio/Plug-Ins/HAL/Blackhole${channel}.driver + + runHook postInstall + ''; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "Virtual audio driver for macOS"; + homepage = "https://existential.audio/blackhole"; + license = lib.licenses.gpl3Only; + platforms = lib.platforms.darwin; + maintainers = with lib.maintainers; [ eveeifyeve ]; + }; +}) diff --git a/pkgs/by-name/ca/cargo-dist/package.nix b/pkgs/by-name/ca/cargo-dist/package.nix index b6a54c858b81..c90f1821912f 100644 --- a/pkgs/by-name/ca/cargo-dist/package.nix +++ b/pkgs/by-name/ca/cargo-dist/package.nix @@ -13,16 +13,16 @@ rustPlatform.buildRustPackage rec { pname = "cargo-dist"; - version = "0.30.2"; + version = "0.30.3"; src = fetchFromGitHub { owner = "axodotdev"; repo = "cargo-dist"; rev = "v${version}"; - hash = "sha256-1stUmm7rtNB2z2srOzDvQ9QaGsS0CySBOHt118vmJoM="; + hash = "sha256-x59bUgd89XAwuHwGvREDqAS/cI4Ot7HGTONGbTOgzw8="; }; - cargoHash = "sha256-Il5PVJHoNdifqUcXxKR+j+Lgga0kIsl7IJp9oGanZ+c="; + cargoHash = "sha256-OTbUTYxqEzE3hyHq2hCbhigz5xJT2Bjd/pu6EI+0aWA="; nativeBuildInputs = [ pkg-config diff --git a/pkgs/by-name/ca/cargo-rail/package.nix b/pkgs/by-name/ca/cargo-rail/package.nix new file mode 100644 index 000000000000..864461fafb47 --- /dev/null +++ b/pkgs/by-name/ca/cargo-rail/package.nix @@ -0,0 +1,68 @@ +{ + lib, + rustPlatform, + fetchCrate, + pkg-config, + curl, + openssl, +}: + +rustPlatform.buildRustPackage rec { + pname = "cargo-rail"; + version = "0.7.0"; + + src = fetchCrate { + inherit pname version; + hash = "sha256-L8yh47lYvXVGOr8jDZ4Gk2rIfUnr88q9OR5/iDrJua0="; + }; + + cargoHash = "sha256-XvXyG3N0cuqqm0LSe7MFj6oDlCQC3tFGa7rxyQIfa8o="; + + nativeBuildInputs = [ pkg-config ]; + + buildInputs = [ + curl + openssl + ]; + + # These fail because they need a git repository + checkFlags = [ + "--skip=git::defaults::tests::test_detect_default_base_ref" + "--skip=git::ops::tests::test_collect_tree_files_nonexistent" + "--skip=git::defaults::tests::test_detect_returns_usable_ref" + "--skip=git::mappings::tests::test_reverse_mapping_persistence" + "--skip=git::mappings::tests::test_save_and_load" + "--skip=git::ops::tests::test_collect_tree_files_with_bulk" + "--skip=git::ops::tests::test_get_commits_bulk" + "--skip=git::ops::tests::test_get_commits_touching_path" + "--skip=git::ops::tests::test_read_files_bulk" + "--skip=git::ops::tests::test_get_changed_files" + "--skip=git::ops::tests::test_commit_history" + "--skip=git::ops::tests::test_read_files_bulk_empty" + "--skip=sync::conflict::tests::test_clean_merge" + "--skip=sync::conflict::tests::test_ours_strategy" + "--skip=sync::conflict::tests::test_conflict_detection" + "--skip=sync::conflict::tests::test_union_strategy" + "--skip=split::engine::tests::test_copy_directory_recursive" + "--skip=sync::conflict::tests::test_theirs_strategy" + "--skip=workspace::change_analyzer::tests::test_categorize_comprehensive" + "--skip=workspace::change_analyzer::tests::test_proc_macro_detection" + "--skip=workspace::context::tests::test_cargo_state_wrapper" + "--skip=workspace::context::tests::test_git_state_wrapper" + "--skip=workspace::context::tests::test_workspace_context_build" + "--skip=workspace::view::tests::test_workspace_view_all_crates" + "--skip=workspace::view::tests::test_workspace_view_crate_info" + "--skip=workspace::view::tests::test_workspace_view_proc_macro" + "--skip=workspace::context::tests::test_graph_integration" + ]; + + meta = { + description = "Graph-aware monorepo orchestration for Rust workspaces"; + mainProgram = "cargo-rail"; + homepage = "https://github.com/loadingalias/cargo-rail"; + changelog = "https://github.com/loadingalias/cargo-rail/releases/tag/v${version}"; + license = lib.licenses.mit; + platforms = lib.platforms.unix; + maintainers = with lib.maintainers; [ matthiasbeyer ]; + }; +} diff --git a/pkgs/by-name/co/codefresh/package.nix b/pkgs/by-name/co/codefresh/package.nix index f825c2b9f0d8..c0e52e55b5ae 100644 --- a/pkgs/by-name/co/codefresh/package.nix +++ b/pkgs/by-name/co/codefresh/package.nix @@ -11,18 +11,18 @@ stdenv.mkDerivation (finalAttrs: { pname = "codefresh"; - version = "0.89.2"; + version = "0.89.6"; src = fetchFromGitHub { owner = "codefresh-io"; repo = "cli"; rev = "v${finalAttrs.version}"; - hash = "sha256-Cf3I+w0rVsjsu+m+vE/pOcASYTmsRi0yAQVpJkYbzUU="; + hash = "sha256-MlK+vWS2ylrWjnsNFP/FRr6YWXlpfE3Z6vMiNJvvdv0="; }; offlineCache = fetchYarnDeps { yarnLock = "${finalAttrs.src}/yarn.lock"; - hash = "sha256-wD3BmWjrFGkNqUhbo2TrWLwgo2o2MiQn7X3fyDYt5dw="; + hash = "sha256-CZFS13UqPiJtLFCkeSTp2GSJw+QY48ob4zgfaPm057U="; }; nativeBuildInputs = [ yarnConfigHook @@ -42,6 +42,9 @@ stdenv.mkDerivation (finalAttrs: { homepage = "https://github.com/codefresh-io/cli"; license = lib.licenses.mit; mainProgram = "codefresh"; - maintainers = [ lib.maintainers.takac ]; + maintainers = [ + lib.maintainers.burdzwastaken + lib.maintainers.takac + ]; }; }) diff --git a/pkgs/by-name/ev/evcxr/package.nix b/pkgs/by-name/ev/evcxr/package.nix index 6b6c235dfadc..fb6528a60c9e 100644 --- a/pkgs/by-name/ev/evcxr/package.nix +++ b/pkgs/by-name/ev/evcxr/package.nix @@ -9,7 +9,7 @@ libiconv, cargo, gcc, - mold, + mold-unwrapped, rustc, nix-update-script, @@ -75,7 +75,7 @@ rustPlatform.buildRustPackage (finalAttrs: { gcc rustc ] - ++ lib.optional withMold mold + ++ lib.optional withMold mold-unwrapped ) } \ --set-default RUST_SRC_PATH "$RUST_SRC_PATH" diff --git a/pkgs/by-name/fa/fabric-ai/package.nix b/pkgs/by-name/fa/fabric-ai/package.nix index 61476bdb572f..42d20a27db7e 100644 --- a/pkgs/by-name/fa/fabric-ai/package.nix +++ b/pkgs/by-name/fa/fabric-ai/package.nix @@ -8,13 +8,13 @@ buildGoModule rec { pname = "fabric-ai"; - version = "1.4.340"; + version = "1.4.345"; src = fetchFromGitHub { owner = "danielmiessler"; repo = "fabric"; tag = "v${version}"; - hash = "sha256-tXT5Xc/izx8tBqj0plvjVLMhpZlGzEIGx2qEPO3xmVM="; + hash = "sha256-X4qdFSAO4bE3yVdpmq1r7rAEVAIOeQ4+YY/w4F86Fs8="; }; vendorHash = "sha256-qWaMBhjt20WAIhDcjY4oOFBT+neJiXg0N2WsPasuHSU="; diff --git a/pkgs/by-name/fe/feroxbuster/package.nix b/pkgs/by-name/fe/feroxbuster/package.nix index 017b59c7acc8..6c5ab9db321a 100644 --- a/pkgs/by-name/fe/feroxbuster/package.nix +++ b/pkgs/by-name/fe/feroxbuster/package.nix @@ -11,16 +11,16 @@ rustPlatform.buildRustPackage rec { pname = "feroxbuster"; - version = "2.13.0"; + version = "2.13.1"; src = fetchFromGitHub { owner = "epi052"; repo = "feroxbuster"; tag = "v${version}"; - hash = "sha256-4YjZhBG+4Oo8mfEslNCNl0KFiqWsoreo9cPGYUoDJlk="; + hash = "sha256-x0oNgDEuRIHDUUSAiIgcjmm6NadyBFuvz/hOcqquM3g="; }; - cargoHash = "sha256-D5wiNzB83AWAy2N2ykzu6PNJPZ2PT/qtLPeiQzT2OxE="; + cargoHash = "sha256-kWRODW1BsnifEqGZj8jK5tUK/5zK1AIRSq3JSo6YmkI="; OPENSSL_NO_VENDOR = true; diff --git a/pkgs/by-name/fr/framac/package.nix b/pkgs/by-name/fr/framac/package.nix index 2aa780e9df47..ba2c03d9c2fa 100644 --- a/pkgs/by-name/fr/framac/package.nix +++ b/pkgs/by-name/fr/framac/package.nix @@ -74,6 +74,7 @@ stdenv.mkDerivation rec { ]); buildInputs = with ocamlPackages; [ + camlzip dune-site dune-configurator ocamlgraph diff --git a/pkgs/by-name/gi/git-bug/package.nix b/pkgs/by-name/gi/git-bug/package.nix index 3a7ac839d093..832e069d171b 100644 --- a/pkgs/by-name/gi/git-bug/package.nix +++ b/pkgs/by-name/gi/git-bug/package.nix @@ -2,6 +2,7 @@ lib, buildGoModule, fetchFromGitHub, + gitMinimal, installShellFiles, }: @@ -20,7 +21,24 @@ buildGoModule rec { nativeBuildInputs = [ installShellFiles ]; - doCheck = false; + nativeCheckInputs = [ + gitMinimal + ]; + + checkFlags = + let + integrationTests = [ + "TestValidateUsername/existing_organisation" + "TestValidateUsername/existing_organisation_with_bad_case" + "TestValidateUsername/existing_username" + "TestValidateUsername/existing_username_with_bad_case" + "TestValidateUsername/non_existing_username" + "TestValidateProject/public_project" + ]; + in + [ + "-skip=^${lib.concatStringsSep "$|^" integrationTests}$" + ]; excludedPackages = [ "doc" diff --git a/pkgs/by-name/gi/git-credential-gopass/package.nix b/pkgs/by-name/gi/git-credential-gopass/package.nix new file mode 100644 index 000000000000..c5b2ad2852db --- /dev/null +++ b/pkgs/by-name/gi/git-credential-gopass/package.nix @@ -0,0 +1,61 @@ +{ + lib, + buildGoModule, + fetchFromGitHub, + makeWrapper, + writableTmpDirAsHomeHook, + gopass, + versionCheckHook, +}: + +buildGoModule (finalAttrs: { + pname = "git-credential-gopass"; + version = "1.16.1"; + + src = fetchFromGitHub { + owner = "gopasspw"; + repo = "git-credential-gopass"; + tag = "v${finalAttrs.version}"; + hash = "sha256-IEur3Sw2zRYJxlwAhgpb2OnBt+FcC+OdeT7M/LzJwoY="; + }; + + vendorHash = "sha256-mtJIm7dH3jP7p0R0KxN0Yf7mi9rkJ73u8biy2Ygvk3k="; + + subPackages = [ "." ]; + + nativeBuildInputs = [ + makeWrapper + writableTmpDirAsHomeHook + ]; + + ldflags = [ + "-s" + "-w" + "-X main.version=${finalAttrs.version}" + "-X main.commit=${finalAttrs.src.rev}" + ]; + + postFixup = '' + wrapProgram $out/bin/git-credential-gopass \ + --prefix PATH : "${gopass.wrapperPath}" + ''; + + doInstallCheck = true; + nativeInstallCheckInputs = [ + versionCheckHook + gopass + ]; + versionCheckKeepEnvironment = [ "HOME" ]; + preVersionCheck = '' + gopass setup --name "user" --email "user@localhost" + ''; + + meta = { + description = "Manage git credentials using gopass"; + homepage = "https://github.com/gopasspw/git-credential-gopass"; + changelog = "https://github.com/gopasspw/git-credential-gopass/blob/v${finalAttrs.version}/CHANGELOG.md"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ benneti ]; + mainProgram = "git-credential-gopass"; + }; +}) diff --git a/pkgs/by-name/gi/gitleaks/package.nix b/pkgs/by-name/gi/gitleaks/package.nix index 446ae128209c..d4bb56aa35f4 100644 --- a/pkgs/by-name/gi/gitleaks/package.nix +++ b/pkgs/by-name/gi/gitleaks/package.nix @@ -35,7 +35,10 @@ buildGoModule rec { nativeCheckInputs = [ git ]; - postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) '' + postInstall = '' + install -Dm444 config/gitleaks.toml $out/etc/gitleaks.toml + '' + + lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) '' installShellCompletion --cmd ${pname} \ --bash <($out/bin/${pname} completion bash) \ --fish <($out/bin/${pname} completion fish) \ diff --git a/pkgs/tools/security/gopass/hibp.nix b/pkgs/by-name/go/gopass-hibp/package.nix similarity index 50% rename from pkgs/tools/security/gopass/hibp.nix rename to pkgs/by-name/go/gopass-hibp/package.nix index 6d19f7972909..7b7b54b201c6 100644 --- a/pkgs/tools/security/gopass/hibp.nix +++ b/pkgs/by-name/go/gopass-hibp/package.nix @@ -1,23 +1,25 @@ { lib, - makeWrapper, buildGoModule, fetchFromGitHub, + makeWrapper, gopass, + versionCheckHook, + writableTmpDirAsHomeHook, }: -buildGoModule rec { +buildGoModule (finalAttrs: { pname = "gopass-hibp"; - version = "1.16.0"; + version = "1.16.1"; src = fetchFromGitHub { owner = "gopasspw"; repo = "gopass-hibp"; - rev = "v${version}"; - hash = "sha256-S4X2DWaktAfoqjLz7yAF5I0v+01bQbQLSgEb/105iCk="; + tag = "v${finalAttrs.version}"; + hash = "sha256-BlZxXN14bOO7LMdjS/ooqVKmRZQTpNYlYp4A4rTew4Q="; }; - vendorHash = "sha256-8LC271XuMeDGWZnysMMumoqLwklQpDKr8VF/zyCvwNA="; + vendorHash = "sha256-LUmxstDE0paYaNS2Em1Xc6pJmHHWk/IJEjTZXq5qWW8="; subPackages = [ "." ]; @@ -26,13 +28,24 @@ buildGoModule rec { ldflags = [ "-s" "-w" - "-X main.version=${version}" - "-X main.commit=${src.rev}" + "-X main.version=${finalAttrs.version}" + "-X main.commit=${finalAttrs.src.rev}" ]; postFixup = '' wrapProgram $out/bin/gopass-hibp \ - --prefix PATH : "${lib.makeBinPath [ gopass ]}" + --prefix PATH : "${gopass.wrapperPath}" + ''; + + doInstallCheck = true; + nativeInstallCheckInputs = [ + versionCheckHook + writableTmpDirAsHomeHook + gopass + ]; + versionCheckKeepEnvironment = [ "HOME" ]; + preVersionCheck = '' + gopass setup --name "user" --email "user@localhost" ''; __darwinAllowLocalNetworking = true; @@ -40,9 +53,9 @@ buildGoModule rec { meta = { description = "Gopass haveibeenpwnd.com integration"; homepage = "https://github.com/gopasspw/gopass-hibp"; - changelog = "https://github.com/gopasspw/gopass-hibp/blob/v${version}/CHANGELOG.md"; + changelog = "https://github.com/gopasspw/gopass-hibp/blob/v${finalAttrs.version}/CHANGELOG.md"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ sikmir ]; mainProgram = "gopass-hibp"; }; -} +}) diff --git a/pkgs/by-name/go/gopass-jsonapi/package.nix b/pkgs/by-name/go/gopass-jsonapi/package.nix index de9d0d47098f..e8f18eb1f1f0 100644 --- a/pkgs/by-name/go/gopass-jsonapi/package.nix +++ b/pkgs/by-name/go/gopass-jsonapi/package.nix @@ -1,17 +1,17 @@ { lib, - stdenv, makeWrapper, buildGoModule, fetchFromGitHub, installShellFiles, + writableTmpDirAsHomeHook, jq, gnupg, gopass, + versionCheckHook, }: let - # https://github.com/gopasspw/gopass-jsonapi/blob/v1.16.0/internal/jsonapi/manifest/manifest_path_linux.go manifestPaths = { firefox = "$out/lib/mozilla/native-messaging-hosts/com.justwatch.gopass.json"; @@ -22,38 +22,37 @@ let iridium = "$out/etc/iridium-browser/native-messaging-hosts/com.justwatch.gopass.json"; slimjet = "$out/etc/opt/slimjet/native-messaging-hosts/com.justwatch.gopass.json"; }; - in -buildGoModule rec { +buildGoModule (finalAttrs: { pname = "gopass-jsonapi"; - version = "1.16.0"; + version = "1.16.1"; src = fetchFromGitHub { owner = "gopasspw"; repo = "gopass-jsonapi"; - rev = "v${version}"; - hash = "sha256-LPGAK/vwcbsAvL3TXX78cPCbNbYXh2++Ta1D8RjbKK4="; + tag = "v${finalAttrs.version}"; + hash = "sha256-JN/SC7lvPVTONNbOUmgu//xK/GaR5Tljxn99Zb1J/kQ="; }; - vendorHash = "sha256-TTTjQRUYKqtyE/vFHol0ewbkh+2oGo9Pjr1qTmfXrq4="; + vendorHash = "sha256-Ki0gzhDkoUvgTCN4bYrqvN0u3AgdG22MWxcVHIE9lUQ="; subPackages = [ "." ]; nativeBuildInputs = [ installShellFiles makeWrapper + writableTmpDirAsHomeHook ]; ldflags = [ "-s" "-w" - "-X main.version=${version}" - "-X main.commit=${src.rev}" + "-X main.version=${finalAttrs.version}" + "-X main.commit=${finalAttrs.src.rev}" ]; postInstall = '' # Generate native messaging manifests for Chrome and Firefox. - export HOME=$(mktemp -d) ${gnupg}/bin/gpg --batch --passphrase "" --quick-generate-key "user " ${gopass}/bin/gopass setup --name "user" --email "user@localhost" @@ -64,7 +63,7 @@ buildGoModule rec { in # The options after `--print=false` are of no effect, but if missing # `gopass-jsonapi configure` will ask for them. (`--libpath` and `--global` - # are overriden by `--manifest-path`. `--libpath` is only used to + # are overridden by `--manifest-path`. `--libpath` is only used to # compute Firefox's global manifest path. See # https://github.com/gopasspw/gopass-jsonapi/blob/v1.16.0/setup_others.go#L33-L46) # @@ -96,10 +95,16 @@ buildGoModule rec { --prefix PATH : "${gopass.wrapperPath}" ''; + doInstallCheck = true; + nativeInstallCheckInputs = [ + versionCheckHook + ]; + versionCheckKeepEnvironment = [ "HOME" ]; + meta = { description = "Enables communication with gopass via JSON messages"; homepage = "https://github.com/gopasspw/gopass-jsonapi"; - changelog = "https://github.com/gopasspw/gopass-jsonapi/blob/v${version}/CHANGELOG.md"; + changelog = "https://github.com/gopasspw/gopass-jsonapi/blob/v${finalAttrs.version}/CHANGELOG.md"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ maxhbr @@ -107,4 +112,4 @@ buildGoModule rec { ]; mainProgram = "gopass-jsonapi"; }; -} +}) diff --git a/pkgs/tools/security/gopass/summon.nix b/pkgs/by-name/go/gopass-summon-provider/package.nix similarity index 50% rename from pkgs/tools/security/gopass/summon.nix rename to pkgs/by-name/go/gopass-summon-provider/package.nix index 70390ec48e4e..599daa4b4bce 100644 --- a/pkgs/tools/security/gopass/summon.nix +++ b/pkgs/by-name/go/gopass-summon-provider/package.nix @@ -1,23 +1,25 @@ { lib, - makeWrapper, buildGoModule, fetchFromGitHub, + makeWrapper, gopass, + versionCheckHook, + writableTmpDirAsHomeHook, }: -buildGoModule rec { +buildGoModule (finalAttrs: { pname = "gopass-summon-provider"; - version = "1.16.0"; + version = "1.16.1"; src = fetchFromGitHub { owner = "gopasspw"; repo = "gopass-summon-provider"; - rev = "v${version}"; - hash = "sha256-ES+lU0iBwzkomWoVKQrKElOaH9XiumnzpBVRjWbI/cM="; + tag = "v${finalAttrs.version}"; + hash = "sha256-j3N/snUCsw/NlMQO9CoVRf6JCG48DEHqrJnZ7wiVUPk="; }; - vendorHash = "sha256-gE8x+81DFzw0TSkxwU5s+OQccSvfRVH6dV+sWhMdBxI="; + vendorHash = "sha256-FhS79dSY9FjlScoXd6EbYRRwEBObZLO9g/SXBEXQpjM="; subPackages = [ "." ]; @@ -26,21 +28,32 @@ buildGoModule rec { ldflags = [ "-s" "-w" - "-X main.version=${version}" - "-X main.commit=${src.rev}" + "-X main.version=${finalAttrs.version}" + "-X main.commit=${finalAttrs.src.rev}" ]; postFixup = '' wrapProgram $out/bin/gopass-summon-provider \ - --prefix PATH : "${lib.makeBinPath [ gopass ]}" + --prefix PATH : "${gopass.wrapperPath}" + ''; + + doInstallCheck = true; + nativeInstallCheckInputs = [ + versionCheckHook + writableTmpDirAsHomeHook + gopass + ]; + versionCheckKeepEnvironment = [ "HOME" ]; + preVersionCheck = '' + gopass setup --name "user" --email "user@localhost" ''; meta = { description = "Gopass Summon Provider"; homepage = "https://github.com/gopasspw/gopass-summon-provider"; - changelog = "https://github.com/gopasspw/gopass-summon-provider/blob/v${version}/CHANGELOG.md"; + changelog = "https://github.com/gopasspw/gopass-summon-provider/blob/v${finalAttrs.version}/CHANGELOG.md"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ sikmir ]; mainProgram = "gopass-summon-provider"; }; -} +}) diff --git a/pkgs/tools/security/gopass/default.nix b/pkgs/by-name/go/gopass/package.nix similarity index 96% rename from pkgs/tools/security/gopass/default.nix rename to pkgs/by-name/go/gopass/package.nix index a2cfaeed0194..7f9bbea39498 100644 --- a/pkgs/tools/security/gopass/default.nix +++ b/pkgs/by-name/go/gopass/package.nix @@ -28,7 +28,7 @@ let in buildGoModule (finalAttrs: { pname = "gopass"; - version = "1.16.0"; + version = "1.16.1"; nativeBuildInputs = [ installShellFiles @@ -39,7 +39,7 @@ buildGoModule (finalAttrs: { owner = "gopasspw"; repo = "gopass"; tag = "v${finalAttrs.version}"; - hash = "sha256-JBa/PhVj0cKr9Btz9KzhGgsL4APAfZ/ixHGHWzd2TfA="; + hash = "sha256-Yr66+LUEoONNkSQUQhIWtLvxN0a5YtRVbn/nJRLqn+E="; }; vendorHash = "sha256-ebnnnAD7SQJrSVOPborHUWd8ThOstIgihEIUjrnCztQ="; @@ -89,6 +89,7 @@ buildGoModule (finalAttrs: { maintainers = with lib.maintainers; [ rvolosatovs sikmir + yzx9 ]; changelog = "https://github.com/gopasspw/gopass/blob/v${finalAttrs.version}/CHANGELOG.md"; diff --git a/pkgs/by-name/go/gotip/package.nix b/pkgs/by-name/go/gotip/package.nix index be48b42590bc..f3f2a963194e 100644 --- a/pkgs/by-name/go/gotip/package.nix +++ b/pkgs/by-name/go/gotip/package.nix @@ -8,16 +8,16 @@ buildGoModule (finalAttrs: { pname = "gotip"; - version = "0.5.0"; + version = "0.6.2"; src = fetchFromGitHub { owner = "lusingander"; repo = "gotip"; tag = "v${finalAttrs.version}"; - hash = "sha256-z5Xk+lTDAvkMOJAR6eIC6rg+CP9wv+CSANdgj+KmPjA="; + hash = "sha256-i5DgBuRHGLuR99lAv8M8eycd8MtEUtgGjKrI4YMoGIo="; }; - vendorHash = "sha256-AgyFhoyPyXN5ngTi8iKzbx0wOqlu64gFdrygPOFHZT4="; + vendorHash = "sha256-+saAOzbBpmd7+s7FXUUB30tmi53RpDRckeLiT36ykE4="; ldflags = [ "-s" diff --git a/pkgs/by-name/ha/hail/package.nix b/pkgs/by-name/ha/hail/package.nix index a85c1a97cce5..5c66ab427658 100644 --- a/pkgs/by-name/ha/hail/package.nix +++ b/pkgs/by-name/ha/hail/package.nix @@ -15,17 +15,17 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "hail"; - version = "0.2.2"; + version = "0.3.0"; src = fetchFromGitea { domain = "codeberg.org"; owner = "periwinkle"; repo = "hail"; tag = finalAttrs.version; - hash = "sha256-LJodAS24x/dBNyrUxT9F0FHnu4s+Cb+CCtoe7nPM66w="; + hash = "sha256-PpZfOC4M6XNcdAWd2E8ONruOq9yOTRutjKi86mmoxAo="; }; - cargoHash = "sha256-kEPnfRY2McSVNBuBC9VSKK5p8JIUeZh/LeFZQa1Hn5U="; + cargoHash = "sha256-+zxoICy3lrS+7fZU0yD1C4uKRj/JtDvizKla1xmz+PY="; nativeBuildInputs = [ pkg-config ]; diff --git a/pkgs/by-name/ho/home-manager/package.nix b/pkgs/by-name/ho/home-manager/package.nix index a07bb0716c28..d2a0f2524d43 100644 --- a/pkgs/by-name/ho/home-manager/package.nix +++ b/pkgs/by-name/ho/home-manager/package.nix @@ -19,14 +19,14 @@ stdenvNoCC.mkDerivation (finalAttrs: { pname = "home-manager"; - version = "0-unstable-2025-12-05"; + version = "0-unstable-2025-12-13"; src = fetchFromGitHub { name = "home-manager-source"; owner = "nix-community"; repo = "home-manager"; - rev = "27a6182347ccae90a88231ae0dc5dfa7d15815bb"; - hash = "sha256-fZatn/KLfHLDXnF0wy7JxXqGaZmGDTVufT4o/AOlj44="; + rev = "d787ec69c3216ea33be1c0424fe65cb23aa8fb31"; + hash = "sha256-KOP4QnkiRwiD5KEOr6ceF67rfTP1OqPmCCft6xDC3k4="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/hy/hydra/package.nix b/pkgs/by-name/hy/hydra/package.nix index 75be8f65c457..2498149399e7 100644 --- a/pkgs/by-name/hy/hydra/package.nix +++ b/pkgs/by-name/hy/hydra/package.nix @@ -1,7 +1,7 @@ { stdenv, lib, - nix, + nixVersions, perlPackages, buildEnv, makeWrapper, @@ -50,6 +50,8 @@ }: let + nix = nixVersions.nix_2_32; + perlDeps = buildEnv { name = "hydra-perl-deps"; paths = diff --git a/pkgs/by-name/li/libvmi/package.nix b/pkgs/by-name/li/libvmi/package.nix index d8e240b5db67..aec24a470286 100644 --- a/pkgs/by-name/li/libvmi/package.nix +++ b/pkgs/by-name/li/libvmi/package.nix @@ -24,14 +24,14 @@ let pname = "libvmi"; - version = "0.14.0-unstable-2025-04-09"; + version = "0.14.0-unstable-2025-12-14"; libVersion = "0.0.15"; src = fetchFromGitHub { owner = "libvmi"; repo = "libvmi"; - rev = "872ccc6efac607b83b603fef691c3641656fed34"; - hash = "sha256-8rqcDU4y86Uq6I7LOOMhMYWLEt7TxvzHilddUoutMOw="; + rev = "b196d72af1c549a494a321a15f725fbd90cd4686"; + hash = "sha256-JxATmUI/rsWUF/ChavD0lHNNSeblzV5xtG/4BDcJ9T4="; }; in diff --git a/pkgs/by-name/li/littlegptracker/package.nix b/pkgs/by-name/li/littlegptracker/package.nix index 62d0dca5bd3d..885772e4d402 100644 --- a/pkgs/by-name/li/littlegptracker/package.nix +++ b/pkgs/by-name/li/littlegptracker/package.nix @@ -14,13 +14,13 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "littlegptracker"; - version = "1.4.2"; + version = "1.5.0"; src = fetchFromGitHub { owner = "djdiskmachine"; repo = "littlegptracker"; tag = finalAttrs.version; - hash = "sha256-1uXC5nJ63YguQuNIkuK0yx9lmrMBqw0WdlmCV8o11cE="; + hash = "sha256-SidrFsqAn0JQqthEoYA9H0RdF6jeCeP2Pe+UpAbbL48="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/mi/mixxx/package.nix b/pkgs/by-name/mi/mixxx/package.nix index ee9cbed563a7..0eb52e3fb809 100644 --- a/pkgs/by-name/mi/mixxx/package.nix +++ b/pkgs/by-name/mi/mixxx/package.nix @@ -51,13 +51,13 @@ stdenv.mkDerivation rec { pname = "mixxx"; - version = "2.5.3"; + version = "2.5.4"; src = fetchFromGitHub { owner = "mixxxdj"; repo = "mixxx"; rev = version; - hash = "sha256-WmYoblIVygLnjNaFnRoEHmfnQcaBtIVOBZicEwD4NMw="; + hash = "sha256-D/+ys7VE2/xHUiDG80/voc1BFxwp9M0V89gPWy57XA0="; }; # Should be removed when bumping to 2.6.x diff --git a/pkgs/by-name/ni/nickel/package.nix b/pkgs/by-name/ni/nickel/package.nix index f91f4c5ef3d1..6d50a02eb1e2 100644 --- a/pkgs/by-name/ni/nickel/package.nix +++ b/pkgs/by-name/ni/nickel/package.nix @@ -14,16 +14,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "nickel"; - version = "1.14.0"; + version = "1.15.1"; src = fetchFromGitHub { owner = "tweag"; repo = "nickel"; tag = finalAttrs.version; - hash = "sha256-ee9P2XrUToW0WJJk8QnIkY6/9t+RCY98Ai05cz9ViIY="; + hash = "sha256-NGivq2V4wdJapzU5iLcuHrz2RDz2WhnikmCq+75a338="; }; - cargoHash = "sha256-nO8T+nSfR/EGW8IhjevmCH10P0ky+D0vyULSCVL5OYE="; + cargoHash = "sha256-uCy/Qo92yZ4pjjgW64nWYH21EbdMMwGXP5522tl8MAE="; cargoBuildFlags = [ "-p nickel-lang-cli" diff --git a/pkgs/by-name/nu/nuclei/package.nix b/pkgs/by-name/nu/nuclei/package.nix index eea365cd5601..4fd37338d4cb 100644 --- a/pkgs/by-name/nu/nuclei/package.nix +++ b/pkgs/by-name/nu/nuclei/package.nix @@ -7,16 +7,16 @@ buildGoModule rec { pname = "nuclei"; - version = "3.6.0"; + version = "3.6.1"; src = fetchFromGitHub { owner = "projectdiscovery"; repo = "nuclei"; tag = "v${version}"; - hash = "sha256-jZInWfXHUuntdEKdaFV46/A7NTcCB77bLYaFSL9w+Os="; + hash = "sha256-CuR/8vTNnHsD4yuc39SF4kjh6SCH7VTVgicU7HekYhI="; }; - vendorHash = "sha256-jw6DhUCFz7dnWX3tMsj2fMX36YA5RwkQlONVQHg37dY="; + vendorHash = "sha256-j5+PpCAYV5NsXQHbyXg7Of6MmEmGDbLZBsXBSKCBo+8="; proxyVendor = true; # hash mismatch between Linux and Darwin diff --git a/pkgs/by-name/oh/oha/package.nix b/pkgs/by-name/oh/oha/package.nix index 7a4519e8dbf4..d9667ca825e2 100644 --- a/pkgs/by-name/oh/oha/package.nix +++ b/pkgs/by-name/oh/oha/package.nix @@ -11,16 +11,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "oha"; - version = "1.12.0"; + version = "1.12.1"; src = fetchFromGitHub { owner = "hatoo"; repo = "oha"; tag = "v${finalAttrs.version}"; - hash = "sha256-GDFS/f9fombAEXEf0f/issQFrFviU1nsLOIQ5nthPHk="; + hash = "sha256-Yz9RuYUwwvXef0XzVHCv5/uzT6KGz+tQVMRVUJN81zU="; }; - cargoHash = "sha256-pZnHE89kwuByMtm5m9QLSuhJ6wxFrbVOShF7T6c2494="; + cargoHash = "sha256-suHyApGbRF8KaH9Xb47zvnoenPIA7NdiULuvUXViLu0="; CARGO_PROFILE_RELEASE_LTO = "fat"; CARGO_PROFILE_RELEASE_CODEGEN_UNITS = "1"; diff --git a/pkgs/by-name/op/opencloud/package.nix b/pkgs/by-name/op/opencloud/package.nix index c47fef0788ad..1bac191843ad 100644 --- a/pkgs/by-name/op/opencloud/package.nix +++ b/pkgs/by-name/op/opencloud/package.nix @@ -28,13 +28,13 @@ let in buildGoModule rec { pname = "opencloud"; - version = "4.0.0"; + version = "4.1.0"; src = fetchFromGitHub { owner = "opencloud-eu"; repo = "opencloud"; tag = "v${version}"; - hash = "sha256-7yl6jOJZYJjSc48ko973NWTRPjlaVkdM2u8TZ2NfR74="; + hash = "sha256-sZcGDE/CwB/u9LxsfFY/m4o58NjXMgTX0yx719R+wjc="; }; postPatch = '' diff --git a/pkgs/by-name/op/opencloud/web.nix b/pkgs/by-name/op/opencloud/web.nix index 24faec5b3311..56364d920659 100644 --- a/pkgs/by-name/op/opencloud/web.nix +++ b/pkgs/by-name/op/opencloud/web.nix @@ -9,19 +9,19 @@ stdenvNoCC.mkDerivation (finalAttrs: { pname = "opencloud-web"; - version = "4.2.1"; + version = "4.3.0"; src = fetchFromGitHub { owner = "opencloud-eu"; repo = "web"; tag = "v${finalAttrs.version}"; - hash = "sha256-TP9DM6s0bVpBeY4LEGDuTN8yZEwvbXpSDJXKh7j4COE="; + hash = "sha256-oLGmktFeDykpaK8YqMoIl7RrkPvHw2EULkbn1XDS/Yk="; }; pnpmDeps = pnpm_10.fetchDeps { inherit (finalAttrs) pname version src; fetcherVersion = 1; - hash = "sha256-6eDMIad3BNN3HTe0e2R8h0Ua1cZPeRGV2tR0gKh3NFY="; + hash = "sha256-+oCoK6u46oPVtsvUEksuFFtjogirN370IsM33H5oOA4="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/op/openscad/package.nix b/pkgs/by-name/op/openscad/package.nix index e914d3043f83..cde2b79f3020 100644 --- a/pkgs/by-name/op/openscad/package.nix +++ b/pkgs/by-name/op/openscad/package.nix @@ -168,7 +168,7 @@ stdenv.mkDerivation rec { postInstall = lib.optionalString stdenv.hostPlatform.isDarwin '' mkdir $out/Applications mv $out/bin/*.app $out/Applications - rmdir $out/bin || true + ln -s "$out/Applications/OpenSCAD.app/Contents/MacOS/OpenSCAD" "$out/bin/openscad" mv --target-directory=$out/Applications/OpenSCAD.app/Contents/Resources \ $out/share/openscad/{examples,color-schemes,locale,libraries,fonts,templates} diff --git a/pkgs/by-name/pr/pretty-php/package.nix b/pkgs/by-name/pr/pretty-php/package.nix index 3e8a806249f8..16c1974f1c69 100644 --- a/pkgs/by-name/pr/pretty-php/package.nix +++ b/pkgs/by-name/pr/pretty-php/package.nix @@ -6,16 +6,16 @@ }: php.buildComposerProject2 (finalAttrs: { pname = "pretty-php"; - version = "0.4.94"; + version = "0.4.95"; src = fetchFromGitHub { owner = "lkrms"; repo = "pretty-php"; tag = "v${finalAttrs.version}"; - hash = "sha256-zBhxuEViLxeQ9m3u1L0wYqeL+YEWWwvJS7PtsFPO5QU="; + hash = "sha256-V+xncL02fY0olGxqjWBWqD6N1J0XOeOPe55aULuN2bA="; }; - vendorHash = "sha256-Y1/wNFPXza2aO07ZFybpwI3XbTVBhEvFHs9ygHQbcSo="; + vendorHash = "sha256-62KnzttuLsDP7DlEING/koS7lxf5A673F5DwppJs3vw="; passthru = { tests.version = testers.testVersion { diff --git a/pkgs/by-name/qo/qovery-cli/package.nix b/pkgs/by-name/qo/qovery-cli/package.nix index 62b6dfbf949e..130ec6cc20f9 100644 --- a/pkgs/by-name/qo/qovery-cli/package.nix +++ b/pkgs/by-name/qo/qovery-cli/package.nix @@ -10,16 +10,16 @@ buildGoModule (finalAttrs: { pname = "qovery-cli"; - version = "1.56.1"; + version = "1.57.0"; src = fetchFromGitHub { owner = "Qovery"; repo = "qovery-cli"; tag = "v${finalAttrs.version}"; - hash = "sha256-dVjpmoIO7sOvGNWyN8kshfMJQfBoLo59QD0hfozMe+U="; + hash = "sha256-EFzSX75/r81lJbFQ6HA3K21kd4EnBnlxpavRndgMaQs="; }; - vendorHash = "sha256-owsLDP2ufW0kXmWOFtAiXKx/YiKEGL0QXkRQy1uA2Uw="; + vendorHash = "sha256-Oprgn2/KhTuAwvbbuPVwQrRc1i0Vgsdj29VgwFTYreg="; env.CGO_ENABLED = 0; diff --git a/pkgs/by-name/re/reaction/package.nix b/pkgs/by-name/re/reaction/package.nix index 93ccd3182523..6302d5ea6b8d 100644 --- a/pkgs/by-name/re/reaction/package.nix +++ b/pkgs/by-name/re/reaction/package.nix @@ -1,9 +1,12 @@ { lib, - fetchFromGitLab, + stdenv, + nixosTests, rustPlatform, - nix-update-script, + fetchFromGitLab, + versionCheckHook, installShellFiles, + nix-update-script, }: rustPlatform.buildRustPackage (finalAttrs: { pname = "reaction"; @@ -19,9 +22,15 @@ rustPlatform.buildRustPackage (finalAttrs: { cargoHash = "sha256-Bf9XmlY0IMPY4Convftd0Hv8mQbYoiE8WrkkAeaS6Z8="; - nativeBuildInputs = [ - installShellFiles - ]; + nativeBuildInputs = [ installShellFiles ]; + + # cross compiling for linux target + buildInputs = + lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform && stdenv.hostPlatform.isLinux) + [ + stdenv.cc.libc + (stdenv.cc.libc.static or null) + ]; checkFlags = [ # Those time-based tests behave poorly in low-resource environments (CI...) @@ -41,9 +50,16 @@ rustPlatform.buildRustPackage (finalAttrs: { --bash $releaseDir/reaction.bash \ --fish $releaseDir/reaction.fish \ --zsh $releaseDir/_reaction + mkdir -p $out/share/examples + install -Dm444 config/example* config/README.md $out/share/examples ''; + nativeInstallCheckInputs = [ versionCheckHook ]; + versionCheckProgramArg = "--version"; + doInstallCheck = true; + passthru.updateScript = nix-update-script { }; + passthru.tests = { inherit (nixosTests) reaction reaction-firewall; }; meta = { description = "Scan logs and take action: an alternative to fail2ban"; @@ -52,6 +68,7 @@ rustPlatform.buildRustPackage (finalAttrs: { license = lib.licenses.agpl3Plus; mainProgram = "reaction"; maintainers = with lib.maintainers; [ ppom ]; + teams = [ lib.teams.ngi ]; platforms = lib.platforms.unix; }; }) diff --git a/pkgs/by-name/ru/rusty-path-of-building/package.nix b/pkgs/by-name/ru/rusty-path-of-building/package.nix index 3a3326fb52e8..67dffb8f31bf 100644 --- a/pkgs/by-name/ru/rusty-path-of-building/package.nix +++ b/pkgs/by-name/ru/rusty-path-of-building/package.nix @@ -17,16 +17,16 @@ }: rustPlatform.buildRustPackage rec { pname = "rusty-path-of-building"; - version = "0.2.9"; + version = "0.2.10"; src = fetchFromGitHub { owner = "meehl"; repo = "rusty-path-of-building"; rev = "v${version}"; - hash = "sha256-shJKfn17x//HqnsN4OYQ7EVShFmcvmvu+3dVhE2S/cs="; + hash = "sha256-odiiYWoBfcnPNfXsxj0gt/ra6Z3zeBQdWRjF7BazffY="; }; - cargoHash = "sha256-BHfHFtYAXkq9Wgsl9t1YWpzPa+G6pHrmw9QhEQucPek="; + cargoHash = "sha256-OX4L8EmgMJVT6sFZRdhPl36ZUcXq2JEFpb/PJml2YE8="; nativeBuildInputs = [ pkg-config diff --git a/pkgs/by-name/s7/s7/package.nix b/pkgs/by-name/s7/s7/package.nix index f0edaee10874..95494ac5e6fb 100644 --- a/pkgs/by-name/s7/s7/package.nix +++ b/pkgs/by-name/s7/s7/package.nix @@ -26,14 +26,14 @@ stdenv.mkDerivation (finalAttrs: { pname = "s7"; - version = "11.7-unstable-2025-12-08"; + version = "11.7-unstable-2025-12-12"; src = fetchFromGitLab { domain = "cm-gitlab.stanford.edu"; owner = "bil"; repo = "s7"; - rev = "e0859623d8780e26b201f2d34c9e7bfde31331fb"; - hash = "sha256-k7qHTdBUhQDgOF/6Nde9RU/XTA3Neoiq7rIQ9jGWGFs="; + rev = "0aae934b91975b85eba6de9fb041ec85e55efc8f"; + hash = "sha256-gjmeP9qKEMrz7dWH5SoLldwZ7wrFswd8gLIN+ae7y5E="; }; buildInputs = diff --git a/pkgs/by-name/te/textadept/deps.nix b/pkgs/by-name/te/textadept/deps.nix index feec82e52dfe..15ce6c7c7662 100644 --- a/pkgs/by-name/te/textadept/deps.nix +++ b/pkgs/by-name/te/textadept/deps.nix @@ -10,9 +10,9 @@ sha256 = "sha256-G/CEzNVkwJl8CIFmSjtVEOX1bDqnnnO9hJR3VjLQf3k="; }; # scintillua - "scintillua_6.5.zip" = { - url = "https://github.com/orbitalquark/scintillua/archive/scintillua_6.5.zip"; - sha256 = "sha256-mXE4wcEenEf7vgUNyPBPzwu5vSiupbDub656+jlLP68="; + "scintillua_6.6.zip" = { + url = "https://github.com/orbitalquark/scintillua/archive/scintillua_6.6.zip"; + sha256 = "sha256-rFza9/ISeet3GsEi9mCM6mUl9mptBfOKWbxMyYKQvGA="; }; # lua "lua-5.4.8.tar.gz" = { @@ -50,8 +50,8 @@ sha256 = "sha256-IbFow4rbIvS0g5HYGT28OSfx8uZ4wgWNaUSim2Ssxsk="; }; # singleapp - "v3.4.0.zip" = { - url = "https://github.com/itay-grudev/SingleApplication/archive/refs/tags/v3.4.0.zip"; - sha256 = "sha256-FwyzM+R9ALpGH9u2RXab4Sqi4Q+p3Qs+8EdfhjPGcXY="; + "v3.5.3.zip" = { + url = "https://github.com/itay-grudev/SingleApplication/archive/refs/tags/v3.5.3.zip"; + sha256 = "sha256-7Ipook2pdDl2aDcKWp0f4oG/y9c5DtGxRkKSFjTxiB8="; }; } diff --git a/pkgs/by-name/te/textadept/package.nix b/pkgs/by-name/te/textadept/package.nix index 18f4fb1a6bf7..ef71798e3ab8 100644 --- a/pkgs/by-name/te/textadept/package.nix +++ b/pkgs/by-name/te/textadept/package.nix @@ -10,14 +10,14 @@ ncurses, }: stdenv.mkDerivation (finalAttrs: { - version = "12.8"; + version = "12.9"; pname = "textadept"; src = fetchFromGitHub { owner = "orbitalquark"; repo = "textadept"; tag = "textadept_${finalAttrs.version}"; - hash = "sha256-ba5YSZaWGGEFFAbHNNXv2/a4dWrG/o5mTySCmlPauWs="; + hash = "sha256-vpBmDcnaHdpYZIfcy482G4NGor+64Dh1tzryb8JJ+c8="; }; nativeBuildInputs = [ cmake ] ++ lib.optionals withQt [ libsForQt5.wrapQtAppsHook ]; diff --git a/pkgs/by-name/up/upterm/package.nix b/pkgs/by-name/up/upterm/package.nix index f80971196cf0..8e33f8ac47a4 100644 --- a/pkgs/by-name/up/upterm/package.nix +++ b/pkgs/by-name/up/upterm/package.nix @@ -1,37 +1,48 @@ { lib, + stdenv, buildGoModule, fetchFromGitHub, + writableTmpDirAsHomeHook, installShellFiles, nixosTests, }: -buildGoModule rec { +buildGoModule (finalAttrs: { pname = "upterm"; - version = "0.15.3"; + version = "0.20.0"; src = fetchFromGitHub { owner = "owenthereal"; repo = "upterm"; - rev = "v${version}"; - hash = "sha256-9h4Poz0hUg5/7CrF0ZzT4KrVaFlhvcorIgZbleMpV6w="; + rev = "v${finalAttrs.version}"; + hash = "sha256-qTw8bYROAAB7FwKCCQamIbWGbqSexXl87DdvSNsFZ/I="; }; - vendorHash = "sha256-i92RshW5dsRE88X8bXyrj13va66cc0Yu/btpR0pvoSM="; + vendorHash = "sha256-5OAS7s9A95h5LihXgOwkOXAMylS7g+lqjaI3MKTvlW0="; subPackages = [ "cmd/upterm" "cmd/uptermd" ]; - nativeBuildInputs = [ installShellFiles ]; + nativeBuildInputs = [ + writableTmpDirAsHomeHook + installShellFiles + ]; postInstall = '' # force go to build for build arch rather than host arch during cross-compiling CGO_ENABLED=0 GOOS= GOARCH= go run cmd/gendoc/main.go installManPage etc/man/man*/* - installShellCompletion --bash --name upterm.bash etc/completion/upterm.bash_completion.sh - installShellCompletion --zsh --name _upterm etc/completion/upterm.zsh_completion + '' + + lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) '' + for cmd in upterm uptermd; do + installShellCompletion --cmd $cmd \ + --bash <($out/bin/$cmd completion bash) \ + --fish <($out/bin/$cmd completion fish) \ + --zsh <($out/bin/$cmd completion zsh) + done ''; doCheck = true; @@ -46,4 +57,4 @@ buildGoModule rec { license = lib.licenses.asl20; maintainers = with lib.maintainers; [ hax404 ]; }; -} +}) diff --git a/pkgs/by-name/vi/vintagestory/package.nix b/pkgs/by-name/vi/vintagestory/package.nix index 2590f2cc3eb8..d981426e754a 100644 --- a/pkgs/by-name/vi/vintagestory/package.nix +++ b/pkgs/by-name/vi/vintagestory/package.nix @@ -21,11 +21,11 @@ stdenv.mkDerivation rec { pname = "vintagestory"; - version = "1.21.5"; + version = "1.21.6"; src = fetchurl { url = "https://cdn.vintagestory.at/gamefiles/stable/vs_client_linux-x64_${version}.tar.gz"; - hash = "sha256-dG1D2Buqht+bRyxx2ie34Z+U1bdKgi5R3w29BG/a5jg="; + hash = "sha256-i1IsxT+pjkKbJjHwnMcyb12nxe21mwvnoRGHMabMETY="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/wi/widelands/package.nix b/pkgs/by-name/wi/widelands/package.nix index d28dd5136660..692cab29ced2 100644 --- a/pkgs/by-name/wi/widelands/package.nix +++ b/pkgs/by-name/wi/widelands/package.nix @@ -2,6 +2,7 @@ lib, stdenv, fetchFromGitHub, + fetchpatch, pkg-config, # needed to find minizip SDL2, SDL2_image, @@ -38,6 +39,14 @@ stdenv.mkDerivation rec { sha256 = "sha256-/MEeb0KnefK812w5y238Icd4gW85d/pvZ08xnlVXDdk="; }; + patches = [ + (fetchpatch { + name = "modern-asio.patch"; + url = "https://codeberg.org/wl/widelands/pulls/5025.patch"; + sha256 = "sha256-ip9ZG9u/z7G+yG7xrEvi+DH9vsjRzYWhEe0rEjxHzzY="; + }) + ]; + postPatch = '' substituteInPlace xdg/org.widelands.Widelands.desktop \ --replace 'Exec=widelands' "Exec=$out/bin/widelands" diff --git a/pkgs/by-name/xd/xdg-desktop-portal-wlr/package.nix b/pkgs/by-name/xd/xdg-desktop-portal-wlr/package.nix index b79dfcc9a88a..c4beca28d883 100644 --- a/pkgs/by-name/xd/xdg-desktop-portal-wlr/package.nix +++ b/pkgs/by-name/xd/xdg-desktop-portal-wlr/package.nix @@ -22,13 +22,13 @@ stdenv.mkDerivation rec { pname = "xdg-desktop-portal-wlr"; - version = "0.8.0"; + version = "0.8.1"; src = fetchFromGitHub { owner = "emersion"; repo = "xdg-desktop-portal-wlr"; rev = "v${version}"; - sha256 = "sha256-TAWrDH6kud4eXFJvfihImuEFm2uTOaqAOatG+7JmaEM="; + sha256 = "sha256-FltwfZtxKdbJuDYVQJTTtEE/WHV5AaDnwPnAkN76qTY="; }; strictDeps = true; diff --git a/pkgs/by-name/xl/xleak/package.nix b/pkgs/by-name/xl/xleak/package.nix index d42465873fed..3b0ae94a282f 100644 --- a/pkgs/by-name/xl/xleak/package.nix +++ b/pkgs/by-name/xl/xleak/package.nix @@ -9,16 +9,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "xleak"; - version = "0.1.0"; + version = "0.2.5"; src = fetchFromGitHub { owner = "bgreenwell"; repo = "xleak"; tag = "v${finalAttrs.version}"; - hash = "sha256-n9AFNGr5kRbQr2P/6QFT0KkuiE6KPun1FZjwrq2iQZs="; + hash = "sha256-5amFyNI1cfTu9b5PV7/n4XIXZbFoSnaTyZo7oPpDQL4="; }; - cargoHash = "sha256-wWN8FSaIndp9piqRHMMYyWp7iynhWQeUfzT8FDYQUyA="; + cargoHash = "sha256-FkSpMwkrnibOWAPbrE9Pycxc4To5jFHbma8YKGgXWSU="; doInstallCheck = true; nativeInstallCheckInputs = [ versionCheckHook ]; diff --git a/pkgs/development/compilers/mlton/default.nix b/pkgs/development/compilers/mlton/default.nix index a74d1d85455b..91d70e431ff3 100644 --- a/pkgs/development/compilers/mlton/default.nix +++ b/pkgs/development/compilers/mlton/default.nix @@ -1,4 +1,4 @@ -{ callPackage }: +{ callPackage, stdenv }: rec { mlton20130715 = callPackage ./20130715.nix { }; @@ -21,10 +21,21 @@ rec { sha256 = "sha256-rqL8lnzVVR+5Hc7sWXK8dCXN92dU76qSoii3/4StODM="; }; + mlton20241230 = callPackage ./from-git-source.nix { + mltonBootstrap = mlton20210117Binary; + version = "20241230"; + rev = "on-20241230-release"; + sha256 = "sha256-gJUzav2xH8C4Vy5FuqN73Z6lPMSPQgJApF8LgsJXRWo="; + # https://github.com/MLton/mlton/issues/631 + doCheck = !(stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isDarwin); + }; + mltonHEAD = callPackage ./from-git-source.nix { mltonBootstrap = mlton20210117Binary; version = "HEAD"; - rev = "875f7912a0b135a9a7e86a04ecac9cacf0bfe5e5"; - sha256 = "sha256-/MIoVqqv8qrJPehU7VRFpXtAAo8UUzE3waEvB7WnS9A="; + rev = "61baac7108fbd91413f0537b7a42d9a1023455f4"; + sha256 = "sha256-nWR7ZaXfKxeXfZ9IHipAQ39ASVtva4BeDHP3Zq8mqPo="; + # https://github.com/MLton/mlton/issues/631 + doCheck = !(stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isDarwin); }; } diff --git a/pkgs/development/compilers/mlton/from-git-source.nix b/pkgs/development/compilers/mlton/from-git-source.nix index 91735196c1c7..a8e7c61f5334 100644 --- a/pkgs/development/compilers/mlton/from-git-source.nix +++ b/pkgs/development/compilers/mlton/from-git-source.nix @@ -9,11 +9,12 @@ stdenv, version, which, + doCheck ? true, }: stdenv.mkDerivation { pname = "mlton"; - inherit version; + inherit version doCheck; src = fetchgit { inherit url rev sha256; @@ -44,7 +45,5 @@ stdenv.mkDerivation { ) ''; - doCheck = true; - meta = import ./meta.nix { inherit lib; }; } diff --git a/pkgs/development/coq-modules/coq-lsp/default.nix b/pkgs/development/coq-modules/coq-lsp/default.nix index 0ffa3a66cc2b..608b674c27b1 100644 --- a/pkgs/development/coq-modules/coq-lsp/default.nix +++ b/pkgs/development/coq-modules/coq-lsp/default.nix @@ -23,6 +23,9 @@ release."0.2.4+8.20".sha256 = "sha256-mQxh2/Cb5hZ99TtqWYLpZ/BRPrm5GRDYPDfKlCTK9N4="; release."0.2.4+9.0".sha256 = "sha256-ICPdNxJODNqmUErdTkNk7s52MRuINWLbAPm0rmXFW18="; release."0.2.4+9.1".sha256 = "sha256-HNHA2vbX70oZkd4QtbP28UbTRXatqxJdxw1OWDVDE8U="; + release."0.2.5+8.20".sha256 = "sha256-OduwwJESXVEkeX+w8nLEhLUtPo4YGDPj21yWyc1uv3U="; + release."0.2.5+9.0".sha256 = "sha256-nbMf7xziBYoBH0F8YBUEybCHSdsaOxlqXnyngeQNg3c="; + release."0.2.5+9.1".sha256 = "sha256-PzIgo15zI3JjibT8GzyHdTwofd3IF6eRmUc47NveH70="; inherit version; defaultVersion = @@ -46,15 +49,15 @@ } { case = isEq "8.20"; - out = "0.2.4+8.20"; + out = "0.2.5+8.20"; } { case = isEq "9.0"; - out = "0.2.4+9.0"; + out = "0.2.5+9.0"; } { case = isEq "9.1"; - out = "0.2.4+9.1"; + out = "0.2.5+9.1"; } ] null; diff --git a/pkgs/development/libraries/agda/agda-categories/default.nix b/pkgs/development/libraries/agda/agda-categories/default.nix index 1cfbb905dfed..10aa4397d634 100644 --- a/pkgs/development/libraries/agda/agda-categories/default.nix +++ b/pkgs/development/libraries/agda/agda-categories/default.nix @@ -13,7 +13,7 @@ mkDerivation rec { owner = "agda"; repo = "agda-categories"; rev = "v${version}"; - sha256 = "sha256-zPh6RFnky4KsnQx5Y/3FeYZ/jWK+hqJGNyCjEFPPHWQ="; + sha256 = "sha256-/3e8CkaTr0bUBgzhjAvu2RV6y0gk77VRA4PE6vutKPc="; }; postPatch = '' diff --git a/pkgs/development/ocaml-modules/frama-c-lannotate/default.nix b/pkgs/development/ocaml-modules/frama-c-lannotate/default.nix new file mode 100644 index 000000000000..2c3ddf58b9c5 --- /dev/null +++ b/pkgs/development/ocaml-modules/frama-c-lannotate/default.nix @@ -0,0 +1,29 @@ +{ + lib, + buildDunePackage, + dune-site, + fetchzip, + frama-c, +}: + +buildDunePackage (finalAttrs: { + pname = "frama-c-lannotate"; + version = "0.2.4"; + + src = fetchzip { + url = "https://git.frama-c.com/pub/ltest/lannotate/-/archive/${finalAttrs.version}/lannotate-${finalAttrs.version}.tar.bz2"; + hash = "sha256-JoD2M3R3/DcUMt33QOvwqHg4eToCgjB8riKc09TWdyc="; + }; + + propagatedBuildInputs = [ + dune-site + frama-c + ]; + + meta = { + description = "Lannotate plugin of Frama-C, part of the LTest suite"; + homepage = "https://frama-c.com/fc-plugins/ltest.html"; + license = lib.licenses.lgpl2; + maintainers = with lib.maintainers; [ redianthus ]; + }; +}) diff --git a/pkgs/development/ocaml-modules/frama-c/default.nix b/pkgs/development/ocaml-modules/frama-c/default.nix new file mode 100644 index 000000000000..2c063384748c --- /dev/null +++ b/pkgs/development/ocaml-modules/frama-c/default.nix @@ -0,0 +1,43 @@ +{ + stdenv, + pkgs, + ocaml, + findlib, + framac, + camlzip, + ocamlgraph, + menhirLib, + ppx_deriving, + yaml, + yojson, + zarith, +}: + +stdenv.mkDerivation { + pname = "ocaml${ocaml.version}-frama-c"; + inherit (framac) version meta; + + dontUnpack = true; + + buildInputs = [ findlib ]; + + propagatedBuildInputs = [ + camlzip + menhirLib + ocamlgraph + ppx_deriving + yaml + yojson + zarith + ]; + + installPhase = '' + runHook preInstall + mkdir -p $OCAMLFIND_DESTDIR + for p in ${framac}/lib/* + do + ln -s $p $OCAMLFIND_DESTDIR/ + done + runHook postInstall + ''; +} diff --git a/pkgs/development/python-modules/boto3-stubs/default.nix b/pkgs/development/python-modules/boto3-stubs/default.nix index aea2a2038851..b33d2451f55d 100644 --- a/pkgs/development/python-modules/boto3-stubs/default.nix +++ b/pkgs/development/python-modules/boto3-stubs/default.nix @@ -358,13 +358,13 @@ buildPythonPackage rec { pname = "boto3-stubs"; - version = "1.42.9"; + version = "1.42.10"; pyproject = true; src = fetchPypi { pname = "boto3_stubs"; inherit version; - hash = "sha256-sTK+gmDrVgELR0mWWM9sSF+Z6gGQlp59Gtt0xQXIPmg="; + hash = "sha256-Xw9tCzwwyE+z0aL8P8uusre/GTKb3qn2KHy9Du/TOgc="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/botocore-stubs/default.nix b/pkgs/development/python-modules/botocore-stubs/default.nix index fa523a57851d..3787868050c2 100644 --- a/pkgs/development/python-modules/botocore-stubs/default.nix +++ b/pkgs/development/python-modules/botocore-stubs/default.nix @@ -9,13 +9,13 @@ buildPythonPackage rec { pname = "botocore-stubs"; - version = "1.42.9"; + version = "1.42.10"; pyproject = true; src = fetchPypi { pname = "botocore_stubs"; inherit version; - hash = "sha256-kv3SodkRNVFm2j4w6bubGAP34srsDZE/X606kgNSzm0="; + hash = "sha256-6G/LDWdVVZtxRIExaFTRmmtLmTAjYH2kfVagx11Pk4c="; }; nativeBuildInputs = [ setuptools ]; diff --git a/pkgs/development/python-modules/elevenlabs/default.nix b/pkgs/development/python-modules/elevenlabs/default.nix index 1fcc61c6eb7f..3775266d1889 100644 --- a/pkgs/development/python-modules/elevenlabs/default.nix +++ b/pkgs/development/python-modules/elevenlabs/default.nix @@ -13,7 +13,7 @@ }: let - version = "2.26.1"; + version = "2.27.0"; tag = "v${version}"; in buildPythonPackage { @@ -25,7 +25,7 @@ buildPythonPackage { owner = "elevenlabs"; repo = "elevenlabs-python"; inherit tag; - hash = "sha256-cVqbN2OvzRFmnZojjycGZsGpj26o9rJYGCcfeW56YOY="; + hash = "sha256-S4UlutpQuF+H3ICB7cBX6tlOUgwHzBYNXR0R5eHji8w="; }; build-system = [ poetry-core ]; diff --git a/pkgs/development/python-modules/iamdata/default.nix b/pkgs/development/python-modules/iamdata/default.nix index cb5073d601e5..4b75bc47a760 100644 --- a/pkgs/development/python-modules/iamdata/default.nix +++ b/pkgs/development/python-modules/iamdata/default.nix @@ -8,14 +8,14 @@ buildPythonPackage rec { pname = "iamdata"; - version = "0.1.202512141"; + version = "0.1.202512161"; pyproject = true; src = fetchFromGitHub { owner = "cloud-copilot"; repo = "iam-data-python"; tag = "v${version}"; - hash = "sha256-NUtxqvCrsnBxoFOHBbqT8HZBBICsEuq17XGhz7XI3yo="; + hash = "sha256-i8eNsCX56h0PrJm3Qd4TzSPAVoK5Un0W5AH2eMOXH68="; }; __darwinAllowLocalNetworking = true; diff --git a/pkgs/development/python-modules/langchain-classic/default.nix b/pkgs/development/python-modules/langchain-classic/default.nix index 568329772527..a2918077e6d5 100644 --- a/pkgs/development/python-modules/langchain-classic/default.nix +++ b/pkgs/development/python-modules/langchain-classic/default.nix @@ -104,7 +104,10 @@ buildPythonPackage rec { ]; # Bulk updater selects wrong tag (there is no tag for this yet) - passthru.skipBulkUpdate = true; + passthru = { + skipBulkUpdate = true; + updateScript = false; + }; pythonImportsCheck = [ "langchain_classic" ]; diff --git a/pkgs/development/python-modules/langsmith/default.nix b/pkgs/development/python-modules/langsmith/default.nix index 83c26db7bbef..6fc35838fd41 100644 --- a/pkgs/development/python-modules/langsmith/default.nix +++ b/pkgs/development/python-modules/langsmith/default.nix @@ -32,14 +32,14 @@ buildPythonPackage rec { pname = "langsmith"; - version = "0.4.58"; + version = "0.4.59"; pyproject = true; src = fetchFromGitHub { owner = "langchain-ai"; repo = "langsmith-sdk"; tag = "v${version}"; - hash = "sha256-2Cxb7zQDUqAfzR59oVx7r33R88ISTmOSLsoU3Wf9HSQ="; + hash = "sha256-IL1lwV+WkIpYAlx+n08XlzbvzyDMUQCCZKmA+ImBIqU="; }; sourceRoot = "${src.name}/python"; diff --git a/pkgs/development/python-modules/mypy-boto3/default.nix b/pkgs/development/python-modules/mypy-boto3/default.nix index aec3a27526e7..99be0f822546 100644 --- a/pkgs/development/python-modules/mypy-boto3/default.nix +++ b/pkgs/development/python-modules/mypy-boto3/default.nix @@ -338,8 +338,8 @@ in "sha256-imDBFBMNm8LdlHf9m21aS39DGfF0dbpd7DsZ8fMzIyM="; mypy-boto3-connect = - buildMypyBoto3Package "connect" "1.42.9" - "sha256-rw52qFKriqJ5yswHBenlQxzw8kMBahV5tlBu5ksf/UA="; + buildMypyBoto3Package "connect" "1.42.10" + "sha256-Ub7PZwdvQmJJDZA7iPY0MTIF582EWj1yPB2SqyxhyC8="; mypy-boto3-connect-contact-lens = buildMypyBoto3Package "connect-contact-lens" "1.42.3" @@ -446,8 +446,8 @@ in "sha256-92qhSUqTiLgbtvCdi/Mmgve18mcYR00ABL+bNy7/OnY="; mypy-boto3-ec2 = - buildMypyBoto3Package "ec2" "1.42.5" - "sha256-G1TqpkA8EGd0lvfczdDCkRUzsfJuSlcyr1b70xFBeW8="; + buildMypyBoto3Package "ec2" "1.42.10" + "sha256-fmYwZ5a8Q8gFSeyvXnIxnUl2qtPW3RHc6SyWD19TF6Y="; mypy-boto3-ec2-instance-connect = buildMypyBoto3Package "ec2-instance-connect" "1.42.3" @@ -510,8 +510,8 @@ in "sha256-N975AhqJFTeUcfAob8UcArGMnoDrp6T023OtmEJK4DY="; mypy-boto3-entityresolution = - buildMypyBoto3Package "entityresolution" "1.42.3" - "sha256-tZwEY8f91YWYCfHb3gSnbv0haTbyFKgpCvQKQDg12OE="; + buildMypyBoto3Package "entityresolution" "1.42.10" + "sha256-DyAxO4HPA98ON9Q2Sp5HF1lQNp8yecGiEaV12m0E7zM="; mypy-boto3-es = buildMypyBoto3Package "es" "1.42.3" @@ -566,8 +566,8 @@ in "sha256-4LBhjln6mCxMSooGEV7mo1Fe7U6Jssxq+6JYwqnFhRs="; mypy-boto3-glacier = - buildMypyBoto3Package "glacier" "1.42.3" - "sha256-06ckDtpv0ZvarXu9RIy8UxLRprY54/NBmrCyc7vQ5ek="; + buildMypyBoto3Package "glacier" "1.42.10" + "sha256-EFKWChvNMhj07s/la58yb7iZKtAh96qysffZ8LdvZeE="; mypy-boto3-globalaccelerator = buildMypyBoto3Package "globalaccelerator" "1.42.3" @@ -597,8 +597,8 @@ in "sha256-Wt++1dfId2tV74JssQK0iNv8jgyEfc1i0y5rUgtPecM="; mypy-boto3-health = - buildMypyBoto3Package "health" "1.42.3" - "sha256-sK6S4e6Bbvz9sjjxiTUGYS8uS+G/PRVVLGP8X+/c1HY="; + buildMypyBoto3Package "health" "1.42.10" + "sha256-4dxV8ztTpIHOx0SYIc0IZCMsThugUkobRYzjgkP5TnE="; mypy-boto3-healthlake = buildMypyBoto3Package "healthlake" "1.42.3" @@ -809,8 +809,8 @@ in "sha256-VGQzgnrUynTDjfYpEk+FR+PrljbULl0UpbeqbaPKqSc="; mypy-boto3-logs = - buildMypyBoto3Package "logs" "1.42.3" - "sha256-6pXN1oeCkD+5UfHjhgXKOjLTtpfTFgObNZixP+2fJvo="; + buildMypyBoto3Package "logs" "1.42.10" + "sha256-Or5B12+lM/6CJUtOAIEjcv2PJA3/18Dd1L40UD0feD8="; mypy-boto3-lookoutequipment = buildMypyBoto3Package "lookoutequipment" "1.42.3" @@ -889,8 +889,8 @@ in "sha256-VBsw9c9B6r3G5vJ0iVUCi4wVoFprYseRLeMWs69KpTQ="; mypy-boto3-mediatailor = - buildMypyBoto3Package "mediatailor" "1.42.3" - "sha256-qkV6ZthcahS3h03vCnkam1Q78uas/Sfcqwk0c4R9tAg="; + buildMypyBoto3Package "mediatailor" "1.42.10" + "sha256-4YmRgBRIz2NtTnU6aSJ+0tPAaOXsMZQY0GFTHjqtF8I="; mypy-boto3-medical-imaging = buildMypyBoto3Package "medical-imaging" "1.42.3" @@ -1153,16 +1153,16 @@ in "sha256-AasFHhNs7b904wj2hzm0Hhj0CHit16bl+f+0cl9Y/t4="; mypy-boto3-route53resolver = - buildMypyBoto3Package "route53resolver" "1.42.3" - "sha256-Q+Mzw0HmswKrJIH1KanYN/Hk1Uba3Sel5SdcX/1yH1w="; + buildMypyBoto3Package "route53resolver" "1.42.10" + "sha256-4zDAA7G0yZl+cm8l2aW/ATWy/Zv/1ogO1IYy7fmBKCk="; mypy-boto3-rum = buildMypyBoto3Package "rum" "1.42.3" "sha256-4/Q39UsUYaluauoaLm6BOej+Krl2VbO1xKKo1orRIkI="; mypy-boto3-s3 = - buildMypyBoto3Package "s3" "1.42.3" - "sha256-JQe9+heCnx9CK4vzNNuDZomwUp++ZjWvTg86qnL5KAY="; + buildMypyBoto3Package "s3" "1.42.10" + "sha256-mkV1EktQDCnAI5GfF7Ai5mEJpWuiMY74rqs9DdLNF04="; mypy-boto3-s3control = buildMypyBoto3Package "s3control" "1.42.3" @@ -1233,8 +1233,8 @@ in "sha256-JIwTLfrkWY98gY+eH15Sy7r9Kif+68pBqgmZoj2DTWQ="; mypy-boto3-service-quotas = - buildMypyBoto3Package "service-quotas" "1.42.3" - "sha256-INL6mi8S7oWOsHUoHb1h+uryG6chligV5vwB02XIoas="; + buildMypyBoto3Package "service-quotas" "1.42.10" + "sha256-aqQDN3jmfxcZ8PLBE9wsb4M2N7w3B+3ruKNcAngyKFE="; mypy-boto3-servicecatalog = buildMypyBoto3Package "servicecatalog" "1.42.3" diff --git a/pkgs/development/python-modules/otxv2/default.nix b/pkgs/development/python-modules/otxv2/default.nix new file mode 100644 index 000000000000..6dc9b8138e3c --- /dev/null +++ b/pkgs/development/python-modules/otxv2/default.nix @@ -0,0 +1,43 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + python-dateutil, + pytz, + requests, + setuptools, +}: + +buildPythonPackage rec { + pname = "otxv2"; + version = "1.5.12"; + pyproject = true; + + src = fetchFromGitHub { + owner = "AlienVault-OTX"; + repo = "OTX-Python-SDK"; + tag = version; + hash = "sha256-JAjBXNsX0Cuni+4L6I1RuaSfors5cBAZ2krPLhIFluY="; + }; + + build-system = [ setuptools ]; + + dependencies = [ + python-dateutil + pytz + requests + ]; + + # Tests require network access + doCheck = false; + + pythonImportsCheck = [ "OTXv2" ]; + + meta = { + description = "The Python SDK for AlienVault OTX"; + homepage = "https://github.com/AlienVault-OTX/OTX-Python-SDK"; + changelog = "https://github.com/AlienVault-OTX/OTX-Python-SDK/releases/tag/${src.tag}"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ fab ]; + }; +} diff --git a/pkgs/development/python-modules/pyahocorasick/default.nix b/pkgs/development/python-modules/pyahocorasick/default.nix index 95ec0776a714..c1b2c92fdeda 100644 --- a/pkgs/development/python-modules/pyahocorasick/default.nix +++ b/pkgs/development/python-modules/pyahocorasick/default.nix @@ -8,14 +8,14 @@ buildPythonPackage rec { pname = "pyahocorasick"; - version = "2.2.0"; - format = "setuptools"; + version = "2.3.0"; + pyproject = true; src = fetchFromGitHub { owner = "WojciechMula"; repo = "pyahocorasick"; tag = "v${version}"; - hash = "sha256-lFJhHDN9QAKw5dqzgjRxcs+7+LuTqP9qQ68B5LlCNmU="; + hash = "sha256-ysQZOyJZ9xrNp3plVpaDtGqzjNuRDAELtAcjbC8Byis="; }; build-system = [ setuptools ]; diff --git a/pkgs/applications/graphics/pymeshlab/default.nix b/pkgs/development/python-modules/pymeshlab/default.nix similarity index 80% rename from pkgs/applications/graphics/pymeshlab/default.nix rename to pkgs/development/python-modules/pymeshlab/default.nix index ec6edb230aff..a95ebb42bf3e 100644 --- a/pkgs/applications/graphics/pymeshlab/default.nix +++ b/pkgs/development/python-modules/pymeshlab/default.nix @@ -4,13 +4,16 @@ stdenv, fetchFromGitHub, fetchpatch, + buildPythonPackage, + python, # nativeBuildInputs cmake, - python3Packages, + pybind11, # propagatedBuildInputs meshlab, + numpy, # buildInputs libsForQt5, @@ -19,14 +22,18 @@ vcg, }: -stdenv.mkDerivation (finalAttrs: { - pname = "pymeshlab"; +let version = "2025.7"; +in +buildPythonPackage { + inherit version; + pname = "pymeshlab"; + pyproject = false; src = fetchFromGitHub { owner = "cnr-isti-vclab"; repo = "pymeshlab"; - tag = "v${finalAttrs.version}"; + tag = "v${version}"; hash = "sha256-LCR2/AyX9uVX4xhZareUL6YlpUsCFiGDMBB5nFp+H6k="; }; @@ -42,16 +49,12 @@ stdenv.mkDerivation (finalAttrs: { nativeBuildInputs = [ cmake - python3Packages.pybind11 - ]; - - nativeCheckInputs = [ - python3Packages.pythonImportsCheckHook + pybind11 ]; propagatedBuildInputs = [ meshlab - python3Packages.numpy + numpy ]; buildInputs = [ @@ -66,7 +69,7 @@ stdenv.mkDerivation (finalAttrs: { dontWrapQtApps = true; cmakeFlags = [ - "-DCMAKE_INSTALL_PREFIX=${placeholder "out"}/${python3Packages.python.sitePackages}/pymeshlab" + "-DCMAKE_INSTALL_PREFIX=${placeholder "out"}/${python.sitePackages}/pymeshlab" ]; # Get io & filter plugins from meshlab, to avoild render, decorate & edit ones @@ -80,7 +83,7 @@ stdenv.mkDerivation (finalAttrs: { pyPlugins = if stdenv.hostPlatform.isDarwin then "PlugIns" else "lib/plugins"; in '' - install -D -t $out/${python3Packages.python.sitePackages}/pymeshlab/${pyPlugins} \ + install -D -t $out/${python.sitePackages}/pymeshlab/${pyPlugins} \ ${meshlab}/${plugins}/libio_* \ ${meshlab}/${plugins}/libfilter_* ''; @@ -88,7 +91,7 @@ stdenv.mkDerivation (finalAttrs: { postFixup = lib.optionalString stdenv.hostPlatform.isLinux '' patchelf \ --add-needed ${meshlab}/lib/meshlab/libmeshlab-common.so \ - $out/${python3Packages.python.sitePackages}/pymeshlab/pmeshlab.*.so + $out/${python.sitePackages}/pymeshlab/pmeshlab.*.so ''; pythonImportsCheck = [ "pymeshlab" ]; @@ -100,4 +103,4 @@ stdenv.mkDerivation (finalAttrs: { maintainers = with lib.maintainers; [ nim65s ]; platforms = with lib.platforms; linux ++ darwin; }; -}) +} diff --git a/pkgs/development/python-modules/pyqt/6.x.nix b/pkgs/development/python-modules/pyqt/6.x.nix index 77f98e1b808b..eeef109f7e7a 100644 --- a/pkgs/development/python-modules/pyqt/6.x.nix +++ b/pkgs/development/python-modules/pyqt/6.x.nix @@ -21,6 +21,7 @@ withPrintSupport ? true, withSerialPort ? false, cups, + withSpeech ? true, }: buildPythonPackage rec { @@ -105,7 +106,8 @@ buildPythonPackage rec { ++ lib.optional withMultimedia qtmultimedia ++ lib.optional withWebSockets qtwebsockets ++ lib.optional withLocation qtlocation - ++ lib.optional withSerialPort qtserialport; + ++ lib.optional withSerialPort qtserialport + ++ lib.optional withSpeech qtspeech; buildInputs = with qt6Packages; @@ -121,7 +123,8 @@ buildPythonPackage rec { ++ lib.optional withMultimedia qtmultimedia ++ lib.optional withWebSockets qtwebsockets ++ lib.optional withLocation qtlocation - ++ lib.optional withSerialPort qtserialport; + ++ lib.optional withSerialPort qtserialport + ++ lib.optional withSpeech qtspeech; propagatedBuildInputs = # ld: library not found for -lcups @@ -150,7 +153,8 @@ buildPythonPackage rec { ++ lib.optional withMultimedia "PyQt6.QtMultimedia" # ++ lib.optional withConnectivity "PyQt6.QtConnectivity" ++ lib.optional withLocation "PyQt6.QtPositioning" - ++ lib.optional withSerialPort "PyQt6.QtSerialPort"; + ++ lib.optional withSerialPort "PyQt6.QtSerialPort" + ++ lib.optional withSpeech "PyQt6.QtTextToSpeech"; env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin "-Wno-address-of-temporary"; diff --git a/pkgs/development/python-modules/pytensor/default.nix b/pkgs/development/python-modules/pytensor/default.nix index 40134295ee7a..8c10e0ec811f 100644 --- a/pkgs/development/python-modules/pytensor/default.nix +++ b/pkgs/development/python-modules/pytensor/default.nix @@ -15,13 +15,13 @@ filelock, logical-unification, minikanren, + numba, numpy, scipy, # tests jax, jaxlib, - numba, pytest-benchmark, pytest-mock, pytestCheckHook, @@ -33,7 +33,7 @@ buildPythonPackage rec { pname = "pytensor"; - version = "2.35.1"; + version = "2.36.0"; pyproject = true; src = fetchFromGitHub { @@ -43,7 +43,7 @@ buildPythonPackage rec { postFetch = '' sed -i 's/git_refnames = "[^"]*"/git_refnames = " (tag: ${src.tag})"/' $out/pytensor/_version.py ''; - hash = "sha256-5+yMZysK69g+3uYrP12WK3ngpAYn8XrHoVjLqjvbobg="; + hash = "sha256-tzwiPp0+xNKmndTn9Y1AXiqscQWaCC8gKgQHEtkyGag="; }; build-system = [ @@ -58,6 +58,7 @@ buildPythonPackage rec { filelock logical-unification minikanren + numba numpy scipy ]; diff --git a/pkgs/development/python-modules/pytransportnswv2/default.nix b/pkgs/development/python-modules/pytransportnswv2/default.nix index 5e2283d3e5a8..2174054962b6 100644 --- a/pkgs/development/python-modules/pytransportnswv2/default.nix +++ b/pkgs/development/python-modules/pytransportnswv2/default.nix @@ -10,13 +10,12 @@ buildPythonPackage rec { pname = "pytransportnswv2"; - version = "2.0.8"; + version = "2.2.0"; pyproject = true; src = fetchPypi { - pname = "PyTransportNSWv2"; - inherit version; - hash = "sha256-+hE5onXQ/Isv+U7y9+CphpYTOW7CsMxR7M8jZS1djSs="; + inherit pname version; + hash = "sha256-gQhXq2ZnpXMYdicDN3QWenF+kezbA9ByrzATVdybMNM="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/pywerview/default.nix b/pkgs/development/python-modules/pywerview/default.nix index 2b64790884bd..c6ea7e7b7d20 100644 --- a/pkgs/development/python-modules/pywerview/default.nix +++ b/pkgs/development/python-modules/pywerview/default.nix @@ -8,22 +8,19 @@ lxml, pyasn1, pycryptodome, - pythonOlder, setuptools, }: buildPythonPackage rec { pname = "pywerview"; - version = "0.7.4"; + version = "0.7.5"; pyproject = true; - disabled = pythonOlder "3.7"; - src = fetchFromGitHub { owner = "the-useless-one"; repo = "pywerview"; tag = "v${version}"; - hash = "sha256-PJCJyutlHApiA+5CxIpYzC13MSwd2n5zm+ZkJUppDTg="; + hash = "sha256-wl7/u9Uja/FflO3tN3UyanX2LIRG417RfWdyZCtUtGs="; }; build-system = [ setuptools ]; @@ -49,7 +46,7 @@ buildPythonPackage rec { meta = { description = "Module for PowerSploit's PowerView support"; homepage = "https://github.com/the-useless-one/pywerview"; - changelog = "https://github.com/the-useless-one/pywerview/releases/tag/v${version}"; + changelog = "https://github.com/the-useless-one/pywerview/releases/tag/${src.tag}"; license = lib.licenses.gpl3Plus; maintainers = with lib.maintainers; [ fab ]; mainProgram = "pywerview"; diff --git a/pkgs/development/python-modules/recipe-scrapers/default.nix b/pkgs/development/python-modules/recipe-scrapers/default.nix index 5b3245ce74ef..46372966bb99 100644 --- a/pkgs/development/python-modules/recipe-scrapers/default.nix +++ b/pkgs/development/python-modules/recipe-scrapers/default.nix @@ -17,7 +17,7 @@ buildPythonPackage rec { pname = "recipe-scrapers"; - version = "15.10.0"; + version = "15.11.0"; pyproject = true; disabled = pythonOlder "3.9"; @@ -26,7 +26,7 @@ buildPythonPackage rec { owner = "hhursev"; repo = "recipe-scrapers"; tag = version; - hash = "sha256-04jREzBKjkly/BEWJnLx1FE7V10vBU3Q893O95B7hj4="; + hash = "sha256-S0/RPVeEr/lAPJZSUwCippuXyirYnmaAuesWGYwg6kE="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/spython/default.nix b/pkgs/development/python-modules/spython/default.nix index d14cd4f71f5e..fe4d698358b7 100644 --- a/pkgs/development/python-modules/spython/default.nix +++ b/pkgs/development/python-modules/spython/default.nix @@ -4,21 +4,18 @@ fetchFromGitHub, setuptools, pytestCheckHook, - pythonOlder, }: buildPythonPackage rec { pname = "spython"; - version = "0.3.14"; + version = "0.3.15"; pyproject = true; - disabled = pythonOlder "3.9"; - src = fetchFromGitHub { owner = "singularityhub"; repo = "singularity-cli"; tag = version; - hash = "sha256-PNMzqnKb691wcd8aGSleqHOcsUrahl8e0r5s5ek5GmQ="; + hash = "sha256-XYiudDXXiX0izFZZpQb71DBg/wRKjeupvKHixGFVuKM="; }; postPatch = '' @@ -47,7 +44,7 @@ buildPythonPackage rec { meta = { description = "Streamlined singularity python client (spython) for singularity"; homepage = "https://github.com/singularityhub/singularity-cli"; - changelog = "https://github.com/singularityhub/singularity-cli/blob/${version}/CHANGELOG.md"; + changelog = "https://github.com/singularityhub/singularity-cli/blob/${src.tag}/CHANGELOG.md"; license = lib.licenses.mpl20; maintainers = with lib.maintainers; [ fab ]; mainProgram = "spython"; diff --git a/pkgs/development/python-modules/stringzilla/default.nix b/pkgs/development/python-modules/stringzilla/default.nix index 47111f1f0e8d..beb78ac69520 100644 --- a/pkgs/development/python-modules/stringzilla/default.nix +++ b/pkgs/development/python-modules/stringzilla/default.nix @@ -10,14 +10,14 @@ buildPythonPackage rec { pname = "stringzilla"; - version = "4.4.2"; + version = "4.5.1"; pyproject = true; src = fetchFromGitHub { owner = "ashvardanian"; repo = "stringzilla"; tag = "v${version}"; - hash = "sha256-o3MrIPzu61Zod6RpmWA356hlquVPQKu7+aYZrqxjMjo="; + hash = "sha256-0T8hQ+P6gZnIX52jkRcpF1Ofxy45+B7K/feEQr5Phf0="; }; build-system = [ diff --git a/pkgs/development/python-modules/urlscan-python/default.nix b/pkgs/development/python-modules/urlscan-python/default.nix new file mode 100644 index 000000000000..679471a1917c --- /dev/null +++ b/pkgs/development/python-modules/urlscan-python/default.nix @@ -0,0 +1,51 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + hatchling, + httpx, + pytest-freezer, + pytest-httpserver, + pytest-randomly, + pytest-timeout, + pytestCheckHook, + uv-dynamic-versioning, +}: + +buildPythonPackage rec { + pname = "urlscan-python"; + version = "0.0.1"; + pyproject = true; + + src = fetchFromGitHub { + owner = "urlscan"; + repo = "urlscan-python"; + tag = "v${version}"; + hash = "sha256-HkovBmmVvUYA5U43w5TUOcwhZAN/0o0BETd1s9R940w="; + }; + + build-system = [ + hatchling + uv-dynamic-versioning + ]; + + dependencies = [ httpx ]; + + nativeCheckInputs = [ + pytest-freezer + pytest-httpserver + pytest-randomly + pytest-timeout + pytestCheckHook + ]; + + pythonImportsCheck = [ "urlscan" ]; + + meta = { + description = "Python API client for urlscan.io"; + homepage = "https://github.com/urlscan/urlscan-python/"; + changelog = "https://github.com/urlscan/urlscan-python/releases/tag/${src.tag}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ fab ]; + }; +} diff --git a/pkgs/development/python-modules/watermark/default.nix b/pkgs/development/python-modules/watermark/default.nix index 4a0a67b95bc3..304404668496 100644 --- a/pkgs/development/python-modules/watermark/default.nix +++ b/pkgs/development/python-modules/watermark/default.nix @@ -6,27 +6,24 @@ ipython, py3nvml, pytestCheckHook, - pythonOlder, setuptools, }: buildPythonPackage rec { pname = "watermark"; - version = "2.5.0"; + version = "2.5.1"; pyproject = true; - disabled = pythonOlder "3.7"; - src = fetchFromGitHub { owner = "rasbt"; repo = "watermark"; tag = "v${version}"; - hash = "sha256-UR4kV6UoZ/JLO19on+qEH+M05QIsT0SXvXJtTMCKuZM="; + hash = "sha256-vHnXPGHPQz6+y2ZvfmUouL/3JlATGo4fmZ8AIk+bNEU="; }; - nativeBuildInputs = [ setuptools ]; + build-system = [ setuptools ]; - propagatedBuildInputs = [ + dependencies = [ ipython importlib-metadata ]; @@ -45,7 +42,7 @@ buildPythonPackage rec { meta = { description = "IPython extension for printing date and timestamps, version numbers, and hardware information"; homepage = "https://github.com/rasbt/watermark"; - changelog = "https://github.com/rasbt/watermark/releases/tag/v${version}"; + changelog = "https://github.com/rasbt/watermark/releases/tag/${src.tag}"; license = lib.licenses.bsd3; maintainers = with lib.maintainers; [ nphilou ]; }; diff --git a/pkgs/kde/plasma/plasma-vault/hardcode-paths.patch b/pkgs/kde/plasma/plasma-vault/hardcode-paths.patch index d8a5f4a025de..090df77eb15b 100644 --- a/pkgs/kde/plasma/plasma-vault/hardcode-paths.patch +++ b/pkgs/kde/plasma/plasma-vault/hardcode-paths.patch @@ -1,5 +1,5 @@ diff --git a/kded/engine/backends/cryfs/cryfsbackend.cpp b/kded/engine/backends/cryfs/cryfsbackend.cpp -index f425eb3..5b8cd43 100644 +index 64138b6..5d249aa 100644 --- a/kded/engine/backends/cryfs/cryfsbackend.cpp +++ b/kded/engine/backends/cryfs/cryfsbackend.cpp @@ -207,7 +207,7 @@ QProcess *CryFsBackend::cryfs(const QStringList &arguments) const @@ -44,7 +44,7 @@ index b992f6f..eb828dd 100644 QString GocryptfsBackend::getConfigFilePath(const Device &device) const diff --git a/kded/engine/fusebackend_p.cpp b/kded/engine/fusebackend_p.cpp -index 8763304..e6860d2 100644 +index 714b660..61d8bf5 100644 --- a/kded/engine/fusebackend_p.cpp +++ b/kded/engine/fusebackend_p.cpp @@ -90,7 +90,7 @@ QProcess *FuseBackend::process(const QString &executable, const QStringList &arg @@ -57,19 +57,19 @@ index 8763304..e6860d2 100644 FutureResult<> FuseBackend::initialize(const QString &name, const Device &device, const MountPoint &mountPoint, const Vault::Payload &payload) diff --git a/kded/engine/vault.cpp b/kded/engine/vault.cpp -index c101079..67c8a83 100644 +index a7a4741..773b671 100644 --- a/kded/engine/vault.cpp +++ b/kded/engine/vault.cpp -@@ -485,7 +485,7 @@ FutureResult<> Vault::close() - } else { - // We want to check whether there is an application - // that is accessing the vault -- AsynQt::Process::getOutput(QStringLiteral("lsof"), {QStringLiteral("-t"), mountPoint().data()}) | cast() | onError([this] { -+ AsynQt::Process::getOutput(QStringLiteral("@lsof@"), {QStringLiteral("-t"), mountPoint().data()}) | cast() | onError([this] { - d->updateMessage(i18n("Unable to lock the vault because an application is using it")); - }) | onSuccess([this](const QString &result) { - // based on ksolidnotify.cpp -@@ -538,7 +538,7 @@ FutureResult<> Vault::forceClose() +@@ -490,7 +490,7 @@ FutureResult<> Vault::close() + } else { + // We want to check whether there is an application + // that is accessing the vault +- AsynQt::Process::getOutput(QStringLiteral("lsof"), { QStringLiteral("-t"), mountPoint().data() }) ++ AsynQt::Process::getOutput(QStringLiteral("@lsof@"), { QStringLiteral("-t"), mountPoint().data() }) + | cast() + | onError([this] { + d->updateMessage(i18n("Unable to close the vault because an application is using it")); +@@ -546,7 +546,7 @@ FutureResult<> Vault::forceClose() using namespace AsynQt::operators; AsynQt::await( diff --git a/pkgs/kde/third-party/krohnkite/default.nix b/pkgs/kde/third-party/krohnkite/default.nix index 6c2ba0138b09..ee805e172f55 100644 --- a/pkgs/kde/third-party/krohnkite/default.nix +++ b/pkgs/kde/third-party/krohnkite/default.nix @@ -2,7 +2,7 @@ lib, nix-update-script, buildNpmPackage, - fetchFromGitHub, + fetchFromGitea, nodejs_22, kwin, kpackage, @@ -12,10 +12,11 @@ buildNpmPackage (finalAttrs: { pname = "krohnkite"; version = "0.9.9.2"; - src = fetchFromGitHub { + src = fetchFromGitea { + domain = "codeberg.org"; owner = "anametologin"; - repo = "krohnkite"; - tag = finalAttrs.version; + repo = "Krohnkite"; + rev = finalAttrs.version; hash = "sha256-gulKg23BeWL270B2omRYJIuAHIsKu1cBVpimgButM9I="; }; @@ -56,8 +57,8 @@ buildNpmPackage (finalAttrs: { meta = { description = "Dynamic Tiling Extension for KWin 6"; - homepage = "https://github.com/anametologin/krohnkite"; - changelog = "https://github.com/anametologin/krohnkite/releases/tag/${finalAttrs.version}"; + homepage = "https://codeberg.org/anametologin/Krohnkite"; + changelog = "https://codeberg.org/anametologin/Krohnkite/releases/tag/${finalAttrs.version}"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ ben9986 diff --git a/pkgs/servers/home-assistant/custom-components/ingress/package.nix b/pkgs/servers/home-assistant/custom-components/ingress/package.nix index 9c24f074b074..3d4fe928f31c 100644 --- a/pkgs/servers/home-assistant/custom-components/ingress/package.nix +++ b/pkgs/servers/home-assistant/custom-components/ingress/package.nix @@ -7,13 +7,13 @@ buildHomeAssistantComponent rec { owner = "lovelylain"; domain = "ingress"; - version = "1.2.9"; + version = "1.2.10"; src = fetchFromGitHub { inherit owner; repo = "hass_ingress"; tag = version; - hash = "sha256-jjig0Dl/vdeuN7e25CH5L/Xvc60RM3BiAt3jUw/C9q4="; + hash = "sha256-wenazww4eoO6qnHksRqPNw8Lee3EVyJ3lvc+qa+3I/0="; }; meta = { diff --git a/pkgs/tools/security/gopass/git-credential.nix b/pkgs/tools/security/gopass/git-credential.nix deleted file mode 100644 index 47664681bbc8..000000000000 --- a/pkgs/tools/security/gopass/git-credential.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ - lib, - makeWrapper, - buildGoModule, - fetchFromGitHub, - gopass, -}: - -buildGoModule rec { - pname = "git-credential-gopass"; - version = "1.16.0"; - - src = fetchFromGitHub { - owner = "gopasspw"; - repo = "git-credential-gopass"; - rev = "v${version}"; - hash = "sha256-1045Ui8/WKNkAi6iSpJ1nsryA9J3U5KMAElYwN6Dho8="; - }; - - vendorHash = "sha256-JDrC0h4+ltdMHOR36BDkVpcFDDaHGv6IDnW0O4QvWVI="; - - subPackages = [ "." ]; - - nativeBuildInputs = [ makeWrapper ]; - - ldflags = [ - "-s" - "-w" - "-X main.version=${version}" - "-X main.commit=${src.rev}" - ]; - - postFixup = '' - wrapProgram $out/bin/git-credential-gopass \ - --prefix PATH : "${lib.makeBinPath [ gopass ]}" - ''; - - meta = { - description = "Manage git credentials using gopass"; - homepage = "https://github.com/gopasspw/git-credential-gopass"; - changelog = "https://github.com/gopasspw/git-credential-gopass/blob/v${version}/CHANGELOG.md"; - license = lib.licenses.mit; - maintainers = with lib.maintainers; [ benneti ]; - mainProgram = "git-credential-gopass"; - }; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 0232c5389c22..5ee047ee979c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1619,14 +1619,6 @@ with pkgs; passExtensions = recurseIntoAttrs pass.extensions; - gopass = callPackage ../tools/security/gopass { }; - - gopass-hibp = callPackage ../tools/security/gopass/hibp.nix { }; - - git-credential-gopass = callPackage ../tools/security/gopass/git-credential.nix { }; - - gopass-summon-provider = callPackage ../tools/security/gopass/summon.nix { }; - kerf = kerf_1; # kerf2 is WIP kerf_1 = callPackage ../development/interpreters/kerf { stdenv = clangStdenv; @@ -5005,10 +4997,11 @@ with pkgs; mlton20180207Binary mlton20180207 mlton20210117 + mlton20241230 mltonHEAD ; - mlton = mlton20210117; + mlton = mlton20241230; mono = mono6; @@ -7295,8 +7288,6 @@ with pkgs; hunspell.withDicts (_: dicts); - hydra = callPackage ../by-name/hy/hydra/package.nix { nix = nixVersions.nix_2_32; }; - icu-versions = callPackages ../development/libraries/icu { }; inherit (icu-versions) icu60 diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index 76d3bb4c41dc..86c74750aacc 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -647,6 +647,12 @@ let fpath = callPackage ../development/ocaml-modules/fpath { }; + frama-c = callPackage ../development/ocaml-modules/frama-c { + framac = pkgs.framac.override { ocamlPackages = self; }; + }; + + frama-c-lannotate = callPackage ../development/ocaml-modules/frama-c-lannotate { }; + frei0r = callPackage ../development/ocaml-modules/frei0r { inherit (pkgs) frei0r; }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 3f6734f77bf5..535034d40ebf 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -11596,6 +11596,8 @@ self: super: with self; { ots-python = callPackage ../development/python-modules/ots-python { }; + otxv2 = callPackage ../development/python-modules/otxv2 { }; + ourgroceries = callPackage ../development/python-modules/ourgroceries { }; outcome = callPackage ../development/python-modules/outcome { }; @@ -13832,7 +13834,7 @@ self: super: with self; { pyment = callPackage ../development/python-modules/pyment { }; - pymeshlab = toPythonModule (pkgs.libsForQt5.callPackage ../applications/graphics/pymeshlab { }); + pymeshlab = callPackage ../development/python-modules/pymeshlab { }; pymeta3 = callPackage ../development/python-modules/pymeta3 { }; @@ -20065,6 +20067,8 @@ self: super: with self; { urlpy = callPackage ../development/python-modules/urlpy { }; + urlscan-python = callPackage ../development/python-modules/urlscan-python { }; + urwid = callPackage ../development/python-modules/urwid { }; urwid-readline = callPackage ../development/python-modules/urwid-readline { };