mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-10-04 22:10:14 +00:00
Merge staging-next into staging
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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. -->
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -163,7 +163,7 @@ in {
|
||||
|
||||
services.mysql = mkIf cfg.enable {
|
||||
enable = true;
|
||||
package = pkgs.mysql;
|
||||
package = pkgs.mariadb;
|
||||
ensureDatabases = [cfg.database.database];
|
||||
ensureUsers = [
|
||||
{
|
||||
|
||||
403
nixos/modules/services/web-apps/kimai.nix
Normal file
403
nixos/modules/services/web-apps/kimai.nix
Normal 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;
|
||||
};
|
||||
})
|
||||
|
||||
]);
|
||||
}
|
||||
@@ -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
23
nixos/tests/kimai.nix
Normal 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/")
|
||||
'';
|
||||
}
|
||||
)
|
||||
@@ -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")
|
||||
'';
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 { };
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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 { };
|
||||
|
||||
27
pkgs/applications/video/mpv/scripts/mpv-subtitle-lines.nix
Normal file
27
pkgs/applications/video/mpv/scripts/mpv-subtitle-lines.nix
Normal 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 ];
|
||||
};
|
||||
}
|
||||
33
pkgs/applications/video/mpv/scripts/smart-copy-paste-2.nix
Normal file
33
pkgs/applications/video/mpv/scripts/smart-copy-paste-2.nix
Normal 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 ];
|
||||
};
|
||||
})
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -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 ];
|
||||
|
||||
|
||||
@@ -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 { };
|
||||
|
||||
|
||||
70
pkgs/by-name/ki/kimai/package.nix
Normal file
70
pkgs/by-name/ki/kimai/package.nix
Normal 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;
|
||||
};
|
||||
})
|
||||
2192
pkgs/by-name/li/libdeltachat/Cargo.lock
generated
2192
pkgs/by-name/li/libdeltachat/Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -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 = [
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
|
||||
39
pkgs/by-name/ne/neovim-node-client/package.nix
Normal file
39
pkgs/by-name/ne/neovim-node-client/package.nix
Normal 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 ];
|
||||
};
|
||||
}
|
||||
@@ -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 ];
|
||||
|
||||
@@ -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";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
})
|
||||
|
||||
@@ -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 ];
|
||||
|
||||
@@ -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";
|
||||
};
|
||||
})
|
||||
|
||||
@@ -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 = ''
|
||||
|
||||
@@ -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
|
||||
@@ -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 ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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 \
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
})
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
];
|
||||
};
|
||||
})
|
||||
169
pkgs/desktops/lomiri/services/lomiri-history-service/default.nix
Normal file
169
pkgs/desktops/lomiri/services/lomiri-history-service/default.nix
Normal 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" ];
|
||||
};
|
||||
})
|
||||
@@ -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
|
||||
|
||||
@@ -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 (
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -137,7 +137,6 @@
|
||||
, "meat"
|
||||
, "mocha"
|
||||
, "multi-file-swagger"
|
||||
, "neovim"
|
||||
, "nijs"
|
||||
, "node-gyp-build"
|
||||
, "node2nix"
|
||||
|
||||
@@ -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
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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 = ''
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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 ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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 ];
|
||||
|
||||
Reference in New Issue
Block a user