Merge master into staging-next

This commit is contained in:
github-actions[bot] 2023-07-08 18:01:04 +00:00 committed by GitHub
commit e949ec41bd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
99 changed files with 4296 additions and 7568 deletions

View File

@ -11,6 +11,7 @@ let
{ name = "strings"; description = "string manipulation functions"; }
{ name = "versions"; description = "version string functions"; }
{ name = "trivial"; description = "miscellaneous functions"; }
{ name = "fixedPoints"; baseName = "fixed-points"; description = "explicit recursion functions"; }
{ name = "lists"; description = "list manipulation functions"; }
{ name = "debug"; description = "debugging functions"; }
{ name = "options"; description = "NixOS / nixpkgs option handling"; }

View File

@ -14,13 +14,16 @@ stdenv.mkDerivation {
buildInputs = [ nixdoc ];
installPhase = ''
function docgen {
# TODO: wrap lib.$1 in <literal>, make nixdoc not escape it
if [[ -e "../lib/$1.nix" ]]; then
nixdoc -c "$1" -d "lib.$1: $2" -l ${locationsJSON} -f "$1.nix" > "$out/$1.md"
name=$1
baseName=$2
description=$3
# TODO: wrap lib.$name in <literal>, make nixdoc not escape it
if [[ -e "../lib/$baseName.nix" ]]; then
nixdoc -c "$name" -d "lib.$name: $description" -l ${locationsJSON} -f "$baseName.nix" > "$out/$name.md"
else
nixdoc -c "$1" -d "lib.$1: $2" -l ${locationsJSON} -f "$1/default.nix" > "$out/$1.md"
nixdoc -c "$name" -d "lib.$name: $description" -l ${locationsJSON} -f "$baseName/default.nix" > "$out/$name.md"
fi
echo "$out/$1.md" >> "$out/index.md"
echo "$out/$name.md" >> "$out/index.md"
}
mkdir -p "$out"
@ -29,8 +32,8 @@ stdenv.mkDerivation {
```{=include=} sections
EOF
${lib.concatMapStrings ({ name, description }: ''
docgen ${name} ${lib.escapeShellArg description}
${lib.concatMapStrings ({ name, baseName ? name, description }: ''
docgen ${name} ${baseName} ${lib.escapeShellArg description}
'') libsets}
echo '```' >> "$out/index.md"

View File

@ -1,34 +1,49 @@
{ lib, ... }:
rec {
# Compute the fixed point of the given function `f`, which is usually an
# attribute set that expects its final, non-recursive representation as an
# argument:
#
# f = self: { foo = "foo"; bar = "bar"; foobar = self.foo + self.bar; }
#
# Nix evaluates this recursion until all references to `self` have been
# resolved. At that point, the final result is returned and `f x = x` holds:
#
# nix-repl> fix f
# { bar = "bar"; foo = "foo"; foobar = "foobar"; }
#
# Type: fix :: (a -> a) -> a
#
# See https://en.wikipedia.org/wiki/Fixed-point_combinator for further
# details.
/*
Compute the fixed point of the given function `f`, which is usually an
attribute set that expects its final, non-recursive representation as an
argument:
```
f = self: { foo = "foo"; bar = "bar"; foobar = self.foo + self.bar; }
```
Nix evaluates this recursion until all references to `self` have been
resolved. At that point, the final result is returned and `f x = x` holds:
```
nix-repl> fix f
{ bar = "bar"; foo = "foo"; foobar = "foobar"; }
```
Type: fix :: (a -> a) -> a
See https://en.wikipedia.org/wiki/Fixed-point_combinator for further
details.
*/
fix = f: let x = f x; in x;
# A variant of `fix` that records the original recursive attribute set in the
# result. This is useful in combination with the `extends` function to
# implement deep overriding. See pkgs/development/haskell-modules/default.nix
# for a concrete example.
/*
A variant of `fix` that records the original recursive attribute set in the
result, in an attribute named `__unfix__`.
This is useful in combination with the `extends` function to
implement deep overriding.
*/
fix' = f: let x = f x // { __unfix__ = f; }; in x;
# Return the fixpoint that `f` converges to when called recursively, starting
# with the input `x`.
#
# nix-repl> converge (x: x / 2) 16
# 0
/*
Return the fixpoint that `f` converges to when called iteratively, starting
with the input `x`.
```
nix-repl> converge (x: x / 2) 16
0
```
Type: (a -> a) -> a -> a
*/
converge = f: x:
let
x' = f x;
@ -37,75 +52,94 @@ rec {
then x
else converge f x';
# Modify the contents of an explicitly recursive attribute set in a way that
# honors `self`-references. This is accomplished with a function
#
# g = self: super: { foo = super.foo + " + "; }
#
# that has access to the unmodified input (`super`) as well as the final
# non-recursive representation of the attribute set (`self`). `extends`
# differs from the native `//` operator insofar as that it's applied *before*
# references to `self` are resolved:
#
# nix-repl> fix (extends g f)
# { bar = "bar"; foo = "foo + "; foobar = "foo + bar"; }
#
# The name of the function is inspired by object-oriented inheritance, i.e.
# think of it as an infix operator `g extends f` that mimics the syntax from
# Java. It may seem counter-intuitive to have the "base class" as the second
# argument, but it's nice this way if several uses of `extends` are cascaded.
#
# To get a better understanding how `extends` turns a function with a fix
# point (the package set we start with) into a new function with a different fix
# point (the desired packages set) lets just see, how `extends g f`
# unfolds with `g` and `f` defined above:
#
# extends g f = self: let super = f self; in super // g self super;
# = self: let super = { foo = "foo"; bar = "bar"; foobar = self.foo + self.bar; }; in super // g self super
# = self: { foo = "foo"; bar = "bar"; foobar = self.foo + self.bar; } // g self { foo = "foo"; bar = "bar"; foobar = self.foo + self.bar; }
# = self: { foo = "foo"; bar = "bar"; foobar = self.foo + self.bar; } // { foo = "foo" + " + "; }
# = self: { foo = "foo + "; bar = "bar"; foobar = self.foo + self.bar; }
#
/*
Modify the contents of an explicitly recursive attribute set in a way that
honors `self`-references. This is accomplished with a function
```nix
g = self: super: { foo = super.foo + " + "; }
```
that has access to the unmodified input (`super`) as well as the final
non-recursive representation of the attribute set (`self`). `extends`
differs from the native `//` operator insofar as that it's applied *before*
references to `self` are resolved:
```
nix-repl> fix (extends g f)
{ bar = "bar"; foo = "foo + "; foobar = "foo + bar"; }
```
The name of the function is inspired by object-oriented inheritance, i.e.
think of it as an infix operator `g extends f` that mimics the syntax from
Java. It may seem counter-intuitive to have the "base class" as the second
argument, but it's nice this way if several uses of `extends` are cascaded.
To get a better understanding how `extends` turns a function with a fix
point (the package set we start with) into a new function with a different fix
point (the desired packages set) lets just see, how `extends g f`
unfolds with `g` and `f` defined above:
```
extends g f = self: let super = f self; in super // g self super;
= self: let super = { foo = "foo"; bar = "bar"; foobar = self.foo + self.bar; }; in super // g self super
= self: { foo = "foo"; bar = "bar"; foobar = self.foo + self.bar; } // g self { foo = "foo"; bar = "bar"; foobar = self.foo + self.bar; }
= self: { foo = "foo"; bar = "bar"; foobar = self.foo + self.bar; } // { foo = "foo" + " + "; }
= self: { foo = "foo + "; bar = "bar"; foobar = self.foo + self.bar; }
```
*/
extends = f: rattrs: self: let super = rattrs self; in super // f self super;
# Compose two extending functions of the type expected by 'extends'
# into one where changes made in the first are available in the
# 'super' of the second
/*
Compose two extending functions of the type expected by 'extends'
into one where changes made in the first are available in the
'super' of the second
*/
composeExtensions =
f: g: final: prev:
let fApplied = f final prev;
prev' = prev // fApplied;
in fApplied // g final prev';
# Compose several extending functions of the type expected by 'extends' into
# one where changes made in preceding functions are made available to
# subsequent ones.
#
# composeManyExtensions : [packageSet -> packageSet -> packageSet] -> packageSet -> packageSet -> packageSet
# ^final ^prev ^overrides ^final ^prev ^overrides
/*
Compose several extending functions of the type expected by 'extends' into
one where changes made in preceding functions are made available to
subsequent ones.
```
composeManyExtensions : [packageSet -> packageSet -> packageSet] -> packageSet -> packageSet -> packageSet
^final ^prev ^overrides ^final ^prev ^overrides
```
*/
composeManyExtensions =
lib.foldr (x: y: composeExtensions x y) (final: prev: {});
# Create an overridable, recursive attribute set. For example:
#
# nix-repl> obj = makeExtensible (self: { })
#
# nix-repl> obj
# { __unfix__ = «lambda»; extend = «lambda»; }
#
# nix-repl> obj = obj.extend (self: super: { foo = "foo"; })
#
# nix-repl> obj
# { __unfix__ = «lambda»; extend = «lambda»; foo = "foo"; }
#
# nix-repl> obj = obj.extend (self: super: { foo = super.foo + " + "; bar = "bar"; foobar = self.foo + self.bar; })
#
# nix-repl> obj
# { __unfix__ = «lambda»; bar = "bar"; extend = «lambda»; foo = "foo + "; foobar = "foo + bar"; }
/*
Create an overridable, recursive attribute set. For example:
```
nix-repl> obj = makeExtensible (self: { })
nix-repl> obj
{ __unfix__ = «lambda»; extend = «lambda»; }
nix-repl> obj = obj.extend (self: super: { foo = "foo"; })
nix-repl> obj
{ __unfix__ = «lambda»; extend = «lambda»; foo = "foo"; }
nix-repl> obj = obj.extend (self: super: { foo = super.foo + " + "; bar = "bar"; foobar = self.foo + self.bar; })
nix-repl> obj
{ __unfix__ = «lambda»; bar = "bar"; extend = «lambda»; foo = "foo + "; foobar = "foo + bar"; }
```
*/
makeExtensible = makeExtensibleWithCustomName "extend";
# Same as `makeExtensible` but the name of the extending attribute is
# customized.
/*
Same as `makeExtensible` but the name of the extending attribute is
customized.
*/
makeExtensibleWithCustomName = extenderName: rattrs:
fix' (self: (rattrs self) // {
${extenderName} = f: makeExtensibleWithCustomName extenderName (extends f rattrs);

View File

@ -4,6 +4,8 @@
- FoundationDB now defaults to major version 7.
- Support for WiFi6 (IEEE 802.11ax) and WPA3-SAE-PK was enabled in the `hostapd` package, along with a significant rework of the hostapd module.
## New Services {#sec-release-23.11-new-services}
- [MCHPRS](https://github.com/MCHPR/MCHPRS), a multithreaded Minecraft server built for redstone. Available as [services.mchprs](#opt-services.mchprs.enable).
@ -24,12 +26,20 @@
## Backward Incompatibilities {#sec-release-23.11-incompatibilities}
- The `boot.loader.raspberryPi` options have been marked deprecated, with intent for removal for NixOS 24.11. They had a limited use-case, and do not work like people expect. They required either very old installs ([before mid-2019](https://github.com/NixOS/nixpkgs/pull/62462)) or customized builds out of scope of the standard and generic AArch64 support. That option set never supported the Raspberry Pi 4 family of devices.
- `python3.pkgs.sequoia` was removed in favor of `python3.pkgs.pysequoia`. The latter package is based on upstream's dedicated repository for sequoia's Python bindings, where the Python bindings from [gitlab:sequoia-pgp/sequoia](https://gitlab.com/sequoia-pgp/sequoia) were removed long ago.
- `writeTextFile` now requires `executable` to be boolean, values like `null` or `""` will now fail to evaluate.
- The latest version of `clonehero` now stores custom content in `~/.clonehero`. See the [migration instructions](https://clonehero.net/2022/11/29/v23-to-v1-migration-instructions.html). Typically, these content files would exist along side the binary, but the previous build used a wrapper script that would store them in `~/.config/unity3d/srylain Inc_/Clone Hero`.
- The `services.hostapd` module was rewritten to support `passwordFile` like options, WPA3-SAE, and management of multiple interfaces. This breaks compatibility with older configurations.
- `hostapd` is now started with additional systemd sandbox/hardening options for better security.
- `services.hostapd.interface` was replaced with a per-radio and per-bss configuration scheme using [services.hostapd.radios](#opt-services.hostapd.radios).
- `services.hostapd.wpa` has been replaced by [services.hostapd.radios.&lt;name&gt;.networks.&lt;name&gt;.authentication.wpaPassword](#opt-services.hostapd.radios._name_.networks._name_.authentication.wpaPassword) and [services.hostapd.radios.&lt;name&gt;.networks.&lt;name&gt;.authentication.saePasswords](#opt-services.hostapd.radios._name_.networks._name_.authentication.saePasswords) which configure WPA2-PSK and WP3-SAE respectively.
- The default authentication has been changed to WPA3-SAE. Options for other (legacy) schemes are still available.
- `python3.pkgs.fetchPypi` (and `python3Packages.fetchPypi`) has been deprecated in favor of top-level `fetchPypi`.
- `mariadb` now defaults to `mariadb_1011` instead of `mariadb_106`, meaning the default version was upgraded from 10.6.x to 10.11.x. See the [upgrade notes](https://mariadb.com/kb/en/upgrading-from-mariadb-10-6-to-mariadb-10-11/) for potential issues.
@ -50,6 +60,8 @@
- `util-linux` is now supported on Darwin and is no longer an alias to `unixtools`. Use the `unixtools.util-linux` package for access to the Apple variants of the utilities.
- `services.ddclient` has been removed on the request of the upstream maintainer because it is unmaintained and has bugs. Please switch to a different software like `inadyn` or `knsupdate`.
- The `vlock` program from the `kbd` package has been moved into its own package output and should now be referenced explicitly as `kbd.vlock` or replaced with an alternative such as the standalone `vlock` package or `physlock`.
- `fileSystems.<name>.autoFormat` now uses `systemd-makefs`, which does not accept formatting options. Therefore, `fileSystems.<name>.formatOptions` has been removed.

View File

@ -752,7 +752,13 @@ class Machine:
while not shell_ready(timeout_secs=30):
self.log("Guest root shell did not produce any data yet...")
self.log(self.shell.recv(1024).decode())
while True:
chunk = self.shell.recv(1024)
self.log(f"Guest shell says: {chunk!r}")
# NOTE: for this to work, nothing must be printed after this line!
if b"Spawning backdoor root shell..." in chunk:
break
toc = time.time()
self.log("connected to guest root shell")

View File

@ -66,6 +66,7 @@ with lib;
(builtins.map (l: (replaceStrings [ "utf8" "utf-8" "UTF8" ] [ "UTF-8" "UTF-8" "UTF-8" ] l) + "/UTF-8") (
[
"C.UTF-8"
"en_US.UTF-8"
config.i18n.defaultLocale
] ++ (attrValues (filterAttrs (n: v: n != "LANGUAGE") config.i18n.extraLocaleSettings))
))

View File

@ -69,7 +69,7 @@ in
#dialout = 27; # unused
polkituser = 28;
#utmp = 29; # unused
# ddclient = 30; # converted to DynamicUser = true
# ddclient = 30; # software removed
davfs2 = 31;
disnix = 33;
osgi = 34;
@ -394,7 +394,7 @@ in
dialout = 27;
#polkituser = 28; # currently unused, polkitd doesn't need a group
utmp = 29;
# ddclient = 30; # converted to DynamicUser = true
# ddclient = 30; # software removed
davfs2 = 31;
disnix = 33;
osgi = 34;

View File

@ -852,7 +852,6 @@
./services/networking/create_ap.nix
./services/networking/croc.nix
./services/networking/dante.nix
./services/networking/ddclient.nix
./services/networking/dhcpcd.nix
./services/networking/dhcpd.nix
./services/networking/dnscache.nix
@ -1341,6 +1340,7 @@
./services/x11/xbanish.nix
./services/x11/xfs.nix
./services/x11/xserver.nix
./system/activation/activatable-system.nix
./system/activation/activation-script.nix
./system/activation/specialisation.nix
./system/activation/bootspec.nix

View File

@ -54,6 +54,7 @@ in
(mkRemovedOptionModule [ "services" "chronos" ] "The corresponding package was removed from nixpkgs.")
(mkRemovedOptionModule [ "services" "couchpotato" ] "The corresponding package was removed from nixpkgs.")
(mkRemovedOptionModule [ "services" "dd-agent" ] "dd-agent was removed from nixpkgs in favor of the newer datadog-agent.")
(mkRemovedOptionModule [ "services" "ddclient" ] "ddclient has been removed on the request of the upstream maintainer because it is unmaintained and has bugs. Please switch to a different software like `inadyn` or `knsupdate`.") # Added 2023-07-04
(mkRemovedOptionModule [ "services" "dnscrypt-proxy" ] "Use services.dnscrypt-proxy2 instead")
(mkRemovedOptionModule [ "services" "exhibitor" ] "The corresponding package was removed from nixpkgs.")
(mkRemovedOptionModule [ "services" "firefox" "syncserver" ] "The corresponding package was removed from nixpkgs.")

View File

@ -1,234 +0,0 @@
{ config, pkgs, lib, ... }:
let
cfg = config.services.ddclient;
boolToStr = bool: if bool then "yes" else "no";
dataDir = "/var/lib/ddclient";
StateDirectory = builtins.baseNameOf dataDir;
RuntimeDirectory = StateDirectory;
configFile' = pkgs.writeText "ddclient.conf" ''
# This file can be used as a template for configFile or is automatically generated by Nix options.
cache=${dataDir}/ddclient.cache
foreground=YES
use=${cfg.use}
login=${cfg.username}
password=${if cfg.protocol == "nsupdate" then "/run/${RuntimeDirectory}/ddclient.key" else "@password_placeholder@"}
protocol=${cfg.protocol}
${lib.optionalString (cfg.script != "") "script=${cfg.script}"}
${lib.optionalString (cfg.server != "") "server=${cfg.server}"}
${lib.optionalString (cfg.zone != "") "zone=${cfg.zone}"}
ssl=${boolToStr cfg.ssl}
wildcard=YES
quiet=${boolToStr cfg.quiet}
verbose=${boolToStr cfg.verbose}
${cfg.extraConfig}
${lib.concatStringsSep "," cfg.domains}
'';
configFile = if (cfg.configFile != null) then cfg.configFile else configFile';
preStart = ''
install --mode=600 --owner=$USER ${configFile} /run/${RuntimeDirectory}/ddclient.conf
${lib.optionalString (cfg.configFile == null) (if (cfg.protocol == "nsupdate") then ''
install --mode=600 --owner=$USER ${cfg.passwordFile} /run/${RuntimeDirectory}/ddclient.key
'' else if (cfg.passwordFile != null) then ''
"${pkgs.replace-secret}/bin/replace-secret" "@password_placeholder@" "${cfg.passwordFile}" "/run/${RuntimeDirectory}/ddclient.conf"
'' else ''
sed -i '/^password=@password_placeholder@$/d' /run/${RuntimeDirectory}/ddclient.conf
'')}
'';
in
with lib;
{
imports = [
(mkChangedOptionModule [ "services" "ddclient" "domain" ] [ "services" "ddclient" "domains" ]
(config:
let value = getAttrFromPath [ "services" "ddclient" "domain" ] config;
in optional (value != "") value))
(mkRemovedOptionModule [ "services" "ddclient" "homeDir" ] "")
(mkRemovedOptionModule [ "services" "ddclient" "password" ] "Use services.ddclient.passwordFile instead.")
(mkRemovedOptionModule [ "services" "ddclient" "ipv6" ] "")
];
###### interface
options = {
services.ddclient = with lib.types; {
enable = mkOption {
default = false;
type = bool;
description = lib.mdDoc ''
Whether to synchronise your machine's IP address with a dynamic DNS provider (e.g. dyndns.org).
'';
};
package = mkOption {
type = package;
default = pkgs.ddclient;
defaultText = lib.literalExpression "pkgs.ddclient";
description = lib.mdDoc ''
The ddclient executable package run by the service.
'';
};
domains = mkOption {
default = [ "" ];
type = listOf str;
description = lib.mdDoc ''
Domain name(s) to synchronize.
'';
};
username = mkOption {
# For `nsupdate` username contains the path to the nsupdate executable
default = lib.optionalString (config.services.ddclient.protocol == "nsupdate") "${pkgs.bind.dnsutils}/bin/nsupdate";
defaultText = "";
type = str;
description = lib.mdDoc ''
User name.
'';
};
passwordFile = mkOption {
default = null;
type = nullOr str;
description = lib.mdDoc ''
A file containing the password or a TSIG key in named format when using the nsupdate protocol.
'';
};
interval = mkOption {
default = "10min";
type = str;
description = lib.mdDoc ''
The interval at which to run the check and update.
See {command}`man 7 systemd.time` for the format.
'';
};
configFile = mkOption {
default = null;
type = nullOr path;
description = lib.mdDoc ''
Path to configuration file.
When set this overrides the generated configuration from module options.
'';
example = "/root/nixos/secrets/ddclient.conf";
};
protocol = mkOption {
default = "dyndns2";
type = str;
description = lib.mdDoc ''
Protocol to use with dynamic DNS provider (see https://sourceforge.net/p/ddclient/wiki/protocols).
'';
};
server = mkOption {
default = "";
type = str;
description = lib.mdDoc ''
Server address.
'';
};
ssl = mkOption {
default = true;
type = bool;
description = lib.mdDoc ''
Whether to use SSL/TLS to connect to dynamic DNS provider.
'';
};
quiet = mkOption {
default = false;
type = bool;
description = lib.mdDoc ''
Print no messages for unnecessary updates.
'';
};
script = mkOption {
default = "";
type = str;
description = lib.mdDoc ''
script as required by some providers.
'';
};
use = mkOption {
default = "web, web=checkip.dyndns.com/, web-skip='Current IP Address: '";
type = str;
description = lib.mdDoc ''
Method to determine the IP address to send to the dynamic DNS provider.
'';
};
verbose = mkOption {
default = false;
type = bool;
description = lib.mdDoc ''
Print verbose information.
'';
};
zone = mkOption {
default = "";
type = str;
description = lib.mdDoc ''
zone as required by some providers.
'';
};
extraConfig = mkOption {
default = "";
type = lines;
description = lib.mdDoc ''
Extra configuration. Contents will be added verbatim to the configuration file.
::: {.note}
`daemon` should not be added here because it does not work great with the systemd-timer approach the service uses.
:::
'';
};
};
};
###### implementation
config = mkIf config.services.ddclient.enable {
systemd.services.ddclient = {
description = "Dynamic DNS Client";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
restartTriggers = optional (cfg.configFile != null) cfg.configFile;
path = lib.optional (lib.hasPrefix "if," cfg.use) pkgs.iproute2;
serviceConfig = {
DynamicUser = true;
RuntimeDirectoryMode = "0700";
inherit RuntimeDirectory;
inherit StateDirectory;
Type = "oneshot";
ExecStartPre = "!${pkgs.writeShellScript "ddclient-prestart" preStart}";
ExecStart = "${lib.getBin cfg.package}/bin/ddclient -file /run/${RuntimeDirectory}/ddclient.conf";
};
};
systemd.timers.ddclient = {
description = "Run ddclient";
wantedBy = [ "timers.target" ];
timerConfig = {
OnBootSec = cfg.interval;
OnUnitInactiveSec = cfg.interval;
};
};
};
}

File diff suppressed because it is too large Load Diff

View File

@ -238,9 +238,12 @@ in {
path = [ cfg.package ]
++ optional cfg.database.postgres.setup config.services.postgresql.package;
script = ''
export CONFIG_DIR=$CREDENTIALS_DIRECTORY
export RELEASE_COOKIE="$(< $CREDENTIALS_DIRECTORY/RELEASE_COOKIE )"
export ADMIN_USER_PWD="$(< $CREDENTIALS_DIRECTORY/ADMIN_USER_PWD )"
export SECRET_KEY_BASE="$(< $CREDENTIALS_DIRECTORY/SECRET_KEY_BASE )"
${lib.optionalString (cfg.mail.smtp.passwordFile != null)
''export SMTP_USER_PWD="$(< $CREDENTIALS_DIRECTORY/SMTP_USER_PWD )"''}
# setup
${cfg.package}/createdb.sh

View File

@ -27,6 +27,30 @@ let
Xft.hintstyle: ${fontconfig.hinting.style}
'';
# FIXME: this is an ugly hack.
# Some sessions (read: most WMs) don't activate systemd's `graphical-session.target`.
# Other sessions (read: most non-WMs) expect `graphical-session.target` to be reached
# when the entire session is actually ready. We used to just unconditionally force
# `graphical-session.target` to be activated in the session wrapper so things like
# xdg-autostart-generator work on sessions that are wrong, but this broke sessions
# that do things right. So, preserve this behavior (with some extra steps) by matching
# on XDG_CURRENT_DESKTOP and deliberately ignoring sessions we know can do the right thing.
fakeSession = action: ''
session_is_systemd_aware=$(
IFS=:
for i in $XDG_CURRENT_DESKTOP; do
case $i in
KDE|GNOME|X-NIXOS-SYSTEMD-AWARE) echo "1"; exit; ;;
*) ;;
esac
done
)
if [ -z "$session_is_systemd_aware" ]; then
/run/current-system/systemd/bin/systemctl --user ${action} nixos-fake-graphical-session.target
fi
'';
# file provided by services.xserver.displayManager.sessionData.wrapper
xsessionWrapper = pkgs.writeScript "xsession-wrapper"
''
@ -90,8 +114,7 @@ let
${cfg.displayManager.sessionCommands}
# Start systemd user services for graphical sessions
/run/current-system/systemd/bin/systemctl --user start graphical-session.target
${fakeSession "start"}
# Allow the user to setup a custom session type.
if test -x ~/.xsession; then
@ -417,10 +440,10 @@ in
"XDG_SESSION_ID"
];
systemd.user.targets.graphical-session = {
systemd.user.targets.nixos-fake-graphical-session = {
unitConfig = {
RefuseManualStart = false;
StopWhenUnneeded = false;
Description = "Fake graphical-session target for non-systemd-aware sessions";
BindsTo = "graphical-session.target";
};
};
@ -451,7 +474,7 @@ in
test -n "$waitPID" && wait "$waitPID"
/run/current-system/systemd/bin/systemctl --user stop graphical-session.target
${fakeSession "stop"}
exit 0
'';

View File

@ -0,0 +1,92 @@
{ config, lib, pkgs, ... }:
let
inherit (lib)
mkOption
optionalString
types
;
perlWrapped = pkgs.perl.withPackages (p: with p; [ ConfigIniFiles FileSlurp ]);
systemBuilderArgs = {
activationScript = config.system.activationScripts.script;
dryActivationScript = config.system.dryActivationScript;
};
systemBuilderCommands = ''
echo "$activationScript" > $out/activate
echo "$dryActivationScript" > $out/dry-activate
substituteInPlace $out/activate --subst-var-by out ''${!toplevelVar}
substituteInPlace $out/dry-activate --subst-var-by out ''${!toplevelVar}
chmod u+x $out/activate $out/dry-activate
unset activationScript dryActivationScript
mkdir $out/bin
substitute ${./switch-to-configuration.pl} $out/bin/switch-to-configuration \
--subst-var out \
--subst-var-by toplevel ''${!toplevelVar} \
--subst-var-by coreutils "${pkgs.coreutils}" \
--subst-var-by distroId ${lib.escapeShellArg config.system.nixos.distroId} \
--subst-var-by installBootLoader ${lib.escapeShellArg config.system.build.installBootLoader} \
--subst-var-by localeArchive "${config.i18n.glibcLocales}/lib/locale/locale-archive" \
--subst-var-by perl "${perlWrapped}" \
--subst-var-by shell "${pkgs.bash}/bin/sh" \
--subst-var-by su "${pkgs.shadow.su}/bin/su" \
--subst-var-by systemd "${config.systemd.package}" \
--subst-var-by utillinux "${pkgs.util-linux}" \
;
chmod +x $out/bin/switch-to-configuration
${optionalString (pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform) ''
if ! output=$(${perlWrapped}/bin/perl -c $out/bin/switch-to-configuration 2>&1); then
echo "switch-to-configuration syntax is not valid:"
echo "$output"
exit 1
fi
''}
'';
in
{
options = {
system.activatable = mkOption {
type = types.bool;
default = true;
description = ''
Whether to add the activation script to the system profile.
The default, to have the script available all the time, is what we normally
do, but for image based systems, this may not be needed or not be desirable.
'';
};
system.build.separateActivationScript = mkOption {
type = types.package;
description = ''
A separate activation script package that's not part of the system profile.
This is useful for configurations where `system.activatable` is `false`.
Otherwise, you can just use `system.build.toplevel`.
'';
};
};
config = {
system.systemBuilderCommands = lib.mkIf config.system.activatable systemBuilderCommands;
system.systemBuilderArgs = lib.mkIf config.system.activatable
(systemBuilderArgs // {
toplevelVar = "out";
});
system.build.separateActivationScript =
pkgs.runCommand
"separate-activation-script"
(systemBuilderArgs // {
toplevelVar = "toplevel";
toplevel = config.system.build.toplevel;
})
''
mkdir $out
${systemBuilderCommands}
'';
};
}

View File

@ -204,6 +204,27 @@ in
`/usr/bin/env`.
'';
};
system.build.installBootLoader = mkOption {
internal = true;
# "; true" => make the `$out` argument from switch-to-configuration.pl
# go to `true` instead of `echo`, hiding the useless path
# from the log.
default = "echo 'Warning: do not know how to make this configuration bootable; please enable a boot loader.' 1>&2; true";
description = lib.mdDoc ''
A program that writes a bootloader installation script to the path passed in the first command line argument.
See `nixos/modules/system/activation/switch-to-configuration.pl`.
'';
type = types.unique {
message = ''
Only one bootloader can be enabled at a time. This requirement has not
been checked until NixOS 22.05. Earlier versions defaulted to the last
definition. Change your configuration to enable only one bootloader.
'';
} (types.either types.str types.package);
};
};

View File

@ -31,8 +31,10 @@ use Cwd qw(abs_path);
## no critic(ValuesAndExpressions::ProhibitNoisyQuotes, ValuesAndExpressions::ProhibitMagicNumbers, ValuesAndExpressions::ProhibitEmptyQuotes, ValuesAndExpressions::ProhibitInterpolationOfLiterals)
## no critic(RegularExpressions::ProhibitEscapedMetacharacters)
# System closure path to switch to
# Location of activation scripts
my $out = "@out@";
# System closure path to switch to
my $toplevel = "@toplevel@";
# Path to the directory containing systemd tools of the old system
my $cur_systemd = abs_path("/run/current-system/sw/bin");
# Path to the systemd store path of the new system
@ -96,7 +98,7 @@ if ($action eq "switch" || $action eq "boot") {
chomp(my $install_boot_loader = <<'EOFBOOTLOADER');
@installBootLoader@
EOFBOOTLOADER
system("$install_boot_loader $out") == 0 or exit 1;
system("$install_boot_loader $toplevel") == 0 or exit 1;
}
# Just in case the new configuration hangs the system, do a sync now.
@ -110,7 +112,7 @@ if ($action eq "boot") {
# Check if we can activate the new configuration.
my $cur_init_interface_version = read_file("/run/current-system/init-interface-version", err_mode => "quiet") // "";
my $new_init_interface_version = read_file("$out/init-interface-version");
my $new_init_interface_version = read_file("$toplevel/init-interface-version");
if ($new_init_interface_version ne $cur_init_interface_version) {
print STDERR <<'EOF';
@ -477,7 +479,7 @@ sub handle_modified_unit { ## no critic(Subroutines::ProhibitManyArgs, Subroutin
$units_to_stop->{$socket} = 1;
# Only restart sockets that actually
# exist in new configuration:
if (-e "$out/etc/systemd/system/$socket") {
if (-e "$toplevel/etc/systemd/system/$socket") {
$units_to_start->{$socket} = 1;
if ($units_to_start eq $units_to_restart) {
record_unit($restart_list_file, $socket);
@ -539,13 +541,13 @@ while (my ($unit, $state) = each(%{$active_cur})) {
my $base_unit = $unit;
my $cur_unit_file = "/etc/systemd/system/$base_unit";
my $new_unit_file = "$out/etc/systemd/system/$base_unit";
my $new_unit_file = "$toplevel/etc/systemd/system/$base_unit";
# Detect template instances.
if (!-e $cur_unit_file && !-e $new_unit_file && $unit =~ /^(.*)@[^\.]*\.(.*)$/msx) {
$base_unit = "$1\@.$2";
$cur_unit_file = "/etc/systemd/system/$base_unit";
$new_unit_file = "$out/etc/systemd/system/$base_unit";
$new_unit_file = "$toplevel/etc/systemd/system/$base_unit";
}
my $base_name = $base_unit;
@ -626,7 +628,7 @@ sub path_to_unit_name {
# we generated units for all mounts; then we could unify this with the
# unit checking code above.
my ($cur_fss, $cur_swaps) = parse_fstab("/etc/fstab");
my ($new_fss, $new_swaps) = parse_fstab("$out/etc/fstab");
my ($new_fss, $new_swaps) = parse_fstab("$toplevel/etc/fstab");
foreach my $mount_point (keys(%{$cur_fss})) {
my $cur = $cur_fss->{$mount_point};
my $new = $new_fss->{$mount_point};
@ -670,7 +672,7 @@ foreach my $device (keys(%{$cur_swaps})) {
my $cur_pid1_path = abs_path("/proc/1/exe") // "/unknown";
my $cur_systemd_system_config = abs_path("/etc/systemd/system.conf") // "/unknown";
my $new_pid1_path = abs_path("$new_systemd/lib/systemd/systemd") or die;
my $new_systemd_system_config = abs_path("$out/etc/systemd/system.conf") // "/unknown";
my $new_systemd_system_config = abs_path("$toplevel/etc/systemd/system.conf") // "/unknown";
my $restart_systemd = $cur_pid1_path ne $new_pid1_path;
if ($cur_systemd_system_config ne $new_systemd_system_config) {
@ -709,12 +711,12 @@ if ($action eq "dry-activate") {
foreach (split(/\n/msx, read_file($dry_restart_by_activation_file, err_mode => "quiet") // "")) {
my $unit = $_;
my $base_unit = $unit;
my $new_unit_file = "$out/etc/systemd/system/$base_unit";
my $new_unit_file = "$toplevel/etc/systemd/system/$base_unit";
# Detect template instances.
if (!-e $new_unit_file && $unit =~ /^(.*)@[^\.]*\.(.*)$/msx) {
$base_unit = "$1\@.$2";
$new_unit_file = "$out/etc/systemd/system/$base_unit";
$new_unit_file = "$toplevel/etc/systemd/system/$base_unit";
}
my $base_name = $base_unit;
@ -757,7 +759,7 @@ if ($action eq "dry-activate") {
}
syslog(LOG_NOTICE, "switching to system configuration $out");
syslog(LOG_NOTICE, "switching to system configuration $toplevel");
if (scalar(keys(%units_to_stop)) > 0) {
if (scalar(@units_to_stop_filtered)) {
@ -781,12 +783,12 @@ system("$out/activate", "$out") == 0 or $res = 2;
foreach (split(/\n/msx, read_file($restart_by_activation_file, err_mode => "quiet") // "")) {
my $unit = $_;
my $base_unit = $unit;
my $new_unit_file = "$out/etc/systemd/system/$base_unit";
my $new_unit_file = "$toplevel/etc/systemd/system/$base_unit";
# Detect template instances.
if (!-e $new_unit_file && $unit =~ /^(.*)@[^\.]*\.(.*)$/msx) {
$base_unit = "$1\@.$2";
$new_unit_file = "$out/etc/systemd/system/$base_unit";
$new_unit_file = "$toplevel/etc/systemd/system/$base_unit";
}
my $base_name = $base_unit;
@ -857,7 +859,7 @@ if (scalar(keys(%units_to_reload)) > 0) {
for my $unit (keys(%units_to_reload)) {
if (!unit_is_active($unit)) {
# Figure out if we need to start the unit
my %unit_info = parse_unit("$out/etc/systemd/system/$unit");
my %unit_info = parse_unit("$toplevel/etc/systemd/system/$unit");
if (!(parse_systemd_bool(\%unit_info, "Unit", "RefuseManualStart", 0) || parse_systemd_bool(\%unit_info, "Unit", "X-OnlyManualStart", 0))) {
$units_to_start{$unit} = 1;
record_unit($start_list_file, $unit);
@ -940,9 +942,9 @@ if (scalar(@failed) > 0) {
}
if ($res == 0) {
syslog(LOG_NOTICE, "finished switching to system configuration $out");
syslog(LOG_NOTICE, "finished switching to system configuration $toplevel");
} else {
syslog(LOG_ERR, "switching to system configuration $out failed (status $res)");
syslog(LOG_ERR, "switching to system configuration $toplevel failed (status $res)");
}
exit($res);

View File

@ -36,13 +36,6 @@ let
ln -s ${config.hardware.firmware}/lib/firmware $out/firmware
''}
echo "$activationScript" > $out/activate
echo "$dryActivationScript" > $out/dry-activate
substituteInPlace $out/activate --subst-var out
substituteInPlace $out/dry-activate --subst-var out
chmod u+x $out/activate $out/dry-activate
unset activationScript dryActivationScript
${if config.boot.initrd.systemd.enable then ''
cp ${config.system.build.bootStage2} $out/prepare-root
substituteInPlace $out/prepare-root --subst-var-by systemConfig $out
@ -63,19 +56,6 @@ let
echo -n "$nixosLabel" > $out/nixos-version
echo -n "${config.boot.kernelPackages.stdenv.hostPlatform.system}" > $out/system
mkdir $out/bin
export localeArchive="${config.i18n.glibcLocales}/lib/locale/locale-archive"
export distroId=${config.system.nixos.distroId};
substituteAll ${./switch-to-configuration.pl} $out/bin/switch-to-configuration
chmod +x $out/bin/switch-to-configuration
${optionalString (pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform) ''
if ! output=$($perl/bin/perl -c $out/bin/switch-to-configuration 2>&1); then
echo "switch-to-configuration syntax is not valid:"
echo "$output"
exit 1
fi
''}
${config.system.systemBuilderCommands}
cp "$extraDependenciesPath" "$out/extra-dependencies"
@ -93,7 +73,7 @@ let
# symlinks to the various parts of the built configuration (the
# kernel, systemd units, init scripts, etc.) as well as a script
# `switch-to-configuration' that activates the configuration and
# makes it bootable.
# makes it bootable. See `activatable-system.nix`.
baseSystem = pkgs.stdenvNoCC.mkDerivation ({
name = "nixos-system-${config.system.name}-${config.system.nixos.label}";
preferLocalBuild = true;
@ -101,22 +81,12 @@ let
passAsFile = [ "extraDependencies" ];
buildCommand = systemBuilder;
inherit (pkgs) coreutils;
systemd = config.systemd.package;
shell = "${pkgs.bash}/bin/sh";
su = "${pkgs.shadow.su}/bin/su";
utillinux = pkgs.util-linux;
kernelParams = config.boot.kernelParams;
installBootLoader = config.system.build.installBootLoader;
activationScript = config.system.activationScripts.script;
dryActivationScript = config.system.dryActivationScript;
nixosLabel = config.system.nixos.label;
inherit (config.system) extraDependencies;
# Needed by switch-to-configuration.
perl = pkgs.perl.withPackages (p: with p; [ ConfigIniFiles FileSlurp ]);
} // config.system.systemBuilderArgs);
# Handle assertions and warnings
@ -178,26 +148,6 @@ in
};
system.build = {
installBootLoader = mkOption {
internal = true;
# "; true" => make the `$out` argument from switch-to-configuration.pl
# go to `true` instead of `echo`, hiding the useless path
# from the log.
default = "echo 'Warning: do not know how to make this configuration bootable; please enable a boot loader.' 1>&2; true";
description = lib.mdDoc ''
A program that writes a bootloader installation script to the path passed in the first command line argument.
See `nixos/modules/system/activation/switch-to-configuration.pl`.
'';
type = types.unique {
message = ''
Only one bootloader can be enabled at a time. This requirement has not
been checked until NixOS 22.05. Earlier versions defaulted to the last
definition. Change your configuration to enable only one bootloader.
'';
} (types.either types.str types.package);
};
toplevel = mkOption {
type = types.package;
readOnly = true;
@ -380,6 +330,16 @@ in
'';
system.systemBuilderArgs = {
# Legacy environment variables. These were used by the activation script,
# but some other script might still depend on them, although unlikely.
installBootLoader = config.system.build.installBootLoader;
localeArchive = "${config.i18n.glibcLocales}/lib/locale/locale-archive";
distroId = config.system.nixos.distroId;
perl = pkgs.perl.withPackages (p: with p; [ ConfigIniFiles FileSlurp ]);
# End if legacy environment variables
# Not actually used in the builder. `passedChecks` is just here to create
# the build dependencies. Checks are similar to build dependencies in the
# sense that if they fail, the system build fails. However, checks do not

View File

@ -52,6 +52,10 @@ in
Whether to create files with the system generations in
`/boot`.
`/boot/old` will hold files from old generations.
::: {.note}
These options are deprecated, unsupported, and may not work like expected.
:::
'';
};
@ -67,6 +71,10 @@ in
type = types.bool;
description = lib.mdDoc ''
Enable using uboot as bootmanager for the raspberry pi.
::: {.note}
These options are deprecated, unsupported, and may not work like expected.
:::
'';
};
@ -76,6 +84,10 @@ in
type = types.int;
description = lib.mdDoc ''
Maximum number of configurations in the boot menu.
::: {.note}
These options are deprecated, unsupported, and may not work like expected.
:::
'';
};
@ -87,19 +99,53 @@ in
description = lib.mdDoc ''
Extra options that will be appended to `/boot/config.txt` file.
For possible values, see: https://www.raspberrypi.com/documentation/computers/config_txt.html
::: {.note}
These options are deprecated, unsupported, and may not work like expected.
:::
'';
};
};
};
config = mkIf cfg.enable {
assertions = singleton {
assertion = !pkgs.stdenv.hostPlatform.isAarch64 || cfg.version >= 3;
message = "Only Raspberry Pi >= 3 supports aarch64.";
};
config = mkMerge[
(mkIf cfg.uboot.enable {
warnings = [
''
The option set for `boot.loader.raspberrypi.uboot` has been recommended against
for years, and is now formally deprecated.
system.build.installBootLoader = builder;
system.boot.loader.id = "raspberrypi";
system.boot.loader.kernelFile = pkgs.stdenv.hostPlatform.linux-kernel.target;
};
It is possible it already did not work like you expected.
It never worked on the Raspberry Pi 4 family.
These options will be removed by NixOS 24.11.
''
];
})
(mkIf cfg.enable {
warnings = [
''
The option set for `boot.loader.raspberrypi` has been recommended against
for years, and is now formally deprecated.
It is possible it already did not work like you expected.
It never worked on the Raspberry Pi 4 family.
These options will be removed by NixOS 24.11.
''
];
})
(mkIf cfg.enable {
assertions = singleton {
assertion = !pkgs.stdenv.hostPlatform.isAarch64 || cfg.version >= 3;
message = "Only Raspberry Pi >= 3 supports aarch64.";
};
system.build.installBootLoader = builder;
system.boot.loader.id = "raspberrypi";
system.boot.loader.kernelFile = pkgs.stdenv.hostPlatform.linux-kernel.target;
})
];
}

View File

@ -582,6 +582,7 @@ let
"VLAN"
"IPVLAN"
"MACVLAN"
"MACVTAP"
"VXLAN"
"Tunnel"
"MACsec"
@ -2504,6 +2505,15 @@ let
'';
};
macvtap = mkOption {
default = [ ];
type = types.listOf types.str;
description = lib.mdDoc ''
A list of macvtap interfaces to be added to the network section of the
unit. See {manpage}`systemd.network(5)` for details.
'';
};
vxlan = mkOption {
default = [ ];
type = types.listOf types.str;
@ -2619,6 +2629,238 @@ let
${attrsToSection def.dhcpV6Config}
''; };
networkToUnit = name: def:
{ inherit (def) enable;
text = commonMatchText def
+ optionalString (def.linkConfig != { }) ''
[Link]
${attrsToSection def.linkConfig}
''
+ ''
[Network]
''
+ attrsToSection def.networkConfig
+ optionalString (def.address != [ ]) ''
${concatStringsSep "\n" (map (s: "Address=${s}") def.address)}
''
+ optionalString (def.gateway != [ ]) ''
${concatStringsSep "\n" (map (s: "Gateway=${s}") def.gateway)}
''
+ optionalString (def.dns != [ ]) ''
${concatStringsSep "\n" (map (s: "DNS=${s}") def.dns)}
''
+ optionalString (def.ntp != [ ]) ''
${concatStringsSep "\n" (map (s: "NTP=${s}") def.ntp)}
''
+ optionalString (def.bridge != [ ]) ''
${concatStringsSep "\n" (map (s: "Bridge=${s}") def.bridge)}
''
+ optionalString (def.bond != [ ]) ''
${concatStringsSep "\n" (map (s: "Bond=${s}") def.bond)}
''
+ optionalString (def.vrf != [ ]) ''
${concatStringsSep "\n" (map (s: "VRF=${s}") def.vrf)}
''
+ optionalString (def.vlan != [ ]) ''
${concatStringsSep "\n" (map (s: "VLAN=${s}") def.vlan)}
''
+ optionalString (def.macvlan != [ ]) ''
${concatStringsSep "\n" (map (s: "MACVLAN=${s}") def.macvlan)}
''
+ optionalString (def.macvtap != [ ]) ''
${concatStringsSep "\n" (map (s: "MACVTAP=${s}") def.macvtap)}
''
+ optionalString (def.vxlan != [ ]) ''
${concatStringsSep "\n" (map (s: "VXLAN=${s}") def.vxlan)}
''
+ optionalString (def.tunnel != [ ]) ''
${concatStringsSep "\n" (map (s: "Tunnel=${s}") def.tunnel)}
''
+ optionalString (def.xfrm != [ ]) ''
${concatStringsSep "\n" (map (s: "Xfrm=${s}") def.xfrm)}
''
+ ''
''
+ flip concatMapStrings def.addresses (x: ''
[Address]
${attrsToSection x.addressConfig}
'')
+ flip concatMapStrings def.routingPolicyRules (x: ''
[RoutingPolicyRule]
${attrsToSection x.routingPolicyRuleConfig}
'')
+ flip concatMapStrings def.routes (x: ''
[Route]
${attrsToSection x.routeConfig}
'')
+ optionalString (def.dhcpV4Config != { }) ''
[DHCPv4]
${attrsToSection def.dhcpV4Config}
''
+ optionalString (def.dhcpV6Config != { }) ''
[DHCPv6]
${attrsToSection def.dhcpV6Config}
''
+ optionalString (def.dhcpPrefixDelegationConfig != { }) ''
[DHCPPrefixDelegation]
${attrsToSection def.dhcpPrefixDelegationConfig}
''
+ optionalString (def.ipv6AcceptRAConfig != { }) ''
[IPv6AcceptRA]
${attrsToSection def.ipv6AcceptRAConfig}
''
+ optionalString (def.dhcpServerConfig != { }) ''
[DHCPServer]
${attrsToSection def.dhcpServerConfig}
''
+ optionalString (def.ipv6SendRAConfig != { }) ''
[IPv6SendRA]
${attrsToSection def.ipv6SendRAConfig}
''
+ flip concatMapStrings def.ipv6Prefixes (x: ''
[IPv6Prefix]
${attrsToSection x.ipv6PrefixConfig}
'')
+ flip concatMapStrings def.ipv6RoutePrefixes (x: ''
[IPv6RoutePrefix]
${attrsToSection x.ipv6RoutePrefixConfig}
'')
+ flip concatMapStrings def.dhcpServerStaticLeases (x: ''
[DHCPServerStaticLease]
${attrsToSection x.dhcpServerStaticLeaseConfig}
'')
+ optionalString (def.bridgeConfig != { }) ''
[Bridge]
${attrsToSection def.bridgeConfig}
''
+ flip concatMapStrings def.bridgeFDBs (x: ''
[BridgeFDB]
${attrsToSection x.bridgeFDBConfig}
'')
+ flip concatMapStrings def.bridgeMDBs (x: ''
[BridgeMDB]
${attrsToSection x.bridgeMDBConfig}
'')
+ optionalString (def.lldpConfig != { }) ''
[LLDP]
${attrsToSection def.lldpConfig}
''
+ optionalString (def.canConfig != { }) ''
[CAN]
${attrsToSection def.canConfig}
''
+ optionalString (def.ipoIBConfig != { }) ''
[IPoIB]
${attrsToSection def.ipoIBConfig}
''
+ optionalString (def.qdiscConfig != { }) ''
[QDisc]
${attrsToSection def.qdiscConfig}
''
+ optionalString (def.networkEmulatorConfig != { }) ''
[NetworkEmulator]
${attrsToSection def.networkEmulatorConfig}
''
+ optionalString (def.tokenBucketFilterConfig != { }) ''
[TokenBucketFilter]
${attrsToSection def.tokenBucketFilterConfig}
''
+ optionalString (def.pieConfig != { }) ''
[PIE]
${attrsToSection def.pieConfig}
''
+ optionalString (def.flowQueuePIEConfig != { }) ''
[FlowQueuePIE]
${attrsToSection def.flowQueuePIEConfig}
''
+ optionalString (def.stochasticFairBlueConfig != { }) ''
[StochasticFairBlue]
${attrsToSection def.stochasticFairBlueConfig}
''
+ optionalString (def.stochasticFairnessQueueingConfig != { }) ''
[StochasticFairnessQueueing]
${attrsToSection def.stochasticFairnessQueueingConfig}
''
+ optionalString (def.bfifoConfig != { }) ''
[BFIFO]
${attrsToSection def.bfifoConfig}
''
+ optionalString (def.pfifoConfig != { }) ''
[PFIFO]
${attrsToSection def.pfifoConfig}
''
+ optionalString (def.pfifoHeadDropConfig != { }) ''
[PFIFOHeadDrop]
${attrsToSection def.pfifoHeadDropConfig}
''
+ optionalString (def.pfifoFastConfig != { }) ''
[PFIFOFast]
${attrsToSection def.pfifoFastConfig}
''
+ optionalString (def.cakeConfig != { }) ''
[CAKE]
${attrsToSection def.cakeConfig}
''
+ optionalString (def.controlledDelayConfig != { }) ''
[ControlledDelay]
${attrsToSection def.controlledDelayConfig}
''
+ optionalString (def.deficitRoundRobinSchedulerConfig != { }) ''
[DeficitRoundRobinScheduler]
${attrsToSection def.deficitRoundRobinSchedulerConfig}
''
+ optionalString (def.deficitRoundRobinSchedulerClassConfig != { }) ''
[DeficitRoundRobinSchedulerClass]
${attrsToSection def.deficitRoundRobinSchedulerClassConfig}
''
+ optionalString (def.enhancedTransmissionSelectionConfig != { }) ''
[EnhancedTransmissionSelection]
${attrsToSection def.enhancedTransmissionSelectionConfig}
''
+ optionalString (def.genericRandomEarlyDetectionConfig != { }) ''
[GenericRandomEarlyDetection]
${attrsToSection def.genericRandomEarlyDetectionConfig}
''
+ optionalString (def.fairQueueingControlledDelayConfig != { }) ''
[FairQueueingControlledDelay]
${attrsToSection def.fairQueueingControlledDelayConfig}
''
+ optionalString (def.fairQueueingConfig != { }) ''
[FairQueueing]
${attrsToSection def.fairQueueingConfig}
''
+ optionalString (def.trivialLinkEqualizerConfig != { }) ''
[TrivialLinkEqualizer]
${attrsToSection def.trivialLinkEqualizerConfig}
''
+ optionalString (def.hierarchyTokenBucketConfig != { }) ''
[HierarchyTokenBucket]
${attrsToSection def.hierarchyTokenBucketConfig}
''
+ optionalString (def.hierarchyTokenBucketClassConfig != { }) ''
[HierarchyTokenBucketClass]
${attrsToSection def.hierarchyTokenBucketClassConfig}
''
+ optionalString (def.heavyHitterFilterConfig != { }) ''
[HeavyHitterFilter]
${attrsToSection def.heavyHitterFilterConfig}
''
+ optionalString (def.quickFairQueueingConfig != { }) ''
[QuickFairQueueing]
${attrsToSection def.quickFairQueueingConfig}
''
+ optionalString (def.quickFairQueueingConfigClass != { }) ''
[QuickFairQueueingClass]
${attrsToSection def.quickFairQueueingConfigClass}
''
+ flip concatMapStrings def.bridgeVLANs (x: ''
[BridgeVLAN]
${attrsToSection x.bridgeVLANConfig}
'')
+ def.extraConfig;
};
mkUnitFiles = prefix: cfg: listToAttrs (map (name: {
name = "${prefix}systemd/network/${name}";
value.source = "${cfg.units.${name}.unit}/${name}";

View File

@ -323,6 +323,30 @@ in
Defaults to 0, which waits forever.
'';
};
removeLinuxDRM = lib.mkOption {
type = types.bool;
default = false;
description = lib.mdDoc ''
Linux 6.2 dropped some kernel symbols required on aarch64 required by zfs.
Enabling this option will bring them back to allow this kernel version.
Note that in some jurisdictions this may be illegal as it might be considered
removing copyright protection from the code.
See https://www.ifross.org/?q=en/artikel/ongoing-dispute-over-value-exportsymbolgpl-function for further information.
If configure your kernel package with `zfs.latestCompatibleLinuxPackages`, you will need to also pass removeLinuxDRM to that package like this:
```
{ pkgs, ... }: {
boot.kernelPackages = (pkgs.zfs.override {
removeLinuxDRM = pkgs.hostPlatform.isAarch64;
}).latestCompatibleLinuxPackages;
boot.zfs.removeLinuxDRM = true;
}
```
'';
};
};
services.zfs.autoSnapshot = {
@ -541,11 +565,13 @@ in
# https://github.com/NixOS/nixpkgs/issues/106093
kernelParams = lib.optionals (!config.boot.zfs.allowHibernation) [ "nohibernate" ];
extraModulePackages = [
(if config.boot.zfs.enableUnstable then
extraModulePackages = let
kernelPkg = if config.boot.zfs.enableUnstable then
config.boot.kernelPackages.zfsUnstable
else
config.boot.kernelPackages.zfs)
config.boot.kernelPackages.zfs;
in [
(kernelPkg.override { inherit (cfgZfs) removeLinuxDRM; })
];
};
@ -663,6 +689,21 @@ in
services.udev.packages = [ cfgZfs.package ]; # to hook zvol naming, etc.
systemd.packages = [ cfgZfs.package ];
# Export kernel_neon_* symbols again.
# This change is necessary until ZFS figures out a solution
# with upstream or in their build system to fill the gap for
# this symbol.
# In the meantime, we restore what was once a working piece of code
# in the kernel.
boot.kernelPatches = lib.optional (cfgZfs.removeLinuxDRM && pkgs.stdenv.hostPlatform.system == "aarch64-linux") {
name = "export-neon-symbols-as-gpl";
patch = pkgs.fetchpatch {
url = "https://github.com/torvalds/linux/commit/aaeca98456431a8d9382ecf48ac4843e252c07b3.patch";
hash = "sha256-L2g4G1tlWPIi/QRckMuHDcdWBcKpObSWSRTvbHRIwIk=";
revert = true;
};
};
systemd.services = let
createImportService' = pool: createImportService {
inherit pool;

View File

@ -70,6 +70,19 @@ in {
};
};
simpleServiceSeparateActivationScript.configuration = {
system.activatable = false;
systemd.services.test = {
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
ExecStart = "${pkgs.coreutils}/bin/true";
ExecReload = "${pkgs.coreutils}/bin/true";
};
};
};
simpleServiceDifferentDescription.configuration = {
imports = [ simpleService.configuration ];
systemd.services.test.description = "Test unit";
@ -482,9 +495,9 @@ in {
};
testScript = { nodes, ... }: let
originalSystem = nodes.machine.config.system.build.toplevel;
otherSystem = nodes.other.config.system.build.toplevel;
machine = nodes.machine.config.system.build.toplevel;
originalSystem = nodes.machine.system.build.toplevel;
otherSystem = nodes.other.system.build.toplevel;
machine = nodes.machine.system.build.toplevel;
# Ensures failures pass through using pipefail, otherwise failing to
# switch-to-configuration is hidden by the success of `tee`.
@ -497,11 +510,15 @@ in {
in /* python */ ''
def switch_to_specialisation(system, name, action="test", fail=False):
if name == "":
stc = f"{system}/bin/switch-to-configuration"
switcher = f"{system}/bin/switch-to-configuration"
else:
stc = f"{system}/specialisation/{name}/bin/switch-to-configuration"
out = machine.fail(f"{stc} {action} 2>&1") if fail \
else machine.succeed(f"{stc} {action} 2>&1")
switcher = f"{system}/specialisation/{name}/bin/switch-to-configuration"
return run_switch(switcher, action, fail)
# like above but stc = switcher
def run_switch(switcher, action="test", fail=False):
out = machine.fail(f"{switcher} {action} 2>&1") if fail \
else machine.succeed(f"{switcher} {action} 2>&1")
assert_lacks(out, "switch-to-configuration line") # Perl warnings
return out
@ -639,6 +656,22 @@ in {
assert_lacks(out, "the following new units were started:")
assert_contains(out, "would start the following units: test.service\n")
out = switch_to_specialisation("${machine}", "", action="test")
# Ensure the service can be started when the activation script isn't in toplevel
# This is a lot like "Start a simple service", except activation-only deps could be gc-ed
out = run_switch("${nodes.machine.specialisation.simpleServiceSeparateActivationScript.configuration.system.build.separateActivationScript}/bin/switch-to-configuration");
assert_lacks(out, "installing dummy bootloader") # test does not install a bootloader
assert_lacks(out, "stopping the following units:")
assert_lacks(out, "NOT restarting the following changed units:")
assert_contains(out, "reloading the following units: dbus.service\n") # huh
assert_lacks(out, "\nrestarting the following units:")
assert_lacks(out, "\nstarting the following units:")
assert_contains(out, "the following new units were started: test.service\n")
machine.succeed("! test -e /run/current-system/activate")
machine.succeed("! test -e /run/current-system/dry-activate")
machine.succeed("! test -e /run/current-system/bin/switch-to-configuration")
# Ensure \ works in unit names
out = switch_to_specialisation("${machine}", "unitWithBackslash")
assert_contains(out, "stopping the following units: test.service\n")

View File

@ -2,63 +2,159 @@ import ./make-test-python.nix ({ pkgs, lib, ...}:
{
name = "wpa_supplicant";
meta = with lib.maintainers; {
maintainers = [ rnhmjoj ];
maintainers = [ oddlama rnhmjoj ];
};
nodes.machine = { ... }: {
imports = [ ../modules/profiles/minimal.nix ];
nodes = let
machineWithHostapd = extraConfigModule: { ... }: {
imports = [
../modules/profiles/minimal.nix
extraConfigModule
];
# add a virtual wlan interface
boot.kernelModules = [ "mac80211_hwsim" ];
# add a virtual wlan interface
boot.kernelModules = [ "mac80211_hwsim" ];
# wireless access point
services.hostapd = {
enable = true;
wpa = true;
interface = "wlan0";
ssid = "nixos-test";
wpaPassphrase = "reproducibility";
};
# wireless client
networking.wireless = {
# the override is needed because the wifi is
# disabled with mkVMOverride in qemu-vm.nix.
enable = lib.mkOverride 0 true;
userControlled.enable = true;
interfaces = [ "wlan1" ];
fallbackToWPA2 = true;
networks = {
# test WPA2 fallback
mixed-wpa = {
psk = "password";
authProtocols = [ "WPA-PSK" "SAE" ];
# wireless access point
services.hostapd = {
enable = true;
radios.wlan0 = {
band = "2g";
countryCode = "US";
networks = {
wlan0 = {
ssid = "nixos-test-sae";
authentication = {
mode = "wpa3-sae";
saePasswords = [ { password = "reproducibility"; } ];
};
bssid = "02:00:00:00:00:00";
};
wlan0-1 = {
ssid = "nixos-test-mixed";
authentication = {
mode = "wpa3-sae-transition";
saePasswordsFile = pkgs.writeText "password" "reproducibility";
wpaPasswordFile = pkgs.writeText "password" "reproducibility";
};
bssid = "02:00:00:00:00:01";
};
wlan0-2 = {
ssid = "nixos-test-wpa2";
authentication = {
mode = "wpa2-sha256";
wpaPassword = "reproducibility";
};
bssid = "02:00:00:00:00:02";
};
};
};
sae-only = {
psk = "password";
authProtocols = [ "SAE" ];
};
# test network
nixos-test.psk = "@PSK_NIXOS_TEST@";
# secrets substitution test cases
test1.psk = "@PSK_VALID@"; # should be replaced
test2.psk = "@PSK_SPECIAL@"; # should be replaced
test3.psk = "@PSK_MISSING@"; # should not be replaced
test4.psk = "P@ssowrdWithSome@tSymbol"; # should not be replaced
};
# secrets
environmentFile = pkgs.writeText "wpa-secrets" ''
PSK_NIXOS_TEST="reproducibility"
PSK_VALID="S0m3BadP4ssw0rd";
# taken from https://github.com/minimaxir/big-list-of-naughty-strings
PSK_SPECIAL=",./;'[]\-= <>?:\"{}|_+ !@#$%^\&*()`~";
'';
# wireless client
networking.wireless = {
# the override is needed because the wifi is
# disabled with mkVMOverride in qemu-vm.nix.
enable = lib.mkOverride 0 true;
userControlled.enable = true;
interfaces = [ "wlan1" ];
fallbackToWPA2 = lib.mkDefault true;
# networks will be added on-demand below for the specific
# network that should be tested
# secrets
environmentFile = pkgs.writeText "wpa-secrets" ''
PSK_NIXOS_TEST="reproducibility"
'';
};
};
in {
basic = { ... }: {
imports = [ ../modules/profiles/minimal.nix ];
# add a virtual wlan interface
boot.kernelModules = [ "mac80211_hwsim" ];
# wireless client
networking.wireless = {
# the override is needed because the wifi is
# disabled with mkVMOverride in qemu-vm.nix.
enable = lib.mkOverride 0 true;
userControlled.enable = true;
interfaces = [ "wlan1" ];
fallbackToWPA2 = true;
networks = {
# test WPA2 fallback
mixed-wpa = {
psk = "password";
authProtocols = [ "WPA-PSK" "SAE" ];
};
sae-only = {
psk = "password";
authProtocols = [ "SAE" ];
};
# secrets substitution test cases
test1.psk = "@PSK_VALID@"; # should be replaced
test2.psk = "@PSK_SPECIAL@"; # should be replaced
test3.psk = "@PSK_MISSING@"; # should not be replaced
test4.psk = "P@ssowrdWithSome@tSymbol"; # should not be replaced
};
# secrets
environmentFile = pkgs.writeText "wpa-secrets" ''
PSK_VALID="S0m3BadP4ssw0rd";
# taken from https://github.com/minimaxir/big-list-of-naughty-strings
PSK_SPECIAL=",./;'[]\-= <>?:\"{}|_+ !@#$%^\&*()`~";
'';
};
};
# Test connecting to the SAE-only hotspot using SAE
machineSae = machineWithHostapd {
networking.wireless = {
fallbackToWPA2 = false;
networks.nixos-test-sae = {
psk = "@PSK_NIXOS_TEST@";
authProtocols = [ "SAE" ];
};
};
};
# Test connecting to the SAE and WPA2 mixed hotspot using SAE
machineMixedUsingSae = machineWithHostapd {
networking.wireless = {
fallbackToWPA2 = false;
networks.nixos-test-mixed = {
psk = "@PSK_NIXOS_TEST@";
authProtocols = [ "SAE" ];
};
};
};
# Test connecting to the SAE and WPA2 mixed hotspot using WPA2
machineMixedUsingWpa2 = machineWithHostapd {
networking.wireless = {
fallbackToWPA2 = true;
networks.nixos-test-mixed = {
psk = "@PSK_NIXOS_TEST@";
authProtocols = [ "WPA-PSK-SHA256" ];
};
};
};
# Test connecting to the WPA2 legacy hotspot using WPA2
machineWpa2 = machineWithHostapd {
networking.wireless = {
fallbackToWPA2 = true;
networks.nixos-test-wpa2 = {
psk = "@PSK_NIXOS_TEST@";
authProtocols = [ "WPA-PSK-SHA256" ];
};
};
};
};
testScript =
@ -66,30 +162,47 @@ import ./make-test-python.nix ({ pkgs, lib, ...}:
config_file = "/run/wpa_supplicant/wpa_supplicant.conf"
with subtest("Configuration file is inaccessible to other users"):
machine.wait_for_file(config_file)
machine.fail(f"sudo -u nobody ls {config_file}")
basic.wait_for_file(config_file)
basic.fail(f"sudo -u nobody ls {config_file}")
with subtest("Secrets variables have been substituted"):
machine.fail(f"grep -q @PSK_VALID@ {config_file}")
machine.fail(f"grep -q @PSK_SPECIAL@ {config_file}")
machine.succeed(f"grep -q @PSK_MISSING@ {config_file}")
machine.succeed(f"grep -q P@ssowrdWithSome@tSymbol {config_file}")
basic.fail(f"grep -q @PSK_VALID@ {config_file}")
basic.fail(f"grep -q @PSK_SPECIAL@ {config_file}")
basic.succeed(f"grep -q @PSK_MISSING@ {config_file}")
basic.succeed(f"grep -q P@ssowrdWithSome@tSymbol {config_file}")
with subtest("WPA2 fallbacks have been generated"):
assert int(machine.succeed(f"grep -c sae-only {config_file}")) == 1
assert int(machine.succeed(f"grep -c mixed-wpa {config_file}")) == 2
assert int(basic.succeed(f"grep -c sae-only {config_file}")) == 1
assert int(basic.succeed(f"grep -c mixed-wpa {config_file}")) == 2
# save file for manual inspection
machine.copy_from_vm(config_file)
basic.copy_from_vm(config_file)
with subtest("Daemon is running and accepting connections"):
machine.wait_for_unit("wpa_supplicant-wlan1.service")
status = machine.succeed("wpa_cli -i wlan1 status")
basic.wait_for_unit("wpa_supplicant-wlan1.service")
status = basic.succeed("wpa_cli -i wlan1 status")
assert "Failed to connect" not in status, \
"Failed to connect to the daemon"
with subtest("Daemon can connect to the access point"):
machine.wait_until_succeeds(
machineSae.wait_for_unit("hostapd.service")
machineSae.copy_from_vm("/run/hostapd/wlan0.hostapd.conf")
with subtest("Daemon can connect to the SAE access point using SAE"):
machineSae.wait_until_succeeds(
"wpa_cli -i wlan1 status | grep -q wpa_state=COMPLETED"
)
with subtest("Daemon can connect to the SAE and WPA2 mixed access point using SAE"):
machineMixedUsingSae.wait_until_succeeds(
"wpa_cli -i wlan1 status | grep -q wpa_state=COMPLETED"
)
with subtest("Daemon can connect to the SAE and WPA2 mixed access point using WPA2"):
machineMixedUsingWpa2.wait_until_succeeds(
"wpa_cli -i wlan1 status | grep -q wpa_state=COMPLETED"
)
with subtest("Daemon can connect to the WPA2 access point using WPA2"):
machineWpa2.wait_until_succeeds(
"wpa_cli -i wlan1 status | grep -q wpa_state=COMPLETED"
)
'';

View File

@ -12,12 +12,12 @@ let
if extension == "zip" then fetchzip args else fetchurl args;
pname = "1password-cli";
version = "2.18.0";
version = "2.19.0";
sources = rec {
aarch64-linux = fetch "linux_arm64" "sha256-BmYGx4DI/Hvj9hBBZo5iprQeUgMNqEkESDjYcOVAt4Q=" "zip";
i686-linux = fetch "linux_386" "sha256-KpacioVLSPju9iW7B/yVCS66CZTwCTVAjxoaeBscJe8=" "zip";
x86_64-linux = fetch "linux_amd64" "sha256-p4wztBVQ2x2RrODJhX3z72QQtF8mnvqk3wT72hiPE3o=" "zip";
aarch64-darwin = fetch "apple_universal" "sha256-GfmTx4WS5oGgXXWqlA4bEmQJyFTu/bZnoEhIfZpfqpg=" "pkg";
aarch64-linux = fetch "linux_arm64" "sha256-z5+zCYYJxtzehBeilSWH/nPEOh8rXpwJDVL+SDansmY=" "zip";
i686-linux = fetch "linux_386" "sha256-UGPWk0I/nCaqWWz/rwG/TSDie0/tarKroGi+7Ge7kE4=" "zip";
x86_64-linux = fetch "linux_amd64" "sha256-rSZM0GuroSqVokhkjPtk3+2+C9w5/Tkh2cvB+kShyHY=" "zip";
aarch64-darwin = fetch "apple_universal" "sha256-3zVD8LUdxhzroLlnQCiCVELEQMPmCriRff85ZlfgSKI=" "pkg";
x86_64-darwin = aarch64-darwin;
};
platforms = builtins.attrNames sources;

View File

@ -1,6 +1,7 @@
{ lib
, buildGoModule
, fetchFromGitHub
, installShellFiles
}:
buildGoModule rec {
@ -20,6 +21,15 @@ buildGoModule rec {
"-s" "-w" "-X github.com/tomwright/dasel/v2/internal.Version=${version}"
];
nativeBuildInputs = [ installShellFiles ];
postInstall = ''
installShellCompletion --cmd dasel \
--bash <($out/bin/dasel completion bash) \
--fish <($out/bin/dasel completion fish) \
--zsh <($out/bin/dasel completion zsh)
'';
doInstallCheck = true;
installCheckPhase = ''
runHook preInstallCheck

View File

@ -2,14 +2,14 @@
rustPlatform.buildRustPackage rec {
pname = "sigi";
version = "3.6.0";
version = "3.6.1";
src = fetchCrate {
inherit pname version;
sha256 = "sha256-VhBrSepJdwJRu+AqXWUzdDO4ukJPeoZr07B/X8Jr/RA=";
sha256 = "sha256-UL4V/5XvqaqO4R2ievw379D/rzHf/ITgvG3BcSbMeTQ=";
};
cargoSha256 = "sha256-R1U0ZYQMA1VFd5zEjFzl5QhwqqEMaCFb/5H509IBj60=";
cargoSha256 = "sha256-wzTUK4AvJmBK7LX7CLCAeAXLDxMJA/3qs/KT1+pMaoI=";
nativeBuildInputs = [ installShellFiles ];
# In case anything goes wrong.

View File

@ -2,16 +2,16 @@
buildGoModule rec {
pname = "civo";
version = "1.0.57";
version = "1.0.58";
src = fetchFromGitHub {
owner = "civo";
repo = "cli";
rev = "v${version}";
sha256 = "sha256-cG/JNZalIzhXyBH7OaiK4fedCQ05EvPUZFon5ajjOCE=";
sha256 = "sha256-beIIWwG8zawbOhZm8Xa3MAWPMbGi5PJYSeA/msb6FT4=";
};
vendorHash = "sha256-FL6zVyDkVxHZSrnL/7M4yqgl+oqVz/ekIfmrwWrMvk8=";
vendorHash = "sha256-2j0EjMH7QiDnXB1quEM6/hznt7oOpznasuIRod5LGA4=";
nativeBuildInputs = [ installShellFiles ];

View File

@ -1,9 +1,9 @@
{ lib, buildGoModule, fetchFromGitHub, fetchzip, installShellFiles, stdenv }:
let
version = "2.0.0-rc.5";
sha256 = "1akxmnbldsm7h4wf40jxsn56njdd5srkr6a3gsi223anl9c43gpx";
manifestsSha256 = "1vra1vqw38r17fdkcj5a5rmifpdzi29z5qggzy4h9bqsqhxy488f";
version = "2.0.0";
sha256 = "1iqwdbn7kcrg1dh0zh75zk3gwjsxjisdrzxywjfkm9jcvb6ygs7m";
manifestsSha256 = "1kyzgifvisykcj1hikbk7z9xwi5gj4pa19ngbkv7fcgv45clbj6s";
manifests = fetchzip {
url =
@ -23,7 +23,7 @@ in buildGoModule rec {
inherit sha256;
};
vendorSha256 = "sha256-kw1V2eFoqrTB+1dBQYqOopr7+AMY1OB80vM8UN4rsso=";
vendorSha256 = "sha256-OH1Kn+VZARqQ1L26zdjEOYseMT9fY+QVDhN+F+h6GZw=";
postUnpack = ''
cp -r ${manifests} source/cmd/flux/manifests

View File

@ -1,10 +1,10 @@
{
traefik-crd = {
url = "https://k3s.io/k3s-charts/assets/traefik-crd/traefik-crd-20.3.1+up20.3.0.tgz";
sha256 = "1775vjldvqvhzdbzanxhbaqbmkih09yb91im651q8bc7z5sb9ckn";
url = "https://k3s.io/k3s-charts/assets/traefik-crd/traefik-crd-21.2.1+up21.2.0.tgz";
sha256 = "05j3vyikb7g2z2i07rij9h4ki5lb2hb2rynpiqfd4l1y5qm0qhw9";
};
traefik = {
url = "https://k3s.io/k3s-charts/assets/traefik/traefik-20.3.1+up20.3.0.tgz";
sha256 = "1rj0f0n0vgjcbzfwzhqmsd501i2f6vw145w9plbp8gwdyzmg2nc6";
url = "https://k3s.io/k3s-charts/assets/traefik/traefik-21.2.1+up21.2.0.tgz";
sha256 = "0gvz0yzph2893scd0q10b938yc7f36b3zqs57pkjgqqpl1d0nwhg";
};
}

View File

@ -1,123 +0,0 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl gnugrep gnused jq yq-go nix-prefetch
set -x -eu -o pipefail
WORKDIR=$(mktemp -d)
trap "rm -rf ${WORKDIR}" EXIT
NIXPKGS_ROOT="$(git rev-parse --show-toplevel)"/
NIXPKGS_K3S_PATH=$(cd $(dirname ${BASH_SOURCE[0]}); pwd -P)/
cd ${NIXPKGS_K3S_PATH}
LATEST_TAG_RAWFILE=${WORKDIR}/latest_tag.json
curl --silent -f ${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} \
https://api.github.com/repos/k3s-io/k3s/releases > ${LATEST_TAG_RAWFILE}
LATEST_TAG_NAME=$(jq 'map(.tag_name)' ${LATEST_TAG_RAWFILE} | \
grep -v -e rc -e engine | tail -n +2 | head -n -1 | sed 's|[", ]||g' | sort -rV | head -n1)
K3S_VERSION=$(echo ${LATEST_TAG_NAME} | sed 's/^v//')
K3S_COMMIT=$(curl --silent -f ${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} \
https://api.github.com/repos/k3s-io/k3s/tags \
| jq -r "map(select(.name == \"${LATEST_TAG_NAME}\")) | .[0] | .commit.sha")
K3S_REPO_SHA256=$(nix-prefetch-url --quiet --unpack https://github.com/k3s-io/k3s/archive/refs/tags/${LATEST_TAG_NAME}.tar.gz)
FILE_SCRIPTS_DOWNLOAD=${WORKDIR}/scripts-download
curl --silent -f https://raw.githubusercontent.com/k3s-io/k3s/${K3S_COMMIT}/scripts/download > $FILE_SCRIPTS_DOWNLOAD
FILE_SCRIPTS_VERSION=${WORKDIR}/scripts-version.sh
curl --silent -f https://raw.githubusercontent.com/k3s-io/k3s/${K3S_COMMIT}/scripts/version.sh > $FILE_SCRIPTS_VERSION
FILE_TRAEFIK_MANIFEST=${WORKDIR}/traefik.yml
curl --silent -f -o "$FILE_TRAEFIK_MANIFEST" https://raw.githubusercontent.com/k3s-io/k3s/${K3S_COMMIT}/manifests/traefik.yaml
CHART_FILES=( $(yq eval --no-doc .spec.chart "$FILE_TRAEFIK_MANIFEST" | xargs -n1 basename) )
# These files are:
# 1. traefik-crd-20.3.1+up20.3.0.tgz
# 2. traefik-20.3.1+up20.3.0.tgz
# at the time of writing
if [[ "${#CHART_FILES[@]}" != "2" ]]; then
echo "New manifest charts added, the packaging scripts will need to be updated: ${CHART_FILES}"
exit 1
fi
CHARTS_URL=https://k3s.io/k3s-charts/assets
# Get metadata for both files
rm -f chart-versions.nix.update
cat > chart-versions.nix.update <<EOF
{
traefik-crd = {
url = "${CHARTS_URL}/traefik-crd/${CHART_FILES[0]}";
sha256 = "$(nix-prefetch-url --quiet "${CHARTS_URL}/traefik-crd/${CHART_FILES[0]}")";
};
traefik = {
url = "${CHARTS_URL}/traefik/${CHART_FILES[1]}";
sha256 = "$(nix-prefetch-url --quiet "${CHARTS_URL}/traefik/${CHART_FILES[1]}")";
};
}
EOF
mv chart-versions.nix.update chart-versions.nix
FILE_GO_MOD=${WORKDIR}/go.mod
curl --silent https://raw.githubusercontent.com/k3s-io/k3s/${K3S_COMMIT}/go.mod > $FILE_GO_MOD
K3S_ROOT_VERSION=$(grep 'VERSION_ROOT=' ${FILE_SCRIPTS_VERSION} \
| cut -d'=' -f2 | sed -e 's/"//g' -e 's/^v//')
K3S_ROOT_SHA256=$(nix-prefetch-url --quiet --unpack \
"https://github.com/k3s-io/k3s-root/releases/download/v${K3S_ROOT_VERSION}/k3s-root-amd64.tar")
CNIPLUGINS_VERSION=$(grep 'VERSION_CNIPLUGINS=' ${FILE_SCRIPTS_VERSION} \
| cut -d'=' -f2 | sed -e 's/"//g' -e 's/^v//')
CNIPLUGINS_SHA256=$(nix-prefetch-url --quiet --unpack \
"https://github.com/rancher/plugins/archive/refs/tags/v${CNIPLUGINS_VERSION}.tar.gz")
CONTAINERD_VERSION=$(grep 'VERSION_CONTAINERD=' ${FILE_SCRIPTS_VERSION} \
| cut -d'=' -f2 | sed -e 's/"//g' -e 's/^v//')
CONTAINERD_SHA256=$(nix-prefetch-url --quiet --unpack \
"https://github.com/k3s-io/containerd/archive/refs/tags/v${CONTAINERD_VERSION}.tar.gz")
CRI_CTL_VERSION=$(grep github.com/kubernetes-sigs/cri-tools ${FILE_GO_MOD} \
| head -n1 | awk '{print $4}' | sed -e 's/"//g' -e 's/^v//')
setKV () {
sed -i "s|$1 = \".*\"|$1 = \"${2:-}\"|" ${NIXPKGS_K3S_PATH}default.nix
}
setKV k3sVersion ${K3S_VERSION}
setKV k3sCommit ${K3S_COMMIT}
setKV k3sRepoSha256 ${K3S_REPO_SHA256}
setKV k3sRootVersion ${K3S_ROOT_VERSION}
setKV k3sRootSha256 ${K3S_ROOT_SHA256}
setKV k3sCNIVersion ${CNIPLUGINS_VERSION}
setKV k3sCNISha256 ${CNIPLUGINS_SHA256}
setKV containerdVersion ${CONTAINERD_VERSION}
setKV containerdSha256 ${CONTAINERD_SHA256}
setKV criCtlVersion ${CRI_CTL_VERSION}
set +e
K3S_VENDOR_SHA256=$(nix-prefetch -I nixpkgs=${NIXPKGS_ROOT} "{ sha256 }: (import ${NIXPKGS_ROOT}. {}).k3s.go-modules.overrideAttrs (_: { vendorSha256 = sha256; })")
set -e
if [ -n "${K3S_VENDOR_SHA256:-}" ]; then
setKV k3sVendorSha256 ${K3S_VENDOR_SHA256}
else
echo "Update failed. K3S_VENDOR_SHA256 is empty."
exit 1
fi
# `git` flag here is to be used by local maintainers to speed up the bump process
if [ $# -eq 1 ] && [ "$1" = "git" ]; then
OLD_VERSION="$(nix-instantiate --eval -E "with import $NIXPKGS_ROOT. {}; k3s.version or (builtins.parseDrvName k3s.name).version" | tr -d '"')"
git switch -c "package-k3s-${K3S_VERSION}"
git add "$NIXPKGS_K3S_PATH"/default.nix
git commit -m "k3s: ${OLD_VERSION} -> ${K3S_VERSION}"
fi

View File

@ -0,0 +1,14 @@
{
k3sVersion = "1.26.5+k3s1";
k3sCommit = "7cefebeaac7dbdd0bfec131ea7a43a45cb125354";
k3sRepoSha256 = "0iz8w24lhb3mgwnks79ky4nypdqbjn91zm4nrj1ar3abkb5i8bg3";
k3sVendorSha256 = "sha256-yPzpt9OZfW7qY9gFgrRVgmk2l9OSMMF85OY79MDCKTs=";
chartVersions = import ./chart-versions.nix;
k3sRootVersion = "0.12.2";
k3sRootSha256 = "1gjynvr350qni5mskgm7pcc7alss4gms4jmkiv453vs8mmma9c9k";
k3sCNIVersion = "1.2.0-k3s1";
k3sCNISha256 = "0hzcap4vbl94zsiqc66dlwjgql50gw5g6f0adag0p8yqwcy6vaw2";
containerdVersion = "1.7.1-k3s1";
containerdSha256 = "00k7nkclfxwbzcgnn8s7rkrxyn0zpk57nyy18icf23wsj352gfrn";
criCtlVersion = "1.26.0-rc.0-k3s1";
}

View File

@ -21,13 +21,6 @@ lib:
# run `grep github.com/kubernetes-sigs/cri-tools go.mod | head -n1 | awk '{print $4}'` in the k3s repo at the tag
criCtlVersion,
updateScript ? null,
# multicallContainerd is a temporary variable for migrating k3s versions
# forward, and can be removed once all callers set it.
# It is here so we can update 1.26 and 1.27 independently, but they'll both migrate to this.
# This variable controls whether we build with containerd as a separate
# binary, or as a k3s multicall. Upstream k3s changed this in 1.27.2 and
# 1.26.5. See https://github.com/k3s-io/k3s/issues/7419 for more context
multicallContainerd ? false,
}:
# builder.nix contains a "builder" expression that, given k3s version and hash
@ -193,13 +186,14 @@ let
subPackages = [ "cmd/server" ];
ldflags = versionldflags;
tags = [ "libsqlite3" "linux" ] ++ lib.optional multicallContainerd "ctrd";
tags = [ "ctrd" "libsqlite3" "linux" ];
# create the multicall symlinks for k3s
postInstall = ''
mv $out/bin/server $out/bin/k3s
pushd $out
# taken verbatim from https://github.com/k3s-io/k3s/blob/v1.23.3%2Bk3s1/scripts/build#L105-L113
ln -s k3s ./bin/containerd
ln -s k3s ./bin/crictl
ln -s k3s ./bin/ctr
ln -s k3s ./bin/k3s-agent
@ -210,11 +204,6 @@ let
ln -s k3s ./bin/k3s-server
ln -s k3s ./bin/k3s-token
ln -s k3s ./bin/kubectl
'' + lib.optionalString multicallContainerd ''
# for the multicall binary, also do containerd per
# https://github.com/k3s-io/k3s/blob/v1.27.2%2Bk3s1/scripts/build#L136-L146
ln -s k3s ./bin/containerd
'' + ''
popd
'';
@ -222,7 +211,7 @@ let
description = "The various binaries that get packaged into the final k3s binary";
};
};
# For the multicall binary, only used for the shim
# Only used for the shim since
# https://github.com/k3s-io/k3s/blob/v1.27.2%2Bk3s1/scripts/build#L153
k3sContainerd = buildGoModule {
pname = "k3s-containerd";
@ -235,7 +224,7 @@ let
};
vendorSha256 = null;
buildInputs = [ btrfs-progs ];
subPackages = [ "cmd/containerd-shim-runc-v2" ] ++ lib.optional (!multicallContainerd) "cmd/containerd";
subPackages = [ "cmd/containerd-shim-runc-v2" ];
ldflags = versionldflags;
};
in
@ -243,7 +232,7 @@ buildGoModule rec {
pname = "k3s";
version = k3sVersion;
tags = [ "libsqlite3" "linux" ] ++ lib.optional multicallContainerd "ctrd";
tags = [ "libsqlite3" "linux" "ctrd" ];
src = k3sRepo;
vendorSha256 = k3sVendorSha256;
@ -312,7 +301,6 @@ buildGoModule rec {
rsync -a --no-perms ${k3sServer}/bin/ ./bin/
ln -vsf ${k3sCNIPlugins}/bin/cni ./bin/cni
ln -vsf ${k3sContainerd}/bin/containerd-shim-runc-v2 ./bin
${lib.optionalString (!multicallContainerd) "ln -vsf ${k3sContainerd}/bin/containerd ./bin/"}
rsync -a --no-perms --chmod u=rwX ${k3sRoot}/etc/ ./etc/
mkdir -p ./build/static/charts

View File

@ -5,24 +5,12 @@ let
common = opts: callPackage (k3s_builder opts);
in
{
k3s_1_26 = common {
k3sVersion = "1.26.4+k3s1";
k3sCommit = "8d0255af07e95b841952563253d27b0d10bd72f0";
k3sRepoSha256 = "0qlszdnlsvj3hzx2p0wl3zhaw908w8a62z6vlf2g69a3c75f55cs";
k3sVendorSha256 = "sha256-JXTsZYtTspu/pWMRSS2BcegktawBJ6BK7YEKbz1J/ao=";
chartVersions = import ./1_26/chart-versions.nix;
k3sRootVersion = "0.12.1";
k3sRootSha256 = "0724yx3zk89m2239fmdgwzf9w672pik71xqrvgb7pdmknmmdn9f4";
k3sCNIVersion = "1.1.1-k3s1";
k3sCNISha256 = "14mb3zsqibj1sn338gjmsyksbm0mxv9p016dij7zidccx2rzn6nl";
containerdVersion = "1.6.19-k3s1";
containerdSha256 = "12dwqh77wplg30kdi73d90qni23agw2cwxjd2p5lchq86mpmmwwr";
criCtlVersion = "1.26.0-rc.0-k3s1";
} { };
k3s_1_26 = common ((import ./1_26/versions.nix) // {
updateScript = [ ./update-script.sh "26" ];
}) { };
# 1_27 can be built with the same builder as 1_26
k3s_1_27 = common ((import ./1_27/versions.nix) // {
multicallContainerd = true;
updateScript = [ ./update-script.sh "27" ];
}) { };
}

View File

@ -12,7 +12,7 @@ Avoid build-only store references embedding into 'mutt -v'.
+ # 'gcc -v' output embedded into 'mutt -v'. But also might be
+ # ./configure-passed arguments.
+ sed \
+ -e 's@'$NIX_STORE'/[a-z0-9]\{32\}-@/<<NIX>>/@g'
+ -e "s|$NIX_STORE/[a-z0-9]\{32\}-|$NIX_STORE/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-|g"
+}
+
if ./txt2c test </dev/null >/dev/null 2>&1; then

View File

@ -1,665 +1,665 @@
{
version = "102.11.2";
version = "102.13.0";
sources = [
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/af/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/af/thunderbird-102.13.0.tar.bz2";
locale = "af";
arch = "linux-x86_64";
sha256 = "06657b0dab9a29c67778434d5dae8318322818391ff0f295c189a1a4f7d66534";
sha256 = "3812ed9ad59f56919d3909e1e17f3dc468f1da676a5a4360d2cf9aa359461d52";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/ar/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/ar/thunderbird-102.13.0.tar.bz2";
locale = "ar";
arch = "linux-x86_64";
sha256 = "cb0136de2e08acea594b96c5e5b78dfee360fc3b15343ebba0d9da86a8e23e94";
sha256 = "445c872f9ec98a51ee3817c17d7996f8d11eb882c23bda75e3d0704734cf8fdd";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/ast/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/ast/thunderbird-102.13.0.tar.bz2";
locale = "ast";
arch = "linux-x86_64";
sha256 = "df9f19a08c7e16f2a140086fa4592f5d184c73dbcfeff478790f5d59543b94b6";
sha256 = "063ce8970a09c00d6e3ae5780e4d57d7eb6f4b4c5b266da2b3df9e15a944b314";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/be/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/be/thunderbird-102.13.0.tar.bz2";
locale = "be";
arch = "linux-x86_64";
sha256 = "d1610e03d86b05c72e0725a781384a9f3584db52fcbba5c6e4b1d7a7a1a01e80";
sha256 = "f8e63ea388bf470beed170baf73e61b67feb15d116d04858ea1bdfdfb80e6f66";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/bg/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/bg/thunderbird-102.13.0.tar.bz2";
locale = "bg";
arch = "linux-x86_64";
sha256 = "7cc0e959caaac9d2b7982c80c9df27467b4959f65e2674879e9c075980d89ac1";
sha256 = "ac8d8c729c39565b6346f141324c299e961bb85e4c944e13cc5cf786ce699d3e";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/br/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/br/thunderbird-102.13.0.tar.bz2";
locale = "br";
arch = "linux-x86_64";
sha256 = "0d5be52f0d9ed94cf0f6bbda72b7b53d74ffcbdf14235d3c50dc6bafa8e704ab";
sha256 = "0a7f8eec56c9e9a5f5aea7f793601003b22f698e16cd0d3bec3d99cb39db5a4c";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/ca/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/ca/thunderbird-102.13.0.tar.bz2";
locale = "ca";
arch = "linux-x86_64";
sha256 = "044fd058e8afa89c325376937a7d18652ddc9244ed11d9341dbfdd7645c35d59";
sha256 = "93a7552d8605b84ea0933fb407c471dcafed0b0f87facd4d970120f218c008c8";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/cak/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/cak/thunderbird-102.13.0.tar.bz2";
locale = "cak";
arch = "linux-x86_64";
sha256 = "829cbeea7a5f0666456961cde904abd5c7f8157fe9f25853359cb577ea085ffd";
sha256 = "f12bc1568b451319d0d60f098d9f40dbcc1ad517c4eee55cec7ab5fb747e7270";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/cs/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/cs/thunderbird-102.13.0.tar.bz2";
locale = "cs";
arch = "linux-x86_64";
sha256 = "02197c9a51abd6938c22a41309f10e713064fa7cb149095dc0f61327916713c9";
sha256 = "05e11ee1c73d69c8ca7762103ba93e081fedea8487406385e60fe985b80f624f";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/cy/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/cy/thunderbird-102.13.0.tar.bz2";
locale = "cy";
arch = "linux-x86_64";
sha256 = "fd037542beab8c9c3396f2530296b63e646ab2de0a1bc91f68efc7b271e2e4de";
sha256 = "fc18fe46a4f2ce5b4cba11105de96849b8914cf3f9818c40aa2cb932e600462d";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/da/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/da/thunderbird-102.13.0.tar.bz2";
locale = "da";
arch = "linux-x86_64";
sha256 = "991a46e772289a699720a3e0f10e6ec82b2a7b4a3e5c3e66af1e0b266e893199";
sha256 = "964784f13838af07dcffa19ee65a5b04cd5da1d04239a522c5794bf94719d7f8";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/de/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/de/thunderbird-102.13.0.tar.bz2";
locale = "de";
arch = "linux-x86_64";
sha256 = "92b5de1b2ff2ebd8541b86295e382393261d0485dca8bdf17a6ba4287af98679";
sha256 = "62545ff4203f8197b0ccef526c28f15a446c33bd12e8ff3fb4d9f136f5a9a5aa";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/dsb/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/dsb/thunderbird-102.13.0.tar.bz2";
locale = "dsb";
arch = "linux-x86_64";
sha256 = "86d5ef98137468ba2b78603b2a06cbd474c8314dc37a92759bcd948a9bffdd5c";
sha256 = "7c6b78377a35899cc0c3a2fd69798180b5429f4f4b806f677fdec2ad3628321a";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/el/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/el/thunderbird-102.13.0.tar.bz2";
locale = "el";
arch = "linux-x86_64";
sha256 = "1df3a70d2ecb6430bf7052428c9603a86d0052a4370843fe7e6771c1c2ca033c";
sha256 = "a19bbcc882c4f28fe6f598766f1f9bce3e364e86a9d043589feebe491850b6b6";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/en-CA/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/en-CA/thunderbird-102.13.0.tar.bz2";
locale = "en-CA";
arch = "linux-x86_64";
sha256 = "5707c6f5aeeb6fa030237f4bb45b5b73b4c9e64f2912ea4d2ab28af55bb3a6e3";
sha256 = "c3fddd8331042d4fe9a0b63c27a7fe5ddbe4a6de8bf2b650116d0f3b0e58f5a1";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/en-GB/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/en-GB/thunderbird-102.13.0.tar.bz2";
locale = "en-GB";
arch = "linux-x86_64";
sha256 = "0d98d3acc5d046ddb4cc2ef149fa180d005a77f7eb91bbbb10a188d562a65546";
sha256 = "01c525b0742c9434135c564877d6051f862e1ac8641b43efdfa3902509ce527e";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/en-US/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/en-US/thunderbird-102.13.0.tar.bz2";
locale = "en-US";
arch = "linux-x86_64";
sha256 = "311cf498bcbeb56f45a53492498c4a094b3f30edbd11594498712997aff530b1";
sha256 = "60e363b604fd5e0c858e1c26224e4052c020d9f1b3bd7508f233ebef6ad7b05b";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/es-AR/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/es-AR/thunderbird-102.13.0.tar.bz2";
locale = "es-AR";
arch = "linux-x86_64";
sha256 = "83e15b8babde61707d1833b3806fc626adc4e30a4d9ce7aaa9d788348de23b31";
sha256 = "a06676e96d86cccf57636b84c6a960f4e88335e5890e34428de25891dadbdae8";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/es-ES/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/es-ES/thunderbird-102.13.0.tar.bz2";
locale = "es-ES";
arch = "linux-x86_64";
sha256 = "67487065d864346bb6dd7504cf77a0cd5382b26ff1cdce02765b9f4bd26eb4f4";
sha256 = "6f0969919b33ea8da006dae62cdd2ab90e20c9ac3a0ca53524a05eff6134ea1f";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/es-MX/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/es-MX/thunderbird-102.13.0.tar.bz2";
locale = "es-MX";
arch = "linux-x86_64";
sha256 = "3485c3695b27b13bf6024f776524b2d8e26d09ace4773392c71ea6d22e911ce4";
sha256 = "55113bd54e3315abf2db2fc0d6b4afc68b8a53cd3a5a8167eb3f7a895129b61d";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/et/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/et/thunderbird-102.13.0.tar.bz2";
locale = "et";
arch = "linux-x86_64";
sha256 = "932b812b3149a6286d606b58b13211c52a2d832fd68f2081c090c1902cd144e0";
sha256 = "23e719b847b2942226abd20d11d45a0573d3d5428d2a741a06d94ff0f854db81";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/eu/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/eu/thunderbird-102.13.0.tar.bz2";
locale = "eu";
arch = "linux-x86_64";
sha256 = "0f17272832d393df25a705a0a9938e346bf9f19408110f370a56ae4d0e46a249";
sha256 = "2e41dd8f77593c4207e89a3bcf883ac5f45ce732150108f5e5040d1e6754bbac";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/fi/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/fi/thunderbird-102.13.0.tar.bz2";
locale = "fi";
arch = "linux-x86_64";
sha256 = "dd6886fd89e9512276033ddd6de95aec29ec6d51aa92db4e5887d5e0eba37c3f";
sha256 = "e5c9566a483654d182c8c2a9fddea75a5b3d19e91a16ec291b52a66db5e3a78f";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/fr/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/fr/thunderbird-102.13.0.tar.bz2";
locale = "fr";
arch = "linux-x86_64";
sha256 = "df81ad12712cf75ca3572e0afbad252dd18512e081744fa12b9734561d6a9509";
sha256 = "1218794ed23f0e63db896391256b08f5d6e99eee2d6a8bfac53a7c64066a6022";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/fy-NL/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/fy-NL/thunderbird-102.13.0.tar.bz2";
locale = "fy-NL";
arch = "linux-x86_64";
sha256 = "6704b2be50f3e00998b26fe48a42d38fb58d3d2fc3bc7aa30bc274f82b813559";
sha256 = "ea87a523282a83c4c212bd463d0e936d7d76d2f9a1268857408169083cbb5494";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/ga-IE/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/ga-IE/thunderbird-102.13.0.tar.bz2";
locale = "ga-IE";
arch = "linux-x86_64";
sha256 = "87c3671056d947c7616f622ab060d99803bc81234ad394140eb92f8977fa93a2";
sha256 = "d8775cf3c06de8f7803b7f053956ebdd7636407229cd2f83bffe7451e9dabb73";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/gd/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/gd/thunderbird-102.13.0.tar.bz2";
locale = "gd";
arch = "linux-x86_64";
sha256 = "46334a92360359c2d7af7d6ad315baee8ff750fe73def115e30651251676720d";
sha256 = "cce50897e78e16237450a98316719e87b3213cac98b101a72e77bf500940fad3";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/gl/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/gl/thunderbird-102.13.0.tar.bz2";
locale = "gl";
arch = "linux-x86_64";
sha256 = "e31ec9437c5c0dac3459668ae8011d2e016931b369c577dbe2bbc60b25d7f3e8";
sha256 = "8a43a71e1da836f53c76c6059ae0937f8a3d280f824958c0bb4a730e8a2acff9";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/he/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/he/thunderbird-102.13.0.tar.bz2";
locale = "he";
arch = "linux-x86_64";
sha256 = "ac0fb328c19521b83d34aed77ba507cb44dd2cf19e128c19eee25c59718ae9ec";
sha256 = "e9f96dedc206fc7eb2a1a8a98088434d13a193415eb470c00abd05e7310a19e7";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/hr/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/hr/thunderbird-102.13.0.tar.bz2";
locale = "hr";
arch = "linux-x86_64";
sha256 = "7db4ff99ceab888d279f7083744afd88ce334244c577da1ca6e6433043d140fb";
sha256 = "d1e3958fb6f954fa97524606c180417c6e90eebf374e642b0a4710e25774e2e6";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/hsb/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/hsb/thunderbird-102.13.0.tar.bz2";
locale = "hsb";
arch = "linux-x86_64";
sha256 = "3db57f4ab334eebea1ba4da57633a1556ac0fc969adb0e363188b09d93771471";
sha256 = "02f86d0f0b829ec8b6a8e93192ed7d8181fbd8c0ee0f2d635283ad88f6e9f7d2";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/hu/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/hu/thunderbird-102.13.0.tar.bz2";
locale = "hu";
arch = "linux-x86_64";
sha256 = "403f4f7bde69d6a3654b6f6a964e7e1aa9a3e4a29810d118c8df4f61da4059a5";
sha256 = "6281c33b9db6c5972914e5f85444e6b883c2e66037c05cbfc23418d8d299fa93";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/hy-AM/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/hy-AM/thunderbird-102.13.0.tar.bz2";
locale = "hy-AM";
arch = "linux-x86_64";
sha256 = "55ef72c23f436862002afddcc5030cf2a1e96b85d531ef233c66796fbfaeee9d";
sha256 = "6d7bfe6b749ef85c960756216f7c3763abf75cc00b73baf4a0219ce652b3ae62";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/id/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/id/thunderbird-102.13.0.tar.bz2";
locale = "id";
arch = "linux-x86_64";
sha256 = "73314109c10d6a96d2c8c0ad93ed910bb95e0952172128754a2d3127a30f0553";
sha256 = "cf065970ddeb180f0b2ce73f15f721e96bd6706141b7644dffbdd6af21cd1201";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/is/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/is/thunderbird-102.13.0.tar.bz2";
locale = "is";
arch = "linux-x86_64";
sha256 = "f6b731ee5938236bb28472790d5b07718ff26dba3a78081da53b04b1130c3f4b";
sha256 = "e690a87a67876ba67ff9277fecc972d265c2546028f356c0dc4c5efbc80e65ec";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/it/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/it/thunderbird-102.13.0.tar.bz2";
locale = "it";
arch = "linux-x86_64";
sha256 = "17903b5e43413a7d80ceed35f60402c2de2c95d9916080930756446b65fe02d2";
sha256 = "84584b57adb4cd3b56c59cbf33e8f212dfd9366c3bc0d52bf5e53bc1871c426d";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/ja/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/ja/thunderbird-102.13.0.tar.bz2";
locale = "ja";
arch = "linux-x86_64";
sha256 = "34f009819fc3d8fbd780896ae4ad734da8829ab808f8b9a726644fcf72633750";
sha256 = "00969670a9447365c687aa5866ea802ed72b08916bae34c2b2bdb3f1b02ee8cf";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/ka/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/ka/thunderbird-102.13.0.tar.bz2";
locale = "ka";
arch = "linux-x86_64";
sha256 = "73570b411f2d9e6bddd41c95b67869635414e14d32d511d0dc6e79b38a9c9b70";
sha256 = "be471a01f2d7aca4b666c4862242954e72c1e4cdbd6f05834879c055b48ea5bf";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/kab/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/kab/thunderbird-102.13.0.tar.bz2";
locale = "kab";
arch = "linux-x86_64";
sha256 = "7178cb42412530a67612453cf527774c3cce792f626e2dde9db229b8515f2fca";
sha256 = "6fc2c3840aab2643689304c2c21da33df8b1cff291bf9007cd2cf676dd9f9164";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/kk/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/kk/thunderbird-102.13.0.tar.bz2";
locale = "kk";
arch = "linux-x86_64";
sha256 = "d642b392a87ba0370a3c6c8a785aa5defb9d904f45632ab804484b62dcfb2e96";
sha256 = "b07b4cce24627aa0885eb4a288514a312244cf14e672d242159c77c70b86f17c";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/ko/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/ko/thunderbird-102.13.0.tar.bz2";
locale = "ko";
arch = "linux-x86_64";
sha256 = "a6f19bf0bf8c926acf5c08b48eeaf311c7a371d90b1e0c7c5b7664f0f4f33fc1";
sha256 = "81275eb753aacc5b67325d294400de10f57654432d37ee53501048e38081fdb9";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/lt/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/lt/thunderbird-102.13.0.tar.bz2";
locale = "lt";
arch = "linux-x86_64";
sha256 = "31f5833520473062179948d14f04e8ab8ca412b6d581cdc6b8f53fc66fab92de";
sha256 = "c51a317710356a65fb0dd8270f834e4e5e8d9e0918dfe18c84c24cdbd1dfd5ae";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/lv/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/lv/thunderbird-102.13.0.tar.bz2";
locale = "lv";
arch = "linux-x86_64";
sha256 = "b4c92ede4839cb715672cd79c08092c4e68822104662fb5f21eb2f7082a8efb9";
sha256 = "e120bbaa79cd31bade34bf1393f705d1757719114d7fad2aeee45402fc58cbde";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/ms/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/ms/thunderbird-102.13.0.tar.bz2";
locale = "ms";
arch = "linux-x86_64";
sha256 = "8b277a80d59f5230352964ed0b4a59afc39a54bce527aa7d4e75ffe885180ff2";
sha256 = "b747f5fd1e5c8c22879f06e4097f8006e3b4acb0a235cd67c4f1c45e40e19c9b";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/nb-NO/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/nb-NO/thunderbird-102.13.0.tar.bz2";
locale = "nb-NO";
arch = "linux-x86_64";
sha256 = "ffb1ab2d17175fd49c66e13d36173f4edf6ea827088ba194cb384d2a216d6548";
sha256 = "bbd8517de5607017fc78917ec89b59a8c26bc1d6f308ca034855ba48abb1a01a";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/nl/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/nl/thunderbird-102.13.0.tar.bz2";
locale = "nl";
arch = "linux-x86_64";
sha256 = "9b9bd1ee90090bbb84161fac47224107705f9f2fa257d5e9cb16f4e7ddc8a530";
sha256 = "f8cb2ee310014767becfe85e84a1aa5171067adab2513bf9d14e5dc9a72517be";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/nn-NO/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/nn-NO/thunderbird-102.13.0.tar.bz2";
locale = "nn-NO";
arch = "linux-x86_64";
sha256 = "80f78ce4721869b781e96509a1ebb695305aeddd3034a8166c3c1bde6a41a6a2";
sha256 = "b52959123138caa96d90b8cb85ebbe200e07733d34f3a9c262634f90af78ae03";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/pa-IN/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/pa-IN/thunderbird-102.13.0.tar.bz2";
locale = "pa-IN";
arch = "linux-x86_64";
sha256 = "2b51a64672a05449da2c8440a5e4742fa5898479bccdd26cbab9d634704026e1";
sha256 = "d2dceaab81cccd8ca0ddbd0466e3acc17eef256a12825f84cac65e1532b93a83";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/pl/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/pl/thunderbird-102.13.0.tar.bz2";
locale = "pl";
arch = "linux-x86_64";
sha256 = "a8fba5214d99a7449842f2107bd6b93a574fb051f67d24d1545d653c78a03f6e";
sha256 = "b32e90a2a01668ecbf62b8931254f3206746d6d0b5de28fc7f8b26a6d06f659a";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/pt-BR/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/pt-BR/thunderbird-102.13.0.tar.bz2";
locale = "pt-BR";
arch = "linux-x86_64";
sha256 = "00a0890145d6d07f174e5791d8a4f7efa03da40b897b916f96da2d716e911b5a";
sha256 = "bb769f739108eedcf06b0ffe2681bd3946bec136eee9330facb439bc9c40447d";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/pt-PT/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/pt-PT/thunderbird-102.13.0.tar.bz2";
locale = "pt-PT";
arch = "linux-x86_64";
sha256 = "8321a8e2f7c08dd333860f3be037aed5f49d902add98c31827fe17d41c23e499";
sha256 = "f15ffe020b1ae6b41937dcc6722465b678a7914abd0af864ba23672ff66155d1";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/rm/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/rm/thunderbird-102.13.0.tar.bz2";
locale = "rm";
arch = "linux-x86_64";
sha256 = "e17dbf00538d807cfd0a0c473cefc0b8ca944fa829368a85f966da419c809a53";
sha256 = "8468123d5bae3b9d796e74268e67ce115b4b5a5980aee1408759eed6f7d2cfc6";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/ro/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/ro/thunderbird-102.13.0.tar.bz2";
locale = "ro";
arch = "linux-x86_64";
sha256 = "d62f90d3531227c388d100763c121b2557c72722e4caf830e1e73741b1a42cb0";
sha256 = "81e389511e1e4618e6554cd01b722300723ab18a39e74d91564fa5883f617c19";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/ru/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/ru/thunderbird-102.13.0.tar.bz2";
locale = "ru";
arch = "linux-x86_64";
sha256 = "8db65e38f4860eda39cdaa40ecc48967987f5ffdf66c38b4dd7198ffeb355e01";
sha256 = "78462fc4f264b11c35c1892d81db775240c7795747f608b11064a5d092e79664";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/sk/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/sk/thunderbird-102.13.0.tar.bz2";
locale = "sk";
arch = "linux-x86_64";
sha256 = "6c06dc997db44cb7b737177316180c3c827ab11cfe140cdf70d964a0117f0da0";
sha256 = "8a213598e861dd4166fce60d76d5f1658063f1a1e008ddf2f3114b3ea3f2d809";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/sl/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/sl/thunderbird-102.13.0.tar.bz2";
locale = "sl";
arch = "linux-x86_64";
sha256 = "86a4cb37c1f10fd6dec910204320b2e8f875d74e7a4b82819bd51d6148446543";
sha256 = "cf85777c113fcc41e3485c62136a561ae0e21db70b4e79c4fb112280f6ab8260";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/sq/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/sq/thunderbird-102.13.0.tar.bz2";
locale = "sq";
arch = "linux-x86_64";
sha256 = "7993c175bb55460f5c425b35e36295e6a6c1133c2c6f423591fa1f4524957347";
sha256 = "df09cef518f01f29bf1fcbcfef4ed82e0a917e0361f41618fa796ed20e6a8974";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/sr/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/sr/thunderbird-102.13.0.tar.bz2";
locale = "sr";
arch = "linux-x86_64";
sha256 = "4066c7404822fd2f36e5cafc417f669e731f9dd430b590de15023904bdcb3a78";
sha256 = "af46328c71c61e1042af53e42b58aef5a1b9f82b93972f1a4354d1902e3802e0";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/sv-SE/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/sv-SE/thunderbird-102.13.0.tar.bz2";
locale = "sv-SE";
arch = "linux-x86_64";
sha256 = "f179450d28db9a234224afe95200ff329ecf56497a93e2e95064ab9f90d65944";
sha256 = "70ff6e9d0c28a4435521e5b744f6ebb783590d390dc1247fb17a80745ce5b81e";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/th/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/th/thunderbird-102.13.0.tar.bz2";
locale = "th";
arch = "linux-x86_64";
sha256 = "ce1909b8d733c4a2eb5f7d217b05fa6fce8e036e4561e52078e5ddaa723d1d68";
sha256 = "6a9055143e689867a0e06c75bfa5103be1cc9e0e223c7a51ea6a8d16a37623a8";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/tr/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/tr/thunderbird-102.13.0.tar.bz2";
locale = "tr";
arch = "linux-x86_64";
sha256 = "45ab9d4d14ecf590064d37282c02e8e1c95a5a4b27ee6a04919791ce0f876bf6";
sha256 = "8e00419a701a84949dd67f618df39b1603531190125af6d525da2f18c5d8c7f0";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/uk/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/uk/thunderbird-102.13.0.tar.bz2";
locale = "uk";
arch = "linux-x86_64";
sha256 = "aab8145419c3346a48143b1d02a97d08e96cc23bca6fd04ad1ee8c4c4e885a70";
sha256 = "8a051c9dc20f3f0a968f5f7be38ab9c30281931bb1f6a3b90aaaed0d8455f359";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/uz/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/uz/thunderbird-102.13.0.tar.bz2";
locale = "uz";
arch = "linux-x86_64";
sha256 = "4ea4a65878bc3e9336164d46fa9d546ad411aeeb3ae4095036ad35422a278d85";
sha256 = "73b68505012dd248c073aa8d67a108501fca53f020d44fc613e59b9532ff560e";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/vi/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/vi/thunderbird-102.13.0.tar.bz2";
locale = "vi";
arch = "linux-x86_64";
sha256 = "22baebada536992fc23d621b8aee58b845484cd1fda3a38d7b172a78e0ac1d6a";
sha256 = "51ac0cde7a05b4c1a1e81e289beb91ae6e8d21096d2f61dbaf6af457bc84640a";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/zh-CN/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/zh-CN/thunderbird-102.13.0.tar.bz2";
locale = "zh-CN";
arch = "linux-x86_64";
sha256 = "ea3c42846b9eefe08b6944a816b28aa50dcc116354b59f5360f3e6c0340d406f";
sha256 = "5616ff9e4b30bdf590b941ca46e6793d9d4357c6f323372ca6b6ad88bcb09c65";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-x86_64/zh-TW/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-x86_64/zh-TW/thunderbird-102.13.0.tar.bz2";
locale = "zh-TW";
arch = "linux-x86_64";
sha256 = "207c364f50ce57259134259c903844705339f4f25d1468ba565727254a179c79";
sha256 = "cab3bef46dae32ba86952152fec513cf48e7b37b034dc48b59f1c3ed43d817f6";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/af/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/af/thunderbird-102.13.0.tar.bz2";
locale = "af";
arch = "linux-i686";
sha256 = "a78eedffe820f56374ccd80827b90e08b85cd1697b778474bb37fded8dfd4771";
sha256 = "9d67e602573d53bb1b579308b2adf5f1dc9eea20d5323f10d0193372b3db968c";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/ar/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/ar/thunderbird-102.13.0.tar.bz2";
locale = "ar";
arch = "linux-i686";
sha256 = "5fe656dedc66b1cb928f33a1a8993cb946a869846eeeececabae7972ad786c79";
sha256 = "a0a4310cf8c87cf85a7e2c8f2335c615442c88c354c58b9dbcbe4ea1fbeb064e";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/ast/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/ast/thunderbird-102.13.0.tar.bz2";
locale = "ast";
arch = "linux-i686";
sha256 = "d3f10468b757add94a3f97ba2293767e54373a615559b45f0c9598cc0abc4bc7";
sha256 = "47ca9ccbb5a4a04ab477b120465ebebe695c0a38a7e5a9cd8c9037c7e91ef993";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/be/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/be/thunderbird-102.13.0.tar.bz2";
locale = "be";
arch = "linux-i686";
sha256 = "245ba014e247e4a328ab5b05a4edd3d4394e8214e444ff55bd0d3a5ba51b2a85";
sha256 = "70466b7d0bb75617c5013615f1756eac2ccf48a89cfeaa1486c0256bc31aee11";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/bg/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/bg/thunderbird-102.13.0.tar.bz2";
locale = "bg";
arch = "linux-i686";
sha256 = "474d471395d9284852c647eab1fddc4db2269c819931edfb788a5580ac999d0a";
sha256 = "4166fc66cc4779fed44f8db3561b46012326dba958d75ea8b4eb23aeede40105";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/br/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/br/thunderbird-102.13.0.tar.bz2";
locale = "br";
arch = "linux-i686";
sha256 = "e5e9f42b1a8975b276558046f7b90cb3c57fae4fe95f95f92e7e209f7ee5bfcb";
sha256 = "23af915ff46d00d836f442af65ffcbdcd3a7668bf385855b626269320d30de89";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/ca/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/ca/thunderbird-102.13.0.tar.bz2";
locale = "ca";
arch = "linux-i686";
sha256 = "09faad4fb6472f21dc825ba496853848978be42dcf3aa66927f4ccb2b0b84d59";
sha256 = "ed309a1f5e787c6d9de1ecaa332bd5ad995d9dd44521eb141a8002f4c96f8b78";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/cak/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/cak/thunderbird-102.13.0.tar.bz2";
locale = "cak";
arch = "linux-i686";
sha256 = "c169b412dad7f8c341b941491bb81d23646855488523fbc5e5ec676c47db2a02";
sha256 = "04f0f440f98b6444d1c0044bca77c2c4bf75025ea9eff163159c182bb913697b";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/cs/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/cs/thunderbird-102.13.0.tar.bz2";
locale = "cs";
arch = "linux-i686";
sha256 = "b1342ff7c1c19c7e45eb12055ce4063376d2651da195333431d60e5fa4b17adb";
sha256 = "592e5fca7ef04ac14b400dcc326cef79baa48c4289e65106b6967eea37930cac";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/cy/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/cy/thunderbird-102.13.0.tar.bz2";
locale = "cy";
arch = "linux-i686";
sha256 = "ceecb82902badc017405af3a0c9f6eafcb3748b7746bf7d25dd2f7fc716e5126";
sha256 = "9f7862b5f26022f27d39331b1b0ce0972127a34474cc89fa44a369777f79311c";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/da/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/da/thunderbird-102.13.0.tar.bz2";
locale = "da";
arch = "linux-i686";
sha256 = "f2c9cae1c78995ad3e27b92c3f3eee998415b141883def9742d296be6e62a302";
sha256 = "1882e205f8e16eeef88306f30e4a1dfc5c415d1e1cf1041ce432362b84ce5b2f";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/de/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/de/thunderbird-102.13.0.tar.bz2";
locale = "de";
arch = "linux-i686";
sha256 = "653bdd0f67b784fc078bdd1cd75f0d307b30d6c027b0e5fd7148d5e4cea2adcd";
sha256 = "00d1e7cd634c130c6f4a26333de10e82f7a18ef1fe766a6280a2614c1dd4290e";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/dsb/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/dsb/thunderbird-102.13.0.tar.bz2";
locale = "dsb";
arch = "linux-i686";
sha256 = "98384b95001ec5e82fc8f53c76f5644ffe1f6624deefd3cf4d8bf6c4492619e4";
sha256 = "d14aaa3beeba7dd1f781c3eef74cb098a5f36944cfc240223d8f3d472b2c15b8";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/el/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/el/thunderbird-102.13.0.tar.bz2";
locale = "el";
arch = "linux-i686";
sha256 = "ab7efc3b98f24a14e488dda8cb8206cbe83f49384352154fc20353c697201d6e";
sha256 = "cdeec1c38813d76523597a3d9afada7538517a2fd9705a64a9ae03484c3d00b5";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/en-CA/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/en-CA/thunderbird-102.13.0.tar.bz2";
locale = "en-CA";
arch = "linux-i686";
sha256 = "d9c9fcf684aba3322bc7c386c48ae30bdf56c48a20902ec298e95be362c11c37";
sha256 = "553921daa097d493144a65dffd7e4706cf1d95541012db7eda8544690ee8977f";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/en-GB/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/en-GB/thunderbird-102.13.0.tar.bz2";
locale = "en-GB";
arch = "linux-i686";
sha256 = "49c80b30b66b675de13f3a1adfedfd0794dee6762c56967775665961bcd3959d";
sha256 = "60b796348c70fd0ea30fd85c1bdea52a027d25622286a9c33a24fa8aa87b1f2e";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/en-US/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/en-US/thunderbird-102.13.0.tar.bz2";
locale = "en-US";
arch = "linux-i686";
sha256 = "0ce97d2b043907467d54cca44c85681f37d2a3b34a9575082d0b3ee05a82447c";
sha256 = "46cdf6a072c11cc8df062834d3c9e64e6ce71eabf1f4c7d55753dd95e2b21e83";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/es-AR/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/es-AR/thunderbird-102.13.0.tar.bz2";
locale = "es-AR";
arch = "linux-i686";
sha256 = "6fea0ae72690c33c9cbf6cf4721afc16974d72f9fc287bd44e02e5e06cc7d2c8";
sha256 = "637a60a827e347abfc364786ca5ad2c7b6b3c0b61fbb7ef5c81dae7b61a3eeeb";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/es-ES/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/es-ES/thunderbird-102.13.0.tar.bz2";
locale = "es-ES";
arch = "linux-i686";
sha256 = "add0932c8bb9356ac8cf67a57a2aaa3d93fc3f9a2357832f472935acbfe1f25d";
sha256 = "b110ecbae661e18079f8ee7e06c866da5c49c288e4d265366f9f4d6d3cdb7087";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/es-MX/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/es-MX/thunderbird-102.13.0.tar.bz2";
locale = "es-MX";
arch = "linux-i686";
sha256 = "3aad7a26e7444751647e794c031218f6850f711494dc5b24e25d2848b9cf56f0";
sha256 = "63722c2ecd323216371633a67d6de071148898f62c8c44781bd5bc9aacd2b5eb";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/et/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/et/thunderbird-102.13.0.tar.bz2";
locale = "et";
arch = "linux-i686";
sha256 = "4bf21ba093b2d98a507f63fbb8a3c8c1bf790f0c4811bc664aa4475fcc8f1d3b";
sha256 = "93109b1876f212ab8a91d34c77dd137d87009c39fab3faef6f63ad72cb692567";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/eu/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/eu/thunderbird-102.13.0.tar.bz2";
locale = "eu";
arch = "linux-i686";
sha256 = "f01b207c5b35af66542e5961e63cc3734eecdabaa543c0ee693add78862e3508";
sha256 = "a2b8196598d00e09fc119c2a4f70e71ecac6080557d69671e3cea84361d1249e";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/fi/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/fi/thunderbird-102.13.0.tar.bz2";
locale = "fi";
arch = "linux-i686";
sha256 = "e29744181614b98bf2c6dfb46da2f339eddd1d17f1ffe7499236442b5104a9b0";
sha256 = "92518485b0b0111c95b867d13d3a7199d3a3d0288d05636f6d69dde44f94521b";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/fr/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/fr/thunderbird-102.13.0.tar.bz2";
locale = "fr";
arch = "linux-i686";
sha256 = "02708ed7bb7b83f058160f28524506f13f5c661f967e0cf8908f7d1b72965a45";
sha256 = "21ae453720831af4b06d261c5094ae6ccf4d730748c51eacfb5879f012460ea2";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/fy-NL/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/fy-NL/thunderbird-102.13.0.tar.bz2";
locale = "fy-NL";
arch = "linux-i686";
sha256 = "156940765e41e34c3f05f7f56c8634dd41e9e2194c3fe14d3d8e04af0d266a5a";
sha256 = "759689324eb65ca07b69fdb82d183399c0a0b2948e9b1c048f4919ff4f9520d5";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/ga-IE/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/ga-IE/thunderbird-102.13.0.tar.bz2";
locale = "ga-IE";
arch = "linux-i686";
sha256 = "2f5089a6f152efba12eac5a5096b91f360bccf99a061ea8145767807499d6e45";
sha256 = "2e0d71044e670dd130c311eb5c8175ea8ed8d44816b27226d81bd6b2b00d22da";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/gd/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/gd/thunderbird-102.13.0.tar.bz2";
locale = "gd";
arch = "linux-i686";
sha256 = "004cdf4b0db59ffd5463a543b6ee5859f96eef31d16a6e0bbce892e7bdfb3481";
sha256 = "aaa6c675b9a1d3a19bf736fdb8b3c07145871099f5eb102e7eac5e2b7613568b";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/gl/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/gl/thunderbird-102.13.0.tar.bz2";
locale = "gl";
arch = "linux-i686";
sha256 = "c3d72bb143913728198c73f0dbec8933e791ead4d5b46d2bd2bbfdf9faa2a3db";
sha256 = "54ec7a64e53bba9c59ffc5a63f7668d28b1fdac2c42757be8d89815364873575";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/he/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/he/thunderbird-102.13.0.tar.bz2";
locale = "he";
arch = "linux-i686";
sha256 = "c120e4dde2fcbcabb383732512e455eb74c5b56e42edc1ffa91a6b513c369ceb";
sha256 = "896d7be34cdad5efdfcb958a8763f685a56adb64030563b61521d4b547760595";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/hr/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/hr/thunderbird-102.13.0.tar.bz2";
locale = "hr";
arch = "linux-i686";
sha256 = "156e3fe8927961aef8353d896c20fa78b237c3a2a40cd73b4f216c7893a69750";
sha256 = "968fbf7246d062344d5631720ffcb19e58a15655731a9550673c408ec1e0852f";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/hsb/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/hsb/thunderbird-102.13.0.tar.bz2";
locale = "hsb";
arch = "linux-i686";
sha256 = "2a1a8f996815b7a57ba62f589393f7ecab7918a5acb9cbd54d901e014a9de730";
sha256 = "d393a1a8ec99b4b03eaa26560b5280c863b8935eba7274f69af54f9eae7cf365";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/hu/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/hu/thunderbird-102.13.0.tar.bz2";
locale = "hu";
arch = "linux-i686";
sha256 = "c7d541bbefeecc9cf1eaaa975205d7c8c9530a26746a3e8e9e4a9faea95fd99d";
sha256 = "d796099393afd865b7b3d37917f921dc3e667c0b0bd7dacb955a1d239620e723";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/hy-AM/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/hy-AM/thunderbird-102.13.0.tar.bz2";
locale = "hy-AM";
arch = "linux-i686";
sha256 = "41e1620345bbc30555e5a09459937ad5bd0ca0198aeab0065ade133f71aea34c";
sha256 = "a9cd46e49d6fac36a76c0b2a7728099b980923ffa4f16a398b6e6b1ed975f421";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/id/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/id/thunderbird-102.13.0.tar.bz2";
locale = "id";
arch = "linux-i686";
sha256 = "3ad8a34d3d92a83832135618158a93624e6063a4593237ebc94623c45a71b9bb";
sha256 = "621b0df18242dfd0d64b3554411e150e9249475a99918ec9d2e6ee8aa13ce602";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/is/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/is/thunderbird-102.13.0.tar.bz2";
locale = "is";
arch = "linux-i686";
sha256 = "15d378b909c271d87137aca66ac9e697b7b7de2fa17d24914873cd42af3c1613";
sha256 = "1a01815ae59babb7bef64a0d3768fbec23e5bbbed25bcfb37677825df72f29f7";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/it/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/it/thunderbird-102.13.0.tar.bz2";
locale = "it";
arch = "linux-i686";
sha256 = "8a761bf97c76d30e860a4cba1e2b3dcda550c20e87953f5b3903f2b859f2f41f";
sha256 = "e877a7bea6eb184352aa9f91f112059737f7709d9eaa27c3b911c91437e220bb";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/ja/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/ja/thunderbird-102.13.0.tar.bz2";
locale = "ja";
arch = "linux-i686";
sha256 = "2c9e60e49694770dd13493c3fd7f61e61a8ecc3d1e3521c3df4f5e403a0cb4da";
sha256 = "a9fe2b1273745213de8a3e723326db37cfe3446cf0922d55dd371c52dd6942f3";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/ka/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/ka/thunderbird-102.13.0.tar.bz2";
locale = "ka";
arch = "linux-i686";
sha256 = "8f6aa7f110e435eb21b80b43545c4bebc83d78c3524b58c9b2b9fdb7576a1caf";
sha256 = "d13862201e1a4b2911d820ede69e54c239656e91fb66594a789dd617efbc705f";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/kab/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/kab/thunderbird-102.13.0.tar.bz2";
locale = "kab";
arch = "linux-i686";
sha256 = "0aca25c9f560c967352452f584857ec1670bbeef93cb5126a5a369fa2e2bfbb3";
sha256 = "3dccc3b3163c332c85d6171e6c5a366d1b6cc2d681b8b49413f8e119b554d6ef";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/kk/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/kk/thunderbird-102.13.0.tar.bz2";
locale = "kk";
arch = "linux-i686";
sha256 = "b3fd7ad0219c0d7cccd6e8d1ff6d57bb9ee9454982390a5eb1c25da0362e6a04";
sha256 = "4f236eb6094b24ad20fd1b9206b298539c62550d64ea6faab5b9e5c7af1b92a1";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/ko/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/ko/thunderbird-102.13.0.tar.bz2";
locale = "ko";
arch = "linux-i686";
sha256 = "878550b8d1b6b702969e1f44b11335581b74f49cda275128b5e888b1bb1c65c6";
sha256 = "12138c2913e4ace3f772218cad8428816a7f3053371e41160b2eac708aade294";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/lt/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/lt/thunderbird-102.13.0.tar.bz2";
locale = "lt";
arch = "linux-i686";
sha256 = "4adb4e7fb9e2858d08ba07ac0c45c39f19ea607454350406b66a7b8119d47eac";
sha256 = "63dab76b710a4733ce5eba4120bd3da6c8b98632e96c074ee093969fb40984f8";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/lv/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/lv/thunderbird-102.13.0.tar.bz2";
locale = "lv";
arch = "linux-i686";
sha256 = "6de09c4e8d7d59a6d3397b42225a506820fd7270e0ee9397987ff8c1b39a9647";
sha256 = "ac18773d6fdbfb92cd30a8c33973bad927a82274dcd24c4cec23fd815256da39";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/ms/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/ms/thunderbird-102.13.0.tar.bz2";
locale = "ms";
arch = "linux-i686";
sha256 = "0c35682230d3250e3be1aad81d39507f814f701e3495b4eb6d4c044081848f82";
sha256 = "1bc302e2dd379a25c708edd51644f18331a73866e83add07b109890f5778edac";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/nb-NO/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/nb-NO/thunderbird-102.13.0.tar.bz2";
locale = "nb-NO";
arch = "linux-i686";
sha256 = "af75db1085dcf182c5570b47530685413e4ba425cd05c94c0280ae65dc4a54f4";
sha256 = "4d1655e7a258dfe4ef5c9863d47fcf8b01f4547f9a4cc2e676c3f3bc98412052";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/nl/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/nl/thunderbird-102.13.0.tar.bz2";
locale = "nl";
arch = "linux-i686";
sha256 = "9ed4e326655f19d2bd9f373a3f0f0211a9c44a1d12ebb0bf84afe1a40d65c7cf";
sha256 = "168227b97f2ffc7c8a99dc87b7145135b66ed6148eee4506540e3044d643e8fb";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/nn-NO/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/nn-NO/thunderbird-102.13.0.tar.bz2";
locale = "nn-NO";
arch = "linux-i686";
sha256 = "2736a80c98790bab8a83bdf6dd0c8d627b5605f723d4625a90a8923c905cea5b";
sha256 = "d9dcbddf067edd1baaaa31468f32fb6f4ccd6278370c8c757e602f980e1685d8";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/pa-IN/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/pa-IN/thunderbird-102.13.0.tar.bz2";
locale = "pa-IN";
arch = "linux-i686";
sha256 = "1145f7b27c3472461c36312598e8e2fb97f0287571ab487a5faa72a55cb67cd8";
sha256 = "0b4d038a3cbcfdc5c34322a1cc760a996ba6542da144516cffc74e2ab7c04347";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/pl/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/pl/thunderbird-102.13.0.tar.bz2";
locale = "pl";
arch = "linux-i686";
sha256 = "f620e69104a461f0376279f5e67164ee153ece99230e5f3f8607dffc3830c8ca";
sha256 = "698bb68efacac0a8023729d2870da6932b1f80ec960d25fa259aed1b750f33ec";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/pt-BR/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/pt-BR/thunderbird-102.13.0.tar.bz2";
locale = "pt-BR";
arch = "linux-i686";
sha256 = "45410c053ee09fbe9eb669951cdc1aea923327134e8f6149a57157bad7980dc8";
sha256 = "e48c9494bccad7ea3a57a4f460edde3ff92b0f55eff3be082fbdf526d0192a0b";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/pt-PT/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/pt-PT/thunderbird-102.13.0.tar.bz2";
locale = "pt-PT";
arch = "linux-i686";
sha256 = "606e06996c137d5100fb41cfed3eb64f0d133412119d1dd9a0ac77c69dd3a9bd";
sha256 = "1afea038d789d2d8de1491d44273929557dfdcdd4241c60e404e2528320be2a5";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/rm/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/rm/thunderbird-102.13.0.tar.bz2";
locale = "rm";
arch = "linux-i686";
sha256 = "0c56f5bbcd93ebcf719211b745655bdd12c804e797a61a35725aefc9330ec039";
sha256 = "be4ab3c712469ed664b98ab9072e081cbc3ca82e76645c91c85b0073c6de6f6f";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/ro/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/ro/thunderbird-102.13.0.tar.bz2";
locale = "ro";
arch = "linux-i686";
sha256 = "2fa1770ba6c0f48565cdaa1a380f1a02d7c5bbf399a8e8733d534974496fc5fd";
sha256 = "e0d7f59728c25e47c69e7317cf51da00204c5258ddddc47e41951b1e925f503d";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/ru/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/ru/thunderbird-102.13.0.tar.bz2";
locale = "ru";
arch = "linux-i686";
sha256 = "5e163f9d577fa6b9ac90c68332f987627da0eddac178477fe2bc6086fe1b350b";
sha256 = "2b11c68a1f8f563225352681c731f56fc62e9f82ca083d74ae450d67511a37fc";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/sk/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/sk/thunderbird-102.13.0.tar.bz2";
locale = "sk";
arch = "linux-i686";
sha256 = "2fafac4b35aca28cdc0d5cb8052a7235586ab5c8c6b8407386586e395fee41dd";
sha256 = "5e60a97be9196398e5e517be8e15c500c6d5b86edf57c8e185f627e8392f5555";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/sl/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/sl/thunderbird-102.13.0.tar.bz2";
locale = "sl";
arch = "linux-i686";
sha256 = "e8eb2687ef4600143bf1a6174ddc01c9e12a33d82ceb479b4924704862ce5b44";
sha256 = "3bed2e3474989e68a68e743c429e6fedea5630050a45dc3736b481d8cf953173";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/sq/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/sq/thunderbird-102.13.0.tar.bz2";
locale = "sq";
arch = "linux-i686";
sha256 = "22d546d1b351894bd6e9b37570c32daf631e43f5cf1ba12783ba4c8b8b0f80b1";
sha256 = "849c502856746ec05120974a343c19183071a79f66b77d6dd1060f58d87049a2";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/sr/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/sr/thunderbird-102.13.0.tar.bz2";
locale = "sr";
arch = "linux-i686";
sha256 = "4f3005db6f7ecf49f41e38a23af1d10d87b1df2f83e004137ba5a7ea4eb554b3";
sha256 = "bc8228e4331bc9e862acecd5d01b57079423eeeb7967e1b1ab2b4ddd64f41b43";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/sv-SE/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/sv-SE/thunderbird-102.13.0.tar.bz2";
locale = "sv-SE";
arch = "linux-i686";
sha256 = "fc3dc64402a0ee3eeb0704480af026c4204eba64630ba8d47ca6a4bc003c05af";
sha256 = "3ccb87a29f4c1b063da10646322e57b92480cb51df56d2ad41433dd5bf6f3a48";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/th/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/th/thunderbird-102.13.0.tar.bz2";
locale = "th";
arch = "linux-i686";
sha256 = "02850d8dbb41dd178fe6ae6ec5e0fdaf35c7afdda5c07801b03ba2594d89e76d";
sha256 = "05f02ab04665e4aba0d4b1859170138b5b6e998bebb310f41883f92e8734b337";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/tr/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/tr/thunderbird-102.13.0.tar.bz2";
locale = "tr";
arch = "linux-i686";
sha256 = "bdc704b6ab1d9061140ba6e8083ddc77eac69284455920c451151fb3a27a35d8";
sha256 = "2dffa62fb27e406207d73a86669f4857319e781e9b99d21a95d04357e509ec1c";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/uk/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/uk/thunderbird-102.13.0.tar.bz2";
locale = "uk";
arch = "linux-i686";
sha256 = "5fbd2f2a2426c6994fc4aa1f32c59fa3b5f3dc5d0157407119f0033fb5f6277e";
sha256 = "6c8c42b9d14df637279898eda706cb1f34018ef2888615ead3f5804a344ecd41";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/uz/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/uz/thunderbird-102.13.0.tar.bz2";
locale = "uz";
arch = "linux-i686";
sha256 = "bd4bcdbbf474e0edd1d76757603826f52f95eb082f3aae11c0df85a8c6602ad4";
sha256 = "aca1844cd42125fa4f03ecc30e0339a8a0a5b5e9156812bf4d50f88feb69cf0e";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/vi/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/vi/thunderbird-102.13.0.tar.bz2";
locale = "vi";
arch = "linux-i686";
sha256 = "2c72cbabe914af118c6e29acb035a983884f629aa3bf9047a4e17c8329ced1a7";
sha256 = "7aa12859972ac0b49f01ce027158942e94e4226f16374f2a466bc86bedf68492";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/zh-CN/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/zh-CN/thunderbird-102.13.0.tar.bz2";
locale = "zh-CN";
arch = "linux-i686";
sha256 = "2c83f1997030cd94b020568d1678b96118a108979b4fbe5bc87a0b1cf27d19b9";
sha256 = "4df04c2f978ba6927b8f7b1b20c4a93e0b98c5a7cf3923ba76ceab3a1c474025";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.11.2/linux-i686/zh-TW/thunderbird-102.11.2.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/102.13.0/linux-i686/zh-TW/thunderbird-102.13.0.tar.bz2";
locale = "zh-TW";
arch = "linux-i686";
sha256 = "c054c4762bb6e78a80d610020c1eaf10b0139d85b153157f083a28af652fb531";
sha256 = "f01c1ceb2303feb3272345705275f92e01e380e521d220b73ad268b6c1667092";
}
];
}

View File

@ -5,13 +5,13 @@ rec {
thunderbird-102 = (buildMozillaMach rec {
pname = "thunderbird";
version = "102.12.0";
version = "102.13.0";
application = "comm/mail";
applicationName = "Mozilla Thunderbird";
binaryName = pname;
src = fetchurl {
url = "mirror://mozilla/thunderbird/releases/${version}/source/thunderbird-${version}.source.tar.xz";
sha512 = "303787a8f22a204e48784d54320d5f4adaeeeedbe4c2294cd26ad75792272ffc9453be7f0ab1434214b61a2cc46982c23c4fd447c4d80d588df4a7800225ddee";
sha512 = "1ed48220f91cc2c38f59067664c02f1f2098c843810b8f81cb8dee4fe98911d87aac352ab8639c68d0eed74297240cd9e0ce0e64a40360511be85315f2bfcfc6";
};
extraPatches = [
# The file to be patched is different from firefox's `no-buildconfig-ffx90.patch`.

View File

@ -3,24 +3,21 @@
, fetchFromGitHub
, pkg-config
, libgit2
, openssl
, zlib
, stdenv
, darwin
}:
rustPlatform.buildRustPackage rec {
pname = "gql";
version = "0.2.0";
version = "0.3.0";
src = fetchFromGitHub {
owner = "AmrDeveloper";
repo = "GQL";
rev = version;
hash = "sha256-3x4ExSEs22wFP4Z5cY9+F8yyVc5voHAT1odnyzkSlhc=";
hash = "sha256-n0v7Mvs7JL3YRsNov4/beoUAW8B4oKjDiRa3QY65V/o=";
};
cargoHash = "sha256-Xmf64yRyWrqYO/ydxEblChVPKnR47Uc55FVAY3DU7no=";
cargoHash = "sha256-dDjx84LPV3BHMzqyhJW73Z+0R4DlPsHhRlG62HGNxjI=";
nativeBuildInputs = [
pkg-config
@ -28,26 +25,15 @@ rustPlatform.buildRustPackage rec {
buildInputs = [
libgit2
openssl
zlib
] ++ lib.optionals stdenv.isDarwin [
darwin.apple_sdk.frameworks.Security
];
env = {
OPENSSL_NO_VENDOR = true;
};
# Cargo.lock is outdated
preConfigure = ''
cargo metadata --offline
'';
meta = with lib; {
description = "A SQL like query language to perform queries on .git files";
homepage = "https://github.com/AmrDeveloper/GQL";
changelog = "https://github.com/AmrDeveloper/GQL/releases/tag/${src.rev}";
license = licenses.mit;
maintainers = with maintainers; [ figsoda ];
mainProgram = "gitql";
};
}

View File

@ -13,16 +13,16 @@
rustPlatform.buildRustPackage rec {
pname = "dmlive";
version = "5.2.0";
version = "5.3.0";
src = fetchFromGitHub {
owner = "THMonster";
repo = pname;
rev = "53c55cb3c087bc00a882331307d210c2965b04d1"; # no tag
hash = "sha256-k15IjNGiY0ISEyWxlhZST4dtink/OtoJtv4/8nUn7qY=";
rev = "92ce90163c3d84f0fab99e6dc192a65c616ffd81"; # no tag
hash = "sha256-3eRC/XmvZXe3DyXOqSkNpTbddtGr/lcaTaFYqZLZq+w=";
};
cargoHash = "sha256-0zOwqxD3WX/4e19ywpghdfoGmh2KC+70HbTSYkVHzUA=";
cargoHash = "sha256-TQTdz+ZC5cZxWhccnUmXnq+j2EYM5486mIjn6Poe5a8=";
OPENSSL_NO_VENDOR = true;

View File

@ -56,6 +56,10 @@ stdenv.mkDerivation rec {
tools/lkl/lib/hijack/liblkl-hijack.so $lib/lib
'';
postFixup = ''
ln -s $out/bin/lklfuse $out/bin/mount.fuse.lklfuse
'';
# We turn off format and fortify because of these errors (fortify implies -O2, which breaks the jitter entropy code):
# fs/xfs/xfs_log_recover.c:2575:3: error: format not a string literal and no format arguments [-Werror=format-security]
# crypto/jitterentropy.c:54:3: error: #error "The CPU Jitter random number generator must not be compiled with optimizations. See documentation. Use the compiler switch -O0 for compiling jitterentropy.c."

File diff suppressed because it is too large Load Diff

View File

@ -6,15 +6,17 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
anyhow = "1.0.65"
base64 = "0.13.0"
digest = "0.10.5"
rayon = "1.5.3"
serde = { version = "1.0.145", features = ["derive"] }
serde_json = "1.0.85"
anyhow = "1.0.71"
backoff = "0.4.0"
base64 = "0.21.2"
digest = "0.10.7"
env_logger = "0.10.0"
isahc = { version = "1.7.2", default_features = false }
rayon = "1.7.0"
serde = { version = "1.0.164", features = ["derive"] }
serde_json = "1.0.99"
sha1 = "0.10.5"
sha2 = "0.10.6"
tempfile = "3.3.0"
ureq = { version = "2.5.0" }
url = { version = "2.3.1", features = ["serde"] }
walkdir = "2.3.2"
sha2 = "0.10.7"
tempfile = "3.6.0"
url = { version = "2.4.0", features = ["serde"] }
walkdir = "2.3.3"

View File

@ -1,4 +1,4 @@
{ lib, stdenvNoCC, rustPlatform, makeWrapper, Security, gnutar, gzip, nix, testers, fetchurl, prefetch-npm-deps, fetchNpmDeps }:
{ lib, stdenvNoCC, rustPlatform, makeWrapper, pkg-config, curl, gnutar, gzip, nix, testers, fetchurl, cacert, prefetch-npm-deps, fetchNpmDeps }:
{
prefetch-npm-deps = rustPlatform.buildRustPackage {
@ -16,8 +16,8 @@
cargoLock.lockFile = ./Cargo.lock;
nativeBuildInputs = [ makeWrapper ];
buildInputs = lib.optional stdenvNoCC.isDarwin Security;
nativeBuildInputs = [ makeWrapper pkg-config ];
buildInputs = [ curl ];
postInstall = ''
wrapProgram "$out/bin/prefetch-npm-deps" --prefix PATH : ${lib.makeBinPath [ gnutar gzip nix ]}
@ -165,6 +165,12 @@
dontInstall = true;
impureEnvVars = lib.fetchers.proxyImpureEnvVars;
SSL_CERT_FILE = if (hash_.outputHash == "" || hash_.outputHash == lib.fakeSha256 || hash_.outputHash == lib.fakeSha512 || hash_.outputHash == lib.fakeHash)
then "${cacert}/etc/ssl/certs/ca-bundle.crt"
else "/no-cert-file.crt";
outputHashMode = "recursive";
} // hash_ // forceGitDeps_);
}

View File

@ -1,3 +1,4 @@
use base64::prelude::{Engine, BASE64_STANDARD};
use digest::{Digest, Update};
use serde::{Deserialize, Serialize};
use sha1::Sha1;
@ -52,14 +53,14 @@ impl Cache {
let (algo, hash, integrity) = if let Some(integrity) = integrity {
let (algo, hash) = integrity.split_once('-').unwrap();
(algo.to_string(), base64::decode(hash)?, integrity)
(algo.to_string(), BASE64_STANDARD.decode(hash)?, integrity)
} else {
let hash = Sha512::new().chain(data).finalize();
(
String::from("sha512"),
hash.to_vec(),
format!("sha512-{}", base64::encode(hash)),
format!("sha512-{}", BASE64_STANDARD.encode(hash)),
)
};

View File

@ -16,6 +16,7 @@ use walkdir::WalkDir;
mod cacache;
mod parse;
mod util;
fn cache_map_path() -> Option<PathBuf> {
env::var_os("CACHE_MAP_PATH").map(PathBuf::from)
@ -172,6 +173,8 @@ fn map_cache() -> anyhow::Result<HashMap<Url, String>> {
}
fn main() -> anyhow::Result<()> {
env_logger::init();
let args = env::args().collect::<Vec<_>>();
if args.len() < 2 {
@ -182,6 +185,18 @@ fn main() -> anyhow::Result<()> {
process::exit(1);
}
if let Ok(jobs) = env::var("NIX_BUILD_CORES") {
if !jobs.is_empty() {
rayon::ThreadPoolBuilder::new()
.num_threads(
jobs.parse()
.expect("NIX_BUILD_CORES must be a whole number"),
)
.build_global()
.unwrap();
}
}
if args[1] == "--fixup-lockfile" {
let lock = serde_json::from_str(&fs::read_to_string(&args[2])?)?;

View File

@ -3,15 +3,15 @@ use lock::UrlOrString;
use rayon::prelude::*;
use serde_json::{Map, Value};
use std::{
fs, io,
fs,
io::{self, Read},
process::{Command, Stdio},
thread,
time::Duration,
};
use tempfile::{tempdir, TempDir};
use ureq::{Error, ErrorKind, Response};
use url::Url;
use crate::util;
pub mod lock;
pub fn lockfile(content: &str, force_git_deps: bool) -> anyhow::Result<Vec<Package>> {
@ -106,7 +106,7 @@ impl Package {
let specifics = match get_hosted_git_url(&resolved)? {
Some(hosted) => {
let mut body = get_response(hosted.as_str())?.into_reader();
let mut body = util::get_url_with_retry(&hosted)?;
let workdir = tempdir()?;
@ -157,9 +157,7 @@ impl Package {
Specifics::Registry { .. } => {
let mut body = Vec::new();
get_response(self.url.as_str())?
.into_reader()
.read_to_end(&mut body)?;
util::get_url_with_retry(&self.url)?.read_to_end(&mut body)?;
Ok(body)
}
@ -191,31 +189,6 @@ impl Package {
}
}
#[allow(clippy::result_large_err)]
fn get_response(url: &str) -> Result<Response, Error> {
for _ in 0..4 {
match ureq::get(url).call() {
Err(Error::Status(503 | 429, r)) => {
let retry: Option<u64> = r.header("retry-after").and_then(|h| h.parse().ok());
let retry = retry.unwrap_or(5);
eprintln!("{} for {}, retry in {}", r.status(), r.get_url(), retry);
thread::sleep(Duration::from_secs(retry));
}
Err(Error::Transport(t)) => match t.kind() {
ErrorKind::ConnectionFailed | ErrorKind::Dns | ErrorKind::Io => {
let retry = 5;
eprintln!("{} for {}, retry in {}", t.kind(), url, retry);
thread::sleep(Duration::from_secs(retry));
}
_ => return Err(Error::Transport(t)),
},
result => return result,
};
}
// Ran out of retries; try one last time and return whatever result we get.
ureq::get(url).call()
}
#[allow(clippy::case_sensitive_file_extension_comparisons)]
fn get_hosted_git_url(url: &Url) -> anyhow::Result<Option<Url>> {
if ["git", "git+ssh", "git+https", "ssh"].contains(&url.scheme()) {

View File

@ -0,0 +1,45 @@
use backoff::{retry, ExponentialBackoff};
use isahc::{
config::{CaCertificate, Configurable, RedirectPolicy, SslOption},
Body, Request, RequestExt,
};
use std::{env, path::Path};
use url::Url;
pub fn get_url(url: &Url) -> Result<Body, isahc::Error> {
let mut request = Request::get(url.as_str()).redirect_policy(RedirectPolicy::Limit(10));
// Respect SSL_CERT_FILE if environment variable exists
if let Ok(ssl_cert_file) = env::var("SSL_CERT_FILE") {
if Path::new(&ssl_cert_file).exists() {
// When file exists, use it. NIX_SSL_CERT_FILE will still override.
request = request.ssl_ca_certificate(CaCertificate::file(ssl_cert_file));
} else if env::var("outputHash").is_ok() {
// When file does not exist, assume we are downloading in a FOD and
// therefore do not need to check certificates, since the output is
// already hashed.
request = request.ssl_options(SslOption::DANGER_ACCEPT_INVALID_CERTS);
}
}
Ok(request.body(())?.send()?.into_body())
}
pub fn get_url_with_retry(url: &Url) -> Result<Body, isahc::Error> {
retry(ExponentialBackoff::default(), || {
get_url(url).map_err(|err| {
if err.is_network() || err.is_timeout() {
backoff::Error::transient(err)
} else {
backoff::Error::permanent(err)
}
})
})
.map_err(|backoff_err| match backoff_err {
backoff::Error::Permanent(err)
| backoff::Error::Transient {
err,
retry_after: _,
} => err,
})
}

View File

@ -55,7 +55,6 @@
, kxmlgui
, plasma-framework
, libqaccessibilityclient
, python3
}:
# TODO (ttuegel): investigate qmlplugindump failure

View File

@ -36,7 +36,7 @@ buildType = if stdenv.isDarwin then
edk2 = buildStdenv.mkDerivation {
pname = "edk2";
version = "202302";
version = "202305";
patches = [
# pass targetPrefix as an env var
@ -52,7 +52,7 @@ edk2 = buildStdenv.mkDerivation {
repo = "edk2";
rev = "edk2-stable${edk2.version}";
fetchSubmodules = true;
sha256 = "sha256-KZ5bTdaStO2M1hLPx9LsUSMl9NEiZeYMmFiShxCJqJM=";
hash = "sha256-htOvV43Hw5K05g0SF3po69HncLyma3BtgpqYSdzRG4s=";
};
nativeBuildInputs = [ pythonEnv ];

View File

@ -5,7 +5,7 @@ let
getPatches = dir:
let files = builtins.attrNames (builtins.readDir dir);
in map (f: dir + ("/" + f)) files;
mkFlutter = { version, engineVersion, dartVersion, hash, dartHash, patches }:
mkFlutter = { version, engineVersion, dartVersion, flutterHash, dartHash, patches }:
let
args = {
inherit version engineVersion patches;
@ -21,12 +21,34 @@ let
url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${dartVersion}/sdk/dartsdk-linux-arm64-release.zip";
sha256 = dartHash.aarch64-linux;
};
"${dartVersion}-x86_64-darwin" = fetchzip {
url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${dartVersion}/sdk/dartsdk-macos-x64-release.zip";
sha256 = dartHash.x86_64-darwin;
};
"${dartVersion}-aarch64-darwin" = fetchzip {
url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${dartVersion}/sdk/dartsdk-macos-arm64-release.zip";
sha256 = dartHash.aarch64-darwin;
};
};
};
src = fetchzip {
url = "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${version}-stable.tar.xz";
sha256 = hash;
};
src = {
x86_64-linux = fetchzip {
url = "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${version}-stable.tar.xz";
sha256 = flutterHash.x86_64-linux;
};
aarch64-linux = fetchzip {
url = "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${version}-stable.tar.xz";
sha256 = flutterHash.aarch64-linux;
};
x86_64-darwin = fetchzip {
url = "https://storage.googleapis.com/flutter_infra_release/releases/stable/macos/flutter_macos_${version}-stable.zip";
sha256 = flutterHash.x86_64-darwin;
};
aarch64-darwin = fetchzip {
url = "https://storage.googleapis.com/flutter_infra_release/releases/stable/macos/flutter_macos_arm64_${version}-stable.zip";
sha256 = flutterHash.aarch64-darwin;
};
}.${stdenv.hostPlatform.system};
};
in
(mkCustomFlutter args).overrideAttrs (prev: next: {
@ -55,10 +77,17 @@ in
version = "3.10.5";
engineVersion = "45f6e009110df4f34ec2cf99f63cf73b71b7a420";
dartVersion = "3.0.5";
hash = "sha256-lLppUQzu+fl81TMYSPD+HA83BqeIg7bXpURyo49NPwI=";
dartHash = {
x86_64-linux = "sha256-UVVwPFk0qsKNR4JZMOGSGh1T482MN/8Xp4MZ3SA3C28=";
aarch64-linux = "sha256-phzaFfrv7qbZOOhPq92q39R6mr5vFeBqEmYDU7e7lZQ=";
x86_64-darwin = "sha256-4gJ659bNzs2lfI1LRwFACgu/ttkj+3xIrqLijju+CaI=";
aarch64-darwin = "sha256-RJt+muq5IrcAhVLYEgdbVygcY1oB7tnVCN+iqktC+6c=";
};
flutterHash = rec {
x86_64-linux = "sha256-lLppUQzu+fl81TMYSPD+HA83BqeIg7bXpURyo49NPwI=";
aarch64-linux = x86_64-linux;
x86_64-darwin = "sha256-1ZC5aCoGVBCeTSsu/ZEl1v53lLnzulx8Ya6YXvo4yIY=";
aarch64-darwin = "sha256-TCMempLjO47IbP5MAZVHlXXvNaURGo+EbaL0K8e27wU=";
};
patches = flutter3Patches;
};
@ -67,10 +96,17 @@ in
version = "3.7.12";
engineVersion = "1a65d409c7a1438a34d21b60bf30a6fd5db59314";
dartVersion = "2.19.6";
hash = "sha256-5ExDBQXIpoZ5NwS66seY3m9/V8xDiyq/RdzldAyHdEE=";
dartHash = {
x86_64-linux = "sha256-4ezRuwhQHVCxZg5WbzU/tBUDvZVpfCo6coDE4K0UzXo=";
aarch64-linux = "sha256-pYmClIqOo0sRPOkrcF4xQbo0mHlrr1TkhT1fnNyYNck=";
x86_64-darwin = "sha256-tuIQhIOX2ub0u99CW/l7nCya9YVNokCZNgbVFqO4ils=";
aarch64-darwin = "sha256-Oe8/0ygDN3xf5/2I3N/OBzF0bps7Mg0K2zJKj+E9Nak=";
};
flutterHash = rec {
x86_64-linux = "sha256-5ExDBQXIpoZ5NwS66seY3m9/V8xDiyq/RdzldAyHdEE=";
aarch64-linux = x86_64-linux;
x86_64-darwin = "sha256-cJF8KB9fNb3hTZShDAPsMmr1neRdIMLvIl/m2tpzwQs=";
aarch64-darwin = "sha256-yetEE65UP2Wh9ocx7nClQjYLHO6lIbZPay1+I2tDSM4=";
};
patches = flutter3Patches;
};

View File

@ -2,10 +2,11 @@
, stdenv
, hostPlatform
, engineVersion
, fetchurl
, fetchzip
, autoPatchelfHook
, gtk3
, unzip
}:
let
@ -44,6 +45,56 @@ let
};
};
darwin = {
"arm64" = {
base = [
{ archive = "artifacts.zip"; }
{ archive = "font-subset.zip"; }
];
variants = lib.genAttrs [ "profile" "release" ]
(variant: [
{ archive = "artifacts.zip"; }
]);
};
"x64" = {
base = [
{ archive = "FlutterEmbedder.framework.zip"; }
{ archive = "FlutterMacOS.framework.zip"; }
{ archive = "artifacts.zip"; }
{ archive = "font-subset.zip"; }
{ archive = "gen_snapshot.zip"; }
];
variants.profile = [
{ archive = "FlutterMacOS.framework.zip"; }
{ archive = "artifacts.zip"; }
{ archive = "gen_snapshot.zip"; }
];
variants.release = [
{ archive = "FlutterMacOS.dSYM.zip"; }
{ archive = "FlutterMacOS.framework.zip"; }
{ archive = "artifacts.zip"; }
{ archive = "gen_snapshot.zip"; }
];
};
};
ios =
(lib.genAttrs
[ "" ]
(arch:
{
base = [
{ archive = "artifacts.zip"; }
];
variants.profile = [
{ archive = "artifacts.zip"; }
];
variants.release = [
{ archive = "artifacts.zip"; }
{ archive = "Flutter.dSYM.zip"; }
];
}));
linux = lib.genAttrs
[ "arm64" "x64" ]
(arch:
@ -85,18 +136,29 @@ let
let
artifactDirectory = if platform == null then null else "${platform}${lib.optionalString (variant != null) "-${variant}"}";
archiveBasename = lib.removeSuffix ".${(lib.last (lib.splitString "." archive))}" archive;
overrideUnpackCmd = builtins.elem archive [ "FlutterEmbedder.framework.zip" "FlutterMacOS.framework.zip" ];
in
stdenv.mkDerivation ({
pname = "flutter-artifact${lib.optionalString (platform != null) "-${artifactDirectory}"}-${archiveBasename}";
version = engineVersion;
src = fetchzip {
url = "https://storage.googleapis.com/flutter_infra_release/flutter/${engineVersion}${lib.optionalString (platform != null) "/${artifactDirectory}"}/${archive}";
stripRoot = false;
hash = (if artifactDirectory == null then hashes else hashes.${artifactDirectory}).${archive};
};
nativeBuildInputs = [ unzip ]
++ lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ];
nativeBuildInputs = [ autoPatchelfHook ];
src =
if overrideUnpackCmd then
(fetchurl {
url = "https://storage.googleapis.com/flutter_infra_release/flutter/${engineVersion}${lib.optionalString (platform != null) "/${artifactDirectory}"}/${archive}";
hash = (if artifactDirectory == null then hashes else hashes.${artifactDirectory}).${archive};
}) else
(fetchzip {
url = "https://storage.googleapis.com/flutter_infra_release/flutter/${engineVersion}${lib.optionalString (platform != null) "/${artifactDirectory}"}/${archive}";
stripRoot = false;
hash = (if artifactDirectory == null then hashes else hashes.${artifactDirectory}).${archive};
});
setSourceRoot = if overrideUnpackCmd then "sourceRoot=`pwd`" else null;
unpackCmd = if overrideUnpackCmd then "unzip -o $src -d $out" else null;
installPhase =
let
@ -117,13 +179,13 @@ let
(architecture: variants: {
base = map
(args: mkArtifactDerivation ({
platform = "${os}-${architecture}";
platform = "${os}${lib.optionalString (architecture != "") "-${architecture}"}";
} // args))
variants.base;
variants = builtins.mapAttrs
(variant: variantArtifacts: map
(args: mkArtifactDerivation ({
platform = "${os}-${architecture}";
platform = "${os}${lib.optionalString (architecture != "") "-${architecture}"}";
inherit variant;
} // args))
variantArtifacts)

View File

@ -6,10 +6,12 @@
android-arm-profile = {
"artifacts.zip" = "sha256-MErLoGJWXg4yJ6b6c5bqP8Nat6O7eYSfM71mMNAAQf4=";
"linux-x64.zip" = "sha256-0TZQ05HR7NRqHzeoHZ/sOrjKiSvCpMUH85YXXzV4URg=";
"darwin-x64.zip" = "sha256-gOmxGurYyuuGxPnzK+2O1s7d7x514R9MfincibxVTCI=";
};
android-arm-release = {
"artifacts.zip" = "sha256-hU4S4FOqUGokByZ47nzOqQ4A9QFshruqrpJvJUBHUho=";
"linux-x64.zip" = "sha256-AqNlqjOht+c2sdW5ReoF66ZJWJl1W4vGKbQ3YyderRY=";
"darwin-x64.zip" = "sha256-UiJNbIvjYvIX2oFNCz+TurUdhHS8vcl9X6WEkEs5hvU=";
};
android-arm64 = {
"artifacts.zip" = "sha256-ApNg3Uu9gyGNsx7sdpTCz1yADVAI5ZuNHgvgiuH9IpQ=";
@ -17,10 +19,12 @@
android-arm64-profile = {
"artifacts.zip" = "sha256-D/8+WKPIkOaV3PwkCHiJROFlokm4lWWmtPQb93Yqwr0=";
"linux-x64.zip" = "sha256-S0RHLov6/C22VvGdvZV87Ybaxun8YBrw1gTgNklRcM0=";
"darwin-x64.zip" = "sha256-AWivGn0TCVEW+N8g9bpEP1JuKWhrccb+ANQgyLjBjfw=";
};
android-arm64-release = {
"artifacts.zip" = "sha256-OoYqHtwmT+VWJ+G+sMXM5+ux3h1Fnyo9Vj2za9cm5eE=";
"linux-x64.zip" = "sha256-NuXclg1a+Ofw5AWJ1tajpn2jYEZw6DluWxrFVL8rPfg=";
"darwin-x64.zip" = "sha256-/j5sVfyllkhsc9mpdbOqlT7VT1H6nD3Y+mYnWXDh0yI=";
};
android-x64 = {
"artifacts.zip" = "sha256-hrBvnzCj/24h5kat96avlgXi6WhMsos5aPlkgxOYo8Q=";
@ -28,10 +32,12 @@
android-x64-profile = {
"artifacts.zip" = "sha256-xzSj/2ah9aQoosaNGkSWFP3bMNJqRSFc0+78XEBHwzM=";
"linux-x64.zip" = "sha256-HfBiz1JWlBQ8KEfmf8uDlVzFlDt3+VF2VeY82tsMjHs=";
"darwin-x64.zip" = "sha256-J5JJH9GAQaQKahimb09fLC59VchPP15iMHY9bDMfdf8=";
};
android-x64-release = {
"artifacts.zip" = "sha256-TcfMeA+8Uf9yRrYdEIsjip0cKmSUm2Ow1tkoE9803XY=";
"linux-x64.zip" = "sha256-D6efb6pj9+xjPnJu3O+ZCmwfatBzasuFZEFRntAiU9U=";
"darwin-x64.zip" = "sha256-hDftGgKqW6tzH/+jFOYfzxssbS01XtiWEeycJr3QSoc=";
};
android-x86 = {
"artifacts.zip" = "sha256-nN66nIrcbJHq2S4oIT5e2NCv7mS5Kw+HBv3ReHs+d3Y=";
@ -39,8 +45,46 @@
android-x86-jit-release = {
"artifacts.zip" = "sha256-A8F6K78Ykp1rMsUmjD7B9nFFPAubZnqAqgWSzbNCRwk=";
};
darwin-arm64 = {
"artifacts.zip" = "sha256-lfkEToKFBBOee7KgOl1z/ZeMQwEBWkmAYb2Hbfk8dfg=";
"font-subset.zip" = "sha256-W7GnLvCobED7uyhpURF4T4SL4yZIQmE2JFQVQIxl0NI=";
};
darwin-arm64-profile = {
"artifacts.zip" = "sha256-DfYS+FEqjtq02jFRBqVR3SVWe4LAoPa5MMKWCbvF7mI=";
};
darwin-arm64-release = {
"artifacts.zip" = "sha256-gG/OcCJE3XPO6T8bltMtPxdlYX5HQ/4qYsdHe0OdDaE=";
};
darwin-x64 = {
"FlutterEmbedder.framework.zip" = "sha256-G84GGK6gtR+CYu9S/GhdNTL4KWqgFBp8QdvWOq+IZlk=";
"FlutterMacOS.framework.zip" = "sha256-1/txBoXDIs7Gn5zsZ4jYQXK73+iaZV4sRdYKqEBUTxU=";
"artifacts.zip" = "sha256-H7Moy6E1eRrOXYYAIgiJHOmstyy3YaCnu8O3IPr9BK8=";
"font-subset.zip" = "sha256-VSkG3zZw/4DDInwxPaMXT2B1LXIb0Ejkb2xf5SVrwW4=";
"gen_snapshot.zip" = "sha256-Pknv1fUcXGbWzt6So0DgWnvL4b43k51KMWiX1YXd2As=";
};
darwin-x64-profile = {
"FlutterMacOS.framework.zip" = "sha256-3umN1HNX4UA00EFsBnWS0X04QRKlcCnChDYd9L6x1L4=";
"artifacts.zip" = "sha256-8Aj2+nTKKeVLEYN+swVlVqRB/3fVSwrb3i1g1JUDsNY=";
"gen_snapshot.zip" = "sha256-bi3RqSdOQODpPmY+eBUQPiNeZ/bECoOUx/pOADpTZiA=";
};
darwin-x64-release = {
"FlutterMacOS.dSYM.zip" = "sha256-LfDQuCcBXEV3Jao/sbfIvjn1d2ZfZrWgzNzFE1zE3Rw=";
"FlutterMacOS.framework.zip" = "sha256-2xuPPJifdu/kvvtR0viMvbTOXfv8ndtNAhTmef8863o=";
"artifacts.zip" = "sha256-3p41zRjvWYCl/Kk/7/0MjV2FS10XEtyX1hYmxTHT8lU=";
"gen_snapshot.zip" = "sha256-ExXwj1QO1XQznZ49rW08tibA5BaURShE6pUYDokZfpE=";
};
"flutter_patched_sdk.zip" = "sha256-Pvsjttm5OwpJ/pW4UQXvvEiJYCM5CoZZfVXz5jef37k=";
"flutter_patched_sdk_product.zip" = "sha256-fhj2uUOrLwrzHrM6RNVpPNize5Qu6mLQDcSzLT2TbRA=";
ios = {
"artifacts.zip" = "sha256-yqJ4+lNsedRFbe11dBK4KGMX5+Nilj1V0i2E94n7q+0=";
};
ios-profile = {
"artifacts.zip" = "sha256-ZguLM1QoYyg5dXPw3Fl1zSLdbirShV3xZuxl1CfEf50=";
};
ios-release = {
"Flutter.dSYM.zip" = "sha256-Y57wt1y4NIdbRMM1r/d1Dv8bekwO9/9gpLkTEcw7Hfs=";
"artifacts.zip" = "sha256-Sm4Pkm1mWu3k5S+aws+kRpth+o3yTBYITg23LhnSViE=";
};
linux-arm64 = {
"artifacts.zip" = "sha256-xyKVaEFb5gVkVrPzDrOql5BmXGO0FnCSeXOoQ10ZFrw=";
"font-subset.zip" = "sha256-Ulwb6q2SzB4suMJhAM3zAwWOzlEImlu9Ha+w5u4QqIU=";
@ -75,10 +119,12 @@
android-arm-profile = {
"artifacts.zip" = "sha256-MZK1zaSv9yuZaVDR1dReCM7WRDxKql0yxsPa8WFc1yw=";
"linux-x64.zip" = "sha256-9OlBv2C6Msj73g624TixbstudCTbdIJ6PzPMsbQENy4=";
"darwin-x64.zip" = "sha256-lVJ31F7UMaXQym3touJQ2cN8svKBaWJurDTVZPeMzCo=";
};
android-arm-release = {
"artifacts.zip" = "sha256-tjHckwoxQkkKoyTl6+wBKK40mFDmSDvCPNhBHVA+xxw=";
"linux-x64.zip" = "sha256-zE9oYkv4WBcbgEdYfYIcdDXX3tnYfCg+3KA3oA03nYA=";
"darwin-x64.zip" = "sha256-mCr29gIn808NF4k8kdC7oLTSU6AXq7I/bJF3BBdJlAo=";
};
android-arm64 = {
"artifacts.zip" = "sha256-8W/JrOGhAzHWpM2Jh9vjdkaB6ODmCItqcmF47GqbNQk=";
@ -86,10 +132,12 @@
android-arm64-profile = {
"artifacts.zip" = "sha256-9SGBWp05lxLQTpLuzq8FYSQQOpjo8UL93Pv4YYFD4QE=";
"linux-x64.zip" = "sha256-5nH2AAxupRIhn8gNH+1V+vSP+qqfx5MS97EC4s3QHe8=";
"darwin-x64.zip" = "sha256-kkutEwKcj1wKJREbxbx8+DW53WVbizg6zKIFFVujgAM=";
};
android-arm64-release = {
"artifacts.zip" = "sha256-7O7RBfEo6enZtVNsnt4HH0bex8Xpz9mqCvb2LNLbg3Q=";
"linux-x64.zip" = "sha256-loucmX4+0R11L1nzewiMTeRZoB6wLK0WasW5W3rIvYU=";
"darwin-x64.zip" = "sha256-0bpNQDfIzQqwQpzThLfOXEEEpH/uCJCRF331d0/pzfs=";
};
android-x64 = {
"artifacts.zip" = "sha256-j7AezbyzH07yOR0/W1ttfCjMHMdOlXLQjAsu/ExqmqA=";
@ -97,10 +145,12 @@
android-x64-profile = {
"artifacts.zip" = "sha256-J8cqdcHoj1hpo6zY5R6S9lvkVXp7wvzQlurM7TEUe+k=";
"linux-x64.zip" = "sha256-YuRHctkDjLZVGQr+m5uM+AxYNLkfqycV4UNcAp7JavE=";
"darwin-x64.zip" = "sha256-Mw8C279cVbQHTdIsHhIT5HWe52X8XXbkIDpVcEz1tWc=";
};
android-x64-release = {
"artifacts.zip" = "sha256-uhq3fXcxXjF4/YHSkf6V4wToL9jOUKBm3978j/7xI/s=";
"linux-x64.zip" = "sha256-iJfatLW7jVcrfNdVx/QOPiyON5ce0tSNGOBx0TILrKE=";
"darwin-x64.zip" = "sha256-3P3QZ+jW3Jl6PJvRY9pBHQdhj8UcsHFAjln8q6UlL+A=";
};
android-x86 = {
"artifacts.zip" = "sha256-/xLacCi65hg1gEahty0btrc+NR/jfebSAIt31qwIlZY=";
@ -108,8 +158,46 @@
android-x86-jit-release = {
"artifacts.zip" = "sha256-Ntq0i+sFruDhlyp9VBxBnsNqqGoQeXMeIwfi+BNlr0Q=";
};
darwin-arm64 = {
"artifacts.zip" = "sha256-A21Tnn4jC5IzdL3c7n6/q9H6uJ/ofvJ+K9W8PPpAoYM=";
"font-subset.zip" = "sha256-NhnUOK1Gn4ekKOf5rDoy4HodzhlS8ylf/MN/6l4Dk18=";
};
darwin-arm64-profile = {
"artifacts.zip" = "sha256-aDWrz3bebC6kZRe2LgunsmFhbxJhmP1bsZv5A/SGF2Y=";
};
darwin-arm64-release = {
"artifacts.zip" = "sha256-F44e39KSX8juojFBV/CSvFES+RQW+gHKDWtfnydqiNo=";
};
darwin-x64 = {
"FlutterEmbedder.framework.zip" = "sha256-+S2unNH8cpfqUiPLTwGUUW00DdNYFDN8KM/O1pMdxQs=";
"FlutterMacOS.framework.zip" = "sha256-iCGXzxBhJGR6rWcECRg0W5Qv4I6ePo7UrWIqjQK1bWI=";
"artifacts.zip" = "sha256-2Ng0rxVDeMCH3kFHS7rhVd6R8oiJqvfsNDp+rzgtA50=";
"font-subset.zip" = "sha256-5IyNNLUT27WUCr61LjnMjmAZEv63ZaF+rl/p2XHFlVU=";
"gen_snapshot.zip" = "sha256-zPJaXPdvbQGx79c41XdRrBW/+3aV/INaPtO47+hHdxM=";
};
darwin-x64-profile = {
"FlutterMacOS.framework.zip" = "sha256-PV4sTACDGeLLPz+AchxngWrQypmmUVQ48bQlAfH323w=";
"artifacts.zip" = "sha256-LBosuXu9mPh5WT0Mmgu9rX5Nuy+iIGN8Xvi7uVAyFhc=";
"gen_snapshot.zip" = "sha256-douXVnavzSGBuld3WhwHagBNK6FEU679puM8/fNGz2I=";
};
darwin-x64-release = {
"FlutterMacOS.dSYM.zip" = "sha256-A8kyc1fmsGemgUVhI46yTC6XNkrXdoPYvwXomHoW6kM=";
"FlutterMacOS.framework.zip" = "sha256-dZ/MO9J+zanoGfvPaAinnANte92bQOlh697fd/LvGqA=";
"artifacts.zip" = "sha256-T/wxPd1LmstfGHr2Fx6cfhRifaGm6CUlig6cBMcOO5g=";
"gen_snapshot.zip" = "sha256-qeZxVp6btr/fUQRf7nOhlnSC03+QTcRaggiVOmPxVuo=";
};
"flutter_patched_sdk.zip" = "sha256-kRRFCqQGBDimqwMiSn4yRMNRfZHt03YJqsKW47IBIvQ=";
"flutter_patched_sdk_product.zip" = "sha256-BowamIQHPZgfcZbWG7OFrB5GeEwdcA7AdUrF2Y+KIds=";
ios = {
"artifacts.zip" = "sha256-VoofDPEBUW2jBrXg3Z556uC2UdrD9JCpioZNhX1p/P0=";
};
ios-profile = {
"artifacts.zip" = "sha256-5jDIqk7tWuRxXsAzrjBq9xzQrt/eREmmoEF3zc2xQ5M=";
};
ios-release = {
"Flutter.dSYM.zip" = "sha256-TuDld2LcHshl1mXcuIwfZgWLm1My4RpXUwI2B/QbLRk=";
"artifacts.zip" = "sha256-bGuUCKVqNNWWGVccVVKIBmCxTqgu4Q2Kj/Znnl9ZR2Q=";
};
linux-arm64 = {
"artifacts.zip" = "sha256-jME3ivE+M+ceAt3aGPSeVwPaW8UhwGQOoL5lmRUqrOU=";
"font-subset.zip" = "sha256-MqavBMXOlx5JX94Oe/8GGuuDNh7A2UkjiOrEhCDW5cc=";

View File

@ -5,6 +5,7 @@
, src
, lib
, stdenv
, darwin
, git
, which
}:
@ -18,6 +19,8 @@ let
outputs = [ "out" "cache" ];
buildInputs = [ git ];
nativeBuildInputs = [ ]
++ lib.optionals stdenv.hostPlatform.isDarwin [ darwin.DarwinTools ];
preConfigure = ''
if [ "$(< bin/internal/engine.version)" != '${engineVersion}' ]; then
@ -69,8 +72,8 @@ let
# Certain prebuilts should be replaced with Nix-built (or at least Nix-patched) equivalents.
rm -r \
bin/cache/dart-sdk \
bin/cache/artifacts/engine
$FLUTTER_ROOT/bin/cache/dart-sdk \
$FLUTTER_ROOT/bin/cache/artifacts/engine
'';
installPhase = ''
@ -84,7 +87,8 @@ let
'';
doInstallCheck = true;
nativeInstallCheckInputs = [ which ];
nativeInstallCheckInputs = [ which ]
++ lib.optionals stdenv.hostPlatform.isDarwin [ darwin.DarwinTools ];
installCheckPhase = ''
runHook preInstallCheck
@ -112,7 +116,7 @@ let
'';
homepage = "https://flutter.dev";
license = licenses.bsd3;
platforms = [ "x86_64-linux" "aarch64-linux" ];
platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
maintainers = with maintainers; [ babariviere ericdallo FlafyDev gilice hacker1024 ];
};
};

View File

@ -1,9 +1,12 @@
{ lib
, stdenv
, darwin
, callPackage
, flutter
, supportsLinuxDesktop ? stdenv.hostPlatform.isLinux
, supportsAndroid ? stdenv.hostPlatform.isx86_64
, supportsAndroid ? (stdenv.hostPlatform.isx86_64 || stdenv.hostPlatform.isDarwin)
, supportsDarwin ? stdenv.hostPlatform.isDarwin
, supportsIOS ? stdenv.hostPlatform.isDarwin
, includedEngineArtifacts ? {
common = [
"flutter_patched_sdk"
@ -12,6 +15,10 @@
platform = {
android = lib.optionalAttrs supportsAndroid
((lib.genAttrs [ "arm" "arm64" "x64" ] (architecture: [ "profile" "release" ])) // { x86 = [ "jit-release" ]; });
darwin = lib.optionalAttrs supportsDarwin
((lib.genAttrs [ "arm64" "x64" ] (architecture: [ "profile" "release" ])));
ios = lib.optionalAttrs supportsIOS
((lib.genAttrs [ "" ] (architecture: [ "profile" "release" ])));
linux = lib.optionalAttrs supportsLinuxDesktop
(lib.genAttrs ((lib.optional stdenv.hostPlatform.isx86_64 "x64") ++ (lib.optional stdenv.hostPlatform.isAarch64 "arm64"))
(architecture: [ "debug" "profile" "release" ]));
@ -158,7 +165,9 @@ let
in
(callPackage ./sdk-symlink.nix { }) (runCommandLocal "flutter-wrapped"
{
nativeBuildInputs = [ makeWrapper ];
nativeBuildInputs = [
makeWrapper
] ++ lib.optionals stdenv.hostPlatform.isDarwin [ darwin.DarwinTools ];
passthru = flutter.passthru // {
inherit (flutter) version;

View File

@ -1,4 +1,4 @@
{ lib, stdenv, makeDesktopItem, copyDesktopItems, icoutils, fdupes, imagemagick, jdk11, fetchzip }:
{ lib, stdenv, makeDesktopItem, icoutils, fdupes, imagemagick, jdk11, fetchzip }:
# TODO: JDK16 causes STM32CubeMX to crash right now, so we fixed the version to JDK11
# This may be fixed in a future version of STM32CubeMX. This issue has been reported to ST:
# https://community.st.com/s/question/0D53W00000jnOzPSAU/stm32cubemx-crashes-on-launch-with-openjdk16
@ -17,22 +17,28 @@ stdenv.mkDerivation rec {
stripRoot = false;
};
nativeBuildInputs = [ icoutils fdupes imagemagick copyDesktopItems];
desktopItems = [
(makeDesktopItem {
name = "stm32CubeMX";
exec = "stm32cubemx";
desktopName = "STM32CubeMX";
categories = [ "Development" ];
comment = "STM32Cube initialization code generator";
icon = "stm32cubemx";
})
];
nativeBuildInputs = [ icoutils fdupes imagemagick ];
desktopItem = makeDesktopItem {
name = "STM32CubeMX";
exec = "stm32cubemx";
desktopName = "STM32CubeMX";
categories = [ "Development" ];
icon = "stm32cubemx";
comment = meta.description;
terminal = false;
startupNotify = false;
mimeTypes = [
"x-scheme-handler/sgnl"
"x-scheme-handler/signalcaptcha"
];
};
buildCommand = ''
mkdir -p $out/{bin,opt/STM32CubeMX}
mkdir -p $out/{bin,opt/STM32CubeMX,share/applications}
cp -r $src/MX/. $out/opt/STM32CubeMX/
chmod +rx $out/opt/STM32CubeMX/STM32CubeMX
cat << EOF > $out/bin/${pname}
#!${stdenv.shell}
${jdk11}/bin/java -jar $out/opt/STM32CubeMX/STM32CubeMX
@ -52,6 +58,8 @@ stdenv.mkDerivation rec {
$out/share/icons/hicolor/"$size"x"$size"/apps/${pname}.png
fi
done;
cp ${desktopItem}/share/applications/*.desktop $out/share/applications
'';
meta = with lib; {

View File

@ -1 +1 @@
WGET_ARGS=( https://download.kde.org/stable/frameworks/5.107/ -A '*.tar.xz' )
WGET_ARGS=( https://download.kde.org/stable/frameworks/5.108/ -A '*.tar.xz' )

View File

@ -13,8 +13,8 @@ mkDerivation {
buildInputs = [
kactivities karchive kconfig kconfigwidgets kcoreaddons kdbusaddons
kdeclarative kglobalaccel kguiaddons ki18n kiconthemes kio knotifications
kwayland kwindowsystem kxmlgui qtdeclarative qtscript qtx11extras kirigami2
kwayland kwindowsystem kxmlgui qtdeclarative qtscript qtx11extras
qtquickcontrols2
];
propagatedBuildInputs = [ kpackage kservice qtbase ];
propagatedBuildInputs = [ kpackage kservice qtbase kirigami2 ];
}

View File

@ -4,667 +4,667 @@
{
attica = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/attica-5.107.0.tar.xz";
sha256 = "1y0kxrr0janlba0pris35kaf31y8xqjksj0f6vpmww63jz53rjzx";
name = "attica-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/attica-5.108.0.tar.xz";
sha256 = "15didd7llqamp9wbvrynnf9cap2dqmwr51mz0pcjdk0iqs6ym4qq";
name = "attica-5.108.0.tar.xz";
};
};
baloo = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/baloo-5.107.0.tar.xz";
sha256 = "0i3sfzx9hsypzpw28n913kcrvg4vy1sb8civx86jdggamxslwhz2";
name = "baloo-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/baloo-5.108.0.tar.xz";
sha256 = "1n65nhr45vl0banbdjxhjf6wk5ypdx06qygqzqjbd9xbv7djj883";
name = "baloo-5.108.0.tar.xz";
};
};
bluez-qt = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/bluez-qt-5.107.0.tar.xz";
sha256 = "0wffp7vsl9z6kdfgjga5kf7dj48nm5r5nd7whiw4s0g9h63b0aig";
name = "bluez-qt-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/bluez-qt-5.108.0.tar.xz";
sha256 = "1yf2rbqp9997318ybnd8myvj26pzdkx55j6w86ibvn7hwgb77hhs";
name = "bluez-qt-5.108.0.tar.xz";
};
};
breeze-icons = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/breeze-icons-5.107.0.tar.xz";
sha256 = "0fhhpy34s05gx8nk7izc9ahdacbcl6yrfcr9q7k6825sngpmzck7";
name = "breeze-icons-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/breeze-icons-5.108.0.tar.xz";
sha256 = "175g6352lv8gq6sn4pkl91b51njdliryb82x2wdjbvzlc3zhfrcy";
name = "breeze-icons-5.108.0.tar.xz";
};
};
extra-cmake-modules = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/extra-cmake-modules-5.107.0.tar.xz";
sha256 = "1v9klrfi7m1228zysr1m6r5qrn8h6nkzgai6x40mjshydpasls9r";
name = "extra-cmake-modules-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/extra-cmake-modules-5.108.0.tar.xz";
sha256 = "0yj4xpzzz5q8140mqkl2s5zabfbks76a3rqfq3cc4d5x3b9an57z";
name = "extra-cmake-modules-5.108.0.tar.xz";
};
};
frameworkintegration = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/frameworkintegration-5.107.0.tar.xz";
sha256 = "0j5aa4j4v5dix8r80n49ihkp6f0mmgx420h4adq9sb80hsm1c67q";
name = "frameworkintegration-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/frameworkintegration-5.108.0.tar.xz";
sha256 = "09zba76xihqs2dpwm4gh7p36nj876ssa2gah55vl362wsj7xgf21";
name = "frameworkintegration-5.108.0.tar.xz";
};
};
kactivities = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kactivities-5.107.0.tar.xz";
sha256 = "0acv2grpq083289am1is012mjp8snsg7i57byw9qnniflwwrbdqr";
name = "kactivities-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kactivities-5.108.0.tar.xz";
sha256 = "0lqhfml91wh9376xr31ky8fl49yamfzz336bdjzj3i3ygqzyc7lh";
name = "kactivities-5.108.0.tar.xz";
};
};
kactivities-stats = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kactivities-stats-5.107.0.tar.xz";
sha256 = "1hp1ckmrjhmzx9ll2v974bf7hsccbpf76vlvxc47jl7b5x5l5337";
name = "kactivities-stats-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kactivities-stats-5.108.0.tar.xz";
sha256 = "03vpangw2zl2577vhcn0w1pp2hv3jgna79b18wv7i13s78v8k6ny";
name = "kactivities-stats-5.108.0.tar.xz";
};
};
kapidox = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kapidox-5.107.0.tar.xz";
sha256 = "1gxzxpv6lhz0hdkzq4vlv5dv715bfpf3wvdd9a0hm1v75lgl8aap";
name = "kapidox-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kapidox-5.108.0.tar.xz";
sha256 = "1xpapgzja66lwxagrynns2ycx4cdllld5b3xrxg67si3bjz9p70a";
name = "kapidox-5.108.0.tar.xz";
};
};
karchive = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/karchive-5.107.0.tar.xz";
sha256 = "0zsay002lsq5a8a9dqg97zzcv75rlbkklyv21qv8za7qk95vk378";
name = "karchive-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/karchive-5.108.0.tar.xz";
sha256 = "1rbmh0sfrgv7nkmmnf8zyd5x66g9bh6kj9ry2yzivqn73ralk44y";
name = "karchive-5.108.0.tar.xz";
};
};
kauth = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kauth-5.107.0.tar.xz";
sha256 = "1zwgvf1qhi2ls4lal735xgfgibk0q7h9x84v2s7zymww7fdpzg86";
name = "kauth-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kauth-5.108.0.tar.xz";
sha256 = "0xn0v1rzjsv1a856zcw9s9qkbfaq184663akc5rrapvvfcrm2vjz";
name = "kauth-5.108.0.tar.xz";
};
};
kbookmarks = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kbookmarks-5.107.0.tar.xz";
sha256 = "16gd3ijfpkvs5rzvk6bx8ydbz9dx0chv3m3zxxq4khcqbk8gmlah";
name = "kbookmarks-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kbookmarks-5.108.0.tar.xz";
sha256 = "1547i2x7mrryg4w6ij47f37savmp1jmq8wp2nhiij65cdnla3qbb";
name = "kbookmarks-5.108.0.tar.xz";
};
};
kcalendarcore = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kcalendarcore-5.107.0.tar.xz";
sha256 = "0iswnbl73in465kgwbn9n3rllw82nasc31897nqc9ifcs6x45msl";
name = "kcalendarcore-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kcalendarcore-5.108.0.tar.xz";
sha256 = "1wxlixz7624p7693lwxgdzyi30n9zgs0mgvwldp0q0llzpxqp5yv";
name = "kcalendarcore-5.108.0.tar.xz";
};
};
kcmutils = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kcmutils-5.107.0.tar.xz";
sha256 = "1mahi2zxi3f8m45iynlgwxjz4g5aq0qg68sy7c85h6pvvg6dd626";
name = "kcmutils-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kcmutils-5.108.0.tar.xz";
sha256 = "1zhs84wrd8fkgzxwf793c6yha5nsnid4id8vs4iy7gcyahyajchr";
name = "kcmutils-5.108.0.tar.xz";
};
};
kcodecs = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kcodecs-5.107.0.tar.xz";
sha256 = "088jl5spmwm4ihmpgk17bsmkcjfn2323cypa12zrpcm4q1iqbc07";
name = "kcodecs-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kcodecs-5.108.0.tar.xz";
sha256 = "12vav9ncxcf0vpmfp7wps91ax7azrwaxhqdq8z52vcyl0rvgy341";
name = "kcodecs-5.108.0.tar.xz";
};
};
kcompletion = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kcompletion-5.107.0.tar.xz";
sha256 = "1xa9ckz9vhxb5m81m7hky68b96vfaq071vfhqs7zjaq9s9rn9ash";
name = "kcompletion-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kcompletion-5.108.0.tar.xz";
sha256 = "0fgz30fb6wp2jb7bii5wy6akdzjiqy73w5mnmv0hi15mj2jkpgdq";
name = "kcompletion-5.108.0.tar.xz";
};
};
kconfig = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kconfig-5.107.0.tar.xz";
sha256 = "04svxr0pckqwx1kkvzsbgcqk5m921x6hps7pk7gn4pi5lnyd95wn";
name = "kconfig-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kconfig-5.108.0.tar.xz";
sha256 = "0gq30f5yx3razkn12zq7224sivl76jikf7c4xdfc9fw1k54sxbjd";
name = "kconfig-5.108.0.tar.xz";
};
};
kconfigwidgets = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kconfigwidgets-5.107.0.tar.xz";
sha256 = "0s608laxgdkzn33p0bb22yaa2w3brapbw4dcpnylc6rimdw8avgi";
name = "kconfigwidgets-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kconfigwidgets-5.108.0.tar.xz";
sha256 = "1raz1bxra0dvcwwzvhfmz1y0hvfrffpdymd116xyi5lnavyzdp46";
name = "kconfigwidgets-5.108.0.tar.xz";
};
};
kcontacts = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kcontacts-5.107.0.tar.xz";
sha256 = "17dhbzgizqv5g3qf4wsaf8jgragjfmcrly4c761x5l3c7vwwrjiv";
name = "kcontacts-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kcontacts-5.108.0.tar.xz";
sha256 = "15x6f05ngs3nmxpdi11bi4k4zpjnvx5cy3yxbdklls3f2wpq6jd4";
name = "kcontacts-5.108.0.tar.xz";
};
};
kcoreaddons = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kcoreaddons-5.107.0.tar.xz";
sha256 = "115g3qmfpirvvqj0a2jyi9lgpahw19wc9351mfc2gasj914fxfk4";
name = "kcoreaddons-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kcoreaddons-5.108.0.tar.xz";
sha256 = "0l8f59ijmcjvrpgysvrw2nmh3jqlzhlqxmgrvybipxpywams3cy8";
name = "kcoreaddons-5.108.0.tar.xz";
};
};
kcrash = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kcrash-5.107.0.tar.xz";
sha256 = "15gngmgridnxzz04f4mrw9c53l95qi9z3sj9wprlx9d0kgacs5sl";
name = "kcrash-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kcrash-5.108.0.tar.xz";
sha256 = "1990yfssxcmbpbq9pz2nv07fpnjih4q9ql2bz1nfnanrm858pi9y";
name = "kcrash-5.108.0.tar.xz";
};
};
kdav = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kdav-5.107.0.tar.xz";
sha256 = "0vwv1b3vlz1gizwrj1x4hkdzbkc1vad2mih0qlbhwdlxnx6sb7ap";
name = "kdav-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kdav-5.108.0.tar.xz";
sha256 = "0knpyzdfa0m1pyakq32pw2hwbaq2dkqj87p3n6p86wlf2rn66vir";
name = "kdav-5.108.0.tar.xz";
};
};
kdbusaddons = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kdbusaddons-5.107.0.tar.xz";
sha256 = "1f09xf4cm8qk4iklnr60yr2nm054ixnbh85diajbcm5j3v1y75jf";
name = "kdbusaddons-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kdbusaddons-5.108.0.tar.xz";
sha256 = "1siv9ndk0zr9yq6pwjs248zzsh4kgllfj1294jym80rxcb0z6g9r";
name = "kdbusaddons-5.108.0.tar.xz";
};
};
kdeclarative = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kdeclarative-5.107.0.tar.xz";
sha256 = "0m88i376jc4m80vlzz8wprg1cwvxvr4438n2i89jpz3nh63fsl6z";
name = "kdeclarative-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kdeclarative-5.108.0.tar.xz";
sha256 = "1kdg18a2xpgl6xkrk68nnbj57nwn8rv5yd5q5bfbfc8chibk9y4z";
name = "kdeclarative-5.108.0.tar.xz";
};
};
kded = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kded-5.107.0.tar.xz";
sha256 = "0fxpx3k9j8xnrwvqszj9m7s8vpdxjkz9jschc0m6pfqiqk7hhbyg";
name = "kded-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kded-5.108.0.tar.xz";
sha256 = "08aa3vjzr0mj4jahzqd2z7k8whavyyvcyhk67swqlpil9rmxm0s1";
name = "kded-5.108.0.tar.xz";
};
};
kdelibs4support = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/portingAids/kdelibs4support-5.107.0.tar.xz";
sha256 = "13qccs1f26ap4q1naiyknvp0p746zw4439yj4m3p6c3jd25md57g";
name = "kdelibs4support-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/portingAids/kdelibs4support-5.108.0.tar.xz";
sha256 = "1pqpcn4i6zcli8a2yf7fda6rwr0vs55jd9bjl0fgallyd6wl8qkf";
name = "kdelibs4support-5.108.0.tar.xz";
};
};
kdesignerplugin = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/portingAids/kdesignerplugin-5.107.0.tar.xz";
sha256 = "0lxyfyyfs7ykdz201zlycphnpr9lf3qr61a1914a5rkxqczc93b8";
name = "kdesignerplugin-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/portingAids/kdesignerplugin-5.108.0.tar.xz";
sha256 = "0ibd1sgyiawl7b25ag1qs80s0vai16ab1zmdrhx85gd1583vkyab";
name = "kdesignerplugin-5.108.0.tar.xz";
};
};
kdesu = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kdesu-5.107.0.tar.xz";
sha256 = "12hma81sqirfb848vac6igs68vb982rk5pyj3ypnc7jn13jif43x";
name = "kdesu-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kdesu-5.108.0.tar.xz";
sha256 = "1rhygp1r6099zrmnfvl2ldpm6rsilcy2x3bcb580bvqd536ir2yh";
name = "kdesu-5.108.0.tar.xz";
};
};
kdewebkit = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/portingAids/kdewebkit-5.107.0.tar.xz";
sha256 = "0dxnshx629az0dgpiy126by079x3gpxbhhg01z65c06dnlcjhl35";
name = "kdewebkit-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/portingAids/kdewebkit-5.108.0.tar.xz";
sha256 = "11d8swj6n24hdi7dr2nz8fi20ra8jfl9rkzlcsyzyblwaqc0fpzi";
name = "kdewebkit-5.108.0.tar.xz";
};
};
kdnssd = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kdnssd-5.107.0.tar.xz";
sha256 = "1jnh3dx2yxf9pz09majdzms7n398zfard1ggjp19jqnpa51vap0m";
name = "kdnssd-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kdnssd-5.108.0.tar.xz";
sha256 = "0pxlkwjjl2gzfjf9pd7j9m1nhc6jas0wd8994jgljgxc5dc94cn8";
name = "kdnssd-5.108.0.tar.xz";
};
};
kdoctools = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kdoctools-5.107.0.tar.xz";
sha256 = "0l0mf5hahn2s5yj7khqrxc8w1fxgwibbx5zz35s0xqaz7x4s0mlx";
name = "kdoctools-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kdoctools-5.108.0.tar.xz";
sha256 = "0zi3va3jn4jps9h9h94ivxkzxw7v5vqwxgikb321hnnjgxy4nzwr";
name = "kdoctools-5.108.0.tar.xz";
};
};
kemoticons = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kemoticons-5.107.0.tar.xz";
sha256 = "0k1yjm8ybbhm55xh46hl2h6c4cqh4hq8sryc6pjjg1fh6a179y2n";
name = "kemoticons-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kemoticons-5.108.0.tar.xz";
sha256 = "0p7q5s9mv7j0sy4mm513warzhqm44wiz4vxcp9kxbqcsw0awfad6";
name = "kemoticons-5.108.0.tar.xz";
};
};
kfilemetadata = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kfilemetadata-5.107.0.tar.xz";
sha256 = "1bcapkmz0zlbknl57byiyalrpk42gvgdycwq6jy9ij5p8m6z7d7d";
name = "kfilemetadata-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kfilemetadata-5.108.0.tar.xz";
sha256 = "0hhq8p6wpfbi33b604ls7q9309n6pm4aa4cgjwxrspn2q8yn6p7w";
name = "kfilemetadata-5.108.0.tar.xz";
};
};
kglobalaccel = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kglobalaccel-5.107.0.tar.xz";
sha256 = "1n4y6hwr53paabi4vlzsl8z82blrmvh3g3xhswdcw4dq6m1q4x58";
name = "kglobalaccel-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kglobalaccel-5.108.0.tar.xz";
sha256 = "0sf6v86pfhxva7n465p9pfidyzfjviam5kk8d6lrc23zjb559f3w";
name = "kglobalaccel-5.108.0.tar.xz";
};
};
kguiaddons = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kguiaddons-5.107.0.tar.xz";
sha256 = "1hc4k7vynxrvbrb66vw3la2ixhm96dz3basbwl6j6g6xlxn6wbxd";
name = "kguiaddons-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kguiaddons-5.108.0.tar.xz";
sha256 = "01yfv2ybqi894g7d1fy584x0nbmqlm7vi0b998zc52233blh8j51";
name = "kguiaddons-5.108.0.tar.xz";
};
};
kholidays = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kholidays-5.107.0.tar.xz";
sha256 = "0b23lb2dqhnkizr3pa9bj2z6rq1613q3cyfh770pksfps7lp0mna";
name = "kholidays-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kholidays-5.108.0.tar.xz";
sha256 = "03g484nm37vv8mnj4q6y6pdrhhiglni3s63gpxhc54zzhzxshpy5";
name = "kholidays-5.108.0.tar.xz";
};
};
khtml = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/portingAids/khtml-5.107.0.tar.xz";
sha256 = "1zcms5h78nc0c69ah60lmjxq6ymb3213ya41hfx7q998dzd9fi9v";
name = "khtml-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/portingAids/khtml-5.108.0.tar.xz";
sha256 = "0kasxgkxfibdj81a6iiv4ciqy5fd180lsk9sa1byd8y0bydd8kjv";
name = "khtml-5.108.0.tar.xz";
};
};
ki18n = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/ki18n-5.107.0.tar.xz";
sha256 = "1q4bbv14davg8pcxr1ngkbzk2q37m6lf2wzxiim7ydkm3giqzp8p";
name = "ki18n-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/ki18n-5.108.0.tar.xz";
sha256 = "0kpza0n900j8lf27d60ikl963616vcqnns8va6cg8y2lf2pmxvsr";
name = "ki18n-5.108.0.tar.xz";
};
};
kiconthemes = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kiconthemes-5.107.0.tar.xz";
sha256 = "0by44ra385kwj006l9jkqlpyqci79cspg3y41h3f0m4xpi4dn5sx";
name = "kiconthemes-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kiconthemes-5.108.0.tar.xz";
sha256 = "0r8lz4jkb1g46ll79pdv8bmig1ij8fp7k6cpcy9nhkkhq0ra7svk";
name = "kiconthemes-5.108.0.tar.xz";
};
};
kidletime = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kidletime-5.107.0.tar.xz";
sha256 = "0b3plz0hkxw0i8kklv79mfbk79x6p1swz6ffs4dz04hj3cl9lh1v";
name = "kidletime-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kidletime-5.108.0.tar.xz";
sha256 = "0cqb33xyqxh507332c30ja5anq99zj250b4sl6r6bn1z6j7yfzx7";
name = "kidletime-5.108.0.tar.xz";
};
};
kimageformats = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kimageformats-5.107.0.tar.xz";
sha256 = "1hfisk63anns3zsakgc4k4fhbx9ic2a4k75jxsmd337rdg9ql9cp";
name = "kimageformats-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kimageformats-5.108.0.tar.xz";
sha256 = "07myvknlvp28kn20l30x6q22fkva72qrfziryinxgsqlhgc3j87c";
name = "kimageformats-5.108.0.tar.xz";
};
};
kinit = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kinit-5.107.0.tar.xz";
sha256 = "1p28m3cvifgdw1rjzqy5xbvyzq383yhr50bkq6xn6b12ar239znf";
name = "kinit-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kinit-5.108.0.tar.xz";
sha256 = "1i03gn0s01jg2ridlymxf34ib88rkf30yz27h38g9fzaijjr46fi";
name = "kinit-5.108.0.tar.xz";
};
};
kio = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kio-5.107.0.tar.xz";
sha256 = "1bj8mi112xh5zi56i84d96jdc2ji2h72rhl126kfj88chdb1hsj5";
name = "kio-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kio-5.108.0.tar.xz";
sha256 = "1v5bpj90s5pwdvdkzcfpfgsgym7pxb3r22m4r7w9piq6n9s4c122";
name = "kio-5.108.0.tar.xz";
};
};
kirigami2 = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kirigami2-5.107.0.tar.xz";
sha256 = "1jdr1i74f90wkjgfyd3ickxwcjmkn1y78v3ggybkrqfx7lvd3hzm";
name = "kirigami2-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kirigami2-5.108.0.tar.xz";
sha256 = "0kbzqkvq169w9kl4z7l7zd21mgxqdsyv8ia2j6cwd3qqn4xd3nbp";
name = "kirigami2-5.108.0.tar.xz";
};
};
kitemmodels = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kitemmodels-5.107.0.tar.xz";
sha256 = "1bqiia07c4kbw89j0rw9dx7idflml7wr7sdkg9rmyq6hlpkamxdp";
name = "kitemmodels-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kitemmodels-5.108.0.tar.xz";
sha256 = "05dd1d1dxkbjrr6x73ndsrabzaa02m3cn1h4dmsgpydy1rkzbj9v";
name = "kitemmodels-5.108.0.tar.xz";
};
};
kitemviews = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kitemviews-5.107.0.tar.xz";
sha256 = "05qbl1r0js6rxdgz9ym6kpv3rlq4prxy121f8z0c224vivp0qinm";
name = "kitemviews-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kitemviews-5.108.0.tar.xz";
sha256 = "13dcy804lv6ws1gdfjczkbnlyig11ir4p2mi26ashbgrdfpywxv1";
name = "kitemviews-5.108.0.tar.xz";
};
};
kjobwidgets = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kjobwidgets-5.107.0.tar.xz";
sha256 = "14kbj31ghmx2wsl79dmgvkfzxlbrpds1z12mj6z91665vrmspq96";
name = "kjobwidgets-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kjobwidgets-5.108.0.tar.xz";
sha256 = "0vhv9gx8qq73hvalcyx4g8c1ji9qxb2rn5wp4mdl7n9pypd0gscq";
name = "kjobwidgets-5.108.0.tar.xz";
};
};
kjs = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/portingAids/kjs-5.107.0.tar.xz";
sha256 = "0d985bsvrqbfj068l3si3z0a6b9m6xz4zm6k3p7qh4382blb8dka";
name = "kjs-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/portingAids/kjs-5.108.0.tar.xz";
sha256 = "0xwih1jrdkgymr29cqr2jbj7byf8kqnbapr7wc8s0jxm5cwj2fgh";
name = "kjs-5.108.0.tar.xz";
};
};
kjsembed = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/portingAids/kjsembed-5.107.0.tar.xz";
sha256 = "1aridyby0aiakqsn58575hajhh8il5w48n41dh4ng6ax86d4jvkj";
name = "kjsembed-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/portingAids/kjsembed-5.108.0.tar.xz";
sha256 = "1nfi9mfph3yjglafm8clw8d1z4f4h9b71j5z4l50qsds65yv9b9a";
name = "kjsembed-5.108.0.tar.xz";
};
};
kmediaplayer = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/portingAids/kmediaplayer-5.107.0.tar.xz";
sha256 = "1m0iik73qia33yvpkirn3f8vpmwxyz69gaddxm2ac0n0xjznxrmj";
name = "kmediaplayer-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/portingAids/kmediaplayer-5.108.0.tar.xz";
sha256 = "1vkx11736wq0idxrzmfg6s2lcrilgl7yh7a97la6c3qqj2aggi08";
name = "kmediaplayer-5.108.0.tar.xz";
};
};
knewstuff = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/knewstuff-5.107.0.tar.xz";
sha256 = "16zjjamp2myb45v4wm6k00h9ghp7rgszjdb3ph1sh9fm86x3bnbq";
name = "knewstuff-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/knewstuff-5.108.0.tar.xz";
sha256 = "1hlzkacybf35lnl92vk8xkapkq5pygy8fqngskvj9f4692k6562s";
name = "knewstuff-5.108.0.tar.xz";
};
};
knotifications = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/knotifications-5.107.0.tar.xz";
sha256 = "0xigm6cgsdfa74nn4p3f66xfi4rkb1ynmisbf3bh6kf58rq4f7gf";
name = "knotifications-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/knotifications-5.108.0.tar.xz";
sha256 = "05qdmjjxj362zhwyk0vv83wfzsgjd4nxnvk2avhiscr2k46swn96";
name = "knotifications-5.108.0.tar.xz";
};
};
knotifyconfig = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/knotifyconfig-5.107.0.tar.xz";
sha256 = "0ydjxyalmx4364m2idmqahzyb351mq4bi1jf7ibs934lra7mdwg8";
name = "knotifyconfig-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/knotifyconfig-5.108.0.tar.xz";
sha256 = "1dby6ycqicsij9ngyk6ab7v14ybnsmxd51fkcy25k4c326w6yyca";
name = "knotifyconfig-5.108.0.tar.xz";
};
};
kpackage = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kpackage-5.107.0.tar.xz";
sha256 = "1ch4qj1sjwsf56ywqgns9ka07lc4dcw0j5hr75pibdvaap0n1bph";
name = "kpackage-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kpackage-5.108.0.tar.xz";
sha256 = "18185xi48an6fi0dinzfcc50lzq8cb5dx16sikmavcnhmfvlvw1g";
name = "kpackage-5.108.0.tar.xz";
};
};
kparts = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kparts-5.107.0.tar.xz";
sha256 = "1yx9iyd9r740hph24mc96gfql0vdd5s4mrixyk0lr3lj8j35bf00";
name = "kparts-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kparts-5.108.0.tar.xz";
sha256 = "0fckq2dpdqkqyaig61fnjanw2y9j28fckx1zrywnvyzd8q6hs4db";
name = "kparts-5.108.0.tar.xz";
};
};
kpeople = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kpeople-5.107.0.tar.xz";
sha256 = "18hr9ci9qbgrwds44knv1xcqxi71b04bw4xh3v1h2sw44srnwplj";
name = "kpeople-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kpeople-5.108.0.tar.xz";
sha256 = "0k2jnyp05rnjb4j31w4xi95qwparkqvp1m9664gvygwp9xxlnf4k";
name = "kpeople-5.108.0.tar.xz";
};
};
kplotting = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kplotting-5.107.0.tar.xz";
sha256 = "0gnk1rsrznmyq11f3r9i5pgfb9szscyhif1x0pns1qj24ax3sv2c";
name = "kplotting-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kplotting-5.108.0.tar.xz";
sha256 = "1rnkwxxms2raqswgwm0i4xgjqpzkz7wl2kbdra2gqscfz7a23s4p";
name = "kplotting-5.108.0.tar.xz";
};
};
kpty = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kpty-5.107.0.tar.xz";
sha256 = "1y0k92p8j3hpi6si3lqlvh121v8wqybqxhqkf3ygqhld23scazlh";
name = "kpty-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kpty-5.108.0.tar.xz";
sha256 = "11k1jv2wazlxbz5y7l94zsykcq544k1zbb49ximbdh45r3p5hdgw";
name = "kpty-5.108.0.tar.xz";
};
};
kquickcharts = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kquickcharts-5.107.0.tar.xz";
sha256 = "1xxrnkxxc8rjvy15zdp3fgiwrfzf67ib7jaxlax8f1s74mr76b4l";
name = "kquickcharts-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kquickcharts-5.108.0.tar.xz";
sha256 = "1wdmgala480qjipzpq9v85vy1i3n0qgria0rgn26ibhm2wmvmrpw";
name = "kquickcharts-5.108.0.tar.xz";
};
};
kross = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/portingAids/kross-5.107.0.tar.xz";
sha256 = "13myij7bx0id6vrwnrimfgjq3dwjw5rnpdpg09iawbzjx9yaq3iz";
name = "kross-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/portingAids/kross-5.108.0.tar.xz";
sha256 = "0j459d9610aayvzb1d9m045c71dmkgqx5bsx3lv8x1wffk8064sd";
name = "kross-5.108.0.tar.xz";
};
};
krunner = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/krunner-5.107.0.tar.xz";
sha256 = "06r27jmhqjifpv7fkyhin8qdygf3qzgmz2n34sa366qk5h1fij3m";
name = "krunner-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/krunner-5.108.0.tar.xz";
sha256 = "0yam10c31jzwsl4qzrrcr4caxk79jqg1fyrsavjzg14ahsknb5ih";
name = "krunner-5.108.0.tar.xz";
};
};
kservice = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kservice-5.107.0.tar.xz";
sha256 = "0bgr2jv11cjfb5fkq5ki39xin3kjqk0jbrjg419pay8xj90nsgq6";
name = "kservice-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kservice-5.108.0.tar.xz";
sha256 = "10dfnq3x9b30kbkpq1ifg6ywj8dmdqvd1szgrwf71077yzgsh9w2";
name = "kservice-5.108.0.tar.xz";
};
};
ktexteditor = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/ktexteditor-5.107.0.tar.xz";
sha256 = "165wrv5bdmixczcf1jr0j06fh31n5rchq24d4856p18vl56wg4cg";
name = "ktexteditor-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/ktexteditor-5.108.0.tar.xz";
sha256 = "0raz9h9y7zfynvacg4grwj0sd4v6w2kwpjkirvjr14zmfjq92mif";
name = "ktexteditor-5.108.0.tar.xz";
};
};
ktextwidgets = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/ktextwidgets-5.107.0.tar.xz";
sha256 = "1yx0dlvz5ssn5wqpx606vrzdfq14akpvmlayg41sx6hs4xzv0rjy";
name = "ktextwidgets-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/ktextwidgets-5.108.0.tar.xz";
sha256 = "1qz1ayrrqxarhx4h24ym2hm8gkjskgdi268jv16yvd33b122fv2c";
name = "ktextwidgets-5.108.0.tar.xz";
};
};
kunitconversion = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kunitconversion-5.107.0.tar.xz";
sha256 = "1y96gqkh7qvs37kb4f0gcqx2f2ilgcryxvcyfbngp3l4fpnvxxaw";
name = "kunitconversion-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kunitconversion-5.108.0.tar.xz";
sha256 = "1kwz5wx0s522mwb5gxjz6cxqdkzflcckmra9qikpjrzsngamrq3j";
name = "kunitconversion-5.108.0.tar.xz";
};
};
kwallet = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kwallet-5.107.0.tar.xz";
sha256 = "0xqx3gvqbgjvbp362wr0d42p4wcvwk0f5gqib8qa6zik3w0nly9f";
name = "kwallet-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kwallet-5.108.0.tar.xz";
sha256 = "1zx80h8mj3ijj1mm5m3396vwkfhpdm8qpb63rhg8szm9hwqhd5sq";
name = "kwallet-5.108.0.tar.xz";
};
};
kwayland = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kwayland-5.107.0.tar.xz";
sha256 = "0j8hjv9v2yxn922xd1lxlx017c658w2zs3ah0f343sl8cwbj2p45";
name = "kwayland-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kwayland-5.108.0.tar.xz";
sha256 = "11xk1rzizmqb0haqkg24kdd54a3fdqrxr2kh056irbnksp9p8k03";
name = "kwayland-5.108.0.tar.xz";
};
};
kwidgetsaddons = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kwidgetsaddons-5.107.0.tar.xz";
sha256 = "1jc7x0n1052pykmps3mpb06jj2pyyvcv0f5v2qymbxf36fcrp88g";
name = "kwidgetsaddons-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kwidgetsaddons-5.108.0.tar.xz";
sha256 = "1a7svxd0c5dzx5pqjddc38cybf21wrg1hfz91gkrlv9f7ai0k878";
name = "kwidgetsaddons-5.108.0.tar.xz";
};
};
kwindowsystem = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kwindowsystem-5.107.0.tar.xz";
sha256 = "07lkqqzbgnx6v4fzrcdi5xwznxs21rgg96j8ghs6s3zph8y7ram3";
name = "kwindowsystem-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kwindowsystem-5.108.0.tar.xz";
sha256 = "0112cgy09qw069v1lzaz6rp84p128mq3xqp3xink398xhp3nrkqd";
name = "kwindowsystem-5.108.0.tar.xz";
};
};
kxmlgui = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/kxmlgui-5.107.0.tar.xz";
sha256 = "1rc420zlmiivb4x00dlr9z8035crw974gviwzs6xag1v9j022j2b";
name = "kxmlgui-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/kxmlgui-5.108.0.tar.xz";
sha256 = "0v6nzq86wvbalbqq3dp47vymp31ws098c8dq0g43f6g7q3xjfxa1";
name = "kxmlgui-5.108.0.tar.xz";
};
};
kxmlrpcclient = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/portingAids/kxmlrpcclient-5.107.0.tar.xz";
sha256 = "0yfbbqkwbrfsanwf0kph5d81xyply17swxmnz5w5qwasdhk19chc";
name = "kxmlrpcclient-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/portingAids/kxmlrpcclient-5.108.0.tar.xz";
sha256 = "0pf5c5ja1mwdlf9pmc2601frwskkzhksz0n8w4qcwmwbaxrbspv0";
name = "kxmlrpcclient-5.108.0.tar.xz";
};
};
modemmanager-qt = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/modemmanager-qt-5.107.0.tar.xz";
sha256 = "0ff4sq4wq12qdrkb53wbnjdsccarf8bl6kpv831q0jhhbv06xpy1";
name = "modemmanager-qt-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/modemmanager-qt-5.108.0.tar.xz";
sha256 = "1rkz1m2dlfhny9zvy8axzgjxgh41cfnmpb52rwargmrsgplcx7rz";
name = "modemmanager-qt-5.108.0.tar.xz";
};
};
networkmanager-qt = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/networkmanager-qt-5.107.0.tar.xz";
sha256 = "0zqrsgq68n5wdw06sq75sgk63by41lr24dink6gkh8r0yqzgspv9";
name = "networkmanager-qt-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/networkmanager-qt-5.108.0.tar.xz";
sha256 = "0y9h1n4hccdzk5rp2bq7dyq617yg5myq7dcwnpnp1aik40647vjf";
name = "networkmanager-qt-5.108.0.tar.xz";
};
};
oxygen-icons5 = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/oxygen-icons5-5.107.0.tar.xz";
sha256 = "1l6glxkq62lzpzr6hvqwn3xb4jfw79w69nwjbbs5imbxndcrmz9s";
name = "oxygen-icons5-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/oxygen-icons5-5.108.0.tar.xz";
sha256 = "0w9zcgii9z91060cnqcalv8vnj03xrnjr5k6crx28szrpplqcvxd";
name = "oxygen-icons5-5.108.0.tar.xz";
};
};
plasma-framework = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/plasma-framework-5.107.0.tar.xz";
sha256 = "0ahgpwmaz2nnyg4qwf8ppdk70a718v65ldk8si6gvglf95daalv0";
name = "plasma-framework-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/plasma-framework-5.108.0.tar.xz";
sha256 = "131zxamyim4bpk006nmfw2zmcay5qnmm7lmy8rvcxn96vflrs6bb";
name = "plasma-framework-5.108.0.tar.xz";
};
};
prison = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/prison-5.107.0.tar.xz";
sha256 = "172alrpknjnc97ds1dizwgki40z82p1vzld2gib6pwykgzgjww6c";
name = "prison-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/prison-5.108.0.tar.xz";
sha256 = "1pn62pd7jy589z9y5r00m8d5rcqvrbskyr4a2yyfs24xv21x8lw4";
name = "prison-5.108.0.tar.xz";
};
};
purpose = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/purpose-5.107.0.tar.xz";
sha256 = "0b4x7x3kia5vn913mzfk0k0f0lhf0gpc3kjsw9pgy1mna8dg7kcr";
name = "purpose-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/purpose-5.108.0.tar.xz";
sha256 = "0gzgdycf96z0x61vs08dh46n9c2zc11zpjscfwzhrg2k9wsb90qd";
name = "purpose-5.108.0.tar.xz";
};
};
qqc2-desktop-style = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/qqc2-desktop-style-5.107.0.tar.xz";
sha256 = "0hpjy5w72hzihc7famdjj5arac8fw0d149iqpywldyzhk6bnrfaw";
name = "qqc2-desktop-style-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/qqc2-desktop-style-5.108.0.tar.xz";
sha256 = "1icv871q0z2wh147j3bg9xqizp2cyrsrsrsgbyyscpa9x5nlpvw9";
name = "qqc2-desktop-style-5.108.0.tar.xz";
};
};
solid = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/solid-5.107.0.tar.xz";
sha256 = "1w5b62hx8icjz8wkhkn0mhaykdm4mglf6d8qh759160v85fi2ia2";
name = "solid-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/solid-5.108.0.tar.xz";
sha256 = "0m4i7csrz167nm6h4pcd0413x6jvnd39cx13k9ayga9my36ba2r8";
name = "solid-5.108.0.tar.xz";
};
};
sonnet = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/sonnet-5.107.0.tar.xz";
sha256 = "0ix7jqjdlcd4jksrvgy5whpbl0i2ljs7pxkm9f8yg2pm3h5clgda";
name = "sonnet-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/sonnet-5.108.0.tar.xz";
sha256 = "00azygjvv0fw5agd28v3kqxc3qx1wa8j4afvn5y3ncarhb5ac7p1";
name = "sonnet-5.108.0.tar.xz";
};
};
syndication = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/syndication-5.107.0.tar.xz";
sha256 = "0jpqn34za7q62f8x2njyggq52h9riljr053ng25ykqvp3z2khk95";
name = "syndication-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/syndication-5.108.0.tar.xz";
sha256 = "0q1yhziwxj2dllqyapkqnsskhvzsjm5iz2my4pn8n0lfm90rdf8h";
name = "syndication-5.108.0.tar.xz";
};
};
syntax-highlighting = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/syntax-highlighting-5.107.0.tar.xz";
sha256 = "1narmiqlmgnhzxbwmcm4si8w684q3fdp4zh25w0kvwdvxvlx2bk7";
name = "syntax-highlighting-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/syntax-highlighting-5.108.0.tar.xz";
sha256 = "1lri80bv4i50xsd2wgyv383sqkxpav3smgk9ql5dil2n8pl219ky";
name = "syntax-highlighting-5.108.0.tar.xz";
};
};
threadweaver = {
version = "5.107.0";
version = "5.108.0";
src = fetchurl {
url = "${mirror}/stable/frameworks/5.107/threadweaver-5.107.0.tar.xz";
sha256 = "1wis770hbmzq920fnfg0pvz35bf4abbkkbnx7za9f89b7jpzmi66";
name = "threadweaver-5.107.0.tar.xz";
url = "${mirror}/stable/frameworks/5.108/threadweaver-5.108.0.tar.xz";
sha256 = "094nfqbhgg8yfri7fghn8dkjdf1k5iccshj0ns2b30snw87w8b29";
name = "threadweaver-5.108.0.tar.xz";
};
};
}

View File

@ -15,7 +15,11 @@ stdenv.mkDerivation (finalAttrs: {
owner = "Nitrokey";
repo = "libnitrokey";
rev = "v${finalAttrs.version}";
hash = "sha256-9ZMR1g04gNzslax6NpD6KykfUfjpKFIizaMMn06iJa0=";
hash = "sha256-4PEZ31QyVOmdhpKqTN8fwcHoLuu+w+OJ3fZeqwlE+io=";
# On OSX, libnitrokey depends on a custom version of hidapi in a submodule.
# Monitor https://github.com/Nitrokey/libnitrokey/issues/140 to see if we
# can remove this extra work one day.
fetchSubmodules = true;
};
nativeBuildInputs = [

View File

@ -1,14 +1,14 @@
{ lib, stdenv, fetchFromGitHub, which }:
{ lib, stdenv, fetchFromGitHub, which, squawk }:
stdenv.mkDerivation rec {
pname = "libpg_query";
version = "15-4.2.1";
version = "15-4.2.2";
src = fetchFromGitHub {
owner = "pganalyze";
repo = "libpg_query";
rev = version;
hash = "sha256-wbWW2r8Ai4Y+JBI5DbMuVx326bAxmEgQlTd6nnzqDXw=";
hash = "sha256-DjpfJj7WtQ4bACX8/lFDl+mwQGbeCJX+YN2hjZa0kks=";
};
nativeBuildInputs = [ which ];
@ -24,10 +24,14 @@ stdenv.mkDerivation rec {
doCheck = true;
checkTarget = "test";
passthru.tests = {
inherit squawk;
};
meta = with lib; {
homepage = "https://github.com/pganalyze/libpg_query";
description = "C library for accessing the PostgreSQL parser outside of the server environment";
changelog = "https://github.com/pganalyze/libpg_query/raw/${version}/CHANGELOG.md";
changelog = "https://github.com/pganalyze/libpg_query/blob/${version}/CHANGELOG.md";
license = licenses.bsd3;
platforms = platforms.unix;
maintainers = [ maintainers.marsam ];

View File

@ -2,14 +2,14 @@
let
pname = "php-cs-fixer";
version = "3.16.0";
version = "3.21.1";
in
mkDerivation {
inherit pname version;
src = fetchurl {
url = "https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v${version}/php-cs-fixer.phar";
sha256 = "sha256-B4VzfsSwcffR/t4eREMLH9jRWCTumYel6GM4rpumVBY=";
sha256 = "sha256-f/hD2it/l2hWGVoIXQBJYDC7s7JPSE+7RzbpdeNNRvg=";
};
dontUnpack = true;

View File

@ -7,7 +7,7 @@
buildPythonPackage rec {
pname = "adafruit-platformdetect";
version = "3.46.0";
version = "3.47.0";
format = "pyproject";
disabled = pythonOlder "3.7";
@ -15,7 +15,7 @@ buildPythonPackage rec {
src = fetchPypi {
pname = "Adafruit-PlatformDetect";
inherit version;
hash = "sha256-d8RhnMcTeHFDpVS+c5lETRz75vFPOMIaqbqPGVG4vHY=";
hash = "sha256-42YG+brxKCo16xp72+EhmCkgABC2BAFYNWTKqTT1jeE=";
};
SETUPTOOLS_SCM_PRETEND_VERSION = version;

View File

@ -1,33 +1,33 @@
{ lib
, buildPythonPackage
, fetchPypi
, pexpect
, fetchFromGitHub
, pythonOlder
, setuptools
, setuptools-scm
}:
buildPythonPackage rec {
pname = "argcomplete";
version = "2.1.1";
format = "setuptools";
version = "3.1.1";
format = "pyproject";
disabled = pythonOlder "3.7";
disabled = pythonOlder "3.8";
src = fetchPypi {
inherit pname version;
hash = "sha256-cuCDQIUtMlREWcDBmq0bSKosOpbejG5XQkVrT1OMpS8=";
src = fetchFromGitHub {
owner = "kislyuk";
repo = pname;
rev = "refs/tags/v${version}";
hash = "sha256-N1Us/dpF/y638qIuwTzBiuv4vXfBMtWxmQnMBxNTUuc=";
};
postPatch = ''
substituteInPlace setup.py \
--replace '"coverage",' "" \
--replace " + lint_require" ""
'';
SETUPTOOLS_SCM_PRETEND_VERSION = version;
propagatedBuildInputs = [
pexpect
nativeBuildInputs = [
setuptools
setuptools-scm
];
# tries to build and install test packages which fails
# Tries to build and install test packages which fails
doCheck = false;
pythonImportsCheck = [

View File

@ -10,7 +10,7 @@
buildPythonPackage rec {
pname = "bluetooth-sensor-state-data";
version = "1.6.1";
version = "1.6.2";
format = "pyproject";
disabled = pythonOlder "3.9";
@ -19,7 +19,7 @@ buildPythonPackage rec {
owner = "Bluetooth-Devices";
repo = pname;
rev = "v${version}";
hash = "sha256-3qZlk6zV/AeFG4OSRONQ7EMw9Kk/yHjVHV2o64bxCGM=";
hash = "sha256-NC0l3wbQKz4MVM0kHbXBAUol74ir7V/JQgeYCVuyRs4=";
};
nativeBuildInputs = [

View File

@ -0,0 +1,76 @@
{ lib
, buildPythonPackage
, fetchpatch
, fetchFromGitHub
, poetry-core
, celery
, redis
, pytestCheckHook
, pytest-celery
}:
buildPythonPackage rec {
pname = "celery-singleton";
version = "0.3.1";
format = "pyproject";
src = fetchFromGitHub {
owner = "steinitzu";
repo = "celery-singleton";
rev = version;
hash = "sha256-fHlakxxjYIADELZdxIj6rvsZ/+1QfnKvAg3w5cdzvDc=";
};
postPatch = ''
# Disable coverage reporting in tests
substituteInPlace setup.cfg \
--replace "--cov" "" \
--replace "--no-cov-on-fail" ""
'';
patches = [
# chore(poetry): use poetry-core
# https://github.com/steinitzu/celery-singleton/pull/54
(fetchpatch {
name = "use-poetry-core.patch";
url = "https://github.com/steinitzu/celery-singleton/pull/54/commits/634a001c92a1dff1fae513fc95d733ea9b87e4cf.patch";
hash = "sha256-lXN4khwyL96pWyBS+iuSkGEkegv4HxYtym+6JUcPa94=";
})
];
nativeBuildInputs = [
poetry-core
];
propagatedBuildInputs = [
celery
redis
];
checkInputs = [
pytestCheckHook
pytest-celery
];
pytestFlagsArray = [ "tests" ];
# Tests require a running Redis backend
disabledTests = [
"TestLock"
"TestUnlock"
"TestClear"
"TestSimpleTask"
"TestRaiseOnDuplicateConfig"
"TestUniqueOn"
];
pythonImportsCheck = [ "celery_singleton" ];
meta = with lib; {
description = "Seamlessly prevent duplicate executions of celery tasks";
homepage = "https://github.com/steinitzu/celery-singleton";
changelog = "https://github.com/steinitzu/celery-singleton/blob/${src.rev}/CHANGELOG.md";
license = licenses.mit;
maintainers = with maintainers; [ onny ];
};
}

View File

@ -1,4 +1,5 @@
{ lib
, argcomplete
, backoff
, buildPythonPackage
, fetchFromGitHub
@ -17,7 +18,7 @@
buildPythonPackage rec {
pname = "censys";
version = "2.2.0";
version = "2.2.4";
format = "pyproject";
disabled = pythonOlder "3.7";
@ -26,7 +27,7 @@ buildPythonPackage rec {
owner = "censys";
repo = "censys-python";
rev = "refs/tags/v${version}";
hash = "sha256-CtW6EN9oH/OIZ4XaoSuKlMYK9Mh/ewRs6y34xbfY234=";
hash = "sha256-gCq01lfAoKoS74C8gjj84mZpXDMtdNVaRLwhlEXwiPI=";
};
nativeBuildInputs = [
@ -35,6 +36,7 @@ buildPythonPackage rec {
];
propagatedBuildInputs = [
argcomplete
backoff
requests
rich
@ -73,6 +75,7 @@ buildPythonPackage rec {
meta = with lib; {
description = "Python API wrapper for the Censys Search Engine (censys.io)";
homepage = "https://github.com/censys/censys-python";
changelog = "https://github.com/censys/censys-python/releases/tag/v${version}";
license = with licenses; [ asl20 ];
maintainers = with maintainers; [ fab ];
};

View File

@ -0,0 +1,54 @@
{ lib
, buildPythonPackage
, fetchFromGitHub
, django
, django-debug-toolbar
, psycopg2
, beautifulsoup4
, python
}:
buildPythonPackage rec {
pname = "django-cachalot";
version = "2.5.3";
format = "setuptools";
src = fetchFromGitHub {
owner = "noripyt";
repo = "django-cachalot";
rev = "v${version}";
hash = "sha256-ayAN+PgK3aIpt4R8aeC6c6mRGTnfObycmkoXPTjx4WI=";
};
patches = [
# Disable tests for unsupported caching and database types which would
# require additional running backends
./disable-unsupported-tests.patch
];
propagatedBuildInputs = [
django
];
checkInputs = [
beautifulsoup4
django-debug-toolbar
psycopg2
];
pythonImportsCheck = [ "cachalot" ];
checkPhase = ''
runHook preCheck
${python.interpreter} runtests.py
runHook postCheck
'';
meta = with lib; {
description = "No effort, no worry, maximum performance";
homepage = "https://github.com/noripyt/django-cachalot";
changelog = "https://github.com/noripyt/django-cachalot/blob/${src.rev}/CHANGELOG.rst";
license = licenses.bsd3;
maintainers = with maintainers; [ onny ];
};
}

View File

@ -0,0 +1,65 @@
diff --git a/cachalot/tests/models.py b/cachalot/tests/models.py
index 8c48640..817602c 100644
--- a/cachalot/tests/models.py
+++ b/cachalot/tests/models.py
@@ -77,11 +77,6 @@ class PostgresModel(Model):
date_range = DateRangeField(null=True, blank=True)
datetime_range = DateTimeRangeField(null=True, blank=True)
- class Meta:
- # Tests schema name in table name.
- db_table = '"public"."cachalot_postgresmodel"'
-
-
class UnmanagedModel(Model):
name = CharField(max_length=50)
diff --git a/settings.py b/settings.py
index 19d7560..7095367 100644
--- a/settings.py
+++ b/settings.py
@@ -8,18 +8,9 @@ DATABASES = {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'cachalot.sqlite3',
},
- 'postgresql': {
- 'ENGINE': 'django.db.backends.postgresql',
- 'NAME': 'cachalot',
- 'USER': 'cachalot',
- 'PASSWORD': 'password',
- 'HOST': '127.0.0.1',
- },
- 'mysql': {
- 'ENGINE': 'django.db.backends.mysql',
- 'NAME': 'cachalot',
- 'USER': 'root',
- 'HOST': '127.0.0.1',
+ 'test': {
+ 'ENGINE': 'django.db.backends.sqlite3',
+ 'NAME': ':memory:',
},
}
if 'MYSQL_PASSWORD' in os.environ:
@@ -36,22 +27,6 @@ DEFAULT_AUTO_FIELD = "django.db.models.AutoField"
DATABASE_ROUTERS = ['cachalot.tests.db_router.PostgresRouter']
CACHES = {
- 'redis': {
- 'BACKEND': 'django_redis.cache.RedisCache',
- 'LOCATION': 'redis://127.0.0.1:6379/0',
- 'OPTIONS': {
- # Since we are using both Python 2 & 3 in tests, we need to use
- # a compatible pickle version to avoid unpickling errors when
- # running a Python 2 test after a Python 3 test.
- 'PICKLE_VERSION': 2,
- },
- },
- 'memcached': {
- 'BACKEND': 'django.core.cache.backends.memcached.'
- + ('PyMemcacheCache' if __DJ_V[0] > 2
- and (__DJ_V[1] > 1 or __DJ_V[0] > 3) else 'MemcachedCache'),
- 'LOCATION': '127.0.0.1:11211',
- },
'locmem': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'OPTIONS': {

View File

@ -9,7 +9,7 @@
buildPythonPackage rec {
pname = "faraday-agent-parameters-types";
version = "1.2.0";
version = "1.3.0";
format = "setuptools";
disabled = pythonOlder "3.7";
@ -17,7 +17,7 @@ buildPythonPackage rec {
src = fetchPypi {
pname = "faraday_agent_parameters_types";
inherit version;
hash = "sha256-jQgE/eR8Gd9nMGijH9unhHCrLUn7DbWFkTauoz3O/sM=";
hash = "sha256-XWuWg8PzXdLIuUTZ5dnpFmFmqEhOReqIEmBbCpzdzrg=";
};
propagatedBuildInputs = [

View File

@ -6,9 +6,7 @@
, hatchling
, ipykernel
, ipython
, ipython_genutils
, jupyter-client
, packaging
, psutil
, python-dateutil
, pythonOlder
@ -39,9 +37,7 @@ buildPythonPackage rec {
entrypoints
ipykernel
ipython
ipython_genutils
jupyter-client
packaging
psutil
python-dateutil
pyzmq

View File

@ -9,7 +9,7 @@
buildPythonPackage rec {
pname = "pycfmodel";
version = "0.20.2";
version = "0.20.3";
format = "setuptools";
disabled = pythonOlder "3.7";
@ -18,7 +18,7 @@ buildPythonPackage rec {
owner = "Skyscanner";
repo = pname;
rev = "refs/tags/${version}";
hash = "sha256-TumqpNaxH9YET56PhTXJVG/OQw3syXaYNtHn+Vyh6xI=";
hash = "sha256-dHgd6vnmlg+VXMp7QUZoT2aic1X05lJGm8hDrowALvk=";
};
propagatedBuildInputs = [

View File

@ -7,7 +7,7 @@
buildPythonPackage rec {
pname = "pyxbe";
version = "1.0.1";
version = "1.0.2";
format = "setuptools";
disabled = pythonOlder "3.7";
@ -16,7 +16,7 @@ buildPythonPackage rec {
owner = "mborgerson";
repo = pname;
rev = "refs/tags/v${version}";
hash = "sha256-oOY0g1F5sxGUxXAT19Ygq5q7pnxEhIAKmyYELR1PHEA=";
hash = "sha256-sm8/Lcsk3aL8/MB0cVrKNb8MoQPxGCGpHkEPWv+mPdo=";
};
nativeCheckInputs = [
@ -26,7 +26,7 @@ buildPythonPackage rec {
# Update location for run with pytest
preCheck = ''
substituteInPlace tests/test_load.py \
--replace "'xbefiles'" "'tests/xbefiles'"
--replace '"xbefiles"' '"tests/xbefiles"'
'';
pythonImportsCheck = [

View File

@ -40,7 +40,7 @@
buildPythonPackage rec {
pname = "sentry-sdk";
version = "1.27.0";
version = "1.27.1";
format = "setuptools";
disabled = pythonOlder "3.7";
@ -49,7 +49,7 @@ buildPythonPackage rec {
owner = "getsentry";
repo = "sentry-python";
rev = "refs/tags/${version}";
hash = "sha256-MU/Uaul46jfVg30zMYgx5QJdXociFqZY+vsi53NqY5c=";
hash = "sha256-IXmSQg5I78wwKIzKyuJHypAJeMMGu2vuoo3bqyK1K+c=";
};
propagatedBuildInputs = [

View File

@ -9,7 +9,7 @@
buildPythonPackage rec {
pname = "socid-extractor";
version = "0.0.23";
version = "0.0.24";
format = "setuptools";
disabled = pythonOlder "3.8";
@ -17,8 +17,8 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "soxoj";
repo = pname;
rev = "v${version}";
hash = "sha256-tDKwYgW1vEyPzuouPGK9tdTf3vNr+UaosHtQe23srG0=";
rev = "refs/tags/v${version}";
hash = "sha256-INewgfm+E2t4QfE+SRAm5a74AKsifNtnwC0WPBqPUns=";
};
propagatedBuildInputs = [
@ -28,9 +28,9 @@ buildPythonPackage rec {
];
postPatch = ''
# https://github.com/soxoj/socid-extractor/pull/125
# https://github.com/soxoj/socid-extractor/pull/150
substituteInPlace requirements.txt \
--replace "beautifulsoup4~=4.10.0" "beautifulsoup4>=4.10.0"
--replace "beautifulsoup4~=4.11.1" "beautifulsoup4>=4.10.0"
'';
# Test require network access
@ -43,6 +43,7 @@ buildPythonPackage rec {
meta = with lib; {
description = "Python module to extract details from personal pages";
homepage = "https://github.com/soxoj/socid-extractor";
changelog = "https://github.com/soxoj/socid-extractor/blob/v${version}/CHANGELOG.md";
license = with licenses; [ gpl3Only ];
maintainers = with maintainers; [ fab ];
};

View File

@ -6,16 +6,16 @@
buildGoModule rec {
pname = "cloud-nuke";
version = "0.31.2";
version = "0.32.0";
src = fetchFromGitHub {
owner = "gruntwork-io";
repo = pname;
rev = "refs/tags/v${version}";
hash = "sha256-t7LFAWdqbJLOmrac6IXgo+9TK53B7FWLFo1YAY4sPqs=";
hash = "sha256-jxhFBfz5CWycEXx86jL9inlP8nxNK7vbVn2U8EzQ7QA=";
};
vendorHash = "sha256-AbHjwHwgFwDOwgbuQI3D+zNY71ikA5CPlJUFQIDjhm0=";
vendorHash = "sha256-C2YXjfn3Pk0kL4G/cHsmr2VHUYGO+3s3eSiWVJZ2dX8=";
nativeBuildInputs = [
makeBinaryWrapper

View File

@ -8,16 +8,16 @@
buildGoModule rec {
pname = "go-task";
version = "3.26.0";
version = "3.27.1";
src = fetchFromGitHub {
owner = pname;
repo = "task";
rev = "refs/tags/v${version}";
hash = "sha256-BmQL9e7/53IEDUGeiTcFQbK64/JDTwJvBVRrxGFmzMA=";
hash = "sha256-MwZtdxoWo5yeJKzbMIfigt0WUjZ52B8MeRsx43D8n1k=";
};
vendorHash = "sha256-iO4VzY/UyPJeSxDYAPq+dLuAD2FOaac8rlmAVM4GYB8=";
vendorHash = "sha256-05+/NbLks9Dp9Z7KscK9yeEzFJug7VFBqViievX6UOs=";
doCheck = false;

View File

@ -12,13 +12,13 @@
rustPlatform.buildRustPackage rec {
pname = "kdash";
version = "0.3.7";
version = "0.4.0";
src = fetchFromGitHub {
owner = "kdash-rs";
repo = pname;
rev = "v${version}";
sha256 = "sha256-qaPRC5W+dLNbrCYc8fKdaSm54OuObJ20tVYCF7ZANYs=";
sha256 = "sha256-U2Ne0wDgPkNZa68KbJ9Hke5l+tBAf7imu1Cj+r/uZUE=";
};
nativeBuildInputs = [ perl python3 pkg-config ];
@ -26,7 +26,7 @@ rustPlatform.buildRustPackage rec {
buildInputs = [ openssl xorg.xcbutil ]
++ lib.optional stdenv.isDarwin AppKit;
cargoHash = "sha256-Z//EsuizhCZIItKfxF8xJs0aQQlhiprV0I2cIWEGsqg=";
cargoHash = "sha256-dX5p+eLhZlU1Xg2SoqtEYb8T3/lvoJa78zgQStLPZNE=";
meta = with lib; {
description = "A simple and fast dashboard for Kubernetes";

View File

@ -1,4 +1,4 @@
{ lib, stdenv, buildNpmPackage, fetchFromGitHub, vscode }:
{ lib, stdenv, buildNpmPackage, fetchFromGitHub, vscodium, vscode-extensions }:
buildNpmPackage rec {
pname = "vscode-langservers-extracted";
@ -11,20 +11,14 @@ buildNpmPackage rec {
hash = "sha256-RLRDEHfEJ2ckn0HTMu0WbMK/o9W20Xwm+XI6kCq57u8=";
};
npmDepsHash = "sha256-QhiSj/DigsI4Bfwmk3wG4lDQOWuDDduc/sfJlXiEoGE=";
postPatch = ''
# TODO: Add vscode-eslint as a dependency
# Eliminate the vscode-eslint bin
sed -i '/^\s*"vscode-eslint-language-server":.*bin\//d' package.json package-lock.json
'';
npmDepsHash = "sha256-DhajWr+O0zgJALr7I/Nc5GmkOsa9QXfAQpZCaULV47M=";
buildPhase =
let
extensions =
if stdenv.isDarwin
then "${vscode}/Applications/Visual\\ Studio\\ Code.app/Contents/Resources/app/extensions"
else "${vscode}/lib/vscode/resources/app/extensions";
then "${vscodium}/Applications/VSCodium.app/Contents/Resources/app/extensions"
else "${vscodium}/lib/vscode/resources/app/extensions";
in
''
npx babel ${extensions}/css-language-features/server/dist/node \
@ -35,11 +29,13 @@ buildNpmPackage rec {
--out-dir lib/json-language-server/node/
npx babel ${extensions}/markdown-language-features/server/dist/node \
--out-dir lib/markdown-language-server/node/
cp -r ${vscode-extensions.dbaeumer.vscode-eslint}/share/vscode/extensions/dbaeumer.vscode-eslint/server/out \
lib/eslint-language-server
mv lib/markdown-language-server/node/workerMain.js lib/markdown-language-server/node/main.js
'';
meta = with lib; {
description = "HTML/CSS/JSON/ESLint language servers extracted from vscode.";
description = "HTML/CSS/JSON/ESLint language servers extracted from vscode";
homepage = "https://github.com/hrsh7th/vscode-langservers-extracted";
license = licenses.mit;
maintainers = with maintainers; [ lord-valen ];

View File

@ -2,16 +2,16 @@
buildGoModule rec {
pname = "ls-lint";
version = "2.0.0";
version = "2.0.1";
src = fetchFromGitHub {
owner = "loeffel-io";
repo = "ls-lint";
rev = "v${version}";
sha256 = "sha256-eEP/l3vdObdxUYIp8eSSCn3W0ypcmykbwQTDP083MVE=";
sha256 = "sha256-JG3gDmPfeGyiiIsFX0jFN1Xi9lY4eednmEfJLdu0atA=";
};
vendorHash = "sha256-nSHhU6z3ItCKBZy8ENBcAkXqSVo3DU6hAyezQczKShM=";
vendorHash = "sha256-/6Y20AvhUShaE1sNTccB62x8YkVLLjhl6fg5oY4gL4I=";
meta = with lib; {
description = "An extremely fast file and directory name linter";

View File

@ -0,0 +1,25 @@
{ lib
, rustPlatform
, fetchFromGitHub
}:
rustPlatform.buildRustPackage {
pname = "complgen";
version = "unstable-2023-07-05";
src = fetchFromGitHub {
owner = "adaszko";
repo = "complgen";
rev = "e23474c3bd4544a8e6f7b51947616dbdb18fe1dd";
hash = "sha256-Ura4/yMLVRlgTiNiXNPMtKu4cPWge0bLQp/n+tgeDiM=";
};
cargoHash = "sha256-P7wHKrRUVlrLAaLYhVH/p3oOc7UCGP3aQZotVxyeJTs=";
meta = with lib; {
description = "Generate {bash,fish,zsh} completions from a single EBNF-like grammar";
homepage = "https://github.com/adaszko/complgen";
license = licenses.asl20;
maintainers = with maintainers; [ figsoda ];
};
}

View File

@ -6,13 +6,13 @@
rustPlatform.buildRustPackage rec {
pname = "cargo-llvm-cov";
version = "0.5.22";
version = "0.5.23";
src = fetchCrate {
inherit pname version;
sha256 = "sha256-nvDeKHOpDhszLxPFh1CZhA+NrFnKbminv8qlIT0qvx0=";
sha256 = "sha256-sAuarLfvgX6qjZV2eum3+wY5gRiCbRSbJUBgFIHd8y0=";
};
cargoSha256 = "sha256-krpvo55PNECVLh1SjZhXwFVjI6s2u7l/MPCYeDFsylM=";
cargoSha256 = "sha256-gGzVQqPHvjERvQV2Yo3wFP7n/w3atuLrHSch1CWui4I=";
# skip tests which require llvm-tools-preview
checkFlags = [

View File

@ -1,6 +1,6 @@
{ lib
, rustPlatform
, fetchFromGitHub
, fetchCrate
, installShellFiles
, stdenv
, nix-update-script
@ -9,16 +9,14 @@
rustPlatform.buildRustPackage rec {
pname = "cargo-show-asm";
version = "0.2.18";
version = "0.2.19";
src = fetchFromGitHub {
owner = "pacak";
repo = "cargo-show-asm";
rev = version;
hash = "sha256-K7hWXRS6bb9XZxIgZQeu22Gtt3WmXI63Xd97Unm6mHs=";
src = fetchCrate {
inherit pname version;
hash = "sha256-bIaEXlMIEQ2pnzjp7ll6iJFGAQjGb3HVBTbfGSPHrvg=";
};
cargoHash = "sha256-fLvJyWoZ2ncbw8ksKfuQ/0oTYFOdzBBCrmtVbbMSXjo=";
cargoHash = "sha256-qmxd6qt8pL/5TWPDCiBQrvqb6r7VAJOrSR1OSpibQFU=";
nativeBuildInputs = [
installShellFiles

View File

@ -0,0 +1,59 @@
{ lib
, stdenvNoCC
, fetchurl
, undmg
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "aldente";
version = "1.22";
src = fetchurl {
url = "https://github.com/davidwernhart/aldente-charge-limiter/releases/download/${finalAttrs.version}/AlDente.dmg";
hash = "sha256-y8S9SCDbvoKGtNqGQvJDSpbLhh7GqXUo7pLcMzuCnjo=";
};
dontBuild = true;
dontFixup = true;
nativeBuildInputs = [ undmg ];
# AlDente.dmg is not HFS formatted, default unpackPhase fails
# https://discourse.nixos.org/t/help-with-error-only-hfs-file-systems-are-supported-on-ventura
unpackCmd = ''
if ! [[ "$curSrc" =~ \.dmg$ ]]; then return 1; fi
mnt=$(mktemp -d -t ci-XXXXXXXXXX)
function finish {
/usr/bin/hdiutil detach $mnt -force
}
trap finish EXIT
/usr/bin/hdiutil attach -nobrowse -readonly $src -mountpoint $mnt
shopt -s extglob
DEST="$PWD"
(cd "$mnt"; cp -a !(Applications) "$DEST/")
'';
sourceRoot = "AlDente.app";
installPhase = ''
runHook preInstall
mkdir -p $out/Applications/AlDente.app
cp -R . $out/Applications/AlDente.app
runHook postInstall
'';
meta = with lib; {
description = "macOS tool to limit maximum charging percentage";
homepage = "https://apphousekitchen.com";
changelog = "https://github.com/davidwernhart/aldente-charge-limiter/releases/tag/${finalAttrs.version}";
license = with licenses; [ unfree ];
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
maintainers = with maintainers; [ stepbrobd ];
platforms = [ "aarch64-darwin" "x86_64-darwin" ];
};
})

View File

@ -23,13 +23,21 @@ stdenv.mkDerivation rec {
outputs = [ "out" "man" ];
# Based on hostapd's defconfig. Only differences are tracked.
extraConfig = ''
# Use epoll(7) instead of select(2) on linux
CONFIG_ELOOP_EPOLL=y
# Drivers
CONFIG_DRIVER_WIRED=y
CONFIG_LIBNL32=y
CONFIG_DRIVER_NONE=y
# Integrated EAP server
CONFIG_EAP_SIM=y
CONFIG_EAP_AKA=y
CONFIG_EAP_AKA_PRIME=y
CONFIG_EAP_PAX=y
CONFIG_EAP_PSK=y
CONFIG_EAP_PWD=y
CONFIG_EAP_SAKE=y
CONFIG_EAP_GPSK=y
@ -38,29 +46,48 @@ stdenv.mkDerivation rec {
CONFIG_EAP_IKEV2=y
CONFIG_EAP_TNC=y
CONFIG_EAP_EKE=y
CONFIG_RADIUS_SERVER=y
CONFIG_IEEE80211R=y
CONFIG_IEEE80211N=y
CONFIG_IEEE80211AC=y
CONFIG_IEEE80211AX=y
CONFIG_FULL_DYNAMIC_VLAN=y
CONFIG_VLAN_NETLINK=y
CONFIG_TLS=openssl
CONFIG_TLSV11=y
CONFIG_TLSV12=y
CONFIG_INTERNETWORKING=y
CONFIG_HS20=y
CONFIG_ACS=y
CONFIG_GETRANDOM=y
CONFIG_SAE=y
CONFIG_SAE_PK=y
CONFIG_OWE=y
CONFIG_OCV=y
# TKIP is considered insecure and upstream support will be removed in the future
CONFIG_NO_TKIP=y
# Misc
CONFIG_RADIUS_SERVER=y
CONFIG_FULL_DYNAMIC_VLAN=y
CONFIG_VLAN_NETLINK=y
CONFIG_GETRANDOM=y
CONFIG_INTERWORKING=y
CONFIG_HS20=y
CONFIG_FST=y
CONFIG_FST_TEST=y
CONFIG_ACS=y
CONFIG_WNM=y
CONFIG_MBO=y
CONFIG_IEEE80211R=y
CONFIG_IEEE80211W=y
CONFIG_IEEE80211N=y
CONFIG_IEEE80211AC=y
CONFIG_IEEE80211AX=y
'' + lib.optionalString (sqlite != null) ''
CONFIG_SQLITE=y
'';
passAsFile = [ "extraConfig" ];
configurePhase = ''
cd hostapd
cp -v defconfig .config
echo "$extraConfig" >> .config
cat $extraConfigPath >> .config
cat -n .config
substituteInPlace Makefile --replace /usr/local $out
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE $(pkg-config --cflags libnl-3.0)"

View File

@ -57,6 +57,7 @@ stdenv.mkDerivation rec {
CONFIG_LIBNL32=y
CONFIG_OWE=y
CONFIG_P2P=y
CONFIG_SAE_PK=y
CONFIG_TDLS=y
CONFIG_TLS=openssl
CONFIG_TLSV11=y

View File

@ -2,6 +2,7 @@
, kernel ? null
, stdenv
, linuxKernel
, removeLinuxDRM ? false
, ...
} @ args:
@ -11,10 +12,13 @@ in
callPackage ./generic.nix args {
# check the release notes for compatible kernels
kernelCompatible =
if stdenv'.isx86_64
if stdenv'.isx86_64 || removeLinuxDRM
then kernel.kernelOlder "6.4"
else kernel.kernelOlder "6.2";
latestCompatibleLinuxPackages = linuxKernel.packages.linux_6_3;
latestCompatibleLinuxPackages = if stdenv'.isx86_64 || removeLinuxDRM then
linuxKernel.packages.linux_6_3
else
linuxKernel.packages.linux_6_1;
# this package should point to the latest release.
version = "2.1.12";

View File

@ -2,6 +2,7 @@
, kernel ? null
, stdenv
, linuxKernel
, removeLinuxDRM ? false
, ...
} @ args:
@ -13,19 +14,22 @@ callPackage ./generic.nix args {
# NOTE:
# zfs-2.1.9<=x<=2.1.10 is broken with aarch64-linux-6.2
# for future releases, please delete this condition.
kernelCompatible = if stdenv'.isx86_64
then kernel.kernelOlder "6.3"
kernelCompatible = if stdenv'.isx86_64 || removeLinuxDRM
then kernel.kernelOlder "6.4"
else kernel.kernelOlder "6.2";
latestCompatibleLinuxPackages = linuxKernel.packages.linux_6_1;
latestCompatibleLinuxPackages = if stdenv'.isx86_64 || removeLinuxDRM then
linuxKernel.packages.linux_6_3
else
linuxKernel.packages.linux_6_1;
# this package should point to a version / git revision compatible with the latest kernel release
# IMPORTANT: Always use a tagged release candidate or commits from the
# zfs-<version>-staging branch, because this is tested by the OpenZFS
# maintainers.
version = "2.1.12-staging-2023-04-18";
rev = "e25f9131d679692704c11dc0c1df6d4585b70c35";
version = "2.1.12";
sha256 = "tJLwyqUj1l5F0WKZDeMGrEFa8fc/axKqm31xtN51a5M=";
sha256 = "eYUR5d4gpTrlFu6j1uL83DWL9uPGgAUDRdSEb73V5i4=";
isUnstable = true;
}

View File

@ -5,13 +5,13 @@
buildGoModule rec {
pname = "gobgpd";
version = "3.15.0";
version = "3.16.0";
src = fetchFromGitHub {
owner = "osrg";
repo = "gobgp";
rev = "refs/tags/v${version}";
hash = "sha256-s4kZepphr3QMUFpxdJW5exZKfUPVTisFTRN81tZnQUY=";
hash = "sha256-RdZk2I7QvIWEeiL81N5PLJYE0KHYbkvjJeDXTg3F9c4=";
};
vendorHash = "sha256-Z7vYpDQIKc4elVBLiGtxF3D9pec4QNvWFLpux/29t1Y=";

View File

@ -1,7 +1,6 @@
{ stdenv
, lib
, go
, pkgs
, buildGoModule
, fetchFromGitHub
, fetchurl
@ -32,10 +31,10 @@
}:
let
version = "2.44.0";
version = "2.45.0";
webUiStatic = fetchurl {
url = "https://github.com/prometheus/prometheus/releases/download/v${version}/prometheus-web-ui-${version}.tar.gz";
sha256 = "sha256-4FNW78V5bQWbTwmaEpvKaB5f/+uYqXjf0F+FONZq5c4=";
hash = "sha256-xfIxq1cFkLjSxjPPdCjgv+FOvbUGdeZpRecbSIFUAXo=";
};
in
buildGoModule rec {
@ -48,10 +47,10 @@ buildGoModule rec {
owner = "prometheus";
repo = "prometheus";
rev = "v${version}";
sha256 = "sha256-JCEJQ0GjP0jxyQudmgo2krjxXmsOFSwzh9Cm1XsrFZo=";
hash = "sha256-smc51YrWW8jPzmIkOi0kKaAGUS3TUXpzGDLyslhRVUE=";
};
vendorSha256 = "sha256-dR69FWhiT5FLQjZ1G0uf2QPCu9nEp2YkRjrkP1a/948=";
vendorHash = "sha256-W958ODhmRL4GAM6hZd71BgEmrwrzR2XHoDrc+rBo4TI=";
excludedPackages = [ "documentation/prometheus-mixin" ];

View File

@ -0,0 +1,40 @@
{ lib
, autoreconfHook
, fetchFromGitHub
, rinetd
, stdenv
, testers
}:
stdenv.mkDerivation rec {
pname = "rinetd";
version = "0.73";
src = fetchFromGitHub {
owner = "samhocevar";
repo = "rinetd";
rev = "v${version}";
hash = "sha256-W8PLGd3RwmBTh1kw3k8+ZfP6AzRhZORCkxZzQ9ZbPN4=";
};
nativeBuildInputs = [
autoreconfHook
];
preConfigure = ''
./bootstrap
'';
passthru.tests.version = testers.testVersion {
package = rinetd;
command = "rinetd --version";
};
meta = with lib; {
description = "TCP/UDP port redirector";
homepage = "https://github.com/samhocevar/rinetd";
changelog = "https://github.com/samhocevar/rinetd/blob/${src.rev}/CHANGES.md";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ janik ];
};
}

View File

@ -8,16 +8,16 @@
buildNpmPackage rec {
pname = "zigbee2mqtt";
version = "1.32.0";
version = "1.32.1";
src = fetchFromGitHub {
owner = "Koenkk";
repo = "zigbee2mqtt";
rev = version;
hash = "sha256-OUd6Q9/JtllTSAzR879MrgWz5MZnRsEolGsuQbxURh8=";
hash = "sha256-HHu3aycYvcv7c4CMvv9GzeB4ZAleLDW/nRKmWahSQ88=";
};
npmDepsHash = "sha256-GoowjWCBfMcN5qWG2rV6wSPx01TozIb5KDh77D49F/M=";
npmDepsHash = "sha256-uryyBFGNdsOVferTNTQ8+O3gv+lJ3mCuaU/47UzqcMk=";
nativeBuildInputs = [
python3

View File

@ -1,11 +1,16 @@
{ lib, stdenv, fetchFromGitHub, makeWrapper
, perl, pandoc, python3Packages, git
, perl, pandoc, python3, git
, par2cmdline ? null, par2Support ? true
}:
assert par2Support -> par2cmdline != null;
let version = "0.32"; in
let
version = "0.33.2";
pythonDeps = with python3.pkgs; [ setuptools tornado ]
++ lib.optionals (!stdenv.isDarwin) [ pyxattr pylibacl fuse ];
in
stdenv.mkDerivation {
pname = "bup";
@ -15,23 +20,13 @@ stdenv.mkDerivation {
repo = "bup";
owner = "bup";
rev = version;
sha256 = "sha256-SWnEJ5jwu/Jr2NLsTS8ajWay0WX/gYbOc3J6w00DndI=";
hash = "sha256-DDVCrY4SFqzKukXm8rIq90xAW2U+yYyhyPmUhslMMWI=";
};
buildInputs = [
git
(python3Packages.python.withPackages
(p: with p; [ setuptools tornado ]
++ lib.optionals (!stdenv.isDarwin) [ pyxattr pylibacl fuse ]))
];
buildInputs = [ git python3 ];
nativeBuildInputs = [ pandoc perl makeWrapper ];
postPatch = ''
patchShebangs .
substituteInPlace Makefile --replace "-Werror" ""
'' + lib.optionalString par2Support ''
substituteInPlace cmd/fsck-cmd.py --replace "'par2'" "'${par2cmdline}/bin/par2'"
'';
postPatch = "patchShebangs .";
dontAddPrefix = true;
@ -44,7 +39,8 @@ stdenv.mkDerivation {
postInstall = ''
wrapProgram $out/bin/bup \
--prefix PATH : ${git}/bin
--prefix PATH : ${lib.makeBinPath [ git par2cmdline ]} \
--prefix NIX_PYTHONPATH : ${lib.makeSearchPathOutput "lib" python3.sitePackages pythonDeps}
'';
meta = with lib; {
@ -58,6 +54,6 @@ stdenv.mkDerivation {
'';
platforms = platforms.linux ++ platforms.darwin;
maintainers = with maintainers; [ ];
maintainers = with maintainers; [ rnhmjoj ];
};
}

View File

@ -1,4 +1,4 @@
{ lib, stdenv, runCommand, fetchFromSavannah, flex, bison, python3, autoconf, automake, libtool, bash
{ lib, stdenv, runCommand, fetchFromSavannah, fetchpatch, flex, bison, python3, autoconf, automake, libtool, bash
, rsync, gettext, ncurses, libusb-compat-0_1, freetype, qemu, lvm2, unifont, pkg-config
, buildPackages
, nixosTests
@ -83,6 +83,14 @@ stdenv.mkDerivation rec {
patches = [
./fix-bash-completion.patch
./add-hidden-menu-entries.patch
# Revert upstream commit that breaks reading XFS filesystems
# FIXME: remove when fixed upstream
(fetchpatch {
url = "https://git.savannah.gnu.org/cgit/grub.git/patch/?id=ef7850c757fb3dd2462a512cfa0ff19c89fcc0b1";
revert = true;
hash = "sha256-p8Kcv9d7ri4eJU6Fgqyzdj0hV5MHSe50AF02FPDJx2Y=";
})
];
postPatch = if kbdcompSupport then ''

View File

@ -1,45 +0,0 @@
{ lib, fetchFromGitHub, perlPackages, autoreconfHook, iproute2, perl }:
perlPackages.buildPerlPackage rec {
pname = "ddclient";
version = "3.10.0";
outputs = [ "out" ];
src = fetchFromGitHub {
owner = "ddclient";
repo = "ddclient";
rev = "v${version}";
sha256 = "sha256-wWUkjXwVNZRJR1rXPn3IkDRi9is9vsRuNC/zq8RpB1E=";
};
postPatch = ''
touch Makefile.PL
'';
nativeBuildInputs = [ autoreconfHook ];
buildInputs = with perlPackages; [ IOSocketINET6 IOSocketSSL JSONPP ];
installPhase = ''
runHook preInstall
# patch sheebang ddclient script which only exists after buildPhase
preConfigure
install -Dm755 ddclient $out/bin/ddclient
install -Dm644 -t $out/share/doc/ddclient COP* README.* ChangeLog.md
runHook postInstall
'';
# TODO: run upstream tests
doCheck = false;
meta = with lib; {
description = "Client for updating dynamic DNS service entries";
homepage = "https://ddclient.net/";
license = licenses.gpl2Plus;
platforms = platforms.linux;
maintainers = with maintainers; [ SuperSandro2000 ];
};
}

View File

@ -5,13 +5,13 @@
python3.pkgs.buildPythonApplication rec {
pname = "cfripper";
version = "1.13.1";
version = "1.13.2";
src = fetchFromGitHub {
owner = "Skyscanner";
repo = pname;
rev = "refs/tags/${version}";
hash = "sha256-V27eZoeg5r+h8W1H66eNauGOvV8tT/oo4fRfSLhz1MY=";
hash = "sha256-wcOtj56l2bUYE+WdbDwtB3aWlP2zEAFaaqw4THcHxbY=";
};
propagatedBuildInputs = with python3.pkgs; [
@ -43,6 +43,11 @@ python3.pkgs.buildPythonApplication rec {
"tests/config/test_pluggy.py"
];
disabledTests = [
# Assertion fails
"test_multiple_resources_with_wildcard_resources_are_detected"
];
pythonImportsCheck = [
"cfripper"
];

View File

@ -6,13 +6,13 @@
stdenv.mkDerivation rec {
pname = "exploitdb";
version = "2023-07-05";
version = "2023-07-08";
src = fetchFromGitLab {
owner = "exploit-database";
repo = pname;
rev = "refs/tags/${version}";
hash = "sha256-YJ7RR4PMa87Fw8dtRK4t+rDI1uyLfW8vQ/Rp1gr/Qw0=";
hash = "sha256-hOPTK7nkKmLsVb6GJIE4FTdCGU6PdjQtUpTXzhsMXXo=";
};
nativeBuildInputs = [

View File

@ -1,6 +1,7 @@
{ lib
, buildNpmPackage
, fetchFromGitHub
, fetchpatch
, installShellFiles
}:
@ -15,16 +16,22 @@ buildNpmPackage rec {
hash = "sha256-W/ZQXJXvFEIgj5PeI+jvw4nIkNP4qa1NyQCOv0unIuA=";
};
npmDepsHash = "sha256-WOsStvm7UC2Jnb803mHoJxDUs1I8dDT7HRPdpIXQne8=";
npmDepsHash = "sha256-x/Oc39S6XwZ/ZsS/lmMU9OkHLlKuUxETYmD8pdHAIg8=";
patches = [
# djot.js v0.2.3 doesn't include package-lock.json in the repository
# remove at next release
(fetchpatch {
name = "add-package-lock-json-and-yarn-lock-to-repository.patch";
url = "https://github.com/jgm/djot.js/commit/15ed52755b2968932d4a9a80805b9ea6183fe539.patch";
hash = "sha256-saNmU7z4IOOG3ptXMFDSNci5uu0d2GiVZ/FAlaNccTc=";
})
];
nativeBuildInputs = [
installShellFiles
];
postPatch = ''
ln -s ${./package-lock.json} package-lock.json
'';
postInstall = ''
installManPage doc/djot.1
'';

File diff suppressed because it is too large Load Diff

View File

@ -146,6 +146,7 @@ mapAliases ({
bitcoind-classic = throw "bitcoind-classic has been removed: the Bitcoin Classic project has closed down, https://bitcoinclassic.com/news/closing.html"; # Added 2022-11-24
bitcoin-gold = throw "bitcoin-gold has been removed since it's unnmaintained and will stop building with Qt > 5.14"; # Added 2022-11-24
bitcoind-gold = throw "bitcoin-gold has been removed since it's unnmaintained: https://github.com/BTCGPU/BTCGPU/graphs/code-frequency"; # Added 2022-11-24
ddclient = throw "ddclient has been removed on the request of the upstream maintainer because it is unmaintained and has bugs. Please switch to a different software like `inadyn` or `knsupdate`."; # Added 2023-07-04
digibyte = throw "digibyte has been removed since it's unnmaintained and will stop building with Qt > 5.14"; # Added 2022-11-24
digibyted = throw "digibyted has been removed since it's unnmaintained: https://github.com/digibyte/digibyte/graphs/code-frequency"; # Added 2022-11-24
bitsnbots = throw "bitsnbots has been removed because it was broken and upstream missing"; # Added 2021-08-22

View File

@ -6993,8 +6993,6 @@ with pkgs;
ddcutil = callPackage ../tools/misc/ddcutil { };
ddclient = callPackage ../tools/networking/ddclient { };
dd_rescue = callPackage ../tools/system/dd_rescue { };
ddh = callPackage ../tools/system/ddh { };
@ -9798,9 +9796,8 @@ with pkgs;
npmHooks = callPackage ../build-support/node/build-npm-package/hooks { };
inherit (callPackage ../build-support/node/fetch-npm-deps {
inherit (darwin.apple_sdk.frameworks) Security;
}) fetchNpmDeps prefetch-npm-deps;
inherit (callPackage ../build-support/node/fetch-npm-deps { })
fetchNpmDeps prefetch-npm-deps;
nodePackages_latest = dontRecurseIntoAttrs nodejs_latest.pkgs;
@ -18495,6 +18492,8 @@ with pkgs;
complexity = callPackage ../development/tools/misc/complexity { };
complgen = callPackage ../development/tools/misc/complgen { };
conan = callPackage ../development/tools/build-managers/conan { };
cookiecutter = with python3Packages; toPythonApplication cookiecutter;
@ -27017,6 +27016,8 @@ with pkgs;
acpitool = callPackage ../os-specific/linux/acpitool { };
aldente = callPackage ../os-specific/darwin/aldente { };
alfred = callPackage ../os-specific/linux/batman-adv/alfred.nix { };
alertmanager-bot = callPackage ../servers/monitoring/alertmanager-bot { };
@ -39241,6 +39242,8 @@ with pkgs;
stdenv = if stdenv.cc.isClang then llvmPackages_5.stdenv else stdenv;
});
rinetd = callPackage ../servers/rinetd { };
rink = callPackage ../applications/science/misc/rink {
inherit (darwin.apple_sdk.frameworks) Security;
};

View File

@ -1711,6 +1711,8 @@ self: super: with self; {
celery-redbeat = callPackage ../development/python-modules/celery-redbeat { };
celery-singleton = callPackage ../development/python-modules/celery-singleton { };
cement = callPackage ../development/python-modules/cement { };
cemm = callPackage ../development/python-modules/cemm { };
@ -2707,6 +2709,8 @@ self: super: with self; {
django-bootstrap4 = callPackage ../development/python-modules/django-bootstrap4 { };
django-cachalot = callPackage ../development/python-modules/django-cachalot { };
django-cache-url = callPackage ../development/python-modules/django-cache-url { };
django-cacheops = callPackage ../development/python-modules/django-cacheops { };