Merge staging-next into staging

This commit is contained in:
nixpkgs-ci[bot]
2026-04-13 00:31:18 +00:00
committed by GitHub
95 changed files with 1716 additions and 1101 deletions
+2
View File
@@ -249,6 +249,8 @@
- All Xfce packages have been moved to top level (e.g. if you previously added `pkgs.xfce.xfce4-whiskermenu-plugin` to `environment.systemPackages`, you will need to change it to `pkgs.xfce4-whiskermenu-plugin`). The `xfce` scope will be removed in NixOS 26.11.
- The Dovecot IMAP server has been updated to version 2.4, with the `dovecot` attribute now referring to this backwards-incompatible version. The attribute `dovecot_2_3` refers to the previous version. The Pigeonhole plugin has been similarly updated to 2.4, with the version compatible with Dovecot 2.3 being at `dovecot_pigeonhole_0_5`. See <https://doc.dovecot.org/latest/installation/upgrade/2.3-to-2.4.html> for more information on how to upgrade.
- `spacefm` was removed because it appeared to be unmaintained upstream.
- `vimPlugins.nvim-treesitter` has been updated to `main` branch, which is a full and incompatible rewrite. If you can't or don't want to update, you should use `vimPlugins.nvim-treesitter-legacy`.
+5 -6
View File
@@ -5692,6 +5692,11 @@
name = "Serg Nesterov";
keys = [ { fingerprint = "6E7D BA30 DB5D BA60 693C 3BE3 1512 F6EB 84AE CC8C"; } ];
};
cvengler = {
name = "Clara Engler";
github = "cvengler";
githubId = 12272949;
};
cwoac = {
email = "oliver@codersoffortune.net";
github = "cwoac";
@@ -10905,12 +10910,6 @@
githubId = 44043764;
name = "Liam Hupfer";
};
hqurve = {
email = "hqurve@outlook.com";
github = "hqurve";
githubId = 53281855;
name = "hqurve";
};
hraban = {
email = "hraban@0brg.net";
github = "hraban";
@@ -1,24 +1,14 @@
# Ad-Hoc Configuration {#ad-hoc-network-config}
You can use [](#opt-networking.localCommands) to specify shell commands to be
run after the network interfaces have been created, but not necessarily fully
configured.
This is useful for doing network configuration not covered by the existing
NixOS modules. For example, you can create a network namespace and a pair
of virtual ethernet devices like this:
You can use [](#opt-networking.localCommands) to
specify shell commands to be run at the end of `network-setup.service`. This
is useful for doing network configuration not covered by the existing NixOS
modules. For instance, to statically configure an IPv6 address:
```nix
{
networking.localCommands = ''
ip netns add mynet
ip link add name veth-in type veth peer name veth-out
ip link set dev veth-out netns mynet
ip -6 addr add 2001:610:685:1::1/64 dev eth0
'';
}
```
::: {.note}
The commands should ideally be idempotent, so it's recommended to perform
cleanups of the state you create (e.g. virtual interfaces), or at least make
sure possible failures are handled.
:::
@@ -26,16 +26,9 @@ servers:
```
::: {.note}
Addresses and routes for statically configured interfaces and the default
gateway are set up by systemd services named
`network-addresses-<interface>.service`. The name servers configuration,
instead, is performed by `network-local-commands.service` using resolvconf.
:::
::: {.note}
If needed, for example if addresses/routes were added/removed,
you can reset the network configuration by running
`systemctl restart networking-scripted.target`
Statically configured interfaces are set up by the systemd service
`interface-name-cfg.service`. The default gateway and name server
configuration is performed by `network-setup.service`.
:::
The host name is set using [](#opt-networking.hostName):
@@ -272,13 +272,6 @@ See <https://github.com/NixOS/nixpkgs/issues/481673>.
Note for NetworkManager users: before these changes NetworkManager used to spawn its own wpa_supplicant daemon, but now it relies on `networking.wireless`. So, if you had `networking.wireless.enable = false` in your configuration, you should remove that line.
- Some implementation details of the NixOS network-interfaces module have been changed:
- In the "scripted" backend, `network-setup.service` has been removed and the network configuration services are now part of `network.target`, which is now directly pulled into `multi-user.target`.
- Interface addresses, routes and default gateways are now configured asynchronously as soon as the underlying network devices become available (fixes issue [#154737](https://github.com/NixOS/nixpkgs/issues/154737)).
- In both "networkd" and "scripted" backends, the configuration of name servers is now part of `network-local-commands.service` (fixes issue [#445496](https://github.com/NixOS/nixpkgs/issues/445496)).
- The issue that resulted in a completely unconfigured network if both `resolvconf` was disabled and no default gateway configured, has also been fixed.
- `kratos` has been updated from 1.3.1 to [25.4.0](https://github.com/ory/kratos/releases/tag/v25.4.0). Upstream switched to a new versioning scheme (year.major.minor). Notable breaking changes:
- The `migrate sql` CLI command is now `migrate sql up`
@@ -336,6 +329,10 @@ See <https://github.com/NixOS/nixpkgs/issues/481673>.
- For shortlived certificates with a total validty below 10 days renewal
will happen after half of the total lifetime has passed
- The module for the Dovecot IMAP server, *services.dovecot*, now uses RFC-42-style settings, exposing a structured interface to write the configuration file.
Also see the list of available settings for [Dovecot 2.3](https://doc.dovecot.org/2.3/settings/core/) or [2.4](https://doc.dovecot.org/2.4.2/core/summaries/settings.html).
- Cinnamon has been updated to 6.6, please check the [upstream announcement](https://www.linuxmint.com/rel_zena_whatsnew.php) for more details.
- Budgie has been updated to 10.10, please check the [upstream announcement](https://buddiesofbudgie.org/blog/budgie-10-10-released) for more details.
+2 -2
View File
@@ -32,7 +32,7 @@ in
description = ''
Whether to enable U2F support in the i3lock program.
U2F enables authentication using a hardware device, such as a security key.
When U2F support is enabled, the i3lock program will set the setuid bit on the i3lock binary and enable the pam u2fAuth service,
When U2F support is enabled, the i3lock program will set the setuid bit on the i3lock binary and enable the pam u2f service,
'';
};
};
@@ -51,7 +51,7 @@ in
source = "${cfg.package.out}/bin/i3lock";
};
security.pam.services.i3lock.u2fAuth = cfg.u2fSupport;
security.pam.services.i3lock.u2f.enable = cfg.u2fSupport;
};
+36 -13
View File
@@ -135,6 +135,7 @@ let
imports = [
(lib.mkRenamedOptionModule [ "enableKwallet" ] [ "kwallet" "enable" ])
(lib.mkRenamedOptionModule [ "u2fAuth" ] [ "u2f" "enable" ])
];
options = {
@@ -202,17 +203,39 @@ let
'';
};
u2fAuth = lib.mkOption {
default = config.security.pam.u2f.enable;
defaultText = lib.literalExpression "config.security.pam.u2f.enable";
type = lib.types.bool;
description = ''
If set, users listed in
{file}`$XDG_CONFIG_HOME/Yubico/u2f_keys` (or
{file}`$HOME/.config/Yubico/u2f_keys` if XDG variable is
not set) are able to log in with the associated U2F key. Path can be
changed using {option}`security.pam.u2f.authFile` option.
'';
u2f = {
enable = lib.mkOption {
default = config.security.pam.u2f.enable;
defaultText = lib.literalExpression "config.security.pam.u2f.enable";
type = lib.types.bool;
description = ''
If set, users listed in
{file}`$XDG_CONFIG_HOME/Yubico/u2f_keys` (or
{file}`$HOME/.config/Yubico/u2f_keys` if XDG variable is
not set) are able to log in with the associated U2F key. Path can be
changed using {option}`security.pam.u2f.authFile` option.
'';
};
control = lib.mkOption {
default = config.security.pam.u2f.control;
defaultText = lib.literalExpression "config.security.pam.u2f.control";
type = lib.types.enum [
"required"
"requisite"
"sufficient"
"optional"
];
description = ''
This option sets pam "control".
If you want to have multi factor authentication, use "required".
If you want to use U2F device instead of regular password, use "sufficient".
Read
{manpage}`pam.conf(5)`
for better understanding of this option.
'';
};
};
usshAuth = lib.mkOption {
@@ -1045,8 +1068,8 @@ let
in
{
name = "u2f";
enable = cfg.u2fAuth;
control = u2f.control;
enable = cfg.u2f.enable;
control = cfg.u2f.control;
modulePath = "${pkgs.pam_u2f}/lib/security/pam_u2f.so";
inherit (u2f) settings;
}
File diff suppressed because it is too large Load Diff
+90 -79
View File
@@ -297,94 +297,105 @@ in
###### implementation
config = lib.mkIf (cfg.enable && nixPackage.pname != "lix") {
environment.systemPackages = [
nixPackage
pkgs.nix-info
]
++ lib.optional (config.programs.bash.completion.enable) pkgs.nix-bash-completions;
systemd.packages = [ nixPackage ];
# The upstream Nix tmpfiles.d file assumes the daemon runs as root
systemd.tmpfiles.packages = lib.mkIf (cfg.daemonUser == "root") [ nixPackage ];
systemd.sockets.nix-daemon.wantedBy = [ "sockets.target" ];
systemd.services.nix-daemon = {
path = [
config = lib.mkMerge [
(lib.mkIf cfg.enable {
systemd.tmpfiles.rules = [
"d /nix/var 0755 root root - -"
"L+ /nix/var/nix/gcroots/booted-system 0755 root root - /run/booted-system"
# Boot-time cleanup
"R! /nix/var/nix/gcroots/tmp - - - - -"
"R! /nix/var/nix/temproots - - - - -"
];
})
(lib.mkIf (cfg.enable && nixPackage.pname != "lix") {
environment.systemPackages = [
nixPackage
config.programs.ssh.package
pkgs.nix-info
]
# For running "newuidmap"
++ lib.optional (cfg.daemonUser != "root") "/run/wrappers";
++ lib.optional (config.programs.bash.completion.enable) pkgs.nix-bash-completions;
environment =
cfg.envVars
// {
CURL_CA_BUNDLE = config.security.pki.caBundle;
}
// config.networking.proxy.envVars;
systemd.packages = [ nixPackage ];
# The upstream Nix tmpfiles.d file assumes the daemon runs as root
systemd.tmpfiles.packages = lib.mkIf (cfg.daemonUser == "root") [ nixPackage ];
systemd.sockets.nix-daemon.wantedBy = [ "sockets.target" ];
systemd.services.nix-daemon = {
path = [
nixPackage
config.programs.ssh.package
]
# For running "newuidmap"
++ lib.optional (cfg.daemonUser != "root") "/run/wrappers";
environment =
cfg.envVars
// {
CURL_CA_BUNDLE = config.security.pki.caBundle;
}
// config.networking.proxy.envVars;
serviceConfig = {
CPUSchedulingPolicy = cfg.daemonCPUSchedPolicy;
IOSchedulingClass = cfg.daemonIOSchedClass;
IOSchedulingPriority = cfg.daemonIOSchedPriority;
};
restartTriggers = [ config.environment.etc."nix/nix.conf".source ];
# `stopIfChanged = false` changes to switch behavior
# from stop -> update units -> start
# to update units -> restart
#
# The `stopIfChanged` setting therefore controls a trade-off between a
# more predictable lifecycle, which runs the correct "version" of
# the `ExecStop` line, and on the other hand the availability of
# sockets during the switch, as the effectiveness of the stop operation
# depends on the socket being stopped as well.
#
# As `nix-daemon.service` does not make use of `ExecStop`, we prefer
# to keep the socket up and available. This is important for machines
# that run Nix-based services, such as automated build, test, and deploy
# services, that expect the daemon socket to be available at all times.
#
# Notably, the Nix client does not retry on failure to connect to the
# daemon socket, and the in-process RemoteStore instance will disable
# itself. This makes retries infeasible even for services that are
# aware of the issue. Failure to connect can affect not only new client
# processes, but also new RemoteStore instances in existing processes,
# as well as existing RemoteStore instances that have not saturated
# their connection pool.
#
# Also note that `stopIfChanged = true` does not kill existing
# connection handling daemons, as one might wish to happen before a
# breaking Nix upgrade (which is rare). The daemon forks that handle
# the individual connections split off into their own sessions, causing
# them not to be stopped by systemd.
# If a Nix upgrade does require all existing daemon processes to stop,
# nix-daemon must do so on its own accord, and only when the new version
# starts and detects that Nix's persistent state needs an upgrade.
stopIfChanged = false;
serviceConfig = {
CPUSchedulingPolicy = cfg.daemonCPUSchedPolicy;
IOSchedulingClass = cfg.daemonIOSchedClass;
IOSchedulingPriority = cfg.daemonIOSchedPriority;
};
restartTriggers = [ config.environment.etc."nix/nix.conf".source ];
# Set up the environment variables for running Nix.
environment.sessionVariables = cfg.envVars;
# `stopIfChanged = false` changes to switch behavior
# from stop -> update units -> start
# to update units -> restart
#
# The `stopIfChanged` setting therefore controls a trade-off between a
# more predictable lifecycle, which runs the correct "version" of
# the `ExecStop` line, and on the other hand the availability of
# sockets during the switch, as the effectiveness of the stop operation
# depends on the socket being stopped as well.
#
# As `nix-daemon.service` does not make use of `ExecStop`, we prefer
# to keep the socket up and available. This is important for machines
# that run Nix-based services, such as automated build, test, and deploy
# services, that expect the daemon socket to be available at all times.
#
# Notably, the Nix client does not retry on failure to connect to the
# daemon socket, and the in-process RemoteStore instance will disable
# itself. This makes retries infeasible even for services that are
# aware of the issue. Failure to connect can affect not only new client
# processes, but also new RemoteStore instances in existing processes,
# as well as existing RemoteStore instances that have not saturated
# their connection pool.
#
# Also note that `stopIfChanged = true` does not kill existing
# connection handling daemons, as one might wish to happen before a
# breaking Nix upgrade (which is rare). The daemon forks that handle
# the individual connections split off into their own sessions, causing
# them not to be stopped by systemd.
# If a Nix upgrade does require all existing daemon processes to stop,
# nix-daemon must do so on its own accord, and only when the new version
# starts and detects that Nix's persistent state needs an upgrade.
stopIfChanged = false;
nix.nrBuildUsers = lib.mkDefault (
if cfg.settings.auto-allocate-uids or false then
0
else
lib.max 32 (if cfg.settings.max-jobs == "auto" then 0 else cfg.settings.max-jobs)
);
};
users.users = nixbldUsers;
# Set up the environment variables for running Nix.
environment.sessionVariables = cfg.envVars;
services.displayManager.hiddenUsers = lib.attrNames nixbldUsers;
nix.nrBuildUsers = lib.mkDefault (
if cfg.settings.auto-allocate-uids or false then
0
else
lib.max 32 (if cfg.settings.max-jobs == "auto" then 0 else cfg.settings.max-jobs)
);
users.users = nixbldUsers;
services.displayManager.hiddenUsers = lib.attrNames nixbldUsers;
# Legacy configuration conversion.
nix.settings.sandbox-fallback = false;
};
# Legacy configuration conversion.
nix.settings.sandbox-fallback = false;
})
];
}
+2 -2
View File
@@ -66,8 +66,8 @@ let
postInstall = ''
ln -s ${cfg.stateDir}/sites $out/share/php/${cfg.package.pname}${cfg.webRoot}
ln -s ${cfg.modulesDir} $out/share/php/${cfg.package.pname}/modules
ln -s ${cfg.themesDir} $out/share/php/${cfg.package.pname}/themes
ln -s ${cfg.modulesDir} $out/share/php/${cfg.package.pname}${cfg.webRoot}/modules/nixos-modules
ln -s ${cfg.themesDir} $out/share/php/${cfg.package.pname}${cfg.webRoot}/themes/nixos-themes
'';
});
+15
View File
@@ -880,6 +880,21 @@ in
serviceConfig.ExecSearchPath = "${config.services.openssh.package}/bin";
overrideStrategy = "asDropin";
};
# Fix paths in sshd-vsock.socket
# https://github.com/systemd/systemd/blob/v259.3/src/ssh-generator/ssh-generator.c#L239
# this socket is used, for example, when NixOS is started via systemd-vmspawn
systemd.sockets.sshd-vsock = mkIf config.services.openssh.enable {
overrideStrategy = "asDropin";
socketConfig.ExecStartPost = [
""
"${config.systemd.package}/lib/systemd/systemd-ssh-issue --make-vsock"
];
socketConfig.ExecStopPre = [
""
"${config.systemd.package}/lib/systemd/systemd-ssh-issue --rm-vsock"
];
};
};
# FIXME: Remove these eventually.
@@ -350,19 +350,11 @@ in
"d /var/db 0755 root root - -"
"L /var/lock - - - - ../run/lock"
]
++ lib.optionals config.nix.enable [
"d /nix/var 0755 root root - -"
"L+ /nix/var/nix/gcroots/booted-system 0755 root root - /run/booted-system"
]
# Boot-time cleanup
++ [
"R! /etc/group.lock - - - - -"
"R! /etc/passwd.lock - - - - -"
"R! /etc/shadow.lock - - - - -"
]
++ lib.optionals config.nix.enable [
"R! /nix/var/nix/gcroots/tmp - - - - -"
"R! /nix/var/nix/temproots - - - - -"
];
boot.initrd.systemd = {
@@ -51,71 +51,6 @@ let
(lib.concatStringsSep " ")
];
# Converts an IPv4 address literal to a list of bits
parseAddr.ipv4 =
addr:
let
pad = b: lib.replicate (8 - builtins.length b) 0 ++ b;
toBin = n: pad (lib.toBaseDigits 2 (lib.toInt n));
in
lib.concatMap toBin (builtins.splitVersion addr);
# Converts an IPv6 address literal to a list of bits
parseAddr.ipv6 =
addr:
let
pad = b: lib.replicate (16 - builtins.length b) 0 ++ b;
fromHex = n: (builtins.fromTOML "n = 0x${n}").n;
toBin = n: pad (lib.toBaseDigits 2 (fromHex n));
normal = (lib.network.ipv6.fromString addr).address;
in
lib.concatMap toBin (lib.splitString ":" normal);
# Checks if `addr` is part of the `net` subnet
inSubnet =
v: net: addr:
let
prefix = lib.take net.prefixLength (parseAddr.${v} net.address);
match = lib.zipListsWith (a: b: a == b) prefix (parseAddr.${v} addr);
in
lib.all lib.id match;
# Checks if the netmask of all addresses on interface `iface` includes
# the IP address of `gateway`
#
# Note: this is used to check whether networking.defaultGateway relies on
# the given interface, either explicitly, via the `interface` (optional),
# or explicitly, by using an address in a subnet of this interface.
#
# Configuration of the default gateway is then performed as part of that
# interface setup in `configureAddrs`, below.
isGateway =
v: gateway: iface:
lib.any lib.id (
[ (iface.name == gateway.interface) ]
++ map (net: inSubnet v net gateway.address) iface.${v}.addresses
);
# Checks if `gateway` uses an address from `iface` as default source
#
# Note: this is needed to delay the configuration of the gateway and default
# source until the right interfaces and address have been set up, otherwise
# the commands will fail.
hasSource =
v: gateway: iface:
builtins.elem gateway.source (map (i: i.address) iface.${v}.addresses);
# Interfaces corresponding to the default gateways
gateway4Iface = builtins.filter (isGateway "ipv4" cfg.defaultGateway) interfaces;
gateway6Iface = builtins.filter (isGateway "ipv6" cfg.defaultGateway6) interfaces;
# Interfaces corresponding to the default source addresses
#
# Note: the use of `head` here is safe because these expressions
# are evaluated only when `needsSourceIface`, see `configureAddrs` below.
source4Iface = builtins.head (builtins.filter (hasSource "ipv4" cfg.defaultGateway) interfaces);
source6Iface = builtins.head (builtins.filter (hasSource "ipv6" cfg.defaultGateway6) interfaces);
# warn that these attributes are deprecated (2017-2-2)
# Should be removed in the release after next
bondDeprecation = rec {
@@ -183,71 +118,121 @@ let
else
optional (!config.boot.isContainer) (subsystemDevice dev);
# For each interface <foo>, creates a network-addresses-<foo>.service
# job that performs static address configuration.
#
# It has a Wants dependency on <foo>-netdev.service, which creates
# create the interface, or on a device unit (for hardware interfaces).
# It also has a BindsTo dependency on the device unit: so, it only gets
# started after the interface has appeared and it's stopped when the
# interface disappears.
#
# Unless in a container, the job is not made part of network.target, so
# if an interface is not found (e.g. a USB interface not plugged in) it
# will not hang the boot sequence.
#
# If the interface is the default gateway, the job will also set the
# default gateway and delay network-online.target.
hasDefaultGatewaySet =
(cfg.defaultGateway != null && cfg.defaultGateway.address != "")
|| (cfg.enableIPv6 && cfg.defaultGateway6 != null && cfg.defaultGateway6.address != "");
needNetworkSetup =
cfg.resolvconf.enable || cfg.defaultGateway != null || cfg.defaultGateway6 != null;
networkLocalCommands = lib.mkIf needNetworkSetup {
after = [ "network-setup.service" ];
bindsTo = [ "network-setup.service" ];
};
networkSetup = lib.mkIf needNetworkSetup {
description = "Networking Setup";
after = [ "network-pre.target" ];
before = [
"network.target"
"shutdown.target"
];
wants = [ "network.target" ];
# exclude bridges from the partOf relationship to fix container networking bug #47210
partOf = map (i: "network-addresses-${i.name}.service") (
filter (i: !(hasAttr i.name cfg.bridges)) interfaces
);
conflicts = [ "shutdown.target" ];
wantedBy = [ "multi-user.target" ] ++ optional hasDefaultGatewaySet "network-online.target";
unitConfig.ConditionCapability = "CAP_NET_ADMIN";
path = [ pkgs.iproute2 ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
};
unitConfig.DefaultDependencies = false;
script = ''
${optionalString config.networking.resolvconf.enable ''
# Set the static DNS configuration, if given.
${pkgs.openresolv}/sbin/resolvconf -m 1 -a static <<EOF
${optionalString (cfg.nameservers != [ ] && cfg.domain != null) ''
domain ${cfg.domain}
''}
${optionalString (cfg.search != [ ]) ("search " + concatStringsSep " " cfg.search)}
${flip concatMapStrings cfg.nameservers (ns: ''
nameserver ${ns}
'')}
EOF
''}
# Set the default gateway
${flip concatMapStrings
[
{
version = "-4";
gateway = cfg.defaultGateway;
}
{
version = "-6";
gateway = cfg.defaultGateway6;
}
]
(
{ version, gateway }:
optionalString (gateway != null && gateway.address != "") ''
${optionalString (gateway.interface != null) ''
ip ${version} route replace ${gateway.address} proto static ${
formatIpArgs {
metric = gateway.metric;
dev = gateway.interface;
}
}
''}
ip ${version} route replace default proto static ${
formatIpArgs {
metric = gateway.metric;
via = gateway.address;
window = cfg.defaultGatewayWindowSize;
dev = gateway.interface;
src = gateway.source;
}
}
''
)
}
'';
};
# For each interface <foo>, create a job network-addresses-<foo>.service"
# that performs static address configuration. It has a "wants"
# dependency on <foo>.service, which is supposed to create
# the interface and need not exist (i.e. for hardware
# interfaces). It has a binds-to dependency on the actual
# network device, so it only gets started after the interface
# has appeared, and it's stopped when the interface
# disappears.
configureAddrs =
i:
let
ips = interfaceIps i;
isDefaultGateway4 = cfg.defaultGateway != null && builtins.elem i gateway4Iface;
isDefaultGateway6 = cfg.defaultGateway6 != null && builtins.elem i gateway6Iface;
needsSourceIface4 =
isDefaultGateway4 && cfg.defaultGateway.source != null && i.name != source4Iface.name;
needsSourceIface6 =
isDefaultGateway6 && cfg.defaultGateway6.source != null && i.name != source6Iface.name;
configureGateway =
version: gateway:
optionalString (gateway.address != "") ''
echo -n "setting ${i.name} as default IPv${version} gateway... "
${optionalString (gateway.interface != null) ''
ip -${version} route replace ${gateway.address} proto static ${
formatIpArgs {
metric = gateway.metric;
dev = gateway.interface;
}
}
''}
ip -${version} route replace default proto static ${
formatIpArgs {
metric = gateway.metric;
via = gateway.address;
window = cfg.defaultGatewayWindowSize;
dev = gateway.interface;
src = gateway.source;
}
}
echo "done"
'';
in
nameValuePair "network-addresses-${i.name}" {
description = "Address configuration of ${i.name}";
wantedBy =
deviceDependency i.name
++ optional config.boot.isContainer "network.target"
++ optional (isDefaultGateway4 || isDefaultGateway6) "network-online.target";
wantedBy = [
"network-setup.service"
"network.target"
];
# order before network-setup because the routes that are configured
# there may need ip addresses configured
before = [ "network-setup.service" ];
bindsTo = deviceDependency i.name;
partOf = [ "networking-scripted.target" ];
after = [
"network-pre.target"
]
++ optional needsSourceIface4 "network-addresses-${source4Iface.name}.service"
++ optional needsSourceIface6 "network-addresses-${source6Iface.name}.service"
++ deviceDependency i.name;
after = [ "network-pre.target" ] ++ (deviceDependency i.name);
serviceConfig.Type = "oneshot";
serviceConfig.RemainAfterExit = true;
# Restart rather than stop+start this unit to prevent the
@@ -299,10 +284,6 @@ let
fi
''
)}
# Set the default gateway
${optionalString isDefaultGateway4 (configureGateway "4" cfg.defaultGateway)}
${optionalString isDefaultGateway6 (configureGateway "6" cfg.defaultGateway6)}
'';
preStop = ''
state="/run/nixos/network/routes/${i.name}"
@@ -330,13 +311,13 @@ let
nameValuePair "${i.name}-netdev" {
description = "Virtual Network Interface ${i.name}";
bindsTo = optional (!config.boot.isContainer) "dev-net-tun.device";
partOf = [ "networking-scripted.target" ];
after = optional (!config.boot.isContainer) "dev-net-tun.device" ++ [ "network-pre.target" ];
wantedBy = [
"network.target"
"network-setup.service"
(subsystemDevice i.name)
];
before = [ "network.target" ];
before = [ "network-setup.service" ];
path = [ pkgs.iproute2 ];
serviceConfig = {
Type = "oneshot";
@@ -362,21 +343,18 @@ let
description = "Bridge Interface ${n}";
wantedBy = [
"network.target"
"network-setup.service"
(subsystemDevice n)
];
bindsTo = deps ++ optional v.rstp "mstpd.service";
partOf = [
"network.target"
"networking-scripted.target"
]
++ optional v.rstp "mstpd.service";
partOf = [ "network-setup.service" ] ++ optional v.rstp "mstpd.service";
after = [
"network-pre.target"
]
++ deps
++ optional v.rstp "mstpd.service"
++ map (i: "network-addresses-${i}.service") v.interfaces;
before = [ "network.target" ];
before = [ "network-setup.service" ];
serviceConfig.Type = "oneshot";
serviceConfig.RemainAfterExit = true;
path = [ pkgs.iproute2 ];
@@ -470,14 +448,15 @@ let
description = "Open vSwitch Interface ${n}";
wantedBy = [
"network.target"
"network-setup.service"
(subsystemDevice n)
]
++ internalConfigs;
before = [ "network.target" ] ++ internalConfigs;
partOf = [
"network.target"
"networking-scripted.target"
]; # shutdown the bridge when network is shutdown
# before = [ "network-setup.service" ];
# should work without internalConfigs dependencies because address/link configuration depends
# on the device, which is created by ovs-vswitchd with type=internal, but it does not...
before = [ "network-setup.service" ] ++ internalConfigs;
partOf = [ "network-setup.service" ]; # shutdown the bridge when network is shutdown
bindsTo = [ "ovs-vswitchd.service" ]; # requires ovs-vswitchd to be alive at all times
after = [
"network-pre.target"
@@ -542,12 +521,12 @@ let
description = "Bond Interface ${n}";
wantedBy = [
"network.target"
"network-setup.service"
(subsystemDevice n)
];
bindsTo = deps;
partOf = [ "networking-scripted.target" ];
after = [ "network-pre.target" ] ++ deps ++ map (i: "network-addresses-${i}.service") v.interfaces;
before = [ "network.target" ];
before = [ "network-setup.service" ];
serviceConfig.Type = "oneshot";
serviceConfig.RemainAfterExit = true;
path = [
@@ -591,12 +570,12 @@ let
description = "MACVLAN Interface ${n}";
wantedBy = [
"network.target"
"network-setup.service"
(subsystemDevice n)
];
bindsTo = deps;
partOf = [ "networking-scripted.target" ];
after = [ "network-pre.target" ] ++ deps;
before = [ "network.target" ];
before = [ "network-setup.service" ];
serviceConfig.Type = "oneshot";
serviceConfig.RemainAfterExit = true;
path = [ pkgs.iproute2 ];
@@ -623,12 +602,12 @@ let
description = "IPVLAN Interface ${n}";
wantedBy = [
"network.target"
"network-setup.service"
(subsystemDevice n)
];
bindsTo = deps;
partOf = [ "networking-scripted.target" ];
after = [ "network-pre.target" ] ++ deps;
before = [ "network.target" ];
before = [ "network-setup.service" ];
serviceConfig.Type = "oneshot";
serviceConfig.RemainAfterExit = true;
path = [ pkgs.iproute2 ];
@@ -668,12 +647,12 @@ let
description = "FOU endpoint ${n}";
wantedBy = [
"network.target"
"network-setup.service"
(subsystemDevice n)
];
bindsTo = deps;
partOf = [ "networking-scripted.target" ];
after = [ "network-pre.target" ] ++ deps;
before = [ "network.target" ];
before = [ "network-setup.service" ];
serviceConfig.Type = "oneshot";
serviceConfig.RemainAfterExit = true;
path = [ pkgs.iproute2 ];
@@ -698,11 +677,12 @@ let
description = "IPv6 in IPv4 Tunnel Interface ${n}";
wantedBy = [
"network.target"
"network-setup.service"
(subsystemDevice n)
];
bindsTo = deps;
after = [ "network-pre.target" ] ++ deps;
before = [ "network.target" ];
before = [ "network-setup.service" ];
serviceConfig.Type = "oneshot";
serviceConfig.RemainAfterExit = true;
path = [ pkgs.iproute2 ];
@@ -740,12 +720,12 @@ let
description = "IP in IP Tunnel Interface ${n}";
wantedBy = [
"network.target"
"network-setup.service"
(subsystemDevice n)
];
bindsTo = deps;
partOf = [ "networking-scripted.target" ];
after = [ "network-pre.target" ] ++ deps;
before = [ "network.target" ];
before = [ "network-setup.service" ];
serviceConfig.Type = "oneshot";
serviceConfig.RemainAfterExit = true;
path = [ pkgs.iproute2 ];
@@ -788,12 +768,12 @@ let
description = "GRE Tunnel Interface ${n}";
wantedBy = [
"network.target"
"network-setup.service"
(subsystemDevice n)
];
bindsTo = deps;
partOf = [ "networking-scripted.target" ];
after = [ "network-pre.target" ] ++ deps;
before = [ "network.target" ];
before = [ "network-setup.service" ];
serviceConfig.Type = "oneshot";
serviceConfig.RemainAfterExit = true;
path = [ pkgs.iproute2 ];
@@ -823,15 +803,13 @@ let
description = "VLAN Interface ${n}";
wantedBy = [
"network.target"
"network-setup.service"
(subsystemDevice n)
];
bindsTo = deps;
partOf = [
"network.target"
"networking-scripted.target"
];
partOf = [ "network-setup.service" ];
after = [ "network-pre.target" ] ++ deps;
before = [ "network.target" ];
before = [ "network-setup.service" ];
serviceConfig.Type = "oneshot";
serviceConfig.RemainAfterExit = true;
path = [ pkgs.iproute2 ];
@@ -867,27 +845,10 @@ let
// mapAttrs' createGreDevice cfg.greTunnels
// mapAttrs' createVlanDevice cfg.vlans
// {
network-local-commands = {
after = [ "network-pre.target" ];
wantedBy = [ "network.target" ];
};
network-setup = networkSetup;
network-local-commands = networkLocalCommands;
};
# Note: the scripted networking backend consistent of many
# independent services that are linked to the network.target.
# Since there is no daemon (e.g systemd-networkd) that is
# started as part of the system and pulls in network.target.
# Thus, to start these services we link network.target directly
# to multi-user.target, this has the same result.
systemd.targets.network.wantedBy = [ "multi-user.target" ];
# This target serves no purpose during the boot, but can be
# used to quickly reset the network configuration by running
# systemctl restart networking-scripted.target
systemd.targets.networking-scripted = {
description = "NixOS scripted networking setup";
};
services.udev.extraRules = ''
KERNEL=="tun", TAG+="systemd"
'';
+4 -17
View File
@@ -747,9 +747,10 @@ in
default = "";
example = "text=anything; echo You can put $text here.";
description = ''
Shell commands to be executed after all the network
interfaces have been created, but not necessarily
fully configured.
Shell commands to be executed at the end of the
`network-setup` systemd service. Note that if
you are using DHCP to obtain the network configuration,
interfaces may not be fully configured yet.
'';
};
@@ -1850,20 +1851,6 @@ in
'';
};
};
networking.localCommands = lib.mkIf config.networking.resolvconf.enable ''
# Set the static DNS configuration, if given.
${pkgs.openresolv}/sbin/resolvconf -m 1 -a static <<EOF
${optionalString (cfg.nameservers != [ ] && cfg.domain != null) ''
domain ${cfg.domain}
''}
${optionalString (cfg.search != [ ]) ("search " + concatStringsSep " " cfg.search)}
${flip concatMapStrings cfg.nameservers (ns: ''
nameserver ${ns}
'')}
EOF
'';
services.mstpd = mkIf needsMstpd { enable = true; };
virtualisation.vswitch = mkIf (cfg.vswitches != { }) { enable = true; };
+19 -9
View File
@@ -2,18 +2,28 @@
name = "dovecot";
nodes.machine =
{ pkgs, ... }:
{ config, pkgs, ... }:
let
dovecot = config.services.dovecot2.package;
in
{
imports = [ common/user-account.nix ];
services.postfix.enable = true;
services.dovecot2 = {
enable = true;
protocols = [
"imap"
"pop3"
];
mailUser = "vmail";
mailGroup = "vmail";
enablePAM = true;
settings = {
dovecot_config_version = dovecot.version;
dovecot_storage_version = dovecot.version;
mail_driver = "maildir";
mail_path = "${config.services.postfix.settings.main.mail_spool_directory}/%{user}";
protocols = [
"imap"
"pop3"
];
mail_uid = "vmail";
mail_gid = "vmail";
};
};
environment.systemPackages =
let
@@ -31,7 +41,7 @@
sendTestMailViaDeliveryAgent = pkgs.writeScriptBin "send-lda" ''
#!${pkgs.runtimeShell}
exec ${pkgs.dovecot}/libexec/dovecot/deliver -d bob <<MAIL
exec ${dovecot}/libexec/dovecot/deliver -d bob <<MAIL
From: root@localhost
To: bob@localhost
Subject: Something else...
@@ -74,7 +84,7 @@
in
[
pkgs.dovecot_pigeonhole
dovecot.passthru.dovecot_pigeonhole
sendTestMail
sendTestMailViaDeliveryAgent
testImap
@@ -44,13 +44,17 @@ let
defaultGateway6 = {
address = "fd00:1234:5678:1::1";
interface = "enp1s0";
source = "fd00:1234:5678:1::3"; # implicit dependency on enp2s0
source = "fd00:1234:5678:1::3";
};
interfaces.enp1s0.ipv6.addresses = [
{
address = "fd00:1234:5678:1::2";
prefixLength = 64;
}
{
address = "fd00:1234:5678:1::3";
prefixLength = 128;
}
];
interfaces.enp1s0.ipv4.addresses = [
{
@@ -72,12 +76,6 @@ let
prefixLength = 24;
}
];
interfaces.enp2s0.ipv6.addresses = [
{
address = "fd00:1234:5678:1::3";
prefixLength = 128;
}
];
};
};
testScript = ''
@@ -110,41 +108,6 @@ let
client.succeed("ip -6 route show default | grep -q 'src fd00:1234:5678:1::3'")
'';
};
dynamicInterface = {
name = "dynamicInterface";
nodes.machine = clientConfig {
networking.interfaces.usb0 = {
ipv6.addresses = lib.singleton {
address = "fd::1";
prefixLength = 127;
};
};
networking.defaultGateway6 = {
address = "fd::";
interface = "usb0";
source = "fd::1";
};
};
testScript = ''
with subtest("Network comes up without usb0"):
machine.wait_for_unit("network.target")
with subtest("multi-user.target does not hang"):
machine.require_unit_state("multi-user.target", "active")
with subtest("usb0 is configured when plugged in"):
machine.succeed("ip link add usb0 type sit local 1.2.3.4")
machine.wait_until_succeeds("ip addr show dev usb0 | grep -q fd::1")
with subtest("Network is now online"):
machine.systemctl("start network-online.target")
machine.require_unit_state("network-online.target", "active")
with subtest("Default gateway is now set"):
machine.succeed("ip -6 route show default | grep -q 'via fd::'")
machine.succeed("ip -6 route show default | grep -q 'src fd::1'")
'';
};
routeType = {
name = "RouteType";
nodes.client = clientConfig {
@@ -1,13 +1,12 @@
(require 'package)
(package-initialize)
;; TODO remove this patch when Emacs bug#77143 is fixed
;; see that bug for more info
;; TODO remove this patch when Emacs bug#77143 and bug#80744 are fixed
(defun package--description-file (dir)
"Return package description file name for package DIR."
(concat (let ((subdir (file-name-nondirectory
(directory-file-name dir))))
(if (string-match "\\([^.].*?\\)-\\([0-9]+\\(?:[.][0-9]+\\|\\(?:pre\\|beta\\|alpha\\|snapshot\\)[0-9]+\\)*\\)\\'" subdir)
(if (string-match "\\([^.].*?\\)-\\([0-9]+\\(?:[.][0-9]+\\|\\(?:pre\\|beta\\|alpha\\|snapshot\\)[0-9]*\\)*\\)\\'" subdir)
(match-string 1 subdir) subdir))
"-pkg.el"))
@@ -20,21 +20,5 @@ in
yasnippet
]
);
p4-16-mode = super.p4-16-mode.overrideAttrs {
# workaround https://github.com/NixOS/nixpkgs/issues/301795
prePatch = ''
mkdir tmp-untar-dir
pushd tmp-untar-dir
tar --extract --verbose --file=$src
content_directory=$(echo p4-16-mode-*)
cp --verbose $content_directory/p4-16-mode-pkg.el $content_directory/p4-pkg.el
src=$PWD/$content_directory.tar
tar --create --verbose --file=$src $content_directory
popd
'';
};
# keep-sorted end
}
@@ -11,6 +11,7 @@ let
plugin = null;
config = null;
optional = false;
type = "viml";
};
in
map (x: defaultPlugin // (if x ? plugin then x else { plugin = x; })) plugins;
@@ -26,6 +27,15 @@ let
example = "set title";
};
type = lib.mkOption {
type = lib.types.either (lib.types.enum [
"lua"
"viml"
]) lib.types.str;
description = "Language used in config. Configurations are aggregated per-language.";
default = "viml";
};
optional = mkEnableOption "optional" // {
description = "Don't load automatically on startup (load with :packadd)";
};
@@ -78,12 +88,20 @@ in
userPluginViml = lib.mkOption {
readOnly = true;
type = lib.types.listOf lib.types.lines;
type = lib.types.nullOr lib.types.lines;
description = ''
The viml config set by the user.
'';
};
userPluginConfigs = lib.mkOption {
readOnly = true;
type = lib.types.attrsOf lib.types.lines;
description = ''
The user configurations (viml, lua, ...) set by the user.
'';
};
pluginPython3Packages = lib.mkOption {
readOnly = true;
type = lib.types.listOf (lib.types.functionTo (lib.types.listOf lib.types.package));
@@ -106,6 +124,13 @@ in
config =
let
pluginsNormalized = config.plugins;
userPluginConfigs =
let
grouped = lib.groupBy (x: x.type) pluginsNormalized;
configsOnly = lib.foldl (acc: p: if p.config != null then acc ++ [ p.config ] else acc) [ ];
in
lib.mapAttrs (_name: vals: lib.concatStringsSep "\n" (configsOnly vals)) grouped;
in
{
pluginAdvisedLua =
@@ -125,9 +150,9 @@ in
in
lib.foldl' op [ ] pluginsNormalized;
userPluginViml = lib.foldl (
acc: p: if p.config != null then acc ++ [ p.config ] else acc
) [ ] pluginsNormalized;
userPluginViml = userPluginConfigs.viml or null;
inherit userPluginConfigs;
pluginPython3Packages = map (plugin: plugin.python3Dependencies or (_: [ ])) pluginsNormalized;
@@ -12,7 +12,6 @@
writeText,
neovim,
vimPlugins,
neovimUtils,
wrapNeovimUnstable,
neovim-unwrapped,
fetchFromGitLab,
@@ -21,8 +20,6 @@
pkgs,
}:
let
inherit (neovimUtils) makeNeovimConfig;
plugins = with vimPlugins; [
{
plugin = vim-obsession;
@@ -30,6 +27,14 @@ let
map <Leader>$ <Cmd>Obsession<CR>
'';
}
{
plugin = vim-obsession;
type = "lua";
config = ''
-- this is a comment
vim.g.nixpkgs_test_value = 42
'';
}
];
packagesWithSingleLineConfigs = with vimPlugins; [
@@ -43,20 +48,6 @@ let
}
];
nvimConfSingleLines = {
plugins = packagesWithSingleLineConfigs;
neovimRcContent = ''
" just a comment
'';
};
nvimConfNix = {
inherit plugins;
neovimRcContent = ''
" just a comment
'';
};
nvim-with-luasnip = wrapNeovim2 "-with-luasnip" {
plugins = [
{
@@ -105,6 +96,7 @@ let
}
(
''
export PATH="${neovim-drv}/bin:$PATH"
source ${nmt}/bash-lib/assertions.sh
vimrc="${writeText "test-${neovim-drv.name}-init.vim" neovim-drv.initRc}"
luarc="${writeText "test-${neovim-drv.name}-init.lua" neovim-drv.luaRcContent}"
@@ -139,8 +131,19 @@ pkgs.lib.recurseIntoAttrs rec {
### neovim tests
##################
nvim_with_plugins = wrapNeovim2 "-with-plugins" nvimConfNix;
nvim_singlelines = wrapNeovim2 "-single-lines" nvimConfSingleLines;
nvim_with_plugins = wrapNeovim2 "-with-plugins" {
inherit plugins;
neovimRcContent = ''
" just a comment
'';
};
nvim_singlelines = wrapNeovim2 "-single-lines" {
plugins = packagesWithSingleLineConfigs;
neovimRcContent = ''
" just a comment
'';
};
# test that passthru.initRc hasn't changed
passthruInitRc = runTest nvim_singlelines ''
@@ -413,12 +416,19 @@ pkgs.lib.recurseIntoAttrs rec {
# check that bringing in one plugin with lua deps makes those deps visible from wrapper
# for instance luasnip has a dependency on jsregexp
can_require_transitive_deps = runTest nvim-with-luasnip ''
${nvim-with-luasnip}/bin/nvim -i NONE -c "lua require'jsregexp'" -e +quitall!
nvim --headless -i NONE -c "lua require'jsregexp'" -e +quitall!
'';
inherit nvim_with_rocks_nvim;
rocks_install_plenary = runTest nvim_with_rocks_nvim ''
${nvim_with_rocks_nvim}/bin/nvim -V3log.txt -i NONE +'Rocks install plenary.nvim' +quit! -e
nvim -V3rocks-log.txt -i NONE +'Rocks install plenary.nvim' +quit! -e
'';
can_load_lua_config = runTest nvim_with_plugins ''
if ! nvim --headless -V3lua-config-log.txt -i NONE -c 'lua if vim.g.nixpkgs_test_value ~= 42 then os.exit(42) end' +quit! -e; then
echo "Failed to find plugin config"
exit 1
fi
'';
inherit (vimPlugins) corePlugins;
+2 -5
View File
@@ -6,12 +6,8 @@
config,
vimUtils,
vimPlugins,
nodejs,
neovim-unwrapped,
bundlerEnv,
ruby,
lua,
python3Packages,
wrapNeovimUnstable,
}:
let
@@ -109,11 +105,12 @@ let
# viml config set by the user along with the plugin
inherit (checked_cfg)
userPluginViml
userPluginViml # redefine via userPluginConfigs
runtimeDeps
pluginAdvisedLua
pluginPython3Packages
luaDependencies
userPluginConfigs
;
# A Vim "package", see ':h packages'
+7 -2
View File
@@ -14,7 +14,6 @@
neovimUtils,
perl,
lndir,
vimUtils,
runCommand,
}:
@@ -100,7 +99,10 @@ let
# we call vimrcContent without 'packages' to avoid the init.vim generation
neovimRcContent' = lib.concatStringsSep "\n" (
vimPackageInfo.userPluginViml ++ lib.optional (neovimRcContent != null) neovimRcContent
lib.optional (vimPackageInfo.userPluginConfigs.viml or "" != "") (
vimPackageInfo.userPluginConfigs.viml
)
++ (lib.optional (neovimRcContent != null) neovimRcContent)
);
packpathDirs.myNeovimPackages = vimPackageInfo.vimPackage;
@@ -126,6 +128,9 @@ let
lib.optional (luaDeps != [ ]) luaPathLuaRc
++ [ providerLuaRc ]
++ lib.optional (luaRcContent != "") luaRcContent
++ lib.optional (
vimPackageInfo.userPluginConfigs.lua or "" != ""
) vimPackageInfo.userPluginConfigs.lua
++ lib.optional (neovimRcContent' != "") ''
vim.cmd.source "${writeText "init.vim" neovimRcContent'}"
''
@@ -5980,6 +5980,19 @@ final: prev: {
meta.hydraPlatforms = [ ];
};
git-dev-nvim = buildVimPlugin {
pname = "git-dev.nvim";
version = "0.11.0-unstable-2026-04-11";
src = fetchFromGitHub {
owner = "moyiz";
repo = "git-dev.nvim";
rev = "916c7309c34bd8f53da1e30f31cec697e9ac5e52";
hash = "sha256-5KSjh/Gh8sXrQ7YU66XaaM1M1a3LZswamoBtnA6qiKg=";
};
meta.homepage = "https://github.com/moyiz/git-dev.nvim/";
meta.hydraPlatforms = [ ];
};
git-messenger-vim = buildVimPlugin {
pname = "git-messenger.vim";
version = "0-unstable-2025-05-30";
@@ -23777,6 +23790,19 @@ final: prev: {
meta.hydraPlatforms = [ ];
};
zen-nvim = buildVimPlugin {
pname = "zen.nvim";
version = "0-unstable-2026-04-12";
src = fetchFromGitHub {
owner = "sand4rt";
repo = "zen.nvim";
rev = "31d0d45a56eae2a750818b7afa9f504044d7e382";
hash = "sha256-vmQ3dJpMACv4oP4MKuIHe3PVs1ZMy0916lNRmtbzZ88=";
};
meta.homepage = "https://github.com/sand4rt/zen.nvim/";
meta.hydraPlatforms = [ ];
};
zenbones-nvim = buildVimPlugin {
pname = "zenbones.nvim";
version = "4.11.0-unstable-2026-02-11";
@@ -458,6 +458,7 @@ https://github.com/eagletmt/ghcmod-vim/,,
https://github.com/f-person/git-blame.nvim/,,
https://github.com/akinsho/git-conflict.nvim/,HEAD,
https://github.com/juansalvatore/git-dashboard-nvim/,HEAD,
https://github.com/moyiz/git-dev.nvim/,,
https://github.com/rhysd/git-messenger.vim/,,
https://github.com/mikesmithgh/git-prompt-string-lualine.nvim/,HEAD,
https://github.com/polarmutex/git-worktree.nvim/,HEAD,
@@ -1827,6 +1828,7 @@ https://github.com/KabbAmine/zeavim.vim/,,
https://github.com/swaits/zellij-nav.nvim/,HEAD,
https://github.com/Lilja/zellij.nvim/,HEAD,
https://github.com/folke/zen-mode.nvim/,,
https://github.com/sand4rt/zen.nvim/,HEAD,
https://github.com/zenbones-theme/zenbones.nvim/,HEAD,
https://github.com/jnurmine/zenburn/,,
https://github.com/nvimdev/zephyr-nvim/,,
@@ -73,10 +73,7 @@ stdenv.mkDerivation (finalAttrs: {
mainProgram = "openbangla-gui";
homepage = "https://openbangla.github.io/";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [
hqurve
johnrtitor
];
maintainers = with lib.maintainers; [ johnrtitor ];
platforms = lib.platforms.linux;
# never built on aarch64-linux since first introduction in nixpkgs
broken = stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64;
@@ -1,28 +1,35 @@
{
lib,
buildPythonApplication,
fetchPypi,
fetchFromGitHub,
libevdev,
paramiko,
pynput,
setuptools,
screeninfo,
tkinter,
}:
buildPythonApplication rec {
buildPythonApplication {
pname = "remarkable-mouse";
version = "7.1.1";
format = "setuptools";
version = "unstable-2024-02-23";
src = fetchPypi {
inherit pname version;
hash = "sha256-82P9tE3jiUlKBGZCiWDoL+9VJ06Bc+If+aMfcEEU90U=";
src = fetchFromGitHub {
owner = "Evidlo";
repo = "remarkable_mouse";
rev = "05142ef37a8b3f9e350156a14c2dec6844ed0ea8";
hash = "sha256-0X/7SIfSnlEL98fxJBAYrHAkRmdtymqA7xBmVoa5VIw=";
};
pyproject = true;
build-system = [ setuptools ];
propagatedBuildInputs = [
screeninfo
paramiko
pynput
libevdev
tkinter
];
# no tests
@@ -110,13 +110,13 @@
"vendorHash": null
},
"bpg_proxmox": {
"hash": "sha256-1bNiIhF5AyvpQZYIOu9YHa+ACx/mE+1MRUdK8AcHuv0=",
"hash": "sha256-D8pHNC3iof/zSVsCLAu2S6BJlUnUGySQc0tP4RfZ9V0=",
"homepage": "https://registry.terraform.io/providers/bpg/proxmox",
"owner": "bpg",
"repo": "terraform-provider-proxmox",
"rev": "v0.100.0",
"rev": "v0.101.1",
"spdx": "MPL-2.0",
"vendorHash": "sha256-l0acl8PpDN/o2OHVRirswy297L/VM8MC85OrsPbyo0s="
"vendorHash": "sha256-oEl7thSbcviz3pDOYE6ovCBBA4Zdmoss8H/On33zL2o="
},
"brightbox_brightbox": {
"hash": "sha256-pwFbCP+qDL/4IUfbPRCkddkbsEEeAu7Wp12/mDL0ABA=",
@@ -824,13 +824,13 @@
"vendorHash": "sha256-7mJ+BX7laBKsr4DX1keMXnGi79CZp8M1jD0COQ1lcmU="
},
"kreuzwerker_docker": {
"hash": "sha256-fektxIObUvQSHeu1MJL3lirF+oUq8+CheaxcPDoQB+k=",
"hash": "sha256-PwImvuX6NkdYFjS4I7BbTZWEIVsJ01rsfiLcLfGales=",
"homepage": "https://registry.terraform.io/providers/kreuzwerker/docker",
"owner": "kreuzwerker",
"repo": "terraform-provider-docker",
"rev": "v4.0.0",
"rev": "v4.1.0",
"spdx": "MPL-2.0",
"vendorHash": "sha256-wqHArSldDyAxFX0Hmcl6FRDzfRuZGssl1h4GjN/0mgQ="
"vendorHash": "sha256-3NlY3EysHcRu7aV4NoJxF2IhQ17F9JtxldC5+x3PbL0="
},
"launchdarkly_launchdarkly": {
"hash": "sha256-lcemT7kpBlZX35Sb+ujHzSdakBQkUSmYAxTVsJkRW6A=",
@@ -121,7 +121,7 @@ stdenv.mkDerivation rec {
lgpl3Plus
mit
];
maintainers = with lib.maintainers; [ hqurve ];
maintainers = [ ];
mainProgram = "labplot2";
platforms = lib.platforms.unix;
};
+42 -42
View File
@@ -18,6 +18,7 @@
symlinkJoin,
makeWrapper,
runCommand,
writeText,
doInstallCheck ? true,
# packages that use bats (for update testing)
bash-preexec,
@@ -151,59 +152,58 @@ resholve.mkDerivation rec {
wrapProgram "$out/bin/bats" \
--suffix BATS_LIB_PATH : "$out/share/bats"
'';
inherit meta;
};
passthru.tests = {
libraries =
runCommand "${bats.name}-with-libraries-test"
{
testScript = ''
setup() {
bats_load_library bats-support
bats_load_library bats-assert
bats_load_library bats-file
bats_load_library bats-detik/detik.bash
let
testScript = writeText "bats-libraries-test-script" ''
setup() {
bats_load_library bats-support
bats_load_library bats-assert
bats_load_library bats-file
bats_load_library bats-detik/detik.bash
bats_require_minimum_version 1.5.0
bats_require_minimum_version 1.5.0
TEST_TEMP_DIR="$(temp_make --prefix 'nixpkgs-bats-test')"
}
TEST_TEMP_DIR="$(temp_make --prefix 'nixpkgs-bats-test')"
}
teardown() {
temp_del "$TEST_TEMP_DIR"
}
teardown() {
temp_del "$TEST_TEMP_DIR"
}
@test echo_hi {
run -0 echo hi
assert_output "hi"
}
@test echo_hi {
run -0 echo hi
assert_output "hi"
}
@test cp_failure {
run ! cp
assert_line --index 0 "cp: missing file operand"
assert_line --index 1 "Try 'cp --help' for more information."
}
@test cp_failure {
run ! cp
assert_line --index 0 "cp: missing file operand"
assert_line --index 1 "Try 'cp --help' for more information."
}
@test file_exists {
echo "hi" > "$TEST_TEMP_DIR/hello.txt"
assert_file_exist "$TEST_TEMP_DIR/hello.txt"
run cat "$TEST_TEMP_DIR/hello.txt"
assert_output "hi"
}
'';
passAsFile = [ "testScript" ];
}
''
${
bats.withLibraries (p: [
p.bats-support
p.bats-assert
p.bats-file
p.bats-detik
])
}/bin/bats "$testScriptPath"
touch "$out"
@test file_exists {
echo "hi" > "$TEST_TEMP_DIR/hello.txt"
assert_file_exist "$TEST_TEMP_DIR/hello.txt"
run cat "$TEST_TEMP_DIR/hello.txt"
assert_output "hi"
}
'';
batsWithLibraries = bats.withLibraries (p: [
p.bats-support
p.bats-assert
p.bats-file
p.bats-detik
]);
in
runCommand "${bats.name}-with-libraries-test" { } ''
${lib.getExe batsWithLibraries} "${testScript}"
touch "$out"
'';
upstream = bats.unresholved.overrideAttrs (old: {
name = "${bats.name}-tests";
+2 -2
View File
@@ -6,13 +6,13 @@
buildGoModule (finalAttrs: {
pname = "cdncheck";
version = "1.2.30";
version = "1.2.31";
src = fetchFromGitHub {
owner = "projectdiscovery";
repo = "cdncheck";
tag = "v${finalAttrs.version}";
hash = "sha256-CzTwax3XuUt5ZJsYXIbXHz3czev6natd1WsTQIrokEE=";
hash = "sha256-IHImxkPuid5dALQ6YUf0eYHs4AlV5vF+w7xQXw+z05o=";
};
vendorHash = "sha256-z/wOCtd39ENUe8WQUst4uhl8R6RwCDdcUC4OZcRJWSs=";
+3 -3
View File
@@ -6,16 +6,16 @@
buildGoModule (finalAttrs: {
pname = "cloudfox";
version = "2.0.1";
version = "2.0.2";
src = fetchFromGitHub {
owner = "BishopFox";
repo = "cloudfox";
tag = "v${finalAttrs.version}";
hash = "sha256-l342y30DFDmq2LDVr5L2ayLNUdC97zBwwL2w8C9MAek=";
hash = "sha256-vP19+COji92pm0a08PCE6KNaXgOWajavSuwhlaaPhl0=";
};
vendorHash = "sha256-RnAScQlq8GCTYwhugSZC0I8Crf7CYriidICq1PEII+g=";
vendorHash = "sha256-cQxmDyr+K0Gvv4QdWs9A/Ju7X53+zHQ+OXKI+SySUik=";
ldflags = [
"-w"
+5
View File
@@ -0,0 +1,5 @@
{ python3Packages }:
(python3Packages.toPythonApplication python3Packages.connect-box3).overrideAttrs {
__structuredAttrs = true;
}
+1 -1
View File
@@ -71,6 +71,6 @@ stdenv.mkDerivation (finalAttrs: {
'';
platforms = lib.platforms.all;
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ hqurve ];
maintainers = [ ];
};
})
+6
View File
@@ -75,10 +75,16 @@ let
# Desktop items, icons and metainfo are not installed automatically
postInstall = ''
# Czkawka
install -Dm444 -t $out/share/applications data/com.github.qarmin.czkawka.desktop
install -Dm444 -t $out/share/icons/hicolor/scalable/apps data/icons/com.github.qarmin.czkawka.svg
install -Dm444 -t $out/share/icons/hicolor/scalable/apps data/icons/com.github.qarmin.czkawka-symbolic.svg
install -Dm444 -t $out/share/metainfo data/com.github.qarmin.czkawka.metainfo.xml
# Krokiet
install -Dm444 -t $out/share/applications data/io.github.qarmin.krokiet.desktop
install -Dm444 -t $out/share/icons/hicolor/scalable/apps data/icons/io.github.qarmin.krokiet.svg
install -Dm444 -t $out/share/metainfo data/io.github.qarmin.krokiet.metainfo.xml
'';
dontWrapGApps = true;
+18
View File
@@ -0,0 +1,18 @@
import ./generic.nix {
version = "2.3.21.1";
hash = "sha256-1THBB401r6AnZbnHGhIq+o+nR8v94O0mIX68Pv0miiE=";
patches = fetchpatch: [
# Fix loading extended modules.
./load-extended-modules.patch
# fix openssl 3.0 compatibility
(fetchpatch {
url = "https://salsa.debian.org/debian/dovecot/-/raw/debian/1%252.3.19.1+dfsg1-2/debian/patches/Support-openssl-3.0.patch";
hash = "sha256-PbBB1jIY3jIC8Js1NY93zkV0gISGUq7Nc67Ul5tN7sw=";
})
(fetchpatch {
name = "dovecot-test-data-stack-drop-bogus-assertion.patch";
url = "https://github.com/dovecot/core/commit/9f642dd868db6e7401f24e4fb4031b5bdca8aae7.patch";
hash = "sha256-dAX80dRqOba9Fkzl11ChYJ6vqcgfkaw/o+TOQKCnnns=";
})
];
}
-8
View File
@@ -1,8 +0,0 @@
import ./generic.nix {
version = "2.4.3";
hash = "sha256-NTtQMHK/IzAYHKb1lxClUUJkyJpeLo7mKRCAR1GaUTo=";
patches = _: [
# Fix loading extended modules.
./load-extended-modules.patch
];
}
+1 -2
View File
@@ -33,8 +33,7 @@
fetchpatch,
rpcsvc-proto,
libtirpc,
dovecot_pigeonhole_0_5,
dovecot_pigeonhole ? dovecot_pigeonhole_0_5,
dovecot_pigeonhole,
withApparmor ? false,
libapparmor,
withLDAP ? true,
+3 -13
View File
@@ -1,18 +1,8 @@
import ./generic.nix {
version = "2.3.21.1";
hash = "sha256-1THBB401r6AnZbnHGhIq+o+nR8v94O0mIX68Pv0miiE=";
patches = fetchpatch: [
version = "2.4.3";
hash = "sha256-NTtQMHK/IzAYHKb1lxClUUJkyJpeLo7mKRCAR1GaUTo=";
patches = _: [
# Fix loading extended modules.
./load-extended-modules.patch
# fix openssl 3.0 compatibility
(fetchpatch {
url = "https://salsa.debian.org/debian/dovecot/-/raw/debian/1%252.3.19.1+dfsg1-2/debian/patches/Support-openssl-3.0.patch";
hash = "sha256-PbBB1jIY3jIC8Js1NY93zkV0gISGUq7Nc67Ul5tN7sw=";
})
(fetchpatch {
name = "dovecot-test-data-stack-drop-bogus-assertion.patch";
url = "https://github.com/dovecot/core/commit/9f642dd868db6e7401f24e4fb4031b5bdca8aae7.patch";
hash = "sha256-dAX80dRqOba9Fkzl11ChYJ6vqcgfkaw/o+TOQKCnnns=";
})
];
}
@@ -0,0 +1,10 @@
import ./generic.nix {
version = "0.5.21.1";
url =
{
version,
dovecotMajorMinor,
}:
"https://pigeonhole.dovecot.org/releases/${dovecotMajorMinor}/dovecot-${dovecotMajorMinor}-pigeonhole-${version}.tar.gz";
hash = "sha256-andOWZmgWYIPATEk0V+mHmReL+quG81azwPkBMoo9OE=";
}
@@ -1,17 +0,0 @@
import ./generic.nix {
version = "2.4.3";
url =
{
version,
dovecotMajorMinor,
}:
"https://pigeonhole.dovecot.org/releases/${dovecotMajorMinor}/dovecot-pigeonhole-${version}.tar.gz";
hash = "sha256-LQNhqYnBVICabluj8F07UOZR5frt6bd9JSyuHJDS6hc=";
patches = fetchpatch: [
# https://github.com/NixOS/nixpkgs/pull/388463#issuecomment-3066016707
(fetchpatch {
url = "https://github.com/dovecot/pigeonhole/commit/517d74aa1d98b853b72608ce722bc58009c0f4a9.patch";
hash = "sha256-BLBz9ZhOGEIIitnXG0uM6bZBRNnQBy4K2IJlh1+Un50=";
})
];
}
@@ -9,8 +9,7 @@
stdenv,
fetchpatch,
fetchzip,
dovecot_2_3,
dovecot ? dovecot_2_3,
dovecot,
openssl,
libstemmer,
perl,
+10 -3
View File
@@ -1,10 +1,17 @@
import ./generic.nix {
version = "0.5.21.1";
version = "2.4.3";
url =
{
version,
dovecotMajorMinor,
}:
"https://pigeonhole.dovecot.org/releases/${dovecotMajorMinor}/dovecot-${dovecotMajorMinor}-pigeonhole-${version}.tar.gz";
hash = "sha256-andOWZmgWYIPATEk0V+mHmReL+quG81azwPkBMoo9OE=";
"https://pigeonhole.dovecot.org/releases/${dovecotMajorMinor}/dovecot-pigeonhole-${version}.tar.gz";
hash = "sha256-LQNhqYnBVICabluj8F07UOZR5frt6bd9JSyuHJDS6hc=";
patches = fetchpatch: [
# https://github.com/NixOS/nixpkgs/pull/388463#issuecomment-3066016707
(fetchpatch {
url = "https://github.com/dovecot/pigeonhole/commit/517d74aa1d98b853b72608ce722bc58009c0f4a9.patch";
hash = "sha256-BLBz9ZhOGEIIitnXG0uM6bZBRNnQBy4K2IJlh1+Un50=";
})
];
}
+2 -2
View File
@@ -6,13 +6,13 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "exploitdb";
version = "2026-04-07";
version = "2026-04-11";
src = fetchFromGitLab {
owner = "exploit-database";
repo = "exploitdb";
tag = finalAttrs.version;
hash = "sha256-tq0E5Kzp4T+eYfA4Q4kR5kbpWrtnyKoNEpJNJCDcEKc=";
hash = "sha256-Gxi+gb9PbjF2QYDYClSBqru8pebf8ay0AvJnCEYbaSc=";
};
nativeBuildInputs = [ makeWrapper ];
+2 -2
View File
@@ -12,13 +12,13 @@
}:
let
version = "2.62.2";
version = "2.63.2";
src = fetchFromGitHub {
owner = "filebrowser";
repo = "filebrowser";
rev = "v${version}";
hash = "sha256-yjy3RMgC38oktxMpvw78w5VVCUE/1+Lv37G/RJaQte0=";
hash = "sha256-pAD7mEiDQyfmKmClO9oMLgPua0jOrcImiQrSGLvhCEA=";
};
frontend = buildNpmPackage rec {
+3 -3
View File
@@ -10,13 +10,13 @@
}:
buildNpmPackage rec {
pname = "flood";
version = "4.13.0";
version = "4.13.9";
src = fetchFromGitHub {
owner = "jesec";
repo = "flood";
rev = "v${version}";
hash = "sha256-3q9a3WwTHzKbZTptSBTevReu2q4XIkSmFzX0MJQAbc4=";
hash = "sha256-0jez1JwgE7J4EOm5wC/hFpvaP4+Zl/XvupLYAR/tGJQ=";
};
nativeBuildInputs = [ pnpm_9 ];
@@ -31,7 +31,7 @@ buildNpmPackage rec {
;
pnpm = pnpm_9;
fetcherVersion = 1;
hash = "sha256-ukhZ1SCejwi0n3PubBo5qIRE/8snjHSZaGVIbHKvwdI=";
hash = "sha256-CT0e/IaAhFqRG+FdlA6ZIXOcmy1IzDdd677XV81SgHY=";
};
passthru = {
+3 -3
View File
@@ -12,7 +12,7 @@
buildGoModule rec {
pname = "flyctl";
version = "0.4.29";
version = "0.4.33";
src = fetchFromGitHub {
owner = "superfly";
@@ -22,11 +22,11 @@ buildGoModule rec {
cd "$out"
git rev-parse HEAD > COMMIT
'';
hash = "sha256-mpyxl8Bjk6d0nCmnl+yzp0GtKiugjLykCFlfnf53+K4=";
hash = "sha256-d6GcWiEf/Ir8Uut+xEQagOCcEjOoIxGPvvYC2fqzQPo=";
};
proxyVendor = true;
vendorHash = "sha256-BqlLRnyr0m57lshGsjElK39JKYoJrIr281SevOUVhzI=";
vendorHash = "sha256-YO1/E1ys2rt/7nswYsuwynlACH3XsKtsrVRqzoJlny0=";
subPackages = [ "." ];
+3 -3
View File
@@ -16,16 +16,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "gleam";
version = "1.15.2";
version = "1.15.4";
src = fetchFromGitHub {
owner = "gleam-lang";
repo = "gleam";
tag = "v${finalAttrs.version}";
hash = "sha256-A5rss4+hTLiE0mylzTT1sw18MmDdYBIyu6xLTvMJ1YY=";
hash = "sha256-BTbBcmGOoII7GP68RNl/U2PCNQdG2vdwq1/3/brMuIc=";
};
cargoHash = "sha256-VyVcBAqwrgwiyUXkKPbfP4qTKtFOMCUD0Tho79xJxC8=";
cargoHash = "sha256-+5sGYrqF8CKG5/G1QEQEnMZDFnE8D40TBGygdHBBthA=";
nativeBuildInputs = [
pkg-config
+2
View File
@@ -27,6 +27,8 @@ buildGoModule (finalAttrs: {
"-X github.com/0xjuanma/golazo/cmd.Version=v${finalAttrs.version}"
];
__structuredAttrs = true;
passthru.updateScript = gitUpdater {
rev-prefix = "v";
};
@@ -168,7 +168,7 @@ let
fi
# Write the snapshot file to the `.install` folder
cp $snapshotPath $out/google-cloud-sdk/.install/${pname}.snapshot.json
printf "%s" "$snapshot" > $out/google-cloud-sdk/.install/${pname}.snapshot.json
'';
nativeBuildInputs = [
python3
@@ -185,7 +185,7 @@ let
passthru = {
dependencies = filterForSystem dependencies;
};
passAsFile = [ "snapshot" ];
__structuredAttrs = true;
meta = {
inherit description platforms;
};
+2 -7
View File
@@ -22,21 +22,16 @@
stdenv.mkDerivation (finalAttrs: {
pname = "gource";
version = "0.55";
version = "0.56";
src = fetchurl {
url = "https://github.com/acaudwell/Gource/releases/download/gource-${finalAttrs.version}/gource-${finalAttrs.version}.tar.gz";
hash = "sha256-yCOSEtKLB1CNnkd2GZdoAmgWKPwl6z4E9mcRdwE8AUI=";
hash = "sha256-My2Jual5sXQX+84O3XKxmRTxQJ/RJqE9EXh9DhXcDXk=";
};
postPatch = ''
# remove bundled library
rm -r src/tinyxml
# Fix build with boost 1.89
rm m4/ax_boost_system.m4
substituteInPlace configure.ac \
--replace-fail "AX_BOOST_SYSTEM" ""
'';
nativeBuildInputs = [
@@ -71,6 +71,6 @@ maven.buildMavenPackage {
mainProgram = "java-language-server";
homepage = "https://github.com/georgewfraser/java-language-server";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ hqurve ];
maintainers = [ ];
};
}
-1
View File
@@ -73,7 +73,6 @@ stdenv.mkDerivation (finalAttrs: {
description = "Choose the application to open files and links";
homepage = "https://apps.gnome.org/Junction/";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ hqurve ];
teams = [ lib.teams.gnome-circle ];
platforms = lib.platforms.linux;
};
+2 -2
View File
@@ -10,13 +10,13 @@
buildNpmPackage (finalAttrs: {
pname = "liteparse";
version = "1.4.4";
version = "1.4.6";
src = fetchFromGitHub {
owner = "run-llama";
repo = "liteparse";
tag = "v${finalAttrs.version}";
hash = "sha256-UHZaKWjzaoYbD2NHwNgvlpPfviD66zPQ6d0UWW/lrmk=";
hash = "sha256-GUtqJsmAOrbxLc/aAIre95QD6aaFsj5ClqZfo7jdwB4=";
};
npmDepsHash = "sha256-Wz46n7BbubC3Cq1CHOHM2q/dVOvOVNQTloHZfkAwzpg=";
+2 -2
View File
@@ -15,11 +15,11 @@
stdenv.mkDerivation (finalAttrs: {
pname = "log4cxx";
version = "1.6.1";
version = "1.7.0";
src = fetchurl {
url = "mirror://apache/logging/log4cxx/${finalAttrs.version}/apache-log4cxx-${finalAttrs.version}.tar.gz";
hash = "sha256-GHyFg29bLyf7Ho13x/Hyk5cl8fZJi3QrDdVpujCWX9I=";
hash = "sha256-uUP/FwOT5M44GrTEkUOWEnv01E+4vR8OXvhFPzxNNkw=";
};
postPatch = ''
+1 -1
View File
@@ -135,7 +135,7 @@ stdenv.mkDerivation rec {
'';
license = lib.licenses.mit;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ hqurve ];
maintainers = [ ];
mainProgram = "lorien";
};
}
+1
View File
@@ -78,6 +78,7 @@ stdenv.mkDerivation (finalAttrs: {
HOME = "/tmp"; # for the font cache
LANG = "C.UTF-8";
QT_QPA_PLATFORM = "offscreen"; # the tests require a UI
QT_QPA_PLATFORM_PLUGIN_PATH = "${qt'.qtbase}/${qt'.qtbase.qtPluginPrefix}/platforms";
};
doCheck = true;
+10 -6
View File
@@ -19,6 +19,7 @@
procps ? null,
versionCheckHook,
nix-update-script,
writableTmpDirAsHomeHook,
# now defaults to false because some tests can be flaky (clipboard etc), see
# also: https://github.com/neovim/neovim/issues/16233
@@ -161,22 +162,18 @@ stdenv.mkDerivation (
unibilium
utf8proc
]
++ lib.optionals finalAttrs.finalPackage.doCheck [
glibcLocales
procps
]
++ lib.optionals (stdenv.hostPlatform.libc != "glibc") [
# Provide libintl for non-glibc platforms
gettext
];
doCheck = false;
doCheck = true;
# to be exhaustive, one could run
# make oldtests too
checkPhase = ''
runHook preCheck
make functionaltest
make functionaltest__treesitter
runHook postCheck
'';
@@ -219,6 +216,7 @@ stdenv.mkDerivation (
# third-party/CMakeLists.txt is not read at all.
(lib.cmakeBool "USE_BUNDLED" false)
(lib.cmakeBool "ENABLE_TRANSLATIONS" true)
(lib.cmakeBool "USE_BUNDLED_BUSTED" false)
]
++ (
if lua.pkgs.isLuaJIT then
@@ -252,6 +250,12 @@ stdenv.mkDerivation (
nativeInstallCheckInputs = [
versionCheckHook
lua.pkgs.busted
writableTmpDirAsHomeHook
glibcLocales
# needs git for vim.pack tests as well
procps
];
versionCheckProgram = "${placeholder "out"}/bin/nvim";
doInstallCheck = true;
@@ -323,7 +323,7 @@ def build_and_activate_system(
if args.diff:
if current_config.exists():
nix.diff_closures(
current_config=current_config.readlink(),
current_config=current_config,
new_config=path_to_config,
target_host=target_host,
)
+2 -2
View File
@@ -33,13 +33,13 @@ stdenv.mkDerivation (finalAttrs: {
strictDeps = true;
pname = "onnx";
version = "1.20.1";
version = "1.21.0";
src = fetchFromGitHub {
owner = "onnx";
repo = "onnx";
tag = "v${finalAttrs.version}";
hash = "sha256-XZJXD6sBvVJ6cLPyDkKOW8oSkjqcw9whUqDWd7dxY3c=";
hash = "sha256-eF6BdTwTuHh6ckuLGN1d6z2GLU47lPqtzu4zIv8+cTs=";
};
outputs = [
+1 -1
View File
@@ -9,5 +9,5 @@ buildNpmPackage (finalAttrs: {
sourceRoot = "${finalAttrs.src.name}/webui";
npmDepsHash = "sha256-IpqineYa15GBqoPDJ7RpaDsq+MQIIDcdq7yhwmH4Lzo=";
npmDepsHash = "sha256-Epz+pCbgejkj7vcdwbPC2RfAkp2HRqGV0urXiiBrjZQ=";
})
+4 -4
View File
@@ -26,7 +26,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "open5gs";
version = "2.7.6";
version = "2.7.7";
diameter = fetchFromGitHub {
owner = "open5gs";
@@ -38,8 +38,8 @@ stdenv.mkDerivation (finalAttrs: {
libtins = fetchFromGitHub {
owner = "open5gs";
repo = "libtins";
rev = "fb152ba63bd8d7d024d5f86e5fbd24a4cb3dd93d"; # r4.3
hash = "sha256-q++F1bvf739P82VpUf4TUygHjhYwOsaQzStJv8PN2Hc=";
rev = "bf22438172d269e6db70e27246dffd8e1f0b96e3"; # r4.5
hash = "sha256-BxSBNKI+jwI33lN+vmYCYSDAxsVDXS190byAzq6lB/A=";
};
mesonFlags = [
@@ -58,7 +58,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "open5gs";
repo = "open5gs";
tag = "v${finalAttrs.version}";
hash = "sha256-2k+S+OXfdskJPtDUFSxb/+2UZcUiOZzRSSGgsEJWolc=";
hash = "sha256-ZK4q6m/9v+us+6dWpi0k188KfFu1b6G9pGE4VGAe4+4=";
};
nativeBuildInputs = [
+1 -1
View File
@@ -60,7 +60,7 @@ stdenv.mkDerivation rec {
description = "Free implementation of the Border Gateway Protocol, Version 4. It allows ordinary machines to be used as routers exchanging routes with other systems speaking the BGP protocol";
license = lib.licenses.isc;
homepage = "http://www.openbgpd.org/";
maintainers = with lib.maintainers; [ kloenk ];
maintainers = with lib.maintainers; [ cvengler ];
platforms = lib.platforms.linux;
};
}
+3 -3
View File
@@ -6,16 +6,16 @@
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "pay-respects";
version = "0.7.13";
version = "0.8.5";
src = fetchFromCodeberg {
owner = "iff";
repo = "pay-respects";
tag = "v${finalAttrs.version}";
hash = "sha256-jKK8wc+M5U8L7D4z8aQT/VJdZE1q2Z2BTRrtw+UWoeo=";
hash = "sha256-rI4cikbZ+J6SSs5l2WroM6862yDe8IFDqpmAV4Od5ng=";
};
cargoHash = "sha256-w9BJ0S6q13udi2JWHtbCCXDjgUYo59/FRjxQGuM5r8c=";
cargoHash = "sha256-IQMB5bYvP/1u6FItZ34GYkMBe1fVao5CK2OPGaikIbk=";
env = {
_DEF_PR_AI_API_KEY = "";
+1 -1
View File
@@ -70,7 +70,7 @@ stdenv.mkDerivation rec {
description = "Graphical user interface for the PDF Toolkit (PDFtk)";
homepage = "https://pdfchain.sourceforge.io";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ hqurve ];
maintainers = [ ];
platforms = lib.platforms.unix;
mainProgram = "pdfchain";
};
+4 -1
View File
@@ -135,7 +135,10 @@ stdenv.mkDerivation (finalAttrs: {
license = lib.licenses.gpl3Only;
homepage = "https://peazip.github.io";
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ annaaurora ];
maintainers = with lib.maintainers; [
annaaurora
ProxyVT
];
mainProgram = "peazip";
};
})
+11 -4
View File
@@ -2,22 +2,29 @@
lib,
buildGoModule,
fetchFromGitHub,
installShellFiles,
}:
buildGoModule (finalAttrs: {
pname = "peco";
version = "0.5.11";
version = "0.6.0";
subPackages = [ "cmd/peco" ];
src = fetchFromGitHub {
owner = "peco";
repo = "peco";
rev = "v${finalAttrs.version}";
sha256 = "sha256-OVUfeNpnmuJsgD//JTn6n9n4oOBxep69LhIpHX+ru2w=";
tag = "v${finalAttrs.version}";
hash = "sha256-jvjqk1t2mTxkcGFWpynf3/J5VR3G1lhOBpIFqh6OoS0=";
};
vendorHash = "sha256-+HQz7UUgATdgSWlI1dg2DdQRUSke9MyAtXgLikFhF90=";
vendorHash = "sha256-EvLi1v3c1Myx9GVvenXiZb2V5foloQzPc35VVjVLuiU=";
nativeBuildInputs = [ installShellFiles ];
postInstall = ''
installManPage contrib/man/peco.1
'';
meta = {
description = "Simplistic interactive filtering tool";
@@ -17,11 +17,18 @@ let
xdg-user-dirs
ncurses
udev
# Required for esp-idf and other frameworks that manage their own
# Python virtual environments during the build process.
# See: https://github.com/NixOS/nixpkgs/issues/133185
cmake
ninja
])
++ (with python.pkgs; [
python
setuptools
pip
wheel
virtualenv
bottle
]);
+2 -2
View File
@@ -10,13 +10,13 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "slidev-cli";
version = "52.14.1";
version = "52.14.2";
src = fetchFromGitHub {
owner = "slidevjs";
repo = "slidev";
tag = "v${finalAttrs.version}";
hash = "sha256-GIg4KU2TJMSZXjnB+A8MPZUUp1/M1YX5ctO13dfmOz0=";
hash = "sha256-dyvEY4jrptPt3FzOpjwkAv8akXXArzyobpzV2Y3fCr0=";
};
pnpmWorkspaces = [ "@slidev/cli..." ];
@@ -76,10 +76,7 @@ stdenv.mkDerivation rec {
unfree
mit
];
maintainers = with lib.maintainers; [
hqurve
nadiaholmquist
];
maintainers = with lib.maintainers; [ nadiaholmquist ];
platforms = lib.platforms.all;
mainProgram = "SpaceCadetPinball";
};
+7 -7
View File
@@ -5,7 +5,7 @@
fetchFromGitHub,
alsa-utils,
copyDesktopItems,
electron_39,
electron_41,
makeDesktopItem,
makeWrapper,
nix-update-script,
@@ -16,16 +16,16 @@
buildNpmPackage rec {
pname = "teams-for-linux";
version = "2.7.13";
version = "2.8.0";
src = fetchFromGitHub {
owner = "IsmaelMartinez";
repo = "teams-for-linux";
tag = "v${version}";
hash = "sha256-5JgmV4VeeM3mMlI3AI4BuF9wFzjsrLnmOCESnKbqY9c=";
hash = "sha256-ybxJCCdam5g43Ycf+Ro3ptOr+4+49Fw+y0rqG4fEzBc=";
};
npmDepsHash = "sha256-ChtRC+NtjZdl5mFirSSz6Jo4CvebH1UqtJ4ywfjWEOI=";
npmDepsHash = "sha256-+VwOlzR+80m+qQS4L0IPmFTn4xuPM7aX7EtSd50D9KM=";
nativeBuildInputs = [
makeWrapper
@@ -46,7 +46,7 @@ buildNpmPackage rec {
buildPhase = ''
runHook preBuild
cp -r ${electron_39.dist} electron-dist
cp -r ${electron_41.dist} electron-dist
chmod -R u+w electron-dist
''
# Electron builder complains about symlink in electron-dist
@@ -61,7 +61,7 @@ buildNpmPackage rec {
-c.npmRebuild=true \
-c.asarUnpack="**/*.node" \
-c.electronDist=electron-dist \
-c.electronVersion=${electron_39.version} \
-c.electronVersion=${electron_41.version} \
-c.mac.identity=null
runHook postBuild
@@ -83,7 +83,7 @@ buildNpmPackage rec {
popd
# Linux needs 'aplay' for notification sounds
makeWrapper '${lib.getExe electron_39}' "$out/bin/teams-for-linux" \
makeWrapper '${lib.getExe electron_41}' "$out/bin/teams-for-linux" \
--prefix PATH : ${
lib.makeBinPath [
alsa-utils
+2 -2
View File
@@ -5,14 +5,14 @@
}:
python3Packages.buildPythonApplication (finalAttrs: {
pname = "tuxbox";
version = "3.1.0";
version = "3.1.1";
pyproject = true;
src = fetchFromGitHub {
owner = "AndyCappDev";
repo = "tuxbox";
tag = "v${finalAttrs.version}";
hash = "sha256-jPPjGumArcnsRKQm3HKhoTGh913WEB5MUs7Y7eCHXNY=";
hash = "sha256-+fVN6z6mxgSDcmG8F3baAMfFbb5eUkt+B0tu6+ZSqKw=";
};
build-system = [ python3Packages.setuptools ];
+2 -2
View File
@@ -39,7 +39,7 @@ let
hash =
{
x86_64-linux = "sha256-gyNZ+DyULv3TPD5YvHo8RvB/pjRtLHOsDNcD8bt/RbY=";
x86_64-linux = "sha256-dKYGepfjgqcYflVABXGp2heI8XY1rIyMJi04aTld4ss=";
}
.${system} or throwSystem;
@@ -48,7 +48,7 @@ let
in
stdenvNoCC.mkDerivation rec {
pname = "xpipe";
version = "22.5";
version = "22.9";
src = fetchzip {
url = "https://github.com/xpipe-io/xpipe/releases/download/${version}/xpipe-portable-linux-${arch}.tar.gz";
+3 -3
View File
@@ -16,13 +16,13 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "zluda";
version = "6-preview.55";
version = "6-preview.63";
src = fetchFromGitHub {
owner = "vosen";
repo = "ZLUDA";
rev = "v${finalAttrs.version}";
hash = "sha256-yhWEzoDjNk1GefSqOVwowNky36ahmH/gTMdq1YTOhfE=";
hash = "sha256-AZGSO6aV1T3elsVDJxFylhzYjkhkIy1QFtTdH4u4Lrw=";
fetchSubmodules = true;
fetchLFS = true;
};
@@ -51,7 +51,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
clang
];
cargoHash = "sha256-YNBeweZ/vfXGfM0lrZbAh71z6Rb0+B7nOuO8VL2BmCo=";
cargoHash = "sha256-2YAlc8HW+aqfRzLSXw/I++DM4/JneE7UNmV6BVZb4VM=";
# Tests require a GPU and segfault in the sandbox
doCheck = false;
@@ -38,14 +38,14 @@
buildPythonPackage (finalAttrs: {
pname = "anthropic";
version = "0.86.0";
version = "0.94.0";
pyproject = true;
src = fetchFromGitHub {
owner = "anthropics";
repo = "anthropic-sdk-python";
tag = "v${finalAttrs.version}";
hash = "sha256-24z9LrZ6xktwITQHHvslrT4J2RZ/CKbZD3uwbZBV+rE=";
hash = "sha256-Gh7My8ftI2o0CxrwuVsbr8tdZ2MtKdRw0mfQxb7REJk=";
};
postPatch = ''
@@ -90,7 +90,8 @@ buildPythonPackage (finalAttrs: {
pytest-xdist
pytestCheckHook
respx
];
]
++ lib.flatten (builtins.attrValues finalAttrs.passthru.optional-dependencies);
pythonImportsCheck = [ "anthropic" ];
@@ -0,0 +1,52 @@
{
lib,
buildPythonPackage,
cyclopts,
fetchFromGitHub,
hatchling,
httpx,
mashumaro,
pytest-asyncio,
pytest-httpx,
pytestCheckHook,
rich,
}:
buildPythonPackage (finalAttrs: {
pname = "connect-box3";
version = "0.2.1";
pyproject = true;
src = fetchFromGitHub {
owner = "home-assistant-ecosystem";
repo = "python-connect-box3";
tag = finalAttrs.version;
hash = "sha256-eLrCMziV/+maLIded1n0248Xb14uVBps/gzTUz8NMMc=";
};
build-system = [ hatchling ];
dependencies = [
cyclopts
httpx
mashumaro
rich
];
nativeCheckInputs = [
pytestCheckHook
pytest-asyncio
pytest-httpx
];
pythonImportsCheck = [ "connect_box3" ];
meta = {
description = "Interact with a Connect Box 3 modem/router";
homepage = "https://github.com/home-assistant-ecosystem/python-connect-box3";
changelog = "https://github.com/home-assistant-ecosystem/python-connect-box3/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "connect-box";
};
})
@@ -8,14 +8,14 @@
buildPythonPackage (finalAttrs: {
pname = "fastcore";
version = "1.12.34";
version = "1.12.38";
pyproject = true;
src = fetchFromGitHub {
owner = "fastai";
repo = "fastcore";
tag = finalAttrs.version;
hash = "sha256-kWF3xEou6yq1si0pfJEljzFKY1xV2IMGQceTOEOe3qI=";
hash = "sha256-xqME3sz7AqGsIuTb8Ge4ByDi4sfwKo/TXEAw6/cTTmU=";
};
build-system = [ setuptools ];
@@ -8,14 +8,14 @@
buildPythonPackage (finalAttrs: {
pname = "fluss-api";
version = "0.2.0";
version = "0.2.4";
pyproject = true;
src = fetchFromGitHub {
owner = "fluss";
repo = "Fluss_Python_Library";
tag = "v${finalAttrs.version}";
hash = "sha256-LD+boeDNWOm3KXZFIkLPvzIyngmFd6lOtIFsrn478wA=";
hash = "sha256-zAhxx2X1DnfXlf+OzyACx6e3bQkoagffBPPnEe05xbM=";
};
build-system = [ setuptools ];
@@ -0,0 +1,66 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
google-generativeai,
hass-client,
jinja2,
mashumaro,
openai,
pyrate-limiter,
pytestCheckHook,
python-slugify,
pyyaml,
setuptools-scm,
setuptools,
synthetic-home,
syrupy,
}:
buildPythonPackage (finalAttrs: {
pname = "home-assistant-datasets";
version = "0.3.0";
pyproject = true;
src = fetchFromGitHub {
owner = "allenporter";
repo = "home-assistant-datasets";
tag = finalAttrs.version;
hash = "sha256-csvjbPtsl7/olJAFmiLES9GH7wAZHxOADTpqbcQbM3s=";
};
build-system = [
setuptools
setuptools-scm
];
dependencies = [
google-generativeai
hass-client
mashumaro
openai
pyrate-limiter
pyyaml
synthetic-home
];
nativeCheckInputs = [
jinja2
pytestCheckHook
python-slugify
syrupy
];
pythonImportsCheck = [ "home_assistant_datasets" ];
# Tests want to import Home Assistant as a module
doCheck = false;
meta = {
description = "Collection of datasets for evaluating AI Models in the context of Home Assistant";
homepage = "https://github.com/allenporter/home-assistant-datasets";
changelog = "https://github.com/allenporter/home-assistant-datasets/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ fab ];
};
})
@@ -16,14 +16,14 @@
buildPythonPackage (finalAttrs: {
pname = "kagglesdk";
version = "0.1.16";
version = "0.1.18";
pyproject = true;
src = fetchFromGitHub {
owner = "Kaggle";
repo = "kagglesdk";
tag = "v${finalAttrs.version}";
hash = "sha256-MmgX9gQ8fQU8yE/2qpw1Kz/VslVix3qUhaGkRahSxns=";
hash = "sha256-2WmYx4Q8Qx1ZdDzqeYwGsOPf0q1Cxtw9zM0iWK4z2xM=";
};
build-system = [
@@ -23,19 +23,19 @@
buildPythonPackage (finalAttrs: {
pname = "llguidance";
version = "1.7.0";
version = "1.7.2";
pyproject = true;
src = fetchFromGitHub {
owner = "guidance-ai";
repo = "llguidance";
tag = "v${finalAttrs.version}";
hash = "sha256-f9qSnNpLl4KUdv1ZzN68MUytCOjP/+a3ZjocX7DiAlw=";
hash = "sha256-Eu+hhYCVoZWMdwrjiHyvbGwjYKnbkBETZNMQ+SOb8AU=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) src pname version;
hash = "sha256-scHxmG5XAbWMR88yyFru0ar2v7Uj/OQP0gpL5wo7Du8=";
hash = "sha256-oeFm9dPqlJWPnrA7//D31E1W2St+zIRd8pzR6gUhiTg=";
};
nativeBuildInputs = [
@@ -6,14 +6,14 @@
setuptools,
}:
buildPythonPackage rec {
buildPythonPackage (finalAttrs: {
pname = "lupa";
version = "2.6";
version = "2.7";
pyproject = true;
src = fetchPypi {
inherit pname version;
hash = "sha256-mncKbolXa+NEdmjXztMSzW/UHTwTwkYsncLCq1cORdk=";
inherit (finalAttrs) pname version;
hash = "sha256-c6ZM5dyM2Vt1ozDBUT5G4JjUD87tP+pRbAn2WV6t6Ik=";
};
build-system = [
@@ -26,8 +26,8 @@ buildPythonPackage rec {
meta = {
description = "Lua in Python";
homepage = "https://github.com/scoder/lupa";
changelog = "https://github.com/scoder/lupa/blob/lupa-${version}/CHANGES.rst";
changelog = "https://github.com/scoder/lupa/blob/lupa-${finalAttrs.version}/CHANGES.rst";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ fab ];
};
}
})
@@ -6,6 +6,7 @@
hatchling,
standard-imghdr,
pytestCheckHook,
pythonOlder,
}:
buildPythonPackage rec {
@@ -29,6 +30,8 @@ buildPythonPackage rec {
standard-imghdr
];
pythonRemoveDeps = lib.optionals (pythonOlder "3.13") [ "standard-imghdr" ];
nativeCheckInputs = [
pytestCheckHook
];
@@ -14,16 +14,17 @@
# tests
pytestCheckHook,
pythonAtLeast,
}:
buildPythonPackage rec {
buildPythonPackage (finalAttrs: {
pname = "mwxml";
version = "0.3.6";
version = "0.3.8";
pyproject = true;
src = fetchPypi {
inherit pname version;
hash = "sha256-WlMYHTAhUq0D7FE/8Yaongx+H8xQx4MwRSoIcsqmOTU=";
inherit (finalAttrs) pname version;
hash = "sha256-yiIyqX6pMem7JPhbVKSRBYwjwHRXY3LnESRq+scGFuA=";
};
build-system = [ setuptools ];
@@ -38,10 +39,15 @@ buildPythonPackage rec {
nativeCheckInputs = [ pytestCheckHook ];
disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
# AttributeError: Can't get local object 'map.<locals>.process_path'
"test_complex_error_handler"
];
disabledTests =
lib.optionals (pythonAtLeast "3.14") [
# _pickle.PicklingError: Can't pickle local object <function map.<locals>.process_path at 0x7ffff580f480>
"test_complex_error_handler"
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
# AttributeError: Can't get local object 'map.<locals>.process_path'
"test_complex_error_handler"
];
meta = {
description = "Set of utilities for processing MediaWiki XML dump data";
@@ -50,4 +56,4 @@ buildPythonPackage rec {
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ GaetanLepage ];
};
}
})
@@ -74,6 +74,10 @@ buildPythonPackage (finalAttrs: {
disabledTestPaths = [
# Circular dependency with onnxscript
"src/onnx_ir/passes/common/common_subexpression_elimination_test.py"
# ImportError: cannot import name 'hub' from 'onnx'
# onnx.hub was removed in 1.21.0
"tools/model_zoo_test/model_zoo_test.py"
];
# Importing onnxruntime in the sandbox crashes on aarch64-linux:
@@ -3,28 +3,36 @@
stdenv,
buildPythonPackage,
fetchPypi,
pytestCheckHook,
# build-system
setuptools,
# tests
pytestCheckHook,
pythonOlder,
}:
buildPythonPackage rec {
buildPythonPackage (finalAttrs: {
pname = "para";
version = "0.0.8";
pyproject = true;
src = fetchPypi {
inherit pname version;
inherit (finalAttrs) pname version;
hash = "sha256-RsMjKunY6p2IbP0IzdESiSICvthkX0C2JVWXukz+8hc=";
};
build-system = [ setuptools ];
nativeCheckInputs = [ pytestCheckHook ];
pythonImportsCheck = [ "para" ];
# AttributeError: Can't get local object 'test_output_queue_size.<locals>.get_the_a'
doCheck = !stdenv.hostPlatform.isDarwin;
nativeCheckInputs = [ pytestCheckHook ];
doCheck =
# AttributeError: Can't get local object 'test_output_queue_size.<locals>.get_the_a'
(!stdenv.hostPlatform.isDarwin)
# _pickle.PicklingError: Can't pickle local object <function test_map.<locals>.get_the_a at 0x7ffff5689fe0>
&& (pythonOlder "3.14");
meta = {
description = "Set utilities that ake advantage of python's 'multiprocessing' module to distribute CPU-intensive tasks";
@@ -32,4 +40,4 @@ buildPythonPackage rec {
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ GaetanLepage ];
};
}
})
@@ -11,14 +11,14 @@
buildPythonPackage (finalAttrs: {
pname = "pyais";
version = "2.20.1";
version = "3.0.0";
pyproject = true;
src = fetchFromGitHub {
owner = "M0r13n";
repo = "pyais";
tag = "v${finalAttrs.version}";
hash = "sha256-ZyVXZZd9JXTkfucJ5tAcP813FLWapoiTUrzj27SrLlk=";
hash = "sha256-aAmvtCl+rObPkpuKb+FzQfKPfVhXHdbsdCWUytRE6mk=";
};
__darwinAllowLocalNetworking = true;
@@ -13,14 +13,14 @@
buildPythonPackage (finalAttrs: {
pname = "pyworxcloud";
version = "6.3.0";
version = "6.3.2";
pyproject = true;
src = fetchFromGitHub {
owner = "MTrab";
repo = "pyworxcloud";
tag = "v${finalAttrs.version}";
hash = "sha256-+97WpQlAxDe9VTCpG7ByhL+qG6u2zZwPNxRFBZDlh48=";
hash = "sha256-T5mSM/vGi+fcMPtCcpAgQ8rlr6+8bnEU7nn6aO/g0H0=";
};
pythonRelaxDeps = [ "awsiotsdk" ];
@@ -1,31 +1,38 @@
{
stdenv,
lib,
buildPythonPackage,
fetchFromGitHub,
# build-system
setuptools,
# buildInputs
armips,
# dependencies
appdirs,
dungeon-eos,
explorerscript,
ndspy,
pillow,
setuptools,
skytemple-rust,
pyyaml,
pmdsky-debug-py,
pyyaml,
range-typed-integers,
# optional dependencies for SpriteCollab
skytemple-rust,
# optional-dependencies
aiohttp,
lru-dict,
graphql-core,
gql,
armips,
graphql-core,
lru-dict,
# tests
pytestCheckHook,
parameterized,
pytestCheckHook,
xmldiff,
}:
buildPythonPackage rec {
buildPythonPackage (finalAttrs: {
pname = "skytemple-files";
version = "1.8.5";
pyproject = true;
@@ -33,31 +40,38 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "SkyTemple";
repo = "skytemple-files";
rev = version;
hash = "sha256-s7r6wS7H19+is3CFr+dLaTiq0N/gaO/8IFknmr+OAJk=";
tag = finalAttrs.version;
# Most patches are in submodules
fetchSubmodules = true;
hash = "sha256-s7r6wS7H19+is3CFr+dLaTiq0N/gaO/8IFknmr+OAJk=";
};
postPatch = ''
substituteInPlace skytemple_files/patch/arm_patcher.py skytemple_files/data/data_cd/armips_importer.py \
--replace-fail "exec_name = os.getenv(\"SKYTEMPLE_ARMIPS_EXEC\", f\"{prefix}armips\")" "exec_name = \"${armips}/bin/armips\""
substituteInPlace \
skytemple_files/patch/arm_patcher.py \
skytemple_files/data/data_cd/armips_importer.py \
--replace-fail \
"exec_name = os.getenv(\"SKYTEMPLE_ARMIPS_EXEC\", f\"{prefix}armips\")" \
"exec_name = \"${armips}/bin/armips\""
'';
build-system = [ setuptools ];
buildInputs = [ armips ];
pythonRelaxDeps = [
"pmdsky-debug-py"
];
dependencies = [
appdirs
dungeon-eos
explorerscript
ndspy
pillow
skytemple-rust
pyyaml
pmdsky-debug-py
pyyaml
range-typed-integers
skytemple-rust
];
optional-dependencies = {
@@ -71,11 +85,11 @@ buildPythonPackage rec {
};
nativeCheckInputs = [
pytestCheckHook
parameterized
pytestCheckHook
xmldiff
]
++ optional-dependencies.spritecollab;
++ finalAttrs.passthru.optional-dependencies.spritecollab;
preCheck = "pushd test";
postCheck = "popd";
@@ -88,11 +102,14 @@ buildPythonPackage rec {
pythonImportsCheck = [ "skytemple_files" ];
meta = {
homepage = "https://github.com/SkyTemple/skytemple-files";
description = "Python library to edit the ROM of Pokémon Mystery Dungeon Explorers of Sky";
homepage = "https://github.com/SkyTemple/skytemple-files";
mainProgram = "skytemple_export_maps";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ marius851000 ];
broken = stdenv.hostPlatform.isDarwin; # pyobjc is missing
badPlatforms = [
# pyobjc is missing
lib.systems.inspect.patterns.isDarwin
];
};
}
})
@@ -39,16 +39,16 @@
writableTmpDirAsHomeHook,
}:
buildPythonPackage rec {
buildPythonPackage (finalAttrs: {
pname = "slack-bolt";
version = "1.27.0";
version = "1.28.0";
pyproject = true;
src = fetchFromGitHub {
owner = "slackapi";
repo = "bolt-python";
tag = "v${version}";
hash = "sha256-3aYsISTNc2uexzpIiBNnw40XegczL5BdKqi6j9K/A80=";
tag = "v${finalAttrs.version}";
hash = "sha256-1AJO7+7YG/NFh6Rmqwkm6yua2LWdYQ9Rv1oadfHAlhE=";
};
build-system = [ setuptools ];
@@ -89,7 +89,7 @@ buildPythonPackage rec {
pytestCheckHook
writableTmpDirAsHomeHook
]
++ lib.concatAttrValues optional-dependencies;
++ lib.flatten (builtins.attrValues finalAttrs.passthru.optional-dependencies);
__darwinAllowLocalNetworking = true;
@@ -108,8 +108,8 @@ buildPythonPackage rec {
meta = {
description = "Framework to build Slack apps using Python";
homepage = "https://github.com/slackapi/bolt-python";
changelog = "https://github.com/slackapi/bolt-python/releases/tag/${src.tag}";
changelog = "https://github.com/slackapi/bolt-python/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ samuela ];
};
}
})
@@ -0,0 +1,55 @@
{
lib,
aiohttp,
buildPythonPackage,
fetchFromGitHub,
mashumaro,
pytest-asyncio,
pytestCheckHook,
python-slugify,
pyyaml,
setuptools,
syrupy,
}:
buildPythonPackage (finalAttrs: {
pname = "synthetic-home";
version = "5.0.2";
pyproject = true;
src = fetchFromGitHub {
owner = "allenporter";
repo = "synthetic-home";
tag = finalAttrs.version;
hash = "sha256-u5suLTK7Cdp6IKVxnmiw8p+xQiXV5nfc6QUvpqCyxTk=";
};
build-system = [ setuptools ];
dependencies = [
aiohttp
mashumaro
];
nativeCheckInputs = [
pytest-asyncio
pytestCheckHook
python-slugify
pyyaml
syrupy
];
pythonImportsCheck = [ "synthetic_home" ];
preCheck = ''
export PATH="$PATH:$out/bin";
'';
meta = {
description = "Library for managing synthetic home device registry";
homepage = "https://github.com/allenporter/synthetic-home";
changelog = "https://github.com/allenporter/synthetic-home/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ fab ];
};
})
+11 -12
View File
@@ -6,24 +6,23 @@
installShellFiles,
}:
python3.pkgs.buildPythonApplication rec {
python3.pkgs.buildPythonApplication (finalAttrs: {
pname = "homeassistant-cli";
version = "0.9.6";
format = "setuptools";
version = "1.0.0";
pyproject = true;
src = fetchFromGitHub {
owner = "home-assistant-ecosystem";
repo = "home-assistant-cli";
rev = version;
hash = "sha256-4OeHJ7icDZUOC5K4L0F0Nd9lbJPgdW4LCU0wniLvJ1Q=";
tag = finalAttrs.version;
hash = "sha256-LF6JXELAP3Mvta3RuDUs4UiQ7ptNFh0vZmPh3ICJFRY=";
};
postPatch = ''
# Ignore pinned versions
sed -i "s/'\(.*\)\(==\|>=\).*'/'\1'/g" setup.py
'';
pythonRelaxDeps = true;
propagatedBuildInputs = with python3.pkgs; [
build-system = with python3.pkgs; [ poetry-core ];
dependencies = with python3.pkgs; [
aiohttp
click
click-log
@@ -57,8 +56,8 @@ python3.pkgs.buildPythonApplication rec {
description = "Command-line tool for Home Assistant";
mainProgram = "hass-cli";
homepage = "https://github.com/home-assistant-ecosystem/home-assistant-cli";
changelog = "https://github.com/home-assistant-ecosystem/home-assistant-cli/releases/tag/${version}";
changelog = "https://github.com/home-assistant-ecosystem/home-assistant-cli/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.asl20;
teams = [ lib.teams.home-assistant ];
};
}
})
+9 -4
View File
@@ -23,21 +23,26 @@ REPOS = [
( "fcitx", "fcitx5-table-extra" ),
( "fcitx", "fcitx5-table-other" ),
( "fcitx", "fcitx5-unikey" ),
( "fcitx", "fcitx5-unikey" )
( "fcitx", "fcitx5-unikey" ),
( "ray2501", "fcitx5-array" )
]
OWNER = "fcitx"
QT_REPOS = [
"fcitx5-chinese-addons",
"fcitx5-configtool",
"fcitx5-qt",
"fcitx5-unikey",
]
def get_latest_tag(repo, owner=OWNER):
def get_latest_tag(repo, owner):
r = requests.get('https://api.github.com/repos/{}/{}/tags'.format(owner,repo))
return r.json()[0].get("name")
def main():
for (owner, repo) in REPOS:
rev = get_latest_tag(repo, owner)
if repo == "fcitx5-qt":
if repo in QT_REPOS:
subprocess.run(["nix-update", "--commit", "--version", rev, "qt6Packages.{}".format(repo)])
else:
subprocess.run(["nix-update", "--commit", "--version", rev, repo])
+6 -6
View File
@@ -8034,15 +8034,15 @@ with pkgs;
dodgy = with python3Packages; toPythonApplication dodgy;
dovecot_2_3 = dovecot;
dovecot_2_4 = callPackage ../by-name/do/dovecot/2.4.nix {
dovecot_pigeonhole = dovecot_pigeonhole_2_4;
dovecot_2_3 = callPackage ../by-name/do/dovecot/2.3.nix {
dovecot_pigeonhole = dovecot_pigeonhole_0_5;
};
dovecot_2_4 = dovecot;
dovecot_pigeonhole_0_5 = dovecot_pigeonhole;
dovecot_pigeonhole_2_4 = callPackage ../by-name/do/dovecot_pigeonhole/2.4.nix {
dovecot = dovecot_2_4;
dovecot_pigeonhole_0_5 = callPackage ../by-name/do/dovecot_pigeonhole/0.5.nix {
dovecot = dovecot_2_3;
};
dovecot_pigeonhole_2_4 = dovecot_pigeonhole;
inherit (callPackages ../servers/firebird { })
firebird_4
+6
View File
@@ -3160,6 +3160,8 @@ self: super: with self; {
connect-box = callPackage ../development/python-modules/connect-box { };
connect-box3 = callPackage ../development/python-modules/connect-box3 { };
connected-components-3d = callPackage ../development/python-modules/connected-components-3d { };
connection-pool = callPackage ../development/python-modules/connection-pool { };
@@ -7106,6 +7108,8 @@ self: super: with self; {
callPackage ../development/python-modules/home-assistant-chip-wheels { }
);
home-assistant-datasets = callPackage ../development/python-modules/home-assistant-datasets { };
home-connect-async = callPackage ../development/python-modules/home-connect-async { };
homeassistant-stubs = callPackage ../servers/home-assistant/stubs.nix { };
@@ -18908,6 +18912,8 @@ self: super: with self; {
synology-srm = callPackage ../development/python-modules/synology-srm { };
synthetic-home = callPackage ../development/python-modules/synthetic-home { };
syrupy = callPackage ../development/python-modules/syrupy { };
syslog-rfc5424-formatter = callPackage ../development/python-modules/syslog-rfc5424-formatter { };
+1
View File
@@ -84,6 +84,7 @@ let
mesa = nativePlatforms;
rustc = nativePlatforms;
cargo = nativePlatforms;
fd = nativePlatforms;
};
gnuCommon = recursiveUpdate common {