mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-07-06 17:13:24 -05:00
Merge master into staging-next
This commit is contained in:
commit
14cc61fac9
112 changed files with 27353 additions and 680 deletions
|
|
@ -2863,7 +2863,7 @@
|
|||
azahi = {
|
||||
name = "Azat Bahawi";
|
||||
email = "azat@bahawi.net";
|
||||
matrix = "@azahi:azahi.cc";
|
||||
matrix = "@azahi:matrix.org";
|
||||
github = "azahi";
|
||||
githubId = 22211000;
|
||||
keys = [ { fingerprint = "2688 0377 C31D 9E81 9BDF 83A8 C8C6 BDDB 3847 F72B"; } ];
|
||||
|
|
@ -6651,6 +6651,12 @@
|
|||
githubId = 8864716;
|
||||
name = "Duarte David";
|
||||
};
|
||||
demic-dev = {
|
||||
email = "git@demic.dev";
|
||||
github = "demic-dev";
|
||||
githubId = 59309595;
|
||||
name = "Michele De Cillis";
|
||||
};
|
||||
demin-dmitriy = {
|
||||
email = "demindf@gmail.com";
|
||||
github = "demin-dmitriy";
|
||||
|
|
|
|||
|
|
@ -26,6 +26,8 @@
|
|||
|
||||
- [Unpackerr](https://unpackerr.zip), extracts downloads for Radarr, Sonarr, Lidarr, Readarr, and/or a Watch folder. Available as [services.unpackerr](#opt-services.unpackerr.enable).
|
||||
|
||||
- [Matrix Authentication Service](https://github.com/element-hq/matrix-authentication-service) is an OAuth2.0 and OpenID Connect provider for Matrix homeservers (such as Synapse). It replaces standard password authentication with modern OpenID Connect flows, and can delegate authentication to upstream OIDC providers. Available as [services.matrix-authentication-service](#opt-services.matrix-authentication-service.enable).
|
||||
|
||||
## Backward Incompatibilities {#sec-release-26.11-incompatibilities}
|
||||
|
||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||
|
|
@ -67,10 +69,14 @@
|
|||
|
||||
- `security.run0.enableSudoAlias` now uses the `run0-sudo-shim` instead of a shell-script to improve compatibility.
|
||||
|
||||
- With `system.etc.overlay.mutable = false`, NixOS now ships an empty `/etc/machine-id` in the image. Previously the file was absent and systemd logged `System cannot boot: Missing /etc/machine-id and /etc/ is read-only` while `ConditionFirstBoot` fired on every boot. With this change, systemd now overlays a transient ID from `/run/machine-id` for the session, and `systemd-machine-id-commit.service` has `ConditionFirstBoot` so it writes the machine-id through to a persistent backing file when one is bind-mounted over `/etc/machine-id`. To persist the machine-id across reboots, bind-mount a writable file containing `uninitialized` over `/etc/machine-id` from the initrd, or set `systemd.machine_id=` on the kernel command line (use `systemd.machine_id=firmware` to derive a stable ID on hardware that supports it).
|
||||
|
||||
- `security.run0.persistentAuth` options have been added to support persistent Authentication of session. Timeout configurable via `security.polkit.settings.Polkitd.ExpirationSeconds`.
|
||||
|
||||
- `boot.loader.systemd-boot` gained support for [Automatic Boot Assessment](https://systemd.io/AUTOMATIC_BOOT_ASSESSMENT/) via the new [`boot.loader.systemd-boot.bootCounting`](#opt-boot.loader.systemd-boot.bootCounting.enable) options, allowing automatic detection of and recovery from bad NixOS generations. As part of this change, boot loader entries on the ESP/XBOOTLDR partition are now named `nixos-<content-hash>.conf` instead of `nixos-generation-<n>.conf`; existing entries are migrated automatically on the next `nixos-rebuild boot`/`switch`.
|
||||
|
||||
- `services.nginx` gained a [`lua`](#opt-services.nginx.lua.enable) option to enable Lua scripting via OpenResty's lua-nginx-module on a stock nginx, configuring `lua_package_path`/`lua_package_cpath` from the packages listed in [`services.nginx.lua.extraPackages`](#opt-services.nginx.lua.extraPackages). Use this to add Lua to a regular nginx; for the full OpenResty platform (libraries that rely on its bundled lualib, such as `lua-resty-openidc`), set `services.nginx.package` to `pkgs.openresty` instead — the option configures the Lua search path for it too.
|
||||
|
||||
- `security.polkit.settings` added for RFC42 style configuration of the polkitd daemon.
|
||||
|
||||
- The `programs.fuse` module, which provides the `fusermount3` executable and the `/etc/fuse.conf` config file, is now opt-in. The obligation to enable it has been shifted to its various consumers (e.g. gvfs, flatpak, appimage, sshfs). This can break fuse consumers at runtime, that don't explicitly declare that dependency with a module, e.g the mounting functionality in various backup tools (borg, restic, rclone, ...).
|
||||
|
|
|
|||
|
|
@ -810,6 +810,7 @@
|
|||
./services/matrix/hookshot.nix
|
||||
./services/matrix/lk-jwt-service.nix
|
||||
./services/matrix/matrix-alertmanager.nix
|
||||
./services/matrix/matrix-authentication-service.nix
|
||||
./services/matrix/maubot.nix
|
||||
./services/matrix/mautrix-discord.nix
|
||||
./services/matrix/mautrix-meta.nix
|
||||
|
|
@ -1914,6 +1915,7 @@
|
|||
./system/boot/clevis-luks-askpass.nix
|
||||
./system/boot/clevis.nix
|
||||
./system/boot/emergency-mode.nix
|
||||
./system/boot/extra-initrd.nix
|
||||
./system/boot/grow-partition.nix
|
||||
./system/boot/initrd-network.nix
|
||||
./system/boot/initrd-openvpn.nix
|
||||
|
|
|
|||
445
nixos/modules/services/matrix/matrix-authentication-service.nix
Normal file
445
nixos/modules/services/matrix/matrix-authentication-service.nix
Normal file
|
|
@ -0,0 +1,445 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
concatMapStringsSep
|
||||
filter
|
||||
filterAttrs
|
||||
getExe
|
||||
isAttrs
|
||||
isList
|
||||
mapAttrs
|
||||
mkDefault
|
||||
mkEnableOption
|
||||
mkIf
|
||||
mkOption
|
||||
mkPackageOption
|
||||
optional
|
||||
optionalAttrs
|
||||
types
|
||||
;
|
||||
|
||||
cfg = config.services.matrix-authentication-service;
|
||||
format = pkgs.formats.yaml { };
|
||||
filterRecursiveNull =
|
||||
o:
|
||||
if isAttrs o then
|
||||
mapAttrs (_: v: filterRecursiveNull v) (filterAttrs (_: v: v != null) o)
|
||||
else if isList o then
|
||||
map filterRecursiveNull (filter (v: v != null) o)
|
||||
else
|
||||
o;
|
||||
|
||||
# remove null values from the final configuration
|
||||
finalSettings =
|
||||
let
|
||||
pruned = filterRecursiveNull cfg.settings;
|
||||
in
|
||||
if pruned ? upstream_oauth2 && pruned.upstream_oauth2 == { } then
|
||||
removeAttrs pruned [ "upstream_oauth2" ]
|
||||
else
|
||||
pruned;
|
||||
configFile = format.generate "config.yaml" finalSettings;
|
||||
in
|
||||
{
|
||||
meta.maintainers = with lib.maintainers; [
|
||||
eymeric
|
||||
flashonfire
|
||||
mkoppmann
|
||||
skowalak
|
||||
];
|
||||
meta.teams = [ lib.teams.matrix ];
|
||||
|
||||
options.services.matrix-authentication-service = {
|
||||
enable = mkEnableOption "Matrix Authentication Service";
|
||||
|
||||
package = mkPackageOption pkgs "matrix-authentication-service" { };
|
||||
|
||||
settings = mkOption {
|
||||
default = { };
|
||||
description = ''
|
||||
The primary mas configuration. See the
|
||||
[configuration reference](https://element-hq.github.io/matrix-authentication-service/usage/configuration.html)
|
||||
for possible values.
|
||||
|
||||
Secrets should be passed in by using the `extraConfigFiles` option.
|
||||
'';
|
||||
type = types.submodule {
|
||||
freeformType = format.type;
|
||||
|
||||
options = {
|
||||
http.public_base = mkOption {
|
||||
type = types.str;
|
||||
default = "http://[::]:8080/";
|
||||
description = ''
|
||||
Public URL base used when building absolute public URLs.
|
||||
'';
|
||||
};
|
||||
http.trusted_proxies = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [
|
||||
"127.0.0.1/8"
|
||||
"::1/128"
|
||||
];
|
||||
description = ''
|
||||
MAS can infer the client IP address from the X-Forwarded-For header. It will trust the value for this header only if the request comes from a trusted reverse proxy listed here.
|
||||
'';
|
||||
};
|
||||
http.listeners = mkOption {
|
||||
type = types.listOf (
|
||||
types.submodule {
|
||||
freeformType = format.type;
|
||||
options = {
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
example = "web";
|
||||
description = ''
|
||||
The name of the listener, used in logs and metrics.
|
||||
'';
|
||||
};
|
||||
proxy_protocol = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to enable the PROXY protocol on the listener.
|
||||
'';
|
||||
};
|
||||
resources = mkOption {
|
||||
type = types.listOf (
|
||||
types.submodule {
|
||||
freeformType = format.type;
|
||||
options = {
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
description = ''
|
||||
Serve the given resource.
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
);
|
||||
description = ''
|
||||
List of resources to serve.
|
||||
'';
|
||||
};
|
||||
binds = mkOption {
|
||||
type = types.listOf (
|
||||
types.submodule {
|
||||
freeformType = format.type;
|
||||
options = {
|
||||
host = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
description = ''
|
||||
Listen on the given host.
|
||||
'';
|
||||
};
|
||||
port = mkOption {
|
||||
type = types.nullOr types.port;
|
||||
description = ''
|
||||
Listen on the given port.
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
);
|
||||
description = ''
|
||||
List of addresses and ports to listen to.
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
);
|
||||
default = [
|
||||
{
|
||||
name = "web";
|
||||
resources = [
|
||||
{ name = "discovery"; }
|
||||
{ name = "human"; }
|
||||
{ name = "oauth"; }
|
||||
{ name = "compat"; }
|
||||
{ name = "graphql"; }
|
||||
{ name = "assets"; }
|
||||
];
|
||||
binds = [
|
||||
{
|
||||
host = "0.0.0.0";
|
||||
port = 8080;
|
||||
}
|
||||
];
|
||||
proxy_protocol = false;
|
||||
}
|
||||
{
|
||||
name = "internal";
|
||||
resources = [
|
||||
{ name = "health"; }
|
||||
];
|
||||
binds = [
|
||||
{
|
||||
host = "0.0.0.0";
|
||||
port = 8081;
|
||||
}
|
||||
];
|
||||
proxy_protocol = false;
|
||||
}
|
||||
];
|
||||
description = ''
|
||||
Each listener can serve multiple resources, and listen on multiple TCP ports or UNIX sockets.
|
||||
'';
|
||||
};
|
||||
|
||||
database.uri = mkOption {
|
||||
type = types.str;
|
||||
default = "postgresql:///matrix-authentication-service?host=/run/postgresql";
|
||||
description = ''
|
||||
The postgres connection string.
|
||||
Refer to <https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING>.
|
||||
If you need to put secrets in the uri, please use the `extraConfigFiles` option.
|
||||
'';
|
||||
};
|
||||
|
||||
database.max_connections = mkOption {
|
||||
type = types.ints.unsigned;
|
||||
default = 10;
|
||||
description = ''
|
||||
Maximum number of connections for the connection pool.
|
||||
'';
|
||||
};
|
||||
|
||||
database.min_connections = mkOption {
|
||||
type = types.ints.unsigned;
|
||||
default = 0;
|
||||
description = ''
|
||||
Minimum number of connections for the connection pool.
|
||||
'';
|
||||
};
|
||||
|
||||
database.connect_timeout = mkOption {
|
||||
type = types.ints.unsigned;
|
||||
default = 30;
|
||||
description = ''
|
||||
Connection timeout for the connection pool.
|
||||
'';
|
||||
};
|
||||
|
||||
database.idle_timeout = mkOption {
|
||||
type = types.ints.unsigned;
|
||||
default = 600;
|
||||
description = ''
|
||||
Idle timeout for the connection pool.
|
||||
'';
|
||||
};
|
||||
|
||||
database.max_lifetime = mkOption {
|
||||
type = types.ints.unsigned;
|
||||
default = 1800;
|
||||
description = ''
|
||||
Maximum lifetime for the connection pool.
|
||||
'';
|
||||
};
|
||||
|
||||
passwords.enabled = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Whether to enable the password database. If disabled, users will only be able to log in using upstream OIDC providers.
|
||||
'';
|
||||
};
|
||||
|
||||
passwords.schemes = mkOption {
|
||||
type = types.listOf (
|
||||
types.submodule {
|
||||
freeformType = format.type;
|
||||
options = {
|
||||
version = mkOption {
|
||||
type = types.ints.unsigned;
|
||||
description = ''
|
||||
Password scheme version.
|
||||
'';
|
||||
};
|
||||
algorithm = mkOption {
|
||||
type = types.str;
|
||||
description = ''
|
||||
Password scheme algorithm.
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
);
|
||||
default = [
|
||||
{
|
||||
version = 1;
|
||||
algorithm = "argon2id";
|
||||
}
|
||||
];
|
||||
description = ''
|
||||
List of password hashing schemes being used. Only change this if you know what you're doing.
|
||||
'';
|
||||
};
|
||||
|
||||
passwords.minimum_complexity = mkOption {
|
||||
type = types.enum [
|
||||
0
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
];
|
||||
default = 3;
|
||||
description = ''
|
||||
Minimum complexity required for passwords, estimated by the zxcvbn algorithm.
|
||||
Must be between 0 and 4, default is 3. See <https://github.com/dropbox/zxcvbn#usage> for more information.
|
||||
'';
|
||||
};
|
||||
|
||||
matrix.homeserver = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
description = ''
|
||||
Corresponds to the server_name in the Synapse configuration file.
|
||||
'';
|
||||
};
|
||||
matrix.endpoint = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
description = ''
|
||||
The URL to which the homeserver is accessible from the service.
|
||||
'';
|
||||
};
|
||||
upstream_oauth2.providers = mkOption {
|
||||
default = null;
|
||||
type = types.nullOr (
|
||||
types.listOf (
|
||||
types.submodule {
|
||||
freeformType = format.type;
|
||||
options = {
|
||||
id = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
example = "01H8PKNWKKRPCBW4YGH1RWV279";
|
||||
default = null;
|
||||
description = ''
|
||||
Unique id for the provider, must be a ULID, and can be generated using online tools like <https://www.ulidtools.com>.
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
)
|
||||
);
|
||||
description = ''
|
||||
Configuration of upstream providers
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
createDatabase = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to enable and configure `services.postgresql` to ensure that the database user `matrix-authentication-service`
|
||||
and the database `matrix-authentication-service` exist.
|
||||
'';
|
||||
};
|
||||
|
||||
extraConfigFiles = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [ ];
|
||||
description = ''
|
||||
Extra config files to include.
|
||||
|
||||
The configuration files will be included based on the command line
|
||||
argument --config. This allows to configure secrets without
|
||||
having to go through the Nix store, e.g. based on deployment keys if
|
||||
NixOps is in use.
|
||||
'';
|
||||
};
|
||||
|
||||
serviceDependencies = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = optional config.services.matrix-synapse.enable config.services.matrix-synapse.serviceUnit;
|
||||
defaultText = lib.literalExpression ''
|
||||
lib.optional config.services.matrix-synapse.enable config.services.matrix-synapse.serviceUnit
|
||||
'';
|
||||
description = ''
|
||||
List of Systemd services to require and wait for when starting the application service,
|
||||
such as the Matrix homeserver if it's running on the same host.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.postgresql = mkIf cfg.createDatabase {
|
||||
enable = true;
|
||||
ensureDatabases = [ "matrix-authentication-service" ];
|
||||
ensureUsers = [
|
||||
{
|
||||
name = "matrix-authentication-service";
|
||||
ensureDBOwnership = true;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
systemd.services.matrix-authentication-service = rec {
|
||||
after = optional cfg.createDatabase "postgresql.service" ++ cfg.serviceDependencies;
|
||||
wants = after;
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
DynamicUser = true;
|
||||
ExecStartPre = ''
|
||||
${getExe cfg.package} config check \
|
||||
${concatMapStringsSep " " (x: "--config ${x}") ([ configFile ] ++ cfg.extraConfigFiles)}
|
||||
'';
|
||||
ExecStart = ''
|
||||
${getExe cfg.package} server \
|
||||
${concatMapStringsSep " " (x: "--config ${x}") ([ configFile ] ++ cfg.extraConfigFiles)}
|
||||
'';
|
||||
Restart = "on-failure";
|
||||
RestartSec = "1s";
|
||||
|
||||
# Security Hardening
|
||||
CapabilityBoundingSet = "";
|
||||
AmbientCapabilities = "";
|
||||
LockPersonality = true;
|
||||
NoNewPrivileges = true;
|
||||
PrivateTmp = true;
|
||||
PrivateDevices = true;
|
||||
PrivateMounts = true;
|
||||
ProtectClock = true;
|
||||
ProtectControlGroups = true;
|
||||
ProtectHome = true;
|
||||
ProtectHostname = true;
|
||||
ProtectKernelLogs = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectKernelTunables = true;
|
||||
ProtectProc = "invisible";
|
||||
ProcSubset = "pid";
|
||||
ProtectSystem = "strict";
|
||||
RemoveIPC = true;
|
||||
RestrictAddressFamilies = [
|
||||
"AF_UNIX"
|
||||
"AF_INET"
|
||||
"AF_INET6"
|
||||
];
|
||||
RestrictNamespaces = true;
|
||||
RestrictRealtime = true;
|
||||
RestrictSUIDSGID = true;
|
||||
SystemCallArchitectures = "native";
|
||||
SystemCallErrorNumber = "EPERM";
|
||||
SystemCallFilter = [
|
||||
"@system-service"
|
||||
];
|
||||
UMask = "0077";
|
||||
|
||||
# Working and state directories
|
||||
StateDirectory = "matrix-authentication-service";
|
||||
StateDirectoryMode = "0700";
|
||||
WorkingDirectory = "/var/lib/matrix-authentication-service";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -4,6 +4,7 @@
|
|||
lib,
|
||||
pkgs,
|
||||
utils,
|
||||
jdk25_headless,
|
||||
...
|
||||
}:
|
||||
let
|
||||
|
|
@ -29,21 +30,16 @@ let
|
|||
);
|
||||
in
|
||||
{
|
||||
|
||||
options = {
|
||||
services.unifi.enable = lib.mkEnableOption "UniFi controller service";
|
||||
|
||||
services.unifi.jrePackage = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = cfg.unifiPackage.passthru.jrePackage or jdk25_headless;
|
||||
defaultText = lib.literalExpression "unifiPackage.passthru.jrePackage";
|
||||
|
||||
services.unifi.enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether or not to enable the unifi controller service.
|
||||
'';
|
||||
};
|
||||
|
||||
services.unifi.jrePackage = lib.mkPackageOption pkgs "jdk" {
|
||||
default = "jdk25_headless";
|
||||
extraDescription = ''
|
||||
Check the UniFi controller release notes to ensure it is supported.
|
||||
Which Java runtime to use.
|
||||
'';
|
||||
};
|
||||
|
||||
|
|
@ -56,6 +52,7 @@ in
|
|||
services.unifi.openFirewall = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
|
||||
description = ''
|
||||
Whether or not to open the minimum required ports on the firewall.
|
||||
|
||||
|
|
@ -69,6 +66,7 @@ in
|
|||
type = with lib.types; nullOr int;
|
||||
default = null;
|
||||
example = 1024;
|
||||
|
||||
description = ''
|
||||
Set the initial heap size for the JVM in MB. If this option isn't set, the
|
||||
JVM will decide this value at runtime.
|
||||
|
|
@ -79,6 +77,7 @@ in
|
|||
type = with lib.types; nullOr int;
|
||||
default = null;
|
||||
example = 4096;
|
||||
|
||||
description = ''
|
||||
Set the maximum heap size for the JVM in MB. If this option isn't set, the
|
||||
JVM will decide this value at runtime.
|
||||
|
|
@ -89,15 +88,14 @@ in
|
|||
type = with lib.types; listOf str;
|
||||
default = [ ];
|
||||
example = lib.literalExpression ''["-Xlog:gc"]'';
|
||||
|
||||
description = ''
|
||||
Set extra options to pass to the JVM.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
assertions = [
|
||||
{
|
||||
assertion =
|
||||
|
|
@ -128,16 +126,18 @@ in
|
|||
description = "UniFi controller daemon user";
|
||||
home = "${stateDir}";
|
||||
};
|
||||
|
||||
users.groups.unifi = { };
|
||||
|
||||
# https://help.ubnt.com/hc/en-us/articles/218506997
|
||||
networking.firewall = lib.mkIf cfg.openFirewall {
|
||||
# https://help.ubnt.com/hc/en-us/articles/218506997
|
||||
allowedTCPPorts = [
|
||||
8080 # Port for UAP to inform controller.
|
||||
8880 # Port for HTTP portal redirect, if guest portal is enabled.
|
||||
8843 # Port for HTTPS portal redirect, ditto.
|
||||
6789 # Port for UniFi mobile speed test.
|
||||
];
|
||||
|
||||
allowedUDPPorts = [
|
||||
3478 # UDP port used for STUN.
|
||||
10001 # UDP port used for device discovery.
|
||||
|
|
@ -151,6 +151,7 @@ in
|
|||
|
||||
# This a HACK to fix missing dependencies of dynamic libs extracted from jars
|
||||
environment.LD_LIBRARY_PATH = with pkgs.stdenv; "${cc.cc.lib}/lib";
|
||||
|
||||
# Make sure package upgrades trigger a service restart
|
||||
restartTriggers = [
|
||||
cfg.unifiPackage
|
||||
|
|
@ -220,12 +221,13 @@ in
|
|||
|
||||
# Needs network access
|
||||
PrivateNetwork = false;
|
||||
|
||||
# Cannot be true due to OpenJDK
|
||||
MemoryDenyWriteExecute = false;
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
imports = [
|
||||
(lib.mkRemovedOptionModule [
|
||||
"services"
|
||||
|
|
|
|||
|
|
@ -158,5 +158,5 @@ in
|
|||
networking.firewall.allowedTCPPorts = with cfg; lib.optionals openFirewall [ port ];
|
||||
};
|
||||
|
||||
meta.maintainers = with lib.maintainers; [ azahi ];
|
||||
meta.maintainers = [ ];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -126,6 +126,28 @@ let
|
|||
'') (filterAttrs (name: conf: conf.enable) cfg.proxyCachePath)
|
||||
);
|
||||
|
||||
# openresty bundles the lua module and resty.core; stock nginx needs them added.
|
||||
packageBundlesLua = p: lib.getName p == "openresty";
|
||||
luaEnv = pkgs.luajit_openresty.withPackages (
|
||||
ps:
|
||||
lib.optional (cfg.lua.enable && !packageBundlesLua cfg.package) ps.lua-resty-core
|
||||
++ cfg.lua.extraPackages ps
|
||||
);
|
||||
luaVersion = pkgs.luajit_openresty.luaversion;
|
||||
# Lua modules install under lib/lua or share/lua depending on the package; ;; keeps nginx's defaults.
|
||||
luaConfig = ''
|
||||
lua_package_path '${
|
||||
lib.concatMapStringsSep ";" (s: "${luaEnv}/${s}") [
|
||||
"lib/lua/${luaVersion}/?.lua"
|
||||
"lib/lua/${luaVersion}/?/init.lua"
|
||||
"share/lua/${luaVersion}/?.lua"
|
||||
"share/lua/${luaVersion}/?/init.lua"
|
||||
]
|
||||
};;';
|
||||
lua_package_cpath '${luaEnv}/lib/lua/${luaVersion}/?.so;;';
|
||||
lua_ssl_trusted_certificate ${config.security.pki.caBundle};
|
||||
'';
|
||||
|
||||
toUpstreamParameter =
|
||||
key: value:
|
||||
if builtins.isBool value then lib.optionalString value key else "${key}=${toString value}";
|
||||
|
|
@ -295,6 +317,8 @@ let
|
|||
|
||||
server_tokens ${if cfg.serverTokens then "on" else "off"};
|
||||
|
||||
${optionalString cfg.lua.enable luaConfig}
|
||||
|
||||
${cfg.commonHttpConfig}
|
||||
|
||||
${proxyCachePathConfig}
|
||||
|
|
@ -771,7 +795,11 @@ in
|
|||
apply =
|
||||
p:
|
||||
p.override {
|
||||
modules = lib.unique (p.modules ++ cfg.additionalModules);
|
||||
modules = lib.unique (
|
||||
p.modules
|
||||
++ cfg.additionalModules
|
||||
++ lib.optional (cfg.lua.enable && !packageBundlesLua p) pkgs.nginxModules.lua
|
||||
);
|
||||
};
|
||||
description = ''
|
||||
Nginx package to use. This defaults to the stable version. Note
|
||||
|
|
@ -791,6 +819,36 @@ in
|
|||
'';
|
||||
};
|
||||
|
||||
lua = {
|
||||
enable = mkEnableOption ''
|
||||
Lua scripting in nginx via OpenResty's lua-nginx-module,
|
||||
wiring up `lua_package_path`/`lua_package_cpath` for
|
||||
{option}`services.nginx.lua.extraPackages`.
|
||||
|
||||
Use this to add Lua to a stock nginx. For the full OpenResty platform —
|
||||
required by libraries that depend on its bundled lualib (for example
|
||||
`lua-resty-openidc`, which needs `resty.string` and friends) — set
|
||||
{option}`services.nginx.package` to `pkgs.openresty` instead; this option
|
||||
then only sets up the search path and leaves OpenResty's built-in Lua
|
||||
module in place
|
||||
'';
|
||||
|
||||
extraPackages = mkOption {
|
||||
type = types.functionTo (types.listOf types.package);
|
||||
default = ps: [ ];
|
||||
defaultText = literalExpression "ps: [ ]";
|
||||
example = literalExpression ''
|
||||
ps: with ps; [ lua-resty-openidc ]
|
||||
'';
|
||||
description = ''
|
||||
Extra Lua packages to put on `lua_package_path` / `lua_package_cpath`,
|
||||
for both stock nginx and `pkgs.openresty`. Packages are selected from
|
||||
`pkgs.luajit_openresty.pkgs`. `lua-resty-core`, which the Lua module
|
||||
requires to start, is added automatically.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
logError = mkOption {
|
||||
default = "stderr";
|
||||
type = types.str;
|
||||
|
|
|
|||
21
nixos/modules/system/boot/extra-initrd.nix
Normal file
21
nixos/modules/system/boot/extra-initrd.nix
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
{ config, lib, ... }:
|
||||
{
|
||||
options.system.boot.extraInitrd = {
|
||||
paths = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ ];
|
||||
description = ''
|
||||
List of paths relative to the ESP that are combined with the NixOS
|
||||
main initrd before being passed to the kernel.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
boot.bootspec.extensions = lib.mkIf (config.system.boot.extraInitrd.paths != [ ]) {
|
||||
"org.nixos.extra-initrd.v1" = {
|
||||
inherit (config.system.boot.extraInitrd) paths;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -205,6 +205,17 @@ in
|
|||
'';
|
||||
};
|
||||
|
||||
extraInstallCommands = lib.mkOption {
|
||||
default = "";
|
||||
type = lib.types.lines;
|
||||
description = ''
|
||||
Additional shell commands inserted in the bootloader installer
|
||||
script after generating menu entries. It can be used to expand
|
||||
on extra boot entries that cannot incorporate certain pieces of
|
||||
information (such as the resulting `init=` kernel parameter).
|
||||
'';
|
||||
};
|
||||
|
||||
secureBoot = {
|
||||
enable = lib.mkEnableOption null // {
|
||||
description = ''
|
||||
|
|
@ -443,14 +454,25 @@ in
|
|||
|
||||
system = {
|
||||
boot.loader.id = "limine";
|
||||
build.installBootLoader = pkgs.replaceVarsWith {
|
||||
src = ./limine-install.py;
|
||||
isExecutable = true;
|
||||
replacements = {
|
||||
python3 = pkgs.python3.withPackages (python-packages: [ python-packages.psutil ]);
|
||||
configPath = limineInstallConfig;
|
||||
};
|
||||
};
|
||||
build.installBootLoader =
|
||||
let
|
||||
install = pkgs.replaceVarsWith {
|
||||
src = ./limine-install.py;
|
||||
isExecutable = true;
|
||||
replacements = {
|
||||
python3 = pkgs.python3.withPackages (python-packages: [ python-packages.psutil ]);
|
||||
configPath = limineInstallConfig;
|
||||
};
|
||||
};
|
||||
|
||||
final = pkgs.writeScript "limine-install.sh" ''
|
||||
#!${pkgs.runtimeShell}
|
||||
set -euo pipefail
|
||||
${install} "$@"
|
||||
${cfg.extraInstallCommands}
|
||||
'';
|
||||
in
|
||||
final;
|
||||
};
|
||||
})
|
||||
(lib.mkIf (cfg.enable && cfg.secureBoot.enable) {
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ BOOT_COUNTING = "@bootCounting@" == "True"
|
|||
class BootSpec:
|
||||
init: Path
|
||||
initrd: Path
|
||||
extraInitrdPaths: list[Path]
|
||||
kernel: Path
|
||||
kernelParams: list[str] # noqa: N815
|
||||
label: str
|
||||
|
|
@ -306,9 +307,7 @@ def get_bootspec(profile: str | None, generation: int) -> BootSpec | None:
|
|||
try:
|
||||
bootspec_json = json.load(f)
|
||||
except ValueError as e:
|
||||
print(
|
||||
f"error: Malformed Json: {e}, in {boot_json_path}", file=sys.stderr
|
||||
)
|
||||
print(f"error: Malformed Json: {e}, in {boot_json_path}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
return bootspec_from_json(bootspec_json)
|
||||
|
||||
|
|
@ -320,6 +319,11 @@ def bootspec_from_json(bootspec_json: dict[str, Any]) -> BootSpec:
|
|||
sortKey = systemdBootExtension.get("sortKey", "nixos")
|
||||
devicetree = systemdBootExtension.get("devicetree")
|
||||
|
||||
extraInitrdExtension = bootspec_json.get("org.nixos.extra-initrd.v1", {})
|
||||
extraInitrdPaths = list(
|
||||
map(lambda path: Path(path), extraInitrdExtension.get("paths", []))
|
||||
)
|
||||
|
||||
if devicetree:
|
||||
devicetree = Path(devicetree)
|
||||
|
||||
|
|
@ -332,6 +336,7 @@ def bootspec_from_json(bootspec_json: dict[str, Any]) -> BootSpec:
|
|||
specialisations=specialisations,
|
||||
sortKey=sortKey,
|
||||
devicetree=devicetree,
|
||||
extraInitrdPaths=extraInitrdPaths,
|
||||
)
|
||||
|
||||
|
||||
|
|
@ -374,16 +379,21 @@ def boot_file(
|
|||
specialisation=" (%s)" % specialisation if specialisation else "",
|
||||
)
|
||||
description = f"Generation {generation} {bootspec.label}, built on {build_date}"
|
||||
boot_entry = [
|
||||
f"title {title}",
|
||||
f"version {description}",
|
||||
f"linux /{str(kernel.path)}",
|
||||
f"initrd /{str(initrd.path)}",
|
||||
f"options {kernel_params}",
|
||||
f"machine-id {machine_id}" if machine_id is not None else None,
|
||||
f"devicetree /{str(devicetree.path)}" if devicetree is not None else None,
|
||||
f"sort-key {bootspec.sortKey}",
|
||||
]
|
||||
boot_entry = (
|
||||
[
|
||||
f"title {title}",
|
||||
f"version {description}",
|
||||
f"linux /{str(kernel.path)}",
|
||||
f"initrd /{str(initrd.path)}",
|
||||
]
|
||||
+ list(map(lambda initrd: f"initrd /{initrd}", bootspec.extraInitrdPaths))
|
||||
+ [
|
||||
f"options {kernel_params}",
|
||||
f"machine-id {machine_id}" if machine_id is not None else None,
|
||||
f"devicetree /{str(devicetree.path)}" if devicetree is not None else None,
|
||||
f"sort-key {bootspec.sortKey}",
|
||||
]
|
||||
)
|
||||
contents = "\n".join(filter(None, boot_entry))
|
||||
entry, bootctl_id = BootFile.from_entry(contents.encode("utf-8"))
|
||||
return (list(filter(None, [kernel, initrd, devicetree, entry])), bootctl_id)
|
||||
|
|
|
|||
|
|
@ -182,16 +182,37 @@
|
|||
})
|
||||
|
||||
(lib.mkIf (config.system.etc.overlay.enable && !config.system.etc.overlay.mutable) {
|
||||
# Systemd requires /etc/machine-id exists or can be initialized on first
|
||||
# boot. This file should not be part of an image or system config because
|
||||
# it is unique to the machine, so it is initialized at first boot and
|
||||
# persisted in the system state directory, /var/lib/nixos.
|
||||
environment.etc."machine-id".source = lib.mkDefault "/var/lib/nixos/machine-id";
|
||||
boot.initrd.systemd.tmpfiles.settings.machine-id."/sysroot/var/lib/nixos/machine-id".f =
|
||||
lib.mkDefault
|
||||
{
|
||||
argument = "uninitialized";
|
||||
};
|
||||
# An empty regular file means systemd will bind mount /run/machine-id
|
||||
# on top, and ConditionFirstBoot will be false (the file will never
|
||||
# change, so this makes sense). See machine-id(5) "First Boot
|
||||
# Semantics". It also serves as a target to bind mount an actually
|
||||
# persistent machine-id onto. A symlink doesn't work here since
|
||||
# systemd-machine-id-commit checks /etc/machine-id itself for being a
|
||||
# mountpoint without following symlinks, so it would never commit
|
||||
# through a symlink.
|
||||
environment.etc.machine-id = lib.mkDefault {
|
||||
text = "";
|
||||
mode = "0444";
|
||||
};
|
||||
|
||||
# The upstream unit has ConditionPathIsReadWrite=/etc, which is always
|
||||
# false here. Replace it with ConditionFirstBoot: with the empty
|
||||
# placeholder above first-boot is "no" and commit stays skipped, but
|
||||
# when a persistence module bind-mounts a writable file containing
|
||||
# "uninitialized" over /etc/machine-id, first-boot is "yes" once and
|
||||
# commit writes the generated ID through the bind mount.
|
||||
#
|
||||
# An empty Condition*= assignment resets *all* condition types, and
|
||||
# this attrset is serialised in key order, so the reset goes through
|
||||
# ConditionFirstBoot (sorts first) and we re-add the upstream
|
||||
# ConditionPathIsMountPoint afterwards.
|
||||
systemd.services.systemd-machine-id-commit.unitConfig = {
|
||||
ConditionFirstBoot = lib.mkDefault [
|
||||
""
|
||||
"true"
|
||||
];
|
||||
ConditionPathIsMountPoint = lib.mkDefault "/etc/machine-id";
|
||||
};
|
||||
})
|
||||
|
||||
];
|
||||
|
|
|
|||
|
|
@ -76,6 +76,19 @@
|
|||
with subtest("/etc is mounted as an overlay"):
|
||||
machine.succeed("findmnt --kernel --type overlay /etc")
|
||||
|
||||
with subtest("machine-id is set up without first-boot looping"):
|
||||
# The baked-in placeholder is an empty regular file; systemd overlays
|
||||
# /run/machine-id on top so the session has a valid ID while the
|
||||
# commit service is condition-skipped (no writable /etc to commit to).
|
||||
machine.succeed("stat --format '%F' /etc/machine-id | tee /dev/stderr | grep -q 'regular'")
|
||||
machine.succeed("grep -qE '^[0-9a-f]{32}$' /etc/machine-id")
|
||||
machine.fail("journalctl -b | grep -F 'System cannot boot: Missing /etc/machine-id'")
|
||||
machine.fail("journalctl -b | grep -F 'Detected first boot'")
|
||||
machine.fail("systemctl is-failed --quiet systemd-machine-id-commit.service")
|
||||
assert machine.succeed(
|
||||
"systemctl show -P ConditionResult systemd-machine-id-commit.service"
|
||||
).strip() == "no"
|
||||
|
||||
with subtest("modes work correctly"):
|
||||
machine.succeed("stat --format '%F' /etc/modetest | tee /dev/stderr | grep -q 'regular file'")
|
||||
machine.succeed("stat --format '%F' /etc/modetest2 | tee /dev/stderr | grep -q 'regular file'")
|
||||
|
|
|
|||
|
|
@ -554,6 +554,9 @@ in
|
|||
etebase-server = runTest ./etebase-server.nix;
|
||||
etesync-dav = runTest ./etesync-dav.nix;
|
||||
evcc = runTest ./evcc.nix;
|
||||
extra-initrd = import ./extra-initrd.nix {
|
||||
inherit runTest pkgs;
|
||||
};
|
||||
facter = runTest ./facter;
|
||||
fail2ban = runTest ./fail2ban.nix;
|
||||
fakeroute = runTest ./fakeroute.nix;
|
||||
|
|
@ -980,6 +983,7 @@ in
|
|||
matomo = runTest ./matomo.nix;
|
||||
matrix-alertmanager = runTest ./matrix/matrix-alertmanager.nix;
|
||||
matrix-appservice-irc = runTest ./matrix/appservice-irc.nix;
|
||||
matrix-authentication-service = runTest ./matrix/matrix-authentication-service.nix;
|
||||
matrix-conduit = runTest ./matrix/conduit.nix;
|
||||
matrix-continuwuity = runTest ./matrix/continuwuity.nix;
|
||||
matrix-synapse = runTest ./matrix/synapse.nix;
|
||||
|
|
@ -1125,6 +1129,7 @@ in
|
|||
nginx-etag-compression = runTest ./nginx-etag-compression.nix;
|
||||
nginx-globalredirect = runTest ./nginx-globalredirect.nix;
|
||||
nginx-http3 = import ./nginx-http3.nix { inherit pkgs runTest; };
|
||||
nginx-lua = runTest ./nginx-lua.nix;
|
||||
nginx-mime = runTest ./nginx-mime.nix;
|
||||
nginx-modsecurity = runTest ./nginx-modsecurity.nix;
|
||||
nginx-moreheaders = runTest ./nginx-moreheaders.nix;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{ lib, pkgs, ... }:
|
||||
{
|
||||
name = "endlessh-go";
|
||||
meta.maintainers = with lib.maintainers; [ azahi ];
|
||||
meta.maintainers = [ ];
|
||||
|
||||
nodes = {
|
||||
server =
|
||||
|
|
|
|||
96
nixos/tests/extra-initrd.nix
Normal file
96
nixos/tests/extra-initrd.nix
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
{
|
||||
runTest,
|
||||
...
|
||||
}:
|
||||
let
|
||||
common =
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
virtualisation.useBootLoader = true;
|
||||
virtualisation.useEFIBoot = true;
|
||||
system.boot.extraInitrd.paths = [
|
||||
extraInitrdPath
|
||||
];
|
||||
|
||||
boot.loader.timeout = 2;
|
||||
|
||||
boot.initrd.systemd.mounts = [
|
||||
{
|
||||
what = "/canary.txt";
|
||||
where = "/sysroot/run/canary.txt";
|
||||
type = "none";
|
||||
options = "bind";
|
||||
unitConfig = {
|
||||
DefaultDependencies = false;
|
||||
};
|
||||
requiredBy = [ "initrd-fs.target" ];
|
||||
before = [ "initrd-fs.target" ];
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
extraInitrdPath = "custom.cpio";
|
||||
canaryCpio =
|
||||
pkgs:
|
||||
pkgs.runCommand "canary.cpio"
|
||||
{
|
||||
nativeBuildInputs = [ pkgs.cpio ];
|
||||
}
|
||||
''
|
||||
echo canary > canary.txt
|
||||
find . -print0 | cpio --null -o --format=newc > $out
|
||||
'';
|
||||
|
||||
testScript =
|
||||
# python
|
||||
''
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
|
||||
# Check that the extra cpio archive is on the ESP
|
||||
machine.succeed("test -e /boot/custom.cpio")
|
||||
|
||||
# Check that the initrd that we booted with contained the file from
|
||||
# the extra initrd and our initrd mount unit bound it into sysroot
|
||||
assert machine.succeed("cat /run/canary.txt").strip() == "canary"
|
||||
'';
|
||||
in
|
||||
{
|
||||
systemd-boot = runTest (
|
||||
{ pkgs, ... }: {
|
||||
name = "systemd-boot-extra-initrd";
|
||||
|
||||
nodes.machine = { config, ... }: {
|
||||
imports = [ common ];
|
||||
|
||||
boot.loader.systemd-boot = {
|
||||
enable = true;
|
||||
extraInstallCommands = ''
|
||||
cp ${canaryCpio pkgs} ${config.boot.loader.efi.efiSysMountPoint}/${extraInitrdPath}
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
inherit testScript;
|
||||
}
|
||||
);
|
||||
|
||||
limine = runTest {
|
||||
name = "limine-extra-initrd";
|
||||
|
||||
nodes.machine = { pkgs, config, ... }: {
|
||||
imports = [ common ];
|
||||
|
||||
boot.loader.limine = {
|
||||
enable = true;
|
||||
efiSupport = true;
|
||||
enableEditor = true;
|
||||
extraInstallCommands = ''
|
||||
cp ${canaryCpio pkgs} ${config.boot.loader.efi.efiSysMountPoint}/${extraInitrdPath}
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
inherit testScript;
|
||||
};
|
||||
}
|
||||
430
nixos/tests/matrix/matrix-authentication-service.nix
Normal file
430
nixos/tests/matrix/matrix-authentication-service.nix
Normal file
|
|
@ -0,0 +1,430 @@
|
|||
{ pkgs, lib, ... }:
|
||||
let
|
||||
mailerCerts = import ../common/acme/server/snakeoil-certs.nix;
|
||||
ca_key = mailerCerts.ca.key;
|
||||
ca_pem = mailerCerts.ca.cert;
|
||||
|
||||
mkBundle =
|
||||
domain:
|
||||
pkgs.runCommand "bundle-${domain}"
|
||||
{
|
||||
nativeBuildInputs = [ pkgs.minica ];
|
||||
}
|
||||
''
|
||||
minica -ca-cert ${ca_pem} -ca-key ${ca_key} \
|
||||
-domains ${domain}
|
||||
install -Dm444 -t $out ${domain}/{key,cert}.pem
|
||||
'';
|
||||
|
||||
mkDexConfig =
|
||||
domain: primaryIP:
|
||||
let
|
||||
bundle = mkBundle domain;
|
||||
in
|
||||
{
|
||||
enable = true;
|
||||
settings = {
|
||||
issuer = "https://${dexDomain}:5556";
|
||||
storage.type = "sqlite3";
|
||||
web = {
|
||||
https = "${primaryIP}:5556";
|
||||
tlsCert = "${bundle}/cert.pem";
|
||||
tlsKey = "${bundle}/key.pem";
|
||||
};
|
||||
oauth2.skipApprovalScreen = true;
|
||||
connectors = [
|
||||
{
|
||||
type = "mockPassword";
|
||||
id = "mock";
|
||||
name = "Example";
|
||||
config = {
|
||||
username = "${testUser}";
|
||||
password = "${testPassword}";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
testUser = "alice";
|
||||
testPassword = "AliceSuperSecretPassword123!";
|
||||
|
||||
matrixSecret = "test_matrix_shared_secret_0123456789abcdef";
|
||||
|
||||
synapseDomain = "hs1.test";
|
||||
|
||||
masDomain = "mas1.test";
|
||||
masULID = "01KVT6DSNT2MWD7WYMT2FY4SH5";
|
||||
|
||||
dexDomain = "dex1.test";
|
||||
oidcClientID = "matrix-authentication-service";
|
||||
oidcClientSecret = "lalalalalala";
|
||||
|
||||
loginCodeVerifier = "5kaYTTNVVehUrtJ8xi72ogdfwX8vxHMb3jEUBjyWcXQ";
|
||||
loginCodeChallenge = "FbNLCROaJHe4LJQ7FEm7XjqDoWazb3emTE89x6Nx0Ng";
|
||||
in
|
||||
{
|
||||
|
||||
name = "matrix-authentication-service-upstream";
|
||||
meta = {
|
||||
maintainers = pkgs.matrix-authentication-service.meta.maintainers ++ lib.teams.matrix.members;
|
||||
};
|
||||
|
||||
nodes = {
|
||||
hs1 =
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
nodes,
|
||||
...
|
||||
}:
|
||||
let
|
||||
bundle = mkBundle synapseDomain;
|
||||
in
|
||||
{
|
||||
networking = {
|
||||
hostName = lib.head (lib.strings.splitString "." synapseDomain);
|
||||
domain = lib.last (lib.strings.splitString "." synapseDomain);
|
||||
firewall.allowedTCPPorts = [
|
||||
80
|
||||
443
|
||||
8448
|
||||
];
|
||||
};
|
||||
|
||||
services.matrix-synapse = {
|
||||
enable = true;
|
||||
extras = [ "oidc" ];
|
||||
settings = {
|
||||
listeners = [
|
||||
{
|
||||
port = 8448;
|
||||
bind_addresses = [
|
||||
config.networking.primaryIPAddress
|
||||
];
|
||||
type = "http";
|
||||
tls = true;
|
||||
x_forwarded = false;
|
||||
resources = [
|
||||
{
|
||||
names = [
|
||||
"client"
|
||||
];
|
||||
compress = true;
|
||||
}
|
||||
{
|
||||
names = [
|
||||
"federation"
|
||||
];
|
||||
compress = false;
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
|
||||
database = {
|
||||
name = "psycopg2";
|
||||
args.password = "synapse";
|
||||
};
|
||||
redis = {
|
||||
enabled = true;
|
||||
host = "localhost";
|
||||
port = config.services.redis.servers.matrix-synapse.port;
|
||||
};
|
||||
tls_certificate_path = "${bundle}/cert.pem";
|
||||
tls_private_key_path = "${bundle}/key.pem";
|
||||
public_baseurl = "https://${synapseDomain}:8448";
|
||||
|
||||
# Delegate authentication to MAS
|
||||
matrix_authentication_service = {
|
||||
enabled = true;
|
||||
endpoint = "https://${masDomain}:8080";
|
||||
force_http2 = true;
|
||||
secret = matrixSecret;
|
||||
};
|
||||
};
|
||||
};
|
||||
services.postgresql = {
|
||||
enable = true;
|
||||
authentication = pkgs.lib.mkOverride 10 ''
|
||||
local all all trust
|
||||
host all all 127.0.0.1/32 trust
|
||||
host all all ::1/128 trust
|
||||
'';
|
||||
|
||||
# The database name and user are configured by the following options:
|
||||
# - services.matrix-synapse.database_name
|
||||
# - services.matrix-synapse.database_user
|
||||
#
|
||||
# The values used here represent the default values of the module.
|
||||
initialScript = pkgs.writeText "synapse-init.sql" ''
|
||||
CREATE ROLE "matrix-synapse" WITH LOGIN PASSWORD 'synapse';
|
||||
CREATE DATABASE "matrix-synapse" WITH OWNER "matrix-synapse"
|
||||
TEMPLATE template0
|
||||
LC_COLLATE = "C"
|
||||
LC_CTYPE = "C";
|
||||
'';
|
||||
};
|
||||
services.redis.servers.matrix-synapse = {
|
||||
enable = true;
|
||||
port = 6379;
|
||||
};
|
||||
security.pki.certificateFiles = [
|
||||
ca_pem
|
||||
];
|
||||
networking.extraHosts = ''
|
||||
${nodes.mas1.networking.primaryIPAddress} ${masDomain}
|
||||
${nodes.dex1.networking.primaryIPAddress} ${dexDomain}
|
||||
${nodes.hs1.networking.primaryIPAddress} ${synapseDomain}
|
||||
'';
|
||||
|
||||
environment.systemPackages = [
|
||||
pkgs.matrix-synapse
|
||||
pkgs.matrix-authentication-service
|
||||
];
|
||||
};
|
||||
|
||||
mas1 =
|
||||
{ nodes, ... }:
|
||||
let
|
||||
bundle = mkBundle masDomain;
|
||||
in
|
||||
{
|
||||
services.matrix-authentication-service = {
|
||||
enable = true;
|
||||
createDatabase = true;
|
||||
settings = {
|
||||
http = {
|
||||
public_base = "https://${masDomain}:8080/";
|
||||
tls = {
|
||||
certificate_file = "${bundle}/cert.pem";
|
||||
key_file = "${bundle}/key.pem";
|
||||
};
|
||||
listeners = [
|
||||
{
|
||||
name = "web";
|
||||
binds = [ { address = "0.0.0.0:8080"; } ];
|
||||
resources = [
|
||||
{ name = "discovery"; }
|
||||
{ name = "human"; }
|
||||
{ name = "oauth"; }
|
||||
];
|
||||
tls = {
|
||||
certificate_file = "${bundle}/cert.pem";
|
||||
key_file = "${bundle}/key.pem";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
matrix = {
|
||||
homeserver = "hs1";
|
||||
endpoint = "https://${synapseDomain}:8448/";
|
||||
secret_file = "/var/lib/matrix-authentication-service/matrix_secret";
|
||||
};
|
||||
database.uri = "postgresql:///matrix-authentication-service?host=/run/postgresql&user=matrix-authentication-service";
|
||||
secrets = {
|
||||
encryption_file = "/var/lib/matrix-authentication-service/encryption";
|
||||
keys = [
|
||||
{
|
||||
kid = "rsa-4096";
|
||||
key_file = "/var/lib/matrix-authentication-service/key_rsa_4096";
|
||||
}
|
||||
];
|
||||
};
|
||||
policy.data.client_registration.allow_insecure_uris = true;
|
||||
upstream_oauth2.providers = [
|
||||
{
|
||||
id = masULID;
|
||||
client_id = oidcClientID;
|
||||
client_secret = oidcClientSecret;
|
||||
issuer = "https://${dexDomain}:5556";
|
||||
scope = "openid email profile";
|
||||
token_endpoint_auth_method = "client_secret_post";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
services.postgresql.authentication = pkgs.lib.mkOverride 10 ''
|
||||
local all all trust
|
||||
host all all 127.0.0.1/32 trust
|
||||
host all all ::1/128 trust
|
||||
'';
|
||||
systemd.services.matrix-authentication-service.preStart = ''
|
||||
echo -n '${matrixSecret}' > /var/lib/matrix-authentication-service/matrix_secret
|
||||
echo -n '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef' > /var/lib/matrix-authentication-service/encryption
|
||||
${pkgs.openssl}/bin/openssl genrsa -out /var/lib/matrix-authentication-service/key_rsa_4096 4096
|
||||
'';
|
||||
security.pki.certificateFiles = [ ca_pem ];
|
||||
networking.extraHosts = ''
|
||||
${nodes.hs1.networking.primaryIPAddress} ${synapseDomain}
|
||||
${nodes.dex1.networking.primaryIPAddress} ${dexDomain}
|
||||
'';
|
||||
networking.firewall.allowedTCPPorts = [
|
||||
8080
|
||||
8081
|
||||
];
|
||||
};
|
||||
|
||||
dex1 =
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
nodes,
|
||||
...
|
||||
}:
|
||||
{
|
||||
services.dex = lib.mkMerge [
|
||||
(mkDexConfig dexDomain config.networking.primaryIPAddress)
|
||||
{
|
||||
settings.staticClients = [
|
||||
{
|
||||
id = oidcClientID;
|
||||
name = "Matrix";
|
||||
redirectURIs = [ "https://${masDomain}:8080/upstream/callback/${masULID}" ];
|
||||
secret = oidcClientSecret;
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
security.pki.certificateFiles = [ ca_pem ];
|
||||
networking.extraHosts = ''
|
||||
${nodes.hs1.networking.primaryIPAddress} ${synapseDomain}
|
||||
${nodes.mas1.networking.primaryIPAddress} ${masDomain}
|
||||
${nodes.dex1.networking.primaryIPAddress} ${dexDomain}
|
||||
'';
|
||||
networking.firewall.allowedTCPPorts = [ 5556 ];
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
import json
|
||||
import re
|
||||
|
||||
|
||||
COOKIES = "-c /tmp/cookies.txt -b /tmp/cookies.txt"
|
||||
|
||||
|
||||
def visit(url, *opts):
|
||||
"""Follow the whole redirect chain from `url`; return `effective_url` and response body."""
|
||||
out = dex1.succeed(
|
||||
f"curl -sL {COOKIES} {' '.join(opts)} -w '\\n%{{url_effective}}' '{url.strip()}'"
|
||||
)
|
||||
body, _, effective = out.rpartition("\n")
|
||||
return effective.strip(), body
|
||||
|
||||
|
||||
def location(url, *opts):
|
||||
"""Request `url` and return where it redirects, but don't follow it.
|
||||
|
||||
Used for the OAuth callback, which points at http://localhost:1234 where
|
||||
nothing is listening, so `curl --location` would ultimately fail.
|
||||
"""
|
||||
return dex1.succeed(
|
||||
f"curl -s {COOKIES} -w '%{{redirect_url}}' -o /dev/null "
|
||||
f"{' '.join(opts)} '{url.strip()}'"
|
||||
).strip()
|
||||
|
||||
|
||||
def extract_csrf(html):
|
||||
match = re.search(r'name="csrf" value="([^"]+)"', html)
|
||||
assert match is not None, f"unable to find csrf token in {html}"
|
||||
return match.group(1)
|
||||
|
||||
|
||||
def authorize():
|
||||
"""Start the OIDC flow and return the first redirect URL."""
|
||||
return dex1.succeed(
|
||||
"scope='openid urn:matrix:org.matrix.msc2967.client:api:*'; "
|
||||
"curl -fs -G -w '%{redirect_url}' -o /dev/null https://${masDomain}:8080/authorize "
|
||||
f"-d response_type=code -d client_id={client_id} "
|
||||
"-d redirect_uri=http://localhost:1234/callback "
|
||||
'--data-urlencode "scope=$scope" '
|
||||
"-d state=somestate -d code_challenge=${loginCodeChallenge} "
|
||||
"-d code_challenge_method=S256"
|
||||
)
|
||||
|
||||
|
||||
start_all()
|
||||
|
||||
# wait locally until units are ready
|
||||
dex1.wait_for_unit("dex.service")
|
||||
hs1.wait_for_unit("matrix-synapse.service")
|
||||
mas1.wait_for_unit("matrix-authentication-service.service")
|
||||
hs1.wait_until_succeeds("curl --fail -s --cacert ${ca_pem} https://${synapseDomain}:8448/")
|
||||
hs1.wait_until_succeeds("journalctl -u matrix-synapse.service | grep -q 'Connected to redis'")
|
||||
hs1.require_unit_state("postgresql.target")
|
||||
mas1.wait_for_open_port(8080)
|
||||
|
||||
# cross-node reachability
|
||||
mas1.wait_until_succeeds("curl --fail --silent --show-error --cacert ${ca_pem} https://${dexDomain}:5556/.well-known/openid-configuration")
|
||||
mas1.wait_until_succeeds("curl --fail --silent --show-error --cacert ${ca_pem} https://${synapseDomain}:8448/")
|
||||
hs1.wait_until_succeeds("curl --fail --silent --show-error https://${masDomain}:8080/.well-known/openid-configuration")
|
||||
|
||||
# Register a fresh OAuth client and grab its client_id
|
||||
client_id_resp = json.loads(dex1.succeed(
|
||||
"curl -s -X POST https://${masDomain}:8080/oauth2/registration "
|
||||
"-H 'Content-Type: application/json' "
|
||||
"-d '{ \"client_name\": \"test_client\", \"client_uri\": \"http://localhost:1234/\", \"redirect_uris\": [\"http://localhost:1234/callback\"], \"response_types\": [\"code\"], \"grant_types\": [ \"authorization_code\" ], \"token_endpoint_auth_method\": \"none\" }'"
|
||||
))
|
||||
t.assertIn("client_id", client_id_resp)
|
||||
client_id = client_id_resp["client_id"]
|
||||
|
||||
with subtest("Register"):
|
||||
location(authorize()) # follow /authorize to put the session cookie in the jar.
|
||||
|
||||
# To login with Upstream (Dex) the page returns a clickable link; we hardcode
|
||||
# it here since we already know its shape.
|
||||
upstream_url = f"https://${masDomain}:8080/upstream/authorize/${masULID}?id={client_id}&kind=continue_authorization_grant"
|
||||
_, mock_body = visit(upstream_url)
|
||||
_match = re.search(r'state=([^"&]+)', mock_body)
|
||||
assert _match is not None, f"unable to find state in {mock_body}"
|
||||
oidc_state = _match.group(1)
|
||||
|
||||
next_url, body = visit(
|
||||
f"https://${dexDomain}:5556/auth/mock/login?back=&state={oidc_state}",
|
||||
"-d 'login=${testUser}'",
|
||||
"-d 'password=${testPassword}'",
|
||||
)
|
||||
next_url, body = visit(next_url, f"-d 'csrf={extract_csrf(body)}&action=register&username=${testUser}'")
|
||||
visit(next_url, f"-d 'csrf={extract_csrf(body)}&action=set&display_name=Alice'")
|
||||
|
||||
with subtest("Login"):
|
||||
consent_url, body = visit(authorize())
|
||||
|
||||
# Alice already has a session cookie, so /consent redirects straight to the callback.
|
||||
callback_url = location(consent_url, f"-d 'csrf={extract_csrf(body)}&action=consent'")
|
||||
_match = re.search(r'code=([^&]+)', callback_url)
|
||||
assert _match is not None, f"unable to find code in {callback_url}"
|
||||
code = _match.group(1)
|
||||
|
||||
access_token_resp = json.loads(dex1.succeed(
|
||||
"curl -s -X POST https://${masDomain}:8080/oauth2/token "
|
||||
"-d 'grant_type=authorization_code' "
|
||||
f"-d 'client_id={client_id}' -d 'code={code}' "
|
||||
"-d 'redirect_uri=http://localhost:1234/callback' "
|
||||
"-d 'code_verifier=${loginCodeVerifier}'"
|
||||
))
|
||||
t.assertIn("access_token", access_token_resp)
|
||||
access_token = access_token_resp["access_token"]
|
||||
|
||||
with subtest("Create Room"):
|
||||
room_id_resp = json.loads(dex1.succeed(
|
||||
"curl --fail -s -X POST https://${synapseDomain}:8448/_matrix/client/v3/createRoom "
|
||||
"-H 'Content-Type: application/json' "
|
||||
f"-H 'Authorization: Bearer {access_token}' "
|
||||
"-d '{}'"
|
||||
))
|
||||
t.assertIn("room_id", room_id_resp)
|
||||
room_id = room_id_resp["room_id"]
|
||||
|
||||
with subtest("Send Message"):
|
||||
dex1.succeed(
|
||||
"curl -fs -X POST "
|
||||
f"https://${synapseDomain}:8448/_matrix/client/v3/rooms/{room_id}/send/m.room.message "
|
||||
f"-H 'Authorization: Bearer {access_token}' "
|
||||
"-H 'Content-Type: application/json' "
|
||||
"-d '{\"msgtype\":\"m.text\",\"body\":\"hello from alice\"}' | grep event_id"
|
||||
)
|
||||
'';
|
||||
}
|
||||
37
nixos/tests/nginx-lua.nix
Normal file
37
nixos/tests/nginx-lua.nix
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
name = "nginx-lua";
|
||||
|
||||
meta.maintainers = [ lib.maintainers.kranzes ];
|
||||
|
||||
nodes.machine = {
|
||||
services.nginx = {
|
||||
enable = true;
|
||||
lua = {
|
||||
enable = true;
|
||||
extraPackages = p: [
|
||||
p.lua-resty-lrucache
|
||||
p.lua-cjson
|
||||
];
|
||||
};
|
||||
virtualHosts."localhost".locations."/" = {
|
||||
extraConfig = ''
|
||||
default_type text/plain;
|
||||
content_by_lua_block {
|
||||
local cache = require("resty.lrucache").new(8)
|
||||
cache:set("greeting", require("cjson").decode('"Hello world!"'))
|
||||
ngx.say((cache:get("greeting")))
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
machine.wait_for_unit("nginx")
|
||||
machine.wait_for_open_port(80)
|
||||
|
||||
response = machine.wait_until_succeeds("curl -fsS http://127.0.0.1/").strip()
|
||||
assert response == "Hello world!", f"Expected 'Hello world!', got '{response}'"
|
||||
'';
|
||||
}
|
||||
|
|
@ -1,12 +1,4 @@
|
|||
{ pkgs, lib, ... }:
|
||||
let
|
||||
luaLibs = [
|
||||
pkgs.lua.pkgs.markdown
|
||||
];
|
||||
|
||||
getLuaPath = lib: "${lib}/share/lua/${pkgs.lua.luaversion}/?.lua";
|
||||
luaPath = lib.concatStringsSep ";" (map getLuaPath luaLibs);
|
||||
in
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
name = "openresty-lua";
|
||||
meta = with pkgs.lib.maintainers; {
|
||||
|
|
@ -15,7 +7,7 @@ in
|
|||
|
||||
nodes = {
|
||||
webserver =
|
||||
{ pkgs, lib, ... }:
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
networking = {
|
||||
extraHosts = ''
|
||||
|
|
@ -27,9 +19,10 @@ in
|
|||
enable = true;
|
||||
package = pkgs.openresty;
|
||||
|
||||
commonHttpConfig = ''
|
||||
lua_package_path '${luaPath};;';
|
||||
'';
|
||||
lua = {
|
||||
enable = true;
|
||||
extraPackages = p: [ p.markdown ];
|
||||
};
|
||||
|
||||
virtualHosts."default.test" = {
|
||||
default = true;
|
||||
|
|
|
|||
|
|
@ -12,26 +12,26 @@ vscode-utils.buildVscodeMarketplaceExtension {
|
|||
sources = {
|
||||
"x86_64-linux" = {
|
||||
arch = "linux-x64";
|
||||
hash = "sha256-qXGdFXx8Vr9oVStBjaeWEsQjhQUbp9MnLUfJtyhgwkA=";
|
||||
hash = "sha256-lhDt8XEF90y4pj8RLUZgfZNmHkV1XlmHsYuT6sGJMRc=";
|
||||
};
|
||||
"x86_64-darwin" = {
|
||||
arch = "darwin-x64";
|
||||
hash = "sha256-Bd3ool5Ep8I5iiTMUHF48r/sf3F1dROx6Umns0pDGzE=";
|
||||
hash = "sha256-SqFRn5FVQ+LcpmYT7/AIdIKTOxbapaKvPi+I360dVW8=";
|
||||
};
|
||||
"aarch64-linux" = {
|
||||
arch = "linux-arm64";
|
||||
hash = "sha256-Jv2lrdvY0tthJM2fifUlCW/QBzEZAa8QDHj4o+a4KxY=";
|
||||
hash = "sha256-iuYVCG4YWPFI8o4GmuNjkbXvzJsAre0gSSEWq6CUk2E=";
|
||||
};
|
||||
"aarch64-darwin" = {
|
||||
arch = "darwin-arm64";
|
||||
hash = "sha256-VooAoTyysIFH1AaidcoRs7fJpID0LbmWnLdivGZfdrM=";
|
||||
hash = "sha256-wEp7kaEnkdBl44WjKuDBjR5SEjYNdgIX7DdJWKvv6I4=";
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
name = "ruff";
|
||||
publisher = "charliermarsh";
|
||||
version = "2026.48.0";
|
||||
version = "2026.54.0";
|
||||
}
|
||||
// sources.${stdenvNoCC.hostPlatform.system}
|
||||
or (throw "Unsupported system ${stdenvNoCC.hostPlatform.system}");
|
||||
|
|
|
|||
|
|
@ -497,8 +497,8 @@ let
|
|||
mktplcRef = {
|
||||
publisher = "banacorn";
|
||||
name = "agda-mode";
|
||||
version = "0.8.0";
|
||||
hash = "sha256-2xYC+tStBXTL4koqUOcyxQUTDTipeUMTFLbrwqA6p7Q=";
|
||||
version = "0.10.0";
|
||||
hash = "sha256-rz3Ehq/2AewE5ADYHVk8pHICSWO58i8v+nBwzkFkGCY=";
|
||||
};
|
||||
meta = {
|
||||
changelog = "https://marketplace.visualstudio.com/items/banacorn.agda-mode/changelog";
|
||||
|
|
|
|||
|
|
@ -11,13 +11,13 @@
|
|||
}:
|
||||
mkLibretroCore {
|
||||
core = "pcsx2";
|
||||
version = "0-unstable-2026-06-01";
|
||||
version = "0-unstable-2026-06-24";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "libretro";
|
||||
repo = "ps2";
|
||||
rev = "65e8afb9e9ca0a3f3af32d9b35d7d8537cd3cbc1";
|
||||
hash = "sha256-H6lZLLO1+ir+vPchq3XGHKsepmYLbohQFvoA0+yiQo0=";
|
||||
rev = "6d11ca54728b0c9e0a4bf3da743d56c7d29abb4e";
|
||||
hash = "sha256-JE2EU/ugtXwEqYIzd0JSWXUy29X44hYHiC/LfaaOjkw=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -14,13 +14,13 @@
|
|||
}:
|
||||
mkLibretroCore {
|
||||
core = "play";
|
||||
version = "0-unstable-2026-06-06";
|
||||
version = "0-unstable-2026-06-22";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jpd002";
|
||||
repo = "Play-";
|
||||
rev = "ee1334610cb2181bd9a84e837ba3ea667ebdb16a";
|
||||
hash = "sha256-oriF08elBRg8jTlPz1Qoc6SmKQPknkegJlOtcOV4RX8=";
|
||||
rev = "1e4f393f3c52581cdec7867ddadc47f6b4d20cec";
|
||||
hash = "sha256-a02AsJg7mm/fUBN/5IC2Q6NexLYsBYp74bfqfJosaxc=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -54,13 +54,13 @@
|
|||
"vendorHash": "sha256-sESuNlWNyjjGYb7z+tQF7RGBgicnPISuwXRzB+QJ7E4="
|
||||
},
|
||||
"aminueza_minio": {
|
||||
"hash": "sha256-TLwOp7dSMjwOjlxEzYbFgw/S+Zkv+tCdknSjonmsRJo=",
|
||||
"hash": "sha256-DfpZjIkjo5bEZ2BtHJoBLtjEDAD6ZiqpoCOMbmd1Jvo=",
|
||||
"homepage": "https://registry.terraform.io/providers/aminueza/minio",
|
||||
"owner": "aminueza",
|
||||
"repo": "terraform-provider-minio",
|
||||
"rev": "v3.38.0",
|
||||
"rev": "v3.38.1",
|
||||
"spdx": "AGPL-3.0",
|
||||
"vendorHash": "sha256-BShrfr4EUvcpn0cLaohm1r5XqER4ba7bokHKuHxcW+g="
|
||||
"vendorHash": "sha256-OLabFXYTe+Yhlf0Ja63tCcrc5mvPeXfN7yLoRZCkdvg="
|
||||
},
|
||||
"argoproj-labs_argocd": {
|
||||
"hash": "sha256-c6+WY4oXL8evvPk/RzVrwtgq4XLB/LzAH5tpjErbE60=",
|
||||
|
|
@ -200,13 +200,13 @@
|
|||
"vendorHash": "sha256-b27UcoNuaX3PxNlJLdU9njCl5JymBQhxD6rq8yT3gi4="
|
||||
},
|
||||
"cloudamqp_cloudamqp": {
|
||||
"hash": "sha256-LAQ5MVZe4OSIJb7X6gdx1lPmgAEKZIm/7lL/93NTP6I=",
|
||||
"hash": "sha256-n78nZ01ley9ueYBZ7+bi0BLJ/RIc66HHjcmhFwDem3E=",
|
||||
"homepage": "https://registry.terraform.io/providers/cloudamqp/cloudamqp",
|
||||
"owner": "cloudamqp",
|
||||
"repo": "terraform-provider-cloudamqp",
|
||||
"rev": "v1.45.3",
|
||||
"rev": "v1.46.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-59bhibkok4w7dLTf96jZGk2di6TpR6IAqp0i3xmtlyI="
|
||||
"vendorHash": "sha256-rCWeetM6nhNb1I1PmB66E5K1ku9ODRqN87MU9y6W/dc="
|
||||
},
|
||||
"cloudflare_cloudflare": {
|
||||
"hash": "sha256-y3GAU5wLLETSrmYqGZs2I0qg8jnGcu32Xt/UHGS1NTA=",
|
||||
|
|
@ -373,11 +373,11 @@
|
|||
"vendorHash": "sha256-RtS88NqkO1nG/8znM0sQqsAIfDc+sOMy8N4T4hmvaVA="
|
||||
},
|
||||
"e-breuninger_netbox": {
|
||||
"hash": "sha256-e9244MaxEcmtYHT9zN4Nct2xpgBv8JOMe1VOW5y/2OQ=",
|
||||
"hash": "sha256-rCDopABF6BDJo4sdwfy+GrU9EPAIldjddj+j7opf8FA=",
|
||||
"homepage": "https://registry.terraform.io/providers/e-breuninger/netbox",
|
||||
"owner": "e-breuninger",
|
||||
"repo": "terraform-provider-netbox",
|
||||
"rev": "v5.6.1",
|
||||
"rev": "v5.6.2",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-WaeRXTqXakFTYMHio+VLIKS4kS5wHQdY5zdJYwrlVjE="
|
||||
},
|
||||
|
|
@ -715,13 +715,13 @@
|
|||
"vendorHash": null
|
||||
},
|
||||
"hetznercloud_hcloud": {
|
||||
"hash": "sha256-yIzI1p4U8klNqqFqiMuKhVb8njoslJ+vDXFOv+9EmFw=",
|
||||
"hash": "sha256-Clbg0LS5SYpaEyevbZ+oDG3xFXEWjV376JvStPi3MnU=",
|
||||
"homepage": "https://registry.terraform.io/providers/hetznercloud/hcloud",
|
||||
"owner": "hetznercloud",
|
||||
"repo": "terraform-provider-hcloud",
|
||||
"rev": "v1.64.0",
|
||||
"rev": "v1.66.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-f49amYWzWSG9tzY6wvpxtTFiyJ8zC/Lc1hIQtzdgJRs="
|
||||
"vendorHash": "sha256-6knIcS3hkzt3R1IC1hA6EKOceJl51/pJXpftEaZjgtY="
|
||||
},
|
||||
"huaweicloud_huaweicloud": {
|
||||
"hash": "sha256-Ao3CkaQBe172Ookcgl+ugeHH5ClbyOsSpLb4+j9DAZQ=",
|
||||
|
|
@ -1319,11 +1319,11 @@
|
|||
"vendorHash": "sha256-7ZoJg1HEVj5Nygr46lmBZeJDfZuU4F90yntrgkBVgGg="
|
||||
},
|
||||
"tencentcloudstack_tencentcloud": {
|
||||
"hash": "sha256-nv+X3mptE51m7WwYzRqyvvrVR5tUikOYM06axtZIznk=",
|
||||
"hash": "sha256-p8AW+AzezOP6N3wzlLZOMoTbSwb/cil7cmXkdwheXtE=",
|
||||
"homepage": "https://registry.terraform.io/providers/tencentcloudstack/tencentcloud",
|
||||
"owner": "tencentcloudstack",
|
||||
"repo": "terraform-provider-tencentcloud",
|
||||
"rev": "v1.83.2",
|
||||
"rev": "v1.83.6",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
|
|
|
|||
|
|
@ -7,13 +7,13 @@
|
|||
|
||||
mkHyprlandPlugin (finalAttrs: {
|
||||
pluginName = "hypr-darkwindow";
|
||||
version = "0.55.2";
|
||||
version = "0.55.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "micha4w";
|
||||
repo = "Hypr-DarkWindow";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-8Ht9yhlwOtDWFvL6VYlryNxyRethFqc0iWtBetP0xws=";
|
||||
hash = "sha256-By/4CmpJvVvcBoyTtelH7MSLCKRaoXLCpiSfrbZIePc=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
|
|
|
|||
|
|
@ -7,14 +7,14 @@
|
|||
|
||||
python3Packages.buildPythonApplication (finalAttrs: {
|
||||
pname = "asciimol";
|
||||
version = "1.2.5";
|
||||
version = "1.2.7";
|
||||
pyproject = true;
|
||||
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchPypi {
|
||||
inherit (finalAttrs) pname version;
|
||||
hash = "sha256-sB8hHtjfCv5jFHXEoUG7zNn3d3QKihPLbgnR+Jyz4GQ=";
|
||||
hash = "sha256-SqwViOnVx1TcpY8Kd5VQCg1A8KQnBhL8aq9Gsrwer3k=";
|
||||
};
|
||||
|
||||
build-system = with python3Packages; [ setuptools ];
|
||||
|
|
|
|||
|
|
@ -49,6 +49,8 @@ buildNpmPackage rec {
|
|||
mv "$out/bin/pyright-langserver" "$out/bin/basedpyright-langserver"
|
||||
# Remove dangling symlinks created during installation (remove -delete to just see the files, or -print '%l\n' to see the target
|
||||
find -L $out -type l -print -delete
|
||||
# Remove native module build artifacts that reference nodejs source
|
||||
rm -rf "$out/lib/node_modules/pyright-root/node_modules/keytar/build"
|
||||
'';
|
||||
|
||||
nativeInstallCheckInputs = [ versionCheckHook ];
|
||||
|
|
|
|||
107
pkgs/by-name/cc/ccusage/package.nix
Normal file
107
pkgs/by-name/cc/ccusage/package.nix
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
{
|
||||
lib,
|
||||
stdenv,
|
||||
rustPlatform,
|
||||
fetchFromGitHub,
|
||||
fetchurl,
|
||||
pkg-config,
|
||||
apple-sdk_15,
|
||||
libiconv,
|
||||
versionCheckHook,
|
||||
nix-update-script,
|
||||
runCommand,
|
||||
jq,
|
||||
}:
|
||||
|
||||
let
|
||||
# ccusage embeds the LiteLLM model-pricing table at build time. Its build
|
||||
# script otherwise downloads this file from the network, which fails in the
|
||||
# sandbox. Upstream pins the data via a flake input and points
|
||||
# CCUSAGE_PRICING_JSON_PATH at it; mirror that exact revision here so the
|
||||
# build is offline and reproducible (see package.nix + flake.lock in the
|
||||
# upstream repo at tag v20.0.6). Bump this revision together with the package
|
||||
# version; nix-update only refreshes the src and cargo hashes.
|
||||
litellmPricing = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/BerriAI/litellm/f27df8d516802ce4c1b32973992154fe83b851cf/model_prices_and_context_window.json";
|
||||
hash = "sha256-zJa6H2EwP9s+hMVs78Y+hwo4UX1dHRtvX5J3MdGh5aI=";
|
||||
};
|
||||
in
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "ccusage";
|
||||
version = "20.0.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ryoppippi";
|
||||
repo = "ccusage";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-uf/FlPprxx4jh74YwjmYMtoIHpTkKrWTLetbNoYiFv4=";
|
||||
};
|
||||
|
||||
# The Cargo workspace lives in rust/, not at the repo root.
|
||||
cargoRoot = "rust";
|
||||
buildAndTestSubdir = "rust";
|
||||
|
||||
cargoHash = "sha256-izA2Gs5nPmt0zn6/e1xM80vyyQHYKGEUDpUFRpyFiB8=";
|
||||
|
||||
__structuredAttrs = true;
|
||||
strictDeps = true;
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
apple-sdk_15
|
||||
libiconv
|
||||
];
|
||||
|
||||
env.CCUSAGE_PRICING_JSON_PATH = "${litellmPricing}";
|
||||
|
||||
# Build only the ccusage binary out of the multi-crate workspace.
|
||||
cargoBuildFlags = [
|
||||
"-p"
|
||||
"ccusage"
|
||||
"--bin"
|
||||
"ccusage"
|
||||
];
|
||||
|
||||
# Upstream disables the test suite in its own Nix build; parts of it rely on
|
||||
# network access and live pricing data. versionCheckHook still exercises the
|
||||
# built binary below.
|
||||
doCheck = false;
|
||||
|
||||
nativeInstallCheckInputs = [ versionCheckHook ];
|
||||
doInstallCheck = true;
|
||||
|
||||
passthru = {
|
||||
updateScript = nix-update-script { };
|
||||
|
||||
tests = {
|
||||
# With no agent data on disk, ccusage must still emit a valid, empty JSON
|
||||
# report. --offline keeps it from reaching the network, exercising the
|
||||
# pricing table baked in at build time. This guards the data discovery,
|
||||
# JSON serialization, and offline-pricing paths without needing fixtures.
|
||||
smoke =
|
||||
runCommand "ccusage-smoke-test"
|
||||
{
|
||||
nativeBuildInputs = [
|
||||
finalAttrs.finalPackage
|
||||
jq
|
||||
];
|
||||
}
|
||||
''
|
||||
export HOME="$(mktemp -d)"
|
||||
ccusage daily --json --offline > report.json
|
||||
jq -e '.daily == [] and .totals.totalTokens == 0' report.json
|
||||
touch "$out"
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Analyze coding agent CLI token usage and costs from local data";
|
||||
homepage = "https://github.com/ryoppippi/ccusage";
|
||||
changelog = "https://github.com/ryoppippi/ccusage/releases/tag/v${finalAttrs.version}";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ thrix ];
|
||||
mainProgram = "ccusage";
|
||||
};
|
||||
})
|
||||
41
pkgs/by-name/co/codebase-memory-mcp/package.nix
Normal file
41
pkgs/by-name/co/codebase-memory-mcp/package.nix
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
gnumake,
|
||||
zlib,
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "codebase-memory-mcp";
|
||||
version = "0.8.1";
|
||||
src = fetchFromGitHub {
|
||||
owner = "DeusData";
|
||||
repo = "codebase-memory-mcp";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-H0l8H2JhPT1Rs0p+CJC1a1qYtnZNgLGe6n7PmM+WvE4=";
|
||||
};
|
||||
nativeBuildInputs = [ gnumake ];
|
||||
buildInputs = [ zlib ];
|
||||
strictDeps = true;
|
||||
__structuredAttrs = true;
|
||||
# scripts/build.sh verifies CC via `file`, which fails on Nix's compiler wrapper.
|
||||
# Call make directly — mirrors upstream flake.nix.
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
make -j$NIX_BUILD_CORES -f Makefile.cbm cbm CFLAGS_EXTRA='-DCBM_VERSION=\"${finalAttrs.version}\"'
|
||||
runHook postBuild
|
||||
'';
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
install -Dm755 build/c/codebase-memory-mcp $out/bin/codebase-memory-mcp
|
||||
runHook postInstall
|
||||
'';
|
||||
meta = {
|
||||
homepage = "https://github.com/DeusData/codebase-memory-mcp";
|
||||
description = "High-performance C11 MCP server that indexes codebases into a persistent knowledge graph";
|
||||
mainProgram = "codebase-memory-mcp";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ gdifolco ];
|
||||
platforms = lib.platforms.linux ++ lib.platforms.darwin;
|
||||
};
|
||||
})
|
||||
|
|
@ -10,16 +10,16 @@
|
|||
}:
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "concord-tui";
|
||||
version = "2.2.2";
|
||||
version = "2.2.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "chojs23";
|
||||
repo = "concord";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-oKaP5ff19RYg73LsilD1Hxaz7nSr8QK/08jM1TylbWU=";
|
||||
hash = "sha256-WSZsN1+ZhFWTHl9BvKERrr0lQj06N392Jo2nYjNm5QY=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-jJkAXzmZAUHLIO2uVeR3KNTBYAnp31m49mk66/lKHHY=";
|
||||
cargoHash = "sha256-LJnwO9507nLptKARCih58+wKrHzLGu+qQ/guf1oezX8=";
|
||||
|
||||
buildInputs = [
|
||||
opus
|
||||
|
|
|
|||
|
|
@ -1,17 +1,30 @@
|
|||
From 0cfacb99db5940dabc385e7bc4534dfefa60fcfd Mon Sep 17 00:00:00 2001
|
||||
From: fliiiix <hi@l33t.name>
|
||||
Date: Thu, 25 Jun 2026 10:46:35 +0200
|
||||
Subject: [PATCH] cpm
|
||||
|
||||
---
|
||||
CMakeLists.txt | 4 ----
|
||||
tests/CMakeLists.txt | 11 +----------
|
||||
2 files changed, 1 insertion(+), 14 deletions(-)
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 7dbc2c3..cfdd98d 100644
|
||||
index 51fade9b4..1b93bffd2 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -11,7 +11,6 @@ project(Crow
|
||||
@@ -60,10 +60,6 @@ option(CROW_ENABLE_SSL "Enable Crow's SSL feature for supporting https" OFF)
|
||||
option(CROW_ENABLE_COMPRESSION "Enable Crow's Compression feature for supporting compressed http content" OFF)
|
||||
option(CROW_ENABLE_TSAN "Enable ThreadSanitizer" OFF)
|
||||
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
-include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/CPM.cmake)
|
||||
|
||||
# Make sure Findasio.cmake module is found
|
||||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
||||
-if(CROW_GENERATE_SBOM OR CROW_BUILD_TESTS)
|
||||
- include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/CPM.cmake)
|
||||
-endif ()
|
||||
-
|
||||
if(CROW_GENERATE_SBOM)
|
||||
CPMAddPackage(
|
||||
NAME cmake-sbom
|
||||
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
|
||||
index 67c458c..2873530 100644
|
||||
index 80f6dd364..e01adeb2f 100644
|
||||
--- a/tests/CMakeLists.txt
|
||||
+++ b/tests/CMakeLists.txt
|
||||
@@ -5,18 +5,9 @@ set(CMAKE_POLICY_DEFAULT_CMP0077 new)
|
||||
|
|
@ -23,7 +36,7 @@ index 67c458c..2873530 100644
|
|||
+find_package(Catch2 REQUIRED)
|
||||
|
||||
-CPMAddPackage(Catch2
|
||||
- VERSION 3.10.0
|
||||
- VERSION 3.12.0
|
||||
- GITHUB_REPOSITORY catchorg/Catch2
|
||||
- OPTIONS
|
||||
- "CATCH_INSTALL_DOCS Off"
|
||||
|
|
@ -34,3 +47,6 @@ index 67c458c..2873530 100644
|
|||
enable_testing()
|
||||
|
||||
# list the test sources
|
||||
--
|
||||
2.43.0
|
||||
|
||||
|
|
|
|||
|
|
@ -10,13 +10,13 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "crow";
|
||||
version = "1.3.0.0";
|
||||
version = "1.3.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "CrowCpp";
|
||||
repo = "Crow";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-QLYQ0RouqDDvhnBF79O/9M7IwlF0eQ3HTqR6bXWm574=";
|
||||
hash = "sha256-MN2x1hgJ9TziZFPSZn6RuAEfl4mZv3ijU9LqQJkw6UM=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
|
|
|||
|
|
@ -11,16 +11,16 @@
|
|||
|
||||
buildGo126Module (finalAttrs: {
|
||||
pname = "crush";
|
||||
version = "0.74.1";
|
||||
version = "0.80.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "charmbracelet";
|
||||
repo = "crush";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-JnELv8Q2GlOKhYbBRUDY8m8XuyyoD71Tw5qbnpbNxVY=";
|
||||
hash = "sha256-joSzU5+gufb9cEsIOVVSnEO9+Xoy1g+gqzvmpbkIky8=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-D2GJ3ORyJy5Dn0MZJWgB3Wv1FyDoAWqLI3W0yU1q5Lw=";
|
||||
vendorHash = "sha256-cA39djwy7NOBeJELvrPSW2mRcyDEhsghPOzzQ9O180c=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
|
|
|
|||
|
|
@ -35,6 +35,13 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
|||
pname = "deno";
|
||||
version = "2.8.3";
|
||||
|
||||
__structuredAttrs = true;
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
"denort"
|
||||
];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "denoland";
|
||||
repo = "deno";
|
||||
|
|
@ -225,7 +232,9 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
|||
'';
|
||||
|
||||
postInstall = ''
|
||||
# Remove non-essential binaries like denort and test_server
|
||||
moveToOutput "bin/denort" "$denort"
|
||||
|
||||
# Remove non-essential binaries like test_server
|
||||
find $out/bin/* -not -name "deno" -delete
|
||||
|
||||
# Do what `deno x --install-alias` would do (it doesn't work with Nix-packaged Deno)
|
||||
|
|
@ -279,6 +288,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
|||
jk
|
||||
ofalvai
|
||||
mynacol
|
||||
anish
|
||||
];
|
||||
maxSilent = 14400; # 4h, double the default of 7200s; sometimes needed for x86_64-darwin on hydra
|
||||
platforms = [
|
||||
|
|
|
|||
|
|
@ -7,29 +7,29 @@
|
|||
}:
|
||||
|
||||
let
|
||||
version = "2026.7.16";
|
||||
version = "2026.8.18";
|
||||
|
||||
throwSystem = throw "Unsupported system: ${stdenvNoCC.hostPlatform.system}";
|
||||
|
||||
srcs = {
|
||||
x86_64-linux = fetchurl {
|
||||
url = "https://static.devin.ai/cli/${version}/devin-${version}-x86_64-unknown-linux.tar.gz";
|
||||
hash = "sha256-nbp5I6Ta6OFpz5P+TwKVxTdtoq3QcChii1QzYHizzzY=";
|
||||
hash = "sha256-3Uu6IFkwhr9whHR5LBGrDJQovlskGf9cGC7F8QmaBmE=";
|
||||
};
|
||||
|
||||
aarch64-linux = fetchurl {
|
||||
url = "https://static.devin.ai/cli/${version}/devin-${version}-aarch64-unknown-linux.tar.gz";
|
||||
hash = "sha256-8BiJnLlUk4BxTNo4tbZg6QHZjfMLRDEx/X9tcAenB9k=";
|
||||
hash = "sha256-En56i68uCcsP0jhxr5idyeMuO/p/SXsfZWDMUvW/GcY=";
|
||||
};
|
||||
|
||||
aarch64-darwin = fetchurl {
|
||||
url = "https://static.devin.ai/cli/${version}/devin-${version}-aarch64-apple-darwin.tar.gz";
|
||||
hash = "sha256-iRt56RmT7U3lgFpw/e9KFkAoBg6UuJNdf79/zHiRwc0=";
|
||||
hash = "sha256-n0GtTUnA9OYw4VmAQkGA4rcOGk9ifwYz+ouyJEkZpAo=";
|
||||
};
|
||||
|
||||
x86_64-darwin = fetchurl {
|
||||
url = "https://static.devin.ai/cli/${version}/devin-${version}-x86_64-apple-darwin.tar.gz";
|
||||
hash = "sha256-luSuvOyXHPs4NDzF9Iql9cFUN1ac9key/bNr1saLZBE=";
|
||||
hash = "sha256-KZ7FeZjOIR+/vW7Tt3BOBQUsShXOglaRbxxGSR6R2Bg=";
|
||||
};
|
||||
};
|
||||
in
|
||||
|
|
|
|||
|
|
@ -9,16 +9,16 @@
|
|||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "doggo";
|
||||
version = "1.1.7";
|
||||
version = "1.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mr-karan";
|
||||
repo = "doggo";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-Q4a859MoVSZ4hjXwaIekL1En6xpd4bZPQ9NGAkxSPto=";
|
||||
hash = "sha256-xzwgNuvEedqC0DS0cMi472x2Tx0mWdk+22E9Bz1G9Tk=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-JMyGYG3cLOZmH9EcLPe+5+ViHv7Z7brLj5uqJrPYm7A=";
|
||||
vendorHash = "sha256-AJQQVhrYhgazCwI2Dnvorj4Y78iwVO7mhx1gzZUA9BI=";
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
subPackages = [ "cmd/doggo" ];
|
||||
|
||||
|
|
|
|||
|
|
@ -9,16 +9,16 @@
|
|||
}:
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "encrypted-dns-server";
|
||||
version = "0.9.20";
|
||||
version = "0.9.21";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "DNSCrypt";
|
||||
repo = "encrypted-dns-server";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-tyNyIgfOVTSuDiBUILdcNsHt0aRcn7cxiS0CND6FUS4=";
|
||||
hash = "sha256-WdKAQISl82ii/C9pILd7HWEE2qtdZpMF32/pRc7lPpk=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-u8u6doAf8PjkaVqZN2JCdp6wXjilGGzlloePH0DNrt4=";
|
||||
cargoHash = "sha256-JZRKcvlxciU5MXGLBIXuZeU6tjxKaRaUn3xARN+5JtM=";
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ buildGoModule (finalAttrs: {
|
|||
homepage = "https://github.com/shizunge/endlessh-go";
|
||||
changelog = "https://github.com/shizunge/endlessh-go/releases/tag/${finalAttrs.version}";
|
||||
license = lib.licenses.gpl3Plus;
|
||||
maintainers = with lib.maintainers; [ azahi ];
|
||||
maintainers = [ ];
|
||||
mainProgram = "endlessh-go";
|
||||
};
|
||||
})
|
||||
|
|
|
|||
|
|
@ -10,13 +10,13 @@
|
|||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "fan2go";
|
||||
version = "0.13.0";
|
||||
version = "0.14.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "markusressel";
|
||||
repo = "fan2go";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-JU6hk3JJwoiC3R+Qx6QKzALnvhTA0/luQzO5X6Cpb/I=";
|
||||
hash = "sha256-TveCqAxZhxXT/nk/M14/tDhFQfNs++bRMmV7bN1VB3k=";
|
||||
leaveDotGit = true;
|
||||
postFetch = ''
|
||||
cd $out
|
||||
|
|
@ -25,7 +25,7 @@ buildGoModule (finalAttrs: {
|
|||
'';
|
||||
};
|
||||
|
||||
vendorHash = "sha256-6rcU7Qtzz80WcygeLVftdpGYAuzGmWD0M+ZVxgGcgnI=";
|
||||
vendorHash = "sha256-CzwZghOBKEiRnUl3NCP1PBfW68iGIAJPDsmPUJThGog=";
|
||||
|
||||
nativeBuildInputs = lib.optionals enableNVML [
|
||||
autoAddDriverRunpath
|
||||
|
|
|
|||
|
|
@ -6,13 +6,13 @@
|
|||
|
||||
python3Packages.buildPythonApplication (finalAttrs: {
|
||||
pname = "frida-tools";
|
||||
version = "14.10.2";
|
||||
version = "14.10.4";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchPypi {
|
||||
inherit (finalAttrs) version;
|
||||
pname = "frida_tools";
|
||||
hash = "sha256-DGv5zyOkxQHXhFFrbcG4zVkNhOosymmEZdX2Aphdh/0=";
|
||||
hash = "sha256-eixUS1RdCVBA//vTdoooekJjQ9rYkJW0ok9LIDgtkmo=";
|
||||
};
|
||||
|
||||
build-system = with python3Packages; [
|
||||
|
|
|
|||
|
|
@ -53,7 +53,6 @@ python3Packages.buildPythonApplication (finalAttrs: {
|
|||
'';
|
||||
license = lib.licenses.gpl2Plus;
|
||||
maintainers = with lib.maintainers; [
|
||||
azahi
|
||||
peterhoeg
|
||||
];
|
||||
platforms = lib.platforms.unix;
|
||||
|
|
|
|||
|
|
@ -120,7 +120,6 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
license = lib.licenses.gpl3Plus;
|
||||
platforms = with lib.platforms; linux ++ darwin;
|
||||
maintainers = with lib.maintainers; [
|
||||
azahi
|
||||
lassulus
|
||||
Gliczy
|
||||
r4v3n6101
|
||||
|
|
|
|||
|
|
@ -7,19 +7,20 @@
|
|||
pnpmConfigHook,
|
||||
fetchPnpmDeps,
|
||||
makeWrapper,
|
||||
nix-update-script,
|
||||
}:
|
||||
let
|
||||
pnpm = pnpm_10;
|
||||
in
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "home-assistant-matter-hub";
|
||||
version = "2.0.46";
|
||||
version = "2.0.48";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "RiDDiX";
|
||||
repo = "home-assistant-matter-hub";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-lVsLvniPU7VAgxrUMZsGh9/cWgqap6iyX44r+Ap2Tjk=";
|
||||
hash = "sha256-0M1ZSqNyLQECaO0cj4MpDGN5x8wVZeJczMViW5d9IXQ=";
|
||||
};
|
||||
|
||||
# The bundled cli.js imports transitive dependencies (e.g. @noble/curves)
|
||||
|
|
@ -36,8 +37,8 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
|||
pnpmWorkspaces
|
||||
;
|
||||
inherit pnpm;
|
||||
fetcherVersion = 3;
|
||||
hash = "sha256-CuO+DTLPBr1WMyUMPKKzwYUrdWJLdWfj0IqmOyysaFo=";
|
||||
fetcherVersion = 4;
|
||||
hash = "sha256-Bfg2c6gYTUv1rsBGriXUiftlOwGCzPdbdYgW9qhFSLw=";
|
||||
};
|
||||
|
||||
__structuredAttrs = true;
|
||||
|
|
@ -92,6 +93,12 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
|||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
updateScript = nix-update-script {
|
||||
extraArgs = [ "--use-github-releases" ];
|
||||
};
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Publish your home-assistant instance using Matter";
|
||||
homepage = "https://riddix.github.io/home-assistant-matter-hub/";
|
||||
|
|
|
|||
|
|
@ -11,13 +11,13 @@
|
|||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "hugo";
|
||||
version = "0.163.2";
|
||||
version = "0.163.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "gohugoio";
|
||||
repo = "hugo";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-M+AjLKRduVEZGo2h6E2acwUkK20YrNg3/vWc9fyJWvg=";
|
||||
hash = "sha256-o8MoGrdOXBN/HkcuRsHyyyFLvPvNo3PI0oWBlO6Xfpw=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-Bn+RA+EHd3gAKL4N/ibydX7yWNKOSYnIl2pfecfOu1k=";
|
||||
|
|
|
|||
|
|
@ -21,13 +21,13 @@ assert (
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "jonquil";
|
||||
version = "0.3.1";
|
||||
version = "0.3.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "toml-f";
|
||||
repo = "jonquil";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-xKL3EWZaHdMAuUK7pL2vjfRk8Fq2uNL65TrGUyFQ5cc=";
|
||||
hash = "sha256-eu5+cVvIF8AXye8zrcfaHoQzd+7bx6q9KtFuH5w2sFc=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
|
|
|||
46
pkgs/by-name/ke/ketch/package.nix
Normal file
46
pkgs/by-name/ke/ketch/package.nix
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
{
|
||||
lib,
|
||||
buildGoModule,
|
||||
fetchFromGitHub,
|
||||
versionCheckHook,
|
||||
nix-update-script,
|
||||
}:
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "ketch";
|
||||
version = "0.9.3";
|
||||
|
||||
__structuredAttrs = true;
|
||||
strictDeps = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "1broseidon";
|
||||
repo = "ketch";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-bcmSPslW/k5OO+Zce6N0S3NoQeXGOM6DcZ4Cj2W2C14=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-m3IwAYsczsxcVk9fay+f2AsNjmXoPk7NS0abES6b594=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
"-w"
|
||||
"-X github.com/1broseidon/ketch/cmd.version=${finalAttrs.version}"
|
||||
];
|
||||
|
||||
doInstallCheck = true;
|
||||
nativeInstallCheckInputs = [ versionCheckHook ];
|
||||
versionCheckProgramArg = "version";
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
description = "Fast, stateless CLI for web search and scrape. Built for AI agents.";
|
||||
homepage = "https://chain.sh/ketch/";
|
||||
changelog = "https://github.com/1broseidon/ketch/releases/tag/v${finalAttrs.version}";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [
|
||||
stephsi
|
||||
];
|
||||
mainProgram = "ketch";
|
||||
};
|
||||
})
|
||||
|
|
@ -2,8 +2,9 @@
|
|||
bc,
|
||||
zip,
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
bats,
|
||||
fetchFromGitHub,
|
||||
python,
|
||||
buildPythonApplication,
|
||||
callPackage,
|
||||
kicad,
|
||||
|
|
@ -19,6 +20,7 @@
|
|||
versioneer,
|
||||
shapely,
|
||||
setuptools,
|
||||
versionCheckHook,
|
||||
nix-update-script,
|
||||
}:
|
||||
let
|
||||
|
|
@ -36,7 +38,10 @@ buildPythonApplication (finalAttrs: {
|
|||
hash = "sha256-QhtdQgMgHaB0xj2hQ4MCptr5DDgCOfRClUSyYzrFQis=";
|
||||
# Upstream uses versioneer, which relies on gitattributes substitution.
|
||||
# This leads to non-reproducible archives on GitHub.
|
||||
# See https://github.com/NixOS/nixpkgs/issues/84312
|
||||
# See
|
||||
# https://github.com/NixOS/nixpkgs/issues/84312
|
||||
# https://github.com/NixOS/nixpkgs/pull/395213
|
||||
# https://github.com/python-versioneer/python-versioneer/issues/217
|
||||
postFetch = ''
|
||||
rm "$out/kikit/_version.py"
|
||||
'';
|
||||
|
|
@ -72,6 +77,7 @@ buildPythonApplication (finalAttrs: {
|
|||
|
||||
nativeCheckInputs = [
|
||||
pytestCheckHook
|
||||
versionCheckHook
|
||||
bats
|
||||
];
|
||||
|
||||
|
|
@ -79,9 +85,10 @@ buildPythonApplication (finalAttrs: {
|
|||
"kikit"
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
# Recreate _version.py, deleted at fetch time due to non-reproducibility.
|
||||
echo 'def get_versions(): return {"version": "${finalAttrs.version}"}' > kikit/_version.py
|
||||
# Recreate _version.py, deleted at fetch time due to non-reproducibility.
|
||||
# should be done in postInstall to overwrite what versioneer generates again during the build phase
|
||||
postInstall = ''
|
||||
echo 'def get_versions(): return {"version": "${finalAttrs.version}"}' > $out/${python.sitePackages}/kikit/_version.py
|
||||
'';
|
||||
|
||||
preCheck = ''
|
||||
|
|
@ -96,14 +103,15 @@ buildPythonApplication (finalAttrs: {
|
|||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/yaqwsx/KiKit/releases/tag/${finalAttrs.src.tag}";
|
||||
description = "Automation for KiCAD boards";
|
||||
homepage = "https://github.com/yaqwsx/KiKit/";
|
||||
changelog = "https://github.com/yaqwsx/KiKit/releases/tag/${finalAttrs.src.tag}";
|
||||
license = lib.licenses.mit;
|
||||
mainProgram = "kikit";
|
||||
maintainers = with lib.maintainers; [
|
||||
jfly
|
||||
matusf
|
||||
];
|
||||
teams = with lib.teams; [ ngi ];
|
||||
license = lib.licenses.mit;
|
||||
};
|
||||
})
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
}:
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "kiwix-apple";
|
||||
version = "3.14.0";
|
||||
version = "3.15.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://download.kiwix.org/release/kiwix-macos/kiwix-macos_${finalAttrs.version}.dmg";
|
||||
hash = "sha256-rVfoJg8VTyEF6KeMGIOTUijtz8Ot0DerayrPgs6Wje8=";
|
||||
hash = "sha256-3wZ7zavLmLyPYGrdFpnhd8a1paI65yHFdL6JzL1e0e0=";
|
||||
};
|
||||
|
||||
sourceRoot = ".";
|
||||
|
|
|
|||
44
pkgs/by-name/ku/ku/package.nix
Normal file
44
pkgs/by-name/ku/ku/package.nix
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
lib,
|
||||
buildGo126Module,
|
||||
fetchFromGitHub,
|
||||
nix-update-script,
|
||||
versionCheckHook,
|
||||
}:
|
||||
|
||||
buildGo126Module (finalAttrs: {
|
||||
pname = "ku";
|
||||
version = "0.7.0";
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bjarneo";
|
||||
repo = "ku";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-LJ078zRCjz+h8GbDuQiOTxfSajX4b/XxeL+FwYDqT8s=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-0gLwvJSEMgCw23YG8rMzoI7ubo0I5nvguex2HBJE1dU=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
"-w"
|
||||
"-X main.version=v${finalAttrs.version}"
|
||||
];
|
||||
|
||||
nativeInstallCheckInputs = [ versionCheckHook ];
|
||||
versionCheckProgramArg = "--version";
|
||||
doInstallCheck = true;
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
description = "Fast, keyboard-driven Kubernetes TUI";
|
||||
homepage = "https://github.com/bjarneo/ku";
|
||||
changelog = "https://github.com/bjarneo/ku/releases/tag/v${finalAttrs.version}";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ kevinpita ];
|
||||
mainProgram = "ku";
|
||||
platforms = lib.platforms.unix;
|
||||
};
|
||||
})
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
# Derivation containing the Limine host tool and the compiled bootloader
|
||||
{
|
||||
fetchpatch,
|
||||
fetchurl,
|
||||
lib,
|
||||
llvmPackages,
|
||||
|
|
@ -57,6 +58,16 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
hash = "sha256-8aUp2lzVClyje6WHMTOnuOclhLEn1zMf6U5VTl5gEvc=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Merged upstream in https://github.com/Limine-Bootloader/Limine/pull/599,
|
||||
# remove on the next release.
|
||||
(fetchpatch {
|
||||
name = "align-linux-modules.patch";
|
||||
url = "https://github.com/Limine-Bootloader/Limine/commit/6635ae4ff2321f9a3c85116a57a00e3b6edc100b.patch";
|
||||
hash = "sha256-poAcZND5xwS8npHCytS9lwcQi9oCEcc4bR+6HKVXJ78=";
|
||||
})
|
||||
];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
hardeningDisable = lib.optionals missingZerocallusedregs [
|
||||
|
|
|
|||
|
|
@ -22,13 +22,13 @@
|
|||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "mixing-station";
|
||||
version = "2.9.3";
|
||||
version = "3.0.1";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://mixingstation.app/backend/api/web/download/archive/mixing-station-pc/update/${finalAttrs.version}";
|
||||
name = "mixing-station-${finalAttrs.version}.zip";
|
||||
extension = "zip";
|
||||
hash = "sha256-efY+zvX2cN+yFm1xxpvsZAiMhtNW/S9g2hgLnYUYd4I=";
|
||||
hash = "sha256-WpjBqiYVuqIuDiigX2lg81I02qad/vZudqdWUe2h5Sw=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -22,13 +22,13 @@
|
|||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "mydumper";
|
||||
version = "1.0.1-3";
|
||||
version = "1.0.3-1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mydumper";
|
||||
repo = "mydumper";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-Hk+GdJH+hH8HUcKKfzP6G0L/jM2DAfZtm+cPqAJAPJ0=";
|
||||
hash = "sha256-r3f8WBF8pyWnxuqTKfNx3EBiRIP9pHk7dxGMaE7UOW4=";
|
||||
# as of mydumper v0.16.5-1, mydumper extracted its docs into a submodule
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -6,13 +6,13 @@
|
|||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "nerva";
|
||||
version = "1.29.0";
|
||||
version = "1.30.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "praetorian-inc";
|
||||
repo = "nerva";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-CnxSimoBuUFyzq1qh08wG9Tx3JqClS3ujtgJAVuWprE=";
|
||||
hash = "sha256-kiVZFByiNCyubtzDryVwi6x/Xo1StEtlnOTlD9MfwP0=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-Z0MSD+1/1VzrJ+pz5x0JvxrCxtJe59ckaTqHK/+TVN8=";
|
||||
|
|
|
|||
|
|
@ -10,17 +10,17 @@
|
|||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "netwatch-tui";
|
||||
version = "0.25.7";
|
||||
version = "0.25.8";
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "matthart1983";
|
||||
repo = "netwatch";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-4QaUuKBnp3ygb5M+D/V2mhkZFRkEgWHRIxAlqEcvjwo=";
|
||||
hash = "sha256-vKAadOd5H0nsHbYMFSfEBOwxjZn5Df0Zm8Jicz0hpgg=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-S9iwtRNgVaWHC/OGxlxsUR4+oOeFhCgUaUvjNeig8Do=";
|
||||
cargoHash = "sha256-mpVa+iSDzPyWW3Q78ZroLW2BzO0suXG7Q6nJjjIgHqk=";
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
|
|
|
|||
|
|
@ -34,13 +34,13 @@ let
|
|||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "nix-scheduler-hook";
|
||||
version = "0.7.3";
|
||||
version = "0.8.0";
|
||||
|
||||
src = fetchFromCodeberg {
|
||||
owner = "lisanna";
|
||||
repo = "nix-scheduler-hook";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-r8ybbPxQK+ohsaz4+brrsivj77fCqrrHPskfyrp6R2A=";
|
||||
hash = "sha256-QMenfkNvn6bBGdu+d6i533/CkHNS7Tmr40cgl/ks5dk=";
|
||||
};
|
||||
|
||||
sourceRoot = "source/src";
|
||||
|
|
|
|||
|
|
@ -16,18 +16,18 @@
|
|||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "olivetin";
|
||||
version = "3000.14.0";
|
||||
version = "3000.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "OliveTin";
|
||||
repo = "OliveTin";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-bMc+fmyaRNVLVzGSAUq+TgEdq1VO3Guvw9RnV+YdrRI=";
|
||||
hash = "sha256-AztJqhSJV9hIsnhaYZoIMC8ZE17pUT37nRUdCZ6ZiCA=";
|
||||
};
|
||||
|
||||
modRoot = "service";
|
||||
|
||||
vendorHash = "sha256-MxiINWFSpbkBDOBcusr2VViGgnlEoqOmj2gZaiGGjj0=";
|
||||
vendorHash = "sha256-lZ3KBoM+cDyYPX16wuZT3UQvB/SrRD6W2ic+GznG7hU=";
|
||||
|
||||
subPackages = [ "." ];
|
||||
|
||||
|
|
@ -75,14 +75,14 @@ buildGoModule (finalAttrs: {
|
|||
'';
|
||||
|
||||
outputHashMode = "recursive";
|
||||
outputHash = "sha256-EilPfKCT8byqBl2Ls5f8VrBcT8H+u8jqUQTX6brWhUE=";
|
||||
outputHash = "sha256-v7aSikl1VSFZdNKnIucs7RdqFWoaVNIH9u27YG9Ei90=";
|
||||
};
|
||||
|
||||
webui = buildNpmPackage {
|
||||
pname = "olivetin-webui";
|
||||
inherit (finalAttrs) version src;
|
||||
|
||||
npmDepsHash = "sha256-+XWucYyYHRC1usQ95HjlFVct2h8njuxfAKDFKNwwJLI=";
|
||||
npmDepsHash = "sha256-fr5RTPNXNd8sD/LphnDsekIbB333LgEHCb/NUEqSBIE=";
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/frontend";
|
||||
|
||||
|
|
|
|||
|
|
@ -101,9 +101,7 @@ stdenv.mkDerivation rec {
|
|||
homepage = "https://github.com/yvt/openspades/";
|
||||
license = lib.licenses.gpl3;
|
||||
platforms = lib.platforms.all;
|
||||
maintainers = with lib.maintainers; [
|
||||
azahi
|
||||
];
|
||||
maintainers = [ ];
|
||||
# never built on aarch64-linux since first introduction in nixpkgs
|
||||
broken =
|
||||
stdenv.hostPlatform.isDarwin || (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64);
|
||||
|
|
|
|||
|
|
@ -10,23 +10,23 @@
|
|||
|
||||
let
|
||||
pname = "osu-lazer-bin";
|
||||
version = "2026.620.0";
|
||||
version = "2026.624.0";
|
||||
|
||||
src =
|
||||
{
|
||||
aarch64-darwin = fetchzip {
|
||||
url = "https://github.com/ppy/osu/releases/download/${version}-lazer/osu.app.Apple.Silicon.zip";
|
||||
hash = "sha256-SHqi+RFMwYkChmCc0i1X/bmMajVSLaWuNCx9+cDkg7E=";
|
||||
hash = "sha256-kL2XGJzTRC+AtHH4+byaR1df9EYyIriuxzawDtAFWZ4=";
|
||||
stripRoot = false;
|
||||
};
|
||||
x86_64-darwin = fetchzip {
|
||||
url = "https://github.com/ppy/osu/releases/download/${version}-lazer/osu.app.Intel.zip";
|
||||
hash = "sha256-WXMyeoTixCNPin+hIK+1v2bX26MWnsQ7ZQGwJQ7jbyc=";
|
||||
hash = "sha256-NOBKnsZpMYU6uBfVqYK3ZrPzZBQURw6bN5rr1iZG9nA=";
|
||||
stripRoot = false;
|
||||
};
|
||||
x86_64-linux = fetchurl {
|
||||
url = "https://github.com/ppy/osu/releases/download/${version}-lazer/osu.AppImage";
|
||||
hash = "sha256-rLom/UwqVOXUk/ayLvekRQMD49p5MB9BA6RCohtuPfg=";
|
||||
hash = "sha256-EKmCq656djPGK5I1JqSDcTKtpbQZbO8WGWcPv+PT0q4=";
|
||||
};
|
||||
}
|
||||
.${stdenvNoCC.system} or (throw "osu-lazer-bin: ${stdenvNoCC.system} is unsupported.");
|
||||
|
|
|
|||
12
pkgs/by-name/os/osu-lazer/deps.json
generated
12
pkgs/by-name/os/osu-lazer/deps.json
generated
|
|
@ -586,8 +586,8 @@
|
|||
},
|
||||
{
|
||||
"pname": "ppy.LocalisationAnalyser.Tools",
|
||||
"version": "2025.1208.0",
|
||||
"hash": "sha256-diVAckS1zNyVE1UGkbiu9jH/25j/c+Ad5XC3EjdLDsg="
|
||||
"version": "2026.611.0",
|
||||
"hash": "sha256-f3QNC84ynXUHW0wvDZvCTCbNYpqdHzq12uNNwaB6M1g="
|
||||
},
|
||||
{
|
||||
"pname": "ppy.managed-midi",
|
||||
|
|
@ -616,8 +616,8 @@
|
|||
},
|
||||
{
|
||||
"pname": "ppy.osu.Framework",
|
||||
"version": "2026.616.0",
|
||||
"hash": "sha256-Q9pyMPIpyiAp63VYiWEM8Zbiek0aXdsNBZY2ECaaZ/U="
|
||||
"version": "2026.623.0",
|
||||
"hash": "sha256-IcCFJvj5ydy0r6mEpHgV+UK9N7cd/3CtjOCV2GT8HOY="
|
||||
},
|
||||
{
|
||||
"pname": "ppy.osu.Framework.NativeLibs",
|
||||
|
|
@ -646,8 +646,8 @@
|
|||
},
|
||||
{
|
||||
"pname": "ppy.SDL3-CS",
|
||||
"version": "2026.520.0",
|
||||
"hash": "sha256-Owz9gClqs1Dnb+EHk4Xpl/tdbXSOwqrL67tTatj+HRU="
|
||||
"version": "2026.623.0",
|
||||
"hash": "sha256-LMT2AVjP/HIC3a7PZDR4Vhlr6CCEhPu5ZF1eSYDIjeY="
|
||||
},
|
||||
{
|
||||
"pname": "ppy.Veldrid",
|
||||
|
|
|
|||
|
|
@ -22,13 +22,13 @@
|
|||
|
||||
buildDotnetModule rec {
|
||||
pname = "osu-lazer";
|
||||
version = "2026.620.0";
|
||||
version = "2026.624.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ppy";
|
||||
repo = "osu";
|
||||
tag = "${version}-lazer";
|
||||
hash = "sha256-I2cziF/XRZhMRZCyjoec7G03IxldDMNQ//A7CmFW6/Y=";
|
||||
hash = "sha256-qZPComGBdVReWQ0rVQeB9v8N2ul02AhGe8BlIzhz0+s=";
|
||||
};
|
||||
|
||||
projectFile = "osu.Desktop/osu.Desktop.csproj";
|
||||
|
|
|
|||
72
pkgs/by-name/pr/proton-authenticator-bin/package.nix
Normal file
72
pkgs/by-name/pr/proton-authenticator-bin/package.nix
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
{
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
fetchurl,
|
||||
autoPatchelfHook,
|
||||
dpkg,
|
||||
glib-networking,
|
||||
wrapGAppsHook4,
|
||||
webkitgtk_4_1,
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
strictDeps = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
pname = "proton-authenticator";
|
||||
version = "1.1.6";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://proton.me/download/authenticator/linux/ProtonAuthenticator_${finalAttrs.version}_amd64.deb";
|
||||
hash = "sha256-jHtqBdGE9+Kz5sjPMrCDnHKX0NLscO5Dp4pYYE8L2iU=";
|
||||
};
|
||||
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
dpkg
|
||||
autoPatchelfHook
|
||||
wrapGAppsHook4
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
webkitgtk_4_1
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
install -Dm755 usr/bin/proton-authenticator $out/bin/${finalAttrs.meta.mainProgram}
|
||||
cp -r usr/share $out
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
preFixup = ''
|
||||
gappsWrapperArgs+=(
|
||||
--prefix GIO_EXTRA_MODULES : "${glib-networking}/lib/gio/modules"
|
||||
--set WEBKIT_DISABLE_COMPOSITING_MODE 1
|
||||
)
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Two-factor authentication manager with optional sync";
|
||||
longDescription = ''
|
||||
This package provides proton-authenticator as a pre-built binary.
|
||||
|
||||
Changed: proton-authenticator is now source-compiled by default.
|
||||
Use this package (proton-authenticator-bin) if you prefer the pre-built binary
|
||||
instead of building from source.
|
||||
'';
|
||||
homepage = "https://proton.me/authenticator";
|
||||
license = lib.licenses.unfree; # source not yet published
|
||||
maintainers = with lib.maintainers; [
|
||||
felschr
|
||||
pbek
|
||||
];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
||||
mainProgram = "proton-authenticator";
|
||||
};
|
||||
})
|
||||
13
pkgs/by-name/pr/proton-authenticator/disable-scripts.patch
Normal file
13
pkgs/by-name/pr/proton-authenticator/disable-scripts.patch
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
diff --git a/.yarnrc.yml b/.yarnrc.yml
|
||||
index 44d5b0a935..bfe72b9fd6 100644
|
||||
--- a/.yarnrc.yml
|
||||
+++ b/.yarnrc.yml
|
||||
@@ -5,7 +5,7 @@ compressionLevel: mixed
|
||||
|
||||
enableConstraintsChecks: true
|
||||
|
||||
-enableScripts: true
|
||||
+enableScripts: false
|
||||
|
||||
httpProxy: '${http_proxy:-}'
|
||||
|
||||
149
pkgs/by-name/pr/proton-authenticator/missing-hashes.json
Normal file
149
pkgs/by-name/pr/proton-authenticator/missing-hashes.json
Normal file
|
|
@ -0,0 +1,149 @@
|
|||
{
|
||||
"@esbuild/aix-ppc64@npm:0.28.1": "98a9325bec976ebe1cbbf2441fdbe895b36733919b9df7d62e7b73a1e199810affeac17d172cc5cf61196c9b1ede8073ca5d088ca52b14800b76f49bacc480b3",
|
||||
"@esbuild/android-arm64@npm:0.28.1": "ec3e3c62bc684a09393ca10a0f64b166938f66e4b1972f6db63bf55463bf039736549d9808e50996eb0fedea70744b466aeb816c44e78f2b5d232aeb9929e3ac",
|
||||
"@esbuild/android-arm@npm:0.28.1": "cda56884826ac2aa5dd3be5df9e89834df3b46515cf14099ddfc5bcfc80122d4f8d74b3831a0ac447d87dda73ae90fba49dc4e352b11240c2b055cdca69a0a02",
|
||||
"@esbuild/android-x64@npm:0.28.1": "7f2ba14ba06fd3f2faff467e6fceb2466cd44d1d6039ae1c01f24336a5a1ad0f9c3721000331ded3f250587e4be5e7194d68dd33c55339dc26e1200e13e16d2d",
|
||||
"@esbuild/darwin-arm64@npm:0.28.1": "9798bd013921f8dc5126eb12eba4ddfce9198d11eba6ae844f66d25919d5d26be2aa46b4da8d442ad0e7673e88b2f3d9e505d71692cd030bda9a7b762921c05d",
|
||||
"@esbuild/darwin-x64@npm:0.28.1": "aaddefac25e025e309c71dc5c7074d8c295f44779e41add06dbf65d48b2a6a72b579266748e7f0ab3b2be1ed07be8d541e954f75dda2a2992f36f4c805d91fe1",
|
||||
"@esbuild/freebsd-arm64@npm:0.28.1": "a325b7833f978b62bf25157ea5a951e29b9b0a1db9665ee52498644c9b250977ab6f21c049137d0a271bb0442b3e6d6148c257bace84476196b46570ce837d62",
|
||||
"@esbuild/freebsd-x64@npm:0.28.1": "f092ddacd0bc715f443b62382dd8ba8f85d272f62caa47f603e85b9c5b14fef67c610523006ca88cae19e2829fe41a2a0ae92b7c158ef1038c714552dea57554",
|
||||
"@esbuild/linux-arm64@npm:0.28.1": "bfda225d3101bb3ed5a74f979d50564a17ccf3799ad65fb968c5b15c9ceb9077c105a9bb5763d42f33f1917ac709e5779cd2112e5420188963568e80ac8439f8",
|
||||
"@esbuild/linux-arm@npm:0.28.1": "b440cf89adf6dd1079bcf7d9aa915f70f467002bbb69bda21f4a3d160c9ae93bc6d8eb73b2831c8607fb1527d8ada288d907440e36969cb60000e4df85b7c549",
|
||||
"@esbuild/linux-ia32@npm:0.28.1": "4329d81cf06331e537c8ebb571a9d4ca968811bee7c7cb4f975b8343c9f7649a8b2b9902b0974be0e2224656b1a0d21f3b191304db8cec52d006b80061faf4c2",
|
||||
"@esbuild/linux-loong64@npm:0.28.1": "76b4d0f2cf716576181065e3fd2d6ffa9b0d0c39987e8d3d1b8d1e8aaa2563779cd4f861c881e3e7a9302f2d03d5543b8f726a99603e6aa754c8154772d0f434",
|
||||
"@esbuild/linux-mips64el@npm:0.28.1": "59825a73d04187818c6fb53b22e2915a4c0e6c8fee9017d75dcafbdc66699f2765377faf801495d69952230935557f58360481a7edd78073816270aa8bd0cbee",
|
||||
"@esbuild/linux-ppc64@npm:0.28.1": "3186d54b33d9b4849d6fe4fa2aeed4966a4117f9a27bf2d59f07f3ea651a9724a2eb9aaaf98813aac6dc726710a337bfc2472dd714262894fabf498a369fbd74",
|
||||
"@esbuild/linux-riscv64@npm:0.28.1": "f01572cf6398b466d44bfa68dbc5f56a37b74e645673198f7ba157d215ccba35ea46e220a2526008d5679cef47a4368dd46480d4ba4c7330a491d215fe3f649f",
|
||||
"@esbuild/linux-s390x@npm:0.28.1": "aad20d457c0441d7bf2f6c8dbe74297d4c3a3c90cf709a971a4a19b2c70497bf91ac4a80fa6168ccf6063eb284ea0f41f2293283e8351348369af551ffe6f3cf",
|
||||
"@esbuild/linux-x64@npm:0.28.1": "d361ac73388af397803dc26242265c8f00fce91d9dd587b04d230c686294585c541f43dee706e23f8d56754e3a3da653b00b3f55855182d60deabc024acf19f7",
|
||||
"@esbuild/netbsd-arm64@npm:0.28.1": "73e2d620958bcb61367849046397dee40dbd9bd6d0d4172bb87ef90ad644ed16e48386debd1ef0323648358fc617c0d8fae58be984774a2e8622712c7ab7f04b",
|
||||
"@esbuild/netbsd-x64@npm:0.28.1": "663a35913d3d3a2f566d31ec00477954cc570f386d56a5ffffa1d7bb58bccfbe241780fc429c2e41463cef5d1d422ca02fe174df970932b46d225ff0bd333b65",
|
||||
"@esbuild/openbsd-arm64@npm:0.28.1": "8add19644eca9a23cefc2a109644df802c626cc3460adef6f030ce72d1fcb127a4ff2b14a21cb51bbd68ec5a652f0bd7105c1a0d76a30f44fbf822c010096cd9",
|
||||
"@esbuild/openbsd-x64@npm:0.28.1": "ad12be1ed38cc61410aa6210f88b8aa8dc3e6ee717dce32dba6e7cbaa57414af6e5314e7cdf9baa4affafe2d6a88e230d361a0ddadf76d06070b63bbf0a97cb2",
|
||||
"@esbuild/openharmony-arm64@npm:0.28.1": "5ecd637058887c8458ebc7e95c67adee2397ebd8e5f6c302c17816eeb77963b1feeaff4e3f7823c0d85f0fc10771caa96175e2f0909b00e60ca5d90d22690a15",
|
||||
"@esbuild/sunos-x64@npm:0.28.1": "e3286191315e30471e9cc176281a5d7acf5b877a95ea2868195024548a984e08b0214ea90e504e5bb5c595f9d3da9a5b961b52f79988702036b59233378580c4",
|
||||
"@esbuild/win32-arm64@npm:0.28.1": "55e83fa2b63511bc3d2138ff84091b452936072b5b8e24405a5669f04355263b3f452861c13fc0c01ad80ebeb0df069da0318631386c9d66cda8ccbeca0fa82e",
|
||||
"@esbuild/win32-ia32@npm:0.28.1": "dcd2579f97b8b5217e807d3a069461635ff6c1f13bc6e678fb0e385db4bf569afbbfe9f54ee512f0e120c6cc2689889725b8e2efdb17e3bb1603cffb58a4b6b3",
|
||||
"@esbuild/win32-x64@npm:0.28.1": "1d7e7661663e2b0d814550e461fd06b814b3ac1ffda1e84468da3b7c29a1ad8a6067a8b7dcf6e66e38918b43a440c6302052f1bdb40c48a6d49a82c616e12f2d",
|
||||
"@img/sharp-darwin-arm64@npm:0.34.5": "0f872f02a49c87c1c844c9715a1c1e4449fab30c85711d948767d41ea1eba1cc7be8268b582d95513e66cff090ab520e4104dcf30cc6f598ee429b40e890eeec",
|
||||
"@img/sharp-darwin-x64@npm:0.34.5": "a9c0b03ad1d1c3ce549770e0655a6ad87a6e80633d65f9a009a2e19d1f5fe7b79c3ec946412f16ce302db3dfe759a35007e60e1f7042cb3e2291b49ba8d58a6a",
|
||||
"@img/sharp-libvips-darwin-arm64@npm:1.2.4": "5076747c32a07caaf86e026f84a07378bd34eec6a6bc8843e5c09fc99e22f89e383d88824c0f527070efc33fb04569fa3f867038138faf8d76af1e4ecc0fc962",
|
||||
"@img/sharp-libvips-darwin-x64@npm:1.2.4": "607213511370a700fda3ece08eb0a061a09483b595b75ce5e115c9d95efb6793d1e8e90d79873a9f526378f06f5fe5f3a8f0006cf76f7c7907985c8d4539f376",
|
||||
"@img/sharp-libvips-linux-arm64@npm:1.2.4": "e078ef44f936609cb2b5fc01433e6c8f3babd5ab69fcc5f006504eb4664efa791438ea61e44c8f236eef55ba6ddb7bc41dc9b8b264fe689ff35fac428ce356a0",
|
||||
"@img/sharp-libvips-linux-arm@npm:1.2.4": "493a3d34f9ec5a2aa71cada3c2b0cc2428659cc2aaaf4d7b7f6065648da560cb62e1febd4d49fc48f814787dc431a2c7e94992a2e2334dc409b73ec658cd0c43",
|
||||
"@img/sharp-libvips-linux-ppc64@npm:1.2.4": "d746268a804ff66f363823840ea84a91c2c24e0f28438812c66f659b29305efee2219f1bfd7569944e02b0783044c275000c13b4180c4b07af3786bd1991567c",
|
||||
"@img/sharp-libvips-linux-riscv64@npm:1.2.4": "3bfb408d0e333593247aff9cbbcafa8bace4714a54a742d3b18a73dc506a1176c56fed63cc682c34ac27704e207e6a53a1c9c955395abcc4ef8af8ca12b4e09b",
|
||||
"@img/sharp-libvips-linux-s390x@npm:1.2.4": "79cd9764df0e845779cbc80ebf8eb0571080bce69d935fa8cd9a28a3aa5c4601c0e762ac83b6b8df0050ab54048098f692087265f64b16efc61de0818c2eea1b",
|
||||
"@img/sharp-libvips-linux-x64@npm:1.2.4": "da642063f7a8f7e2c26e0b5734c1a39e7f4ca0d4521d9c6c65d81112146c4ecb846e73602fa145cf2106cd8f426d84010bb3f0baf4a9cf41db1b7deb3b47f353",
|
||||
"@img/sharp-libvips-linuxmusl-arm64@npm:1.2.4": "e0ca7280827d433d10655ea1491543be98994e75a7b33b158faa7b4f6c866462d2abed253378b2534b9fab351a0961f23baaf16b4e7441131df0e3d47068507c",
|
||||
"@img/sharp-libvips-linuxmusl-x64@npm:1.2.4": "876e3bde360cc6966bc3a703dd316f570b031085722c9c8bf27bb31050e30c8a10ef4a8fe2e66fefa0f4482db62044c47a1df25874c6330467e12a6983bb32d2",
|
||||
"@img/sharp-linux-arm64@npm:0.34.5": "933c217e432ae7280bee1ef2bc0b5f3225b5ff3cfed19c25607ed7ed909b16cfa4a59c14089dd020e9b789ffd544df09e9b471281a049c926cd337509fa35241",
|
||||
"@img/sharp-linux-arm@npm:0.34.5": "c20e85339d0e4e2116094293d9c1171407faa7a7b60d579cdc4af06d7b2ad4ff4976374593a2e525a08df4fc9df0dd9e80822a38764f07bc8d63e8d988ffa165",
|
||||
"@img/sharp-linux-ppc64@npm:0.34.5": "8ded427067577bdd686534a0db30833d43b0c232c17d232d6608f0635f364241a6078ccdbbf54f5a48b773c95a05906a5ba20cc589c86959eb0e6329902c7cb4",
|
||||
"@img/sharp-linux-riscv64@npm:0.34.5": "764ff0baa4275a4fd9376012893ca64b6cde601a208be216d38e2c6db3977d6f3e91e12342c7cb1cd3038b7108f8778bcfba85afaf097689907a4b932e79dc7a",
|
||||
"@img/sharp-linux-s390x@npm:0.34.5": "a4e7cae17ebf95dd53e9dd845ae3e73c783f6c7da4a5aeddf7922dda09822c55327e892d2c8888dba097e666b97254b04df3cca99aeb9eb9fc57d73b20cc6b86",
|
||||
"@img/sharp-linux-x64@npm:0.34.5": "2f4fc06e1d3544bf41296f2776b531d5aa0ab618e129cd928514a803e4a01202b8453c0321f7999619033c687571a7f50da454ff5ca04d41f31a7796a38e9a8b",
|
||||
"@img/sharp-linuxmusl-arm64@npm:0.34.5": "2bd993173f42ab72df423f968b28cbd037e82f78cd469c3b6a7f4317e164f41f04cb9b106e35337e392a1fc4848aece67f0a765b346691133d7ad71146ef97ea",
|
||||
"@img/sharp-linuxmusl-x64@npm:0.34.5": "00a5c641a144ad177d3ece569da6c05d891ab6a5c6e0f0f7ef4f74ab132c72f20b07927e5ae9c9afe090d44cf36be2170b4dc1831d0976533c693091995bb486",
|
||||
"@img/sharp-wasm32@npm:0.34.5": "7c1ed71bd821c1ddb2aac32f128d4b173af97a33274f9e386c49ccedc31bd273ae0bf564626f068a61c8bb0de1f84a4b9211c7fd79a62d8170479a1887bc935c",
|
||||
"@img/sharp-win32-arm64@npm:0.34.5": "07146b037ae4cdc7592b983bcee7b1c0199fa0fe14f9e3430a8ec6c46c056ba9bca0ee89d18e1aac4f43331dcaf464fe82bebf34e08d5bd1541ebd2d6345e518",
|
||||
"@img/sharp-win32-ia32@npm:0.34.5": "d5887234959a32c9072043e8f14589ceec867f9fb0b440a5849750c2f0e79614962f566c44763ce560c52cd1e0d086ffac6299f91711477f1316d83f8b2151c1",
|
||||
"@img/sharp-win32-x64@npm:0.34.5": "e10ab4421a46eecab0af903761679f27f91dde01ed4d533af4d77101d17e4f16b28628e91bbbcae63ec051606103f3cde21fd5055330130217277cb13242e7af",
|
||||
"@parcel/watcher-android-arm64@npm:2.5.6": "f94d0a0b156e0c8ae41b19699663950808b32f2e06d80ebc953dc5b81f80c1b3acefa76dc11445bf1858b56aa98fa461899746ef6878930fd2d057f1a92c53a3",
|
||||
"@parcel/watcher-darwin-arm64@npm:2.5.6": "0acbc44c8b7a02d1c013d9d9f10a4aeb01944cc129ac0ede8715c69287e7c7ab385bd40af3b87a4a93d1659eb879121eebe5d705ed6a3b76d4c8f2a158b76e45",
|
||||
"@parcel/watcher-darwin-x64@npm:2.5.6": "62d96ee5f48677de03f06fbbb9442a9a9fec3738c17d1f9d43bcbcf20850a4666a9c02494c00d7b93a52bb50ed63bd7767f9eebfcf6a15fe24de4bb66212ebf6",
|
||||
"@parcel/watcher-freebsd-x64@npm:2.5.6": "bc21fddbc4e05d8969b1e4aadceac0eb07da9a860156d837fa5a9c969223681c9d2026f4340ea8720b0a9eee9f741955b76d7c75a8b3c944191b2f500e0552e9",
|
||||
"@parcel/watcher-linux-arm-glibc@npm:2.5.6": "1075654ccdd133196f8731a8180912d7ec7ecbfd7b1a63b8f5fb679ecc8f378d8ca5dde7aea78809fbdab2e0cc2f4b753dff022449c6f023090325e8b37428e1",
|
||||
"@parcel/watcher-linux-arm-musl@npm:2.5.6": "982e34dbf583b013a327b8db2df2ff3187aad51ebff8203e96fa0e433a1acde8e7f95757113108a3a244f4a786a244c7b9fe3908ba75cd98f3358bb0686f1734",
|
||||
"@parcel/watcher-linux-arm64-glibc@npm:2.5.6": "8411257e62bf5b28e0b5b761d597abe6121feef3711f353e5ad885a61ff5f9c9309a6a4fb85b12f92a3e26017057af537d40ff72074b90080ff4da7093867d7b",
|
||||
"@parcel/watcher-linux-arm64-musl@npm:2.5.6": "246f6e250b34f3a0dc759c0aa258bf0c71984427ca8d50cf1e4644587bb4607f45a307a3bca6285c3c98be7f31413eb46f458997fe74f297c17db21454da519f",
|
||||
"@parcel/watcher-linux-x64-glibc@npm:2.5.6": "b262fac17c0922493e718b85d58fdaa77aca2b215d4ea4ff7888b173b7373d3880643084d8e5849c6cb6fb73594625e43f533472486a2605e10940f80575efa8",
|
||||
"@parcel/watcher-linux-x64-musl@npm:2.5.6": "f79bd22dfa2fc06ffe21f4271f4d9d12c21c484f4934cdd50899e3774d8a6e2199d086986220d78c6cdeca9a27c158250f5792d8e413d182d4f207aa0de7b795",
|
||||
"@parcel/watcher-win32-arm64@npm:2.5.6": "9059f7ffd3dde686b0b8d56db7bcdc4d89655cba69370f943bac36ae0005c9f7dd2d0bd6eba4084fc18463914c195deaa0214c67800e08567e5434c2722af57e",
|
||||
"@parcel/watcher-win32-ia32@npm:2.5.6": "93420a1bd00fdc102f222a3e368917150a2a05c38167556ea25e378685014ad22091dd3911c0cc9362d9900b8de624e765149dd658f98251c7347c1b02651e5b",
|
||||
"@parcel/watcher-win32-x64@npm:2.5.6": "9f6a074d70569f61d2bac2e639cb404fc5e8d1579550aac139d44a384555cd18929163ab74d249bbcd76eefde24e17769892f70fbe9b4caff4602b700478b452",
|
||||
"@rolldown/binding-android-arm64@npm:1.0.3": "c73fbb421576421485f0d0f708df38938addbf48a237f08e8a4a46bad876cadf445c74c93008b3cea8c1be07a32a390a6067b0220aa838912b6a530f53f1338b",
|
||||
"@rolldown/binding-darwin-arm64@npm:1.0.3": "f140da4f3132f341a3f9c79e98d3baa6cac0034cbf4980b44ac37c67c523114feadacb5be451262923a0426c6523f5ba6f207d7fbdf4e95ac978add1ad829f96",
|
||||
"@rolldown/binding-darwin-x64@npm:1.0.3": "ff7845f382344709fc166f7f87bea55eccf3400c2e3d7d70889c5be72640cfa7f7e2880893f8687776254cace09076767bb95ac7ed816547495e7d894f747651",
|
||||
"@rolldown/binding-freebsd-x64@npm:1.0.3": "d6c401dfa68b6840a9a56e879198267ce8406f16108679caf6e6eb709c8ee0f2641c55d250b51ce47097000626c604bee7e7e2d9e2d70f71109b38e35fe4b836",
|
||||
"@rolldown/binding-linux-arm-gnueabihf@npm:1.0.3": "8843aad46237e6a0569196eb605e29afaaf449c06ca4ed1a02e8083c86264f7cc940b085aafe6349f2011b2a44f6dfa8d58b55803e09561f12ea110bd3cb53ff",
|
||||
"@rolldown/binding-linux-arm64-gnu@npm:1.0.3": "dc34425af444478f539854b02683b14ceef88520634a1dfefbc12c6a2c403c9879c8697ff87188aef199d692508d1109d69f545d6cc3414bd409202fd7f5ca1c",
|
||||
"@rolldown/binding-linux-arm64-musl@npm:1.0.3": "f04750497d329d71e17b86cacbc64cc78c7bf8eea0653f40a12f6b07e0baf70054feb8418538937ebb7e909f3b8a730f34e06370d6dc9188a4ea00fd3a947545",
|
||||
"@rolldown/binding-linux-ppc64-gnu@npm:1.0.3": "289963b6842c40d2a30457d6da2b824ecf4e502ae85e3ca7f48c45071b94a0759e327df7687b6930e418c71f7e6716ba43d061dcb9ff30e330708b4031b521eb",
|
||||
"@rolldown/binding-linux-s390x-gnu@npm:1.0.3": "df6ef349cc8a8b8a6089726627f0c0db089ea57a4980bed6fae5e0246cdbbd2dbfa4e322ad90493a685ad895b21dfd982ebbebee159a7e50e873eabdc52fca8a",
|
||||
"@rolldown/binding-linux-x64-gnu@npm:1.0.3": "5d8faa3524898d23161a79ba6ad6fdeac8774c1a15c876a0eaadce582bcc584ec463ac8c2d685de509d04098202b67c8dfad515fcf0a614542af2b4260909597",
|
||||
"@rolldown/binding-linux-x64-musl@npm:1.0.3": "a0cbdbba526790dd69f8de7810a90ee944f4a920f01326cff331702527b4dbf1377afd1dd9d65ded169f12fb3a1f0ec6d77c931a27e03cafcab453b2bfd3c317",
|
||||
"@rolldown/binding-openharmony-arm64@npm:1.0.3": "ab0ca503f2b342e25f466dc65bd35d509ff629996086f480fefdfc7e54c0958d8f51daf51204a485f3c23b1405c824387524dd83a634f5a1304bf0c4722e0995",
|
||||
"@rolldown/binding-wasm32-wasi@npm:1.0.3": "f540fdaebd7747dc436271fb8e22a60d08deac0b125e02f63cf0fd29cc0d228969d6ee6d49e150d9fd4f8bcd24795c116f86949bedce3cff505402ab2f4455a2",
|
||||
"@rolldown/binding-win32-arm64-msvc@npm:1.0.3": "b85acf5cd1065ae5260ebd43586eea6dca66675b8346fe42a14c3a95e46943f290684b36cf359c0f01c38256558e819c74571945c13adfcbdc6238ef018ad877",
|
||||
"@rolldown/binding-win32-x64-msvc@npm:1.0.3": "d76ebc4fb315deddce845b82eaa07eedf88bb5f9500fa50d241805055dea593ddfcbd762d59116f35ecd6b4bcef3dba5e513180e8d9301486eac272904ce91cf",
|
||||
"@swc/core-darwin-arm64@npm:1.15.41": "09b4f1481e470b01c2f4fbcd85b5d06b75c014bcb7fcffb4a436101644daed8c2a8bbfb7d64e40fb91a49cad46b217c7a90a48eb66992c2e9662cbfc91d4dd60",
|
||||
"@swc/core-darwin-x64@npm:1.15.41": "723662c309630266a3f90e697458aab879f49a6405f641a99c6a72f87c6d97d01d44679e28a19bc73bca362208353f6adf5fa3139b1472e82617454499f8142a",
|
||||
"@swc/core-linux-arm-gnueabihf@npm:1.15.41": "c544b6b44f8fc3678b60c51658461510022565af93aecf23218c9c9f3d8d971695b3d20149cc858a56582ff6a1a896c02bbb32d816e36ae581ffdebb1504d3b2",
|
||||
"@swc/core-linux-arm64-gnu@npm:1.15.41": "a851e540ddaeede74f97fe5000fcbe2a0353f213e8c01d221579e615753620238127e052a20345f4952a5afa1f980ac1f9d88717c98643a1714ce60f8facacba",
|
||||
"@swc/core-linux-arm64-musl@npm:1.15.41": "2f9c1321974f3a9d330db93529a8a3c24500a5f17127bfa7d803f4388384a1a68a9b1df3a08180c3d82a1c2b1c23f68bd9cbb78259508aab2f790a3c3a51a96b",
|
||||
"@swc/core-linux-ppc64-gnu@npm:1.15.41": "e1cc0e3f94bac3e85e8d65bb87cc755ca52ce88de556714c1a4f3150ae24925442873013eae06db8eac054b3f585f7c46e56718dfc7cdab5529eb6c22aa66264",
|
||||
"@swc/core-linux-s390x-gnu@npm:1.15.41": "93d799ffd978a8f5fd3559314676e9813e0bf93c259eb52ca37a3cc7e2ca67464d506e602f97194d964df83190214d6445bbc02fba1eeaedbcc6cdc5f3809f0b",
|
||||
"@swc/core-linux-x64-gnu@npm:1.15.41": "3941cf5cfa7730bc576400a1a0fd33a7520a1e71d32981f2f64ad06d6fcd537f01c746a3d26893fe225b6aa6829de932929f6338cdf233699e0a776e4f0f66c9",
|
||||
"@swc/core-linux-x64-musl@npm:1.15.41": "78eedfa99dfef822d542b6e47635600e747f1e6f9f359c972c4bbed9eb297b102e99be80bb3454a6579c18faa78416f1cc3f5573a32da11c56e9b9a29e1328be",
|
||||
"@swc/core-win32-arm64-msvc@npm:1.15.41": "2810f4fe12fe0c7cb808f7b8eba79058c4f4d2b56f6be3dcd69db4034a73b8a26cee3dd2699ba26eeb0917d2bcea1d875e8999998002c2ed567942e0f1a4a008",
|
||||
"@swc/core-win32-ia32-msvc@npm:1.15.41": "3bc12936a18d9a1cb8865b834ad8567b1d394041bc8cbfc2a431401535591bfb4d190f46e594893a68e3dda901b0c54b910200ee1dbfb41fcdff5ffe162d17bb",
|
||||
"@swc/core-win32-x64-msvc@npm:1.15.41": "fb5c9a63cbc1572e89fe75a0ab874086450aa30c955682bac3af5c34e291c6033dcf98e2699e968ee7f62a14c5177ccb3fa76024935b84e063f817ad16000bcc",
|
||||
"@tauri-apps/cli-darwin-arm64@npm:2.11.2": "d8727da64b8382e879924c6dca66ec0b090e6a59a342d9ba90a20b63452f8105f29b615269b18df22b153f52706e3d1e12bc3433fa1f7a72d09a8026813c63bc",
|
||||
"@tauri-apps/cli-darwin-x64@npm:2.11.2": "3a5b573e88f5db4bee121284ddbba9bb6c734c5327d5d4a724935b9ddee99c989c8a765187f70e97c3e357d4181b07347f6cb31c3eaa74a816e0e7369f632b56",
|
||||
"@tauri-apps/cli-linux-arm-gnueabihf@npm:2.11.2": "733d0195040a80e6ce2d2781004746dd36162e3eb331b45eb770870ff5d5ec401e4efa9e4fb6c2f3845ae242f3d68b1ee5a9c55726165b49873ecaef53b64fd9",
|
||||
"@tauri-apps/cli-linux-arm64-gnu@npm:2.11.2": "50af302c5daae38b9045706cefda6d1ad3d4b9f7997e5154cca2968edaef64e3aab1471493edc56449745c3e7d102973fa56cc01caaa317cb24b5fbaf7879895",
|
||||
"@tauri-apps/cli-linux-arm64-musl@npm:2.11.2": "0d24a9c772b60b4021fe294d9434dec0d33059698efc0d0de6d29fd6c7b1b14238f994a4ec49904c940a91d1af0087017bbad3fe0d82704073bd29b6390482c3",
|
||||
"@tauri-apps/cli-linux-riscv64-gnu@npm:2.11.2": "e08fd3792ab16d8f566b93a85afab9c03c9006f253870d926f9c72da71c06df1c67733436f6a733c4262bdcb6120d6c1c4352b3e83afcc24e1addd5eda6f77c0",
|
||||
"@tauri-apps/cli-linux-x64-gnu@npm:2.11.2": "32dd8f051d534cf4883b02fd25333815db86fbc36075ccc71320edfdc63543f07fb55adb1660e0c82e5a812cb244277716a652d34ee07f119d5e6b9371e2c2bb",
|
||||
"@tauri-apps/cli-linux-x64-musl@npm:2.11.2": "7d7a9461e28342c982cd143427eda109ef8a9f4c1ebc9499b787cdb696bead1891d7e25433f3bc5dec88fd4f985974f6289c074165b912e09baba8d8ee2c1346",
|
||||
"@tauri-apps/cli-win32-arm64-msvc@npm:2.11.2": "a77faad67c7f91dd1a24a2f912b13f3a2819cd2ffbd7e71de11a7735231f9cf54883f5af4c2a6bdc6776bf6d61a345ad06babca5de8d1fd5e6f29d17582f5616",
|
||||
"@tauri-apps/cli-win32-ia32-msvc@npm:2.11.2": "2e663cad45e67a8097d91a0a01bf1cb860309682dfd8b79dd3ffce05ca36dbee2a7115d294b3338250ff00005067319c174512ed890dfbf1bbe40cb1fb08b360",
|
||||
"@tauri-apps/cli-win32-x64-msvc@npm:2.11.2": "42476dbc2c2c1e599abdae03a57beecb93496cd5633f1c2c09441925e822bcb5379da45adf27c18cf354a98d4da1e4b14268eff1642b42586279a3d29f4cc630",
|
||||
"@turbo/darwin-64@npm:2.9.14": "56d85d491ee5d675a82dbe2668f507f5f8275a76acf13ae4c1146d256e8322fe824d95a73d8163d8eb5adec1de00fff362ac74f0261b48a7585960b2543438c3",
|
||||
"@turbo/darwin-arm64@npm:2.9.14": "67b4c0da994cdf099fa0936bf764736a3d2fe1b9ee2d4a3fd408ecf027bec8d809d46354068e7b1c4a2f17d20c72566bc43fd2d1c7cff642840f1f2531c7e795",
|
||||
"@turbo/linux-64@npm:2.9.14": "f924d8a0da065305a56948b2ddafa86f08b5c0deedd274b447cac9a278117b6bd25d051b6985aecccdc484e120f1d1078b57691f364f21191e578348b916cf0f",
|
||||
"@turbo/linux-arm64@npm:2.9.14": "9bea16da322616dca2d569f2b364cda8fbaa625b99bf432e713192e51da5a328c19afab9b56d577cc1103ca402f1422d4c8688006ca2180483e4d9d3f8d5761f",
|
||||
"@turbo/windows-64@npm:2.9.14": "17d7259b6b072edd31ec4038ba66da2f8a01bb0cca1e57042b902a9398f3b89e625c73ea58da59687385602a1d60b9403c3cfc3f516ae51da4f046ce4b3b46c0",
|
||||
"@turbo/windows-arm64@npm:2.9.14": "f7e46322e5393db2a5edb56cabcc5ac8584b0ce0dcd2b9dbcefc52edacd5d77360f1f7af7c40388f8a2bc930d28a710a2f17ca6052cb9415744c62d56b6d855e",
|
||||
"@typescript/native-preview-darwin-arm64@npm:7.0.0-dev.20260615.1": "54d7131691347de6cb3f0c2e8ee07504a061dd92e08757c54657ae037c2a2e8184ef000a6db6a50f76d50c12c11b53e1a9640b3911698ee5aff2edc8f059d399",
|
||||
"@typescript/native-preview-darwin-x64@npm:7.0.0-dev.20260615.1": "60970a7271973feb2ce8864e843b47b21ac5e3619ac86a90911242e84073c9d0bd27cea6c5acdd8580f5fa09dd818a4a1d827a9536ece773e071b51dc2961f6b",
|
||||
"@typescript/native-preview-linux-arm64@npm:7.0.0-dev.20260615.1": "8e936bfe87b8d3b82bd554cf81d7f30e33d6837fba468091c173fbdc93fd9593913fe3e1a7620cfd159654bc13697656df73ecce838d66342584b6e5d25ccc57",
|
||||
"@typescript/native-preview-linux-arm@npm:7.0.0-dev.20260615.1": "badf1b0b1b759cde8805c88a30f7c2b118953600339998e540f135ec0b91ba062c4131b065583e77f36f5abc44857579254931f0358973ebcae1870a7f97e521",
|
||||
"@typescript/native-preview-linux-x64@npm:7.0.0-dev.20260615.1": "4d41c67e118d836c9f1445cd8223462ba56ced03d7ac7278687b28ddddb5712c1192956b3f68d12d09165912d0cc714594790e0ed365215a37d9eca2a9a0c992",
|
||||
"@typescript/native-preview-win32-arm64@npm:7.0.0-dev.20260615.1": "ef0808f53c9d6abe83807da7ab432a4687185f2df7371bef62b2f59f6dd757ea7ce4617deb1342384e4b185a32818873b4b6f765c75f84e69512e39ab01e3d06",
|
||||
"@typescript/native-preview-win32-x64@npm:7.0.0-dev.20260615.1": "5ff8548c4d96ecc0dee75d2d1d0f8ec1b9a7ab6ba53a5ff9683b03037a0ca901eb71a42ff13832233d112c79161d162eab12866345eba872bed5ecdc323d70ef",
|
||||
"@unrs/resolver-binding-android-arm-eabi@npm:1.12.2": "4890db75332b1e1ac63c638670616f0f056d11682d76e010d8889cba5d82325f507967414643ab73abc02b720d2ae3cfb97ace7923dacedd6d8de1aa37fedb76",
|
||||
"@unrs/resolver-binding-android-arm64@npm:1.12.2": "6fe919620771ada502afbb049688db67c96380c7c560d694e23cdb5d1108b400f1e77bc2c574ac3036c0f78a3d245d0e844e8194645c1ddf89ad9cb3deb05876",
|
||||
"@unrs/resolver-binding-darwin-arm64@npm:1.12.2": "60880d85d28e5901c45ea220c1bd208384b3a82d0c8274c6dbae5d4e3f601949a5ef40393e4c9ce063484e11556df5acb51fc8bdea494f803ea10915ab02ea7d",
|
||||
"@unrs/resolver-binding-darwin-x64@npm:1.12.2": "e6e1482d62db4bb31e4cadfa16028df55359a945408e04955bde9b53276d390fe4a7ede43f415b64d98a92b8bec1a6a69cfa8ac64161978a9ff19c84b97fae3b",
|
||||
"@unrs/resolver-binding-freebsd-x64@npm:1.12.2": "85102fd892f91678f4fe01f70e2217d681dea7934e4d39bb3c6dab39f9b322a1d84cad4c4817249dd2d0e153d3324b2658482fef211513f6c7c5c1a7bd48f621",
|
||||
"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.12.2": "3d273c3a389e01fb90f76d969c65e1531ff1bb8029dcd9706b53500caddbd732a23bb32f3fd042d87188f3141a4be711a6b1eb14af64f41ae814cb876f610c74",
|
||||
"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.12.2": "5a8a58dafac34a7a55f74ea875fc1f4dfdbb22d30a4e1dae4d49dc20040817ca604f5303cedb565e138873a377e88db1b76750c3e9aad6173214d15a257a6cca",
|
||||
"@unrs/resolver-binding-linux-arm64-gnu@npm:1.12.2": "1ff2d49aaf57959f26503e5e3878ef01dfbd10e793dba4a04d69fdc9f3612b1d0294b6b4d722419e946da565b5f685625ef687b1b43723789836a392b61e11a8",
|
||||
"@unrs/resolver-binding-linux-arm64-musl@npm:1.12.2": "f46191bc4208b9b77220dc51a6facc989f87dfac6c2675aad1682bf085d11d4e2a7e0adf2f5780bde9aab1400afabf4f16851523405c18648169e12855892d54",
|
||||
"@unrs/resolver-binding-linux-loong64-gnu@npm:1.12.2": "1c83bb3c1ffc8f8a6060e62811082d65e0c1e593a178a694da6961bb8e46bb7775bce40abd530b27c08790fda2a9bb6b72d94351033715c277563c30cffa678e",
|
||||
"@unrs/resolver-binding-linux-loong64-musl@npm:1.12.2": "c2172ee6cd4012d5b2e0776b2f42ce2828609123309471528b60c6f7a61faac73764dd4889450c73c574c70569b5f452f9b0335419fbd3e2590121a6042d40b4",
|
||||
"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.12.2": "2a78c28e0f39d12d7c0cf116738d3e805425c02c792be4e1ec9232e2ba24893d6601883455aacb94ef760c11adb75bc7e9aba6cc241f4b3e15ec9da53632321b",
|
||||
"@unrs/resolver-binding-linux-riscv64-gnu@npm:1.12.2": "5d054de185858014c724c3f996cc41c6ed2a6d92b1e7fe9c5eb35e3de743e23bd75652528764f490d50cbadd13a04777a3f661750fc3eaa427eb1e07681a044f",
|
||||
"@unrs/resolver-binding-linux-riscv64-musl@npm:1.12.2": "fd8f949612d44b41ae5260118983be4aed2998fcb81b42013dbb0bb8634ab85264b0b1860514ddd8c01683c4c513732bd8aefb75e49e034e92df61fadf8be2c6",
|
||||
"@unrs/resolver-binding-linux-s390x-gnu@npm:1.12.2": "d1ae887fe782f825761003ea85217b708638529497a12f5875b118cf32217bd4a007d00714b974f6e9804093804937450e7be4d68212e623cc72cbdae9264ad8",
|
||||
"@unrs/resolver-binding-linux-x64-gnu@npm:1.12.2": "653659c368174083a618dd6cdb09318c8c806329c25dd2ae81383ef7ac0f61220184ca69cf144c3c394211984bfb6830c9532b45d17a06c898d827a0f29a4c56",
|
||||
"@unrs/resolver-binding-linux-x64-musl@npm:1.12.2": "16a73bbf88a74b29299acb43a821a67fef1a4165441747f2839e7335f2195f471cbe037d87efc5ee78f9e1e4ed80ea3ef46ced8072889490063a2eed816eb1e6",
|
||||
"@unrs/resolver-binding-openharmony-arm64@npm:1.12.2": "47a1601c755887ef36aabea87405c867f192ff3aa9dc998a0c374df7ede415ddfd73c39b2f6a39f6f2a65bc71de50c629baacffcb5420a705bcd777d1b4863f0",
|
||||
"@unrs/resolver-binding-wasm32-wasi@npm:1.12.2": "323b8cdd6aac5653784292c3e3a016263e5080b5ccd9f48fd0131c0769f35ec67024485c4062abb26e450091db00afc95c82cd9ad58ab0b1c56f7be60d034266",
|
||||
"@unrs/resolver-binding-win32-arm64-msvc@npm:1.12.2": "ef9d756441026e667f819da9518a2d88ffa01d73c5c42dbefa12e8c41de26a8f4404aee1faad44f4b8baed7186b3896ddc99fd4f1622c25a4a2112cdddd9b238",
|
||||
"@unrs/resolver-binding-win32-ia32-msvc@npm:1.12.2": "1172c46be7ddb3ceace1758b31ecb2e29d82ca06b9035f36310108b47dbb84bab8b85297382e65e49510af52ae18d8bdbf916590de6104cf4f6d818436cff0ee",
|
||||
"@unrs/resolver-binding-win32-x64-msvc@npm:1.12.2": "a16d3add7d4171c6fc4ac0a54c662b6f44475575e7af7346457b46ee03670812c829665b7dc8633eb982a90a074c36e2e775c103b0590710b72f9384588780d3",
|
||||
"lightningcss-android-arm64@npm:1.32.0": "119b578a5ce59674c45fe8dc269fdb2770d678571e7fd3f7eca763807d15542689d01f75f2836e1aa49b9ddd0caa7ab3a5301bb23b39418eaeba1efab3e85975",
|
||||
"lightningcss-darwin-arm64@npm:1.32.0": "55010ae8ee7aac61da41fbc81992e11b1ca386087bb8493deb1014ea90c2deeef1b4126621722aa5b8a1aeee039ec7e3b1b9f7779d128963d6e436743f5d23aa",
|
||||
"lightningcss-darwin-x64@npm:1.32.0": "dd74c964c85c93842576f8caaf6c31ea273545e2f39f931716fed7700668f30d7ca92516197913ded19d836f6ff1876a91cca008125f097e254c98177e67bf86",
|
||||
"lightningcss-freebsd-x64@npm:1.32.0": "29b43c1a450171da1dece9ba2a13a6dc0866178e46fa51a8cf050fe9562eb81b45f8580a3aeaf2ac97fb2fd381d8cb88d950e701774c8d012e72a355df7ac264",
|
||||
"lightningcss-linux-arm-gnueabihf@npm:1.32.0": "783e6f8bba55ffd585f17229e97056c370ed834e0123d0002884b51a7fb54d6807e97076726fd0bfd949396134983e21a0aace0d4f69b916994db679a0d8a360",
|
||||
"lightningcss-linux-arm64-gnu@npm:1.32.0": "d694a6148f86d20e23b0806e8c6366de3bfc6927925ad17d226cd86c2ff4f025b1c88ae3d214dea06b45af2aa2d356cf504b1057b2a0a7027b44bfac11dc1f4d",
|
||||
"lightningcss-linux-arm64-musl@npm:1.32.0": "ad946ead9c3ff13b43818d94426940b50cf1ff3dacd07835b8c50f0d412f64574be3c467410786dfb3524e93bc98fb789ebb73e6de845ceb1729fceb5296fe6f",
|
||||
"lightningcss-linux-x64-gnu@npm:1.32.0": "183d5cda546283523761f606032596d70383d6fd153cfca56ab348d551ef06394ee009fae7818b0732de10d9d0ee27db483cbc7e0d0899305a37a118504d609e",
|
||||
"lightningcss-linux-x64-musl@npm:1.32.0": "67079567d13d5464a2556630dcbcbb8ccd0e3188d56b0a732c651930a823a708b91faa067256a15be6f289f07f1b57ca433d38ad397a9a102fbb85d0b85b5ea0",
|
||||
"lightningcss-win32-arm64-msvc@npm:1.32.0": "6117fdfb4ef1c2d8054fb469659e406ae32adae9dc712e2e5ed3f813bf25a52f0954911e92a5d397aeeba7151bafb3370dfc50504b94e719f4018de7d3cc3687",
|
||||
"lightningcss-win32-x64-msvc@npm:1.32.0": "f4a917eebae4f3718eaa4d3a16e268a42f117180e6bda101b380939f6738d2754dbb69bd454ee412bbc6e6290e2d8446c5f6ee3a63b144c9bd6f40a93109b7ab"
|
||||
}
|
||||
15
pkgs/by-name/pr/proton-authenticator/package.json.patch
Normal file
15
pkgs/by-name/pr/proton-authenticator/package.json.patch
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
diff --git a/package.json b/package.json
|
||||
index cb439a93b1..4258f9f93f 100644
|
||||
--- a/package.json
|
||||
+++ b/package.json
|
||||
@@ -3,9 +3,8 @@
|
||||
"private": true,
|
||||
"license": "GPL-3.0",
|
||||
"workspaces": [
|
||||
- "applications/*",
|
||||
+ "applications/authenticator",
|
||||
"applications/lumo/src/app/lib/lumo-api-client",
|
||||
- "applications/pass-desktop/native",
|
||||
"packages/*",
|
||||
"packages/wasm/*",
|
||||
"packages/pass/docs/starlight",
|
||||
|
|
@ -1,62 +1,105 @@
|
|||
{
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
fetchurl,
|
||||
autoPatchelfHook,
|
||||
dpkg,
|
||||
glib-networking,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
rustPlatform,
|
||||
cargo-tauri,
|
||||
nodejs_24,
|
||||
yarn-berry_4,
|
||||
pkg-config,
|
||||
wrapGAppsHook4,
|
||||
glib-networking,
|
||||
libsoup_3,
|
||||
webkitgtk_4_1,
|
||||
python3,
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
let
|
||||
pname = "proton-authenticator";
|
||||
version = "1.1.6";
|
||||
nodejs = nodejs_24;
|
||||
yarn-berry = yarn-berry_4.override { inherit nodejs; };
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://proton.me/download/authenticator/linux/ProtonAuthenticator_${finalAttrs.version}_amd64.deb";
|
||||
hash = "sha256-jHtqBdGE9+Kz5sjPMrCDnHKX0NLscO5Dp4pYYE8L2iU=";
|
||||
src = fetchFromGitHub {
|
||||
owner = "ProtonMail";
|
||||
repo = "WebClients";
|
||||
rev = "proton-authenticator@${version}";
|
||||
hash = "sha256-Zd3cSkzRBDnLNY2sM7EXWCX6F6+ePOpslnEroludzag=";
|
||||
};
|
||||
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
in
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
strictDeps = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
inherit pname version src;
|
||||
|
||||
sourceRoot = "${src.name}";
|
||||
|
||||
cargoHash = "sha256-bkjjwwSizj/ltY3ISPKEL6rvg37RaDf/Ou7a7jYS47I=";
|
||||
cargoRoot = "applications/authenticator/src-tauri";
|
||||
buildAndTestSubdir = finalAttrs.cargoRoot;
|
||||
|
||||
nativeBuildInputs = [
|
||||
dpkg
|
||||
autoPatchelfHook
|
||||
cargo-tauri.hook
|
||||
nodejs
|
||||
yarn-berry
|
||||
yarn-berry.yarnBerryConfigHook
|
||||
wrapGAppsHook4
|
||||
pkg-config
|
||||
(python3.withPackages (ps: [ ps.setuptools ]))
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
|
||||
glib-networking
|
||||
libsoup_3
|
||||
webkitgtk_4_1
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
patches = [
|
||||
# It disables scripts (not needed for proton-authenticator workspace).
|
||||
./disable-scripts.patch
|
||||
./package.json.patch
|
||||
];
|
||||
|
||||
install -Dm755 usr/bin/proton-authenticator $out/bin/${finalAttrs.meta.mainProgram}
|
||||
cp -r usr/share $out
|
||||
# The original yarn.lock contains references to private registries.
|
||||
# How to generate a new yarn.lock:
|
||||
# 1. Delete the original yarn.lock.
|
||||
# 2. Apply the patch `package.json.patch`.
|
||||
# 3. Run `export SENTRYCLI_SKIP_DOWNLOAD=1`, `yarn workspaces focus proton-authenticator --production` and then `yarn install` into the repository directory.
|
||||
# 4. Generate a new `missing-hashes.json` file by running `nix run nixpkgs#yarn-berry_4.yarn-berry-fetcher -- missing-hashes yarn.lock > missing-hashes.json`.
|
||||
# 5. Move the generated `yarn.lock` and `missing-hashes.json` files into this directory.
|
||||
yarnLock = ./yarn.lock;
|
||||
missingHashes = ./missing-hashes.json;
|
||||
offlineCache = yarn-berry.fetchYarnBerryDeps {
|
||||
inherit (finalAttrs) src missingHashes yarnLock;
|
||||
|
||||
runHook postInstall
|
||||
hash = "sha256-FiDuAwEj/AIH/lJRLyuNPvthcoynsFGcUYZyx7DMnFA=";
|
||||
};
|
||||
|
||||
postUnpack = ''
|
||||
cp --no-preserve=all ${./yarn.lock} $sourceRoot/yarn.lock
|
||||
'';
|
||||
|
||||
preFixup = ''
|
||||
gappsWrapperArgs+=(
|
||||
--prefix GIO_EXTRA_MODULES : "${glib-networking}/lib/gio/modules"
|
||||
--set WEBKIT_DISABLE_COMPOSITING_MODE 1
|
||||
)
|
||||
'';
|
||||
tauriBuildFlags = [
|
||||
"--no-sign"
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "Two-factor authentication manager with optional sync";
|
||||
description = "Two-factor authentication manager with optional sync (built from source)";
|
||||
longDescription = ''
|
||||
This package builds proton-authenticator from source.
|
||||
|
||||
Changed: proton-authenticator is now source-compiled by default.
|
||||
For the pre-built binary version, use proton-authenticator-bin instead.
|
||||
'';
|
||||
homepage = "https://proton.me/authenticator";
|
||||
license = lib.licenses.unfree; # source not yet published
|
||||
license = lib.licenses.gpl3;
|
||||
maintainers = with lib.maintainers; [
|
||||
felschr
|
||||
demic-dev
|
||||
pbek
|
||||
];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
||||
platforms = lib.platforms.darwin ++ lib.platforms.linux;
|
||||
mainProgram = "proton-authenticator";
|
||||
};
|
||||
})
|
||||
|
|
|
|||
24762
pkgs/by-name/pr/proton-authenticator/yarn.lock
generated
Normal file
24762
pkgs/by-name/pr/proton-authenticator/yarn.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -8,14 +8,14 @@
|
|||
|
||||
python3Packages.buildPythonApplication (finalAttrs: {
|
||||
pname = "pykickstart";
|
||||
version = "3.74";
|
||||
version = "3.75";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pykickstart";
|
||||
repo = "pykickstart";
|
||||
tag = "r${finalAttrs.version}";
|
||||
hash = "sha256-Kjn9cELSCd+vEdqIZbJNBqC0rHLypkfhfBCfS+WEyGk=";
|
||||
hash = "sha256-3tQ5tXUx2L3I0SyxVKgNRFv0AwYeG88vZOdSZDxj1Ks=";
|
||||
};
|
||||
|
||||
build-system = with python3Packages; [
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ stdenv.mkDerivation {
|
|||
homepage = "https://zdl.vectec.net";
|
||||
license = lib.licenses.gpl3Only;
|
||||
inherit (libsForQt5.qtbase.meta) platforms;
|
||||
maintainers = [ lib.maintainers.azahi ];
|
||||
maintainers = [ ];
|
||||
mainProgram = "zdl";
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,18 +24,17 @@ assert lib.assertOneOf "displayServer" displayServer [
|
|||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "ringboard" + lib.optionalString (displayServer == "wayland") "-wayland";
|
||||
|
||||
# release version needs nightly, so we use a custom tree, see:
|
||||
# https://github.com/SUPERCILEX/clipboard-history/issues/22#issuecomment-3676256971
|
||||
version = "0.16.2-unstable-2026-05-10";
|
||||
version = "0.17.0";
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "SUPERCILEX";
|
||||
repo = "clipboard-history";
|
||||
rev = "0719d4398034efa32c3f093e06a2fdb033afbc22";
|
||||
hash = "sha256-/LDxZ3bsuVwMiRzLTuLIs6y7jAS/84sXhTRhovXV8zM=";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-qLYQeZTrtUUn4JSzK3SX687xV4FO6h7GshVdQi8Qkbk=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-ARSvWjeVWXksZ27lRJn67wXpgr8epagflOAULKmYaQ8=";
|
||||
cargoHash = "sha256-T65TxIes0171uDxDE72SnFeRVAgw5FR2z6yTcmH3Z6k=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
makeWrapper
|
||||
|
|
@ -103,13 +102,13 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
|||
|
||||
passthru = {
|
||||
tests.nixos = nixosTests.ringboard;
|
||||
updateScript = nix-update-script { extraArgs = [ "--version=branch=stable" ]; };
|
||||
updateScript = nix-update-script { };
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Fast, efficient, and composable clipboard manager for Linux";
|
||||
homepage = "https://github.com/SUPERCILEX/clipboard-history";
|
||||
changelog = "https://github.com/SUPERCILEX/clipboard-history/releases/tag/${finalAttrs.version}";
|
||||
changelog = "https://github.com/SUPERCILEX/clipboard-history/releases/tag/${finalAttrs.src.tag}";
|
||||
license = lib.licenses.asl20;
|
||||
platforms = lib.platforms.linux;
|
||||
maintainers = [ lib.maintainers.magnetophon ];
|
||||
|
|
|
|||
|
|
@ -23,13 +23,13 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rpi-imager";
|
||||
version = "2.0.9";
|
||||
version = "2.0.10";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "raspberrypi";
|
||||
repo = "rpi-imager";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-hoypze5EyJKRVQNI8x5sh3LqVyK8tEze1/vxogrqckA=";
|
||||
hash = "sha256-k6ld7TWCj8JzLJG9ph7hKXvR1nkHt0fJqlGSs+NqnR0=";
|
||||
};
|
||||
|
||||
patches = [ ./remove-vendoring.patch ];
|
||||
|
|
|
|||
|
|
@ -11,14 +11,14 @@
|
|||
}:
|
||||
python3.pkgs.buildPythonApplication (finalAttrs: {
|
||||
pname = "sbomnix";
|
||||
version = "1.7.6";
|
||||
version = "1.8.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "tiiuae";
|
||||
repo = "sbomnix";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-LApJvPeyViGJiJPLu7dFBU79SbMKieLVFKbDtFHo7f4=";
|
||||
hash = "sha256-oMIFcfjbt+lgAcdJbA64opu1qCwUVUIEukotqQEox3Q=";
|
||||
|
||||
# Remove documentation as it contains references to nix store
|
||||
postFetch = ''
|
||||
|
|
|
|||
|
|
@ -12,11 +12,11 @@
|
|||
|
||||
tcl.mkTclDerivation rec {
|
||||
pname = "scid-vs-pc";
|
||||
version = "4.26";
|
||||
version = "4.27";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/scidvspc/scid_vs_pc-${version}.tgz";
|
||||
hash = "sha256-iK4h7YS8+W2nr3Bbmai4Ervt0YWYKgkQaZ5IH7Q9HkE=";
|
||||
hash = "sha256-DivCF3yCHmGyps7PTU1xKcdG+oBegD/ntMst9rOr0TU=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
}:
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "seaweedfs";
|
||||
version = "4.34";
|
||||
version = "4.36";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "seaweedfs";
|
||||
|
|
@ -22,10 +22,10 @@ buildGoModule (finalAttrs: {
|
|||
find "$out" -name .git -print0 | xargs -0 rm -rf
|
||||
popd
|
||||
'';
|
||||
hash = "sha256-lKpNBdiynDEnqCujgDRFUXvyVops4Q5l6n9P/7pm8hc=";
|
||||
hash = "sha256-y42opbGNVMxWU/k0j5g27RWLBF0PLcOPlXU9eVg0jwY=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-MF8aLFKUFq0io7CL1EGZp+TUB2co/Hf0fwK2wZybx8Y=";
|
||||
vendorHash = "sha256-peRhKuZ1D+y8Uhw1+P8Ogc1HrOh1/kYVd29lR89+rIo=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
}:
|
||||
|
||||
let
|
||||
version = "5.1.4";
|
||||
version = "5.1.10";
|
||||
in
|
||||
|
||||
(ffmpeg-headless.override {
|
||||
|
|
@ -17,8 +17,8 @@ in
|
|||
source = fetchFromGitHub {
|
||||
owner = "Servarr";
|
||||
repo = "FFmpeg";
|
||||
rev = "e9230b4c9027435dd402a68833f144643a3df43a";
|
||||
hash = "sha256-oMIblMOnnYpKvYeleCZpFZURGVc3fDAlYpOJu+u7HkU=";
|
||||
rev = "9eecad42d64ab888b9bb366df998b5b7cac0e2bc";
|
||||
hash = "sha256-8qXQIbBNFRX3HsEHD2m4STHyxALqTSoIkKrVLc6vX/4=";
|
||||
};
|
||||
|
||||
buildFfmpeg = false;
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
applyPatches,
|
||||
}:
|
||||
let
|
||||
version = "4.0.17.2952";
|
||||
version = "4.0.18.2971";
|
||||
# The dotnet8 compatibility patches also change `yarn.lock`, so we must pass
|
||||
# the already patched lockfile to `fetchYarnDeps`.
|
||||
src = applyPatches {
|
||||
|
|
@ -29,7 +29,7 @@ let
|
|||
owner = "Sonarr";
|
||||
repo = "Sonarr";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-nOpCKQqX6lHBcLtIC18CZ0nCrhXTjpEPcO0L2/kcNEo=";
|
||||
hash = "sha256-83qbbBNk42KjKZNvYaAINoWZa3uEgaV0eveGl9dKTd8=";
|
||||
};
|
||||
postPatch = ''
|
||||
mv src/NuGet.Config NuGet.Config
|
||||
|
|
|
|||
|
|
@ -6,13 +6,17 @@
|
|||
nixosTests,
|
||||
systemd,
|
||||
autoPatchelfHook,
|
||||
jdk25_headless,
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "unifi-controller";
|
||||
version = "10.4.57";
|
||||
|
||||
# see https://community.ui.com/releases / https://www.ui.com/download/unifi
|
||||
# See https://community.ui.com/releases or https://www.ui.com/download/unifi.
|
||||
#
|
||||
# When upgrading, make sure we don't need to bump `passthru.jrePackage` below
|
||||
# as well.
|
||||
src = fetchurl {
|
||||
url = "https://dl.ui.com/unifi/${finalAttrs.version}/unifi_sysvinit_all.deb";
|
||||
hash = "sha256-/DeM+M0r7D0zS/e3Lqv80YYeX65nucFnNUcRMhBbIHI=";
|
||||
|
|
@ -36,7 +40,13 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
|||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru.tests = { inherit (nixosTests) unifi; };
|
||||
passthru = {
|
||||
jrePackage = jdk25_headless;
|
||||
|
||||
tests = {
|
||||
inherit (nixosTests) unifi;
|
||||
};
|
||||
};
|
||||
|
||||
meta = {
|
||||
homepage = "https://www.ui.com";
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
|||
|
||||
meta = {
|
||||
description = "Unified tool for managing your Upsun services from the command line";
|
||||
homepage = "https://github.com/platformsh/cli";
|
||||
homepage = "https://github.com/upsun/cli";
|
||||
license = lib.licenses.mit;
|
||||
mainProgram = "upsun";
|
||||
maintainers = with lib.maintainers; [ spk ];
|
||||
|
|
|
|||
|
|
@ -1,18 +1,18 @@
|
|||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p curl jq
|
||||
#!nix-shell -i bash -p curl jq nix
|
||||
#shellcheck shell=bash
|
||||
|
||||
set -eu -o pipefail
|
||||
|
||||
version=$(curl -s ${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} \
|
||||
https://api.github.com/repos/platformsh/cli/releases/latest | jq -e -r ".tag_name")
|
||||
https://api.github.com/repos/upsun/cli/releases/latest | jq -e -r ".tag_name" | sed 's/^v//')
|
||||
|
||||
linux_arm64_url=https://github.com/platformsh/cli/releases/download/$version/upsun_${version}_linux_arm64.tar.gz
|
||||
linux_amd64_url=https://github.com/platformsh/cli/releases/download/$version/upsun_${version}_linux_amd64.tar.gz
|
||||
darwin_all_url=https://github.com/platformsh/cli/releases/download/$version/upsun_${version}_darwin_all.tar.gz
|
||||
linux_arm64_hash=$(nix --extra-experimental-features nix-command hash to-sri --type sha256 $(nix-prefetch-url --type sha256 "$linux_arm64_url"))
|
||||
linux_amd64_hash=$(nix --extra-experimental-features nix-command hash to-sri --type sha256 $(nix-prefetch-url --type sha256 "$linux_amd64_url"))
|
||||
darwin_all_hash=$(nix --extra-experimental-features nix-command hash to-sri --type sha256 $(nix-prefetch-url --type sha256 "$darwin_all_url"))
|
||||
linux_arm64_url=https://github.com/upsun/cli/releases/download/v$version/upsun_${version}_linux_arm64.tar.gz
|
||||
linux_amd64_url=https://github.com/upsun/cli/releases/download/v$version/upsun_${version}_linux_amd64.tar.gz
|
||||
darwin_all_url=https://github.com/upsun/cli/releases/download/v$version/upsun_${version}_darwin_all.tar.gz
|
||||
linux_arm64_hash=$(nix store prefetch-file --json "$linux_arm64_url" | jq -r .hash)
|
||||
linux_amd64_hash=$(nix store prefetch-file --json "$linux_amd64_url" | jq -r .hash)
|
||||
darwin_all_hash=$(nix store prefetch-file --json "$darwin_all_url" | jq -r .hash)
|
||||
jq -n \
|
||||
--arg version "$version" \
|
||||
--arg darwin_all_hash "$darwin_all_hash" \
|
||||
|
|
|
|||
|
|
@ -1,19 +1,19 @@
|
|||
{
|
||||
"version": "5.9.0",
|
||||
"version": "5.10.7",
|
||||
"darwin-amd64": {
|
||||
"hash": "sha256-B1F+01ltzErGujECC1CM8tPRuVMUOIkcKSpypqlRG2M=",
|
||||
"url": "https://github.com/platformsh/cli/releases/download/5.9.0/upsun_5.9.0_darwin_all.tar.gz"
|
||||
"hash": "sha256-EczhSmIDcG7K8L+BtOOHRT1cmvsB86IvkSWa3A5bwjk=",
|
||||
"url": "https://github.com/upsun/cli/releases/download/v5.10.7/upsun_5.10.7_darwin_all.tar.gz"
|
||||
},
|
||||
"darwin-arm64": {
|
||||
"hash": "sha256-B1F+01ltzErGujECC1CM8tPRuVMUOIkcKSpypqlRG2M=",
|
||||
"url": "https://github.com/platformsh/cli/releases/download/5.9.0/upsun_5.9.0_darwin_all.tar.gz"
|
||||
"hash": "sha256-EczhSmIDcG7K8L+BtOOHRT1cmvsB86IvkSWa3A5bwjk=",
|
||||
"url": "https://github.com/upsun/cli/releases/download/v5.10.7/upsun_5.10.7_darwin_all.tar.gz"
|
||||
},
|
||||
"linux-amd64": {
|
||||
"hash": "sha256-J8A4h39dEgMAJHKLwmgWBsj4Al9STIccUAal6JctPyQ=",
|
||||
"url": "https://github.com/platformsh/cli/releases/download/5.9.0/upsun_5.9.0_linux_amd64.tar.gz"
|
||||
"hash": "sha256-SF9GkeQlh9jdONO24zQ7LC6419txRXyl+x4q0Gfvntk=",
|
||||
"url": "https://github.com/upsun/cli/releases/download/v5.10.7/upsun_5.10.7_linux_amd64.tar.gz"
|
||||
},
|
||||
"linux-arm64": {
|
||||
"hash": "sha256-gyVqD4cBYo6L1Y0xMLl06WK4/sKvudFXLiqvEmcrRPE=",
|
||||
"url": "https://github.com/platformsh/cli/releases/download/5.9.0/upsun_5.9.0_linux_arm64.tar.gz"
|
||||
"hash": "sha256-F8YfXhTd0fU75InxLgZ02hrLrx3ELDhkRpRvYNrRGu4=",
|
||||
"url": "https://github.com/upsun/cli/releases/download/v5.10.7/upsun_5.10.7_linux_arm64.tar.gz"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,6 +29,6 @@ buildGoModule (finalAttrs: {
|
|||
mainProgram = "webhook";
|
||||
homepage = "https://github.com/adnanh/webhook";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ azahi ];
|
||||
maintainers = [ ];
|
||||
};
|
||||
})
|
||||
|
|
|
|||
|
|
@ -7,14 +7,14 @@
|
|||
|
||||
python3Packages.buildPythonApplication (finalAttrs: {
|
||||
pname = "zapzap";
|
||||
version = "6.5.2.1";
|
||||
version = "6.5.2.4";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rafatosta";
|
||||
repo = "zapzap";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-6W4Crf3zNRLOvBqnM6K9r2u8Z/lF4JnEse0ctMM+1m4=";
|
||||
hash = "sha256-yig3goxiq/84RtuyRe97ZbzwDVJP5nTYpFQfR2YNvVE=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
];
|
||||
platforms = lib.platforms.unix;
|
||||
maintainers = with lib.maintainers; [
|
||||
azahi
|
||||
lassulus
|
||||
Gliczy
|
||||
r4v3n6101
|
||||
|
|
|
|||
|
|
@ -30,13 +30,13 @@ backendStdenv.mkDerivation (finalAttrs: {
|
|||
# NOTE: Depends on the CUDA package set, so use cudaNamePrefix.
|
||||
name = "${cudaNamePrefix}-${finalAttrs.pname}-${finalAttrs.version}";
|
||||
pname = "nccl-tests";
|
||||
version = "2.18.5";
|
||||
version = "2.19.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "NVIDIA";
|
||||
repo = "nccl-tests";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-XH5/hS1oy1V8w4nIx7+RRaiUrOIPDGwLSFpVKSnOOJE=";
|
||||
hash = "sha256-eRwIl646ndISFttjG5nPqsXfPVmInABNIsphhh5I0wM=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
|
|
|||
|
|
@ -467,7 +467,7 @@ stdenv.mkDerivation (
|
|||
hash = "sha256-ulB5BujAkoRJ8VHou64Th3E94z6m+l6v9DpG7/9nYsM=";
|
||||
})
|
||||
]
|
||||
++ optionals (lib.versionOlder version "7.1.1") [
|
||||
++ optionals (lib.versionOlder version "7.1.1" && lib.versions.major version != "5") [
|
||||
(fetchpatch2 {
|
||||
name = "texinfo-7.1.patch";
|
||||
url = "https://git.ffmpeg.org/gitweb/ffmpeg.git/patch/4d9cdf82ee36a7da4f065821c86165fe565aeac2";
|
||||
|
|
|
|||
|
|
@ -19,13 +19,13 @@
|
|||
|
||||
buildDunePackage (finalAttrs: {
|
||||
pname = "caqti";
|
||||
version = "2.3.1";
|
||||
version = "2.3.2";
|
||||
|
||||
minimalOCamlVersion = "4.08";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/paurkedal/ocaml-caqti/releases/download/v${finalAttrs.version}/caqti-v${finalAttrs.version}.tbz";
|
||||
hash = "sha256-A2OAoPGmfgnQAsxH8sscUuv098ybiepbcM7Ds4nOKY0=";
|
||||
hash = "sha256-j2wXJLWawipcZXyeU7mhcG457NRi6ClYsM6ojkPwq6c=";
|
||||
};
|
||||
|
||||
buildInputs = [ dune-site ];
|
||||
|
|
|
|||
|
|
@ -12,13 +12,13 @@
|
|||
|
||||
buildOctavePackage rec {
|
||||
pname = "audio";
|
||||
version = "2.0.11";
|
||||
version = "2.0.12";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "gnu-octave";
|
||||
repo = "octave-audio";
|
||||
tag = "release-${version}";
|
||||
sha256 = "sha256-Qy9It6IiLJTvTlet3L/EP7qL58U0AUKHilmSKa2nATU=";
|
||||
sha256 = "sha256-DO7tNnYIJME08u8Kxbgkq8D4ZT0dvxiqK2deJEWmCyU=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
|||
|
|
@ -16,36 +16,36 @@
|
|||
}:
|
||||
|
||||
let
|
||||
version = "0.21.0";
|
||||
version = "0.30.0";
|
||||
hashes = {
|
||||
"aarch64-darwin" = {
|
||||
platform = "darwin-arm64";
|
||||
hash = {
|
||||
"8.1" = "sha256-BL4XH7oyZBmZThhfdaqwtArxjF+0CKYYIqxRBafhjCI=";
|
||||
"8.2" = "sha256-CDNSwdU+/7STdSzZigzq0qc58s2Tz0GtKsXnXpQodic=";
|
||||
"8.3" = "10cDKh5aXhUN8bONZAXKr8o7UMlngYCXmqD829Ht3oU=";
|
||||
"8.4" = "sha256-t2cNqYl4U4qDmpK6+4iFKmAAd2D66EJqzt+5l1gB0wg=";
|
||||
"8.5" = "JBitKlONDaXsDW1wf08JqDbado8Fy+uVzYU9Lvi8fFc=";
|
||||
"8.1" = "sha256-71TLrF9HvuocMLei89bGIibJIC1sD59RB9Vb6FBS49U=";
|
||||
"8.2" = "sha256-WFrJ0+gun1qs77s3URFTha/tZA8gSeqlGLT26twnjko=";
|
||||
"8.3" = "fiduW1NKScDDY3k3lvw98r8KqaD0jPR4En8dNvdglFA=";
|
||||
"8.4" = "sha256-SQ9+/zD6n49e2/9nH6hotyIJ/xsQMX5A78hFTPK4/hg=";
|
||||
"8.5" = "+n+fE5soEbruH+L35B+bapU/Z7rSjjOD/4BgRmr3MVc=";
|
||||
};
|
||||
};
|
||||
"aarch64-linux" = {
|
||||
platform = "debian-aarch64+libssl3";
|
||||
hash = {
|
||||
"8.1" = "sha256-I0gMRnN3y/57f0IBNDx5TaFtdFnFmotaqI8vnwGwxqg=";
|
||||
"8.2" = "sha256-gsk/Kz/zJUXGFubfnQ7wia/5JEHgrIoTM396QpX5YaE=";
|
||||
"8.3" = "sha256-6+ALZru+ee4lE41bKd06bnSqqTZ1FlcNVW4xOAWZP4g=";
|
||||
"8.4" = "fYWndjBhKQQjFUwT0aP4A6EUkNCYsEvKtUcXR9l11Yg=";
|
||||
"8.5" = "0UEvha64GSG/Mysc7oUJ6GMmY1uRZxN/gCkkNzWq/ng=";
|
||||
"8.1" = "sha256-hetG8fEmMJccYWMQwPb3hml5thNeY2L6Y4gCDQmbDlo=";
|
||||
"8.2" = "sha256-HufvcT4QSkuoxDcaCWD+hmG1fORyTUBh1Vsfnv7krng=";
|
||||
"8.3" = "sha256-LV4coud7YNqB+s1sHoKXNVLAUrLjDMDpulS9fGVXDsg=";
|
||||
"8.4" = "em1nZgGD1fAtvMxVeJBU4RZaA71/qMVLi0KCRAbilpM=";
|
||||
"8.5" = "d0f3PzvZZn1KmXy1Gm0gm5f3f58kt+/LTc3yWZqto2I=";
|
||||
};
|
||||
};
|
||||
"x86_64-linux" = {
|
||||
platform = "debian-x86-64+libssl3";
|
||||
hash = {
|
||||
"8.1" = "sha256-g5H+3q0ehto/Ug87nb69quiWfR+AhZD5RdrYKl9fmU8=";
|
||||
"8.2" = "sha256-pUAACcw24DuTDla0L375P+iPhZ/ttlMU2rnQKF6WU8k=";
|
||||
"8.3" = "sha256-kKF7+zs0WXaMNh7rYUBrg+VixK+AEn3b65EtQiQpJUA=";
|
||||
"8.4" = "FMYVQ2LDOWnmjkj5UdogwRB4q6NZqebUivbDmAjBONg=";
|
||||
"8.5" = "T4RL15DJ/rkFLMCXiK7/2PD62LUkrlqFeLwDu1F7Ev0=";
|
||||
"8.1" = "sha256-La/TQDnQ0hqNhPMtLlwfw5cKtXCpjxBMTd6yvZM2O2M=";
|
||||
"8.2" = "sha256-+FavbnliF071lWFU55rhFNq6X2wpW9mHSstwQQTbnwQ=";
|
||||
"8.3" = "sha256-G6nfKMObVMtY45J7DaKg0LdHwV+lfCUa1Pkfp66+apY=";
|
||||
"8.4" = "x9YXGxtqN3EL1lWCqAkIKKrO0b40BFalO6GExhF3p4c=";
|
||||
"8.5" = "8hU5Ft9i3L6pf2XY7rRLmSbQmZ3z1wjI+7sjiq/GHUU=";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "ansible-core";
|
||||
version = "2.21.0";
|
||||
version = "2.21.1";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.12";
|
||||
|
|
@ -41,7 +41,7 @@ buildPythonPackage (finalAttrs: {
|
|||
owner = "ansible";
|
||||
repo = "ansible";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-I0XEEGyTMQMpGTApbzVzHRuRAALl+C28GfpW4CeeTIA=";
|
||||
hash = "sha256-VTU+jhD5W+07FIPVpovQoHjCb4vhLdPZNxCm/MVofV8=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
|
||||
let
|
||||
pname = "ansible";
|
||||
version = "13.7.0";
|
||||
version = "14.0.0";
|
||||
in
|
||||
buildPythonPackage {
|
||||
inherit pname version;
|
||||
|
|
@ -32,7 +32,7 @@ buildPythonPackage {
|
|||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-68pYmDRpY2kZFb/qGQSPUBm05G9X6FbcG3kLzeN2kiQ=";
|
||||
hash = "sha256-A825R3sevpMMkhKhLQkmx81GsYd8UEcJFXuM14dvwIM=";
|
||||
};
|
||||
|
||||
# we make ansible-core depend on ansible, not the other way around,
|
||||
|
|
|
|||
|
|
@ -15,14 +15,14 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "coinbase-advanced-py";
|
||||
version = "1.8.3";
|
||||
version = "1.8.4";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "coinbase";
|
||||
repo = "coinbase-advanced-py";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-iGSe0OSCrmglaVzzJOIWwoz9DXLIE82EqK9R2QiTEUw=";
|
||||
hash = "sha256-kr2S6oB5H/SpmZgcK+dAJyMijp5OdxLszTbc6yAcX6I=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
|
|
|
|||
|
|
@ -13,14 +13,14 @@
|
|||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "genai-prices";
|
||||
version = "0.0.66";
|
||||
version = "0.0.67";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pydantic";
|
||||
repo = "genai-prices";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-bvAAdlijxRzgjEeZEibuywJXhxKBWWQVPzO8gr6dWzo=";
|
||||
hash = "sha256-MIWUpPHunKGKSLn/gDWWDseDVqqd2dll5aprMo5kcaQ=";
|
||||
};
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/packages/python";
|
||||
|
|
|
|||
|
|
@ -13,13 +13,13 @@
|
|||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "google-cloud-run";
|
||||
version = "0.16.0";
|
||||
version = "0.16.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchPypi {
|
||||
pname = "google_cloud_run";
|
||||
inherit (finalAttrs) version;
|
||||
hash = "sha256-1Sz05q03Aq5Iysz2q8q1Q6/ub2HCpux1PMYqMeW2KfE=";
|
||||
hash = "sha256-Vov3/Ouo+ESjm2mFio5kL2zKJ+q3JGxiHZ00HCibEVg=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
|
|
|||
|
|
@ -8,13 +8,13 @@
|
|||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "jianpu-ly";
|
||||
version = "1.869";
|
||||
version = "1.870";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchPypi {
|
||||
inherit (finalAttrs) version;
|
||||
pname = "jianpu_ly";
|
||||
hash = "sha256-xTownx9NOAzQtXsuhgzzqqt+GvT2IYIxwCvZfDnIPeg=";
|
||||
hash = "sha256-1jhMoHqEkkuSrWzJ3yu/iPA9l29c0xTYN1/Mqaf8TdM=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
|
|
|||
|
|
@ -35,6 +35,6 @@ buildPythonPackage rec {
|
|||
homepage = "https://github.com/didix21/mdutils";
|
||||
changelog = "https://github.com/didix21/mdutils/releases/tag/${src.tag}";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [ lib.maintainers.azahi ];
|
||||
maintainers = [ ];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,14 +13,14 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "py-synologydsm-api";
|
||||
version = "2.7.3";
|
||||
version = "2.10.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mib1185";
|
||||
repo = "py-synologydsm-api";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-LaeqAY+8WfoMwrZhwZUEcuafGvv+7reuxEh8zQ7j5S4=";
|
||||
hash = "sha256-zcyeLiy52E8vMVmF5hVJ4rX98RAyI9ZC6WQWJZ2HRIU=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
}:
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "quack-kernels";
|
||||
version = "0.5.2";
|
||||
version = "0.5.3";
|
||||
pyproject = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
|
|
@ -29,7 +29,7 @@ buildPythonPackage (finalAttrs: {
|
|||
owner = "Dao-AILab";
|
||||
repo = "quack";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-iIINpP6teFPQFvxwfDYLPhIOFSqw3A6Nita/FjVFiBM=";
|
||||
hash = "sha256-L6kReIaCTVxJPYkkYn5aCXCChAsaxn/ikcBHTHzDmgs=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ let
|
|||
in
|
||||
buildPythonPackage rec {
|
||||
pname = "reportlab";
|
||||
version = "4.5.1";
|
||||
version = "5.0.0";
|
||||
pyproject = true;
|
||||
|
||||
# See https://bitbucket.org/pypy/compatibility/wiki/reportlab%20toolkit
|
||||
|
|
@ -25,7 +25,7 @@ buildPythonPackage rec {
|
|||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-n99o9N6RcexmrLSl/u2PjKKvQ0eecHpvuw2qddiOVJQ=";
|
||||
hash = "sha256-5ElKDGYjriE7uFb7pSMXGytUp79in9oC1eUlp7iZp4Q=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
|
|
|||
|
|
@ -30,7 +30,10 @@ buildPythonPackage rec {
|
|||
hash = "sha256-hX6HQQFOxQFfegCq+13Mu1Y3jvTB2lWoKNRLz1/zrNs=";
|
||||
};
|
||||
|
||||
pythonRelaxDeps = [ "packaging" ];
|
||||
pythonRelaxDeps = [
|
||||
"packaging"
|
||||
"reportlab"
|
||||
];
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
|
|
|
|||
|
|
@ -10,14 +10,14 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "wagtail-modeladmin";
|
||||
version = "2.3.0";
|
||||
version = "2.4.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "wagtail-nest";
|
||||
repo = "wagtail-modeladmin";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-JA5Me7EcdfCPMhGKgydExV/hkzisFMg7KQWnuVrfzD4=";
|
||||
hash = "sha256-Rj5I39Fx+BNXcpGTO3AUr8MfZu2FwkdH/1HMruva11A=";
|
||||
};
|
||||
|
||||
# Fail with `AssertionError`
|
||||
|
|
|
|||
|
|
@ -31,6 +31,10 @@ buildPythonPackage rec {
|
|||
setuptools
|
||||
];
|
||||
|
||||
pythonRelaxDeps = [
|
||||
"reportlab"
|
||||
];
|
||||
|
||||
dependencies = [
|
||||
arabic-reshaper
|
||||
html5lib
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue