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 { };