diff --git a/nixos/doc/manual/default.nix b/nixos/doc/manual/default.nix index 342834e257a2..9dab1738abed 100644 --- a/nixos/doc/manual/default.nix +++ b/nixos/doc/manual/default.nix @@ -21,6 +21,8 @@ let withManOptDedupPatch = true; }; + manpageUrls = pkgs.path + "/doc/manpage-urls.json"; + # We need to strip references to /nix/store/* from options, # including any `extraSources` if some modules came from elsewhere, # or else the build will fail. @@ -72,7 +74,7 @@ let nativeBuildInputs = [ pkgs.nixos-render-docs ]; } '' nixos-render-docs manual docbook \ - --manpage-urls ${pkgs.path + "/doc/manpage-urls.json"} \ + --manpage-urls ${manpageUrls} \ "$out" \ --section \ --section-id modules \ @@ -255,9 +257,12 @@ in rec { manpages = runCommand "nixos-manpages" { inherit sources; nativeBuildInputs = [ + buildPackages.installShellFiles + ] ++ lib.optionals allowDocBook [ buildPackages.libxml2.bin buildPackages.libxslt.bin - buildPackages.installShellFiles + ] ++ lib.optionals (! allowDocBook) [ + buildPackages.nixos-render-docs ]; allowedReferences = ["out"]; } @@ -265,14 +270,24 @@ in rec { # Generate manpages. mkdir -p $out/share/man/man8 installManPage ${./manpages}/* - xsltproc --nonet \ - --maxdepth 6000 \ - --param man.output.in.separate.dir 1 \ - --param man.output.base.dir "'$out/share/man/'" \ - --param man.endnotes.are.numbered 0 \ - --param man.break.after.slash 1 \ - ${docbook_xsl_ns}/xml/xsl/docbook/manpages/docbook.xsl \ - ${manual-combined}/man-pages-combined.xml + ${if allowDocBook + then '' + xsltproc --nonet \ + --maxdepth 6000 \ + --param man.output.in.separate.dir 1 \ + --param man.output.base.dir "'$out/share/man/'" \ + --param man.endnotes.are.numbered 0 \ + --param man.break.after.slash 1 \ + ${docbook_xsl_ns}/xml/xsl/docbook/manpages/docbook.xsl \ + ${manual-combined}/man-pages-combined.xml + '' + else '' + mkdir -p $out/share/man/man5 + nixos-render-docs options manpage \ + --revision ${lib.escapeShellArg revision} \ + ${optionsJSON}/share/doc/nixos/options.json \ + $out/share/man/man5/configuration.nix.5 + ''} ''; } diff --git a/nixos/doc/manual/from_md/release-notes/rl-2305.section.xml b/nixos/doc/manual/from_md/release-notes/rl-2305.section.xml index b4041c026129..6936fdd2605f 100644 --- a/nixos/doc/manual/from_md/release-notes/rl-2305.section.xml +++ b/nixos/doc/manual/from_md/release-notes/rl-2305.section.xml @@ -922,6 +922,52 @@ as general purpose ephemeral block devices has been removed. + + + As Singularity has renamed to + Apptainer + to distinguish from + an + un-renamed fork by Sylabs Inc., there are now two + packages of Singularity/Apptainer: + + + + + apptainer: From + github.com/apptainer/apptainer, which + is the new repo after renaming. + + + + + singularity: From + github.com/sylabs/singularity, which is + the fork by Sylabs Inc.. + + + + + programs.singularity got a new + package option to specify which package to + use. + + + singularity-tools.buildImage got a new + input argument singularity to specify which + package to use. + + + + + The new option + programs.singularity.enableFakeroot, if set + to true, provides + --fakeroot support for + apptainer and + singularity. + + The unifi-poller package and corresponding diff --git a/nixos/doc/manual/release-notes/rl-2305.section.md b/nixos/doc/manual/release-notes/rl-2305.section.md index 305458c66546..b7614c0788cf 100644 --- a/nixos/doc/manual/release-notes/rl-2305.section.md +++ b/nixos/doc/manual/release-notes/rl-2305.section.md @@ -225,6 +225,18 @@ In addition to numerous new and upgraded packages, this release has the followin - The `zramSwap` is now implemented with `zram-generator`, and the option `zramSwap.numDevices` for using ZRAM devices as general purpose ephemeral block devices has been removed. +- As Singularity has renamed to [Apptainer](https://apptainer.org/news/community-announcement-20211130) + to distinguish from [an un-renamed fork by Sylabs Inc.](https://sylabs.io/2021/05/singularity-community-edition), + there are now two packages of Singularity/Apptainer: + * `apptainer`: From `github.com/apptainer/apptainer`, which is the new repo after renaming. + * `singularity`: From `github.com/sylabs/singularity`, which is the fork by Sylabs Inc.. + + `programs.singularity` got a new `package` option to specify which package to use. + + `singularity-tools.buildImage` got a new input argument `singularity` to specify which package to use. + +- The new option `programs.singularity.enableFakeroot`, if set to `true`, provides `--fakeroot` support for `apptainer` and `singularity`. + - The `unifi-poller` package and corresponding NixOS module have been renamed to `unpoller` to match upstream. - The new option `services.tailscale.useRoutingFeatures` controls various settings for using Tailscale features like exit nodes and subnet routers. If you wish to use your machine as an exit node, you can set this setting to `server`, otherwise if you wish to use an exit node you can set this setting to `client`. The strict RPF warning has been removed as the RPF will be loosened automatically based on the value of this setting. diff --git a/nixos/lib/make-options-doc/default.nix b/nixos/lib/make-options-doc/default.nix index 271af9ba1801..09b0191d2bb8 100644 --- a/nixos/lib/make-options-doc/default.nix +++ b/nixos/lib/make-options-doc/default.nix @@ -78,7 +78,7 @@ let title = args.title or null; name = args.name or (lib.concatStringsSep "." args.path); in '' - - [`${lib.optionalString (title != null) "${title} aka "}pkgs.${name}`]( + - [${lib.optionalString (title != null) "${title} aka "}`pkgs.${name}`]( https://search.nixos.org/packages?show=${name}&sort=relevance&query=${name} )${ lib.optionalString (args ? comment) "\n\n ${args.comment}" diff --git a/nixos/modules/config/stevenblack.nix b/nixos/modules/config/stevenblack.nix index ec6868484942..07a0aa339a56 100644 --- a/nixos/modules/config/stevenblack.nix +++ b/nixos/modules/config/stevenblack.nix @@ -15,7 +15,7 @@ let in { options.networking.stevenblack = { - enable = mkEnableOption (mdDoc "Enable the stevenblack hosts file blocklist."); + enable = mkEnableOption (mdDoc "Enable the stevenblack hosts file blocklist"); block = mkOption { type = types.listOf (types.enum [ "fakenews" "gambling" "porn" "social" ]); diff --git a/nixos/modules/programs/k3b.nix b/nixos/modules/programs/k3b.nix index cdaed3cf70fb..5d19e4f1cc4f 100644 --- a/nixos/modules/programs/k3b.nix +++ b/nixos/modules/programs/k3b.nix @@ -28,7 +28,7 @@ with lib; k3b dvdplusrwtools cdrdao - cdrkit + cdrtools ]; security.wrappers = { @@ -44,7 +44,7 @@ with lib; owner = "root"; group = "cdrom"; permissions = "u+wrx,g+x"; - source = "${pkgs.cdrkit}/bin/cdrecord"; + source = "${pkgs.cdrtools}/bin/cdrecord"; }; }; diff --git a/nixos/modules/programs/proxychains.nix b/nixos/modules/programs/proxychains.nix index 0771f03c77d3..a52783aa6698 100644 --- a/nixos/modules/programs/proxychains.nix +++ b/nixos/modules/programs/proxychains.nix @@ -86,7 +86,7 @@ in { description = lib.mdDoc "Proxy DNS requests - no leak for DNS data."; }; - quietMode = mkEnableOption (lib.mdDoc "Quiet mode (no output from the library)."); + quietMode = mkEnableOption (lib.mdDoc "Quiet mode (no output from the library)"); remoteDNSSubnet = mkOption { type = types.enum [ 10 127 224 ]; diff --git a/nixos/modules/programs/singularity.nix b/nixos/modules/programs/singularity.nix index 9648d0c27874..4884e5bdf2dd 100644 --- a/nixos/modules/programs/singularity.nix +++ b/nixos/modules/programs/singularity.nix @@ -3,32 +3,90 @@ with lib; let cfg = config.programs.singularity; - singularity = pkgs.singularity.overrideAttrs (attrs : { - installPhase = attrs.installPhase + '' - mv $out/libexec/singularity/bin/starter-suid $out/libexec/singularity/bin/starter-suid.orig - ln -s /run/wrappers/bin/singularity-suid $out/libexec/singularity/bin/starter-suid - ''; - }); -in { +in +{ + options.programs.singularity = { - enable = mkEnableOption (lib.mdDoc "Singularity"); + enable = mkEnableOption (mdDoc "singularity") // { + description = mdDoc '' + Whether to install Singularity/Apptainer with system-level overriding such as SUID support. + ''; + }; + package = mkOption { + type = types.package; + default = pkgs.singularity; + defaultText = literalExpression "pkgs.singularity"; + example = literalExpression "pkgs.apptainer"; + description = mdDoc '' + Singularity/Apptainer package to override and install. + ''; + }; + packageOverriden = mkOption { + type = types.nullOr types.package; + default = null; + description = mdDoc '' + This option provides access to the overriden result of `programs.singularity.package`. + + For example, the following configuration makes all the Nixpkgs packages use the overriden `singularity`: + ```Nix + { config, lib, pkgs, ... }: + { + nixpkgs.overlays = [ + (final: prev: { + _singularity-orig = prev.singularity; + singularity = config.programs.singularity.packageOverriden; + }) + ]; + programs.singularity.enable = true; + programs.singularity.package = pkgs._singularity-orig; + } + ``` + + Use `lib.mkForce` to forcefully specify the overriden package. + ''; + }; + enableFakeroot = mkOption { + type = types.bool; + default = true; + example = false; + description = mdDoc '' + Whether to enable the `--fakeroot` support of Singularity/Apptainer. + ''; + }; + enableSuid = mkOption { + type = types.bool; + default = true; + example = false; + description = mdDoc '' + Whether to enable the SUID support of Singularity/Apptainer. + ''; + }; }; config = mkIf cfg.enable { - environment.systemPackages = [ singularity ]; - security.wrappers.singularity-suid = - { setuid = true; - owner = "root"; - group = "root"; - source = "${singularity}/libexec/singularity/bin/starter-suid.orig"; - }; - systemd.tmpfiles.rules = [ - "d /var/singularity/mnt/session 0770 root root -" - "d /var/singularity/mnt/final 0770 root root -" - "d /var/singularity/mnt/overlay 0770 root root -" - "d /var/singularity/mnt/container 0770 root root -" - "d /var/singularity/mnt/source 0770 root root -" - ]; + programs.singularity.packageOverriden = (cfg.package.override ( + optionalAttrs cfg.enableFakeroot { + newuidmapPath = "/run/wrappers/bin/newuidmap"; + newgidmapPath = "/run/wrappers/bin/newgidmap"; + } // optionalAttrs cfg.enableSuid { + enableSuid = true; + starterSuidPath = "/run/wrappers/bin/${cfg.package.projectName}-suid"; + } + )); + environment.systemPackages = [ cfg.packageOverriden ]; + security.wrappers."${cfg.packageOverriden.projectName}-suid" = mkIf cfg.enableSuid { + setuid = true; + owner = "root"; + group = "root"; + source = "${cfg.packageOverriden}/libexec/${cfg.packageOverriden.projectName}/bin/starter-suid.orig"; + }; + systemd.tmpfiles.rules = [ + "d /var/lib/${cfg.packageOverriden.projectName}/mnt/session 0770 root root -" + "d /var/lib/${cfg.packageOverriden.projectName}/mnt/final 0770 root root -" + "d /var/lib/${cfg.packageOverriden.projectName}/mnt/overlay 0770 root root -" + "d /var/lib/${cfg.packageOverriden.projectName}/mnt/container 0770 root root -" + "d /var/lib/${cfg.packageOverriden.projectName}/mnt/source 0770 root root -" + ]; }; } diff --git a/nixos/modules/security/polkit.nix b/nixos/modules/security/polkit.nix index f33898578b81..de427ccb295b 100644 --- a/nixos/modules/security/polkit.nix +++ b/nixos/modules/security/polkit.nix @@ -14,7 +14,7 @@ in security.polkit.enable = mkEnableOption (lib.mdDoc "polkit"); - security.polkit.debug = mkEnableOption (lib.mdDoc "debug logs from polkit. This is required in order to see log messages from rule definitions."); + security.polkit.debug = mkEnableOption (lib.mdDoc "debug logs from polkit. This is required in order to see log messages from rule definitions"); security.polkit.extraConfig = mkOption { type = types.lines; diff --git a/nixos/modules/services/backup/zfs-replication.nix b/nixos/modules/services/backup/zfs-replication.nix index ce914003c622..8e7059e5b59d 100644 --- a/nixos/modules/services/backup/zfs-replication.nix +++ b/nixos/modules/services/backup/zfs-replication.nix @@ -9,7 +9,7 @@ let in { options = { services.zfs.autoReplication = { - enable = mkEnableOption (lib.mdDoc "ZFS snapshot replication."); + enable = mkEnableOption (lib.mdDoc "ZFS snapshot replication"); followDelete = mkOption { description = lib.mdDoc "Remove remote snapshots that don't have a local correspondent."; diff --git a/nixos/modules/services/cluster/kubernetes/addon-manager.nix b/nixos/modules/services/cluster/kubernetes/addon-manager.nix index 7aa2a8323b1d..dc851688fbec 100644 --- a/nixos/modules/services/cluster/kubernetes/addon-manager.nix +++ b/nixos/modules/services/cluster/kubernetes/addon-manager.nix @@ -62,7 +62,7 @@ in ''; }; - enable = mkEnableOption (lib.mdDoc "Kubernetes addon manager."); + enable = mkEnableOption (lib.mdDoc "Kubernetes addon manager"); }; ###### implementation diff --git a/nixos/modules/services/cluster/kubernetes/kubelet.nix b/nixos/modules/services/cluster/kubernetes/kubelet.nix index 3ede1cb80e85..8e935d621be4 100644 --- a/nixos/modules/services/cluster/kubernetes/kubelet.nix +++ b/nixos/modules/services/cluster/kubernetes/kubelet.nix @@ -146,7 +146,7 @@ in default = "unix:///run/containerd/containerd.sock"; }; - enable = mkEnableOption (lib.mdDoc "Kubernetes kubelet."); + enable = mkEnableOption (lib.mdDoc "Kubernetes kubelet"); extraOpts = mkOption { description = lib.mdDoc "Kubernetes kubelet extra command line options."; diff --git a/nixos/modules/services/desktops/gnome/evolution-data-server.nix b/nixos/modules/services/desktops/gnome/evolution-data-server.nix index 0006ba1a7bad..a8db7dce8fdf 100644 --- a/nixos/modules/services/desktops/gnome/evolution-data-server.nix +++ b/nixos/modules/services/desktops/gnome/evolution-data-server.nix @@ -27,7 +27,7 @@ with lib; options = { services.gnome.evolution-data-server = { - enable = mkEnableOption (lib.mdDoc "Evolution Data Server, a collection of services for storing addressbooks and calendars."); + enable = mkEnableOption (lib.mdDoc "Evolution Data Server, a collection of services for storing addressbooks and calendars"); plugins = mkOption { type = types.listOf types.package; default = [ ]; @@ -35,7 +35,7 @@ with lib; }; }; programs.evolution = { - enable = mkEnableOption (lib.mdDoc "Evolution, a Personal information management application that provides integrated mail, calendaring and address book functionality."); + enable = mkEnableOption (lib.mdDoc "Evolution, a Personal information management application that provides integrated mail, calendaring and address book functionality"); plugins = mkOption { type = types.listOf types.package; default = [ ]; diff --git a/nixos/modules/services/development/zammad.nix b/nixos/modules/services/development/zammad.nix index 7de11b08b7e7..0faeb4c0e9fa 100644 --- a/nixos/modules/services/development/zammad.nix +++ b/nixos/modules/services/development/zammad.nix @@ -28,7 +28,7 @@ in options = { services.zammad = { - enable = mkEnableOption (lib.mdDoc "Zammad, a web-based, open source user support/ticketing solution."); + enable = mkEnableOption (lib.mdDoc "Zammad, a web-based, open source user support/ticketing solution"); package = mkOption { type = types.package; diff --git a/nixos/modules/services/games/freeciv.nix b/nixos/modules/services/games/freeciv.nix index 8b340bb161a5..f33ea5c08a27 100644 --- a/nixos/modules/services/games/freeciv.nix +++ b/nixos/modules/services/games/freeciv.nix @@ -54,7 +54,7 @@ in default = 0; description = lib.mdDoc "Set debug log level."; }; - options.exit-on-end = mkEnableOption (lib.mdDoc "exit instead of restarting when a game ends."); + options.exit-on-end = mkEnableOption (lib.mdDoc "exit instead of restarting when a game ends"); options.Guests = mkEnableOption (lib.mdDoc "guests to login if auth is enabled"); options.Newusers = mkEnableOption (lib.mdDoc "new users to login if auth is enabled"); options.port = mkOption { diff --git a/nixos/modules/services/hardware/udisks2.nix b/nixos/modules/services/hardware/udisks2.nix index 7368845dafd5..d5c71bb821df 100644 --- a/nixos/modules/services/hardware/udisks2.nix +++ b/nixos/modules/services/hardware/udisks2.nix @@ -19,7 +19,7 @@ in services.udisks2 = { - enable = mkEnableOption (lib.mdDoc "udisks2, a DBus service that allows applications to query and manipulate storage devices."); + enable = mkEnableOption (lib.mdDoc "udisks2, a DBus service that allows applications to query and manipulate storage devices"); settings = mkOption rec { type = types.attrsOf settingsFormat.type; diff --git a/nixos/modules/services/mail/dovecot.nix b/nixos/modules/services/mail/dovecot.nix index f6a167572f72..21bafd859c3c 100644 --- a/nixos/modules/services/mail/dovecot.nix +++ b/nixos/modules/services/mail/dovecot.nix @@ -171,11 +171,11 @@ in options.services.dovecot2 = { enable = mkEnableOption (lib.mdDoc "the dovecot 2.x POP3/IMAP server"); - enablePop3 = mkEnableOption (lib.mdDoc "starting the POP3 listener (when Dovecot is enabled)."); + enablePop3 = mkEnableOption (lib.mdDoc "starting the POP3 listener (when Dovecot is enabled)"); - enableImap = mkEnableOption (lib.mdDoc "starting the IMAP listener (when Dovecot is enabled).") // { default = true; }; + enableImap = mkEnableOption (lib.mdDoc "starting the IMAP listener (when Dovecot is enabled)") // { default = true; }; - enableLmtp = mkEnableOption (lib.mdDoc "starting the LMTP listener (when Dovecot is enabled)."); + enableLmtp = mkEnableOption (lib.mdDoc "starting the LMTP listener (when Dovecot is enabled)"); protocols = mkOption { type = types.listOf types.str; @@ -300,9 +300,9 @@ in description = lib.mdDoc "Path to the server's private key."; }; - enablePAM = mkEnableOption (lib.mdDoc "creating a own Dovecot PAM service and configure PAM user logins.") // { default = true; }; + enablePAM = mkEnableOption (lib.mdDoc "creating a own Dovecot PAM service and configure PAM user logins") // { default = true; }; - enableDHE = mkEnableOption (lib.mdDoc "enable ssl_dh and generation of primes for the key exchange.") // { default = true; }; + enableDHE = mkEnableOption (lib.mdDoc "enable ssl_dh and generation of primes for the key exchange") // { default = true; }; sieveScripts = mkOption { type = types.attrsOf types.path; @@ -310,7 +310,7 @@ in description = lib.mdDoc "Sieve scripts to be executed. Key is a sequence, e.g. 'before2', 'after' etc."; }; - showPAMFailure = mkEnableOption (lib.mdDoc "showing the PAM failure message on authentication error (useful for OTPW)."); + showPAMFailure = mkEnableOption (lib.mdDoc "showing the PAM failure message on authentication error (useful for OTPW)"); mailboxes = mkOption { type = with types; coercedTo @@ -326,7 +326,7 @@ in description = lib.mdDoc "Configure mailboxes and auto create or subscribe them."; }; - enableQuota = mkEnableOption (lib.mdDoc "the dovecot quota service."); + enableQuota = mkEnableOption (lib.mdDoc "the dovecot quota service"); quotaPort = mkOption { type = types.str; diff --git a/nixos/modules/services/misc/atuin.nix b/nixos/modules/services/misc/atuin.nix index c94852e3aad9..508e2862b63f 100644 --- a/nixos/modules/services/misc/atuin.nix +++ b/nixos/modules/services/misc/atuin.nix @@ -8,7 +8,7 @@ in { options = { services.atuin = { - enable = mkEnableOption (mdDoc "Enable server for shell history sync with atuin."); + enable = mkEnableOption (mdDoc "Enable server for shell history sync with atuin"); openRegistration = mkOption { type = types.bool; diff --git a/nixos/modules/services/misc/input-remapper.nix b/nixos/modules/services/misc/input-remapper.nix index 6353966f5c3f..3f6d97f85738 100644 --- a/nixos/modules/services/misc/input-remapper.nix +++ b/nixos/modules/services/misc/input-remapper.nix @@ -6,7 +6,7 @@ let cfg = config.services.input-remapper; in { options = { services.input-remapper = { - enable = mkEnableOption (lib.mdDoc "input-remapper, an easy to use tool to change the mapping of your input device buttons."); + enable = mkEnableOption (lib.mdDoc "input-remapper, an easy to use tool to change the mapping of your input device buttons"); package = mkPackageOptionMD pkgs "input-remapper" { }; enableUdevRules = mkEnableOption (lib.mdDoc "udev rules added by input-remapper to handle hotplugged devices. Currently disabled by default due to https://github.com/sezanzeb/input-remapper/issues/140"); serviceWantedBy = mkOption { diff --git a/nixos/modules/services/misc/sourcehut/default.nix b/nixos/modules/services/misc/sourcehut/default.nix index b2cadbf0c436..d4391bc49e31 100644 --- a/nixos/modules/services/misc/sourcehut/default.nix +++ b/nixos/modules/services/misc/sourcehut/default.nix @@ -438,7 +438,7 @@ in }; options."lists.sr.ht" = commonServiceSettings "lists" // { - allow-new-lists = mkEnableOption (lib.mdDoc "Allow creation of new lists."); + allow-new-lists = mkEnableOption (lib.mdDoc "Allow creation of new lists"); notify-from = mkOption { description = lib.mdDoc "Outgoing email for notifications generated by users."; type = types.str; diff --git a/nixos/modules/services/monitoring/mackerel-agent.nix b/nixos/modules/services/monitoring/mackerel-agent.nix index 4185cd76c4eb..67dc1bc19edd 100644 --- a/nixos/modules/services/monitoring/mackerel-agent.nix +++ b/nixos/modules/services/monitoring/mackerel-agent.nix @@ -11,7 +11,7 @@ in { # the upstream package runs as root, but doesn't seem to be strictly # necessary for basic functionality - runAsRoot = mkEnableOption (lib.mdDoc "Whether to run as root."); + runAsRoot = mkEnableOption (lib.mdDoc "Whether to run as root"); autoRetirement = mkEnableOption (lib.mdDoc '' Whether to automatically retire the host upon OS shutdown. diff --git a/nixos/modules/services/monitoring/prometheus/exporters/unpoller.nix b/nixos/modules/services/monitoring/prometheus/exporters/unpoller.nix index 5cd1e2c65e90..3b7f978528cd 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters/unpoller.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters/unpoller.nix @@ -24,9 +24,9 @@ in { inherit (options.services.unpoller.unifi) controllers; inherit (options.services.unpoller) loki; log = { - debug = mkEnableOption (lib.mdDoc "debug logging including line numbers, high resolution timestamps, per-device logs."); - quiet = mkEnableOption (lib.mdDoc "startup and error logs only."); - prometheusErrors = mkEnableOption (lib.mdDoc "emitting errors to prometheus."); + debug = mkEnableOption (lib.mdDoc "debug logging including line numbers, high resolution timestamps, per-device logs"); + quiet = mkEnableOption (lib.mdDoc "startup and error logs only"); + prometheusErrors = mkEnableOption (lib.mdDoc "emitting errors to prometheus"); }; }; diff --git a/nixos/modules/services/monitoring/uptime-kuma.nix b/nixos/modules/services/monitoring/uptime-kuma.nix index 886e14b5f6c9..5f803d57b5e9 100644 --- a/nixos/modules/services/monitoring/uptime-kuma.nix +++ b/nixos/modules/services/monitoring/uptime-kuma.nix @@ -11,7 +11,7 @@ in options = { services.uptime-kuma = { - enable = mkEnableOption (mdDoc "Uptime Kuma, this assumes a reverse proxy to be set."); + enable = mkEnableOption (mdDoc "Uptime Kuma, this assumes a reverse proxy to be set"); package = mkOption { type = types.package; @@ -20,7 +20,7 @@ in description = lib.mdDoc "Uptime Kuma package to use."; }; - appriseSupport = mkEnableOption (mdDoc "apprise support for notifications."); + appriseSupport = mkEnableOption (mdDoc "apprise support for notifications"); settings = lib.mkOption { type = lib.types.submodule { freeformType = with lib.types; attrsOf str; }; diff --git a/nixos/modules/services/network-filesystems/moosefs.nix b/nixos/modules/services/network-filesystems/moosefs.nix index ab82a2a07dd4..49cbc89d5a91 100644 --- a/nixos/modules/services/network-filesystems/moosefs.nix +++ b/nixos/modules/services/network-filesystems/moosefs.nix @@ -85,7 +85,7 @@ in { description = lib.mdDoc "Run daemons as user moosefs instead of root."; }; - client.enable = mkEnableOption (lib.mdDoc "Moosefs client."); + client.enable = mkEnableOption (lib.mdDoc "Moosefs client"); master = { enable = mkOption { @@ -131,7 +131,7 @@ in { }; metalogger = { - enable = mkEnableOption (lib.mdDoc "Moosefs metalogger daemon."); + enable = mkEnableOption (lib.mdDoc "Moosefs metalogger daemon"); settings = mkOption { type = types.submodule { @@ -149,7 +149,7 @@ in { }; chunkserver = { - enable = mkEnableOption (lib.mdDoc "Moosefs chunkserver daemon."); + enable = mkEnableOption (lib.mdDoc "Moosefs chunkserver daemon"); openFirewall = mkOption { type = types.bool; diff --git a/nixos/modules/services/networking/blockbook-frontend.nix b/nixos/modules/services/networking/blockbook-frontend.nix index ab784563e4ac..46b26195d211 100644 --- a/nixos/modules/services/networking/blockbook-frontend.nix +++ b/nixos/modules/services/networking/blockbook-frontend.nix @@ -10,7 +10,7 @@ let options = { - enable = mkEnableOption (lib.mdDoc "blockbook-frontend application."); + enable = mkEnableOption (lib.mdDoc "blockbook-frontend application"); package = mkOption { type = types.package; diff --git a/nixos/modules/services/security/kanidm.nix b/nixos/modules/services/security/kanidm.nix index 55120799c993..5583c39368f7 100644 --- a/nixos/modules/services/security/kanidm.nix +++ b/nixos/modules/services/security/kanidm.nix @@ -55,7 +55,7 @@ in options.services.kanidm = { enableClient = lib.mkEnableOption (lib.mdDoc "the Kanidm client"); enableServer = lib.mkEnableOption (lib.mdDoc "the Kanidm server"); - enablePam = lib.mkEnableOption (lib.mdDoc "the Kanidm PAM and NSS integration."); + enablePam = lib.mkEnableOption (lib.mdDoc "the Kanidm PAM and NSS integration"); serverSettings = lib.mkOption { type = lib.types.submodule { diff --git a/nixos/modules/services/web-apps/cloudlog.nix b/nixos/modules/services/web-apps/cloudlog.nix index ffd1085bde65..9c6284fd1b57 100644 --- a/nixos/modules/services/web-apps/cloudlog.nix +++ b/nixos/modules/services/web-apps/cloudlog.nix @@ -68,7 +68,7 @@ let in { options.services.cloudlog = with types; { - enable = mkEnableOption (mdDoc "Whether to enable Cloudlog."); + enable = mkEnableOption (mdDoc "Whether to enable Cloudlog"); dataDir = mkOption { type = str; default = "/var/lib/cloudlog"; diff --git a/nixos/modules/services/web-apps/dokuwiki.nix b/nixos/modules/services/web-apps/dokuwiki.nix index 54cd5fd33bef..215372083654 100644 --- a/nixos/modules/services/web-apps/dokuwiki.nix +++ b/nixos/modules/services/web-apps/dokuwiki.nix @@ -148,7 +148,7 @@ let ]; options = { - enable = mkEnableOption (lib.mdDoc "DokuWiki web application."); + enable = mkEnableOption (lib.mdDoc "DokuWiki web application"); package = mkOption { type = types.package; diff --git a/nixos/modules/services/web-apps/galene.nix b/nixos/modules/services/web-apps/galene.nix index 15ef09aa0b87..747b85f94c65 100644 --- a/nixos/modules/services/web-apps/galene.nix +++ b/nixos/modules/services/web-apps/galene.nix @@ -12,7 +12,7 @@ in { options = { services.galene = { - enable = mkEnableOption (lib.mdDoc "Galene Service."); + enable = mkEnableOption (lib.mdDoc "Galene Service"); stateDir = mkOption { default = defaultstateDir; diff --git a/nixos/modules/services/web-apps/hledger-web.nix b/nixos/modules/services/web-apps/hledger-web.nix index 86716a02649c..0fc283ff5219 100644 --- a/nixos/modules/services/web-apps/hledger-web.nix +++ b/nixos/modules/services/web-apps/hledger-web.nix @@ -7,7 +7,7 @@ in { enable = mkEnableOption (lib.mdDoc "hledger-web service"); - serveApi = mkEnableOption (lib.mdDoc "Serve only the JSON web API, without the web UI."); + serveApi = mkEnableOption (lib.mdDoc "Serve only the JSON web API, without the web UI"); host = mkOption { type = types.str; diff --git a/nixos/modules/services/web-apps/jirafeau.nix b/nixos/modules/services/web-apps/jirafeau.nix index 293cbb3af425..b2e274167164 100644 --- a/nixos/modules/services/web-apps/jirafeau.nix +++ b/nixos/modules/services/web-apps/jirafeau.nix @@ -36,7 +36,7 @@ in description = lib.mdDoc "Location of Jirafeau storage directory."; }; - enable = mkEnableOption (lib.mdDoc "Jirafeau file upload application."); + enable = mkEnableOption (lib.mdDoc "Jirafeau file upload application"); extraConfig = mkOption { type = types.lines; diff --git a/nixos/modules/services/web-apps/limesurvey.nix b/nixos/modules/services/web-apps/limesurvey.nix index 7093d1de0dac..dd51174c8b8e 100644 --- a/nixos/modules/services/web-apps/limesurvey.nix +++ b/nixos/modules/services/web-apps/limesurvey.nix @@ -32,7 +32,7 @@ in # interface options.services.limesurvey = { - enable = mkEnableOption (lib.mdDoc "Limesurvey web application."); + enable = mkEnableOption (lib.mdDoc "Limesurvey web application"); database = { type = mkOption { diff --git a/nixos/modules/services/x11/desktop-managers/plasma5.nix b/nixos/modules/services/x11/desktop-managers/plasma5.nix index eb0373c686c5..181db01ad88e 100644 --- a/nixos/modules/services/x11/desktop-managers/plasma5.nix +++ b/nixos/modules/services/x11/desktop-managers/plasma5.nix @@ -448,6 +448,7 @@ in dolphin-plugins ffmpegthumbs kdegraphics-thumbnailers + pkgs.kio-admin kio-extras ]; optionalPackages = [ diff --git a/nixos/modules/services/x11/extra-layouts.nix b/nixos/modules/services/x11/extra-layouts.nix index 574657a50c82..9c88d12ca6f2 100644 --- a/nixos/modules/services/x11/extra-layouts.nix +++ b/nixos/modules/services/x11/extra-layouts.nix @@ -106,9 +106,9 @@ in description = lib.mdDoc '' Extra custom layouts that will be included in the xkb configuration. Information on how to create a new layout can be found here: - [](https://www.x.org/releases/current/doc/xorg-docs/input/XKB-Enhancing.html#Defining_New_Layouts). + . For more examples see - [](https://wiki.archlinux.org/index.php/X_KeyBoard_extension#Basic_examples) + ''; }; diff --git a/nixos/modules/system/boot/kernel.nix b/nixos/modules/system/boot/kernel.nix index 8f203b2c8b32..0298e28f3289 100644 --- a/nixos/modules/system/boot/kernel.nix +++ b/nixos/modules/system/boot/kernel.nix @@ -20,7 +20,7 @@ in ###### interface options = { - boot.kernel.enable = mkEnableOption (lib.mdDoc "the Linux kernel. This is useful for systemd-like containers which do not require a kernel.") // { + boot.kernel.enable = mkEnableOption (lib.mdDoc "the Linux kernel. This is useful for systemd-like containers which do not require a kernel") // { default = true; }; diff --git a/nixos/modules/system/boot/luksroot.nix b/nixos/modules/system/boot/luksroot.nix index 03d03cb348e8..cdb5d8bf3c26 100644 --- a/nixos/modules/system/boot/luksroot.nix +++ b/nixos/modules/system/boot/luksroot.nix @@ -929,7 +929,14 @@ in ++ (if builtins.elem "xts" luks.cryptoModules then ["ecb"] else []); # copy the cryptsetup binary and it's dependencies - boot.initrd.extraUtilsCommands = mkIf (!config.boot.initrd.systemd.enable) '' + boot.initrd.extraUtilsCommands = let + pbkdf2-sha512 = pkgs.runCommandCC "pbkdf2-sha512" { buildInputs = [ pkgs.openssl ]; } '' + mkdir -p "$out/bin" + cc -O3 -lcrypto ${./pbkdf2-sha512.c} -o "$out/bin/pbkdf2-sha512" + strip -s "$out/bin/pbkdf2-sha512" + ''; + in + mkIf (!config.boot.initrd.systemd.enable) '' copy_bin_and_libs ${pkgs.cryptsetup}/bin/cryptsetup copy_bin_and_libs ${askPass}/bin/cryptsetup-askpass sed -i s,/bin/sh,$out/bin/sh, $out/bin/cryptsetup-askpass @@ -939,9 +946,7 @@ in copy_bin_and_libs ${pkgs.yubikey-personalization}/bin/ykinfo copy_bin_and_libs ${pkgs.openssl.bin}/bin/openssl - cc -O3 -I${pkgs.openssl.dev}/include -L${lib.getLib pkgs.openssl}/lib ${./pbkdf2-sha512.c} -o pbkdf2-sha512 -lcrypto - strip -s pbkdf2-sha512 - copy_bin_and_libs pbkdf2-sha512 + copy_bin_and_libs ${pbkdf2-sha512}/bin/pbkdf2-sha512 mkdir -p $out/etc/ssl cp -pdv ${pkgs.openssl.out}/etc/ssl/openssl.cnf $out/etc/ssl diff --git a/nixos/modules/tasks/filesystems/envfs.nix b/nixos/modules/tasks/filesystems/envfs.nix index 450b805f0f58..76344f5f87ea 100644 --- a/nixos/modules/tasks/filesystems/envfs.nix +++ b/nixos/modules/tasks/filesystems/envfs.nix @@ -7,11 +7,11 @@ let device = "none"; fsType = "envfs"; options = [ - "fallback-path=${pkgs.runCommand "fallback-path" {} '' + "fallback-path=${pkgs.runCommand "fallback-path" {} ('' mkdir -p $out - ln -s ${pkgs.coreutils}/bin/env $out/env - ln -s ${config.system.build.binsh}/bin/sh $out/sh - ''}" + ln -s ${config.environment.usrbinenv} $out/env + ln -s ${config.environment.binsh} $out/sh + '' + cfg.extraFallbackPathCommands)}" ]; }; "/bin" = { @@ -31,11 +31,19 @@ in { etc. ''; }; + package = lib.mkOption { type = lib.types.package; - description = lib.mdDoc "Which package to use for the envfs."; default = pkgs.envfs; defaultText = lib.literalExpression "pkgs.envfs"; + description = lib.mdDoc "Which package to use for the envfs."; + }; + + extraFallbackPathCommands = lib.mkOption { + type = lib.types.lines; + default = ""; + example = "ln -s $''{pkgs.bash}/bin/bash $out/bash"; + description = lib.mdDoc "Extra commands to run in the package that contains fallback executables in case not other executable is found"; }; }; }; diff --git a/pkgs/applications/audio/callaudiod/default.nix b/pkgs/applications/audio/callaudiod/default.nix index 562a53fe5927..221febf35dcd 100644 --- a/pkgs/applications/audio/callaudiod/default.nix +++ b/pkgs/applications/audio/callaudiod/default.nix @@ -11,14 +11,14 @@ stdenv.mkDerivation rec { pname = "callaudiod"; - version = "0.1.4"; + version = "0.1.7"; src = fetchFromGitLab { domain = "gitlab.com"; owner = "mobian1"; repo = pname; rev = version; - sha256 = "sha256-71+9ALz55aqxXRBRwOcs9fwiQK31pJ9E72pGRmt0OkE="; + sha256 = "sha256-BDEu3ASlnovMK0lQC+CQvpXvtdt33BRntstPAWaAnsg="; }; strictDeps = true; diff --git a/pkgs/applications/audio/snapcast/default.nix b/pkgs/applications/audio/snapcast/default.nix index 558948ab4a0d..aef561e692a6 100644 --- a/pkgs/applications/audio/snapcast/default.nix +++ b/pkgs/applications/audio/snapcast/default.nix @@ -9,13 +9,13 @@ assert pulseaudioSupport -> libpulseaudio != null; stdenv.mkDerivation rec { pname = "snapcast"; - version = "0.26.0"; + version = "0.27.0"; src = fetchFromGitHub { owner = "badaix"; repo = "snapcast"; rev = "v${version}"; - sha256 = "sha256-CCifn9OEFM//Hk1PJj8T3MXIV8pXCTdBBXPsHuZwLyQ="; + sha256 = "sha256-dlK1xQQqst4VQjioC7MZzqXwMC+JfqtvnD5lrOqGhYI="; }; nativeBuildInputs = [ cmake pkg-config ]; diff --git a/pkgs/applications/blockchains/erigon/default.nix b/pkgs/applications/blockchains/erigon/default.nix index a17bef8cae37..51b6d4d16b2b 100644 --- a/pkgs/applications/blockchains/erigon/default.nix +++ b/pkgs/applications/blockchains/erigon/default.nix @@ -2,7 +2,7 @@ let pname = "erigon"; - version = "2.37.0"; + version = "2.38.1"; in buildGoModule { inherit pname version; @@ -11,11 +11,11 @@ buildGoModule { owner = "ledgerwatch"; repo = pname; rev = "v${version}"; - sha256 = "sha256-r/mumt/f0wrOsXyEHo/NX0lJGt8zqXEVNC+9DWDkHAM="; + sha256 = "sha256-sLJMmSEUQNsodZ9Ms0ipDwN2QOYa9pZTlEqt4CF23Sc="; fetchSubmodules = true; }; - vendorSha256 = "sha256-vSJZ1wIx1CiLE04ZBDnQDQqM2v8BBLxw5qbAsixC3/U="; + vendorSha256 = "sha256-KESY+PSbWQHPJphop4GnVF4T8Q/MPb2GFDEko0ieXEM="; proxyVendor = true; # Build errors in mdbx when format hardening is enabled: diff --git a/pkgs/applications/blockchains/torq/default.nix b/pkgs/applications/blockchains/torq/default.nix index cf7722238ef7..4b786168bce3 100644 --- a/pkgs/applications/blockchains/torq/default.nix +++ b/pkgs/applications/blockchains/torq/default.nix @@ -1,9 +1,10 @@ { lib , buildGoModule +, buildNpmPackage , fetchFromGitHub }: -buildGoModule rec { +let pname = "torq"; version = "0.17.3"; @@ -14,6 +15,27 @@ buildGoModule rec { hash = "sha256-fqHJZi1NQCrZqsa+N+FVYZ8s9o0D555Sqn5qNlJ1MmI="; }; + web = buildNpmPackage { + pname = "${pname}-frontend"; + inherit version; + src = "${src}/web"; + npmDepsHash = "sha256-8mUfTFzPjQlQvhC3zZf+WruDBkYnmGt3yckNi0CPWs0="; + + # copied from upstream Dockerfile + npmInstallFlags = [ "--legacy-peer-deps" ]; + TSX_COMPILE_ON_ERROR="true"; + ESLINT_NO_DEV_ERRORS="true"; + + # override npmInstallHook, we only care about the build/ directory + installPhase = '' + mkdir $out + cp -r build $out/ + ''; + }; +in +buildGoModule rec { + inherit pname version src; + vendorHash = "sha256-HETN2IMnpxnTyg6bQDpoD0saJu+gKocdEf0VzEi12Gs="; subPackages = [ "cmd/torq" ]; @@ -24,6 +46,10 @@ buildGoModule rec { "-X github.com/lncapital/torq/build.version=v${version}" ]; + postInstall = '' + ln -s ${web} $out/web + ''; + meta = with lib; { description = "Capital management tool for lightning network nodes"; license = licenses.mit; diff --git a/pkgs/applications/editors/vscode/extensions/default.nix b/pkgs/applications/editors/vscode/extensions/default.nix index 9e4548ad0fe1..41666183ce22 100644 --- a/pkgs/applications/editors/vscode/extensions/default.nix +++ b/pkgs/applications/editors/vscode/extensions/default.nix @@ -2580,8 +2580,8 @@ let mktplcRef = { name = "code-spell-checker"; publisher = "streetsidesoftware"; - version = "2.15.0"; - sha256 = "sha256-YfcO/01nO+92xZEJgYyLYAkqXMqfV/QDkcN9Dnjp5ZA="; + version = "2.16.0"; + sha256 = "sha256-Qr4cYAEvAkvvE6KytVeInJzcMQJZqr/e/KPfelVzjUA="; }; meta = with lib; { changelog = "https://marketplace.visualstudio.com/items/streetsidesoftware.code-spell-checker/changelog"; diff --git a/pkgs/applications/graphics/drawio/default.nix b/pkgs/applications/graphics/drawio/default.nix index c26b2f46e7f6..5c5745646b59 100644 --- a/pkgs/applications/graphics/drawio/default.nix +++ b/pkgs/applications/graphics/drawio/default.nix @@ -11,11 +11,11 @@ stdenv.mkDerivation rec { pname = "drawio"; - version = "20.8.10"; + version = "20.8.16"; src = fetchurl { url = "https://github.com/jgraph/drawio-desktop/releases/download/v${version}/drawio-x86_64-${version}.rpm"; - sha256 = "118e9c9a328c92aeeda3c5925c8d8ed50d0993c07715726447ee720699958626"; + sha256 = "sha256-FBnyogqf5BHLRInjJzC2dENnAwFcWMHDvJ+F0I3ffVg="; }; nativeBuildInputs = [ diff --git a/pkgs/applications/misc/1password-gui/default.nix b/pkgs/applications/misc/1password-gui/default.nix index 3c08f1d8a9da..27adbfff713d 100644 --- a/pkgs/applications/misc/1password-gui/default.nix +++ b/pkgs/applications/misc/1password-gui/default.nix @@ -9,43 +9,43 @@ let pname = "1password"; - version = if channel == "stable" then "8.9.10" else "8.9.12-4.BETA"; + version = if channel == "stable" then "8.9.14" else "8.10.0-20.BETA"; sources = { stable = { x86_64-linux = { url = "https://downloads.1password.com/linux/tar/stable/x86_64/1password-${version}.x64.tar.gz"; - sha256 = "sha256-aoa00W5zvZQeHKd2Eqyrxl5Z1PwLMHc5lkMUskLiD74="; + sha256 = "sha256-rlLzPDPOmzamDnRxuvgrpAW0QrMINw/PsdLxOiBpMnA="; }; aarch64-linux = { url = "https://downloads.1password.com/linux/tar/stable/aarch64/1password-${version}.arm64.tar.gz"; - sha256 = "sha256-Zt64UGKI3+DayS6XP7jTE+pxv52tUUZbUHiuzjcm1JI="; + sha256 = "sha256-hJTqFr6/KOl4C+1oyo/zrnCbqvRQin6HjyLKOppUl/M="; }; x86_64-darwin = { url = "https://downloads.1password.com/mac/1Password-${version}-x86_64.zip"; - sha256 = "sha256-sx9eASpMcgkIH1GRzJMqSQa5Y5GJlYU/20CZFyFK+OU="; + sha256 = "sha256-3/aiUj+WYZfPItYrYNQKsUSpkRTgOhyb8L5gURt1O74="; }; aarch64-darwin = { url = "https://downloads.1password.com/mac/1Password-${version}-aarch64.zip"; - sha256 = "sha256-Z1cEynO9iWZra542CVGmefrTNerMe13OcTAzWXNi8jI="; + sha256 = "sha256-n0xqD5WbcC9B6spisa5V7JJRXGZubBwzJFUS8edvz/Q="; }; }; beta = { x86_64-linux = { url = "https://downloads.1password.com/linux/tar/beta/x86_64/1password-${version}.x64.tar.gz"; - sha256 = "sha256-/WXaLINqLFLft+wrmr+fV0kM9qS5w4etFiGltnzoVdo="; + sha256 = "sha256-r2MRyw0dfD3vGnCcPW624K5rSaNSCjTVW4cWFgPAIaY="; }; aarch64-linux = { url = "https://downloads.1password.com/linux/tar/beta/aarch64/1password-${version}.arm64.tar.gz"; - sha256 = "sha256-Zv9uHkFCZ0flBMAwQBjNhqFWhAXKyHBfZk733hbSag4="; + sha256 = "sha256-98sv4yLvLw8J5uQBB66qTV3lRWnyeZiifhEOW7shz8s="; }; x86_64-darwin = { url = "https://downloads.1password.com/mac/1Password-${version}-x86_64.zip"; - sha256 = "sha256-Vryk6nMQY+0NIgwJkZ2j3vrxyhrzxbe96jbyoNbPIR0="; + sha256 = "sha256-ezHk6OgUsmFfMfsY+yyWqn+6JgHSmpkFWGNCCaBv/Bo="; }; aarch64-darwin = { url = "https://downloads.1password.com/mac/1Password-${version}-aarch64.zip"; - sha256 = "sha256-74iOaNkuPRKUsTNNd7UTpy5ahjoMmxiNT84Op5ztRGk="; + sha256 = "sha256-JmCrEBucXGPpGbiKOxA8vu6bUVYsavfsYA5QY58Grnw="; }; }; }; diff --git a/pkgs/applications/misc/1password-gui/update.sh b/pkgs/applications/misc/1password-gui/update.sh new file mode 100755 index 000000000000..aab589fd37ea --- /dev/null +++ b/pkgs/applications/misc/1password-gui/update.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p jq +#shellcheck shell=bash + +CURRENT_HASH="" + +print_hash() { + OS="$1" + CHANNEL="$2" + ARCH="$3" + VERSION="$4" + + if [[ "$OS" == "linux" ]]; then + if [[ "$ARCH" == "x86_64" ]]; then + EXT="x64.tar.gz" + else + EXT="arm64.tar.gz" + fi + URL="https://downloads.1password.com/${OS}/tar/${CHANNEL}/${ARCH}/1password-${VERSION}.${EXT}" + else + EXT="$ARCH.zip" + URL="https://downloads.1password.com/${OS}/1Password-${VERSION}-${EXT}" + fi + + CURRENT_HASH=$(nix store prefetch-file "$URL" --json | jq -r '.hash') + + echo "$CHANNEL ${ARCH}-${OS}: $CURRENT_HASH" +} + +if [[ -z "$STABLE_VER" ]]; then + echo "No 'STABLE_VER' environment variable provided, skipping" +else + print_hash "linux" "stable" "x86_64" "$STABLE_VER" + print_hash "linux" "stable" "aarch64" "$STABLE_VER" + print_hash "mac" "stable" "x86_64" "$STABLE_VER" + print_hash "mac" "stable" "aarch64" "$STABLE_VER" +fi + +if [[ -z "$BETA_VER" ]]; then + echo "No 'BETA_VER' environment variable provided, skipping" +else + print_hash "linux" "beta" "x86_64" "$BETA_VER" + print_hash "linux" "beta" "aarch64" "$BETA_VER" + print_hash "mac" "beta" "x86_64" "$BETA_VER" + print_hash "mac" "beta" "aarch64" "$BETA_VER" +fi diff --git a/pkgs/applications/misc/cubiomes-viewer/default.nix b/pkgs/applications/misc/cubiomes-viewer/default.nix index 3912e8d221e9..f6035b3c6c49 100644 --- a/pkgs/applications/misc/cubiomes-viewer/default.nix +++ b/pkgs/applications/misc/cubiomes-viewer/default.nix @@ -9,13 +9,13 @@ stdenv.mkDerivation rec { pname = "cubiomes-viewer"; - version = "3.0.1"; + version = "3.1.0"; src = fetchFromGitHub { owner = "Cubitect"; repo = pname; rev = version; - sha256 = "sha256-UPphXaxq/Hnt1U3J+lgwa0lp3vX1B/Ou8eqD9rHe3sw="; + sha256 = "sha256-pA+SWktSjgH7lRqK14yJX2ziLoKpxMCpEIh0H6slpxw="; fetchSubmodules = true; }; diff --git a/pkgs/applications/misc/klayout/default.nix b/pkgs/applications/misc/klayout/default.nix index dd3e5406ca32..4348afb0205b 100644 --- a/pkgs/applications/misc/klayout/default.nix +++ b/pkgs/applications/misc/klayout/default.nix @@ -5,13 +5,13 @@ mkDerivation rec { pname = "klayout"; - version = "0.28.4"; + version = "0.28.5"; src = fetchFromGitHub { owner = "KLayout"; repo = "klayout"; rev = "v${version}"; - hash = "sha256-6RIzgC/PA2DqO24vKu+d/+GttufUbIH+k9GZe09M0vM="; + hash = "sha256-fjKxQ3oVtnFwzLeeE6kN0jKE5PIfBZubTF54KO+k/DE="; }; postPatch = '' diff --git a/pkgs/applications/misc/nwg-panel/default.nix b/pkgs/applications/misc/nwg-panel/default.nix index 7724976ebabf..f5ac2ed7e59f 100644 --- a/pkgs/applications/misc/nwg-panel/default.nix +++ b/pkgs/applications/misc/nwg-panel/default.nix @@ -14,13 +14,13 @@ python3Packages.buildPythonApplication rec { pname = "nwg-panel"; - version = "0.7.11"; + version = "0.7.16"; src = fetchFromGitHub { owner = "nwg-piotr"; repo = "nwg-panel"; rev = "refs/tags/v${version}"; - sha256 = "sha256-Esr1OPyQCCQIOfgkl6RIn93ZaJkF0O2RM9ObIgBlPi4="; + sha256 = "sha256-dwnDrFQZVz6Vxa8bX0gFPBZFQwRJ3+wUy6Rsxvb2dhw="; }; # No tests @@ -56,6 +56,6 @@ python3Packages.buildPythonApplication rec { description = "GTK3-based panel for Sway window manager"; license = licenses.mit; platforms = platforms.linux; - maintainers = with maintainers; [ berbiche ]; + maintainers = with maintainers; [ ]; }; } diff --git a/pkgs/applications/misc/oxker/default.nix b/pkgs/applications/misc/oxker/default.nix index 56490754e172..ba8324a02fb3 100644 --- a/pkgs/applications/misc/oxker/default.nix +++ b/pkgs/applications/misc/oxker/default.nix @@ -2,14 +2,14 @@ rustPlatform.buildRustPackage rec { pname = "oxker"; - version = "0.2.1"; + version = "0.2.3"; src = fetchCrate { inherit pname version; - sha256 = "sha256-CsfzQN7n/LsNIivJShDG02cHwPktkXl/0udBSPz0i2U="; + sha256 = "sha256-J+3wi1nqkxR3ZDfR+F3rvFjUz1DJ7/jhjmcvFdMzWYc="; }; - cargoHash = "sha256-FSuhG+ZSQzwj1YB3xs3A1uFWPhwK8FIfVfUY9V/J2Z8="; + cargoHash = "sha256-oQPCUm/X2vt6wN5AKhtgq8tzQQrp0H42bBK7Az+I9BE="; meta = with lib; { description = "A simple tui to view & control docker containers"; diff --git a/pkgs/applications/misc/ttdl/default.nix b/pkgs/applications/misc/ttdl/default.nix new file mode 100644 index 000000000000..9f098efef8a0 --- /dev/null +++ b/pkgs/applications/misc/ttdl/default.nix @@ -0,0 +1,26 @@ +{ lib +, rustPlatform +, fetchFromGitHub +}: + +rustPlatform.buildRustPackage rec { + pname = "ttdl"; + version = "3.6.3"; + + src = fetchFromGitHub { + owner = "VladimirMarkelov"; + repo = "ttdl"; + rev = "v${version}"; + sha256 = "sha256-IR0cDXQHnMDI71Vg50atS98YorqAQKc95EF1+m9cxFY="; + }; + + cargoSha256 = "sha256-658mN3R3opjvqfnIDcbh11ZSOTDbpYnhCgGGx46Mrrc="; + + meta = with lib; { + description = "A CLI tool to manage todo lists in todo.txt format"; + homepage = "https://github.com/VladimirMarkelov/ttdl"; + changelog = "https://github.com/VladimirMarkelov/ttdl/blob/v${version}/changelog"; + license = with licenses; [ mit ]; + maintainers = with maintainers; [ _3JlOy-PYCCKUi ]; + }; +} diff --git a/pkgs/applications/misc/yubioath-flutter/default.nix b/pkgs/applications/misc/yubioath-flutter/default.nix index bac11b6899b3..dde9f3b69862 100644 --- a/pkgs/applications/misc/yubioath-flutter/default.nix +++ b/pkgs/applications/misc/yubioath-flutter/default.nix @@ -10,19 +10,19 @@ }: let vendorHashes = { - x86_64-linux = "sha256-BwhWA8N0S55XkljDKPNkDhsj0QSpmJJ5MwEnrPjymS8="; - aarch64-linux = "sha256-T1aGz3+2Sls+rkUVDUo39Ky2igg+dxGSUaf3qpV7ovQ="; + x86_64-linux = "sha256-Upe0cEDG02RJD50Ht9VNMwkelsJHX8zOuJZssAhMuMY="; + aarch64-linux = "sha256-lKER4+gcyFqnCvgBl/qdVBCbUpocWUnXGLXsX82MSy4="; }; in flutter.mkFlutterApp rec { pname = "yubioath-flutter"; - version = "6.0.2"; + version = "6.1.0"; src = fetchFromGitHub { owner = "Yubico"; repo = "yubioath-flutter"; rev = version; - sha256 = "13nh5qpq02c6azfdh4cbzhlrq0hs9is45q5z5cnxg84hrx26hd4k"; + sha256 = "sha256-N9/qwC79mG9r+zMPLHSPjNSQ+srGtnXuKsf0ijtH7CI="; }; passthru.helper = python3.pkgs.callPackage ./helper.nix { inherit src version meta; }; diff --git a/pkgs/applications/networking/browsers/chromium/upstream-info.json b/pkgs/applications/networking/browsers/chromium/upstream-info.json index ead92ac3aec7..1eeec11742a6 100644 --- a/pkgs/applications/networking/browsers/chromium/upstream-info.json +++ b/pkgs/applications/networking/browsers/chromium/upstream-info.json @@ -1,21 +1,21 @@ { "stable": { - "version": "109.0.5414.119", - "sha256": "0bdyb14v12izxkldq27jx532p0bid3wdwfpd1mwm7jqswxgfzkfb", - "sha256bin64": "0iap6i4zmflp4fsj16knwdp03gixsdkbys0scbvvzs3fzy2r5zkx", + "version": "110.0.5481.77", + "sha256": "1kl1k29sr5qw8pg7shvizw4b37fxjlgah56p57kq641iqhnsnj73", + "sha256bin64": "0jjdgfps6siy9hk2r553vvh0jmkn987ad77sv2zqs9gvx0vsrwgp", "deps": { "gn": { - "version": "2022-11-10", + "version": "2022-12-12", "url": "https://gn.googlesource.com/gn", - "rev": "1c4151ff5c1d6fbf7fa800b8d4bb34d3abc03a41", - "sha256": "02621c9nqpr4pwcapy31x36l5kbyd0vdgd0wdaxj5p8hrxk67d6b" + "rev": "5e19d2fb166fbd4f6f32147fbb2f497091a54ad8", + "sha256": "1b5fwldfmkkbpp5x63n1dxv0nc965hphc8rm8ah7zg44zscm9z30" } }, "chromedriver": { - "version": "109.0.5414.74", - "sha256_linux": "1mhnw4maixwfhrz3r3mhpr9bl9hn7cvr2ji6y6ai32hxa1ix9m6f", - "sha256_darwin": "0w46xd05m7irfxqsfnjwgd2v65c9vgnh8awaknqgh02wmdgx3nm0", - "sha256_darwin_aarch64": "0amb2kd4cq4clir9gqr1b1mdy46m8nwzka227xxjd2i14vwzckb0" + "version": "110.0.5481.30", + "sha256_linux": "08j28ahyahlgmy67hcm8b1vd4kilvf2yvc25746a46gdf8zz0nmw", + "sha256_darwin": "0xlq0fi9g15yvd6ysqcfkxpbr37av32h0f3af9vxl8vbywjfsxn4", + "sha256_darwin_aarch64": "03j47ha9janbawbjxy9n84sx70iisk6qr0bvb218cq5j1d5x058b" } }, "beta": { @@ -32,9 +32,9 @@ } }, "dev": { - "version": "111.0.5563.8", - "sha256": "0gflrk5i6dr5vrywhxab73044gryxj49px59blgl6nyphw7swpwy", - "sha256bin64": "1dgfjz9pnziy1zymk7g15i5zdb002g77q8kqhkwgi4m0fndknpmj", + "version": "111.0.5563.19", + "sha256": "0hrapzi45jpkb1b87nzlb896jd2h2jbz1mq91md5r2y6ag6fc55w", + "sha256bin64": "02aaqny23dcdp611n6jr7swkjnx1wd0lb8dgxq53b806f0s374cp", "deps": { "gn": { "version": "2022-12-12", diff --git a/pkgs/applications/networking/cluster/k3s/1_23/0001-script-download-strip-downloading-just-package-CRD.patch b/pkgs/applications/networking/cluster/k3s/1_23/0001-script-download-strip-downloading-just-package-CRD.patch new file mode 100644 index 000000000000..115fd6824772 --- /dev/null +++ b/pkgs/applications/networking/cluster/k3s/1_23/0001-script-download-strip-downloading-just-package-CRD.patch @@ -0,0 +1,41 @@ +From 6f53bd36a40da4c71486e3b79f6e32d53d6eea5d Mon Sep 17 00:00:00 2001 +From: Euan Kemp +Date: Thu, 3 Feb 2022 23:50:40 -0800 +Subject: [PATCH 2/2] scrips/download: strip downloading, just package CRD + +The CRD packaging is a complicated set of commands, so let's reuse it. +--- + scripts/download | 10 ++-------- + 1 file changed, 2 insertions(+), 8 deletions(-) + +diff --git a/scripts/download b/scripts/download +index 5effc0562a..82361803ee 100755 +--- a/scripts/download ++++ b/scripts/download +@@ -24,12 +24,6 @@ rm -rf ${CONTAINERD_DIR} + mkdir -p ${CHARTS_DIR} + mkdir -p ${DATA_DIR} + +-curl --compressed -sfL https://github.com/k3s-io/k3s-root/releases/download/${VERSION_ROOT}/k3s-root-${ARCH}.tar | tar xf - --exclude=bin/socat +- +-git clone --single-branch --branch=${VERSION_RUNC} --depth=1 https://github.com/opencontainers/runc ${RUNC_DIR} +- +-git clone --single-branch --branch=${VERSION_CONTAINERD} --depth=1 https://github.com/k3s-io/containerd ${CONTAINERD_DIR} +- + setup_tmp() { + TMP_DIR=$(mktemp -d --tmpdir=${CHARTS_DIR}) + cleanup() { +@@ -44,8 +38,8 @@ setup_tmp() { + + download_and_package_traefik () { + echo "Downloading Traefik Helm chart from ${TRAEFIK_URL}" +- curl -sfL ${TRAEFIK_URL} -o ${TMP_DIR}/${TRAEFIK_FILE} +- code=$? ++ # nixpkgs: copy in our known traefik chart instead ++ cp $TRAEFIK_CHART_FILE ${TMP_DIR}/${TRAEFIK_FILE} + + if [ $code -ne 0 ]; then + echo "Error: Failed to download Traefik Helm chart!" +-- +2.34.1 + diff --git a/pkgs/applications/networking/cluster/k3s/1_23/default.nix b/pkgs/applications/networking/cluster/k3s/1_23/default.nix new file mode 100644 index 000000000000..1fbe7687a006 --- /dev/null +++ b/pkgs/applications/networking/cluster/k3s/1_23/default.nix @@ -0,0 +1,331 @@ +{ stdenv +, lib +, makeWrapper +, socat +, iptables +, iproute2 +, bridge-utils +, btrfs-progs +, conntrack-tools +, buildGoModule +, runc +, rsync +, kmod +, libseccomp +, pkg-config +, ethtool +, util-linux +, fetchFromGitHub +, fetchurl +, fetchzip +, fetchgit +, zstd +, yq-go +, nixosTests +, k3s +, pkgsBuildBuild +}: + +with lib; + +# k3s is a kinda weird derivation. One of the main points of k3s is the +# simplicity of it being one binary that can perform several tasks. +# However, when you have a good package manager (like nix), that doesn't +# actually make much of a difference; you don't really care if it's one binary +# or 10 since with a good package manager, installing and running it is +# identical. +# Since upstream k3s packages itself as one large binary with several +# "personalities" (in the form of subcommands like 'k3s agent' and 'k3s +# kubectl'), it ends up being easiest to mostly mimic upstream packaging, with +# some exceptions. +# K3s also carries patches to some packages (such as containerd and cni +# plugins), so we intentionally use the k3s versions of those binaries for k3s, +# even if the upstream version of those binaries exist in nixpkgs already. In +# the end, that means we have a thick k3s binary that behaves like the upstream +# one for the most part. +# However, k3s also bundles several pieces of unpatched software, from the +# strongswan vpn software, to iptables, to socat, conntrack, busybox, etc. +# Those pieces of software we entirely ignore upstream's handling of, and just +# make sure they're in the path if desired. +let + k3sVersion = "1.23.6+k3s1"; # k3s git tag + k3sCommit = "418c3fa858b69b12b9cefbcff0526f666a6236b9"; # k3s git commit at the above version + k3sRepoSha256 = "0fmw491dn5mpi058mr7sij51i5m4qg2grx30cnl3h2v4s0sdkx2i"; + k3sVendorSha256 = "sha256-iHg5ySMaiSWXs98YGmxPwdZr4zdBIFma12dNEuf30Hs="; + + # taken from ./manifests/traefik.yaml, extracted from '.spec.chart' https://github.com/k3s-io/k3s/blob/v1.23.3%2Bk3s1/scripts/download#L9 + # The 'patch' and 'minor' versions are currently hardcoded as single digits only, so ignore the trailing two digits. Weird, I know. + traefikChartVersion = "10.19.3"; + traefikChartSha256 = "04zg5li957svgscdmkzmzjkwljaljyav68rzxmhakkwgav6q9058"; + + # taken from ./scripts/version.sh VERSION_ROOT https://github.com/k3s-io/k3s/blob/v1.23.3%2Bk3s1/scripts/version.sh#L47 + k3sRootVersion = "0.11.0"; + k3sRootSha256 = "016n56vi09xkvjph7wgzb2m86mhd5x65fs4d11pmh20hl249r620"; + + # taken from ./scripts/version.sh VERSION_CNIPLUGINS https://github.com/k3s-io/k3s/blob/v1.23.3%2Bk3s1/scripts/version.sh#L45 + k3sCNIVersion = "1.0.1-k3s1"; + k3sCNISha256 = "11ihlzzdnqf9p21y0a4ckpbxac016nm7746dcykhj26ym9zxyv92"; + + # taken from go.mod, the 'github.com/containerd/containerd' line + # run `grep github.com/containerd/containerd go.mod | head -n1 | awk '{print $4}'` + containerdVersion = "1.5.11-k3s2"; + containerdSha256 = "16132snvrg8r0vwm6c0lz0q6fx686s2ix53nm3aka9a83xs75vf2"; + + # run `grep github.com/kubernetes-sigs/cri-tools go.mod | head -n1 | awk '{print $4}'` in the k3s repo at the tag + criCtlVersion = "1.22.0-k3s1"; + + baseMeta = k3s.meta; + + # https://github.com/k3s-io/k3s/blob/5fb370e53e0014dc96183b8ecb2c25a61e891e76/scripts/build#L19-L40 + versionldflags = [ + "-X github.com/rancher/k3s/pkg/version.Version=v${k3sVersion}" + "-X github.com/rancher/k3s/pkg/version.GitCommit=${lib.substring 0 8 k3sCommit}" + "-X k8s.io/client-go/pkg/version.gitVersion=v${k3sVersion}" + "-X k8s.io/client-go/pkg/version.gitCommit=${k3sCommit}" + "-X k8s.io/client-go/pkg/version.gitTreeState=clean" + "-X k8s.io/client-go/pkg/version.buildDate=1970-01-01T01:01:01Z" + "-X k8s.io/component-base/version.gitVersion=v${k3sVersion}" + "-X k8s.io/component-base/version.gitCommit=${k3sCommit}" + "-X k8s.io/component-base/version.gitTreeState=clean" + "-X k8s.io/component-base/version.buildDate=1970-01-01T01:01:01Z" + "-X github.com/kubernetes-sigs/cri-tools/pkg/version.Version=v${criCtlVersion}" + "-X github.com/containerd/containerd/version.Version=v${containerdVersion}" + "-X github.com/containerd/containerd/version.Package=github.com/k3s-io/containerd" + ]; + + # bundled into the k3s binary + traefikChart = fetchurl { + url = "https://helm.traefik.io/traefik/traefik-${traefikChartVersion}.tgz"; + sha256 = traefikChartSha256; + }; + # so, k3s is a complicated thing to package + # This derivation attempts to avoid including any random binaries from the + # internet. k3s-root is _mostly_ binaries built to be bundled in k3s (which + # we don't care about doing, we can add those as build or runtime + # dependencies using a real package manager). + # In addition to those binaries, it's also configuration though (right now + # mostly strongswan configuration), and k3s does use those files. + # As such, we download it in order to grab 'etc' and bundle it into the final + # k3s binary. + k3sRoot = fetchzip { + # Note: marked as apache 2.0 license + url = "https://github.com/k3s-io/k3s-root/releases/download/v${k3sRootVersion}/k3s-root-amd64.tar"; + sha256 = k3sRootSha256; + stripRoot = false; + }; + k3sCNIPlugins = buildGoModule rec { + pname = "k3s-cni-plugins"; + version = k3sCNIVersion; + vendorSha256 = null; + + subPackages = [ "." ]; + + src = fetchFromGitHub { + owner = "rancher"; + repo = "plugins"; + rev = "v${version}"; + sha256 = k3sCNISha256; + }; + + postInstall = '' + mv $out/bin/plugins $out/bin/cni + ''; + + meta = baseMeta // { + description = "CNI plugins, as patched by rancher for k3s"; + }; + }; + # Grab this separately from a build because it's used by both stages of the + # k3s build. + k3sRepo = fetchgit { + url = "https://github.com/k3s-io/k3s"; + rev = "v${k3sVersion}"; + sha256 = k3sRepoSha256; + }; + # Stage 1 of the k3s build: + # Let's talk about how k3s is structured. + # One of the ideas of k3s is that there's the single "k3s" binary which can + # do everything you need, from running a k3s server, to being a worker node, + # to running kubectl. + # The way that actually works is that k3s is a single go binary that contains + # a bunch of bindata that it unpacks at runtime into directories (either the + # user's home directory or /var/lib/rancher if run as root). + # This bindata includes both binaries and configuration. + # In order to let nixpkgs do all its autostripping/patching/etc, we split this into two derivations. + # First, we build all the binaries that get packed into the thick k3s binary + # (and output them from one derivation so they'll all be suitably patched up). + # Then, we bundle those binaries into our thick k3s binary and use that as + # the final single output. + # This approach was chosen because it ensures the bundled binaries all are + # correctly built to run with nix (we can lean on the existing buildGoModule + # stuff), and we can again lean on that tooling for the final k3s binary too. + # Other alternatives would be to manually run the + # strip/patchelf/remove-references step ourselves in the installPhase of the + # derivation when we've built all the binaries, but haven't bundled them in + # with generated bindata yet. + + k3sServer = buildGoModule rec { + pname = "k3s-server"; + version = k3sVersion; + + src = k3sRepo; + vendorSha256 = k3sVendorSha256; + + nativeBuildInputs = [ pkg-config ]; + buildInputs = [ libseccomp ]; + + subPackages = [ "cmd/server" ]; + ldflags = versionldflags; + + # create the multicall symlinks for k3s + postInstall = '' + mv $out/bin/server $out/bin/k3s + pushd $out + # taken verbatim from https://github.com/k3s-io/k3s/blob/v1.23.3%2Bk3s1/scripts/build#L105-L113 + ln -s k3s ./bin/k3s-agent + ln -s k3s ./bin/k3s-server + ln -s k3s ./bin/k3s-etcd-snapshot + ln -s k3s ./bin/k3s-secrets-encrypt + ln -s k3s ./bin/k3s-certificate + ln -s k3s ./bin/kubectl + ln -s k3s ./bin/crictl + ln -s k3s ./bin/ctr + popd + ''; + + meta = baseMeta // { + description = "The various binaries that get packaged into the final k3s binary"; + }; + }; + k3sContainerd = buildGoModule { + pname = "k3s-containerd"; + version = containerdVersion; + src = fetchFromGitHub { + owner = "k3s-io"; + repo = "containerd"; + rev = "v${containerdVersion}"; + sha256 = containerdSha256; + }; + vendorSha256 = null; + buildInputs = [ btrfs-progs ]; + subPackages = [ "cmd/containerd" "cmd/containerd-shim-runc-v2" ]; + ldflags = versionldflags; + }; +in +buildGoModule rec { + pname = "k3s"; + version = k3sVersion; + + src = k3sRepo; + vendorSha256 = k3sVendorSha256; + + patches = [ + ./0001-script-download-strip-downloading-just-package-CRD.patch + ]; + + postPatch = '' + # Nix prefers dynamically linked binaries over static binary. + + substituteInPlace scripts/package-cli \ + --replace '"$LDFLAGS $STATIC" -o' \ + '"$LDFLAGS" -o' \ + --replace "STATIC=\"-extldflags \'-static\'\"" \ + "" + + # Upstream codegen fails with trimpath set. Removes "trimpath" for 'go generate': + + substituteInPlace scripts/package-cli \ + --replace '"''${GO}" generate' \ + 'GOFLAGS="" \ + GOOS="${pkgsBuildBuild.go.GOOS}" \ + GOARCH="${pkgsBuildBuild.go.GOARCH}" \ + CC="${pkgsBuildBuild.stdenv.cc}/bin/cc" \ + "''${GO}" generate' + ''; + + # Important utilities used by the kubelet, see + # https://github.com/kubernetes/kubernetes/issues/26093#issuecomment-237202494 + # Note the list in that issue is stale and some aren't relevant for k3s. + k3sRuntimeDeps = [ + kmod + socat + iptables + iproute2 + bridge-utils + ethtool + util-linux # kubelet wants 'nsenter' from util-linux: https://github.com/kubernetes/kubernetes/issues/26093#issuecomment-705994388 + conntrack-tools + ]; + + buildInputs = k3sRuntimeDeps; + + nativeBuildInputs = [ + makeWrapper + rsync + yq-go + zstd + ]; + + # embedded in the final k3s cli + propagatedBuildInputs = [ + k3sCNIPlugins + k3sContainerd + k3sServer + runc + ]; + + # We override most of buildPhase due to peculiarities in k3s's build. + # Specifically, it has a 'go generate' which runs part of the package. See + # this comment: + # https://github.com/NixOS/nixpkgs/pull/158089#discussion_r799965694 + # So, why do we use buildGoModule at all? For the `vendorSha256` / `go mod download` stuff primarily. + buildPhase = '' + patchShebangs ./scripts/package-cli ./scripts/download ./scripts/build-upload + + # copy needed 'go generate' inputs into place + mkdir -p ./bin/aux + rsync -a --no-perms ${k3sServer}/bin/ ./bin/ + ln -vsf ${runc}/bin/runc ./bin/runc + ln -vsf ${k3sCNIPlugins}/bin/cni ./bin/cni + ln -vsf ${k3sContainerd}/bin/* ./bin/ + rsync -a --no-perms --chmod u=rwX ${k3sRoot}/etc/ ./etc/ + mkdir -p ./build/static/charts + # Note, upstream's chart has a 00 suffix. This seems to not matter though, so we're ignoring that naming detail. + export TRAEFIK_CHART_FILE=${traefikChart} + # place the traefik chart using their code since it's complicated + # We trim the actual download, see patches + ./scripts/download + + export ARCH=$GOARCH + export DRONE_TAG="v${k3sVersion}" + export DRONE_COMMIT="${k3sCommit}" + # use ./scripts/package-cli to run 'go generate' + 'go build' + + ./scripts/package-cli + mkdir -p $out/bin + ''; + + # Otherwise it depends on 'getGoDirs', which is normally set in buildPhase + doCheck = false; + + installPhase = '' + # wildcard to match the arm64 build too + install -m 0755 dist/artifacts/k3s* -D $out/bin/k3s + wrapProgram $out/bin/k3s \ + --prefix PATH : ${lib.makeBinPath k3sRuntimeDeps} \ + --prefix PATH : "$out/bin" + ''; + + doInstallCheck = true; + installCheckPhase = '' + $out/bin/k3s --version | grep -F "v${k3sVersion}" >/dev/null + ''; + + # Fix-Me: Needs to be adapted specifically for 1.23 + # passthru.updateScript = ./update.sh; + + # Fix-Me: Needs to be adapted specifically for 1.23 + # passthru.tests = { inherit (nixosTests) k3s-single-node k3s-single-node-docker; }; + + meta = baseMeta; +} diff --git a/pkgs/applications/networking/cluster/k3s/1_24/0001-script-download-strip-downloading-just-package-CRD.patch b/pkgs/applications/networking/cluster/k3s/1_24/0001-script-download-strip-downloading-just-package-CRD.patch new file mode 100644 index 000000000000..115fd6824772 --- /dev/null +++ b/pkgs/applications/networking/cluster/k3s/1_24/0001-script-download-strip-downloading-just-package-CRD.patch @@ -0,0 +1,41 @@ +From 6f53bd36a40da4c71486e3b79f6e32d53d6eea5d Mon Sep 17 00:00:00 2001 +From: Euan Kemp +Date: Thu, 3 Feb 2022 23:50:40 -0800 +Subject: [PATCH 2/2] scrips/download: strip downloading, just package CRD + +The CRD packaging is a complicated set of commands, so let's reuse it. +--- + scripts/download | 10 ++-------- + 1 file changed, 2 insertions(+), 8 deletions(-) + +diff --git a/scripts/download b/scripts/download +index 5effc0562a..82361803ee 100755 +--- a/scripts/download ++++ b/scripts/download +@@ -24,12 +24,6 @@ rm -rf ${CONTAINERD_DIR} + mkdir -p ${CHARTS_DIR} + mkdir -p ${DATA_DIR} + +-curl --compressed -sfL https://github.com/k3s-io/k3s-root/releases/download/${VERSION_ROOT}/k3s-root-${ARCH}.tar | tar xf - --exclude=bin/socat +- +-git clone --single-branch --branch=${VERSION_RUNC} --depth=1 https://github.com/opencontainers/runc ${RUNC_DIR} +- +-git clone --single-branch --branch=${VERSION_CONTAINERD} --depth=1 https://github.com/k3s-io/containerd ${CONTAINERD_DIR} +- + setup_tmp() { + TMP_DIR=$(mktemp -d --tmpdir=${CHARTS_DIR}) + cleanup() { +@@ -44,8 +38,8 @@ setup_tmp() { + + download_and_package_traefik () { + echo "Downloading Traefik Helm chart from ${TRAEFIK_URL}" +- curl -sfL ${TRAEFIK_URL} -o ${TMP_DIR}/${TRAEFIK_FILE} +- code=$? ++ # nixpkgs: copy in our known traefik chart instead ++ cp $TRAEFIK_CHART_FILE ${TMP_DIR}/${TRAEFIK_FILE} + + if [ $code -ne 0 ]; then + echo "Error: Failed to download Traefik Helm chart!" +-- +2.34.1 + diff --git a/pkgs/applications/networking/cluster/k3s/1_24/default.nix b/pkgs/applications/networking/cluster/k3s/1_24/default.nix new file mode 100644 index 000000000000..18e0258432ee --- /dev/null +++ b/pkgs/applications/networking/cluster/k3s/1_24/default.nix @@ -0,0 +1,329 @@ +{ stdenv +, lib +, makeWrapper +, socat +, iptables +, iproute2 +, bridge-utils +, btrfs-progs +, conntrack-tools +, buildGoModule +, runc +, rsync +, kmod +, libseccomp +, pkg-config +, ethtool +, util-linux +, fetchFromGitHub +, fetchurl +, fetchzip +, fetchgit +, zstd +, yq-go +, nixosTests +, k3s +, pkgsBuildBuild +}: + +# k3s is a kinda weird derivation. One of the main points of k3s is the +# simplicity of it being one binary that can perform several tasks. +# However, when you have a good package manager (like nix), that doesn't +# actually make much of a difference; you don't really care if it's one binary +# or 10 since with a good package manager, installing and running it is +# identical. +# Since upstream k3s packages itself as one large binary with several +# "personalities" (in the form of subcommands like 'k3s agent' and 'k3s +# kubectl'), it ends up being easiest to mostly mimic upstream packaging, with +# some exceptions. +# K3s also carries patches to some packages (such as containerd and cni +# plugins), so we intentionally use the k3s versions of those binaries for k3s, +# even if the upstream version of those binaries exist in nixpkgs already. In +# the end, that means we have a thick k3s binary that behaves like the upstream +# one for the most part. +# However, k3s also bundles several pieces of unpatched software, from the +# strongswan vpn software, to iptables, to socat, conntrack, busybox, etc. +# Those pieces of software we entirely ignore upstream's handling of, and just +# make sure they're in the path if desired. +let + k3sVersion = "1.24.4+k3s1"; # k3s git tag + k3sCommit = "c3f830e9b9ed8a4d9d0e2aa663b4591b923a296e"; # k3s git commit at the above version + k3sRepoSha256 = "00ns6n7jxnacah8ahndhgdb160prgsqhswbb5809kkgvig7k8b27"; + k3sVendorSha256 = "sha256-ReZvJCgxqffG2H39JlynGPUBSV5ngPkRtAoZ++OQZZI="; + + # taken from ./manifests/traefik.yaml, extracted from '.spec.chart' https://github.com/k3s-io/k3s/blob/v1.23.3%2Bk3s1/scripts/download#L9 + # The 'patch' and 'minor' versions are currently hardcoded as single digits only, so ignore the trailing two digits. Weird, I know. + traefikChartVersion = "10.19.3"; + traefikChartSha256 = "04zg5li957svgscdmkzmzjkwljaljyav68rzxmhakkwgav6q9058"; + + # taken from ./scripts/version.sh VERSION_ROOT https://github.com/k3s-io/k3s/blob/v1.23.3%2Bk3s1/scripts/version.sh#L47 + k3sRootVersion = "0.11.0"; + k3sRootSha256 = "016n56vi09xkvjph7wgzb2m86mhd5x65fs4d11pmh20hl249r620"; + + # taken from ./scripts/version.sh VERSION_CNIPLUGINS https://github.com/k3s-io/k3s/blob/v1.23.3%2Bk3s1/scripts/version.sh#L45 + k3sCNIVersion = "1.1.1-k3s1"; + k3sCNISha256 = "14mb3zsqibj1sn338gjmsyksbm0mxv9p016dij7zidccx2rzn6nl"; + + # taken from go.mod, the 'github.com/containerd/containerd' line + # run `grep github.com/containerd/containerd go.mod | head -n1 | awk '{print $4}'` + containerdVersion = "1.5.13-k3s1"; + containerdSha256 = "09bj4ghwbsj9whkv1d5icqs52k64m449j8b73dmak2wz62fbzbvp"; + + # run `grep github.com/kubernetes-sigs/cri-tools go.mod | head -n1 | awk '{print $4}'` in the k3s repo at the tag + criCtlVersion = "1.24.0-k3s1"; + + baseMeta = k3s.meta; + + # https://github.com/k3s-io/k3s/blob/5fb370e53e0014dc96183b8ecb2c25a61e891e76/scripts/build#L19-L40 + versionldflags = [ + "-X github.com/rancher/k3s/pkg/version.Version=v${k3sVersion}" + "-X github.com/rancher/k3s/pkg/version.GitCommit=${lib.substring 0 8 k3sCommit}" + "-X k8s.io/client-go/pkg/version.gitVersion=v${k3sVersion}" + "-X k8s.io/client-go/pkg/version.gitCommit=${k3sCommit}" + "-X k8s.io/client-go/pkg/version.gitTreeState=clean" + "-X k8s.io/client-go/pkg/version.buildDate=1970-01-01T01:01:01Z" + "-X k8s.io/component-base/version.gitVersion=v${k3sVersion}" + "-X k8s.io/component-base/version.gitCommit=${k3sCommit}" + "-X k8s.io/component-base/version.gitTreeState=clean" + "-X k8s.io/component-base/version.buildDate=1970-01-01T01:01:01Z" + "-X github.com/kubernetes-sigs/cri-tools/pkg/version.Version=v${criCtlVersion}" + "-X github.com/containerd/containerd/version.Version=v${containerdVersion}" + "-X github.com/containerd/containerd/version.Package=github.com/k3s-io/containerd" + ]; + + # bundled into the k3s binary + traefikChart = fetchurl { + url = "https://helm.traefik.io/traefik/traefik-${traefikChartVersion}.tgz"; + sha256 = traefikChartSha256; + }; + # so, k3s is a complicated thing to package + # This derivation attempts to avoid including any random binaries from the + # internet. k3s-root is _mostly_ binaries built to be bundled in k3s (which + # we don't care about doing, we can add those as build or runtime + # dependencies using a real package manager). + # In addition to those binaries, it's also configuration though (right now + # mostly strongswan configuration), and k3s does use those files. + # As such, we download it in order to grab 'etc' and bundle it into the final + # k3s binary. + k3sRoot = fetchzip { + # Note: marked as apache 2.0 license + url = "https://github.com/k3s-io/k3s-root/releases/download/v${k3sRootVersion}/k3s-root-amd64.tar"; + sha256 = k3sRootSha256; + stripRoot = false; + }; + k3sCNIPlugins = buildGoModule rec { + pname = "k3s-cni-plugins"; + version = k3sCNIVersion; + vendorSha256 = null; + + subPackages = [ "." ]; + + src = fetchFromGitHub { + owner = "rancher"; + repo = "plugins"; + rev = "v${version}"; + sha256 = k3sCNISha256; + }; + + postInstall = '' + mv $out/bin/plugins $out/bin/cni + ''; + + meta = baseMeta // { + description = "CNI plugins, as patched by rancher for k3s"; + }; + }; + # Grab this separately from a build because it's used by both stages of the + # k3s build. + k3sRepo = fetchgit { + url = "https://github.com/k3s-io/k3s"; + rev = "v${k3sVersion}"; + sha256 = k3sRepoSha256; + }; + # Stage 1 of the k3s build: + # Let's talk about how k3s is structured. + # One of the ideas of k3s is that there's the single "k3s" binary which can + # do everything you need, from running a k3s server, to being a worker node, + # to running kubectl. + # The way that actually works is that k3s is a single go binary that contains + # a bunch of bindata that it unpacks at runtime into directories (either the + # user's home directory or /var/lib/rancher if run as root). + # This bindata includes both binaries and configuration. + # In order to let nixpkgs do all its autostripping/patching/etc, we split this into two derivations. + # First, we build all the binaries that get packed into the thick k3s binary + # (and output them from one derivation so they'll all be suitably patched up). + # Then, we bundle those binaries into our thick k3s binary and use that as + # the final single output. + # This approach was chosen because it ensures the bundled binaries all are + # correctly built to run with nix (we can lean on the existing buildGoModule + # stuff), and we can again lean on that tooling for the final k3s binary too. + # Other alternatives would be to manually run the + # strip/patchelf/remove-references step ourselves in the installPhase of the + # derivation when we've built all the binaries, but haven't bundled them in + # with generated bindata yet. + + k3sServer = buildGoModule rec { + pname = "k3s-server"; + version = k3sVersion; + + src = k3sRepo; + vendorSha256 = k3sVendorSha256; + + nativeBuildInputs = [ pkg-config ]; + buildInputs = [ libseccomp ]; + + subPackages = [ "cmd/server" ]; + ldflags = versionldflags; + + # create the multicall symlinks for k3s + postInstall = '' + mv $out/bin/server $out/bin/k3s + pushd $out + # taken verbatim from https://github.com/k3s-io/k3s/blob/v1.23.3%2Bk3s1/scripts/build#L105-L113 + ln -s k3s ./bin/k3s-agent + ln -s k3s ./bin/k3s-server + ln -s k3s ./bin/k3s-etcd-snapshot + ln -s k3s ./bin/k3s-secrets-encrypt + ln -s k3s ./bin/k3s-certificate + ln -s k3s ./bin/kubectl + ln -s k3s ./bin/crictl + ln -s k3s ./bin/ctr + popd + ''; + + meta = baseMeta // { + description = "The various binaries that get packaged into the final k3s binary"; + }; + }; + k3sContainerd = buildGoModule { + pname = "k3s-containerd"; + version = containerdVersion; + src = fetchFromGitHub { + owner = "k3s-io"; + repo = "containerd"; + rev = "v${containerdVersion}"; + sha256 = containerdSha256; + }; + vendorSha256 = null; + buildInputs = [ btrfs-progs ]; + subPackages = [ "cmd/containerd" "cmd/containerd-shim-runc-v2" ]; + ldflags = versionldflags; + }; +in +buildGoModule rec { + pname = "k3s"; + version = k3sVersion; + + src = k3sRepo; + vendorSha256 = k3sVendorSha256; + + patches = [ + ./0001-script-download-strip-downloading-just-package-CRD.patch + ]; + + postPatch = '' + # Nix prefers dynamically linked binaries over static binary. + + substituteInPlace scripts/package-cli \ + --replace '"$LDFLAGS $STATIC" -o' \ + '"$LDFLAGS" -o' \ + --replace "STATIC=\"-extldflags \'-static\'\"" \ + "" + + # Upstream codegen fails with trimpath set. Removes "trimpath" for 'go generate': + + substituteInPlace scripts/package-cli \ + --replace '"''${GO}" generate' \ + 'GOFLAGS="" \ + GOOS="${pkgsBuildBuild.go.GOOS}" \ + GOARCH="${pkgsBuildBuild.go.GOARCH}" \ + CC="${pkgsBuildBuild.stdenv.cc}/bin/cc" \ + "''${GO}" generate' + ''; + + # Important utilities used by the kubelet, see + # https://github.com/kubernetes/kubernetes/issues/26093#issuecomment-237202494 + # Note the list in that issue is stale and some aren't relevant for k3s. + k3sRuntimeDeps = [ + kmod + socat + iptables + iproute2 + bridge-utils + ethtool + util-linux # kubelet wants 'nsenter' from util-linux: https://github.com/kubernetes/kubernetes/issues/26093#issuecomment-705994388 + conntrack-tools + ]; + + buildInputs = k3sRuntimeDeps; + + nativeBuildInputs = [ + makeWrapper + rsync + yq-go + zstd + ]; + + # embedded in the final k3s cli + propagatedBuildInputs = [ + k3sCNIPlugins + k3sContainerd + k3sServer + runc + ]; + + # We override most of buildPhase due to peculiarities in k3s's build. + # Specifically, it has a 'go generate' which runs part of the package. See + # this comment: + # https://github.com/NixOS/nixpkgs/pull/158089#discussion_r799965694 + # So, why do we use buildGoModule at all? For the `vendorSha256` / `go mod download` stuff primarily. + buildPhase = '' + patchShebangs ./scripts/package-cli ./scripts/download ./scripts/build-upload + + # copy needed 'go generate' inputs into place + mkdir -p ./bin/aux + rsync -a --no-perms ${k3sServer}/bin/ ./bin/ + ln -vsf ${runc}/bin/runc ./bin/runc + ln -vsf ${k3sCNIPlugins}/bin/cni ./bin/cni + ln -vsf ${k3sContainerd}/bin/* ./bin/ + rsync -a --no-perms --chmod u=rwX ${k3sRoot}/etc/ ./etc/ + mkdir -p ./build/static/charts + # Note, upstream's chart has a 00 suffix. This seems to not matter though, so we're ignoring that naming detail. + export TRAEFIK_CHART_FILE=${traefikChart} + # place the traefik chart using their code since it's complicated + # We trim the actual download, see patches + ./scripts/download + + export ARCH=$GOARCH + export DRONE_TAG="v${k3sVersion}" + export DRONE_COMMIT="${k3sCommit}" + # use ./scripts/package-cli to run 'go generate' + 'go build' + + ./scripts/package-cli + mkdir -p $out/bin + ''; + + # Otherwise it depends on 'getGoDirs', which is normally set in buildPhase + doCheck = false; + + installPhase = '' + # wildcard to match the arm64 build too + install -m 0755 dist/artifacts/k3s* -D $out/bin/k3s + wrapProgram $out/bin/k3s \ + --prefix PATH : ${lib.makeBinPath k3sRuntimeDeps} \ + --prefix PATH : "$out/bin" + ''; + + doInstallCheck = true; + installCheckPhase = '' + $out/bin/k3s --version | grep -F "v${k3sVersion}" >/dev/null + ''; + + # Fix-Me: Needs to be adapted specifically for 1.24 + # passthru.updateScript = ./update.sh; + + # Fix-Me: Needs to be adapted specifically for 1.24 + # passthru.tests = nixosTests.k3s; + + meta = baseMeta; +} diff --git a/pkgs/applications/networking/cluster/k3s/1_25/0001-script-download-strip-downloading-just-package-CRD.patch b/pkgs/applications/networking/cluster/k3s/1_25/0001-script-download-strip-downloading-just-package-CRD.patch new file mode 100644 index 000000000000..115fd6824772 --- /dev/null +++ b/pkgs/applications/networking/cluster/k3s/1_25/0001-script-download-strip-downloading-just-package-CRD.patch @@ -0,0 +1,41 @@ +From 6f53bd36a40da4c71486e3b79f6e32d53d6eea5d Mon Sep 17 00:00:00 2001 +From: Euan Kemp +Date: Thu, 3 Feb 2022 23:50:40 -0800 +Subject: [PATCH 2/2] scrips/download: strip downloading, just package CRD + +The CRD packaging is a complicated set of commands, so let's reuse it. +--- + scripts/download | 10 ++-------- + 1 file changed, 2 insertions(+), 8 deletions(-) + +diff --git a/scripts/download b/scripts/download +index 5effc0562a..82361803ee 100755 +--- a/scripts/download ++++ b/scripts/download +@@ -24,12 +24,6 @@ rm -rf ${CONTAINERD_DIR} + mkdir -p ${CHARTS_DIR} + mkdir -p ${DATA_DIR} + +-curl --compressed -sfL https://github.com/k3s-io/k3s-root/releases/download/${VERSION_ROOT}/k3s-root-${ARCH}.tar | tar xf - --exclude=bin/socat +- +-git clone --single-branch --branch=${VERSION_RUNC} --depth=1 https://github.com/opencontainers/runc ${RUNC_DIR} +- +-git clone --single-branch --branch=${VERSION_CONTAINERD} --depth=1 https://github.com/k3s-io/containerd ${CONTAINERD_DIR} +- + setup_tmp() { + TMP_DIR=$(mktemp -d --tmpdir=${CHARTS_DIR}) + cleanup() { +@@ -44,8 +38,8 @@ setup_tmp() { + + download_and_package_traefik () { + echo "Downloading Traefik Helm chart from ${TRAEFIK_URL}" +- curl -sfL ${TRAEFIK_URL} -o ${TMP_DIR}/${TRAEFIK_FILE} +- code=$? ++ # nixpkgs: copy in our known traefik chart instead ++ cp $TRAEFIK_CHART_FILE ${TMP_DIR}/${TRAEFIK_FILE} + + if [ $code -ne 0 ]; then + echo "Error: Failed to download Traefik Helm chart!" +-- +2.34.1 + diff --git a/pkgs/applications/networking/cluster/k3s/1_25/default.nix b/pkgs/applications/networking/cluster/k3s/1_25/default.nix new file mode 100644 index 000000000000..dc34821fb255 --- /dev/null +++ b/pkgs/applications/networking/cluster/k3s/1_25/default.nix @@ -0,0 +1,329 @@ +{ stdenv +, lib +, makeWrapper +, socat +, iptables +, iproute2 +, bridge-utils +, btrfs-progs +, conntrack-tools +, buildGoModule +, runc +, rsync +, kmod +, libseccomp +, pkg-config +, ethtool +, util-linux +, fetchFromGitHub +, fetchurl +, fetchzip +, fetchgit +, zstd +, yq-go +, nixosTests +, pkgsBuildBuild +, k3s +}: + +# k3s is a kinda weird derivation. One of the main points of k3s is the +# simplicity of it being one binary that can perform several tasks. +# However, when you have a good package manager (like nix), that doesn't +# actually make much of a difference; you don't really care if it's one binary +# or 10 since with a good package manager, installing and running it is +# identical. +# Since upstream k3s packages itself as one large binary with several +# "personalities" (in the form of subcommands like 'k3s agent' and 'k3s +# kubectl'), it ends up being easiest to mostly mimic upstream packaging, with +# some exceptions. +# K3s also carries patches to some packages (such as containerd and cni +# plugins), so we intentionally use the k3s versions of those binaries for k3s, +# even if the upstream version of those binaries exist in nixpkgs already. In +# the end, that means we have a thick k3s binary that behaves like the upstream +# one for the most part. +# However, k3s also bundles several pieces of unpatched software, from the +# strongswan vpn software, to iptables, to socat, conntrack, busybox, etc. +# Those pieces of software we entirely ignore upstream's handling of, and just +# make sure they're in the path if desired. +let + k3sVersion = "1.25.3+k3s1"; # k3s git tag + k3sCommit = "f2585c1671b31b4b34bddbb3bf4e7d69662b0821"; # k3s git commit at the above version + k3sRepoSha256 = "0zwf3iwjcidx14zw36s1hr0q8wmmbfc0rfqwd7fmpjq597h8zkms"; + k3sVendorSha256 = "sha256-U67tJRGqPFk5AfRe7I50zKGC9HJ2oh+iI/C7qF/76BQ="; + + # taken from ./manifests/traefik.yaml, extracted from '.spec.chart' https://github.com/k3s-io/k3s/blob/v1.23.3%2Bk3s1/scripts/download#L9 + # The 'patch' and 'minor' versions are currently hardcoded as single digits only, so ignore the trailing two digits. Weird, I know. + traefikChartVersion = "12.0.0"; + traefikChartSha256 = "1sqmi71fi3ad5dh5fmsp9mv80x6pkgqwi4r9fr8l6i9sdnai6f1a"; + + # taken from ./scripts/version.sh VERSION_ROOT https://github.com/k3s-io/k3s/blob/v1.23.3%2Bk3s1/scripts/version.sh#L47 + k3sRootVersion = "0.11.0"; + k3sRootSha256 = "016n56vi09xkvjph7wgzb2m86mhd5x65fs4d11pmh20hl249r620"; + + # taken from ./scripts/version.sh VERSION_CNIPLUGINS https://github.com/k3s-io/k3s/blob/v1.23.3%2Bk3s1/scripts/version.sh#L45 + k3sCNIVersion = "1.1.1-k3s1"; + k3sCNISha256 = "14mb3zsqibj1sn338gjmsyksbm0mxv9p016dij7zidccx2rzn6nl"; + + # taken from go.mod, the 'github.com/containerd/containerd' line + # run `grep github.com/containerd/containerd go.mod | head -n1 | awk '{print $4}'` + containerdVersion = "1.5.13-k3s2"; + containerdSha256 = "1pfr2ji4aij9js90gf4a3hqnhyw5hshcjdccm62l700j68gs5z97"; + + # run `grep github.com/kubernetes-sigs/cri-tools go.mod | head -n1 | awk '{print $4}'` in the k3s repo at the tag + criCtlVersion = "1.25.0-k3s1"; + + baseMeta = k3s.meta; + + # https://github.com/k3s-io/k3s/blob/5fb370e53e0014dc96183b8ecb2c25a61e891e76/scripts/build#L19-L40 + versionldflags = [ + "-X github.com/rancher/k3s/pkg/version.Version=v${k3sVersion}" + "-X github.com/rancher/k3s/pkg/version.GitCommit=${lib.substring 0 8 k3sCommit}" + "-X k8s.io/client-go/pkg/version.gitVersion=v${k3sVersion}" + "-X k8s.io/client-go/pkg/version.gitCommit=${k3sCommit}" + "-X k8s.io/client-go/pkg/version.gitTreeState=clean" + "-X k8s.io/client-go/pkg/version.buildDate=1970-01-01T01:01:01Z" + "-X k8s.io/component-base/version.gitVersion=v${k3sVersion}" + "-X k8s.io/component-base/version.gitCommit=${k3sCommit}" + "-X k8s.io/component-base/version.gitTreeState=clean" + "-X k8s.io/component-base/version.buildDate=1970-01-01T01:01:01Z" + "-X github.com/kubernetes-sigs/cri-tools/pkg/version.Version=v${criCtlVersion}" + "-X github.com/containerd/containerd/version.Version=v${containerdVersion}" + "-X github.com/containerd/containerd/version.Package=github.com/k3s-io/containerd" + ]; + + # bundled into the k3s binary + traefikChart = fetchurl { + url = "https://helm.traefik.io/traefik/traefik-${traefikChartVersion}.tgz"; + sha256 = traefikChartSha256; + }; + # so, k3s is a complicated thing to package + # This derivation attempts to avoid including any random binaries from the + # internet. k3s-root is _mostly_ binaries built to be bundled in k3s (which + # we don't care about doing, we can add those as build or runtime + # dependencies using a real package manager). + # In addition to those binaries, it's also configuration though (right now + # mostly strongswan configuration), and k3s does use those files. + # As such, we download it in order to grab 'etc' and bundle it into the final + # k3s binary. + k3sRoot = fetchzip { + # Note: marked as apache 2.0 license + url = "https://github.com/k3s-io/k3s-root/releases/download/v${k3sRootVersion}/k3s-root-amd64.tar"; + sha256 = k3sRootSha256; + stripRoot = false; + }; + k3sCNIPlugins = buildGoModule rec { + pname = "k3s-cni-plugins"; + version = k3sCNIVersion; + vendorSha256 = null; + + subPackages = [ "." ]; + + src = fetchFromGitHub { + owner = "rancher"; + repo = "plugins"; + rev = "v${version}"; + sha256 = k3sCNISha256; + }; + + postInstall = '' + mv $out/bin/plugins $out/bin/cni + ''; + + meta = baseMeta // { + description = "CNI plugins, as patched by rancher for k3s"; + }; + }; + # Grab this separately from a build because it's used by both stages of the + # k3s build. + k3sRepo = fetchgit { + url = "https://github.com/k3s-io/k3s"; + rev = "v${k3sVersion}"; + sha256 = k3sRepoSha256; + }; + # Stage 1 of the k3s build: + # Let's talk about how k3s is structured. + # One of the ideas of k3s is that there's the single "k3s" binary which can + # do everything you need, from running a k3s server, to being a worker node, + # to running kubectl. + # The way that actually works is that k3s is a single go binary that contains + # a bunch of bindata that it unpacks at runtime into directories (either the + # user's home directory or /var/lib/rancher if run as root). + # This bindata includes both binaries and configuration. + # In order to let nixpkgs do all its autostripping/patching/etc, we split this into two derivations. + # First, we build all the binaries that get packed into the thick k3s binary + # (and output them from one derivation so they'll all be suitably patched up). + # Then, we bundle those binaries into our thick k3s binary and use that as + # the final single output. + # This approach was chosen because it ensures the bundled binaries all are + # correctly built to run with nix (we can lean on the existing buildGoModule + # stuff), and we can again lean on that tooling for the final k3s binary too. + # Other alternatives would be to manually run the + # strip/patchelf/remove-references step ourselves in the installPhase of the + # derivation when we've built all the binaries, but haven't bundled them in + # with generated bindata yet. + + k3sServer = buildGoModule rec { + pname = "k3s-server"; + version = k3sVersion; + + src = k3sRepo; + vendorSha256 = k3sVendorSha256; + + nativeBuildInputs = [ pkg-config ]; + buildInputs = [ libseccomp ]; + + subPackages = [ "cmd/server" ]; + ldflags = versionldflags; + + # create the multicall symlinks for k3s + postInstall = '' + mv $out/bin/server $out/bin/k3s + pushd $out + # taken verbatim from https://github.com/k3s-io/k3s/blob/v1.23.3%2Bk3s1/scripts/build#L105-L113 + ln -s k3s ./bin/k3s-agent + ln -s k3s ./bin/k3s-server + ln -s k3s ./bin/k3s-etcd-snapshot + ln -s k3s ./bin/k3s-secrets-encrypt + ln -s k3s ./bin/k3s-certificate + ln -s k3s ./bin/kubectl + ln -s k3s ./bin/crictl + ln -s k3s ./bin/ctr + popd + ''; + + meta = baseMeta // { + description = "The various binaries that get packaged into the final k3s binary"; + }; + }; + k3sContainerd = buildGoModule { + pname = "k3s-containerd"; + version = containerdVersion; + src = fetchFromGitHub { + owner = "k3s-io"; + repo = "containerd"; + rev = "v${containerdVersion}"; + sha256 = containerdSha256; + }; + vendorSha256 = null; + buildInputs = [ btrfs-progs ]; + subPackages = [ "cmd/containerd" "cmd/containerd-shim-runc-v2" ]; + ldflags = versionldflags; + }; +in +buildGoModule rec { + pname = "k3s"; + version = k3sVersion; + + src = k3sRepo; + vendorSha256 = k3sVendorSha256; + + patches = [ + ./0001-script-download-strip-downloading-just-package-CRD.patch + ]; + + postPatch = '' + # Nix prefers dynamically linked binaries over static binary. + + substituteInPlace scripts/package-cli \ + --replace '"$LDFLAGS $STATIC" -o' \ + '"$LDFLAGS" -o' \ + --replace "STATIC=\"-extldflags \'-static\'\"" \ + "" + + # Upstream codegen fails with trimpath set. Removes "trimpath" for 'go generate': + + substituteInPlace scripts/package-cli \ + --replace '"''${GO}" generate' \ + 'GOFLAGS="" \ + GOOS="${pkgsBuildBuild.go.GOOS}" \ + GOARCH="${pkgsBuildBuild.go.GOARCH}" \ + CC="${pkgsBuildBuild.stdenv.cc}/bin/cc" \ + "''${GO}" generate' + ''; + + # Important utilities used by the kubelet, see + # https://github.com/kubernetes/kubernetes/issues/26093#issuecomment-237202494 + # Note the list in that issue is stale and some aren't relevant for k3s. + k3sRuntimeDeps = [ + kmod + socat + iptables + iproute2 + bridge-utils + ethtool + util-linux # kubelet wants 'nsenter' from util-linux: https://github.com/kubernetes/kubernetes/issues/26093#issuecomment-705994388 + conntrack-tools + ]; + + buildInputs = k3sRuntimeDeps; + + nativeBuildInputs = [ + makeWrapper + rsync + yq-go + zstd + ]; + + # embedded in the final k3s cli + propagatedBuildInputs = [ + k3sCNIPlugins + k3sContainerd + k3sServer + runc + ]; + + # We override most of buildPhase due to peculiarities in k3s's build. + # Specifically, it has a 'go generate' which runs part of the package. See + # this comment: + # https://github.com/NixOS/nixpkgs/pull/158089#discussion_r799965694 + # So, why do we use buildGoModule at all? For the `vendorSha256` / `go mod download` stuff primarily. + buildPhase = '' + patchShebangs ./scripts/package-cli ./scripts/download ./scripts/build-upload + + # copy needed 'go generate' inputs into place + mkdir -p ./bin/aux + rsync -a --no-perms ${k3sServer}/bin/ ./bin/ + ln -vsf ${runc}/bin/runc ./bin/runc + ln -vsf ${k3sCNIPlugins}/bin/cni ./bin/cni + ln -vsf ${k3sContainerd}/bin/* ./bin/ + rsync -a --no-perms --chmod u=rwX ${k3sRoot}/etc/ ./etc/ + mkdir -p ./build/static/charts + # Note, upstream's chart has a 00 suffix. This seems to not matter though, so we're ignoring that naming detail. + export TRAEFIK_CHART_FILE=${traefikChart} + # place the traefik chart using their code since it's complicated + # We trim the actual download, see patches + ./scripts/download + + export ARCH=$GOARCH + export DRONE_TAG="v${k3sVersion}" + export DRONE_COMMIT="${k3sCommit}" + # use ./scripts/package-cli to run 'go generate' + 'go build' + + ./scripts/package-cli + mkdir -p $out/bin + ''; + + # Otherwise it depends on 'getGoDirs', which is normally set in buildPhase + doCheck = false; + + installPhase = '' + # wildcard to match the arm64 build too + install -m 0755 dist/artifacts/k3s* -D $out/bin/k3s + wrapProgram $out/bin/k3s \ + --prefix PATH : ${lib.makeBinPath k3sRuntimeDeps} \ + --prefix PATH : "$out/bin" + ''; + + doInstallCheck = true; + installCheckPhase = '' + $out/bin/k3s --version | grep -F "v${k3sVersion}" >/dev/null + ''; + + # Fix-Me: Needs to be adapted specifically for 1.25 + # passthru.updateScript = ./update.sh; + + # Fix-Me: Needs to be adapted specifically for 1.25 + # passthru.tests = nixosTests.k3s; + + meta = baseMeta; +} diff --git a/pkgs/applications/networking/cluster/k3s/chart-versions.nix b/pkgs/applications/networking/cluster/k3s/1_26/chart-versions.nix similarity index 100% rename from pkgs/applications/networking/cluster/k3s/chart-versions.nix rename to pkgs/applications/networking/cluster/k3s/1_26/chart-versions.nix diff --git a/pkgs/applications/networking/cluster/k3s/default.nix b/pkgs/applications/networking/cluster/k3s/1_26/default.nix similarity index 100% rename from pkgs/applications/networking/cluster/k3s/default.nix rename to pkgs/applications/networking/cluster/k3s/1_26/default.nix diff --git a/pkgs/applications/networking/cluster/k3s/update.sh b/pkgs/applications/networking/cluster/k3s/1_26/update.sh similarity index 100% rename from pkgs/applications/networking/cluster/k3s/update.sh rename to pkgs/applications/networking/cluster/k3s/1_26/update.sh diff --git a/pkgs/applications/networking/cluster/temporal/default.nix b/pkgs/applications/networking/cluster/temporal/default.nix index 0b1077443a49..6a2c39de113c 100644 --- a/pkgs/applications/networking/cluster/temporal/default.nix +++ b/pkgs/applications/networking/cluster/temporal/default.nix @@ -2,16 +2,18 @@ buildGoModule rec { pname = "temporal"; - version = "1.17.5"; + version = "1.19.1"; src = fetchFromGitHub { owner = "temporalio"; repo = "temporal"; rev = "v${version}"; - sha256 = "sha256-u8GyaXpiVZdPDoPAqIa+TY+JQFZeSGOLrUy+e3E4kig="; + hash = "sha256-j2+K/ZDDNakofrToxhyA1gh534l3Eq6G/fNXE0ktceY="; }; - vendorSha256 = "sha256-MT/BmGTdyEzmXjuwlA6WhLIWlrQz3Wc4Tl5dMI1587Q="; + vendorHash = "sha256-KkgyL37VJy1DhfCB5RJpjczBPbzQwt1xsovQ0xCXGr4="; + + excludedPackages = [ "./build" ]; CGO_ENABLED = 0; @@ -26,6 +28,7 @@ buildGoModule rec { install -Dm755 "$GOPATH/bin/server" -T $out/bin/temporal-server install -Dm755 "$GOPATH/bin/cassandra" -T $out/bin/temporal-cassandra-tool install -Dm755 "$GOPATH/bin/sql" -T $out/bin/temporal-sql-tool + install -Dm755 "$GOPATH/bin/tdbg" -T $out/bin/tdbg runHook postInstall ''; diff --git a/pkgs/applications/networking/cluster/terraform-providers/providers.json b/pkgs/applications/networking/cluster/terraform-providers/providers.json index b7587ebd0677..ffd23a5ca7ff 100644 --- a/pkgs/applications/networking/cluster/terraform-providers/providers.json +++ b/pkgs/applications/networking/cluster/terraform-providers/providers.json @@ -812,11 +812,11 @@ "vendorHash": "sha256-LRIfxQGwG988HE5fftGl6JmBG7tTknvmgpm4Fu1NbWI=" }, "oci": { - "hash": "sha256-L8y00f+57hndpVevliJ2kNqpGeNR2Jv/FHbqkAUIRMI=", + "hash": "sha256-ecel4aXOqkPmeOzG5G/D8vmjo2HP9TG+c8H27pCYn2g=", "homepage": "https://registry.terraform.io/providers/oracle/oci", "owner": "oracle", "repo": "terraform-provider-oci", - "rev": "v4.105.0", + "rev": "v4.106.0", "spdx": "MPL-2.0", "vendorHash": null }, @@ -1091,11 +1091,11 @@ "vendorHash": "sha256-2wPmLpjhG6QgG+BUCO0oIzHjBOWIOYuptgdtSIm9TZw=" }, "tencentcloud": { - "hash": "sha256-QJUxLwKG3XabACbAvLLKBG9+cmCYRQFpRTWRU6rKwfI=", + "hash": "sha256-yVI1f86Gpkwl3jCAs5d54rZS8lM7cjbwWq+HUXwi8EU=", "homepage": "https://registry.terraform.io/providers/tencentcloudstack/tencentcloud", "owner": "tencentcloudstack", "repo": "terraform-provider-tencentcloud", - "rev": "v1.79.7", + "rev": "v1.79.8", "spdx": "MPL-2.0", "vendorHash": null }, diff --git a/pkgs/applications/networking/cluster/velero/default.nix b/pkgs/applications/networking/cluster/velero/default.nix index bc4f1959eaac..dcb4dd9eb08d 100644 --- a/pkgs/applications/networking/cluster/velero/default.nix +++ b/pkgs/applications/networking/cluster/velero/default.nix @@ -2,14 +2,14 @@ buildGoModule rec { pname = "velero"; - version = "1.10.0"; + version = "1.10.1"; src = fetchFromGitHub { owner = "vmware-tanzu"; repo = "velero"; rev = "v${version}"; - sha256 = "sha256-PBCTVws5N42q68rKcMLW7GgZvdsQgmdlsKMpJ5bCF00="; + sha256 = "sha256-jN45chUeoGJGJWD6Rj6duNE36/QCzPqci8V3h1OHtw4="; }; ldflags = [ @@ -20,7 +20,7 @@ buildGoModule rec { "-X github.com/vmware-tanzu/velero/pkg/buildinfo.GitSHA=none" ]; - vendorSha256 = "sha256-5Po8TRCE6VP+RcaIJImYjElTMHHS/2JwbrHreeWLxio="; + vendorHash = "sha256-mvVwf4w/65L+F6aiTNf2jmJtaT1EpWCQJ6r9NHUUUqQ="; excludedPackages = [ "issue-template-gen" "release-tools" "v1" "velero-restic-restore-helper" ]; diff --git a/pkgs/applications/networking/feedreaders/rssguard/default.nix b/pkgs/applications/networking/feedreaders/rssguard/default.nix index f1225f87eefb..57cf5e20bcd5 100644 --- a/pkgs/applications/networking/feedreaders/rssguard/default.nix +++ b/pkgs/applications/networking/feedreaders/rssguard/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "rssguard"; - version = "4.3.1"; + version = "4.3.2"; src = fetchFromGitHub { owner = "martinrotter"; repo = pname; rev = version; - sha256 = "sha256-hfUtxPGPhPC2VgGLLIaYHlEMpXHAPZ5fkLL0glhyQcY="; + sha256 = "sha256-2h9fVah0WZ8X0GsCLtiUWRan1Gkl4WBxuEQ3gx4FFBo="; }; buildInputs = [ qtwebengine qttools ]; diff --git a/pkgs/applications/networking/instant-messengers/flare-signal/default.nix b/pkgs/applications/networking/instant-messengers/flare-signal/default.nix new file mode 100644 index 000000000000..a30bfa2dcb02 --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/flare-signal/default.nix @@ -0,0 +1,59 @@ +{ lib +, stdenv +, fetchFromGitLab +, meson +, ninja +, pkg-config +, protobuf +, libsecret +, libadwaita +, rustPlatform +, desktop-file-utils +, wrapGAppsHook4 +}: + +stdenv.mkDerivation rec { + pname = "flare"; + version = "0.6.0"; + + src = fetchFromGitLab { + domain = "gitlab.com"; + owner = "Schmiddiii"; + repo = pname; + rev = version; + hash = "sha256-wY95sXWGDjEy8vvP79XliJOn5GQkAvDmOXKmRz0TPEw="; + }; + + cargoDeps = rustPlatform.fetchCargoTarball { + inherit src; + name = "${pname}-${version}"; + hash = "sha256-J3MGQlPYGjhZKH599vfW2WhkXx+Tdr53PviiVpye4R0="; + }; + + nativeBuildInputs = [ + desktop-file-utils # for update-desktop-database + meson + ninja + pkg-config + wrapGAppsHook4 + ] ++ (with rustPlatform; [ + cargoSetupHook + rust.cargo + rust.rustc + ]); + + buildInputs = [ + libadwaita + libsecret + protobuf + ]; + + meta = { + changelog = "https://gitlab.com/Schmiddiii/flare/-/blob/${src.rev}/CHANGELOG.md"; + description = "An unofficial Signal GTK client"; + homepage = "https://gitlab.com/Schmiddiii/flare"; + license = lib.licenses.agpl3Plus; + maintainers = with lib.maintainers; [ dotlambda tomfitzhenry ]; + platforms = lib.platforms.linux; + }; +} diff --git a/pkgs/applications/networking/instant-messengers/zoom-us/default.nix b/pkgs/applications/networking/instant-messengers/zoom-us/default.nix index d18761689ee3..cb132610d0c2 100644 --- a/pkgs/applications/networking/instant-messengers/zoom-us/default.nix +++ b/pkgs/applications/networking/instant-messengers/zoom-us/default.nix @@ -48,23 +48,23 @@ let # and often with different versions. We write them on three lines # like this (rather than using {}) so that the updater script can # find where to edit them. - versions.aarch64-darwin = "5.13.6.14918"; - versions.x86_64-darwin = "5.13.6.14918"; - versions.x86_64-linux = "5.13.5.431"; + versions.aarch64-darwin = "5.13.7.15481"; + versions.x86_64-darwin = "5.13.7.15481"; + versions.x86_64-linux = "5.13.7.683"; srcs = { aarch64-darwin = fetchurl { url = "https://zoom.us/client/${versions.aarch64-darwin}/zoomusInstallerFull.pkg?archType=arm64"; name = "zoomusInstallerFull.pkg"; - hash = "sha256-QY9z1bTKtL32HE4XWnBIvCNmDF+3x5N9BdfqJA+24fA="; + hash = "sha256-lCg8xCEuZSWnd4fieug9xjudE9q6pNICRsbvA4ATVK8="; }; x86_64-darwin = fetchurl { url = "https://zoom.us/client/${versions.x86_64-darwin}/zoomusInstallerFull.pkg"; - hash = "sha256-eSPKzxDPXCbME0eTTDlfsI5KM5qRm79JTtnGJvpiS98="; + hash = "sha256-jmMpkqUga/KQJfXFbGURcWQudnCKlIi5NGY6LuekjKw="; }; x86_64-linux = fetchurl { url = "https://zoom.us/client/${versions.x86_64-linux}/zoom_x86_64.pkg.tar.xz"; - hash = "sha256-R0IMV/+R7AGFy/ZvNyyvIBv10t1x1U1X6jdHoo6UHKY="; + hash = "sha256-1aA3W9eXYhjxr39PoTSAVG7mToFInF7uz8MCiJhk/10="; }; }; diff --git a/pkgs/applications/networking/mailreaders/evolution/evolution/wrapper.nix b/pkgs/applications/networking/mailreaders/evolution/evolution/wrapper.nix index 7837393926f6..0a4a4a9d7797 100644 --- a/pkgs/applications/networking/mailreaders/evolution/evolution/wrapper.nix +++ b/pkgs/applications/networking/mailreaders/evolution/evolution/wrapper.nix @@ -7,10 +7,16 @@ symlinkJoin { nativeBuildInputs = [ makeWrapper ]; postBuild = '' + declare -a schemas; + for plugin in ${toString plugins}; do + for schema in $plugin/share/gsettings-schemas/*; do + schemas+=($schema); + done + done for i in $out/bin/* $out/libexec/**; do if [ ! -d $i ]; then echo wrapping $i - wrapProgram $i --set EDS_EXTRA_PREFIXES "${lib.concatStringsSep ":" plugins}" + wrapProgram $i --set EDS_EXTRA_PREFIXES "${lib.concatStringsSep ":" plugins}" --prefix XDG_DATA_DIRS : "''${schemas[@]}" fi done diff --git a/pkgs/applications/networking/mailreaders/thunderbird/packages.nix b/pkgs/applications/networking/mailreaders/thunderbird/packages.nix index 8fefcc1c3143..6c705d7cd362 100644 --- a/pkgs/applications/networking/mailreaders/thunderbird/packages.nix +++ b/pkgs/applications/networking/mailreaders/thunderbird/packages.nix @@ -5,13 +5,13 @@ rec { thunderbird-102 = (buildMozillaMach rec { pname = "thunderbird"; - version = "102.7.1"; + version = "102.7.2"; application = "comm/mail"; applicationName = "Mozilla Thunderbird"; binaryName = pname; src = fetchurl { url = "mirror://mozilla/thunderbird/releases/${version}/source/thunderbird-${version}.source.tar.xz"; - sha512 = "6310f3f122a1a61917ec2d0efe3a031b199ac13681e9fb4035abc0f4de0dbafb12accffbd63facb23f2cebf0124a13f7538a33176a2a513d1f685bee40db50ba"; + sha512 = "7371079d59cceb47fdd0e9661f79eae7510ab0f5bf8e80c21952dfb5fed3db72279a4ac9d3a3de3617194fb36a9420ae814a69ee19a93ba242d2aa2b921e3010"; }; extraPatches = [ # The file to be patched is different from firefox's `no-buildconfig-ffx90.patch`. diff --git a/pkgs/applications/networking/nextcloud-client/0001-Explicitly-copy-dbus-files-into-the-store-dir.patch b/pkgs/applications/networking/nextcloud-client/0001-Explicitly-copy-dbus-files-into-the-store-dir.patch index ab7cb9bffa45..260a7dd4ddd7 100644 --- a/pkgs/applications/networking/nextcloud-client/0001-Explicitly-copy-dbus-files-into-the-store-dir.patch +++ b/pkgs/applications/networking/nextcloud-client/0001-Explicitly-copy-dbus-files-into-the-store-dir.patch @@ -8,18 +8,13 @@ Subject: [PATCH] Explicitly copy dbus files into the store dir 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell_integration/libcloudproviders/CMakeLists.txt b/shell_integration/libcloudproviders/CMakeLists.txt -index 1f35335..7f76951 100644 +index 2e7349ef7..512d4b188 100644 --- a/shell_integration/libcloudproviders/CMakeLists.txt +++ b/shell_integration/libcloudproviders/CMakeLists.txt -@@ -19,7 +19,7 @@ MACRO(PKGCONFIG_GETVAR _package _var _output_variable) - ENDMACRO(PKGCONFIG_GETVAR _package _var _output_variable) - +@@ -1,5 +1,6 @@ macro(dbus_add_activation_service _sources) -- PKGCONFIG_GETVAR(dbus-1 session_bus_services_dir _install_dir) + pkg_get_variable(_install_dir dbus-1 session_bus_services_dir) + set(_install_dir "${CMAKE_INSTALL_DATADIR}/dbus-1/service") foreach (_i ${_sources}) get_filename_component(_service_file ${_i} ABSOLUTE) string(REGEX REPLACE "\\.service.*$" ".service" _output_file ${_i}) --- -2.19.2 - diff --git a/pkgs/applications/networking/nextcloud-client/default.nix b/pkgs/applications/networking/nextcloud-client/default.nix index e409551f1232..24d0cdab722e 100644 --- a/pkgs/applications/networking/nextcloud-client/default.nix +++ b/pkgs/applications/networking/nextcloud-client/default.nix @@ -26,7 +26,7 @@ mkDerivation rec { pname = "nextcloud-client"; - version = "3.6.6"; + version = "3.7.1"; outputs = [ "out" "dev" ]; @@ -34,7 +34,7 @@ mkDerivation rec { owner = "nextcloud"; repo = "desktop"; rev = "v${version}"; - sha256 = "sha256-P3LSgrcMZZM0OY3yQz8t3Cf5spJJTB+JTIpoT9U3+xc="; + sha256 = "sha256-MbxGS1Msb3xCW0z8FrIZEY3XaBa4BmN+JFBkV/Pf79A="; }; patches = [ diff --git a/pkgs/applications/networking/sniffnet/default.nix b/pkgs/applications/networking/sniffnet/default.nix index 6dc59e1432ab..074d636ff821 100644 --- a/pkgs/applications/networking/sniffnet/default.nix +++ b/pkgs/applications/networking/sniffnet/default.nix @@ -1,9 +1,11 @@ { lib , rustPlatform -, fetchCrate +, fetchFromGitHub , pkg-config , libpcap , stdenv +, alsa-lib +, expat , fontconfig , libGL , xorg @@ -12,20 +14,24 @@ rustPlatform.buildRustPackage rec { pname = "sniffnet"; - version = "1.0.1"; + version = "1.1.0"; - src = fetchCrate { - inherit pname version; - sha256 = "sha256-8K774j04BOEuJjnFYjaSctPwBrKYYKqjFS2+PyxJ2FM="; + src = fetchFromGitHub { + owner = "gyulyvgc"; + repo = "sniffnet"; + rev = "v${version}"; + hash = "sha256-zqk0N1S0vylleyyXaSflIZyWncZV0+wbSy1oAbyLx/4="; }; - cargoSha256 = "sha256-096i4wDdoJCICd0L2QNY+7cKHQnijK22zj4XaQNuko8="; + cargoHash = "sha256-9CTA7Yh2O5S8DvRjwvkrb4ye0/8f+l0tsTxNBMmxLpQ="; nativeBuildInputs = [ pkg-config ]; buildInputs = [ libpcap ] ++ lib.optionals stdenv.isLinux [ + alsa-lib + expat fontconfig libGL xorg.libX11 @@ -34,6 +40,7 @@ rustPlatform.buildRustPackage rec { xorg.libXrandr ] ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.AppKit + rustPlatform.bindgenHook ]; postFixup = lib.optionalString stdenv.isLinux '' diff --git a/pkgs/applications/radio/hackrf/default.nix b/pkgs/applications/radio/hackrf/default.nix index 1180f5a941ae..647f3efd6706 100644 --- a/pkgs/applications/radio/hackrf/default.nix +++ b/pkgs/applications/radio/hackrf/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "hackrf"; - version = "2022.09.1"; + version = "2023.01.1"; src = fetchFromGitHub { owner = "greatscottgadgets"; repo = "hackrf"; rev = "v${version}"; - sha256 = "sha256-c+9DEMxioIbEDNTdLSOnxX1zpFk07K9rlGP9goEJMlU="; + sha256 = "sha256-zvSSCNtqHOZVlrBggjgxEyUTqTiAIAhdzUkm4Pm9b3k="; }; nativeBuildInputs = [ diff --git a/pkgs/applications/science/math/bliss/default.nix b/pkgs/applications/science/math/bliss/default.nix index fe68d9d245c5..4fccc3a46403 100644 --- a/pkgs/applications/science/math/bliss/default.nix +++ b/pkgs/applications/science/math/bliss/default.nix @@ -32,6 +32,6 @@ stdenv.mkDerivation rec { description = "An open source tool for computing automorphism groups and canonical forms of graphs. It has both a command line user interface as well as C++ and C programming language APIs"; homepage = "http://www.tcs.hut.fi/Software/bliss/"; license = licenses.lgpl3; - platforms = [ "i686-linux" "x86_64-linux" ]; + platforms = [ "i686-linux" "x86_64-linux" "aarch64-linux" ]; }; } diff --git a/pkgs/applications/science/math/polymake/default.nix b/pkgs/applications/science/math/polymake/default.nix index 0eecff0a1798..4dc11db532fd 100644 --- a/pkgs/applications/science/math/polymake/default.nix +++ b/pkgs/applications/science/math/polymake/default.nix @@ -25,13 +25,13 @@ stdenv.mkDerivation rec { pname = "polymake"; - version = "4.8"; + version = "4.9"; src = fetchurl { # "The minimal version is a packager friendly version which omits # the bundled sources of cdd, lrs, libnormaliz, nauty and jReality." url = "https://polymake.org/lib/exe/fetch.php/download/polymake-${version}-minimal.tar.bz2"; - sha256 = "sha256-GfsAypJBpHwpvoEl/IzJ1gQfeMcYwB7oNe01xWJ+86w="; + sha256 = "sha256-BMkLgms6JsWmPhi+MZv/Eqie8BKL+KaPtk3xBZSyWfM="; }; nativeBuildInputs = [ diff --git a/pkgs/applications/science/molecular-dynamics/gromacs/default.nix b/pkgs/applications/science/molecular-dynamics/gromacs/default.nix index 5093a586a85a..26e6ab12ab04 100644 --- a/pkgs/applications/science/molecular-dynamics/gromacs/default.nix +++ b/pkgs/applications/science/molecular-dynamics/gromacs/default.nix @@ -19,11 +19,11 @@ let in stdenv.mkDerivation rec { pname = "gromacs"; - version = "2022.4"; + version = "2023"; src = fetchurl { url = "ftp://ftp.gromacs.org/pub/gromacs/gromacs-${version}.tar.gz"; - sha256 = "sha256-xRG+YC/ylAIGW1CQaEHe+YdSY5uSqV8bChBg2bXicpc="; + sha256 = "sha256-rJLG2nL7vMpBT9io2Xnlbs8XxMHNq+0tpc+05yd7e6g="; }; nativeBuildInputs = [ cmake ]; diff --git a/pkgs/applications/version-management/gfold/default.nix b/pkgs/applications/version-management/gfold/default.nix index dcce6f7f3c00..92e8d9095b72 100644 --- a/pkgs/applications/version-management/gfold/default.nix +++ b/pkgs/applications/version-management/gfold/default.nix @@ -12,7 +12,7 @@ let pname = "gfold"; - version = "4.2.0"; + version = "4.3.0"; in rustPlatform.buildRustPackage { inherit pname version; @@ -21,10 +21,10 @@ rustPlatform.buildRustPackage { owner = "nickgerace"; repo = pname; rev = version; - sha256 = "sha256-cH4FhXrdT0ejpyt8G2rSGw9WE9sfOXRkSA9+FVwRmtQ="; + sha256 = "sha256-yvMp5x1uiJGkWHnwfONx4pVotSSE6sTW4uqWpI2AFXg="; }; - cargoSha256 = "sha256-NmVmqBzRUdumWQ9MzolZTo0VQW9JTjIyYRwUTzGiQZ4="; + cargoHash = "sha256-MBWaNjs840twU9SQLvgVcXTT0RN2QJ7PiaAohiiQu3s="; buildInputs = lib.optionals stdenv.isDarwin [ libiconv Security ]; diff --git a/pkgs/applications/version-management/gh/default.nix b/pkgs/applications/version-management/gh/default.nix index 9018635ad9b8..3f154f0350c4 100644 --- a/pkgs/applications/version-management/gh/default.nix +++ b/pkgs/applications/version-management/gh/default.nix @@ -2,16 +2,16 @@ buildGoModule rec { pname = "gh"; - version = "2.22.1"; + version = "2.23.0"; src = fetchFromGitHub { owner = "cli"; repo = "cli"; rev = "v${version}"; - hash = "sha256-TREy2pzVAHClwbryfEgX2WqtQ8+RmJtCNrESeaHDHMs="; + hash = "sha256-91TmPIjFOCeZmbobn3mIJis5qofJFmNGuX19+Cyo8Ck="; }; - vendorHash = "sha256-OjTl43UQGGHqCrw0kMBShuS8aonjWczfzQGmGJLhdrU="; + vendorHash = "sha256-NiXC0ooUkAqFCLp3eRBpryazQU94gSnw0gYFwQNeCo4="; nativeBuildInputs = [ installShellFiles ]; diff --git a/pkgs/applications/version-management/git-machete/default.nix b/pkgs/applications/version-management/git-machete/default.nix index 24fc850b31b0..9667e7bd2fee 100644 --- a/pkgs/applications/version-management/git-machete/default.nix +++ b/pkgs/applications/version-management/git-machete/default.nix @@ -12,13 +12,13 @@ buildPythonApplication rec { pname = "git-machete"; - version = "3.14.3"; + version = "3.15.0"; src = fetchFromGitHub { owner = "virtuslab"; repo = pname; rev = "v${version}"; - hash = "sha256-VOny8r00JYUT4Z7LukvWTH9ZTn86vn2Dc1YhPmtdE5s="; + hash = "sha256-HSgCvHjSOrMPsdOPtgFUeK6b0ioVnwTtg2oHGg4BrZw="; }; nativeBuildInputs = [ installShellFiles ]; diff --git a/pkgs/applications/version-management/glab/default.nix b/pkgs/applications/version-management/glab/default.nix index 9d6bbbd13f67..a789a35f7a5d 100644 --- a/pkgs/applications/version-management/glab/default.nix +++ b/pkgs/applications/version-management/glab/default.nix @@ -2,16 +2,16 @@ buildGoModule rec { pname = "glab"; - version = "1.24.1"; + version = "1.25.3"; src = fetchFromGitLab { owner = "gitlab-org"; repo = "cli"; rev = "v${version}"; - sha256 = "sha256-CUchYPMBTINkMJg8TC8rKMVkrcj/Gy+ZxV7jbtMFvpg="; + hash = "sha256-x/VH6cRrJZ2t2iftBPC86FcgIwjRNzV11MwLG2y+Paw="; }; - vendorSha256 = "sha256-NuK63ibb1t+HnSR/gCFS7HWVtfGLazVx2M+qxRNCR1I="; + vendorHash = "sha256-FZ1CiR8Rj/sMoCnQm6ArGQfRTlvmD14EZDmufnlTSTk="; ldflags = [ "-s" diff --git a/pkgs/applications/version-management/sourcehut/default.nix b/pkgs/applications/version-management/sourcehut/default.nix index 7faca39e2fe4..9c9f6f403330 100644 --- a/pkgs/applications/version-management/sourcehut/default.nix +++ b/pkgs/applications/version-management/sourcehut/default.nix @@ -2,6 +2,7 @@ , callPackage , recurseIntoAttrs , nixosTests +, config }: # To expose the *srht modules, they have to be a python module so we use `buildPythonModule` @@ -28,12 +29,10 @@ let }; }; in -with python.pkgs; recurseIntoAttrs { +with python.pkgs; recurseIntoAttrs ({ inherit python; coresrht = toPythonApplication srht; buildsrht = toPythonApplication buildsrht; - # Added 2022-10-29 - dispatchsrht = throw "dispatch is deprecated. See https://sourcehut.org/blog/2022-08-01-dispatch-deprecation-plans/ for more information."; gitsrht = toPythonApplication gitsrht; hgsrht = toPythonApplication hgsrht; hubsrht = toPythonApplication hubsrht; @@ -46,4 +45,7 @@ with python.pkgs; recurseIntoAttrs { passthru.tests = { nixos-sourcehut = nixosTests.sourcehut; }; -} +} // lib.optionalAttrs config.allowAliases { + # Added 2022-10-29 + dispatchsrht = throw "dispatch is deprecated. See https://sourcehut.org/blog/2022-08-01-dispatch-deprecation-plans/ for more information."; +}) diff --git a/pkgs/applications/virtualization/singularity/default.nix b/pkgs/applications/virtualization/singularity/default.nix deleted file mode 100644 index 5ec5b19ce042..000000000000 --- a/pkgs/applications/virtualization/singularity/default.nix +++ /dev/null @@ -1,73 +0,0 @@ -{ lib -, fetchurl -, util-linux -, gpgme -, openssl -, libuuid -, coreutils -, which -, makeWrapper -, cryptsetup -, squashfsTools -, buildGoPackage}: - -with lib; - -buildGoPackage rec { - pname = "singularity"; - version = "3.8.7"; - - src = fetchurl { - url = "https://github.com/hpcng/singularity/releases/download/v${version}/singularity-${version}.tar.gz"; - sha256 = "sha256-Myny5YP4SoNDyywDgKHWy86vrn0eYztcvK33FD6shZs="; - }; - - goPackagePath = "github.com/sylabs/singularity"; - - buildInputs = [ gpgme openssl libuuid ]; - nativeBuildInputs = [ util-linux which makeWrapper cryptsetup ]; - propagatedBuildInputs = [ coreutils squashfsTools ]; - - postPatch = '' - substituteInPlace internal/pkg/build/files/copy.go \ - --replace /bin/cp ${coreutils}/bin/cp - ''; - - postConfigure = '' - cd go/src/github.com/sylabs/singularity - - patchShebangs . - sed -i 's|defaultPath := "[^"]*"|defaultPath := "${lib.makeBinPath propagatedBuildInputs}"|' cmd/internal/cli/actions.go - - ./mconfig -V ${version} -p $out --localstatedir=/var - - # Don't install SUID binaries - sed -i 's/-m 4755/-m 755/g' builddir/Makefile - ''; - - buildPhase = '' - runHook preBuild - make -C builddir - runHook postBuild - ''; - - installPhase = '' - runHook preInstall - make -C builddir install LOCALSTATEDIR=$out/var - chmod 755 $out/libexec/singularity/bin/starter-suid - - # Explicitly configure paths in the config file - sed -i 's|^# mksquashfs path =.*$|mksquashfs path = ${lib.makeBinPath [squashfsTools]}/mksquashfs|' $out/etc/singularity/singularity.conf - sed -i 's|^# cryptsetup path =.*$|cryptsetup path = ${lib.makeBinPath [cryptsetup]}/cryptsetup|' $out/etc/singularity/singularity.conf - - runHook postInstall - ''; - - meta = with lib; { - homepage = "http://www.sylabs.io/"; - description = "Application containers for linux"; - license = licenses.bsd3; - platforms = platforms.linux; - maintainers = [ maintainers.jbedo ]; - }; -} diff --git a/pkgs/applications/virtualization/singularity/generic.nix b/pkgs/applications/virtualization/singularity/generic.nix new file mode 100644 index 000000000000..562781b09a31 --- /dev/null +++ b/pkgs/applications/virtualization/singularity/generic.nix @@ -0,0 +1,236 @@ +# Configurations that should only be overrided by +# overrideAttrs +{ pname +, version +, src +, projectName # "apptainer" or "singularity" +, vendorHash ? null +, deleteVendor ? false +, proxyVendor ? false +, extraConfigureFlags ? [ ] +, extraDescription ? "" +, extraMeta ? { } +}: + +let + # Workaround for vendor-related attributes not overridable (#86349) + # should be removed when the issue is resolved + _defaultGoVendorArgs = { + inherit + vendorHash + deleteVendor + proxyVendor + ; + }; +in +{ lib +, buildGoModule +, runCommandLocal + # Native build inputs +, makeWrapper +, pkg-config +, util-linux +, which + # Build inputs +, bash +, conmon +, coreutils +, cryptsetup +, fakeroot +, go +, gpgme +, libseccomp +, libuuid + # This is for nvidia-container-cli +, nvidia-docker +, openssl +, squashfsTools +, squashfuse + # Overridable configurations +, enableNvidiaContainerCli ? true + # Compile with seccomp support + # SingularityCE 3.10.0 and above requires explicit --without-seccomp when libseccomp is not available. +, enableSeccomp ? true + # Whether the configure script treat SUID support as default +, defaultToSuid ? true + # Whether to compile with SUID support +, enableSuid ? false +, starterSuidPath ? null + # newuidmapPath and newgidmapPath are to support --fakeroot + # where those SUID-ed executables are unavailable from the FHS system PATH. + # Path to SUID-ed newuidmap executable +, newuidmapPath ? null + # Path to SUID-ed newgidmap executable +, newgidmapPath ? null + # Remove the symlinks to `singularity*` when projectName != "singularity" +, removeCompat ? false + # Workaround #86349 + # should be removed when the issue is resolved +, vendorHash ? _defaultGoVendorArgs.vendorHash +, deleteVendor ? _defaultGoVendorArgs.deleteVendor +, proxyVendor ? _defaultGoVendorArgs.proxyVendor +}: + +let + defaultPathOriginal = "/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin"; + privileged-un-utils = if ((isNull newuidmapPath) && (isNull newgidmapPath)) then null else + (runCommandLocal "privileged-un-utils" { } '' + mkdir -p "$out/bin" + ln -s ${lib.escapeShellArg newuidmapPath} "$out/bin/newuidmap" + ln -s ${lib.escapeShellArg newgidmapPath} "$out/bin/newgidmap" + ''); +in +buildGoModule { + inherit pname version src; + + # Override vendorHash with the output got from + # nix-prefetch -E "{ sha256 }: ((import ./. { }).apptainer.override { vendorHash = sha256; }).go-modules" + # or with `null` when using vendored source tarball. + inherit vendorHash deleteVendor proxyVendor; + + # go is used to compile extensions when building container images + allowGoReference = true; + + strictDeps = true; + + passthru = { + inherit + enableSeccomp + enableSuid + projectName + removeCompat + starterSuidPath + ; + }; + + nativeBuildInputs = [ + makeWrapper + pkg-config + util-linux + which + ]; + + buildInputs = [ + bash # To patch /bin/sh shebangs. + conmon + cryptsetup + gpgme + libuuid + openssl + squashfsTools + squashfuse + ] + ++ lib.optional enableNvidiaContainerCli nvidia-docker + ++ lib.optional enableSeccomp libseccomp + ; + + configureScript = "./mconfig"; + + configureFlags = [ + "--localstatedir=/var/lib" + "--runstatedir=/var/run" + ] + ++ lib.optional (!enableSeccomp) "--without-seccomp" + ++ lib.optional (defaultToSuid && !enableSuid) "--without-suid" + ++ lib.optional (!defaultToSuid && enableSuid) "--with-suid" + ++ extraConfigureFlags + ; + + # Packages to prefix to the Apptainer/Singularity container runtime default PATH + # Use overrideAttrs to override + defaultPathInputs = [ + bash + coreutils + cryptsetup # cryptsetup + go + privileged-un-utils + squashfsTools # mksquashfs unsquashfs # Make / unpack squashfs image + squashfuse # squashfuse_ll squashfuse # Mount (without unpacking) a squashfs image without privileges + ] + ++ lib.optional enableNvidiaContainerCli nvidia-docker + ; + + postPatch = '' + if [[ ! -e .git || ! -e VERSION ]]; then + echo "${version}" > VERSION + fi + # Patch shebangs for script run during build + patchShebangs --build "$configureScript" makeit e2e scripts mlocal/scripts + # Patching the hard-coded defaultPath by prefixing the packages in defaultPathInputs + substituteInPlace cmd/internal/cli/actions.go \ + --replace "defaultPath = \"${defaultPathOriginal}\"" "defaultPath = \"''${defaultPathInputs// /\/bin:}''${defaultPathInputs:+/bin:}${defaultPathOriginal}\"" + ''; + + postConfigure = '' + # Code borrowed from pkgs/stdenv/generic/setup.sh configurePhase() + + # set to empty if unset + : ''${configureFlags=} + + # shellcheck disable=SC2086 + $configureScript -V ${version} "''${prefixKey:---prefix=}$prefix" $configureFlags "''${configureFlagsArray[@]}" + + # End of the code from pkgs/stdenv/generic/setup.sh configurPhase() + ''; + + buildPhase = '' + runHook preBuild + make -C builddir -j"$NIX_BUILD_CORES" + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + make -C builddir install LOCALSTATEDIR="$out/var/lib" + runHook postInstall + ''; + + postFixup = '' + substituteInPlace "$out/bin/run-singularity" \ + --replace "/usr/bin/env ${projectName}" "$out/bin/${projectName}" + wrapProgram "$out/bin/${projectName}" \ + --prefix PATH : "${lib.makeBinPath [ + fakeroot + squashfsTools # Singularity (but not Apptainer) expects unsquashfs from the host PATH + ]}" + # Make changes in the config file + ${lib.optionalString enableNvidiaContainerCli '' + substituteInPlace "$out/etc/${projectName}/${projectName}.conf" \ + --replace "use nvidia-container-cli = no" "use nvidia-container-cli = yes" + ''} + ${lib.optionalString (removeCompat && (projectName != "singularity")) '' + unlink "$out/bin/singularity" + for file in "$out"/share/man/man?/singularity*.gz; do + if [[ -L "$file" ]]; then + unlink "$file" + fi + done + for file in "$out"/share/*-completion/completions/singularity; do + if [[ -e "$file" ]] + rm "$file" + done + ''} + ${lib.optionalString enableSuid (lib.warnIf (isNull starterSuidPath) "${projectName}: Null starterSuidPath when enableSuid produces non-SUID-ed starter-suid and run-time permission denial." '' + chmod +x $out/libexec/${projectName}/bin/starter-suid + '')} + ${lib.optionalString (enableSuid && !isNull starterSuidPath) '' + mv "$out"/libexec/${projectName}/bin/starter-suid{,.orig} + ln -s ${lib.escapeShellArg starterSuidPath} "$out/libexec/${projectName}/bin/starter-suid" + ''} + ''; + + meta = with lib; { + description = "Application containers for linux" + extraDescription; + longDescription = '' + Singularity (the upstream) renamed themselves to Apptainer + to distinguish themselves from a fork made by Sylabs Inc.. See + + https://sylabs.io/2021/05/singularity-community-edition + https://apptainer.org/news/community-announcement-20211130 + ''; + license = licenses.bsd3; + platforms = platforms.linux; + maintainers = with maintainers; [ jbedo ShamrockLee ]; + mainProgram = projectName; + } // extraMeta; +} diff --git a/pkgs/applications/virtualization/singularity/packages.nix b/pkgs/applications/virtualization/singularity/packages.nix new file mode 100644 index 000000000000..06c8c4fcc0da --- /dev/null +++ b/pkgs/applications/virtualization/singularity/packages.nix @@ -0,0 +1,94 @@ +{ callPackage +, fetchFromGitHub +, nixos +, conmon +}: +let + apptainer = callPackage + (import ./generic.nix rec { + pname = "apptainer"; + # TODO: Upgrade to 1.1.4 only after https://github.com/apptainer/apptainer/pull/967 get merge + # and https://github.com/apptainer/apptainer/issues/958 get fixed + version = "1.1.3"; + projectName = "apptainer"; + + src = fetchFromGitHub { + owner = "apptainer"; + repo = "apptainer"; + rev = "v${version}"; + hash = "sha256-QFg6RC77OE/a6Qlzn6Zi5I7Iaq/U3/m0eI9yLArzuNc="; + }; + + # Update by running + # nix-prefetch -E "{ sha256 }: ((import ./. { }).apptainer.override { vendorHash = sha256; }).go-modules" + # at the root directory of the Nixpkgs repository + vendorHash = "sha256-tAnh7A8Lw5KtY7hq+sqHMEUlgXvgeeCKKIfRZFoRtug="; + + extraDescription = " (previously known as Singularity)"; + extraMeta.homepage = "https://apptainer.org"; + }) + { + # Apptainer doesn't depend on conmon + conmon = null; + + # defaultToSuid becomes false since Apptainer 1.1.0 + # https://github.com/apptainer/apptainer/pull/495 + # https://github.com/apptainer/apptainer/releases/tag/v1.1.0 + defaultToSuid = false; + }; + + singularity = callPackage + (import ./generic.nix rec { + pname = "singularity-ce"; + version = "3.10.4"; + projectName = "singularity"; + + src = fetchFromGitHub { + owner = "sylabs"; + repo = "singularity"; + rev = "v${version}"; + hash = "sha256-bUnQXQVwaVA3Lkw3X9TBWqNBgiPxAVCHnkq0vc+CIsM="; + }; + + # Update by running + # nix-prefetch -E "{ sha256 }: ((import ./. { }).singularity.override { vendorHash = sha256; }).go-modules" + # at the root directory of the Nixpkgs repository + vendorHash = "sha256-K8helLcOuz3E4LzBE9y3pnZqwdwhO/iMPTN1o22ipVg="; + + # Do not build conmon from the Git submodule source, + # Use Nixpkgs provided version + extraConfigureFlags = [ + "--without-conmon" + ]; + + extraDescription = " (Sylabs Inc's fork of Singularity, a.k.a. SingularityCE)"; + extraMeta.homepage = "https://sylabs.io/"; + }) + { + defaultToSuid = true; + }; + + genOverridenNixos = package: packageName: (nixos { + programs.singularity = { + enable = true; + inherit package; + }; + }).config.programs.singularity.packageOverriden.overrideAttrs (oldAttrs: { + meta = oldAttrs.meta // { + description = ""; + longDescription = '' + This package produces identical store derivations to `pkgs.${packageName}` + overriden and installed by the NixOS module `programs.singularity` + with default configuration. + + This is for binary substitutes only. Use pkgs.${packageName} instead. + ''; + }; + }); +in +{ + inherit apptainer singularity; + + apptainer-overriden-nixos = genOverridenNixos apptainer "apptainer"; + singularity-overriden-nixos = genOverridenNixos singularity "singularity"; +} diff --git a/pkgs/build-support/build-graalvm-native-image/default.nix b/pkgs/build-support/build-graalvm-native-image/default.nix index f223009cba5c..64c6568e1bc2 100644 --- a/pkgs/build-support/build-graalvm-native-image/default.nix +++ b/pkgs/build-support/build-graalvm-native-image/default.nix @@ -10,7 +10,6 @@ # except in special cases. In most cases, use extraNativeBuildArgs instead , nativeImageBuildArgs ? [ "-jar" jar - "-H:CLibraryPath=${lib.getLib graalvm}/lib" (lib.optionalString stdenv.isDarwin "-H:-CheckToolchain") "-H:Name=${executable}" "--verbose" @@ -50,6 +49,8 @@ stdenv.mkDerivation (args // { runHook postInstall ''; + disallowedReferences = [ graalvmDrv ]; + meta = { # default to graalvm's platforms platforms = graalvmDrv.meta.platforms; diff --git a/pkgs/build-support/singularity-tools/default.nix b/pkgs/build-support/singularity-tools/default.nix index 46df792bdf6c..9689e4124590 100644 --- a/pkgs/build-support/singularity-tools/default.nix +++ b/pkgs/build-support/singularity-tools/default.nix @@ -10,8 +10,8 @@ , gawk , util-linux , runtimeShell -, e2fsprogs }: - +, e2fsprogs +}: rec { shellScript = name: text: writeScript name '' @@ -20,40 +20,51 @@ rec { ${text} ''; - mkLayer = { - name, - contents ? [], - }: - runCommand "singularity-layer-${name}" { - inherit contents; - } '' + mkLayer = + { name + , contents ? [ ] + # May be "apptainer" instead of "singularity" + , projectName ? (singularity.projectName or "singularity") + }: + runCommand "${projectName}-layer-${name}" + { + inherit contents; + } '' mkdir $out for f in $contents ; do cp -ra $f $out/ done ''; - buildImage = { - name, - contents ? [], - diskSize ? 1024, - runScript ? "#!${stdenv.shell}\nexec /bin/sh", - runAsRoot ? null, - memSize ? 512 - }: - let layer = mkLayer { - inherit name; - contents = contents ++ [ bash runScriptFile ]; - }; - runAsRootFile = shellScript "run-as-root.sh" runAsRoot; - runScriptFile = shellScript "run-script.sh" runScript; - result = vmTools.runInLinuxVM ( - runCommand "singularity-image-${name}.img" { + buildImage = + let + defaultSingularity = singularity; + in + { name + , contents ? [ ] + , diskSize ? 1024 + , runScript ? "#!${stdenv.shell}\nexec /bin/sh" + , runAsRoot ? null + , memSize ? 512 + , singularity ? defaultSingularity + }: + let + projectName = singularity.projectName or "singularity"; + layer = mkLayer { + inherit name; + contents = contents ++ [ bash runScriptFile ]; + inherit projectName; + }; + runAsRootFile = shellScript "run-as-root.sh" runAsRoot; + runScriptFile = shellScript "run-script.sh" runScript; + result = vmTools.runInLinuxVM ( + runCommand "${projectName}-image-${name}.img" + { buildInputs = [ singularity e2fsprogs util-linux gawk ]; layerClosure = writeReferencesToFile layer; preVM = vmTools.createEmptyImage { size = diskSize; - fullName = "singularity-run-disk"; + fullName = "${projectName}-run-disk"; }; inherit memSize; } @@ -92,19 +103,20 @@ rec { if [ ! -e bin/sh ]; then ln -s ${runtimeShell} bin/sh fi - mkdir -p .singularity.d - ln -s ${runScriptFile} .singularity.d/runscript + mkdir -p .${projectName}.d + ln -s ${runScriptFile} .${projectName}.d/runscript - # Fill out .singularity.d - mkdir -p .singularity.d/env - touch .singularity.d/env/94-appsbase.sh + # Fill out .${projectName}.d + mkdir -p .${projectName}.d/env + touch .${projectName}.d/env/94-appsbase.sh cd .. - mkdir -p /var/singularity/mnt/{container,final,overlay,session,source} + mkdir -p /var/lib/${projectName}/mnt/{container,final,overlay,session,source} echo "root:x:0:0:System administrator:/root:/bin/sh" > /etc/passwd echo > /etc/resolv.conf - TMPDIR=$(pwd -P) singularity build $out ./img + TMPDIR=$(pwd -P) ${projectName} build $out ./img ''); - in result; + in + result; } diff --git a/pkgs/data/documentation/scheme-manpages/default.nix b/pkgs/data/documentation/scheme-manpages/default.nix index f839ce0c6dcd..59620b16a6cc 100644 --- a/pkgs/data/documentation/scheme-manpages/default.nix +++ b/pkgs/data/documentation/scheme-manpages/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "scheme-manpages"; - version = "unstable-2022-07-04"; + version = "unstable-2023-02-06"; src = fetchFromGitHub { owner = "schemedoc"; repo = "manpages"; - rev = "0b95de112857b185b83141ac9324fb0e786c56df"; - sha256 = "sha256-HWkZJd4t7gsbbSGiQ92Lav9EMBPMLXmXFT6HVfyFLSI="; + rev = "ccaa76761a1b100e99287c120196bd5f32d4a403"; + hash = "sha256-RL/94dQiZJ60cXHQ9r4P3hRBqe55oUissCmSp4XLM+o="; }; dontBuild = true; diff --git a/pkgs/data/fonts/iosevka/default.nix b/pkgs/data/fonts/iosevka/default.nix index 53a54f346db1..f9609c6c485b 100644 --- a/pkgs/data/fonts/iosevka/default.nix +++ b/pkgs/data/fonts/iosevka/default.nix @@ -1,9 +1,8 @@ { stdenv , lib -, pkgs , buildNpmPackage , fetchFromGitHub -, nodejs +, darwin , remarshal , ttfautohint-nox # Custom font set options. @@ -67,7 +66,13 @@ buildNpmPackage rec { npmDepsHash = "sha256-Ncf07ggyOnz/2SpgdmaYS2X/8Bad+J2sz8Yyx9Iri3E="; - nativeBuildInputs = [ nodejs remarshal ttfautohint-nox ]; + nativeBuildInputs = [ + remarshal + ttfautohint-nox + ] ++ lib.optionals stdenv.isDarwin [ + # libtool + darwin.cctools + ]; buildPlan = if builtins.isAttrs privateBuildPlan then diff --git a/pkgs/data/misc/v2ray-geoip/default.nix b/pkgs/data/misc/v2ray-geoip/default.nix index be7466674259..40d915dace26 100644 --- a/pkgs/data/misc/v2ray-geoip/default.nix +++ b/pkgs/data/misc/v2ray-geoip/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "v2ray-geoip"; - version = "202302020047"; + version = "202302081046"; src = fetchFromGitHub { owner = "v2fly"; repo = "geoip"; - rev = "9ab244ed78fea88a1ce5bf789fb31bbcd81e8d17"; - sha256 = "sha256-2NYuvzOU0W3qZqWZMr3rTNqX+0rH3fhIr1zCD5dSdWc="; + rev = "d85771a99440dd75294bfd9d00011307b7596d0d"; + sha256 = "sha256-gVL7koUG3BgY8HAYWa2fTwTJIE3svGUgauwI1jlA2/M="; }; installPhase = '' diff --git a/pkgs/desktops/deepin/default.nix b/pkgs/desktops/deepin/default.nix index bb36b21b31c8..2cb3e282b42b 100644 --- a/pkgs/desktops/deepin/default.nix +++ b/pkgs/desktops/deepin/default.nix @@ -3,6 +3,15 @@ let packages = self: let inherit (self) callPackage; + + replaceAll = x: y: '' + echo Replacing "${x}" to "${y}": + for file in $(grep -rl "${x}"); do + echo -- $file + substituteInPlace $file \ + --replace "${x}" "${y}" + done + ''; in { #### LIBRARIES dtkcommon = callPackage ./library/dtkcommon { }; @@ -30,6 +39,15 @@ let deepin-picker = callPackage ./apps/deepin-picker { }; deepin-terminal = callPackage ./apps/deepin-terminal { }; + #### Go Packages + go-lib = callPackage ./go-package/go-lib { inherit replaceAll; }; + go-gir-generator = callPackage ./go-package/go-gir-generator { }; + go-dbus-factory = callPackage ./go-package/go-dbus-factory { }; + deepin-pw-check = callPackage ./go-package/deepin-pw-check { }; + + #### TOOLS + deepin-gettext-tools = callPackage ./tools/deepin-gettext-tools { }; + #### ARTWORK dde-account-faces = callPackage ./artwork/dde-account-faces { }; deepin-icon-theme = callPackage ./artwork/deepin-icon-theme { }; diff --git a/pkgs/desktops/deepin/go-package/deepin-pw-check/default.nix b/pkgs/desktops/deepin/go-package/deepin-pw-check/default.nix new file mode 100644 index 000000000000..040c561d352e --- /dev/null +++ b/pkgs/desktops/deepin/go-package/deepin-pw-check/default.nix @@ -0,0 +1,84 @@ +{ stdenv +, lib +, fetchFromGitHub +, buildGoPackage +, pkg-config +, deepin-gettext-tools +, go-dbus-factory +, go-gir-generator +, go-lib +, gtk3 +, glib +, libxcrypt +, gettext +, iniparser +, cracklib +, linux-pam +}: + +buildGoPackage rec { + pname = "deepin-pw-check"; + version = "5.1.18"; + + goPackagePath = "github.com/linuxdeepin/deepin-pw-check"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "sha256-v1Z4ArkrejjOCO1vD+BhfEl9pTfuvKgLM6Ont0IUCQk="; + }; + + goDeps = ./deps.nix; + + nativeBuildInputs = [ + pkg-config + gettext + deepin-gettext-tools + ]; + + buildInputs = [ + go-dbus-factory + go-gir-generator + go-lib + glib + libxcrypt + gtk3 + iniparser + cracklib + linux-pam + ]; + + postPatch = '' + sed -i 's|iniparser/||' */*.c + substituteInPlace misc/pkgconfig/libdeepin_pw_check.pc \ + --replace "/usr" "$out" + substituteInPlace misc/system-services/com.deepin.daemon.PasswdConf.service \ + --replace "/usr/lib/deepin-pw-check/deepin-pw-check" "$out/lib/deepin-pw-check/deepin-pw-check" + ''; + + buildPhase = '' + runHook preBuild + GOPATH="$GOPATH:${go-dbus-factory}/share/gocode" + GOPATH="$GOPATH:${go-gir-generator}/share/gocode" + GOPATH="$GOPATH:${go-lib}/share/gocode" + make -C go/src/${goPackagePath} + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + make install PREFIX="$out" PKG_FILE_DIR=$out/lib/pkg-config PAM_MODULE_DIR=$out/etc/pam.d -C go/src/${goPackagePath} + # https://github.com/linuxdeepin/deepin-pw-check/blob/d5597482678a489077a506a87f06d2b6c4e7e4ed/debian/rules#L21 + ln -s $out/lib/libdeepin_pw_check.so $out/lib/libdeepin_pw_check.so.1 + runHook postInstall + ''; + + meta = with lib; { + description = "Tool to verify the validity of the password"; + homepage = "https://github.com/linuxdeepin/deepin-pw-check"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = teams.deepin.members; + }; +} diff --git a/pkgs/desktops/deepin/go-package/deepin-pw-check/deps.nix b/pkgs/desktops/deepin/go-package/deepin-pw-check/deps.nix new file mode 100644 index 000000000000..509940b6d570 --- /dev/null +++ b/pkgs/desktops/deepin/go-package/deepin-pw-check/deps.nix @@ -0,0 +1,75 @@ +[ + { + goPackagePath = "github.com/fsnotify/fsnotify"; + fetch = { + type = "git"; + url = "https://github.com/fsnotify/fsnotify"; + rev = "v1.5.1"; + sha256 = "sha256-B8kZ8yiWgallT7R2j1kSRJcJkSGFVf9ise+TpXa+7XY="; + }; + } + { + goPackagePath = "github.com/godbus/dbus"; + fetch = { + type = "git"; + url = "https://github.com/godbus/dbus"; + rev = "v5.1.0"; + sha256 = "sha256-JSPtmkGEStBEVrKGszeLCb7P38SzQKgMiDC3eDppXs0="; + }; + } + { + goPackagePath = "github.com/stretchr/testify"; + fetch = { + type = "git"; + url = "https://github.com/stretchr/testify"; + rev = "v1.7.1"; + sha256 = "sha256-disUVIHiIDSj/go3APtJH8awSl8QwKRRFLKI7LRnl0w="; + }; + } + { + goPackagePath = "golang.org/x/sys"; + fetch = { + type = "git"; + url = "https://github.com/golang/sys"; + rev = "289d7a0edf712062d9f1484b07bdf2383f48802f"; + sha256 = "sha256-AzS/J3OocI7mA0xsIfQzyskNKVija7F2yvuts+EFJBs="; + }; + } + { + goPackagePath = "gopkg.in/yaml.v3"; + fetch = { + type = "git"; + url = "https://github.com/go-yaml/yaml"; + rev = "496545a6307b2a7d7a710fd516e5e16e8ab62dbc"; + sha256 = "sha256-j8yDji+vqsitpRZirpb4w/Em8nstgf28wpwkcrOlxBk="; + }; + } + { + goPackagePath = "github.com/davecgh/go-spew"; + fetch = { + type = "git"; + url = "https://github.com/davecgh/go-spew"; + rev = "v1.1.1"; + sha256 = "sha256-nhzSUrE1fCkN0+RL04N4h8jWmRFPPPWbCuDc7Ss0akI="; + }; + } + { + goPackagePath = "github.com/stretchr/objx"; + fetch = { + type = "git"; + url = "https://github.com/stretchr/objx"; + rev = "v0.3.0"; + sha256 = "sha256-T753/EiD5Cpk6H2JFhd+s1gFvpNptG2XlEHxZF6dQaw="; + }; + } + { + goPackagePath = "github.com/pmezard/go-difflib"; + fetch = { + type = "git"; + url = "https://github.com/pmezard/go-difflib"; + rev = "5d4384ee4fb2527b0a1256a821ebfc92f91efefc"; + sha256 = "sha256-XA4Oj1gdmdV/F/+8kMI+DBxKPthZ768hbKsO3d9Gx90="; + }; + } +] + diff --git a/pkgs/desktops/deepin/go-package/go-dbus-factory/default.nix b/pkgs/desktops/deepin/go-package/go-dbus-factory/default.nix new file mode 100644 index 000000000000..4c12dce491d7 --- /dev/null +++ b/pkgs/desktops/deepin/go-package/go-dbus-factory/default.nix @@ -0,0 +1,26 @@ +{ stdenv +, lib +, fetchFromGitHub +}: + +stdenv.mkDerivation rec { + pname = "go-dbus-factory"; + version = "1.10.23"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "sha256-6u9Bpoa80j/K1MipncfM378/qmSSMZAlx88jE4hHYBk="; + }; + + makeFlags = [ "PREFIX=${placeholder "out"}" ]; + + meta = with lib; { + description = "Generate go binding of D-Bus interfaces"; + homepage = "https://github.com/linuxdeepin/go-dbus-factory"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = teams.deepin.members; + }; +} diff --git a/pkgs/desktops/deepin/go-package/go-gir-generator/default.nix b/pkgs/desktops/deepin/go-package/go-gir-generator/default.nix new file mode 100644 index 000000000000..7f377d2a6e74 --- /dev/null +++ b/pkgs/desktops/deepin/go-package/go-gir-generator/default.nix @@ -0,0 +1,43 @@ +{ stdenv +, lib +, fetchFromGitHub +, go +, pkg-config +, libgudev +, gobject-introspection +}: + +stdenv.mkDerivation rec { + pname = "go-gir-generator"; + version = "2.2.0"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "sha256-lFseui/M3+TyfYoa+rnS0cGhN6gdLrgpzgOwqzYcyPk="; + }; + + nativeBuildInputs = [ + pkg-config + go + ]; + + buildInputs = [ + libgudev + gobject-introspection + ]; + + makeFlags = [ + "PREFIX=${placeholder "out"}" + "GOCACHE=$(TMPDIR)/go-cache" + ]; + + meta = with lib; { + description = "Generate static golang bindings for GObject"; + homepage = "https://github.com/linuxdeepin/go-gir-generator"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = teams.deepin.members; + }; +} diff --git a/pkgs/desktops/deepin/go-package/go-lib/default.nix b/pkgs/desktops/deepin/go-package/go-lib/default.nix new file mode 100644 index 000000000000..3a6a8f03dfb5 --- /dev/null +++ b/pkgs/desktops/deepin/go-package/go-lib/default.nix @@ -0,0 +1,45 @@ +{ stdenv +, lib +, fetchFromGitHub +, fetchpatch +, replaceAll +, runtimeShell +}: + +stdenv.mkDerivation rec { + pname = "go-lib"; + version = "5.8.27"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "sha256-ZV5zWu7UvNKVcVo79/iKMhF4H09rGyDCvEL61H05lZc="; + }; + + patches = [ + (fetchpatch { + name = "fix_IsDir_for_symlink"; + url = "https://github.com/linuxdeepin/go-lib/commit/79239904679dc70a11e1ac8e65670afcfdd7c122.patch"; + sha256 = "sha256-RsN9hK26i/W6P/+e1l1spCLdlgIEWTehhIW6POBOvW4="; + }) + ]; + + postPatch = replaceAll "/bin/sh" "${runtimeShell}"; + + installPhase = '' + runHook preInstall + mkdir -p $out/share/gocode/src/github.com/linuxdeepin/go-lib + cp -a * $out/share/gocode/src/github.com/linuxdeepin/go-lib + rm -r $out/share/gocode/src/github.com/linuxdeepin/go-lib/debian + runHook postInstall + ''; + + meta = with lib; { + description = "Library containing many useful go routines for things such as glib, gettext, archive, graphic, etc"; + homepage = "https://github.com/linuxdeepin/go-lib"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = teams.deepin.members; + }; +} diff --git a/pkgs/desktops/deepin/tools/deepin-gettext-tools/default.nix b/pkgs/desktops/deepin/tools/deepin-gettext-tools/default.nix new file mode 100644 index 000000000000..d219e6d73b16 --- /dev/null +++ b/pkgs/desktops/deepin/tools/deepin-gettext-tools/default.nix @@ -0,0 +1,50 @@ +{ stdenv +, lib +, fetchFromGitHub +, gettext +, python3Packages +, perlPackages +}: + +stdenv.mkDerivation rec { + pname = "deepin-gettext-tools"; + version = "1.0.10"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "sha256-5Dd2QU6JYwuktusssNDfA7IHa6HbFcWo9sZf5PS7NtI="; + }; + + postPatch = '' + substituteInPlace src/generate_mo.py --replace "sudo cp" "cp" + ''; + + nativeBuildInputs = [ python3Packages.wrapPython ]; + + buildInputs = [ + gettext + perlPackages.perl + perlPackages.ConfigTiny + perlPackages.XMLLibXML + ]; + + makeFlags = [ + "PREFIX=${placeholder "out"}" + ]; + + postFixup = '' + wrapPythonPrograms + wrapPythonProgramsIn "$out/lib/${pname}" + wrapProgram $out/bin/deepin-desktop-ts-convert --set PERL5LIB $PERL5LIB + ''; + + meta = with lib; { + description = "Translation file processing utils for DDE development"; + homepage = "https://github.com/linuxdeepin/deepin-gettext-tools"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = teams.deepin.members; + }; +} diff --git a/pkgs/development/compilers/graalvm/community-edition/mkGraal.nix b/pkgs/development/compilers/graalvm/community-edition/mkGraal.nix index bd2d4413ec52..023fc81474ef 100644 --- a/pkgs/development/compilers/graalvm/community-edition/mkGraal.nix +++ b/pkgs/development/compilers/graalvm/community-edition/mkGraal.nix @@ -28,10 +28,6 @@ # Path for the sources file that will be used # See `update.nix` file for a description on how this file works , sourcesPath ? ./. + "/graalvm${javaVersion}-ce-sources.json" - # Use musl instead of glibc to allow true static builds in GraalVM's - # Native Image (i.e.: `--static --libc=musl`). This will cause glibc static - # builds to fail, so it should be used with care -, useMusl ? false }: { stdenv @@ -66,6 +62,12 @@ , gtk3 , jq , writeShellScript + # Use musl instead of glibc to allow true static builds in GraalVM's + # Native Image (i.e.: `--static --libc=musl`). This will cause glibc static + # builds to fail, so it should be used with care +, useMusl ? false + # Extra libraries to be included in native-image using '-H:CLibraryPath' flag +, extraCLibs ? [ ] }: assert useMusl -> stdenv.isLinux; @@ -76,6 +78,11 @@ let name = "graalvm${javaVersion}-ce"; sources = builtins.fromJSON (builtins.readFile sourcesPath); + cLibs = [ glibc zlib.static ] + ++ lib.optionals (!useMusl) [ glibc.static ] + ++ lib.optionals useMusl [ musl ] + ++ extraCLibs; + runtimeLibraryPath = lib.makeLibraryPath ([ cups ] ++ lib.optionals gtkSupport [ cairo glib gtk3 ]); @@ -118,6 +125,8 @@ let ++ lib.optional stdenv.hostPlatform.isLinux autoPatchelfHook; unpackPhase = '' + runHook preUnpack + unpack_jar() { jar=$1 unzip -q -o $jar -d $out @@ -164,13 +173,13 @@ let for jar in "''${arr[@]:1}"; do unpack_jar "$jar" done + + runHook postUnpack ''; - outputs = [ "out" "lib" ]; - installPhase = '' - # ensure that $lib/lib exists to avoid breaking builds - mkdir -p "$lib/lib" + runHook preInstall + # jni.h expects jni_md.h to be in the header search path. ln -s $out/include/linux/*_md.h $out/include/ @@ -181,26 +190,15 @@ let if [ -z "\''${JAVA_HOME-}" ]; then export JAVA_HOME=$out; fi EOF ${ - lib.optionalString (stdenv.isLinux) '' - # provide libraries needed for static compilation - ${ - if useMusl then - ''for f in "${musl.stdenv.cc.cc}/lib/"* "${musl}/lib/"* "${zlib.static}/lib/"*; do'' - else - ''for f in "${glibc}/lib/"* "${glibc.static}/lib/"* "${zlib.static}/lib/"*; do'' - } - ln -s "$f" "$out/lib/svm/clibraries/${platform.arch}/$(basename $f)" - done - - # add those libraries to $lib output too, so we can use them with - # `native-image -H:CLibraryPath=''${lib.getLib graalvmXX-ce}/lib ...` and reduce - # closure size by not depending on GraalVM $out (that is much bigger) - # we always use glibc here, since musl is only supported for static compilation - for f in "${glibc}/lib/"*; do - ln -s "$f" "$lib/lib/$(basename $f)" - done + # Wrap native-image binary to pass -H:CLibraryPath flag and find glibc + lib.optionalString (withNativeImageSvm && stdenv.isLinux) '' + wrapProgram $out/bin/native-image \ + ${lib.concatStringsSep " " + (map (l: "--add-flags '-H:CLibraryPath=${l}/lib'") cLibs)} '' } + + runHook postInstall ''; dontStrip = true; @@ -240,6 +238,8 @@ let doInstallCheck = true; installCheckPhase = '' + runHook preInstallCheck + echo ${ lib.escapeShellArg '' public class HelloWorld { @@ -252,16 +252,25 @@ let $out/bin/javac HelloWorld.java # run on JVM with Graal Compiler + echo "Testing GraalVM" $out/bin/java -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler HelloWorld | fgrep 'Hello World' + ${ + lib.optionalString withNativeImageSvm '' + echo "Ahead-Of-Time compilation" + $out/bin/native-image -H:-CheckToolchain -H:+ReportExceptionStackTraces HelloWorld + ./helloworld | fgrep 'Hello World' + '' + } + ${# --static flag doesn't work for darwin lib.optionalString (withNativeImageSvm && stdenv.isLinux && !useMusl) '' - echo "Ahead-Of-Time compilation" - $out/bin/native-image -H:-CheckToolchain -H:+ReportExceptionStackTraces --no-server HelloWorld + echo "Ahead-Of-Time compilation with -H:+StaticExecutableWithDynamicLibC" + $out/bin/native-image -H:+StaticExecutableWithDynamicLibC HelloWorld ./helloworld | fgrep 'Hello World' echo "Ahead-Of-Time compilation with --static" - $out/bin/native-image --no-server --static HelloWorld + $out/bin/native-image --static HelloWorld ./helloworld | fgrep 'Hello World' '' } @@ -269,7 +278,7 @@ let ${# --static flag doesn't work for darwin lib.optionalString (withNativeImageSvm && stdenv.isLinux && useMusl) '' echo "Ahead-Of-Time compilation with --static and --libc=musl" - $out/bin/native-image --no-server --libc=musl --static HelloWorld + $out/bin/native-image --libc=musl --static HelloWorld ./helloworld | fgrep 'Hello World' '' } @@ -302,6 +311,8 @@ let echo '1 + 1' | $out/bin/irb '' } + + runHook postInstallCheck ''; passthru = { diff --git a/pkgs/development/compilers/kotlin/default.nix b/pkgs/development/compilers/kotlin/default.nix index cb78eb5c6b34..a07e724cbd7a 100644 --- a/pkgs/development/compilers/kotlin/default.nix +++ b/pkgs/development/compilers/kotlin/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "kotlin"; - version = "1.8.0"; + version = "1.8.10"; src = fetchurl { url = "https://github.com/JetBrains/kotlin/releases/download/v${version}/kotlin-compiler-${version}.zip"; - hash = "sha256-C7lBn6yYMqVqOhnK0oL48tbxI30tRn3I3+m9SipDxC4="; + hash = "sha256-TD+nvBu57zBYojGdi8w7cZYHn4jpL9zY0wSkb0trV4c="; }; propagatedBuildInputs = [ jre ] ; diff --git a/pkgs/development/interpreters/rakudo/zef.nix b/pkgs/development/interpreters/rakudo/zef.nix index cfdeac264cbd..efd08f7d85b7 100644 --- a/pkgs/development/interpreters/rakudo/zef.nix +++ b/pkgs/development/interpreters/rakudo/zef.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "zef"; - version = "0.14.6"; + version = "0.15.0"; src = fetchFromGitHub { owner = "ugexe"; repo = "zef"; rev = "v${version}"; - sha256 = "sha256-3FRzqHbzNhmYg3wRvajMzTWB7lOlgrxwQvvnB3fggGM="; + sha256 = "sha256-MJKG/8b8l2RqWec5JoWcYLYrEKI9zrhJMyLqVcvAY+g="; }; nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/development/libraries/SDL2_image/default.nix b/pkgs/development/libraries/SDL2_image/default.nix index 4ff02ffb7b2e..a8824904aea8 100644 --- a/pkgs/development/libraries/SDL2_image/default.nix +++ b/pkgs/development/libraries/SDL2_image/default.nix @@ -1,15 +1,20 @@ { lib, stdenv, fetchurl , pkg-config , SDL2, libpng, libjpeg, libtiff, giflib, libwebp, libXpm, zlib, Foundation +, version ? "2.6.3" +, hash ? "sha256-kxyb5b8dfI+um33BV4KLfu6HTiPH8ktEun7/a0g2MSw=" }: -stdenv.mkDerivation rec { +let pname = "SDL2_image"; - version = "2.0.5"; +in + +stdenv.mkDerivation { + inherit pname version; src = fetchurl { url = "https://www.libsdl.org/projects/SDL_image/release/${pname}-${version}.tar.gz"; - sha256 = "1l0864kas9cwpp2d32yxl81g98lx40dhbdp03dz7sbv84vhgdmdx"; + inherit hash; }; nativeBuildInputs = [ pkg-config ]; diff --git a/pkgs/development/libraries/audio/zita-alsa-pcmi/default.nix b/pkgs/development/libraries/audio/zita-alsa-pcmi/default.nix index 3d5d973eec55..fc5162b34e8d 100644 --- a/pkgs/development/libraries/audio/zita-alsa-pcmi/default.nix +++ b/pkgs/development/libraries/audio/zita-alsa-pcmi/default.nix @@ -2,10 +2,10 @@ stdenv.mkDerivation rec { pname = "zita-alsa-pcmi"; - version = "0.5.1"; + version = "0.6.1"; src = fetchurl { url = "http://kokkinizita.linuxaudio.org/linuxaudio/downloads/${pname}-${version}.tar.bz2"; - sha256 = "sha256-zyAKaO22She1e/+zPjiwSHeCctGLVYnT0vWgHODzSwc="; + sha256 = "sha256-iil6zj16R0Ex7T+jIQacExM3eFtWojfW8WjIXueW1Ww="; }; buildInputs = [ alsa-lib ]; diff --git a/pkgs/development/libraries/caf/default.nix b/pkgs/development/libraries/caf/default.nix index 8640fb6b5c9c..f05f55cd8c92 100644 --- a/pkgs/development/libraries/caf/default.nix +++ b/pkgs/development/libraries/caf/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "actor-framework"; - version = "0.18.5"; + version = "0.18.7"; src = fetchFromGitHub { owner = "actor-framework"; repo = "actor-framework"; rev = version; - sha256 = "04b4kjisb5wzq6pilh8xzbxn7qcjgppl8k65hfv0zi0ja8fyp1xk"; + hash = "sha256-y1RE6AnyOrUN/z4md/xjlVwlIcL97ZEcKEOf8ZsCf+U="; }; nativeBuildInputs = [ cmake ]; diff --git a/pkgs/development/libraries/folly/default.nix b/pkgs/development/libraries/folly/default.nix index 323a9a2f8b46..78d280b99133 100644 --- a/pkgs/development/libraries/folly/default.nix +++ b/pkgs/development/libraries/folly/default.nix @@ -22,13 +22,13 @@ stdenv.mkDerivation rec { pname = "folly"; - version = "2022.11.28.00"; + version = "2023.01.30.00"; src = fetchFromGitHub { owner = "facebook"; repo = "folly"; rev = "v${version}"; - sha256 = "sha256-TI3uMlkssKtTvxqj9Et12aAjbHoV9FVBvrZr7oCFlIo="; + sha256 = "sha256-p5IAbXPUrGtJotwabpEShNsUZNeF6ncHbDXaNabdaaY="; }; nativeBuildInputs = [ diff --git a/pkgs/development/libraries/kde-frameworks/kimageformats.nix b/pkgs/development/libraries/kde-frameworks/kimageformats.nix index c221f3489112..beec3e13cf71 100644 --- a/pkgs/development/libraries/kde-frameworks/kimageformats.nix +++ b/pkgs/development/libraries/kde-frameworks/kimageformats.nix @@ -1,7 +1,7 @@ { mkDerivation, lib, extra-cmake-modules, - ilmbase, karchive, openexr, libavif, libheif, libjxl, qtbase + ilmbase, karchive, openexr, libavif, libheif, libjxl, libraw, qtbase }: let inherit (lib) getDev; in @@ -10,7 +10,7 @@ mkDerivation { pname = "kimageformats"; nativeBuildInputs = [ extra-cmake-modules ]; - buildInputs = [ karchive openexr libavif libheif libjxl qtbase ]; + buildInputs = [ karchive openexr libavif libheif libjxl libraw qtbase ]; outputs = [ "out" ]; # plugins only CXXFLAGS = "-I${getDev ilmbase}/include/OpenEXR"; cmakeFlags = [ diff --git a/pkgs/development/libraries/libfyaml/default.nix b/pkgs/development/libraries/libfyaml/default.nix index 9384a7c97603..6fe2f398b25e 100644 --- a/pkgs/development/libraries/libfyaml/default.nix +++ b/pkgs/development/libraries/libfyaml/default.nix @@ -2,17 +2,19 @@ stdenv.mkDerivation rec { pname = "libfyaml"; - version = "0.7.12"; + version = "0.8"; src = fetchFromGitHub { owner = "pantoniou"; repo = pname; rev = "v${version}"; - sha256 = "sha256-gmVjiwf8PsDYRt8jmXNrd+hJSL099hbLjq8Z0c1u2HE="; + hash = "sha256-b/jRKe23NIVSydoczI+Ax2VjBJLfAEwF8SW61vIDTwA="; }; nativeBuildInputs = [ autoreconfHook pkg-config ]; + outputs = [ "bin" "dev" "out" "man" ]; + doCheck = true; preCheck = '' diff --git a/pkgs/development/libraries/libpg_query/default.nix b/pkgs/development/libraries/libpg_query/default.nix index 254e5ca51e99..95d615c5d24d 100644 --- a/pkgs/development/libraries/libpg_query/default.nix +++ b/pkgs/development/libraries/libpg_query/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "libpg_query"; - version = "15-4.1.0"; + version = "15-4.2.0"; src = fetchFromGitHub { owner = "pganalyze"; repo = "libpg_query"; rev = version; - hash = "sha256-uZdszDE0UJVeegU1bi0ISYooC4ztNv7W4UQ2gWIjrH8="; + hash = "sha256-2fPdvsfuXKaRwkPjsPsBBfP0+yUgYXEUzQNFZfhyvGk="; }; nativeBuildInputs = [ which ]; diff --git a/pkgs/development/libraries/librime/default.nix b/pkgs/development/libraries/librime/default.nix index 0f0a311cdfac..a1daa89ef787 100644 --- a/pkgs/development/libraries/librime/default.nix +++ b/pkgs/development/libraries/librime/default.nix @@ -10,13 +10,13 @@ let in stdenv.mkDerivation rec { pname = "librime"; - version = "1.8.4"; + version = "1.8.5"; src = fetchFromGitHub { owner = "rime"; repo = pname; rev = version; - sha256 = "sha256-FcEthx5uaTROmW+wrWdpRoVT8o5Ok0HgkllMut/FEyM="; + sha256 = "sha256-FkkZIxSuqlFFOjABBpnE5ax2Vdo9tzP0prM7ATDIIdk="; }; nativeBuildInputs = [ cmake pkg-config ]; diff --git a/pkgs/development/libraries/mvapich/default.nix b/pkgs/development/libraries/mvapich/default.nix index 0f358c279628..987f4022f511 100644 --- a/pkgs/development/libraries/mvapich/default.nix +++ b/pkgs/development/libraries/mvapich/default.nix @@ -14,11 +14,11 @@ assert builtins.elem network [ "ethernet" "infiniband" "omnipath" ]; stdenv.mkDerivation rec { pname = "mvapich"; - version = "2.3.6"; + version = "2.3.7"; src = fetchurl { url = "http://mvapich.cse.ohio-state.edu/download/mvapich/mv2/mvapich2-${version}.tar.gz"; - sha256 = "0jd28vy9ivl3rcpkxmhw73b6krzm0pd9jps8asw92wa00lm2z9mk"; + sha256 = "sha256-w5pEkvS+UN9hAHhXSLoolOI85FCpQSgYHVFtpXV3Ua4="; }; nativeBuildInputs = [ pkg-config bison makeWrapper gfortran ]; diff --git a/pkgs/development/libraries/nghttp3/default.nix b/pkgs/development/libraries/nghttp3/default.nix index af83fb29c01e..2810114cb6ba 100644 --- a/pkgs/development/libraries/nghttp3/default.nix +++ b/pkgs/development/libraries/nghttp3/default.nix @@ -1,6 +1,7 @@ { lib, stdenv, fetchFromGitHub , autoreconfHook, pkg-config, file , cunit, ncurses +, curlHTTP3 }: stdenv.mkDerivation rec { @@ -26,6 +27,10 @@ stdenv.mkDerivation rec { doCheck = true; enableParallelBuilding = true; + passthru.tests = { + inherit curlHTTP3; + }; + meta = with lib; { homepage = "https://github.com/ngtcp2/nghttp3"; description = "nghttp3 is an implementation of HTTP/3 mapping over QUIC and QPACK in C."; diff --git a/pkgs/development/libraries/ngtcp2/default.nix b/pkgs/development/libraries/ngtcp2/default.nix index d61a5d2fd9a7..3ea84895eb9b 100644 --- a/pkgs/development/libraries/ngtcp2/default.nix +++ b/pkgs/development/libraries/ngtcp2/default.nix @@ -3,6 +3,7 @@ , libev, nghttp3, quictls , cunit, ncurses , withJemalloc ? false, jemalloc +, curlHTTP3 }: stdenv.mkDerivation rec { @@ -29,6 +30,10 @@ stdenv.mkDerivation rec { doCheck = true; enableParallelBuilding = true; + passthru.tests = { + inherit curlHTTP3; + }; + meta = with lib; { homepage = "https://github.com/ngtcp2/ngtcp2"; description = "ngtcp2 project is an effort to implement QUIC protocol which is now being discussed in IETF QUICWG for its standardization."; diff --git a/pkgs/development/libraries/science/chemistry/harminv/default.nix b/pkgs/development/libraries/science/chemistry/harminv/default.nix new file mode 100644 index 000000000000..54c0d03979ab --- /dev/null +++ b/pkgs/development/libraries/science/chemistry/harminv/default.nix @@ -0,0 +1,42 @@ +{ lib +, stdenv +, fetchFromGitHub +, autoreconfHook +, gfortran +, blas +, lapack +}: + +assert !blas.isILP64; +assert !lapack.isILP64; + +stdenv.mkDerivation rec { + pname = "harminv"; + version = "1.4.2"; + + src = fetchFromGitHub { + owner = "NanoComp"; + repo = pname; + rev = "v${version}"; + hash = "sha256-EXEt7l69etcBdDdEDlD1ODOdhTBZCVjgY1jhRUDd/W0="; + }; + + # File is missing in the git checkout but required by autotools + postPatch = '' + touch ChangeLog + ''; + + nativeBuildInputs = [ autoreconfHook gfortran ]; + + buildInputs = [ blas lapack ]; + + configureFlags = [ "--enable-shared" ]; + + meta = with lib; { + description = "Harmonic inversion algorithm of Mandelshtam: decompose signal into sum of decaying sinusoids"; + homepage = "https://github.com/NanoComp/harminv"; + license = with licenses; [ gpl2Only ]; + maintainers = with maintainers; [ sheepforce markuskowa ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/development/libraries/science/chemistry/libGDSII/default.nix b/pkgs/development/libraries/science/chemistry/libGDSII/default.nix new file mode 100644 index 000000000000..c3257bad3e26 --- /dev/null +++ b/pkgs/development/libraries/science/chemistry/libGDSII/default.nix @@ -0,0 +1,32 @@ +{ lib +, stdenv +, fetchFromGitHub +, autoreconfHook +}: + +stdenv.mkDerivation rec { + pname = "libGDSII"; + version = "0.21"; + + src = fetchFromGitHub { + owner = "HomerReid"; + repo = pname; + rev = "v${version}"; + hash = "sha256-EXEt7l69etcBdDdEDlD1ODOdhTBZCVjgY1jhRUDd/W0="; + }; + + # File is missing in the repo but automake requires it + postPatch = '' + touch ChangeLog + ''; + + nativeBuildInputs = [ autoreconfHook ]; + + meta = with lib; { + description = "Library and command-line utility for reading GDSII geometry files"; + homepage = "https://github.com/HomerReid/libGDSII"; + license = [ licenses.gpl2Only ]; + maintainers = with maintainers; [ sheepforce markuskowa ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/development/python-modules/aesedb/default.nix b/pkgs/development/python-modules/aesedb/default.nix index cb9db9a886fa..982525e4bd43 100644 --- a/pkgs/development/python-modules/aesedb/default.nix +++ b/pkgs/development/python-modules/aesedb/default.nix @@ -11,14 +11,14 @@ buildPythonPackage rec { pname = "aesedb"; - version = "0.1.0"; + version = "0.1.1"; format = "setuptools"; disabled = pythonOlder "3.7"; src = fetchPypi { inherit pname version; - hash = "sha256-TetXhDrWG6MECm/nhsZDUwcOJwP5drFO+YLarGC2pak="; + hash = "sha256-pnbzPVXr3qgBH7t5wNR+jbTdQGMdnLpV+xfgQjdc+7A="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/ailment/default.nix b/pkgs/development/python-modules/ailment/default.nix index 2e878b014cc2..81f73d324b1d 100644 --- a/pkgs/development/python-modules/ailment/default.nix +++ b/pkgs/development/python-modules/ailment/default.nix @@ -8,7 +8,7 @@ buildPythonPackage rec { pname = "ailment"; - version = "9.2.36"; + version = "9.2.37"; format = "pyproject"; disabled = pythonOlder "3.8"; @@ -17,7 +17,7 @@ buildPythonPackage rec { owner = "angr"; repo = pname; rev = "v${version}"; - hash = "sha256-PEX2SanglMqjtJHuH+gA5dnikh7qqLFiXbmrcIzs1+A="; + hash = "sha256-MFQiLOCqEAKzST7voMIQH0TYGuwICSVBcQZwUkk9S1Q="; }; nativeBuildInputs = [ diff --git a/pkgs/development/python-modules/aiohomekit/default.nix b/pkgs/development/python-modules/aiohomekit/default.nix index e19f613e301a..e9b27ea7a83e 100644 --- a/pkgs/development/python-modules/aiohomekit/default.nix +++ b/pkgs/development/python-modules/aiohomekit/default.nix @@ -18,7 +18,7 @@ buildPythonPackage rec { pname = "aiohomekit"; - version = "2.4.6"; + version = "2.5.0"; format = "pyproject"; disabled = pythonOlder "3.9"; @@ -27,7 +27,7 @@ buildPythonPackage rec { owner = "Jc2k"; repo = pname; rev = "refs/tags/${version}"; - hash = "sha256-QCPZaxVCQSckZ7qjV9wF7YqgTOFPbRy4xOQVDvReav4="; + hash = "sha256-uFmQLeGPnFDABA4Uu1sL/2uUJnL+feclpGyJyISJx2E="; }; nativeBuildInputs = [ diff --git a/pkgs/development/python-modules/angr/default.nix b/pkgs/development/python-modules/angr/default.nix index 4abcad0e7c9b..a164cd284c57 100644 --- a/pkgs/development/python-modules/angr/default.nix +++ b/pkgs/development/python-modules/angr/default.nix @@ -31,7 +31,7 @@ buildPythonPackage rec { pname = "angr"; - version = "9.2.36"; + version = "9.2.37"; format = "pyproject"; disabled = pythonOlder "3.8"; @@ -40,7 +40,7 @@ buildPythonPackage rec { owner = pname; repo = pname; rev = "v${version}"; - hash = "sha256-KVIrhzd3EoDIVImshfjZrBAiNkCtlFAd6Ox9ATsvPTY="; + hash = "sha256-sl3GzNMN90ez1Zks43B2How7QTaaJZbxOxK2hl/UzdQ="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/archinfo/default.nix b/pkgs/development/python-modules/archinfo/default.nix index 22a460cc2741..7f7aff682bed 100644 --- a/pkgs/development/python-modules/archinfo/default.nix +++ b/pkgs/development/python-modules/archinfo/default.nix @@ -8,7 +8,7 @@ buildPythonPackage rec { pname = "archinfo"; - version = "9.2.36"; + version = "9.2.37"; format = "pyproject"; disabled = pythonOlder "3.8"; @@ -17,7 +17,7 @@ buildPythonPackage rec { owner = "angr"; repo = pname; rev = "v${version}"; - hash = "sha256-anZsvDIH1AWaFUG5UTuyQiOKeoUB/+MSbu5pjPZJxag="; + hash = "sha256-WGc6FmrS0aVmiY5s8fUVHCT6cqcmj52H6FD2TR1HyK0="; }; nativeBuildInputs = [ diff --git a/pkgs/development/python-modules/azure-mgmt-datalake-store/default.nix b/pkgs/development/python-modules/azure-mgmt-datalake-store/default.nix index b2b96ec2994e..18665f4dbb6e 100644 --- a/pkgs/development/python-modules/azure-mgmt-datalake-store/default.nix +++ b/pkgs/development/python-modules/azure-mgmt-datalake-store/default.nix @@ -9,12 +9,12 @@ buildPythonPackage rec { pname = "azure-mgmt-datalake-store"; - version = "0.5.0"; + version = "1.0.0"; src = fetchPypi { inherit pname version; extension = "zip"; - sha256 = "sha256-k3bTVJVmHRn4rMVgT2ewvFlJOxg1u8SA+aGVL5ABekw="; + sha256 = "sha256-GrmVK97M+iojevPLVTuLmfQRLxvrHtr9DRHymJvLYHE="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/browser-cookie3/default.nix b/pkgs/development/python-modules/browser-cookie3/default.nix index cd596cecbb9f..52ef0cd8ec20 100644 --- a/pkgs/development/python-modules/browser-cookie3/default.nix +++ b/pkgs/development/python-modules/browser-cookie3/default.nix @@ -12,14 +12,14 @@ buildPythonPackage rec { pname = "browser-cookie3"; - version = "0.16.5"; + version = "0.17.0"; format = "setuptools"; disabled = pythonOlder "3.7"; src = fetchPypi { inherit pname version; - hash = "sha256-i2Ib7OGnoimiZ2R/vGe6phPhA8lEP0BJ/gP1q9RVeiU="; + hash = "sha256-fyyZ7pkNlD6MH1+SRUYjU0mXMUsZJ3qhOqJrcmJ/hgc="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/claripy/default.nix b/pkgs/development/python-modules/claripy/default.nix index a8811d7f37ac..05ff5762bb35 100644 --- a/pkgs/development/python-modules/claripy/default.nix +++ b/pkgs/development/python-modules/claripy/default.nix @@ -13,7 +13,7 @@ buildPythonPackage rec { pname = "claripy"; - version = "9.2.36"; + version = "9.2.37"; format = "pyproject"; disabled = pythonOlder "3.8"; @@ -22,7 +22,7 @@ buildPythonPackage rec { owner = "angr"; repo = pname; rev = "refs/tags/v${version}"; - hash = "sha256-gF8T1ZTvTjyt+kEOxI3ryDJOZv4go54VTxSGEdUyGt4="; + hash = "sha256-8kABsLp3Nrzjn7staiNfU6HdQTu1x6DNQzilMceqKVY="; }; nativeBuildInputs = [ diff --git a/pkgs/development/python-modules/cle/default.nix b/pkgs/development/python-modules/cle/default.nix index e1f022c1a463..8ed14ba28cc3 100644 --- a/pkgs/development/python-modules/cle/default.nix +++ b/pkgs/development/python-modules/cle/default.nix @@ -16,7 +16,7 @@ let # The binaries are following the argr projects release cycle - version = "9.2.36"; + version = "9.2.37"; # Binary files from https://github.com/angr/binaries (only used for testing and only here) binaries = fetchFromGitHub { @@ -38,7 +38,7 @@ buildPythonPackage rec { owner = "angr"; repo = pname; rev = "v${version}"; - hash = "sha256-XqoBFV87m/uz0proGDtbaewsoY8vsA6ToGwdv7xvO9Y="; + hash = "sha256-vgH8UAR8B4l29RH0dwMlGVjOHgdcOTfLMHPiKN9Z36s="; }; nativeBuildInputs = [ diff --git a/pkgs/development/python-modules/deep-translator/default.nix b/pkgs/development/python-modules/deep-translator/default.nix index e68cda8c0e25..eec2c9fd895c 100644 --- a/pkgs/development/python-modules/deep-translator/default.nix +++ b/pkgs/development/python-modules/deep-translator/default.nix @@ -1,12 +1,22 @@ -{ lib, buildPythonPackage, fetchPypi, beautifulsoup4, requests, click }: +{ lib +, buildPythonPackage +, fetchPypi +, beautifulsoup4 +, requests +, click +, pythonOlder +}: buildPythonPackage rec { pname = "deep-translator"; - version = "1.9.2"; + version = "1.9.3"; + format = "setuptools"; + + disabled = pythonOlder "3.7"; src = fetchPypi { inherit pname version; - sha256 = "sha256-iHK1A44SZqJ5N+D2ets76xuU0mryGT7TehM4wryB/AY="; + hash = "sha256-7VsEN6t9c0FMw0zHWnxnIyilQmQ127rXEfLrAYatKEc="; }; propagatedBuildInputs = [ @@ -25,9 +35,10 @@ buildPythonPackage rec { doCheck = false; meta = with lib; { - description = "Flexible, free and unlimited Python tool to translate between different languages in a simple way using multiple translators"; + description = "Python tool to translate between different languages by using multiple translators"; homepage = "https://deep-translator.readthedocs.io"; - license = licenses.mit; + changelog = "https://github.com/nidhaloff/deep-translator/releases/tag/v1.10.0"; + license = licenses.asl20; maintainers = with maintainers; [ wolfangaukang ]; }; } diff --git a/pkgs/development/python-modules/docformatter/default.nix b/pkgs/development/python-modules/docformatter/default.nix index f7be25f61509..0eb7506a2ce1 100644 --- a/pkgs/development/python-modules/docformatter/default.nix +++ b/pkgs/development/python-modules/docformatter/default.nix @@ -2,6 +2,9 @@ , buildPythonPackage , pythonOlder , fetchFromGitHub +, poetry-core +, charset-normalizer +, tomli , untokenize , mock , pytestCheckHook @@ -9,20 +12,37 @@ buildPythonPackage rec { pname = "docformatter"; - version = "1.5.0"; + version = "1.5.1"; disabled = pythonOlder "3.6"; - format = "setuptools"; + format = "pyproject"; src = fetchFromGitHub { owner = "PyCQA"; repo = pname; rev = "refs/tags/v${version}"; - hash = "sha256-GSfsM6sPSLOIH0YJYFVTB3SigI62/ps51mA2iZ7GOEg="; + hash = "sha256-r+8FOl9Rrfi3V8f8wD41bRsaqDb+UrOBWuR3goK43xY="; }; + patches = [ + ./test-path.patch + ]; + + postPatch = '' + substituteInPlace pyproject.toml \ + --replace 'charset_normalizer = "^2.0.0"' 'charset_normalizer = ">=2.0.0"' + substituteInPlace tests/conftest.py \ + --subst-var-by docformatter $out/bin/docformatter + ''; + + nativeBuildInputs = [ + poetry-core + ]; + propagatedBuildInputs = [ + charset-normalizer + tomli untokenize ]; @@ -34,6 +54,7 @@ buildPythonPackage rec { pythonImportsCheck = [ "docformatter" ]; meta = { + changelog = "https://github.com/PyCQA/docformatter/blob/${src.rev}/CHANGELOG.md"; description = "Formats docstrings to follow PEP 257"; homepage = "https://github.com/myint/docformatter"; license = lib.licenses.mit; diff --git a/pkgs/development/python-modules/docformatter/test-path.patch b/pkgs/development/python-modules/docformatter/test-path.patch new file mode 100644 index 000000000000..bd61c0ca829b --- /dev/null +++ b/pkgs/development/python-modules/docformatter/test-path.patch @@ -0,0 +1,29 @@ +diff --git a/tests/conftest.py b/tests/conftest.py +index 5f5a9aa..3289222 100644 +--- a/tests/conftest.py ++++ b/tests/conftest.py +@@ -92,21 +92,9 @@ def run_docformatter(arguments, temporary_file): + + Return subprocess object. + """ +- if "DOCFORMATTER_COVERAGE" in os.environ and int( +- os.environ["DOCFORMATTER_COVERAGE"] +- ): +- DOCFORMATTER_COMMAND = [ +- "coverage", +- "run", +- "--branch", +- "--parallel", +- "--omit=*/site-packages/*", +- os.environ["VIRTUAL_ENV"] + "/bin/docformatter", +- ] +- else: +- DOCFORMATTER_COMMAND = [ +- os.environ["VIRTUAL_ENV"] + "/bin/docformatter", +- ] # pragma: no cover ++ DOCFORMATTER_COMMAND = [ ++ "@docformatter@" ++ ] + + if "-" not in arguments: + arguments.append(temporary_file) diff --git a/pkgs/development/python-modules/dvc-data/default.nix b/pkgs/development/python-modules/dvc-data/default.nix index 56a27acb6019..316e20f91d0e 100644 --- a/pkgs/development/python-modules/dvc-data/default.nix +++ b/pkgs/development/python-modules/dvc-data/default.nix @@ -15,7 +15,7 @@ buildPythonPackage rec { pname = "dvc-data"; - version = "0.36.2"; + version = "0.38.1"; format = "pyproject"; disabled = pythonOlder "3.8"; @@ -24,7 +24,7 @@ buildPythonPackage rec { owner = "iterative"; repo = pname; rev = "refs/tags/${version}"; - hash = "sha256-HKNltc5pWc0mU+yCj/PV9E6GYQ+3fbcacRRXtquGM4w="; + hash = "sha256-xuNxsG8wMpdwyA0BkEYepnGjIZGmUzTivN5paLtM68Q="; }; SETUPTOOLS_SCM_PRETEND_VERSION = version; diff --git a/pkgs/development/python-modules/dvc-objects/default.nix b/pkgs/development/python-modules/dvc-objects/default.nix index c20540b8eeb3..a0ab592eaa90 100644 --- a/pkgs/development/python-modules/dvc-objects/default.nix +++ b/pkgs/development/python-modules/dvc-objects/default.nix @@ -16,7 +16,7 @@ buildPythonPackage rec { pname = "dvc-objects"; - version = "0.19.0"; + version = "0.19.3"; format = "pyproject"; disabled = pythonOlder "3.8"; @@ -25,7 +25,7 @@ buildPythonPackage rec { owner = "iterative"; repo = pname; rev = "refs/tags/${version}"; - hash = "sha256-jwjhRY1SMqiTZ5UJmoZb4odg3g8uC9ehPmxRU2VsH8U="; + hash = "sha256-oKK+BhOgdRPZZAACgxgmr9rlzEH9yWmvbmx09d42u/Y="; }; SETUPTOOLS_SCM_PRETEND_VERSION = version; diff --git a/pkgs/development/python-modules/inkbird-ble/default.nix b/pkgs/development/python-modules/inkbird-ble/default.nix index 2172a8841140..4c39d264ce75 100644 --- a/pkgs/development/python-modules/inkbird-ble/default.nix +++ b/pkgs/development/python-modules/inkbird-ble/default.nix @@ -12,7 +12,7 @@ buildPythonPackage rec { pname = "inkbird-ble"; - version = "0.5.5"; + version = "0.5.6"; format = "pyproject"; disabled = pythonOlder "3.9"; @@ -21,7 +21,7 @@ buildPythonPackage rec { owner = "Bluetooth-Devices"; repo = pname; rev = "v${version}"; - hash = "sha256-KUBOjeFM4h2Qt9eT0mQKPFYJJ8OWdbYy9+AiHsJWNyU="; + hash = "sha256-re5HjPtssFkpcltCr0HEJmJyHbXJdkr2wDgaAHfy2Tk="; }; nativeBuildInputs = [ diff --git a/pkgs/development/python-modules/jaraco-abode/default.nix b/pkgs/development/python-modules/jaraco-abode/default.nix index 15ac7c63a7f1..8ddb8f4b493c 100644 --- a/pkgs/development/python-modules/jaraco-abode/default.nix +++ b/pkgs/development/python-modules/jaraco-abode/default.nix @@ -25,7 +25,7 @@ buildPythonPackage rec { pname = "jaraco-abode"; - version = "3.2.1"; + version = "3.3.0"; disabled = pythonOlder "3.7"; @@ -35,7 +35,7 @@ buildPythonPackage rec { owner = "jaraco"; repo = "jaraco.abode"; rev = "refs/tags/v${version}"; - hash = "sha256-ZDdZba1oTOPaUm+r4fWC5E3ni/k8kXo6t5AWQTvfd5E="; + hash = "sha256-LnbWzIST+GMtdsHDKg67WWt9GmHUcSuGZ5Spei3nEio="; }; postPatch = '' diff --git a/pkgs/development/python-modules/jupyter-book/default.nix b/pkgs/development/python-modules/jupyter-book/default.nix index 44f88d56d953..ac2a6c8125df 100644 --- a/pkgs/development/python-modules/jupyter-book/default.nix +++ b/pkgs/development/python-modules/jupyter-book/default.nix @@ -3,6 +3,7 @@ , fetchPypi , pythonOlder , flit-core +, pythonRelaxDepsHook , click , docutils , jinja2 @@ -25,7 +26,7 @@ buildPythonPackage rec { pname = "jupyter-book"; - version = "0.13.1"; + version = "0.13.2"; format = "flit"; @@ -33,24 +34,13 @@ buildPythonPackage rec { src = fetchPypi { inherit pname version; - sha256 = "sha256-RgpC/H4J3kbdZsKuwYu7EOKCqcgM2v4uUsm6PVFknQE="; + sha256 = "sha256-wJWY0tBrlCkOFDfGZS4xWvv87sOlyrNl3fiGqgayqTs="; }; - postPatch = '' - substituteInPlace pyproject.toml \ - --replace "jsonschema<4" "jsonschema" \ - --replace "sphinx-external-toc~=0.2.3" "sphinx-external-toc" \ - --replace "sphinx-jupyterbook-latex~=0.4.6" "sphinx-jupyterbook-latex" \ - --replace "sphinx-thebe~=0.1.1" "sphinx-thebe" \ - --replace "sphinx>=4,<5" "sphinx" \ - --replace "sphinx_book_theme~=0.3.2" "sphinx_book_theme" \ - --replace "myst-nb~=0.13.1" "myst-nb" \ - --replace "docutils>=0.15,<0.18" "docutils" \ - --replace "sphinx-design~=0.1.0" "sphinx-design" \ - --replace "linkify-it-py~=1.0.1" "linkify-it-py" - ''; - - nativeBuildInputs = [ flit-core ]; + nativeBuildInputs = [ + flit-core + pythonRelaxDepsHook + ]; propagatedBuildInputs = [ click @@ -73,11 +63,19 @@ buildPythonPackage rec { sphinx-multitoc-numbering ]; - pythonImportsCheck = [ "jupyter_book" ]; + pythonRelaxDeps = [ + "docutils" + "myst-nb" + "sphinx" + ]; + + pythonImportsCheck = [ + "jupyter_book" + ]; meta = with lib; { description = "Build a book with Jupyter Notebooks and Sphinx"; - homepage = "https://executablebooks.org/"; + homepage = "https://jupyterbook.org/"; license = licenses.bsd3; maintainers = with maintainers; [ marsam ]; }; diff --git a/pkgs/development/python-modules/karton-core/default.nix b/pkgs/development/python-modules/karton-core/default.nix index 65c56cbae18c..e62b7cee010b 100644 --- a/pkgs/development/python-modules/karton-core/default.nix +++ b/pkgs/development/python-modules/karton-core/default.nix @@ -8,13 +8,13 @@ buildPythonPackage rec { pname = "karton-core"; - version = "5.0.0"; + version = "5.0.1"; src = fetchFromGitHub { owner = "CERT-Polska"; repo = "karton"; rev = "refs/tags/v${version}"; - hash = "sha256-0B2u2xnrGc3iQ8B9iAQ3fcovQQCPqdFsn5evgdDwg5M="; + hash = "sha256-TKO0l0AKsC9MMB58ao/EXcJ9k/J3y3S9tc127H7vA6w="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/meep/default.nix b/pkgs/development/python-modules/meep/default.nix new file mode 100644 index 000000000000..021121a44ac2 --- /dev/null +++ b/pkgs/development/python-modules/meep/default.nix @@ -0,0 +1,151 @@ +{ stdenv +, lib +, buildPythonPackage +, fetchFromGitHub +, autoreconfHook +, pkg-config +, gfortran +, mpi +, blas +, lapack +, fftw +, hdf5-mpi +, swig +, gsl +, harminv +, libctl +, libGDSII +, openssh +, guile +, python +, numpy +, scipy +, matplotlib +, h5py-mpi +, cython +, autograd +, mpi4py +}: + +assert !blas.isILP64; +assert !lapack.isILP64; + +buildPythonPackage rec { + pname = "meep"; + version = "1.25.0"; + + src = fetchFromGitHub { + owner = "NanoComp"; + repo = pname; + rev = "v${version}"; + hash = "sha256-4rIz2RXLSWzZbRuv8d4nidOa0ULYc4QHIdaYrGu1WkI="; + }; + + format = "other"; + + # MPI is needed in nativeBuildInputs too, otherwise MPI libs will be missing + # at runtime + nativeBuildInputs = [ + autoreconfHook + gfortran + pkg-config + swig + mpi + ]; + + buildInputs = [ + gsl + blas + lapack + fftw + hdf5-mpi + harminv + libctl + libGDSII + guile + gsl + ]; + + propagatedBuildInputs = [ + mpi + numpy + scipy + matplotlib + h5py-mpi + cython + autograd + mpi4py + ]; + + propagatedUserEnvPkgs = [ mpi ]; + + dontUseSetuptoolsBuild = true; + dontUsePipInstall = true; + dontUseSetuptoolsCheck = true; + + enableParallelBuilding = true; + + preConfigure = '' + export HDF5_MPI=ON + export PYTHON=${python}/bin/${python.executable}; + ''; + + configureFlags = [ + "--without-libctl" + "--enable-shared" + "--with-mpi" + "--with-openmp" + "--enable-maintainer-mode" + ]; + + passthru = { inherit mpi; }; + + /* + This test is taken from the MEEP tutorial "Fields in a Waveguide" at + . + It is important, that the test actually performs a calculation + (calls `sim.run()`), as only then MPI will be initialised and MPI linking + errors can be caught. + */ + doCheck = true; + checkPhase = '' + export PATH=$PATH:${openssh}/bin + export PYTHONPATH="$out/lib/${python.libPrefix}/site-packages:$PYTHONPATH" + + export OMP_NUM_THREADS=1 + + # Fix to make mpich run in a sandbox + export HYDRA_IFACE=lo + export OMPI_MCA_rmaps_base_oversubscribe=1 + + # Generate a python test script + cat > test.py << EOF + import meep as mp + cell = mp.Vector3(16,8,0) + geometry = [mp.Block(mp.Vector3(mp.inf,1,mp.inf), + center=mp.Vector3(), + material=mp.Medium(epsilon=12))] + sources = [mp.Source(mp.ContinuousSource(frequency=0.15), + component=mp.Ez, + center=mp.Vector3(-7,0))] + pml_layers = [mp.PML(1.0)] + resolution = 10 + sim = mp.Simulation(cell_size=cell, + boundary_layers=pml_layers, + geometry=geometry, + sources=sources, + resolution=resolution) + sim.run(until=200) + EOF + + ${mpi}/bin/mpiexec -np 2 python3 test.py + ''; + + meta = with lib; { + description = "Free finite-difference time-domain (FDTD) software for electromagnetic simulations"; + homepage = "https://meep.readthedocs.io/en/latest/"; + license = licenses.gpl2Only; + platforms = platforms.linux; + maintainers = with maintainers; [ sheepforce markuskowa ]; + }; +} diff --git a/pkgs/development/python-modules/openai/default.nix b/pkgs/development/python-modules/openai/default.nix index d4cedc80be11..ede1a7a3d84f 100644 --- a/pkgs/development/python-modules/openai/default.nix +++ b/pkgs/development/python-modules/openai/default.nix @@ -23,7 +23,7 @@ buildPythonPackage rec { pname = "openai"; - version = "0.26.4"; + version = "0.26.5"; format = "setuptools"; disabled = pythonOlder "3.7.1"; @@ -32,7 +32,7 @@ buildPythonPackage rec { owner = "openai"; repo = "openai-python"; rev = "v${version}"; - hash = "sha256-WcUH6zbb5kIH0qk67M+lUx9CbMEbYDXQm6IVzzuQo9w="; + hash = "sha256-eKU+WRFf7f1yH63vcoQ9dVeqhJXBqMJGpk/9AoEgR0M="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/peaqevcore/default.nix b/pkgs/development/python-modules/peaqevcore/default.nix index b8b5f092dcb2..3e1776b97b49 100644 --- a/pkgs/development/python-modules/peaqevcore/default.nix +++ b/pkgs/development/python-modules/peaqevcore/default.nix @@ -6,14 +6,14 @@ buildPythonPackage rec { pname = "peaqevcore"; - version = "11.1.2"; + version = "11.2.0"; format = "setuptools"; disabled = pythonOlder "3.7"; src = fetchPypi { inherit pname version; - hash = "sha256-ZuXc/7xCCFl20+GAMpL1c4iavjr7iR0pTvAoDCMnxx4="; + hash = "sha256-L4QUQsLdFwJPGq8ZdpTHRv5dNn1o6lc1q37LVNNCOOM="; }; postPatch = '' diff --git a/pkgs/development/python-modules/pontos/default.nix b/pkgs/development/python-modules/pontos/default.nix index ae3b4c551dd4..9383bdbf100e 100644 --- a/pkgs/development/python-modules/pontos/default.nix +++ b/pkgs/development/python-modules/pontos/default.nix @@ -16,7 +16,7 @@ buildPythonPackage rec { pname = "pontos"; - version = "23.2.0"; + version = "23.2.4"; format = "pyproject"; disabled = pythonOlder "3.7"; @@ -25,7 +25,7 @@ buildPythonPackage rec { owner = "greenbone"; repo = pname; rev = "refs/tags/v${version}"; - hash = "sha256-4GIfXHDY2g6dhvymYzunK2UWxJcO37dXQbI2jxOIwCw="; + hash = "sha256-tunFd+hgaRx5wc1gRwZaNUEX550Rl1NR9rZfEWUw6H4="; }; nativeBuildInputs = [ diff --git a/pkgs/development/python-modules/py-synologydsm-api/default.nix b/pkgs/development/python-modules/py-synologydsm-api/default.nix index 2437aba73a13..0ae3cf8bd0d1 100644 --- a/pkgs/development/python-modules/py-synologydsm-api/default.nix +++ b/pkgs/development/python-modules/py-synologydsm-api/default.nix @@ -11,7 +11,7 @@ buildPythonPackage rec { pname = "py-synologydsm-api"; - version = "2.1.2"; + version = "2.1.4"; format = "pyproject"; disabled = pythonOlder "3.8"; @@ -20,7 +20,7 @@ buildPythonPackage rec { owner = "mib1185"; repo = "py-synologydsm-api"; rev = "refs/tags/v${version}"; - hash = "sha256-dugWA/Ruc/BhPBbo2bTXf225YndDl0t2vc+NeutaO58="; + hash = "sha256-37JzdhMny6YDTBO9NRzfrZJAVAOPnpcr95fOKxisbTg="; }; nativeBuildInputs = [ diff --git a/pkgs/development/python-modules/pyathena/default.nix b/pkgs/development/python-modules/pyathena/default.nix index 8c6086092a71..2de176f2c690 100644 --- a/pkgs/development/python-modules/pyathena/default.nix +++ b/pkgs/development/python-modules/pyathena/default.nix @@ -11,14 +11,14 @@ buildPythonPackage rec { pname = "pyathena"; - version = "2.19.0"; + version = "2.21.0"; format = "setuptools"; disabled = pythonOlder "3.7"; src = fetchPypi { inherit pname version; - hash = "sha256-59NH4HIhgDOxwgSUJq71ewpQTn2sbpNNT9Q3nj8qJss="; + hash = "sha256-DhG8JdYVRrsRuXsmlUzp7HDRlBsI/pLMBDzYqIzmae4="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/pyisy/default.nix b/pkgs/development/python-modules/pyisy/default.nix index 472bf727edca..892c44b0b3b2 100644 --- a/pkgs/development/python-modules/pyisy/default.nix +++ b/pkgs/development/python-modules/pyisy/default.nix @@ -11,7 +11,7 @@ buildPythonPackage rec { pname = "pyisy"; - version = "3.1.11"; + version = "3.1.13"; format = "setuptools"; disabled = pythonOlder "3.7"; @@ -20,7 +20,7 @@ buildPythonPackage rec { owner = "automicus"; repo = "PyISY"; rev = "refs/tags/v${version}"; - hash = "sha256-RYC0mfskDcCU9O2pSKRL9ulPUaJQO9UKp7WANXZWJ60="; + hash = "sha256-FjreG+xjX8f68nUq/4HHEaYcUYjU/9sYvzmIN6kXezU="; }; SETUPTOOLS_SCM_PRETEND_VERSION = version; diff --git a/pkgs/development/python-modules/pyrainbird/default.nix b/pkgs/development/python-modules/pyrainbird/default.nix index 899e1cfd7b60..8d9c546213f8 100644 --- a/pkgs/development/python-modules/pyrainbird/default.nix +++ b/pkgs/development/python-modules/pyrainbird/default.nix @@ -1,11 +1,17 @@ { lib , buildPythonPackage , fetchFromGitHub +, freezegun +, ical , parameterized , pycryptodome , pydantic , pytest-aiohttp +, pytest-asyncio +, pytest-golden +, pytest-mock , pytestCheckHook +, python-dateutil , pythonOlder , pyyaml , requests @@ -15,7 +21,7 @@ buildPythonPackage rec { pname = "pyrainbird"; - version = "1.1.1"; + version = "2.0.0"; format = "setuptools"; disabled = pythonOlder "3.9"; @@ -24,7 +30,7 @@ buildPythonPackage rec { owner = "allenporter"; repo = pname; rev = "refs/tags/${version}"; - hash = "sha256-e+neyzH+sGTzGwdy/N7n6GUvctHlHQgwDkRQsnzL7Jw="; + hash = "sha256-fQHWamtGA1Cz/9Hbxbns5lDd08Q01nIvaMXp9PWrelM="; }; postPatch = '' @@ -36,15 +42,21 @@ buildPythonPackage rec { ''; propagatedBuildInputs = [ + ical pycryptodome pydantic + python-dateutil pyyaml requests ]; nativeCheckInputs = [ + freezegun parameterized pytest-aiohttp + pytest-asyncio + pytest-golden + pytest-mock pytestCheckHook requests-mock responses diff --git a/pkgs/development/python-modules/python-zbar/0001-python-enum-fix-build-for-Python-3.11.patch b/pkgs/development/python-modules/python-zbar/0001-python-enum-fix-build-for-Python-3.11.patch new file mode 100644 index 000000000000..11b554151790 --- /dev/null +++ b/pkgs/development/python-modules/python-zbar/0001-python-enum-fix-build-for-Python-3.11.patch @@ -0,0 +1,61 @@ +From 64de7911d2938fc3601fec39c08008465b9d4f6f Mon Sep 17 00:00:00 2001 +From: Nick Cao +Date: Tue, 7 Feb 2023 17:12:50 +0800 +Subject: [PATCH] python: enum: fix build for Python 3.11 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Python 3.9 introduced Py_SET_SIZE function to set size instead of +relying on Py_SIZE() as a macro [3.9]. + +Python 3.10 started to encourage to use Py_SET_SIZE instead of +assigning into return value of Py_SIZE [3.10]. + +Python 3.11 flips the switch, turn Py_SIZE into a function [3.11], +thus Py_SIZE(obj) will be a rvalue. We need to use Py_SET_SIZE +to set size now. + +[3.9]: https://docs.python.org/3.9/c-api/structures.html#c.Py_SET_SIZE +[3.10]: https://docs.python.org/3.10/c-api/structures.html#c.Py_SIZE +[3.11]: https://docs.python.org/3.11/c-api/structures.html#c.Py_SIZE + +Adapted from https://github.com/mchehab/zbar/pull/231 + +Signed-off-by: Đoàn Trần Công Danh +Signed-off-by: Nick Cao +--- + python/enum.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/python/enum.c b/python/enum.c +index dfe1b1e..4833a20 100644 +--- a/python/enum.c ++++ b/python/enum.c +@@ -52,7 +52,11 @@ enumitem_new (PyTypeObject *type, + + /* we assume the "fast path" for a single-digit ints (see longobject.c) */ + /* this also holds if we get a small_int preallocated long */ ++#if PY_VERSION_HEX >= 0x030900A4 ++ Py_SET_SIZE(&self->val, Py_SIZE(longval)); ++#else + Py_SIZE(&self->val) = Py_SIZE(longval); ++#endif + self->val.ob_digit[0] = longval->ob_digit[0]; + Py_DECREF(longval); + #else +@@ -143,7 +147,11 @@ zbarEnumItem_New (PyObject *byname, + + /* we assume the "fast path" for a single-digit ints (see longobject.c) */ + /* this also holds if we get a small_int preallocated long */ ++#if PY_VERSION_HEX >= 0x030900A4 ++ Py_SET_SIZE(&self->val, Py_SIZE(longval)); ++#else + Py_SIZE(&self->val) = Py_SIZE(longval); ++#endif + self->val.ob_digit[0] = longval->ob_digit[0]; + Py_DECREF(longval); + +-- +2.39.1 + diff --git a/pkgs/development/python-modules/python-zbar/default.nix b/pkgs/development/python-modules/python-zbar/default.nix index 7ad125b26ef5..178b1899ef51 100644 --- a/pkgs/development/python-modules/python-zbar/default.nix +++ b/pkgs/development/python-modules/python-zbar/default.nix @@ -1,4 +1,10 @@ -{ lib , buildPythonPackage , fetchFromGitHub , pillow , zbar , pytestCheckHook }: +{ lib +, buildPythonPackage +, fetchFromGitHub +, pillow +, zbar +, pytestCheckHook +}: buildPythonPackage rec { pname = "python-zbar"; @@ -12,6 +18,13 @@ buildPythonPackage rec { sha256 = "sha256-FvV7TMc4JbOiRjWLka0IhtpGGqGm5fis7h870OmJw2U="; }; + patches = [ + # python: enum: fix build for Python 3.11 + # https://github.com/mchehab/zbar/pull/231 + # the patch is reworked as it does not cleanly apply + ./0001-python-enum-fix-build-for-Python-3.11.patch + ]; + propagatedBuildInputs = [ pillow ]; buildInputs = [ zbar ]; diff --git a/pkgs/development/python-modules/pyutil/default.nix b/pkgs/development/python-modules/pyutil/default.nix index 3a6c3871a441..e6391349927c 100644 --- a/pkgs/development/python-modules/pyutil/default.nix +++ b/pkgs/development/python-modules/pyutil/default.nix @@ -9,11 +9,11 @@ buildPythonPackage rec { pname = "pyutil"; - version = "3.3.0"; + version = "3.3.2"; src = fetchPypi { inherit pname version; - sha256 = "8c4d4bf668c559186389bb9bce99e4b1b871c09ba252a756ccaacd2b8f401848"; + sha256 = "sha256-6hbSxVtvg0Eh3rYyp0VLCg+uJdXRMLFfa+l667B2yfw="; }; propagatedBuildInputs = [ simplejson ]; diff --git a/pkgs/development/python-modules/pyvex/default.nix b/pkgs/development/python-modules/pyvex/default.nix index 58523a13b066..20d7da5f4883 100644 --- a/pkgs/development/python-modules/pyvex/default.nix +++ b/pkgs/development/python-modules/pyvex/default.nix @@ -13,14 +13,14 @@ buildPythonPackage rec { pname = "pyvex"; - version = "9.2.36"; + version = "9.2.37"; format = "pyproject"; disabled = pythonOlder "3.8"; src = fetchPypi { inherit pname version; - hash = "sha256-KV/fkgYUt8hfpGxDO3CNNrC91BaI9W8T2mr2H4eJdxo="; + hash = "sha256-JGTfOE16tycBkbsihKPgSZPlfqun1vr/86kAlNwrSZA="; }; nativeBuildInputs = [ diff --git a/pkgs/development/python-modules/requests-aws4auth/default.nix b/pkgs/development/python-modules/requests-aws4auth/default.nix index d67f8f364ea2..b240aa81509c 100644 --- a/pkgs/development/python-modules/requests-aws4auth/default.nix +++ b/pkgs/development/python-modules/requests-aws4auth/default.nix @@ -11,7 +11,7 @@ buildPythonPackage rec { pname = "requests-aws4auth"; - version = "1.2.1"; + version = "1.2.2"; format = "setuptools"; disabled = pythonOlder "3.7"; @@ -20,7 +20,7 @@ buildPythonPackage rec { owner = "tedder"; repo = pname; rev = "refs/tags/v${version}"; - hash = "sha256-Dr3i+5xTKLKOMjGkCdKhkK2BCV8/FgTGMtGsYtvB5s8="; + hash = "sha256-RbaRFMyvK3y7xN+xwNi/lHJjx+xIlpfizJj9BIn6cT4="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/rpy2/default.nix b/pkgs/development/python-modules/rpy2/default.nix index dd27a7ca110d..206c38cda762 100644 --- a/pkgs/development/python-modules/rpy2/default.nix +++ b/pkgs/development/python-modules/rpy2/default.nix @@ -24,13 +24,13 @@ }: buildPythonPackage rec { - version = "3.5.7"; + version = "3.5.8"; pname = "rpy2"; disabled = isPyPy; src = fetchPypi { inherit version pname; - sha256 = "sha256-h6QJA3m0/DTn86Q0cXMJBndsNzmIhwhqgDV9ZP3QZUs="; + sha256 = "sha256-ImEfIbxSeYCH+5gwlwXxolz76L/Sf7/u6gHz01L92yk="; }; patches = [ diff --git a/pkgs/development/python-modules/soundfile/default.nix b/pkgs/development/python-modules/soundfile/default.nix index 5847dc2a63f9..91b4e2ec7a42 100644 --- a/pkgs/development/python-modules/soundfile/default.nix +++ b/pkgs/development/python-modules/soundfile/default.nix @@ -29,6 +29,10 @@ buildPythonPackage rec { propagatedBuildInputs = [ numpy libsndfile cffi ]; propagatedNativeBuildInputs = [ cffi ]; + preConfigure = lib.optionalString (stdenv.isDarwin && stdenv.isx86_64) '' + export PYSOUNDFILE_ARCHITECTURE=x86_64 + ''; + meta = { description = "An audio library based on libsndfile, CFFI and NumPy"; license = lib.licenses.bsd3; diff --git a/pkgs/development/python-modules/sqltrie/default.nix b/pkgs/development/python-modules/sqltrie/default.nix index 76c1eb22b2dc..da465eb0ccb3 100644 --- a/pkgs/development/python-modules/sqltrie/default.nix +++ b/pkgs/development/python-modules/sqltrie/default.nix @@ -11,7 +11,7 @@ buildPythonPackage rec { pname = "sqltrie"; - version = "0.0.27"; + version = "0.0.28"; format = "pyproject"; disabled = pythonOlder "3.8"; @@ -20,7 +20,7 @@ buildPythonPackage rec { owner = "iterative"; repo = pname; rev = "refs/tags/${version}"; - hash = "sha256-8ymTdbJgRUf9BBNMEVF1lm29qA+N1629cekEohaxt0c="; + hash = "sha256-i1IFkibQ7VHrkD8KzeInBE4ZbjxAw8nQIeE6O4iYmbw="; }; SETUPTOOLS_SCM_PRETEND_VERSION = version; diff --git a/pkgs/development/python-modules/types-pyyaml/default.nix b/pkgs/development/python-modules/types-pyyaml/default.nix index f0b4056e2b58..710e1ad32cd5 100644 --- a/pkgs/development/python-modules/types-pyyaml/default.nix +++ b/pkgs/development/python-modules/types-pyyaml/default.nix @@ -5,13 +5,13 @@ buildPythonPackage rec { pname = "types-pyyaml"; - version = "6.0.12.3"; + version = "6.0.12.4"; format = "setuptools"; src = fetchPypi { pname = "types-PyYAML"; inherit version; - sha256 = "sha256-F84Xs+rY8G5BajsdW43cbLgqQiuyACVN2LRpQ0sEX/w="; + sha256 = "sha256-rebjKKWj34FsR8kSwuHpRq4rrOkHRKpzER7mg0sDoxQ="; }; # Module doesn't have tests diff --git a/pkgs/development/python-modules/types-requests/default.nix b/pkgs/development/python-modules/types-requests/default.nix index a6d685a5371e..1d22826b6eea 100644 --- a/pkgs/development/python-modules/types-requests/default.nix +++ b/pkgs/development/python-modules/types-requests/default.nix @@ -6,12 +6,12 @@ buildPythonPackage rec { pname = "types-requests"; - version = "2.28.11.11"; + version = "2.28.11.12"; format = "setuptools"; src = fetchPypi { inherit pname version; - sha256 = "sha256-GWIqzjWl2hg47pytDfSlDH46Qg+KN+g1fOhw/tSS+oE="; + sha256 = "sha256-/VMKqz/E8F7jZAavFo8INubwDx7lGguWtzEfgstnUjA="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/watchfiles/default.nix b/pkgs/development/python-modules/watchfiles/default.nix index c31aa264bd84..82060561a8d4 100644 --- a/pkgs/development/python-modules/watchfiles/default.nix +++ b/pkgs/development/python-modules/watchfiles/default.nix @@ -11,6 +11,8 @@ , pytest-timeout , pytestCheckHook , python +, CoreServices +, libiconv }: buildPythonPackage rec { @@ -33,6 +35,11 @@ buildPythonPackage rec { hash = "sha256-IWONA3o+2emJ7cKEw5xYSMdWzGuUSwn1B70zUDzj7Cw="; }; + buildInputs = lib.optionals stdenv.isDarwin [ + CoreServices + libiconv + ]; + nativeBuildInputs = [ ] ++ (with rustPlatform; [ cargoSetupHook @@ -69,6 +76,5 @@ buildPythonPackage rec { homepage = "https://watchfiles.helpmanual.io/"; license = licenses.mit; maintainers = with maintainers; [ fab ]; - broken = stdenv.isDarwin; }; } diff --git a/pkgs/development/python-modules/xknx/default.nix b/pkgs/development/python-modules/xknx/default.nix index 2d1cbab86c6d..af7f10e3fd8d 100644 --- a/pkgs/development/python-modules/xknx/default.nix +++ b/pkgs/development/python-modules/xknx/default.nix @@ -12,7 +12,7 @@ buildPythonPackage rec { pname = "xknx"; - version = "2.3.0"; + version = "2.4.0"; format = "setuptools"; disabled = pythonOlder "3.8"; @@ -21,7 +21,7 @@ buildPythonPackage rec { owner = "XKNX"; repo = pname; rev = "refs/tags/${version}"; - hash = "sha256-G4az6YmCDv1MPF30mBQVNBPZdebjZqd+0vxo5F5iDWY="; + hash = "sha256-MSk/c2qLztq5GQ6+CzK0Jw+rOJTClguaoL284YaBPjw="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/xsdata/default.nix b/pkgs/development/python-modules/xsdata/default.nix index 6ad48ac12364..d3d06d407493 100644 --- a/pkgs/development/python-modules/xsdata/default.nix +++ b/pkgs/development/python-modules/xsdata/default.nix @@ -2,6 +2,7 @@ , buildPythonPackage , pythonOlder , fetchPypi +, fetchpatch , click , click-default-group , docformatter @@ -25,6 +26,16 @@ buildPythonPackage rec { hash = "sha256-o9Xxt7b/+MkW94Jcg26ihaTn0/OpTcu+0OY7oV3JRGY="; }; + patches = [ + # https://github.com/tefra/xsdata/pull/741 + (fetchpatch { + name = "use-docformatter-1.5.1.patch"; + url = "https://github.com/tefra/xsdata/commit/040692db47e6e51028fd959c793e757858c392d7.patch"; + excludes = [ "setup.cfg" ]; + hash = "sha256-ncecMJLJUiUb4lB8ys+nyiGU/UmayK++o89h3sAwREQ="; + }) + ]; + postPatch = '' substituteInPlace setup.cfg \ --replace "--benchmark-skip" "" diff --git a/pkgs/development/python-modules/yfinance/default.nix b/pkgs/development/python-modules/yfinance/default.nix index d2a113fb51d0..ac8c68239bf7 100644 --- a/pkgs/development/python-modules/yfinance/default.nix +++ b/pkgs/development/python-modules/yfinance/default.nix @@ -15,7 +15,7 @@ buildPythonPackage rec { pname = "yfinance"; - version = "0.2.9"; + version = "0.2.10"; format = "setuptools"; disabled = pythonOlder "3.7"; @@ -24,7 +24,7 @@ buildPythonPackage rec { owner = "ranaroussi"; repo = pname; rev = "refs/tags/${version}"; - hash = "sha256-CcvBVW9MdXVx1BnIcPB9b1PHGK2zw4Hg0vVNW6s87/Q="; + hash = "sha256-1LRnvyr3QNYR33qTyN/WepGH8InYmXWwO5gQfm20MP4="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/quickemu/default.nix b/pkgs/development/quickemu/default.nix index d5b56f585eca..25cb3b4d7eb8 100644 --- a/pkgs/development/quickemu/default.nix +++ b/pkgs/development/quickemu/default.nix @@ -50,13 +50,13 @@ in stdenv.mkDerivation rec { pname = "quickemu"; - version = "4.5"; + version = "4.6"; src = fetchFromGitHub { owner = "quickemu-project"; repo = "quickemu"; rev = version; - hash = "sha256-31f4BIIYCh2acbueUtGZShKnlhctd1FfKkFqsNiUqrI="; + hash = "sha256-C/3zyHnxAxCu8rrR4Znka47pVPp0vvaVGyd4TVQG3qg="; }; postPatch = '' diff --git a/pkgs/development/tools/build-managers/bazel/buildtools/default.nix b/pkgs/development/tools/build-managers/bazel/buildtools/default.nix index cd313a5bc50b..693ecce9d1e1 100644 --- a/pkgs/development/tools/build-managers/bazel/buildtools/default.nix +++ b/pkgs/development/tools/build-managers/bazel/buildtools/default.nix @@ -2,21 +2,23 @@ buildGoModule rec { pname = "bazel-buildtools"; - version = "5.1.0"; + version = "6.0.1"; src = fetchFromGitHub { owner = "bazelbuild"; repo = "buildtools"; rev = version; - sha256 = "sha256-PNIqsP5p+OdYH0JgOmjqvge9zVOrAcNg0FMflXFJHwQ="; + hash = "sha256-WXzrGJaulcwg4MnyfY5jWBEVxCXryqMK+/R7J/gFI38="; }; - vendorSha256 = "sha256-9WUjQhXWkpSEJj9Xq+9rOe3I1VZ7nqMTnX7DPl+rxsU="; + vendorHash = "sha256-DigTREfI6I48wxRpGp/bfH1NbUZ4E1B5UTQXpI0LY1A="; preBuild = '' rm -r warn/docs ''; + proxyVendor = true; + doCheck = false; excludedPackages = [ "generatetables" ]; diff --git a/pkgs/development/tools/golangci-lint/default.nix b/pkgs/development/tools/golangci-lint/default.nix index ccd230cc5f5c..f3a54a83a636 100644 --- a/pkgs/development/tools/golangci-lint/default.nix +++ b/pkgs/development/tools/golangci-lint/default.nix @@ -2,16 +2,16 @@ buildGoModule rec { pname = "golangci-lint"; - version = "1.51.0"; + version = "1.51.1"; src = fetchFromGitHub { owner = "golangci"; repo = "golangci-lint"; rev = "v${version}"; - hash = "sha256-mmnzbgnu/S9DhFY5JQSs8U5tvsGqIcDaX5Y7dhCgr68="; + hash = "sha256-BkkC23dO40gnEQ6sJcbLR2UzdigMrta2+NnZA2bk3E8="; }; - vendorHash = "sha256-QoUxZBl0wOpbD2xPCQAeTNiLxdtXZ3+KWB/TLSt53v4="; + vendorHash = "sha256-CS9Z3nvOleKTYjw89IKybsUI33w0If/mYDUpQHLO58U="; doCheck = false; diff --git a/pkgs/development/tools/oh-my-posh/default.nix b/pkgs/development/tools/oh-my-posh/default.nix index b4843ddc1030..fae74f6f13fc 100644 --- a/pkgs/development/tools/oh-my-posh/default.nix +++ b/pkgs/development/tools/oh-my-posh/default.nix @@ -6,16 +6,16 @@ buildGoModule rec { pname = "oh-my-posh"; - version = "13.8.0"; + version = "14.2.3"; src = fetchFromGitHub { owner = "jandedobbeleer"; repo = pname; rev = "refs/tags/v${version}"; - hash = "sha256-mplWF/lmgRfYd1Gg2loZI5NIfmTHR8quG1/KcZj5W54="; + hash = "sha256-PghWKyZG19MVmc2fQSQN/BCMbF7YOZWybUSKiQzUxl8="; }; - vendorHash = "sha256-WiH4qu8DODEhAkxUm6VDcBwFyQO7kNjaiaWPDHCHj9E="; + vendorHash = "sha256-ehG71B351u+LoXDuKQkuEdEpUdHslVU2HcPKUz6FAnQ="; sourceRoot = "source/src"; @@ -35,6 +35,11 @@ buildGoModule rec { "static_build" ]; + postPatch = '' + # this test requires internet access + rm engine/migrate_glyphs_test.go + ''; + postInstall = '' mv $out/bin/{src,oh-my-posh} mkdir -p $out/share/oh-my-posh diff --git a/pkgs/development/tools/rust/rust-analyzer/default.nix b/pkgs/development/tools/rust/rust-analyzer/default.nix index a90ac2780e8a..80fbfe249d75 100644 --- a/pkgs/development/tools/rust/rust-analyzer/default.nix +++ b/pkgs/development/tools/rust/rust-analyzer/default.nix @@ -12,14 +12,14 @@ rustPlatform.buildRustPackage rec { pname = "rust-analyzer-unwrapped"; - version = "2023-01-23"; - cargoSha256 = "sha256-NSdHvWN5BIEXZMFiweKYbJayxDqlFmqJp+sIzeORhSU="; + version = "2023-01-30"; + cargoSha256 = "sha256-ONziMXbMPDoIb44mOJCg5O1QOo5o13kaGb+b6Qp3Ikk="; src = fetchFromGitHub { owner = "rust-lang"; repo = "rust-analyzer"; rev = version; - sha256 = "sha256-Uq6jngJnf2UqKrOzqMXtq5IVxkU3eNCkmORPdccLxp0="; + sha256 = "sha256-W8abw+8SuxSMMBH4ydfawdC6zwPHQwhHerFEXkB4oU4="; }; auditable = true; # TODO: remove when this is the default diff --git a/pkgs/development/tools/wizer/default.nix b/pkgs/development/tools/wizer/default.nix index f79c96f54518..5f84e1e01ff0 100644 --- a/pkgs/development/tools/wizer/default.nix +++ b/pkgs/development/tools/wizer/default.nix @@ -1,16 +1,26 @@ -{ lib, stdenv, rustPlatform, fetchCrate }: +{ lib +, stdenv +, rustPlatform +, fetchFromGitHub +, testers +, wizer +}: rustPlatform.buildRustPackage rec { pname = "wizer"; - version = "1.4.0"; + version = "1.6.0"; - src = fetchCrate { - inherit pname version; - - sha256 = "sha256-3Hc3KKqtbZtvD+3lb/W7+AyrwPukJyxpUe94KGQlzBI="; + # the crate does not contain files which are necessary for the tests + # see https://github.com/bytecodealliance/wizer/commit/3a95e27ce42f1fdaef07b52988e4699eaa221e04 + src = fetchFromGitHub { + owner = "bytecodealliance"; + repo = "wizer"; + # see https://github.com/bytecodealliance/wizer/pull/62 + rev = "e74c6e59562c4b7edcda506674db8aead878a893"; + sha256 = "sha256-bVxjcb231Ygz+z+8D1U2YQqEdIKsostxISgYt2KecXc="; }; - cargoSha256 = "sha256-zv36/W7dNpIupYn8TS+NaF7uX+BVjrI6AW6Hrlqr8Xg="; + cargoSha256 = "sha256-S9h47aGG5UhwNoOnUHFrtEyByg8iCMC88Cspb/6tb8c="; cargoBuildFlags = [ "--bin" pname ]; @@ -22,11 +32,14 @@ rustPlatform.buildRustPackage rec { export HOME=$(mktemp -d) ''; + passthru.tests = { + version = testers.testVersion { package = wizer; }; + }; + meta = with lib; { description = "The WebAssembly pre-initializer"; homepage = "https://github.com/bytecodealliance/wizer"; license = licenses.asl20; - maintainers = with maintainers; [ lucperkins ]; - broken = stdenv.isx86_64 && stdenv.isDarwin; + maintainers = with maintainers; [ lucperkins amesgen ]; }; } diff --git a/pkgs/games/BeatSaberModManager/deps.nix b/pkgs/games/BeatSaberModManager/deps.nix index 1542b120c9af..e36521e19149 100644 --- a/pkgs/games/BeatSaberModManager/deps.nix +++ b/pkgs/games/BeatSaberModManager/deps.nix @@ -26,9 +26,9 @@ (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.Win32"; version = "2.8.2.1-preview.108"; sha256 = "0n6ymn9jqms3mk5hg0ar4y9jmh96myl6q0jimn7ahb1a8viq55k1"; }) (fetchNuGet { pname = "JetBrains.Annotations"; version = "10.3.0"; sha256 = "1grdx28ga9fp4hwwpwv354rizm8anfq4lp045q4ss41gvhggr3z8"; }) (fetchNuGet { pname = "MicroCom.Runtime"; version = "0.11.0"; sha256 = "0p9c3m0zk59x9dcqw077hzd2yk60myisbacvm36mnwpcjwzjkp2m"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Ref"; version = "6.0.12"; sha256 = "0x8x922jhdn4zzbqqhlnzg5cmg69myn9zibk363py3yamkywcami"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm64"; version = "6.0.12"; sha256 = "1zi1x4w51fawi8083s48mxrlpqzkc48qsvrq2h7xx58x48ml465s"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-x64"; version = "6.0.12"; sha256 = "1wwciddbnykamlwl9i88l9081q27l0i17jmvymsxddbi0v9rr3sb"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Ref"; version = "6.0.13"; sha256 = "1k49nrz5rw1yglkjypmmnclahib2qiwm838008yahk00ysy039f4"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm64"; version = "6.0.13"; sha256 = "1a80w34yb700cvjzfcsq3c5sb32bk95ccgjfcvyqxkpzlgcc50xn"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-x64"; version = "6.0.13"; sha256 = "1y2gnkrc788y9k79sygx7dmgkj674qwdajyrxizx0a70rwmjszmw"; }) (fetchNuGet { pname = "Microsoft.CodeAnalysis.Analyzers"; version = "3.0.0"; sha256 = "0bbl0jpqywqmzz2gagld1p2gvdfldjfjmm25hil9wj2nq1zc4di8"; }) (fetchNuGet { pname = "Microsoft.CodeAnalysis.Common"; version = "3.8.0"; sha256 = "12n7rvr39bzkf2maw7zplw8rwpxpxss4ich3bb2pw770rx4nyvyw"; }) (fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp"; version = "3.8.0"; sha256 = "1kmry65csvfn72zzc16vj1nfbfwam28wcmlrk3m5rzb8ydbzgylb"; }) @@ -36,11 +36,11 @@ (fetchNuGet { pname = "Microsoft.CodeAnalysis.Scripting.Common"; version = "3.8.0"; sha256 = "0hjgxcsj5zy27lqk0986m59n5dbplx2vjjla2lsvg4bwg8qa7bpk"; }) (fetchNuGet { pname = "Microsoft.CSharp"; version = "4.3.0"; sha256 = "0gw297dgkh0al1zxvgvncqs0j15lsna9l1wpqas4rflmys440xvb"; }) (fetchNuGet { pname = "Microsoft.CSharp"; version = "4.5.0"; sha256 = "01i28nvzccxbqmiz217fxs6hnjwmd5fafs37rd49a6qp53y6623l"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm64"; version = "6.0.12"; sha256 = "0axj326a79h8762ahrxgpnzczivfvdjn2xa2np2djc7ybn6j3491"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-x64"; version = "6.0.12"; sha256 = "0dfivz2wq18gsdn8b9d0v6q0lf2mvayl85nad7cvysfc93aw05jg"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Ref"; version = "6.0.12"; sha256 = "00s1flhzvxsdhgn469vc1q63qkcv05g5zqx10p1gsnzxjpdx01in"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm64"; version = "6.0.12"; sha256 = "1j615cjwkyjkvvc03pvwmfgqbh1z9aq08bvw0bnjkhs1qs6dz7x0"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-x64"; version = "6.0.12"; sha256 = "1w7kfgld8wcbqqyb1cpbnd6b08f83jfny2q70vb1qdqfn5bgcb1h"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm64"; version = "6.0.13"; sha256 = "1xy7x37mkdiv907xbxxc0aijjhgi2hli1s79adqn4adw8fbn2aki"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-x64"; version = "6.0.13"; sha256 = "0ph1r2vhnqg7agk1zz4873983qy2i5nwa10q40ba3g96rdy2pg1f"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Ref"; version = "6.0.13"; sha256 = "0ddygsnms3vfg6s7w2mcm7gqdmb4h7glrdj73hm1l42sndmn9p7v"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm64"; version = "6.0.13"; sha256 = "0l1bq22d85sm36hrsmyf74hir1fj0msqv0c6d4ba0b64b3rwhvg0"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-x64"; version = "6.0.13"; sha256 = "0in8sk9bl2r2dgjf3ncvmqzbdnyvy2329bzmykmvsrq511c76gh3"; }) (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.0.1"; sha256 = "01al6cfxp68dscl15z7rxfw9zvhm64dncsw09a1vmdkacsa2v6lr"; }) (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.1.0"; sha256 = "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm"; }) (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "2.1.2"; sha256 = "1507hnpr9my3z4w1r6xk5n0s1j3y6a2c2cnynj76za7cphxi1141"; }) diff --git a/pkgs/games/hyperrogue/default.nix b/pkgs/games/hyperrogue/default.nix index f8f0d55fb9c3..1eabfe77a7ae 100644 --- a/pkgs/games/hyperrogue/default.nix +++ b/pkgs/games/hyperrogue/default.nix @@ -3,13 +3,13 @@ stdenv.mkDerivation rec { pname = "hyperrogue"; - version = "12.1h"; + version = "12.1i"; src = fetchFromGitHub { owner = "zenorogue"; repo = "hyperrogue"; rev = "v${version}"; - sha256 = "sha256-9ChPO0YCsrAyQ81TAbKCMJSgSXoUtkvvNPMTPimPBUo="; + sha256 = "sha256-TMPumyTEzDbV/31UgwXJwr7zt7ufENX3ESxlcBEnaSc="; }; CXXFLAGS = [ diff --git a/pkgs/games/quake2/yquake2/default.nix b/pkgs/games/quake2/yquake2/default.nix index 2e9c09bc62e3..522a8e39fd88 100644 --- a/pkgs/games/quake2/yquake2/default.nix +++ b/pkgs/games/quake2/yquake2/default.nix @@ -13,13 +13,13 @@ let yquake2 = stdenv.mkDerivation rec { pname = "yquake2"; - version = "8.10"; + version = "8.20"; src = fetchFromGitHub { owner = "yquake2"; repo = "yquake2"; rev = "QUAKE2_${builtins.replaceStrings ["."] ["_"] version}"; - sha256 = "sha256-/BbMR/ZPjHbKzQ+I1+Vgh3/zenLjW3TnmrKhKPR6Gdk="; + sha256 = "sha256-x1mk6qo03b438ZBS16/f7pzMCfugtQvaRcV+hg7Zc/w="; }; postPatch = '' diff --git a/pkgs/misc/fastly/default.nix b/pkgs/misc/fastly/default.nix index 1542ed14fafe..1a737ae3ab45 100644 --- a/pkgs/misc/fastly/default.nix +++ b/pkgs/misc/fastly/default.nix @@ -8,13 +8,13 @@ buildGoModule rec { pname = "fastly"; - version = "5.1.1"; + version = "6.0.0"; src = fetchFromGitHub { owner = "fastly"; repo = "cli"; rev = "refs/tags/v${version}"; - hash = "sha256-gPToEeLymKIRjL52wb5AjMpDM6vU0Yb0rbcpouev4rQ="; + hash = "sha256-meUKWAFKT6EgHtzgR6jjDCA8EUD1kVoT3reXaRheukw="; # The git commit is part of the `fastly version` original output; # leave that output the same in nixpkgs. Use the `.git` directory # to retrieve the commit SHA, and remove the directory afterwards, @@ -49,8 +49,8 @@ buildGoModule rec { ]; preBuild = let cliConfigToml = fetchurl { - url = "https://web.archive.org/web/20221224152051/https://developer.fastly.com/api/internal/cli-config"; - hash = "sha256-IjakfeqjHshlGoamRJTnhUC8cTVMIY63F3vO6I/ZHO4="; + url = "https://web.archive.org/web/20230207211120/https://developer.fastly.com/api/internal/cli-config"; + hash = "sha256-Vkl8V5AkiJMZLswSN0vTnz7S7/5lXftlWD5UZh//vUw="; }; in '' cp ${cliConfigToml} ./pkg/config/config.toml diff --git a/pkgs/os-specific/linux/rt-tests/default.nix b/pkgs/os-specific/linux/rt-tests/default.nix index 67000776256c..6185bf9912dd 100644 --- a/pkgs/os-specific/linux/rt-tests/default.nix +++ b/pkgs/os-specific/linux/rt-tests/default.nix @@ -8,11 +8,11 @@ stdenv.mkDerivation rec { pname = "rt-tests"; - version = "2.4"; + version = "2.5"; src = fetchurl { url = "https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git/snapshot/${pname}-${version}.tar.gz"; - sha256 = "sha256-yuSfeYTaCZ0F1GXQkDnH8PBvyzR2w/XDitN8csHB9xE="; + sha256 = "sha256-LzN3YB3Lb7tjyEplrFaNYtiGwHUUTztZBsMrUndd2cU="; }; nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix index 51a694006528..8abe197bee7d 100644 --- a/pkgs/servers/home-assistant/component-packages.nix +++ b/pkgs/servers/home-assistant/component-packages.nix @@ -2,7 +2,7 @@ # Do not edit! { - version = "2023.2.2"; + version = "2023.2.3"; components = { "3_day_blinds" = ps: with ps; [ ]; diff --git a/pkgs/servers/home-assistant/default.nix b/pkgs/servers/home-assistant/default.nix index 07bb320e7112..94ab3ab5b509 100644 --- a/pkgs/servers/home-assistant/default.nix +++ b/pkgs/servers/home-assistant/default.nix @@ -271,7 +271,7 @@ let extraPackagesFile = writeText "home-assistant-packages" (lib.concatMapStringsSep "\n" (pkg: pkg.pname) extraBuildInputs); # Don't forget to run parse-requirements.py after updating - hassVersion = "2023.2.2"; + hassVersion = "2023.2.3"; in python.pkgs.buildPythonApplication rec { pname = "homeassistant"; @@ -289,7 +289,7 @@ in python.pkgs.buildPythonApplication rec { owner = "home-assistant"; repo = "core"; rev = "refs/tags/${version}"; - hash = "sha256-HEL8e/2zoWPjeJL9iaCRu8aIldE3uTw9Yu9Q06Nyvz4="; + hash = "sha256-cRdxlmlgkKTnrtqGQPbSpBLHf+vfI9T6sdETcGshN9M="; }; nativeBuildInputs = with python3.pkgs; [ diff --git a/pkgs/servers/jackett/default.nix b/pkgs/servers/jackett/default.nix index dc93a7977ad8..ae8b8eacabe4 100644 --- a/pkgs/servers/jackett/default.nix +++ b/pkgs/servers/jackett/default.nix @@ -9,13 +9,13 @@ buildDotnetModule rec { pname = "jackett"; - version = "0.20.2986"; + version = "0.20.3004"; src = fetchFromGitHub { owner = pname; repo = pname; rev = "v${version}"; - hash = "sha512-IbcIn2n5Cob+Ewp0lkkIENuo00HBlNy6V5pKARC6EgBDRKbB+YXETDX1Ko3Dsl0x6mxZgoTCbzEIPxD+Y2J4Rw=="; + hash = "sha512-UNGkcCQeeMxonJ9Kf1SDMTgSC8uTM2gD377qA+ViSfpWoOGQCY003EZ0c3c0q6oSGVbiIma1wvyW/T/ILLi5yw=="; }; projectFile = "src/Jackett.Server/Jackett.Server.csproj"; diff --git a/pkgs/servers/openvscode-server/default.nix b/pkgs/servers/openvscode-server/default.nix index 1253a6ef8fc3..47ca62c6d01e 100644 --- a/pkgs/servers/openvscode-server/default.nix +++ b/pkgs/servers/openvscode-server/default.nix @@ -40,13 +40,13 @@ let in stdenv.mkDerivation rec { pname = "openvscode-server"; - version = "1.74.3"; + version = "1.75.0"; src = fetchFromGitHub { owner = "gitpod-io"; repo = "openvscode-server"; rev = "openvscode-server-v${version}"; - sha256 = "2+/5I0dpQsmoWA7Q0dCgPO85dkOKQWHeO34cueH4sjQ="; + sha256 = "ZR4gEE+bLVjcGxhoRYQqfxDjk0ulPmdb5IV041qf954="; }; yarnCache = stdenv.mkDerivation { @@ -69,7 +69,7 @@ in stdenv.mkDerivation rec { outputHashMode = "recursive"; outputHashAlgo = "sha256"; - outputHash = "sha256-4B/ESi4lM2p+pY0dfUKWgwmYkwqPYaNuCLJ99ByjwWE="; + outputHash = "sha256-KcGhHFglBJDyircYUxpsMLRtQblYx3u/BMQq35A0qhE="; }; nativeBuildInputs = [ diff --git a/pkgs/servers/sql/mariadb/default.nix b/pkgs/servers/sql/mariadb/default.nix index 9eacea78a37e..fe3e3fba8d2a 100644 --- a/pkgs/servers/sql/mariadb/default.nix +++ b/pkgs/servers/sql/mariadb/default.nix @@ -45,7 +45,7 @@ let ++ lib.optionals stdenv.hostPlatform.isDarwin [ CoreServices cctools perl libedit ] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ jemalloc ] ++ (if (lib.versionOlder version "10.5") then [ pcre ] else [ pcre2 ]) - ++ (if (lib.versionOlder version "10.6") + ++ (if (lib.versionOlder version "10.5") then [ openssl_1_1 (curl.override { openssl = openssl_1_1; }) ] else [ openssl curl ]); @@ -274,4 +274,11 @@ in inherit (self.darwin) cctools; inherit (self.darwin.apple_sdk.frameworks) CoreServices; }; + mariadb_1010 = self.callPackage generic { + # Supported until 2023-11 + version = "10.10.2"; + hash = "sha256-V8vQESsitZL2V81OuC4vNq2QE1Exe/jheElXjoA/PLI="; + inherit (self.darwin) cctools; + inherit (self.darwin.apple_sdk.frameworks) CoreServices; + }; } diff --git a/pkgs/servers/web-apps/wallabag/default.nix b/pkgs/servers/web-apps/wallabag/default.nix index 956f33ca7404..1e6763c39c3e 100644 --- a/pkgs/servers/web-apps/wallabag/default.nix +++ b/pkgs/servers/web-apps/wallabag/default.nix @@ -16,7 +16,7 @@ let pname = "wallabag"; - version = "2.5.3"; + version = "2.5.4"; in stdenv.mkDerivation { inherit pname version; @@ -27,7 +27,7 @@ stdenv.mkDerivation { "https://static.wallabag.org/releases/wallabag-release-${version}.tar.gz" "https://github.com/wallabag/wallabag/releases/download/${version}/wallabag-${version}.tar.gz" ]; - hash = "sha256-3o5LFGPd4oFz3leKzCy7lIjQ3ELSLqZuIswptB7i24U="; + hash = "sha256-yVMQXjGB8Yv1klQaHEbDGMZmOtANRocFJnawKn10xhg="; }; patches = [ diff --git a/pkgs/servers/x11/xorg/xwayland.nix b/pkgs/servers/x11/xorg/xwayland.nix index ae3025461449..582ec11231cd 100644 --- a/pkgs/servers/x11/xorg/xwayland.nix +++ b/pkgs/servers/x11/xorg/xwayland.nix @@ -43,11 +43,11 @@ stdenv.mkDerivation rec { pname = "xwayland"; - version = "22.1.7"; + version = "22.1.8"; src = fetchurl { url = "mirror://xorg/individual/xserver/${pname}-${version}.tar.xz"; - sha256 = "sha256-1Tr6xscZU/XPZtA9KJ2s2JYdpb0wnB3/El1ZVdnbX3Y="; + sha256 = "sha256-0R7u5zKQuI6o2kKn2TUN7fq6hWzkrkTljARa2eyqL3M="; }; depsBuildBuild = [ diff --git a/pkgs/tools/backup/borgmatic/default.nix b/pkgs/tools/backup/borgmatic/default.nix index dc77b5de403f..dcc4caaa6362 100644 --- a/pkgs/tools/backup/borgmatic/default.nix +++ b/pkgs/tools/backup/borgmatic/default.nix @@ -2,11 +2,11 @@ python3Packages.buildPythonApplication rec { pname = "borgmatic"; - version = "1.7.2"; + version = "1.7.6"; src = python3Packages.fetchPypi { inherit pname version; - sha256 = "sha256-0o2tKg7BfhkNt/k8XdZ1agaSJxKO5OxB5aaRgV9IPeU="; + sha256 = "sha256-TNh0laNAyHkIZLC51hzchSIDvsHst2aPxoRdI6Mdr84="; }; nativeCheckInputs = with python3Packages; [ flexmock pytestCheckHook pytest-cov ]; diff --git a/pkgs/tools/filesystems/dduper/default.nix b/pkgs/tools/filesystems/dduper/default.nix index e7eecbf766ee..9c38852e4e90 100644 --- a/pkgs/tools/filesystems/dduper/default.nix +++ b/pkgs/tools/filesystems/dduper/default.nix @@ -5,8 +5,8 @@ let patches = [ (fetchpatch { name = "0001-Print-csum-for-a-given-file-on-stdout.patch"; - url = "https://raw.githubusercontent.com/Lakshmipathi/dduper/f45d04854a40cb52ae0e6736916d5955cb68b8ee/patch/btrfs-progs-v5.12.1/0001-Print-csum-for-a-given-file-on-stdout.patch"; - sha256 = "0c7dd44q2ww6k9nk5dh6m0f0wbd8x84vb2m61fk6a44nsv2fwz1x"; + url = "https://raw.githubusercontent.com/Lakshmipathi/dduper/ecc2664c380616ec75cfc1e600b5514cdff5c687/patch/btrfs-progs-v6.1/0001-Print-csum-for-a-given-file-on-stdout.patch"; + sha256 = "sha256-M4LT7G6gwBfSXf6EL4pxNoQJMyUTOA+ojxEJqw2yss4="; }) ]; }); diff --git a/pkgs/tools/filesystems/kio-admin/default.nix b/pkgs/tools/filesystems/kio-admin/default.nix new file mode 100644 index 000000000000..7e4a97fa255a --- /dev/null +++ b/pkgs/tools/filesystems/kio-admin/default.nix @@ -0,0 +1,25 @@ +{ lib, stdenv, fetchFromGitLab, cmake, extra-cmake-modules, qtbase, wrapQtAppsHook, kio, ki18n, polkit-qt }: + +stdenv.mkDerivation rec { + pname = "kio-admin"; + version = "1.0.0"; + + src = fetchFromGitLab { + domain = "invent.kde.org"; + owner = "system"; + repo = "kio-admin"; + rev = "v${version}"; + hash = "sha256-llnUsOttqFJVArJdZS9s6qHS9eGbdtdoaPMXKHtsUn4="; + }; + + nativeBuildInputs = [ cmake extra-cmake-modules wrapQtAppsHook ]; + buildInputs = [ qtbase kio ki18n polkit-qt ]; + + meta = with lib; { + description = "Manage files as administrator using the admin:// KIO protocol."; + homepage = "https://invent.kde.org/system/kio-admin"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = with maintainers; [ k900 ]; + }; +} diff --git a/pkgs/tools/filesystems/moosefs/default.nix b/pkgs/tools/filesystems/moosefs/default.nix index 898ba9ed3c15..55b796ec3254 100644 --- a/pkgs/tools/filesystems/moosefs/default.nix +++ b/pkgs/tools/filesystems/moosefs/default.nix @@ -9,13 +9,13 @@ stdenv.mkDerivation rec { pname = "moosefs"; - version = "3.0.116"; + version = "3.0.117"; src = fetchFromGitHub { owner = pname; repo = pname; rev = "v${version}"; - sha256 = "sha256-/+l4BURvL1R6te6tlXRJx7YBDyYuMrGnzzhMc9XeXKc="; + sha256 = "sha256-6zBMAi9ruPPlcnpdgqwl35QZ5u4MyFPUa70yvGTkHpo="; }; nativeBuildInputs = [ diff --git a/pkgs/tools/misc/fend/default.nix b/pkgs/tools/misc/fend/default.nix index 18ffdb71cde4..6d96c33e5eef 100644 --- a/pkgs/tools/misc/fend/default.nix +++ b/pkgs/tools/misc/fend/default.nix @@ -9,16 +9,16 @@ rustPlatform.buildRustPackage rec { pname = "fend"; - version = "1.1.4"; + version = "1.1.5"; src = fetchFromGitHub { owner = "printfn"; repo = pname; rev = "v${version}"; - sha256 = "sha256-jg2rMiFXtN3oLru1gTaTyIo5eBEI23paKJiDV6KZZE4="; + sha256 = "sha256-9qvIxKg/fj08wYY2fK5J1nWzojStUb9ArXwvA/cTOcQ="; }; - cargoHash = "sha256-9Gri/EBaUiCpFBL0f132JDD4Zl5v40e8JmlRvm019S4="; + cargoHash = "sha256-kVnA8w2YVg6+h1V1O4cvciuB7GM4/LULFsGrzy8xUMQ="; nativeBuildInputs = [ pandoc installShellFiles ]; buildInputs = lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security ]; diff --git a/pkgs/tools/misc/flexoptix-app/default.nix b/pkgs/tools/misc/flexoptix-app/default.nix index 50f51cfd7119..4cd81c8c640f 100644 --- a/pkgs/tools/misc/flexoptix-app/default.nix +++ b/pkgs/tools/misc/flexoptix-app/default.nix @@ -1,11 +1,11 @@ { lib, appimageTools, fetchurl, nodePackages }: let pname = "flexoptix-app"; - version = "5.13.3"; + version = "5.13.4"; src = fetchurl { name = "${pname}-${version}.AppImage"; url = "https://flexbox.reconfigure.me/download/electron/linux/x64/FLEXOPTIX%20App.${version}.AppImage"; - hash = "sha256-kDw9+Llqvq4NgN89Cw/HwEqYlv42wLbho1eHjI6wVSQ="; + hash = "sha256-W+9KmKZ1bPfQfv1DXCJrIswriw4ivBVZPW81tfvRBc0="; }; udevRules = fetchurl { @@ -47,7 +47,7 @@ in appimageTools.wrapAppImage { ''; meta = { - description = "Configure FLEXOPTIX Universal Transcievers in seconds"; + description = "Configure FLEXOPTIX Universal Transceivers in seconds"; homepage = "https://www.flexoptix.net"; changelog = "https://www.flexoptix.net/en/flexoptix-app/?os=linux#flexapp__modal__changelog"; license = lib.licenses.unfree; diff --git a/pkgs/tools/misc/geekbench/default.nix b/pkgs/tools/misc/geekbench/default.nix index ba9117a29722..77be76f2d2ed 100644 --- a/pkgs/tools/misc/geekbench/default.nix +++ b/pkgs/tools/misc/geekbench/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "geekbench"; - version = "5.4.5"; + version = "5.4.6"; src = fetchurl { url = "https://cdn.geekbench.com/Geekbench-${version}-Linux.tar.gz"; - sha256 = "sha256-JA9bvRb8u0qG6ZsQR9qJ3yaV9ni/MkdWo9xRtmPp92I="; + sha256 = "sha256-fCS6cSD3w2EbLL1yNfH+NKxswRUY4zyCR07gKGXW4Yc="; }; dontConfigure = true; diff --git a/pkgs/tools/misc/yubico-piv-tool/default.nix b/pkgs/tools/misc/yubico-piv-tool/default.nix index 60fc7c2ac709..a8a7dfd3ee68 100644 --- a/pkgs/tools/misc/yubico-piv-tool/default.nix +++ b/pkgs/tools/misc/yubico-piv-tool/default.nix @@ -1,14 +1,26 @@ -{ lib, stdenv, fetchurl, pkg-config, openssl, check, pcsclite, PCSC, gengetopt, cmake +{ lib +, stdenv +, fetchurl +, pkg-config +, openssl +, check +, pcsclite +, PCSC +, gengetopt +, cmake , withApplePCSC ? stdenv.isDarwin +, gitUpdater +, testers +, yubico-piv-tool }: stdenv.mkDerivation rec { pname = "yubico-piv-tool"; - version = "2.3.0"; + version = "2.3.1"; src = fetchurl { url = "https://developers.yubico.com/yubico-piv-tool/Releases/yubico-piv-tool-${version}.tar.gz"; - hash = "sha256-oCoS2VRdHvehuZhgbYm3tlWl9aFDdzbPUdsIP4dvVak="; + hash = "sha256-2ona/YthhapjU0Z1P53bKa8pvEq9kt2B832dZWC11k4="; }; postPatch = '' @@ -29,8 +41,21 @@ stdenv.mkDerivation rec { configureFlags = [ "--with-backend=${if withApplePCSC then "macscard" else "pcsc"}" ]; + passthru = { + updateScript = gitUpdater { + url = "https://github.com/Yubico/yubico-piv-tool.git"; + rev-prefix = "yubico-piv-tool-"; + }; + tests.version = testers.testVersion { + inherit version; + package = yubico-piv-tool; + command = "yubico-piv-tool --version"; + }; + }; + meta = with lib; { homepage = "https://developers.yubico.com/yubico-piv-tool/"; + changelog = "https://developers.yubico.com/yubico-piv-tool/Release_Notes.html"; description = '' Used for interacting with the Privilege and Identification Card (PIV) application on a YubiKey diff --git a/pkgs/tools/misc/yubikey-manager/default.nix b/pkgs/tools/misc/yubikey-manager/default.nix index 730dfabe00f2..5487d9835cd5 100644 --- a/pkgs/tools/misc/yubikey-manager/default.nix +++ b/pkgs/tools/misc/yubikey-manager/default.nix @@ -3,14 +3,14 @@ python3Packages.buildPythonPackage rec { pname = "yubikey-manager"; - version = "5.0.0"; + version = "5.0.1"; format = "pyproject"; src = fetchFromGitHub { repo = "yubikey-manager"; rev = "refs/tags/${version}"; owner = "Yubico"; - sha256 = "sha256-ZQQhRiUsQwLaOY8NCzSc/PTmRewTL0ECBKj7Uj+6Gn8="; + sha256 = "sha256-Dj3ftyFeVgM0YMFI8cbiH5dmc8SKi2SBbScnc0+ad0M="; }; postPatch = '' @@ -23,7 +23,7 @@ python3Packages.buildPythonPackage rec { nativeBuildInputs = with python3Packages; [ poetry-core ]; propagatedBuildInputs = - with python3Packages; ([ + with python3Packages; [ click cryptography pyscard @@ -31,7 +31,7 @@ python3Packages.buildPythonPackage rec { six fido2 keyring - ]) ++ [ + ] ++ [ libu2f-host libusb1 yubikey-personalization diff --git a/pkgs/tools/networking/babeld/default.nix b/pkgs/tools/networking/babeld/default.nix index 5714a75e50e5..6e8c7669f0dd 100644 --- a/pkgs/tools/networking/babeld/default.nix +++ b/pkgs/tools/networking/babeld/default.nix @@ -1,17 +1,27 @@ -{ lib, stdenv, fetchurl, nixosTests }: +{ lib +, stdenv +, fetchurl +, nixosTests +}: stdenv.mkDerivation rec { pname = "babeld"; - version = "1.12.1"; + version = "1.12.2"; src = fetchurl { url = "https://www.irif.fr/~jch/software/files/${pname}-${version}.tar.gz"; - sha256 = "sha256-mrWdesdB82MN8j+cO2fGApTYs0q2IjmPm4l3OoeOyx4="; + hash = "sha256-HbIrYZMHDqJFChq1EZb9cvWKEyn3gMsDiOLksud2jLs="; }; - preBuild = '' - makeFlags="PREFIX=$out ETCDIR=$out/etc" - ''; + outputs = [ + "out" + "man" + ]; + + makeFlags = [ + "PREFIX=${placeholder "out"}" + "ETCDIR=${placeholder "out"}/etc" + ]; passthru.tests.babeld = nixosTests.babeld; diff --git a/pkgs/tools/networking/haguichi/default.nix b/pkgs/tools/networking/haguichi/default.nix index 34ba1da28e4a..deb51191306d 100644 --- a/pkgs/tools/networking/haguichi/default.nix +++ b/pkgs/tools/networking/haguichi/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { owner = "ztefn"; repo = "haguichi"; rev = version; - sha256 = "1kgjl9g9lyg00cfx4x28s4xyqsqk5057xv6k2cj6ckg9lkxaixvc"; + hash = "sha256-bPeo+qTpTWYkE9PsfgooE2vsO9FIdNIdA+B5ml6i8s0="; }; nativeBuildInputs = [ @@ -44,6 +44,8 @@ stdenv.mkDerivation rec { patchShebangs meson_post_install.py ''; + passthru.updateScript = ./update.sh; + meta = with lib; { description = "Graphical frontend for Hamachi on Linux"; homepage = "https://haguichi.net/"; diff --git a/pkgs/tools/networking/haguichi/update.sh b/pkgs/tools/networking/haguichi/update.sh new file mode 100755 index 000000000000..49a76a79d7ae --- /dev/null +++ b/pkgs/tools/networking/haguichi/update.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p curl jq common-updater-scripts + +set -euo pipefail + +version="$( + curl -s https://api.github.com/repos/ztefn/haguichi/releases | + jq '.[] | select(.target_commitish!="elementary") | .tag_name' --raw-output | + sort --version-sort --reverse | + head -n1 +)" + +update-source-version haguichi "$version" diff --git a/pkgs/tools/networking/hysteria/default.nix b/pkgs/tools/networking/hysteria/default.nix index bd8e6e6d31c7..94365191cdc3 100644 --- a/pkgs/tools/networking/hysteria/default.nix +++ b/pkgs/tools/networking/hysteria/default.nix @@ -4,16 +4,16 @@ }: buildGoModule rec { pname = "hysteria"; - version = "1.3.2"; + version = "1.3.3"; src = fetchFromGitHub { owner = "HyNetwork"; repo = pname; rev = "v${version}"; - sha256 = "sha256-9ib/29yCfI4oS2yZQUePzZ+5FVTevvJCPjpTXmKnKeA="; + sha256 = "sha256-CQgCFtvQDvhHTk10gpxfAvEJLz/i+CXXyzGrxi26hBk="; }; - vendorSha256 = "sha256-sRPnPKVuvcUHEldKVpgmGFGpwOSK5qh4EfeUQMFdMw8="; + vendorSha256 = "sha256-sN+2XYoC+dDs6QKxwxuBCW4dOf4elSNKdOrbMxjOtSY="; proxyVendor = true; ldflags = [ diff --git a/pkgs/tools/networking/snabb/default.nix b/pkgs/tools/networking/snabb/default.nix index f58fd9a998b1..2ac9931f2ca5 100644 --- a/pkgs/tools/networking/snabb/default.nix +++ b/pkgs/tools/networking/snabb/default.nix @@ -5,13 +5,13 @@ stdenv.mkDerivation rec { pname = "snabb"; - version = "2022.10"; + version = "2022.12"; src = fetchFromGitHub { owner = "snabbco"; repo = "snabb"; rev = "v${version}"; - sha256 = "GIIW+2/1fuHTmYev/QvuO5Yb2ozbyw/45qQkym36US8="; + sha256 = "sha256-DPJ1GrqZQyiW2s5JBZszcB/Is0Is2f/O/6Riz/M3wAs="; }; installPhase = '' diff --git a/pkgs/tools/nix/nixos-render-docs/default.nix b/pkgs/tools/nix/nixos-render-docs/default.nix index 55bbbd9ffa56..312bc8058245 100644 --- a/pkgs/tools/nix/nixos-render-docs/default.nix +++ b/pkgs/tools/nix/nixos-render-docs/default.nix @@ -2,6 +2,7 @@ , stdenv , python3 , python3Minimal +, runCommand }: let @@ -21,9 +22,23 @@ let markdown-it-py = markdown-it-py-no-tests; disableTests = true; }; + + makeDeps = pkgs: small: + [ pkgs.frozendict ] + ++ ( + if small + then [ + markdown-it-py-no-tests + mdit-py-plugins-no-tests + ] + else [ + pkgs.markdown-it-py + pkgs.mdit-py-plugins + ] + ); in -python.pkgs.buildPythonApplication { +python.pkgs.buildPythonApplication rec { pname = "nixos-render-docs"; version = "0.0"; format = "pyproject"; @@ -47,14 +62,21 @@ python.pkgs.buildPythonApplication { python.pkgs.pytestCheckHook ]; - propagatedBuildInputs = [ - markdown-it-py-no-tests - mdit-py-plugins-no-tests - python.pkgs.frozendict - ]; + propagatedBuildInputs = makeDeps python.pkgs true; pytestFlagsArray = [ "-vvrP" "tests/" ]; + # NOTE this is a CI test rather than a build-time test because we want to keep the + # build closures small. mypy has an unreasonably large build closure for docs builds. + passthru.tests.typing = runCommand "${pname}-mypy" { + nativeBuildInputs = [ + (python3.withPackages (p: [ p.mypy p.pytest ] ++ makeDeps p false)) + ]; + } '' + mypy --strict ${src} + touch $out + ''; + meta = with lib; { description = "Renderer for NixOS manual and option docs"; license = licenses.mit; diff --git a/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/docbook.py b/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/docbook.py index bad36e57a2f3..28c4425d8c08 100644 --- a/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/docbook.py +++ b/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/docbook.py @@ -103,7 +103,7 @@ class DocBookRenderer(Renderer): # HACK open and close para for docbook change size. remove soon. def bullet_list_open(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, env: MutableMapping[str, Any]) -> str: - spacing = ' spacing="compact"' if token.attrs.get('compact', False) else '' + spacing = ' spacing="compact"' if token.meta.get('compact', False) else '' return f"\n" def bullet_list_close(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, env: MutableMapping[str, Any]) -> str: @@ -218,7 +218,7 @@ class DocBookRenderer(Renderer): def ordered_list_open(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, env: MutableMapping[str, Any]) -> str: start = f' startingnumber="{token.attrs["start"]}"' if 'start' in token.attrs else "" - spacing = ' spacing="compact"' if token.attrs.get('compact', False) else '' + spacing = ' spacing="compact"' if token.meta.get('compact', False) else '' return f"" def ordered_list_close(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, env: MutableMapping[str, Any]) -> str: diff --git a/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/manpage.py b/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/manpage.py new file mode 100644 index 000000000000..24d0e8f3d699 --- /dev/null +++ b/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/manpage.py @@ -0,0 +1,330 @@ +from collections.abc import Mapping, MutableMapping, Sequence +from dataclasses import dataclass +from typing import Any, cast, Iterable, Optional + +import re + +import markdown_it +from markdown_it.token import Token +from markdown_it.utils import OptionsDict + +from .md import Renderer + +# roff(7) says: +# +# > roff documents may contain only graphable 7-bit ASCII characters, the space character, +# > and, in certain circumstances, the tab character. The backslash character ‘\’ indicates +# > the start of an escape sequence […] +# +# mandoc_char(7) says about the `'~^ characters: +# +# > In prose, this automatic substitution is often desirable; but when these characters have +# > to be displayed as plain ASCII characters, for example in source code samples, they require +# > escaping to render as follows: +# +# since we don't want these to be touched anywhere (because markdown will do all substituations +# we want to have) we'll escape those as well. we also escape " (macro metacharacter), - (might +# turn into a typographic hyphen), and . (roff request marker at SOL, changes spacing semantics +# at EOL). groff additionally does not allow unicode escapes for codepoints below U+0080, so +# those need "proper" roff escapes/replacements instead. +_roff_unicode = re.compile(r'''[^\n !#$%&()*+,\-./0-9:;<=>?@A-Z[\\\]_a-z{|}]''', re.ASCII) +_roff_escapes = { + ord('"'): "\\(dq", + ord("'"): "\\(aq", + ord('-'): "\\-", + ord('.'): "\\&.", + ord('\\'): "\\e", + ord('^'): "\\(ha", + ord('`'): "\\(ga", + ord('~'): "\\(ti", +} +def man_escape(s: str) -> str: + s = s.translate(_roff_escapes) + return _roff_unicode.sub(lambda m: f"\\[u{ord(m[0]):04X}]", s) + +# remove leading and trailing spaces from links and condense multiple consecutive spaces +# into a single space for presentation parity with html. this is currently easiest with +# regex postprocessing and some marker characters. since we don't want to drop spaces +# from code blocks we will have to specially protect *inline* code (luckily not block code) +# so normalization can turn the spaces inside it into regular spaces again. +_normalize_space_re = re.compile(r'''\u0000 < *| *>\u0000 |(?<= ) +''') +def _normalize_space(s: str) -> str: + return _normalize_space_re.sub("", s).replace("\0p", " ") + +def _protect_spaces(s: str) -> str: + return s.replace(" ", "\0p") + +@dataclass(kw_only=True) +class List: + width: int + next_idx: Optional[int] = None + compact: bool + first_item_seen: bool = False + +# this renderer assumed that it produces a set of lines as output, and that those lines will +# be pasted as-is into a larger output. no prefixing or suffixing is allowed for correctness. +# +# NOTE that we output exclusively physical markup. this is because we have to use the older +# mandoc(7) format instead of the newer mdoc(7) format due to limitations in groff: while +# using mdoc in groff works fine it is not a native format and thus very slow to render on +# manpages as large as configuration.nix.5. mandoc(1) renders both really quickly, but with +# groff being our predominant manpage viewer we have to optimize for groff instead. +# +# while we do use only physical markup (adjusting indentation with .RS and .RE, adding +# vertical spacing with .sp, \f[BIRP] escapes for bold/italic/roman/$previous font, \h for +# horizontal motion in a line) we do attempt to copy the style of mdoc(7) semantic requests +# as appropriate for each markup element. +class ManpageRenderer(Renderer): + __output__ = "man" + + # whether to emit mdoc .Ql equivalents for inline code or just the contents. this is + # mainly used by the options manpage converter to not emit extra quotes in defaults + # and examples where it's already clear from context that the following text is code. + inline_code_is_quoted: bool = True + link_footnotes: Optional[list[str]] = None + + _href_targets: dict[str, str] + + _link_stack: list[str] + _do_parbreak_stack: list[bool] + _list_stack: list[List] + _font_stack: list[str] + + def __init__(self, manpage_urls: Mapping[str, str], href_targets: dict[str, str], + parser: Optional[markdown_it.MarkdownIt] = None): + super().__init__(manpage_urls, parser) + self._href_targets = href_targets + self._link_stack = [] + self._do_parbreak_stack = [] + self._list_stack = [] + self._font_stack = [] + + def _join_block(self, ls: Iterable[str]) -> str: + return "\n".join([ l for l in ls if len(l) ]) + def _join_inline(self, ls: Iterable[str]) -> str: + return _normalize_space(super()._join_inline(ls)) + + def _enter_block(self) -> None: + self._do_parbreak_stack.append(False) + def _leave_block(self) -> None: + self._do_parbreak_stack.pop() + self._do_parbreak_stack[-1] = True + def _maybe_parbreak(self, suffix: str = "") -> str: + result = f".sp{suffix}" if self._do_parbreak_stack[-1] else "" + self._do_parbreak_stack[-1] = True + return result + + def _admonition_open(self, kind: str) -> str: + self._enter_block() + return ( + '.sp\n' + '.RS 4\n' + f'\\fB{kind}\\fP\n' + '.br' + ) + def _admonition_close(self) -> str: + self._leave_block() + return ".RE" + + def render(self, tokens: Sequence[Token], options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + self._do_parbreak_stack = [ False ] + self._font_stack = [ "\\fR" ] + return super().render(tokens, options, env) + + def text(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + return man_escape(token.content) + def paragraph_open(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + return self._maybe_parbreak() + def paragraph_close(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + return "" + def hardbreak(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + return ".br" + def softbreak(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + return " " + def code_inline(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + s = _protect_spaces(man_escape(token.content)) + return f"\\fR\\(oq{s}\\(cq\\fP" if self.inline_code_is_quoted else s + def code_block(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + return self.fence(token, tokens, i, options, env) + def link_open(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + href = cast(str, token.attrs['href']) + self._link_stack.append(href) + text = "" + if tokens[i + 1].type == 'link_close' and href in self._href_targets: + # TODO error or warning if the target can't be resolved + text = self._href_targets[href] + self._font_stack.append("\\fB") + return f"\\fB{text}\0 <" + def link_close(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + href = self._link_stack.pop() + text = "" + if self.link_footnotes is not None: + try: + idx = self.link_footnotes.index(href) + 1 + except ValueError: + self.link_footnotes.append(href) + idx = len(self.link_footnotes) + text = "\\fR" + man_escape(f"[{idx}]") + self._font_stack.pop() + return f">\0 {text}{self._font_stack[-1]}" + def list_item_open(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + self._enter_block() + lst = self._list_stack[-1] + maybe_space = '' if lst.compact or not lst.first_item_seen else '.sp\n' + lst.first_item_seen = True + head = "•" + if lst.next_idx is not None: + head = f"{lst.next_idx}." + lst.next_idx += 1 + return ( + f'{maybe_space}' + f'.RS {lst.width}\n' + f"\\h'-{len(head) + 1}'\\fB{man_escape(head)}\\fP\\h'1'\\c" + ) + def list_item_close(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + self._leave_block() + return ".RE" + def bullet_list_open(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + self._list_stack.append(List(width=4, compact=bool(token.meta['compact']))) + return self._maybe_parbreak() + def bullet_list_close(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + self._list_stack.pop() + return "" + def em_open(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + self._font_stack.append("\\fI") + return "\\fI" + def em_close(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + self._font_stack.pop() + return self._font_stack[-1] + def strong_open(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + self._font_stack.append("\\fB") + return "\\fB" + def strong_close(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + self._font_stack.pop() + return self._font_stack[-1] + def fence(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + s = man_escape(token.content).rstrip('\n') + return ( + '.sp\n' + '.RS 4\n' + '.nf\n' + f'{s}\n' + '.fi\n' + '.RE' + ) + def blockquote_open(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + maybe_par = self._maybe_parbreak("\n") + self._enter_block() + return ( + f"{maybe_par}" + ".RS 4\n" + f"\\h'-3'\\fI\\(lq\\(rq\\fP\\h'1'\\c" + ) + def blockquote_close(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + self._leave_block() + return ".RE" + def note_open(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + return self._admonition_open("Note") + def note_close(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + return self._admonition_close() + def caution_open(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + return self._admonition_open( "Caution") + def caution_close(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + return self._admonition_close() + def important_open(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + return self._admonition_open( "Important") + def important_close(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + return self._admonition_close() + def tip_open(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + return self._admonition_open( "Tip") + def tip_close(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + return self._admonition_close() + def warning_open(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + return self._admonition_open( "Warning") + def warning_close(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + return self._admonition_close() + def dl_open(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + return ".RS 4" + def dl_close(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + return ".RE" + def dt_open(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + return ".PP" + def dt_close(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + return "" + def dd_open(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + self._enter_block() + return ".RS 4" + def dd_close(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + self._leave_block() + return ".RE" + def myst_role(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + if token.meta['name'] in [ 'command', 'env', 'option' ]: + return f'\\fB{man_escape(token.content)}\\fP' + elif token.meta['name'] in [ 'file', 'var' ]: + return f'\\fI{man_escape(token.content)}\\fP' + elif token.meta['name'] == 'manpage': + [page, section] = [ s.strip() for s in token.content.rsplit('(', 1) ] + section = section[:-1] + return f'\\fB{man_escape(page)}\\fP\\fR({man_escape(section)})\\fP' + else: + raise NotImplementedError("md node not supported yet", token) + def inline_anchor(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + return "" # mdoc knows no anchors + def heading_open(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + raise RuntimeError("md token not supported in manpages", token) + def heading_close(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + raise RuntimeError("md token not supported in manpages", token) + def ordered_list_open(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + # max item head width for a number, a dot, and one leading space and one trailing space + width = 3 + len(str(cast(int, token.meta['end']))) + self._list_stack.append( + List(width = width, + next_idx = cast(int, token.attrs.get('start', 1)), + compact = bool(token.meta['compact']))) + return self._maybe_parbreak() + def ordered_list_close(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + self._list_stack.pop() + return "" diff --git a/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/md.py b/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/md.py index c08675870f6a..5bc16e65933c 100644 --- a/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/md.py +++ b/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/md.py @@ -1,7 +1,7 @@ from abc import ABC from collections.abc import Mapping, MutableMapping, Sequence from frozendict import frozendict # type: ignore[attr-defined] -from typing import Any, Callable, Optional +from typing import Any, Callable, cast, Iterable, Optional import re @@ -79,6 +79,11 @@ class Renderer(markdown_it.renderer.RendererProtocol): } self._admonition_stack = [] + def _join_block(self, ls: Iterable[str]) -> str: + return "".join(ls) + def _join_inline(self, ls: Iterable[str]) -> str: + return "".join(ls) + def admonition_open(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, env: MutableMapping[str, Any]) -> str: tag = token.info.strip() @@ -98,7 +103,7 @@ class Renderer(markdown_it.renderer.RendererProtocol): return self.rules[token.type](tokens[i], tokens, i, options, env) else: raise NotImplementedError("md token not supported yet", token) - return "".join(map(lambda arg: do_one(*arg), enumerate(tokens))) + return self._join_block(map(lambda arg: do_one(*arg), enumerate(tokens))) def renderInline(self, tokens: Sequence[Token], options: OptionsDict, env: MutableMapping[str, Any]) -> str: def do_one(i: int, token: Token) -> str: @@ -106,7 +111,7 @@ class Renderer(markdown_it.renderer.RendererProtocol): return self.rules[token.type](tokens[i], tokens, i, options, env) else: raise NotImplementedError("md token not supported yet", token) - return "".join(map(lambda arg: do_one(*arg), enumerate(tokens))) + return self._join_inline(map(lambda arg: do_one(*arg), enumerate(tokens))) def text(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, env: MutableMapping[str, Any]) -> str: @@ -364,14 +369,21 @@ class Converter(ABC): # of each item to hidden. this is not useful for our stylesheets, which # signify this with a special css class on list elements instead. wide_stack = [] + end_stack = [] for i in range(0, len(tokens)): if tokens[i].type in [ 'bullet_list_open', 'ordered_list_open' ]: wide_stack.append([i, True]) + end_stack.append([i, cast(int, tokens[i].attrs.get('start', 1))]) elif tokens[i].type in [ 'bullet_list_close', 'ordered_list_close' ]: (idx, compact) = wide_stack.pop() - tokens[idx].attrs['compact'] = compact + tokens[idx].meta['compact'] = compact + (idx, end) = end_stack.pop() + if tokens[i].type == 'ordered_list_close': + tokens[idx].meta['end'] = end - 1 elif len(wide_stack) > 0 and tokens[i].type == 'paragraph_open' and not tokens[i].hidden: wide_stack[-1][1] = False + elif tokens[i].type == 'list_item_open': + end_stack[-1][1] += 1 return tokens @@ -379,7 +391,7 @@ class Converter(ABC): tokens = self._md.parse(src, env if env is not None else {}) return self._post_parse(tokens) - def _render(self, src: str) -> str: - env: dict[str, Any] = {} + def _render(self, src: str, env: Optional[MutableMapping[str, Any]] = None) -> str: + env = {} if env is None else env tokens = self._parse(src, env) return self._md.renderer.render(tokens, self._md.options, env) # type: ignore[no-any-return] diff --git a/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/options.py b/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/options.py index 3667c7bbcdeb..95091d3cdd28 100644 --- a/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/options.py +++ b/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/options.py @@ -2,13 +2,16 @@ import argparse import json from abc import abstractmethod -from collections.abc import MutableMapping, Sequence +from collections.abc import Mapping, MutableMapping, Sequence from markdown_it.utils import OptionsDict from markdown_it.token import Token from typing import Any, Optional from xml.sax.saxutils import escape, quoteattr +import markdown_it + from .docbook import DocBookRenderer, make_xml_id +from .manpage import ManpageRenderer, man_escape from .md import Converter, md_escape from .types import OptionLoc, Option, RenderedOption @@ -22,22 +25,24 @@ def option_is(option: Option, key: str, typ: str) -> Optional[dict[str, str]]: return option[key] # type: ignore[return-value] class BaseConverter(Converter): + __option_block_separator__: str + _options: dict[str, RenderedOption] def __init__(self, manpage_urls: dict[str, str], revision: str, - document_type: str, - varlist_id: str, - id_prefix: str, markdown_by_default: bool): super().__init__(manpage_urls) self._options = {} self._revision = revision - self._document_type = document_type - self._varlist_id = varlist_id - self._id_prefix = id_prefix self._markdown_by_default = markdown_by_default + def _sorted_options(self) -> list[tuple[str, RenderedOption]]: + keys = list(self._options.keys()) + keys.sort(key=lambda opt: [ (0 if p.startswith("enable") else 1 if p.startswith("package") else 2, p) + for p in self._options[opt].loc ]) + return [ (k, self._options[k]) for k in keys ] + def _format_decl_def_loc(self, loc: OptionLoc) -> tuple[Optional[str], str]: # locations can be either plain strings (specific to nixpkgs), or attrsets # { name = "foo/bar.nix"; url = "https://github.com/....."; } @@ -107,9 +112,9 @@ class BaseConverter(Converter): def _render_description(self, desc: str | dict[str, str]) -> list[str]: if isinstance(desc, str) and self._markdown_by_default: - return [ self._render(desc) ] + return [ self._render(desc) ] if desc else [] elif isinstance(desc, dict) and desc.get('_type') == 'mdDoc': - return [ self._render(desc['text']) ] + return [ self._render(desc['text']) ] if desc['text'] else [] else: raise Exception("description has unrecognized type", desc) @@ -117,33 +122,41 @@ class BaseConverter(Converter): def _related_packages_header(self) -> list[str]: raise NotImplementedError() def _convert_one(self, option: dict[str, Any]) -> list[str]: - result = [] + blocks: list[list[str]] = [] if desc := option.get('description'): - result += self._render_description(desc) + blocks.append(self._render_description(desc)) if typ := option.get('type'): ro = " *(read only)*" if option.get('readOnly', False) else "" - result.append(self._render(f"*Type:* {md_escape(typ)}{ro}")) + blocks.append([ self._render(f"*Type:*\n{md_escape(typ)}{ro}") ]) - result += self._render_code(option, 'default') - result += self._render_code(option, 'example') + if option.get('default'): + blocks.append(self._render_code(option, 'default')) + if option.get('example'): + blocks.append(self._render_code(option, 'example')) if related := option.get('relatedPackages'): - result += self._related_packages_header() - result.append(self._render(related)) + blocks.append(self._related_packages_header()) + blocks[-1].append(self._render(related)) if decl := option.get('declarations'): - result += self._render_decl_def("Declared by", decl) + blocks.append(self._render_decl_def("Declared by", decl)) if defs := option.get('definitions'): - result += self._render_decl_def("Defined by", defs) + blocks.append(self._render_decl_def("Defined by", defs)) - return result + for part in [ p for p in blocks[0:-1] if p ]: + part.append(self.__option_block_separator__) + + return [ l for part in blocks for l in part ] + + def _render_option(self, name: str, option: dict[str, Any]) -> RenderedOption: + try: + return RenderedOption(option['loc'], self._convert_one(option)) + except Exception as e: + raise Exception(f"Failed to render option {name}") from e def add_options(self, options: dict[str, Any]) -> None: for (name, option) in options.items(): - try: - self._options[name] = RenderedOption(option['loc'], self._convert_one(option)) - except Exception as e: - raise Exception(f"Failed to render option {name}") from e + self._options[name] = self._render_option(name, option) @abstractmethod def finalize(self) -> str: raise NotImplementedError() @@ -159,15 +172,27 @@ class OptionsDocBookRenderer(DocBookRenderer): # TODO keep optionsDocBook diff small. remove soon if rendering is still good. def ordered_list_open(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, env: MutableMapping[str, Any]) -> str: - token.attrs['compact'] = False + token.meta['compact'] = False return super().ordered_list_open(token, tokens, i, options, env) def bullet_list_open(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, env: MutableMapping[str, Any]) -> str: - token.attrs['compact'] = False + token.meta['compact'] = False return super().bullet_list_open(token, tokens, i, options, env) class DocBookConverter(BaseConverter): __renderer__ = OptionsDocBookRenderer + __option_block_separator__ = "" + + def __init__(self, manpage_urls: dict[str, str], + revision: str, + markdown_by_default: bool, + document_type: str, + varlist_id: str, + id_prefix: str): + super().__init__(manpage_urls, revision, markdown_by_default) + self._document_type = document_type + self._varlist_id = varlist_id + self._id_prefix = id_prefix def _render_code(self, option: dict[str, Any], key: str) -> list[str]: if lit := option_is(option, key, 'literalDocBook'): @@ -207,10 +232,6 @@ class DocBookConverter(BaseConverter): return [ "" ] def finalize(self) -> str: - keys = list(self._options.keys()) - keys.sort(key=lambda opt: [ (0 if p.startswith("enable") else 1 if p.startswith("package") else 2, p) - for p in self._options[opt].loc ]) - result = [] result.append('') @@ -227,7 +248,7 @@ class DocBookConverter(BaseConverter): f' xml:id="{self._varlist_id}">', ] - for name in keys: + for (name, opt) in self._sorted_options(): id = make_xml_id(self._id_prefix + name) result += [ "", @@ -236,7 +257,7 @@ class DocBookConverter(BaseConverter): f""), "" ] - result += self._options[name].lines + result += opt.lines result += [ "", "" @@ -248,6 +269,125 @@ class DocBookConverter(BaseConverter): return "\n".join(result) +class OptionsManpageRenderer(ManpageRenderer): + pass + +class ManpageConverter(BaseConverter): + def __renderer__(self, manpage_urls: Mapping[str, str], + parser: Optional[markdown_it.MarkdownIt] = None) -> OptionsManpageRenderer: + return OptionsManpageRenderer(manpage_urls, self._options_by_id, parser) + + __option_block_separator__ = ".sp" + + _options_by_id: dict[str, str] + _links_in_last_description: Optional[list[str]] = None + + def __init__(self, revision: str, markdown_by_default: bool): + self._options_by_id = {} + super().__init__({}, revision, markdown_by_default) + + def _render_option(self, name: str, option: dict[str, Any]) -> RenderedOption: + assert isinstance(self._md.renderer, OptionsManpageRenderer) + links = self._md.renderer.link_footnotes = [] + result = super()._render_option(name, option) + self._md.renderer.link_footnotes = None + return result._replace(links=links) + + def add_options(self, options: dict[str, Any]) -> None: + for (k, v) in options.items(): + self._options_by_id[f'#{make_xml_id(f"opt-{k}")}'] = k + return super().add_options(options) + + def _render_code(self, option: dict[str, Any], key: str) -> list[str]: + if lit := option_is(option, key, 'literalDocBook'): + raise RuntimeError("can't render manpages in the presence of docbook") + else: + assert isinstance(self._md.renderer, OptionsManpageRenderer) + try: + self._md.renderer.inline_code_is_quoted = False + return super()._render_code(option, key) + finally: + self._md.renderer.inline_code_is_quoted = True + + def _render_description(self, desc: str | dict[str, Any]) -> list[str]: + if isinstance(desc, str) and not self._markdown_by_default: + raise RuntimeError("can't render manpages in the presence of docbook") + else: + return super()._render_description(desc) + + def _related_packages_header(self) -> list[str]: + return [ + '\\fIRelated packages:\\fP', + '.sp', + ] + + def _decl_def_header(self, header: str) -> list[str]: + return [ + f'\\fI{man_escape(header)}:\\fP', + ] + + def _decl_def_entry(self, href: Optional[str], name: str) -> list[str]: + return [ + '.RS 4', + f'\\fB{man_escape(name)}\\fP', + '.RE' + ] + + def _decl_def_footer(self) -> list[str]: + return [] + + def finalize(self) -> str: + result = [] + + result += [ + r'''.TH "CONFIGURATION\&.NIX" "5" "01/01/1980" "NixOS" "NixOS Reference Pages"''', + r'''.\" disable hyphenation''', + r'''.nh''', + r'''.\" disable justification (adjust text to left margin only)''', + r'''.ad l''', + r'''.\" enable line breaks after slashes''', + r'''.cflags 4 /''', + r'''.SH "NAME"''', + self._render('{file}`configuration.nix` - NixOS system configuration specification'), + r'''.SH "DESCRIPTION"''', + r'''.PP''', + self._render('The file {file}`/etc/nixos/configuration.nix` contains the ' + 'declarative specification of your NixOS system configuration. ' + 'The command {command}`nixos-rebuild` takes this file and ' + 'realises the system configuration specified therein.'), + r'''.SH "OPTIONS"''', + r'''.PP''', + self._render('You can use the following options in {file}`configuration.nix`.'), + ] + + for (name, opt) in self._sorted_options(): + result += [ + ".PP", + f"\\fB{man_escape(name)}\\fR", + ".RS 4", + ] + result += opt.lines + if links := opt.links: + result.append(self.__option_block_separator__) + md_links = "" + for i in range(0, len(links)): + md_links += "\n" if i > 0 else "" + if links[i].startswith('#opt-'): + md_links += f"{i+1}. see the {{option}}`{self._options_by_id[links[i]]}` option" + else: + md_links += f"{i+1}. " + md_escape(links[i]) + result.append(self._render(md_links)) + + result.append(".RE") + + result += [ + r'''.SH "AUTHORS"''', + r'''.PP''', + r'''Eelco Dolstra and the Nixpkgs/NixOS contributors''', + ] + + return "\n".join(result) + def _build_cli_db(p: argparse.ArgumentParser) -> None: p.add_argument('--manpage-urls', required=True) p.add_argument('--revision', required=True) @@ -258,27 +398,47 @@ def _build_cli_db(p: argparse.ArgumentParser) -> None: p.add_argument("infile") p.add_argument("outfile") +def _build_cli_manpage(p: argparse.ArgumentParser) -> None: + p.add_argument('--revision', required=True) + p.add_argument("infile") + p.add_argument("outfile") + def _run_cli_db(args: argparse.Namespace) -> None: with open(args.manpage_urls, 'r') as manpage_urls: md = DocBookConverter( json.load(manpage_urls), revision = args.revision, + markdown_by_default = args.markdown_by_default, document_type = args.document_type, varlist_id = args.varlist_id, - id_prefix = args.id_prefix, - markdown_by_default = args.markdown_by_default) + id_prefix = args.id_prefix) with open(args.infile, 'r') as f: md.add_options(json.load(f)) with open(args.outfile, 'w') as f: f.write(md.finalize()) +def _run_cli_manpage(args: argparse.Namespace) -> None: + md = ManpageConverter( + revision = args.revision, + # manpage rendering only works if there's no docbook, so we can + # also set markdown_by_default with no ill effects. + markdown_by_default = True) + + with open(args.infile, 'r') as f: + md.add_options(json.load(f)) + with open(args.outfile, 'w') as f: + f.write(md.finalize()) + def build_cli(p: argparse.ArgumentParser) -> None: formats = p.add_subparsers(dest='format', required=True) _build_cli_db(formats.add_parser('docbook')) + _build_cli_manpage(formats.add_parser('manpage')) def run_cli(args: argparse.Namespace) -> None: if args.format == 'docbook': _run_cli_db(args) + elif args.format == 'manpage': + _run_cli_manpage(args) else: raise RuntimeError('format not hooked up', args) diff --git a/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/types.py b/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/types.py index 7814b3a4854b..d20e056aacdc 100644 --- a/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/types.py +++ b/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/types.py @@ -7,7 +7,9 @@ from markdown_it.utils import OptionsDict OptionLoc = str | dict[str, str] Option = dict[str, str | dict[str, str] | list[OptionLoc]] -RenderedOption = NamedTuple('RenderedOption', [('loc', list[str]), - ('lines', list[str])]) +class RenderedOption(NamedTuple): + loc: list[str] + lines: list[str] + links: Optional[list[str]] = None RenderFn = Callable[[Token, Sequence[Token], int, OptionsDict, MutableMapping[str, Any]], str] diff --git a/pkgs/tools/nix/nixos-render-docs/src/tests/sample_md.py b/pkgs/tools/nix/nixos-render-docs/src/tests/sample_md.py new file mode 100644 index 000000000000..73a64fde8364 --- /dev/null +++ b/pkgs/tools/nix/nixos-render-docs/src/tests/sample_md.py @@ -0,0 +1,62 @@ +sample1 = """\ +:::: {.warning} +foo +::: {.note} +nested +::: +:::: + +[ + multiline +](link) + +{manpage}`man(1)` reference + +[some [nested]{#a} anchors]{#b} + +*emph* **strong** *nesting emph **and strong** and `code`* + +- wide bullet + +- list + +1. wide ordered + +2. list + +- narrow bullet +- list + +1. narrow ordered +2. list + +> quotes +>> with *nesting* +>> +>> nested code block +> +> - and lists +> - ``` +> containing code +> ``` +> +> and more quote + +100. list starting at 100 +1. goes on + +deflist +: > with a quote + > and stuff + + code block + + ``` + fenced block + ``` + + text + +more stuff in same deflist +: foo +""" diff --git a/pkgs/tools/nix/nixos-render-docs/src/tests/test_lists.py b/pkgs/tools/nix/nixos-render-docs/src/tests/test_lists.py index 0f5d28407367..660c410a85cc 100644 --- a/pkgs/tools/nix/nixos-render-docs/src/tests/test_lists.py +++ b/pkgs/tools/nix/nixos-render-docs/src/tests/test_lists.py @@ -13,9 +13,11 @@ def test_list_wide(ordered: bool) -> None: ("ordered", "ol", ".", "1.", "2.", "1", "2") if ordered else ("bullet", "ul", "-", "-", "-", "", "") ) c = Converter({}) + meta = { 'end': int(e2[:-1]) } if ordered else {} + meta['compact'] = False assert c._parse(f"{e1} a\n\n{e2} b") == [ - Token(type=f'{t}_list_open', tag=tag, nesting=1, attrs={'compact': False}, map=[0, 3], level=0, - children=None, content='', markup=m, info='', meta={}, block=True, hidden=False), + Token(type=f'{t}_list_open', tag=tag, nesting=1, attrs={}, map=[0, 3], level=0, + children=None, content='', markup=m, info='', meta=meta, block=True, hidden=False), Token(type='list_item_open', tag='li', nesting=1, attrs={}, map=[0, 2], level=1, children=None, content='', markup=m, info=i1, meta={}, block=True, hidden=False), Token(type='paragraph_open', tag='p', nesting=1, attrs={}, map=[0, 1], level=2, children=None, @@ -54,9 +56,11 @@ def test_list_narrow(ordered: bool) -> None: ("ordered", "ol", ".", "1.", "2.", "1", "2") if ordered else ("bullet", "ul", "-", "-", "-", "", "") ) c = Converter({}) + meta = { 'end': int(e2[:-1]) } if ordered else {} + meta['compact'] = True assert c._parse(f"{e1} a\n{e2} b") == [ - Token(type=f'{t}_list_open', tag=tag, nesting=1, attrs={'compact': True}, map=[0, 2], level=0, - children=None, content='', markup=m, info='', meta={}, block=True, hidden=False), + Token(type=f'{t}_list_open', tag=tag, nesting=1, attrs={}, map=[0, 2], level=0, + children=None, content='', markup=m, info='', meta=meta, block=True, hidden=False), Token(type='list_item_open', tag='li', nesting=1, attrs={}, map=[0, 1], level=1, children=None, content='', markup=m, info=i1, meta={}, block=True, hidden=False), Token(type='paragraph_open', tag='p', nesting=1, attrs={}, map=[0, 1], level=2, children=None, @@ -89,12 +93,12 @@ def test_list_narrow(ordered: bool) -> None: content='', markup=m, info='', meta={}, block=True, hidden=False) ] assert c._parse(f"{e1} - a\n{e2} b") == [ - Token(type=f'{t}_list_open', tag=tag, nesting=1, attrs={'compact': True}, map=[0, 2], level=0, - children=None, content='', markup=m, info='', meta={}, block=True, hidden=False), + Token(type=f'{t}_list_open', tag=tag, nesting=1, attrs={}, map=[0, 2], level=0, + children=None, content='', markup=m, info='', meta=meta, block=True, hidden=False), Token(type='list_item_open', tag='li', nesting=1, attrs={}, map=[0, 1], level=1, children=None, content='', markup=m, info=i1, meta={}, block=True, hidden=False), - Token(type='bullet_list_open', tag='ul', nesting=1, attrs={'compact': True}, map=[0, 1], level=2, - children=None, content='', markup='-', info='', meta={}, block=True, hidden=False), + Token(type='bullet_list_open', tag='ul', nesting=1, attrs={}, map=[0, 1], level=2, + children=None, content='', markup='-', info='', meta={'compact': True}, block=True, hidden=False), Token(type='list_item_open', tag='li', nesting=1, attrs={}, map=[0, 1], level=3, children=None, content='', markup='-', info='', meta={}, block=True, hidden=False), Token(type='paragraph_open', tag='p', nesting=1, attrs={}, map=[0, 1], level=4, children=None, @@ -131,12 +135,12 @@ def test_list_narrow(ordered: bool) -> None: content='', markup=m, info='', meta={}, block=True, hidden=False) ] assert c._parse(f"{e1} - a\n{e2} - b") == [ - Token(type=f'{t}_list_open', tag=tag, nesting=1, attrs={'compact': True}, map=[0, 2], level=0, - children=None, content='', markup=m, info='', meta={}, block=True, hidden=False), + Token(type=f'{t}_list_open', tag=tag, nesting=1, attrs={}, map=[0, 2], level=0, + children=None, content='', markup=m, info='', meta=meta, block=True, hidden=False), Token(type='list_item_open', tag='li', nesting=1, attrs={}, map=[0, 1], level=1, children=None, content='', markup=m, info=i1, meta={}, block=True, hidden=False), - Token(type='bullet_list_open', tag='ul', nesting=1, attrs={'compact': True}, map=[0, 1], level=2, - children=None, content='', markup='-', info='', meta={}, block=True, hidden=False), + Token(type='bullet_list_open', tag='ul', nesting=1, attrs={}, map=[0, 1], level=2, + children=None, content='', markup='-', info='', meta={'compact': True}, block=True, hidden=False), Token(type='list_item_open', tag='li', nesting=1, attrs={}, map=[0, 1], level=3, children=None, content='', markup='-', info='', meta={}, block=True, hidden=False), Token(type='paragraph_open', tag='p', nesting=1, attrs={}, map=[0, 1], level=4, children=None, @@ -157,8 +161,8 @@ def test_list_narrow(ordered: bool) -> None: content='', markup=m, info='', meta={}, block=True, hidden=False), Token(type='list_item_open', tag='li', nesting=1, attrs={}, map=[1, 2], level=1, children=None, content='', markup=m, info=i2, meta={}, block=True, hidden=False), - Token(type='bullet_list_open', tag='ul', nesting=1, attrs={'compact': True}, map=[1, 2], level=2, - children=None, content='', markup='-', info='', meta={}, block=True, hidden=False), + Token(type='bullet_list_open', tag='ul', nesting=1, attrs={}, map=[1, 2], level=2, + children=None, content='', markup='-', info='', meta={'compact': True}, block=True, hidden=False), Token(type='list_item_open', tag='li', nesting=1, attrs={}, map=[1, 2], level=3, children=None, content='', markup='-', info='', meta={}, block=True, hidden=False), Token(type='paragraph_open', tag='p', nesting=1, attrs={}, map=[1, 2], level=4, children=None, diff --git a/pkgs/tools/nix/nixos-render-docs/src/tests/test_manpage.py b/pkgs/tools/nix/nixos-render-docs/src/tests/test_manpage.py new file mode 100644 index 000000000000..fbfd21358a85 --- /dev/null +++ b/pkgs/tools/nix/nixos-render-docs/src/tests/test_manpage.py @@ -0,0 +1,177 @@ +import nixos_render_docs + +from sample_md import sample1 + +from typing import Mapping, Optional + +import markdown_it + +class Converter(nixos_render_docs.md.Converter): + def __renderer__(self, manpage_urls: Mapping[str, str], + parser: Optional[markdown_it.MarkdownIt] = None + ) -> nixos_render_docs.manpage.ManpageRenderer: + return nixos_render_docs.manpage.ManpageRenderer(manpage_urls, self.options_by_id, parser) + + def __init__(self, manpage_urls: Mapping[str, str], options_by_id: dict[str, str] = {}): + self.options_by_id = options_by_id + super().__init__(manpage_urls) + +def test_inline_code() -> None: + c = Converter({}) + assert c._render("1 `x a x` 2") == "1 \\fR\\(oqx a x\\(cq\\fP 2" + +def test_fonts() -> None: + c = Converter({}) + assert c._render("*a **b** c*") == "\\fIa \\fBb\\fI c\\fR" + assert c._render("*a [1 `2`](3) c*") == "\\fIa \\fB1 \\fR\\(oq2\\(cq\\fP\\fI c\\fR" + +def test_expand_link_targets() -> None: + c = Converter({}, { '#foo1': "bar", "#foo2": "bar" }) + assert (c._render("[a](#foo1) [](#foo2) [b](#bar1) [](#bar2)") == + "\\fBa\\fR \\fBbar\\fR \\fBb\\fR \\fB\\fR") + +def test_collect_links() -> None: + c = Converter({}, { '#foo': "bar" }) + assert isinstance(c._md.renderer, nixos_render_docs.manpage.ManpageRenderer) + c._md.renderer.link_footnotes = [] + assert c._render("[a](link1) [b](link2)") == "\\fBa\\fR[1]\\fR \\fBb\\fR[2]\\fR" + assert c._md.renderer.link_footnotes == ['link1', 'link2'] + +def test_dedup_links() -> None: + c = Converter({}, { '#foo': "bar" }) + assert isinstance(c._md.renderer, nixos_render_docs.manpage.ManpageRenderer) + c._md.renderer.link_footnotes = [] + assert c._render("[a](link) [b](link)") == "\\fBa\\fR[1]\\fR \\fBb\\fR[1]\\fR" + assert c._md.renderer.link_footnotes == ['link'] + +def test_full() -> None: + c = Converter({ 'man(1)': 'http://example.org' }) + assert c._render(sample1) == """\ +.sp +.RS 4 +\\fBWarning\\fP +.br +foo +.sp +.RS 4 +\\fBNote\\fP +.br +nested +.RE +.RE +.sp +\\fBmultiline\\fR +.sp +\\fBman\\fP\\fR(1)\\fP reference +.sp +some nested anchors +.sp +\\fIemph\\fR \\fBstrong\\fR \\fInesting emph \\fBand strong\\fI and \\fR\\(oqcode\\(cq\\fP\\fR +.sp +.RS 4 +\\h'-2'\\fB\\[u2022]\\fP\\h'1'\\c +wide bullet +.RE +.sp +.RS 4 +\\h'-2'\\fB\\[u2022]\\fP\\h'1'\\c +list +.RE +.sp +.RS 4 +\\h'-3'\\fB1\\&.\\fP\\h'1'\\c +wide ordered +.RE +.sp +.RS 4 +\\h'-3'\\fB2\\&.\\fP\\h'1'\\c +list +.RE +.sp +.RS 4 +\\h'-2'\\fB\\[u2022]\\fP\\h'1'\\c +narrow bullet +.RE +.RS 4 +\\h'-2'\\fB\\[u2022]\\fP\\h'1'\\c +list +.RE +.sp +.RS 4 +\\h'-3'\\fB1\\&.\\fP\\h'1'\\c +narrow ordered +.RE +.RS 4 +\\h'-3'\\fB2\\&.\\fP\\h'1'\\c +list +.RE +.sp +.RS 4 +\\h'-3'\\fI\\(lq\\(rq\\fP\\h'1'\\c +quotes +.sp +.RS 4 +\\h'-3'\\fI\\(lq\\(rq\\fP\\h'1'\\c +with \\fInesting\\fR +.sp +.RS 4 +.nf +nested code block +.fi +.RE +.RE +.sp +.RS 4 +\\h'-2'\\fB\\[u2022]\\fP\\h'1'\\c +and lists +.RE +.RS 4 +\\h'-2'\\fB\\[u2022]\\fP\\h'1'\\c +.sp +.RS 4 +.nf +containing code +.fi +.RE +.RE +.sp +and more quote +.RE +.sp +.RS 6 +\\h'-5'\\fB100\\&.\\fP\\h'1'\\c +list starting at 100 +.RE +.RS 6 +\\h'-5'\\fB101\\&.\\fP\\h'1'\\c +goes on +.RE +.RS 4 +.PP +deflist +.RS 4 +.RS 4 +\\h'-3'\\fI\\(lq\\(rq\\fP\\h'1'\\c +with a quote and stuff +.RE +.sp +.RS 4 +.nf +code block +.fi +.RE +.sp +.RS 4 +.nf +fenced block +.fi +.RE +.sp +text +.RE +.PP +more stuff in same deflist +.RS 4 +foo +.RE +.RE""" diff --git a/pkgs/tools/nix/nixos-render-docs/src/tests/test_options.py b/pkgs/tools/nix/nixos-render-docs/src/tests/test_options.py index 5a02fabde0fb..9608ed639218 100644 --- a/pkgs/tools/nix/nixos-render-docs/src/tests/test_options.py +++ b/pkgs/tools/nix/nixos-render-docs/src/tests/test_options.py @@ -4,7 +4,7 @@ from markdown_it.token import Token import pytest def test_option_headings() -> None: - c = nixos_render_docs.options.DocBookConverter({}, 'local', 'none', 'vars', 'opt-', False) + c = nixos_render_docs.options.DocBookConverter({}, 'local', False, 'none', 'vars', 'opt-') with pytest.raises(RuntimeError) as exc: c._render("# foo") assert exc.value.args[0] == 'md token not supported in options doc' diff --git a/pkgs/tools/security/exploitdb/default.nix b/pkgs/tools/security/exploitdb/default.nix index 9718f0095d02..a710daca6013 100644 --- a/pkgs/tools/security/exploitdb/default.nix +++ b/pkgs/tools/security/exploitdb/default.nix @@ -6,13 +6,13 @@ stdenv.mkDerivation rec { pname = "exploitdb"; - version = "2022-11-22"; + version = "2023-02-03"; src = fetchFromGitLab { owner = "exploit-database"; repo = pname; rev = "refs/tags/${version}"; - hash = "sha256-G871FvwekcF5uMq7NRoWuIb9UqzIbMniboKlUzgCaeI="; + hash = "sha256-uTyUACY9Pm+gMuLrttGCNZ/UQaOW/h12ysY/noTkw7A="; }; nativeBuildInputs = [ diff --git a/pkgs/tools/security/kube-bench/default.nix b/pkgs/tools/security/kube-bench/default.nix index 9492475aadb5..80be86403adf 100644 --- a/pkgs/tools/security/kube-bench/default.nix +++ b/pkgs/tools/security/kube-bench/default.nix @@ -2,15 +2,15 @@ buildGoModule rec { pname = "kube-bench"; - version = "0.6.10"; + version = "0.6.11"; src = fetchFromGitHub { owner = "aquasecurity"; repo = pname; rev = "v${version}"; - sha256 = "sha256-0rhs5MZzf9E848FxYuZdXTarYG1BwnfS9HDz9iYR/vo="; + sha256 = "sha256-fh7kVYajpn8DKteyvAJf3dk1UrSXFX2gKtTAvuiOjpY="; }; - vendorSha256 = "sha256-uaFEtWI5tdL0egaJPTKh7k66Kyjq+N8YDlUGJDtFRqY="; + vendorHash = "sha256-PM8VnPNMLhDhRVy6xafW0kuTHgd374r0Ol2U9k8LNIw="; nativeBuildInputs = [ installShellFiles ]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 94664aeec739..b4c8c04d7d11 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -780,6 +780,8 @@ with pkgs; flare-floss = callPackage ../tools/security/flare-floss { }; + flare-signal = callPackage ../applications/networking/instant-messengers/flare-signal { }; + prefer-remote-fetch = import ../build-support/prefer-remote-fetch; global-platform-pro = callPackage ../development/tools/global-platform-pro { }; @@ -7897,6 +7899,8 @@ with pkgs; gyb = callPackage ../tools/backup/gyb { }; + harminv = callPackage ../development/libraries/science/chemistry/harminv { }; + igrep = callPackage ../tools/text/igrep { inherit (darwin.apple_sdk.frameworks) Security; }; @@ -8789,6 +8793,8 @@ with pkgs; kibi = callPackage ../applications/editors/kibi { }; + kio-admin = libsForQt5.callPackage ../tools/filesystems/kio-admin { }; + kio-fuse = libsForQt5.callPackage ../tools/filesystems/kio-fuse { }; kismet = callPackage ../applications/networking/sniffers/kismet { }; @@ -12662,6 +12668,8 @@ with pkgs; tthsum = callPackage ../applications/misc/tthsum { }; + ttdl = callPackage ../applications/misc/ttdl { }; + ttp = with python3.pkgs; toPythonApplication ttp; trace-cmd = callPackage ../os-specific/linux/trace-cmd { }; @@ -23045,6 +23053,10 @@ with pkgs; SDL2_image = callPackage ../development/libraries/SDL2_image { inherit (darwin.apple_sdk.frameworks) Foundation; }; + SDL2_image_2_0_5 = SDL2_image.override({ # Pinned for pygame, toppler + version = "2.0.5"; + hash = "sha256-vdX24CZoL31+G+C2BRsgnaL0AqLdi9HEvZwlrSYxCNA"; + }); SDL2_mixer = callPackage ../development/libraries/SDL2_mixer { inherit (darwin.apple_sdk.frameworks) CoreServices AudioUnit AudioToolbox; @@ -24866,6 +24878,7 @@ with pkgs; mariadb_106 mariadb_108 mariadb_109 + mariadb_1010 ; mariadb = mariadb_106; mariadb-embedded = mariadb.override { withEmbedded = true; }; @@ -26053,7 +26066,7 @@ with pkgs; linux-doc = callPackage ../os-specific/linux/kernel/htmldocs.nix { }; - cryptodev = linuxKernel.packages.linux_4_9.cryptodev; + cryptodev = linuxPackages.cryptodev; dpdk = callPackage ../os-specific/linux/dpdk { kernel = null; # dpdk modules are in linuxPackages.dpdk.kmod @@ -27318,6 +27331,8 @@ with pkgs; ledger-udev-rules = callPackage ../os-specific/linux/ledger-udev-rules {}; + libGDSII = callPackage ../development/libraries/science/chemistry/libGDSII { }; + inherit (callPackages ../data/fonts/liberation-fonts { }) liberation_ttf_v1 liberation_ttf_v2 @@ -30194,6 +30209,13 @@ with pkgs; shepherd = nodePackages."@nerdwallet/shepherd"; + inherit (callPackage ../applications/virtualization/singularity/packages.nix { }) + apptainer + singularity + apptainer-overriden-nixos + singularity-overriden-nixos + ; + skate = callPackage ../applications/misc/skate { }; slack = callPackage ../applications/networking/instant-messengers/slack { }; @@ -30204,8 +30226,6 @@ with pkgs; slweb = callPackage ../applications/misc/slweb { }; - singularity = callPackage ../applications/virtualization/singularity { }; - sonixd = callPackage ../applications/audio/sonixd { }; sosreport = python3Packages.callPackage ../applications/logging/sosreport { }; @@ -30583,7 +30603,11 @@ with pkgs; jwm-settings-manager = callPackage ../applications/window-managers/jwm/jwm-settings-manager.nix { }; - k3s = callPackage ../applications/networking/cluster/k3s { }; + k3s_1_23 = callPackage ../applications/networking/cluster/k3s/1_23 { }; + k3s_1_24 = callPackage ../applications/networking/cluster/k3s/1_24 { }; + k3s_1_25 = callPackage ../applications/networking/cluster/k3s/1_25 { }; + k3s_1_26 = callPackage ../applications/networking/cluster/k3s/1_26 { }; + k3s = k3s_1_26; k3sup = callPackage ../applications/networking/cluster/k3sup {}; @@ -33876,7 +33900,9 @@ with pkgs; pipewire = null; }; - chatterino2 = libsForQt5.callPackage ../applications/networking/instant-messengers/chatterino2 {}; + chatterino2 = libsForQt5.callPackage ../applications/networking/instant-messengers/chatterino2 { + stdenv = if stdenv.isDarwin then darwin.apple_sdk_11_0.stdenv else stdenv; + }; weston = callPackage ../applications/window-managers/weston { }; @@ -35734,7 +35760,9 @@ with pkgs; tome4 = callPackage ../games/tome4 { }; - toppler = callPackage ../games/toppler { }; + toppler = callPackage ../games/toppler { + SDL2_image = SDL2_image_2_0_5; + }; torus-trooper = callPackage ../games/torus-trooper { }; diff --git a/pkgs/top-level/php-packages.nix b/pkgs/top-level/php-packages.nix index 8b1bbecb249f..827985cab7e5 100644 --- a/pkgs/top-level/php-packages.nix +++ b/pkgs/top-level/php-packages.nix @@ -84,6 +84,7 @@ lib.makeScope pkgs.newScope (self: with self; { , zendExtension ? false , doCheck ? true , extName ? name + , allowLocalNetworking ? false , ... }@args: stdenv.mkDerivation ((builtins.removeAttrs args [ "name" ]) // { pname = "php-${name}"; @@ -103,6 +104,7 @@ lib.makeScope pkgs.newScope (self: with self; { ]; inherit configureFlags internalDeps buildInputs zendExtension doCheck; + __darwinAllowLocalNetworking = allowLocalNetworking; preConfigurePhases = [ "cdToExtensionRootPhase" @@ -412,7 +414,7 @@ lib.makeScope pkgs.newScope (self: with self; { ]; zendExtension = true; # Tests launch the builtin webserver. - __darwinAllowLocalNetworking = true; + allowLocalNetworking = true; } { name = "openssl"; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 988f7e71981c..48950e376d45 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -5804,6 +5804,8 @@ self: super: with self; { mediapy = callPackage ../development/python-modules/mediapy { }; + meep = callPackage ../development/python-modules/meep { }; + meilisearch = callPackage ../development/python-modules/meilisearch { }; meinheld = callPackage ../development/python-modules/meinheld { }; @@ -8070,6 +8072,7 @@ self: super: with self; { pygame = callPackage ../development/python-modules/pygame { inherit (pkgs.darwin.apple_sdk.frameworks) AppKit; + SDL2_image = pkgs.SDL2_image_2_0_5; }; pygame_sdl2 = callPackage ../development/python-modules/pygame_sdl2 { }; @@ -12183,7 +12186,9 @@ self: super: with self; { inherit (pkgs.darwin.apple_sdk.frameworks) CoreServices; }; - watchfiles = callPackage ../development/python-modules/watchfiles { }; + watchfiles = callPackage ../development/python-modules/watchfiles { + inherit (pkgs.darwin.apple_sdk.frameworks) CoreServices; + }; watchgod = callPackage ../development/python-modules/watchgod { };