Merge staging-next into staging

This commit is contained in:
github-actions[bot]
2024-11-19 00:15:25 +00:00
committed by GitHub
57 changed files with 1916 additions and 1959 deletions

View File

@@ -16895,6 +16895,12 @@
githubId = 943430;
name = "David Hagege";
};
peat-psuwit = {
name = "Ratchanan Srirattanamet";
email = "peat@peat-network.xyz";
github = "peat-psuwit";
githubId = 6771175;
};
pedohorse = {
github = "pedohorse";
githubId = 13556996;

View File

@@ -16,7 +16,7 @@
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
- Create the first release note entry in this section!
- [Kimai](https://www.kimai.org/), a web-based multi-user time-tracking application. Available as [services.kimai](option.html#opt-services.kimai).
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->

View File

@@ -1459,6 +1459,7 @@
./services/web-apps/kasmweb/default.nix
./services/web-apps/kavita.nix
./services/web-apps/keycloak.nix
./services/web-apps/kimai.nix
./services/web-apps/komga.nix
./services/web-apps/lanraragi.nix
./services/web-apps/lemmy.nix

View File

@@ -79,7 +79,6 @@ in
])
++ (with pkgs.lomiri; [
hfd-service
history-service
libusermetrics
lomiri
lomiri-calculator-app
@@ -90,6 +89,7 @@ in
lomiri-download-manager
lomiri-filemanager-app
lomiri-gallery-app
lomiri-history-service
lomiri-polkit-agent
lomiri-schemas # exposes some required dbus interfaces
lomiri-session # wrappers to properly launch the session

View File

@@ -5,9 +5,6 @@
with lib;
let
# the demo agent isn't built by default, but we need it here
package = pkgs.geoclue2.override { withDemoAgent = config.services.geoclue2.enableDemoAgent; };
cfg = config.services.geoclue2;
defaultWhitelist = [ "gnome-shell" "io.elementary.desktop.agent-geoclue2" ];
@@ -132,6 +129,17 @@ in
'';
};
package = mkOption {
type = types.package;
default = pkgs.geoclue2;
defaultText = literalExpression "pkgs.geoclue2";
apply = pkg: pkg.override {
# the demo agent isn't built by default, but we need it here
withDemoAgent = cfg.enableDemoAgent;
};
description = "The geoclue2 package to use";
};
submitData = mkOption {
type = types.bool;
default = false;
@@ -180,11 +188,11 @@ in
###### implementation
config = mkIf cfg.enable {
environment.systemPackages = [ package ];
environment.systemPackages = [ cfg.package ];
services.dbus.packages = [ package ];
services.dbus.packages = [ cfg.package ];
systemd.packages = [ package ];
systemd.packages = [ cfg.package ];
# we cannot use DynamicUser as we need the the geoclue user to exist for the
# dbus policy to work
@@ -223,7 +231,7 @@ in
unitConfig.ConditionUser = "!@system";
serviceConfig = {
Type = "exec";
ExecStart = "${package}/libexec/geoclue-2.0/demos/agent";
ExecStart = "${cfg.package}/libexec/geoclue-2.0/demos/agent";
Restart = "on-failure";
PrivateTmp = true;
};

View File

@@ -163,7 +163,7 @@ in {
services.mysql = mkIf cfg.enable {
enable = true;
package = pkgs.mysql;
package = pkgs.mariadb;
ensureDatabases = [cfg.database.database];
ensureUsers = [
{

View File

@@ -0,0 +1,403 @@
{
config,
pkgs,
lib,
...
}:
with lib;
let
cfg = config.services.kimai;
eachSite = cfg.sites;
user = "kimai";
webserver = config.services.${cfg.webserver};
stateDir = hostName: "/var/lib/kimai/${hostName}";
pkg =
hostName: cfg:
pkgs.stdenv.mkDerivation rec {
pname = "kimai-${hostName}";
src = cfg.package;
version = src.version;
installPhase = ''
mkdir -p $out
cp -r * $out/
# Symlink .env file. This will be dynamically created at the service
# startup.
ln -sf ${stateDir hostName}/.env $out/share/php/kimai/.env
# Symlink the var/ folder
# TODO: we may have to symlink individual folders if we want to also
# manage plugins from Nix.
rm -rf $out/share/php/kimai/var
ln -s ${stateDir hostName} $out/share/php/kimai/var
# Symlink local.yaml.
ln -s ${kimaiConfig hostName cfg} $out/share/php/kimai/config/packages/local.yaml
'';
};
kimaiConfig =
hostName: cfg:
pkgs.writeTextFile {
name = "kimai-config-${hostName}.yaml";
text = generators.toYAML { } cfg.settings;
};
siteOpts =
{
lib,
name,
config,
...
}:
{
options = {
package = mkPackageOption pkgs "kimai" { };
database = {
host = mkOption {
type = types.str;
default = "localhost";
description = "Database host address.";
};
port = mkOption {
type = types.port;
default = 3306;
description = "Database host port.";
};
name = mkOption {
type = types.str;
default = "kimai";
description = "Database name.";
};
user = mkOption {
type = types.str;
default = "kimai";
description = "Database user.";
};
passwordFile = mkOption {
type = types.nullOr types.path;
default = null;
example = "/run/keys/kimai-dbpassword";
description = ''
A file containing the password corresponding to
{option}`database.user`.
'';
};
socket = mkOption {
type = types.nullOr types.path;
default = null;
defaultText = literalExpression "/run/mysqld/mysqld.sock";
description = "Path to the unix socket file to use for authentication.";
};
charset = mkOption {
type = types.str;
default = "utf8mb4";
description = "Database charset.";
};
serverVersion = mkOption {
type = types.nullOr types.str;
default = null;
description = ''
MySQL *exact* version string. Not used if `createdLocally` is set,
but must be set otherwise. See
https://www.kimai.org/documentation/installation.html#column-table_name-in-where-clause-is-ambiguous
for how to set this value, especially if you're using MariaDB.
'';
};
createLocally = mkOption {
type = types.bool;
default = true;
description = "Create the database and database user locally.";
};
};
poolConfig = mkOption {
type =
with types;
attrsOf (oneOf [
str
int
bool
]);
default = {
"pm" = "dynamic";
"pm.max_children" = 32;
"pm.start_servers" = 2;
"pm.min_spare_servers" = 2;
"pm.max_spare_servers" = 4;
"pm.max_requests" = 500;
};
description = ''
Options for the Kimai PHP pool. See the documentation on `php-fpm.conf`
for details on configuration directives.
'';
};
settings = mkOption {
type = types.attrsOf types.anything;
default = { };
description = ''
Structural Kimai's local.yaml configuration.
Refer to <https://www.kimai.org/documentation/local-yaml.html#localyaml>
for details.
'';
example = literalExpression ''
{
kimai = {
timesheet = {
rounding = {
default = {
begin = 15;
end = 15;
};
};
};
};
}
'';
};
environmentFile = mkOption {
type = types.nullOr types.path;
default = null;
example = "/run/secrets/kimai.env";
description = ''
Securely pass environment variabels to Kimai. This can be used to
set other environement variables such as MAILER_URL.
'';
};
};
};
in
{
# interface
options = {
services.kimai = {
sites = mkOption {
type = types.attrsOf (types.submodule siteOpts);
default = { };
description = "Specification of one or more Kimai sites to serve";
};
webserver = mkOption {
type = types.enum [ "nginx" ];
default = "nginx";
description = ''
The webserver to configure for the PHP frontend.
At the moment, only `nginx` is supported. PRs are welcome for support
for other web servers.
'';
};
};
};
# implementation
config = mkIf (eachSite != { }) (mkMerge [
{
assertions =
(mapAttrsToList (hostName: cfg: {
assertion = cfg.database.createLocally -> cfg.database.user == user;
message = ''services.kimai.sites."${hostName}".database.user must be ${user} if the database is to be automatically provisioned'';
}) eachSite)
++ (mapAttrsToList (hostName: cfg: {
assertion = cfg.database.createLocally -> cfg.database.passwordFile == null;
message = ''services.kimai.sites."${hostName}".database.passwordFile cannot be specified if services.kimai.sites."${hostName}".database.createLocally is set to true.'';
}) eachSite)
++ (mapAttrsToList (hostName: cfg: {
assertion = !cfg.database.createLocally -> cfg.database.serverVersion != null;
message = ''services.kimai.sites."${hostName}".database.serverVersion must be specified if services.kimai.sites."${hostName}".database.createLocally is set to false.'';
}) eachSite);
services.mysql = mkIf (any (v: v.database.createLocally) (attrValues eachSite)) {
enable = true;
package = mkDefault pkgs.mariadb;
ensureDatabases = mapAttrsToList (hostName: cfg: cfg.database.name) eachSite;
ensureUsers = mapAttrsToList (hostName: cfg: {
name = cfg.database.user;
ensurePermissions = {
"${cfg.database.name}.*" = "ALL PRIVILEGES";
};
}) eachSite;
};
services.phpfpm.pools = mapAttrs' (
hostName: cfg:
(nameValuePair "kimai-${hostName}" {
inherit user;
group = webserver.group;
settings = {
"listen.owner" = webserver.user;
"listen.group" = webserver.group;
} // cfg.poolConfig;
})
) eachSite;
}
{
systemd.tmpfiles.rules = flatten (
mapAttrsToList (hostName: cfg: [
"d '${stateDir hostName}' 0770 ${user} ${webserver.group} - -"
]) eachSite
);
systemd.services = mkMerge [
(mapAttrs' (
hostName: cfg:
(nameValuePair "kimai-init-${hostName}" {
wantedBy = [ "multi-user.target" ];
before = [ "phpfpm-kimai-${hostName}.service" ];
after = optional cfg.database.createLocally "mysql.service";
script =
let
envFile = "${stateDir hostName}/.env";
appSecretFile = "${stateDir hostName}/.app_secret";
mysql = "${config.services.mysql.package}/bin/mysql";
dbUser = cfg.database.user;
dbPwd = if cfg.database.passwordFile != null then ":$(cat ${cfg.database.passwordFile})" else "";
dbHost = cfg.database.host;
dbPort = toString cfg.database.port;
dbName = cfg.database.name;
dbCharset = cfg.database.charset;
dbUnixSocket = if cfg.database.socket != null then "&unixSocket=${cfg.database.socket}" else "";
# Note: serverVersion is a shell variable. See below.
dbUri =
"mysql://${dbUser}${dbPwd}@${dbHost}:${dbPort}"
+ "/${dbName}?charset=${dbCharset}"
+ "&serverVersion=$serverVersion${dbUnixSocket}";
in
''
set -eu
serverVersion=${
if !cfg.database.createLocally then
cfg.database.serverVersion
else
# Obtain MySQL version string dynamically from the running
# instance. Doctrine ORM's doc said it should be possible to
# autodetect this, however Kimai's doc insists that it has to
# be set.
# https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#mysql
# https://stackoverflow.com/q/9558867
"$(${mysql} --silent --skip-column-names --execute 'SELECT VERSION();')"
}
# Create .env file containing DATABASE_URL and other default
# variables. Set umask to make sure .env is not readable by
# unrelated users.
oldUmask=$(umask)
umask 177
if ! [ -e ${appSecretFile} ]; then
tr -dc A-Za-z0-9 </dev/urandom | head -c 20 >${appSecretFile}
fi
cat >${envFile} <<EOF
DATABASE_URL=${dbUri}
MAILER_FROM=kimai@example.com
MAILER_URL=null://null
APP_ENV=prod
APP_SECRET=$(cat ${appSecretFile})
CORS_ALLOW_ORIGIN=^https?://localhost(:[0-9]+)?\$
EOF
umask $oldUmask
# Run kimai:install to ensure database is created or updated.
# Note that kimai:update is an alias to kimai:install.
${pkg hostName cfg}/bin/console kimai:install
'';
serviceConfig = {
Type = "oneshot";
User = user;
Group = webserver.group;
EnvironmentFile = [ cfg.environmentFile ];
};
})
) eachSite)
(mapAttrs' (
hostName: cfg:
(nameValuePair "phpfpm-kimai-${hostName}.service" {
serviceConfig = {
EnvironmentFile = [ cfg.environmentFile ];
};
})
) eachSite)
(optionalAttrs (any (v: v.database.createLocally) (attrValues eachSite)) {
"${cfg.webserver}".after = [ "mysql.service" ];
})
];
users.users.${user} = {
group = webserver.group;
isSystemUser = true;
};
}
(mkIf (cfg.webserver == "nginx") {
services.nginx = {
enable = true;
virtualHosts = mapAttrs (hostName: cfg: {
serverName = mkDefault hostName;
root = "${pkg hostName cfg}/share/php/kimai/public";
extraConfig = ''
index index.php;
'';
locations = {
"/" = {
priority = 200;
extraConfig = ''
try_files $uri /index.php$is_args$args;
'';
};
"~ ^/index\\.php(/|$)" = {
priority = 500;
extraConfig = ''
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:${config.services.phpfpm.pools."kimai-${hostName}".socket};
fastcgi_index index.php;
include "${config.services.nginx.package}/conf/fastcgi.conf";
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
# Mitigate https://httpoxy.org/ vulnerabilities
fastcgi_param HTTP_PROXY "";
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
'';
};
"~ \\.php$" = {
priority = 800;
extraConfig = ''
return 404;
'';
};
};
}) eachSite;
};
})
]);
}

View File

@@ -514,6 +514,7 @@ in {
keycloak = discoverTests (import ./keycloak.nix);
keyd = handleTest ./keyd.nix {};
keymap = handleTest ./keymap.nix {};
kimai = handleTest ./kimai.nix {};
knot = handleTest ./knot.nix {};
komga = handleTest ./komga.nix {};
krb5 = discoverTests (import ./krb5);

23
nixos/tests/kimai.nix Normal file
View File

@@ -0,0 +1,23 @@
import ./make-test-python.nix (
{ lib, ... }:
{
name = "kimai";
meta.maintainers = with lib.maintainers; [ peat-psuwit ];
nodes.machine =
{ ... }:
{
services.kimai.sites."localhost" = {
database.createLocally = true;
};
};
testScript = ''
machine.wait_for_unit("phpfpm-kimai-localhost.service")
machine.wait_for_unit("nginx.service")
machine.wait_for_open_port(80)
machine.succeed("curl -v --location --fail http://localhost/")
'';
}
)

View File

@@ -23,7 +23,7 @@ import ./make-test-python.nix ({ pkgs, ... }: {
machine.wait_for_x()
machine.succeed("convert -font DejaVu-Sans +antialias label:'IT WORKS' image.png")
machine.execute("libresprite image.png >&2 &")
machine.wait_for_window("LibreSprite v${pkgs.libresprite.version}")
machine.wait_for_window("LibreSprite ${pkgs.libresprite.version}-dev")
machine.wait_for_text("IT WORKS")
machine.screenshot("screen")
'';

View File

@@ -1,7 +1,6 @@
{ lib
, stdenv
, fetchFromGitHub
, fetchpatch
, cmake
, pkg-config
@@ -14,8 +13,9 @@
, libjpeg
, libpng
, libwebp
, libarchive
, pixman
, tinyxml
, tinyxml-2
, zlib
, SDL2
, SDL2_image
@@ -29,25 +29,16 @@
stdenv.mkDerivation (finalAttrs: {
pname = "libresprite";
version = "1.0";
version = "1.1";
src = fetchFromGitHub {
owner = "LibreSprite";
repo = "LibreSprite";
rev = "v${finalAttrs.version}";
fetchSubmodules = true;
hash = "sha256-d8GmVHYomDb74iSeEhJEVTHvbiVXggXg7xSqIKCUSzY=";
hash = "sha256-piA/hLQqdfyVH4GPu5ElXZtowQL9AGaK7GhZOME4L0Q=";
};
# Backport GCC 13 build fix
# FIXME: remove in next release
patches = [
(fetchpatch {
url = "https://github.com/LibreSprite/LibreSprite/commit/6ffe8472194bf5d0a73b4b2cd7f6804d3c80aa0c.patch";
hash = "sha256-5chXt0H+koofIspYsCJ7/eUxMGcCBVXJcXe3U/7F9Vc=";
})
];
nativeBuildInputs = [
cmake
pkg-config
@@ -62,8 +53,9 @@ stdenv.mkDerivation (finalAttrs: {
libjpeg
libpng
libwebp
libarchive
pixman
tinyxml
tinyxml-2
zlib
SDL2
SDL2_image
@@ -95,10 +87,10 @@ stdenv.mkDerivation (finalAttrs: {
libresprite-can-open-png = nixosTests.libresprite;
};
meta = with lib; {
meta = {
homepage = "https://libresprite.github.io/";
description = "Animated sprite editor & pixel art tool, fork of Aseprite";
license = licenses.gpl2Only;
license = lib.licenses.gpl2Only;
longDescription = ''
LibreSprite is a program to create animated sprites. Its main features are:
@@ -113,8 +105,8 @@ stdenv.mkDerivation (finalAttrs: {
- Pixel-art specific tools like filled Contour, Polygon, Shading mode, etc.
- Onion skinning.
'';
maintainers = with maintainers; [ fgaz ];
platforms = platforms.all;
maintainers = with lib.maintainers; [ fgaz ];
platforms = lib.platforms.all;
# https://github.com/LibreSprite/LibreSprite/issues/308
broken = stdenv.hostPlatform.isDarwin;
};

View File

@@ -3,7 +3,7 @@
, ruby
, nodejs
, writeText
, nodePackages
, neovim-node-client
, python3
, callPackage
, neovimUtils
@@ -173,7 +173,7 @@ let
ln -s ${finalAttrs.rubyEnv}/bin/neovim-ruby-host $out/bin/nvim-ruby
''
+ lib.optionalString finalAttrs.withNodeJs ''
ln -s ${nodePackages.neovim}/bin/neovim-node-host $out/bin/nvim-node
ln -s ${neovim-node-client}/bin/neovim-node-host $out/bin/nvim-node
''
+ lib.optionalString finalAttrs.withPerl ''
ln -s ${perlEnv}/bin/perl $out/bin/nvim-perl

View File

@@ -6,28 +6,28 @@
}:
let
version = "0.12.3";
version = "0.12.5";
sources = {
"x86_64-linux" = {
arch = "linux-x64";
url = "https://download.visualjj.com/visualjj-linux-x64-${version}.vsix";
hash = "sha256-dpvdWE0LL4PY2bzfRLazqP+VB9SSyhwnMLoOLsMmNJw=";
hash = "sha256-wby6xz+pKVZDoAdF3Onkc6/rqMN8zh/b+9Phd7Q9yyo=";
};
"x86_64-darwin" = {
arch = "darwin-x64";
url = "https://download.visualjj.com/visualjj-darwin-x64-${version}.vsix";
hash = "sha256-81ahZTuIG5ukXm+gmVzg4RgryRTyOIBaQ6BvGLCXVp0=";
hash = "sha256-MrnXlvdE17yq8UdFPLOBE7z9hEIZ4mDj56SxXHZTttI=";
};
"aarch64-linux" = {
arch = "linux-arm64";
url = "https://download.visualjj.com/visualjj-linux-arm64-${version}.vsix";
hash = "sha256-brheyxw4tHXF5Guzn8fzolQmcLQvOknPeAtGNPowcBk=";
hash = "sha256-F3u1NF1JqZhcJjW9MCIV9iwuhSX1MJ2d/8ndghpUqPI=";
};
"aarch64-darwin" = {
arch = "darwin-arm64";
url = "https://download.visualjj.com/visualjj-darwin-arm64-${version}.vsix";
hash = "sha256-EgupFXNfKKkk3FgEmgYwsY/QdaTLlbghKIIHQcvLatY=";
hash = "sha256-rgqArEjpS0Kc89MUBmdbBtK0l94fJfw8vRSwuz3CJC4=";
};
};
in

View File

@@ -15,6 +15,9 @@
gtk,
girara,
gettext,
gnome,
libheif,
libjxl,
libxml2,
check,
sqlite,
@@ -25,6 +28,7 @@
file,
librsvg,
gtk-mac-integration,
webp-pixbuf-loader,
}:
stdenv.mkDerivation (finalAttrs: {
@@ -95,6 +99,16 @@ stdenv.mkDerivation (finalAttrs: {
++ lib.optional stdenv.hostPlatform.isLinux libseccomp
++ lib.optional stdenv.hostPlatform.isDarwin gtk-mac-integration;
# add support for more image formats
env.GDK_PIXBUF_MODULE_FILE = gnome._gdkPixbufCacheBuilder_DO_NOT_USE {
extraLoaders = [
libheif.out
libjxl
librsvg
webp-pixbuf-loader
];
};
doCheck = !stdenv.hostPlatform.isDarwin;
passthru.updateScript = gitUpdater { };

View File

@@ -1,5 +1,5 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl gnugrep gnused jq yq-go nix-prefetch
#!nix-shell -i bash -p curl gnugrep gnused jq nurl yq-go
set -x -eu -o pipefail
@@ -141,7 +141,7 @@ cat >versions.nix <<EOF
EOF
set +e
K3S_VENDOR_HASH=$(nix-prefetch -I nixpkgs=${NIXPKGS_ROOT} "{ sha256 }: (import ${NIXPKGS_ROOT}. {}).k3s_1_${MINOR_VERSION}.goModules.overrideAttrs (_: { vendorHash = sha256; })")
K3S_VENDOR_HASH=$(nurl -e "(import ${NIXPKGS_ROOT}. {}).k3s_1_${MINOR_VERSION}.goModules")
set -e
if [ -n "${K3S_VENDOR_HASH:-}" ]; then

View File

@@ -22,6 +22,7 @@
, nlopt
, testers
, xvfb-run
, gitUpdater
}:
stdenv.mkDerivation (finalAttrs: {
@@ -95,16 +96,19 @@ stdenv.mkDerivation (finalAttrs: {
qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
passthru.tests.version = testers.testVersion {
package = finalAttrs.finalPackage;
command = ''
# Create a temporary home directory because stellarium aborts with an
# error if it can't write some configuration files.
tmpdir=$(mktemp -d)
passthru = {
tests.version = testers.testVersion {
package = finalAttrs.finalPackage;
command = ''
# Create a temporary home directory because stellarium aborts with an
# error if it can't write some configuration files.
tmpdir=$(mktemp -d)
# stellarium can't be run in headless mode, therefore we need xvfb-run.
HOME="$tmpdir" ${xvfb-run}/bin/xvfb-run stellarium --version
'';
# stellarium can't be run in headless mode, therefore we need xvfb-run.
HOME="$tmpdir" ${lib.getExe xvfb-run} stellarium --version
'';
};
updateScript = gitUpdater { rev-prefix = "v"; };
};
meta = {

View File

@@ -117,12 +117,14 @@ let
mpv-osc-tethys = callPackage ./mpv-osc-tethys.nix { };
mpv-playlistmanager = callPackage ./mpv-playlistmanager.nix { };
mpv-slicing = callPackage ./mpv-slicing.nix { };
mpv-subtitle-lines = callPackage ./mpv-subtitle-lines.nix { };
mpv-webm = callPackage ./mpv-webm.nix { };
mpvacious = callPackage ./mpvacious.nix { };
quack = callPackage ./quack.nix { };
quality-menu = callPackage ./quality-menu.nix { };
reload = callPackage ./reload.nix { };
simple-mpv-webui = callPackage ./simple-mpv-webui.nix { };
smart-copy-paste-2 = callPackage ./smart-copy-paste-2.nix { };
smartskip = callPackage ./smartskip.nix { };
sponsorblock = callPackage ./sponsorblock.nix { };
sponsorblock-minimal = callPackage ./sponsorblock-minimal.nix { };

View File

@@ -0,0 +1,27 @@
{
fetchFromGitHub,
buildLua,
lib,
unstableGitUpdater,
}:
buildLua {
pname = "mpv-subtitle-lines";
version = "0-unstable-2024-05-19";
src = fetchFromGitHub {
owner = "christoph-heinrich";
repo = "mpv-subtitle-lines";
rev = "f0a85c7ba3370b490c46a77dcb2e212c0b149a50";
hash = "sha256-m9LHIz/hAOEq0DzHY3Jd1LM1cfxZng6Iaqrug1PfnAE=";
};
passthru.updateScript = unstableGitUpdater { };
meta = {
description = "List and search subtitle lines of the selected subtitle track";
homepage = "https://github.com/christoph-heinrich/mpv-subtitle-lines";
license = lib.licenses.gpl2Only;
maintainers = with lib.maintainers; [ purrpurrn ];
};
}

View File

@@ -0,0 +1,33 @@
{
lib,
buildLua,
fetchFromGitHub,
unstableGitUpdater,
xclip,
}:
buildLua (finalAttrs: {
pname = "smart-copy-paste-2";
version = "0-unstable-2023-11-25";
scriptPath = "scripts/SmartCopyPaste_II.lua";
src = fetchFromGitHub {
owner = "Eisa01";
repo = "mpv-scripts";
rev = "48d68283cea47ff8e904decc9003b3abc3e2123e";
hash = "sha256-95CAKjBRELX2f7oWSHFWJnI0mikAoxhfUphe9k51Qf4=";
};
prePatch = ''
substituteInPlace scripts/SmartCopyPaste_II.lua \
--replace-fail 'xclip' "${lib.getExe xclip}"
'';
passthru.updateScript = unstableGitUpdater { };
meta = with lib; {
description = "Smart copy paste with logging and clipboard support";
homepage = "https://github.com/Eisa01/mpv-scripts";
license = licenses.bsd2;
maintainers = with maintainers; [ luftmensch-luftmensch ];
};
})

View File

@@ -72,10 +72,10 @@ stdenv.mkDerivation rec {
postInstall = ''
wrapProgram $out/bin/Cardinal \
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libjack2 ]}
--suffix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libjack2 ]}
wrapProgram $out/bin/CardinalMini \
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libjack2 ]}
--suffix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libjack2 ]}
# this doesn't work and is mainly just a test tool for the developers anyway.
rm -f $out/bin/CardinalNative

View File

@@ -1,41 +1,68 @@
{ lib
, fetchFromGitHub
, writeShellScript
, glib
, gsettings-desktop-schemas
, python3
, unstableGitUpdater
, wrapGAppsHook3
{
lib,
fetchFromGitHub,
writeShellScript,
glib,
gsettings-desktop-schemas,
python3Packages,
unstableGitUpdater,
wrapGAppsHook3,
}:
python3.pkgs.buildPythonApplication rec {
python3Packages.buildPythonApplication {
pname = "chirp";
version = "0.4.0-unstable-2024-10-03";
version = "0.4.0-unstable-2024-11-11";
pyproject = true;
src = fetchFromGitHub {
owner = "kk7ds";
repo = "chirp";
rev = "387d8f63535140779864e8973fbde0bad17f8512";
hash = "sha256-kJ2Cr2ks901GUVFscyCInsTSTM7g42NRYYxjTZsh1Lw=";
rev = "71812ad1214fcd1555375aeddfc5ddaf2079918b";
hash = "sha256-cDDv3GECxoJu0LT8mYeStFL4DeQKS638ZoweI8HbvaI=";
};
nativeBuildInputs = [
wrapGAppsHook3
];
buildInputs = [
glib
gsettings-desktop-schemas
];
nativeBuildInputs = [
wrapGAppsHook3
];
propagatedBuildInputs = with python3.pkgs; [
future
pyserial
requests
six
suds
wxpython
yattag
build-system = with python3Packages; [
setuptools
];
# "running build_ext" fails with no output
dependencies = with python3Packages; [
pyserial
requests
yattag
suds
wxpython
];
nativeCheckInputs = with python3Packages; [
pytestCheckHook
pytest-xdist
ddt
pyyaml
];
postPatch = ''
substituteInPlace chirp/locale/Makefile \
--replace-fail /usr/bin/find find
'';
preBuild = ''
make -C chirp/locale
'';
preCheck = ''
export HOME="$TMPDIR"
'';
# many upstream test failures
doCheck = false;
passthru.updateScript = unstableGitUpdater {
@@ -44,11 +71,15 @@ python3.pkgs.buildPythonApplication rec {
'';
};
meta = with lib; {
meta = {
description = "Free, open-source tool for programming your amateur radio";
homepage = "https://chirp.danplanet.com/";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ emantor wrmilling ];
platforms = platforms.linux;
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [
emantor
wrmilling
nickcao
];
platforms = lib.platforms.linux;
};
}

View File

@@ -1,57 +1,47 @@
{ lib
, buildNpmPackage
, copyDesktopItems
, electron_30
, buildGoModule
, esbuild
, electron_32
, fetchFromGitHub
, jq
, deltachat-rpc-server
, makeDesktopItem
, makeWrapper
, noto-fonts-color-emoji
, nodejs
, pkg-config
, pnpm_9
, python3
, roboto
, sqlcipher
, stdenv
, darwin
, testers
, deltachat-desktop
, yq
}:
let
electron = electron_30;
esbuild' = esbuild.override {
buildGoModule = args: buildGoModule (args // rec {
version = "0.19.12";
src = fetchFromGitHub {
owner = "evanw";
repo = "esbuild";
rev = "v${version}";
hash = "sha256-NQ06esCSU6YPvQ4cMsi3DEFGIQGl8Ff6fhdTxUAyGvo=";
};
vendorHash = "sha256-+BfxCyg0KkDQpHt/wycy/8CTG6YBA/VJvJFhhzUnSiQ=";
});
};
electron = electron_32;
pnpm = pnpm_9;
in
buildNpmPackage rec {
stdenv.mkDerivation (finalAttrs: {
pname = "deltachat-desktop";
version = "1.46.8";
version = "1.48.0";
src = fetchFromGitHub {
owner = "deltachat";
repo = "deltachat-desktop";
rev = "v${version}";
hash = "sha256-17JhaanYEySoDuLYFMc4vB3wVlCucMh3Jk2Uu9PqUdQ=";
rev = "v${finalAttrs.version}";
hash = "sha256-BgB12pHySJIMtBCph5UkBjioMhEYQq9i7htkrWQNlps=";
};
npmDepsHash = "sha256-+74koym1lL2rk5n06i7JgcXmX+yW4zgqRfdH6ryXe0s=";
pnpmDeps = pnpm.fetchDeps {
inherit (finalAttrs) pname version src;
hash = "sha256-YBfHVZB6TScIKbWQrN1KJYSUZytR81UwKZ87GaxGlZ8=";
};
nativeBuildInputs = [
jq
yq
makeWrapper
nodejs
pkg-config
pnpm.configHook
python3
] ++ lib.optionals stdenv.hostPlatform.isLinux [
copyDesktopItems
@@ -65,55 +55,50 @@ buildNpmPackage rec {
env = {
ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
ESBUILD_BINARY_PATH = "${esbuild'}/bin/esbuild";
USE_SYSTEM_LIBDELTACHAT = "true";
VERSION_INFO_GIT_REF = src.rev;
VERSION_INFO_GIT_REF = finalAttrs.src.rev;
};
preBuild = ''
buildPhase = ''
runHook preBuild
test \
$(jq -r '.packages."node_modules/@deltachat/jsonrpc-client".version' package-lock.json) \
$(yq -r '.catalogs.default."@deltachat/jsonrpc-client".version' pnpm-lock.yaml) \
= ${deltachat-rpc-server.version} \
|| (echo "error: deltachat-rpc-server version does not match jsonrpc-client" && exit 1)
test \
$(jq -r '.packages."node_modules/electron".version' package-lock.json | grep -E -o "^[0-9]+") \
$(yq -r '.importers."packages/target-electron".devDependencies.electron.version' pnpm-lock.yaml | grep -E -o "^[0-9]+") \
= ${lib.versions.major electron.version} \
|| (echo 'error: electron version doesn not match package-lock.json' && exit 1)
rm node_modules/@deltachat/stdio-rpc-server-*/deltachat-rpc-server
ln -s ${lib.getExe deltachat-rpc-server} node_modules/@deltachat/stdio-rpc-server-linux-*
'';
pnpm -w build:electron
npmBuildScript = "build4production";
pnpm --filter=@deltachat-desktop/target-electron pack:generate_config
pnpm --filter=@deltachat-desktop/target-electron pack:patch-node-modules
pnpm --filter=@deltachat-desktop/target-electron exec electron-builder \
--config ./electron-builder.json5 \
--dir \
-c.electronDist=${electron.dist} \
-c.electronVersion=${electron.version}
pushd packages/target-electron/dist/*-unpacked/resources/app.asar.unpacked
rm node_modules/@deltachat/stdio-rpc-server-*/deltachat-rpc-server
ln -s ${lib.getExe deltachat-rpc-server} node_modules/@deltachat/stdio-rpc-server-*
popd
runHook postBuild
'';
installPhase = ''
runHook preInstall
npm prune --production
mkdir -p $out/opt/DeltaChat
cp -r packages/target-electron/dist/*-unpacked/{locales,resources{,.pak}} $out/opt/DeltaChat
mkdir -p $out/lib/node_modules/deltachat-desktop
cp -r . $out/lib/node_modules/deltachat-desktop
awk '!/^#/ && NF' build/packageignore_list \
| xargs -I {} sh -c "rm -rf $out/lib/node_modules/deltachat-desktop/{}" || true
# required for electron to import index.js as a module
cp package.json $out/lib/node_modules/deltachat-desktop
install -D build/icon.png \
$out/share/icons/hicolor/scalable/apps/deltachat.png
ln -sf ${noto-fonts-color-emoji}/share/fonts/noto/NotoColorEmoji.ttf \
$out/lib/node_modules/deltachat-desktop/html-dist/fonts/noto/emoji
for font in $out/lib/node_modules/deltachat-desktop/html-dist/fonts/Roboto-*.ttf; do
ln -sf ${roboto}/share/fonts/truetype/$(basename $font) \
$out/lib/node_modules/deltachat-desktop/html-dist/fonts
done
makeWrapper ${lib.getExe electron} $out/bin/deltachat \
--set LD_PRELOAD ${sqlcipher}/lib/libsqlcipher${stdenv.hostPlatform.extensions.sharedLibrary} \
--add-flags $out/lib/node_modules/deltachat-desktop
makeWrapper ${lib.getExe electron} $out/bin/${finalAttrs.meta.mainProgram} \
--add-flags $out/opt/DeltaChat/resources/app.asar \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \
--inherit-argv0
runHook postInstall
'';
@@ -124,7 +109,7 @@ buildNpmPackage rec {
icon = "deltachat";
desktopName = "Delta Chat";
genericName = "Delta Chat";
comment = meta.description;
comment = finalAttrs.meta.description;
categories = [ "Network" "InstantMessaging" "Chat" ];
startupWMClass = "DeltaChat";
mimeTypes = [
@@ -141,12 +126,13 @@ buildNpmPackage rec {
};
};
meta = with lib; {
meta = {
description = "Email-based instant messaging for Desktop";
homepage = "https://github.com/deltachat/deltachat-desktop";
changelog = "https://github.com/deltachat/deltachat-desktop/blob/${src.rev}/CHANGELOG.md";
license = licenses.gpl3Plus;
changelog = "https://github.com/deltachat/deltachat-desktop/blob/${finalAttrs.src.rev}/CHANGELOG.md";
license = lib.licenses.gpl3Plus;
mainProgram = "deltachat";
maintainers = with maintainers; [ dotlambda ];
maintainers = with lib.maintainers; [ dotlambda ];
platforms = lib.platforms.linux;
};
}
})

View File

@@ -1,6 +1,6 @@
{ lib, stdenv, fetchFromGitHub, fetchpatch, meson, ninja, pkg-config, yaml-cpp, systemd
, python3Packages, asciidoc, libxslt, docbook_xml_dtd_45, docbook_xsl
, libxml2, docbook5
, libxml2, docbook5, mesonEmulatorHook
}:
stdenv.mkDerivation rec {
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
meson ninja pkg-config asciidoc libxslt.bin docbook_xml_dtd_45 docbook_xsl
libxml2.bin docbook5 python3Packages.pytest python3Packages.pytest-timeout
systemd
];
] ++ lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [ mesonEmulatorHook ];
buildInputs = [ yaml-cpp ];

View File

@@ -1,35 +1,29 @@
{
apple-sdk_15,
stdenv,
lib,
rustPlatform,
fetchFromGitHub,
nix-update-script,
pkg-config,
openssl,
stdenv,
darwin,
}:
rustPlatform.buildRustPackage rec {
pname = "jikken";
version = "0.8.0";
version = "0.8.1";
src = fetchFromGitHub {
owner = "jikkenio";
repo = "jikken";
rev = "v${version}";
hash = "sha256-e1n5Q1bF/n9ELA93ucdaIeXx3LPhd7cWkLxWRRdGlo4=";
hash = "sha256-WJxrCCDe39RYwHb+zbr7ugFsFsP5Uc/arw3s6USQoN4=";
};
cargoHash = "sha256-DALY88q5xsjnoaGJxnVWx/5v4yE80+HNGT/vdFdzkXk=";
cargoHash = "sha256-vyByA05rcGd8/O9PKcIlUF8tq2UkomryW1nFsfqQNlk=";
nativeBuildInputs = [ pkg-config ];
buildInputs =
[ openssl ]
++ lib.optionals stdenv.hostPlatform.isDarwin [
darwin.apple_sdk_11_0.frameworks.IOKit
darwin.apple_sdk_11_0.frameworks.Security
darwin.apple_sdk_11_0.frameworks.SystemConfiguration
];
buildInputs = [ openssl ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ apple-sdk_15 ];
passthru.updateScript = nix-update-script { };

View File

@@ -0,0 +1,70 @@
{
php,
fetchFromGitHub,
lib,
nixosTests,
}:
php.buildComposerProject (finalAttrs: {
pname = "kimai";
version = "2.24.0";
src = fetchFromGitHub {
owner = "kimai";
repo = "kimai";
rev = finalAttrs.version;
hash = "sha256-C6i263sAfZwZELUIcZh/OmXZqgCKifjPYBafnH0wMC4=";
};
php = php.buildEnv {
extensions = (
{ enabled, all }:
enabled
++ (with all; [
gd
intl
mbstring
pdo
tokenizer
xml
xsl
zip
])
);
# Asset building and (later) cache building process requires a little bit
# more memory.
extraConfig = ''
memory_limit=384M
'';
};
vendorHash = "sha256-3y3FfSUuDyBGP1dsuzDORDqFNj3jYix5ArM+2FS4gn4=";
composerNoPlugins = false;
composerNoScripts = false;
postInstall = ''
# Make available the console utility, as Kimai doesn't list this in
# composer.json.
mkdir -p "$out"/share/php/kimai "$out"/bin
ln -s "$out"/share/php/kimai/bin/console "$out"/bin/console
'';
passthru.tests = {
kimai = nixosTests.kimai;
};
meta = {
description = "Web-based multi-user time-tracking application";
homepage = "https://www.kimai.org/";
license = lib.licenses.agpl3Plus;
longDescription = "
Kimai is a web-based multi-user time-tracking application. Works great for
everyone: freelancers, companies, organizations - everyone can track their
times, generate reports, create invoices and do so much more.
";
maintainers = with lib.maintainers; [ peat-psuwit ];
platforms = lib.platforms.all;
};
})

File diff suppressed because it is too large Load Diff

View File

@@ -29,13 +29,13 @@ let
};
in stdenv.mkDerivation rec {
pname = "libdeltachat";
version = "1.142.12";
version = "1.148.7";
src = fetchFromGitHub {
owner = "deltachat";
repo = "deltachat-core-rust";
rev = "v${version}";
hash = "sha256-WjzmRRHdi31Eg3UAy4rD2xrx1LVew9Y4bb50Zyv+8JA=";
hash = "sha256-mTNWSR4ea972tIOvg6RClEc44mKXoHDEWoLZXio8O4k=";
};
patches = [

View File

@@ -2,7 +2,6 @@
, stdenv
, callPackage
, fetchFromGitHub
, fetchpatch
, makeWrapper
, nixosTests
, python3Packages
@@ -10,12 +9,12 @@
}:
let
version = "1.12.0";
version = "2.2.0";
src = fetchFromGitHub {
owner = "mealie-recipes";
repo = "mealie";
rev = "v${version}";
hash = "sha256-Lwd0P1ssAITLH256uMXNb5b1OcFAy8OVjjpnmfNVUvQ=";
hash = "sha256-t4YYvj8dG8o9PVAlDxdxVBi2omBGQ2h53/IVv089778=";
};
frontend = callPackage (import ./mealie-frontend.nix src version) { };
@@ -68,6 +67,7 @@ pythonpkgs.buildPythonApplication rec {
gunicorn
html2text
httpx
itsdangerous
jinja2
lxml
openai

View File

@@ -1,14 +0,0 @@
diff --git a/src/platform/core/CMakeLists.txt b/src/platform/core/CMakeLists.txt
index 2bc6d8c..3175c14 100644
--- a/src/platform/core/CMakeLists.txt
+++ b/src/platform/core/CMakeLists.txt
@@ -18,8 +18,7 @@ find_package(OpenGL REQUIRED)
include(FetchContent)
FetchContent_Declare(glad
- GIT_REPOSITORY https://github.com/Dav1dde/glad.git
- GIT_TAG adc3d7a1d704e099581ca25bc5bbdf728c2db67b # v2.0.5-2-gadc3d7a
+ SOURCE_DIR @gladSrc@
SOURCE_SUBDIR cmake
)
FetchContent_MakeAvailable(glad)

View File

@@ -2,7 +2,6 @@
lib,
stdenv,
fetchFromGitHub,
substituteAll,
cmake,
python3Packages,
libsForQt5,
@@ -12,6 +11,14 @@
libunarr,
}:
let
gladSrc = fetchFromGitHub {
owner = "Dav1dde";
repo = "glad";
rev = "v2.0.5";
hash = "sha256-Ba7nbd0DxDHfNXXu9DLfnxTQTiJIQYSES9CP5Bfq4K0=";
};
in
stdenv.mkDerivation (finalAttrs: {
pname = "nanoboyadvance";
version = "1.8.1";
@@ -23,18 +30,6 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-du3dPTg3OxNTWXDQo2m9W0rJxtrkn+lQSh/XGiu/eGg=";
};
patches = [
(substituteAll {
src = ./dont-fetch-glad.patch;
gladSrc = fetchFromGitHub {
owner = "Dav1dde";
repo = "glad";
rev = "v2.0.5";
hash = "sha256-Ba7nbd0DxDHfNXXu9DLfnxTQTiJIQYSES9CP5Bfq4K0=";
};
})
];
nativeBuildInputs = [
cmake
python3Packages.jinja2
@@ -50,6 +45,7 @@ stdenv.mkDerivation (finalAttrs: {
];
cmakeFlags = [
(lib.cmakeFeature "FETCHCONTENT_SOURCE_DIR_GLAD" "${gladSrc}")
(lib.cmakeBool "USE_SYSTEM_FMT" true)
(lib.cmakeBool "USE_SYSTEM_TOML11" true)
(lib.cmakeBool "USE_SYSTEM_UNARR" true)

View File

@@ -0,0 +1,39 @@
{
lib,
buildNpmPackage,
fetchNpmDeps,
fetchFromGitHub,
}:
buildNpmPackage rec {
pname = "node-client";
version = "5.3.0";
src = fetchFromGitHub {
owner = "neovim";
repo = "node-client";
rev = "02a5fdef8e3ec2812d295981db38dbccf82e0728";
hash = "sha256-0vPw2hCGUDepSpF1gp/lI71EgwGsCSnw7ePP7ElHsTQ=";
};
npmDeps = fetchNpmDeps {
inherit src;
hash = "sha256-VYoJAi1RzVf5ObjuGmnuiA/1WYBWC+qYPdfWF98+oGw=";
};
npmWorkspace = "packages/neovim";
postInstall = ''
mkdir -p $out/bin
# Overwrite the unwanted wrapper created by buildNpmPackage
ln -sf $out/lib/node_modules/neovim/bin/cli.js $out/bin/neovim-node-host
'';
meta = {
mainProgram = "node-client";
description = "Nvim msgpack API client and remote plugin provider";
homepage = "https://github.com/neovim/node-client";
changelog = "https://github.com/neovim/node-client/releases/tag/v${version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ fidgetingbits ];
};
}

View File

@@ -11,14 +11,14 @@
let
self = python3Packages.buildPythonApplication {
pname = "nix-update";
version = "1.6.0";
version = "1.7.0";
pyproject = true;
src = fetchFromGitHub {
owner = "Mic92";
repo = "nix-update";
rev = "refs/tags/${self.version}";
hash = "sha256-CpvLZ5cXNkIbAZjO1HebFaOiLyeesnkQxJ95V0anaII=";
hash = "sha256-5KhS3RxeVDHKjsxT3hHtl0hHcwlSHl2fYFYLonobpLg=";
};
build-system = [ python3Packages.setuptools ];

View File

@@ -1,18 +1,18 @@
{ lib
, python3Packages
, fetchFromGitHub
{
lib,
python3Packages,
fetchFromGitHub,
}:
python3Packages.buildPythonApplication rec {
pname = "pferd";
version = "3.6.0";
version = "3.7.0";
format = "pyproject";
src = fetchFromGitHub {
owner = "Garmelon";
repo = "PFERD";
rev = "refs/tags/v${version}";
sha256 = "sha256-BUYu04Ie7GNJYUGSH30VbVUQirg1tAl1LY39mnEsLf8=";
sha256 = "sha256-4+LlnGv/i9zDf+HeW86PJ6XsPMEkJ0JzhLr14MJ4WKM=";
};
nativeBuildInputs = with python3Packages; [
@@ -31,7 +31,7 @@ python3Packages.buildPythonApplication rec {
homepage = "https://github.com/Garmelon/PFERD";
description = "Tool for downloading course-related files from ILIAS";
license = licenses.mit;
maintainers = with maintainers; [ _0xbe7a ];
maintainers = with maintainers; [_0xbe7a];
mainProgram = "pferd";
};
}

View File

@@ -1,17 +1,18 @@
{ lib
, stdenv
, fetchFromGitHub
, fetchpatch2
, meson
, ninja
, pkg-config
, wayland-scanner
, freetype
, libglvnd
, libxkbcommon
, wayland
, wayland-protocols
, gitUpdater
{
lib,
fetchFromGitHub,
fetchpatch2,
freetype,
gitUpdater,
libglvnd,
libxkbcommon,
meson,
ninja,
pkg-config,
stdenv,
wayland,
wayland-protocols,
wayland-scanner,
}:
stdenv.mkDerivation (finalAttrs: {
@@ -34,11 +35,7 @@ stdenv.mkDerivation (finalAttrs: {
})
];
strictDeps = true;
depsBuildBuild = [
pkg-config
];
depsBuildBuild = [ pkg-config ];
nativeBuildInputs = [
meson
@@ -55,14 +52,18 @@ stdenv.mkDerivation (finalAttrs: {
wayland-protocols
];
strictDeps = true;
passthru.updateScript = gitUpdater { };
meta = {
description = "Workspace overview app for sway";
homepage = "https://github.com/milgra/sov";
description = "Workspace overview app for sway";
license = lib.licenses.gpl3Only;
mainProgram = "sov";
maintainers = with lib.maintainers; [ ];
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ AndersonTorres ];
inherit (wayland.meta) platforms;
# sys/timerfd.h header inexistent
broken = stdenv.isDarwin;
};
})

View File

@@ -1,6 +1,6 @@
{ lib, stdenv, fetchFromGitHub, libusb1, pkg-config }:
stdenv.mkDerivation rec {
stdenv.mkDerivation {
pname = "stm8flash";
version = "2022-03-27";
@@ -17,8 +17,13 @@ stdenv.mkDerivation rec {
# NOTE: _FORTIFY_SOURCE requires compiling with optimization (-O)
env.NIX_CFLAGS_COMPILE = "-O";
preBuild = ''
export DESTDIR=$out;
makeFlags = [
"DESTDIR=${placeholder "out"}"
];
postPatch = ''
substituteInPlace Makefile \
--replace 'pkg-config' '$(PKG_CONFIG)'
'';
nativeBuildInputs = [ pkg-config ];

View File

@@ -24,16 +24,17 @@
openexr_3,
bash-completion,
testers,
nix-update-script,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "swayimg";
version = "3.4";
version = "3.5";
src = fetchFromGitHub {
owner = "artemsen";
repo = "swayimg";
rev = "v${finalAttrs.version}";
hash = "sha256-bUU4s7nlN48rYMX4SleUDAOCVz2fowGctEfP6KhMdoA=";
rev = "refs/tags/v${finalAttrs.version}";
hash = "sha256-qI5M7ZC7GaVtVNh+MWPNdjXukk135IQ1gPHxdefBEyo=";
};
strictDeps = true;
@@ -73,17 +74,21 @@ stdenv.mkDerivation (finalAttrs: {
openexr_3
];
passthru.tests.version = testers.testVersion {
package = finalAttrs.finalPackage;
passthru = {
tests.version = testers.testVersion {
package = finalAttrs.finalPackage;
};
updateScript = nix-update-script { };
};
meta = with lib; {
meta = {
homepage = "https://github.com/artemsen/swayimg";
description = "Image viewer for Sway/Wayland";
changelog = "https://github.com/artemsen/swayimg/releases/tag/v${finalAttrs.version}";
license = licenses.mit;
maintainers = with maintainers; [ matthewcroughan ];
platforms = platforms.linux;
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ matthewcroughan ];
platforms = lib.platforms.linux;
mainProgram = "swayimg";
};
})

View File

@@ -1,33 +1,24 @@
{ lib, stdenv, fetchurl, fetchpatch, gettext, pkg-config, perlPackages
{ lib, stdenv, fetchurl, gettext, pkg-config, perlPackages
, libidn2, zlib, pcre, libuuid, libiconv, libintl
, python3, lzip, darwin
, nukeReferences, python3, lzip, darwin
, withLibpsl ? false, libpsl
, withOpenssl ? true, openssl
}:
stdenv.mkDerivation rec {
pname = "wget";
version = "1.24.5";
version = "1.25.0";
src = fetchurl {
url = "mirror://gnu/wget/wget-${version}.tar.lz";
hash = "sha256-V6EHFR5O+U/flK/+z6xZiWPzcvEyk+2cdAMhBTkLNu4=";
hash = "sha256-GSJcx1awoIj8gRSNxqQKDI8ymvf9hIPxx7L+UPTgih8=";
};
patches = [
./remove-runtime-dep-on-openssl-headers.patch
(fetchpatch {
name = "CVE-2024-38428.patch";
url = "https://git.savannah.gnu.org/cgit/wget.git/patch/?id=ed0c7c7e0e8f7298352646b2fd6e06a11e242ace";
hash = "sha256-4ZVPufgG/h0UkxF9hQBAtF6QAG4GEz9hHeqEsD47q4U=";
})
];
preConfigure = ''
patchShebangs doc
'';
nativeBuildInputs = [ gettext pkg-config perlPackages.perl lzip libiconv libintl ];
nativeBuildInputs = [ gettext pkg-config perlPackages.perl lzip libiconv libintl nukeReferences ];
buildInputs = [ libidn2 zlib pcre libuuid ]
++ lib.optional withOpenssl openssl
++ lib.optional withLibpsl libpsl
@@ -40,6 +31,14 @@ stdenv.mkDerivation rec {
"--without-included-regex"
];
preBuild = ''
# avoid runtime references to build-only depends
make -C src version.c
nuke-refs src/version.c
'';
enableParallelBuilding = true;
__darwinAllowLocalNetworking = true;
doCheck = true;
preCheck = ''

View File

@@ -1,17 +0,0 @@
diff --git a/src/Makefile.in b/src/Makefile.in
index 1a36a9b..e279c84 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -2211,10 +2211,9 @@ version.c: $(wget_SOURCES) ../lib/libgnu.a
echo '' >> $@
echo '#include "version.h"' >> $@
echo 'const char *version_string = "@VERSION@";' >> $@
- echo 'const char *compilation_string = "'$(COMPILE)'";' \
+ echo 'const char *compilation_string = 0;' \
| $(ESCAPEQUOTE) >> $@
- echo 'const char *link_string = "'$(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) $(LIBS) $(wget_LDADD)'";' \
+ echo 'const char *link_string = 0;' \
| $(ESCAPEQUOTE) >> $@
css.c: $(srcdir)/css.l

View File

@@ -9,14 +9,14 @@
# '';
stdenv.mkDerivation {
version = "2018-04-30";
version = "2020-11-15";
pname = "zsh-command-time";
src = fetchFromGitHub {
owner = "popstas";
repo = "zsh-command-time";
rev = "afb4a4c9ae7ce64ca9d4f334a79a25e46daad0aa";
sha256 = "1bvyjgz6bhgg1nwr56r50p6fblgah6yiql55pgm5abnn2h876fjq";
rev = "803d26eef526bff1494d1a584e46a6e08d25d918";
hash = "sha256-ndHVFcz+XmUW0zwFq7pBXygdRKyPLjDZNmTelhd5bv8=";
};
strictDeps = true;
@@ -31,5 +31,6 @@ stdenv.mkDerivation {
homepage = "https://github.com/popstas/zsh-command-time";
license = licenses.mit;
platforms = platforms.unix;
maintainers = with maintainers; [ lassulus ];
};
}

View File

@@ -2,7 +2,6 @@
stdenv,
lib,
fetchFromGitLab,
fetchpatch,
gitUpdater,
nixosTests,
cmake,
@@ -27,72 +26,15 @@
stdenv.mkDerivation (finalAttrs: {
pname = "lomiri-clock-app";
version = "4.0.4";
version = "4.1.0";
src = fetchFromGitLab {
owner = "ubports";
repo = "development/apps/lomiri-clock-app";
rev = "v${finalAttrs.version}";
hash = "sha256-IWNLMYrebYQe5otNwZtRUs4YGPo/5OFic3Nh2pWxROs=";
hash = "sha256-bYnAdlpY2Ka08hrJOyqW8+VbCTOi0NNrW+8MHLF7+2E=";
};
patches = [
# Fix GNUInstallDirs variables usage
# Remove when version > 4.0.4
(fetchpatch {
name = "0002-lomiri-clock-app-Fix-GNUInstallDirs-variable-concatenations-in-CMake.patch";
url = "https://gitlab.com/ubports/development/apps/lomiri-clock-app/-/commit/33c62d0382f69462de0567628d7a6ef162944e12.patch";
hash = "sha256-JEoRjc6RugtznNtgJsXz9wnAL/7fkoog40EVl7uu2pc=";
})
# Fix installation of splash icon
# Remove when version > 4.0.4
(fetchpatch {
name = "0003-lomiri-clock-app-Fix-splash-file-installation-in-non-clock-mode.patch";
url = "https://gitlab.com/ubports/development/apps/lomiri-clock-app/-/commit/97fd6fd91ee787dfe107bd36bc895f2ff234b5e3.patch";
hash = "sha256-g9eR6yYgKFDohuZMs1Ub0TwPM2AWbwWLDvZMrT4gMls=";
})
# Port from qmlscene to dedicated C++ entry, and apply abunch of fixes that this move enables
# Remove when https://gitlab.com/ubports/development/apps/lomiri-clock-app/-/merge_requests/217 merged & in release
(fetchpatch {
name = "0004-lomiri-clock-app-Migrate-to-C++-app.patch";
url = "https://gitlab.com/ubports/development/apps/lomiri-clock-app/-/commit/c690d65baf2d28f99364dec2244f8d4ebdb09178.patch";
hash = "sha256-JCQFlHFAXbgiSGNtEsq/khblhAD/3BdE68Qctn7j5T0=";
})
(fetchpatch {
name = "0005-lomiri-clock-app-Call-i18n.bindtextdomain-and-fix-app-icon-load.patch";
url = "https://gitlab.com/ubports/development/apps/lomiri-clock-app/-/commit/0619730ca639228b1c0a3403082a6a13e2fe3ff3.patch";
hash = "sha256-NQQYvJ141fU2iQ+xzYoNkuuzvqQg1BGZNGq24u8i1is=";
})
(fetchpatch {
name = "0006-lomiri-clock-app-Pass-through-project-version.patch";
url = "https://gitlab.com/ubports/development/apps/lomiri-clock-app/-/commit/ae1467fe44813eef2fc6cc4b9d6ddc02edee7640.patch";
hash = "sha256-E6yk5H+YVH4oSg6AIAJ+Rynu0HFkNomX7sTjM/x37PU=";
})
(fetchpatch {
name = "0007-lomiri-clock-app-Fix-tests-after-module-changes.patch";
url = "https://gitlab.com/ubports/development/apps/lomiri-clock-app/-/commit/40cbd7847c4a850184e553ac5b8981672b7deed0.patch";
hash = "sha256-AA4KRYZNBQ0/Nk65kyzzDFhs/zWO7fb5f2Toy1diPBg=";
})
# Don't ignore PATH when looking for qmltestrunner, saves us a patch for hardcoded fallback
# Remove when version > 4.0.4
(fetchpatch {
name = "0008-lomiri-clock-app-tests-Drop-NO_DEFAULT_PATH.patch";
url = "https://gitlab.com/ubports/development/apps/lomiri-clock-app/-/commit/190ef47e2efaaf139920d0556e0522f95479ea95.patch";
hash = "sha256-jy4E+VfVyRu99eGqbhlYi/xjDgPajozHPSlqEcGVOA4=";
})
# Make tests honour BUILD_TESTING
# Remove when https://gitlab.com/ubports/development/apps/lomiri-clock-app/-/merge_requests/219 merged & in release
(fetchpatch {
name = "0009-lomiri-clock-app-tests-Honour-BUILD_TESTING.patch";
url = "https://gitlab.com/ubports/development/apps/lomiri-clock-app/-/commit/b0ca583238f011e23a99286a1d2b61f2dcd85303.patch";
hash = "sha256-TyM5Y8BRAqinvZiZ5TEXd5caVesFluPi6iGmTS1wRlI=";
})
];
postPatch = ''
# QT_IMPORTS_DIR returned by qmake -query is broken
substituteInPlace CMakeLists.txt \

View File

@@ -1,21 +1,22 @@
{ stdenvNoCC
, lib
, fetchFromGitLab
, gitUpdater
, gtk3
, hicolor-icon-theme
, ubuntu-themes
{
stdenvNoCC,
lib,
fetchFromGitLab,
gitUpdater,
gtk3,
hicolor-icon-theme,
ubuntu-themes,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "suru-icon-theme";
version = "2024.02.1";
version = "2024.10.13";
src = fetchFromGitLab {
owner = "ubports";
repo = "development/core/suru-icon-theme";
rev = finalAttrs.version;
hash = "sha256-7T9FILhZrs5bbdBEV/FszCOwUd/C1Rl9tbDt77SIzRk=";
hash = "sha256-rbhfcjca0vMBa0tJWGpXMRGGygZH1hmdQv/nLJWPS7s=";
};
strictDeps = true;
@@ -25,9 +26,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
hicolor-icon-theme # theme setup hook
];
propagatedBuildInputs = [
ubuntu-themes
];
propagatedBuildInputs = [ ubuntu-themes ];
dontConfigure = true;
dontBuild = true;
@@ -47,12 +46,12 @@ stdenvNoCC.mkDerivation (finalAttrs: {
passthru.updateScript = gitUpdater { };
meta = with lib; {
meta = {
description = "Suru Icon Theme for Lomiri Operating Environment";
homepage = "https://gitlab.com/ubports/development/core/suru-icon-theme";
changelog = "https://gitlab.com/ubports/development/core/suru-icon-theme/-/blob/${finalAttrs.version}/ChangeLog";
license = licenses.cc-by-sa-30;
maintainers = teams.lomiri.members;
platforms = platforms.all;
license = lib.licenses.cc-by-sa-30;
maintainers = lib.teams.lomiri.members;
platforms = lib.platforms.all;
};
})

View File

@@ -58,8 +58,8 @@ let
biometryd = callPackage ./services/biometryd { };
lomiri-content-hub = callPackage ./services/lomiri-content-hub { };
hfd-service = callPackage ./services/hfd-service { };
history-service = callPackage ./services/history-service { };
lomiri-download-manager = callPackage ./services/lomiri-download-manager { };
lomiri-history-service = callPackage ./services/lomiri-history-service { };
lomiri-indicator-network = callPackage ./services/lomiri-indicator-network { };
lomiri-polkit-agent = callPackage ./services/lomiri-polkit-agent { };
lomiri-thumbnailer = callPackage ./services/lomiri-thumbnailer { };
@@ -71,5 +71,6 @@ in
lib.makeScope libsForQt5.newScope packages
// lib.optionalAttrs config.allowAliases {
content-hub = lib.warn "`content-hub` was renamed to `lomiri-content-hub`." pkgs.lomiri.lomiri-content-hub; # Added on 2024-09-11
history-service = lib.warn "`history-service` was renamed to `lomiri-history-service`." pkgs.lomiri.lomiri-history-service; # Added on 2024-11-11
lomiri-system-settings-security-privacy = lib.warn "`lomiri-system-settings-security-privacy` upstream was merged into `lomiri-system-settings`. Please use `pkgs.lomiri.lomiri-system-settings-unwrapped` if you need to directly access the plugins that belonged to this project." pkgs.lomiri.lomiri-system-settings-unwrapped; # Added on 2024-08-08
}

View File

@@ -1,199 +0,0 @@
{ stdenv
, lib
, fetchFromGitLab
, fetchpatch
, gitUpdater
, testers
, cmake
, dbus
, dbus-test-runner
, dconf
, gnome-keyring
, libphonenumber
, libqtdbustest
, pkg-config
, protobuf
, qtbase
, qtdeclarative
, qtpim
, sqlite
, telepathy
, telepathy-mission-control
, validatePkgConfig
, wrapQtAppsHook
, xvfb-run
}:
let
replaceDbusService = pkg: name: "--replace \"\\\${DBUS_SERVICES_DIR}/${name}\" \"${pkg}/share/dbus-1/services/${name}\"";
in
stdenv.mkDerivation (finalAttrs: {
pname = "history-service";
version = "0.5";
src = fetchFromGitLab {
owner = "ubports";
repo = "development/core/history-service";
rev = finalAttrs.version;
hash = "sha256-m/ytJoHxW0q1vlVKK6Z9ovHzjoiS1AodCSGHTeKygfQ=";
};
outputs = [
"out"
"dev"
];
patches = [
# Drop deprecated qt5_use_modules usage
# Remove when https://gitlab.com/ubports/development/core/history-service/-/merge_requests/36 merged & in release
(fetchpatch {
url = "https://gitlab.com/ubports/development/core/history-service/-/commit/b36ab377aca93555b29d1471d6eaa706b5c843ca.patch";
hash = "sha256-mOpXqqd4JI7lHtcWDm9LGCrtB8ERge04jMpHIagDM2k=";
})
# Add more / correct existing GNUInstallDirs usage
# Remove when https://gitlab.com/ubports/development/core/history-service/-/merge_requests/37 merged & in release
(fetchpatch {
url = "https://gitlab.com/ubports/development/core/history-service/-/commit/bb4dbdd16e80dcd286d8edfb86b08f0b61bc7fec.patch";
hash = "sha256-C/XaygI663yaU06klQD9g0NnbqYxHSmzdbrRxcfiJkk=";
})
# Correct version information
# Remove when https://gitlab.com/ubports/development/core/history-service/-/merge_requests/38 merged & in release
(fetchpatch {
url = "https://gitlab.com/ubports/development/core/history-service/-/commit/98458126f9f494b124134fb35c198af0545f6a98.patch";
hash = "sha256-4EfLsaueKTCovl8EilN30cmfNfg19wvyCsbKqOrXtuw=";
})
# Make tests optional
# Remove when https://gitlab.com/ubports/development/core/history-service/-/merge_requests/39 merged & in release
(fetchpatch {
url = "https://gitlab.com/ubports/development/core/history-service/-/commit/cb5c80cffc35611657244e15a7eb10edcd598ccd.patch";
hash = "sha256-MFHGu4OMScdThq9htUgFMpezP7Ym6YTIZUHWol20wqw=";
})
];
postPatch = ''
# Upstream's way of generating their schema doesn't work for us, don't quite understand why.
# (gdb) bt
# #0 QSQLiteResult::prepare (this=0x4a4650, query=...) at qsql_sqlite.cpp:406
# #1 0x00007ffff344bcf4 in QSQLiteResult::reset (this=0x4a4650, query=...) at qsql_sqlite.cpp:378
# #2 0x00007ffff7f95f39 in QSqlQuery::exec (this=this@entry=0x7fffffffaad8, query=...) at kernel/qsqlquery.cpp:406
# #3 0x00000000004084cb in SQLiteDatabase::dumpSchema (this=<optimized out>) at /build/source/plugins/sqlite/sqlitedatabase.cpp:148
# #4 0x0000000000406d70 in main (argc=<optimized out>, argv=<optimized out>)
# at /build/source/plugins/sqlite/schema/generate_schema.cpp:56
# (gdb) p lastError().driverText().toStdString()
# $17 = {_M_dataplus = {<std::allocator<char>> = {<std::__new_allocator<char>> = {<No data fields>}, <No data fields>},
# _M_p = 0x4880d0 "Unable to execute statement"}, _M_string_length = 27, {
# _M_local_buf = "\033\000\000\000\000\000\000\000+\344\371\367\377\177\000", _M_allocated_capacity = 27}}
# (gdb) p lastError().databaseText().toStdString()
# $18 = {_M_dataplus = {<std::allocator<char>> = {<std::__new_allocator<char>> = {<No data fields>}, <No data fields>},
# _M_p = 0x48c480 "no such column: rowid"}, _M_string_length = 21, {
# _M_local_buf = "\025\000\000\000\000\000\000\000A\344\371\367\377\177\000", _M_allocated_capacity = 21}}
#
# This makes the tests stall indefinitely and breaks history-service usage.
# This replacement script should hopefully achieve the same / a similar-enough result with just sqlite
cp ${./update_schema.sh.in} plugins/sqlite/schema/update_schema.sh.in
# libphonenumber -> protobuf -> abseil-cpp demands C++14
# But uses std::string_view which is C++17?
substituteInPlace CMakeLists.txt \
--replace '-std=c++11' '-std=c++17'
# Uses pkg_get_variable, cannot substitute prefix with that
substituteInPlace daemon/CMakeLists.txt \
--replace 'pkg_get_variable(SYSTEMD_USER_UNIT_DIR systemd systemduserunitdir)' 'set(SYSTEMD_USER_UNIT_DIR "''${CMAKE_INSTALL_PREFIX}/lib/systemd/user")'
# Queries qmake for the QML installation path, which returns a reference to Qt5's build directory
substituteInPlace CMakeLists.txt \
--replace "\''${QMAKE_EXECUTABLE} -query QT_INSTALL_QML" "echo $out/${qtbase.qtQmlPrefix}"
'' + lib.optionalString finalAttrs.finalPackage.doCheck ''
# Tests launch these DBus services, fix paths related to them
substituteInPlace tests/common/dbus-services/CMakeLists.txt \
${replaceDbusService telepathy-mission-control "org.freedesktop.Telepathy.MissionControl5.service"} \
${replaceDbusService telepathy-mission-control "org.freedesktop.Telepathy.AccountManager.service"} \
${replaceDbusService dconf "ca.desrt.dconf.service"}
substituteInPlace cmake/modules/GenerateTest.cmake \
--replace '/usr/lib/dconf' '${lib.getLib dconf}/libexec' \
--replace '/usr/lib/telepathy' '${lib.getLib telepathy-mission-control}/libexec'
'';
strictDeps = true;
nativeBuildInputs = [
cmake
pkg-config
sqlite
validatePkgConfig
wrapQtAppsHook
];
buildInputs = [
libphonenumber
protobuf
qtbase
qtdeclarative
qtpim
telepathy
];
nativeCheckInputs = [
dbus
dbus-test-runner
dconf
gnome-keyring
telepathy-mission-control
xvfb-run
];
cmakeFlags = [
# Many deprecation warnings with Qt 5.15
(lib.cmakeBool "ENABLE_WERROR" false)
(lib.cmakeFeature "CMAKE_CTEST_ARGUMENTS" (lib.concatStringsSep ";" [
# DaemonTest is flaky
# https://gitlab.com/ubports/development/core/history-service/-/issues/13
"-E" "^DaemonTest"
]))
];
preBuild = ''
# SQLiteDatabase is used on host to generate SQL schemas
# Tests also need this to use SQLiteDatabase for verifying correct behaviour
export QT_PLUGIN_PATH=${lib.getBin qtbase}/${qtbase.qtPluginPrefix}
'';
doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
# Starts & talks to D-Bus services, breaks with parallelism
enableParallelChecking = false;
preCheck = ''
export QT_PLUGIN_PATH=${lib.getBin qtpim}/${qtbase.qtPluginPrefix}:$QT_PLUGIN_PATH
export HOME=$PWD
'';
passthru = {
tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
updateScript = gitUpdater { };
};
meta = with lib; {
description = "Service that provides call log and conversation history";
longDescription = ''
History service provides the database and an API to store/retrieve the call log (used by dialer-app) and the sms/mms history (used by messaging-app).
See as well telepathy-ofono for incoming message events.
Database location: ~/.local/share/history-service/history.sqlite
'';
homepage = "https://gitlab.com/ubports/development/core/history-service";
changelog = "https://gitlab.com/ubports/development/core/history-service/-/blob/${finalAttrs.version}/ChangeLog";
license = licenses.gpl3Only;
maintainers = teams.lomiri.members;
platforms = platforms.linux;
pkgConfigModules = [
"history-service"
];
};
})

View File

@@ -0,0 +1,169 @@
{
stdenv,
lib,
fetchFromGitLab,
gitUpdater,
testers,
cmake,
dbus,
dbus-test-runner,
dconf,
gnome-keyring,
libphonenumber,
libqtdbustest,
pkg-config,
protobuf,
qtbase,
qtdeclarative,
qtpim,
sqlite,
telepathy,
telepathy-mission-control,
validatePkgConfig,
wrapQtAppsHook,
xvfb-run,
}:
let
replaceDbusService =
pkg: name:
"--replace-fail \"\\\${DBUS_SERVICES_DIR}/${name}\" \"${pkg}/share/dbus-1/services/${name}\"";
in
stdenv.mkDerivation (finalAttrs: {
pname = "lomiri-history-service";
version = "0.6";
src = fetchFromGitLab {
owner = "ubports";
repo = "development/core/history-service";
rev = finalAttrs.version;
hash = "sha256-pcTYuumywTarW+ZciwwvmmBQQH6aq4+FdVjV62VzSZU=";
};
outputs = [
"out"
"dev"
];
postPatch =
''
# Upstream's way of generating their schema doesn't work for us, don't quite understand why.
# (gdb) bt
# #0 QSQLiteResult::prepare (this=0x4a4650, query=...) at qsql_sqlite.cpp:406
# #1 0x00007ffff344bcf4 in QSQLiteResult::reset (this=0x4a4650, query=...) at qsql_sqlite.cpp:378
# #2 0x00007ffff7f95f39 in QSqlQuery::exec (this=this@entry=0x7fffffffaad8, query=...) at kernel/qsqlquery.cpp:406
# #3 0x00000000004084cb in SQLiteDatabase::dumpSchema (this=<optimized out>) at /build/source/plugins/sqlite/sqlitedatabase.cpp:148
# #4 0x0000000000406d70 in main (argc=<optimized out>, argv=<optimized out>)
# at /build/source/plugins/sqlite/schema/generate_schema.cpp:56
# (gdb) p lastError().driverText().toStdString()
# $17 = {_M_dataplus = {<std::allocator<char>> = {<std::__new_allocator<char>> = {<No data fields>}, <No data fields>},
# _M_p = 0x4880d0 "Unable to execute statement"}, _M_string_length = 27, {
# _M_local_buf = "\033\000\000\000\000\000\000\000+\344\371\367\377\177\000", _M_allocated_capacity = 27}}
# (gdb) p lastError().databaseText().toStdString()
# $18 = {_M_dataplus = {<std::allocator<char>> = {<std::__new_allocator<char>> = {<No data fields>}, <No data fields>},
# _M_p = 0x48c480 "no such column: rowid"}, _M_string_length = 21, {
# _M_local_buf = "\025\000\000\000\000\000\000\000A\344\371\367\377\177\000", _M_allocated_capacity = 21}}
#
# This makes the tests stall indefinitely and breaks history-service usage.
# This replacement script should hopefully achieve the same / a similar-enough result with just sqlite
cp ${./update_schema.sh.in} plugins/sqlite/schema/update_schema.sh.in
# Uses pkg_get_variable, cannot substitute prefix with that
substituteInPlace daemon/CMakeLists.txt \
--replace-fail 'pkg_get_variable(SYSTEMD_USER_UNIT_DIR systemd systemduserunitdir)' 'set(SYSTEMD_USER_UNIT_DIR "''${CMAKE_INSTALL_PREFIX}/lib/systemd/user")'
# Queries qmake for the QML installation path, which returns a reference to Qt5's build directory
substituteInPlace CMakeLists.txt \
--replace-fail "\''${QMAKE_EXECUTABLE} -query QT_INSTALL_QML" "echo $out/${qtbase.qtQmlPrefix}"
''
+ lib.optionalString finalAttrs.finalPackage.doCheck ''
# Tests launch these DBus services, fix paths related to them
substituteInPlace tests/common/dbus-services/CMakeLists.txt \
${replaceDbusService telepathy-mission-control "org.freedesktop.Telepathy.MissionControl5.service"} \
${replaceDbusService telepathy-mission-control "org.freedesktop.Telepathy.AccountManager.service"} \
${replaceDbusService dconf "ca.desrt.dconf.service"}
substituteInPlace cmake/modules/GenerateTest.cmake \
--replace-fail '/usr/lib/dconf' '${lib.getLib dconf}/libexec' \
--replace-fail '/usr/lib/telepathy' '${lib.getLib telepathy-mission-control}/libexec'
'';
strictDeps = true;
nativeBuildInputs = [
cmake
pkg-config
sqlite
validatePkgConfig
wrapQtAppsHook
];
buildInputs = [
libphonenumber
protobuf
qtbase
qtdeclarative
qtpim
telepathy
];
nativeCheckInputs = [
dbus
dbus-test-runner
dconf
gnome-keyring
telepathy-mission-control
xvfb-run
];
cmakeFlags = [
# Many deprecation warnings with Qt 5.15
(lib.cmakeBool "ENABLE_WERROR" false)
(lib.cmakeFeature "CMAKE_CTEST_ARGUMENTS" (
lib.concatStringsSep ";" [
# DaemonTest is flaky
# https://gitlab.com/ubports/development/core/history-service/-/issues/13
"-E"
"^DaemonTest"
]
))
];
preBuild = ''
# SQLiteDatabase is used on host to generate SQL schemas
# Tests also need this to use SQLiteDatabase for verifying correct behaviour
export QT_PLUGIN_PATH=${lib.getBin qtbase}/${qtbase.qtPluginPrefix}
'';
doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
# Starts & talks to D-Bus services, breaks with parallelism
enableParallelChecking = false;
preCheck = ''
export QT_PLUGIN_PATH=${lib.getBin qtpim}/${qtbase.qtPluginPrefix}:$QT_PLUGIN_PATH
export HOME=$PWD
'';
passthru = {
tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
updateScript = gitUpdater { };
};
meta = {
description = "Service that provides call log and conversation history";
longDescription = ''
History service provides the database and an API to store/retrieve the call log (used by dialer-app) and the sms/mms history (used by messaging-app).
See as well telepathy-ofono for incoming message events.
Database location: ~/.local/share/history-service/history.sqlite
'';
homepage = "https://gitlab.com/ubports/development/core/lomiri-history-service";
changelog = "https://gitlab.com/ubports/development/core/lomiri-history-service/-/blob/${finalAttrs.version}/ChangeLog";
license = lib.licenses.gpl3Only;
maintainers = lib.teams.lomiri.members;
platforms = lib.platforms.linux;
pkgConfigModules = [ "lomiri-history-service" ];
};
})

View File

@@ -25,7 +25,7 @@ done
# To output the schema
echo ".fullschema" >> $MERGED_COMMANDS
# The schemas may use functions that history-service defines in C which don't affect the generated schema in a meaningful way.
# The schemas may use functions that lomiri-history-service defines in C which don't affect the generated schema in a meaningful way.
# sqlite will return an error after processing queries with such function calls, so remove them.
sed -i -e '/normalizeId(/d' $MERGED_COMMANDS

View File

@@ -15,11 +15,11 @@
gettext,
glib,
gnome-keyring,
history-service,
libnotify,
libphonenumber,
libpulseaudio,
libusermetrics,
lomiri-history-service,
lomiri-url-dispatcher,
makeWrapper,
pkg-config,
@@ -66,6 +66,13 @@ stdenv.mkDerivation (finalAttrs: {
url = "https://gitlab.com/ubports/development/core/lomiri-telephony-service/-/commit/18e0ba8e025b097eef1217d97d98ef4a4940fe84.patch";
hash = "sha256-vOIy+B/OQeccsVn4pXsnr8LYyEapqbebW1I6dBg5u2c=";
})
# Remove when version > 0.5.3
(fetchpatch {
name = "0003-lomiri-telephony-service-Handle-renamed-history-service.patch";
url = "https://gitlab.com/ubports/development/core/lomiri-telephony-service/-/commit/3a387670ed13041db069068292b1f41229e79583.patch";
hash = "sha256-b7gxzr6Mmtogclq3hR7a/zl+816H2wmJqv3oHjUJggw=";
})
];
postPatch =
@@ -104,11 +111,11 @@ stdenv.mkDerivation (finalAttrs: {
dconf
gettext
glib
history-service
libnotify
libphonenumber
libpulseaudio
libusermetrics
lomiri-history-service
lomiri-url-dispatcher
protobuf
(python3.withPackages (

View File

@@ -438,6 +438,11 @@ self: super: ({
} // lib.optionalAttrs pkgs.stdenv.hostPlatform.isx86_64 { # x86_64-darwin
# Work around store corruption on one of our Hydra builders
# https://github.com/NixOS/nixpkgs/issues/356741
filepath-bytestring = triggerRebuild 1 super.filepath-bytestring;
magic = triggerRebuild 1 super.magic;
# tests appear to be failing to link or something:
# https://hydra.nixos.org/build/174540882/nixlog/9
regex-rure = dontCheck super.regex-rure;

View File

@@ -27,8 +27,13 @@ stdenv.mkDerivation rec {
substituteInPlace Makefile --replace "ranlib" "${lib.getBin stdenv.cc.bintools.bintools}/bin/${stdenv.cc.targetPrefix}ranlib"
substituteInPlace Makefile --replace "STRIP=strip" "STRIP=${lib.getBin stdenv.cc.bintools.bintools}/bin/${stdenv.cc.targetPrefix}strip"
'';
postInstall = ''
patchShebangs --update $out/bin/multispell
'';
nativeBuildInputs = [ perl zlib ];
# buildInputs = [ zlib ];
buildInputs = [ perl ];
strictDeps = true;
meta = with lib; {
description = "Hebrew spell checker";

View File

@@ -136,6 +136,7 @@ mapAliases {
inherit (pkgs) mermaid-cli; # added 2023-10-01
musescore-downloader = pkgs.dl-librescore; # added 2023-08-19
inherit (pkgs) near-cli; # added 2023-09-09
neovim = pkgs.neovim-node-client; # added 2024-11-13
node-inspector = throw "node-inspector was removed because it was broken"; # added 2023-08-21
inherit (pkgs) node-gyp; # added 2024-08-13
inherit (pkgs) node-pre-gyp; # added 2024-08-05

View File

@@ -36,7 +36,6 @@
less = "lessc";
localtunnel = "lt";
lua-fmt = "luafmt";
neovim = "neovim-node-host";
parsoid = "parse.js";
poor-mans-t-sql-formatter-cli = "sqlformat";
postcss-cli = "postcss";

View File

@@ -137,7 +137,6 @@
, "meat"
, "mocha"
, "multi-file-swagger"
, "neovim"
, "nijs"
, "node-gyp-build"
, "node2nix"

View File

@@ -35,7 +35,6 @@ buildPythonPackage rec {
'';
};
propagatedBuildInputs = [
aiohttp
attrs
@@ -64,6 +63,9 @@ buildPythonPackage rec {
postPatch = ''
substituteInPlace hikari/_about.py \
--replace-fail "__git_sha1__: typing.Final[str] = \"HEAD\"" "__git_sha1__: typing.Final[str] = \"$(cat $src/COMMIT)\""
# XXX: Remove once pytest-asyncio is updated to 0.24+
substituteInPlace pyproject.toml \
--replace-fail "asyncio_default_fixture_loop_scope = \"func\"" ""
'';
meta = {
@@ -71,6 +73,9 @@ buildPythonPackage rec {
homepage = "https://www.hikari-py.dev/";
changelog = "https://github.com/hikari-py/hikari/releases/tag/${version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ tomodachi94 sigmanificient ];
maintainers = with lib.maintainers; [
tomodachi94
sigmanificient
];
};
}

View File

@@ -22,14 +22,14 @@
buildPythonPackage rec {
pname = "pymc";
version = "5.18.0";
version = "5.18.2";
pyproject = true;
src = fetchFromGitHub {
owner = "pymc-devs";
repo = "pymc";
rev = "refs/tags/v${version}";
hash = "sha256-rH6sh05rSrhakcfdc+BSR37kQYO/QEPuw8hHMZZGwdE=";
hash = "sha256-+PbxYmyo9S85atl6B+DB+ZSW9HLN/2fAPwALn719TjM=";
};
postPatch = ''

View File

@@ -20,8 +20,8 @@
jax,
jaxlib,
numba,
pytest-mock,
pytestCheckHook,
pytest-mock,
tensorflow-probability,
nix-update-script,
@@ -29,14 +29,14 @@
buildPythonPackage rec {
pname = "pytensor";
version = "2.25.5";
version = "2.26.3";
pyproject = true;
src = fetchFromGitHub {
owner = "pymc-devs";
repo = "pytensor";
rev = "refs/tags/rel-${version}";
hash = "sha256-tEIDuMAY+rMBqzHLnhbSqOoWzjIbZKCWWMx/uej2pOU=";
hash = "sha256-+YdUZj5Edbm+jm6s/0RflQVVQg3enBwlmBwpLrk3534=";
};
pythonRelaxDeps = [
@@ -62,8 +62,8 @@ buildPythonPackage rec {
jax
jaxlib
numba
pytest-mock
pytestCheckHook
pytest-mock
tensorflow-probability
];
@@ -73,13 +73,22 @@ buildPythonPackage rec {
pythonImportsCheck = [ "pytensor" ];
# Ensure that the installed package is used instead of the source files from the current workdir
preCheck = ''
rm -rf pytensor
'';
disabledTests = [
# benchmarks (require pytest-benchmark):
"test_elemwise_speed"
"test_fused_elemwise_benchmark"
"test_logsumexp_benchmark"
"test_minimal_random_function_call_benchmark"
"test_scan_multiple_output"
"test_vector_taps_benchmark"
# Failure reported upstream: https://github.com/pymc-devs/pytensor/issues/980
"test_choose_signature"
];
disabledTestPaths = [
@@ -100,7 +109,7 @@ buildPythonPackage rec {
description = "Python library to define, optimize, and efficiently evaluate mathematical expressions involving multi-dimensional arrays";
mainProgram = "pytensor-cache";
homepage = "https://github.com/pymc-devs/pytensor";
changelog = "https://github.com/pymc-devs/pytensor/releases";
changelog = "https://github.com/pymc-devs/pytensor/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [
bcdarwin

View File

@@ -72,10 +72,6 @@ buildPythonPackage rec {
env.LC_ALL = "en_US.UTF-8";
preBuild = ''
export SKLEARN_BUILD_PARALLEL=$NIX_BUILD_CORES
'';
# PermissionError: [Errno 1] Operation not permitted: '/nix/nix-installer'
doCheck = !stdenv.hostPlatform.isDarwin;

View File

@@ -13,8 +13,8 @@
buildPythonPackage rec {
pname = "twentemilieu";
version = "2.0.1";
format = "pyproject";
version = "2.1.0";
pyproject = true;
disabled = pythonOlder "3.11";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
owner = "frenck";
repo = "python-twentemilieu";
rev = "refs/tags/v${version}";
hash = "sha256-0rs+nBJfyXRj/3n/G2JzUDXaiIYZmWsoIcgLoWKhlV4=";
hash = "sha256-R2zCDDSS6vpdD0TGSuYs6Xl8Ij2lU2UWqkOE4aFyxto=";
};
postPatch = ''
@@ -31,9 +31,9 @@ buildPythonPackage rec {
--replace '"0.0.0"' '"${version}"'
'';
nativeBuildInputs = [ poetry-core ];
build-system = [ poetry-core ];
propagatedBuildInputs = [
dependencies = [
aiohttp
yarl
];
@@ -50,7 +50,7 @@ buildPythonPackage rec {
description = "Python client for Twente Milieu";
homepage = "https://github.com/frenck/python-twentemilieu";
changelog = "https://github.com/frenck/python-twentemilieu/releases/tag/v${version}";
license = with licenses; [ mit ];
license = licenses.mit;
maintainers = with maintainers; [ fab ];
};
}

View File

@@ -776,6 +776,7 @@ let
RmecabKo = [ pkgs.mecab ];
markets = [ pkgs.gsl ];
rlas = [ pkgs.boost ];
bgx = [ pkgs.boost ];
PoissonBinomial = [ pkgs.fftw.dev ];
poisbinom = [ pkgs.fftw.dev ];
PoissonMultinomial = [ pkgs.fftw.dev ];