Merge master into staging-next

This commit is contained in:
nixpkgs-ci[bot]
2026-07-18 18:18:55 +00:00
committed by GitHub
27 changed files with 689 additions and 194 deletions

View File

@@ -1289,6 +1289,12 @@
name = "Alexandru Tocar";
keys = [ { fingerprint = "B617 DD24 3AB0 2E3F 2E67 DBFD 1305 2A85 D7A4 2AA4"; } ];
};
AlexAntonik = {
email = "antonikavv@gmail.com";
github = "AlexAntonik";
githubId = 55547934;
name = "Alex Antonik";
};
alexarice = {
email = "alexrice999@hotmail.co.uk";
github = "alexarice";

View File

@@ -99,6 +99,8 @@
- `services.plantuml-server.packages.jetty` now supports `jetty_12`, it no longer supports `jetty_11`.
- `services.komodo-periphery` has been updated to support version 2.0.0. Some options have been renamed to match the new configuration structure; compatibility aliases are provided for the renamed options. The `passkeys` and `outbound.onboardingKey` options have been removed; use `passkeyFiles`, `auth.privateKey`/`auth.corePublicKeys`, or `outbound.onboardingKeyFile` instead. New outbound mode configuration is available under `outbound.*`.
## Other Notable Changes {#sec-release-26.11-notable-changes}
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->

View File

@@ -8,41 +8,65 @@ let
cfg = config.services.komodo-periphery;
settingsFormat = pkgs.formats.toml { };
actualRepoDir = if cfg.repoDir != null then cfg.repoDir else "${cfg.rootDirectory}/repos";
actualStackDir = if cfg.stackDir != null then cfg.stackDir else "${cfg.rootDirectory}/stacks";
actualBuildDir = if cfg.buildDir != null then cfg.buildDir else "${cfg.rootDirectory}/builds";
genFinalSettings =
let
actualServerEnabled =
if cfg.inbound.serverEnabled != null then
cfg.inbound.serverEnabled
else
(cfg.outbound.coreAddress == "");
hasAnyPrivateKey = cfg.auth.privateKey != "";
baseSettings = {
port = cfg.port;
bind_ip = cfg.bindIp;
root_directory = cfg.rootDirectory;
repo_dir = "${cfg.rootDirectory}/repos";
stack_dir = "${cfg.rootDirectory}/stacks";
ssl_enabled = cfg.ssl.enable;
default_terminal_command = cfg.defaultTerminalCommand;
disable_terminals = cfg.disableTerminals;
disable_container_terminals = cfg.disableContainerTerminals;
stats_polling_rate = cfg.statsPollingRate;
container_stats_polling_rate = cfg.containerStatsPollingRate;
legacy_compose_cli = cfg.legacyComposeCli;
include_disk_mounts = cfg.includeDiskMounts;
exclude_disk_mounts = cfg.excludeDiskMounts;
# When a private key is explicitly configured, it's passed via env var.
# Otherwise, use the default file path so Periphery auto-generates a key.
private_key = if !hasAnyPrivateKey then "file:${cfg.rootDirectory}/keys/periphery.key" else "";
core_public_keys = [ ];
passkeys = [ ];
server_enabled = actualServerEnabled;
port = cfg.inbound.port;
bind_ip = cfg.inbound.bindIp;
allowed_ips = cfg.inbound.allowedIps;
ssl_enabled = cfg.inbound.ssl.enable;
}
// lib.optionalAttrs cfg.ssl.enable {
ssl_key_file = cfg.ssl.keyFile;
ssl_cert_file = cfg.ssl.certFile;
// {
core_address = cfg.outbound.coreAddress;
connect_as = cfg.outbound.connectAs;
onboarding_key = "";
}
// {
logging = {
level = cfg.logging.level;
stdio = cfg.logging.stdio;
opentelemetry_service_name = cfg.logging.opentelemetryServiceName;
opentelemetry_scope_name = cfg.logging.opentelemetryScopeName;
pretty = cfg.logging.pretty;
}
// lib.optionalAttrs (cfg.logging.otlpEndpoint != "") {
otlp_endpoint = cfg.logging.otlpEndpoint;
};
allowed_ips = cfg.allowedIps;
passkeys = cfg.passkeys;
disable_terminals = cfg.disableTerminals;
disable_container_exec = cfg.disableContainerExec;
stats_polling_rate = cfg.statsPollingRate;
container_stats_polling_rate = cfg.containerStatsPollingRate;
legacy_compose_cli = cfg.legacyComposeCli;
include_disk_mounts = cfg.includeDiskMounts;
exclude_disk_mounts = cfg.excludeDiskMounts;
pretty_startup_config = cfg.prettyStartupConfig;
}
// cfg.extraSettings;
in
lib.filterAttrsRecursive (_: v: v != null && v != { } && v != [ ]) baseSettings;
lib.filterAttrsRecursive (_: v: v != null && v != { } && v != [ ] && v != "") baseSettings;
configFile =
if cfg.configFile == null then
@@ -51,36 +75,98 @@ let
cfg.configFile;
in
{
imports = with lib; [
(mkRenamedOptionModule
[ "services" "komodo-periphery" "port" ]
[ "services" "komodo-periphery" "inbound" "port" ]
)
(mkRenamedOptionModule
[ "services" "komodo-periphery" "bindIp" ]
[ "services" "komodo-periphery" "inbound" "bindIp" ]
)
(mkRenamedOptionModule
[ "services" "komodo-periphery" "allowedIps" ]
[ "services" "komodo-periphery" "inbound" "allowedIps" ]
)
(mkRenamedOptionModule
[ "services" "komodo-periphery" "ssl" "enable" ]
[ "services" "komodo-periphery" "inbound" "ssl" "enable" ]
)
(mkRenamedOptionModule
[ "services" "komodo-periphery" "ssl" "keyFile" ]
[ "services" "komodo-periphery" "inbound" "ssl" "keyFile" ]
)
(mkRenamedOptionModule
[ "services" "komodo-periphery" "ssl" "certFile" ]
[ "services" "komodo-periphery" "inbound" "ssl" "certFile" ]
)
(mkRenamedOptionModule
[ "services" "komodo-periphery" "serverEnabled" ]
[ "services" "komodo-periphery" "inbound" "serverEnabled" ]
)
(mkRenamedOptionModule
[ "services" "komodo-periphery" "disableContainerExec" ]
[ "services" "komodo-periphery" "disableContainerTerminals" ]
)
(mkRemovedOptionModule [ "services" "komodo-periphery" "passkeys" ]
"services.komodo-periphery.passkeys has been removed. Use passkeyFiles for v1.X compatibility, or migrate to auth.privateKey and auth.corePublicKeys (v2.0+)."
)
(mkRemovedOptionModule [ "services" "komodo-periphery" "outbound" "onboardingKey" ]
"services.komodo-periphery.outbound.onboardingKey has been removed. Use outbound.onboardingKeyFile instead for better security."
)
];
options.services.komodo-periphery = {
enable = lib.mkEnableOption "Periphery, a multi-server Docker and Git deployment agent by Komodo";
package = lib.mkPackageOption pkgs "komodo" { };
configFile = lib.mkOption {
type = lib.types.nullOr lib.types.path;
dockerHost = lib.mkOption {
type = lib.types.nullOr lib.types.str;
default = null;
description = "Path to the periphery configuration file. If null, a configuration file will be generated from the module options.";
description = ''
Docker host socket URI to use for container operations.
If null, uses the default Docker socket and automatically enables Docker.
Set this to use alternative container runtimes like Podman or remote Docker hosts.
'';
example = lib.literalExpression ''
pkgs.writeText "periphery.toml" '''
port = 8120
bind_ip = "[::]"
ssl_enabled = true
[logging]
level = "info"
'''
# Podman rootless
"unix:///run/user/1000/podman/podman.sock"
# Podman rootful
"unix:///run/podman/podman.sock"
# Remote Docker
"tcp://192.168.1.100:2375"
'';
};
port = lib.mkOption {
type = lib.types.port;
default = 8120;
description = "Port for the Periphery agent to listen on.";
};
configFile = lib.mkOption {
type = lib.types.nullOr lib.types.path;
default = null;
description = ''
Path to the Periphery configuration file.
bindIp = lib.mkOption {
type = lib.types.str;
default = "[::]";
description = "IP address to bind to.";
- If `null` (default), a configuration file will be automatically generated
from the module options (recommended for most users).
- If set to a path, that file will be used directly as the configuration file.
- You can also use `pkgs.writeText` to write configuration inline in your NixOS configuration.
When using a custom config file, all other module options (except `package`, `user`, `group`,
`environment`, and `environmentFile`) will be ignored.
'';
example = lib.literalExpression ''
# Option 1: Use an existing config file
"/etc/komodo/periphery.toml"
# Option 2: Write config inline using pkgs.writeText
pkgs.writeText "periphery.toml" '''
root_directory = "/var/lib/komodo-periphery"
logging.level = "info"
logging.stdio = "standard"
'''
'';
};
rootDirectory = lib.mkOption {
@@ -89,24 +175,25 @@ in
description = "Root directory for Komodo Periphery data.";
};
ssl = {
enable = lib.mkEnableOption "SSL/TLS support" // {
default = true;
};
repoDir = lib.mkOption {
type = lib.types.nullOr lib.types.path;
default = null;
defaultText = lib.literalExpression ''"''${config.services.komodo-periphery.rootDirectory}/repos"'';
description = "Directory for Komodo Periphery to manage repos. If null, defaults to `\${rootDirectory}/repos`.";
};
keyFile = lib.mkOption {
type = lib.types.path;
default = "${cfg.rootDirectory}/ssl/key.pem";
defaultText = lib.literalExpression ''"''${config.services.komodo-periphery.rootDirectory}/ssl/key.pem"'';
description = "Path to SSL key file.";
};
stackDir = lib.mkOption {
type = lib.types.nullOr lib.types.path;
default = null;
defaultText = lib.literalExpression ''"''${config.services.komodo-periphery.rootDirectory}/stacks"'';
description = "Directory for Komodo Periphery to manage stacks. If null, defaults to `\${rootDirectory}/stacks`.";
};
certFile = lib.mkOption {
type = lib.types.path;
default = "${cfg.rootDirectory}/ssl/cert.pem";
defaultText = lib.literalExpression ''"''${config.services.komodo-periphery.rootDirectory}/ssl/cert.pem"'';
description = "Path to SSL certificate file.";
};
buildDir = lib.mkOption {
type = lib.types.nullOr lib.types.path;
default = null;
defaultText = lib.literalExpression ''"''${config.services.komodo-periphery.rootDirectory}/builds"'';
description = "Directory for Komodo Periphery to manage builds. If null, defaults to `\${rootDirectory}/builds`.";
};
logging = {
@@ -139,26 +226,41 @@ in
description = "OpenTelemetry OTLP endpoint for traces.";
example = "http://localhost:4317";
};
opentelemetryServiceName = lib.mkOption {
type = lib.types.str;
default = "Periphery";
description = "(v2.0+) OpenTelemetry service name attached to telemetry.";
};
opentelemetryScopeName = lib.mkOption {
type = lib.types.str;
default = "Komodo";
description = "(v2.0+) OpenTelemetry scope name attached to telemetry.";
};
pretty = lib.mkOption {
type = lib.types.bool;
default = false;
description = "(v2.0+) Enable human-readable logging (multi-line).";
};
};
allowedIps = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
description = "IP addresses or subnets allowed to call the periphery API. Empty list allows all.";
example = [
"::ffff:12.34.56.78"
"10.0.10.0/24"
];
prettyStartupConfig = lib.mkOption {
type = lib.types.bool;
default = false;
description = "(v2.0+) Enable human-readable startup config log (multi-line).";
};
passkeys = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
passkeyFiles = lib.mkOption {
type = lib.types.nullOr lib.types.path;
default = null;
description = ''
Passkeys required to access the periphery API.
WARNING: These will be stored in the Nix store in plain text!
Path to file containing passkeys (v1.X compatibility).
This will be passed via `PERIPHERY_PASSKEYS_FILE` environment variable.
Consider migrating to the new v2.0+ authentication mechanism.
'';
example = [ "your-secure-passkey" ];
example = "/run/secrets/komodo-passkey";
};
extraSettings = lib.mkOption {
@@ -170,16 +272,23 @@ in
};
};
defaultTerminalCommand = lib.mkOption {
type = lib.types.str;
default = "bash";
description = "(v2.0+) Default terminal command used to initialize the shell.";
example = "zsh";
};
disableTerminals = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Disable remote shell access through Periphery.";
};
disableContainerExec = lib.mkOption {
disableContainerTerminals = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Disable remote container shell access through Periphery.";
description = "(v2.0+) Disable remote container shell access through Periphery.";
};
statsPollingRate = lib.mkOption {
@@ -222,6 +331,147 @@ in
];
};
auth = {
privateKey = lib.mkOption {
type = lib.types.str;
default = "";
description = ''
(v2.0+) Private key used with the Noise handshake.
Use `file:/path/to/file` prefix to load from a file. If the file doesn't exist,
Periphery will generate and write a new key to the path.
If empty, defaults to `file:''${rootDirectory}/keys/periphery.key`.
'';
example = lib.literalExpression ''
# Reference a secret file
"file:''${config.age.secrets.komodo-private-key.path}"
# Or direct path
"file:/run/secrets/komodo-private-key"
'';
};
corePublicKeys = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
description = ''
(v2.0+) Accepted public keys to allow Core(s) to connect.
Accepts Spki base64 DER directly or can reference files using `file:/path/to/core.pub` prefix.
You can mix direct keys and file references.
For better security, use the `file:` prefix to reference secret files.
'';
example = lib.literalExpression ''
[
# Direct key value
"MCowBQYDK2VuAyEATZgrjGHeF0KJUe0+n77+qAWOg3YzEzXOmQWaRgO3OGQ="
# Reference secret files
"file:''${config.age.secrets.komodo-core1-pub.path}"
"file:''${config.age.secrets.komodo-core2-pub.path}"
]
'';
};
};
inbound = {
serverEnabled = lib.mkOption {
type = lib.types.nullOr lib.types.bool;
default = null;
description = ''
Enable the inbound connection server for Core -> Periphery connections.
If null, defaults to false when `outbound.coreAddress` is defined, otherwise true.
'';
};
port = lib.mkOption {
type = lib.types.port;
default = 8120;
description = "Port for the inbound Periphery server to listen on.";
};
bindIp = lib.mkOption {
type = lib.types.str;
default = "[::]";
description = ''
IP address the periphery server will bind to.
The default allows external IPv4 and IPv6 connections.
'';
};
allowedIps = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
description = ''
Limit the IP addresses which can connect to Periphery.
Supports IPv4/IPv6 addresses and subnets.
Empty list allows all connections.
'';
example = [
"::ffff:12.34.56.78"
"10.0.10.0/24"
];
};
ssl = {
enable = lib.mkEnableOption "(v2.0+) SSL/TLS support for inbound connections" // {
default = true;
};
keyFile = lib.mkOption {
type = lib.types.path;
default = "${cfg.rootDirectory}/ssl/key.pem";
defaultText = lib.literalExpression ''"''${config.services.komodo-periphery.rootDirectory}/ssl/key.pem"'';
description = ''
Path to SSL key file.
If the file doesn't exist and SSL is enabled, self-signed keys will be generated using openssl.
'';
};
certFile = lib.mkOption {
type = lib.types.path;
default = "${cfg.rootDirectory}/ssl/cert.pem";
defaultText = lib.literalExpression ''"''${config.services.komodo-periphery.rootDirectory}/ssl/cert.pem"'';
description = ''
Path to SSL certificate file.
If the file doesn't exist and SSL is enabled, self-signed certificate will be generated using openssl.
'';
};
};
};
outbound = {
coreAddress = lib.mkOption {
type = lib.types.str;
default = "";
description = ''
(v2.0+) The address of Komodo Core. Must be reachable from this host.
If provided, Periphery will operate in outbound mode.
'';
example = "demo.komo.do";
};
connectAs = lib.mkOption {
type = lib.types.str;
default = "";
description = ''
(v2.0+) The Server this Periphery agent should connect as.
Must match an existing Server name or id.
'';
example = "server-name";
};
onboardingKeyFile = lib.mkOption {
type = lib.types.nullOr lib.types.path;
default = null;
description = ''
(v2.0+) Path to file containing the onboarding key.
This will be passed via `PERIPHERY_ONBOARDING_KEY_FILE` environment variable.
'';
example = lib.literalExpression ''"''${config.age.secrets.komodo-onboarding.path}"'';
};
};
user = lib.mkOption {
type = lib.types.str;
default = "komodo-periphery";
@@ -253,14 +503,14 @@ in
};
config = lib.mkIf cfg.enable {
virtualisation.docker.enable = true;
virtualisation.docker.enable = lib.mkDefault (cfg.dockerHost == null);
users.users.${cfg.user} = lib.mkIf (cfg.user == "komodo-periphery") {
isSystemUser = true;
group = cfg.group;
description = "Komodo Periphery service user";
home = cfg.rootDirectory;
extraGroups = [ "docker" ];
extraGroups = lib.optional (cfg.dockerHost == null) "docker";
};
users.groups.${cfg.group} = lib.mkIf (cfg.group == "komodo-periphery") { };
@@ -271,16 +521,26 @@ in
user = cfg.user;
group = cfg.group;
};
"${cfg.rootDirectory}/repos".d = {
"${actualRepoDir}".d = {
mode = "0755";
user = cfg.user;
group = cfg.group;
};
"${cfg.rootDirectory}/stacks".d = {
"${actualStackDir}".d = {
mode = "0755";
user = cfg.user;
group = cfg.group;
};
"${actualBuildDir}".d = {
mode = "0755";
user = cfg.user;
group = cfg.group;
};
"${cfg.rootDirectory}/keys".d = {
mode = "0700";
user = cfg.user;
group = cfg.group;
};
"${cfg.rootDirectory}/ssl".d = {
mode = "0700";
user = cfg.user;
@@ -292,35 +552,63 @@ in
description = "Komodo Periphery - Multi-server Docker and Git deployment agent";
after = [
"network-online.target"
"docker.service"
];
]
++ lib.optional (cfg.dockerHost == null) "docker.service";
wants = [
"network-online.target"
"docker.service"
];
]
++ lib.optional (cfg.dockerHost == null) "docker.service";
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "simple";
User = cfg.user;
Group = cfg.group;
SupplementaryGroups = [ "docker" ];
SupplementaryGroups = lib.mkIf (cfg.dockerHost == null) [ "docker" ];
Restart = "on-failure";
RestartSec = "10s";
WorkingDirectory = cfg.rootDirectory;
ExecStart = lib.escapeShellArgs [
"${lib.getExe' cfg.package "periphery"}"
(lib.getExe' cfg.package "periphery")
"--config-path"
(if cfg.configFile != null then cfg.configFile else configFile)
configFile
];
Environment = lib.mapAttrsToList (name: value: "${name}=${value}") (
cfg.environment
// lib.optionalAttrs (!cfg.disableTerminals) {
PATH = "/run/current-system/sw/bin:/run/wrappers/bin";
lib.optionalAttrs (cfg.configFile == null) {
PERIPHERY_ROOT_DIRECTORY = cfg.rootDirectory;
PERIPHERY_REPO_DIR = actualRepoDir;
PERIPHERY_STACK_DIR = actualStackDir;
PERIPHERY_BUILD_DIR = actualBuildDir;
}
// lib.optionalAttrs (cfg.configFile == null && cfg.inbound.ssl.enable) {
PERIPHERY_SSL_KEY_FILE = cfg.inbound.ssl.keyFile;
PERIPHERY_SSL_CERT_FILE = cfg.inbound.ssl.certFile;
}
// lib.optionalAttrs (cfg.dockerHost != null) {
DOCKER_HOST = cfg.dockerHost;
}
// lib.optionalAttrs (cfg.passkeyFiles != null) {
PERIPHERY_PASSKEYS_FILE = cfg.passkeyFiles;
}
// lib.optionalAttrs (cfg.auth.privateKey != "") {
PERIPHERY_PRIVATE_KEY = cfg.auth.privateKey;
}
// lib.optionalAttrs (cfg.auth.corePublicKeys != [ ]) {
PERIPHERY_CORE_PUBLIC_KEYS = lib.concatStringsSep "," cfg.auth.corePublicKeys;
}
// lib.optionalAttrs (cfg.outbound.onboardingKeyFile != null) {
PERIPHERY_ONBOARDING_KEY_FILE = cfg.outbound.onboardingKeyFile;
}
// cfg.environment
);
ExecSearchPath = lib.mkIf (!cfg.disableTerminals) [
"/run/current-system/sw/bin"
"/run/wrappers/bin"
];
EnvironmentFile = lib.mkIf (cfg.environmentFile != null) cfg.environmentFile;
StateDirectory = "komodo-periphery";
@@ -329,7 +617,7 @@ in
NoNewPrivileges = true;
PrivateTmp = true;
ProtectSystem = "full";
ProtectHome = true;
ProtectHome = "read-only";
};
};
};

View File

@@ -5,22 +5,63 @@
maintainers = with lib.maintainers; [ channinghe ];
};
nodes.machine =
{ config, pkgs, ... }:
{
virtualisation.docker.enable = true;
services.komodo-periphery = {
enable = true;
bindIp = "127.0.0.1";
port = 8120;
ssl.enable = false;
passkeys = [ "test-passkey" ];
nodes = {
periphery =
{ ... }:
{
virtualisation.docker.enable = true;
services.komodo-periphery = {
enable = true;
inbound.bindIp = "127.0.0.1";
inbound.port = 8120;
inbound.ssl.enable = false;
inbound.serverEnabled = true;
disableTerminals = true;
disableContainerTerminals = true;
statsPollingRate = "10-sec";
containerStatsPollingRate = "1-min";
logging.level = "debug";
extraSettings = {
secrets.TEST_SECRET = "test-value";
};
auth.privateKey = "file:/var/lib/komodo-periphery/keys/test.key";
auth.corePublicKeys = [ "MCowBQYDK2VuAyEATZgrjGHeF0KJUe0+n77+qAWOg3YzEzXOmQWaRgO3OGQ=" ];
};
};
};
peripheryOutbound =
{ ... }:
{
virtualisation.docker.enable = true;
services.komodo-periphery = {
enable = true;
inbound.ssl.enable = false;
logging.level = "debug";
outbound.coreAddress = "core.invalid";
outbound.connectAs = "test-server";
};
};
};
testScript = ''
machine.wait_for_unit("komodo-periphery.service")
machine.wait_for_open_port(8120)
machine.succeed("systemctl status komodo-periphery.service")
start_all()
with subtest("Inbound periphery starts and serves /version"):
periphery.wait_for_unit("komodo-periphery.service")
periphery.wait_for_open_port(8120)
periphery.succeed("curl -fsS --max-time 10 http://127.0.0.1:8120/version")
with subtest("Periphery creates managed directories"):
periphery.succeed("test -d /var/lib/komodo-periphery")
periphery.succeed("test -d /var/lib/komodo-periphery/repos")
periphery.succeed("test -d /var/lib/komodo-periphery/stacks")
periphery.succeed("test -d /var/lib/komodo-periphery/builds")
periphery.succeed("test -d /var/lib/komodo-periphery/keys")
periphery.succeed("test -d /var/lib/komodo-periphery/ssl")
with subtest("Outbound periphery stays active despite unreachable core"):
peripheryOutbound.wait_for_unit("komodo-periphery.service")
peripheryOutbound.sleep(15)
peripheryOutbound.succeed("systemctl is-active komodo-periphery")
'';
}

View File

@@ -2359,6 +2359,8 @@ let
};
};
inferrinizzard.prettier-sql-vscode = callPackage ./inferrinizzard.prettier-sql-vscode { };
intellsmi.comment-translate = buildVscodeMarketplaceExtension {
mktplcRef = {
publisher = "intellsmi";
@@ -2451,6 +2453,8 @@ let
jackmacwindows.craftos-pc = callPackage ./jackmacwindows.craftos-pc { };
jacobdufault.fuzzy-search = callPackage ./jacobdufault.fuzzy-search { };
jakestanger.corn = callPackage ./jakestanger.corn { };
james-yu.latex-workshop = callPackage ./james-yu.latex-workshop { };
@@ -3728,6 +3732,8 @@ let
oxc.oxc-vscode = callPackage ./oxc.oxc-vscode { };
pflannery.vscode-versionlens = callPackage ./pflannery.vscode-versionlens { };
ph-hawkins.arc-plus = callPackage ./ph-hawkins.arc-plus { };
phind.phind = buildVscodeMarketplaceExtension {
@@ -3867,6 +3873,8 @@ let
};
};
rangav.vscode-thunder-client = callPackage ./rangav.vscode-thunder-client { };
rebornix.ruby = buildVscodeMarketplaceExtension {
mktplcRef = {
name = "ruby";

View File

@@ -0,0 +1,21 @@
{
lib,
vscode-utils,
}:
vscode-utils.buildVscodeMarketplaceExtension {
mktplcRef = {
name = "prettier-sql-vscode";
publisher = "inferrinizzard";
version = "1.6.0";
hash = "sha256-l6pf/+uv8Bn4uDMX0CbzSjydTStr73uRY550Ad9wm7Q=";
};
meta = {
description = "VSCode Extension to format SQL files";
downloadPage = "https://marketplace.visualstudio.com/items?itemName=inferrinizzard.prettier-sql-vscode";
homepage = "https://github.com/sql-formatter-org/sql-formatter";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ AlexAntonik ];
};
}

View File

@@ -0,0 +1,21 @@
{
lib,
vscode-utils,
}:
vscode-utils.buildVscodeMarketplaceExtension {
mktplcRef = {
name = "fuzzy-search";
publisher = "jacobdufault";
version = "0.0.3";
hash = "sha256-oN1SzXypjpKOTUzPbLCTC+H3I/40LMVdjbW3T5gib0M=";
};
meta = {
description = "Provides a fuzzy search using the quick pick window of the current text document.";
downloadPage = "https://marketplace.visualstudio.com/items?itemName=jacobdufault.fuzzy-search";
homepage = "https://github.com/jacobdufault/vscode-fuzzy-search";
license = lib.licenses.unfree;
maintainers = with lib.maintainers; [ AlexAntonik ];
};
}

View File

@@ -0,0 +1,21 @@
{
lib,
vscode-utils,
}:
vscode-utils.buildVscodeMarketplaceExtension {
mktplcRef = {
name = "vscode-versionlens";
publisher = "pflannery";
version = "1.28.0";
hash = "sha256-IZjTHE51hdrQpDndsz5bBCKre0zmWkCAJa/v8k4iLy0=";
};
meta = {
description = "Shows the latest version for each package using code lens";
downloadPage = "https://marketplace.visualstudio.com/items?itemName=pflannery.vscode-versionlens";
homepage = "https://gitlab.com/versionlens/vscode-versionlens";
license = lib.licenses.isc;
maintainers = with lib.maintainers; [ AlexAntonik ];
};
}

View File

@@ -0,0 +1,21 @@
{
lib,
vscode-utils,
}:
vscode-utils.buildVscodeMarketplaceExtension {
mktplcRef = {
name = "vscode-thunder-client";
publisher = "rangav";
version = "2.41.0";
hash = "sha256-c5oEaRMeTEWT0dtd6bzWMumhTEchOsLDXp+D76orL+k=";
};
meta = {
description = "Lightweight Rest API Client for VS Code";
downloadPage = "https://marketplace.visualstudio.com/items?itemName=rangav.vscode-thunder-client";
homepage = "https://github.com/thunderclient/thunder-client-support";
license = lib.licenses.unfree;
maintainers = with lib.maintainers; [ AlexAntonik ];
};
}

View File

@@ -1,5 +1,4 @@
{
stdenv,
lib,
callPackage,
fetchurl,
@@ -22,9 +21,6 @@ buildMozillaMach rec {
homepage = "http://www.mozilla.com/en-US/firefox/";
maintainers = with lib.maintainers; [ hexa ];
platforms = lib.platforms.unix;
broken = stdenv.buildPlatform.is32bit;
# since Firefox 60, build on 32-bit platforms fails with "out of memory".
# not in `badPlatforms` because cross-compilation on 64-bit machine might work.
maxSilent = 14400; # 4h, double the default of 7200s (c.f. #129212, #129115)
license = lib.licenses.mpl20;
mainProgram = "firefox";

View File

@@ -2,7 +2,6 @@
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
obs-studio,
ffmpeg,
libjpeg,
@@ -13,24 +12,15 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "droidcam-obs";
version = "2.4.1";
version = "2.5.0";
src = fetchFromGitHub {
owner = "dev47apps";
repo = "droidcam-obs-plugin";
tag = finalAttrs.version;
sha256 = "sha256-hxG/v15Q4D+6LU4BNV6ErSa1WvPk4kMPl07pIqiMcc4=";
hash = "sha256-JPAQoGZFzTIdBQ7GpCPaYUVPkkcBdCRFkVPU+nyRa7Q=";
};
patches = [
# Fix build with ffmpeg 8 / libavcodec 62
# TODO: Drop this once v2.4.3+ is released
(fetchpatch {
url = "https://github.com/dev47apps/droidcam-obs-plugin/commit/73ec2a01e234e6b2287866c25b4242dca6d9d2f6.patch";
hash = "sha256-AI2Z9i3+KfvmpyVX9WwX3jcA1hyUZiFO7kWRsb+8/10=";
})
];
preBuild = ''
mkdir ./build
'';

View File

@@ -145,7 +145,13 @@ in
),
overrideCC,
buildPackages,
pgoSupport ? (stdenv.hostPlatform.isLinux && stdenv.hostPlatform == stdenv.buildPlatform),
# PGO merges profile data with a 32-bit llvm-profdata, which runs out of
# address space on the huge libxul profile, so disable it on 32-bit.
pgoSupport ? (
stdenv.hostPlatform.isLinux
&& stdenv.hostPlatform == stdenv.buildPlatform
&& stdenv.hostPlatform.is64bit
),
xvfb-run,
elfhackSupport ?
isElfhackPlatform stdenv && !(stdenv.hostPlatform.isMusl && stdenv.hostPlatform.isAarch64),

View File

@@ -0,0 +1,48 @@
{
lib,
fetchFromGitHub,
python3Packages,
nix-update-script,
}:
python3Packages.buildPythonApplication (finalAttrs: {
pname = "doc2dash";
version = "3.1.0";
pyproject = true;
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "hynek";
repo = "doc2dash";
tag = finalAttrs.version;
hash = "sha256-u6K+BDc9tUxq4kCekTaqQLtNN/OLVc3rh14sVSfPtoQ=";
};
build-system = with python3Packages; [
hatchling
hatch-vcs
hatch-fancy-pypi-readme
];
dependencies = with python3Packages; [
attrs
beautifulsoup4
click
rich
];
nativeCheckInputs = with python3Packages; [
pytestCheckHook
pytest-cov-stub
];
passthru.updateScript = nix-update-script { };
meta = {
changelog = "https://github.com/hynek/doc2dash/releases/tag/${finalAttrs.src.tag}";
description = "Create docsets for Dash.app-compatible API browsers";
homepage = "https://doc2dash.hynek.me";
license = with lib.licenses; [ mit ];
maintainers = [ lib.maintainers.pyrox0 ];
mainProgram = "doc2dash";
};
})

View File

@@ -5,17 +5,18 @@
pkg-config,
autoreconfHook,
file,
util-linux,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "exfatprogs";
version = "1.3.2";
version = "1.4.2";
src = fetchFromGitHub {
owner = "exfatprogs";
repo = "exfatprogs";
rev = finalAttrs.version;
sha256 = "sha256-eXJg4mMYydOpYVgOup7WJze0qx6RVkia0xSZOlG+IOQ=";
tag = finalAttrs.version;
hash = "sha256-c1tdSX/xpZw56B7LPWwvKI7U6xk55lDc7D0k5FI7zwQ";
};
nativeBuildInputs = [
@@ -24,6 +25,10 @@ stdenv.mkDerivation (finalAttrs: {
file
];
buildInputs = [
util-linux
];
outputs = [
"out"
"man"

View File

@@ -2,24 +2,28 @@
lib,
buildGoModule,
fetchFromGitHub,
versionCheckHook,
}:
buildGoModule (finalAttrs: {
pname = "olm";
version = "1.6.1";
version = "1.7.0";
src = fetchFromGitHub {
owner = "fosrl";
repo = "olm";
tag = finalAttrs.version;
hash = "sha256-4Kg/9X1TVhOZ/ogjiPV9BBr1Nls25ZJNf5HNVSSZEwg=";
hash = "sha256-kPxFjGpwFjz5BZfgtbo5o/NveFLjAGjOh4o1h2RtGWI=";
};
vendorHash = "sha256-EJtcAmioC5EltsBeBa9aNDwKLR8rMQbQ2oHz+OVuZj0=";
vendorHash = "sha256-OSW7WRIIHg0xXp7Zanxy9PJEthMSsHYWn8WdPjzt0fc=";
nativeInstallCheckInputs = [ versionCheckHook ];
ldflags = [
"-s"
"-w"
"-X=main.olmVersion=${finalAttrs.version}"
];
doInstallCheck = true;

View File

@@ -41,11 +41,15 @@ rustPlatform.buildRustPackage {
# nixpkgs-update: no auto update
inherit (gpauth)
cargoHash
meta
src
version
;
meta = gpauth.meta // {
# Re-anchor meta.position here so nixpkgs-update sees the opt-out above.
inherit (gpauth.meta) description;
};
buildAndTestSubdir = "apps/gpclient";
nativeBuildInputs = [

View File

@@ -13,30 +13,21 @@
libice,
libsm,
openssl,
unzip,
xdg-utils,
makeWrapper,
}:
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "muse-sounds-manager";
version = "2.2.1.953";
# Use web.archive.org since upstream does not provide a stable (versioned) URL.
# To see if there are new versions on the Web Archive, visit
# http://web.archive.org/cdx/search/cdx?url=https://muse-cdn.com/Muse_Sounds_Manager_x64.tar.gz
# then replace the date in the URL below with date when the SHA1
# changes (currently CQDUS5RIVPTNZF65NNOVKDG2BCVCXH6H) and replace
# the version above with the version in the .deb metadata (or in the
# settings of muse-sounds-manager).
# Permalink from https://support.musehub.com/en/articles/15070607-changelog
src = fetchurl {
url = "https://web.archive.org/web/20260710024139if_/https://muse-cdn.com/Muse_Sounds_Manager_x64.tar.gz";
url = "https://muse-cdn.com/muse-sounds-manager/Muse_Sounds_Manager_x64_${finalAttrs.version}.tar.gz";
hash = "sha256-y7fKHh2pG8uT4p0vq20rsW8bSAp1mepkd2sW/06N3EI=";
};
nativeBuildInputs = [
autoPatchelfHook
makeWrapper
];
buildInputs = [
@@ -44,7 +35,7 @@ stdenv.mkDerivation rec {
stdenv.cc.cc
zlib
]
++ runtimeDependencies;
++ finalAttrs.runtimeDependencies;
runtimeDependencies = map lib.getLib [
icu
@@ -70,8 +61,6 @@ stdenv.mkDerivation rec {
postInstall = ''
ln -s ${xdg-utils}/bin/xdg-open $out/bin/open
wrapProgram $out/bin/muse-sounds-manager \
--prefix PATH : ${lib.makeBinPath [ unzip ]}
'';
dontStrip = true;
@@ -87,4 +76,4 @@ stdenv.mkDerivation rec {
platforms = [ "x86_64-linux" ];
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
};
}
})

View File

@@ -4,18 +4,18 @@
fetchFromGitHub,
}:
buildGoModule rec {
buildGoModule (finalAttrs: {
pname = "ping-exporter";
version = "1.1.4";
version = "1.2.1";
src = fetchFromGitHub {
owner = "czerwonk";
repo = "ping_exporter";
rev = version;
hash = "sha256-H+HcwDMnRgvEnbaI/tcS457Ir2Xtq30g44EYo4UPCE0=";
tag = "v${finalAttrs.version}";
hash = "sha256-YbdODBKXvBNtIt+Hqu/xA52p5TZGhcVbqZfTcmyyV+Y=";
};
vendorHash = "sha256-bEJstamu0+EfHL2cduWb/iDeYCp8tzGCS2Lvc7Onp48=";
vendorHash = "sha256-mZ29jH1572VDLOJb/x3FCI2Q6xVjJ3Ghy/ay343kA3Y=";
meta = {
description = "Prometheus exporter for ICMP echo requests";
@@ -24,4 +24,4 @@ buildGoModule rec {
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ nudelsalat ];
};
}
})

View File

@@ -10,13 +10,13 @@
}:
buildGoModule (finalAttrs: {
pname = "seanime";
version = "3.9.1";
version = "3.10.1";
src = fetchFromGitHub {
owner = "5rahim";
repo = "seanime";
tag = "v${finalAttrs.version}";
hash = "sha256-T4TLQ3wMvUFURu5rDfUDWfnhSsmYWq4GGQBZvAd2ivs=";
hash = "sha256-4BXb+9eTzH23pNyatFyhbfmt2tCqEF8K+iLlwXCxAeQ=";
};
nativeBuildInputs = [
@@ -28,7 +28,7 @@ buildGoModule (finalAttrs: {
npmRoot = "seanime-web";
npmDeps = fetchNpmDeps {
src = "${finalAttrs.src}/seanime-web";
hash = "sha256-mODqMuU1AtlNjLr9+OpORyXIyt7yMhIBJZTLDSj4fLQ=";
hash = "sha256-4w4SYBt8bkFtRKnoxOWEFAcNT+Aa8/ALKgGza9LBZ5Q=";
};
};

View File

@@ -13,14 +13,14 @@
}:
let
version = "1.0.1450";
version = "1.0.1466";
src = fetchFromGitHub {
owner = "lollipopkit";
repo = "flutter_server_box";
tag = "v${version}";
fetchSubmodules = true;
hash = "sha256-jgbuEgUxsN1ijH++NjXr3eZeTPUQbB/9axCMM/FWp54=";
hash = "sha256-Q4iKj+q9MOqIAmWuUXu6897caMg1CBOXz8LpvoGfSF4=";
};
in
flutter344.buildFlutterApplication {

View File

@@ -194,11 +194,11 @@
"dependency": "transitive",
"description": {
"name": "camera_web",
"sha256": "57f49a635c8bf249d07fb95eb693d7e4dda6796dedb3777f9127fb54847beba7",
"sha256": "1245a480a113437f8d46d19c0fb90cea9db921436d9cf2ba5fb11854a1312693",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "0.3.5+3"
"version": "0.3.5+4"
},
"characters": {
"dependency": "transitive",
@@ -324,11 +324,11 @@
"dependency": "transitive",
"description": {
"name": "coverage",
"sha256": "5da775aa218eaf2151c721b16c01c7676fbfdd99cebba2bf64e8b807a28ff94d",
"sha256": "956a3de0725ca232ad353565a8290d3357592bf4250f6f298a185e2d949c5d3d",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.15.0"
"version": "1.15.1"
},
"cross_file": {
"dependency": "transitive",
@@ -377,7 +377,7 @@
"relative": true
},
"source": "path",
"version": "2.17.1"
"version": "2.18.0"
},
"dbus": {
"dependency": "transitive",
@@ -393,21 +393,21 @@
"dependency": "direct main",
"description": {
"name": "dio",
"sha256": "aff32c08f92787a557dd5c0145ac91536481831a01b4648136373cddb0e64f8c",
"sha256": "ea2bad3c89a27635ce2d85cce4d6b199da49a5a48ec77b03e45b65a3b90922b0",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "5.9.2"
"version": "5.10.0"
},
"dio_web_adapter": {
"dependency": "transitive",
"description": {
"name": "dio_web_adapter",
"sha256": "2f9e64323a7c3c7ef69567d5c800424a11f8337b8b228bad02524c9fb3c1f340",
"sha256": "dd58dc3861eb36edb13b217efc006a1c21e5bbc341de8c229b85634fa5e362e4",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.1.2"
"version": "2.2.0"
},
"dynamic_color": {
"dependency": "direct main",
@@ -1286,11 +1286,11 @@
"dependency": "transitive",
"description": {
"name": "path_provider",
"sha256": "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd",
"sha256": "a7f4874f987173da295a61c181b8ee71dab59b332a486b391babf26a1b884825",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.1.5"
"version": "2.1.6"
},
"path_provider_android": {
"dependency": "transitive",
@@ -1316,21 +1316,21 @@
"dependency": "transitive",
"description": {
"name": "path_provider_linux",
"sha256": "f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279",
"sha256": "58c2005f147315b11e9b4a7bc889cd5203e250cba8e3f012dae259b4972b5c16",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.2.1"
"version": "2.2.2"
},
"path_provider_platform_interface": {
"dependency": "transitive",
"description": {
"name": "path_provider_platform_interface",
"sha256": "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334",
"sha256": "484838772624c3a4b94f1e44a3e19897fee738f2d5c4ce448443b0417f7c9dda",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.1.2"
"version": "2.1.3"
},
"path_provider_windows": {
"dependency": "transitive",
@@ -1586,51 +1586,51 @@
"dependency": "transitive",
"description": {
"name": "screen_retriever",
"sha256": "570dbc8e4f70bac451e0efc9c9bb19fa2d6799a11e6ef04f946d7886d2e23d0c",
"sha256": "42cc3b402a0f67d2455a0d067553d0f13453f6a008d98eababf8b63958d506bd",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "0.2.0"
"version": "0.2.1"
},
"screen_retriever_linux": {
"dependency": "transitive",
"description": {
"name": "screen_retriever_linux",
"sha256": "f7f8120c92ef0784e58491ab664d01efda79a922b025ff286e29aa123ea3dd18",
"sha256": "2a476f1a5538065bc5badf376cfdc83d6ecf07d77eb2391b9c2bff5a76970048",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "0.2.0"
"version": "0.2.1"
},
"screen_retriever_macos": {
"dependency": "transitive",
"description": {
"name": "screen_retriever_macos",
"sha256": "71f956e65c97315dd661d71f828708bd97b6d358e776f1a30d5aa7d22d78a149",
"sha256": "b5abb900fcb86614ff10b738b34e37b9e1d03b0447280668e2bc8a98bdc7bd59",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "0.2.0"
"version": "0.2.1"
},
"screen_retriever_platform_interface": {
"dependency": "transitive",
"description": {
"name": "screen_retriever_platform_interface",
"sha256": "ee197f4581ff0d5608587819af40490748e1e39e648d7680ecf95c05197240c0",
"sha256": "3af22d926bedf20c2caa308eea376776451a3af125919ce072e56525fded8901",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "0.2.0"
"version": "0.2.1"
},
"screen_retriever_windows": {
"dependency": "transitive",
"description": {
"name": "screen_retriever_windows",
"sha256": "449ee257f03ca98a57288ee526a301a430a344a161f9202b4fcc38576716fe13",
"sha256": "c44b38a4c4bab34af259180a70a4eee1e29384e7b82e627c9faa68afcdab2e73",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "0.2.0"
"version": "0.2.1"
},
"share_plus": {
"dependency": "transitive",
@@ -1666,11 +1666,11 @@
"dependency": "transitive",
"description": {
"name": "shared_preferences_android",
"sha256": "a2c49fc1fed7140cadd892d765bd47edbe4ac0b9c7e7e3c493dcb58126f99cf0",
"sha256": "93ae5884a9df5d3bb696825bceb3a17590754548b5d740eba51500afc8d088f5",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.4.25"
"version": "2.4.26"
},
"shared_preferences_foundation": {
"dependency": "transitive",
@@ -2052,11 +2052,11 @@
"dependency": "transitive",
"description": {
"name": "vector_graphics_compiler",
"sha256": "7ee12e6dffe0fc8e755179d6d91b3b34f5924223fc104d85572ef9180d73d172",
"sha256": "142a9146f447d15b10bdc00e21d5f4d83e5b32bb5f8f8f5a04c75311344923a3",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.2.5"
"version": "1.2.6"
},
"vector_math": {
"dependency": "transitive",

View File

@@ -3,7 +3,6 @@
buildDotnetModule,
fetchFromGitHub,
dotnetCorePackages,
nix-update-script,
}:
buildDotnetModule rec {
pname = "technitium-dns-server-library";
@@ -27,8 +26,6 @@ buildDotnetModule rec {
"TechnitiumLibrary.Security.OTP/TechnitiumLibrary.Security.OTP.csproj"
];
passthru.updateScript = nix-update-script { };
meta = {
changelog = "https://github.com/TechnitiumSoftware/DnsServer/blob/master/CHANGELOG.md";
description = "Library for Authorative and Recursive DNS server for Privacy and Security";

View File

@@ -6,7 +6,6 @@
technitium-dns-server-library,
libmsquic,
nixosTests,
nix-update-script,
}:
buildDotnetModule rec {
pname = "technitium-dns-server";
@@ -45,7 +44,7 @@ buildDotnetModule rec {
inherit (nixosTests) technitium-dns-server;
};
passthru.updateScript = nix-update-script { };
passthru.updateScript = ./update.sh;
meta = {
changelog = "https://github.com/TechnitiumSoftware/DnsServer/blob/master/CHANGELOG.md";

View File

@@ -0,0 +1,19 @@
#!/usr/bin/env nix-shell
#!nix-shell -I nixpkgs=./. -i bash -p curl jq common-updater-scripts gnused nix coreutils
set -euo pipefail
latestVersion="$(curl -s ${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} "https://api.github.com/repos/TechnitiumSoftware/DnsServer/releases?per_page=1" | jq -r ".[0].tag_name" | sed 's/^v//')"
currentVersion="${UPDATE_NIX_OLD_VERSION:-$(nix-instantiate --eval -E 'with import ./. {}; technitium-dns-server.version or (lib.getVersion technitium-dns-server)' | tr -d '"')}"
if [[ "$currentVersion" == "$latestVersion" ]]; then
echo "technitium-dns-server is up-to-date: $currentVersion"
exit 0
fi
update-source-version technitium-dns-server-library "$latestVersion"
update-source-version technitium-dns-server "$latestVersion"
# Regenerate nuget dependencies for both packages
$(nix-build . -A technitium-dns-server-library.fetch-deps --no-out-link)
$(nix-build . -A technitium-dns-server.fetch-deps --no-out-link)

View File

@@ -6,18 +6,22 @@
typing-extensions,
}:
buildPythonPackage rec {
buildPythonPackage (finalAttrs: {
pname = "simple-di";
version = "0.1.5";
format = "setuptools";
pyproject = true;
__structuredAttrs = true;
src = fetchPypi {
pname = "simple_di";
inherit version;
inherit (finalAttrs) version;
hash = "sha256-GSuZne5M1PsRpdhhFlyq0C2PBhfA+Ab8Wwn5BfGgPKA=";
};
propagatedBuildInputs = [
build-system = [ setuptools ];
dependencies = [
setuptools
typing-extensions
];
@@ -33,4 +37,4 @@ buildPythonPackage rec {
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ sauyon ];
};
}
})

View File

@@ -2,18 +2,24 @@
lib,
buildPythonPackage,
fetchPypi,
setuptools,
}:
buildPythonPackage rec {
buildPythonPackage (finalAttrs: {
pname = "types-freezegun";
version = "1.1.10";
format = "setuptools";
pyproject = true;
__structuredAttrs = true;
src = fetchPypi {
inherit pname version;
pname = "types-freezegun";
inherit (finalAttrs) version;
hash = "sha256-yzotLu6VDqy6rAZzq1BJmCM2XOuMZVursVRKQURkCew=";
};
build-system = [ setuptools ];
# Module doesn't have tests
doCheck = false;
@@ -25,4 +31,4 @@ buildPythonPackage rec {
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ jpetrucciani ];
};
}
})

View File

@@ -8680,7 +8680,6 @@ with pkgs;
import ../applications/networking/browsers/firefox/packages/firefox-esr-140.nix
{
inherit
stdenv
lib
callPackage
fetchurl