diff --git a/doc/release-notes/rl-2605.section.md b/doc/release-notes/rl-2605.section.md index 9734b4b19172..2bb9d8021c20 100644 --- a/doc/release-notes/rl-2605.section.md +++ b/doc/release-notes/rl-2605.section.md @@ -140,6 +140,8 @@ retained for packages that have not completed migration. `asio_1_10` has been removed as no packages depend on it anymore. `asio` also no longer propagates `boost` as it is used independent from `boost` in most cases. +- `docker-color-output` has been updated from major version 2 to 3. One breaking change is, that they switched to [YAML-based configuration files](https://github.com/devemio/docker-color-output?tab=readme-ov-file#configuration). + - `stalwart-mail` has been renamed to `stalwart` - Ethercalc and its associated module have been removed, as the package is unmaintained and cannot be installed from source with npm now. diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 9a7bae27a8b7..b3e0562793d7 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -3576,6 +3576,12 @@ githubId = 77934086; keys = [ { fingerprint = "4CA3 48F6 8FE1 1777 8EDA 3860 B9A2 C1B0 25EC 2C55"; } ]; }; + blemouzy = { + email = "blemouzy.ml@gmail.com"; + github = "blemouzy"; + githubId = 124877155; + name = "Benjamin Lemouzy"; + }; blenderfreaky = { name = "blenderfreaky"; email = "nix@blenderfreaky.de"; @@ -3625,6 +3631,12 @@ githubId = 535135; name = "Brennon Loveless"; }; + Blu3 = { + name = "Blu3"; + email = "Blu3SoulsIT@gmail.com"; + github = "Blu3SoulsIT"; + githubId = 96670566; + }; blusk = { email = "bluskript@gmail.com"; github = "bluskript"; @@ -3649,6 +3661,12 @@ github = "bmwalters"; githubId = 4380777; }; + bnjmnt4n = { + name = "Benjamin Tan"; + github = "bnjmnt4n"; + githubId = 813865; + email = "benjamin@dev.ofcr.se"; + }; bnlrnz = { github = "bnlrnz"; githubId = 11310385; @@ -5177,6 +5195,13 @@ email = "codenil@proton.me"; name = "Dan Lock"; }; + CodeF53 = { + github = "CodeF53"; + githubId = 37855219; + matrix = "@codef53:matrix.org"; + email = "fseusb@gmail.com"; + name = "cassie"; + }; CodeLongAndProsper90 = { github = "CodeLongAndProsper90"; githubId = 50145141; @@ -15267,6 +15292,12 @@ githubId = 591860; name = "Lionello Lunesu"; }; + lisanna-dettwyler = { + email = "lisanna.dettwyler@gmail.com"; + github = "lisanna-dettwyler"; + githubId = 72424138; + name = "Lisanna Dettwyler"; + }; litchipi = { email = "litchi.pi@proton.me"; github = "litchipi"; @@ -18791,6 +18822,11 @@ githubId = 50854675; name = "Nelson Jeppesen"; }; + nemeott = { + github = "nemeott"; + githubId = 123220311; + name = "Nathan Emeott"; + }; nemin = { name = "Nemin"; github = "Nemin32"; @@ -19594,6 +19630,12 @@ github = "nullishamy"; githubId = 99221043; }; + nullstring1 = { + email = "nullstring1+nixpkgs@nullstring.one"; + name = "nullstring1"; + github = "nullstring1"; + githubId = 53035336; + }; numbleroot = { email = "hello@lennartoldenburg.de"; name = "Lennart Oldenburg"; @@ -24863,7 +24905,7 @@ name = "Johannes Klein"; }; sith-lord-vader = { - email = "abhiayush23@gmail.com"; + email = "nixpkgs@xpertsre.rocks"; github = "sith-lord-vader"; githubId = 24388085; name = "Abhishek Adhikari"; @@ -25209,6 +25251,12 @@ githubId = 13762043; matrix = "@sophie:nue.soopy.moe"; }; + sophronesis = { + email = "oleksandr.buzynnyi@gmail.com"; + github = "sophronesis"; + githubId = 13190573; + name = "Oleksandr Buzynnyi"; + }; sophrosyne = { email = "joshuaortiz@tutanota.com"; github = "sophrosyne97"; diff --git a/nixos/doc/manual/release-notes/rl-2605.section.md b/nixos/doc/manual/release-notes/rl-2605.section.md index db95d663485b..302b48698d08 100644 --- a/nixos/doc/manual/release-notes/rl-2605.section.md +++ b/nixos/doc/manual/release-notes/rl-2605.section.md @@ -38,6 +38,8 @@ - [bentopdf](https://github.com/alam00000/bentopdf), a privacy-first PDF toolkit running completely in-browser. Available as [services.bentopdf](#opt-services.bentopdf.enable). +- [hyprwhspr-rs](https://github.com/better-slop/hyprwhspr-rs), a keybind activated speech-to-text voice dictation utility built for use with Hyprland. Available as `services.hyprwhspr-rs` + - [DankMaterialShell](https://danklinux.com), a complete desktop shell for Wayland compositors built with Quickshell. Available as [programs.dms-shell](#opt-programs.dms-shell.enable). - [dms-greeter](https://danklinux.com), a modern display manager greeter for DankMaterialShell that works with greetd and supports multiple Wayland compositors. Available as [services.displayManager.dms-greeter](#opt-services.displayManager.dms-greeter.enable). @@ -64,6 +66,8 @@ - [Shoko](https://shokoanime.com), an anime management system. Available as [services.shoko](#opt-services.shoko.enable). +- [Drasl](https://github.com/unmojang/drasl), an alternative authentication server for Minecraft. Available as [services.drasl](#opt-services.drasl.enable). + ## Backward Incompatibilities {#sec-release-26.05-incompatibilities} @@ -124,6 +128,8 @@ of pulling the upstream container image from Docker Hub. If you want the old beh The way keybinds and actions are handled have been completely revamped. Please refer to the [default config](https://raw.githubusercontent.com/abenz1267/walker/refs/heads/master/resources/config.toml). +- [services.portunus](#opt-services.portunus.enable) has been upgraded to 2.2.0, which includes a bug fix that may cause existing databases to be rejected if user accounts are configured with malformed email addresses. Please refer to [the upstream release announcement](https://github.com/majewsky/portunus/releases/tag/v2.2.0) for details and instructions on how to fix problematic database entries. + - Support for `reiserfs` in nixpkgs has been removed, following the removal in Linux 6.13. - `services.tor` no longer bind mounts Unix sockets of onion services into its chroot diff --git a/nixos/modules/config/malloc.nix b/nixos/modules/config/malloc.nix index 403e7900c008..bc6a27673e3e 100644 --- a/nixos/modules/config/malloc.nix +++ b/nixos/modules/config/malloc.nix @@ -122,6 +122,31 @@ in }; config = lib.mkIf (cfg.provider != "libc") { + # Legacy (LLVM < 13) Scudo uses CamelCase options. + # Standalone (LLVM >= 13) Scudo uses snake_case options. + # NixOS switched in 25.11: https://github.com/NixOS/nixpkgs/pull/444605 + warnings = + let + scudoOpts = config.environment.variables.SCUDO_OPTIONS; + + legacyOptionNames = [ + "QuarantineSizeKb" + "QuarantineChunksUpToSize" + "ThreadLocalQuarantineSizeKb" + "DeallocationTypeMismatch" + "DeleteSizeMismatch" + "ZeroContents" + ]; + + # Check which legacy options are in SCUDO_OPTIONS, + # so we can warn the user about the change. + legacyOptionsUsed = lib.lists.filter (opt: lib.strings.hasInfix opt scudoOpts) legacyOptionNames; + in + lib.optional (cfg.provider == "scudo" && legacyOptionsUsed != [ ]) '' + environment.variables.SCUDO_OPTIONS: ${lib.concatStringsSep ", " legacyOptionsUsed} is/are no longer valid Scudo options. + Use snake_case instead of CamelCase: https://llvm.org/docs/ScudoHardenedAllocator.html#options + ''; + environment.etc."ld-nix.so.preload".text = '' ${providerLibPath} ''; diff --git a/nixos/modules/i18n/input-method/ibus.nix b/nixos/modules/i18n/input-method/ibus.nix index 4d5535d63e3e..41b88e4088c0 100644 --- a/nixos/modules/i18n/input-method/ibus.nix +++ b/nixos/modules/i18n/input-method/ibus.nix @@ -25,7 +25,9 @@ let Type=Application Exec=${ibusPackage}/bin/ibus-daemon --daemonize --xim ${impanel} # GNOME will launch ibus using systemd - NotShowIn=GNOME; + # ibus complains loudly when launched from this autoStart file under KDE + # KDE will launch ibus from kwin if enabled in keyboard -> virtual keyboard + NotShowIn=GNOME;KDE; ''; }; in diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index fde4180a04a6..2db1636f824e 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -873,6 +873,7 @@ ./services/misc/headphones.nix ./services/misc/heisenbridge.nix ./services/misc/homepage-dashboard.nix + ./services/misc/hyprwhspr-rs.nix ./services/misc/ihaskell.nix ./services/misc/iio-niri.nix ./services/misc/input-remapper.nix @@ -1621,6 +1622,7 @@ ./services/web-apps/docuseal.nix ./services/web-apps/dokuwiki.nix ./services/web-apps/dolibarr.nix + ./services/web-apps/drasl.nix ./services/web-apps/drupal.nix ./services/web-apps/echoip.nix ./services/web-apps/eintopf.nix diff --git a/nixos/modules/services/cluster/patroni/default.nix b/nixos/modules/services/cluster/patroni/default.nix index aa44adb9b02c..3b3e5d03a35b 100644 --- a/nixos/modules/services/cluster/patroni/default.nix +++ b/nixos/modules/services/cluster/patroni/default.nix @@ -254,7 +254,7 @@ in lib.mapAttrs (name: path: ''export ${name}="$(< ${lib.escapeShellArg path})"'') cfg.environmentFiles ) )} - exec ${pkgs.patroni}/bin/patroni ${configFile} + exec ${lib.getExe pkgs.patroni} ${configFile} ''; serviceConfig = lib.mkMerge [ diff --git a/nixos/modules/services/hardware/tuned.nix b/nixos/modules/services/hardware/tuned.nix index 1ce62f6ff011..65a857f4fde8 100644 --- a/nixos/modules/services/hardware/tuned.nix +++ b/nixos/modules/services/hardware/tuned.nix @@ -9,11 +9,53 @@ let cfg = config.services.tuned; moduleFromName = name: lib.getAttrFromPath (lib.splitString "." name) config; - - settingsFormat = pkgs.formats.iniWithGlobalSection { }; - profileFormat = pkgs.formats.ini { }; ppdSettingsFormat = pkgs.formats.ini { }; + profileFormat = pkgs.formats.ini { }; + recommendFormat = pkgs.formats.ini { }; + settingsFormat = pkgs.formats.iniWithGlobalSection { }; + ppdSettingsSubmodule = { + freeformType = ppdSettingsFormat.type; + + options = { + main = lib.mkOption { + type = lib.types.submodule { + options = { + default = lib.mkOption { + type = lib.types.str; + default = "balanced"; + description = "Default PPD profile."; + example = "performance"; + }; + + battery_detection = lib.mkEnableOption "battery detection" // { + default = true; + }; + }; + }; + default = { }; + description = "Core configuration for power-profiles-daemon support."; + }; + + profiles = lib.mkOption { + type = lib.types.attrsOf lib.types.str; + default = { + power-saver = "powersave"; + balanced = "balanced"; + performance = "throughput-performance"; + }; + description = "Map of PPD profiles to native TuneD profiles."; + }; + + battery = lib.mkOption { + type = lib.types.attrsOf lib.types.str; + default = { + balanced = "balanced-battery"; + }; + description = "Map of PPD battery states to TuneD profiles."; + }; + }; + }; settingsSubmodule = { freeformType = settingsFormat.type; @@ -61,66 +103,23 @@ let }; }; }; - - ppdSettingsSubmodule = { - freeformType = ppdSettingsFormat.type; - - options = { - main = lib.mkOption { - type = lib.types.submodule { - options = { - default = lib.mkOption { - type = lib.types.str; - default = "balanced"; - description = "Default PPD profile."; - example = "performance"; - }; - - battery_detection = lib.mkEnableOption "battery detection" // { - default = true; - }; - }; - }; - default = { }; - description = "Core configuration for power-profiles-daemon support."; - }; - - profiles = lib.mkOption { - type = lib.types.attrsOf lib.types.str; - default = { - power-saver = "powersave"; - balanced = "balanced"; - performance = "throughput-performance"; - }; - description = "Map of PPD profiles to native TuneD profiles."; - }; - - battery = lib.mkOption { - type = lib.types.attrsOf lib.types.str; - default = { - balanced = "balanced-battery"; - }; - description = "Map of PPD battery states to TuneD profiles."; - }; - }; - }; in - { options.services.tuned = { enable = lib.mkEnableOption "TuneD"; package = lib.mkPackageOption pkgs "tuned" { }; - settings = lib.mkOption { - type = lib.types.submodule settingsSubmodule; + ppdSettings = lib.mkOption { + type = lib.types.submodule ppdSettingsSubmodule; default = { }; description = '' - Configuration for TuneD. - See {manpage}`tuned-main.conf(5)`. + Settings for TuneD's power-profiles-daemon compatibility service. ''; }; - + ppdSupport = lib.mkEnableOption "translation of power-profiles-daemon API calls to TuneD" // { + default = true; + }; profiles = lib.mkOption { type = lib.types.attrsOf ( lib.types.submodule { @@ -130,7 +129,7 @@ in default = { }; description = '' Profiles for TuneD. - See {manpage}`tuned.conf(5)`. + See {manpage}`tuned.conf(5)` for details. ''; example = { my-cool-profile = { @@ -146,16 +145,44 @@ in }; }; }; - - ppdSupport = lib.mkEnableOption "translation of power-profiles-daemon API calls to TuneD" // { - default = true; - }; - - ppdSettings = lib.mkOption { - type = lib.types.submodule ppdSettingsSubmodule; + recommend = lib.mkOption { + type = recommendFormat.type; default = { }; description = '' - Settings for TuneD's power-profiles-daemon compatibility service. + TuneD rules for `recommend_profile`, written to + `/etc/tuned/recommend.conf`. + + At startup, the daemon evaluates the file in alphabetical order. + The first matching entry is applied. Empty profile rules always match. + + If `services.tuned.ppdSupport` is `true`, settings in + `services.tuned.ppdSettings` take precedence over both the default + behaviour and `services.tuned.recommend`. For example: + `services.tuned.ppdSettings.main.default = "performance";` ensures + the corresponding PPD profile is applied regardless of + `services.tuned.recommend` setting. + + If `ppdSupport` is `false`, only `services.tuned.recommend` is used; + if `recommend` is empty, TuneD's default behaviour applies. + + See {manpage}`tuned-main.conf(5)` for more details. + ''; + example = lib.literalExpression '' + # Enable `virtual-guest` profile for VM guests + virtual-guest = { + virt = ".+"; + }; + + # Default to the `desktop` profile for all other systems + desktop = { }; + ''; + }; + settings = lib.mkOption { + type = lib.types.submodule settingsSubmodule; + default = { }; + description = '' + Configuration for TuneD. + See {manpage}`tuned-main.conf(5)` for details. ''; }; }; @@ -186,6 +213,7 @@ in message = "`services.tuned` conflicts with `${name}`."; }) [ + "hardware.system76.power-daemon" "services.auto-cpufreq" "services.power-profiles-daemon" "services.tlp" @@ -198,11 +226,14 @@ in sections = { }; globalSection = cfg.settings; }; - - "tuned/ppd.conf".source = lib.mkIf cfg.ppdSupport ( - ppdSettingsFormat.generate "ppd.conf" cfg.ppdSettings - ); } + (lib.mkIf cfg.ppdSupport { + "tuned/ppd.conf".source = ppdSettingsFormat.generate "ppd.conf" cfg.ppdSettings; + }) + + (lib.mkIf (cfg.settings.recommend_command && cfg.recommend != { }) { + "tuned/recommend.conf".source = recommendFormat.generate "recommend.conf" cfg.recommend; + }) (lib.mapAttrs' ( name: value: diff --git a/nixos/modules/services/mail/opensmtpd.nix b/nixos/modules/services/mail/opensmtpd.nix index ba5226351a57..4ec30ce09dae 100644 --- a/nixos/modules/services/mail/opensmtpd.nix +++ b/nixos/modules/services/mail/opensmtpd.nix @@ -105,12 +105,21 @@ in }; }; - security.wrappers.smtpctl = { - owner = "root"; - group = "smtpq"; - setuid = false; - setgid = true; - source = "${cfg.package}/bin/smtpctl"; + security.wrappers = { + makemap = { + owner = "root"; + group = "smtpq"; + setuid = false; + setgid = true; + source = "${cfg.package}/bin/smtpctl"; + }; + smtpctl = { + owner = "root"; + group = "smtpq"; + setuid = false; + setgid = true; + source = "${cfg.package}/bin/smtpctl"; + }; }; services.mail.sendmailSetuidWrapper = lib.mkIf cfg.setSendmail ( diff --git a/nixos/modules/services/misc/hyprwhspr-rs.nix b/nixos/modules/services/misc/hyprwhspr-rs.nix new file mode 100644 index 000000000000..e21f310ccf30 --- /dev/null +++ b/nixos/modules/services/misc/hyprwhspr-rs.nix @@ -0,0 +1,47 @@ +{ + config, + lib, + pkgs, + ... +}: + +let + inherit (lib) + mkEnableOption + mkPackageOption + mkOption + ; + cfg = config.services.hyprwhspr-rs; +in +{ + options.services.hyprwhspr-rs = { + enable = mkEnableOption "hyprwhspr-rs"; + package = mkPackageOption pkgs "hyprwhspr-rs" { }; + + environmentFile = mkOption { + type = lib.types.nullOr lib.types.str; + default = null; + example = "/path/to/hyprwhspr_secret_file"; + description = "File containing API keys (GROQ_API_KEY, GEMINI_API_KEY) for remote transcription."; + }; + }; + + config = lib.mkIf cfg.enable { + systemd.user.services.hyprwhspr-rs = { + description = "Native speech-to-text voice dictation for Hyprland"; + + after = [ + "graphical-session.target" + "pipewire.service" + ]; + wantedBy = [ "graphical-session.target" ]; + partOf = [ "graphical-session.target" ]; + + serviceConfig = { + ExecStart = lib.getExe cfg.package; + Restart = "on-failure"; + LoadCredential = lib.optional (cfg.environmentFile != null) cfg.environmentFile; + }; + }; + }; +} diff --git a/nixos/modules/services/monitoring/beszel-agent.nix b/nixos/modules/services/monitoring/beszel-agent.nix index 7f2082d8c55b..a7f3e425e441 100644 --- a/nixos/modules/services/monitoring/beszel-agent.nix +++ b/nixos/modules/services/monitoring/beszel-agent.nix @@ -44,7 +44,19 @@ in }; environment = lib.mkOption { - type = lib.types.attrsOf lib.types.str; + type = lib.types.submodule { + freeformType = lib.types.attrsOf lib.types.str; + options = { + SKIP_SYSTEMD = lib.mkOption { + type = lib.types.bool; + default = false; + description = '' + Whether to disable systemd service monitoring. + Enabling this option will skip systemd tracking and its setup in NixOS. + ''; + }; + }; + }; default = { }; description = '' Environment variables for configuring the beszel-agent service. @@ -75,6 +87,36 @@ in KERNEL=="nvme[0-9]*", GROUP="disk", MODE="0660" ''; + # Add D-Bus policy for systemd service monitoring following https://beszel.dev/guide/systemd#services-not-appearing + services.dbus.packages = lib.optionals (!cfg.environment.SKIP_SYSTEMD) [ + (pkgs.writeTextDir "share/dbus-1/system.d/beszel-agent.conf" '' + + + + + + + + + + '') + ]; + + users.users.beszel-agent = lib.mkIf (!cfg.environment.SKIP_SYSTEMD) { + isSystemUser = true; + group = "beszel-agent"; + }; + + users.groups.beszel-agent = lib.mkIf (!cfg.environment.SKIP_SYSTEMD) { }; + systemd.services.beszel-agent = { description = "Beszel Server Monitoring Agent"; @@ -82,7 +124,10 @@ in wants = [ "network-online.target" ]; after = [ "network-online.target" ]; - environment = cfg.environment; + environment = lib.mapAttrs ( + _: value: if lib.isBool value then (lib.boolToString value) else value + ) cfg.environment; + path = cfg.extraPath ++ lib.optionals cfg.smartmon.enable [ cfg.smartmon.package ] @@ -133,7 +178,7 @@ in NoNewPrivileges = !cfg.smartmon.enable; PrivateDevices = !cfg.smartmon.enable; PrivateTmp = true; - PrivateUsers = !cfg.smartmon.enable; + PrivateUsers = !cfg.smartmon.enable && !cfg.environment.SKIP_SYSTEMD; ProtectClock = true; ProtectControlGroups = "strict"; ProtectHome = "read-only"; diff --git a/nixos/modules/services/monitoring/gatus.nix b/nixos/modules/services/monitoring/gatus.nix index eb459ddb61ae..3251fa961f5f 100644 --- a/nixos/modules/services/monitoring/gatus.nix +++ b/nixos/modules/services/monitoring/gatus.nix @@ -36,9 +36,7 @@ in configFile = mkOption { type = path; default = settingsFormat.generate "gatus.yaml" cfg.settings; - defaultText = literalExpression '' - let settingsFormat = pkgs.formats.yaml { }; in settingsFormat.generate "gatus.yaml" cfg.settings; - ''; + defaultText = literalExpression ''(pkgs.formats.yaml { }).generate "gatus.yaml" config.services.gatus.settings''; description = '' Path to the Gatus configuration file. Overrides any configuration made using the `settings` option. diff --git a/nixos/modules/services/networking/prosody.nix b/nixos/modules/services/networking/prosody.nix index b2f480920db5..8bf9770e62cf 100644 --- a/nixos/modules/services/networking/prosody.nix +++ b/nixos/modules/services/networking/prosody.nix @@ -886,6 +886,7 @@ in "internal_hashed" "cyrus" "anonymous" + "ldap" ]; default = "internal_hashed"; example = "internal_plain"; diff --git a/nixos/modules/services/networking/sing-box.nix b/nixos/modules/services/networking/sing-box.nix index 866c9f4fe470..bdf5c93ea1ee 100644 --- a/nixos/modules/services/networking/sing-box.nix +++ b/nixos/modules/services/networking/sing-box.nix @@ -89,6 +89,8 @@ in "${lib.getExe cfg.package} -D \${STATE_DIRECTORY} -C \${RUNTIME_DIRECTORY} run" ]; }; + # After= is specified by upstream + requires = [ "network-online.target" ]; wantedBy = [ "multi-user.target" ]; }; diff --git a/nixos/modules/services/security/crowdsec-firewall-bouncer.nix b/nixos/modules/services/security/crowdsec-firewall-bouncer.nix index 856efd81b483..a33bc55079c0 100644 --- a/nixos/modules/services/security/crowdsec-firewall-bouncer.nix +++ b/nixos/modules/services/security/crowdsec-firewall-bouncer.nix @@ -231,7 +231,7 @@ in after = [ "crowdsec.service" ]; wants = after; script = '' - cscli=/run/current-system/sw/bin/cscli + cscli=${lib.getExe' config.services.crowdsec.package "cscli"} if $cscli bouncers list --output json | ${lib.getExe pkgs.jq} -e -- ${lib.escapeShellArg "any(.[]; .name == \"${cfg.registerBouncer.bouncerName}\")"} >/dev/null; then # Bouncer already registered. Verify the API key is still present if [ ! -f ${apiKeyFile} ]; then @@ -257,12 +257,7 @@ in User = config.services.crowdsec.user; Group = config.services.crowdsec.group; - StateDirectory = "crowdsec-firewall-bouncer-register"; - - ReadWritePaths = [ - # Needs write permissions to add the bouncer - "/var/lib/crowdsec" - ]; + StateDirectory = "crowdsec-firewall-bouncer-register crowdsec"; DynamicUser = true; LockPersonality = true; diff --git a/nixos/modules/services/web-apps/drasl.nix b/nixos/modules/services/web-apps/drasl.nix new file mode 100644 index 000000000000..1c84da7f0a43 --- /dev/null +++ b/nixos/modules/services/web-apps/drasl.nix @@ -0,0 +1,167 @@ +{ + lib, + pkgs, + config, + ... +}: +let + cfg = config.services.drasl; + format = pkgs.formats.toml { }; + filterAttrs = x: lib.filterAttrs (n: v: n != "ClientSecretFile" || v != null) x; + getIndex = + item: + builtins.toString (lib.lists.findFirstIndex (x: x == item) null cfg.settings.RegistrationOIDC); + secretFiles = lib.filter ( + x: lib.hasAttr "ClientSecretFile" (filterAttrs x) + ) cfg.settings.RegistrationOIDC; + settings = format.generate "drasl-config.toml" ( + if cfg.settings.RegistrationOIDC == [ ] then + lib.filterAttrs (n: v: n != "RegistrationOIDC" || v != [ ]) cfg.settings + else + lib.recursiveUpdate cfg.settings { + RegistrationOIDC = map ( + x: + if lib.hasAttr "ClientSecretFile" (filterAttrs x) then + lib.recursiveUpdate (filterAttrs x) { + ClientSecretFile = "$CREDENTIALS_DIRECTORY/${getIndex x}"; + } + else + filterAttrs x + ) cfg.settings.RegistrationOIDC; + } + ); +in +{ + options.services.drasl = { + enable = lib.mkEnableOption "Drasl"; + package = lib.mkPackageOption pkgs "drasl" { }; + enableDebug = lib.mkEnableOption "debugging"; + settings = lib.mkOption { + description = '' + Configuration for Drasl. See the + [Drasl documentation](https://github.com/unmojang/drasl/blob/master/doc/configuration.md) + for possible options. + ''; + type = lib.types.submodule { + freeformType = format.type; + options = { + RegistrationOIDC = lib.mkOption { + default = [ ]; + description = "List of OpenID connect providers."; + type = lib.types.listOf ( + lib.types.submodule { + freeformType = format.type; + options = { + ClientSecretFile = lib.mkOption { + default = null; + description = '' + Path to a file containing the OIDC client secret. + + ::: {.note} + The NixOS module will automatically load this file using + systemd's LoadCredential. Make sure this file is only + readable by the root user. + ::: + ''; + type = lib.types.nullOr lib.types.path; + }; + }; + } + ); + }; + }; + }; + }; + }; + config = lib.mkIf cfg.enable { + assertions = [ + { + assertion = lib.allUnique cfg.settings.RegistrationOIDC; + message = "All items in `services.drasl.settings.RegistrationOIDC` must be unique."; + } + { + assertion = lib.all ( + x: (lib.hasAttr "ClientSecretFile" (filterAttrs x)) -> !(lib.hasAttr "ClientSecret" (filterAttrs x)) + ) cfg.settings.RegistrationOIDC; + message = + "Do not set both `services.drasl.settings.RegistrationOIDC.*.ClientSecret` " + + "and `services.drasl.settings.RegistrationOIDC.*.ClientSecretFile`"; + } + ]; + systemd.services.drasl = { + description = "Drasl"; + after = [ + "network-online.target" + "nss-lookup.target" + ]; + wants = [ "network-online.target" ]; + wantedBy = [ "multi-user.target" ]; + environment = lib.mkIf cfg.enableDebug { DRASL_DEBUG = "1"; }; + serviceConfig = { + ExecStart = "${lib.getExe cfg.package} -config ${settings}"; + DynamicUser = true; + RuntimeDirectory = "drasl"; + RuntimeDirectoryMode = "0700"; + StateDirectory = "drasl"; + LoadCredential = lib.mkIf (secretFiles != [ ]) ( + map (x: "${getIndex x}:${x.ClientSecretFile}") secretFiles + ); + # Hardening + LockPersonality = true; + MemoryDenyWriteExecute = true; + NoNewPrivileges = true; + PrivateDevices = true; + PrivateMounts = true; + ProtectClock = true; + ProtectControlGroups = true; + ProtectHome = true; + ProtectHostname = true; + ProtectKernelLogs = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + RemoveIPC = true; + RestrictRealtime = true; + RestrictSUIDSGID = true; + CapabilityBoundingSet = "CAP_NET_BIND_SERVICE"; + AmbientCapabilities = "CAP_NET_BIND_SERVICE"; + PrivateTmp = "disconnected"; + ProcSubset = "pid"; + ProtectProc = "invisible"; + ProtectSystem = "strict"; + RestrictAddressFamilies = [ + "AF_INET" + "AF_INET6" + ]; + RestrictNamespaces = [ + "~cgroup" + "~ipc" + "~mnt" + "~net" + "~pid" + "~user" + "~uts" + ]; + SystemCallArchitectures = "native"; + SystemCallFilter = [ + "~@clock" + "~@cpu-emulation" + "~@debug" + "~@module" + "~@mount" + "~@obsolete" + "~@privileged" + "~@raw-io" + "~@reboot" + "~@resources" + "~@swap" + ]; + UMask = "0077"; + }; + }; + }; + + meta.maintainers = with lib.maintainers; [ + evan-goode + ungeskriptet + ]; +} diff --git a/nixos/modules/services/web-apps/mediawiki.nix b/nixos/modules/services/web-apps/mediawiki.nix index 565f4a37c744..af1dbcd223a7 100644 --- a/nixos/modules/services/web-apps/mediawiki.nix +++ b/nixos/modules/services/web-apps/mediawiki.nix @@ -123,129 +123,141 @@ let checkPhase = '' ${cfg.phpPackage}/bin/php --syntax-check "$target" ''; - text = '' - . ''; }; @@ -462,7 +490,7 @@ in else null; defaultText = literalExpression "/run/mysqld/mysqld.sock"; - description = "Path to the unix socket file to use for authentication."; + description = "Path to the unix socket file to use for authentication. Used only if database type is not SQLite."; }; createLocally = mkOption { @@ -570,6 +598,28 @@ in } ]; + warnings = + lib.optional + ( + cfg.database.type == "sqlite" + && ( + cfg.database.host != null + || cfg.database.port != null + || cfg.database.user != null + || cfg.database.passwordFile != null + || cfg.database.socket != null + ) + ) + '' + The services.mediawiki.database options host, port, user, passwordFile, and socket will be ignored because services.mediawiki.database.type is "sqlite". + '' + ++ lib.optional (cfg.database.type != "sqlite" && cfg.database.path != null) '' + The services.mediawiki.database.path option will be ignored because services.mediawiki.database.type is not "sqlite". + '' + ++ lib.optional (cfg.database.type == "mysql" && cfg.database.tablePrefix != null) '' + The services.mediawiki.database.tablePrefix option has no effect when the services.mediawiki.database.type is not "mysql". + ''; + services.mediawiki = { path = with pkgs; [ diffutils @@ -728,37 +778,52 @@ in after = optional (cfg.database.type == "mysql" && cfg.database.createLocally) "mysql.service" ++ optional (cfg.database.type == "postgres" && cfg.database.createLocally) "postgresql.target"; - script = '' - if ! test -e "${stateDir}/secret.key"; then - tr -dc A-Za-z0-9 /dev/null | head -c 64 > ${stateDir}/secret.key - fi + script = + let + dbOptions = + if cfg.database.type == "sqlite" then + '' + --dbpath ${lib.escapeShellArg cfg.database.path} \ + --dbname ${lib.escapeShellArg cfg.database.name} \ + '' + else + '' + --dbserver ${lib.escapeShellArg dbAddr} \ + --dbport ${toString cfg.database.port} \ + --dbname ${lib.escapeShellArg cfg.database.name} \ + ${ + optionalString ( + cfg.database.tablePrefix != null + ) "--dbprefix ${lib.escapeShellArg cfg.database.tablePrefix}" + } \ + --dbuser ${lib.escapeShellArg cfg.database.user} \ + ${ + optionalString ( + cfg.database.passwordFile != null + ) "--dbpassfile ${lib.escapeShellArg cfg.database.passwordFile}" + } \ + ''; + in + '' + if ! test -e "${stateDir}/secret.key"; then + tr -dc A-Za-z0-9 /dev/null | head -c 64 > ${stateDir}/secret.key + fi - echo "exit( \$this->getPrimaryDB()->tableExists( 'user' ) ? 1 : 0 );" | \ - ${cfg.phpPackage}/bin/php ${pkg}/share/mediawiki/maintenance/run.php eval --conf ${mediawikiConfig} && \ - ${cfg.phpPackage}/bin/php ${pkg}/share/mediawiki/maintenance/run.php ${pkg}/share/mediawiki/maintenance/install.php \ - --confpath /tmp \ - --scriptpath / \ - --dbserver ${lib.escapeShellArg dbAddr} \ - --dbport ${toString cfg.database.port} \ - --dbname ${lib.escapeShellArg cfg.database.name} \ - ${ - optionalString ( - cfg.database.tablePrefix != null - ) "--dbprefix ${lib.escapeShellArg cfg.database.tablePrefix}" - } \ - --dbuser ${lib.escapeShellArg cfg.database.user} \ - ${ - optionalString ( - cfg.database.passwordFile != null - ) "--dbpassfile ${lib.escapeShellArg cfg.database.passwordFile}" - } \ - --passfile ${lib.escapeShellArg cfg.passwordFile} \ - --dbtype ${cfg.database.type} \ - ${lib.escapeShellArg cfg.name} \ - admin + ${optionalString (cfg.database.type == "sqlite") "mkdir -p ${cfg.database.path}"} - ${cfg.phpPackage}/bin/php ${pkg}/share/mediawiki/maintenance/update.php --conf ${mediawikiConfig} --quick --skip-external-dependencies - ''; + echo "exit( \$this->getPrimaryDB()->tableExists( 'user' ) ? 1 : 0 );" | \ + ${cfg.phpPackage}/bin/php ${pkg}/share/mediawiki/maintenance/run.php eval --conf ${mediawikiConfig} && \ + ${cfg.phpPackage}/bin/php ${pkg}/share/mediawiki/maintenance/run.php ${pkg}/share/mediawiki/maintenance/install.php \ + --confpath /tmp \ + --scriptpath / \ + ${dbOptions} \ + --dbtype ${cfg.database.type} \ + --passfile ${lib.escapeShellArg cfg.passwordFile} \ + ${lib.escapeShellArg cfg.name} \ + admin + + ${cfg.phpPackage}/bin/php ${pkg}/share/mediawiki/maintenance/update.php --conf ${mediawikiConfig} --quick --skip-external-dependencies + ''; serviceConfig = { Type = "oneshot"; diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 109a14676734..343500f195e2 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -1218,6 +1218,7 @@ in owi = runTest ./owi.nix; owncast = runTest ./owncast.nix; oxidized = handleTest ./oxidized.nix { }; + oxwm = runTestOn [ "x86_64-linux" "aarch64-linux" ] ./oxwm.nix; pacemaker = runTest ./pacemaker.nix; packagekit = runTest ./packagekit.nix; pairdrop = runTest ./web-apps/pairdrop.nix; diff --git a/nixos/tests/mediawiki.nix b/nixos/tests/mediawiki.nix index deb714e6b178..fedae1675d7c 100644 --- a/nixos/tests/mediawiki.nix +++ b/nixos/tests/mediawiki.nix @@ -57,6 +57,21 @@ in ''; }; + sqlite = makeTest { + name = "mediawiki-sqlite"; + nodes.machine = { + services.mediawiki.database.type = "sqlite"; + }; + testScript = '' + start_all() + + machine.wait_for_unit("phpfpm-mediawiki.service") + + page = machine.succeed("curl -fL http://localhost/") + assert "MediaWiki has been installed" in page + ''; + }; + nohttpd = makeTest { name = "mediawiki-nohttpd"; nodes.machine = { diff --git a/nixos/tests/oxwm.nix b/nixos/tests/oxwm.nix new file mode 100644 index 000000000000..9dbefd747ae0 --- /dev/null +++ b/nixos/tests/oxwm.nix @@ -0,0 +1,39 @@ +{ lib, ... }: +{ + name = "oxwm"; + + meta = { + maintainers = with lib.maintainers; [ + sigmanificient + tonybanters + ]; + }; + + nodes.machine = + { pkgs, lib, ... }: + { + imports = [ + ./common/x11.nix + ./common/user-account.nix + ]; + test-support.displayManager.auto.user = "alice"; + services.displayManager.defaultSession = lib.mkForce "oxwm"; + services.xserver.windowManager.oxwm.enable = true; + + environment.systemPackages = [ pkgs.alacritty ]; + }; + + testScript = '' + with subtest("ensure x starts"): + machine.wait_for_x() + machine.wait_for_file("/home/alice/.Xauthority") + machine.succeed("xauth merge ~alice/.Xauthority") + + with subtest("ensure we can open a new terminal"): + machine.sleep(2) + machine.send_key("meta_l-ret") + machine.wait_for_window(r"alice.*?machine") + machine.sleep(2) + machine.screenshot("terminal") + ''; +} diff --git a/nixos/tests/vaultwarden.nix b/nixos/tests/vaultwarden.nix index 329ee3fdf963..cd799b1b19d4 100644 --- a/nixos/tests/vaultwarden.nix +++ b/nixos/tests/vaultwarden.nix @@ -83,7 +83,7 @@ let wait.until_not(EC.title_contains("Join organization")) - # NOTE: When testing this locally, the extensions must not be installed, otherwise this screen does not appear + # NOTE: When testing this locally, the Bitwarden browser extension must not be installed, otherwise this screen does not appear click_when_unobstructed((By.XPATH, "//button[contains(., 'Add it later')]")) click_when_unobstructed((By.XPATH, "//a[contains(., 'Skip to web app')]")) @@ -198,7 +198,6 @@ let { nodes, pkgs, - config, ... }: { diff --git a/pkgs/applications/networking/cluster/terraform-providers/providers.json b/pkgs/applications/networking/cluster/terraform-providers/providers.json index 22c851fea5b5..1257697ba010 100644 --- a/pkgs/applications/networking/cluster/terraform-providers/providers.json +++ b/pkgs/applications/networking/cluster/terraform-providers/providers.json @@ -526,11 +526,11 @@ "vendorHash": null }, "hashicorp_azurerm": { - "hash": "sha256-eVdx5W4kwC3SxLp3HbAHHKSP6afmqdeUSXwnIeyRw10=", + "hash": "sha256-iaPwUzwoyxRrb8K6oqIlZxvJ0qiDmWvdh0pgQeDWn6I=", "homepage": "https://registry.terraform.io/providers/hashicorp/azurerm", "owner": "hashicorp", "repo": "terraform-provider-azurerm", - "rev": "v4.61.0", + "rev": "v4.62.0", "spdx": "MPL-2.0", "vendorHash": null }, @@ -1238,13 +1238,13 @@ "vendorHash": "sha256-E9e4+n12uSc12F428D8Oqe0iquTMywAY4DYWhSC+hmk=" }, "splunk-terraform_signalfx": { - "hash": "sha256-dPhHzWOkNgIxlHSZm88zKkrgaXaXJ6RFdYeqX5zYSfU=", + "hash": "sha256-lDFwuSZdc0gI5LotTSJk0FSBc9jn7WN43hXEsVHiwG0=", "homepage": "https://registry.terraform.io/providers/splunk-terraform/signalfx", "owner": "splunk-terraform", "repo": "terraform-provider-signalfx", - "rev": "v9.24.0", + "rev": "v9.25.0", "spdx": "MPL-2.0", - "vendorHash": "sha256-/zsslNR7GDLFrtL4T0GLYhKTBof51ODavb/+PHdziS4=" + "vendorHash": "sha256-EOr4Ps0IYYOtRq19tt87NFfCEvJTaFBGb5B4mKMll7c=" }, "spotinst_spotinst": { "hash": "sha256-yDwEtptwNXu/IpoKUK98UkpivTgJaY1FfsshsVpaaOk=", @@ -1274,11 +1274,11 @@ "vendorHash": "sha256-IR6KjFW5GbsOIm3EEFyx3ctwhbifZlcNaZeGhbeK/Wo=" }, "sysdiglabs_sysdig": { - "hash": "sha256-BovhCb+01LJUE62geNJmDwpzV0ucQLpVWjXwfxsClyI=", + "hash": "sha256-mzDVPOEu5nIOYykKvudGmByt0sY0Xl+FuSuQruQXTi0=", "homepage": "https://registry.terraform.io/providers/sysdiglabs/sysdig", "owner": "sysdiglabs", "repo": "terraform-provider-sysdig", - "rev": "v3.4.0", + "rev": "v3.4.3", "spdx": "MPL-2.0", "vendorHash": "sha256-rWiafaFE1RolO9JUN1WoW4EWJjR7kpfeVEOTLf21j50=" }, diff --git a/pkgs/applications/networking/p2p/transmission/4.nix b/pkgs/applications/networking/p2p/transmission/4.nix index 518bce1933be..532bfd1f9450 100644 --- a/pkgs/applications/networking/p2p/transmission/4.nix +++ b/pkgs/applications/networking/p2p/transmission/4.nix @@ -22,7 +22,6 @@ fmt, libpsl, miniupnpc, - crc32c, dht, libnatpmp, libiconv, @@ -48,7 +47,6 @@ let apparmorRules = apparmorRulesFromClosure { name = "transmission-daemon"; } ( [ - crc32c curl libdeflate libevent @@ -66,13 +64,13 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "transmission"; - version = "4.1.0"; + version = "4.1.1"; src = fetchFromGitHub { owner = "transmission"; repo = "transmission"; tag = finalAttrs.version; - hash = "sha256-glmwa06+jCyL9G2Rc58Yrvzo+/6Qu3bqwqy02RWgG64="; + hash = "sha256-c3BOQ25xWIj4bLDQDnfzw9ZyuPemyHrK2Ua0jbOSuOw="; fetchSubmodules = true; }; @@ -99,7 +97,7 @@ stdenv.mkDerivation (finalAttrs: { # Excluding gtest since it is hardcoded to vendored version. The rest of the listed libraries are not packaged. pushd third-party for f in *; do - if [[ ! $f =~ googletest|wildmat|wide-integer|jsonsl ]]; then + if [[ ! $f =~ googletest|wildmat|wide-integer|jsonsl|madler-crcany ]]; then rm -r "$f" fi done @@ -126,7 +124,6 @@ stdenv.mkDerivation (finalAttrs: { buildInputs = [ curl - crc32c dht fast-float fmt diff --git a/pkgs/applications/networking/znc/modules.nix b/pkgs/applications/networking/znc/modules.nix index 627b1f96ae5e..f89382bcc288 100644 --- a/pkgs/applications/networking/znc/modules.nix +++ b/pkgs/applications/networking/znc/modules.nix @@ -138,6 +138,8 @@ in description = "ZNC FiSH module"; homepage = "https://github.com/oilslump/znc-fish"; maintainers = [ ]; + # has no license + license = lib.licenses.unfree; }; }; @@ -215,6 +217,8 @@ in meta = { description = "ZNC privmsg module"; homepage = "https://github.com/kylef/znc-contrib"; + # has no license + license = lib.licenses.unfree; }; }; diff --git a/pkgs/applications/system/glances/default.nix b/pkgs/applications/system/glances/default.nix index 856f9ea8fab9..bb99cc419eb7 100644 --- a/pkgs/applications/system/glances/default.nix +++ b/pkgs/applications/system/glances/default.nix @@ -7,18 +7,19 @@ defusedxml, packaging, psutil, + pyinstrument, setuptools, nixosTests, pytestCheckHook, which, podman, selenium, + python-jose, # Optional dependencies: fastapi, jinja2, pysnmp, hddtemp, - netifaces2, # IP module uvicorn, requests, prometheus-client, @@ -27,7 +28,7 @@ buildPythonApplication rec { pname = "glances"; - version = "4.3.3"; + version = "4.5.0.5"; pyproject = true; disabled = isPyPy; @@ -36,7 +37,7 @@ buildPythonApplication rec { owner = "nicolargo"; repo = "glances"; tag = "v${version}"; - hash = "sha256-RmGbd8Aa2jJ2DMrBUUoa8mPBa6bGnQd0s0y3p/zP0ng="; + hash = "sha256-IHgMZw+X7C/72w4vXaP37GgnhLVg7EF5/sd9QlmE0NM="; }; build-system = [ setuptools ]; @@ -56,14 +57,15 @@ buildPythonApplication rec { dependencies = [ defusedxml - netifaces2 packaging psutil + pyinstrument pysnmp fastapi uvicorn requests jinja2 + python-jose which prometheus-client shtab @@ -86,6 +88,20 @@ buildPythonApplication rec { "tests/test_webui.py" ]; + disabledTests = [ + # Upstream bug: diskio plugin doesn't check if args is None before accessing attributes + # Bug report: https://github.com/nicolargo/glances/issues/3429 + "test_msg_curse_returns_list" + "test_msg_curse_with_max_width" + # Network test expects visible network interfaces + # Default config hides loopback and interfaces without IP (glances.conf) + # In Nix sandbox environment, this results in zero visible interfaces + "test_glances_api_plugin_network" + # Test always returns 3 plugin updates, but needs >=5 to not fail + # May be an upstream bug, see: https://github.com/nicolargo/glances/issues/3430 + "test_perf_update" + ]; + meta = { homepage = "https://nicolargo.github.io/glances/"; description = "Cross-platform curses-based monitoring tool"; diff --git a/pkgs/by-name/_7/_7zip-zstd-rar/package.nix b/pkgs/by-name/_7/_7zip-zstd-rar/package.nix new file mode 100644 index 000000000000..5583d78336f0 --- /dev/null +++ b/pkgs/by-name/_7/_7zip-zstd-rar/package.nix @@ -0,0 +1,6 @@ +{ + _7zip-zstd, +}: +_7zip-zstd.override { + enableUnfree = true; +} diff --git a/pkgs/by-name/_7/_7zip-zstd/package.nix b/pkgs/by-name/_7/_7zip-zstd/package.nix new file mode 100644 index 000000000000..3f573e97db0c --- /dev/null +++ b/pkgs/by-name/_7/_7zip-zstd/package.nix @@ -0,0 +1,175 @@ +{ + lib, + stdenv, + fetchFromGitHub, + makeWrapper, + asmc-linux, + useAsmc ? !useUasm && stdenv.hostPlatform.isx86 && stdenv.hostPlatform.isLinux, + uasm, + useUasm ? + enableUnfree + && stdenv.hostPlatform.isx86 + && (stdenv.hostPlatform.isLinux || stdenv.hostPlatform.isWindows), + _experimental-update-script-combinators, + nix-update-script, + enableUnfree ? false, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "7zip-zstd"; + version = "25.01-v1.5.7-R4"; + + src = fetchFromGitHub { + owner = "mcmilk"; + repo = "7-Zip-zstd"; + tag = "v${finalAttrs.version}"; + hash = + if enableUnfree then + "sha256-qP4L5PIG7CHsmYbRock+cbCOGdgujUFG4LHenvvlqzw=" + else + "sha256-R9AUWL35TPh0anyRDhnF28ZYG9FeOxntVIwnnW9e2xA="; + # remove the unRAR related code from the src drv + # > the license requires that you agree to these use restrictions, + # > or you must remove the software (source and binary) from your hard disks + # https://fedoraproject.org/wiki/Licensing:Unrar + postFetch = lib.optionalString (!enableUnfree) '' + rm -r $out/CPP/7zip/Compress/Rar* + ''; + }; + + nativeBuildInputs = + lib.optionals (!stdenv.hostPlatform.isWindows) [ + makeWrapper + ] + ++ lib.optionals useAsmc [ asmc-linux ] + ++ lib.optionals useUasm [ uasm ]; + + outputs = [ + "out" + "doc" + ]; + + makeFlags = [ + "CC=${stdenv.cc.targetPrefix}cc" + "CXX=${stdenv.cc.targetPrefix}c++" + ] + ++ lib.optionals useAsmc [ + "MY_ASM=asmc" + ] + ++ lib.optionals useUasm [ + "MY_ASM=uasm" + ] + ++ lib.optionals (stdenv.hostPlatform.isx86 && !useAsmc && !useUasm) [ + "USE_ASM=" + ] + # it's the compression code with the restriction, see DOC/License.txt + ++ lib.optionals (!enableUnfree) [ "DISABLE_RAR_COMPRESS=true" ] + ++ lib.optionals (stdenv.cc.isClang) [ "FLAGS_FLTO=-flto=thin" ] + ++ lib.optionals (stdenv.hostPlatform.isMinGW) [ + "IS_MINGW=1" + "MSYSTEM=1" + ]; + + enableParallelBuilding = true; + + postPatch = '' + sed -i 's/-Werror//g' CPP/7zip/7zip_gcc.mak + '' + + lib.optionalString stdenv.hostPlatform.isMinGW '' + substituteInPlace CPP/7zip/7zip_gcc.mak C/7zip_gcc_c.mak \ + --replace windres.exe ${stdenv.cc.targetPrefix}windres + ''; + + buildPhase = + let + makefile = "../../cmpl_${ + if stdenv.hostPlatform.isDarwin then + "mac" + else if stdenv.cc.isClang then + "clang" + else + "gcc" + }${ + if stdenv.hostPlatform.isx86_64 then + "_x64" + else if stdenv.hostPlatform.isAarch64 then + "_arm64" + else if stdenv.hostPlatform.isi686 then + "_x86" + else + "" + }.mak"; + in + '' + runHook preBuild + + for component in Bundles/{Alone,Alone2,Alone7z,Format7zF,SFXCon} UI/Console; do + make -j $NIX_BUILD_CORES -C CPP/7zip/$component -f ${makefile} $makeFlags + done + + runHook postBuild + ''; + + installPhase = + let + inherit (stdenv.hostPlatform) extensions isWindows; + in + '' + runHook preInstall + + install -Dt "$out/${if isWindows then "bin" else "lib"}/7zip" \ + CPP/7zip/Bundles/Alone/b/*/7za${extensions.executable} \ + CPP/7zip/Bundles/Alone2/b/*/7zz${extensions.executable} \ + CPP/7zip/Bundles/Alone7z/b/*/7zr${extensions.executable} \ + CPP/7zip/Bundles/Format7zF/b/*/7z${extensions.sharedLibrary} \ + CPP/7zip/UI/Console/b/*/7z${extensions.executable} + install -D CPP/7zip/Bundles/SFXCon/b/*/7zCon${extensions.executable} "$out/lib/7zip/7zCon.sfx" + + ${lib.optionalString (!isWindows) '' + mkdir -p "$out/bin" + for prog in 7za 7zz 7zr 7z; do + makeWrapper "$out/lib/7zip/$prog" \ + "$out/bin/$prog" + done + ''} + + install -Dt "$out/share/doc/7zip" DOC/*.txt + + runHook postInstall + ''; + + setupHook = ./setup-hook.sh; + passthru.updateScript = _experimental-update-script-combinators.sequence [ + (nix-update-script { + attrPath = "_7zip-zstd"; + extraArgs = [ "--use-github-releases" ]; + }) + (nix-update-script { + attrPath = "_7zip-zstd-rar"; + extraArgs = [ "--version=skip" ]; + }) + ]; + + meta = { + homepage = "https://github.com/mcmilk/7-Zip-zstd"; + description = "7-Zip with support for Brotli, Fast-LZMA2, Lizard, LZ4, LZ5 and Zstandard"; + changelog = "https://github.com/mcmilk/7-Zip-zstd/releases/tag/v${finalAttrs.version}"; + license = + with lib.licenses; + # p7zip code is largely lgpl2Plus + # CPP/7zip/Compress/LzfseDecoder.cpp is bsd3 + [ + lgpl2Plus # and + bsd3 + ] + ++ + # and CPP/7zip/Compress/Rar* are unfree with the unRAR license restriction + # the unRAR compression code is disabled by default + lib.optionals enableUnfree [ unfreeRedistributable ]; + maintainers = with lib.maintainers; [ + ccicnce113424 + ]; + platforms = lib.platforms.unix ++ lib.platforms.windows; + broken = stdenv.hostPlatform.isWindows; # waiting for fixes in 26.00 + mainProgram = "7z"; + }; +}) diff --git a/pkgs/by-name/_7/_7zip-zstd/setup-hook.sh b/pkgs/by-name/_7/_7zip-zstd/setup-hook.sh new file mode 100644 index 000000000000..565ef8816774 --- /dev/null +++ b/pkgs/by-name/_7/_7zip-zstd/setup-hook.sh @@ -0,0 +1,12 @@ +unpackCmdHooks+=(_try7zip) +unpackCmdHooks+=(_tryUnpackDmg) + +_try7zip() { + if ! [[ $curSrc =~ \.7z$ ]]; then return 1; fi + 7z x "$curSrc" +} + +_tryUnpackDmg() { + if ! [[ $curSrc =~ \.dmg$ ]]; then return 1; fi + 7z x "$curSrc" +} diff --git a/pkgs/by-name/_7/_7zz/fix-cross-mingw-build.patch b/pkgs/by-name/_7/_7zz/fix-cross-mingw-build.patch deleted file mode 100644 index 4d77b1bb1024..000000000000 --- a/pkgs/by-name/_7/_7zz/fix-cross-mingw-build.patch +++ /dev/null @@ -1,182 +0,0 @@ ---- a/C/7zip_gcc_c.mak -+++ b/C/7zip_gcc_c.mak -@@ -106,7 +106,7 @@ - endif - - --LIB2 = -lOle32 -loleaut32 -luuid -ladvapi32 -lUser32 -lShell32 -+LIB2 = -lole32 -loleaut32 -luuid -ladvapi32 -luser32 -lshell32 - - CFLAGS_EXTRA = -DUNICODE -D_UNICODE - # -Wno-delete-non-virtual-dtor ---- a/C/7zVersion.rc -+++ b/C/7zVersion.rc -@@ -5,7 +5,7 @@ - #define MY_VFT_APP 0x00000001L - #define MY_VFT_DLL 0x00000002L - --// #include -+// #include - - #ifndef MY_VERSION - #include "7zVersion.h" ---- a/C/Util/7zipInstall/resource.rc -+++ b/C/Util/7zipInstall/resource.rc -@@ -1,7 +1,7 @@ - #include - // #include - // #include --#include -+#include - - #define USE_COPYRIGHT_CR - #include "../../7zVersion.rc" ---- a/C/Util/7zipInstall/resource.rc.rej -+++ b/C/Util/7zipInstall/resource.rc.rej -@@ -0,0 +1,10 @@ -+--- C/Util/7zipInstall/resource.rc -++++ C/Util/7zipInstall/resource.rc -+@@ -1,6 +1,6 @@ -+ #include -+ #include -+-#include -++#include -+ -+ #define USE_COPYRIGHT_CR -+ #include "../../7zVersion.rc" ---- a/C/Util/7zipUninstall/resource.rc -+++ b/C/Util/7zipUninstall/resource.rc -@@ -1,7 +1,7 @@ - #include - // #include - // #include --#include -+#include - - #define USE_COPYRIGHT_CR - #include "../../7zVersion.rc" ---- a/C/Util/7zipUninstall/resource.rc.rej -+++ b/C/Util/7zipUninstall/resource.rc.rej -@@ -0,0 +1,10 @@ -+--- C/Util/7zipUninstall/resource.rc -++++ C/Util/7zipUninstall/resource.rc -+@@ -1,6 +1,6 @@ -+ #include -+ #include -+-#include -++#include -+ -+ #define USE_COPYRIGHT_CR -+ #include "../../7zVersion.rc" ---- a/CPP/7zip/7zip_gcc.mak -+++ b/CPP/7zip/7zip_gcc.mak -@@ -142,8 +142,8 @@ - DEL_OBJ_EXE = -$(RM) $(O)\*.o $(O)\$(PROG).exe $(O)\$(PROG).dll - endif - --LIB2_GUI = -lOle32 -lGdi32 -lComctl32 -lComdlg32 -lShell32 $(LIB_HTMLHELP) --LIB2 = -loleaut32 -luuid -ladvapi32 -lUser32 $(LIB2_GUI) -+LIB2_GUI = -lole32 -lgdi32 -lcomctl32 -lcomdlg32 -lshell32 $(LIB_HTMLHELP) -+LIB2 = -loleaut32 -luuid -ladvapi32 -luser32 $(LIB2_GUI) - - # v24.00: -DUNICODE and -D_UNICODE are defined in precompilation header files - # CXXFLAGS_EXTRA = -DUNICODE -D_UNICODE ---- a/CPP/7zip/Crypto/RandGen.cpp -+++ b/CPP/7zip/Crypto/RandGen.cpp -@@ -19,7 +19,7 @@ - - #ifdef USE_STATIC_RtlGenRandom - --// #include -+// #include - - EXTERN_C_BEGIN - #ifndef RtlGenRandom ---- a/CPP/7zip/GuiCommon.rc -+++ b/CPP/7zip/GuiCommon.rc -@@ -4,7 +4,7 @@ - // #include - - // for Windows CE: --#include -+#include - - - LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US ---- a/CPP/7zip/UI/FileManager/PanelItemOpen.cpp -+++ b/CPP/7zip/UI/FileManager/PanelItemOpen.cpp -@@ -4,7 +4,7 @@ - - #include "../../../Common/MyWindows.h" - --#include -+#include - - #include "../../../Common/IntToString.h" - ---- a/CPP/7zip/UI/FileManager/SysIconUtils.h -+++ b/CPP/7zip/UI/FileManager/SysIconUtils.h -@@ -5,7 +5,7 @@ - - #include "../../../Common/MyWindows.h" - --#include -+#include - - #include "../../../Common/MyString.h" - ---- a/CPP/Windows/Control/ComboBox.h -+++ b/CPP/Windows/Control/ComboBox.h -@@ -5,7 +5,7 @@ - - #include "../../Common/MyWindows.h" - --#include -+#include - - #include "../Window.h" - ---- a/CPP/Windows/Control/ImageList.h -+++ b/CPP/Windows/Control/ImageList.h -@@ -3,7 +3,7 @@ - #ifndef ZIP7_INC_WINDOWS_CONTROL_IMAGE_LIST_H - #define ZIP7_INC_WINDOWS_CONTROL_IMAGE_LIST_H - --#include -+#include - - #include "../Defs.h" - ---- a/CPP/Windows/Control/ListView.h -+++ b/CPP/Windows/Control/ListView.h -@@ -5,7 +5,7 @@ - - #include "../../Common/MyWindows.h" - --#include -+#include - - #include "../Window.h" - ---- a/CPP/Windows/Control/ProgressBar.h -+++ b/CPP/Windows/Control/ProgressBar.h -@@ -5,7 +5,7 @@ - - #include "../../Common/MyWindows.h" - --#include -+#include - - #include "../Window.h" - ---- a/CPP/Windows/SecurityUtils.h -+++ b/CPP/Windows/SecurityUtils.h -@@ -3,7 +3,7 @@ - #ifndef ZIP7_INC_WINDOWS_SECURITY_UTILS_H - #define ZIP7_INC_WINDOWS_SECURITY_UTILS_H - --#include -+#include - - #include "Defs.h" - diff --git a/pkgs/by-name/_7/_7zz/package.nix b/pkgs/by-name/_7/_7zz/package.nix index cc084c3e199b..001031ca0fa0 100644 --- a/pkgs/by-name/_7/_7zz/package.nix +++ b/pkgs/by-name/_7/_7zz/package.nix @@ -3,9 +3,16 @@ lib, fetchzip, - # Only useful on Linux x86/x86_64, and brings in non‐free Open Watcom + # Free MASM-compatible assembler + asmc-linux, + useAsmc ? !useUasm && stdenv.hostPlatform.isx86 && stdenv.hostPlatform.isLinux, + + # Unfree Open-Watcom licensed assembler uasm, - useUasm ? false, + useUasm ? + enableUnfree + && stdenv.hostPlatform.isx86 + && (stdenv.hostPlatform.isLinux || stdenv.hostPlatform.isWindows), # RAR code is under non-free unRAR license # see the meta.license section below for more details @@ -16,26 +23,34 @@ }: let - makefile = - { - aarch64-darwin = "../../cmpl_mac_arm64.mak"; - x86_64-darwin = "../../cmpl_mac_x64.mak"; - aarch64-linux = "../../cmpl_gcc_arm64.mak"; - i686-linux = "../../cmpl_gcc_x86.mak"; - x86_64-linux = "../../cmpl_gcc_x64.mak"; - } - .${stdenv.hostPlatform.system} or "../../cmpl_gcc.mak"; # generic build + makefile = "../../cmpl_${ + if stdenv.hostPlatform.isDarwin then + "mac" + else if stdenv.cc.isClang then + "clang" + else + "gcc" + }${ + if stdenv.hostPlatform.isx86_64 then + "_x64" + else if stdenv.hostPlatform.isAarch64 then + "_arm64" + else if stdenv.hostPlatform.isi686 then + "_x86" + else + "" + }.mak"; in stdenv.mkDerivation (finalAttrs: { pname = "7zz"; - version = "25.01"; + version = "26.00"; src = fetchzip { url = "https://7-zip.org/a/7z${lib.replaceStrings [ "." ] [ "" ] finalAttrs.version}-src.tar.xz"; hash = { - free = "sha256-A1BBdSGepobpguzokL1zpjce5EOl0zqABYciv9zCOac="; - unfree = "sha256-Jkj6T4tMols33uyJSOCcVmxh5iBYYCO/rq9dF4NDMko="; + free = "sha256-p914FrQPb+h1a+7YIL8ms2YoIfoS1hTCeLLeBF4DjwY="; + unfree = "sha256-CIgPhjRSE9A0ABQQx1YTZgO+DNb3BDxRo5xOQmuzBuI="; } .${if enableUnfree then "unfree" else "free"}; stripRoot = false; @@ -48,10 +63,6 @@ stdenv.mkDerivation (finalAttrs: { ''; }; - patches = [ - ./fix-cross-mingw-build.patch - ]; - postPatch = lib.optionalString stdenv.hostPlatform.isMinGW '' substituteInPlace CPP/7zip/7zip_gcc.mak C/7zip_gcc_c.mak \ --replace windres.exe ${stdenv.cc.targetPrefix}windres @@ -88,8 +99,15 @@ stdenv.mkDerivation (finalAttrs: { "CC=${stdenv.cc.targetPrefix}cc" "CXX=${stdenv.cc.targetPrefix}c++" ] - ++ lib.optionals useUasm [ "MY_ASM=uasm" ] - ++ lib.optionals (!useUasm && stdenv.hostPlatform.isx86) [ "USE_ASM=" ] + ++ lib.optionals useAsmc [ + "MY_ASM=asmc" + ] + ++ lib.optionals useUasm [ + "MY_ASM=uasm" + ] + ++ lib.optionals (stdenv.hostPlatform.isx86 && !useAsmc && !useUasm) [ + "USE_ASM=" + ] # it's the compression code with the restriction, see DOC/License.txt ++ lib.optionals (!enableUnfree) [ "DISABLE_RAR_COMPRESS=true" ] ++ lib.optionals (stdenv.hostPlatform.isMinGW) [ @@ -97,7 +115,12 @@ stdenv.mkDerivation (finalAttrs: { "MSYSTEM=1" ]; - nativeBuildInputs = lib.optionals useUasm [ uasm ]; + nativeBuildInputs = lib.optionals useAsmc [ asmc-linux ] ++ lib.optionals useUasm [ uasm ]; + + outputs = [ + "out" + "doc" + ]; setupHook = ./setup-hook.sh; @@ -136,7 +159,7 @@ stdenv.mkDerivation (finalAttrs: { ++ # and CPP/7zip/Compress/Rar* are unfree with the unRAR license restriction # the unRAR compression code is disabled by default - lib.optionals enableUnfree [ unfree ]; + lib.optionals enableUnfree [ unfreeRedistributable ]; maintainers = with lib.maintainers; [ anna328p jk diff --git a/pkgs/by-name/ar/arcdps-log-manager/deps.json b/pkgs/by-name/ar/arcdps-log-manager/deps.json new file mode 100644 index 000000000000..913dfe7e63fd --- /dev/null +++ b/pkgs/by-name/ar/arcdps-log-manager/deps.json @@ -0,0 +1,509 @@ +[ + { + "pname": "AtkSharp", + "version": "3.24.24.34", + "hash": "sha256-GrOzO4YDMKJNHAnqLF+c44iGYlvazGTOuRLUnuLbwco=" + }, + { + "pname": "CairoSharp", + "version": "3.24.24.34", + "hash": "sha256-/80xbYSPU8+6twoXRjES8PtV7dKB6fQoe6EqBmawzV8=" + }, + { + "pname": "DebounceThrottle", + "version": "2.0.0", + "hash": "sha256-STqGsbo9T4Xb7LywHwZei9hTVD2kqaxStobW+KWebIg=" + }, + { + "pname": "Eto.Forms", + "version": "2.6.1", + "hash": "sha256-Dhp61n6aIgp6TYUhxgyM9ujSb0OfBsIMKi14Zo32jF0=", + "url": "https://www.myget.org/F/eto/api/v3/flatcontainer/eto.forms/2.6.1/eto.forms.2.6.1.nupkg" + }, + { + "pname": "Eto.Platform.Gtk", + "version": "2.6.1", + "hash": "sha256-Shn2PnJVM77ki3C4STwQeA2nmXFUXvm4ffmhz/xLXXY=", + "url": "https://www.myget.org/F/eto/api/v3/flatcontainer/eto.platform.gtk/2.6.1/eto.platform.gtk.2.6.1.nupkg" + }, + { + "pname": "GdkSharp", + "version": "3.24.24.34", + "hash": "sha256-pQOp2jft19vVN+gSjD0tHfNGucss7ruy1xyys6IHHWQ=" + }, + { + "pname": "GioSharp", + "version": "3.24.24.34", + "hash": "sha256-/fZBfaKXlrdBuNh1/h0s1++5Ek4OnznXvzJx0uTbHQo=" + }, + { + "pname": "GLibSharp", + "version": "3.24.24.34", + "hash": "sha256-eAYUYNHF37nIJnk7aRffzBj8b/rluqXERYy358YAd08=" + }, + { + "pname": "GtkSharp", + "version": "3.24.24.34", + "hash": "sha256-i0XZfzUt9GNaZD1uXNd8x+pb1mPJqYrxQd15XOuHSAA=" + }, + { + "pname": "Gw2Sharp", + "version": "0.6.0", + "hash": "sha256-+AOhGe9T+Cpxf1bBxca8vpHCqLh0ayOeCJz/1yVM1Rw=" + }, + { + "pname": "Microsoft.NETCore.Platforms", + "version": "1.1.0", + "hash": "sha256-FeM40ktcObQJk4nMYShB61H/E8B7tIKfl9ObJ0IOcCM=" + }, + { + "pname": "Microsoft.NETCore.Platforms", + "version": "1.1.1", + "hash": "sha256-8hLiUKvy/YirCWlFwzdejD2Db3DaXhHxT7GSZx/znJg=" + }, + { + "pname": "Microsoft.NETCore.Targets", + "version": "1.1.0", + "hash": "sha256-0AqQ2gMS8iNlYkrD+BxtIg7cXMnr9xZHtKAuN4bjfaQ=" + }, + { + "pname": "Microsoft.Win32.Primitives", + "version": "4.3.0", + "hash": "sha256-mBNDmPXNTW54XLnPAUwBRvkIORFM7/j0D0I2SyQPDEg=" + }, + { + "pname": "Newtonsoft.Json", + "version": "13.0.2", + "hash": "sha256-ESyjt/R7y9dDvvz5Sftozk+e/3Otn38bOcLGGh69Ot0=" + }, + { + "pname": "PangoSharp", + "version": "3.24.24.34", + "hash": "sha256-/KdH3SA/11bkwPe/AXRph4v4a2cjbUjDvo4+OhkJEOQ=" + }, + { + "pname": "RestSharp", + "version": "106.12.0", + "hash": "sha256-NGzveByJvCRtHlI2C8d/mLs3akyMm77NER8TUG6HiD4=" + }, + { + "pname": "runtime.any.System.Collections", + "version": "4.3.0", + "hash": "sha256-4PGZqyWhZ6/HCTF2KddDsbmTTjxs2oW79YfkberDZS8=" + }, + { + "pname": "runtime.any.System.Diagnostics.Tracing", + "version": "4.3.0", + "hash": "sha256-dsmTLGvt8HqRkDWP8iKVXJCS+akAzENGXKPV18W2RgI=" + }, + { + "pname": "runtime.any.System.Globalization", + "version": "4.3.0", + "hash": "sha256-PaiITTFI2FfPylTEk7DwzfKeiA/g/aooSU1pDcdwWLU=" + }, + { + "pname": "runtime.any.System.Globalization.Calendars", + "version": "4.3.0", + "hash": "sha256-AYh39tgXJVFu8aLi9Y/4rK8yWMaza4S4eaxjfcuEEL4=" + }, + { + "pname": "runtime.any.System.IO", + "version": "4.3.0", + "hash": "sha256-vej7ySRhyvM3pYh/ITMdC25ivSd0WLZAaIQbYj/6HVE=" + }, + { + "pname": "runtime.any.System.Reflection", + "version": "4.3.0", + "hash": "sha256-ns6f++lSA+bi1xXgmW1JkWFb2NaMD+w+YNTfMvyAiQk=" + }, + { + "pname": "runtime.any.System.Reflection.Primitives", + "version": "4.3.0", + "hash": "sha256-LkPXtiDQM3BcdYkAm5uSNOiz3uF4J45qpxn5aBiqNXQ=" + }, + { + "pname": "runtime.any.System.Resources.ResourceManager", + "version": "4.3.0", + "hash": "sha256-9EvnmZslLgLLhJ00o5MWaPuJQlbUFcUF8itGQNVkcQ4=" + }, + { + "pname": "runtime.any.System.Runtime", + "version": "4.3.0", + "hash": "sha256-qwhNXBaJ1DtDkuRacgHwnZmOZ1u9q7N8j0cWOLYOELM=" + }, + { + "pname": "runtime.any.System.Runtime.Handles", + "version": "4.3.0", + "hash": "sha256-PQRACwnSUuxgVySO1840KvqCC9F8iI9iTzxNW0RcBS4=" + }, + { + "pname": "runtime.any.System.Runtime.InteropServices", + "version": "4.3.0", + "hash": "sha256-Kaw5PnLYIiqWbsoF3VKJhy7pkpoGsUwn4ZDCKscbbzA=" + }, + { + "pname": "runtime.any.System.Text.Encoding", + "version": "4.3.0", + "hash": "sha256-Q18B9q26MkWZx68exUfQT30+0PGmpFlDgaF0TnaIGCs=" + }, + { + "pname": "runtime.any.System.Text.Encoding.Extensions", + "version": "4.3.0", + "hash": "sha256-6MYj0RmLh4EVqMtO/MRqBi0HOn5iG4x9JimgCCJ+EFM=" + }, + { + "pname": "runtime.any.System.Threading.Tasks", + "version": "4.3.0", + "hash": "sha256-agdOM0NXupfHbKAQzQT8XgbI9B8hVEh+a/2vqeHctg4=" + }, + { + "pname": "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-LXUPLX3DJxsU1Pd3UwjO1PO9NM2elNEDXeu2Mu/vNps=" + }, + { + "pname": "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.2", + "hash": "sha256-EbnOqPOrAgI9eNheXLR++VnY4pHzMsEKw1dFPJ/Fl2c=" + }, + { + "pname": "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-qeSqaUI80+lqw5MK4vMpmO0CZaqrmYktwp6L+vQAb0I=" + }, + { + "pname": "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.2", + "hash": "sha256-mVg02TNvJc1BuHU03q3fH3M6cMgkKaQPBxraSHl/Btg=" + }, + { + "pname": "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-SrHqT9wrCBsxILWtaJgGKd6Odmxm8/Mh7Kh0CUkZVzA=" + }, + { + "pname": "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.2", + "hash": "sha256-g9Uiikrl+M40hYe0JMlGHe/lrR0+nN05YF64wzLmBBA=" + }, + { + "pname": "runtime.native.System", + "version": "4.3.0", + "hash": "sha256-ZBZaodnjvLXATWpXXakFgcy6P+gjhshFXmglrL5xD5Y=" + }, + { + "pname": "runtime.native.System.IO.Compression", + "version": "4.3.0", + "hash": "sha256-DWnXs4vlKoU6WxxvCArTJupV6sX3iBbZh8SbqfHace8=" + }, + { + "pname": "runtime.native.System.Net.Http", + "version": "4.3.0", + "hash": "sha256-c556PyheRwpYhweBjSfIwEyZHnAUB8jWioyKEcp/2dg=" + }, + { + "pname": "runtime.native.System.Security.Cryptography.Apple", + "version": "4.3.0", + "hash": "sha256-2IhBv0i6pTcOyr8FFIyfPEaaCHUmJZ8DYwLUwJ+5waw=" + }, + { + "pname": "runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-Jy01KhtcCl2wjMpZWH+X3fhHcVn+SyllWFY8zWlz/6I=" + }, + { + "pname": "runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.2", + "hash": "sha256-xqF6LbbtpzNC9n1Ua16PnYgXHU0LvblEROTfK4vIxX8=" + }, + { + "pname": "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-wyv00gdlqf8ckxEdV7E+Ql9hJIoPcmYEuyeWb5Oz3mM=" + }, + { + "pname": "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.2", + "hash": "sha256-aJBu6Frcg6webvzVcKNoUP1b462OAqReF2giTSyBzCQ=" + }, + { + "pname": "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-zi+b4sCFrA9QBiSGDD7xPV27r3iHGlV99gpyVUjRmc4=" + }, + { + "pname": "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.2", + "hash": "sha256-Mpt7KN2Kq51QYOEVesEjhWcCGTqWckuPf8HlQ110qLY=" + }, + { + "pname": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple", + "version": "4.3.0", + "hash": "sha256-serkd4A7F6eciPiPJtUyJyxzdAtupEcWIZQ9nptEzIM=" + }, + { + "pname": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-gybQU6mPgaWV3rBG2dbH6tT3tBq8mgze3PROdsuWnX0=" + }, + { + "pname": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.2", + "hash": "sha256-JvMltmfVC53mCZtKDHE69G3RT6Id28hnskntP9MMP9U=" + }, + { + "pname": "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-VsP72GVveWnGUvS/vjOQLv1U80H2K8nZ4fDAmI61Hm4=" + }, + { + "pname": "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.2", + "hash": "sha256-QfFxWTVRNBhN4Dm1XRbCf+soNQpy81PsZed3x6op/bI=" + }, + { + "pname": "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-4yKGa/IrNCKuQ3zaDzILdNPD32bNdy6xr5gdJigyF5g=" + }, + { + "pname": "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.2", + "hash": "sha256-EaJHVc9aDZ6F7ltM2JwlIuiJvqM67CKRq682iVSo+pU=" + }, + { + "pname": "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-HmdJhhRsiVoOOCcUvAwdjpMRiyuSwdcgEv2j9hxi+Zc=" + }, + { + "pname": "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.2", + "hash": "sha256-PHR0+6rIjJswn89eoiWYY1DuU8u6xRJLrtjykAMuFmA=" + }, + { + "pname": "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-pVFUKuPPIx0edQKjzRon3zKq8zhzHEzko/lc01V/jdw=" + }, + { + "pname": "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.2", + "hash": "sha256-LFkh7ua7R4rI5w2KGjcHlGXLecsncCy6kDXLuy4qD/Q=" + }, + { + "pname": "runtime.unix.Microsoft.Win32.Primitives", + "version": "4.3.0", + "hash": "sha256-LZb23lRXzr26tRS5aA0xyB08JxiblPDoA7HBvn6awXg=" + }, + { + "pname": "runtime.unix.System.Diagnostics.Debug", + "version": "4.3.0", + "hash": "sha256-ReoazscfbGH+R6s6jkg5sIEHWNEvjEoHtIsMbpc7+tI=" + }, + { + "pname": "runtime.unix.System.IO.FileSystem", + "version": "4.3.0", + "hash": "sha256-Pf4mRl6YDK2x2KMh0WdyNgv0VUNdSKVDLlHqozecy5I=" + }, + { + "pname": "runtime.unix.System.Net.Primitives", + "version": "4.3.0", + "hash": "sha256-pHJ+I6i16MV6m77uhTC6GPY6jWGReE3SSP3fVB59ti0=" + }, + { + "pname": "runtime.unix.System.Private.Uri", + "version": "4.3.0", + "hash": "sha256-c5tXWhE/fYbJVl9rXs0uHh3pTsg44YD1dJvyOA0WoMs=" + }, + { + "pname": "runtime.unix.System.Runtime.Extensions", + "version": "4.3.0", + "hash": "sha256-l8S9gt6dk3qYG6HYonHtdlYtBKyPb29uQ6NDjmrt3V4=" + }, + { + "pname": "System.Buffers", + "version": "4.3.0", + "hash": "sha256-XqZWb4Kd04960h4U9seivjKseGA/YEIpdplfHYHQ9jk=" + }, + { + "pname": "System.Collections", + "version": "4.3.0", + "hash": "sha256-afY7VUtD6w/5mYqrce8kQrvDIfS2GXDINDh73IjxJKc=" + }, + { + "pname": "System.Collections.Concurrent", + "version": "4.3.0", + "hash": "sha256-KMY5DfJnDeIsa13DpqvyN8NkReZEMAFnlmNglVoFIXI=" + }, + { + "pname": "System.ComponentModel.Annotations", + "version": "5.0.0", + "hash": "sha256-0pST1UHgpeE6xJrYf5R+U7AwIlH3rVC3SpguilI/MAg=" + }, + { + "pname": "System.Diagnostics.Debug", + "version": "4.3.0", + "hash": "sha256-fkA79SjPbSeiEcrbbUsb70u9B7wqbsdM9s1LnoKj0gM=" + }, + { + "pname": "System.Diagnostics.DiagnosticSource", + "version": "4.3.0", + "hash": "sha256-OFJRb0ygep0Z3yDBLwAgM/Tkfs4JCDtsNhwDH9cd1Xw=" + }, + { + "pname": "System.Diagnostics.Tracing", + "version": "4.3.0", + "hash": "sha256-hCETZpHHGVhPYvb4C0fh4zs+8zv4GPoixagkLZjpa9Q=" + }, + { + "pname": "System.Globalization", + "version": "4.3.0", + "hash": "sha256-caL0pRmFSEsaoeZeWN5BTQtGrAtaQPwFi8YOZPZG5rI=" + }, + { + "pname": "System.Globalization.Calendars", + "version": "4.3.0", + "hash": "sha256-uNOD0EOVFgnS2fMKvMiEtI9aOw00+Pfy/H+qucAQlPc=" + }, + { + "pname": "System.Globalization.Extensions", + "version": "4.3.0", + "hash": "sha256-mmJWA27T0GRVuFP9/sj+4TrR4GJWrzNIk2PDrbr7RQk=" + }, + { + "pname": "System.IO", + "version": "4.3.0", + "hash": "sha256-ruynQHekFP5wPrDiVyhNiRIXeZ/I9NpjK5pU+HPDiRY=" + }, + { + "pname": "System.IO.Compression", + "version": "4.3.0", + "hash": "sha256-f5PrQlQgj5Xj2ZnHxXW8XiOivaBvfqDao9Sb6AVinyA=" + }, + { + "pname": "System.IO.FileSystem", + "version": "4.3.0", + "hash": "sha256-vNIYnvlayuVj0WfRfYKpDrhDptlhp1pN8CYmlVd2TXw=" + }, + { + "pname": "System.IO.FileSystem.Primitives", + "version": "4.3.0", + "hash": "sha256-LMnfg8Vwavs9cMnq9nNH8IWtAtSfk0/Fy4s4Rt9r1kg=" + }, + { + "pname": "System.Linq", + "version": "4.3.0", + "hash": "sha256-R5uiSL3l6a3XrXSSL6jz+q/PcyVQzEAByiuXZNSqD/A=" + }, + { + "pname": "System.Net.Http", + "version": "4.3.4", + "hash": "sha256-FMoU0K7nlPLxoDju0NL21Wjlga9GpnAoQjsFhFYYt00=" + }, + { + "pname": "System.Net.Primitives", + "version": "4.3.0", + "hash": "sha256-MY7Z6vOtFMbEKaLW9nOSZeAjcWpwCtdO7/W1mkGZBzE=" + }, + { + "pname": "System.Private.Uri", + "version": "4.3.0", + "hash": "sha256-fVfgcoP4AVN1E5wHZbKBIOPYZ/xBeSIdsNF+bdukIRM=" + }, + { + "pname": "System.Reflection", + "version": "4.3.0", + "hash": "sha256-NQSZRpZLvtPWDlvmMIdGxcVuyUnw92ZURo0hXsEshXY=" + }, + { + "pname": "System.Reflection.Primitives", + "version": "4.3.0", + "hash": "sha256-5ogwWB4vlQTl3jjk1xjniG2ozbFIjZTL9ug0usZQuBM=" + }, + { + "pname": "System.Resources.ResourceManager", + "version": "4.3.0", + "hash": "sha256-idiOD93xbbrbwwSnD4mORA9RYi/D/U48eRUsn/WnWGo=" + }, + { + "pname": "System.Runtime", + "version": "4.3.0", + "hash": "sha256-51813WXpBIsuA6fUtE5XaRQjcWdQ2/lmEokJt97u0Rg=" + }, + { + "pname": "System.Runtime.Extensions", + "version": "4.3.0", + "hash": "sha256-wLDHmozr84v1W2zYCWYxxj0FR0JDYHSVRaRuDm0bd/o=" + }, + { + "pname": "System.Runtime.Handles", + "version": "4.3.0", + "hash": "sha256-KJ5aXoGpB56Y6+iepBkdpx/AfaJDAitx4vrkLqR7gms=" + }, + { + "pname": "System.Runtime.InteropServices", + "version": "4.3.0", + "hash": "sha256-8sDH+WUJfCR+7e4nfpftj/+lstEiZixWUBueR2zmHgI=" + }, + { + "pname": "System.Runtime.Numerics", + "version": "4.3.0", + "hash": "sha256-P5jHCgMbgFMYiONvzmaKFeOqcAIDPu/U8bOVrNPYKqc=" + }, + { + "pname": "System.Security.Cryptography.Algorithms", + "version": "4.3.0", + "hash": "sha256-tAJvNSlczYBJ3Ed24Ae27a55tq/n4D3fubNQdwcKWA8=" + }, + { + "pname": "System.Security.Cryptography.Cng", + "version": "4.3.0", + "hash": "sha256-u17vy6wNhqok91SrVLno2M1EzLHZm6VMca85xbVChsw=" + }, + { + "pname": "System.Security.Cryptography.Csp", + "version": "4.3.0", + "hash": "sha256-oefdTU/Z2PWU9nlat8uiRDGq/PGZoSPRgkML11pmvPQ=" + }, + { + "pname": "System.Security.Cryptography.Encoding", + "version": "4.3.0", + "hash": "sha256-Yuge89N6M+NcblcvXMeyHZ6kZDfwBv3LPMDiF8HhJss=" + }, + { + "pname": "System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-DL+D2sc2JrQiB4oAcUggTFyD8w3aLEjJfod5JPe+Oz4=" + }, + { + "pname": "System.Security.Cryptography.Primitives", + "version": "4.3.0", + "hash": "sha256-fnFi7B3SnVj5a+BbgXnbjnGNvWrCEU6Hp/wjsjWz318=" + }, + { + "pname": "System.Security.Cryptography.X509Certificates", + "version": "4.3.0", + "hash": "sha256-MG3V/owDh273GCUPsGGraNwaVpcydupl3EtPXj6TVG0=" + }, + { + "pname": "System.Text.Encoding", + "version": "4.3.0", + "hash": "sha256-GctHVGLZAa/rqkBNhsBGnsiWdKyv6VDubYpGkuOkBLg=" + }, + { + "pname": "System.Text.Encoding.Extensions", + "version": "4.3.0", + "hash": "sha256-vufHXg8QAKxHlujPHHcrtGwAqFmsCD6HKjfDAiHyAYc=" + }, + { + "pname": "System.Threading", + "version": "4.3.0", + "hash": "sha256-ZDQ3dR4pzVwmaqBg4hacZaVenQ/3yAF/uV7BXZXjiWc=" + }, + { + "pname": "System.Threading.Tasks", + "version": "4.3.0", + "hash": "sha256-Z5rXfJ1EXp3G32IKZGiZ6koMjRu0n8C1NGrwpdIen4w=" + } +] diff --git a/pkgs/by-name/ar/arcdps-log-manager/package.nix b/pkgs/by-name/ar/arcdps-log-manager/package.nix new file mode 100644 index 000000000000..7015c17454fe --- /dev/null +++ b/pkgs/by-name/ar/arcdps-log-manager/package.nix @@ -0,0 +1,75 @@ +{ + lib, + buildDotnetModule, + fetchFromGitHub, + dotnetCorePackages, + wrapGAppsHook3, + gtk3, + libnotify, + icoutils, + nix-update-script, + copyDesktopItems, + makeDesktopItem, +}: +buildDotnetModule (finalAttrs: { + pname = "arcdps-log-manager"; + version = "1.15"; + + src = fetchFromGitHub { + owner = "gw2scratch"; + repo = "evtc"; + tag = "manager-v${finalAttrs.version}"; + hash = "sha256-z7SuE+MPhN4/XW3CtYabbAd2ZjL2M/ii+VCdyUUukoA="; + }; + + nugetDeps = ./deps.json; + + projectFile = "ArcdpsLogManager.Gtk/ArcdpsLogManager.Gtk.csproj"; + + dotnet-sdk = dotnetCorePackages.sdk_8_0; + dotnet-runtime = dotnetCorePackages.runtime_8_0; + + nativeBuildInputs = [ + wrapGAppsHook3 + icoutils + copyDesktopItems + ]; + + runtimeDeps = [ + gtk3 + libnotify + ]; + + postInstall = '' + mkdir -p $out/share/icons/hicolor/128x128/apps + icotool -x $src/ArcdpsLogManager/Images/program_icon.ico + cp program_icon_1_128x128x32.png $out/share/icons/hicolor/128x128/apps/arcdps-log-manager.png + ''; + + desktopItems = [ + (makeDesktopItem { + desktopName = "arcdps Log Manager"; + genericName = "arcdps Log Manager"; + exec = "GW2Scratch.ArcdpsLogManager.Gtk"; + name = "arcdps Log Manager"; + icon = "arcdps-log-manager"; + }) + ]; + + passthru.updateScript = nix-update-script { + extraArgs = [ "--version-regex=manager-v(.*)" ]; + }; + + meta = { + description = "Manager for Guild Wars 2 log files"; + longDescription = '' + Manager for all your recorded logs. Filter logs, upload them with one click, find interesting statistics. + ''; + homepage = "https://gw2scratch.com/tools/manager"; + changelog = "https://github.com/gw2scratch/evtc/releases/tag/${finalAttrs.src.tag}"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.Blu3 ]; + mainProgram = "GW2Scratch.ArcdpsLogManager.Gtk"; + platforms = [ "x86_64-linux" ]; + }; +}) diff --git a/pkgs/by-name/as/asmc-linux/package.nix b/pkgs/by-name/as/asmc-linux/package.nix new file mode 100644 index 000000000000..0b8073e9cee5 --- /dev/null +++ b/pkgs/by-name/as/asmc-linux/package.nix @@ -0,0 +1,34 @@ +{ + lib, + stdenv, + fetchFromGitHub, +}: +stdenv.mkDerivation { + pname = "asmc-linux"; + version = "2.36.25"; + src = fetchFromGitHub { + owner = "nidud"; + repo = "asmc_linux"; + rev = "4ee70bde4439bdd9c772d08527dba6d50f2e5a88"; + hash = "sha256-/yJC1OQGRgy9T/U2VB0MohSsD1ImLnHYM/8Y8fIWhVE="; + }; + + enableParallelBuilding = true; + + installPhase = '' + runHook preInstall + + install -Dt $out/bin ./asmc + + runHook postInstall + ''; + + meta = { + description = "MASM-compatible assembler"; + homepage = "https://github.com/nidud/asmc_linux"; + license = lib.licenses.gpl2Plus; + maintainers = with lib.maintainers; [ ccicnce113424 ]; + platforms = with lib.systems.inspect; patternLogicalAnd patterns.isx86_64 patterns.isLinux; + mainProgram = "asmc"; + }; +} diff --git a/pkgs/by-name/au/augeas/package.nix b/pkgs/by-name/au/augeas/package.nix index 9bf1dc0600e5..875a232352ad 100644 --- a/pkgs/by-name/au/augeas/package.nix +++ b/pkgs/by-name/au/augeas/package.nix @@ -32,6 +32,7 @@ stdenv.mkDerivation (finalAttrs: { ./bootstrap --gnulib-srcdir=.gnulib ''; + configureFlags = lib.optionals stdenv.buildPlatform.isDarwin [ "--disable-gnulib-tests" ]; nativeBuildInputs = [ autoreconfHook bison diff --git a/pkgs/by-name/ca/cardinal/package.nix b/pkgs/by-name/ca/cardinal/package.nix index 7ac3155a6047..1f2024e71be9 100644 --- a/pkgs/by-name/ca/cardinal/package.nix +++ b/pkgs/by-name/ca/cardinal/package.nix @@ -28,11 +28,11 @@ stdenv.mkDerivation (finalAttrs: { pname = "cardinal"; - version = "26.01"; + version = "26.02"; src = fetchurl { url = "https://github.com/DISTRHO/Cardinal/releases/download/${finalAttrs.version}/cardinal+deps-${finalAttrs.version}.tar.xz"; - hash = "sha256-KWQc+pcSMebP85yOtQ812qHAwaB6ZOvPpwsxG+myzDo="; + hash = "sha256-4xjRCYN6Y7YtFc4gCd8F7CQxB02PLZQ6DN59rZVPYh0="; }; prePatch = '' diff --git a/pkgs/by-name/cg/cgtcalc/generated/default.nix b/pkgs/by-name/cg/cgtcalc/generated/default.nix new file mode 100644 index 000000000000..fcda4cfc1a87 --- /dev/null +++ b/pkgs/by-name/cg/cgtcalc/generated/default.nix @@ -0,0 +1,7 @@ +# This file was generated by swiftpm2nix. +{ + workspaceStateFile = ./workspace-state.json; + hashes = { + "swift-argument-parser" = "sha256-lWQ9mzfRxHcy00Cqyrsm9rOlQzkpU1lNBmiK7MMp6dU="; + }; +} diff --git a/pkgs/by-name/cg/cgtcalc/generated/workspace-state.json b/pkgs/by-name/cg/cgtcalc/generated/workspace-state.json new file mode 100644 index 000000000000..3a9ec58c7166 --- /dev/null +++ b/pkgs/by-name/cg/cgtcalc/generated/workspace-state.json @@ -0,0 +1,25 @@ +{ + "object": { + "artifacts": [], + "dependencies": [ + { + "basedOn": null, + "packageRef": { + "identity": "swift-argument-parser", + "kind": "remoteSourceControl", + "location": "https://github.com/apple/swift-argument-parser", + "name": "swift-argument-parser" + }, + "state": { + "checkoutState": { + "revision": "f3c9084a71ef4376f2fabbdf1d3d90a49f1fabdb", + "version": "1.1.2" + }, + "name": "sourceControlCheckout" + }, + "subpath": "swift-argument-parser" + } + ] + }, + "version": 6 +} diff --git a/pkgs/by-name/cg/cgtcalc/package.nix b/pkgs/by-name/cg/cgtcalc/package.nix new file mode 100644 index 000000000000..eae6cbd7e32e --- /dev/null +++ b/pkgs/by-name/cg/cgtcalc/package.nix @@ -0,0 +1,58 @@ +{ + fetchFromGitHub, + lib, + nix-update-script, + stdenv, + swift, + swiftPackages, + swiftpm, + swiftpm2nix, +}: +let + generated = swiftpm2nix.helpers ./generated; +in +stdenv.mkDerivation (finalAttrs: { + pname = "cgtcalc"; + version = "0-unstable-2025-10-11"; + + src = fetchFromGitHub { + owner = "mattjgalloway"; + repo = "cgtcalc"; + # Repo has no tags or releases. + # This is the last commit before requiring Swift 6 + rev = "1cf63741ddc0a5070680cb1339ad0abff0b7d69b"; + hash = "sha256-+qgvl5y9ipVQIZlLZbkzkqb9bO7X9VGDvVsloOLZU/k="; + }; + nativeBuildInputs = [ + swift + swiftpm + ]; + + configurePhase = generated.configure; + + installPhase = '' + runHook preInstall + mkdir -p $out/bin + cp $(swiftpmBinPath)/cgtcalc $out/bin/ + runHook postInstall + ''; + + buildInputs = [ + swiftPackages.XCTest + ]; + + # libIndexStore.so: cannot open shared object file: No such file or directory + # https://github.com/NixOS/nixpkgs/issues/379859 + doCheck = false; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "UK capital gains tax calculator written in Swift"; + homepage = "https://github.com/mattjgalloway/cgtcalc"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.dwoffinden ]; + mainProgram = "cgtcalc"; + platforms = lib.platforms.all; + }; +}) diff --git a/pkgs/by-name/ci/cinny-desktop/package.nix b/pkgs/by-name/ci/cinny-desktop/package.nix index d5c1082760ab..65334c049b05 100644 --- a/pkgs/by-name/ci/cinny-desktop/package.nix +++ b/pkgs/by-name/ci/cinny-desktop/package.nix @@ -18,18 +18,19 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "cinny-desktop"; # We have to be using the same version as cinny-web or this isn't going to work. - version = "4.10.2"; + version = "4.10.5"; + # nixpkgs-update: no auto update src = fetchFromGitHub { owner = "cinnyapp"; repo = "cinny-desktop"; tag = "v${finalAttrs.version}"; - hash = "sha256-M1p8rwdNEsKvZ1ssxsFyfiIBS8tKrXhuz85CKM4dSRw="; + hash = "sha256-DRSafPNED9fpm3w5K4a9r8581xMpttfo7BEDBIJ87Kc="; }; sourceRoot = "${finalAttrs.src.name}/src-tauri"; - cargoHash = "sha256-Ie6xq21JoJ37j/BjdVrsiJ3JULVEV5ZwN3hf9NhfXVA="; + cargoHash = "sha256-q6YMAjK+BBYBpk8menA1sM3x/FCnAh40t70fs9knnRo="; postPatch = let @@ -87,6 +88,7 @@ rustPlatform.buildRustPackage (finalAttrs: { homepage = "https://github.com/cinnyapp/cinny-desktop"; maintainers = with lib.maintainers; [ qyriad + rebmit ryand56 ]; license = lib.licenses.agpl3Only; diff --git a/pkgs/by-name/ci/cinny-unwrapped/package.nix b/pkgs/by-name/ci/cinny-unwrapped/package.nix index 4c507ed8b152..f55428608294 100644 --- a/pkgs/by-name/ci/cinny-unwrapped/package.nix +++ b/pkgs/by-name/ci/cinny-unwrapped/package.nix @@ -14,18 +14,20 @@ buildNpmPackage rec { pname = "cinny-unwrapped"; - version = "4.10.3"; + # Remember to update cinny-desktop when bumping this version. + version = "4.10.5"; + # nixpkgs-update: no auto update src = fetchFromGitHub { owner = "cinnyapp"; repo = "cinny"; tag = "v${version}"; - hash = "sha256-ZztZ/znJUwgYlvv5h9uxNZvQrkUMVbMG6R+HbRtSXHM="; + hash = "sha256-Napy3AcsLRDZPcBh3oq1U30FNtvoNtob0+AZtZSvcbM="; }; nodejs = nodejs_22; - npmDepsHash = "sha256-Spt2+sQcoPwy1tU8ztqJHZS9ITX9avueYDVKE7BFYy4="; + npmDepsHash = "sha256-2Lrd0jAwAH6HkwLHyivqwaEhcpFAIALuno+MchSIfxo="; nativeBuildInputs = [ python3 @@ -50,7 +52,10 @@ buildNpmPackage rec { meta = { description = "Yet another Matrix client for the web"; homepage = "https://cinny.in/"; - maintainers = with lib.maintainers; [ abbe ]; + maintainers = with lib.maintainers; [ + abbe + rebmit + ]; license = lib.licenses.agpl3Only; platforms = lib.platforms.all; }; diff --git a/pkgs/by-name/cu/cutecosmic/package.nix b/pkgs/by-name/cu/cutecosmic/package.nix new file mode 100644 index 000000000000..22e2911af036 --- /dev/null +++ b/pkgs/by-name/cu/cutecosmic/package.nix @@ -0,0 +1,101 @@ +{ + lib, + stdenv, + cargo, + cmake, + common-updater-scripts, + fetchFromGitHub, + nix-update, + qt6, + ripgrep, + rustPlatform, + rustc, + writeShellScript, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "cutecosmic"; + version = "0.1-unstable-2026-01-21"; + + src = fetchFromGitHub { + owner = "IgKh"; + repo = "cutecosmic"; + rev = "8e584418f69eeeaee8574c4a48cc92ef27fd610e"; + hash = "sha256-jKiO+WlNHM1xavKdB6PrGd3HmTgnyL1vjh0Ps1HcWx4="; + }; + + cargoDeps = rustPlatform.fetchCargoVendor { + inherit (finalAttrs) src; + name = "${finalAttrs.pname}-${finalAttrs.version}"; + sourceRoot = "${finalAttrs.src.name}/bindings"; + hash = "sha256-+1z0VoxDeOYSmb7BoFSdrwrfo1mmwkxeuEGP+CGFc8Y="; + }; + + cargoRoot = "bindings"; + + nativeBuildInputs = [ + cmake + qt6.wrapQtAppsHook + rustPlatform.cargoSetupHook + cargo + rustc + ]; + + buildInputs = [ + qt6.qtbase + qt6.qtdeclarative + ]; + + cmakeFlags = [ + (lib.cmakeFeature "FETCHCONTENT_SOURCE_DIR_CORROSION" "${finalAttrs.passthru.sources.corrosion}") + ]; + + postPatch = '' + substituteInPlace platformtheme/CMakeLists.txt \ + --replace-fail "\''${QT_INSTALL_PLUGINS}/platformthemes" \ + "${qt6.qtbase.qtPluginPrefix}/platformthemes" + ''; + + passthru = { + sources = { + # rev from source/bindings/CMakeLists.txt + corrosion = fetchFromGitHub { + owner = "corrosion-rs"; + repo = "corrosion"; + rev = "v0.5.2"; + hash = "sha256-sO2U0llrDOWYYjnfoRZE+/ofg3kb+ajFmqvaweRvT7c="; + }; + }; + + updateScript = writeShellScript "update-cutecosmic" '' + set -euo pipefail + + ${lib.getExe nix-update} cutecosmic --version branch=HEAD + src=$(nix-build -A cutecosmic.src --no-out-link) + + # Corrosion-rs dependency + tag=$(${lib.getExe ripgrep} --multiline --pcre2 --only-matching \ + 'FetchContent_Declare\(\s*Corrosion[^)]*GIT_TAG\s+(v[\d.]+)' \ + --replace '$1' \ + "$src/bindings/CMakeLists.txt") + + ${lib.getExe' common-updater-scripts "update-source-version"} \ + cutecosmic.sources.corrosion \ + "$tag" \ + --source-key=out \ + --version-key=rev \ + --file=${lib.escapeShellArg (toString ./.) + "/package.nix"} + ''; + }; + + meta = { + homepage = "https://github.com/IgKh/cutecosmic"; + description = "Qt platform theme for COSMIC Desktop environment"; + license = lib.licenses.gpl3Only; + maintainers = with lib.maintainers; [ + amozeo + thefossguy + ]; + platforms = lib.platforms.linux; + }; +}) diff --git a/pkgs/by-name/da/daisydisk/package.nix b/pkgs/by-name/da/daisydisk/package.nix index eeea25bd4731..2894bb37728f 100644 --- a/pkgs/by-name/da/daisydisk/package.nix +++ b/pkgs/by-name/da/daisydisk/package.nix @@ -8,14 +8,13 @@ common-updater-scripts, writeShellApplication, }: - stdenvNoCC.mkDerivation (finalAttrs: { pname = "daisydisk"; - version = "4.32"; + version = "4.33.2"; src = fetchzip { url = "https://daisydiskapp.com/download/DaisyDisk.zip"; - hash = "sha256-HRW851l3zCq43WmLkElvVlIEmfCsCUMFw/LL2cPa2Xk="; + hash = "sha256-YkXjaDbnwkQUsfhzCA5xQ6C6NGjQV6qj7znyjcKgwIg="; stripRoot = false; }; diff --git a/pkgs/by-name/do/docker-color-output/package.nix b/pkgs/by-name/do/docker-color-output/package.nix index f9bc39363722..45b1918d3ae7 100644 --- a/pkgs/by-name/do/docker-color-output/package.nix +++ b/pkgs/by-name/do/docker-color-output/package.nix @@ -7,20 +7,20 @@ buildGoModule (finalAttrs: { pname = "docker-color-output"; - version = "2.6.1"; + version = "3.0.1"; src = fetchFromGitHub { owner = "devemio"; repo = "docker-color-output"; - tag = finalAttrs.version; - hash = "sha256-r11HNRXnmTC1CJR871sX7xW9ts9KAu1+azwIwXH09qg="; + tag = "v${finalAttrs.version}"; + hash = "sha256-Rpym9YckgJ583zgPpC/mQW1IGgQUppemFhAecgy3M8A="; }; postInstall = '' mv $out/bin/cli $out/bin/docker-color-output ''; - vendorHash = null; + vendorHash = "sha256-g+yaVIx4jxpAQ/+WrGKxhVeliYx7nLQe/zsGpxV4Fn4="; passthru = { updateScript = nix-update-script { }; diff --git a/pkgs/by-name/do/dockmate/package.nix b/pkgs/by-name/do/dockmate/package.nix new file mode 100644 index 000000000000..14e1c07d05cd --- /dev/null +++ b/pkgs/by-name/do/dockmate/package.nix @@ -0,0 +1,44 @@ +{ + lib, + buildGoModule, + dockmate, + fetchFromGitHub, + versionCheckHook, +}: + +buildGoModule rec { + pname = "dockmate"; + version = "0.1.0"; + + src = fetchFromGitHub { + owner = "shubh-io"; + repo = "DockMate"; + tag = "v${version}"; + hash = "sha256-kepv8jY/hddRpJMhwr55k0R8CPBKtifjrGiRxoIUDXw="; + }; + + nativeInstallCheckInputs = [ + versionCheckHook + ]; + + vendorHash = "sha256-/votTA5Rn8beq1PgHpC01D01VjBIwciPVN5eNc8iZRM="; + + # Skip tests that require a Docker daemon or interactive filesystem access, + # as these are unavailable in the restricted Nix build sandbox. + checkFlags = [ + "-skip=TestDockerComposeCommandNoFiles|TestDockerComposeCommandSingleFile|TestDockerComposeCommandMultipleFiles|TestWritingToConfigFile" + ]; + + doInstallCheck = true; + + meta = { + changelog = "https://github.com/shubh-io/DockMate/releases/tag/${src.tag}"; + description = "Terminal-based Docker container manager that actually works"; + homepage = "https://github.com/shubh-io/DockMate"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ + sith-lord-vader + ]; + mainProgram = "dockmate"; + }; +} diff --git a/pkgs/by-name/do/dolt/package.nix b/pkgs/by-name/do/dolt/package.nix index cbfff0b01c04..ddb1ba53a4d2 100644 --- a/pkgs/by-name/do/dolt/package.nix +++ b/pkgs/by-name/do/dolt/package.nix @@ -1,26 +1,29 @@ { fetchFromGitHub, + icu, lib, buildGoModule, }: buildGoModule (finalAttrs: { pname = "dolt"; - version = "1.59.10"; + version = "1.81.2"; src = fetchFromGitHub { owner = "dolthub"; repo = "dolt"; tag = "v${finalAttrs.version}"; - hash = "sha256-DfocUOHpPdNeMcL7kVm7ggm2cVgWp/ifvCFyFosxhcs="; + hash = "sha256-dL6WJvApRGC8ADFowms81YbJpLbbTyNQfI/RIotgTdc="; }; modRoot = "./go"; subPackages = [ "cmd/dolt" ]; - vendorHash = "sha256-yZ+q4KNfIiR2gpk10dpZOMiEN3V/Lk/pzhgaqp7lKag="; + vendorHash = "sha256-wufwBlRiRiNVZgkBFRqZIB6vNeWBBaCDdV2tcynhatk="; proxyVendor = true; doCheck = false; + buildInputs = [ icu ]; + meta = { description = "Relational database with version control and CLI a-la Git"; mainProgram = "dolt"; diff --git a/pkgs/by-name/dr/drasl/package.nix b/pkgs/by-name/dr/drasl/package.nix new file mode 100644 index 000000000000..77963d2fafde --- /dev/null +++ b/pkgs/by-name/dr/drasl/package.nix @@ -0,0 +1,67 @@ +{ + lib, + buildGoModule, + fetchFromGitHub, + fetchNpmDeps, + npmHooks, + go-swag, + nodejs, + nix-update-script, +}: +buildGoModule (finalAttrs: { + pname = "drasl"; + version = "3.4.2"; + + src = fetchFromGitHub { + owner = "unmojang"; + repo = "drasl"; + tag = "v${finalAttrs.version}"; + hash = "sha256-SOH6WXhBBx5JShr18Q0SyDFYVE7LMRUONdCJ1NB2HRQ="; + }; + + nativeBuildInputs = [ + go-swag + nodejs + npmHooks.npmConfigHook + ]; + + npmDeps = fetchNpmDeps { + inherit (finalAttrs) src; + hash = "sha256-L0y04zLgno5kKUACyokma8uk/fNY2mwdMwsq217SCqI="; + }; + + vendorHash = "sha256-4Rk59bnDFYpraoGvkBUW6Z5fiXUmm2RLwS1wxScWAMQ="; + + overrideModAttrs = oldAttrs: { + nativeBuildInputs = lib.filter (drv: drv != npmHooks.npmConfigHook) oldAttrs.nativeBuildInputs; + preBuild = null; + }; + + postPatch = '' + substituteInPlace build_config.go --replace-fail "\"/usr/share/drasl\"" "\"$out/share/drasl\"" + ''; + + preBuild = '' + make prebuild + ''; + + postInstall = '' + mkdir -p "$out/share/drasl" + cp -R ./{assets,view,public,locales} "$out/share/drasl" + ''; + + passthru = { + updateScript = nix-update-script { }; + }; + + meta = { + description = "Yggdrasil-compatible API server for Minecraft"; + homepage = "https://github.com/unmojang/drasl"; + license = lib.licenses.gpl3Plus; + maintainers = with lib.maintainers; [ + evan-goode + ungeskriptet + ]; + mainProgram = "drasl"; + }; +}) diff --git a/pkgs/by-name/en/envoluntary/package.nix b/pkgs/by-name/en/envoluntary/package.nix new file mode 100644 index 000000000000..5ef678bcf0e1 --- /dev/null +++ b/pkgs/by-name/en/envoluntary/package.nix @@ -0,0 +1,37 @@ +{ + lib, + rustPlatform, + fetchFromGitHub, + bash, +}: + +rustPlatform.buildRustPackage rec { + pname = "envoluntary"; + version = "0.1.4"; + + src = fetchFromGitHub { + owner = "dfrankland"; + repo = "envoluntary"; + tag = "envoluntary-v${version}"; + hash = "sha256-ccMXrR7PnV3aCehJtsJyXx5ZiCz/KrHkKDLQSV3sMYU="; + }; + + cargoHash = "sha256-AXWOU8UduQZxZWcTaOyxilbdz4BMnZlrJEFTUakFa4w="; + + preCheck = '' + export NIX_BIN_BASH="${bash}/bin/bash" + ''; + + meta = { + description = "Automatic Nix development environments for your shell"; + longDescription = '' + Envoluntary seamlessly loads and unloads Nix development environments based on directory + patterns, eliminating the need for per-project .envrc / flake.nix files while giving you + centralized control over your development tooling. + ''; + homepage = "https://github.com/dfrankland/envoluntary"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ blemouzy ]; + mainProgram = "envoluntary"; + }; +} diff --git a/pkgs/by-name/fe/fence/package.nix b/pkgs/by-name/fe/fence/package.nix new file mode 100644 index 000000000000..ec528e557ee7 --- /dev/null +++ b/pkgs/by-name/fe/fence/package.nix @@ -0,0 +1,78 @@ +{ + lib, + buildGoModule, + fetchFromGitHub, + nix-update-script, + stdenv, + # linux dependencies + makeWrapper, + bubblewrap, + socat, + bpftrace, + installShellFiles, +}: + +buildGoModule (finalAttrs: { + pname = "fence"; + version = "0.1.32"; + + src = fetchFromGitHub { + owner = "Use-Tusk"; + repo = "fence"; + tag = "v${finalAttrs.version}"; + hash = "sha256-D+mAwmeOGSuKqO72atjvlhg2ez4MXtrjlnHEXPX34jI="; + }; + + vendorHash = "sha256-8v6B39TCwzu6DgFr1nuaGBEQ9s06rbBCENiGUIVw9Rk="; + + ldflags = [ + "-s" + "-w" + "-X=main.version=${finalAttrs.version}" + "-X=main.buildTime=1970-01-01T00:00:00Z" + "-X=main.gitCommit=${finalAttrs.src.rev}" + ]; + + nativeBuildInputs = [ + installShellFiles + ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ makeWrapper ]; + + # Tests want to create sandbox profiles on darwin. + # Nested sandboxes are unsupported by seatbelt, which means we cannot execute the tests inside the nix build sandbox. + doCheck = stdenv.hostPlatform.isLinux; + + nativeCheckInputs = lib.optionals stdenv.hostPlatform.isLinux [ + bubblewrap + socat + bpftrace + ]; + + postInstall = + lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) '' + installShellCompletion --cmd ${finalAttrs.meta.mainProgram} \ + --bash <($out/bin/${finalAttrs.meta.mainProgram} completion bash) \ + --fish <($out/bin/${finalAttrs.meta.mainProgram} completion fish) \ + --zsh <($out/bin/${finalAttrs.meta.mainProgram} completion zsh) + '' + + lib.optionalString stdenv.hostPlatform.isLinux '' + wrapProgram $out/bin/${finalAttrs.meta.mainProgram} \ + --suffix PATH : ${ + lib.makeBinPath [ + bubblewrap + socat + bpftrace + ] + } + ''; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "Lightweight, container-free sandbox for running commands with network and filesystem restrictions"; + homepage = "https://github.com/Use-Tusk/fence"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ dwt ]; + mainProgram = "fence"; + }; +}) diff --git a/pkgs/by-name/fi/figtree/package.nix b/pkgs/by-name/fi/figtree/package.nix new file mode 100644 index 000000000000..0b4832de37d4 --- /dev/null +++ b/pkgs/by-name/fi/figtree/package.nix @@ -0,0 +1,42 @@ +{ + lib, + stdenvNoCC, + fetchFromGitHub, +}: + +stdenvNoCC.mkDerivation (finalAttrs: { + pname = "figtree"; + version = "2.0.3"; + + src = fetchFromGitHub { + owner = "erikdkennedy"; + repo = "figtree"; + tag = "v${finalAttrs.version}"; + hash = "sha256-owzoM0zfKYxLJCQbL1eUE0cdSLVmm+QNRUGxbsNJ37I="; + }; + + sourceRoot = "fonts"; + + setSourceRoot = "sourceRoot=$(pwd)"; + + installPhase = '' + runHook preInstall + find . -type f -iname '*.ttf' | while read f; do + d="$out/share/fonts/truetype/figtree/$(basename "$f")" + install -Dm644 -D "$f" "$d" + done + find . -type f -iname '*.otf' | while read f; do + d="$out/share/fonts/opentype/figtree/$(basename "$f")" + install -Dm644 -D "$f" "$d" + done + runHook postInstall + ''; + + meta = { + homepage = "https://github.com/erikdkennedy/figtree"; + description = "Simple and friendly geometric sans serif font"; + platforms = lib.platforms.all; + maintainers = with lib.maintainers; [ mrcjkb ]; + license = lib.licenses.ofl; + }; +}) diff --git a/pkgs/by-name/gi/git-pkgs/package.nix b/pkgs/by-name/gi/git-pkgs/package.nix new file mode 100644 index 000000000000..5b67fe053d4c --- /dev/null +++ b/pkgs/by-name/gi/git-pkgs/package.nix @@ -0,0 +1,52 @@ +{ + lib, + stdenv, + fetchFromGitHub, + buildGoModule, + installShellFiles, +}: +buildGoModule rec { + pname = "git-pkgs"; + version = "0.11.0"; + + src = fetchFromGitHub { + owner = "git-pkgs"; + repo = "git-pkgs"; + tag = "v${version}"; + hash = "sha256-XjW3qwybTmzW2CNgu1Edgs5ZZ9xl3+uS4sT8VWD3jyQ="; + }; + + vendorHash = "sha256-/LJwq17f7SAjSV2ZcLrdaKZYf9RVJ9wtYqEsW0ubT1Q="; + + subPackages = [ "." ]; + + ldflags = [ + "-X github.com/git-pkgs/git-pkgs/cmd.version=${version}" + ]; + + # Tries to access the internet. + doCheck = false; + + nativeBuildInputs = [ installShellFiles ]; + + postBuild = '' + go run scripts/generate-man.go + installManPage man/*.1 + ''; + + postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) '' + installShellCompletion --cmd git-pkgs \ + --bash <($out/bin/git-pkgs completion bash) \ + --fish <($out/bin/git-pkgs completion fish) \ + --zsh <($out/bin/git-pkgs completion zsh) + ''; + + meta = { + homepage = "https://github.com/git-pkgs/git-pkgs"; + description = "Git subcommand for analyzing package/dependency usage in git repositories over time"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ bnjmnt4n ]; + platforms = lib.platforms.unix; + mainProgram = "git-pkgs"; + }; +} diff --git a/pkgs/by-name/go/godsvg/package.nix b/pkgs/by-name/go/godsvg/package.nix new file mode 100644 index 000000000000..9a1be11e540c --- /dev/null +++ b/pkgs/by-name/go/godsvg/package.nix @@ -0,0 +1,80 @@ +{ + godot_4_6, + makeWrapper, + stdenv, + lib, + fetchFromGitHub, + nix-update-script, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "godsvg"; + version = "1.0-alpha14"; + src = fetchFromGitHub { + owner = "MewPurPur"; + repo = "GodSVG"; + tag = "v${finalAttrs.version}"; + hash = "sha256-Bo45Zu13RRPxf5tZhCxAulTe61o9kwqX1nEFJDaeBng="; + }; + + nativeBuildInputs = [ + godot_4_6 + makeWrapper + ]; + + buildPhase = + let + # https://github.com/MewPurPur/GodSVG/blob/main/export_presets.cfg + preset = + { + "x86_64-linux" = "Linux"; + "aarch64-darwin" = "macOS"; + } + .${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); + in + '' + runHook preBuild + + # Cannot create file `/homeless-shelter/.config/godot_4_5/projects/...` + export HOME=$TMPDIR + # Link the export-templates to the expected location. The `--export` option expects the templates in the home directory. + mkdir -p $HOME/.local/share/godot_4_5 + ln -s ${godot_4_6}/share/godot_4_5/templates $HOME/.local/share/godot_4_5 + + godot4 --headless --export-pack ${preset} godsvg.pck + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + install -Dm444 godsvg.pck $out/share/godsvg/godsvg.pck + + makeWrapper ${godot_4_6}/bin/godot4 $out/bin/godsvg \ + --add-flag "--main-pack" \ + --add-flag "$out/share/godsvg/godsvg.pck" + + install -Dm444 ./assets/logos/icon.svg $out/share/icons/hicolor/scalable/apps/godsvg.svg + install -Dm444 ./assets/logos/icon.png $out/share/icons/hicolor/256x256/apps/godsvg.png + install -Dm444 ./assets/GodSVG.desktop $out/share/applications/GodSVG.desktop + + runHook postInstall + ''; + + # currently, all tags are marked as pre-release + passthru.updateScript = nix-update-script { extraArgs = [ "--version=unstable" ]; }; + + meta = { + homepage = "https://www.godsvg.com/"; + description = "A vector graphics application for structured SVG editing"; + changelog = "https://www.godsvg.com/article/${lib.replaceString "." "-" finalAttrs.version}"; + license = lib.licenses.mit; + platforms = [ + "x86_64-linux" + "aarch64-darwin" + ]; + mainProgram = "godsvg"; + maintainers = [ lib.maintainers.mochienya ]; + }; +}) diff --git a/pkgs/by-name/go/golazo/package.nix b/pkgs/by-name/go/golazo/package.nix new file mode 100644 index 000000000000..c3fbb1916487 --- /dev/null +++ b/pkgs/by-name/go/golazo/package.nix @@ -0,0 +1,42 @@ +{ + lib, + stdenv, + buildGoModule, + fetchFromGitHub, + gitUpdater, + libnotify, +}: +buildGoModule (finalAttrs: { + pname = "golazo"; + version = "0.21.0"; + + src = fetchFromGitHub { + owner = "0xjuanma"; + repo = "golazo"; + tag = "v${finalAttrs.version}"; + hash = "sha256-TWpaW8MTkYEOp+7dd3LiDs05tCB3riUPmFRzhMiAeZI="; + }; + + vendorHash = "sha256-M2gfqU5rOfuiVSZnH/Dr8OVmDhyU2jYkgW7RuIUTd+E="; + + subPackages = [ "." ]; + + buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ libnotify ]; + + ldflags = [ + "-X github.com/0xjuanma/golazo/cmd.Version=v${finalAttrs.version}" + ]; + + passthru.updateScript = gitUpdater { + rev-prefix = "v"; + }; + + meta = { + description = "Minimal TUI app to keep up with live & recent football/soccer matches written in Go"; + homepage = "https://github.com/0xjuanma/golazo"; + license = lib.licenses.mit; + platforms = lib.platforms.all; + mainProgram = "golazo"; + maintainers = with lib.maintainers; [ rafaelrc ]; + }; +}) diff --git a/pkgs/by-name/hc/hcloud-upload-image/package.nix b/pkgs/by-name/hc/hcloud-upload-image/package.nix new file mode 100644 index 000000000000..e38f5648bbb2 --- /dev/null +++ b/pkgs/by-name/hc/hcloud-upload-image/package.nix @@ -0,0 +1,51 @@ +{ + buildGoModule, + fetchFromGitHub, + installShellFiles, + lib, + stdenv, +}: + +buildGoModule rec { + pname = "hcloud-upload-image"; + version = "1.3.0"; + + src = fetchFromGitHub { + owner = "apricote"; + repo = "hcloud-upload-image"; + tag = "v${version}"; + hash = "sha256-1u9tpzciYjB/EgBI81pg9w0kez7hHZON7+AHvfKW7k0="; + }; + + vendorHash = "sha256-IdOAUBPg0CEuHd2rdc7jOlw0XtnAhr3PVPJbnFs2+x4="; + + ldflags = [ + "-s" + "-w" + "-X main.version=${version}" + ]; + + subPackages = [ "." ]; + + nativeBuildInputs = [ installShellFiles ]; + + postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) '' + for shell in bash fish zsh; do + $out/bin/hcloud-upload-image completion $shell > hcloud.$shell + installShellCompletion hcloud.$shell + done + ''; + + env.GOWORK = "off"; + + meta = { + changelog = "https://github.com/apricote/hcloud-upload-image/releases/tag/v${version}"; + description = "Quickly upload any raw disk images into your Hetzner Cloud projects"; + mainProgram = "hcloud-upload-image"; + homepage = "https://github.com/apricote/hcloud-upload-image"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ + sshine + ]; + }; +} diff --git a/pkgs/by-name/hd/hdr10plus_tool/package.nix b/pkgs/by-name/hd/hdr10plus_tool/package.nix index d1e27962afa9..912776b6c5dc 100644 --- a/pkgs/by-name/hd/hdr10plus_tool/package.nix +++ b/pkgs/by-name/hd/hdr10plus_tool/package.nix @@ -14,16 +14,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "hdr10plus_tool"; - version = "1.7.1"; + version = "1.7.2"; src = fetchFromGitHub { owner = "quietvoid"; repo = "hdr10plus_tool"; tag = finalAttrs.version; - hash = "sha256-Lpm770Eb81L+eEzHUD+0+J3iS9CFdSP3odhw6KDtgAI="; + hash = "sha256-LFfb6B0LPa+kqqluDssuQaGdaBLgD9rs51Cqb09BK7g="; }; - cargoHash = "sha256-Qkl02HAC6PVCHW226R6StmzrGZv/IHcE88kEg9BpObs="; + cargoHash = "sha256-gAD+rCZ2Z+TutrUpOXFhvzh60W2Usz41QpXgBZ6SjiE="; nativeBuildInputs = [ pkg-config ]; diff --git a/pkgs/by-name/hy/hyprwhspr-rs/package.nix b/pkgs/by-name/hy/hyprwhspr-rs/package.nix new file mode 100644 index 000000000000..49b19f8cd2e2 --- /dev/null +++ b/pkgs/by-name/hy/hyprwhspr-rs/package.nix @@ -0,0 +1,68 @@ +{ + lib, + fetchFromGitHub, + rustPlatform, + openssl, + pkg-config, + alsa-lib, + systemdLibs, + libxkbcommon, + makeWrapper, + versionCheckHook, + # hardware acceleration can be enabled by overriding whisper-cpp/onnxruntime or by editing config.cudaSupport/config.rocmSupport globals + whisper-cpp, + onnxruntime, +}: + +rustPlatform.buildRustPackage (finalAttrs: { + pname = "hyprwhspr-rs"; + version = "0.3.20"; + + src = fetchFromGitHub { + owner = "better-slop"; + repo = "hyprwhspr-rs"; + tag = "v${finalAttrs.version}"; + hash = "sha256-QCOzTbLBoygOLLN90840HHHFEaHdorf0CQOCuGpCIfo="; + }; + + cargoHash = "sha256-hLjWHMY2wpEfPfLIdfxDI21FrrC1QOWGRkTezkmzmGY="; + + nativeBuildInputs = [ + pkg-config + makeWrapper + ]; + + buildInputs = [ + openssl + alsa-lib + onnxruntime + systemdLibs + libxkbcommon + ]; + + postInstall = '' + wrapProgram $out/bin/hyprwhspr-rs \ + --prefix PATH : ${lib.makeBinPath [ whisper-cpp ]} + # default voice activation sounds + install -Dm644 assets/* -t $out/share/assets + ''; + + # provide onnx runtime libraries to prevent default behavior of downloading them during the build step + env = { + ORT_STRATEGY = "system"; + ORT_LIB_LOCATION = "${lib.getLib onnxruntime}/lib"; + ORT_PREFER_DYNAMIC_LINK = "1"; + }; + + nativeInstallCheckInputs = [ versionCheckHook ]; + doInstallCheck = true; + + meta = { + description = "Native speech-to-text voice dictation for Hyprland"; + homepage = "https://github.com/better-slop/hyprwhspr-rs"; + license = lib.licenses.mit; + platforms = lib.platforms.linux; + mainProgram = "hyprwhspr-rs"; + maintainers = with lib.maintainers; [ CodeF53 ]; + }; +}) diff --git a/pkgs/by-name/in/intel-graphics-compiler/package.nix b/pkgs/by-name/in/intel-graphics-compiler/package.nix index 2b70443cec1c..8cb90a355d23 100644 --- a/pkgs/by-name/in/intel-graphics-compiler/package.nix +++ b/pkgs/by-name/in/intel-graphics-compiler/package.nix @@ -19,7 +19,7 @@ let in stdenv.mkDerivation rec { pname = "intel-graphics-compiler"; - version = "2.24.8"; + version = "2.27.10"; # See the repository for expected versions: # @@ -42,22 +42,22 @@ stdenv.mkDerivation rec { name = "vc-intrinsics"; owner = "intel"; repo = "vc-intrinsics"; - tag = "v0.24.1"; - hash = "sha256-IpScRc+sWEcD8ZH5TinMPVFq1++vIVp774TJsg8mUMY="; + tag = "v0.24.2"; + hash = "sha256-ypHFqgc96m+im7DCe5ZOGMGIhB7mtRYPhEmMSg2+pyc="; }) (fetchFromGitHub { name = "opencl-clang"; owner = "intel"; repo = "opencl-clang"; - tag = "v16.0.6"; - hash = "sha256-qxMnKQWQ32yF2rZGGOel2ynZJKfbAlk9U+ttWuzYRog="; + tag = "v16.0.7"; + hash = "sha256-MaL4DRmIdnBA/DZZezNzbsjWh5mz99mOTUJoqcXE1/c="; }) (fetchFromGitHub { name = "llvm-spirv"; owner = "KhronosGroup"; repo = "SPIRV-LLVM-Translator"; - tag = "v16.0.19"; - hash = "sha256-GTTEThCNPyq0CpD6Vp4L0ZEEqOZ7uLbt9sdgXLs7MUg="; + tag = "v16.0.20"; + hash = "sha256-3ymwHSNqCdMIgzPYIYUIHMjJHSxdcGK11DF8qPM6nMs="; }) ]; diff --git a/pkgs/by-name/is/isle-portable/package.nix b/pkgs/by-name/is/isle-portable/package.nix index 87747926c26e..28b6638c7553 100644 --- a/pkgs/by-name/is/isle-portable/package.nix +++ b/pkgs/by-name/is/isle-portable/package.nix @@ -1,110 +1,110 @@ { lib, - fetchFromGitHub, - stdenv, - unstableGitUpdater, - - # Native Build Inputs - cmake, - python3, - pkg-config, - - # Build Inputs - libxrender, - libxrandr, - libxi, - libxinerama, - libxfixes, - libxext, - libxcursor, - libx11, - wayland, - libxkbcommon, - wayland-protocols, - glew, - qt6, - alsa-lib, - sdl3, - iniparser, - - # Options - imguiDebug ? false, - addrSan ? false, - emscriptenHost ? "", + callPackage, + requireFile, + runCommand, + makeBinaryWrapper, + symlinkJoin, + isle-portable-unwrapped ? callPackage ./unwrapped.nix { }, + _7zz, }: -stdenv.mkDerivation (finalAttrs: { - strictDeps = true; - pname = "isle-portable"; - version = "0-unstable-2025-11-15"; - - src = fetchFromGitHub { - owner = "isledecomp"; - repo = "isle-portable"; - rev = "d182a8057c5c0827c33639367b7e00e9ab389e78"; - hash = "sha256-V3jmUUzTkLKUwa/mCtp+UbJNAmHlrrDIKGimKOJOJss="; - fetchSubmodules = true; +let + legoIslandIso = requireFile { + name = "LEGO_ISLANDI.ISO"; + hash = "sha256-pefu/XcvGKcWYzaFldWeFEYdc7OUBgbmlgWyH2CnZec="; + message = "ISO file of Lego Island 1.1"; }; - postPatch = lib.optionalString stdenv.isDarwin '' - substituteInPlace packaging/macos/CMakeLists.txt \ - --replace-fail "fixup_bundle" "#fixup_bundle" + unpackedIso = runCommand "LEGO_ISLANDI-unpacked" { nativeBuildInputs = [ _7zz ]; } '' + mkdir "$out" + 7zz x ${legoIslandIso} -o"$out" ''; +in +symlinkJoin ( + finalAttrs: + let + # INI file with the LEGO Island Disk files in it + iniWithDisk = lib.recursiveUpdate finalAttrs.passthru.iniConfig { + isle = { + diskpath = "${unpackedIso}/DATA/disk"; + cdpath = "${unpackedIso}"; + }; + }; - outputs = [ - "out" - "lib" - ]; + # Properly quoted INI file + quotedIni = lib.mapAttrsRecursiveCond (as: (!lib.isDerivation as)) ( + _: value: ''"${toString value}"'' + ) iniWithDisk; - nativeBuildInputs = [ - cmake - qt6.wrapQtAppsHook - python3 - pkg-config - ]; + # Make a config ini file + iniFile = + runCommand "isle.ini" + { + passAsFile = [ "iniFile" ]; - buildInputs = [ - qt6.qtbase - sdl3 - iniparser - ] - ++ lib.optionals stdenv.hostPlatform.isLinux [ - libx11 - libxext - libxrandr - libxrender - libxfixes - libxi - libxinerama - libxcursor - wayland - libxkbcommon - wayland-protocols - glew - alsa-lib - ]; + # Set the ISO path. + iniFile = lib.generators.toINI { } quotedIni; + } + '' + cp "$iniFilePath" "$out" + ''; + in + { + inherit (isle-portable-unwrapped) version; + pname = "isle-portable-wrapped"; - cmakeFlags = [ - (lib.cmakeBool "DOWNLOAD_DEPENDENCIES" false) - (lib.cmakeBool "ISLE_DEBUG" imguiDebug) - (lib.cmakeFeature "ISLE_EMSCRIPTEN_HOST" emscriptenHost) - ]; - - passthru.updateScript = unstableGitUpdater { hardcodeZeroVersion = true; }; - - meta = { - description = "Portable decompilation of Lego Island"; - homepage = "https://github.com/isledecomp/isle-portable"; - license = with lib.licenses; [ - # The original code for the portable project - lgpl3Plus - # The decompilation code - mit - unfree + paths = [ + isle-portable-unwrapped ]; - platforms = with lib.platforms; windows ++ linux ++ darwin; - mainProgram = "isle"; - maintainers = with lib.maintainers; [ - RossSmyth + + nativeBuildInputs = [ + makeBinaryWrapper ]; - }; -}) + + postBuild = '' + wrapProgram "$out/bin/isle" \ + --add-flags "--ini ${iniFile}" + ''; + + passthru.unwrapped = isle-portable-unwrapped; + + passthru.iniConfig = { + isle = { + diskpath = null; + cdpath = null; + mediapath = isle-portable-unwrapped; + savepath = "~/.local/share/isledecomp/isle"; + "flip surfaces" = "false"; + "full screen" = "true"; + "exclusive full screen" = "true"; + "wide view angle" = "true"; + "3dsound" = "true"; + "music" = "true"; + "cursor sensitivity" = "4.000000"; + "back buffers in video ram" = "-1"; + "island quality" = "2"; + "island texture" = "1"; + "max lod" = "3.600000"; + "max allowed extras" = "20"; + "transition type" = "3"; + "touch scheme" = "2"; + "haptic" = "true"; + "horizontal resolution" = "640"; + "vertical resolution" = "480"; + "exclusive x resolution" = "640"; + "exclusive y resolution" = "480"; + "exclusive framerate" = "60"; + "frame delta" = "10"; + "msaa" = "0"; + "anisotropic" = ""; + }; + + extensions = { + "texture loader" = "false"; + "si loader" = "false"; + }; + }; + + meta = removeAttrs isle-portable-unwrapped.meta [ "position" ]; + } +) diff --git a/pkgs/by-name/is/isle-portable/unwrapped.nix b/pkgs/by-name/is/isle-portable/unwrapped.nix new file mode 100644 index 000000000000..825b9e9bad5a --- /dev/null +++ b/pkgs/by-name/is/isle-portable/unwrapped.nix @@ -0,0 +1,119 @@ +{ + lib, + fetchFromGitHub, + stdenv, + callPackage, + unstableGitUpdater, + + # Native Build Inputs + cmake, + ninja, + python3, + pkg-config, + + # Build Inputs + libxrender, + libxrandr, + libxi, + libxinerama, + libxfixes, + libxext, + libxcursor, + libx11, + wayland, + libxkbcommon, + wayland-protocols, + glew, + qt6, + alsa-lib, + sdl3, + iniparser, + libweaver, + + # Options + imguiDebug ? false, + emscriptenHost ? "", +}: +stdenv.mkDerivation (finalAttrs: { + strictDeps = true; + pname = "isle-portable"; + version = "0-unstable-2026-01-31"; + + src = fetchFromGitHub { + owner = "isledecomp"; + repo = "isle-portable"; + rev = "03cb40190a1aedea23b857942d14359c86ad3857"; + hash = "sha256-YGj+2FzotNmHrYBHmlMt6xuSXgXWa6j3rmukjUyGegA="; + fetchSubmodules = true; + }; + + postPatch = lib.optionalString stdenv.isDarwin '' + substituteInPlace packaging/macos/CMakeLists.txt \ + --replace-fail "fixup_bundle" "#fixup_bundle" + ''; + + outputs = [ + "out" + "lib" + ]; + + nativeBuildInputs = [ + cmake + ninja + qt6.wrapQtAppsHook + python3 + pkg-config + ]; + + buildInputs = [ + qt6.qtbase + sdl3 + iniparser + libweaver + ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ + libx11 + libxext + libxrandr + libxrender + libxfixes + libxi + libxinerama + libxcursor + wayland + libxkbcommon + wayland-protocols + glew + alsa-lib + ]; + + cmakeFlags = [ + (lib.cmakeBool "DOWNLOAD_DEPENDENCIES" false) + (lib.cmakeBool "ISLE_DEBUG" imguiDebug) + (lib.cmakeFeature "ISLE_EMSCRIPTEN_HOST" emscriptenHost) + ]; + + passthru = { + updateScript = unstableGitUpdater { hardcodeZeroVersion = true; }; + wrapped = callPackage ./package.nix { + isle-portable-unwrapped = finalAttrs.finalPackage; + }; + }; + + meta = { + description = "Portable decompilation of Lego Island"; + homepage = "https://github.com/isledecomp/isle-portable"; + license = with lib.licenses; [ + # The original code for the portable project + lgpl3Plus + # The decompilation code + mit + unfree + ]; + platforms = with lib.platforms; windows ++ linux ++ darwin; + mainProgram = "isle"; + maintainers = with lib.maintainers; [ + RossSmyth + ]; + }; +}) diff --git a/pkgs/by-name/ki/kilocode-cli/package.nix b/pkgs/by-name/ki/kilocode-cli/package.nix index 2d600ce64577..01531410a5ff 100644 --- a/pkgs/by-name/ki/kilocode-cli/package.nix +++ b/pkgs/by-name/ki/kilocode-cli/package.nix @@ -1,33 +1,46 @@ { lib, + stdenv, stdenvNoCC, fetchFromGitHub, fetchPnpmDeps, + fetchNpmDeps, nodejs, writableTmpDirAsHomeHook, pnpmConfigHook, pnpm, unzip, patchelf, + autoPatchelfHook, ripgrep, versionCheckHook, nix-update-script, }: stdenvNoCC.mkDerivation (finalAttrs: { pname = "kilocode-cli"; - version = "0.18.0"; + version = "0.25.1"; src = fetchFromGitHub { owner = "Kilo-Org"; repo = "kilocode"; tag = "cli-v${finalAttrs.version}"; - hash = "sha256-zEhv/tcKMR9D+aTVxaw3LBjbEBpuy4o0cpV/vowOFSY="; + hash = "sha256-XlJ9/9FABLpKVJXdIRzbzOpJVXdIzgFvPPeER1LRsuk="; }; pnpmDeps = fetchPnpmDeps { inherit (finalAttrs) pname version src; - fetcherVersion = 2; - hash = "sha256-fTCuTAEYNyqitBvOafQyi3BDqI/O7u7yEhSPH7FVDUg="; + fetcherVersion = 3; + hash = "sha256-Q/LamZwVaIQVILtXRi1RQrYtpxYJWEKPAt3knwm47S0="; + }; + + npmDeps = fetchNpmDeps { + name = "${finalAttrs.pname}-npm-deps"; + inherit (finalAttrs) src; + sourceRoot = "${finalAttrs.src.name}/cli"; + postPatch = '' + cp ./npm-shrinkwrap.dist.json ./npm-shrinkwrap.json + ''; + hash = "sha256-wH4Gyd5nv8sCSQStFqIidoICvlXXEs2xNNX+DH133wA="; }; buildInputs = [ @@ -41,7 +54,8 @@ stdenvNoCC.mkDerivation (finalAttrs: { nodejs unzip patchelf - ]; + ] + ++ lib.optionals stdenv.hostPlatform.isElf [ autoPatchelfHook ]; strictDeps = true; @@ -50,6 +64,36 @@ stdenvNoCC.mkDerivation (finalAttrs: { buildPhase = '' runHook preBuild + mkdir -p ./cli/.dist/ + find ./cli -maxdepth 1 -type f -name "*.dist.*" -print0 | while IFS= read -r -d "" file; do + cp "$file" "./cli/.dist/$(basename "$file" | sed 's/\.dist\././')" + done + + if ! diff "$PWD/cli/npm-shrinkwrap.dist.json" "$npmDeps/package-lock.json"; then + echo "npm-shrinkwrap.json is out of date" + echo "The npm-shrinkwrap.json in src is not the same as the in $npmDeps." + echo "To fix the issue:" + echo '1. Use `lib.fakeHash` as the npmDepsHash value' + echo "2. Build the derivation and wait for it to fail with a hash mismatch" + echo "3. Copy the 'got: sha256-' value back into the npmDepsHash field" + exit 1 + fi + export npm_config_cache="$npmDeps" + export npm_config_offline="true" + export npm_config_progress="false" + ( + cd ./cli/.dist + npm ci --omit=dev --ignore-scripts + patchShebangs node_modules + if [ -d node_modules/@vscode/ripgrep ]; then + mkdir -p node_modules/@vscode/ripgrep/bin + ln -s ${lib.getExe ripgrep} node_modules/@vscode/ripgrep/bin/rg + fi + npm rebuild + ) + substituteInPlace cli/package.json \ + --replace-fail 'npm install --omit=dev --prefix ./dist' 'mv ./.dist/node_modules ./dist/node_modules' + node --run cli:bundle touch ./cli/dist/.env @@ -64,11 +108,6 @@ stdenvNoCC.mkDerivation (finalAttrs: { ln -s $out/lib/node_modules/@kilocode/cli/index.js $out/bin/kilocode chmod +x $out/bin/kilocode - pushd $out/lib/node_modules/@kilocode/cli - rm node_modules/@vscode/ripgrep/bin/rg - ln -s ${ripgrep}/bin/rg node_modules/@vscode/ripgrep/bin/rg - popd - runHook postInstall ''; diff --git a/pkgs/by-name/li/libweaver/package.nix b/pkgs/by-name/li/libweaver/package.nix new file mode 100644 index 000000000000..bea881edb092 --- /dev/null +++ b/pkgs/by-name/li/libweaver/package.nix @@ -0,0 +1,49 @@ +{ + lib, + stdenv, + fetchFromGitHub, + cmake, + ninja, + testers, + unstableGitUpdater, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "libweaver"; + version = "0-unstable-2025-12-18"; + + src = fetchFromGitHub { + owner = "isledecomp"; + repo = "SIEdit"; + rev = "2c32d65dbab577bf3a8701bc8bcae9034a7815d9"; + hash = "sha256-qtE7c/LCQBhVWgbdmu4e5mCo+4Pz6QkAY29dHG/Fi/U="; + }; + + strictDeps = true; + __structuredAttrs = true; + + nativeBuildInputs = [ + cmake + ninja + ]; + + cmakeFlags = [ + (lib.cmakeBool "LIBWEAVER_BUILD_APP" false) + ]; + + passthru = { + updateScript = unstableGitUpdater { harcodeZeroVersion = true; }; + tests.cmake-config = testers.hasCmakeConfigModules { + package = finalAttrs.finalPackage; + moduleNames = [ "libweaver" ]; + }; + }; + + meta = { + description = "library for interacting with SI files"; + homepage = "https://github.com/isledecomp/SIEdit/tree/master/include/libweaver"; + license = lib.licenses.gpl3Only; + maintainers = [ + lib.maintainers.RossSmyth + ]; + }; +}) diff --git a/pkgs/by-name/md/mdk-sdk/package.nix b/pkgs/by-name/md/mdk-sdk/package.nix index 4eaf6acd652c..5901881abcc7 100644 --- a/pkgs/by-name/md/mdk-sdk/package.nix +++ b/pkgs/by-name/md/mdk-sdk/package.nix @@ -67,6 +67,8 @@ stdenv.mkDerivation rec { addDriverRunpath.driverLink ]; + autoPatchelfIgnoreMissingDeps = [ "librockchip_mpp.so.1" ]; + installPhase = '' runHook preInstall diff --git a/pkgs/by-name/mu/musescore-evolution/musescore-evolution-pch-fix.patch b/pkgs/by-name/mu/musescore-evolution/musescore-evolution-pch-fix.patch new file mode 100644 index 000000000000..e552b1c975d2 --- /dev/null +++ b/pkgs/by-name/mu/musescore-evolution/musescore-evolution-pch-fix.patch @@ -0,0 +1,63 @@ +diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt +index e67e5c8f5c..a4c6dd61fd 100644 +--- a/main/CMakeLists.txt ++++ b/main/CMakeLists.txt +@@ -499,15 +499,6 @@ if (APPLE) + ../fonts/finalebroadway/FinaleBroadwayText.otf + DESTINATION ${Mscore_SHARE_NAME}${Mscore_INSTALL_NAME}fonts + ) +- install(DIRECTORY +- ${QT_INSTALL_QML} +- DESTINATION ${Mscore_SHARE_NAME}${Mscore_INSTALL_NAME} +- REGEX ".*QtWebkit.*" EXCLUDE +- REGEX ".*QtTest.*" EXCLUDE +- REGEX ".*QtSensors.*" EXCLUDE +- REGEX ".*QtMultimedia.*" EXCLUDE +- REGEX ".*QtAudioEngine.*" EXCLUDE +- REGEX ".*_debug\\.dylib" EXCLUDE) + endif (APPLE) + + if (MSCORE_OUTPUT_NAME) +diff --git a/mscore/CMakeLists.txt b/mscore/CMakeLists.txt +index 8daa49b517..471cedf06d 100644 +--- a/mscore/CMakeLists.txt ++++ b/mscore/CMakeLists.txt +@@ -142,6 +142,7 @@ if (APPLE) + cocoabridge STATIC + macos/cocoabridge.mm + ) ++ set_source_files_properties(macos/cocoabridge.mm PROPERTIES SKIP_PRECOMPILE_HEADERS ON) + else (APPLE) + set(INCS "") + set(COCOABRIDGE "") +diff --git a/mscore/macos/cocoabridge.h b/mscore/macos/cocoabridge.h +index d6a217ad99..0c61197bbb 100644 +--- a/mscore/macos/cocoabridge.h ++++ b/mscore/macos/cocoabridge.h +@@ -20,6 +20,10 @@ + #ifndef __COCOABRIDGE_H__ + #define __COCOABRIDGE_H__ + ++#include ++ ++#include ++ + class CocoaBridge { + CocoaBridge() {}; + public: +diff --git a/mscore/qml/msqmlengine.cpp b/mscore/qml/msqmlengine.cpp +index 77c94b593c..ffd066d41d 100644 +--- a/mscore/qml/msqmlengine.cpp ++++ b/mscore/qml/msqmlengine.cpp +@@ -37,9 +37,9 @@ MsQmlEngine::MsQmlEngine(QObject* parent) + setImportPathList(importPaths); + #endif + #ifdef Q_OS_MAC +- QStringList importPaths; ++ QStringList importPaths = importPathList(); + QDir dir(mscoreGlobalShare + QString("/qml")); +- importPaths.append(dir.absolutePath()); ++ importPaths.prepend(dir.absolutePath()); + setImportPathList(importPaths); + #endif + } diff --git a/pkgs/by-name/mu/musescore-evolution/package.nix b/pkgs/by-name/mu/musescore-evolution/package.nix new file mode 100644 index 000000000000..2e8ca20d2d02 --- /dev/null +++ b/pkgs/by-name/mu/musescore-evolution/package.nix @@ -0,0 +1,218 @@ +{ + stdenv, + lib, + fetchFromGitHub, + cmake, + wrapGAppsHook3, + pkg-config, + ninja, + alsa-lib, + alsa-plugins, + freetype, + libjack2, + lame, + libogg, + libpulseaudio, + libsndfile, + libvorbis, + portaudio, + portmidi, + flac, + libopusenc, + libopus, + tinyxml-2, + qt5, # Needed for musescore 3.X +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "musescore-evolution"; + version = "3.7.0-unstable-2026-01-12"; + + src = fetchFromGitHub { + owner = "Jojo-Schmitz"; + repo = "MuseScore"; + rev = "0b4543baca9b1b70d54cecb33cbf846dabc073d1"; + hash = "sha256-piOXHKlnfCO1n0kAgeszqa6JVoHgF8B2OF7agpadGKQ="; + }; + + patches = [ + ./musescore-evolution-pch-fix.patch + ]; + + # From top-level CMakeLists.txt: + # - DOWNLOAD_SOUNDFONT defaults ON and tries to fetch from the network. + # Download manually at Help > Manage Resources + cmakeFlags = [ + "-DDOWNLOAD_SOUNDFONT=OFF" + ]; + + qtWrapperArgs = [ + # MuseScore JACK backend loads libjack at runtime. + "--prefix ${lib.optionalString stdenv.hostPlatform.isDarwin "DY"}LD_LIBRARY_PATH : ${ + lib.makeLibraryPath [ libjack2 ] + }" + ] + ++ lib.optionals (stdenv.hostPlatform.isLinux) [ + "--set ALSA_PLUGIN_DIR ${alsa-plugins}/lib/alsa-lib" + ] + ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ + # There are some issues with using the wayland backend, see: + # https://musescore.org/en/node/321936 + "--set-default QT_QPA_PLATFORM xcb" + ]; + + preFixup = '' + qtWrapperArgs+=("''${gappsWrapperArgs[@]}") + + # Recreate correct symlinks (let fixupPhase handle compression) + if [ -e "$manDir/mscore-evo.1" ]; then + ln -sf "mscore-evo.1" "$manDir/musescore-evo.1" + fi + ''; + + dontWrapGApps = true; + + nativeBuildInputs = [ + qt5.wrapQtAppsHook + cmake + qt5.qttools + pkg-config + ninja + ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ + # Since https://github.com/musescore/MuseScore/pull/13847/commits/685ac998 + # GTK3 is needed for file dialogs. Fixes crash with No GSettings schemas error. + wrapGAppsHook3 + ]; + + buildInputs = [ + libjack2 + freetype + lame + libogg + libpulseaudio + libsndfile + libvorbis + portaudio + portmidi + flac + libopusenc + libopus + tinyxml-2 + qt5.qtbase + qt5.qtdeclarative + qt5.qtsvg + qt5.qtxmlpatterns + qt5.qtquickcontrols2 + qt5.qtgraphicaleffects + ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ + alsa-lib + ]; + + # Avoid depending on insecure QtWebEngine (and having to compile it (huge)) + # Because we don't use this, we need to patch the CMakeLists and install scripts to not try to bundle it. + postPatch = '' + # Disable Qt bundling logic in the source CMakeLists. + sed -i '/QT_INSTALL_PREFIX/d' main/CMakeLists.txt + sed -i '/QtWebEngineProcess/d' main/CMakeLists.txt + ''; + + # Patch the generated install script to drop Qt resource / QtWebEngine installs. + preInstall = '' + sed -i ' + /QtWebEngineProcess/d + /resources\"/d + /qtwebengine_locales/d + /qtwebengine/d + /QT_INSTALL_PREFIX/d + ' main/cmake_install.cmake + ''; + + # On macOS, move the .app into Applications/ and symlink the binary to bin/ + postInstall = lib.optionalString stdenv.hostPlatform.isDarwin '' + mkdir -p "$out/Applications" + mv "$out/mscore.app" "$out/Applications/mscore-evo.app" + mkdir -p $out/bin + ln -s $out/Applications/mscore-evo.app/Contents/MacOS/mscore $out/bin/mscore-evo + ''; + + # On Linux, let CMake + wrapQtAppsHook install/wrap "mscore", then rename it + # and adjust the .desktop file so it doesn't clash with the main musescore package. + postFixup = lib.optionalString stdenv.hostPlatform.isLinux '' + mv "$out/bin/mscore" "$out/bin/mscore-evo" + + # 2) Fix desktop entry to point to mscore-evo and avoid ID clash + desktop="$out/share/applications/mscore.desktop" + substitute "$desktop" "$out/share/applications/mscore-evo.desktop" \ + --replace "Exec=mscore" "Exec=mscore-evo" \ + --replace "Name=MuseScore 3.7" "Name=MuseScore 3.7 (Evolution)" \ + --replace "Icon=mscore" "Icon=mscore-evo" + rm $desktop + + # 3) Rename app icons (apps/) + for sizeDir in "$out"/share/icons/hicolor/*/apps/; do + for ext in png svg xpm; do + if [ -f "$sizeDir/mscore.$ext" ]; then + mv "$sizeDir/mscore.$ext" "$sizeDir/mscore-evo.$ext" + fi + done + done + + # 3b) Rename mimetype icons (mimetypes/) to unique names + for icon in "$out"/share/icons/hicolor/*/mimetypes/application-x-musescore.* \ + "$out"/share/icons/hicolor/*/mimetypes/application-x-musescore+xml.*; do + dir="''${icon%/*}"; base="''${icon##*/}"; ext="''${base##*.}" + case "$base" in + application-x-musescore.*) mv "$icon" "$dir/application-x-musescore-evo.$ext" ;; + application-x-musescore+xml.*) mv "$icon" "$dir/application-x-musescore-evo+xml.$ext" ;; + esac + done + + # 4) Rename MIME XML and point icons to the new names + mv "$out/share/mime/packages/musescore.xml" "$out/share/mime/packages/musescore-evo.xml" + sed -i \ + -e 's|application-x-musescore\(\+xml\)\?|application-x-musescore-evo\1|g' \ + -e 's|musescore|mscore-evo|g' \ + "$out/share/mime/packages/musescore-evo.xml" + + # 5) Rename man pages to match mscore-evo and remove legacy symlinks + manDir="$out/share/man/man1" + + # Remove all old musescore/mscore symlinks first (gzip may have created them) + find "$manDir" -type l \ + \( -name 'mscore.1*' -o -name 'musescore.1*' \) \ + -exec rm -f {} + + + # Rename real files + find "$manDir" \( -name 'mscore.1*' -o -name 'musescore.1*' \) -type f | + while IFS= read -r man; do + base="$(basename "$man")" + newname=$(echo "$base" | sed -e 's/^mscore/mscore-evo/' -e 's/^musescore/mscore-evo/') + mv "$man" "$manDir/$newname" + done + + # 6) Rename AppStream metadata and its IDs + meta="$out/share/metainfo/org.musescore.MuseScore.appdata.xml" + new="$out/share/metainfo/org.musescore.MuseScoreEvolution.appdata.xml" + mv "$meta" "$new" + sed -i \ + -e 's|org\.musescore\.MuseScore|org.musescore.MuseScoreEvolution|' \ + -e 's|mscore\.desktop|mscore-evo.desktop|' \ + "$new" + ''; + + # Don't run bundled upstreams tests, as they require a running X window system. + doCheck = false; + + passthru.updateScript.command = [ ./update.sh ]; + + meta = { + description = "Music notation and composition software"; + homepage = "https://github.com/Jojo-Schmitz/MuseScore"; + license = lib.licenses.gpl2Only; + maintainers = with lib.maintainers; [ nemeott ]; + mainProgram = "mscore-evo"; + platforms = lib.platforms.unix; + }; +}) diff --git a/pkgs/by-name/mu/musescore-evolution/update.sh b/pkgs/by-name/mu/musescore-evolution/update.sh new file mode 100755 index 000000000000..129ae0ef87bb --- /dev/null +++ b/pkgs/by-name/mu/musescore-evolution/update.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p jq nix-update coreutils + +set -euo pipefail + +# Run nix-update on the default branch (updates rev and sha256) +nix-update musescore-evolution --version=branch + +# Now we need to update the version name + +# Find the new version generated from the nix-update command (e.g. "0-unstable-2026-01-12") +generated_version=$(nix eval --raw -f . ${UPDATE_NIX_ATTR_PATH}.version) + +# Extract only the date part (after the last dash) (e.g. 0-unstable-2026-01-12) +parts=(${generated_version//-/ }) # Split up by dashes +clean_date="${parts[2]}-${parts[3]}-${parts[4]}" # Get clean date in YYYY-MM-DD format (e.g. "2026-01-12") + +# Compute version prefix based on previous version +old_version="$UPDATE_NIX_OLD_VERSION" +prefix="${old_version%-*}" # e.g. "3.7.0-unstable" + +new_version="${prefix}-${clean_date}" + +# Patch version in nix file +# Strip any existing version line and replace with new one +sed -i "s/version = \".*\"/version = \"${new_version}\"/" $(nix eval --raw -f . ${UPDATE_NIX_ATTR_PATH}.meta.position | cut -d: -f1) diff --git a/pkgs/by-name/nb/nbted/package.nix b/pkgs/by-name/nb/nbted/package.nix new file mode 100644 index 000000000000..93caf4fa8d13 --- /dev/null +++ b/pkgs/by-name/nb/nbted/package.nix @@ -0,0 +1,32 @@ +{ + lib, + rustPlatform, + fetchFromGitHub, + nix-update-script, +}: + +rustPlatform.buildRustPackage (finalAttrs: { + pname = "nbted"; + version = "1.5.2-unstable-2026-02-27"; + + src = fetchFromGitHub { + owner = "C4K3"; + repo = "nbted"; + rev = "ce89021a2d84e80331ef7fdc84fa9c53fa80a671"; + hash = "sha256-TCllGon6x4gWlZYIxzcH0GXs/+M57VepyyGz8RyG1o8="; + }; + + cargoHash = "sha256-IMF5vc9p/+M/gMrUxOE3eojdATfera5dD62kcJEpzd8="; + + env.VERGEN_GIT_SHA = finalAttrs.src.rev; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "Command-line NBT editor"; + homepage = "https://github.com/C4K3/nbted"; + license = lib.licenses.cc0; + maintainers = with lib.maintainers; [ jaredmontoya ]; + mainProgram = "nbted"; + }; +}) diff --git a/pkgs/by-name/ni/nix-scheduler-hook/package.nix b/pkgs/by-name/ni/nix-scheduler-hook/package.nix new file mode 100644 index 000000000000..a5135748dced --- /dev/null +++ b/pkgs/by-name/ni/nix-scheduler-hook/package.nix @@ -0,0 +1,83 @@ +{ + fetchFromGitHub, + stdenv, + lib, + nix, + meson, + cmake, + ninja, + boost, + pkg-config, + nlohmann_json, + curl, + openpbs, + symlinkJoin, + slurm, +}: +let + restclient-cpp = fetchFromGitHub { + owner = "mrtazz"; + repo = "restclient-cpp"; + rev = "3356f816b161279cfbe318c45cb07c07fb8de6df"; + hash = "sha256-9//KssNRD7OJFNFdXgzsu7rKP/Nlb4wtmBjfhOt2Vgw="; + }; + slurmJoined = symlinkJoin { + name = "slurm"; + paths = [ + slurm + slurm.dev + ]; + }; +in +stdenv.mkDerivation rec { + pname = "nix-scheduler-hook"; + version = "0.6.1"; + + src = fetchFromGitHub { + owner = "lisanna-dettwyler"; + repo = "nix-scheduler-hook"; + tag = "v${version}"; + hash = "sha256-pB42rjqkASgdYQJD9nPqFSM0JAUIko1FN4d0J52BUsc="; + }; + + sourceRoot = "source/src"; + + nativeBuildInputs = [ + meson + cmake + ninja + pkg-config + ]; + + buildInputs = [ + boost + curl + nix.libs.nix-util + nix.libs.nix-store + nix.libs.nix-main + nlohmann_json + openpbs + slurmJoined + ]; + + postUnpack = '' + mkdir $sourceRoot/subprojects + cp -r ${restclient-cpp} $sourceRoot/subprojects/restclient-cpp + ''; + + installPhase = '' + mkdir -p $out/bin + mv nsh $out/bin + mkdir -p $out/lib + mv subprojects/restclient-cpp/librestclient_cpp.so $out/lib + ''; + + meta = { + description = "Nix build hook that forwards builds to job schedulers"; + homepage = "https://github.com/lisanna-dettwyler/nix-scheduler-hook"; + license = lib.licenses.lgpl21; + mainProgram = "nsh"; + maintainers = with lib.maintainers; [ lisanna-dettwyler ]; + inherit (nix.meta) platforms; + }; +} diff --git a/pkgs/by-name/ob/objection/package.nix b/pkgs/by-name/ob/objection/package.nix new file mode 100644 index 000000000000..2e3f5f1b6ab9 --- /dev/null +++ b/pkgs/by-name/ob/objection/package.nix @@ -0,0 +1,64 @@ +{ + lib, + python3Packages, + fetchFromGitHub, + frida-tools, +}: + +python3Packages.buildPythonApplication rec { + pname = "objection"; + version = "1.12.3"; + pyproject = true; + + src = fetchFromGitHub { + owner = "sensepost"; + repo = "objection"; + tag = version; + hash = "sha256-xOqBYwpq46czRZggTNmNcqGqTA8omTLiOeZaF7zSvxo="; + }; + + build-system = with python3Packages; [ + setuptools + ]; + + buildInputs = [ + frida-tools + ]; + + dependencies = with python3Packages; [ + frida-python + prompt-toolkit + click + tabulate + semver + delegator-py + requests + flask + pygments + setuptools + packaging + litecli + ]; + + pythonImportsCheck = [ + "objection" + ]; + + doCheck = true; + + pythonRuntimeDepsCheck = true; + + meta = { + description = "Runtime mobile exploration toolkit, powered by Frida"; + longDescription = '' + objection is a runtime mobile exploration toolkit, powered by Frida, + built to help you assess the security posture of your mobile applications, + without needing a jailbreak. + ''; + homepage = "https://github.com/sensepost/objection"; + changelog = "https://github.com/sensepost/objection/releases/tag/${version}"; + license = lib.licenses.gpl3Only; + maintainers = with lib.maintainers; [ nullstring1 ]; + mainProgram = "objection"; + }; +} diff --git a/pkgs/by-name/op/openpbs/2709.patch b/pkgs/by-name/op/openpbs/2709.patch new file mode 100644 index 000000000000..42fa105a6fb1 --- /dev/null +++ b/pkgs/by-name/op/openpbs/2709.patch @@ -0,0 +1,190 @@ +From 236aa3fa2f5ee68a8be21a5cc3a729fb90539f1e Mon Sep 17 00:00:00 2001 +From: Eisuke Kawashima +Date: Sun, 25 May 2025 20:38:53 +0900 +Subject: [PATCH] fix: fix -Wincompatible-pointer-types + +fix #2679 +--- + src/include/pbs_nodes.h | 4 ++-- + src/include/svrfunc.h | 2 +- + src/include/work_task.h | 2 +- + src/lib/Libattr/attr_fn_acl.c | 2 +- + src/lib/Libnet/net_server.c | 2 +- + src/server/hook_func.c | 2 +- + src/server/issue_request.c | 6 +++--- + src/server/node_manager.c | 2 +- + src/server/req_jobobit.c | 2 +- + src/server/req_manager.c | 2 +- + src/server/svr_movejob.c | 2 +- + 11 files changed, 14 insertions(+), 14 deletions(-) + +diff --git a/src/include/pbs_nodes.h b/src/include/pbs_nodes.h +index bc206fdb77..5dbf1a3268 100644 +--- a/src/include/pbs_nodes.h ++++ b/src/include/pbs_nodes.h +@@ -391,7 +391,7 @@ extern void set_vnode_state(struct pbsnode *, unsigned long, enum vnode_state_op + extern struct resvinfo *find_vnode_in_resvs(struct pbsnode *, enum vnode_degraded_op); + extern void free_rinf_list(struct resvinfo *); + extern void degrade_offlined_nodes_reservations(void); +-extern void degrade_downed_nodes_reservations(void); ++extern void degrade_downed_nodes_reservations(struct work_task *); + + extern int mod_node_ncpus(struct pbsnode *pnode, long ncpus, int actmode); + extern int initialize_pbsnode(struct pbsnode *, char *, int); +@@ -461,7 +461,7 @@ struct pbsnode *node_recov_db(char *nd_name, struct pbsnode *pnode); + extern int add_mom_to_pool(mominfo_t *); + extern void reset_pool_inventory_mom(mominfo_t *); + extern vnpool_mom_t *find_vnode_pool(mominfo_t *pmom); +-extern void mcast_msg(); ++extern void mcast_msg(struct work_task *); + int get_job_share_type(struct job *pjob); + #endif + +diff --git a/src/include/svrfunc.h b/src/include/svrfunc.h +index cc555fa88d..34f9958035 100644 +--- a/src/include/svrfunc.h ++++ b/src/include/svrfunc.h +@@ -311,7 +311,7 @@ extern int svr_connect(pbs_net_t, unsigned int, void (*)(int), enum conn_type, i + #ifdef _WORK_TASK_H + extern void release_req(struct work_task *); + #ifdef _BATCH_REQUEST_H +-extern int issue_Drequest(int, struct batch_request *, void (*)(), struct work_task **, int); ++extern int issue_Drequest(int, struct batch_request *, void (*)(struct work_task *), struct work_task **, int); + #endif /* _BATCH_REQUEST_H */ + #endif /* _WORK_TASK_H */ + +diff --git a/src/include/work_task.h b/src/include/work_task.h +index 3cceb659b0..4d81795a41 100644 +--- a/src/include/work_task.h ++++ b/src/include/work_task.h +@@ -90,7 +90,7 @@ struct work_task { + int wt_aux2; /* optional info 2: e.g. *real* child pid (windows), tpp msgid etc */ + }; + +-extern struct work_task *set_task(enum work_type, long event, void (*func)(), void *param); ++extern struct work_task *set_task(enum work_type, long event, void (*func)(struct work_task *), void *param); + extern int convert_work_task(struct work_task *ptask, enum work_type); + extern void clear_task(struct work_task *ptask); + extern void dispatch_task(struct work_task *); +diff --git a/src/lib/Libattr/attr_fn_acl.c b/src/lib/Libattr/attr_fn_acl.c +index 0ef2d5328e..b0373eafeb 100644 +--- a/src/lib/Libattr/attr_fn_acl.c ++++ b/src/lib/Libattr/attr_fn_acl.c +@@ -97,7 +97,7 @@ static int user_order(char *old, char *new); + static int group_order(char *old, char *new); + static int + set_allacl(attribute *, attribute *, enum batch_op, +- int (*order_func)()); ++ int (*order_func)(char *, char *)); + + /* for all decode_*acl() - use decode_arst() */ + /* for all encode_*acl() - use encode_arst() */ +diff --git a/src/lib/Libnet/net_server.c b/src/lib/Libnet/net_server.c +index 045acd303d..b9f6470dbd 100644 +--- a/src/lib/Libnet/net_server.c ++++ b/src/lib/Libnet/net_server.c +@@ -104,7 +104,7 @@ static char logbuf[256]; + /* Private function within this file */ + static int conn_find_usable_index(int); + static int conn_find_actual_index(int); +-static void accept_conn(); ++static void accept_conn(int); + static void cleanup_conn(int); + + /** +diff --git a/src/server/hook_func.c b/src/server/hook_func.c +index b9534dfb9a..e0d0e52745 100644 +--- a/src/server/hook_func.c ++++ b/src/server/hook_func.c +@@ -229,7 +229,7 @@ extern pbs_list_head svr_execjob_preresume_hooks; + extern time_t time_now; + extern struct python_interpreter_data svr_interp_data; + extern pbs_list_head task_list_event; +-extern struct work_task *add_mom_deferred_list(int stream, mominfo_t *minfo, void (*func)(), char *msgid, void *parm1, void *parm2); ++extern struct work_task *add_mom_deferred_list(int stream, mominfo_t *minfo, void (*func)(struct work_task *), char *msgid, void *parm1, void *parm2); + + extern char *path_rescdef; + extern char *path_hooks_rescdef; +diff --git a/src/server/issue_request.c b/src/server/issue_request.c +index 6bef14553b..6cf28dab76 100644 +--- a/src/server/issue_request.c ++++ b/src/server/issue_request.c +@@ -201,7 +201,7 @@ reissue_to_svr(struct work_task *pwt) + /* either timed-out or got hard error, tell post-function */ + pwt->wt_aux = -1; /* seen as error by post function */ + pwt->wt_event = -1; /* seen as connection by post func */ +- ((void (*)()) pwt->wt_parm2)(pwt); ++ ((void (*)(struct work_task *)) pwt->wt_parm2)(pwt); + } + return; + } +@@ -326,7 +326,7 @@ release_req(struct work_task *pwt) + * + */ + struct work_task * +-add_mom_deferred_list(int stream, mominfo_t *minfo, void (*func)(), char *msgid, void *parm1, void *parm2) ++add_mom_deferred_list(int stream, mominfo_t *minfo, void (*func)(struct work_task *), char *msgid, void *parm1, void *parm2) + { + struct work_task *ptask = NULL; + +@@ -394,7 +394,7 @@ add_mom_deferred_list(int stream, mominfo_t *minfo, void (*func)(), char *msgid, + * + */ + int +-issue_Drequest(int conn, struct batch_request *request, void (*func)(), struct work_task **ppwt, int prot) ++issue_Drequest(int conn, struct batch_request *request, void (*func)(struct work_task *), struct work_task **ppwt, int prot) + { + struct attropl *patrl; + struct work_task *ptask; +diff --git a/src/server/node_manager.c b/src/server/node_manager.c +index a6fbf5805e..62661a2361 100644 +--- a/src/server/node_manager.c ++++ b/src/server/node_manager.c +@@ -7923,7 +7923,7 @@ degrade_offlined_nodes_reservations(void) + * @par MT-safe: No + */ + void +-degrade_downed_nodes_reservations(void) ++degrade_downed_nodes_reservations(struct work_task *) + { + int i; + struct pbsnode *pn; +diff --git a/src/server/req_jobobit.c b/src/server/req_jobobit.c +index 37581cead4..034c3c0680 100644 +--- a/src/server/req_jobobit.c ++++ b/src/server/req_jobobit.c +@@ -1337,7 +1337,7 @@ job_obit(ruu *pruu, int stream) + job *pjob; + svrattrl *patlist; + struct work_task *ptask; +- void (*eojproc)(); ++ void (*eojproc)(struct work_task *); + char *mailmsg = NULL; + char *msg = NULL; + +diff --git a/src/server/req_manager.c b/src/server/req_manager.c +index 14a50de62e..ac617d7be8 100644 +--- a/src/server/req_manager.c ++++ b/src/server/req_manager.c +@@ -3612,7 +3612,7 @@ check_resource_set_on_jobs_or_resvs(struct batch_request *preq, resource_def *pr + * helper function to send/update resourcedef file. + */ + static void +-timed_send_rescdef() ++timed_send_rescdef(struct work_task *) + { + send_rescdef(1); /* forcing with 1 to avoid failures due to intermittent file stamp race issues */ + rescdef_wt_g = NULL; +diff --git a/src/server/svr_movejob.c b/src/server/svr_movejob.c +index c438d5d739..8947dc8c85 100644 +--- a/src/server/svr_movejob.c ++++ b/src/server/svr_movejob.c +@@ -122,7 +122,7 @@ extern time_t time_now; + extern int svr_create_tmp_jobscript(job *pj, char *script_name); + extern int scheduler_jobs_stat; + extern char *path_hooks_workdir; +-extern struct work_task *add_mom_deferred_list(int stream, mominfo_t *minfo, void (*func)(), char *msgid, void *parm1, void *parm2); ++extern struct work_task *add_mom_deferred_list(int stream, mominfo_t *minfo, void (*func)(struct work_task *), char *msgid, void *parm1, void *parm2); + + /** + * @brief diff --git a/pkgs/by-name/op/openpbs/2711.patch b/pkgs/by-name/op/openpbs/2711.patch new file mode 100644 index 000000000000..e122758940d1 --- /dev/null +++ b/pkgs/by-name/op/openpbs/2711.patch @@ -0,0 +1,58 @@ +diff --git a/src/cmds/qstat.c b/src/cmds/qstat.c +index 440e37cb..cb7fe62c 100644 +--- a/src/cmds/qstat.c ++++ b/src/cmds/qstat.c +@@ -76,7 +76,6 @@ extern char *tcl_atrsep; + /* default server */ + char *def_server; + +-static void states(); + static char *cvtResvstate(char *); + static int cmp_est_time(struct batch_status *a, struct batch_status *b); + char *cnvt_est_start_time(char *start_time, int shortform); +diff --git a/src/cmds/qsub.c b/src/cmds/qsub.c +index f02bb5ef..54871a08 100644 +--- a/src/cmds/qsub.c ++++ b/src/cmds/qsub.c +@@ -89,6 +89,7 @@ + #include + #include + #include ++#include + #include "pbs_ifl.h" + #include "cmds.h" + #include "libpbs.h" +@@ -1944,7 +1945,6 @@ job_env_basic(void) + struct utsname uns; + #endif + int len = 0; +- char *getcwd(); + + /* Calculate how big to make the variable string. */ + len = 0; +diff --git a/src/include/qmgr.h b/src/include/qmgr.h +index eb021c53..17ae6522 100644 +--- a/src/include/qmgr.h ++++ b/src/include/qmgr.h +@@ -143,7 +143,7 @@ struct objname { + /* prototypes */ + struct objname *commalist2objname(char *, int); + struct server *find_server(char *); +-struct server *make_connection(); ++struct server *make_connection(char *); + struct server *new_server(); + struct objname *new_objname(); + struct objname *strings2objname(char **, int, int); +diff --git a/src/tools/pbs_tclWrap.c b/src/tools/pbs_tclWrap.c +index 558528ad..1a9dd1d4 100644 +--- a/src/tools/pbs_tclWrap.c ++++ b/src/tools/pbs_tclWrap.c +@@ -273,7 +273,7 @@ int + GetREQ(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) + { + int fd; +- char *ret, *getreq(); ++ char *ret; + char *cmd; + + cmd = Tcl_GetStringFromObj(objv[0], NULL); diff --git a/pkgs/by-name/op/openpbs/package.nix b/pkgs/by-name/op/openpbs/package.nix new file mode 100644 index 000000000000..a50715c7b63c --- /dev/null +++ b/pkgs/by-name/op/openpbs/package.nix @@ -0,0 +1,116 @@ +{ + stdenv, + fetchFromGitHub, + lib, + autoconf, + automake, + libtool, + gnum4, + symlinkJoin, + tcl-8_5, + tk-8_5, + swig, + pkg-config, + cjson, + openssl, + zlib, + libxt, + libx11, + libpq, + python3, + expat, + libedit, + hwloc, + libical, + krb5, + munge, + findutils, + gawk, +}: +let + tclWithTk = symlinkJoin { + name = "tcl-with-tk"; + paths = [ + tcl-8_5 + tk-8_5 + tk-8_5.dev + ]; + }; +in +stdenv.mkDerivation { + pname = "openpbs"; + version = "23.06.06-unstable-2026-01-29"; + + src = fetchFromGitHub { + owner = "openpbs"; + repo = "openpbs"; + rev = "cfd431b703e8cbe3bc99db6fbbcdd970625ef032"; + hash = "sha256-NZoSZmcl9a/6YWHO7qRNknB6ii0JBLo5bOpHDRKeuwI="; + }; + + nativeBuildInputs = [ + autoconf + automake + libtool + gnum4 + tclWithTk + swig + pkg-config + cjson + ]; + buildInputs = [ + openssl + zlib + libxt + libx11 + libpq + python3 + expat + libedit + hwloc + libical + krb5 + munge + ]; + + enableParallelBuilding = true; + + patches = [ + ./2709.patch + ./2711.patch + ]; + + postPatch = '' + substituteInPlace src/cmds/scripts/Makefile.am --replace-fail "/etc/profile.d" "$out/etc/profile.d" + substituteInPlace m4/pbs_systemd_unitdir.m4 --replace-fail "/usr/lib/systemd/system" "$out/lib/systemd/system" + ''; + + preConfigure = '' + ./autogen.sh + ''; + + configureFlags = [ + "--with-tcl=${tclWithTk}" + "--with-swig=${swig}" + "--sysconfdir=$out/etc" + ]; + + postInstall = '' + cp src/scheduler/pbs_{dedicated,holidays,resource_group,sched_config} $out/etc/ + ''; + + postFixup = '' + substituteInPlace $out/libexec/pbs_habitat --replace-fail /bin/ls ls + find $out/bin/ $out/sbin/ $out/libexec/ $out/lib/ -type f -exec file "{}" + | + awk -F: '/ELF/ {print $1}' | + xargs patchelf --add-needed libmunge.so --add-rpath ${munge}/lib + ''; + + meta = { + description = "HPC workload manager and job scheduler for desktops, clusters, and clouds"; + homepage = "https://www.openpbs.org/"; + license = lib.licenses.agpl3Only; + maintainers = with lib.maintainers; [ lisanna-dettwyler ]; + platforms = lib.platforms.unix; + }; +} diff --git a/pkgs/by-name/op/opensmtpd/offline.patch b/pkgs/by-name/op/opensmtpd/offline.patch new file mode 100644 index 000000000000..69e36bcc5870 --- /dev/null +++ b/pkgs/by-name/op/opensmtpd/offline.patch @@ -0,0 +1,20 @@ +Commit ID: 0527fcb65d6af4271a33dbd425f30d457fc7ab4f +Change ID: puqrnyuutmspqxqtkkqqrsmsxnyqvomm +Author : Ricardo Correia (2026-02-18 23:51:00) +Committer: Ricardo Correia (2026-02-19 00:43:47) + + (no description set) + +diff --git a/usr.sbin/smtpd/smtpd.c b/usr.sbin/smtpd/smtpd.c +index 2365b1ee46..b9e40e1417 100644 +--- a/usr.sbin/smtpd/smtpd.c ++++ b/usr.sbin/smtpd/smtpd.c +@@ -1806,7 +1806,7 @@ + envp[1] = (char *)NULL; + environ = envp; + +- execvp(PATH_SMTPCTL, args.list); ++ execvp(@@PATH_SENDMAIL@@, args.list); + _exit(1); + } + diff --git a/pkgs/by-name/op/opensmtpd/package.nix b/pkgs/by-name/op/opensmtpd/package.nix index bc1e20cdd177..6bb0ea028df0 100644 --- a/pkgs/by-name/op/opensmtpd/package.nix +++ b/pkgs/by-name/op/opensmtpd/package.nix @@ -14,6 +14,7 @@ pam, libxcrypt, nixosTests, + binPath ? "/run/wrappers/bin", }: stdenv.mkDerivation (finalAttrs: { @@ -43,11 +44,20 @@ stdenv.mkDerivation (finalAttrs: { patches = [ ./proc_path.diff # TODO: upstream to OpenSMTPD, see https://github.com/NixOS/nixpkgs/issues/54045 + ./offline.patch ]; postPatch = '' - substituteInPlace mk/smtpctl/Makefile.am --replace "chgrp" "true" - substituteInPlace mk/smtpctl/Makefile.am --replace "chmod 2555" "chmod 0555" + substituteInPlace mk/smtpctl/Makefile.am \ + --replace-fail "chgrp" "true" \ + --replace "chmod 2555" "chmod 0555" + substituteInPlace mk/pathnames \ + --replace-fail "-DPATH_SMTPCTL=\\\"\$(sbindir)" \ + "-DPATH_SMTPCTL=\\\"${binPath}" \ + --replace-fail "-DPATH_MAKEMAP=\\\"\$(sbindir)" \ + "-DPATH_MAKEMAP=\\\"${binPath}" + substituteInPlace usr.sbin/smtpd/smtpd.c \ + --replace-fail "@@PATH_SENDMAIL@@" "\"${binPath}/sendmail\"" ''; configureFlags = [ diff --git a/pkgs/by-name/ox/oxwm/package.nix b/pkgs/by-name/ox/oxwm/package.nix index 9f33f1a1b745..89fa968e1bdb 100644 --- a/pkgs/by-name/ox/oxwm/package.nix +++ b/pkgs/by-name/ox/oxwm/package.nix @@ -1,34 +1,38 @@ { lib, - rustPlatform, + stdenv, fetchFromGitHub, + zig, pkg-config, libx11, libxft, - libxrender, + libxinerama, + lua5_4, freetype, fontconfig, - versionCheckHook, + writableTmpDirAsHomeHook, }: -rustPlatform.buildRustPackage (finalAttrs: { +stdenv.mkDerivation (finalAttrs: { pname = "oxwm"; - version = "0.9.0"; + version = "0.11.3"; src = fetchFromGitHub { owner = "tonybanters"; repo = "oxwm"; tag = "v${finalAttrs.version}"; - hash = "sha256-zVYYRGe5ZIR1AJgKZi9s403NKM7hKAqhEbNWYSkgpT0="; + hash = "sha256-W6muqajSk9UR646ZmLkx/wWfiaWLo+d1lJMiLm82NC8="; }; - cargoHash = "sha256-Rs8eGR8WY7qOPM0rfu6lTNDl6TVMR+rrIc6Ub+M7vfs="; - - nativeBuildInputs = [ pkg-config ]; + nativeBuildInputs = [ + zig.hook + pkg-config + ]; buildInputs = [ libx11 libxft - libxrender + libxinerama + lua5_4 freetype fontconfig ]; @@ -36,8 +40,12 @@ rustPlatform.buildRustPackage (finalAttrs: { # tests require a running X server doCheck = false; - nativeInstallCheckInputs = [ versionCheckHook ]; doInstallCheck = true; + versionCheckProgramArg = "--version"; + versionCheckKeepEnvironment = [ "HOME" ]; + nativeInstallCheckInputs = [ + writableTmpDirAsHomeHook + ]; postInstall = '' install -Dm644 resources/oxwm.desktop -t $out/share/xsessions @@ -48,7 +56,7 @@ rustPlatform.buildRustPackage (finalAttrs: { passthru.providedSessions = [ "oxwm" ]; meta = { - description = "Dynamic window manager written in Rust, inspired by dwm"; + description = "Dynamic window manager written in Zig, inspired by dwm"; homepage = "https://github.com/tonybanters/oxwm"; license = lib.licenses.gpl3Only; maintainers = with lib.maintainers; [ tonybanters ]; diff --git a/pkgs/by-name/pa/paqet/package.nix b/pkgs/by-name/pa/paqet/package.nix index dd07e8642fa9..ca00901a7535 100644 --- a/pkgs/by-name/pa/paqet/package.nix +++ b/pkgs/by-name/pa/paqet/package.nix @@ -9,15 +9,15 @@ }: buildGoModule (finalAttrs: { pname = "paqet"; - version = "1.0.0-alpha.15"; + version = "1.0.0-alpha.18"; src = fetchFromGitHub { owner = "hanselime"; repo = "paqet"; tag = "v${finalAttrs.version}"; - hash = "sha256-ryspYKbnDT7emEftRWCZLVNFDEOvAv7IhdM4VBRQjKc="; + hash = "sha256-FuCbQz+Lhbw/xHJYhZo4uxH2ODV/uVFR7XDOK5DKZkU="; }; - vendorHash = "sha256-Vf3bKdhlM4vqzBv5RAwHeShGHudEh1VNTCFxAL/cwLw="; + vendorHash = "sha256-olyjpzHZKgD5fhXSyCmEuwYmcJGMUS+b+Hglm2JF1NY="; nativeBuildInputs = [ installShellFiles ]; buildInputs = [ libpcap ]; diff --git a/pkgs/by-name/pa/patroni/package.nix b/pkgs/by-name/pa/patroni/package.nix index 530fa9e3212c..23911d710b74 100644 --- a/pkgs/by-name/pa/patroni/package.nix +++ b/pkgs/by-name/pa/patroni/package.nix @@ -1,55 +1,84 @@ { - lib, - python3Packages, fetchFromGitHub, - versionCheckHook, - nixosTests, + lib, nix-update-script, - writableTmpDirAsHomeHook, + nixosTests, + python3Packages, + versionCheckHook, + + extras ? [ + # upstream requires one of: psycopg, psycopg2 + "psycopg2" + + # distributed configuration stores + "consul" + "etcd" + "etcd3" + "exhibitor" + "kubernetes" + "raft" + "zookeeper" + ], }: python3Packages.buildPythonApplication (finalAttrs: { pname = "patroni"; version = "4.1.0"; - format = "setuptools"; + pyproject = true; src = fetchFromGitHub { owner = "zalando"; repo = "patroni"; tag = "v${finalAttrs.version}"; - sha256 = "sha256-iY5QLbJXfQtfkzpQxvqSOzYQwgfFsBh8HPYujqxU44k="; + hash = "sha256-iY5QLbJXfQtfkzpQxvqSOzYQwgfFsBh8HPYujqxU44k="; }; - dependencies = with python3Packages; [ - boto3 - click - consul - dnspython - kazoo - kubernetes - prettytable - psutil - psycopg2 - pysyncobj - python-dateutil - python-etcd - pyyaml - tzlocal - urllib3 - ydiff + build-system = with python3Packages; [ setuptools ]; + + pythonRelaxDeps = [ + "ydiff" # requires <1.5 ]; + dependencies = + (with python3Packages; [ + click + consul + prettytable + psutil + python-dateutil + pyyaml + urllib3 + ydiff + ]) + ++ lib.attrVals extras finalAttrs.passthru.optional-dependencies; + + optional-dependencies = with python3Packages; { + aws = [ boto3 ]; + consul = [ consul ]; + etcd = [ python-etcd ]; + etcd3 = [ python-etcd ]; + exhibitor = [ kazoo ]; + jsonlogger = [ python-json-logger ]; + kubernetes = [ ]; + psycopg2 = [ psycopg2 ]; + psycopg2-binary = [ psycopg2-binary ]; + psycopg3 = [ psycopg ]; + raft = [ + cryptography + pysyncobj + ]; + systemd = [ systemd-python ]; + zookeeper = [ kazoo ]; + }; + pythonImportsCheck = [ "patroni" ]; - nativeCheckInputs = with python3Packages; [ - flake8 - mock - pytestCheckHook - pytest-cov-stub - requests - versionCheckHook - writableTmpDirAsHomeHook - ]; + nativeCheckInputs = + (with python3Packages; [ + pytestCheckHook + versionCheckHook + ]) + ++ lib.concatAttrValues finalAttrs.passthru.optional-dependencies; __darwinAllowLocalNetworking = true; @@ -60,14 +89,15 @@ python3Packages.buildPythonApplication (finalAttrs: { }; meta = { - homepage = "https://patroni.readthedocs.io/en/latest/"; + changelog = "https://github.com/patroni/patroni/blob/${finalAttrs.src.tag}/docs/releases.rst"; description = "Template for PostgreSQL HA with ZooKeeper, etcd or Consul"; - changelog = "https://github.com/patroni/patroni/blob/v${finalAttrs.version}/docs/releases.rst"; + homepage = "https://patroni.readthedocs.io/en/latest/"; license = lib.licenses.mit; - platforms = lib.platforms.unix; + mainProgram = "patroni"; maintainers = with lib.maintainers; [ de11n despsyched ]; + platforms = lib.platforms.unix; }; }) diff --git a/pkgs/by-name/pa/pawn-appetit/package.nix b/pkgs/by-name/pa/pawn-appetit/package.nix new file mode 100644 index 000000000000..6152bb4502fe --- /dev/null +++ b/pkgs/by-name/pa/pawn-appetit/package.nix @@ -0,0 +1,99 @@ +{ + lib, + stdenv, + rustPlatform, + fetchFromGitHub, + fetchPnpmDeps, + + nodejs, + pnpm_10, + pnpmConfigHook, + cargo-tauri, + jq, + moreutils, + pkg-config, + wrapGAppsHook3, + makeBinaryWrapper, + + openssl, + webkitgtk_4_1, + gst_all_1, + + nix-update-script, +}: + +let + pnpm = pnpm_10; +in +rustPlatform.buildRustPackage (finalAttrs: { + pname = "pawn-appetit"; + version = "0.11.0"; + + src = fetchFromGitHub { + owner = "Pawn-Appetit"; + repo = "pawn-appetit"; + tag = "v${finalAttrs.version}"; + hash = "sha256-WJ/tFOizESDqdLy4maMKUZ79mgyyxqLuwCxWZ0+NVX4="; + }; + + pnpmDeps = fetchPnpmDeps { + inherit (finalAttrs) + pname + version + src + ; + inherit pnpm; + fetcherVersion = 3; + hash = "sha256-amXrz/ZzvjvNYlqxzTtQXiZw/NnUVJ7PhqG8oHsEe88="; + }; + + postPatch = '' + jq '.plugins.updater.endpoints = [ ] | .bundle.createUpdaterArtifacts = false' src-tauri/tauri.conf.json | sponge src-tauri/tauri.conf.json + ''; + + cargoRoot = "src-tauri"; + + cargoHash = "sha256-UKaW+NiNA398nyGs9+SjY+tUvLjCPrSxX6bZLSl7/EQ="; + + buildAndTestSubdir = finalAttrs.cargoRoot; + + nativeBuildInputs = [ + nodejs + pnpm + pnpmConfigHook + + cargo-tauri.hook + jq + moreutils + pkg-config + ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ wrapGAppsHook3 ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ makeBinaryWrapper ]; + + buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ + openssl + webkitgtk_4_1 + + gst_all_1.gstreamer + gst_all_1.gst-plugins-base + gst_all_1.gst-plugins-good + gst_all_1.gst-plugins-bad + ]; + + doCheck = false; # many scoring tests fail + + postInstall = lib.optionalString stdenv.hostPlatform.isDarwin '' + makeWrapper "$out"/Applications/pawn-appetit.app/Contents/MacOS/pawn-appetit $out/bin/pawn-appetit + ''; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "Ultimate Chess Toolkit (fork of en-croissant)"; + homepage = "https://github.com/Pawn-Appetit/pawn-appetit/"; + license = lib.licenses.gpl3Only; + mainProgram = "pawn-appetit"; + maintainers = with lib.maintainers; [ snu ]; + platforms = lib.platforms.linux ++ lib.platforms.darwin; + }; +}) diff --git a/pkgs/by-name/pc/pcl/package.nix b/pkgs/by-name/pc/pcl/package.nix index 30e8b651e70b..2b326ed73ff7 100644 --- a/pkgs/by-name/pc/pcl/package.nix +++ b/pkgs/by-name/pc/pcl/package.nix @@ -3,6 +3,7 @@ stdenv, config, fetchFromGitHub, + fetchpatch, # nativeBuildInputs cmake, @@ -42,6 +43,15 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-+KyaajJM0I5CAcr8AiOLC4TkGV3Gm73a0/X8LQWFZMI="; }; + patches = [ + (fetchpatch { + # see https://github.com/NixOS/nixpkgs/issues/485826 to be removed at next release after 1.15.1 + name = "boost-1.89.patch"; + url = "https://github.com/PointCloudLibrary/pcl/commit/99333442ac63971297b4cdd05fab9d2bd2ff57a4.patch"; + hash = "sha256-5vg8VjxoAfEOx9n7Tby1DXe1u4rn+zharkefUovLHv0="; + }) + ]; + strictDeps = true; # remove attempt to prevent (x86/x87-specific) extended precision use diff --git a/pkgs/by-name/po/portunus/package.nix b/pkgs/by-name/po/portunus/package.nix index 12f93474832c..3a737a142872 100644 --- a/pkgs/by-name/po/portunus/package.nix +++ b/pkgs/by-name/po/portunus/package.nix @@ -8,13 +8,13 @@ buildGoModule (finalAttrs: { pname = "portunus"; - version = "2.1.4"; + version = "2.2.0"; src = fetchFromGitHub { owner = "majewsky"; repo = "portunus"; - rev = "v${finalAttrs.version}"; - sha256 = "sha256-xZb2+IIZkZd/yGr0+FK7Bi3sZpPMfGz/QmUKn/clrwE="; + tag = "v${finalAttrs.version}"; + hash = "sha256-PvsqI0kwO0pA2xOouI3DmhwzDCrtyBXCBXyWDy4bEmI="; }; buildInputs = [ libxcrypt ]; diff --git a/pkgs/by-name/py/pyzy/package.nix b/pkgs/by-name/py/pyzy/package.nix index 4d545d325c7a..fdfac580ad86 100644 --- a/pkgs/by-name/py/pyzy/package.nix +++ b/pkgs/by-name/py/pyzy/package.nix @@ -13,13 +13,13 @@ stdenv.mkDerivation { pname = "pyzy"; - version = "1.1-unstable-2023-02-28"; + version = "1.1-unstable-2026-02-28"; src = fetchFromGitHub { owner = "openSUSE"; repo = "pyzy"; - rev = "ec719d053bd491ec64fe68fe0d1699ca6039ad80"; - hash = "sha256-wU7EgP/CPNhBx9N7mOu0WdnoLazzpQtbRxmBKrTUbKM="; + rev = "5ac51d833777a881e80f0b23d704345cf0feb0d0"; + hash = "sha256-OiFdog34kjmgF2DCnA8LjlZseZPQ8iCYQD4HZKNnCVU="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/qb/qbit-manage/package.nix b/pkgs/by-name/qb/qbit-manage/package.nix new file mode 100644 index 000000000000..e3dc8f09d75f --- /dev/null +++ b/pkgs/by-name/qb/qbit-manage/package.nix @@ -0,0 +1,71 @@ +{ + lib, + fetchFromGitHub, + python3Packages, + testers, + nix-update-script, + qbit-manage, +}: +python3Packages.buildPythonApplication rec { + pname = "qbit-manage"; + version = "4.6.5"; + + src = fetchFromGitHub { + owner = "StuffAnThings"; + repo = "qbit_manage"; + tag = "v${version}"; + hash = "sha256-JCsbf2mPRhs7Mbekl946G/y/CSNSSvQBLvlwVy/Avcg="; + }; + + pyproject = true; + build-system = [ python3Packages.setuptools ]; + + postPatch = '' + substituteInPlace pyproject.toml \ + --replace "==" ">=" \ + --replace "bencodepy" "bencode.py" + ''; + + dependencies = with python3Packages; [ + argon2-cffi + bencode-py + croniter + fastapi + gitpython + humanize + pytimeparse2 + qbittorrent-api + requests + retrying + ruamel-yaml + slowapi + uvicorn + ]; + + pythonRelaxDeps = [ + "fastapi" + "gitpython" + "humanize" + "ruamel.yaml" + "uvicorn" + ]; + + passthru = { + updateScript = nix-update-script { }; + tests = { + version = testers.testVersion { + package = qbit-manage; + command = "env HOME=$TMPDIR qbit-manage --version"; + }; + }; + }; + + meta = { + description = "This tool will help manage tedious tasks in qBittorrent and automate them"; + homepage = "https://github.com/StuffAnThings/qbit_manage"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ flyingpeakock ]; + platforms = lib.platforms.all; + mainProgram = "qbit-manage"; + }; +} diff --git a/pkgs/by-name/qo/qobuz-player/package.nix b/pkgs/by-name/qo/qobuz-player/package.nix new file mode 100644 index 000000000000..c193aaac2216 --- /dev/null +++ b/pkgs/by-name/qo/qobuz-player/package.nix @@ -0,0 +1,45 @@ +{ + alsa-lib, + fetchFromGitHub, + lib, + openssl, + pkg-config, + protobuf, + rustPlatform, +}: + +rustPlatform.buildRustPackage (finalAttrs: { + pname = "qobuz-player"; + version = "0.7.1"; + + src = fetchFromGitHub { + owner = "SofusA"; + repo = "qobuz-player"; + tag = "v${finalAttrs.version}"; + hash = "sha256-LStCoBr3BblXRpuno+QKxyJstvrNmP+wub61491NkPY="; + }; + + cargoHash = "sha256-6fUwZkXurjV9yM2Mur0lAkgFxTAEmt92DFKzbPj3Vo4="; + + nativeBuildInputs = [ + pkg-config + protobuf + ]; + + buildInputs = [ + alsa-lib + openssl + ]; + + meta = { + description = "Tui, web and rfid player for Qobuz"; + homepage = "https://github.com/SofusA/qobuz-player"; + changelog = "https://github.com/SofusA/qobuz-player/releases/tag/v${finalAttrs.version}"; + license = lib.licenses.gpl3Only; + maintainers = with lib.maintainers; [ + felixsinger + ]; + platforms = lib.platforms.linux; + mainProgram = "qobuz-player"; + }; +}) diff --git a/pkgs/by-name/se/serigy/package.nix b/pkgs/by-name/se/serigy/package.nix index 1ecf855b9d08..097533459782 100644 --- a/pkgs/by-name/se/serigy/package.nix +++ b/pkgs/by-name/se/serigy/package.nix @@ -14,21 +14,16 @@ python3Packages.buildPythonApplication (finalAttrs: { pname = "serigy"; - version = "1.1"; + version = "2.0.0"; pyproject = false; # uses meson src = fetchFromGitHub { owner = "CleoMenezesJr"; repo = "Serigy"; tag = finalAttrs.version; - hash = "sha256-1PlGR7aX7Ekrbe7+Qm0E1h6yl6CzdIcV2R3MSIIeH6o="; + hash = "sha256-0Dc/Y0GYXMNFQ1rWCQaCZzN1Z8lMwdj0wO47pLUV5mM="; }; - postPatch = '' - substituteInPlace src/setup_dialog.py \ - --replace-fail "flatpak run io.github.cleomenezesjr.Serigy" "serigy" - ''; - nativeBuildInputs = [ meson ninja diff --git a/pkgs/by-name/sh/shattered-pixel-dungeon/deps.json b/pkgs/by-name/sh/shattered-pixel-dungeon/deps.json index bd67d4f5150f..7c7f6cd5a330 100644 --- a/pkgs/by-name/sh/shattered-pixel-dungeon/deps.json +++ b/pkgs/by-name/sh/shattered-pixel-dungeon/deps.json @@ -1,73 +1,14 @@ { "!comment": "This is a nixpkgs Gradle dependency lockfile. For more details, refer to the Gradle section in the nixpkgs manual.", "!version": 1, - "https://central.sonatype.com/repository/maven-snapshots/com/badlogicgames": { - "gdx#gdx-backend-lwjgl3/1.13.6-20251003.170113-33/SNAPSHOT": { - "jar": "sha256-T2/VHXjfySwA+IjO2Bm0h29WvyoJsKyLmx2lkkBVJRw=", - "module": "sha256-JNBWxVhzTj4LFBGT/kZc36chXJ2uqwaUtcMUGQFLn2I=", - "pom": "sha256-P7DA/UDAWmA+/t4H3EJkktKK/e9+pX0gH4fpljqZXWQ=" - }, - "gdx#gdx-freetype-platform/1.13.6-20251003.170113-34/SNAPSHOT": { - "pom": "sha256-kTnggHqjEcoBlUTM+K15WHCqKodiKvGPrgnTHuTKU4o=" - }, - "gdx#gdx-freetype-platform/1.13.6-20251003.170113-34/SNAPSHOT/natives-desktop": { - "jar": "sha256-oHueMYiUcjnj/Ub6rxlyvLcqXRCVNlqGlV27aYHBqAs=" - }, - "gdx#gdx-freetype/1.13.6-20251003.170113-34/SNAPSHOT": { - "jar": "sha256-S6xHm1D4e5bWdtozqD1fwHe86HZAfnZ6KhzlIxXFf7s=", - "module": "sha256-gqUIFknNKRsg9HMnX0Gis0IEvIpJW8kphcjtwCAoLo4=", - "pom": "sha256-wi92v9kAtTv++AZjKT3wJYBeISF98NLNy26X9kEVFSk=" - }, - "gdx#gdx-platform/1.13.6-20251003.170113-33/SNAPSHOT": { - "pom": "sha256-UW0w1+UTHDD4HaYruY6QVmd/ur/0vHS4wYDZ5hDCEuQ=" - }, - "gdx#gdx-platform/1.13.6-20251003.170113-33/SNAPSHOT/natives-desktop": { - "jar": "sha256-yBteE7BAK+MEG1e43PjmQZy03S6LIcvJt4W41bGp34s=" - }, - "gdx#gdx/1.13.6-20251003.170113-33/SNAPSHOT": { - "jar": "sha256-GUbkm354hjSxjlPFsfQmTQi5FDcGEQUEry+avKWhsxI=", - "module": "sha256-t9BpvisJ2P37hHmwRUGxAKbCwhH6faZXL9AZ9V4T8Hw=", - "pom": "sha256-aDtJJZT/VHJyxd5RKFrQbc32IFT2wk9R7LeDvhBt8v4=" - }, - "gdx/gdx-backend-lwjgl3/1.13.6-SNAPSHOT/maven-metadata": { - "xml": { - "groupId": "com.badlogicgames.gdx", - "lastUpdated": "20251003191628" - } - }, - "gdx/gdx-freetype-platform/1.13.6-SNAPSHOT/maven-metadata": { - "xml": { - "groupId": "com.badlogicgames.gdx", - "lastUpdated": "20251003191640" - } - }, - "gdx/gdx-freetype/1.13.6-SNAPSHOT/maven-metadata": { - "xml": { - "groupId": "com.badlogicgames.gdx", - "lastUpdated": "20251003191639" - } - }, - "gdx/gdx-platform/1.13.6-SNAPSHOT/maven-metadata": { - "xml": { - "groupId": "com.badlogicgames.gdx", - "lastUpdated": "20251010022949" - } - }, - "gdx/gdx/1.13.6-SNAPSHOT/maven-metadata": { - "xml": { - "groupId": "com.badlogicgames.gdx", - "lastUpdated": "20251003191624" - } - } - }, "https://plugins.gradle.org/m2/org": { - "beryx#badass-runtime-plugin/1.13.1": { - "jar": "sha256-IW3RL1SacHD31B2wTupXAaF5Z0mzVerAzkMVLs0DGBc=", - "module": "sha256-Jf4I7QwECTJuc38vDJ/7BhyFQihl53ATdMOVyjpy9PA=", - "pom": "sha256-qZgenE/Me3hqUL+/IW93EBgs27ECjqsGiavMYeS37XI=" + "beryx#badass-runtime-plugin/2.0.1": { + "jar": "sha256-qc8YDAVtxs/vU2XOjloPJml5eJr7CUdlERPRyqm2UhQ=", + "module": "sha256-Y1r26XwZhilpzegxJvdwltB8i536+fk+x2sQYCukbcY=", + "pom": "sha256-l6xBsi4rPVcN9UXfSjFHmkVqH5O0bMl27Jo/WdHw/Ak=" }, - "beryx/runtime#org.beryx.runtime.gradle.plugin/1.13.1": { - "pom": "sha256-7SsiPX22wuiujLyvq8E96b0kKfwfNMtEFVh0jJCBu+U=" + "beryx/runtime#org.beryx.runtime.gradle.plugin/2.0.1": { + "pom": "sha256-Jm5jyHX+OFPIobK4qpMSMU2uK+ceihR2Z/mSnRwc1tQ=" }, "slf4j#slf4j-api/1.7.32": { "jar": "sha256-NiT4R0wa9G11+YvAl9eGSjI8gbOAiqQ2iabhxgHAJ74=", @@ -78,11 +19,38 @@ } }, "https://repo.maven.apache.org/maven2": { + "com/badlogicgames/gdx#gdx-backend-lwjgl3/1.14.0": { + "jar": "sha256-3pV68nyhyv+3eO2hqNMbmDXcc/AEcB0WduyjOWMHICA=", + "module": "sha256-GJYW7PSrxbXLJMt1Xwc+IsogkUv4ojCdFdJ/fnpoyOU=", + "pom": "sha256-S+xaAWtXxkg0Rruzr4XV0V9f4gedhSpnTcVLMOWd9pY=" + }, + "com/badlogicgames/gdx#gdx-freetype-platform/1.14.0": { + "pom": "sha256-qQmd0nb4AW2O5i/+TUneaeGohmjS2crXrGc7PvSbKM0=" + }, + "com/badlogicgames/gdx#gdx-freetype-platform/1.14.0/natives-desktop": { + "jar": "sha256-SFwrJdkZBLlBQ0Bm+BAgBpJHMMLCONBIcq5goC63Ofc=" + }, + "com/badlogicgames/gdx#gdx-freetype/1.14.0": { + "jar": "sha256-Pr/nUymeEYNLyIzzxMDCzIucJDWsA+VgsKh2QlZYK7Q=", + "module": "sha256-fUf8X7lgc5I5ddUqrgMuACcJ144JKU/wOK6K3R7W44A=", + "pom": "sha256-Rtq9qlQ6ZRDgUGOMNmphRdkGkbIaBiEf+rSbICMyQiw=" + }, "com/badlogicgames/gdx#gdx-jnigen-loader/2.5.2": { "jar": "sha256-34HyPP1nhcUtNeEI7qo5MPVZ1NJ3CmEC51ynv6b58no=", "module": "sha256-jwtii5G9Ez24XxUuFZMprPf0tmeDvR32AcNZfcJRIiQ=", "pom": "sha256-i0dgu2bbPz+ZuEBj7z6ZDWOhzZx81XSlatf07kvRdoc=" }, + "com/badlogicgames/gdx#gdx-platform/1.14.0": { + "pom": "sha256-2Ps74A82eRr6thqFkeVCr7qkkQEHoFdUnMlwBu2NoRs=" + }, + "com/badlogicgames/gdx#gdx-platform/1.14.0/natives-desktop": { + "jar": "sha256-qKjJzM9endUYJWs8315raJpdaWoU4EYK9bDLxR218vE=" + }, + "com/badlogicgames/gdx#gdx/1.14.0": { + "jar": "sha256-owWJXpFfxfWUg95dOZokoMpi/hFQFf/oIQw249ZPgSY=", + "module": "sha256-xJCoyufsdrraEiLaEyJl5fqyyyzc3q51IXrIhkmUWyU=", + "pom": "sha256-CiUFNinRwfRgZMN7orOC0MRmQstKTssVF3jbNXEKmgw=" + }, "com/badlogicgames/gdx-controllers#gdx-controllers-core/2.2.4": { "jar": "sha256-BNpnYnsaNkbvjyFMkdKWdCp8BVl9vCFnqqsJy9zHdHA=", "module": "sha256-dxOP5TsOdeRf4dOROsublicWFxCuVPJUR0sizmp6pIA=", diff --git a/pkgs/by-name/sh/shattered-pixel-dungeon/package.nix b/pkgs/by-name/sh/shattered-pixel-dungeon/package.nix index c37d7606ae92..c08c929b27f0 100644 --- a/pkgs/by-name/sh/shattered-pixel-dungeon/package.nix +++ b/pkgs/by-name/sh/shattered-pixel-dungeon/package.nix @@ -6,13 +6,13 @@ callPackage ./generic.nix rec { pname = "shattered-pixel-dungeon"; - version = "3.2.5"; + version = "3.3.5"; src = fetchFromGitHub { owner = "00-Evan"; repo = "shattered-pixel-dungeon"; tag = "v${version}"; - hash = "sha256-ltCKM46nzZZVJqHzo3V0Igyd4q+uD95fuLMWCi18jbQ="; + hash = "sha256-NxeDF0bfQJsJiWkAD8ynjtezPZZ5TaU0ih1t2uVtXVU="; }; patches = [ ]; diff --git a/pkgs/by-name/sp/spotatui/package.nix b/pkgs/by-name/sp/spotatui/package.nix new file mode 100644 index 000000000000..fcfb1f38127e --- /dev/null +++ b/pkgs/by-name/sp/spotatui/package.nix @@ -0,0 +1,56 @@ +{ + lib, + rustPlatform, + fetchFromGitHub, + nix-update-script, + pkg-config, + alsa-lib, + openssl, + pipewire, + + withPipewireVisualizer ? true, +}: +rustPlatform.buildRustPackage (finalAttrs: { + pname = "spotatui"; + version = "0.36.2"; + + src = fetchFromGitHub { + owner = "LargeModGames"; + repo = "spotatui"; + tag = "v${finalAttrs.version}"; + hash = "sha256-E8VIMQUGKWAauN/GTGMOdvHsghhO4E0wVdE9lIk6zEc="; + }; + + cargoHash = "sha256-nHOLOlAZfp2k0nMAywTJT+TiTkUeybRVu+PkADBY22w="; + + nativeBuildInputs = [ pkg-config ] ++ lib.optional withPipewireVisualizer rustPlatform.bindgenHook; + + buildInputs = [ + alsa-lib + openssl + ] + ++ lib.optional withPipewireVisualizer pipewire; + + buildNoDefaultFeatures = true; + buildFeatures = [ + "discord-rpc" + "mpris" + "streaming" + "telemetry" + ] + ++ lib.optional withPipewireVisualizer "audio-viz"; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "Fully standalone Spotify client for the terminal"; + homepage = "https://github.com/LargeModGames/spotatui"; + changelog = "https://github.com/LargeModGames/spotatui/releases/tag/v${finalAttrs.version}"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.lordmzte ]; + mainProgram = "spotatui"; + + # macOS is supported by upstream, but the package maintainer has no way to test this. + platforms = lib.platforms.linux; + }; +}) diff --git a/pkgs/by-name/td/tdarr/package.nix b/pkgs/by-name/td/tdarr/package.nix new file mode 100644 index 000000000000..dec4a5163a38 --- /dev/null +++ b/pkgs/by-name/td/tdarr/package.nix @@ -0,0 +1,35 @@ +{ + lib, + symlinkJoin, + tdarr-server, + tdarr-node, +}: + +symlinkJoin { + name = "tdarr-${tdarr-server.version}"; + pname = "tdarr"; + inherit (tdarr-server) version; + + paths = [ + tdarr-server + tdarr-node + ]; + + passthru = { + server = tdarr-server; + node = tdarr-node; + }; + + meta = { + description = "Distributed transcode automation using FFmpeg/HandBrake (includes both server and node)"; + homepage = "https://tdarr.io"; + license = lib.licenses.unfree; + platforms = [ + "x86_64-linux" + "aarch64-linux" + "x86_64-darwin" + "aarch64-darwin" + ]; + maintainers = with lib.maintainers; [ mistyttm ]; + }; +} diff --git a/pkgs/by-name/tm/tmux/package.nix b/pkgs/by-name/tm/tmux/package.nix index 35a49b04d009..d3907e4b164e 100644 --- a/pkgs/by-name/tm/tmux/package.nix +++ b/pkgs/by-name/tm/tmux/package.nix @@ -16,6 +16,8 @@ withUtempter ? stdenv.hostPlatform.isLinux && !stdenv.hostPlatform.isMusl, libutempter, withSixel ? true, + versionCheckHook, + nix-update-script, }: stdenv.mkDerivation (finalAttrs: { @@ -30,7 +32,7 @@ stdenv.mkDerivation (finalAttrs: { src = fetchFromGitHub { owner = "tmux"; repo = "tmux"; - rev = finalAttrs.version; + tag = finalAttrs.version; hash = "sha256-VwOyR9YYhA/uyVRJbspNrKkJWJGYFFktwPnnwnIJ97s="; }; @@ -64,6 +66,10 @@ stdenv.mkDerivation (finalAttrs: { echo "${finalAttrs.passthru.terminfo}" >> $out/nix-support/propagated-user-env-packages ''; + nativeInstallCheckInputs = [ versionCheckHook ]; + versionCheckProgramArg = "-V"; + doInstallCheck = true; + passthru = { terminfo = runCommand "tmux-terminfo" { nativeBuildInputs = [ ncurses ]; } ( if stdenv.hostPlatform.isDarwin then @@ -81,10 +87,12 @@ stdenv.mkDerivation (finalAttrs: { ln -sv ${ncurses}/share/terminfo/t/{tmux,tmux-256color,tmux-direct} $out/share/terminfo/t '' ); + updateScript = nix-update-script { }; }; meta = { homepage = "https://tmux.github.io/"; + downloadPage = "https://github.com/tmux/tmux"; description = "Terminal multiplexer"; longDescription = '' tmux is intended to be a modern, BSD-licensed alternative to programs such as GNU screen. Major features include: @@ -103,6 +111,7 @@ stdenv.mkDerivation (finalAttrs: { platforms = lib.platforms.unix; mainProgram = "tmux"; maintainers = with lib.maintainers; [ + ethancedwards8 fpletz ]; }; diff --git a/pkgs/by-name/tr/travis/Gemfile b/pkgs/by-name/tr/travis/Gemfile deleted file mode 100644 index 3da9975913e8..000000000000 --- a/pkgs/by-name/tr/travis/Gemfile +++ /dev/null @@ -1,4 +0,0 @@ -source "https://rubygems.org" - -gem "travis" -gem "pry", "~> 0.11.0" diff --git a/pkgs/by-name/tr/travis/Gemfile.lock b/pkgs/by-name/tr/travis/Gemfile.lock deleted file mode 100644 index 91df15a9bb65..000000000000 --- a/pkgs/by-name/tr/travis/Gemfile.lock +++ /dev/null @@ -1,71 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - activesupport (5.2.4.3) - concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 0.7, < 2) - minitest (~> 5.1) - tzinfo (~> 1.1) - addressable (2.7.0) - public_suffix (>= 2.0.2, < 5.0) - coderay (1.1.3) - concurrent-ruby (1.1.6) - ethon (0.12.0) - ffi (>= 1.3.0) - faraday (1.0.1) - multipart-post (>= 1.2, < 3) - faraday_middleware (1.0.0) - faraday (~> 1.0) - ffi (1.13.1) - gh (0.17.0) - activesupport (~> 5.0) - addressable (~> 2.4) - faraday (~> 1.0) - faraday_middleware (~> 1.0) - multi_json (~> 1.0) - net-http-persistent (~> 2.9) - net-http-pipeline - highline (2.0.3) - i18n (1.8.3) - concurrent-ruby (~> 1.0) - json (2.3.0) - launchy (2.4.3) - addressable (~> 2.3) - method_source (0.9.2) - minitest (5.14.1) - multi_json (1.14.1) - multipart-post (2.1.1) - net-http-persistent (2.9.4) - net-http-pipeline (1.0.1) - pry (0.11.3) - coderay (~> 1.1.0) - method_source (~> 0.9.0) - public_suffix (4.0.5) - pusher-client (0.6.2) - json - websocket (~> 1.0) - thread_safe (0.3.6) - travis (1.9.1) - faraday (~> 1.0) - faraday_middleware (~> 1.0) - gh (~> 0.13) - highline (~> 2.0) - json (~> 2.3) - launchy (~> 2.1, < 2.5.0) - pusher-client (~> 0.4) - typhoeus (~> 0.6, >= 0.6.8) - typhoeus (0.8.0) - ethon (>= 0.8.0) - tzinfo (1.2.7) - thread_safe (~> 0.1) - websocket (1.2.8) - -PLATFORMS - ruby - -DEPENDENCIES - pry (~> 0.11.0) - travis - -BUNDLED WITH - 2.1.4 diff --git a/pkgs/by-name/tr/travis/gemset.nix b/pkgs/by-name/tr/travis/gemset.nix deleted file mode 100644 index f304f77cc785..000000000000 --- a/pkgs/by-name/tr/travis/gemset.nix +++ /dev/null @@ -1,297 +0,0 @@ -{ - activesupport = { - dependencies = [ - "concurrent-ruby" - "i18n" - "minitest" - "tzinfo" - ]; - groups = [ "default" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "02fdawr3wyvpzpja3r7mvb8lmn2mm5jdw502bx3ncr2sy2nw1kx6"; - type = "gem"; - }; - version = "5.2.4.3"; - }; - addressable = { - dependencies = [ "public_suffix" ]; - groups = [ "default" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "1fvchp2rhp2rmigx7qglf69xvjqvzq7x0g49naliw29r2bz656sy"; - type = "gem"; - }; - version = "2.7.0"; - }; - coderay = { - groups = [ "default" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "0jvxqxzply1lwp7ysn94zjhh57vc14mcshw1ygw14ib8lhc00lyw"; - type = "gem"; - }; - version = "1.1.3"; - }; - concurrent-ruby = { - groups = [ "default" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "094387x4yasb797mv07cs3g6f08y56virc2rjcpb1k79rzaj3nhl"; - type = "gem"; - }; - version = "1.1.6"; - }; - ethon = { - dependencies = [ "ffi" ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "0gggrgkcq839mamx7a8jbnp2h7x2ykfn34ixwskwb0lzx2ak17g9"; - type = "gem"; - }; - version = "0.12.0"; - }; - faraday = { - dependencies = [ "multipart-post" ]; - groups = [ "default" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "0wwks9652xwgjm7yszcq5xr960pjypc07ivwzbjzpvy9zh2fw6iq"; - type = "gem"; - }; - version = "1.0.1"; - }; - faraday_middleware = { - dependencies = [ "faraday" ]; - groups = [ "default" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "0jik2kgfinwnfi6fpp512vlvs0mlggign3gkbpkg5fw1jr9his0r"; - type = "gem"; - }; - version = "1.0.0"; - }; - ffi = { - groups = [ "default" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "12lpwaw82bb0rm9f52v1498bpba8aj2l2q359mkwbxsswhpga5af"; - type = "gem"; - }; - version = "1.13.1"; - }; - gh = { - dependencies = [ - "activesupport" - "addressable" - "faraday" - "faraday_middleware" - "multi_json" - "net-http-persistent" - "net-http-pipeline" - ]; - groups = [ "default" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "1nj2dm2pahfa4d39y8csvjv5l3hpsm6yjq2y96vj2bqgg0qs26bj"; - type = "gem"; - }; - version = "0.17.0"; - }; - highline = { - groups = [ "default" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "0yclf57n2j3cw8144ania99h1zinf8q3f5zrhqa754j6gl95rp9d"; - type = "gem"; - }; - version = "2.0.3"; - }; - i18n = { - dependencies = [ "concurrent-ruby" ]; - groups = [ "default" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "10nq1xjqvkhngiygji831qx9bryjwws95r4vrnlq9142bzkg670s"; - type = "gem"; - }; - version = "1.8.3"; - }; - json = { - groups = [ "default" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "0nrmw2r4nfxlfgprfgki3hjifgrcrs3l5zvm3ca3gb4743yr25mn"; - type = "gem"; - }; - version = "2.3.0"; - }; - launchy = { - dependencies = [ "addressable" ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "190lfbiy1vwxhbgn4nl4dcbzxvm049jwc158r2x7kq3g5khjrxa2"; - type = "gem"; - }; - version = "2.4.3"; - }; - method_source = { - groups = [ "default" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "1pviwzvdqd90gn6y7illcdd9adapw8fczml933p5vl739dkvl3lq"; - type = "gem"; - }; - version = "0.9.2"; - }; - minitest = { - groups = [ "default" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "09bz9nsznxgaf06cx3b5z71glgl0hdw469gqx3w7bqijgrb55p5g"; - type = "gem"; - }; - version = "5.14.1"; - }; - multi_json = { - groups = [ "default" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "0xy54mjf7xg41l8qrg1bqri75agdqmxap9z466fjismc1rn2jwfr"; - type = "gem"; - }; - version = "1.14.1"; - }; - multipart-post = { - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "1zgw9zlwh2a6i1yvhhc4a84ry1hv824d6g2iw2chs3k5aylpmpfj"; - type = "gem"; - }; - version = "2.1.1"; - }; - net-http-persistent = { - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "1y9fhaax0d9kkslyiqi1zys6cvpaqx9a0y0cywp24rpygwh4s9r4"; - type = "gem"; - }; - version = "2.9.4"; - }; - net-http-pipeline = { - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "0bxjy33yhxwsbnld8xj3zv64ibgfjn9rjpiqkyd5ipmz50pww8v9"; - type = "gem"; - }; - version = "1.0.1"; - }; - pry = { - dependencies = [ - "coderay" - "method_source" - ]; - groups = [ "default" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "1mh312k3y94sj0pi160wpia0ps8f4kmzvm505i6bvwynfdh7v30g"; - type = "gem"; - }; - version = "0.11.3"; - }; - public_suffix = { - groups = [ "default" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "0vywld400fzi17cszwrchrzcqys4qm6sshbv73wy5mwcixmrgg7g"; - type = "gem"; - }; - version = "4.0.5"; - }; - pusher-client = { - dependencies = [ - "json" - "websocket" - ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "18ymxz34gmg7jff3h0nyzp5vdg5i06dbdxlrdl2nq4hf14qwj1f4"; - type = "gem"; - }; - version = "0.6.2"; - }; - thread_safe = { - groups = [ "default" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy"; - type = "gem"; - }; - version = "0.3.6"; - }; - travis = { - dependencies = [ - "faraday" - "faraday_middleware" - "gh" - "highline" - "json" - "launchy" - "pusher-client" - "typhoeus" - ]; - groups = [ "default" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "1yizj5nqvyrfbyiv1kfwc33dylhsmk5l007z06djj152v04z63i3"; - type = "gem"; - }; - version = "1.9.1"; - }; - typhoeus = { - dependencies = [ "ethon" ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "03x3fxjsnhgayl4s96h0a9975awlvx2v9nmx2ba0cnliglyczdr8"; - type = "gem"; - }; - version = "0.8.0"; - }; - tzinfo = { - dependencies = [ "thread_safe" ]; - groups = [ "default" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "1i3jh086w1kbdj3k5l60lc3nwbanmzdf8yjj3mlrx9b2gjjxhi9r"; - type = "gem"; - }; - version = "1.2.7"; - }; - websocket = { - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "0f11rcn4qgffb1rq4kjfwi7di79w8840x9l74pkyif5arp0mb08x"; - type = "gem"; - }; - version = "1.2.8"; - }; -} diff --git a/pkgs/by-name/tr/travis/package.nix b/pkgs/by-name/tr/travis/package.nix deleted file mode 100644 index 06d571221be6..000000000000 --- a/pkgs/by-name/tr/travis/package.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ - lib, - bundlerEnv, - ruby, - bundlerUpdateScript, -}: - -bundlerEnv { - inherit ruby; - pname = "travis"; - gemdir = ./.; - - passthru.updateScript = bundlerUpdateScript "travis"; - - meta = { - description = "CLI and Ruby client library for Travis CI"; - mainProgram = "travis"; - homepage = "https://github.com/travis-ci/travis.rb"; - license = lib.licenses.mit; - maintainers = with lib.maintainers; [ - zimbatm - nicknovitski - ]; - }; -} diff --git a/pkgs/by-name/ua/uasm/package.nix b/pkgs/by-name/ua/uasm/package.nix index dc05c0b564d8..00fd015ef578 100644 --- a/pkgs/by-name/ua/uasm/package.nix +++ b/pkgs/by-name/ua/uasm/package.nix @@ -12,7 +12,7 @@ stdenv.mkDerivation (finalAttrs: { src = fetchFromGitHub { owner = "Terraspace"; - repo = "uasm"; + repo = "UASM"; tag = "v${finalAttrs.version}r"; hash = "sha256-HaiK2ogE71zwgfhWL7fesMrNZYnh8TV/kE3ZIS0l85w="; }; @@ -20,22 +20,53 @@ stdenv.mkDerivation (finalAttrs: { enableParallelBuilding = true; makefile = - if stdenv.hostPlatform.isDarwin then "Makefile-OSX-Clang-64.mak" else "Makefile-Linux-GCC-64.mak"; - - makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ]; + if stdenv.hostPlatform.isDarwin then + "Makefile-OSX-Clang-64.mak" + else if stdenv.hostPlatform.isWindows then + "Makefile-DOS-GCC.mak" + else + "Makefile-Linux-GCC-64.mak"; # Needed for compiling with GCC > 13 - env.CFLAGS = "-std=c99 -Wno-incompatible-pointer-types -Wno-implicit-function-declaration -Wno-int-conversion"; + env.NIX_CFLAGS_COMPILE = lib.escapeShellArgs [ + "-std=c99" + "-Wno-incompatible-pointer-types" + "-Wno-int-conversion" + "-Wno-implicit-function-declaration" + ]; installPhase = '' runHook preInstall - install -Dt "$out/bin" -m0755 GccUnixR/uasm - install -Dt "$out/share/doc/uasm" -m0644 {Readme,History}.txt Doc/* + ${ + if stdenv.hostPlatform.isWindows then + '' + install -Dm0755 DJGPPr/hjwasm.exe "$out/bin/hjwasm.exe" + install -Dm0755 DJGPPr/hjwasm.exe "$out/bin/uasm.exe" + '' + else + '' + install -Dt "$out/bin" -m0755 GccUnixR/uasm + '' + } + install -Dt "$out/share/doc/${finalAttrs.pname}" -m0644 {Readme,History}.txt Doc/* runHook postInstall ''; + outputs = [ + "out" + "doc" + ]; + + postPatch = '' + substituteInPlace Makefile-DOS-GCC.mak \ + --replace-fail "gcc.exe" "${stdenv.cc.targetPrefix}cc" + + substituteInPlace Makefile-Linux-GCC-64.mak \ + --replace-fail "CC = gcc" "CC=${stdenv.cc.targetPrefix}cc" + ''; + passthru.tests.version = testers.testVersion { package = uasm; command = "uasm -h"; @@ -46,8 +77,11 @@ stdenv.mkDerivation (finalAttrs: { homepage = "https://www.terraspace.co.uk/uasm.html"; description = "Free MASM-compatible assembler based on JWasm"; mainProgram = "uasm"; - platforms = lib.platforms.unix; - maintainers = [ lib.maintainers.zane ]; + platforms = lib.platforms.unix ++ lib.platforms.windows; + maintainers = with lib.maintainers; [ + zane + ccicnce113424 + ]; license = lib.licenses.watcom; broken = stdenv.hostPlatform.isDarwin; }; diff --git a/pkgs/by-name/ul/ultimate-doom-builder/package.nix b/pkgs/by-name/ul/ultimate-doom-builder/package.nix new file mode 100644 index 000000000000..9ef1c4628385 --- /dev/null +++ b/pkgs/by-name/ul/ultimate-doom-builder/package.nix @@ -0,0 +1,137 @@ +{ + stdenv, + lib, + fetchFromGitHub, + makeWrapper, + msbuild, + mono, + libGL, + libpng, + libx11, + gtk2-x11, + makeDesktopItem, + copyDesktopItems, + unstableGitUpdater, + autoPatchelfHook, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "ultimate-doom-builder"; + version = "0-unstable-2026-02-01"; + + src = fetchFromGitHub { + owner = "jewalky"; + repo = "UltimateDoomBuilder"; + rev = "9d7a12b1164dc53964b594395f9d5d825a43ac12"; + hash = "sha256-FwGfrvF+UrmEw1lvcU4qL9OOP0n/ZmQTsIjQIxRvkmg="; + }; + + nativeBuildInputs = [ + msbuild + makeWrapper + copyDesktopItems + autoPatchelfHook + ]; + + buildInputs = [ + libGL + libpng + libx11 + gtk2-x11 + ]; + + postPatch = + let + gitCommitCount = "4291"; + gitCommitHash = "9d7a12b"; + in + '' + # Replace git-based version generation with static values since .git directory is not available. + # The build system runs git commands to get commit count and hash, then uses them in version strings. + # We disable the git Exec commands and set static PropertyGroup values instead. + for file in Source/Core/BuilderMono.csproj Source/Plugins/BuilderModes/BuilderModesMono.csproj; do + # Remove git Exec commands (they would fail without .git directory) + sed -i '/0<\/GitCommitCount>/>${gitCommitCount}<\/GitCommitCount>/g' "$file" + sed -i 's/>0<\/GitCommitHash>/>${gitCommitHash}<\/GitCommitHash>/g' "$file" + done + ''; + + buildPhase = '' + runHook preBuild + + # Won't compile without windows codepage identifier for UTF-8 + msbuild /nologo /verbosity:minimal -p:Configuration=Release /p:codepage=65001 ./BuilderMono.sln + + cp builder.sh Build/builder + chmod +x Build/builder + + # Build native library with: + # - UDB_LINUX=1 for proper mouse input handling + # - NO_SSE=1 on aarch64 to disable SSE intrinsics + $CXX -std=c++14 -O2 -shared -o Build/libBuilderNative.so -fPIC \ + -DUDB_LINUX=1 \ + ${lib.optionalString stdenv.hostPlatform.isAarch64 "-DNO_SSE=1"} \ + -I Source/Native \ + Source/Native/*.cpp \ + Source/Native/OpenGL/*.cpp \ + Source/Native/OpenGL/gl_load/*.c \ + -lX11 -ldl + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out/{bin,opt,share/icons/hicolor/64x64/apps} + + cp -r Build $out/opt/UltimateDoomBuilder + + substituteInPlace $out/opt/UltimateDoomBuilder/builder --replace-fail mono ${mono}/bin/mono + substituteInPlace $out/opt/UltimateDoomBuilder/builder --replace-fail Builder.exe $out/opt/UltimateDoomBuilder/Builder.exe + + # GTK is loaded dynamically by Mono at runtime + wrapProgram $out/opt/UltimateDoomBuilder/builder \ + --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ gtk2-x11 ]}" + + ln -s $out/opt/UltimateDoomBuilder/builder $out/bin/ultimate-doom-builder + + cp flatpak/icons/64x64/io.github.ultimatedoombuilder.ultimatedoombuilder.png $out/share/icons/hicolor/64x64/apps/ultimate-doom-builder.png + + runHook postInstall + ''; + + desktopItems = [ + (makeDesktopItem { + name = "ultimate-doom-builder"; + exec = "ultimate-doom-builder"; + icon = "ultimate-doom-builder"; + desktopName = "Ultimate Doom Builder"; + comment = finalAttrs.meta.description; + categories = [ + "Game" + "Development" + "Graphics" + "3DGraphics" + ]; + }) + ]; + + passthru.updateScript = unstableGitUpdater { }; + + meta = { + homepage = "https://github.com/jewalky/UltimateDoomBuilder"; + description = "Advanced Doom map editor based on Doom Builder 2 with Mono support"; + mainProgram = "ultimate-doom-builder"; + longDescription = '' + Ultimate Doom Builder is a map editor for Doom, Heretic, Hexen, and Strife. + It is a continuation of Doom Builder 2 with many new features and improvements, + including cross-platform support via Mono. + ''; + license = lib.licenses.gpl3Plus; + platforms = lib.platforms.linux; + maintainers = with lib.maintainers; [ sophronesis ]; + }; +}) diff --git a/pkgs/by-name/un/unpaper/package.nix b/pkgs/by-name/un/unpaper/package.nix index ce818f072032..0d1702934743 100644 --- a/pkgs/by-name/un/unpaper/package.nix +++ b/pkgs/by-name/un/unpaper/package.nix @@ -17,6 +17,7 @@ # tests nixosTests, + python3Packages, }: stdenv.mkDerivation (finalAttrs: { @@ -45,6 +46,21 @@ stdenv.mkDerivation (finalAttrs: { ffmpeg-headless ]; + nativeCheckInputs = with python3Packages; [ + pytest + pytest-xdist + pillow + ]; + + doCheck = true; + + # Tests take quite a long time + # Using pytest-xdist, we launch multiple workers + # Restrict to max 6 to avoid having a large number of idlers + preCheck = '' + mesonCheckFlagsArray+=(--test-args "--numprocesses=auto --maxprocesses=6") + ''; + passthru.tests = { inherit (nixosTests) paperless; }; diff --git a/pkgs/by-name/va/vala-lint/package.nix b/pkgs/by-name/va/vala-lint/package.nix index cc8d84a97415..937013fe0edd 100644 --- a/pkgs/by-name/va/vala-lint/package.nix +++ b/pkgs/by-name/va/vala-lint/package.nix @@ -10,19 +10,19 @@ pkg-config, vala, gettext, - wrapGAppsHook3, - unstableGitUpdater, + wrapGAppsNoGuiHook, + nix-update-script, }: -stdenv.mkDerivation { +stdenv.mkDerivation (finalAttrs: { pname = "vala-lint"; - version = "0-unstable-2025-08-03"; + version = "0.1.0"; src = fetchFromGitHub { owner = "vala-lang"; repo = "vala-lint"; - rev = "a1d1a7bc0f740920e592fd788a836c402fd9825c"; - sha256 = "sha256-63T+wLdnGtVBxKkkkj7gJx0ebApam922Z+cmk2R7Ys0="; + rev = finalAttrs.version; + hash = "sha256-63T+wLdnGtVBxKkkkj7gJx0ebApam922Z+cmk2R7Ys0="; }; nativeBuildInputs = [ @@ -31,7 +31,7 @@ stdenv.mkDerivation { ninja pkg-config vala - wrapGAppsHook3 + wrapGAppsNoGuiHook ]; buildInputs = [ @@ -42,9 +42,7 @@ stdenv.mkDerivation { doCheck = true; passthru = { - updateScript = unstableGitUpdater { - url = "https://github.com/vala-lang/vala-lint.git"; - }; + updateScript = nix-update-script { }; }; meta = { @@ -59,4 +57,4 @@ stdenv.mkDerivation { teams = [ lib.teams.pantheon ]; mainProgram = "io.elementary.vala-lint"; }; -} +}) diff --git a/pkgs/by-name/ya/yad/package.nix b/pkgs/by-name/ya/yad/package.nix index 8f4a653ebc2b..f00413203b78 100644 --- a/pkgs/by-name/ya/yad/package.nix +++ b/pkgs/by-name/ya/yad/package.nix @@ -56,7 +56,7 @@ stdenv.mkDerivation (finalAttrs: { ''; meta = { - homepage = "https://sourceforge.net/projects/yad-dialog/"; + homepage = "https://github.com/v1cont/yad"; description = "GUI dialog tool for shell scripts"; longDescription = '' Yad (yet another dialog) is a GUI dialog tool for shell scripts. It is a diff --git a/pkgs/by-name/ya/yazi/plugins/chmod/default.nix b/pkgs/by-name/ya/yazi/plugins/chmod/default.nix index 3eee44ca7ac5..5138920721c4 100644 --- a/pkgs/by-name/ya/yazi/plugins/chmod/default.nix +++ b/pkgs/by-name/ya/yazi/plugins/chmod/default.nix @@ -5,13 +5,13 @@ }: mkYaziPlugin { pname = "chmod.yazi"; - version = "25.12.29-unstable-2025-12-29"; + version = "26.1.22-unstable-2026-02-27"; src = fetchFromGitHub { owner = "yazi-rs"; repo = "plugins"; - rev = "517619af126f25f3da096ff156ce46b561b54be3"; - hash = "sha256-j7fsUmx2nK4Tyj5KCamcCmfs99K6duV+okf8NvzccsI="; + rev = "0897e20d41b79a5ec8e80e645b041bb950547a0b"; + hash = "sha256-tHOHWFH9E7aGrmHb8bUD1sLGU0OIdTjQ2p4SbJVfh/s="; }; meta = { diff --git a/pkgs/by-name/ya/yazi/plugins/drag/default.nix b/pkgs/by-name/ya/yazi/plugins/drag/default.nix index 372dbdc125b2..54d6277a8e8e 100644 --- a/pkgs/by-name/ya/yazi/plugins/drag/default.nix +++ b/pkgs/by-name/ya/yazi/plugins/drag/default.nix @@ -5,13 +5,13 @@ }: mkYaziPlugin { pname = "drag.yazi"; - version = "0-unstable-2025-08-29"; + version = "0-unstable-2026-02-21"; src = fetchFromGitHub { owner = "Joao-Queiroga"; repo = "drag.yazi"; - rev = "27606689cb82c56a19c052a7b7935cd9b1466bab"; - hash = "sha256-ITkZjpwWXni4tQpDhUiVvtPrEkAo6RISgCH594NgpYE="; + rev = "3dff129c52b30d8c08015e6f4ef8f2c07b299d4b"; + hash = "sha256-nmFlh+zW3aOU+YjbfrAWQ7A6FlGaTDnq2N2gOZ5yzzc="; }; meta = { diff --git a/pkgs/by-name/ya/yazi/plugins/git/default.nix b/pkgs/by-name/ya/yazi/plugins/git/default.nix index 735c1a2753ef..7123d4b3f2c0 100644 --- a/pkgs/by-name/ya/yazi/plugins/git/default.nix +++ b/pkgs/by-name/ya/yazi/plugins/git/default.nix @@ -5,13 +5,13 @@ }: mkYaziPlugin { pname = "git.yazi"; - version = "25.12.29-unstable-2026-01-26"; + version = "26.1.22-unstable-2026-02-27"; src = fetchFromGitHub { owner = "yazi-rs"; repo = "plugins"; - rev = "e07bf41442a7f6fdd003069f380e1ae469a86211"; - hash = "sha256-aC8DUZpzNHEf9MW3tX3XcDYY/mWClAHkw+nZaxDQHp8="; + rev = "0897e20d41b79a5ec8e80e645b041bb950547a0b"; + hash = "sha256-tHOHWFH9E7aGrmHb8bUD1sLGU0OIdTjQ2p4SbJVfh/s="; }; meta = { diff --git a/pkgs/by-name/ya/yazi/plugins/gitui/default.nix b/pkgs/by-name/ya/yazi/plugins/gitui/default.nix index 112d5f73e28a..a38bdebc0fd3 100644 --- a/pkgs/by-name/ya/yazi/plugins/gitui/default.nix +++ b/pkgs/by-name/ya/yazi/plugins/gitui/default.nix @@ -6,22 +6,15 @@ mkYaziPlugin { pname = "gitui.yazi"; - version = "0-unstable-2025-05-26"; + version = "0-unstable-2026-02-24"; src = fetchFromGitHub { owner = "gclarkjr5"; repo = "gitui.yazi"; - rev = "397e9cf9cff536a43e746d72e0e81fd5c3050d2d"; - hash = "sha256-Bo16/5XuSxRhN6URwTBxuw0FTMHLF3nV1UDBQQJFHMM="; + rev = "b3362f54db9c0da51b1d4fb2fe8315a0dada7274"; + hash = "sha256-lNj5dH6LDvl9TlA7/+bnDrRMlpOE0bCW3umrW3gBpP8="; }; - installPhase = '' - runHook preInstall - cp -r . $out - mv $out/init.lua $out/main.lua - runHook postInstall - ''; - meta = { description = "Plugin for Yazi to manage git repos with gitui"; homepage = "https://github.com/gclarkjr5/gitui.yazi"; diff --git a/pkgs/by-name/ya/yazi/plugins/mactag/default.nix b/pkgs/by-name/ya/yazi/plugins/mactag/default.nix index b6bee235b86f..62cda1f82031 100644 --- a/pkgs/by-name/ya/yazi/plugins/mactag/default.nix +++ b/pkgs/by-name/ya/yazi/plugins/mactag/default.nix @@ -5,13 +5,13 @@ }: mkYaziPlugin { pname = "mactag.yazi"; - version = "25.12.29-unstable-2025-12-29"; + version = "26.1.22-unstable-2026-02-27"; src = fetchFromGitHub { owner = "yazi-rs"; repo = "plugins"; - rev = "517619af126f25f3da096ff156ce46b561b54be3"; - hash = "sha256-j7fsUmx2nK4Tyj5KCamcCmfs99K6duV+okf8NvzccsI="; + rev = "0897e20d41b79a5ec8e80e645b041bb950547a0b"; + hash = "sha256-tHOHWFH9E7aGrmHb8bUD1sLGU0OIdTjQ2p4SbJVfh/s="; }; meta = { diff --git a/pkgs/by-name/ya/yazi/plugins/mediainfo/default.nix b/pkgs/by-name/ya/yazi/plugins/mediainfo/default.nix index f0d8629268b5..09c5d46e08ad 100644 --- a/pkgs/by-name/ya/yazi/plugins/mediainfo/default.nix +++ b/pkgs/by-name/ya/yazi/plugins/mediainfo/default.nix @@ -5,13 +5,13 @@ }: mkYaziPlugin { pname = "mediainfo.yazi"; - version = "25.5.31-unstable-2026-02-12"; + version = "25.5.31-unstable-2026-02-22"; src = fetchFromGitHub { owner = "boydaihungst"; repo = "mediainfo.yazi"; - rev = "8ab04b24595e0ba14a815d0596baa6c70986ccc4"; - hash = "sha256-6mYZba/fF5G81FqAB4dJ7hLwIV7GFh+/yA0eyX+vB6Q="; + rev = "20ecff6dd154da4c6e28fc7f754e865fd5f9d1b3"; + hash = "sha256-br8UDDPxVe4ZfoHIURD2zzjmyUImhKak0DYwCF9r2vw="; }; meta = { diff --git a/pkgs/by-name/ya/yazi/plugins/rsync/default.nix b/pkgs/by-name/ya/yazi/plugins/rsync/default.nix index 3ee1b393b3c8..e590ae34f574 100644 --- a/pkgs/by-name/ya/yazi/plugins/rsync/default.nix +++ b/pkgs/by-name/ya/yazi/plugins/rsync/default.nix @@ -5,12 +5,12 @@ }: mkYaziPlugin { pname = "rsync.yazi"; - version = "0-unstable-2025-10-23"; + version = "0-unstable-2026-02-28"; src = fetchFromGitHub { owner = "GianniBYoung"; repo = "rsync.yazi"; - rev = "14d28283f49b39593a2763d7457e0dacb78f7597"; - hash = "sha256-LT+4NKiCkiF72RG9g/tOjS6F+Wc4tY3vtnHNHPxbn1w="; + rev = "c094a5ce2dc2ebdb37f97a6f1f15af6c14c06402"; + hash = "sha256-SqN3jDwHtsVDqawJyYHWdndi9IaCKPJH9+d7ffX9H7c="; }; meta = { diff --git a/pkgs/by-name/yt/ytdownloader/package.nix b/pkgs/by-name/yt/ytdownloader/package.nix index 341edc43421e..e84b12db4615 100644 --- a/pkgs/by-name/yt/ytdownloader/package.nix +++ b/pkgs/by-name/yt/ytdownloader/package.nix @@ -70,7 +70,7 @@ buildNpmPackage rec { --add-flags $out/lib/node_modules/ytdownloader/main.js \ --prefix PATH : ${lib.makeBinPath [ ffmpeg-headless ]} - install -Dm444 assets/images/icon.png $out/share/pixmaps/ytdownloader.png + install -Dm444 assets/images/icon.png $out/share/icons/hicolor/512x512/apps/ytdownloader.png ''; meta = { diff --git a/pkgs/by-name/yu/yubikey-manager/package.nix b/pkgs/by-name/yu/yubikey-manager/package.nix index 3eb8a6065979..88e7a318aed9 100644 --- a/pkgs/by-name/yu/yubikey-manager/package.nix +++ b/pkgs/by-name/yu/yubikey-manager/package.nix @@ -5,6 +5,8 @@ python3Packages, installShellFiles, procps, + + buildPackages, }: python3Packages.buildPythonPackage rec { @@ -43,12 +45,26 @@ python3Packages.buildPythonPackage rec { postInstall = '' installManPage man/ykman.1 - - installShellCompletion --cmd ykman \ - --bash <(_YKMAN_COMPLETE=bash_source "$out/bin/ykman") \ - --zsh <(_YKMAN_COMPLETE=zsh_source "$out/bin/ykman") \ - --fish <(_YKMAN_COMPLETE=fish_source "$out/bin/ykman") \ - ''; + '' + + ( + let + compOpts = + x: + if stdenv.buildPlatform.canExecute python3Packages.stdenv.hostPlatform then + "--${x} <(_YKMAN_COMPLETE=${x}_source ${placeholder "out"}/bin/ykman)" + else + ''--${x} <(_YKMAN_COMPLETE=${x}_source PYTHONPATH= "${buildPackages.yubikey-manager}/bin/ykman")''; + in + '' + installShellCompletion --cmd ykman ${ + lib.strings.concatMapStringsSep " " compOpts [ + "bash" + "zsh" + "fish" + ] + } + '' + ); nativeCheckInputs = with python3Packages; [ astroid diff --git a/pkgs/development/python-modules/btrsync/default.nix b/pkgs/development/python-modules/btrsync/default.nix new file mode 100644 index 000000000000..4662f578f343 --- /dev/null +++ b/pkgs/development/python-modules/btrsync/default.nix @@ -0,0 +1,38 @@ +{ + lib, + fetchFromGitHub, + buildPythonPackage, + setuptools, + btrfs-progs, + pytestCheckHook, +}: + +buildPythonPackage rec { + pname = "btrsync"; + version = "0.3"; + pyproject = true; + + src = fetchFromGitHub { + owner = "andreittr"; + repo = "btrsync"; + tag = "v${version}"; + hash = "sha256-1LpHO70Yli9VG1UeqPZWM2qUMUbSbdgNP/r7FhUY/h4="; + }; + + build-system = [ setuptools ]; + + propagatedBuildInputs = [ btrfs-progs ]; + + nativeCheckInputs = [ pytestCheckHook ]; + + pythonImportsCheck = [ "btrsync" ]; + + meta = { + description = "Btrfs replication made easy"; + homepage = "https://github.com/andreittr/btrsync"; + changelog = "https://github.com/andreittr/btrsync/blob/${src.tag}/CHANGELOG.md"; + license = lib.licenses.gpl3Only; + mainProgram = "btrsync"; + maintainers = with lib.maintainers; [ bcyran ]; + }; +} diff --git a/pkgs/development/python-modules/certbot-dns-wedos/default.nix b/pkgs/development/python-modules/certbot-dns-wedos/default.nix new file mode 100644 index 000000000000..a34d525163e3 --- /dev/null +++ b/pkgs/development/python-modules/certbot-dns-wedos/default.nix @@ -0,0 +1,40 @@ +{ + lib, + buildPythonPackage, + fetchPypi, + acme, + certbot, + setuptools, + requests, + pytz, +}: + +buildPythonPackage rec { + pname = "certbot-dns-wedos"; + version = "2.4"; + pyproject = true; + + src = fetchPypi { + inherit version; + pname = "certbot_dns_wedos"; + hash = "sha256-Sle3hoBLwVPF30caCyYtt3raY5Gs9ekg0DthvHxvB4E="; + }; + + build-system = [ setuptools ]; + + dependencies = [ + certbot + acme + requests + pytz + ]; + + pythonImportsCheck = [ "certbot_dns_wedos" ]; + + meta = { + description = "Wedos DNS Authenticator plugin for Certbot"; + homepage = "https://github.com/clazzor/certbot-dns-wedos"; + license = lib.licenses.asl20; + maintainers = [ lib.maintainers.tsandrini ]; + }; +} diff --git a/pkgs/development/python-modules/django-anymail/default.nix b/pkgs/development/python-modules/django-anymail/default.nix index d471fe90a1f1..157506501cb2 100644 --- a/pkgs/development/python-modules/django-anymail/default.nix +++ b/pkgs/development/python-modules/django-anymail/default.nix @@ -2,9 +2,11 @@ lib, boto3, buildPythonPackage, + cryptography, django, fetchFromGitHub, hatchling, + idna, mock, pytest-django, pytestCheckHook, @@ -29,12 +31,18 @@ buildPythonPackage rec { dependencies = [ django + idna requests urllib3 ]; optional-dependencies = { amazon-ses = [ boto3 ]; + postal = [ cryptography ]; + sendgrid = [ cryptography ]; + # not packaged + # resend = [ svix ]; + # uts46 = [ uts46 ]; }; nativeCheckInputs = [ diff --git a/pkgs/development/python-modules/libtmux/default.nix b/pkgs/development/python-modules/libtmux/default.nix index ccdf1b16b6b5..5c7494c57dc0 100644 --- a/pkgs/development/python-modules/libtmux/default.nix +++ b/pkgs/development/python-modules/libtmux/default.nix @@ -11,16 +11,16 @@ tmux, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "libtmux"; - version = "0.53.0"; + version = "0.53.1"; pyproject = true; src = fetchFromGitHub { owner = "tmux-python"; repo = "libtmux"; - tag = "v${version}"; - hash = "sha256-lGi5hjq1lcZtotCbNmwE0tPqwwEj5c9CJLx78eibg6Y="; + tag = "v${finalAttrs.version}"; + hash = "sha256-mI6oqZ4FiWG8Xe70XV3JAm4Ula1r8JnNKLSVbs2QrGw="; }; postPatch = '' @@ -63,8 +63,8 @@ buildPythonPackage rec { meta = { description = "Typed scripting library / ORM / API wrapper for tmux"; homepage = "https://libtmux.git-pull.com/"; - changelog = "https://github.com/tmux-python/libtmux/raw/${src.tag}/CHANGES"; + changelog = "https://github.com/tmux-python/libtmux/raw/${finalAttrs.src.tag}/CHANGES"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ otavio ]; }; -} +}) diff --git a/pkgs/development/python-modules/litecli/default.nix b/pkgs/development/python-modules/litecli/default.nix new file mode 100644 index 000000000000..b271b24c4a7f --- /dev/null +++ b/pkgs/development/python-modules/litecli/default.nix @@ -0,0 +1,55 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + setuptools, + setuptools-scm, + click, + pygments, + prompt-toolkit, + sqlparse, + configobj, + cli-helpers, +}: + +buildPythonPackage rec { + pname = "litecli"; + version = "1.17.1"; + pyproject = true; + + src = fetchFromGitHub { + owner = "dbcli"; + repo = "litecli"; + tag = "v${version}"; + hash = "sha256-YSPNtDL5rNgRh5lJBKfL1jjWemlmf3eesBMSLyJVRLY="; + }; + + build-system = [ + setuptools + setuptools-scm + ]; + + dependencies = [ + click + pygments + prompt-toolkit + sqlparse + configobj + cli-helpers + ]; + + doCheck = true; + + pythonImportsCheck = [ + "litecli" + ]; + + meta = { + description = "CLI for SQLite Databases with auto-completion and syntax highlighting"; + homepage = "https://github.com/dbcli/litecli"; + changelog = "https://github.com/dbcli/litecli/releases/tag/v${version}"; + license = lib.licenses.bsd3; + maintainers = with lib.maintainers; [ nullstring1 ]; + mainProgram = "litecli"; + }; +} diff --git a/pkgs/development/python-modules/oelint-data/default.nix b/pkgs/development/python-modules/oelint-data/default.nix index 1a5fd741a184..7e9b34daec37 100644 --- a/pkgs/development/python-modules/oelint-data/default.nix +++ b/pkgs/development/python-modules/oelint-data/default.nix @@ -8,14 +8,14 @@ buildPythonPackage (finalAttrs: { pname = "oelint-data"; - version = "1.4.2"; + version = "1.4.4"; pyproject = true; src = fetchFromGitHub { owner = "priv-kweihmann"; repo = "oelint-data"; tag = finalAttrs.version; - hash = "sha256-kaJ6Qalqg2jyCfgJuXpKCvj5SHYetmAobnEJ09Y9gFQ="; + hash = "sha256-gbTbGrTwdHnC0Ydqta0SJP7tujqyz5TCeLJ4tSbkAkU="; }; build-system = [ diff --git a/pkgs/development/python-modules/osc-placement/default.nix b/pkgs/development/python-modules/osc-placement/default.nix index 7bd7c332499e..ae479cbf1b3f 100644 --- a/pkgs/development/python-modules/osc-placement/default.nix +++ b/pkgs/development/python-modules/osc-placement/default.nix @@ -16,14 +16,14 @@ buildPythonPackage rec { pname = "osc-placement"; - version = "4.7.0"; + version = "4.8.0"; pyproject = true; src = fetchFromGitHub { owner = "openstack"; repo = "osc-placement"; tag = version; - hash = "sha256-OLvi/eIgEEUoZKxowU7On5m2OkRsCEsU/Me7rPruIdM="; + hash = "sha256-txxLtg3fDrkPqU0k/PlwvpJJBzVLtJXz82mhPWo+rKc="; }; env.PBR_VERSION = version; diff --git a/pkgs/development/python-modules/python-etcd/default.nix b/pkgs/development/python-modules/python-etcd/default.nix index def0b49aecaa..c1b3fdcba3b3 100644 --- a/pkgs/development/python-modules/python-etcd/default.nix +++ b/pkgs/development/python-modules/python-etcd/default.nix @@ -2,6 +2,7 @@ lib, stdenv, buildPythonPackage, + nix-update-script, fetchFromGitHub, setuptools, urllib3, @@ -14,16 +15,18 @@ buildPythonPackage { pname = "python-etcd"; - version = "0.5.0-unstable-2023-10-31"; + version = "0.4.5-unstable-2024-08-09"; pyproject = true; src = fetchFromGitHub { owner = "jplana"; repo = "python-etcd"; - rev = "5aea0fd4461bd05dd96e4ad637f6be7bceb1cee5"; - hash = "sha256-eVirStLOPTbf860jfkNMWtGf+r0VygLZRjRDjBMCVKg="; + rev = "d2889f7b23feee8797657b19c404f0d4034dd03c"; + hash = "sha256-osiSeBdZBT3w9pJUBxD7cI9/2T7eiyj6M6+87T8bTj0="; }; + patches = [ ./remove-getheader-usage.patch ]; + build-system = [ setuptools ]; dependencies = [ @@ -59,6 +62,10 @@ buildPythonPackage { __darwinAllowLocalNetworking = true; + passthru.updateScript = nix-update-script { + extraArgs = [ "--version=branch" ]; + }; + meta = { description = "Python client for Etcd"; homepage = "https://github.com/jplana/python-etcd"; diff --git a/pkgs/development/python-modules/python-etcd/remove-getheader-usage.patch b/pkgs/development/python-modules/python-etcd/remove-getheader-usage.patch new file mode 100644 index 000000000000..348aecf7b0ba --- /dev/null +++ b/pkgs/development/python-modules/python-etcd/remove-getheader-usage.patch @@ -0,0 +1,131 @@ +From 38ba4e559a38279417719440174df6ca2bc203c5 Mon Sep 17 00:00:00 2001 +From: Priyanshu Tripathi +Date: Fri, 16 Jan 2026 06:50:43 -0500 +Subject: [PATCH] fix: migrate away from deprecated `HTTPResponse.getheader()` + method + +With urllib3 v2.6.0, `HTTPResponse.getheader()` was removed with the alternative +being `HTTPResponse.headers`, a dictionary that can be queried with `headers.get()` + +See: https://github.com/urllib3/urllib3/pull/3622 +--- + src/etcd/__init__.py | 2 +- + src/etcd/client.py | 2 +- + src/etcd/tests/unit/__init__.py | 2 +- + src/etcd/tests/unit/test_client.py | 6 +++--- + src/etcd/tests/unit/test_old_request.py | 6 ------ + src/etcd/tests/unit/test_request.py | 4 ++-- + 6 files changed, 8 insertions(+), 14 deletions(-) + +diff --git a/src/etcd/__init__.py b/src/etcd/__init__.py +index d716e9b..e85918e 100644 +--- a/src/etcd/__init__.py ++++ b/src/etcd/__init__.py +@@ -61,7 +61,7 @@ class EtcdResult(object): + self.dir = True + + def parse_headers(self, response): +- headers = response.getheaders() ++ headers = response.headers + self.etcd_index = int(headers.get("x-etcd-index", 1)) + self.raft_index = int(headers.get("x-raft-index", 1)) + +diff --git a/src/etcd/client.py b/src/etcd/client.py +index a011757..5acea07 100644 +--- a/src/etcd/client.py ++++ b/src/etcd/client.py +@@ -975,7 +975,7 @@ class Client(object): + ) + + def _check_cluster_id(self, response, path): +- cluster_id = response.getheader("x-etcd-cluster-id") ++ cluster_id = response.headers.get("x-etcd-cluster-id") + if not cluster_id: + if self.version_prefix in path: + _log.warning("etcd response did not contain a cluster ID") +diff --git a/src/etcd/tests/unit/__init__.py b/src/etcd/tests/unit/__init__.py +index a1b95c4..43bc9b5 100644 +--- a/src/etcd/tests/unit/__init__.py ++++ b/src/etcd/tests/unit/__init__.py +@@ -22,7 +22,7 @@ class TestClientApiBase(unittest.TestCase): + r = mock.create_autospec(urllib3.response.HTTPResponse)() + r.status = s + r.data = data +- r.getheader.return_value = cluster_id or "abcd1234" ++ r.headers = {"x-etcd-cluster-id": cluster_id or "abcd1234"} + return r + + def _mock_api(self, status, d, cluster_id=None): +diff --git a/src/etcd/tests/unit/test_client.py b/src/etcd/tests/unit/test_client.py +index 37cdee1..64b2650 100644 +--- a/src/etcd/tests/unit/test_client.py ++++ b/src/etcd/tests/unit/test_client.py +@@ -121,7 +121,7 @@ class TestClient(TestClientApiBase): + """Verify _set_version_info makes the proper call to the server""" + data = {"etcdserver": "2.2.3", "etcdcluster": "2.3.0"} + self._mock_api(200, data) +- self.client.api_execute.return_value.getheader.return_value = None ++ self.client.api_execute.return_value.headers = {} + # Create the client and make the call. + self.client._set_version_info() + +@@ -135,7 +135,7 @@ class TestClient(TestClientApiBase): + """Ensure the version property is set on first access.""" + data = {"etcdserver": "2.2.3", "etcdcluster": "2.3.0"} + self._mock_api(200, data) +- self.client.api_execute.return_value.getheader.return_value = None ++ self.client.api_execute.return_value.headers = {} + + # Verify the version property is set + self.assertEqual("2.2.3", self.client.version) +@@ -144,7 +144,7 @@ class TestClient(TestClientApiBase): + """Ensure the cluster version property is set on first access.""" + data = {"etcdserver": "2.2.3", "etcdcluster": "2.3.0"} + self._mock_api(200, data) +- self.client.api_execute.return_value.getheader.return_value = None ++ self.client.api_execute.return_value.headers = {} + # Verify the cluster_version property is set + self.assertEqual("2.3.0", self.client.cluster_version) + +diff --git a/src/etcd/tests/unit/test_old_request.py b/src/etcd/tests/unit/test_old_request.py +index b660c24..f2a0410 100644 +--- a/src/etcd/tests/unit/test_old_request.py ++++ b/src/etcd/tests/unit/test_old_request.py +@@ -17,12 +17,6 @@ class FakeHTTPResponse(object): + "x-etcd-cluster-id": "abdef12345", + } + +- def getheaders(self): +- return self.headers +- +- def getheader(self, header): +- return self.headers[header] +- + + class TestClientRequest(unittest.TestCase): + def test_set(self): +diff --git a/src/etcd/tests/unit/test_request.py b/src/etcd/tests/unit/test_request.py +index 7685dca..1cb7fd1 100644 +--- a/src/etcd/tests/unit/test_request.py ++++ b/src/etcd/tests/unit/test_request.py +@@ -381,7 +381,7 @@ class TestClientRequest(TestClientApiInterface): + + def _mock_api(self, status, d, cluster_id=None): + resp = self._prepare_response(status, d) +- resp.getheader.return_value = cluster_id or "abcdef1234" ++ resp.headers = {"x-etcd-cluster-id": cluster_id or "abcdef1234"} + self.client.http.request_encode_body = mock.MagicMock(return_value=resp) + self.client.http.request = mock.MagicMock(return_value=resp) + +@@ -389,7 +389,7 @@ class TestClientRequest(TestClientApiInterface): + resp = self._prepare_response( + 500, {"errorCode": error_code, "message": msg, "cause": cause} + ) +- resp.getheader.return_value = cluster_id or "abcdef1234" ++ resp.headers = {"x-etcd-cluster-id": cluster_id or "abcdef1234"} + self.client.http.request_encode_body = mock.create_autospec( + self.client.http.request_encode_body, return_value=resp + ) +-- +2.51.0 + diff --git a/pkgs/development/python-modules/python-mistralclient/default.nix b/pkgs/development/python-modules/python-mistralclient/default.nix index cd17a2259130..51ea1a97ce52 100644 --- a/pkgs/development/python-modules/python-mistralclient/default.nix +++ b/pkgs/development/python-modules/python-mistralclient/default.nix @@ -26,14 +26,14 @@ buildPythonPackage rec { pname = "python-mistralclient"; - version = "6.1.0"; + version = "6.2.0"; pyproject = true; src = fetchFromGitHub { owner = "openstack"; repo = "python-mistralclient"; tag = version; - hash = "sha256-8tB1QPaxdLdti96gOzaXuqLftmTJVM0bosJiKs+0CFs="; + hash = "sha256-FNfee7d8gTcsTdv7lxqDbniUiKQvUXHRSkAlNOCn/k4="; }; env.PBR_VERSION = version; diff --git a/pkgs/servers/home-assistant/custom-components/browser-mod/package.nix b/pkgs/servers/home-assistant/custom-components/browser-mod/package.nix new file mode 100644 index 000000000000..1ec3cfea2a7a --- /dev/null +++ b/pkgs/servers/home-assistant/custom-components/browser-mod/package.nix @@ -0,0 +1,42 @@ +{ + lib, + buildHomeAssistantComponent, + fetchFromGitHub, + fetchNpmDeps, + nodejs, + npmHooks, +}: + +buildHomeAssistantComponent rec { + owner = "thomasloven"; + domain = "browser_mod"; + version = "2.7.4"; + + src = fetchFromGitHub { + inherit owner; + repo = "hass-browser_mod"; + tag = "v${version}"; + hash = "sha256-UFHdoIfmN0BUBRAze3mC3mgbV00rrjmKlAiBc4FuiZA="; + }; + + nativeBuildInputs = [ + nodejs + npmHooks.npmBuildHook + npmHooks.npmConfigHook + ]; + + npmDeps = fetchNpmDeps { + inherit src; + hash = "sha256-gvONQGQ91XZAygXDZnu7R/BPKa9T9l3f3EE6o39t0G0="; + }; + + npmBuildScript = "build"; + + meta = { + description = "Home Assistant integration to turn your browser into a controllable entity and media player"; + homepage = "https://github.com/thomasloven/hass-browser_mod"; + changelog = "https://github.com/thomasloven/hass-browser_mod/releases/tag/${src.tag}"; + maintainers = with lib.maintainers; [ SuperSandro2000 ]; + license = lib.licenses.mit; + }; +} diff --git a/pkgs/tools/misc/tdarr/common.nix b/pkgs/tools/misc/tdarr/common.nix new file mode 100644 index 000000000000..dd08fb81adde --- /dev/null +++ b/pkgs/tools/misc/tdarr/common.nix @@ -0,0 +1,213 @@ +{ + lib, + stdenv, + fetchzip, + autoPatchelfHook, + makeWrapper, + copyDesktopItems, + makeDesktopItem, + ffmpeg, + handbrake, + mkvtoolnix, + ccextractor, + gtk3, + libayatana-appindicator, + wayland, + libxkbcommon, + mesa, + libxcb, + leptonica, + glib, + gobject-introspection, + libx11, + libxcursor, + libxfixes, + tesseract4, + perl, +}: +{ + pname, + component, # "server" or "node" + hashes, + includeInPath ? [ ], # Additional packages to include in PATH + installIcons ? false, # Whether to install icon files + passthru ? { }, # Additional passthru attributes +}: +let + platform = + { + x86_64-linux = "linux_x64"; + aarch64-linux = "linux_arm64"; + x86_64-darwin = "darwin_x64"; + aarch64-darwin = "darwin_arm64"; + } + .${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); + + componentUpper = + lib.toUpper (builtins.substring 0 1 component) + + builtins.substring 1 (builtins.stringLength component) component; + componentName = "Tdarr_${componentUpper}"; + componentTrayName = "${componentName}_Tray"; + + binPath = lib.makeBinPath ( + [ + ffmpeg + mkvtoolnix + ] + ++ includeInPath + # ! Handbrake is currently marked as broken on darwin + ++ lib.optional (!stdenv.hostPlatform.isDarwin) handbrake + ); + + commonWrapperArgs = lib.escapeShellArgs ( + [ + "--prefix" + "PATH" + ":" + binPath + "--run" + "export rootDataPath=\${rootDataPath:-\${XDG_DATA_HOME:-$HOME/.local/share}/tdarr/${component}}; mkdir -p \"$rootDataPath\"/configs \"$rootDataPath\"/logs; cd \"$rootDataPath\"" + ] + ++ lib.optionals (component == "node") [ + "--run" + "mkdir -p \"$rootDataPath\"/assets/app/plugins" + ] + ++ [ + "--run" + ''_cfg="$rootDataPath/configs/${componentName}_Config.json"; if [ -f "$_cfg" ]; then grep -q ffprobePath "$_cfg" || sed -i '1s/{/{"ffprobePath":"",/' "$_cfg"; else printf '{"ffprobePath":""}' > "$_cfg"; fi'' + "--set-default" + "ffmpegPath" + "${ffmpeg}/bin/ffmpeg" + "--set-default" + "ffprobePath" + "${ffmpeg}/bin/ffprobe" + "--set-default" + "mkvpropeditPath" + "${mkvtoolnix}/bin/mkvpropedit" + ] + ++ lib.optionals (component == "server") [ + "--set-default" + "ccextractorPath" + "${ccextractor}/bin/ccextractor" + ] + # ! Handbrake is currently marked as broken on darwin + ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ + "--set-default" + "handbrakePath" + "${handbrake}/bin/HandBrakeCLI" + ] + ); +in +stdenv.mkDerivation (finalAttrs: { + inherit pname; + version = "2.58.02"; + + src = fetchzip { + url = "https://storage.tdarr.io/versions/${finalAttrs.version}/${platform}/${componentName}.zip"; + sha256 = hashes.${platform} or (throw "Unsupported platform: ${platform}"); + stripRoot = false; + }; + + nativeBuildInputs = [ + makeWrapper + copyDesktopItems + ] + ++ lib.optionals stdenv.isLinux [ autoPatchelfHook ]; + + buildInputs = lib.optionals stdenv.isLinux [ + stdenv.cc.cc.lib + gtk3 + libayatana-appindicator + wayland + libxkbcommon + libxcb + mesa + tesseract4 + leptonica + glib + gobject-introspection + libx11 + libxcursor + libxfixes + ]; + + postPatch = '' + rm -rf ./assets/app/ffmpeg + rm -rf ./assets/app/ccextractor + + substituteInPlace node_modules/exiftool-vendored.pl/bin/exiftool \ + --replace-fail "#!/usr/bin/perl" "#!${perl}/bin/perl" + + # * exiftool-vendored checks for /usr/bin/perl existence; when missing (NixOS), it sets ignoreShebang=true which breaks spawn by using shell:true with an env lacking PATH. Since we patched the shebang, force ignoreShebang to false. + substituteInPlace node_modules/exiftool-vendored/dist/ExifTool.js \ + --replace-fail '!_fs.existsSync("/usr/bin/perl")' 'false' + ''; + + preInstall = '' + mkdir -p $out/{bin,share/${pname}} + ''; + + installPhase = '' + runHook preInstall + + # Copy contents (source is already unpacked) + cp -r . $out/share/${pname}/ + + chmod +x $out/share/${pname}/${componentName} + + runHook postInstall + ''; + + postInstall = '' + makeWrapper $out/share/${pname}/${componentName} $out/bin/${pname} ${commonWrapperArgs} + '' + # TODO: Check on each update to see if the Tdarr_Node_tray gets re-added to the aarch64-linux build. Reach out to upstream? + + lib.optionalString (stdenv.hostPlatform.system != "aarch64-linux") '' + makeWrapper $out/share/${pname}/${componentTrayName} $out/bin/${pname}-tray ${commonWrapperArgs} + '' + + lib.optionalString installIcons '' + + # Install icons from the copied source files + for size in 192 512; do + if [ -f $out/share/${pname}/public/logo''${size}.png ]; then + install -Dm644 $out/share/${pname}/public/logo''${size}.png \ + $out/share/icons/hicolor/''${size}x''${size}/apps/${pname}.png + fi + done + '' + + ""; + + desktopItems = lib.optionals (stdenv.isLinux && stdenv.hostPlatform.system != "aarch64-linux") [ + (makeDesktopItem { + desktopName = "Tdarr ${componentUpper} Tray"; + name = "Tdarr ${componentUpper} Tray"; + exec = "${pname}-tray"; + terminal = false; + type = "Application"; + icon = if installIcons then pname else ""; + categories = [ "Utility" ]; + }) + ]; + + passthru = { + updateScript = { + command = [ ./update-hashes.sh ]; + supportedFeatures = [ "commit" ]; + }; + } + // passthru; + + meta = { + description = "Distributed transcode automation ${component} using FFmpeg/HandBrake"; + homepage = "https://tdarr.io"; + license = lib.licenses.unfree; + platforms = [ + "x86_64-linux" + "aarch64-linux" + "x86_64-darwin" + "aarch64-darwin" + ]; + maintainers = with lib.maintainers; [ mistyttm ]; + mainProgram = pname; + }; +}) diff --git a/pkgs/tools/misc/tdarr/default.nix b/pkgs/tools/misc/tdarr/default.nix new file mode 100644 index 000000000000..048c02b60963 --- /dev/null +++ b/pkgs/tools/misc/tdarr/default.nix @@ -0,0 +1,6 @@ +{ callPackage, ccextractor }: + +{ + server = callPackage ./server.nix { inherit ccextractor; }; + node = callPackage ./node.nix { }; +} diff --git a/pkgs/tools/misc/tdarr/node.nix b/pkgs/tools/misc/tdarr/node.nix new file mode 100644 index 000000000000..45c910ba00e4 --- /dev/null +++ b/pkgs/tools/misc/tdarr/node.nix @@ -0,0 +1,13 @@ +{ callPackage }: + +callPackage ./common.nix { } { + pname = "tdarr-node"; + component = "node"; + + hashes = { + linux_x64 = "sha256-+vD5oaoYh/bOCuk/Bxc8Fsm9UnFICownSKvg9i726nk="; + linux_arm64 = "sha256-2uPtEno0dSdVBg5hCiUuvBCB5tuTOcpeU2BuXPiqdUU="; + darwin_x64 = "sha256-8O5J1qFpQxD6fzojxjWnbkS4XQoCZauxCtbl/drplfI="; + darwin_arm64 = "sha256-oA+nTkO4LDAX5/cGkjNOLnPu0Rss9el+4JF8PBEfsPQ="; + }; +} diff --git a/pkgs/tools/misc/tdarr/server.nix b/pkgs/tools/misc/tdarr/server.nix new file mode 100644 index 000000000000..96e40e403508 --- /dev/null +++ b/pkgs/tools/misc/tdarr/server.nix @@ -0,0 +1,16 @@ +{ callPackage, ccextractor }: + +callPackage ./common.nix { } { + pname = "tdarr-server"; + component = "server"; + + hashes = { + linux_x64 = "sha256-+nxwSGAkA+BPf481N6KHW7s0iJzoGFPWp0XCbsVEwrI="; + linux_arm64 = "sha256-tA5VX27XmH3C4Bkll2mJlr1BYz5V7PPvzbJeaDht7uI="; + darwin_x64 = "sha256-jgHEezqtzUWTIvmxsmV1VgaXY9wHePkg6bQO16eSSGI="; + darwin_arm64 = "sha256-pcPpqFbqYsXf5Og9uC+eF/1kOQ1ZiletDzkk3qavPS0="; + }; + + includeInPath = [ ccextractor ]; + installIcons = true; +} diff --git a/pkgs/tools/misc/tdarr/update-hashes.sh b/pkgs/tools/misc/tdarr/update-hashes.sh new file mode 100755 index 000000000000..822ff243d9ca --- /dev/null +++ b/pkgs/tools/misc/tdarr/update-hashes.sh @@ -0,0 +1,114 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Updates tdarr packages to the latest version +# This script updates both server and node packages since they share the same version + +SCRIPT_DIR="$(dirname "${BASH_SOURCE[0]}")" +COMMON_FILE="$SCRIPT_DIR/common.nix" +SERVER_FILE="$SCRIPT_DIR/server.nix" +NODE_FILE="$SCRIPT_DIR/node.nix" + +# Fetch the latest version from the versions.json endpoint +echo "Fetching latest version..." >&2 +LATEST_VERSION=$(curl -s https://storage.tdarr.io/versions.json | jq -r 'keys_unsorted | .[0]') + +if [[ -z "$LATEST_VERSION" ]]; then + echo "Error: Could not fetch latest version from versions.json" >&2 + exit 1 +fi + +echo "Latest version: $LATEST_VERSION" >&2 + +# Check current version in common.nix +CURRENT_VERSION=$(grep -oP '(?<=version = ")[^"]+' "$COMMON_FILE" 2>/dev/null) + +if [[ "$CURRENT_VERSION" == "$LATEST_VERSION" ]]; then + echo "Tdarr packages are already on the latest version ($LATEST_VERSION)" >&2 + exit 0 +fi + +echo "Updating from $CURRENT_VERSION to $LATEST_VERSION..." >&2 + +fetch_and_convert() { + local url=$1 + nix-prefetch-url --unpack "$url" 2>/dev/null | xargs nix hash convert --hash-algo sha256 --to sri +} + +# Fetch all hashes for both server and node +echo "Fetching hashes for server version $LATEST_VERSION..." >&2 +server_linux_x64=$(fetch_and_convert "https://storage.tdarr.io/versions/$LATEST_VERSION/linux_x64/Tdarr_Server.zip") +server_linux_arm64=$(fetch_and_convert "https://storage.tdarr.io/versions/$LATEST_VERSION/linux_arm64/Tdarr_Server.zip") +server_darwin_x64=$(fetch_and_convert "https://storage.tdarr.io/versions/$LATEST_VERSION/darwin_x64/Tdarr_Server.zip") +server_darwin_arm64=$(fetch_and_convert "https://storage.tdarr.io/versions/$LATEST_VERSION/darwin_arm64/Tdarr_Server.zip") + +echo "Fetching hashes for node version $LATEST_VERSION..." >&2 +node_linux_x64=$(fetch_and_convert "https://storage.tdarr.io/versions/$LATEST_VERSION/linux_x64/Tdarr_Node.zip") +node_linux_arm64=$(fetch_and_convert "https://storage.tdarr.io/versions/$LATEST_VERSION/linux_arm64/Tdarr_Node.zip") +node_darwin_x64=$(fetch_and_convert "https://storage.tdarr.io/versions/$LATEST_VERSION/darwin_x64/Tdarr_Node.zip") +node_darwin_arm64=$(fetch_and_convert "https://storage.tdarr.io/versions/$LATEST_VERSION/darwin_arm64/Tdarr_Node.zip") + +# Update common.nix version +tmpfile=$(mktemp) +awk -v ver="$LATEST_VERSION" ' +/^ version = / { + print " version = \"" ver "\";" + next +} +{ print } +' "$COMMON_FILE" > "$tmpfile" +mv "$tmpfile" "$COMMON_FILE" +echo "Updated version in $COMMON_FILE" >&2 + +# Update server.nix hashes +tmpfile=$(mktemp) +awk -v lx64="$server_linux_x64" -v la64="$server_linux_arm64" -v dx64="$server_darwin_x64" -v da64="$server_darwin_arm64" ' +/^ hashes = {$/ { + print $0 + getline; print " linux_x64 = \"" lx64 "\";" + getline; print " linux_arm64 = \"" la64 "\";" + getline; print " darwin_x64 = \"" dx64 "\";" + getline; print " darwin_arm64 = \"" da64 "\";" + getline; print $0 + next +} +{ print } +' "$SERVER_FILE" > "$tmpfile" +mv "$tmpfile" "$SERVER_FILE" +echo "Updated hashes in $SERVER_FILE" >&2 + +# Update node.nix hashes +tmpfile=$(mktemp) +awk -v lx64="$node_linux_x64" -v la64="$node_linux_arm64" -v dx64="$node_darwin_x64" -v da64="$node_darwin_arm64" ' +/^ hashes = {$/ { + print $0 + getline; print " linux_x64 = \"" lx64 "\";" + getline; print " linux_arm64 = \"" la64 "\";" + getline; print " darwin_x64 = \"" dx64 "\";" + getline; print " darwin_arm64 = \"" da64 "\";" + getline; print $0 + next +} +{ print } +' "$NODE_FILE" > "$tmpfile" +mv "$tmpfile" "$NODE_FILE" +echo "Updated hashes in $NODE_FILE" >&2 + +echo "Successfully updated tdarr to version $LATEST_VERSION" >&2 + +cat << EOF +[ + { + "attrPath": "tdarr-server", + "oldVersion": "$CURRENT_VERSION", + "newVersion": "$LATEST_VERSION", + "files": ["$COMMON_FILE", "$SERVER_FILE"] + }, + { + "attrPath": "tdarr-node", + "oldVersion": "$CURRENT_VERSION", + "newVersion": "$LATEST_VERSION", + "files": ["$COMMON_FILE", "$NODE_FILE"] + } +] +EOF diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 64763d61f611..6ee7b51bea30 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -1949,6 +1949,7 @@ mapAliases { transmission_3-gtk = throw "transmission_3-gtk has been removed in favour of transmission_4-gtk. Note that upgrade caused data loss for some users so backup is recommended (see NixOS 24.11 release notes for details)"; # Added 2025-10-26 transmission_3-qt = throw "transmission_3-qt has been removed in favour of transmission_4-qt. Note that upgrade caused data loss for some users so backup is recommended (see NixOS 24.11 release notes for details)"; # Added 2025-10-26 transmission_3_noSystemd = throw "transmission_3_noSystemd has been removed in favour of transmission_4. Note that upgrade caused data loss for some users so backup is recommended (see NixOS 24.11 release notes for details)"; # Added 2025-10-26 + travis = throw "'travis' has been removed because upstream has stopped maintaining it, and it contains dependencies with security vulnerabilities."; # Added 2026-02-14 treefmt2 = throw "'treefmt2' has been renamed to/replaced by 'treefmt'"; # Converted to throw 2025-10-27 tremor-language-server = throw "'tremor-language-server' has been removed because it is unmaintained"; # Added 2025-11-17 tremor-rs = throw "'tremor-rs' has been removed because it is unmaintained"; # Added 2025-11-17 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a262ae22520a..795c9087f068 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -999,6 +999,8 @@ with pkgs; auditwheel = with python3Packages; toPythonApplication auditwheel; + btrsync = with python3Packages; toPythonApplication btrsync; + davinci-resolve-studio = callPackage ../by-name/da/davinci-resolve/package.nix { studioVariant = true; }; @@ -3254,6 +3256,11 @@ with pkgs; tabview = with python3Packages; toPythonApplication tabview; + tdarrPackages = callPackage ../tools/misc/tdarr { }; + + tdarr-server = tdarrPackages.server; + tdarr-node = tdarrPackages.node; + inherit (callPackage ../development/tools/pnpm { }) pnpm_8 pnpm_9 @@ -6231,6 +6238,7 @@ with pkgs; certbot-dns-ovh certbot-dns-rfc2136 certbot-dns-route53 + certbot-dns-wedos certbot-nginx ] ); diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index f4038c1e4f83..7736b86decc1 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -2337,6 +2337,8 @@ self: super: with self; { btrfsutil = callPackage ../development/python-modules/btrfsutil { }; + btrsync = callPackage ../development/python-modules/btrsync { }; + btsmarthub-devicelist = callPackage ../development/python-modules/btsmarthub-devicelist { }; btsocket = callPackage ../development/python-modules/btsocket { }; @@ -2585,6 +2587,8 @@ self: super: with self; { certbot-dns-route53 = callPackage ../development/python-modules/certbot-dns-route53 { }; + certbot-dns-wedos = callPackage ../development/python-modules/certbot-dns-wedos { }; + certbot-nginx = callPackage ../development/python-modules/certbot-nginx { }; certifi = callPackage ../development/python-modules/certifi { }; @@ -8937,6 +8941,8 @@ self: super: with self; { lit = callPackage ../development/python-modules/lit { }; + litecli = callPackage ../development/python-modules/litecli { }; + litellm = callPackage ../development/python-modules/litellm { }; litemapy = callPackage ../development/python-modules/litemapy { };