Merge staging-next into staging

This commit is contained in:
github-actions[bot]
2024-12-25 18:04:40 +00:00
committed by GitHub
26 changed files with 547 additions and 330 deletions
+6 -6
View File
@@ -9734,6 +9734,12 @@
githubId = 36667224;
name = "Yingchi Long";
};
IncredibleLaser = {
github = "IncredibleLaser";
githubId = 45564436;
matrix = "@incrediblelaser:tchncs.de";
name = "Gereon Schomber";
};
indexyz = {
email = "indexyz@pm.me";
github = "5aaee9";
@@ -14811,12 +14817,6 @@
name = "Marcin Mikuła";
keys = [ { fingerprint = "5547 2A56 AC30 69C9 15C8 B98D 997F 71FA 1D74 6E37"; } ];
};
milahu = {
email = "milahu@gmail.com";
github = "milahu";
githubId = 12958815;
name = "Milan Hauth";
};
milesbreslin = {
email = "milesbreslin@gmail.com";
github = "MilesBreslin";
@@ -63,6 +63,8 @@
- [waagent](https://github.com/Azure/WALinuxAgent), the Microsoft Azure Linux Agent (waagent) manages Linux provisioning and VM interaction with the Azure Fabric Controller. Available with [services.waagent](options.html#opt-services.waagent.enable).
- [duckdns](https://www.duckdns.org), free dynamic DNS. Available with [services.duckdns](options.html#opt-services.duckdns.enable)
- [nostr-rs-relay](https://git.sr.ht/~gheartsfield/nostr-rs-relay/), This is a nostr relay, written in Rust. Available as [services.nostr-rs-relay](options.html#opt-services.nostr-rs-relay.enable).
- [Actual Budget](https://actualbudget.org/), a local-first personal finance app. Available as [services.actual](#opt-services.actual.enable).
@@ -153,6 +155,9 @@
- `vscode-utils.buildVscodeExtension` now requires pname as an argument
- The behavior of `services.hostapd.radios.<name>.networks.<name>.authentication.enableRecommendedPairwiseCiphers` was changed to not include `CCMP-256` anymore.
Since all configured pairwise ciphers have to be supported by the radio, this caused startup failures on many devices which is hard to debug in hostapd.
- `nerdfonts` has been separated into individual font packages under the namespace `nerd-fonts`. The directories for font
files have changed from `$out/share/fonts/{opentype,truetype}/NerdFonts` to
`$out/share/fonts/{opentype,truetype}/NerdFonts/<fontDirName>`, where `<fontDirName>` can be found in the
+1
View File
@@ -763,6 +763,7 @@
./services/misc/disnix.nix
./services/misc/docker-registry.nix
./services/misc/domoticz.nix
./services/misc/duckdns.nix
./services/misc/duckling.nix
./services/misc/dwm-status.nix
./services/misc/dysnomia.nix
@@ -11,7 +11,6 @@ let
attrNames
attrValues
concatLists
concatMap
concatMapStrings
concatStringsSep
count
@@ -34,11 +33,9 @@ let
mkOption
mkPackageOption
mkRemovedOptionModule
optional
optionalAttrs
optionalString
optionals
singleton
stringLength
toLower
types
@@ -710,7 +707,7 @@ in {
pairwiseCiphers = mkOption {
default = ["CCMP"];
example = ["CCMP-256" "GCMP-256"];
example = ["GCMP" "GCMP-256"];
type = types.listOf types.str;
description = ''
Set of accepted cipher suites (encryption algorithms) for pairwise keys (unicast packets).
@@ -719,7 +716,8 @@ in {
Please refer to the hostapd documentation for allowed values. Generally, only
CCMP or GCMP modes should be considered safe options. Most devices support CCMP while
GCMP is often only available with devices supporting WiFi 5 (IEEE 802.11ac) or higher.
GCMP and GCMP-256 is often only available with devices supporting WiFi 5 (IEEE 802.11ac) or higher.
CCMP-256 support is rare.
'';
};
@@ -906,7 +904,7 @@ in {
bssCfg = bssSubmod.config;
pairwiseCiphers =
concatStringsSep " " (unique (bssCfg.authentication.pairwiseCiphers
++ optionals bssCfg.authentication.enableRecommendedPairwiseCiphers ["CCMP" "CCMP-256" "GCMP" "GCMP-256"]));
++ optionals bssCfg.authentication.enableRecommendedPairwiseCiphers ["CCMP" "GCMP" "GCMP-256"]));
in {
settings = {
ssid = bssCfg.ssid;
+216 -166
View File
@@ -1,49 +1,81 @@
{ config, pkgs, lib, ... }:
{
config,
pkgs,
lib,
...
}:
let
inherit (lib) any boolToString concatStringsSep isBool isString mapAttrsToList mkDefault mkEnableOption mkIf mkMerge mkOption optionalAttrs types mkPackageOption;
inherit (lib)
any
boolToString
concatStringsSep
isBool
isString
mapAttrsToList
mkDefault
mkEnableOption
mkIf
mkMerge
mkOption
optionalAttrs
types
mkPackageOption
;
package = cfg.package.override { inherit (cfg) stateDir; };
cfg = config.services.dolibarr;
vhostCfg = lib.optionalAttrs (cfg.nginx != null) config.services.nginx.virtualHosts."${cfg.domain}";
mkConfigFile = filename: settings:
mkConfigFile =
filename: settings:
let
# hack in special logic for secrets so we read them from a separate file avoiding the nix store
secretKeys = [ "force_install_databasepass" "dolibarr_main_db_pass" "dolibarr_main_instance_unique_id" ];
secretKeys = [
"force_install_databasepass"
"dolibarr_main_db_pass"
"dolibarr_main_instance_unique_id"
];
toStr = k: v:
if (any (str: k == str) secretKeys) then v
else if isString v then "'${v}'"
else if isBool v then boolToString v
else if v == null then "null"
else toString v
;
toStr =
k: v:
if (any (str: k == str) secretKeys) then
v
else if isString v then
"'${v}'"
else if isBool v then
boolToString v
else if v == null then
"null"
else
toString v;
in
pkgs.writeText filename ''
<?php
${concatStringsSep "\n" (mapAttrsToList (k: v: "\$${k} = ${toStr k v};") settings)}
'';
pkgs.writeText filename ''
<?php
${concatStringsSep "\n" (mapAttrsToList (k: v: "\$${k} = ${toStr k v};") settings)}
'';
# see https://github.com/Dolibarr/dolibarr/blob/develop/htdocs/install/install.forced.sample.php for all possible values
install = {
force_install_noedit = 2;
force_install_main_data_root = "${cfg.stateDir}/documents";
force_install_nophpinfo = true;
force_install_lockinstall = "444";
force_install_distrib = "nixos";
force_install_type = "mysqli";
force_install_dbserver = cfg.database.host;
force_install_port = toString cfg.database.port;
force_install_database = cfg.database.name;
force_install_databaselogin = cfg.database.user;
install =
{
force_install_noedit = 2;
force_install_main_data_root = "${cfg.stateDir}/documents";
force_install_nophpinfo = true;
force_install_lockinstall = "444";
force_install_distrib = "nixos";
force_install_type = "mysqli";
force_install_dbserver = cfg.database.host;
force_install_port = toString cfg.database.port;
force_install_database = cfg.database.name;
force_install_databaselogin = cfg.database.user;
force_install_mainforcehttps = vhostCfg.forceSSL or false;
force_install_createuser = false;
force_install_dolibarrlogin = null;
} // optionalAttrs (cfg.database.passwordFile != null) {
force_install_databasepass = ''file_get_contents("${cfg.database.passwordFile}")'';
};
force_install_mainforcehttps = vhostCfg.forceSSL or false;
force_install_createuser = false;
force_install_dolibarrlogin = null;
}
// optionalAttrs (cfg.database.passwordFile != null) {
force_install_databasepass = ''file_get_contents("${cfg.database.passwordFile}")'';
};
in
{
# interface
@@ -131,22 +163,28 @@ in
};
settings = mkOption {
type = with types; (attrsOf (oneOf [ bool int str ]));
type =
with types;
(attrsOf (oneOf [
bool
int
str
]));
default = { };
description = "Dolibarr settings, see <https://github.com/Dolibarr/dolibarr/blob/develop/htdocs/conf/conf.php.example> for details.";
};
nginx = mkOption {
type = types.nullOr (types.submodule (
lib.recursiveUpdate
(import ../web-servers/nginx/vhost-options.nix { inherit config lib; })
{
type = types.nullOr (
types.submodule (
lib.recursiveUpdate (import ../web-servers/nginx/vhost-options.nix { inherit config lib; }) {
# enable encryption by default,
# as sensitive login and Dolibarr (ERP) data should not be transmitted in clear text.
options.forceSSL.default = true;
options.enableACME.default = true;
}
));
)
);
default = null;
example = lib.literalExpression ''
{
@@ -158,17 +196,23 @@ in
}
'';
description = ''
With this option, you can customize an nginx virtual host which already has sensible defaults for Dolibarr.
Set to {} if you do not need any customization to the virtual host.
If enabled, then by default, the {option}`serverName` is
`''${domain}`,
SSL is active, and certificates are acquired via ACME.
If this is set to null (the default), no nginx virtualHost will be configured.
With this option, you can customize an nginx virtual host which already has sensible defaults for Dolibarr.
Set to {} if you do not need any customization to the virtual host.
If enabled, then by default, the {option}`serverName` is
`''${domain}`,
SSL is active, and certificates are acquired via ACME.
If this is set to null (the default), no nginx virtualHost will be configured.
'';
};
poolConfig = mkOption {
type = with types; attrsOf (oneOf [ str int bool ]);
type =
with types;
attrsOf (oneOf [
str
int
bool
]);
default = {
"pm" = "dynamic";
"pm.max_children" = 32;
@@ -188,138 +232,144 @@ in
config = mkIf cfg.enable (mkMerge [
{
assertions = [
{ assertion = cfg.database.createLocally -> cfg.database.user == cfg.user;
message = "services.dolibarr.database.user must match services.dolibarr.user if the database is to be automatically provisioned";
}
];
services.dolibarr.settings = {
dolibarr_main_url_root = "https://${cfg.domain}";
dolibarr_main_document_root = "${package}/htdocs";
dolibarr_main_url_root_alt = "/custom";
dolibarr_main_data_root = "${cfg.stateDir}/documents";
dolibarr_main_db_host = cfg.database.host;
dolibarr_main_db_port = toString cfg.database.port;
dolibarr_main_db_name = cfg.database.name;
dolibarr_main_db_prefix = "llx_";
dolibarr_main_db_user = cfg.database.user;
dolibarr_main_db_pass = mkIf (cfg.database.passwordFile != null) ''
file_get_contents("${cfg.database.passwordFile}")
'';
dolibarr_main_db_type = "mysqli";
dolibarr_main_db_character_set = mkDefault "utf8";
dolibarr_main_db_collation = mkDefault "utf8_unicode_ci";
# Authentication settings
dolibarr_main_authentication = mkDefault "dolibarr";
# Security settings
dolibarr_main_prod = true;
dolibarr_main_force_https = vhostCfg.forceSSL or false;
dolibarr_main_restrict_os_commands = "${pkgs.mariadb}/bin/mysqldump, ${pkgs.mariadb}/bin/mysql";
dolibarr_nocsrfcheck = false;
dolibarr_main_instance_unique_id = ''
file_get_contents("${cfg.stateDir}/dolibarr_main_instance_unique_id")
'';
dolibarr_mailing_limit_sendbyweb = false;
};
systemd.tmpfiles.rules = [
"d '${cfg.stateDir}' 0750 ${cfg.user} ${cfg.group}"
"d '${cfg.stateDir}/documents' 0750 ${cfg.user} ${cfg.group}"
"f '${cfg.stateDir}/conf.php' 0660 ${cfg.user} ${cfg.group}"
"L '${cfg.stateDir}/install.forced.php' - ${cfg.user} ${cfg.group} - ${mkConfigFile "install.forced.php" install}"
];
services.mysql = mkIf cfg.database.createLocally {
enable = mkDefault true;
package = mkDefault pkgs.mariadb;
ensureDatabases = [ cfg.database.name ];
ensureUsers = [
{ name = cfg.database.user;
ensurePermissions = { "${cfg.database.name}.*" = "ALL PRIVILEGES"; };
assertions = [
{
assertion = cfg.database.createLocally -> cfg.database.user == cfg.user;
message = "services.dolibarr.database.user must match services.dolibarr.user if the database is to be automatically provisioned";
}
];
};
services.nginx.enable = mkIf (cfg.nginx != null) true;
services.nginx.virtualHosts."${cfg.domain}" = mkIf (cfg.nginx != null) (lib.mkMerge [
cfg.nginx
({
root = lib.mkForce "${package}/htdocs";
locations."/".index = "index.php";
locations."~ [^/]\\.php(/|$)" = {
services.dolibarr.settings = {
dolibarr_main_url_root = "https://${cfg.domain}";
dolibarr_main_document_root = "${package}/htdocs";
dolibarr_main_url_root_alt = "/custom";
dolibarr_main_data_root = "${cfg.stateDir}/documents";
dolibarr_main_db_host = cfg.database.host;
dolibarr_main_db_port = toString cfg.database.port;
dolibarr_main_db_name = cfg.database.name;
dolibarr_main_db_prefix = "llx_";
dolibarr_main_db_user = cfg.database.user;
dolibarr_main_db_pass = mkIf (cfg.database.passwordFile != null) ''
file_get_contents("${cfg.database.passwordFile}")
'';
dolibarr_main_db_type = "mysqli";
dolibarr_main_db_character_set = mkDefault "utf8";
dolibarr_main_db_collation = mkDefault "utf8_unicode_ci";
# Authentication settings
dolibarr_main_authentication = mkDefault "dolibarr";
# Security settings
dolibarr_main_prod = true;
dolibarr_main_force_https = vhostCfg.forceSSL or false;
dolibarr_main_restrict_os_commands = "${pkgs.mariadb}/bin/mysqldump, ${pkgs.mariadb}/bin/mysql";
dolibarr_nocsrfcheck = false;
dolibarr_main_instance_unique_id = ''
file_get_contents("${cfg.stateDir}/dolibarr_main_instance_unique_id")
'';
dolibarr_mailing_limit_sendbyweb = false;
};
systemd.tmpfiles.rules = [
"d '${cfg.stateDir}' 0750 ${cfg.user} ${cfg.group}"
"d '${cfg.stateDir}/documents' 0750 ${cfg.user} ${cfg.group}"
"f '${cfg.stateDir}/conf.php' 0660 ${cfg.user} ${cfg.group}"
"L '${cfg.stateDir}/install.forced.php' - ${cfg.user} ${cfg.group} - ${mkConfigFile "install.forced.php" install}"
];
services.mysql = mkIf cfg.database.createLocally {
enable = mkDefault true;
package = mkDefault pkgs.mariadb;
ensureDatabases = [ cfg.database.name ];
ensureUsers = [
{
name = cfg.database.user;
ensurePermissions = {
"${cfg.database.name}.*" = "ALL PRIVILEGES";
};
}
];
};
services.nginx.enable = mkIf (cfg.nginx != null) true;
services.nginx.virtualHosts."${cfg.domain}" = mkIf (cfg.nginx != null) (
lib.mkMerge [
cfg.nginx
({
root = lib.mkForce "${package}/htdocs";
locations."/".index = "index.php";
locations."~ [^/]\\.php(/|$)" = {
extraConfig = ''
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_pass unix:${config.services.phpfpm.pools.dolibarr.socket};
'';
};
})
]
);
systemd.services."phpfpm-dolibarr".after = mkIf cfg.database.createLocally [ "mysql.service" ];
services.phpfpm.pools.dolibarr = {
inherit (cfg) user group;
phpPackage = pkgs.php.buildEnv {
extensions = { enabled, all }: enabled ++ [ all.calendar ];
# recommended by dolibarr web application
extraConfig = ''
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_pass unix:${config.services.phpfpm.pools.dolibarr.socket};
session.use_strict_mode = 1
session.cookie_samesite = "Lax"
; open_basedir = "${package}/htdocs, ${cfg.stateDir}"
allow_url_fopen = 0
disable_functions = "pcntl_alarm, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wifexited, pcntl_wifstopped, pcntl_wifsignaled, pcntl_wifcontinued, pcntl_wexitstatus, pcntl_wtermsig, pcntl_wstopsig, pcntl_signal, pcntl_signal_get_handler, pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec, pcntl_getpriority, pcntl_setpriority, pcntl_async_signals"
'';
};
})
]);
systemd.services."phpfpm-dolibarr".after = mkIf cfg.database.createLocally [ "mysql.service" ];
services.phpfpm.pools.dolibarr = {
inherit (cfg) user group;
phpPackage = pkgs.php.buildEnv {
extensions = { enabled, all }: enabled ++ [ all.calendar ];
# recommended by dolibarr web application
extraConfig = ''
session.use_strict_mode = 1
session.cookie_samesite = "Lax"
; open_basedir = "${package}/htdocs, ${cfg.stateDir}"
allow_url_fopen = 0
disable_functions = "pcntl_alarm, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wifexited, pcntl_wifstopped, pcntl_wifsignaled, pcntl_wifcontinued, pcntl_wexitstatus, pcntl_wtermsig, pcntl_wstopsig, pcntl_signal, pcntl_signal_get_handler, pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec, pcntl_getpriority, pcntl_setpriority, pcntl_async_signals"
settings = {
"listen.mode" = "0660";
"listen.owner" = cfg.user;
"listen.group" = cfg.group;
} // cfg.poolConfig;
};
# there are several challenges with dolibarr and NixOS which we can address here
# - the dolibarr installer cannot be entirely automated, though it can partially be by including a file called install.forced.php
# - the dolibarr installer requires write access to its config file during installation, though not afterwards
# - the dolibarr config file generally holds secrets generated by the installer, though the config file is a php file so we can read and write these secrets from an external file
systemd.services.dolibarr-config = {
description = "dolibarr configuration file management via NixOS";
wantedBy = [ "multi-user.target" ];
script = ''
# extract the 'main instance unique id' secret that the dolibarr installer generated for us, store it in a file for use by our own NixOS generated configuration file
${pkgs.php}/bin/php -r "include '${cfg.stateDir}/conf.php'; file_put_contents('${cfg.stateDir}/dolibarr_main_instance_unique_id', \$dolibarr_main_instance_unique_id);"
# replace configuration file generated by installer with the NixOS generated configuration file
install -m 440 ${mkConfigFile "conf.php" cfg.settings} '${cfg.stateDir}/conf.php'
'';
serviceConfig = {
Type = "oneshot";
User = cfg.user;
Group = cfg.group;
RemainAfterExit = "yes";
};
unitConfig = {
ConditionFileNotEmpty = "${cfg.stateDir}/conf.php";
};
};
settings = {
"listen.mode" = "0660";
"listen.owner" = cfg.user;
"listen.group" = cfg.group;
} // cfg.poolConfig;
};
# there are several challenges with dolibarr and NixOS which we can address here
# - the dolibarr installer cannot be entirely automated, though it can partially be by including a file called install.forced.php
# - the dolibarr installer requires write access to its config file during installation, though not afterwards
# - the dolibarr config file generally holds secrets generated by the installer, though the config file is a php file so we can read and write these secrets from an external file
systemd.services.dolibarr-config = {
description = "dolibarr configuration file management via NixOS";
wantedBy = [ "multi-user.target" ];
script = ''
# extract the 'main instance unique id' secret that the dolibarr installer generated for us, store it in a file for use by our own NixOS generated configuration file
${pkgs.php}/bin/php -r "include '${cfg.stateDir}/conf.php'; file_put_contents('${cfg.stateDir}/dolibarr_main_instance_unique_id', \$dolibarr_main_instance_unique_id);"
# replace configuration file generated by installer with the NixOS generated configuration file
install -m 644 ${mkConfigFile "conf.php" cfg.settings} '${cfg.stateDir}/conf.php'
'';
serviceConfig = {
Type = "oneshot";
User = cfg.user;
Group = cfg.group;
RemainAfterExit = "yes";
users.users.dolibarr = mkIf (cfg.user == "dolibarr") {
isSystemUser = true;
group = cfg.group;
};
unitConfig = {
ConditionFileNotEmpty = "${cfg.stateDir}/conf.php";
users.groups = optionalAttrs (cfg.group == "dolibarr") {
dolibarr = { };
};
};
users.users.dolibarr = mkIf (cfg.user == "dolibarr" ) {
isSystemUser = true;
group = cfg.group;
};
users.groups = optionalAttrs (cfg.group == "dolibarr") {
dolibarr = { };
};
}
(mkIf (cfg.nginx != null) {
users.users."${config.services.nginx.group}".extraGroups = mkIf (cfg.nginx != null) [ cfg.group ];
})
]);
}
(mkIf (cfg.nginx != null) {
users.users."${config.services.nginx.group}".extraGroups = mkIf (cfg.nginx != null) [ cfg.group ];
})
]);
}
+1 -1
View File
@@ -53,6 +53,6 @@ mkDerivation {
mainProgram = "booth";
homepage = "https://invent.kde.org/maui/booth";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ milahu ];
maintainers = with maintainers; [ ];
};
}
+3 -3
View File
@@ -19,14 +19,14 @@
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "home-manager";
version = "0-unstable-2024-12-12";
version = "0-unstable-2024-12-23";
src = fetchFromGitHub {
name = "home-manager-source";
owner = "nix-community";
repo = "home-manager";
rev = "3066cc58f552421a2c5414e78407fa5603405b1e";
hash = "sha256-e9YAMReFV1fDPcZLFC2pa4k/8TloSXeX0z2VysNMAoA=";
rev = "f1b1786ea77739dcd181b920d430e30fb1608b8a";
hash = "sha256-f9UyHMTb+BwF6RDZ8eO9HOkSlKeeSPBlcYhMmV1UNIk=";
};
nativeBuildInputs = [
+9 -11
View File
@@ -3,31 +3,28 @@
fetchFromGitHub,
stdenv,
makeWrapper,
gitUpdater,
python3Packages,
tk,
addDriverRunpath,
apple-sdk_12,
darwinMinVersionHook,
koboldLiteSupport ? true,
config,
cudaPackages ? { },
openblasSupport ? !stdenv.hostPlatform.isDarwin,
openblas,
cublasSupport ? config.cudaSupport,
# You can find a full list here: https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/
# For example if you're on an GTX 1080 that means you're using "Pascal" and you need to pass "sm_60"
# For example if you're on an RTX 3060 that means you're using "Ampere" and you need to pass "sm_86"
cudaArches ? cudaPackages.cudaFlags.realArches or [ ],
clblastSupport ? stdenv.hostPlatform.isLinux,
clblast,
ocl-icd,
vulkanSupport ? true,
vulkanSupport ? (!stdenv.hostPlatform.isDarwin),
vulkan-loader,
metalSupport ? stdenv.hostPlatform.isDarwin,
nix-update-script,
@@ -44,13 +41,13 @@ let
in
effectiveStdenv.mkDerivation (finalAttrs: {
pname = "koboldcpp";
version = "1.79.1";
version = "1.80.1";
src = fetchFromGitHub {
owner = "LostRuins";
repo = "koboldcpp";
rev = "refs/tags/v${finalAttrs.version}";
hash = "sha256-RHeEI6mJklGF7BQXxLwxSr1xD6GsI9+fio888UxKru0=";
hash = "sha256-CgJzYF8FnHk0zKdysGJWLnNo/MND24AbQdjRbDtv0II=";
};
enableParallelBuilding = true;
@@ -65,8 +62,10 @@ effectiveStdenv.mkDerivation (finalAttrs: {
buildInputs =
[ tk ]
++ finalAttrs.pythonInputs
++ lib.optionals stdenv.hostPlatform.isDarwin [ apple-sdk_12 ]
++ lib.optionals openblasSupport [ openblas ]
++ lib.optionals stdenv.hostPlatform.isDarwin [
apple-sdk_12
(darwinMinVersionHook "10.15")
]
++ lib.optionals cublasSupport [
cudaPackages.libcublas
cudaPackages.cuda_nvcc
@@ -82,7 +81,6 @@ effectiveStdenv.mkDerivation (finalAttrs: {
pythonPath = finalAttrs.pythonInputs;
makeFlags = [
(makeBool "LLAMA_OPENBLAS" openblasSupport)
(makeBool "LLAMA_CUBLAS" cublasSupport)
(makeBool "LLAMA_CLBLAST" clblastSupport)
(makeBool "LLAMA_VULKAN" vulkanSupport)
+30
View File
@@ -0,0 +1,30 @@
{
lib,
fetchFromGitHub,
rustPlatform,
perl,
}:
rustPlatform.buildRustPackage rec {
pname = "managarr";
version = "0.4.2";
src = fetchFromGitHub {
owner = "Dark-Alex-17";
repo = "managarr";
tag = "v${version}";
hash = "sha256-OxGFubtMsGnR8cWDKkeAgryY095uydA3LzE5SS0dspQ=";
};
cargoHash = "sha256-bws4LwpJGfq0hCA2Fq51uCMvr0arbayppq1jvDrILZI=";
nativeBuildInputs = [ perl ];
meta = {
description = "TUI and CLI to manage your Servarrs";
homepage = "https://github.com/Dark-Alex-17/managarr";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.IncredibleLaser ];
mainProgram = "managarr";
};
}
+2 -2
View File
@@ -11,13 +11,13 @@
}:
stdenv.mkDerivation rec {
pname = "sqlitestudio";
version = "3.4.10";
version = "3.4.12";
src = fetchFromGitHub {
owner = "pawelsalawa";
repo = "sqlitestudio";
rev = version;
hash = "sha256-M0k+DpHXl0UA7uGRlAz3ksUk5qI2olz9dd+jmuBZuXU=";
hash = "sha256-KPHiJTAxRQ3ZNnkKpfj877vTHEPRKNwy7wHfseftukQ=";
};
nativeBuildInputs =
+2 -2
View File
@@ -11,7 +11,7 @@
stdenv.mkDerivation rec {
pname = "structorizer";
version = "3.32-23";
version = "3.32-24";
desktopItems = [
(makeDesktopItem {
@@ -42,7 +42,7 @@ stdenv.mkDerivation rec {
owner = "fesch";
repo = "Structorizer.Desktop";
rev = version;
hash = "sha256-fqvQH4DRl+R0laGOnfWgFz67JSAdUzrws4k7gmQ3S7A=";
hash = "sha256-bzo8lUdjCPf22AF++Q9YnvuQp89M2T1cLixuEDHWX6U=";
};
patches = [
+178
View File
@@ -0,0 +1,178 @@
{
fetchFromGitLab,
fetchpatch,
gitUpdater,
lib,
stdenv,
testers,
autoreconfHook,
dbus,
dbus-test-runner,
dpkg,
getopt,
glib,
gobject-introspection,
json-glib,
libgee,
perl,
pkg-config,
properties-cpp,
python3Packages,
vala,
wrapGAppsHook3,
}:
let
self = python3Packages.buildPythonApplication rec {
pname = "click";
version = "0.5.2";
format = "other";
src = fetchFromGitLab {
owner = "ubports";
repo = "development/core/click";
rev = version;
hash = "sha256-AV3n6tghvpV/6Ew6Lokf8QAGBIMbHFAnp6G4pefVn+8=";
};
patches = [
# Remove when version > 0.5.2
(fetchpatch {
name = "0001-click-fix-Wimplicit-function-declaration.patch";
url = "https://gitlab.com/ubports/development/core/click/-/commit/8f654978a12e6f9a0b6ff64296ec5565e3ff5cd0.patch";
hash = "sha256-kio+DdtuagUNYEosyQY3q3H+dJM3cLQRW9wUKUcpUTY=";
})
# Remove when version > 0.5.2
(fetchpatch {
name = "0002-click-Add-uid_t-and-gid_t-to-the-ctypes-_typemap.patch";
url = "https://gitlab.com/ubports/development/core/click/-/commit/cbcd23b08b02fa122434e1edd69c2b3dcb6a8793.patch";
hash = "sha256-QaWRhxO61wAzULVqPLdJrLuBCr3+NhKmQlEPuYq843I=";
})
];
postPatch = ''
# These should be proper Requires, using the header needs their headers
substituteInPlace lib/click/click-*.pc.in \
--replace-fail 'Requires.private' 'Requires'
# Don't completely override PKG_CONFIG_PATH
substituteInPlace click_package/tests/Makefile.am \
--replace-fail 'PKG_CONFIG_PATH=$(top_builddir)/lib/click' 'PKG_CONFIG_PATH=$(top_builddir)/lib/click:$(PKG_CONFIG_PATH)'
patchShebangs bin/click
'';
strictDeps = true;
pkgsBuildBuild = [
pkg-config
];
nativeBuildInputs = [
autoreconfHook
dbus-test-runner # Always checking for this
getopt
gobject-introspection
perl
pkg-config
vala
wrapGAppsHook3
];
buildInputs = [
glib
json-glib
libgee
properties-cpp
];
propagatedBuildInputs = with python3Packages; [
python-debian
pygobject3
setuptools
];
nativeCheckInputs = [
dbus
dpkg
python3Packages.unittestCheckHook
];
checkInputs = with python3Packages; [
python-apt
six
];
preConfigure = ''
export click_cv_perl_vendorlib=$out/${perl.libPrefix}
export PYTHON_INSTALL_FLAGS="--prefix=$out"
'';
configureFlags = [
"--with-systemdsystemunitdir=${placeholder "out"}/lib/systemd/system"
"--with-systemduserunitdir=${placeholder "out"}/lib/systemd/user"
];
enableParallelBuilding = true;
doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
disabledTestPaths = [
# From apt: Unable to determine a suitable packaging system type
"click_package/tests/integration/test_signatures.py"
"click_package/tests/test_build.py"
"click_package/tests/test_install.py"
"click_package/tests/test_scripts.py"
];
preCheck = ''
export HOME=$TMP
# tests recompile some files for loaded predefines, doesn't use any optimisation level for it
# makes test output harder to read, so make the warning go away
export NIX_CFLAGS_COMPILE+=" -U_FORTIFY_SOURCE"
# Haven'tbeen able to get them excluded via disabledTest{s,Paths}, just deleting them
for path in $disabledTestPaths; do
rm -v $path
done
'';
preFixup = ''
makeWrapperArgs+=(
--prefix LD_LIBRARY_PATH : "$out/lib"
)
'';
passthru = {
updateScript = gitUpdater { };
};
meta = {
description = "Tool to build click packages, mainly used for Ubuntu Touch";
homepage = "https://gitlab.com/ubports/development/core/click";
changelog = "https://gitlab.com/ubports/development/core/click/-/blob/${version}/ChangeLog";
license = lib.licenses.gpl3Only;
mainProgram = "click";
maintainers =
with lib.maintainers;
[
ilyakooo0
]
++ lib.teams.lomiri.members;
platforms = lib.platforms.linux;
pkgConfigModules = [
"click-0.4"
];
};
};
in
self
// {
passthru = self.passthru // {
tests.pkg-config = testers.hasPkgConfigModules {
package = self;
};
};
}
+51
View File
@@ -0,0 +1,51 @@
{
lib,
fetchFromGitHub,
python3Packages,
waymore,
testers,
}:
python3Packages.buildPythonApplication rec {
pname = "waymore";
version = "4.7";
src = fetchFromGitHub {
owner = "xnl-h4ck3r";
repo = "waymore";
tag = "v${version}";
hash = "sha256-oaswuXQPdAl2XExwEWnSN15roqNj9OVUr1Y1vsX461o=";
};
preBuild = ''
export HOME=$(mktemp -d)
'';
build-system = with python3Packages; [
setuptools
];
dependencies = with python3Packages; [
requests
termcolor
pyyaml
psutil
uritools
tldextract
];
passthru.tests.version = testers.testVersion {
package = waymore;
command = "waymore --version";
version = "Waymore - v${version}";
};
meta = {
description = "Find way more from the Wayback Machine";
homepage = "https://github.com/xnl-h4ck3r/waymore";
changelog = "https://github.com/xnl-h4ck3r/waymore/releases/tag/v${version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ genga898 ];
mainProgram = "waymore";
};
}
@@ -16,13 +16,13 @@
stdenv.mkDerivation rec {
pname = "deepin-editor";
version = "6.5.2";
version = "6.5.8";
src = fetchFromGitHub {
owner = "linuxdeepin";
repo = pname;
rev = version;
hash = "sha256-Z3fsnjo4Pcu1e8lKvWdWBhpoOFFy0dSrI2HehRYKJ0k=";
hash = "sha256-QMq7DIggMhY4EseIa7/tvgxGwZn07OitOm1YjrzMFHg=";
};
nativeBuildInputs = [
@@ -322,7 +322,6 @@ stdenv.mkDerivation rec {
lgpl3Plus
];
maintainers = with maintainers; [
milahu
nickcao
LunNova
];
@@ -66,6 +66,7 @@
bootstrap_cmds,
cctools,
xcbuild,
fetchpatch,
}:
qtModule {
@@ -114,6 +115,15 @@ qtModule {
# Override locales install path so they go to QtWebEngine's $out
./locales-path.patch
# Fix build of vendored xnnpack on aarch64/gcc14
# FIXME: remove when upstream updates
(fetchpatch {
url = "https://github.com/google/XNNPACK/commit/1b11a8b0620afe8c047304273674c4c57c289755.patch";
stripLen = 1;
extraPrefix = "src/3rdparty/chromium/third_party/xnnpack/src/";
hash = "sha256-GUESVNR88I1K2V5xr0e09ec4j2eselMhNN06+PCcINM=";
})
];
postPatch =
@@ -66,7 +66,6 @@ stdenv.mkDerivation (
lgpl3Plus
];
maintainers = with maintainers; [
milahu
nickcao
];
platforms = platforms.unix;
@@ -64,6 +64,11 @@ buildPythonPackage rec {
hash = "sha256-RGRwgrDFe+0v8NYyajMikdoi1DQf1I+B5y8KJyF+cZs=";
};
patches = [
# https://github.com/pallets-eco/flask-security/pull/1040
./fix_test_basic.patch
];
build-system = [ flit-core ];
# flask-login>=0.6.2 not satisfied by version 0.7.0.dev0
@@ -0,0 +1,13 @@
diff --git a/tests/test_basic.py b/tests/test_basic.py
index d52be429..09dfa8e4 100644
--- a/tests/test_basic.py
+++ b/tests/test_basic.py
@@ -157,6 +157,8 @@ def test_authenticate_with_subdomain_next(app, client, get_message):
@pytest.mark.settings(subdomain="auth")
def test_authenticate_with_root_domain_next(app, client, get_message):
+ # As of Flask 3.1 this must be explicitly set.
+ app.subdomain_matching = True
app.config["SERVER_NAME"] = "lp.com"
app.config["SECURITY_REDIRECT_ALLOW_SUBDOMAINS"] = True
data = dict(email="matt@lp.com", password="password")
@@ -15,14 +15,14 @@
buildPythonPackage rec {
pname = "httpx-oauth";
version = "0.16.0";
version = "0.16.1";
pyproject = true;
src = fetchFromGitHub {
owner = "frankie567";
repo = "httpx-oauth";
tag = "v${version}";
hash = "sha256-KM+GaBC3jOhMsTVdUixsEjm47j28qeFmFKbI7fnVSG4=";
hash = "sha256-/2IBAEZrK0Do7t9g+MWsKuIlcg0ANCfOoagVwTbBso8=";
};
build-system = [
@@ -49,14 +49,14 @@
buildPythonPackage rec {
pname = "kserve";
version = "0.14.0";
version = "0.14.1";
pyproject = true;
src = fetchFromGitHub {
owner = "kserve";
repo = "kserve";
rev = "refs/tags/v${version}";
hash = "sha256-N/IgiTiyBNw7WQWxcUJlXU+Q9o3UUaduD9ZBKwu0uRE=";
tag = "v${version}";
hash = "sha256-VwuUXANjshV4fN0i54Fs0zubHY81UtQcCV14JwMpXwA=";
};
sourceRoot = "${src.name}/python/kserve";
@@ -64,6 +64,7 @@ buildPythonPackage rec {
pythonRelaxDeps = [
"fastapi"
"httpx"
"numpy"
"prometheus-client"
"protobuf"
"uvicorn"
@@ -12,12 +12,12 @@
buildPythonPackage rec {
pname = "libuuu";
version = "1.5.182";
version = "1.5.182.post1";
pyproject = true;
src = fetchPypi {
inherit pname version;
hash = "sha256-k6JwGxYeFbGNl7zcuKN6SbRq8Z4yD1dXXL3ORyGqhYE=";
hash = "sha256-Hf0GwhrzKQL5w+OXQ39yuG4xmbk/1HgCCdCulIORSU8=";
};
build-system = [
@@ -24,6 +24,6 @@ buildPythonPackage rec {
description = "URL-safe base64 UUID encoder for generating 22 character slugs";
homepage = "https://github.com/taskcluster/slugid.py";
license = licenses.mpl20;
maintainers = with maintainers; [ milahu ];
maintainers = with maintainers; [ ];
};
}
@@ -1,23 +0,0 @@
diff --git a/click_package/Makefile.am b/click_package/Makefile.am
index 4981d74..9df9e79 100644
--- a/click_package/Makefile.am
+++ b/click_package/Makefile.am
@@ -1,5 +1,3 @@
-SUBDIRS = tests
-
noinst_SCRIPTS = paths.py
CLEANFILES = $(noinst_SCRIPTS)
diff --git a/configure.ac b/configure.ac
index 8f4dc9e..adbd366 100644
--- a/configure.ac
+++ b/configure.ac
@@ -52,8 +52,6 @@ PKG_CHECK_MODULES([SERVICE], [
AC_SUBST([SERVICE_CFLAGS])
AC_SUBST([SERVICE_LIBS])
-AC_CHECK_PROG(DBUS_TEST_RUNNER_CHECK,dbus-test-runner,yes)
-AS_IF([test "${DBUS_TEST_RUNNER_CHECK}" != "yes"], [AC_MSG_ERROR([dbus-test-runner not found])])
AC_CHECK_PROG(GDBUS_CHECK,gdbus,yes)
AS_IF([test "${GDBUS_CHECK}" != "yes"], [AC_MSG_ERROR([gdbus (glib) not found])])
-96
View File
@@ -1,96 +0,0 @@
{
lib,
fetchFromGitLab,
buildPythonApplication,
autoreconfHook,
python-debian,
perl,
vala,
pkg-config,
libgee,
json-glib,
properties-cpp,
gobject-introspection,
getopt,
setuptools,
pygobject3,
wrapGAppsHook3,
}:
buildPythonApplication {
pname = "click";
version = "unstable-2023-02-22";
format = "other";
src = fetchFromGitLab {
owner = "ubports";
repo = "development/core/click";
rev = "aaf2735e8e6cbeaf2e429c70136733513a81718a";
hash = "sha256-pNu995/w3tbz15QQVdVYBnWnAoZmqWj1DN/5PZZ0iZw=";
};
postPatch = ''
# These should be proper Requires, using the header needs their headers
substituteInPlace lib/click/click-*.pc.in \
--replace 'Requires.private' 'Requires'
'';
configureFlags = [
"--with-systemdsystemunitdir=${placeholder "out"}/lib/systemd/system"
"--with-systemduserunitdir=${placeholder "out"}/lib/systemd/user"
];
preFixup = ''
makeWrapperArgs+=(
--prefix LD_LIBRARY_PATH : "$out/lib"
)
'';
preConfigure = ''
export click_cv_perl_vendorlib=$out/${perl.libPrefix}
export PYTHON_INSTALL_FLAGS="--prefix=$out"
'';
nativeBuildInputs = [
autoreconfHook
perl
pkg-config
gobject-introspection
vala
getopt
wrapGAppsHook3
];
# Tests were omitted for time constraint reasons
doCheck = false;
enableParallelBuilding = true;
patches = [
# dbus-test-runner not packaged yet, otherwise build-time dependency even when not running tests
./dbus-test-runner.patch
];
buildInputs = [
libgee
json-glib
properties-cpp
];
propagatedBuildInputs = [
python-debian
pygobject3
setuptools
];
meta = {
description = "Tool to build click packages. Mainly used for Ubuntu Touch";
homepage = "https://gitlab.com/ubports/development/core/click";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [
ilyakooo0
OPNA2608
];
platforms = lib.platforms.linux;
};
}
-2
View File
@@ -6940,8 +6940,6 @@ with pkgs;
llvmPackages = llvmPackages_18;
};
ubports-click = python3Packages.callPackage ../development/tools/click { };
urweb = callPackage ../development/compilers/urweb {
icu = icu67;
};