Merge staging-next into staging
This commit is contained in:
commit
cd0486dcd0
@ -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. -->
|
||||
|
@ -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
|
||||
|
@ -118,6 +118,9 @@ in
|
||||
};
|
||||
|
||||
meta = {
|
||||
maintainers = with lib.maintainers; [ linsui ];
|
||||
maintainers = with lib.maintainers; [
|
||||
linsui
|
||||
ryan4yin
|
||||
];
|
||||
};
|
||||
}
|
||||
|
538
nixos/modules/services/matrix/mautrix-discord.nix
Normal file
538
nixos/modules/services/matrix/mautrix-discord.nix
Normal 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
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
@ -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"
|
||||
];
|
||||
};
|
||||
|
||||
|
@ -230,6 +230,7 @@ in
|
||||
IOSchedulingPriority = cfg.daemonIOSchedPriority;
|
||||
LimitNOFILE = 1048576;
|
||||
Delegate = "yes";
|
||||
DelegateSubgroup = "supervisor";
|
||||
};
|
||||
|
||||
restartTriggers = [ config.environment.etc."nix/nix.conf".source ];
|
||||
|
@ -18,7 +18,10 @@ let
|
||||
'';
|
||||
in
|
||||
{
|
||||
meta.maintainers = [ maintainers.bachp ];
|
||||
meta.maintainers = with maintainers; [
|
||||
bachp
|
||||
ryan4yin
|
||||
];
|
||||
|
||||
options.services.minio = {
|
||||
enable = mkEnableOption "Minio Object Storage";
|
||||
|
@ -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;
|
||||
|
@ -13,6 +13,7 @@ in
|
||||
maintainers = [
|
||||
equirosa
|
||||
SuperSandro2000
|
||||
ryan4yin
|
||||
];
|
||||
};
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
);
|
||||
|
||||
|
168
nixos/tests/matrix/mautrix-discord.nix
Normal file
168
nixos/tests/matrix/mautrix-discord.nix
Normal 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")
|
||||
'';
|
||||
}
|
@ -48,7 +48,10 @@ in
|
||||
{
|
||||
name = "minio";
|
||||
meta = with pkgs.lib.maintainers; {
|
||||
maintainers = [ bachp ];
|
||||
maintainers = [
|
||||
bachp
|
||||
ryan4yin
|
||||
];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
|
@ -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 = [
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
@ -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 = ''
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
@ -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";
|
||||
};
|
||||
}
|
||||
|
@ -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
|
||||
];
|
||||
};
|
||||
}
|
||||
|
@ -60,6 +60,7 @@ stdenv.mkDerivation rec {
|
||||
maintainers = with lib.maintainers; [
|
||||
khaneliman
|
||||
rmcgibbo
|
||||
ryan4yin
|
||||
];
|
||||
mainProgram = "btop";
|
||||
};
|
||||
|
@ -91,6 +91,7 @@ buildGoModule {
|
||||
Br1ght0ne
|
||||
stepbrobd
|
||||
techknowlogick
|
||||
ryan4yin
|
||||
];
|
||||
};
|
||||
}
|
||||
|
@ -56,6 +56,7 @@ buildGoModule rec {
|
||||
bryanasdev000
|
||||
humancalico
|
||||
qjoly
|
||||
ryan4yin
|
||||
];
|
||||
mainProgram = "cilium";
|
||||
};
|
||||
|
@ -47,6 +47,7 @@ buildGoModule rec {
|
||||
maintainers = with maintainers; [
|
||||
equirosa
|
||||
SuperSandro2000
|
||||
ryan4yin
|
||||
];
|
||||
mainProgram = "croc";
|
||||
};
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
];
|
||||
};
|
||||
}
|
||||
|
@ -51,6 +51,7 @@ buildGoModule rec {
|
||||
maintainers = with lib.maintainers; [
|
||||
xrelkd
|
||||
Chili-Man
|
||||
ryan4yin
|
||||
];
|
||||
mainProgram = "eksctl";
|
||||
};
|
||||
|
@ -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 ];
|
||||
|
@ -80,6 +80,7 @@ buildGoModule rec {
|
||||
maintainers = with lib.maintainers; [
|
||||
bryanasdev000
|
||||
jlesquembre
|
||||
ryan4yin
|
||||
];
|
||||
mainProgram = "flux";
|
||||
};
|
||||
|
@ -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
|
||||
];
|
||||
};
|
||||
}
|
||||
|
@ -82,6 +82,7 @@ buildGoModule rec {
|
||||
globin
|
||||
mmahut
|
||||
emilylange
|
||||
ryan4yin
|
||||
];
|
||||
};
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -57,6 +57,7 @@ buildGoModule rec {
|
||||
maintainers = with maintainers; [
|
||||
bryanasdev000
|
||||
veehaitch
|
||||
ryan4yin
|
||||
];
|
||||
};
|
||||
}
|
||||
|
@ -116,6 +116,7 @@ rustPlatform.buildRustPackage rec {
|
||||
maintainers = with lib.maintainers; [
|
||||
xrelkd
|
||||
jk
|
||||
ryan4yin
|
||||
];
|
||||
mainProgram = "just";
|
||||
};
|
||||
|
@ -76,6 +76,7 @@ buildGoModule rec {
|
||||
bryanasdev000
|
||||
qjoly
|
||||
devusb
|
||||
ryan4yin
|
||||
];
|
||||
};
|
||||
}
|
||||
|
@ -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/";
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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"
|
@ -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
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -52,6 +52,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
pSub
|
||||
rodrgz
|
||||
defelo
|
||||
ryan4yin
|
||||
];
|
||||
inherit (zig_0_14.meta) platforms;
|
||||
mainProgram = "ncdu";
|
||||
|
@ -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 ''
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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 ];
|
||||
};
|
||||
}
|
||||
})
|
||||
|
@ -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
|
||||
];
|
||||
};
|
||||
}
|
||||
})
|
@ -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;
|
||||
|
@ -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";
|
||||
};
|
||||
|
||||
|
@ -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
|
||||
|
@ -54,6 +54,7 @@ let
|
||||
bot-wxt1221
|
||||
fee1-dead
|
||||
prince213
|
||||
ryan4yin
|
||||
];
|
||||
};
|
||||
in
|
||||
|
@ -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";
|
||||
|
@ -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";
|
||||
};
|
||||
|
@ -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"
|
||||
];
|
||||
|
@ -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";
|
||||
};
|
||||
}
|
||||
|
@ -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";
|
||||
};
|
||||
}
|
||||
|
@ -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 \
|
||||
|
@ -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
|
||||
|
@ -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; }
|
||||
|
@ -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=";
|
||||
}
|
||||
|
@ -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 = ".";
|
||||
|
||||
|
@ -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=";
|
||||
}
|
||||
|
@ -92,6 +92,7 @@ buildGoModule rec {
|
||||
maintainers = with maintainers; [
|
||||
lewo
|
||||
developer-guy
|
||||
ryan4yin
|
||||
];
|
||||
teams = [ teams.podman ];
|
||||
license = licenses.asl20;
|
||||
|
@ -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";
|
||||
};
|
||||
}
|
||||
|
@ -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";
|
||||
|
||||
|
@ -74,6 +74,7 @@ buildGoModule rec {
|
||||
maintainers = with lib.maintainers; [
|
||||
amarshall
|
||||
mbaillie
|
||||
ryan4yin
|
||||
];
|
||||
};
|
||||
}
|
||||
|
@ -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 = ''
|
||||
|
@ -60,7 +60,10 @@ stdenv.mkDerivation rec {
|
||||
'';
|
||||
license = licenses.mit;
|
||||
mainProgram = "swaybg";
|
||||
maintainers = with maintainers; [ primeos ];
|
||||
maintainers = with maintainers; [
|
||||
primeos
|
||||
ryan4yin
|
||||
];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -224,6 +224,7 @@ buildGoModule {
|
||||
jk
|
||||
mfrw
|
||||
pyrox0
|
||||
ryan4yin
|
||||
];
|
||||
};
|
||||
}
|
||||
|
@ -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 = [
|
||||
|
@ -47,6 +47,7 @@ rustPlatform.buildRustPackage rec {
|
||||
davidak
|
||||
newam
|
||||
mfrw
|
||||
ryan4yin
|
||||
];
|
||||
license = with licenses; [
|
||||
asl20
|
||||
|
@ -24,6 +24,6 @@ buildGoModule rec {
|
||||
mainProgram = "terraformer";
|
||||
homepage = "https://github.com/GoogleCloudPlatform/terraformer";
|
||||
license = licenses.asl20;
|
||||
maintainers = [ ];
|
||||
maintainers = with maintainers; [ ryan4yin ];
|
||||
};
|
||||
}
|
||||
|
@ -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
|
||||
];
|
||||
};
|
||||
}
|
||||
|
@ -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 = [
|
||||
|
@ -92,6 +92,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
abbe
|
||||
pyrox0
|
||||
matthiasbeyer
|
||||
ryan4yin
|
||||
];
|
||||
mainProgram = "zellij";
|
||||
};
|
||||
|
@ -50,6 +50,7 @@ rustPlatform.buildRustPackage rec {
|
||||
cole-h
|
||||
SuperSandro2000
|
||||
matthiasbeyer
|
||||
ryan4yin
|
||||
];
|
||||
mainProgram = "zoxide";
|
||||
};
|
||||
|
21
pkgs/development/interpreters/perl/cross-fdopendir.patch
Normal file
21
pkgs/development/interpreters/perl/cross-fdopendir.patch
Normal 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'
|
@ -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
|
||||
|
@ -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";
|
||||
};
|
||||
|
@ -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
|
||||
|
@ -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 = [
|
||||
|
@ -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 ];
|
||||
};
|
||||
|
@ -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 ];
|
||||
};
|
||||
}
|
||||
|
@ -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";
|
||||
|
@ -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
|
||||
];
|
||||
};
|
||||
}
|
||||
|
@ -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" ];
|
||||
|
@ -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 ];
|
||||
};
|
||||
|
@ -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 = [
|
||||
|
37
pkgs/development/python-modules/standard-nntplib/default.nix
Normal file
37
pkgs/development/python-modules/standard-nntplib/default.nix
Normal 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 ];
|
||||
};
|
||||
}
|
@ -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 ];
|
||||
};
|
||||
|
@ -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 伺服器"
|
||||
},
|
||||
|
@ -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;
|
||||
|
@ -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 ];
|
||||
|
@ -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";
|
||||
|
@ -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"
|
||||
|
@ -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";
|
||||
};
|
||||
}
|
||||
})
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
];
|
||||
|
||||
|
@ -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";
|
||||
};
|
||||
|
@ -161,6 +161,7 @@ buildGoModule rec {
|
||||
globin
|
||||
ma27
|
||||
Frostman
|
||||
ryan4yin
|
||||
];
|
||||
platforms = [
|
||||
"x86_64-linux"
|
||||
|
@ -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="
|
||||
}
|
||||
|
@ -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
Loading…
x
Reference in New Issue
Block a user