Merge staging-next into staging

This commit is contained in:
nixpkgs-ci[bot]
2026-03-01 06:16:29 +00:00
committed by GitHub
124 changed files with 5023 additions and 1183 deletions
+2
View File
@@ -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.
+49 -1
View File
@@ -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";
@@ -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}
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
@@ -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
+25
View File
@@ -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}
'';
+3 -1
View File
@@ -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
+2
View File
@@ -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
@@ -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 [
+96 -65
View File
@@ -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:
+15 -6
View File
@@ -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 (
@@ -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;
};
};
};
}
@@ -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" ''
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- XML -*- -->
<!DOCTYPE busconfig PUBLIC
"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<policy user="beszel-agent">
<allow
send_destination="org.freedesktop.systemd1"
send_type="method_call"
send_path="/org/freedesktop/systemd1"
send_interface="org.freedesktop.systemd1.Manager"
send_member="ListUnits"
/>
</policy>
</busconfig>
'')
];
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";
+1 -3
View File
@@ -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.
@@ -886,6 +886,7 @@ in
"internal_hashed"
"cyrus"
"anonymous"
"ldap"
];
default = "internal_hashed";
example = "internal_plain";
@@ -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" ];
};
@@ -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;
+167
View File
@@ -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
];
}
+199 -134
View File
@@ -123,129 +123,141 @@ let
checkPhase = ''
${cfg.phpPackage}/bin/php --syntax-check "$target"
'';
text = ''
<?php
# Protect against web entry
if ( !defined( 'MEDIAWIKI' ) ) {
exit;
}
text =
let
dbSettings =
if cfg.database.type == "sqlite" then
''
$wgSQLiteDataDir = "${cfg.database.path}";
''
else
''
$wgDBserver = "${dbAddr}";
$wgDBport = "${toString cfg.database.port}";
$wgDBuser = "${cfg.database.user}";
${optionalString (
cfg.database.passwordFile != null
) "$wgDBpassword = file_get_contents(\"${cfg.database.passwordFile}\");"}
$wgSitename = "${cfg.name}";
$wgMetaNamespace = false;
${optionalString (cfg.database.type == "mysql" && cfg.database.tablePrefix != null) ''
# MySQL specific settings
$wgDBprefix = "${cfg.database.tablePrefix}";
''}
## The URL base path to the directory containing the wiki;
## defaults for all runtime URL paths are based off of this.
## For more information on customizing the URLs
## (like /w/index.php/Page_title to /wiki/Page_title) please see:
## https://www.mediawiki.org/wiki/Manual:Short_URL
$wgScriptPath = "${lib.optionalString (cfg.webserver == "nginx") "/w"}";
${optionalString (cfg.database.type == "mysql") ''
# MySQL table options to use during installation or update
$wgDBTableOptions = "ENGINE=InnoDB, DEFAULT CHARSET=binary";
''}
'';
in
''
<?php
# Protect against web entry
if ( !defined( 'MEDIAWIKI' ) ) {
exit;
}
## The protocol and server name to use in fully-qualified URLs
$wgServer = "${cfg.url}";
$wgSitename = "${cfg.name}";
$wgMetaNamespace = false;
## The URL path to static resources (images, scripts, etc.)
$wgResourceBasePath = $wgScriptPath;
## The URL base path to the directory containing the wiki;
## defaults for all runtime URL paths are based off of this.
## For more information on customizing the URLs
## (like /w/index.php/Page_title to /wiki/Page_title) please see:
## https://www.mediawiki.org/wiki/Manual:Short_URL
$wgScriptPath = "${lib.optionalString (cfg.webserver == "nginx") "/w"}";
${lib.optionalString (cfg.webserver == "nginx") ''
$wgArticlePath = "/wiki/$1";
$wgUsePathInfo = true;
''}
## The protocol and server name to use in fully-qualified URLs
$wgServer = "${cfg.url}";
## The URL path to the logo. Make sure you change this from the default,
## or else you'll overwrite your logo when you upgrade!
$wgLogo = "$wgResourceBasePath/resources/assets/wiki.png";
## The URL path to static resources (images, scripts, etc.)
$wgResourceBasePath = $wgScriptPath;
## UPO means: this is also a user preference option
${lib.optionalString (cfg.webserver == "nginx") ''
$wgArticlePath = "/wiki/$1";
$wgUsePathInfo = true;
''}
$wgEnableEmail = true;
$wgEnableUserEmail = true; # UPO
## The URL path to the logo. Make sure you change this from the default,
## or else you'll overwrite your logo when you upgrade!
$wgLogo = "$wgResourceBasePath/resources/assets/wiki.png";
$wgPasswordSender = "${cfg.passwordSender}";
## UPO means: this is also a user preference option
$wgEnotifUserTalk = false; # UPO
$wgEnotifWatchlist = false; # UPO
$wgEmailAuthentication = true;
$wgEnableEmail = true;
$wgEnableUserEmail = true; # UPO
## Database settings
$wgDBtype = "${cfg.database.type}";
$wgDBserver = "${dbAddr}";
$wgDBport = "${toString cfg.database.port}";
$wgDBname = "${cfg.database.name}";
$wgDBuser = "${cfg.database.user}";
${optionalString (
cfg.database.passwordFile != null
) "$wgDBpassword = file_get_contents(\"${cfg.database.passwordFile}\");"}
$wgPasswordSender = "${cfg.passwordSender}";
${optionalString (cfg.database.type == "mysql" && cfg.database.tablePrefix != null) ''
# MySQL specific settings
$wgDBprefix = "${cfg.database.tablePrefix}";
''}
$wgEnotifUserTalk = false; # UPO
$wgEnotifWatchlist = false; # UPO
$wgEmailAuthentication = true;
${optionalString (cfg.database.type == "mysql") ''
# MySQL table options to use during installation or update
$wgDBTableOptions = "ENGINE=InnoDB, DEFAULT CHARSET=binary";
''}
## Database settings
$wgDBtype = "${cfg.database.type}";
$wgDBname = "${cfg.database.name}";
${dbSettings}
## Shared memory settings
$wgMainCacheType = CACHE_NONE;
$wgMemCachedServers = [];
## Shared memory settings
$wgMainCacheType = CACHE_NONE;
$wgMemCachedServers = [];
${optionalString (cfg.uploadsDir != null) ''
$wgEnableUploads = true;
$wgUploadDirectory = "${cfg.uploadsDir}";
''}
${optionalString (cfg.uploadsDir != null) ''
$wgEnableUploads = true;
$wgUploadDirectory = "${cfg.uploadsDir}";
''}
$wgUseImageMagick = true;
$wgUseImageMagick = true;
# InstantCommons allows wiki to use images from https://commons.wikimedia.org
$wgUseInstantCommons = false;
# InstantCommons allows wiki to use images from https://commons.wikimedia.org
$wgUseInstantCommons = false;
# Periodically send a pingback to https://www.mediawiki.org/ with basic data
# about this MediaWiki instance. The Wikimedia Foundation shares this data
# with MediaWiki developers to help guide future development efforts.
$wgPingback = true;
# Periodically send a pingback to https://www.mediawiki.org/ with basic data
# about this MediaWiki instance. The Wikimedia Foundation shares this data
# with MediaWiki developers to help guide future development efforts.
$wgPingback = true;
## If you use ImageMagick (or any other shell command) on a
## Linux server, this will need to be set to the name of an
## available UTF-8 locale
$wgShellLocale = "C.UTF-8";
## If you use ImageMagick (or any other shell command) on a
## Linux server, this will need to be set to the name of an
## available UTF-8 locale
$wgShellLocale = "C.UTF-8";
## Set $wgCacheDirectory to a writable directory on the web server
## to make your wiki go slightly faster. The directory should not
## be publicly accessible from the web.
$wgCacheDirectory = "${cacheDir}";
## Set $wgCacheDirectory to a writable directory on the web server
## to make your wiki go slightly faster. The directory should not
## be publicly accessible from the web.
$wgCacheDirectory = "${cacheDir}";
# Site language code, should be one of the list in ./languages/data/Names.php
$wgLanguageCode = "en";
# Site language code, should be one of the list in ./languages/data/Names.php
$wgLanguageCode = "en";
$wgSecretKey = file_get_contents("${stateDir}/secret.key");
$wgSecretKey = file_get_contents("${stateDir}/secret.key");
# Changing this will log out all existing sessions.
$wgAuthenticationTokenVersion = "";
# Changing this will log out all existing sessions.
$wgAuthenticationTokenVersion = "";
## For attaching licensing metadata to pages, and displaying an
## appropriate copyright notice / icon. GNU Free Documentation
## License and Creative Commons licenses are supported so far.
$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright
$wgRightsUrl = "";
$wgRightsText = "";
$wgRightsIcon = "";
## For attaching licensing metadata to pages, and displaying an
## appropriate copyright notice / icon. GNU Free Documentation
## License and Creative Commons licenses are supported so far.
$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright
$wgRightsUrl = "";
$wgRightsText = "";
$wgRightsIcon = "";
# Enable APCU caching
$wgMainCacheType = CACHE_ACCEL;
# Enable APCU caching
$wgMainCacheType = CACHE_ACCEL;
# Enabled skins.
${concatStringsSep "\n" (mapAttrsToList (k: v: "wfLoadSkin('${k}');") cfg.skins)}
# Enabled skins.
${concatStringsSep "\n" (mapAttrsToList (k: v: "wfLoadSkin('${k}');") cfg.skins)}
# Enabled extensions.
${concatStringsSep "\n" (mapAttrsToList (k: v: "wfLoadExtension('${k}');") cfg.extensions)}
# Enabled extensions.
${concatStringsSep "\n" (mapAttrsToList (k: v: "wfLoadExtension('${k}');") cfg.extensions)}
# End of automatically generated settings.
# Add more configuration options below.
# End of automatically generated settings.
# Add more configuration options below.
${cfg.extraConfig}
'';
${cfg.extraConfig}
'';
};
withTrailingSlash = str: if lib.hasSuffix "/" str then str else "${str}/";
@@ -400,22 +412,30 @@ in
"postgres"
"mssql"
"oracle"
"sqlite"
];
default = "mysql";
description = "Database engine to use. MySQL/MariaDB is the database of choice by MediaWiki developers.";
};
host = mkOption {
type = types.str;
default = "localhost";
description = "Database host address.";
type = types.nullOr types.str;
default = if cfg.database.type == "sqlite" then null else "localhost";
defaultText = ''"localhost"'';
description = "Database host address. Used only if database type is not SQLite.";
};
port = mkOption {
type = types.port;
default = if cfg.database.type == "mysql" then 3306 else 5432;
type = types.nullOr types.port;
default =
if cfg.database.type == "mysql" then
3306
else if cfg.database.type != "sqlite" then
5432
else
null;
defaultText = literalExpression "3306";
description = "Database host port.";
description = "Database host port. Used only if database type is not SQLite.";
};
name = mkOption {
@@ -425,9 +445,17 @@ in
};
user = mkOption {
type = types.str;
default = "mediawiki";
description = "Database user.";
type = types.nullOr types.str;
default = if cfg.database.type != "sqlite" then "mediawiki" else null;
defaultText = literalExpression ''"mediawiki"'';
description = "Database user. Used only if database type is not SQLite.";
};
path = mkOption {
type = types.nullOr types.path;
default = if cfg.database.type == "sqlite" then "${stateDir}/data" else null;
defaultText = literalExpression ''"${stateDir}/data"'';
description = "Path to store the MediaWiki database in if using SQLite.";
};
passwordFile = mkOption {
@@ -436,7 +464,7 @@ in
example = "/run/keys/mediawiki-dbpassword";
description = ''
A file containing the password corresponding to
{option}`database.user`.
{option}`database.user`. Used only if database type is not SQLite.
'';
};
@@ -447,7 +475,7 @@ in
If you only have access to a single database and wish to install more than
one version of MediaWiki, or have other applications that also use the
database, you can give the table names a unique prefix to stop any naming
conflicts or confusion.
conflicts or confusion. Only used if database type is MySQL.
See <https://www.mediawiki.org/wiki/Manual:$wgDBprefix>.
'';
};
@@ -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/urandom 2>/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/urandom 2>/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";
+1
View File
@@ -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;
+15
View File
@@ -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 = {
+39
View File
@@ -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")
'';
}
+1 -2
View File
@@ -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,
...
}:
{
@@ -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="
},
@@ -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
@@ -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;
};
};
+20 -4
View File
@@ -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";
@@ -0,0 +1,6 @@
{
_7zip-zstd,
}:
_7zip-zstd.override {
enableUnfree = true;
}
+175
View File
@@ -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";
};
})
+12
View File
@@ -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"
}
@@ -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 <WinVer.h>
+// #include <winver.h>
#ifndef MY_VERSION
#include "7zVersion.h"
--- a/C/Util/7zipInstall/resource.rc
+++ b/C/Util/7zipInstall/resource.rc
@@ -1,7 +1,7 @@
#include <windows.h>
// #include <winnt.h>
// #include <WinUser.h>
-#include <CommCtrl.h>
+#include <commctrl.h>
#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 <winnt.h>
+ #include <WinUser.h>
+-#include <CommCtrl.h>
++#include <commctrl.h>
+
+ #define USE_COPYRIGHT_CR
+ #include "../../7zVersion.rc"
--- a/C/Util/7zipUninstall/resource.rc
+++ b/C/Util/7zipUninstall/resource.rc
@@ -1,7 +1,7 @@
#include <windows.h>
// #include <winnt.h>
// #include <WinUser.h>
-#include <CommCtrl.h>
+#include <commctrl.h>
#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 <winnt.h>
+ #include <WinUser.h>
+-#include <CommCtrl.h>
++#include <commctrl.h>
+
+ #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 <NTSecAPI.h>
+// #include <ntsecapi.h>
EXTERN_C_BEGIN
#ifndef RtlGenRandom
--- a/CPP/7zip/GuiCommon.rc
+++ b/CPP/7zip/GuiCommon.rc
@@ -4,7 +4,7 @@
// #include <WinUser.h>
// for Windows CE:
-#include <CommCtrl.h>
+#include <commctrl.h>
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 <TlHelp32.h>
+#include <tlhelp32.h>
#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 <CommCtrl.h>
+#include <commctrl.h>
#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 <CommCtrl.h>
+#include <commctrl.h>
#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 <CommCtrl.h>
+#include <commctrl.h>
#include "../Defs.h"
--- a/CPP/Windows/Control/ListView.h
+++ b/CPP/Windows/Control/ListView.h
@@ -5,7 +5,7 @@
#include "../../Common/MyWindows.h"
-#include <CommCtrl.h>
+#include <commctrl.h>
#include "../Window.h"
--- a/CPP/Windows/Control/ProgressBar.h
+++ b/CPP/Windows/Control/ProgressBar.h
@@ -5,7 +5,7 @@
#include "../../Common/MyWindows.h"
-#include <CommCtrl.h>
+#include <commctrl.h>
#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 <NTSecAPI.h>
+#include <ntsecapi.h>
#include "Defs.h"
+45 -22
View File
@@ -3,9 +3,16 @@
lib,
fetchzip,
# Only useful on Linux x86/x86_64, and brings in nonfree 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
+509
View File
@@ -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="
}
]
@@ -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" ];
};
})
+34
View File
@@ -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";
};
}
+1
View File
@@ -32,6 +32,7 @@ stdenv.mkDerivation (finalAttrs: {
./bootstrap --gnulib-srcdir=.gnulib
'';
configureFlags = lib.optionals stdenv.buildPlatform.isDarwin [ "--disable-gnulib-tests" ];
nativeBuildInputs = [
autoreconfHook
bison
+2 -2
View File
@@ -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 = ''
@@ -0,0 +1,7 @@
# This file was generated by swiftpm2nix.
{
workspaceStateFile = ./workspace-state.json;
hashes = {
"swift-argument-parser" = "sha256-lWQ9mzfRxHcy00Cqyrsm9rOlQzkpU1lNBmiK7MMp6dU=";
};
}
@@ -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
}
+58
View File
@@ -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;
};
})
+5 -3
View File
@@ -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;
+9 -4
View File
@@ -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;
};
+101
View File
@@ -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;
};
})
+2 -3
View File
@@ -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;
};
@@ -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 { };
+44
View File
@@ -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";
};
}
+6 -3
View File
@@ -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";
+67
View File
@@ -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";
};
})
+37
View File
@@ -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";
};
}
+78
View File
@@ -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";
};
})
+42
View File
@@ -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;
};
})
+52
View File
@@ -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";
};
}
+80
View File
@@ -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 ];
};
})
+42
View File
@@ -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 ];
};
})
@@ -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
];
};
}
+3 -3
View File
@@ -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 ];
+68
View File
@@ -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 ];
};
})
@@ -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:
# <https://github.com/intel/intel-graphics-compiler/blob/v2.16.0/documentation/build_ubuntu.md#revision-table>
@@ -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=";
})
];
+98 -98
View File
@@ -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" ];
}
)
+119
View File
@@ -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
];
};
})
+49 -10
View File
@@ -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
'';
+49
View File
@@ -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
];
};
})
+2
View File
@@ -67,6 +67,8 @@ stdenv.mkDerivation rec {
addDriverRunpath.driverLink
];
autoPatchelfIgnoreMissingDeps = [ "librockchip_mpp.so.1" ];
installPhase = ''
runHook preInstall
@@ -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 <functional>
+
+#include <QString>
+
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
}
@@ -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|<icon>application-x-musescore\(\+xml\)\?</icon>|<icon>application-x-musescore-evo\1</icon>|g' \
-e 's|<icon>musescore</icon>|<icon>mscore-evo</icon>|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|<id>org\.musescore\.MuseScore</id>|<id>org.musescore.MuseScoreEvolution</id>|' \
-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;
};
})
+26
View File
@@ -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)
+32
View File
@@ -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";
};
})
@@ -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;
};
}
+64
View File
@@ -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";
};
}
+190
View File
@@ -0,0 +1,190 @@
From 236aa3fa2f5ee68a8be21a5cc3a729fb90539f1e Mon Sep 17 00:00:00 2001
From: Eisuke Kawashima <e-kwsm@users.noreply.github.com>
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
+58
View File
@@ -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 <assert.h>
#include <sys/un.h>
#include <syslog.h>
+#include <unistd.h>
#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);
+116
View File
@@ -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;
};
}
+20
View File
@@ -0,0 +1,20 @@
Commit ID: 0527fcb65d6af4271a33dbd425f30d457fc7ab4f
Change ID: puqrnyuutmspqxqtkkqqrsmsxnyqvomm
Author : Ricardo Correia <someplaceguy@wizy.org> (2026-02-18 23:51:00)
Committer: Ricardo Correia <someplaceguy@wizy.org> (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);
}
+12 -2
View File
@@ -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 = [
+20 -12
View File
@@ -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 ];
+3 -3
View File
@@ -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 ];
+66 -36
View File
@@ -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;
};
})
+99
View File
@@ -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;
};
})
+10
View File
@@ -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
+3 -3
View File
@@ -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 ];
+3 -3
View File
@@ -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 = [
+71
View File
@@ -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";
};
}
+45
View File
@@ -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";
};
})
+2 -7
View File
@@ -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
+33 -65
View File
@@ -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=",
@@ -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 = [ ];
+56
View File
@@ -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;
};
})
+35
View File
@@ -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 ];
};
}
+10 -1
View File
@@ -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
];
};
-4
View File
@@ -1,4 +0,0 @@
source "https://rubygems.org"
gem "travis"
gem "pry", "~> 0.11.0"
-71
View File
@@ -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
-297
View File
@@ -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";
};
}
-25
View File
@@ -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
];
};
}
+43 -9
View File
@@ -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;
};
@@ -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 '/<Exec Command="git/,/<\/Exec>/d' "$file"
# Replace conditional defaults with static values
sed -i 's/>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 ];
};
})
+16
View File
@@ -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;
};
+9 -11
View File
@@ -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";
};
}
})
+1 -1
View File
@@ -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
@@ -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 = {
@@ -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 = {
+3 -3
View File
@@ -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 = {
+3 -10
View File
@@ -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";

Some files were not shown because too many files have changed in this diff Show More