Merge staging-next into staging

This commit is contained in:
nixpkgs-ci[bot] 2025-06-22 12:07:03 +00:00 committed by GitHub
commit cd0486dcd0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
109 changed files with 1192 additions and 247 deletions

View File

@ -48,6 +48,8 @@
[dwl](https://codeberg.org/dwl/dwl), a compact, hackable compositor for Wayland based on wlroots. Available as [programs.dwl](#opt-programs.dwl.enable).
- [mautrix-discord](https://github.com/mautrix/discord), a Matrix-Discord puppeting/relay bridge. Available as [services.mautrix-discord](#opt-services.mautrix-discord.enable).
## Backward Incompatibilities {#sec-release-25.11-incompatibilities}
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->

View File

@ -767,6 +767,7 @@
./services/matrix/lk-jwt-service.nix
./services/matrix/matrix-alertmanager.nix
./services/matrix/maubot.nix
./services/matrix/mautrix-discord.nix
./services/matrix/mautrix-meta.nix
./services/matrix/mautrix-signal.nix
./services/matrix/mautrix-telegram.nix

View File

@ -118,6 +118,9 @@ in
};
meta = {
maintainers = with lib.maintainers; [ linsui ];
maintainers = with lib.maintainers; [
linsui
ryan4yin
];
};
}

View File

@ -0,0 +1,538 @@
{
lib,
config,
pkgs,
...
}:
let
cfg = config.services.mautrix-discord;
dataDir = cfg.dataDir;
format = pkgs.formats.yaml { };
registrationFile = "${dataDir}/discord-registration.yaml";
settingsFile = "${dataDir}/config.yaml";
settingsFileUnformatted = format.generate "discord-config-unsubstituted.yaml" cfg.settings;
in
{
options = {
services.mautrix-discord = {
enable = lib.mkEnableOption "Mautrix-Discord, a Matrix-Discord puppeting/relay-bot bridge";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.mautrix-discord;
defaultText = lib.literalExpression "pkgs.mautrix-discord";
description = ''
The mautrix-discord package to use.
'';
};
settings = lib.mkOption {
type = lib.types.submodule {
freeformType = format.type;
config = {
_module.args = { inherit cfg lib; };
};
options = {
homeserver = lib.mkOption {
type = lib.types.attrs;
default = {
software = "standard";
status_endpoint = null;
message_send_checkpoint_endpoint = null;
async_media = false;
websocket = false;
ping_interval_seconds = 0;
};
description = ''
fullDataDiration.
See [example-config.yaml](https://github.com/mautrix/discord/blob/main/example-config.yaml)
for more information.
'';
};
appservice = lib.mkOption {
type = lib.types.attrs;
default = {
address = "http://localhost:8009";
port = 8009;
id = "discord";
bot = {
username = "discordbot";
displayname = "Discord bridge bot";
avatar = "mxc://maunium.net/nIdEykemnwdisvHbpxflpDlC";
};
as_token = "generate";
hs_token = "generate";
database = {
type = "sqlite3";
uri = "file:/var/lib/mautrix-discord/mautrix-discord.db?_txlock=immediate";
};
};
defaultText = lib.literalExpression ''
{
address = "http://localhost:8009";
port = 8009;
id = "discord";
bot = {
username = "discordbot";
displayname = "Discord bridge bot";
avatar = "mxc://maunium.net/nIdEykemnwdisvHbpxflpDlC";
};
as_token = "generate";
hs_token = "generate";
database = {
type = "sqlite3";
uri = "file:''${config.services.mautrix-discord.dataDir}/mautrix-discord.db?_txlock=immediate";
};
}
'';
description = ''
Appservice configuration.
See [example-config.yaml](https://github.com/mautrix/discord/blob/main/example-config.yaml)
for more information.
'';
};
bridge = lib.mkOption {
type = lib.types.attrs;
default = {
username_template = "discord_{{.}}";
displayname_template = "{{or .GlobalName .Username}}{{if .Bot}} (bot){{end}}";
channel_name_template = "{{if or (eq .Type 3) (eq .Type 4)}}{{.Name}}{{else}}#{{.Name}}{{end}}";
guild_name_template = "{{.Name}}";
private_chat_portal_meta = "default";
public_address = null;
avatar_proxy_key = "generate";
portal_message_buffer = 128;
startup_private_channel_create_limit = 5;
delivery_receipts = false;
message_status_events = false;
message_error_notices = true;
restricted_rooms = true;
autojoin_thread_on_open = true;
embed_fields_as_tables = true;
mute_channels_on_create = false;
sync_direct_chat_list = false;
resend_bridge_info = false;
custom_emoji_reactions = true;
delete_portal_on_channel_delete = false;
delete_guild_on_leave = true;
federate_rooms = true;
prefix_webhook_messages = false;
enable_webhook_avatars = true;
use_discord_cdn_upload = true;
cache_media = "unencrypted";
direct_media = {
enabled = false;
server_name = "discord-media.example.com";
allow_proxy = true;
server_key = "generate";
};
animated_sticker = {
target = "webp";
args = {
width = 320;
height = 320;
fps = 25;
};
};
command_prefix = "!discord";
management_room_text = {
welcome = "Hello, I'm a Discord bridge bot.";
welcome_connected = "Use `help` for help.";
welcome_unconnected = "Use `help` for help or `login` to log in.";
additional_help = "";
};
backfill = {
forward_limits = {
initial = {
dm = 0;
channel = 0;
thread = 0;
};
missed = {
dm = 0;
channel = 0;
thread = 0;
};
max_guild_members = -1;
};
};
encryption = {
allow = false;
default = false;
appservice = false;
msc4190 = false;
require = false;
allow_key_sharing = false;
plaintext_mentions = false;
delete_keys = {
delete_outbound_on_ack = false;
dont_store_outbound = false;
ratchet_on_decrypt = false;
delete_fully_used_on_decrypt = false;
delete_prev_on_new_session = false;
delete_on_device_delete = false;
periodically_delete_expired = false;
delete_outdated_inbound = false;
};
verification_levels = {
receive = "unverified";
send = "unverified";
share = "cross-signed-tofu";
};
rotation = {
enable_custom = false;
milliseconds = 604800000;
messages = 100;
disable_device_change_key_rotation = false;
};
};
provisioning = {
prefix = "/_matrix/provision";
shared_secret = "generate";
debug_endpoints = false;
};
permissions = {
"*" = "relay";
# "example.com" = "user";
# "@admin:example.com": "admin";
};
};
description = ''
Bridge configuration.
See [example-config.yaml](https://github.com/mautrix/discord/blob/main/example-config.yaml)
for more information.
'';
};
};
};
default = { };
example = lib.literalExpression ''
{
homeserver = {
address = "http://localhost:8008";
domain = "public-domain.tld";
};
appservice.public = {
prefix = "/public";
external = "https://public-appservice-address/public";
};
bridge.permissions = {
"example.com" = "full";
"@admin:example.com" = "admin";
};
}
'';
description = ''
{file}`config.yaml` configuration as a Nix attribute set.
Configuration options should match those described in
[example-config.yaml](https://github.com/mautrix/discord/blob/main/example-config.yaml).
'';
};
registerToSynapse = lib.mkOption {
type = lib.types.bool;
default = config.services.matrix-synapse.enable;
defaultText = lib.literalExpression "config.services.matrix-synapse.enable";
description = ''
Whether to add the bridge's app service registration file to
`services.matrix-synapse.settings.app_service_config_files`.
'';
};
dataDir = lib.mkOption {
type = lib.types.path;
default = "/var/lib/mautrix-discord";
defaultText = "/var/lib/mautrix-discord";
description = ''
Directory to store the bridge's configuration and database files.
This directory will be created if it does not exist.
'';
};
# TODO: Get upstream to add an environment File option. Refer to https://github.com/NixOS/nixpkgs/pull/404871#issuecomment-2895663652 and https://github.com/mautrix/discord/issues/187
environmentFile = lib.mkOption {
type = lib.types.nullOr lib.types.path;
default = null;
description = ''
File containing environment variables to substitute when copying the configuration
out of Nix store to the `services.mautrix-discord.dataDir`.
Can be used for storing the secrets without making them available in the Nix store.
For example, you can set `services.mautrix-discord.settings.appservice.as_token = "$MAUTRIX_DISCORD_APPSERVICE_AS_TOKEN"`
and then specify `MAUTRIX_DISCORD_APPSERVICE_AS_TOKEN="{token}"` in the environment file.
This value will get substituted into the configuration file as a token.
'';
};
serviceUnit = lib.mkOption {
type = lib.types.str;
readOnly = true;
default = "mautrix-discord.service";
description = ''
The systemd unit (a service or a target) for other services to depend on if they
need to be started after matrix-synapse.
This option is useful as the actual parent unit for all matrix-synapse processes
changes when configuring workers.
'';
};
registrationServiceUnit = lib.mkOption {
type = lib.types.str;
readOnly = true;
default = "mautrix-discord-registration.service";
description = ''
The registration service that generates the registration file.
Systemd unit (a service or a target) for other services to depend on if they
need to be started after mautrix-discord registration service.
This option is useful as the actual parent unit for all matrix-synapse processes
changes when configuring workers.
'';
};
serviceDependencies = lib.mkOption {
type = lib.types.listOf lib.types.str;
default =
[ cfg.registrationServiceUnit ]
++ (lib.lists.optional config.services.matrix-synapse.enable config.services.matrix-synapse.serviceUnit)
++ (lib.lists.optional config.services.matrix-conduit.enable "matrix-conduit.service")
++ (lib.lists.optional config.services.dendrite.enable "dendrite.service");
defaultText = ''
[ cfg.registrationServiceUnit ] ++
(lib.lists.optional config.services.matrix-synapse.enable config.services.matrix-synapse.serviceUnit) ++
(lib.lists.optional config.services.matrix-conduit.enable "matrix-conduit.service") ++
(lib.lists.optional config.services.dendrite.enable "dendrite.service");
'';
description = ''
List of Systemd services to require and wait for when starting the application service.
'';
};
};
};
config = lib.mkIf cfg.enable {
assertions = [
{
assertion =
cfg.settings.homeserver.domain or "" != "" && cfg.settings.homeserver.address or "" != "";
message = ''
The options with information about the homeserver:
`services.mautrix-discord.settings.homeserver.domain` and
`services.mautrix-discord.settings.homeserver.address` have to be set.
'';
}
{
assertion = cfg.settings.bridge.permissions or { } != { };
message = ''
The option `services.mautrix-discord.settings.bridge.permissions` has to be set.
'';
}
{
assertion = cfg.settings.appservice.id != "";
message = ''
The option `services.mautrix-discord.settings.appservice.id` has to be set.
'';
}
{
assertion = cfg.settings.appservice.bot.username != "";
message = ''
The option `services.mautrix-discord.settings.appservice.bot.username` has to be set.
'';
}
];
users.users.mautrix-discord = {
isSystemUser = true;
group = "mautrix-discord";
extraGroups = [ "mautrix-discord-registration" ];
home = dataDir;
description = "Mautrix-Discord bridge user";
};
users.groups.mautrix-discord = { };
users.groups.mautrix-discord-registration = {
members = lib.lists.optional config.services.matrix-synapse.enable "matrix-synapse";
};
services.matrix-synapse = lib.mkIf cfg.registerToSynapse {
settings.app_service_config_files = [ registrationFile ];
};
systemd.tmpfiles.rules = [
"d ${cfg.dataDir} 770 mautrix-discord mautrix-discord -"
];
systemd.services = {
matrix-synapse = lib.mkIf cfg.registerToSynapse {
serviceConfig.SupplementaryGroups = [ "mautrix-discord-registration" ];
# Make synapse depend on the registration service when auto-registering
wants = [ "mautrix-discord-registration.service" ];
after = [ "mautrix-discord-registration.service" ];
};
mautrix-discord-registration = {
description = "Mautrix-Discord registration generation service";
wantedBy = lib.mkIf cfg.registerToSynapse [ "multi-user.target" ];
before = lib.mkIf cfg.registerToSynapse [ "matrix-synapse.service" ];
path = [
pkgs.yq
pkgs.envsubst
cfg.package
];
script = ''
# substitute the settings file by environment variables
# in this case read from EnvironmentFile
rm -f '${settingsFile}'
old_umask=$(umask)
umask 0177
envsubst \
-o '${settingsFile}' \
-i '${settingsFileUnformatted}'
config_has_tokens=$(yq '.appservice | has("as_token") and has("hs_token")' '${settingsFile}')
registration_already_exists=$([[ -f '${registrationFile}' ]] && echo "true" || echo "false")
echo "There are tokens in the config: $config_has_tokens"
echo "Registration already existed: $registration_already_exists"
# tokens not configured from config/environment file, and registration file
# is already generated, override tokens in config to make sure they are not lost
if [[ $config_has_tokens == "false" && $registration_already_exists == "true" ]]; then
echo "Copying as_token, hs_token from registration into configuration"
yq -sY '.[0].appservice.as_token = .[1].as_token
| .[0].appservice.hs_token = .[1].hs_token
| .[0]' '${settingsFile}' '${registrationFile}' \
> '${settingsFile}.tmp'
mv '${settingsFile}.tmp' '${settingsFile}'
fi
# make sure --generate-registration does not affect config.yaml
cp '${settingsFile}' '${settingsFile}.tmp'
echo "Generating registration file"
mautrix-discord \
--generate-registration \
--config='${settingsFile}.tmp' \
--registration='${registrationFile}'
rm '${settingsFile}.tmp'
# no tokens configured, and new were just generated by generate registration for first time
if [[ $config_has_tokens == "false" && $registration_already_exists == "false" ]]; then
echo "Copying newly generated as_token, hs_token from registration into configuration"
yq -sY '.[0].appservice.as_token = .[1].as_token
| .[0].appservice.hs_token = .[1].hs_token
| .[0]' '${settingsFile}' '${registrationFile}' \
> '${settingsFile}.tmp'
mv '${settingsFile}.tmp' '${settingsFile}'
fi
# make sure --generate-registration does not affect config.yaml
cp '${settingsFile}' '${settingsFile}.tmp'
echo "Generating registration file"
mautrix-discord \
--generate-registration \
--config='${settingsFile}.tmp' \
--registration='${registrationFile}'
rm '${settingsFile}.tmp'
# no tokens configured, and new were just generated by generate registration for first time
if [[ $config_has_tokens == "false" && $registration_already_exists == "false" ]]; then
echo "Copying newly generated as_token, hs_token from registration into configuration"
yq -sY '.[0].appservice.as_token = .[1].as_token
| .[0].appservice.hs_token = .[1].hs_token
| .[0]' '${settingsFile}' '${registrationFile}' \
> '${settingsFile}.tmp'
mv '${settingsFile}.tmp' '${settingsFile}'
fi
# Make sure correct tokens are in the registration file
if [[ $config_has_tokens == "true" || $registration_already_exists == "true" ]]; then
echo "Copying as_token, hs_token from configuration to the registration file"
yq -sY '.[1].as_token = .[0].appservice.as_token
| .[1].hs_token = .[0].appservice.hs_token
| .[1]' '${settingsFile}' '${registrationFile}' \
> '${registrationFile}.tmp'
mv '${registrationFile}.tmp' '${registrationFile}'
fi
umask $old_umask
chown :mautrix-discord-registration '${registrationFile}'
chmod 640 '${registrationFile}'
'';
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
UMask = 27;
User = "mautrix-discord";
Group = "mautrix-discord";
SystemCallFilter = [ "@system-service" ];
ProtectSystem = "strict";
ProtectHome = true;
ReadWritePaths = [ dataDir ];
StateDirectory = "mautrix-discord";
EnvironmentFile = cfg.environmentFile;
};
restartTriggers = [ settingsFileUnformatted ];
};
mautrix-discord = {
description = "Mautrix-Discord, a Matrix-Discord puppeting/relaybot bridge";
wantedBy = [ "multi-user.target" ];
wants = [ "network-online.target" ] ++ cfg.serviceDependencies;
after = [ "network-online.target" ] ++ cfg.serviceDependencies;
path = [
pkgs.lottieconverter
pkgs.ffmpeg-headless
];
serviceConfig = {
Type = "simple";
User = "mautrix-discord";
Group = "mautrix-discord";
PrivateUsers = true;
Restart = "on-failure";
RestartSec = 30;
WorkingDirectory = dataDir;
ExecStart = ''
${lib.getExe cfg.package} \
--config='${settingsFile}'
'';
EnvironmentFile = cfg.environmentFile;
ProtectSystem = "strict";
ProtectHome = true;
ProtectKernelTunables = true;
ProtectKernelModules = true;
ProtectControlGroups = true;
PrivateDevices = true;
PrivateTmp = true;
RestrictSUIDSGID = true;
RestrictRealtime = true;
LockPersonality = true;
ProtectKernelLogs = true;
ProtectHostname = true;
ProtectClock = true;
SystemCallArchitectures = "native";
SystemCallErrorNumber = "EPERM";
SystemCallFilter = "@system-service";
ReadWritePaths = [ cfg.dataDir ];
};
restartTriggers = [ settingsFileUnformatted ];
};
};
meta = {
maintainers = with lib.maintainers; [
mistyttm
];
};
};
}

View File

@ -13,12 +13,12 @@ let
file = pkgs.writeText "rule" (builtins.toJSON cfg);
}
);
in
{
options = {
services.opensnitch = {
enable = lib.mkEnableOption "Opensnitch application firewall";
package = lib.mkPackageOption pkgs "opensnitch" { };
rules = lib.mkOption {
default = { };
@ -192,13 +192,13 @@ in
services.opensnitch.settings = lib.mapAttrs (_: v: lib.mkDefault v) (
builtins.fromJSON (
builtins.unsafeDiscardStringContext (
builtins.readFile "${pkgs.opensnitch}/etc/opensnitchd/default-config.json"
builtins.readFile "${cfg.package}/etc/opensnitchd/default-config.json"
)
)
);
systemd = {
packages = [ pkgs.opensnitch ];
packages = [ cfg.package ];
services.opensnitchd = {
wantedBy = [ "multi-user.target" ];
serviceConfig = {
@ -210,7 +210,7 @@ in
in
[
""
"${pkgs.opensnitch}/bin/opensnitchd --config-file ${format.generate "default-config.json" preparedSettings}"
"${cfg.package}/bin/opensnitchd --config-file ${format.generate "default-config.json" preparedSettings}"
];
};
preStart = lib.mkIf (cfg.rules != { }) (
@ -245,7 +245,7 @@ in
};
tmpfiles.rules = [
"d ${cfg.settings.Rules.Path} 0750 root root - -"
"L+ /etc/opensnitchd/system-fw.json - - - - ${pkgs.opensnitch}/etc/opensnitchd/system-fw.json"
"L+ /etc/opensnitchd/system-fw.json - - - - ${cfg.package}/etc/opensnitchd/system-fw.json"
];
};

View File

@ -230,6 +230,7 @@ in
IOSchedulingPriority = cfg.daemonIOSchedPriority;
LimitNOFILE = 1048576;
Delegate = "yes";
DelegateSubgroup = "supervisor";
};
restartTriggers = [ config.environment.etc."nix/nix.conf".source ];

View File

@ -18,7 +18,10 @@ let
'';
in
{
meta.maintainers = [ maintainers.bachp ];
meta.maintainers = with maintainers; [
bachp
ryan4yin
];
options.services.minio = {
enable = mkEnableOption "Minio Object Storage";

View File

@ -810,6 +810,7 @@ in
matrix-continuwuity = runTest ./matrix/continuwuity.nix;
matrix-synapse = runTest ./matrix/synapse.nix;
matrix-synapse-workers = runTest ./matrix/synapse-workers.nix;
mautrix-discord = runTest ./matrix/mautrix-discord.nix;
mattermost = handleTest ./mattermost { };
mautrix-meta-postgres = runTest ./matrix/mautrix-meta-postgres.nix;
mautrix-meta-sqlite = runTest ./matrix/mautrix-meta-sqlite.nix;

View File

@ -13,6 +13,7 @@ in
maintainers = [
equirosa
SuperSandro2000
ryan4yin
];
};

View File

@ -722,6 +722,10 @@ let
libxml2.bin
libxslt.bin
nixos-artwork.wallpapers.simple-dark-gray-bottom
(nixos-rebuild-ng.override {
withNgSuffix = false;
withReexec = true;
})
ntp
perlPackages.ConfigIniFiles
perlPackages.FileSlurp
@ -1110,7 +1114,7 @@ in
simple = makeInstallerTest "simple" (
simple-test-config
// {
passthru.override = args: makeInstallerTest "simple" simple-test-config // args;
passthru.override = args: makeInstallerTest "simple" (simple-test-config // args);
}
);

View File

@ -0,0 +1,168 @@
{ pkgs, ... }:
let
homeserverUrl = "http://homeserver:8008";
in
{
name = "mautrix-discord";
meta.maintainers = pkgs.mautrix-discord.meta.maintainers;
nodes = {
homeserver =
{ pkgs, ... }:
{
services.matrix-synapse = {
enable = true;
settings = {
server_name = "homeserver";
database.name = "sqlite3";
enable_registration = true;
# don't use this in production, always use some form of verification
enable_registration_without_verification = true;
listeners = [
{
bind_addresses = [ "0.0.0.0" ];
port = 8008;
resources = [
{
"compress" = true;
"names" = [ "client" ];
}
{
"compress" = false;
"names" = [ "federation" ];
}
];
tls = false;
type = "http";
}
];
};
};
services.mautrix-discord = {
enable = true;
registerToSynapse = true; # Enable automatic registration
settings = {
homeserver = {
address = homeserverUrl;
domain = "homeserver";
};
appservice = {
address = "http://homeserver:8009";
port = 8009;
id = "discord";
bot = {
username = "discordbot";
displayname = "Discord bridge bot";
avatar = "mxc://maunium.net/nIdEykemnwdisvHbpxflpDlC";
};
# These will be generated automatically
as_token = "generate";
hs_token = "generate";
database = {
type = "sqlite3";
uri = "file:/var/lib/mautrix-discord/mautrix-discord.db?_txlock=immediate";
};
};
bridge = {
permissions = {
"@alice:homeserver" = "user";
"*" = "relay";
};
};
};
};
networking.firewall.allowedTCPPorts = [
8008
8009
];
};
client =
{ pkgs, ... }:
{
environment.systemPackages = [
(pkgs.writers.writePython3Bin "do_test"
{
libraries = [ pkgs.python3Packages.matrix-nio ];
flakeIgnore = [
"F401" # imported but unused
"E302" # expected 2 blank lines
];
}
''
import sys
import asyncio
from nio import AsyncClient, RoomMessageNotice, RoomCreateResponse
async def message_callback(matrix: AsyncClient, msg: str, _r, e):
print(f"Received message: {msg}")
async def run(homeserver: str):
client = AsyncClient(homeserver, "@test:homeserver")
# Register a new user
response = await client.register("test", "password123")
if not response.transport_response.ok:
print(f"Failed to register: {response}")
return False
# Login
response = await client.login("password123")
if not response.transport_response.ok:
print(f"Failed to login: {response}")
return False
print("Successfully logged in and basic functionality works")
await client.close()
return True
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: do_test <homeserver_url>")
sys.exit(1)
homeserver_url = sys.argv[1]
success = asyncio.run(run(homeserver_url))
sys.exit(0 if success else 1)
''
)
];
};
};
testScript = ''
start_all()
with subtest("wait for homeserver and bridge to be ready"):
homeserver.wait_for_unit("matrix-synapse.service")
homeserver.wait_for_open_port(8008)
homeserver.wait_for_unit("mautrix-discord.service")
homeserver.wait_for_open_port(8009)
with subtest("verify registration file was created"):
homeserver.wait_until_succeeds("test -f /var/lib/mautrix-discord/discord-registration.yaml")
homeserver.succeed("ls -la /var/lib/mautrix-discord/")
with subtest("verify bridge connects to homeserver"):
# Give the bridge a moment to connect
homeserver.sleep(5)
# Check that the bridge is running and listening
homeserver.succeed("systemctl is-active mautrix-discord.service")
homeserver.succeed("netstat -tlnp | grep :8009")
with subtest("test basic matrix functionality"):
client.succeed("do_test ${homeserverUrl} >&2")
'';
}

View File

@ -48,7 +48,10 @@ in
{
name = "minio";
meta = with pkgs.lib.maintainers; {
maintainers = [ bachp ];
maintainers = [
bachp
ryan4yin
];
};
nodes = {

View File

@ -14,14 +14,14 @@
stdenv.mkDerivation (finalAttrs: {
pname = "qpwgraph";
version = "0.9.3";
version = "0.9.4";
src = fetchFromGitLab {
domain = "gitlab.freedesktop.org";
owner = "rncbc";
repo = "qpwgraph";
rev = "v${finalAttrs.version}";
sha256 = "sha256-6aJymZjuUMezEbOosveXyiY7y+XgGk3E8Dd4tb8UyrU=";
sha256 = "sha256-VvOdorj+CpFSI+iyVeMR0enXGO5mLPE8KiaHGuG/KDQ=";
};
nativeBuildInputs = [

View File

@ -8,13 +8,13 @@
}:
mkLibretroCore {
core = "flycast";
version = "0-unstable-2025-06-06";
version = "0-unstable-2025-06-20";
src = fetchFromGitHub {
owner = "flyinghead";
repo = "flycast";
rev = "8f033723a1b3437c8e3c8b42a92331eebe53ed0b";
hash = "sha256-RrWBN8RDAS7RcIOouU3x2Pv/RKrshrmmmCZCeXQ6upk=";
rev = "449d256995de36de0629dd1b97f4d67a0e50c92e";
hash = "sha256-7+Dn7+AUnd3+eEKRMuahaxiEMWTT1uUEP2y0ZgIs81Q=";
fetchSubmodules = true;
};

View File

@ -12,13 +12,13 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "droidcam-obs";
version = "2.3.4";
version = "2.4.0";
src = fetchFromGitHub {
owner = "dev47apps";
repo = "droidcam-obs-plugin";
tag = finalAttrs.version;
sha256 = "sha256-KWMLhddK561xA+EjvoG4tXRW4xoLil31JcTTfppblmA=";
sha256 = "sha256-rA+EMtAeM2LSUqtiYJt0hHZ85aZ+5bvVUUjIG2LC3pc=";
};
preBuild = ''

View File

@ -15,13 +15,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "albert";
version = "0.28.0";
version = "0.28.2";
src = fetchFromGitHub {
owner = "albertlauncher";
repo = "albert";
tag = "v${finalAttrs.version}";
hash = "sha256-ciqCNQD5S7qv9Ph6AgUpFB5Sphv6Eb1LR3Ap3bTd1EE=";
hash = "sha256-FYl/S7+KoQ3kgUQX0hiv8B+AbTbyfmo1GX130G09bZ8=";
fetchSubmodules = true;
};

View File

@ -41,7 +41,10 @@ buildGoModule rec {
homepage = "https://github.com/aliyun/aliyun-cli";
changelog = "https://github.com/aliyun/aliyun-cli/releases/tag/v${version}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ ornxka ];
maintainers = with lib.maintainers; [
ornxka
ryan4yin
];
mainProgram = "aliyun";
};
}

View File

@ -37,6 +37,9 @@ buildGoModule rec {
mainProgram = "aws-iam-authenticator";
changelog = "https://github.com/kubernetes-sigs/aws-iam-authenticator/releases/tag/v${version}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ srhb ];
maintainers = with lib.maintainers; [
srhb
ryan4yin
];
};
}

View File

@ -60,6 +60,7 @@ stdenv.mkDerivation rec {
maintainers = with lib.maintainers; [
khaneliman
rmcgibbo
ryan4yin
];
mainProgram = "btop";
};

View File

@ -91,6 +91,7 @@ buildGoModule {
Br1ght0ne
stepbrobd
techknowlogick
ryan4yin
];
};
}

View File

@ -56,6 +56,7 @@ buildGoModule rec {
bryanasdev000
humancalico
qjoly
ryan4yin
];
mainProgram = "cilium";
};

View File

@ -47,6 +47,7 @@ buildGoModule rec {
maintainers = with maintainers; [
equirosa
SuperSandro2000
ryan4yin
];
mainProgram = "croc";
};

View File

@ -32,13 +32,13 @@
stdenv.mkDerivation rec {
pname = "ddnet";
version = "19.2.1";
version = "19.3";
src = fetchFromGitHub {
owner = "ddnet";
repo = "ddnet";
tag = version;
hash = "sha256-0G0rVqkrIKjSGW7TF218TqakzJxiCzDipLGDzJvgdRg=";
hash = "sha256-8mCkzZPdLFGIlOkMiNDOxiQeEHa+k0BX9PMIPbjmW5k=";
};
cargoDeps = rustPlatform.fetchCargoVendor {

View File

@ -52,6 +52,9 @@ buildGoModule rec {
homepage = "https://github.com/wagoodman/dive";
changelog = "https://github.com/wagoodman/dive/releases/tag/v${version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ SuperSandro2000 ];
maintainers = with lib.maintainers; [
SuperSandro2000
ryan4yin
];
};
}

View File

@ -51,6 +51,7 @@ buildGoModule rec {
maintainers = with lib.maintainers; [
xrelkd
Chili-Man
ryan4yin
];
mainProgram = "eksctl";
};

View File

@ -7,13 +7,13 @@
stdenv.mkDerivation rec {
pname = "exploitdb";
version = "2025-06-14";
version = "2025-06-21";
src = fetchFromGitLab {
owner = "exploit-database";
repo = "exploitdb";
rev = "refs/tags/${version}";
hash = "sha256-znJZK7EhLFg2ImxWqEfvt7Em+M8lAly+oPzrmaGznRU=";
hash = "sha256-6mXku+SW6xmSYxd40Ilis8H/2Ozm6eUecLQHy1xeKtM=";
};
nativeBuildInputs = [ makeWrapper ];

View File

@ -80,6 +80,7 @@ buildGoModule rec {
maintainers = with lib.maintainers; [
bryanasdev000
jlesquembre
ryan4yin
];
mainProgram = "flux";
};

View File

@ -69,6 +69,9 @@ buildGoModule rec {
homepage = "https://github.com/google/go-containerregistry";
license = licenses.asl20;
mainProgram = "crane";
maintainers = with maintainers; [ yurrriq ];
maintainers = with maintainers; [
yurrriq
ryan4yin
];
};
}

View File

@ -82,6 +82,7 @@ buildGoModule rec {
globin
mmahut
emilylange
ryan4yin
];
};
}

View File

@ -2,6 +2,7 @@
lib,
rustPlatform,
fetchFromGitHub,
fetchpatch2,
pkg-config,
installShellFiles,
libxml2,
@ -24,6 +25,16 @@ rustPlatform.buildRustPackage rec {
useFetchCargoVendor = true;
cargoHash = "sha256-WyNActmsHpr5fgN1a3X9ApEACWFVJMVoi4fBvKhGgZ0=";
patches = [
# Fix build with libxml-2.14, remove after next hurl release
# https://github.com/Orange-OpenSource/hurl/pull/3977
(fetchpatch2 {
name = "fix-libxml_2_14";
url = "https://github.com/Orange-OpenSource/hurl/commit/7c7b410c3017aeab0dfc74a6144e4cb8e186a10a.patch?full_index=1";
hash = "sha256-XjnCRIMwzfgUMIhm6pQ90pzA+c2U0EuhyvLUZDsI2GI=";
})
];
nativeBuildInputs = [
pkg-config
installShellFiles

View File

@ -52,7 +52,10 @@ stdenvNoCC.mkDerivation (finalAttrs: {
homepage = "https://github.com/Gustash/hyprshot";
description = "Hyprshot is an utility to easily take screenshots in Hyprland using your mouse";
license = licenses.gpl3Only;
maintainers = with maintainers; [ Cryolitia ];
maintainers = with maintainers; [
Cryolitia
ryan4yin
];
mainProgram = "hyprshot";
platforms = hyprland.meta.platforms;
};

View File

@ -57,6 +57,7 @@ buildGoModule rec {
maintainers = with maintainers; [
bryanasdev000
veehaitch
ryan4yin
];
};
}

View File

@ -116,6 +116,7 @@ rustPlatform.buildRustPackage rec {
maintainers = with lib.maintainers; [
xrelkd
jk
ryan4yin
];
mainProgram = "just";
};

View File

@ -76,6 +76,7 @@ buildGoModule rec {
bryanasdev000
qjoly
devusb
ryan4yin
];
};
}

View File

@ -44,8 +44,17 @@ stdenv.mkDerivation (finalAttrs: {
(lib.cmakeBool "WITH_SYSTEMD" withSystemd)
(lib.cmakeBool "BUILD_SHARED_LIBS" enableShared)
(lib.cmakeBool "WITH_EXAMPLES" buildExamples)
(lib.cmakeBool "WITH_TESTS" finalAttrs.doCheck)
];
# This test checks if using the **installed** headers works.
# As it doesn't set the include paths correctly, and we have nixpkgs-review to check if
# packages continue to build, patching it would serve no purpose, so we can just remove the test entirely.
postPatch = ''
substituteInPlace CMakeLists.txt \
--replace-fail 'add_test(NAME includetest COMMAND' '# add_test(NAME includetest COMMAND'
'';
buildInputs =
[
libjpeg
@ -61,6 +70,8 @@ stdenv.mkDerivation (finalAttrs: {
zlib
];
doCheck = enableShared;
meta = with lib; {
description = "VNC server library";
homepage = "https://libvnc.github.io/";

View File

@ -1,6 +1,6 @@
{
stdenvNoCC,
fetchzip,
fetchFromGitLab,
lib,
python3,
rdfind,
@ -22,11 +22,13 @@ let
in
stdenvNoCC.mkDerivation rec {
pname = "linux-firmware";
version = "20250613";
version = "20250621"; # not a real tag, but the current stable tag breaks some AMD GPUs entirely
src = fetchzip {
url = "https://cdn.kernel.org/pub/linux/kernel/firmware/linux-firmware-${version}.tar.xz";
hash = "sha256-qygwQNl99oeHiCksaPqxxeH+H7hqRjbqN++Hf9X+gzs=";
src = fetchFromGitLab {
owner = "kernel-firmware";
repo = "linux-firmware";
rev = "49c833a10ad96a61a218d28028aed20aeeac124c";
hash = "sha256-Pz/k/ol0NRIHv/AdridwoBPDLsd0rfDAj31Paq4mPpU=";
};
postUnpack = ''
@ -57,5 +59,4 @@ stdenvNoCC.mkDerivation rec {
maintainers = with maintainers; [ fpletz ];
priority = 6; # give precedence to kernel firmware
};
passthru.updateScript = ./update.sh;
}

View File

@ -1,10 +0,0 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p git -p common-updater-scripts
set -eu -o pipefail
repo="https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git"
revision="$(git ls-remote --refs --tags --sort refname "$repo" | tail -n1 | cut -f2 | cut -d '/' -f3)"
update-source-version linux-firmware "$revision"

View File

@ -17,18 +17,18 @@
rustPlatform.buildRustPackage rec {
pname = "lux-cli";
version = "0.7.1";
version = "0.7.3";
src = fetchFromGitHub {
owner = "nvim-neorocks";
repo = "lux";
tag = "v0.7.1";
hash = "sha256-x5Bs/Zq0gfJAC3VFKG1hCg95IZ0qpgf8kBfFccP5HgU=";
tag = "v0.7.3";
hash = "sha256-d/WznA6BRduQJOFlE+ll1H7XtGXs9BPrhAKST09Lh0s=";
};
buildAndTestSubdir = "lux-cli";
useFetchCargoVendor = true;
cargoHash = "sha256-lGQToe1nM6tjcoxYy94wiGMevm3/B7MD6NOIX61GpMA=";
cargoHash = "sha256-B1Fu5KWLL/XuUvIROPh0huLw4/OHe/c+LC0/gRFpBnc=";
nativeInstallCheckInputs = [
versionCheckHook

View File

@ -36,7 +36,10 @@ buildGoModule rec {
meta = with lib; {
homepage = "https://github.com/minio/mc";
description = "Replacement for ls, cp, mkdir, diff and rsync commands for filesystems and object storage";
maintainers = with maintainers; [ bachp ];
maintainers = with maintainers; [
bachp
ryan4yin
];
mainProgram = "mc";
license = licenses.asl20;
};

View File

@ -52,6 +52,7 @@ stdenv.mkDerivation (finalAttrs: {
pSub
rodrgz
defelo
ryan4yin
];
inherit (zig_0_14.meta) platforms;
mainProgram = "ncdu";

View File

@ -36,6 +36,11 @@ rustPlatform.buildRustPackage (finalAttrs: {
hash = "sha256-z4viQZLgC2bIJ3VrzQnR+q2F3gAOEQpU1H5xHtX/2fs=";
};
outputs = [
"out"
"doc"
];
postPatch = ''
patchShebangs resources/niri-session
substituteInPlace resources/niri.service \
@ -78,6 +83,9 @@ rustPlatform.buildRustPackage (finalAttrs: {
postInstall =
''
install -Dm0644 README.md resources/default-config.kdl -t $doc/share/doc/niri
mv wiki $doc/share/doc/niri/wiki
install -Dm0644 resources/niri.desktop -t $out/share/wayland-sessions
''
+ lib.optionalString withDbus ''

View File

@ -7,13 +7,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "notepad-next";
version = "0.11";
version = "0.12";
src = fetchFromGitHub {
owner = "dail8859";
repo = "NotepadNext";
tag = "v${finalAttrs.version}";
hash = "sha256-qpJXby355iSyAGzj19jJJFmFkKeBRgOGod2rrZJqU9Y=";
hash = "sha256-YD4tIPh5iJpbcDMZk334k2AV9jTVWCSGP34Mj2x0cJ0=";
# External dependencies - https://github.com/dail8859/NotepadNext/issues/135
fetchSubmodules = true;
};

View File

@ -18,15 +18,15 @@
addDriverRunpath,
}:
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "openmm";
version = "8.2.0";
version = "8.3.0";
src = fetchFromGitHub {
owner = "openmm";
repo = "openmm";
rev = version;
hash = "sha256-p0zjr8ONqGK4Vbnhljt16DeyeZ0bR1kE+YdiIlw/1L0=";
rev = finalAttrs.version;
hash = "sha256-wXk5s6OascFWjHs4WpxGU9TcX0gSiOZ3BRusIH1NjpI=";
};
# "This test is stochastic and may occasionally fail". It does.
@ -128,4 +128,4 @@ stdenv.mkDerivation rec {
platforms = platforms.linux;
maintainers = [ maintainers.sheepforce ];
};
}
})

View File

@ -3,23 +3,21 @@
stdenvNoCC,
fetchFromGitHub,
gtk3,
breeze-icons,
elementary-icon-theme,
kdePackages,
hicolor-icon-theme,
papirus-folders,
color ? null,
withElementary ? false,
gitUpdater,
}:
stdenvNoCC.mkDerivation rec {
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "papirus-icon-theme";
version = "20250501";
src = fetchFromGitHub {
owner = "PapirusDevelopmentTeam";
repo = pname;
rev = version;
repo = "papirus-icon-theme";
tag = finalAttrs.version;
hash = "sha256-KbUjHmNzaj7XKj+MOsPM6zh2JI+HfwuXvItUVAZAClk=";
};
@ -28,14 +26,13 @@ stdenvNoCC.mkDerivation rec {
papirus-folders
];
propagatedBuildInputs =
[
breeze-icons
hicolor-icon-theme
]
++ lib.optional withElementary [
elementary-icon-theme
];
propagatedBuildInputs = [
kdePackages.breeze-icons
hicolor-icon-theme
];
# breeze-icons propagates qtbase
dontWrapQtApps = true;
dontDropIconThemeCache = true;
@ -43,12 +40,10 @@ stdenvNoCC.mkDerivation rec {
runHook preInstall
mkdir -p $out/share/icons
mv ${lib.optionalString withElementary "{,e}"}Papirus* $out/share/icons
mv Papirus* $out/share/icons
for theme in $out/share/icons/*; do
${lib.optionalString (
color != null
) "${papirus-folders}/bin/papirus-folders -t $theme -o -C ${color}"}
${lib.optionalString (color != null) "papirus-folders -t $theme -o -C ${color}"}
gtk-update-icon-cache --force $theme
done
@ -57,15 +52,15 @@ stdenvNoCC.mkDerivation rec {
passthru.updateScript = gitUpdater { };
meta = with lib; {
meta = {
description = "Pixel perfect icon theme for Linux";
homepage = "https://github.com/PapirusDevelopmentTeam/papirus-icon-theme";
license = licenses.gpl3Only;
license = lib.licenses.gpl3Only;
# darwin gives hash mismatch in source, probably because of file names differing only in case
platforms = platforms.linux;
maintainers = with maintainers; [
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [
romildo
moni
];
};
}
})

View File

@ -11,11 +11,11 @@
stdenv.mkDerivation (finalAttrs: {
pname = "passt";
version = "2025_05_03.587980c";
version = "2025_06_11.0293c6f";
src = fetchurl {
url = "https://passt.top/passt/snapshot/passt-${finalAttrs.version}.tar.gz";
hash = "sha256-ussvShWxhR6ScBYiCJG0edrqS+W+74DSlsDRS1GCByA=";
hash = "sha256-ovkFQlUa5gLYwCpNjwfGVJ055aDKCXIZou/t4pf6q5o=";
};
separateDebugInfo = true;

View File

@ -15,14 +15,14 @@
python3Packages.buildPythonApplication rec {
pname = "pmbootstrap";
version = "3.4.2";
version = "3.5.0";
pyproject = true;
src = fetchFromGitLab {
owner = "postmarketOS";
repo = "pmbootstrap";
tag = version;
hash = "sha256-5N8yAd/1gSzHP2wXpqZb+LpylQ/LYspJ+YaY2YaWCSs=";
hash = "sha256-wdJl7DrSm1Jht0KEqZ9+qjqlkE+Y6oBdzEHTCgIGJ84=";
domain = "gitlab.postmarketos.org";
};

View File

@ -1,22 +1,24 @@
{
lib,
stdenv,
fetchFromGitHub,
python3,
python3Packages,
}:
stdenv.mkDerivation rec {
python3Packages.buildPythonApplication rec {
pname = "psudohash";
version = "1.0.2";
version = "1.1.0";
pyproject = false;
src = fetchFromGitHub {
owner = "t3l3machus";
repo = "psudohash";
tag = "v${version}";
hash = "sha256-l/Rp9405Wf6vh85PFrRTtTLJE7GPODowseNqEw42J18=";
hash = "sha256-I/vHQraGmIWmx/v+szL5ZQJpjkSBaCpEx0r4Mc6FgKA=";
};
buildInputs = [ python3 ];
dependencies = with python3Packages; [
tqdm
];
installPhase = ''
runHook preInstall

View File

@ -54,6 +54,7 @@ let
bot-wxt1221
fee1-dead
prince213
ryan4yin
];
};
in

View File

@ -24,15 +24,15 @@ let
."${stdenv.hostPlatform.system}" or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
hash =
{
x64-linux_hash = "sha256-3Oir/a5TwaCraYierE6pPPZWYObNOD6+V7olw/HmckM=";
arm64-linux_hash = "sha256-B/Or5hdqMxqQEmBULG+Z1JqlL9Kdk5M6SBdjhbfMBZA=";
x64-osx_hash = "sha256-FYfX50pomjlB/oGVeIHqYvZ00S1SSgBaVB7R8150rvY=";
x64-linux_hash = "sha256-hCqxH6xPLhA+V7reqsHi1EY2sU3HJ6ESMJiiWXrcUUE=";
arm64-linux_hash = "sha256-7NpH32tkEOYVyfwIBq9LCKAo0IQ1IehYfKi+qiBzf8o=";
x64-osx_hash = "sha256-ypzOWXxtzvOTgTmU7pQ1cS+FcyNCOo5R2Z4l5Mk+4wA=";
}
."${arch}-${os}_hash";
in
stdenv.mkDerivation rec {
pname = "readarr";
version = "0.4.17.2801";
version = "0.4.18.2805";
src = fetchurl {
url = "https://github.com/Readarr/Readarr/releases/download/v${version}/Readarr.develop.${version}.${os}-core-${arch}.tar.gz";

View File

@ -65,9 +65,10 @@ buildGoModule rec {
description = "Backup program that is fast, efficient and secure";
platforms = platforms.linux ++ platforms.darwin;
license = licenses.bsd2;
maintainers = [
maintainers.mbrgm
maintainers.dotlambda
maintainers = with maintainers; [
mbrgm
dotlambda
ryan4yin
];
mainProgram = "restic";
};

View File

@ -96,7 +96,7 @@ buildDotnetModule rec {
"Ryujinx"
];
makeWrapperArgs = [
makeWrapperArgs = lib.optional stdenv.hostPlatform.isLinux [
# Without this Ryujinx fails to start on wayland. See https://github.com/Ryujinx/Ryujinx/issues/2714
"--set SDL_VIDEODRIVER x11"
];

View File

@ -32,7 +32,10 @@ rustPlatform.buildRustPackage rec {
homepage = "https://github.com/ms-jpq/sad";
changelog = "https://github.com/ms-jpq/sad/releases/tag/v${version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ fab ];
maintainers = with lib.maintainers; [
fab
ryan4yin
];
mainProgram = "sad";
};
}

View File

@ -63,7 +63,10 @@ buildGoModule rec {
agpl3Only
unfreeRedistributable
]; # Software is AGPLv3, web UI is unfree
maintainers = with lib.maintainers; [ thenonameguy ];
maintainers = with lib.maintainers; [
thenonameguy
ryan4yin
];
mainProgram = "sftpgo";
};
}

View File

@ -10,12 +10,12 @@
buildGoModule rec {
pname = "shopware-cli";
version = "0.6.8";
version = "0.6.10";
src = fetchFromGitHub {
repo = "shopware-cli";
owner = "FriendsOfShopware";
tag = version;
hash = "sha256-vLy3HWHfsUaf80iuBUYYAP87wJNke8/h48r3Db18kFQ=";
hash = "sha256-kzf54rPac/OYmmqEAoQPWFjtzMj0FOGOMoxdX2zlX8s=";
};
nativeBuildInputs = [
@ -27,7 +27,7 @@ buildGoModule rec {
dart-sass
];
vendorHash = "sha256-pidR7b4k3PG9FVHJ5oWz2nYtCZwE8SlBjQqqvyFPNzM=";
vendorHash = "sha256-gw0O9cLRkCo8FMlUSgVsL7c5xSSP7sAcwL/WUAy6MiI=";
postInstall = ''
installShellCompletion --cmd shopware-cli \

View File

@ -51,6 +51,9 @@
libpulseaudio,
xdg-utils,
wayland,
# command line arguments which are always set e.g "--password-store=kwallet6"
commandLineArgs,
}:
{
@ -255,6 +258,7 @@ stdenv.mkDerivation rec {
gappsWrapperArgs+=(
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}"
--suffix PATH : ${lib.makeBinPath [ xdg-utils ]}
--add-flags ${lib.escapeShellArg commandLineArgs}
)
# Fix the desktop link

View File

@ -1,7 +1,11 @@
{ stdenv, callPackage }:
{
stdenv,
callPackage,
commandLineArgs ? "",
}:
if stdenv.hostPlatform.system == "aarch64-linux" then
callPackage ./signal-desktop-aarch64.nix { }
callPackage ./signal-desktop-aarch64.nix { inherit commandLineArgs; }
else if stdenv.hostPlatform.isDarwin then
callPackage ./signal-desktop-darwin.nix { }
else
callPackage ./signal-desktop.nix { }
callPackage ./signal-desktop.nix { inherit commandLineArgs; }

View File

@ -1,7 +1,7 @@
{ callPackage }:
callPackage ./generic.nix { } {
{ callPackage, commandLineArgs }:
callPackage ./generic.nix { inherit commandLineArgs; } {
pname = "signal-desktop-bin";
version = "7.55.0";
version = "7.58.0";
libdir = "usr/lib64/signal-desktop";
bindir = "usr/bin";
@ -10,6 +10,6 @@ callPackage ./generic.nix { } {
bsdtar -xf $downloadedFile -C "$out"
'';
url = "https://download.copr.fedorainfracloud.org/results/useidel/signal-desktop/fedora-42-aarch64/09073923-signal-desktop/signal-desktop-7.55.0-1.fc42.aarch64.rpm";
hash = "sha256-rRt2hYyj6kyN0RCupy+hpRJuzq0aaUzP2tsVr2Qd5V4=";
url = "https://download.copr.fedorainfracloud.org/results/useidel/signal-desktop/fedora-42-aarch64/09183198-signal-desktop/signal-desktop-7.58.0-1.fc42.aarch64.rpm";
hash = "sha256-0Ix+1SdvmKLVbtGzbjUupvVzdWAJFNQ6sSAIt+T9fHo=";
}

View File

@ -6,11 +6,11 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "signal-desktop-bin";
version = "7.55.0";
version = "7.58.0";
src = fetchurl {
url = "https://updates.signal.org/desktop/signal-desktop-mac-universal-${finalAttrs.version}.dmg";
hash = "sha256-9PD4SDTACjKSBqIdv3CFtKhRKA5ugbQe2AcWA4hFoqs=";
hash = "sha256-yOPYG9bCSCIE1L8RgEXCy6pJUHONBh9SpPY4WDfZEho=";
};
sourceRoot = ".";

View File

@ -1,12 +1,12 @@
{ callPackage }:
callPackage ./generic.nix { } rec {
{ callPackage, commandLineArgs }:
callPackage ./generic.nix { inherit commandLineArgs; } rec {
pname = "signal-desktop-bin";
version = "7.55.0";
version = "7.58.0";
libdir = "opt/Signal";
bindir = libdir;
extractPkg = "dpkg-deb -x $downloadedFile $out";
url = "https://updates.signal.org/desktop/apt/pool/s/signal-desktop/signal-desktop_${version}_amd64.deb";
hash = "sha256-uc623M/GiIfED1mTFnXUggnFdvDBmngrsdTIlq6QxqM=";
hash = "sha256-zZ63AE+qb0lrGtGUtU4FV6pHDO2DUV2vknz3a4+f4aA=";
}

View File

@ -92,6 +92,7 @@ buildGoModule rec {
maintainers = with maintainers; [
lewo
developer-guy
ryan4yin
];
teams = [ teams.podman ];
license = licenses.asl20;

View File

@ -57,7 +57,7 @@ stdenv.mkDerivation rec {
homepage = "http://www.dest-unreach.org/socat/";
platforms = platforms.unix;
license = with licenses; [ gpl2Only ];
maintainers = [ ];
maintainers = with maintainers; [ ryan4yin ];
mainProgram = "socat";
};
}

View File

@ -7,17 +7,17 @@
rustPlatform.buildRustPackage rec {
pname = "spytrap-adb";
version = "0.3.4";
version = "0.3.5";
src = fetchFromGitHub {
owner = "spytrap-org";
repo = "spytrap-adb";
tag = "v${version}";
hash = "sha256-Yqa+JmqYCmy9ehxmRebPNlU5U2RPHtnHDHiqSg8EvAo=";
hash = "sha256-t5MNgsuH5FVEjUP9FFxbjXs5BVim0ZyfNKUTQOjKpqg=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-hXDxo0b2nJbPyo99Qc39LM0P41SDbyfadHLIRrbQdj0=";
cargoHash = "sha256-VoUzAHTxJLeyi60ftuOkI6PAuLUsSsQSUjk9rcGz86A=";
env.SPYTRAP_ADB_BINARY = lib.getExe' android-tools "adb";

View File

@ -74,6 +74,7 @@ buildGoModule rec {
maintainers = with lib.maintainers; [
amarshall
mbaillie
ryan4yin
];
};
}

View File

@ -17,13 +17,13 @@ stdenv.mkDerivation (finalAttrs: {
pname = "sudo";
# be sure to check if nixos/modules/security/sudo.nix needs updating when bumping
# e.g. links to man pages, value constraints etc.
version = "1.9.16p2";
version = "1.9.17";
__structuredAttrs = true;
src = fetchurl {
url = "https://www.sudo.ws/dist/sudo-${finalAttrs.version}.tar.gz";
hash = "sha256-l2qlbT47KnVZMweGQoit23SMnBNuJdlanMaZqvp3I5w=";
hash = "sha256-PyEsadU01YIrSS0JmrsCpZP5HKmfWv3ly5vT4dza0Gk=";
};
prePatch = ''

View File

@ -60,7 +60,10 @@ stdenv.mkDerivation rec {
'';
license = licenses.mit;
mainProgram = "swaybg";
maintainers = with maintainers; [ primeos ];
maintainers = with maintainers; [
primeos
ryan4yin
];
platforms = platforms.linux;
};
}

View File

@ -12,7 +12,7 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "sydbox";
version = "3.35.1";
version = "3.35.2";
outputs = [
"out"
@ -24,11 +24,11 @@ rustPlatform.buildRustPackage (finalAttrs: {
owner = "Sydbox";
repo = "sydbox";
tag = "v${finalAttrs.version}";
hash = "sha256-EfsL8UEZdWRYqQ5QymteUBxtabfrHxq3WU4MMqsXWAg=";
hash = "sha256-n3mvzYXb965eUWNJ5iHezqqAZj6v05gj092osYZuk5s=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-ckeOk4/fpJ9J8JV/NT0D/0jXUOt4ub+m+6ZBUpBEs08=";
cargoHash = "sha256-D0lUkiARl0QL2OsojaJqsACn2fmN9x8Jp7mZzyRjyWY=";
nativeBuildInputs = [
mandoc

View File

@ -224,6 +224,7 @@ buildGoModule {
jk
mfrw
pyrox0
ryan4yin
];
};
}

View File

@ -9,7 +9,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "tbb";
version = "2021.13.0";
version = "2021.12.0";
outputs = [
"out"
@ -20,7 +20,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "oneapi-src";
repo = "oneTBB";
tag = "v${finalAttrs.version}";
hash = "sha256-ZoUzY71SweVQ8/1k09MNSXiEqab6Ae+QTbxORnar9JU=";
hash = "sha256-yG/Fs+3f9hNKzZ8le+W7+JDZk9hMzPsVAzbq0yTcUTc=";
};
nativeBuildInputs = [

View File

@ -47,6 +47,7 @@ rustPlatform.buildRustPackage rec {
davidak
newam
mfrw
ryan4yin
];
license = with licenses; [
asl20

View File

@ -24,6 +24,6 @@ buildGoModule rec {
mainProgram = "terraformer";
homepage = "https://github.com/GoogleCloudPlatform/terraformer";
license = licenses.asl20;
maintainers = [ ];
maintainers = with maintainers; [ ryan4yin ];
};
}

View File

@ -70,6 +70,9 @@ buildGoModule rec {
description = "Platform for building proxies to bypass network restrictions";
mainProgram = "v2ray";
license = with lib.licenses; [ mit ];
maintainers = with lib.maintainers; [ servalcatty ];
maintainers = with lib.maintainers; [
servalcatty
ryan4yin
];
};
}

View File

@ -21,14 +21,14 @@
python3Packages.buildPythonApplication rec {
pname = "waydroid";
version = "1.5.1";
version = "1.5.2";
format = "other";
src = fetchFromGitHub {
owner = "waydroid";
repo = "waydroid";
tag = version;
hash = "sha256-G/JQR1C4osbZDUQSqLu48C468W6f2SeNkogVEiGhnmA=";
hash = "sha256-wDLnkHcVdHqjaR1Sfu+bhfZO2nfHadG3LgJtYJw6bsQ=";
};
patches = [

View File

@ -92,6 +92,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
abbe
pyrox0
matthiasbeyer
ryan4yin
];
mainProgram = "zellij";
};

View File

@ -50,6 +50,7 @@ rustPlatform.buildRustPackage rec {
cole-h
SuperSandro2000
matthiasbeyer
ryan4yin
];
mainProgram = "zoxide";
};

View File

@ -0,0 +1,21 @@
From f702c387e6940fab3801d7562a668b974a2b3a8f Mon Sep 17 00:00:00 2001
From: Audrey Dutcher <audrey@rhelmot.io>
Date: Fri, 30 May 2025 12:29:54 -0700
Subject: [PATCH] add d_fdopendir configuration
---
cnf/configure_func.sh | 1 +
1 file changed, 1 insertion(+)
diff --git a/cnf/configure_func.sh b/cnf/configure_func.sh
index 4c13e4c..b24fe03 100644
--- a/cnf/configure_func.sh
+++ b/cnf/configure_func.sh
@@ -83,6 +83,7 @@ checkfunc d_fchmodat 'fchmodat' "0,NULL,0,0" 'unistd.h sys/stat.h'
checkfunc d_fchown 'fchown' "0,0,0" 'unistd.h'
checkfunc d_fcntl 'fcntl' "0,0" 'unistd.h fcntl.h'
checkfunc d_fdclose 'fdclose' "NULL,NULL" 'stdio.h'
+checkfunc d_fdopendir 'fdopendir' "0" 'dirent.h'
checkfunc d_ffs 'ffs' "0" 'strings.h'
checkfunc d_ffsl 'ffsl' "0" 'strings.h'
checkfunc d_fgetpos 'fgetpos' "NULL, 0" 'stdio.h'

View File

@ -317,15 +317,20 @@ stdenv.mkDerivation (
};
}
// lib.optionalAttrs crossCompiling rec {
crossVersion = "1.6";
crossVersion = "1.6.2";
perl-cross-src = fetchFromGitHub {
name = "perl-cross-${crossVersion}";
owner = "arsv";
repo = "perl-cross";
rev = crossVersion;
sha256 = "sha256-TVDLxw8ctl64LSfLfB4/WLYlSTO31GssSzmdVfqkBmg=";
hash = "sha256-mG9ny+eXGBL4K/rXqEUPSbar+4Mq4IaQrGRFIHIyAAw=";
};
patches = [
# fixes build failure due to missing d_fdopendir/HAS_FDOPENDIR configure option
# https://github.com/arsv/perl-cross/pull/159
./cross-fdopendir.patch
];
depsBuildBuild = [
buildPackages.stdenv.cc

View File

@ -5,6 +5,7 @@
gmp,
mpfr,
ntl,
windows,
autoconf,
automake,
gettext,
@ -13,7 +14,7 @@
blas,
lapack,
withBlas ? true,
withNtl ? true,
withNtl ? !ntl.meta.broken,
}:
assert
@ -49,6 +50,9 @@ stdenv.mkDerivation rec {
]
++ lib.optionals withNtl [
ntl
]
++ lib.optionals stdenv.hostPlatform.isMinGW [
windows.mingw_w64_pthreads
];
# We're not using autoreconfHook because flint's bootstrap
@ -79,7 +83,7 @@ stdenv.mkDerivation rec {
license = licenses.lgpl3Plus;
maintainers = with maintainers; [ smasher164 ];
teams = [ teams.sage ];
platforms = platforms.unix;
platforms = platforms.all;
homepage = "https://www.flintlib.org/";
downloadPage = "https://www.flintlib.org/downloads.html";
};

View File

@ -63,7 +63,7 @@ stdenv.mkDerivation {
to provide scripting to end users.
'';
homepage = "http://www.mozilla.org/rhino/";
homepage = "https://rhino.github.io/";
license = with licenses; [
mpl11 # or

View File

@ -32,11 +32,11 @@ assert (ch4backend.pname == "ucx" || ch4backend.pname == "libfabric");
stdenv.mkDerivation rec {
pname = "mpich";
version = "4.3.0";
version = "4.3.1";
src = fetchurl {
url = "https://www.mpich.org/static/downloads/${version}/mpich-${version}.tar.gz";
hash = "sha256-XgQTKYStg8q5zFP3YHLSte9abSSwqf+QR6j/lhIbzGM=";
hash = "sha256-rMEcsr3Glnjci7p0fCSigjPFhZb4HwN4W/K3u3oO99w=";
};
patches = [

View File

@ -17,7 +17,7 @@
buildPythonPackage rec {
pname = "djangocms-alias";
version = "2.0.3";
version = "2.0.4";
pyproject = true;
disabled = pythonOlder "3.9";
@ -26,7 +26,7 @@ buildPythonPackage rec {
owner = "django-cms";
repo = "djangocms-alias";
tag = version;
hash = "sha256-q5iNTnoPto7jgxF/46I0oA8NYFBbDafsRUFmKMFoQM4=";
hash = "sha256-0lIhPgI+HbAKX9wEpZ/v40OHvN6WWK9ehFxIcpzdcq8=";
};
build-system = [ setuptools ];
@ -59,7 +59,7 @@ buildPythonPackage rec {
meta = {
description = "Lean enterprise content management powered by Django";
homepage = "https://django-cms.org";
changelog = "https://github.com/django-cms/django-cms/releases/tag/${src.tag}";
changelog = "https://github.com/django-cms/djangocms-alias/releases/tag/${src.tag}";
license = lib.licenses.bsd3;
maintainers = [ lib.maintainers.onny ];
};

View File

@ -16,24 +16,24 @@
buildPythonPackage rec {
pname = "doc8";
version = "1.1.2";
format = "pyproject";
version = "2.0.0";
pyproject = true;
disabled = pythonOlder "3.7";
disabled = pythonOlder "3.10";
src = fetchPypi {
inherit pname version;
hash = "sha256-EiXzAUThzJfjiNuvf+PpltKJdHOlOm2uJo3d4hw1S5g=";
hash = "sha256-EmetMnWJcfvPmRRCQXo5Nce8nlJVDnNiLg5WulXqHUA=";
};
nativeBuildInputs = [
build-system = [
setuptools-scm
wheel
];
buildInputs = [ pbr ];
propagatedBuildInputs = [
dependencies = [
docutils
chardet
stevedore
@ -43,16 +43,14 @@ buildPythonPackage rec {
nativeCheckInputs = [ pytestCheckHook ];
pythonRelaxDeps = [ "docutils" ];
pythonImportsCheck = [ "doc8" ];
meta = with lib; {
meta = {
description = "Style checker for Sphinx (or other) RST documentation";
mainProgram = "doc8";
homepage = "https://github.com/pycqa/doc8";
changelog = "https://github.com/PyCQA/doc8/releases/tag/v${version}";
license = licenses.asl20;
maintainers = with maintainers; [ onny ];
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ onny ];
};
}

View File

@ -2,34 +2,29 @@
lib,
buildPythonPackage,
fetchFromGitHub,
future,
glibcLocales,
lxml,
unittestCheckHook,
pytestCheckHook,
}:
buildPythonPackage rec {
pname = "junitparser";
version = "2.8.0";
version = "3.2.0";
format = "setuptools";
src = fetchFromGitHub {
owner = "weiwei";
repo = "junitparser";
rev = version;
hash = "sha256-rhDP05GSWT4K6Z2ip8C9+e3WbvBJOwP0vctvANBs7cw=";
hash = "sha256-efP9t5eto6bcjk33wpJmunLlPH7wUwAa6/OjjYG/fgM=";
};
propagatedBuildInputs = [ future ];
nativeCheckInputs = [
unittestCheckHook
pytestCheckHook
lxml
glibcLocales
];
unittestFlagsArray = [ "-v" ];
meta = with lib; {
description = "Manipulates JUnit/xUnit Result XML files";
mainProgram = "junitparser";

View File

@ -11,7 +11,7 @@
buildPythonPackage rec {
pname = "litemapy";
version = "0.10.0b0";
version = "0.11.0b0";
pyproject = true;
build-system = [ setuptools ];
@ -19,7 +19,7 @@ buildPythonPackage rec {
owner = "SmylerMC";
repo = "litemapy";
rev = "v${version}";
hash = "sha256-mGRnrFfrg0VD9pXs0WOuiP6QnYyu0Jbv/bqCWtkOie0=";
hash = "sha256-jqJYiggAs/JA+CJ35HzpsIQA/5p8PRFkbmPlwJvTI28=";
};
propagatedBuildInputs = [
@ -34,6 +34,9 @@ buildPythonPackage rec {
homepage = "https://github.com/SmylerMC/litemapy";
changelog = "https://github.com/SmylerMC/litemapy/blob/${src.rev}/CHANGELOG.md";
license = licenses.gpl3Only;
maintainers = with maintainers; [ gdd ];
maintainers = with maintainers; [
gdd
kuflierl
];
};
}

View File

@ -11,14 +11,14 @@
buildPythonPackage rec {
pname = "pdbfixer";
version = "1.10";
version = "1.11";
pyproject = true;
src = fetchFromGitHub {
owner = "openmm";
repo = "pdbfixer";
tag = "v${version}";
hash = "sha256-7bg/i7nhbBw/DCc7Rabt5pwUUPF27Iiy2dMQnV6GTiM=";
hash = "sha256-Xk3m2w1p3Wu4g6qKGOH679wkKT0LKZLgGn/ARn219fQ=";
};
nativeBuildInputs = [
@ -48,6 +48,10 @@ buildPythonPackage rec {
"test_mutate_multiple_copies_of_chain_A"
"test_pdbid"
"test_url"
"test_charge_and_solvate"
"test_download_template"
"test_nonstandard"
"test_leaving_atoms"
];
pythonImportsCheck = [ "pdbfixer" ];

View File

@ -10,6 +10,7 @@
pulseaudio,
pytest-asyncio,
pytest-lazy-fixture,
pytest-rerunfailures,
pytestCheckHook,
python-dateutil,
qtile,
@ -20,14 +21,14 @@
buildPythonPackage rec {
pname = "qtile-extras";
version = "0.31.0";
version = "0.32.0";
pyproject = true;
src = fetchFromGitHub {
owner = "elParaguayo";
repo = "qtile-extras";
tag = "v${version}";
hash = "sha256-87xdSw4JKQyb/jpfTUkFDjHvKgPKzu+rKLGeaAzP8NI=";
hash = "sha256-NMbgSStXJV8fVtula1cyIwFlD8WrO8kBnOphDxbig04=";
};
build-system = [ setuptools-scm ];
@ -41,6 +42,7 @@ buildPythonPackage rec {
pulseaudio
pytest-asyncio
pytest-lazy-fixture
pytest-rerunfailures
pytestCheckHook
python-dateutil
qtile
@ -87,7 +89,7 @@ buildPythonPackage rec {
meta = with lib; {
description = "Extra modules and widgets for the Qtile tiling window manager";
homepage = "https://github.com/elParaguayo/qtile-extras";
changelog = "https://github.com/elParaguayo/qtile-extras/blob/${src.rev}/CHANGELOG";
changelog = "https://github.com/elParaguayo/qtile-extras/blob/${src.tag}/CHANGELOG";
license = licenses.mit;
maintainers = with maintainers; [ arjan-s ];
};

View File

@ -35,14 +35,14 @@
buildPythonPackage rec {
pname = "qtile";
version = "0.31.0";
version = "0.32.0";
pyproject = true;
src = fetchFromGitHub {
owner = "qtile";
repo = "qtile";
tag = "v${version}";
hash = "sha256-aBVIkyR906+vSLDNxvkmWu6DBujZHErSi+aZPVMRuCI=";
hash = "sha256-UF4gRmcevtH9WNA7g/pwcciJcDariXcMNpqya68mQ38=";
};
patches = [

View File

@ -0,0 +1,37 @@
{
buildPythonPackage,
fetchFromGitHub,
lib,
pytestCheckHook,
pythonOlder,
setuptools,
}:
buildPythonPackage rec {
pname = "standard-nntplib";
version = "3.13.0";
pyproject = true;
disabled = pythonOlder "3.13";
src = fetchFromGitHub {
owner = "youknowone";
repo = "python-deadlib";
tag = "v${version}";
hash = "sha256-J8c55f527QGcK8p/QKJBZeZV0y9DU0iM1RUFVkWh2Hc=";
sparseCheckout = [ "nntplib" ];
};
build-system = [ setuptools ];
sourceRoot = "${src.name}/nntplib";
nativeCheckInputs = [ pytestCheckHook ];
pythonImportsCheck = [ "nntplib" ];
meta = {
description = "Standard library nntplib redistribution";
homepage = "https://github.com/youknowone/python-deadlib";
license = lib.licenses.psfl;
maintainers = [ lib.maintainers.qyliss ];
};
}

View File

@ -23,7 +23,7 @@ buildPythonPackage rec {
meta = with lib; {
description = "Rule-based facts extraction for Russian language";
homepage = "https://github.com/natasha/yargu";
homepage = "https://github.com/natasha/yargy";
license = licenses.mit;
maintainers = with maintainers; [ npatsakula ];
};

View File

@ -1,8 +1,8 @@
diff --git a/kcms/audio_information/kcm_audio_information.json b/kcms/audio_information/kcm_audio_information.json
index d94ef1d0..13f1c377 100644
index 7ece92ee..a4fb6664 100644
--- a/kcms/audio_information/kcm_audio_information.json
+++ b/kcms/audio_information/kcm_audio_information.json
@@ -80,7 +80,7 @@
@@ -82,7 +82,7 @@
"Name[zh_CN]": "音频",
"Name[zh_TW]": "音訊"
},
@ -25,10 +25,10 @@ index adb196fd..9d6c8675 100644
CommandOutputContext *outputContext() const
{
diff --git a/kcms/block_devices/kcm_block_devices.json b/kcms/block_devices/kcm_block_devices.json
index a73e33ad..3a1ab4da 100644
index f73cf5a5..b18ecbfb 100644
--- a/kcms/block_devices/kcm_block_devices.json
+++ b/kcms/block_devices/kcm_block_devices.json
@@ -80,7 +80,7 @@
@@ -82,7 +82,7 @@
"Name[zh_CN]": "块设备",
"Name[zh_TW]": "區塊裝置"
},
@ -51,10 +51,10 @@ index 2de923f3..6b14f7fb 100644
CommandOutputContext *outputContext() const
{
diff --git a/kcms/cpu/kcm_cpu.json b/kcms/cpu/kcm_cpu.json
index a783b5bc..5866c4d2 100644
index e8fb086e..c87b98f8 100644
--- a/kcms/cpu/kcm_cpu.json
+++ b/kcms/cpu/kcm_cpu.json
@@ -102,7 +102,7 @@
@@ -104,7 +104,7 @@
"Name[zh_CN]": "CPU",
"Name[zh_TW]": "CPU"
},
@ -90,12 +90,12 @@ index da803598..4e24eaaf 100755
printf "%s\n\n" "$data"
done
diff --git a/kcms/edid/kcm_edid.json b/kcms/edid/kcm_edid.json
index 68e4e670..19dfdc59 100644
index e180df8d..3d5bbd0b 100644
--- a/kcms/edid/kcm_edid.json
+++ b/kcms/edid/kcm_edid.json
@@ -64,7 +64,7 @@
"Name[x-test]": "xxEDIDxx",
"Name[zh_CN]": "EDID"
@@ -72,7 +72,7 @@
"Name[zh_CN]": "EDID",
"Name[zh_TW]": "EDID"
},
- "TryExec": "di-edid-decode",
+ "TryExec": "@di_edid_decode@",
@ -116,10 +116,10 @@ index 9f04e7fd..8ef37d2c 100644
[[nodiscard]] CommandOutputContext *outputContext() const
{
diff --git a/kcms/egl/kcm_egl.json b/kcms/egl/kcm_egl.json
index 1cc89eb2..f1aed6c3 100644
index 02a90071..64bfb609 100644
--- a/kcms/egl/kcm_egl.json
+++ b/kcms/egl/kcm_egl.json
@@ -102,7 +102,7 @@
@@ -104,7 +104,7 @@
"Name[zh_CN]": "OpenGL (EGL)",
"Name[zh_TW]": "OpenGL (EGL)"
},
@ -155,10 +155,10 @@ index eab20e0f..5a0d2499 100644
{executable},
Qt::TextFormat::RichText,
diff --git a/kcms/glx/kcm_glx.json b/kcms/glx/kcm_glx.json
index 640ef4a5..791e8ce9 100644
index 8a56690a..e2caaec7 100644
--- a/kcms/glx/kcm_glx.json
+++ b/kcms/glx/kcm_glx.json
@@ -101,7 +101,7 @@
@@ -103,7 +103,7 @@
"Name[zh_CN]": "OpenGL (GLX)",
"Name[zh_TW]": "OpenGL (GLX)"
},
@ -197,10 +197,10 @@ index 11921934..1160c5f0 100644
KAuth::ActionReply DMIDecodeHelper::memoryinformation(const QVariantMap &args)
diff --git a/kcms/kwinsupportinfo/kcm_kwinsupportinfo.json.in b/kcms/kwinsupportinfo/kcm_kwinsupportinfo.json.in
index 24dc11a7..bc72f2af 100644
index 9e502d52..f9f26cbd 100644
--- a/kcms/kwinsupportinfo/kcm_kwinsupportinfo.json.in
+++ b/kcms/kwinsupportinfo/kcm_kwinsupportinfo.json.in
@@ -93,6 +93,6 @@
@@ -95,6 +95,6 @@
"Name[zh_CN]": "窗口管理器",
"Name[zh_TW]": "視窗管理員"
},
@ -222,10 +222,10 @@ index ddb55b5c..8dc6b668 100644
parent);
}
diff --git a/kcms/memory/kcm_memory.json b/kcms/memory/kcm_memory.json
index 54f729ec..8e7aeb57 100644
index 20df9662..6a64c762 100644
--- a/kcms/memory/kcm_memory.json
+++ b/kcms/memory/kcm_memory.json
@@ -132,7 +132,7 @@
@@ -134,7 +134,7 @@
"Name[zh_CN]": "内存",
"Name[zh_TW]": "記憶體"
},
@ -235,10 +235,10 @@ index 54f729ec..8e7aeb57 100644
"X-KDE-Keywords": "Memory,RAM,dmidecode",
"X-KDE-Keywords[ar]": "Memory,RAM,dmidecode,رام,ذاكرة,ذاكرة حية",
diff --git a/kcms/network/kcm_network.json b/kcms/network/kcm_network.json
index 65e929e2..20bc2289 100644
index 5fc677a5..59ec49da 100644
--- a/kcms/network/kcm_network.json
+++ b/kcms/network/kcm_network.json
@@ -147,7 +147,7 @@
@@ -148,7 +148,7 @@
"Name[zh_CN]": "网络接口",
"Name[zh_TW]": "網路介面"
},
@ -261,10 +261,10 @@ index f02577a3..479e18df 100644
CommandOutputContext *outputContext() const
{
diff --git a/kcms/opencl/kcm_opencl.json b/kcms/opencl/kcm_opencl.json
index 774dd42e..40e2076a 100644
index 61706cb9..b7fb9c59 100644
--- a/kcms/opencl/kcm_opencl.json
+++ b/kcms/opencl/kcm_opencl.json
@@ -90,7 +90,7 @@
@@ -92,7 +92,7 @@
"Name[zh_CN]": "OpenCL",
"Name[zh_TW]": "OpenCL"
},
@ -299,11 +299,37 @@ index 36d82ef8..16ce2703 100644
set(PCI_BACKEND_ARGUMENTS "-v")
endif()
diff --git a/kcms/sensors/kcm_sensors.json b/kcms/sensors/kcm_sensors.json
index e1994f2c..e1c27245 100644
--- a/kcms/sensors/kcm_sensors.json
+++ b/kcms/sensors/kcm_sensors.json
@@ -58,7 +58,7 @@
"Name[zh_CN]": "传感器",
"Name[zh_TW]": "感測器"
},
- "TryExec": "sensors",
+ "TryExec": "@sensors@",
"X-KDE-KInfoCenter-Category": "device_information",
"X-KDE-Keywords": "lm_sensors,sensors,temp,temperature,volt,voltage,sensors,fan,fan speed,monitoring,amp,amps,current,power",
"X-KDE-Keywords[ar]": "مستشعرات lm,مستشعرات,درجة الحرارة,درجة الحرارة,فولت,جهد,مستشعرات,مروحة,سرعة المروحة,مراقبة,أمبير,أمبير,تيار,طاقة",
diff --git a/kcms/sensors/main.cpp b/kcms/sensors/main.cpp
index 8dae9f8f..ee70f381 100644
--- a/kcms/sensors/main.cpp
+++ b/kcms/sensors/main.cpp
@@ -18,7 +18,7 @@ public:
explicit KCMSensors(QObject *parent, const KPluginMetaData &data)
: KQuickConfigModule(parent, data)
{
- m_outputContext = new CommandOutputContext(u"sensors"_s, {}, parent);
+ m_outputContext = new CommandOutputContext(u"@sensors@"_s, {}, parent);
m_outputContext->setAutoRefreshMs(1000);
}
CommandOutputContext *outputContext() const
diff --git a/kcms/vulkan/kcm_vulkan.json b/kcms/vulkan/kcm_vulkan.json
index 78b42cfd..1ec93c91 100644
index 9a297a07..2c30b20a 100644
--- a/kcms/vulkan/kcm_vulkan.json
+++ b/kcms/vulkan/kcm_vulkan.json
@@ -100,7 +100,7 @@
@@ -102,7 +102,7 @@
"Name[zh_CN]": "Vulkan",
"Name[zh_TW]": "Vulkan"
},
@ -326,10 +352,10 @@ index 5665d9d2..008f1bf0 100644
CommandOutputContext *outputContext() const
{
diff --git a/kcms/wayland/kcm_wayland.json b/kcms/wayland/kcm_wayland.json
index 9ae953bb..27d98104 100644
index 66022b79..1756eb0e 100644
--- a/kcms/wayland/kcm_wayland.json
+++ b/kcms/wayland/kcm_wayland.json
@@ -107,7 +107,7 @@
@@ -108,7 +108,7 @@
"Name[zh_CN]": "Wayland",
"Name[zh_TW]": "Wayland"
},
@ -352,10 +378,10 @@ index 3a4825c7..4633927b 100644
CommandOutputContext *outputContext() const
{
diff --git a/kcms/xserver/kcm_xserver.json b/kcms/xserver/kcm_xserver.json
index f5642e25..11f108a7 100644
index a5e64d94..81190779 100644
--- a/kcms/xserver/kcm_xserver.json
+++ b/kcms/xserver/kcm_xserver.json
@@ -147,7 +147,7 @@
@@ -148,7 +148,7 @@
"Name[zh_CN]": "X 服务器",
"Name[zh_TW]": "X 伺服器"
},

View File

@ -6,6 +6,7 @@
lib,
libdisplay-info,
libusb1,
lm_sensors,
mesa-demos,
mkKdeDerivation,
pkg-config,
@ -33,6 +34,7 @@ let
lscpu = lib.getExe' util-linux "lscpu";
pactl = lib.getExe' pulseaudio "pactl";
qdbus = lib.getExe' qttools "qdbus";
sensors = lib.getExe' lm_sensors "sensors";
vulkaninfo = lib.getExe' vulkan-tools "vulkaninfo";
waylandinfo = lib.getExe wayland-utils;
xdpyinfo = lib.getExe xdpyinfo;

View File

@ -9,13 +9,13 @@
stdenv.mkDerivation {
pname = "rtl8821cu";
version = "${kernel.version}-unstable-2024-09-27";
version = "${kernel.version}-unstable-2025-05-08";
src = fetchFromGitHub {
owner = "morrownr";
repo = "8821cu-20210916";
rev = "2dce552dc6aa0cdab427bfa810c3df002eab0078";
hash = "sha256-8hGAfZyDCGl0RnPnYjc7iMEulZvoIGe2ghfIfoiz7ZI=";
rev = "d74134a1c68f59f2b80cdd6c6afb8c1a8a687cbf";
hash = "sha256-ExT7ONQeejFoMwUUXKua7wMnRi+3IYayLmlWIEWteK4=";
};
hardeningDisable = [ "pic" ];
@ -38,7 +38,7 @@ stdenv.mkDerivation {
meta = with lib; {
description = "Realtek rtl8821cu driver";
homepage = "https://github.com/morrownr/8821cu";
homepage = "https://github.com/morrownr/8821cu-20210916";
license = licenses.gpl2Only;
platforms = platforms.linux;
maintainers = [ maintainers.contrun ];

View File

@ -6,17 +6,17 @@
}:
let
version = "0.1.5-unstable-2024-01-03";
version = "0.1.5-unstable-2025-06-04";
## Upstream has not been merging PRs.
## Nixpkgs maintainers are providing a
## repo with PRs merged until upstream is
## updated.
src = fetchFromGitHub {
owner = "Cryolitia";
owner = "amkillam";
repo = "ryzen_smu";
rev = "ce1aa918efa33ca79998f0f7d467c04d4b07016c";
hash = "sha256-s9SSmbL6ixWqZUKEhrZdxN4xoWgk+8ClZPoKq2FDAAE=";
rev = "9f9569f889935f7c7294cc32c1467e5a4081701a";
hash = "sha256-i8T0+kUYsFMzYO3h6ffUXP1fgGOXymC4Ml2dArQLOdk=";
};
monitor-cpu = stdenv.mkDerivation {
@ -59,13 +59,14 @@ stdenv.mkDerivation {
runHook postInstall
'';
meta = with lib; {
meta = {
description = "Linux kernel driver that exposes access to the SMU (System Management Unit) for certain AMD Ryzen Processors";
homepage = "https://gitlab.com/leogx9r/ryzen_smu";
license = licenses.gpl2Plus;
maintainers = with maintainers; [
homepage = "https://github.com/amkillam/ryzen_smu";
license = lib.licenses.gpl2Plus;
maintainers = with lib.maintainers; [
Cryolitia
phdyellow
aleksana
];
platforms = [ "x86_64-linux" ];
mainProgram = "monitor_cpu";

View File

@ -9,13 +9,13 @@
}:
stdenv.mkDerivation (finalAttrs: {
name = "shufflecake";
version = "0.5.1";
version = "0.5.2";
src = fetchFromGitea {
domain = "codeberg.org";
owner = "shufflecake";
repo = "shufflecake-c";
rev = "v${finalAttrs.version}";
hash = "sha256-ULRx+WEz7uQ1C0JDaXORo6lmiwBAwD20j/XP92YE/K0=";
hash = "sha256-EF9VKaqcNJt3hd/CUT+QeW17tc5ByStDanGGwi4uL4s=";
};
nativeBuildInputs = kernel.moduleBuildDependencies;
@ -27,6 +27,9 @@ stdenv.mkDerivation (finalAttrs: {
"KERNEL_DIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];
# GCC 14 makes this an error by default, remove when fixed upstream
env.NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-pointer-types";
outputs = [
"out"
"bin"

View File

@ -6,17 +6,19 @@
kernelModuleMakeFlags,
}:
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "veikk-linux-driver";
version = "2.0";
src = fetchFromGitHub {
owner = "jlam55555";
repo = pname;
rev = "v${version}";
sha256 = "11mg74ds58jwvdmi3i7c4chxs6v9g09r9ll22pc2kbxjdnrp8zrn";
repo = "veikk-linux-driver";
tag = "v${finalAttrs.version}";
sha256 = "sha256-Nn90s22yrynYFYLSlBN4aRvdISPsxBFr21yiohs5r4Y=";
};
patches = [ ./fix-6.12-build.patch ];
nativeBuildInputs = kernel.moduleBuildDependencies;
buildInputs = [ kernel ];
@ -26,16 +28,20 @@ stdenv.mkDerivation rec {
];
installPhase = ''
runHook preInstall
mkdir -p $out/lib/modules/${kernel.modDirVersion}/kernel/drivers/veikk
install -Dm755 veikk.ko $out/lib/modules/${kernel.modDirVersion}/kernel/drivers/veikk
runHook postInstall
'';
meta = with lib; {
meta = {
description = "Linux driver for VEIKK-brand digitizers";
homepage = "https://github.com/jlam55555/veikk-linux-driver/";
license = licenses.gpl2Only;
platforms = platforms.linux;
maintainers = with maintainers; [ nicbk ];
license = lib.licenses.gpl2Only;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ nicbk ];
broken = kernel.kernelOlder "4.19";
};
}
})

View File

@ -0,0 +1,26 @@
https://github.com/torvalds/linux/commit/5f60d5f6bbc12e782fac78110b0ee62698f3b576
---
veikk_vdev.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/veikk_vdev.c b/veikk_vdev.c
index 9d0b49f..83e9efa 100644
--- a/veikk_vdev.c
+++ b/veikk_vdev.c
@@ -6,7 +6,13 @@
* - Set up the module parameters
*/
+#include <linux/version.h>
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 12, 0)
#include <asm/unaligned.h>
+#else
+#include <linux/unaligned.h>
+#endif
#include <linux/module.h>
#include "veikk.h"
--
2.49.0

View File

@ -42,6 +42,7 @@ buildPythonPackage rec {
python-dateutil
requests
sqlalchemy
standard-nntplib
zope-component
zope-configuration
];
@ -59,6 +60,11 @@ buildPythonPackage rec {
url = "https://gitlab.com/mailman/mailman/-/commit/9613154f3c04fa2383fbf017031ef263c291418d.patch";
sha256 = "0vyw87s857vfxbf7kihwb6w094xyxmxbi1bpdqi3ybjamjycp55r";
})
(fetchpatch {
name = "python-3.13.patch";
url = "https://gitlab.com/mailman/mailman/-/commit/685d9a7bdbd382d9e8d4a2da74bd973e93356e05.patch";
hash = "sha256-KCXVP+5zqgluUXQCGmMRC+G1hEDnFBlTUETGpmFDOOk=";
})
./log-stderr.patch
];

View File

@ -68,7 +68,10 @@ buildGoModule rec {
homepage = "https://www.minio.io/";
description = "S3-compatible object storage server";
changelog = "https://github.com/minio/minio/releases/tag/RELEASE.${version}";
maintainers = with maintainers; [ bachp ];
maintainers = with maintainers; [
bachp
ryan4yin
];
license = licenses.agpl3Plus;
mainProgram = "minio";
};

View File

@ -161,6 +161,7 @@ buildGoModule rec {
globin
ma27
Frostman
ryan4yin
];
platforms = [
"x86_64-linux"

View File

@ -1,8 +1,8 @@
{
"serverVersion": "0.19.11",
"uiVersion": "0.19.11",
"serverHash": "sha256-veF+fJTjsB543PyBnnBN4rmejTWrnlnLghnP6mLDP7U=",
"serverCargoHash": "sha256-H9Eu/nKxK27OXvzPi5ItTbKcHqISKAjN17MRWsw5xlc=",
"uiHash": "sha256-K8nNb/HQy/s5S5h9Ndt3t8F9/h1D2zOGrTEKhv+Z4Ks=",
"uiPNPMDepsHash": "sha256-SqU/kYadwszogaBErP2v1VXIMhJj9AHRKdrHLc99fMw="
"serverVersion": "0.19.12",
"uiVersion": "0.19.12",
"serverHash": "sha256-1xkm2iKoeNXuTW5ZMKPQyqePTUqKXJ5upz97MVwqjzo=",
"serverCargoHash": "sha256-QnDN0Lvfw8d5SF7nrb8hBVG2gwT1xgEhYlLElfR15Z0=",
"uiHash": "sha256-bxppQtDFgxvdeBE/8PsfBNpnEdvX8AoELyhrwEV8Hsg=",
"uiPNPMDepsHash": "sha256-tuarUG1uKx6Q1O+rF6DHyK8MEseF9lKk34qtRWWScAg="
}

View File

@ -95,6 +95,7 @@ rustPlatform.buildRustPackage {
Br1ght0ne
johntitor
joaquintrinanes
ryan4yin
];
mainProgram = "nu";
};

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