Merge master into staging-next

This commit is contained in:
github-actions[bot] 2022-09-04 12:01:32 +00:00 committed by GitHub
commit 689376a5c1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
36 changed files with 683 additions and 121 deletions

View file

@ -248,6 +248,14 @@
<link linkend="opt-services.schleuder.enable">services.schleuder</link>.
</para>
</listitem>
<listitem>
<para>
<link xlink:href="https://www.dolibarr.org/">Dolibarr</link>,
an enterprise resource planning and customer relationship
manager. Enable using
<link linkend="opt-services.dolibarr.enable">services.dolibarr</link>.
</para>
</listitem>
<listitem>
<para>
<link xlink:href="https://www.expressvpn.com">expressvpn</link>,

View file

@ -90,6 +90,8 @@ In addition to numerous new and upgraded packages, this release has the followin
- [schleuder](https://schleuder.org/), a mailing list manager with PGP support. Enable using [services.schleuder](#opt-services.schleuder.enable).
- [Dolibarr](https://www.dolibarr.org/), an enterprise resource planning and customer relationship manager. Enable using [services.dolibarr](#opt-services.dolibarr.enable).
- [expressvpn](https://www.expressvpn.com), the CLI client for ExpressVPN. Available as [services.expressvpn](#opt-services.expressvpn.enable).
- [Grafana Tempo](https://www.grafana.com/oss/tempo/), a distributed tracing store. Available as [services.tempo](#opt-services.tempo.enable).

View file

@ -27,9 +27,13 @@ with lib;
fonts.fontconfig.enable = false;
nixpkgs.overlays = singleton (const (super: {
beam = super.beam_nox;
cairo = super.cairo.override { x11Support = false; };
dbus = super.dbus.override { x11Support = false; };
beam = super.beam_nox;
ffmpeg_4 = super.ffmpeg_4.override { sdlSupport = false; vdpauSupport = false; };
ffmpeg_5 = super.ffmpeg_5.override { sdlSupport = false; vdpauSupport = false; };
gobject-introspection = super.gobject-introspection.override { x11Support = false; };
libva = super.libva-minimal;
networkmanager-fortisslvpn = super.networkmanager-fortisslvpn.override { withGnome = false; };
networkmanager-iodine = super.networkmanager-iodine.override { withGnome = false; };
networkmanager-l2tp = super.networkmanager-l2tp.override { withGnome = false; };
@ -37,7 +41,6 @@ with lib;
networkmanager-openvpn = super.networkmanager-openvpn.override { withGnome = false; };
networkmanager-sstp = super.networkmanager-vpnc.override { withGnome = false; };
networkmanager-vpnc = super.networkmanager-vpnc.override { withGnome = false; };
gobject-introspection = super.gobject-introspection.override { x11Support = false; };
qemu = super.qemu.override { gtkSupport = false; spiceSupport = false; sdlSupport = false; };
}));
};

View file

@ -1065,6 +1065,7 @@
./services/web-apps/discourse.nix
./services/web-apps/documize.nix
./services/web-apps/dokuwiki.nix
./services/web-apps/dolibarr.nix
./services/web-apps/engelsystem.nix
./services/web-apps/ethercalc.nix
./services/web-apps/fluidd.nix

View file

@ -1,6 +1,5 @@
# Module for MiniDLNA, a simple DLNA server.
{ config, lib, pkgs, ... }:
with lib;
let
@ -34,8 +33,7 @@ in
default = {};
description = lib.mdDoc ''
The contents of MiniDLNA's configuration file.
When the service is activated, a basic template is generated
from the current options opened here.
When the service is activated, a basic template is generated from the current options opened here.
'';
type = types.submodule {
freeformType = settingsFormat.type;
@ -46,10 +44,8 @@ in
example = [ "/data/media" "V,/home/alice/video" ];
description = lib.mdDoc ''
Directories to be scanned for media files.
The prefixes `A,`,`V,` and
`P,` restrict a directory to audio, video
or image files. The directories must be accessible to the
`minidlna` user account.
The `A,` `V,` `P,` prefixes restrict a directory to audio, video or image files.
The directories must be accessible to the `minidlna` user account.
'';
};
options.notify_interval = mkOption {
@ -57,18 +53,11 @@ in
default = 90000;
description = lib.mdDoc ''
The interval between announces (in seconds).
Instead of waiting on announces, one can open port UDP 1900 or
set `openFirewall` option to use SSDP discovery.
Furthermore announce interval has now been set as 90000 in order
to prevent disconnects with certain clients and to rely solely
on the SSDP method.
Lower values (e.g. 60 seconds) should be used if one does not
want to utilize SSDP. By default miniDLNA will announce its
presence on the network approximately every 15 minutes. Many
people prefer shorter announce intervals on their home networks,
especially when DLNA clients are started on demand.
Instead of waiting for announces, you should set `openFirewall` option to use SSDP discovery.
Furthermore, this option has been set to 90000 in order to prevent disconnects with certain
clients and relies solely on the discovery.
Lower values (e.g. 30 seconds) should be used if you can't use the discovery.
Some relevant information can be found here:
https://sourceforge.net/p/minidlna/discussion/879957/thread/1389d197/
'';
@ -86,7 +75,7 @@ in
};
options.friendly_name = mkOption {
type = types.str;
default = "${config.networking.hostName} MiniDLNA";
default = config.networking.hostName;
defaultText = literalExpression "config.networking.hostName";
example = "rpi3";
description = lib.mdDoc "Name that the DLNA server presents to clients.";
@ -116,7 +105,7 @@ in
options.wide_links = mkOption {
type = types.enum [ "yes" "no" ];
default = "no";
description = lib.mdDoc "Set this to yes to allow symlinks that point outside user-defined media_dirs.";
description = lib.mdDoc "Set this to yes to allow symlinks that point outside user-defined `media_dir`.";
};
};
};

View file

@ -0,0 +1,320 @@
{ config, pkgs, lib, ... }:
let
inherit (lib) any boolToString concatStringsSep isBool isString literalExpression mapAttrsToList mkDefault mkEnableOption mkIf mkOption optionalAttrs types;
package = pkgs.dolibarr.override { inherit (cfg) stateDir; };
cfg = config.services.dolibarr;
vhostCfg = config.services.nginx.virtualHosts."${cfg.domain}";
mkConfigFile = filename: settings:
let
# hack in special logic for secrets so we read them from a separate file avoiding the nix store
secretKeys = [ "force_install_databasepass" "dolibarr_main_db_pass" "dolibarr_main_instance_unique_id" ];
toStr = k: v:
if (any (str: k == str) secretKeys) then v
else if isString v then "'${v}'"
else if isBool v then boolToString v
else if isNull v then "null"
else toString v
;
in
pkgs.writeText filename ''
<?php
${concatStringsSep "\n" (mapAttrsToList (k: v: "\$${k} = ${toStr k v};") settings)}
'';
# see https://github.com/Dolibarr/dolibarr/blob/develop/htdocs/install/install.forced.sample.php for all possible values
install = {
force_install_noedit = 2;
force_install_main_data_root = "${cfg.stateDir}/documents";
force_install_nophpinfo = true;
force_install_lockinstall = "444";
force_install_distrib = "nixos";
force_install_type = "mysqli";
force_install_dbserver = cfg.database.host;
force_install_port = toString cfg.database.port;
force_install_database = cfg.database.name;
force_install_databaselogin = cfg.database.user;
force_install_mainforcehttps = vhostCfg.forceSSL;
force_install_createuser = false;
force_install_dolibarrlogin = null;
} // optionalAttrs (cfg.database.passwordFile != null) {
force_install_databasepass = ''file_get_contents("${cfg.database.passwordFile}")'';
};
in
{
# interface
options.services.dolibarr = {
enable = mkEnableOption "dolibarr";
domain = mkOption {
type = types.str;
default = "localhost";
description = ''
Domain name of your server.
'';
};
user = mkOption {
type = types.str;
default = "dolibarr";
description = ''
User account under which dolibarr runs.
<note><para>
If left as the default value this user will automatically be created
on system activation, otherwise you are responsible for
ensuring the user exists before the dolibarr application starts.
</para></note>
'';
};
group = mkOption {
type = types.str;
default = "dolibarr";
description = ''
Group account under which dolibarr runs.
<note><para>
If left as the default value this group will automatically be created
on system activation, otherwise you are responsible for
ensuring the group exists before the dolibarr application starts.
</para></note>
'';
};
stateDir = mkOption {
type = types.str;
default = "/var/lib/dolibarr";
description = ''
State and configuration directory dolibarr will use.
'';
};
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 = "dolibarr";
description = "Database name.";
};
user = mkOption {
type = types.str;
default = "dolibarr";
description = "Database username.";
};
passwordFile = mkOption {
type = with types; nullOr path;
default = null;
example = "/run/keys/dolibarr-dbpassword";
description = "Database password file.";
};
createLocally = mkOption {
type = types.bool;
default = true;
description = "Create the database and database user locally.";
};
};
settings = mkOption {
type = with types; (attrsOf (oneOf [ bool int str ]));
default = { };
description = lib.mdDoc "Dolibarr settings, see <https://github.com/Dolibarr/dolibarr/blob/develop/htdocs/conf/conf.php.example> for details.";
};
nginx = mkOption {
type = types.nullOr (types.submodule (
lib.recursiveUpdate
(import ../web-servers/nginx/vhost-options.nix { inherit config lib; })
{
# enable encryption by default,
# as sensitive login and Dolibarr (ERP) data should not be transmitted in clear text.
options.forceSSL.default = true;
options.enableACME.default = true;
}
));
default = null;
example = lib.literalExpression ''
{
serverAliases = [
"dolibarr.''${config.networking.domain}"
"erp.''${config.networking.domain}"
];
enableACME = false;
}
'';
description = lib.mdDoc ''
With this option, you can customize an nginx virtual host which already has sensible defaults for Dolibarr.
Set to {} if you do not need any customization to the virtual host.
If enabled, then by default, the {option}`serverName` is
`''${domain}`,
SSL is active, and certificates are acquired via ACME.
If this is set to null (the default), no nginx virtualHost will be configured.
'';
};
poolConfig = mkOption {
type = with types; attrsOf (oneOf [ str int bool ]);
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 = lib.mdDoc ''
Options for the Dolibarr PHP pool. See the documentation on [`php-fpm.conf`](https://www.php.net/manual/en/install.fpm.configuration.php)
for details on configuration directives.
'';
};
};
# implementation
config = mkIf cfg.enable {
assertions = [
{ assertion = cfg.database.createLocally -> cfg.database.user == cfg.user;
message = "services.dolibarr.database.user must match services.dolibarr.user if the database is to be automatically provisioned";
}
];
services.dolibarr.settings = {
dolibarr_main_url_root = "https://${cfg.domain}";
dolibarr_main_document_root = "${package}/htdocs";
dolibarr_main_url_root_alt = "/custom";
dolibarr_main_data_root = "${cfg.stateDir}/documents";
dolibarr_main_db_host = cfg.database.host;
dolibarr_main_db_port = toString cfg.database.port;
dolibarr_main_db_name = cfg.database.name;
dolibarr_main_db_prefix = "llx_";
dolibarr_main_db_user = cfg.database.user;
dolibarr_main_db_pass = mkIf (cfg.database.passwordFile != null) ''
file_get_contents("${cfg.database.passwordFile}")
'';
dolibarr_main_db_type = "mysqli";
dolibarr_main_db_character_set = mkDefault "utf8";
dolibarr_main_db_collation = mkDefault "utf8_unicode_ci";
# Authentication settings
dolibarr_main_authentication = mkDefault "dolibarr";
# Security settings
dolibarr_main_prod = true;
dolibarr_main_force_https = vhostCfg.forceSSL;
dolibarr_main_restrict_os_commands = "${pkgs.mariadb}/bin/mysqldump, ${pkgs.mariadb}/bin/mysql";
dolibarr_nocsrfcheck = false;
dolibarr_main_instance_unique_id = ''
file_get_contents("${cfg.stateDir}/dolibarr_main_instance_unique_id")
'';
dolibarr_mailing_limit_sendbyweb = false;
};
systemd.tmpfiles.rules = [
"d '${cfg.stateDir}' 0750 ${cfg.user} ${cfg.group}"
"d '${cfg.stateDir}/documents' 0750 ${cfg.user} ${cfg.group}"
"f '${cfg.stateDir}/conf.php' 0660 ${cfg.user} ${cfg.group}"
"L '${cfg.stateDir}/install.forced.php' - ${cfg.user} ${cfg.group} - ${mkConfigFile "install.forced.php" install}"
];
services.mysql = mkIf cfg.database.createLocally {
enable = mkDefault true;
package = mkDefault pkgs.mariadb;
ensureDatabases = [ cfg.database.name ];
ensureUsers = [
{ name = cfg.database.user;
ensurePermissions = { "${cfg.database.name}.*" = "ALL PRIVILEGES"; };
}
];
};
services.nginx.enable = mkIf (cfg.nginx != null) true;
services.nginx.virtualHosts."${cfg.domain}" = mkIf (cfg.nginx != null) (lib.mkMerge [
cfg.nginx
({
root = lib.mkForce "${package}/htdocs";
locations."/".index = "index.php";
locations."~ [^/]\\.php(/|$)" = {
extraConfig = ''
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_pass unix:${config.services.phpfpm.pools.dolibarr.socket};
'';
};
})
]);
systemd.services."phpfpm-dolibarr".after = mkIf cfg.database.createLocally [ "mysql.service" ];
services.phpfpm.pools.dolibarr = {
inherit (cfg) user group;
phpPackage = pkgs.php.buildEnv {
extensions = { enabled, all }: enabled ++ [ all.calendar ];
# recommended by dolibarr web application
extraConfig = ''
session.use_strict_mode = 1
session.cookie_samesite = "Lax"
; open_basedir = "${package}/htdocs, ${cfg.stateDir}"
allow_url_fopen = 0
disable_functions = "pcntl_alarm, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wifexited, pcntl_wifstopped, pcntl_wifsignaled, pcntl_wifcontinued, pcntl_wexitstatus, pcntl_wtermsig, pcntl_wstopsig, pcntl_signal, pcntl_signal_get_handler, pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec, pcntl_getpriority, pcntl_setpriority, pcntl_async_signals"
'';
};
settings = {
"listen.mode" = "0660";
"listen.owner" = cfg.user;
"listen.group" = cfg.group;
} // cfg.poolConfig;
};
# there are several challenges with dolibarr and NixOS which we can address here
# - the dolibarr installer cannot be entirely automated, though it can partially be by including a file called install.forced.php
# - the dolibarr installer requires write access to its config file during installation, though not afterwards
# - the dolibarr config file generally holds secrets generated by the installer, though the config file is a php file so we can read and write these secrets from an external file
systemd.services.dolibarr-config = {
description = "dolibarr configuration file management via NixOS";
wantedBy = [ "multi-user.target" ];
script = ''
# extract the 'main instance unique id' secret that the dolibarr installer generated for us, store it in a file for use by our own NixOS generated configuration file
${pkgs.php}/bin/php -r "include '${cfg.stateDir}/conf.php'; file_put_contents('${cfg.stateDir}/dolibarr_main_instance_unique_id', \$dolibarr_main_instance_unique_id);"
# replace configuration file generated by installer with the NixOS generated configuration file
install -m 644 ${mkConfigFile "conf.php" cfg.settings} '${cfg.stateDir}/conf.php'
'';
serviceConfig = {
Type = "oneshot";
User = cfg.user;
Group = cfg.group;
RemainAfterExit = "yes";
};
unitConfig = {
ConditionFileNotEmpty = "${cfg.stateDir}/conf.php";
};
};
users.users.dolibarr = mkIf (cfg.user == "dolibarr" ) {
isSystemUser = true;
group = cfg.group;
};
users.groups = optionalAttrs (cfg.group == "dolibarr") {
dolibarr = { };
};
users.users."${config.services.nginx.group}".extraGroups = [ cfg.group ];
};
}

59
nixos/tests/dolibarr.nix Normal file
View file

@ -0,0 +1,59 @@
import ./make-test-python.nix ({ pkgs, lib, ... }: {
name = "dolibarr";
meta.maintainers = [ lib.maintainers.raitobezarius ];
nodes.machine =
{ ... }:
{
services.dolibarr = {
enable = true;
domain = "localhost";
nginx = {
forceSSL = false;
enableACME = false;
};
};
networking.firewall.allowedTCPPorts = [ 80 ];
};
testScript = ''
from html.parser import HTMLParser
start_all()
csrf_token = None
class TokenParser(HTMLParser):
def handle_starttag(self, tag, attrs):
attrs = dict(attrs) # attrs is an assoc list originally
if tag == 'input' and attrs.get('name') == 'token':
csrf_token = attrs.get('value')
print(f'[+] Caught CSRF token: {csrf_token}')
def handle_endtag(self, tag): pass
def handle_data(self, data): pass
machine.wait_for_unit("phpfpm-dolibarr.service")
machine.wait_for_unit("nginx.service")
machine.wait_for_open_port(80)
# Sanity checks on URLs.
# machine.succeed("curl -fL http://localhost/index.php")
# machine.succeed("curl -fL http://localhost/")
# Perform installation.
machine.succeed('curl -fL -X POST http://localhost/install/check.php -F selectlang=auto')
machine.succeed('curl -fL -X POST http://localhost/install/fileconf.php -F selectlang=auto')
# First time is to write the configuration file correctly.
machine.succeed('curl -fL -X POST http://localhost/install/step1.php -F "testpost=ok" -F "action=set" -F "selectlang=auto"')
# Now, we have a proper conf.php in $stateDir.
assert 'nixos' in machine.succeed("cat /var/lib/dolibarr/conf.php")
machine.succeed('curl -fL -X POST http://localhost/install/step2.php --data "testpost=ok&action=set&dolibarr_main_db_character_set=utf8&dolibarr_main_db_collation=utf8_unicode_ci&selectlang=auto"')
machine.succeed('curl -fL -X POST http://localhost/install/step4.php --data "testpost=ok&action=set&selectlang=auto"')
machine.succeed('curl -fL -X POST http://localhost/install/step5.php --data "testpost=ok&action=set&login=root&pass=hunter2&pass_verif=hunter2&selectlang=auto"')
# Now, we have installed the machine, let's verify we still have the right configuration.
assert 'nixos' in machine.succeed("cat /var/lib/dolibarr/conf.php")
# We do not want any redirect now as we have installed the machine.
machine.succeed('curl -f -X POST http://localhost')
# Test authentication to the webservice.
parser = TokenParser()
parser.feed(machine.succeed('curl -f -X GET http://localhost/index.php?mainmenu=login&username=root'))
machine.succeed(f'curl -f -X POST http://localhost/index.php?mainmenu=login&token={csrf_token}&username=root&password=hunter2')
'';
})

View file

@ -6,25 +6,24 @@ import ./make-test-python.nix ({ pkgs, ... }: {
{ ... }:
{
imports = [ ../modules/profiles/minimal.nix ];
networking.firewall.allowedTCPPorts = [ 8200 ];
services.minidlna = {
enable = true;
loglevel = "error";
mediaDirs = [
"PV,/tmp/stuff"
services.minidlna.enable = true;
services.minidlna.openFirewall = true;
services.minidlna.settings = {
log_level = "error";
media_dir = [
"PV,/tmp/stuff"
];
friendly_name = "rpi3";
root_container = "B";
notify_interval = 60;
album_art_names = [
"Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg"
"AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg"
"Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg"
];
friendlyName = "rpi3";
rootContainer = "B";
extraConfig =
''
album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg
album_art_names=AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg
album_art_names=Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg
notify_interval=60
'';
};
};
client = { ... }: { };
client = { ... }: { };
};
testScript =

View file

@ -15,13 +15,13 @@
stdenv.mkDerivation rec {
pname = "flycast";
version = "1.3";
version = "2.0";
src = fetchFromGitHub {
owner = "flyinghead";
repo = "flycast";
rev = "v${version}";
sha256 = "sha256-FAHm8Fu/yv2rJvWCY+g50TYH4zOT6rO7F+jTL2T6EOU=";
sha256 = "sha256-vSyLg2lAJBV7crKVbGRbi1PUuCwHF9GB/8pjMTlaigA=";
fetchSubmodules = true;
};

View file

@ -10,13 +10,13 @@
stdenv.mkDerivation rec {
pname = "pineapple-pictures";
version = "0.6.2";
version = "0.6.3";
src = fetchFromGitHub {
owner = "BLumia";
repo = "pineapple-pictures";
rev = version;
sha256 = "sha256-1fsEHyepmoZfNOFEnW6RQJyccOlQr5LTp8TjRqyXkcw";
sha256 = "sha256-9Nlrei3TxZr3tv0BtlfsKAvDJhQHgd21FzLnzitYF3U=";
};
nativeBuildInputs = [

View file

@ -7,20 +7,20 @@
buildGoModule rec {
pname = "arkade";
version = "0.8.38";
version = "0.8.39";
src = fetchFromGitHub {
owner = "alexellis";
repo = "arkade";
rev = version;
sha256 = "sha256-8C7aQCQ6kqHCGSktYS3djTlEuPyRnzb9LrXkqgfzDyY=";
sha256 = "sha256-ucM4Dl4ZeeZ6pCQ3qdf3Z88CWJIoreZWeo6ehKqXxI8=";
};
CGO_ENABLED = 0;
nativeBuildInputs = [ installShellFiles ];
vendorSha256 = "sha256-ok8NuqVFZtzjSLpgxQI03ISojfKdHPHWyikqwtceMlo=";
vendorSha256 = "sha256-TUaCqHbPEwhB2xS8RSoF7RCSkKFJzQKbuV1PbxApyMQ=";
# Exclude pkg/get: tests downloading of binaries which fail when sandbox=true
subPackages = [

View file

@ -2,6 +2,8 @@
, buildGoModule
, fetchFromGitHub
, installShellFiles
, kubeone
, testers
}:
buildGoModule rec {
@ -17,6 +19,12 @@ buildGoModule rec {
vendorSha256 = "sha256-w/uLR7wi28Ub7Nouxxg39NlD1OzyIE2oEP4D88Xbwu0=";
ldflags = [
"-s -w"
"-X k8c.io/kubeone/pkg/cmd.version=${version}"
"-X k8c.io/kubeone/pkg/cmd.date=unknown"
];
nativeBuildInputs = [
installShellFiles
];
@ -27,6 +35,11 @@ buildGoModule rec {
--zsh <($out/bin/kubeone completion zsh)
'';
passthru.tests.version = testers.testVersion {
package = kubeone;
command = "kubeone version";
};
meta = {
description = "Automate cluster operations on all your cloud, on-prem, edge, and IoT environments.";
homepage = "https://kubeone.io/";

View file

@ -98,14 +98,14 @@ let
} source;
source = rec {
version = "unstable-1.4.231";
version = "1.4.274";
# Needs submodules
src = fetchFromGitHub {
owner = "mumble-voip";
repo = "mumble";
rev = "9e0e274d6a9d8a9919267e747d05d0500d150560";
sha256 = "0whvb4nlf7gjf2v7wsaq0ir18mshhw5wi8c9q9qz43wnh42nn2qi";
rev = "cc73c7679b08158f91b02272efbb0e3e5dd9c9e4";
sha256 = "sha256-QXczSLDhWLE4CDvBJ7NtqfL52bZJDisFo04AMHnMuN8=";
fetchSubmodules = true;
};
};

View file

@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pname = "last";
version = "1406";
version = "1409";
src = fetchFromGitLab {
owner = "mcfrith";
repo = "last";
rev = version;
sha256 = "sha256-N1B9W++4SiMRMUjDi8ZexOWF/HQpN8BBPuDKYh4bCS8=";
sha256 = "sha256-AFK0va1HonSWJdzJLdLraiu4LhUCJFgq6qajbbPmHuY=";
};
nativeBuildInputs = [ unzip ];

View file

@ -0,0 +1,67 @@
{ lib
, stdenv
, fetchurl
, jdk
, jre
, ant
, makeWrapper
}:
stdenv.mkDerivation rec {
pname = "dataexplorer";
version = "3.6.2";
src = fetchurl {
url = "mirror://savannah/dataexplorer/dataexplorer-${version}-src.tar.gz";
sha256 = "sha256-2e8qeoJh7z/RIowMtAd8PGcMPck5H8iHqel6bW7EQ0E=";
};
nativeBuildInputs = [ ant makeWrapper ];
buildInputs = [ jdk ];
buildPhase = ''
ant -f build/build.xml dist
'';
doCheck = false;
# Missing dependencies (e.g. junit). Does not work.
#checkPhase = ''
# ant -f build/build.xml check
#'';
installPhase = ''
ant -Dprefix=$out/share/ -f build/build.xml install
# The sources contain a wrapper script in $out/share/DataExplorer/DataExplorer
# but it hardcodes bash shebang and does not pin the java path.
# So we create our own wrapper, using similar cmdline args as upstream.
mkdir -p $out/bin
makeWrapper ${jre}/bin/java $out/bin/DataExplorer \
--add-flags "-Dfile.encoding=UTF-8 -Xms64m -Xmx3092m -jar $out/share/DataExplorer/DataExplorer.jar" \
--set SWT_GTK3 0
makeWrapper ${jre}/bin/java $out/bin/DevicePropertiesEditor \
--add-flags "-Dfile.encoding=UTF-8 -Xms32m -Xmx512m -classpath $out/share/DataExplorer/DataExplorer.jar gde.ui.dialog.edit.DevicePropertiesEditor" \
--set SWT_GTK3 0 \
--set LIBOVERLAY_SCROLLBAR 0
install -Dvm644 build/misc/GNU_LINUX_JUNSI_ICHARER_DUO_UDEV_RULE/50-Junsi-iCharger-DUO.rules \
$out/etc/udev/rules.d/50-Junsi-iCharger-DUO.rules
install -Dvm644 build/misc/GNU_LINUX_SKYRC_UDEV_RULE/50-SkyRC-Charger.rules \
$out/etc/udev/rules.d/50-SkyRC-Charger.rules
'';
meta = with lib; {
description = "Graphical tool to analyze data, gathered from various hardware devices";
homepage = "https://www.nongnu.org/dataexplorer/index.html";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ panicgh ];
platforms = jdk.meta.platforms;
sourceProvenance = with sourceTypes; [
fromSource
binaryNativeCode # contains RXTXcomm (JNI library with *.so files)
binaryBytecode # contains thirdparty jar files, e.g. javax.json, org.glassfish.json
];
};
}

View file

@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pname = "cadical";
version = "1.4.1";
version = "1.5.0";
src = fetchFromGitHub {
owner = "arminbiere";
repo = "cadical";
rev = "rel-${version}";
sha256 = "0y44z3np4gssgdh4aj5qila7pshrbphycdxn2083i8ayyyjbxshp";
sha256 = "sha256-Po+pGoUwk1gtBqz4Sc/QQ52rRGbA2pATebX+KPYII5o=";
};
outputs = [ "out" "dev" "lib" ];

View file

@ -0,0 +1,29 @@
{ lib
, rustPlatform
, fetchFromGitHub
}:
rustPlatform.buildRustPackage rec {
pname = "swayest-workstyle";
version = "1.3.0";
src = fetchFromGitHub {
owner = "Lyr-7D1h";
repo = "swayest_workstyle";
rev = version;
sha256 = "sha256-LciTrYbmJV0y0H6QH88vTBXbDdDSx6FQtO4J/CFLjtY=";
};
cargoSha256 = "sha256-34Ij3Hd1JI6d1vhv1XomFc9SFoB/6pbS39upLk+NeQM=";
doCheck = false; # No tests
meta = with lib; {
description = "Map sway workspace names to icons defined depending on the windows inside of the workspace";
homepage = "https://github.com/Lyr-7D1h/swayest_workstyle";
license = licenses.mit;
platforms = platforms.linux;
maintainers = with maintainers; [ miangraham ];
mainProgram = "sworkstyle";
};
}

View file

@ -8,7 +8,7 @@
# This is an updater for unstable packages that should always use the latest
# commit.
{ url ? null # The git url, if empty it will be set to src.url
{ url ? null # The git url, if empty it will be set to src.gitRepoUrl
, branch ? null
, stableVersion ? false # Use version format according to RFC 107 (i.e. LAST_TAG+date=YYYY-MM-DD)
, tagPrefix ? "" # strip this prefix from a tag name when using stable version
@ -46,7 +46,7 @@ let
esac
done
# By default we set url to src.url
# By default we set url to src.gitRepoUrl
if [[ -z "$url" ]]; then
url="$(${nix}/bin/nix-instantiate $systemArg --eval -E \
"with import ./. {}; $UPDATE_NIX_ATTR_PATH.src.gitRepoUrl" \

View file

@ -5,7 +5,6 @@
, gnome-themes-extra
, gtk-engine-murrine
, sassc
, which
, tweaks ? [ ]
, size ? "standard"
}:
@ -14,9 +13,9 @@ let
validTweaks = [ "nord" "dracula" "black" "rimless" "normal" ];
unknownTweaks = lib.subtractLists validTweaks tweaks;
illegalMix = !(lib.elem "nord" tweaks) && !(lib.elem "dracula" tweaks);
illegalMix = (lib.elem "nord" tweaks) && (lib.elem "dracula" tweaks);
assertIllegal = lib.assertMsg illegalMix ''
assertIllegal = lib.assertMsg (!illegalMix) ''
Tweaks "nord" and "dracula" cannot be mixed. Tweaks: ${toString tweaks}
'';
@ -37,16 +36,16 @@ assert assertUnknown;
stdenvNoCC.mkDerivation rec {
pname = "catppuccin-gtk";
version = "unstable-2022-08-01";
version = "0.2.7";
src = fetchFromGitHub {
repo = "gtk";
owner = "catppuccin";
rev = "87a79fd2bf07accc694455df30a32a82b1b31f4f";
sha256 = "sha256-dKHTQva0BYkO6VPNfY/pzRn/V1ghX+tYqbnM9hTAMeE=";
rev = "v-${version}";
sha256 = "sha256-oTAfURHMWqlKHk4CNz5cn6vO/7GmQJM2rXXGDz2e+0w=";
};
nativeBuildInputs = [ gtk3 sassc which ];
nativeBuildInputs = [ gtk3 sassc ];
buildInputs = [ gnome-themes-extra ];
@ -61,7 +60,6 @@ stdenvNoCC.mkDerivation rec {
export HOME=$(mktemp -d)
mkdir -p $out/share/themes
bash install.sh -d $out/share/themes -t all \
${lib.optionalString (size != "") "-s ${size}"} \
${lib.optionalString (tweaks != []) "--tweaks " + builtins.toString tweaks}

View file

@ -5,14 +5,14 @@
stdenv.mkDerivation rec {
pname = "libjaylink";
version = "0.3.0";
version = "0.3.1";
src = fetchFromGitLab {
domain = "gitlab.zapb.de";
owner = "libjaylink";
repo = "libjaylink";
rev = version;
sha256 = "sha256-90obLaSE3oxrocyJWZ4+j4U4GuPIZEiiIQqenu4vsJg=";
sha256 = "sha256-odJDE1A0WZ9vBXPxaUdthjTgmbmbdHjbyY1PkaM4+vI=";
};
nativeBuildInputs = [ autoreconfHook pkg-config ];

View file

@ -1,20 +1,37 @@
{ lib, stdenv, fetchurl }:
{ lib, stdenv, fetchFromGitHub, fetchpatch, cmake }:
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "libspatialindex";
version = "1.8.5";
version = "1.9.3";
src = fetchurl {
url = "https://download.osgeo.org/libspatialindex/spatialindex-src-${version}.tar.gz";
sha256 = "1vxzm7kczwnb6qdmc0hb00z8ykx11zk3sb68gc7rch4vrfi4dakw";
src = fetchFromGitHub {
owner = "libspatialindex";
repo = "libspatialindex";
rev = finalAttrs.version;
hash = "sha256-zsvS0IkCXyuNLCQpccKdAsFKoq0l+y66ifXlTHLNTkc=";
};
enableParallelBuilding = true;
patches = [
# Allow building static libs
(fetchpatch {
name = "fix-static-lib-build.patch";
url = "https://github.com/libspatialindex/libspatialindex/commit/caee28d84685071da3ff3a4ea57ff0b6ae64fc87.patch";
hash = "sha256-nvTW/t9tw1ZLeycJY8nj7rQgZogxQb765Ca2b9NDvRo=";
})
];
meta = {
nativeBuildInputs = [ cmake ];
cmakeFlags = [
"-DSIDX_BUILD_TESTS=${if finalAttrs.doCheck then "ON" else "OFF"}"
];
doCheck = true;
meta = with lib; {
description = "Extensible spatial index library in C++";
homepage = "http://libspatialindex.github.io/";
license = lib.licenses.mit;
platforms = lib.platforms.unix;
homepage = "https://libspatialindex.org";
license = licenses.mit;
platforms = platforms.unix;
};
}
})

View file

@ -50,9 +50,6 @@ stdenv.mkDerivation rec {
'' + lib.optionalString stdenv.cc.isClang ''
substituteInPlace src/3rdparty/webkit/Source/WebCore/html/HTMLImageElement.cpp \
--replace 'optionalHeight > 0' 'optionalHeight != NULL'
substituteInPlace ./tools/linguist/linguist/messagemodel.cpp \
--replace 'm->comment()) >= 0' 'm->comment()) != NULL'
'';
patches =
@ -237,6 +234,6 @@ stdenv.mkDerivation rec {
license = lib.licenses.lgpl21Plus; # or gpl3
maintainers = with lib.maintainers; [ orivej lovek323 sander ];
platforms = lib.platforms.unix;
badPlatforms = [ "x86_64-darwin" ];
badPlatforms = [ "x86_64-darwin" "aarch64-darwin" ];
};
}

View file

@ -45,10 +45,6 @@ stdenv.mkDerivation rec {
install_name_tool -change libblas.dylib ${blas}/lib/libblas.dylib $out/lib/libarpack.dylib
'';
# disable stackprotector on aarch64-darwin for now
# https://github.com/NixOS/nixpkgs/issues/127608
hardeningDisable = lib.optionals (stdenv.isAarch64 && stdenv.isDarwin) [ "stackprotector" ];
meta = {
homepage = "https://github.com/opencollab/arpack-ng";
description = ''

View file

@ -27,11 +27,11 @@ let
inherit (python3Packages) python pyxdg wrapPython;
in stdenv.mkDerivation rec {
pname = "speech-dispatcher";
version = "0.11.1";
version = "0.11.2";
src = fetchurl {
url = "https://github.com/brailcom/speechd/releases/download/${version}/${pname}-${version}.tar.gz";
sha256 = "sha256-0doS7T2shPE3mbai7Dm6LTyiGoST9E3BhVvQupbC3cY=";
sha256 = "sha256-i0ZJkl5oy+GntMCge7BBznc4s1yQamAr+CmG2xqg82Q=";
};
patches = [

View file

@ -61,21 +61,6 @@ stdenv.mkDerivation rec {
)]
;
# disable stackprotector on aarch64-darwin for now
# https://github.com/NixOS/nixpkgs/issues/127608
#
# build error:
#
# /private/tmp/nix-build-sundials-6.3.0.drv-0/ccD2dUtR.s:21:15: error: index must be an integer in range [-256, 255].
# ldr x0, [x0, ___stack_chk_guard];momd
# ^
# /private/tmp/nix-build-sundials-6.3.0.drv-0/ccD2dUtR.s:46:15: error: index must be an integer in range [-256, 255].
# ldr x0, [x0, ___stack_chk_guard];momd
#
# See also a proposed solution: https://github.com/NixOS/nixpkgs/pull/151983
hardeningDisable = lib.optionals (stdenv.isAarch64 && stdenv.isDarwin) [ "stackprotector" ];
doCheck = true;
checkTarget = "test";

View file

@ -50,7 +50,7 @@ stdenv.mkDerivation rec {
'';
meta = with lib; {
broken = stdenv.isDarwin;
broken = stdenv.isDarwin; # see https://github.com/NixOS/nixpkgs/pull/189446 for partial fix
description = "A video processing framework with the future in mind";
homepage = "http://www.vapoursynth.com/";
license = licenses.lgpl21;

View file

@ -0,0 +1,31 @@
{ lib, fetchzip }:
let
pname = "cppreference-doc";
version = "2022.07.30";
ver = builtins.replaceStrings ["."] [""] version;
in fetchzip {
name = pname + "-" + version;
url = "https://github.com/PeterFeicht/${pname}/releases/download/v${ver}/html-book-${ver}.tar.xz";
sha256 = "sha256-gsYNpdxbWnmwcC9IJV1g+e0/s4Hoo5ig1MGoYPIHspw=";
stripRoot = false;
postFetch = ''
rm $out/cppreference-doxygen-local.tag.xml $out/cppreference-doxygen-web.tag.xml
mkdir -p $out/share/cppreference/doc
mv $out/reference $out/share/cppreference/doc/html
'';
passthru = { inherit pname version; };
meta = with lib; {
description = "C++ standard library reference";
homepage = "https://en.cppreference.com";
license = licenses.cc-by-sa-30;
maintainers = with maintainers; [ panicgh ];
platforms = platforms.all;
};
}

View file

@ -1,10 +1,10 @@
{ lib, fetchurl, makeDesktopItem, appimageTools }:
let
name = "saleae-logic-2";
version = "2.3.58";
version = "2.3.59";
src = fetchurl {
url = "https://downloads.saleae.com/logic2/Logic-${version}-master.AppImage";
sha256 = "sha256-WQa9J+rK71+T2IFUVpPLjkYfHy9GmZ9DZTBo+U4JKfo=";
sha256 = "sha256-jIu/ODVD/x+TjcVSGlOw6/JWESJYDKZQrJGMAix9wTY=";
};
desktopItem = makeDesktopItem {
inherit name;

View file

@ -8,13 +8,13 @@
stdenv.mkDerivation rec {
pname = "crawl${lib.optionalString tileMode "-tiles"}";
version = "0.28.0";
version = "0.29.0";
src = fetchFromGitHub {
owner = "crawl";
repo = "crawl";
rev = version;
sha256 = "sha256-pVEE3g+NDwpsrakyj4YIk53aE+LCiIaRhOqos4huh9A=";
sha256 = "sha256-SM8dSDV+88QGMqoFkITop1PHh9EakdgiV4tkXCw9pjM=";
};
# Patch hard-coded paths and remove force library builds

View file

@ -3,23 +3,23 @@
, useSteamRun ? true }:
let
rev = "6a1a59f687ac7b98698e2ebb97d82a94865e50f6";
rev = "6246fde6b54f8c7e340057fe2d940287c437153f";
in
buildDotnetModule rec {
pname = "XIVLauncher";
version = "1.0.0.9";
version = "1.0.1.0";
src = fetchFromGitHub {
owner = "goatcorp";
repo = "FFXIVQuickLauncher";
inherit rev;
sha256 = "sha256-jRyYeTg73W58OH2fWmuVkjxEdyPNqDGRbEZwxBMfdCo=";
sha256 = "sha256-sM909/ysrlwsiVSBrMo4cOZUWxjRA3ZSwlloGythOAY=";
};
nativeBuildInputs = [ copyDesktopItems ];
projectFile = "src/XIVLauncher.Core/XIVLauncher.Core.csproj";
nugetDeps = ./deps.nix; # File generated with `nuget-to-nix path/to/src > deps.nix`
nugetDeps = ./deps.nix; # File generated with `nix-build -A xivlauncher.passthru.fetch-deps`
dotnetFlags = [
"--runtime linux-x64"

View file

@ -3,8 +3,8 @@
(fetchNuGet { pname = "CheapLoc"; version = "1.1.6"; sha256 = "1m6cgx9yh7h3vrq2d4f99xyvsxc9jvz8zjq1q14qgylfmyq4hx4l"; })
(fetchNuGet { pname = "Config.Net"; version = "4.19.0"; sha256 = "17iv0vy0693s6d8626lbz3w1ppn5abn77aaki7h4qi4izysizgim"; })
(fetchNuGet { pname = "Downloader"; version = "2.2.8"; sha256 = "0farwh3pc6m8hsgqywigdpcb4gr2m9myyxm2idzjmhhkzfqghj28"; })
(fetchNuGet { pname = "Facepunch.Steamworks"; version = "2.3.3"; sha256 = "1r3m7cyzfy8ms9xxfa13xcwha02yk22givkaamw166im89m8wqyc"; })
(fetchNuGet { pname = "goaaats.NativeLibraryLoader"; version = "4.9.0-beta1-g70f642e82e"; sha256 = "1bjjgsw4ry9cz8dzsgwx428hn06wms194pqz8nclwrqcwfx7gmxk"; })
(fetchNuGet { pname = "goaaats.Steamworks"; version = "2.3.4"; sha256 = "1khxkkjvh6af60rxc13bacxn85amdfzr8z0b9a6gfg6m1fnmlkss"; })
(fetchNuGet { pname = "goaaats.Veldrid"; version = "4.9.0-beta1-g70f642e82e"; sha256 = "0b35bn4190hxbvrwsygpbpg00gnrj6crxyk8b0d7ian611v4jj0m"; })
(fetchNuGet { pname = "goaaats.Veldrid.ImageSharp"; version = "4.9.0-beta1-g70f642e82e"; sha256 = "1zihi2n9qz18kfkz4qnj3412bfsqvx49809hqkknixdrgn8323i2"; })
(fetchNuGet { pname = "goaaats.Veldrid.MetalBindings"; version = "4.9.0-beta1-g70f642e82e"; sha256 = "13cs5jr8bpkrkzziz8b71l3npr14shxryrpsiw0zm7jcx69vg2qf"; })
@ -13,13 +13,11 @@
(fetchNuGet { pname = "goaaats.Veldrid.StartupUtilities"; version = "4.9.0-beta1-g70f642e82e"; sha256 = "03r3x9h0fyb07d6d28ny6r5s688m50xc0lgc6zf2cy684kfnvmp5"; })
(fetchNuGet { pname = "ImGui.NET"; version = "1.87.2"; sha256 = "0rv0n18fvz1gbh45crhzn1f8xw8zkc8qyiyj91vajjcry8mq1x7q"; })
(fetchNuGet { pname = "KeySharp"; version = "1.0.5"; sha256 = "1ic10v0a174fw6w89iyg4yzji36bsj15573y676cj5n09n6s75d4"; })
(fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-x64"; version = "6.0.6"; sha256 = "0ndah9cqkgswhi60wrnni10j1d2hdg8jljij83lk1wbfqbng86jm"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.Analyzers"; version = "3.3.3"; sha256 = "09m4cpry8ivm9ga1abrxmvw16sslxhy2k5sl14zckhqb1j164im6"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.BannedApiAnalyzers"; version = "3.3.3"; sha256 = "1z6x0d8lpcfjr3sxy25493i17vvcg5bsay6c03qan6mnj5aqzw2k"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.Common"; version = "4.0.1"; sha256 = "0axjv1nhk1z9d4c51d9yxdp09l8yqqnqaifhqcwnxnv0r4y5cka9"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp"; version = "4.0.1"; sha256 = "1h6jfifg7pw2vacpdds4v4jqnaydg9b108irf315wzx6rh8yv9cb"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.NetAnalyzers"; version = "6.0.0"; sha256 = "06zy947m5lrbwb684g42ijb07r5jsqycvfnphc6cqfdrfnzqv6k9"; })
(fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-x64"; version = "6.0.6"; sha256 = "0fjbjh7yxqc9h47ix37y963xi9f9y99jvl26cw3x3kvjlb8x0bgj"; })
(fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.0.1"; sha256 = "01al6cfxp68dscl15z7rxfw9zvhm64dncsw09a1vmdkacsa2v6lr"; })
(fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.1.0"; sha256 = "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm"; })
(fetchNuGet { pname = "Microsoft.NETCore.Targets"; version = "1.0.1"; sha256 = "0ppdkwy6s9p7x9jix3v4402wb171cdiibq7js7i13nxpdky7074p"; })
@ -169,6 +167,7 @@
(fetchNuGet { pname = "System.Security.Permissions"; version = "6.0.0"; sha256 = "0jsl4xdrkqi11iwmisi1r2f2qn5pbvl79mzq877gndw6ans2zhzw"; })
(fetchNuGet { pname = "System.Security.Principal"; version = "4.3.0"; sha256 = "12cm2zws06z4lfc4dn31iqv7072zyi4m910d4r6wm8yx85arsfxf"; })
(fetchNuGet { pname = "System.Security.Principal.Windows"; version = "4.3.0"; sha256 = "00a0a7c40i3v4cb20s2cmh9csb5jv2l0frvnlzyfxh848xalpdwr"; })
(fetchNuGet { pname = "System.Security.Principal.Windows"; version = "5.0.0"; sha256 = "1mpk7xj76lxgz97a5yg93wi8lj0l8p157a5d50mmjy3gbz1904q8"; })
(fetchNuGet { pname = "System.Security.Principal.Windows"; version = "6.0.0-preview.5.21301.5"; sha256 = "1q3iikvjcfrm5p89p1j7qlw1szvryq680qypk023wgy9phmlwi57"; })
(fetchNuGet { pname = "System.Text.Encoding"; version = "4.0.11"; sha256 = "1dyqv0hijg265dwxg6l7aiv74102d6xjiwplh2ar1ly6xfaa4iiw"; })
(fetchNuGet { pname = "System.Text.Encoding"; version = "4.3.0"; sha256 = "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr"; })

View file

@ -3,9 +3,9 @@
(lilypond.override {
inherit guile;
}).overrideAttrs (oldAttrs: rec {
version = "2.23.11";
version = "2.23.12";
src = fetchurl {
url = "https://lilypond.org/download/sources/v${lib.versions.majorMinor version}/lilypond-${version}.tar.gz";
sha256 = "sha256-4VjcuZvRmpPmiZ42zyk9xYPlsSN6kEsBSRe30P+raQ8=";
sha256 = "sha256-SLZ9/Jybltd8+1HANk8pTGHRb7MuZSJJDDY/S4Kwz/k=";
};
})

View file

@ -0,0 +1,41 @@
{ stdenv, lib, fetchFromGitHub, nixosTests, stateDir ? "/var/lib/dolibarr" }:
stdenv.mkDerivation rec {
pname = "dolibarr";
version = "15.0.3";
src = fetchFromGitHub {
owner = "Dolibarr";
repo = "dolibarr";
rev = version;
sha256 = "sha256-HMOYj93ZvqM0FQjt313yuGj/r9ELqQlnNkg/CxrBjRM=";
};
dontBuild = true;
postPatch = ''
find . -type f -name "*.php" -print0 | xargs -0 sed -i 's|/etc/dolibarr|${stateDir}|g'
substituteInPlace htdocs/filefunc.inc.php \
--replace '//$conffile = ' '$conffile = ' \
--replace '//$conffiletoshow = ' '$conffiletoshow = '
substituteInPlace htdocs/install/inc.php \
--replace '//$conffile = ' '$conffile = ' \
--replace '//$conffiletoshow = ' '$conffiletoshow = '
'';
installPhase = ''
mkdir -p "$out"
cp -r * $out
'';
passthru.tests = { inherit (nixosTests) dolibarr; };
meta = with lib; {
description = "A enterprise resource planning (ERP) and customer relationship manager (CRM) server";
homepage = "https://dolibarr.org/";
license = licenses.gpl3Plus;
maintainers = [ maintainers.raitobezarius ];
};
}

View file

@ -10,13 +10,13 @@
stdenv.mkDerivation rec {
pname = "fcitx5-lua";
version = "5.0.9";
version = "5.0.10";
src = fetchFromGitHub {
owner = "fcitx";
repo = pname;
rev = version;
sha256 = "sha256-XeRMPbatXUudxo1EICL7z8V3slxkzo27f+D4xLjRtU4=";
sha256 = "sha256-0ESgQv8kyc+zv/tDZtBZ+QhFFswD80ApwswFlJs8tOU=";
};
nativeBuildInputs = [

View file

@ -13,13 +13,13 @@
mkDerivation rec {
pname = "fcitx5-qt";
version = "5.0.14";
version = "5.0.15";
src = fetchFromGitHub {
owner = "fcitx";
repo = pname;
rev = version;
sha256 = "sha256-LmE6HgNLoJmgJtJmubAIjFi8Xpnmw3hgqJh6HUcakzg=";
sha256 = "sha256-yQFYol4rEXmQBJWoc96yWJkJc3RVP6U964tdJdkGelU=";
};
preConfigure = ''

View file

@ -3645,6 +3645,8 @@ with pkgs;
dokuwiki = callPackage ../servers/web-apps/dokuwiki { };
dolibarr = callPackage ../servers/web-apps/dolibarr { };
doppler = callPackage ../tools/security/doppler {};
dosage = callPackage ../applications/graphics/dosage { };
@ -15441,6 +15443,8 @@ with pkgs;
avr8burnomat = callPackage ../development/misc/avr8-burn-omat { };
cppreference-doc = callPackage ../development/misc/cppreference-doc { };
sourceFromHead = callPackage ../build-support/source-from-head-fun.nix {};
jruby = callPackage ../development/interpreters/jruby { };
@ -20216,8 +20220,8 @@ with pkgs;
withUtils = false;
});
libva = callPackage ../development/libraries/libva { };
libva-minimal = libva.override { minimal = true; };
libva-minimal = callPackage ../development/libraries/libva { minimal = true; };
libva = libva-minimal.override { minimal = false; };
libva-utils = callPackage ../development/libraries/libva/utils.nix { };
libva1 = callPackage ../development/libraries/libva/1.nix { };
@ -28444,6 +28448,8 @@ with pkgs;
swaynag-battery = callPackage ../applications/misc/swaynag-battery {};
swayest-workstyle = callPackage ../applications/window-managers/sway/swayest-workstyle { };
tiramisu = callPackage ../applications/misc/tiramisu { };
rlaunch = callPackage ../applications/misc/rlaunch {
@ -34880,6 +34886,8 @@ with pkgs;
csxcad = callPackage ../applications/science/electronics/csxcad { };
dataexplorer = callPackage ../applications/science/electronics/dataexplorer { };
diylc = callPackage ../applications/science/electronics/diylc { };
flatcam = callPackage ../applications/science/electronics/flatcam { };