mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-02 20:03:16 +00:00
Merge staging-next into staging
This commit is contained in:
commit
22ea1b9be2
@ -1480,6 +1480,12 @@
|
||||
githubId = 848609;
|
||||
name = "Michael Bishop";
|
||||
};
|
||||
cmacrae = {
|
||||
email = "hi@cmacr.ae";
|
||||
github = "cmacrae";
|
||||
githubId = 3392199;
|
||||
name = "Calum MacRae";
|
||||
};
|
||||
cmcdragonkai = {
|
||||
email = "roger.qiu@matrix.ai";
|
||||
github = "cmcdragonkai";
|
||||
@ -8263,6 +8269,12 @@
|
||||
githubId = 483465;
|
||||
name = "Mateusz Wykurz";
|
||||
};
|
||||
wulfsta = {
|
||||
email = "wulfstawulfsta@gmail.com";
|
||||
github = "Wulfsta";
|
||||
githubId = 13378502;
|
||||
name = "Wulfsta";
|
||||
};
|
||||
wyvie = {
|
||||
email = "elijahrum@gmail.com";
|
||||
github = "wyvie";
|
||||
|
@ -31,6 +31,7 @@
|
||||
<xref linkend="opt-services.xserver.windowManager.twm.enable"/> = true;
|
||||
<xref linkend="opt-services.xserver.windowManager.icewm.enable"/> = true;
|
||||
<xref linkend="opt-services.xserver.windowManager.i3.enable"/> = true;
|
||||
<xref linkend="opt-services.xserver.windowManager.herbstluftwm.enable"/> = true;
|
||||
</programlisting>
|
||||
</para>
|
||||
<para>
|
||||
|
@ -290,6 +290,27 @@ php.override {
|
||||
has been set to <literal>true</literal>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <literal>systemd-networkd</literal> option
|
||||
<literal>systemd.network.networks.<name>.dhcp.CriticalConnection</literal>
|
||||
has been removed following upstream systemd's deprecation of the same. It is recommended to use
|
||||
<literal>systemd.network.networks.<name>.networkConfig.KeepConfiguration</literal> instead.
|
||||
See <citerefentry><refentrytitle>systemd.network</refentrytitle>
|
||||
<manvolnum>5</manvolnum></citerefentry> for details.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <literal>systemd-networkd</literal> option
|
||||
<literal>systemd.network.networks._name_.dhcpConfig</literal>
|
||||
has been renamed to
|
||||
<xref linkend="opt-systemd.network.networks._name_.dhcpV4Config"/>
|
||||
following upstream systemd's documentation change.
|
||||
See <citerefentry><refentrytitle>systemd.network</refentrytitle>
|
||||
<manvolnum>5</manvolnum></citerefentry> for details.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
|
||||
|
@ -9,9 +9,7 @@ let
|
||||
HomepageLocation = cfg.homepageLocation;
|
||||
DefaultSearchProviderSearchURL = cfg.defaultSearchProviderSearchURL;
|
||||
DefaultSearchProviderSuggestURL = cfg.defaultSearchProviderSuggestURL;
|
||||
ExtensionInstallForcelist = map (extension:
|
||||
"${extension};https://clients2.google.com/service/update2/crx"
|
||||
) cfg.extensions;
|
||||
ExtensionInstallForcelist = cfg.extensions;
|
||||
};
|
||||
in
|
||||
|
||||
@ -28,7 +26,11 @@ in
|
||||
List of chromium extensions to install.
|
||||
For list of plugins ids see id in url of extensions on
|
||||
<link xlink:href="https://chrome.google.com/webstore/category/extensions">chrome web store</link>
|
||||
page.
|
||||
page. To install a chromium extension not included in the chrome web
|
||||
store, append to the extension id a semicolon ";" followed by a URL
|
||||
pointing to an Update Manifest XML file. See
|
||||
<link xlink:href="https://www.chromium.org/administrators/policy-list-3#ExtensionInstallForcelist">ExtensionInstallForcelist</link>
|
||||
for additional details.
|
||||
'';
|
||||
default = [];
|
||||
example = literalExample ''
|
||||
|
@ -45,7 +45,32 @@ in
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
environment.etc.xonshrc.text = cfg.config;
|
||||
environment.etc.xonshrc.text = ''
|
||||
# /etc/xonshrc: DO NOT EDIT -- this file has been generated automatically.
|
||||
|
||||
|
||||
if not ''${...}.get('__NIXOS_SET_ENVIRONMENT_DONE'):
|
||||
# The NixOS environment and thereby also $PATH
|
||||
# haven't been fully set up at this point. But
|
||||
# `source-bash` below requires `bash` to be on $PATH,
|
||||
# so add an entry with bash's location:
|
||||
$PATH.add('${pkgs.bash}/bin')
|
||||
|
||||
# Stash xonsh's ls alias, so that we don't get a collision
|
||||
# with Bash's ls alias from environment.shellAliases:
|
||||
_ls_alias = aliases.pop('ls', None)
|
||||
|
||||
# Source the NixOS environment config.
|
||||
source-bash "${config.system.build.setEnvironment}"
|
||||
|
||||
# Restore xonsh's ls alias, overriding that from Bash (if any).
|
||||
if _ls_alias is not None:
|
||||
aliases['ls'] = _ls_alias
|
||||
del _ls_alias
|
||||
|
||||
|
||||
${cfg.config}
|
||||
'';
|
||||
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
|
||||
|
@ -1,9 +1,7 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
cfg = config.services.prosody;
|
||||
|
||||
sslOpts = { ... }: {
|
||||
@ -30,8 +28,21 @@ let
|
||||
};
|
||||
};
|
||||
|
||||
discoOpts = {
|
||||
options = {
|
||||
url = mkOption {
|
||||
type = types.str;
|
||||
description = "URL of the endpoint you want to make discoverable";
|
||||
};
|
||||
description = mkOption {
|
||||
type = types.str;
|
||||
description = "A short description of the endpoint you want to advertise";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
moduleOpts = {
|
||||
# Generally required
|
||||
# Required for compliance with https://compliance.conversations.im/about/
|
||||
roster = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
@ -69,6 +80,18 @@ let
|
||||
description = "Keep multiple clients in sync";
|
||||
};
|
||||
|
||||
csi = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Implements the CSI protocol that allows clients to report their active/inactive state to the server";
|
||||
};
|
||||
|
||||
cloud_notify = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Push notifications to inform users of new messages or other pertinent information even when they have no XMPP clients online";
|
||||
};
|
||||
|
||||
pep = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
@ -89,10 +112,22 @@ let
|
||||
|
||||
vcard = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
default = false;
|
||||
description = "Allow users to set vCards";
|
||||
};
|
||||
|
||||
vcard_legacy = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Converts users profiles and Avatars between old and new formats";
|
||||
};
|
||||
|
||||
bookmarks = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Allows interop between older clients that use XEP-0048: Bookmarks in its 1.0 version and recent clients which use it in PEP";
|
||||
};
|
||||
|
||||
# Nice to have
|
||||
version = mkOption {
|
||||
type = types.bool;
|
||||
@ -126,10 +161,16 @@ let
|
||||
|
||||
mam = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
default = true;
|
||||
description = "Store messages in an archive and allow users to access it";
|
||||
};
|
||||
|
||||
smacks = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Allow a client to resume a disconnected session, and prevent message loss";
|
||||
};
|
||||
|
||||
# Admin interfaces
|
||||
admin_adhoc = mkOption {
|
||||
type = types.bool;
|
||||
@ -137,6 +178,18 @@ let
|
||||
description = "Allows administration via an XMPP client that supports ad-hoc commands";
|
||||
};
|
||||
|
||||
http_files = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Serve static files from a directory over HTTP";
|
||||
};
|
||||
|
||||
proxy65 = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Enables a file transfer proxy service which clients behind NAT can use";
|
||||
};
|
||||
|
||||
admin_telnet = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
@ -156,12 +209,6 @@ let
|
||||
description = "Enable WebSocket support";
|
||||
};
|
||||
|
||||
http_files = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Serve static files from a directory over HTTP";
|
||||
};
|
||||
|
||||
# Other specific functionality
|
||||
limits = mkOption {
|
||||
type = types.bool;
|
||||
@ -210,13 +257,6 @@ let
|
||||
default = false;
|
||||
description = "Legacy authentication. Only used by some old clients and bots";
|
||||
};
|
||||
|
||||
proxy65 = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Enables a file transfer proxy service which clients behind NAT can use";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
toLua = x:
|
||||
@ -235,6 +275,153 @@ let
|
||||
};
|
||||
'';
|
||||
|
||||
mucOpts = { ... }: {
|
||||
options = {
|
||||
domain = mkOption {
|
||||
type = types.str;
|
||||
description = "Domain name of the MUC";
|
||||
};
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
description = "The name to return in service discovery responses for the MUC service itself";
|
||||
default = "Prosody Chatrooms";
|
||||
};
|
||||
restrictRoomCreation = mkOption {
|
||||
type = types.enum [ true false "admin" "local" ];
|
||||
default = false;
|
||||
description = "Restrict room creation to server admins";
|
||||
};
|
||||
maxHistoryMessages = mkOption {
|
||||
type = types.int;
|
||||
default = 20;
|
||||
description = "Specifies a limit on what each room can be configured to keep";
|
||||
};
|
||||
roomLocking = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Enables room locking, which means that a room must be
|
||||
configured before it can be used. Locked rooms are invisible
|
||||
and cannot be entered by anyone but the creator
|
||||
'';
|
||||
};
|
||||
roomLockTimeout = mkOption {
|
||||
type = types.int;
|
||||
default = 300;
|
||||
description = ''
|
||||
Timout after which the room is destroyed or unlocked if not
|
||||
configured, in seconds
|
||||
'';
|
||||
};
|
||||
tombstones = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
When a room is destroyed, it leaves behind a tombstone which
|
||||
prevents the room being entered or recreated. It also allows
|
||||
anyone who was not in the room at the time it was destroyed
|
||||
to learn about it, and to update their bookmarks. Tombstones
|
||||
prevents the case where someone could recreate a previously
|
||||
semi-anonymous room in order to learn the real JIDs of those
|
||||
who often join there.
|
||||
'';
|
||||
};
|
||||
tombstoneExpiry = mkOption {
|
||||
type = types.int;
|
||||
default = 2678400;
|
||||
description = ''
|
||||
This settings controls how long a tombstone is considered
|
||||
valid. It defaults to 31 days. After this time, the room in
|
||||
question can be created again.
|
||||
'';
|
||||
};
|
||||
|
||||
vcard_muc = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Adds the ability to set vCard for Multi User Chat rooms";
|
||||
};
|
||||
|
||||
# Extra parameters. Defaulting to prosody default values.
|
||||
# Adding them explicitly to make them visible from the options
|
||||
# documentation.
|
||||
#
|
||||
# See https://prosody.im/doc/modules/mod_muc for more details.
|
||||
roomDefaultPublic = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "If set, the MUC rooms will be public by default.";
|
||||
};
|
||||
roomDefaultMembersOnly = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "If set, the MUC rooms will only be accessible to the members by default.";
|
||||
};
|
||||
roomDefaultModerated = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "If set, the MUC rooms will be moderated by default.";
|
||||
};
|
||||
roomDefaultPublicJids = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "If set, the MUC rooms will display the public JIDs by default.";
|
||||
};
|
||||
roomDefaultChangeSubject = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "If set, the rooms will display the public JIDs by default.";
|
||||
};
|
||||
roomDefaultHistoryLength = mkOption {
|
||||
type = types.int;
|
||||
default = 20;
|
||||
description = "Number of history message sent to participants by default.";
|
||||
};
|
||||
roomDefaultLanguage = mkOption {
|
||||
type = types.str;
|
||||
default = "en";
|
||||
description = "Default room language.";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
uploadHttpOpts = { ... }: {
|
||||
options = {
|
||||
domain = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
description = "Domain name for the http-upload service";
|
||||
};
|
||||
uploadFileSizeLimit = mkOption {
|
||||
type = types.str;
|
||||
default = "50 * 1024 * 1024";
|
||||
description = "Maximum file size, in bytes. Defaults to 50MB.";
|
||||
};
|
||||
uploadExpireAfter = mkOption {
|
||||
type = types.str;
|
||||
default = "60 * 60 * 24 * 7";
|
||||
description = "Max age of a file before it gets deleted, in seconds.";
|
||||
};
|
||||
userQuota = mkOption {
|
||||
type = types.nullOr types.int;
|
||||
default = null;
|
||||
example = 1234;
|
||||
description = ''
|
||||
Maximum size of all uploaded files per user, in bytes. There
|
||||
will be no quota if this option is set to null.
|
||||
'';
|
||||
};
|
||||
httpUploadPath = mkOption {
|
||||
type = types.str;
|
||||
description = ''
|
||||
Directory where the uploaded files will be stored. By
|
||||
default, uploaded files are put in a sub-directory of the
|
||||
default Prosody storage path (usually /var/lib/prosody).
|
||||
'';
|
||||
default = "/var/lib/prosody";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
vHostOpts = { ... }: {
|
||||
|
||||
options = {
|
||||
@ -283,6 +470,27 @@ in
|
||||
description = "Whether to enable the prosody server";
|
||||
};
|
||||
|
||||
xmppComplianceSuite = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
The XEP-0423 defines a set of recommended XEPs to implement
|
||||
for a server. It's generally a good idea to implement this
|
||||
set of extensions if you want to provide your users with a
|
||||
good XMPP experience.
|
||||
|
||||
This NixOS module aims to provide a "advanced server"
|
||||
experience as per defined in the XEP-0423[1] specification.
|
||||
|
||||
Setting this option to true will prevent you from building a
|
||||
NixOS configuration which won't comply with this standard.
|
||||
You can explicitely decide to ignore this standard if you
|
||||
know what you are doing by setting this option to false.
|
||||
|
||||
[1] https://xmpp.org/extensions/xep-0423.html
|
||||
'';
|
||||
};
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
description = "Prosody package to use";
|
||||
@ -302,6 +510,12 @@ in
|
||||
default = "/var/lib/prosody";
|
||||
};
|
||||
|
||||
disco_items = mkOption {
|
||||
type = types.listOf (types.submodule discoOpts);
|
||||
default = [];
|
||||
description = "List of discoverable items you want to advertise.";
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "prosody";
|
||||
@ -320,6 +534,31 @@ in
|
||||
description = "Allow account creation";
|
||||
};
|
||||
|
||||
# HTTP server-related options
|
||||
httpPorts = mkOption {
|
||||
type = types.listOf types.int;
|
||||
description = "Listening HTTP ports list for this service.";
|
||||
default = [ 5280 ];
|
||||
};
|
||||
|
||||
httpInterfaces = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [ "*" "::" ];
|
||||
description = "Interfaces on which the HTTP server will listen on.";
|
||||
};
|
||||
|
||||
httpsPorts = mkOption {
|
||||
type = types.listOf types.int;
|
||||
description = "Listening HTTPS ports list for this service.";
|
||||
default = [ 5281 ];
|
||||
};
|
||||
|
||||
httpsInterfaces = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [ "*" "::" ];
|
||||
description = "Interfaces on which the HTTPS server will listen on.";
|
||||
};
|
||||
|
||||
c2sRequireEncryption = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
@ -387,6 +626,26 @@ in
|
||||
description = "Addtional path in which to look find plugins/modules";
|
||||
};
|
||||
|
||||
uploadHttp = mkOption {
|
||||
description = ''
|
||||
Configures the Prosody builtin HTTP server to handle user uploads.
|
||||
'';
|
||||
type = types.nullOr (types.submodule uploadHttpOpts);
|
||||
default = null;
|
||||
example = {
|
||||
domain = "uploads.my-xmpp-example-host.org";
|
||||
};
|
||||
};
|
||||
|
||||
muc = mkOption {
|
||||
type = types.listOf (types.submodule mucOpts);
|
||||
default = [ ];
|
||||
example = [ {
|
||||
domain = "conference.my-xmpp-example-host.org";
|
||||
} ];
|
||||
description = "Multi User Chat (MUC) configuration";
|
||||
};
|
||||
|
||||
virtualHosts = mkOption {
|
||||
|
||||
description = "Define the virtual hosts";
|
||||
@ -443,9 +702,44 @@ in
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
assertions = let
|
||||
genericErrMsg = ''
|
||||
|
||||
Having a server not XEP-0423-compliant might make your XMPP
|
||||
experience terrible. See the NixOS manual for further
|
||||
informations.
|
||||
|
||||
If you know what you're doing, you can disable this warning by
|
||||
setting config.services.prosody.xmppComplianceSuite to false.
|
||||
'';
|
||||
errors = [
|
||||
{ assertion = (builtins.length cfg.muc > 0) || !cfg.xmppComplianceSuite;
|
||||
message = ''
|
||||
You need to setup at least a MUC domain to comply with
|
||||
XEP-0423.
|
||||
'' + genericErrMsg;}
|
||||
{ assertion = cfg.uploadHttp != null || !cfg.xmppComplianceSuite;
|
||||
message = ''
|
||||
You need to setup the uploadHttp module through
|
||||
config.services.prosody.uploadHttp to comply with
|
||||
XEP-0423.
|
||||
'' + genericErrMsg;}
|
||||
];
|
||||
in errors;
|
||||
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
|
||||
environment.etc."prosody/prosody.cfg.lua".text = ''
|
||||
environment.etc."prosody/prosody.cfg.lua".text =
|
||||
let
|
||||
httpDiscoItems = if (cfg.uploadHttp != null)
|
||||
then [{ url = cfg.uploadHttp.domain; description = "HTTP upload endpoint";}]
|
||||
else [];
|
||||
mucDiscoItems = builtins.foldl'
|
||||
(acc: muc: [{ url = muc.domain; description = "${muc.domain} MUC endpoint";}] ++ acc)
|
||||
[]
|
||||
cfg.muc;
|
||||
discoItems = cfg.disco_items ++ httpDiscoItems ++ mucDiscoItems;
|
||||
in ''
|
||||
|
||||
pidfile = "/run/prosody/prosody.pid"
|
||||
|
||||
@ -472,6 +766,10 @@ in
|
||||
${ lib.concatStringsSep "\n" (map (x: "${toLua x};") cfg.extraModules)}
|
||||
};
|
||||
|
||||
disco_items = {
|
||||
${ lib.concatStringsSep "\n" (builtins.map (x: ''{ "${x.url}", "${x.description}"};'') discoItems)}
|
||||
};
|
||||
|
||||
allow_registration = ${toLua cfg.allowRegistration}
|
||||
|
||||
c2s_require_encryption = ${toLua cfg.c2sRequireEncryption}
|
||||
@ -486,6 +784,42 @@ in
|
||||
|
||||
authentication = ${toLua cfg.authentication}
|
||||
|
||||
http_interfaces = ${toLua cfg.httpInterfaces}
|
||||
|
||||
https_interfaces = ${toLua cfg.httpsInterfaces}
|
||||
|
||||
http_ports = ${toLua cfg.httpPorts}
|
||||
|
||||
https_ports = ${toLua cfg.httpsPorts}
|
||||
|
||||
${lib.concatMapStrings (muc: ''
|
||||
Component ${toLua muc.domain} "muc"
|
||||
modules_enabled = { "muc_mam"; ${optionalString muc.vcard_muc ''"vcard_muc";'' } }
|
||||
name = ${toLua muc.name}
|
||||
restrict_room_creation = ${toLua muc.restrictRoomCreation}
|
||||
max_history_messages = ${toLua muc.maxHistoryMessages}
|
||||
muc_room_locking = ${toLua muc.roomLocking}
|
||||
muc_room_lock_timeout = ${toLua muc.roomLockTimeout}
|
||||
muc_tombstones = ${toLua muc.tombstones}
|
||||
muc_tombstone_expiry = ${toLua muc.tombstoneExpiry}
|
||||
muc_room_default_public = ${toLua muc.roomDefaultPublic}
|
||||
muc_room_default_members_only = ${toLua muc.roomDefaultMembersOnly}
|
||||
muc_room_default_moderated = ${toLua muc.roomDefaultModerated}
|
||||
muc_room_default_public_jids = ${toLua muc.roomDefaultPublicJids}
|
||||
muc_room_default_change_subject = ${toLua muc.roomDefaultChangeSubject}
|
||||
muc_room_default_history_length = ${toLua muc.roomDefaultHistoryLength}
|
||||
muc_room_default_language = ${toLua muc.roomDefaultLanguage}
|
||||
|
||||
'') cfg.muc}
|
||||
|
||||
${ lib.optionalString (cfg.uploadHttp != null) ''
|
||||
Component ${toLua cfg.uploadHttp.domain} "http_upload"
|
||||
http_upload_file_size_limit = ${cfg.uploadHttp.uploadFileSizeLimit}
|
||||
http_upload_expire_after = ${cfg.uploadHttp.uploadExpireAfter}
|
||||
${lib.optionalString (cfg.uploadHttp.userQuota != null) "http_upload_quota = ${toLua cfg.uploadHttp.userQuota}"}
|
||||
http_upload_path = ${toLua cfg.uploadHttp.httpUploadPath}
|
||||
''}
|
||||
|
||||
${ cfg.extraConfig }
|
||||
|
||||
${ lib.concatStringsSep "\n" (lib.mapAttrsToList (n: v: ''
|
||||
@ -522,9 +856,22 @@ in
|
||||
PIDFile = "/run/prosody/prosody.pid";
|
||||
ExecStart = "${cfg.package}/bin/prosodyctl start";
|
||||
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||
|
||||
MemoryDenyWriteExecute = true;
|
||||
PrivateDevices = true;
|
||||
PrivateMounts = true;
|
||||
PrivateTmp = true;
|
||||
ProtectControlGroups = true;
|
||||
ProtectHome = true;
|
||||
ProtectHostname = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectKernelTunables = true;
|
||||
RestrictNamespaces = true;
|
||||
RestrictRealtime = true;
|
||||
RestrictSUIDSGID = true;
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
meta.doc = ./prosody.xml;
|
||||
}
|
||||
|
88
nixos/modules/services/networking/prosody.xml
Normal file
88
nixos/modules/services/networking/prosody.xml
Normal file
@ -0,0 +1,88 @@
|
||||
<chapter xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
version="5.0"
|
||||
xml:id="module-services-prosody">
|
||||
<title>Prosody</title>
|
||||
<para>
|
||||
<link xlink:href="https://prosody.im/">Prosody</link> is an open-source, modern XMPP server.
|
||||
</para>
|
||||
<section xml:id="module-services-prosody-basic-usage">
|
||||
<title>Basic usage</title>
|
||||
|
||||
<para>
|
||||
A common struggle for most XMPP newcomers is to find the right set
|
||||
of XMPP Extensions (XEPs) to setup. Forget to activate a few of
|
||||
those and your XMPP experience might turn into a nightmare!
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The XMPP community tackles this problem by creating a meta-XEP
|
||||
listing a decent set of XEPs you should implement. This meta-XEP
|
||||
is issued every year, the 2020 edition being
|
||||
<link xlink:href="https://xmpp.org/extensions/xep-0423.html">XEP-0423</link>.
|
||||
</para>
|
||||
<para>
|
||||
The NixOS Prosody module will implement most of these recommendend XEPs out of
|
||||
the box. That being said, two components still require some
|
||||
manual configuration: the
|
||||
<link xlink:href="https://xmpp.org/extensions/xep-0045.html">Multi User Chat (MUC)</link>
|
||||
and the <link xlink:href="https://xmpp.org/extensions/xep-0363.html">HTTP File Upload</link> ones.
|
||||
You'll need to create a DNS subdomain for each of those. The current convention is to name your
|
||||
MUC endpoint <literal>conference.example.org</literal> and your HTTP upload domain <literal>upload.example.org</literal>.
|
||||
</para>
|
||||
<para>
|
||||
A good configuration to start with, including a
|
||||
<link xlink:href="https://xmpp.org/extensions/xep-0045.html">Multi User Chat (MUC)</link>
|
||||
endpoint as well as a <link xlink:href="https://xmpp.org/extensions/xep-0363.html">HTTP File Upload</link>
|
||||
endpoint will look like this:
|
||||
<programlisting>
|
||||
services.prosody = {
|
||||
<link linkend="opt-services.prosody.enable">enable</link> = true;
|
||||
<link linkend="opt-services.prosody.admins">admins</link> = [ "root@example.org" ];
|
||||
<link linkend="opt-services.prosody.ssl.cert">ssl.cert</link> = "/var/lib/acme/example.org/fullchain.pem";
|
||||
<link linkend="opt-services.prosody.ssl.key">ssl.key</link> = "/var/lib/acme/example.org/key.pem";
|
||||
<link linkend="opt-services.prosody.virtualHosts">virtualHosts</link>."example.org" = {
|
||||
<link linkend="opt-services.prosody.virtualHosts._name__.enabled">enabled</link> = true;
|
||||
<link linkend="opt-services.prosody.virtualHosts._name__.domain">domain</link> = "example.org";
|
||||
<link linkend="opt-services.prosody.virtualHosts._name__.ssl.cert">ssl.cert</link> = "/var/lib/acme/example.org/fullchain.pem";
|
||||
<link linkend="opt-services.prosody.virtualHosts._name__.ssl.key">ssl.key</link> = "/var/lib/acme/example.org/key.pem";
|
||||
};
|
||||
<link linkend="opt-services.prosody.muc">muc</link> = [ {
|
||||
<link linkend="opt-services.prosody.muc">domain</link> = "conference.example.org";
|
||||
} ];
|
||||
<link linkend="opt-services.prosody.uploadHttp">uploadHttp</link> = {
|
||||
<link linkend="opt-services.prosody.uploadHttp.domain">domain</link> = "upload.example.org";
|
||||
};
|
||||
};</programlisting>
|
||||
</para>
|
||||
</section>
|
||||
<section xml:id="module-services-prosody-letsencrypt">
|
||||
<title>Let's Encrypt Configuration</title>
|
||||
<para>
|
||||
As you can see in the code snippet from the
|
||||
<link linkend="module-services-prosody-basic-usage">previous section</link>,
|
||||
you'll need a single TLS certificate covering your main endpoint,
|
||||
the MUC one as well as the HTTP Upload one. We can generate such a
|
||||
certificate by leveraging the ACME
|
||||
<link linkend="opt-security.acme.certs._name_.extraDomains">extraDomains</link> module option.
|
||||
</para>
|
||||
<para>
|
||||
Provided the setup detailed in the previous section, you'll need the following acme configuration to generate
|
||||
a TLS certificate for the three endponits:
|
||||
<programlisting>
|
||||
security.acme = {
|
||||
<link linkend="opt-security.acme.email">email</link> = "root@example.org";
|
||||
<link linkend="opt-security.acme.acceptTerms">acceptTerms</link> = true;
|
||||
<link linkend="opt-security.acme.certs">certs</link> = {
|
||||
"example.org" = {
|
||||
<link linkend="opt-security.acme.certs._name_.webroot">webroot</link> = "/var/www/example.org";
|
||||
<link linkend="opt-security.acme.certs._name_.email">email</link> = "root@example.org";
|
||||
<link linkend="opt-security.acme.certs._name_.extraDomains">extraDomains."conference.example.org"</link> = null;
|
||||
<link linkend="opt-security.acme.certs._name_.extraDomains">extraDomains."upload.example.org"</link> = null;
|
||||
};
|
||||
};
|
||||
};</programlisting>
|
||||
</para>
|
||||
</section>
|
||||
</chapter>
|
@ -62,7 +62,6 @@ in {
|
||||
systemd.services.thelounge = {
|
||||
description = "The Lounge web IRC client";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
environment = { THELOUNGE_HOME = dataDir; };
|
||||
preStart = "ln -sf ${pkgs.writeText "config.js" configJsData} ${dataDir}/config.js";
|
||||
serviceConfig = {
|
||||
User = "thelounge";
|
||||
|
@ -83,6 +83,14 @@ in {
|
||||
'';
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "root";
|
||||
example = "wheel";
|
||||
description =
|
||||
"Group to grant acces to the Yggdrasil control socket.";
|
||||
};
|
||||
|
||||
openMulticastPort = mkOption {
|
||||
type = bool;
|
||||
default = false;
|
||||
@ -144,8 +152,9 @@ in {
|
||||
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||
Restart = "always";
|
||||
|
||||
Group = cfg.group;
|
||||
RuntimeDirectory = "yggdrasil";
|
||||
RuntimeDirectoryMode = "0700";
|
||||
RuntimeDirectoryMode = "0750";
|
||||
BindReadOnlyPaths = mkIf configFileProvided
|
||||
[ "${cfg.configFile}" ];
|
||||
|
||||
|
@ -205,7 +205,7 @@ let
|
||||
"IPv6HopLimit" "IPv4ProxyARP" "IPv6ProxyNDP" "IPv6ProxyNDPAddress"
|
||||
"IPv6PrefixDelegation" "IPv6MTUBytes" "Bridge" "Bond" "VRF" "VLAN"
|
||||
"IPVLAN" "MACVLAN" "VXLAN" "Tunnel" "ActiveSlave" "PrimarySlave"
|
||||
"ConfigureWithoutCarrier" "Xfrm"
|
||||
"ConfigureWithoutCarrier" "Xfrm" "KeepConfiguration"
|
||||
])
|
||||
# Note: For DHCP the values both, none, v4, v6 are deprecated
|
||||
(assertValueOneOf "DHCP" ["yes" "no" "ipv4" "ipv6" "both" "none" "v4" "v6"])
|
||||
@ -228,6 +228,7 @@ let
|
||||
(assertValueOneOf "ActiveSlave" boolValues)
|
||||
(assertValueOneOf "PrimarySlave" boolValues)
|
||||
(assertValueOneOf "ConfigureWithoutCarrier" boolValues)
|
||||
(assertValueOneOf "KeepConfiguration" (boolValues ++ ["static" "dhcp-on-stop" "dhcp"]))
|
||||
];
|
||||
|
||||
checkAddress = checkUnitConfig "Address" [
|
||||
@ -274,15 +275,16 @@ let
|
||||
])
|
||||
];
|
||||
|
||||
checkDhcp = checkUnitConfig "DHCP" [
|
||||
checkDhcpV4 = checkUnitConfig "DHCPv4" [
|
||||
(assertOnlyFields [
|
||||
"UseDNS" "UseNTP" "UseMTU" "Anonymize" "SendHostname" "UseHostname"
|
||||
"Hostname" "UseDomains" "UseRoutes" "UseTimezone" "CriticalConnection"
|
||||
"ClientIdentifier" "VendorClassIdentifier" "UserClass" "DUIDType"
|
||||
"DUIDRawData" "IAID" "RequestBroadcast" "RouteMetric" "RouteTable"
|
||||
"ListenPort" "RapidCommit"
|
||||
"UseDNS" "RoutesToDNS" "UseNTP" "UseMTU" "Anonymize" "SendHostname" "UseHostname"
|
||||
"Hostname" "UseDomains" "UseRoutes" "UseTimezone"
|
||||
"ClientIdentifier" "VendorClassIdentifier" "UserClass" "MaxAttempts"
|
||||
"DUIDType" "DUIDRawData" "IAID" "RequestBroadcast" "RouteMetric" "RouteTable"
|
||||
"ListenPort" "SendRelease"
|
||||
])
|
||||
(assertValueOneOf "UseDNS" boolValues)
|
||||
(assertValueOneOf "RoutesToDNS" boolValues)
|
||||
(assertValueOneOf "UseNTP" boolValues)
|
||||
(assertValueOneOf "UseMTU" boolValues)
|
||||
(assertValueOneOf "Anonymize" boolValues)
|
||||
@ -291,13 +293,50 @@ let
|
||||
(assertValueOneOf "UseDomains" ["yes" "no" "route"])
|
||||
(assertValueOneOf "UseRoutes" boolValues)
|
||||
(assertValueOneOf "UseTimezone" boolValues)
|
||||
(assertValueOneOf "CriticalConnection" boolValues)
|
||||
(assertMinimum "MaxAttempts" 0)
|
||||
(assertValueOneOf "RequestBroadcast" boolValues)
|
||||
(assertInt "RouteTable")
|
||||
(assertMinimum "RouteTable" 0)
|
||||
(assertValueOneOf "RapidCommit" boolValues)
|
||||
(assertValueOneOf "SendRelease" boolValues)
|
||||
];
|
||||
|
||||
checkDhcpV6 = checkUnitConfig "DHCPv6" [
|
||||
(assertOnlyFields [
|
||||
"UseDns" "UseNTP" "RapidCommit" "ForceDHCPv6PDOtherInformation"
|
||||
"PrefixDelegationHint"
|
||||
])
|
||||
(assertValueOneOf "UseDNS" boolValues)
|
||||
(assertValueOneOf "UseNTP" boolValues)
|
||||
(assertValueOneOf "RapidCommit" boolValues)
|
||||
(assertValueOneOf "ForceDHCPv6PDOtherInformation" boolValues)
|
||||
];
|
||||
|
||||
checkIpv6PrefixDelegation = checkUnitConfig "IPv6PrefixDelegation" [
|
||||
(assertOnlyFields [
|
||||
"Managed" "OtherInformation" "RouterLifetimeSec"
|
||||
"RouterPreference" "EmitDNS" "DNS" "EmitDomains" "Domains"
|
||||
"DNSLifetimeSec"
|
||||
])
|
||||
(assertValueOneOf "Managed" boolValues)
|
||||
(assertValueOneOf "OtherInformation" boolValues)
|
||||
(assertValueOneOf "RouterPreference" ["high" "medium" "low" "normal" "default"])
|
||||
(assertValueOneOf "EmitDNS" boolValues)
|
||||
(assertValueOneOf "EmitDomains" boolValues)
|
||||
(assertMinimum "DNSLifetimeSec" 0)
|
||||
];
|
||||
|
||||
checkIpv6Prefix = checkUnitConfig "IPv6Prefix" [
|
||||
(assertOnlyFields [
|
||||
"AddressAutoconfiguration" "OnLink" "Prefix"
|
||||
"PreferredLifetimeSec" "ValidLifetimeSec"
|
||||
])
|
||||
(assertValueOneOf "AddressAutoconfiguration" boolValues)
|
||||
(assertValueOneOf "OnLink" boolValues)
|
||||
(assertMinimum "PreferredLifetimeSec" 0)
|
||||
(assertMinimum "ValidLifetimeSec" 0)
|
||||
];
|
||||
|
||||
|
||||
checkDhcpServer = checkUnitConfig "DHCPServer" [
|
||||
(assertOnlyFields [
|
||||
"PoolOffset" "PoolSize" "DefaultLeaseTimeSec" "MaxLeaseTimeSec"
|
||||
@ -621,6 +660,22 @@ let
|
||||
};
|
||||
};
|
||||
|
||||
ipv6PrefixOptions = {
|
||||
options = {
|
||||
ipv6PrefixConfig = mkOption {
|
||||
default = {};
|
||||
example = { Prefix = "fd00::/64"; };
|
||||
type = types.addCheck (types.attrsOf unitOption) checkIpv6Prefix;
|
||||
description = ''
|
||||
Each attribute in this set specifies an option in the
|
||||
<literal>[IPv6Prefix]</literal> section of the unit. See
|
||||
<citerefentry><refentrytitle>systemd.network</refentrytitle>
|
||||
<manvolnum>5</manvolnum></citerefentry> for details.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
networkOptions = commonNetworkOptions // {
|
||||
|
||||
@ -636,13 +691,55 @@ let
|
||||
'';
|
||||
};
|
||||
|
||||
# systemd.network.networks.*.dhcpConfig has been deprecated in favor of ….dhcpV4Config
|
||||
# Produce a nice warning message so users know it is gone.
|
||||
dhcpConfig = mkOption {
|
||||
visible = false;
|
||||
apply = _: throw "The option `systemd.network.networks.*.dhcpConfig` can no longer be used since it's been removed. Please use `systemd.network.networks.*.dhcpV4Config` instead.";
|
||||
};
|
||||
|
||||
dhcpV4Config = mkOption {
|
||||
default = {};
|
||||
example = { UseDNS = true; UseRoutes = true; };
|
||||
type = types.addCheck (types.attrsOf unitOption) checkDhcp;
|
||||
type = types.addCheck (types.attrsOf unitOption) checkDhcpV4;
|
||||
description = ''
|
||||
Each attribute in this set specifies an option in the
|
||||
<literal>[DHCP]</literal> section of the unit. See
|
||||
<literal>[DHCPv4]</literal> section of the unit. See
|
||||
<citerefentry><refentrytitle>systemd.network</refentrytitle>
|
||||
<manvolnum>5</manvolnum></citerefentry> for details.
|
||||
'';
|
||||
};
|
||||
|
||||
dhcpV6Config = mkOption {
|
||||
default = {};
|
||||
example = { UseDNS = true; UseRoutes = true; };
|
||||
type = types.addCheck (types.attrsOf unitOption) checkDhcpV6;
|
||||
description = ''
|
||||
Each attribute in this set specifies an option in the
|
||||
<literal>[DHCPv6]</literal> section of the unit. See
|
||||
<citerefentry><refentrytitle>systemd.network</refentrytitle>
|
||||
<manvolnum>5</manvolnum></citerefentry> for details.
|
||||
'';
|
||||
};
|
||||
|
||||
ipv6PrefixDelegationConfig = mkOption {
|
||||
default = {};
|
||||
example = { EmitDNS = true; Managed = true; OtherInformation = true; };
|
||||
type = types.addCheck (types.attrsOf unitOption) checkIpv6PrefixDelegation;
|
||||
description = ''
|
||||
Each attribute in this set specifies an option in the
|
||||
<literal>[IPv6PrefixDelegation]</literal> section of the unit. See
|
||||
<citerefentry><refentrytitle>systemd.network</refentrytitle>
|
||||
<manvolnum>5</manvolnum></citerefentry> for details.
|
||||
'';
|
||||
};
|
||||
|
||||
ipv6Prefixes = mkOption {
|
||||
default = [];
|
||||
example = { AddressAutoconfiguration = true; OnLink = true; };
|
||||
type = with types; listOf (submodule ipv6PrefixOptions);
|
||||
description = ''
|
||||
A list of ipv6Prefix sections to be added to the unit. See
|
||||
<citerefentry><refentrytitle>systemd.network</refentrytitle>
|
||||
<manvolnum>5</manvolnum></citerefentry> for details.
|
||||
'';
|
||||
@ -973,11 +1070,26 @@ let
|
||||
${concatStringsSep "\n" (map (s: "Tunnel=${s}") def.tunnel)}
|
||||
${concatStringsSep "\n" (map (s: "Xfrm=${s}") def.xfrm)}
|
||||
|
||||
${optionalString (def.dhcpConfig != { }) ''
|
||||
[DHCP]
|
||||
${attrsToSection def.dhcpConfig}
|
||||
${optionalString (def.dhcpV4Config != { }) ''
|
||||
[DHCPv4]
|
||||
${attrsToSection def.dhcpV4Config}
|
||||
|
||||
''}
|
||||
${optionalString (def.dhcpV6Config != {}) ''
|
||||
[DHCPv6]
|
||||
${attrsToSection def.dhcpV6Config}
|
||||
|
||||
''}
|
||||
${optionalString (def.ipv6PrefixDelegationConfig != {}) ''
|
||||
[IPv6PrefixDelegation]
|
||||
${attrsToSection def.ipv6PrefixDelegationConfig}
|
||||
|
||||
''}
|
||||
${flip concatMapStrings def.ipv6Prefixes (x: ''
|
||||
[IPv6Prefix]
|
||||
${attrsToSection x.ipv6PrefixConfig}
|
||||
|
||||
'')}
|
||||
${optionalString (def.dhcpServerConfig != { }) ''
|
||||
[DHCPServer]
|
||||
${attrsToSection def.dhcpServerConfig}
|
||||
@ -1054,6 +1166,7 @@ in
|
||||
};
|
||||
|
||||
config = mkMerge [
|
||||
|
||||
# .link units are honored by udev, no matter if systemd-networkd is enabled or not.
|
||||
{
|
||||
systemd.network.units = mapAttrs' (n: v: nameValuePair "${n}.link" (linkToUnit n v)) cfg.links;
|
||||
|
@ -1033,6 +1033,7 @@ in
|
||||
systemd.services.systemd-journald.stopIfChanged = false;
|
||||
systemd.targets.local-fs.unitConfig.X-StopOnReconfiguration = true;
|
||||
systemd.targets.remote-fs.unitConfig.X-StopOnReconfiguration = true;
|
||||
systemd.targets.network-online.wantedBy = [ "multi-user.target" ];
|
||||
systemd.services.systemd-binfmt.wants = [ "proc-sys-fs-binfmt_misc.mount" ];
|
||||
|
||||
# Don't bother with certain units in containers.
|
||||
|
@ -546,7 +546,7 @@ in
|
||||
|
||||
Note that this option might require to do some adjustments to the container configuration,
|
||||
e.g. you might want to set
|
||||
<varname>systemd.network.networks.$interface.dhcpConfig.ClientIdentifier</varname> to "mac"
|
||||
<varname>systemd.network.networks.$interface.dhcpV4Config.ClientIdentifier</varname> to "mac"
|
||||
if you use <varname>macvlans</varname> option.
|
||||
This way dhcp client identifier will be stable between the container restarts.
|
||||
|
||||
|
@ -111,6 +111,7 @@ in rec {
|
||||
(onFullSupported "nixos.tests.networking.scripted.sit")
|
||||
(onFullSupported "nixos.tests.networking.scripted.static")
|
||||
(onFullSupported "nixos.tests.networking.scripted.vlan")
|
||||
(onFullSupported "nixos.tests.systemd-networkd-ipv6-prefix-delegation")
|
||||
(onFullSupported "nixos.tests.nfs3.simple")
|
||||
(onFullSupported "nixos.tests.nfs4.simple")
|
||||
(onFullSupported "nixos.tests.openssh")
|
||||
|
@ -314,9 +314,9 @@ in rec {
|
||||
lapp = makeClosure ({ pkgs, ... }:
|
||||
{ services.httpd.enable = true;
|
||||
services.httpd.adminAddr = "foo@example.org";
|
||||
services.httpd.enablePHP = true;
|
||||
services.postgresql.enable = true;
|
||||
services.postgresql.package = pkgs.postgresql;
|
||||
environment.systemPackages = [ pkgs.php ];
|
||||
});
|
||||
};
|
||||
}
|
||||
|
@ -302,6 +302,7 @@ in
|
||||
systemd-networkd-vrf = handleTest ./systemd-networkd-vrf.nix {};
|
||||
systemd-networkd = handleTest ./systemd-networkd.nix {};
|
||||
systemd-networkd-dhcpserver = handleTest ./systemd-networkd-dhcpserver.nix {};
|
||||
systemd-networkd-ipv6-prefix-delegation = handleTest ./systemd-networkd-ipv6-prefix-delegation.nix {};
|
||||
systemd-nspawn = handleTest ./systemd-nspawn.nix {};
|
||||
pdns-recursor = handleTest ./pdns-recursor.nix {};
|
||||
taskserver = handleTest ./taskserver.nix {};
|
||||
|
295
nixos/tests/systemd-networkd-ipv6-prefix-delegation.nix
Normal file
295
nixos/tests/systemd-networkd-ipv6-prefix-delegation.nix
Normal file
@ -0,0 +1,295 @@
|
||||
# This test verifies that we can request and assign IPv6 prefixes from upstream
|
||||
# (e.g. ISP) routers.
|
||||
# The setup consits of three VMs. One for the ISP, as your residential router
|
||||
# and the third as a client machine in the residential network.
|
||||
#
|
||||
# There are two VLANs in this test:
|
||||
# - VLAN 1 is the connection between the ISP and the router
|
||||
# - VLAN 2 is the connection between the router and the client
|
||||
|
||||
import ./make-test-python.nix ({pkgs, ...}: {
|
||||
name = "systemd-networkd-ipv6-prefix-delegation";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ andir ];
|
||||
};
|
||||
nodes = {
|
||||
|
||||
# The ISP's routers job is to delegate IPv6 prefixes via DHCPv6. Like with
|
||||
# regular IPv6 auto-configuration it will also emit IPv6 router
|
||||
# advertisements (RAs). Those RA's will not carry a prefix but in contrast
|
||||
# just set the "Other" flag to indicate to the receiving nodes that they
|
||||
# should attempt DHCPv6.
|
||||
#
|
||||
# Note: On the ISPs device we don't really care if we are using networkd in
|
||||
# this example. That being said we can't use it (yet) as networkd doesn't
|
||||
# implement the serving side of DHCPv6. We will use ISC's well aged dhcpd6
|
||||
# for that task.
|
||||
isp = { lib, pkgs, ... }: {
|
||||
virtualisation.vlans = [ 1 ];
|
||||
networking = {
|
||||
useDHCP = false;
|
||||
firewall.enable = false;
|
||||
interfaces.eth1.ipv4.addresses = lib.mkForce []; # no need for legacy IP
|
||||
interfaces.eth1.ipv6.addresses = lib.mkForce [
|
||||
{ address = "2001:DB8::"; prefixLength = 64; }
|
||||
];
|
||||
};
|
||||
|
||||
# Since we want to program the routes that we delegate to the "customer"
|
||||
# into our routing table we must have a way to gain the required privs.
|
||||
# This security wrapper will do in our test setup.
|
||||
#
|
||||
# DO NOT COPY THIS TO PRODUCTION AS IS. Think about it at least twice.
|
||||
# Everyone on the "isp" machine will be able to add routes to the kernel.
|
||||
security.wrappers.add-dhcpd-lease = {
|
||||
source = pkgs.writeShellScript "add-dhcpd-lease" ''
|
||||
exec ${pkgs.iproute}/bin/ip -6 route replace "$1" via "$2"
|
||||
'';
|
||||
capabilities = "cap_net_admin+ep";
|
||||
};
|
||||
services = {
|
||||
# Configure the DHCPv6 server
|
||||
#
|
||||
# We will hand out /48 prefixes from the subnet 2001:DB8:F000::/36.
|
||||
# That gives us ~8k prefixes. That should be enough for this test.
|
||||
#
|
||||
# Since (usually) you will not receive a prefix with the router
|
||||
# advertisements we also hand out /128 leases from the range
|
||||
# 2001:DB8:0000:0000:FFFF::/112.
|
||||
dhcpd6 = {
|
||||
enable = true;
|
||||
interfaces = [ "eth1" ];
|
||||
extraConfig = ''
|
||||
subnet6 2001:DB8::/36 {
|
||||
range6 2001:DB8:0000:0000:FFFF:: 2001:DB8:0000:0000:FFFF::FFFF;
|
||||
prefix6 2001:DB8:F000:: 2001:DB8:FFFF:: /48;
|
||||
}
|
||||
|
||||
# This is the secret sauce. We have to extract the prefix and the
|
||||
# next hop when commiting the lease to the database. dhcpd6
|
||||
# (rightfully) has not concept of adding routes to the systems
|
||||
# routing table. It really depends on the setup.
|
||||
#
|
||||
# In a production environment your DHCPv6 server is likely not the
|
||||
# router. You might want to consider BGP, custom NetConf calls, …
|
||||
# in those cases.
|
||||
on commit {
|
||||
set IP = pick-first-value(binary-to-ascii(16, 16, ":", substring(option dhcp6.ia-na, 16, 16)), "n/a");
|
||||
set Prefix = pick-first-value(binary-to-ascii(16, 16, ":", suffix(option dhcp6.ia-pd, 16)), "n/a");
|
||||
set PrefixLength = pick-first-value(binary-to-ascii(10, 8, ":", substring(suffix(option dhcp6.ia-pd, 17), 0, 1)), "n/a");
|
||||
log(concat(IP, " ", Prefix, " ", PrefixLength));
|
||||
execute("/run/wrappers/bin/add-dhcpd-lease", concat(Prefix,"/",PrefixLength), IP);
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
# Finally we have to set up the router advertisements. While we could be
|
||||
# using networkd or bird for this task `radvd` is probably the most
|
||||
# venerable of them all. It was made explicitly for this purpose and
|
||||
# the configuration is much more straightforward than what networkd
|
||||
# requires.
|
||||
# As outlined above we will have to set the `Managed` flag as otherwise
|
||||
# the clients will not know if they should do DHCPv6. (Some do
|
||||
# anyway/always)
|
||||
radvd = {
|
||||
enable = true;
|
||||
config = ''
|
||||
interface eth1 {
|
||||
AdvSendAdvert on;
|
||||
AdvManagedFlag on;
|
||||
AdvOtherConfigFlag off; # we don't really have DNS or NTP or anything like that to distribute
|
||||
prefix ::/64 {
|
||||
AdvOnLink on;
|
||||
AdvAutonomous on;
|
||||
};
|
||||
};
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
# This will be our (residential) router that receives the IPv6 prefix (IA_PD)
|
||||
# and /128 (IA_NA) allocation.
|
||||
#
|
||||
# Here we will actually start using networkd.
|
||||
router = {
|
||||
virtualisation.vlans = [ 1 2 ];
|
||||
systemd.services.systemd-networkd.environment.SYSTEMD_LOG_LEVEL = "debug";
|
||||
|
||||
boot.kernel.sysctl = {
|
||||
# we want to forward packets from the ISP to the client and back.
|
||||
"net.ipv6.conf.all.forwarding" = 1;
|
||||
};
|
||||
|
||||
networking = {
|
||||
useNetworkd = true;
|
||||
useDHCP = false;
|
||||
# Consider enabling this in production and generating firewall rules
|
||||
# for fowarding/input from the configured interfaces so you do not have
|
||||
# to manage multiple places
|
||||
firewall.enable = false;
|
||||
};
|
||||
|
||||
systemd.network = {
|
||||
networks = {
|
||||
# systemd-networkd will load the first network unit file
|
||||
# that matches, ordered lexiographically by filename.
|
||||
# /etc/systemd/network/{40-eth1,99-main}.network already
|
||||
# exists. This network unit must be loaded for the test,
|
||||
# however, hence why this network is named such.
|
||||
|
||||
# Configuration of the interface to the ISP.
|
||||
# We must request accept RAs and request the PD prefix.
|
||||
"01-eth1" = {
|
||||
name = "eth1";
|
||||
networkConfig = {
|
||||
Description = "ISP interface";
|
||||
IPv6AcceptRA = true;
|
||||
#DHCP = false; # no need for legacy IP
|
||||
};
|
||||
linkConfig = {
|
||||
# We care about this interface when talking about being "online".
|
||||
# If this interface is in the `routable` state we can reach
|
||||
# others and they should be able to reach us.
|
||||
RequiredForOnline = "routable";
|
||||
};
|
||||
# This configures the DHCPv6 client part towards the ISPs DHCPv6 server.
|
||||
dhcpV6Config = {
|
||||
# We have to include a request for a prefix in our DHCPv6 client
|
||||
# request packets.
|
||||
# Otherwise the upstream DHCPv6 server wouldn't know if we want a
|
||||
# prefix or not. Note: On some installation it makes sense to
|
||||
# always force that option on the DHPCv6 server since there are
|
||||
# certain CPEs that are just not setting this field but happily
|
||||
# accept the delegated prefix.
|
||||
PrefixDelegationHint = "::/48";
|
||||
};
|
||||
ipv6PrefixDelegationConfig = {
|
||||
# Let networkd know that we would very much like to use DHCPv6
|
||||
# to obtain the "managed" information. Not sure why they can't
|
||||
# just take that from the upstream RAs.
|
||||
Managed = true;
|
||||
};
|
||||
};
|
||||
|
||||
# Interface to the client. Here we should redistribute a /64 from
|
||||
# the prefix we received from the ISP.
|
||||
"01-eth2" = {
|
||||
name = "eth2";
|
||||
networkConfig = {
|
||||
Description = "Client interface";
|
||||
# the client shouldn't be allowed to send us RAs, that would be weird.
|
||||
IPv6AcceptRA = false;
|
||||
|
||||
# Just delegate prefixes from the DHCPv6 PD pool.
|
||||
# If you also want to distribute a local ULA prefix you want to
|
||||
# set this to `yes` as that includes both static prefixes as well
|
||||
# as PD prefixes.
|
||||
IPv6PrefixDelegation = "dhcpv6";
|
||||
};
|
||||
# finally "act as router" (according to systemd.network(5))
|
||||
ipv6PrefixDelegationConfig = {
|
||||
RouterLifetimeSec = 300; # required as otherwise no RA's are being emitted
|
||||
|
||||
# In a production environment you should consider setting these as well:
|
||||
#EmitDNS = true;
|
||||
#EmitDomains = true;
|
||||
#DNS= = "fe80::1"; # or whatever "well known" IP your router will have on the inside.
|
||||
};
|
||||
|
||||
# This adds a "random" ULA prefix to the interface that is being
|
||||
# advertised to the clients.
|
||||
# Not used in this test.
|
||||
# ipv6Prefixes = [
|
||||
# {
|
||||
# ipv6PrefixConfig = {
|
||||
# AddressAutoconfiguration = true;
|
||||
# PreferredLifetimeSec = 1800;
|
||||
# ValidLifetimeSec = 1800;
|
||||
# };
|
||||
# }
|
||||
# ];
|
||||
};
|
||||
|
||||
# finally we are going to add a static IPv6 unique local address to
|
||||
# the "lo" interface. This will serve as ICMPv6 echo target to
|
||||
# verify connectivity from the client to the router.
|
||||
"01-lo" = {
|
||||
name = "lo";
|
||||
addresses = [
|
||||
{ addressConfig.Address = "FD42::1/128"; }
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# make the network-online target a requirement, we wait for it in our test script
|
||||
systemd.targets.network-online.wantedBy = [ "multi-user.target" ];
|
||||
};
|
||||
|
||||
# This is the client behind the router. We should be receving router
|
||||
# advertisements for both the ULA and the delegated prefix.
|
||||
# All we have to do is boot with the default (networkd) configuration.
|
||||
client = {
|
||||
virtualisation.vlans = [ 2 ];
|
||||
systemd.services.systemd-networkd.environment.SYSTEMD_LOG_LEVEL = "debug";
|
||||
networking = {
|
||||
useNetworkd = true;
|
||||
useDHCP = false;
|
||||
};
|
||||
|
||||
# make the network-online target a requirement, we wait for it in our test script
|
||||
systemd.targets.network-online.wantedBy = [ "multi-user.target" ];
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
# First start the router and wait for it it reach a state where we are
|
||||
# certain networkd is up and it is able to send out RAs
|
||||
router.start()
|
||||
router.wait_for_unit("systemd-networkd.service")
|
||||
|
||||
# After that we can boot the client and wait for the network online target.
|
||||
# Since we only care about IPv6 that should not involve waiting for legacy
|
||||
# IP leases.
|
||||
client.start()
|
||||
client.wait_for_unit("network-online.target")
|
||||
|
||||
# the static address on the router should not be reachable
|
||||
client.wait_until_succeeds("ping -6 -c 1 FD42::1")
|
||||
|
||||
# the global IP of the ISP router should still not be a reachable
|
||||
router.fail("ping -6 -c 1 2001:DB8::")
|
||||
|
||||
# Once we have internal connectivity boot up the ISP
|
||||
isp.start()
|
||||
|
||||
# Since for the ISP "being online" should have no real meaning we just
|
||||
# wait for the target where all the units have been started.
|
||||
# It probably still takes a few more seconds for all the RA timers to be
|
||||
# fired etc..
|
||||
isp.wait_for_unit("multi-user.target")
|
||||
|
||||
# wait until the uplink interface has a good status
|
||||
router.wait_for_unit("network-online.target")
|
||||
router.wait_until_succeeds("ping -6 -c1 2001:DB8::")
|
||||
|
||||
# shortly after that the client should have received it's global IPv6
|
||||
# address and thus be able to ping the ISP
|
||||
client.wait_until_succeeds("ping -6 -c1 2001:DB8::")
|
||||
|
||||
# verify that we got a globally scoped address in eth1 from the
|
||||
# documentation prefix
|
||||
ip_output = client.succeed("ip --json -6 address show dev eth1")
|
||||
|
||||
import json
|
||||
|
||||
ip_json = json.loads(ip_output)[0]
|
||||
assert any(
|
||||
addr["local"].upper().startswith("2001:DB8:")
|
||||
for addr in ip_json["addr_info"]
|
||||
if addr["scope"] == "global"
|
||||
)
|
||||
'';
|
||||
})
|
@ -1,27 +1,80 @@
|
||||
import ../make-test-python.nix {
|
||||
name = "prosody";
|
||||
let
|
||||
cert = pkgs: pkgs.runCommandNoCC "selfSignedCerts" { buildInputs = [ pkgs.openssl ]; } ''
|
||||
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -subj '/CN=example.com/CN=uploads.example.com/CN=conference.example.com'
|
||||
mkdir -p $out
|
||||
cp key.pem cert.pem $out
|
||||
'';
|
||||
createUsers = pkgs: pkgs.writeScriptBin "create-prosody-users" ''
|
||||
#!${pkgs.bash}/bin/bash
|
||||
set -e
|
||||
|
||||
# Creates and set password for the 2 xmpp test users.
|
||||
#
|
||||
# Doing that in a bash script instead of doing that in the test
|
||||
# script allow us to easily provision the users when running that
|
||||
# test interactively.
|
||||
|
||||
prosodyctl register cthon98 example.com nothunter2
|
||||
prosodyctl register azurediamond example.com hunter2
|
||||
'';
|
||||
delUsers = pkgs: pkgs.writeScriptBin "delete-prosody-users" ''
|
||||
#!${pkgs.bash}/bin/bash
|
||||
set -e
|
||||
|
||||
# Deletes the test users.
|
||||
#
|
||||
# Doing that in a bash script instead of doing that in the test
|
||||
# script allow us to easily provision the users when running that
|
||||
# test interactively.
|
||||
|
||||
prosodyctl deluser cthon98@example.com
|
||||
prosodyctl deluser azurediamond@example.com
|
||||
'';
|
||||
in import ../make-test-python.nix {
|
||||
name = "prosody";
|
||||
nodes = {
|
||||
client = { nodes, pkgs, ... }: {
|
||||
client = { nodes, pkgs, config, ... }: {
|
||||
security.pki.certificateFiles = [ "${cert pkgs}/cert.pem" ];
|
||||
console.keyMap = "fr-bepo";
|
||||
networking.extraHosts = ''
|
||||
${nodes.server.config.networking.primaryIPAddress} example.com
|
||||
${nodes.server.config.networking.primaryIPAddress} conference.example.com
|
||||
${nodes.server.config.networking.primaryIPAddress} uploads.example.com
|
||||
'';
|
||||
environment.systemPackages = [
|
||||
(pkgs.callPackage ./xmpp-sendmessage.nix { connectTo = nodes.server.config.networking.primaryIPAddress; })
|
||||
];
|
||||
};
|
||||
server = { config, pkgs, ... }: {
|
||||
security.pki.certificateFiles = [ "${cert pkgs}/cert.pem" ];
|
||||
console.keyMap = "fr-bepo";
|
||||
networking.extraHosts = ''
|
||||
${config.networking.primaryIPAddress} example.com
|
||||
${config.networking.primaryIPAddress} conference.example.com
|
||||
${config.networking.primaryIPAddress} uploads.example.com
|
||||
'';
|
||||
networking.firewall.enable = false;
|
||||
environment.systemPackages = [
|
||||
(createUsers pkgs)
|
||||
(delUsers pkgs)
|
||||
];
|
||||
services.prosody = {
|
||||
enable = true;
|
||||
# TODO: use a self-signed certificate
|
||||
c2sRequireEncryption = false;
|
||||
extraConfig = ''
|
||||
storage = "sql"
|
||||
'';
|
||||
virtualHosts.test = {
|
||||
ssl.cert = "${cert pkgs}/cert.pem";
|
||||
ssl.key = "${cert pkgs}/key.pem";
|
||||
virtualHosts.example = {
|
||||
domain = "example.com";
|
||||
enabled = true;
|
||||
ssl.cert = "${cert pkgs}/cert.pem";
|
||||
ssl.key = "${cert pkgs}/key.pem";
|
||||
};
|
||||
muc = [
|
||||
{
|
||||
domain = "conference.example.com";
|
||||
}
|
||||
];
|
||||
uploadHttp = {
|
||||
domain = "uploads.example.com";
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -31,16 +84,8 @@ import ../make-test-python.nix {
|
||||
server.wait_for_unit("prosody.service")
|
||||
server.succeed('prosodyctl status | grep "Prosody is running"')
|
||||
|
||||
# set password to 'nothunter2' (it's asked twice)
|
||||
server.succeed("yes nothunter2 | prosodyctl adduser cthon98@example.com")
|
||||
# set password to 'y'
|
||||
server.succeed("yes | prosodyctl adduser azurediamond@example.com")
|
||||
# correct password to "hunter2"
|
||||
server.succeed("yes hunter2 | prosodyctl passwd azurediamond@example.com")
|
||||
|
||||
client.succeed("send-message")
|
||||
|
||||
server.succeed("prosodyctl deluser cthon98@example.com")
|
||||
server.succeed("prosodyctl deluser azurediamond@example.com")
|
||||
server.succeed("create-prosody-users")
|
||||
client.succeed('send-message 2>&1 | grep "XMPP SCRIPT TEST SUCCESS"')
|
||||
server.succeed("delete-prosody-users")
|
||||
'';
|
||||
}
|
||||
|
@ -1,46 +1,61 @@
|
||||
{ writeScriptBin, python3, connectTo ? "localhost" }:
|
||||
writeScriptBin "send-message" ''
|
||||
#!${(python3.withPackages (ps: [ ps.sleekxmpp ])).interpreter}
|
||||
# Based on the sleekxmpp send_client example, look there for more details:
|
||||
# https://github.com/fritzy/SleekXMPP/blob/develop/examples/send_client.py
|
||||
import sleekxmpp
|
||||
{ writeScriptBin, writeText, python3, connectTo ? "localhost" }:
|
||||
let
|
||||
dummyFile = writeText "dummy-file" ''
|
||||
Dear dog,
|
||||
|
||||
class SendMsgBot(sleekxmpp.ClientXMPP):
|
||||
"""
|
||||
A basic SleekXMPP bot that will log in, send a message,
|
||||
and then log out.
|
||||
"""
|
||||
def __init__(self, jid, password, recipient, message):
|
||||
sleekxmpp.ClientXMPP.__init__(self, jid, password)
|
||||
Please find this *really* important attachment.
|
||||
|
||||
self.recipient = recipient
|
||||
self.msg = message
|
||||
Yours truly,
|
||||
John
|
||||
'';
|
||||
in writeScriptBin "send-message" ''
|
||||
#!${(python3.withPackages (ps: [ ps.slixmpp ])).interpreter}
|
||||
import logging
|
||||
import sys
|
||||
from types import MethodType
|
||||
|
||||
self.add_event_handler("session_start", self.start, threaded=True)
|
||||
|
||||
def start(self, event):
|
||||
self.send_presence()
|
||||
self.get_roster()
|
||||
|
||||
self.send_message(mto=self.recipient,
|
||||
mbody=self.msg,
|
||||
mtype='chat')
|
||||
|
||||
self.disconnect(wait=True)
|
||||
from slixmpp import ClientXMPP
|
||||
from slixmpp.exceptions import IqError, IqTimeout
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
xmpp = SendMsgBot("cthon98@example.com", "nothunter2", "azurediamond@example.com", "hey, if you type in your pw, it will show as stars")
|
||||
xmpp.register_plugin('xep_0030') # Service Discovery
|
||||
xmpp.register_plugin('xep_0199') # XMPP Ping
|
||||
class CthonTest(ClientXMPP):
|
||||
|
||||
# TODO: verify certificate
|
||||
# If you want to verify the SSL certificates offered by a server:
|
||||
# xmpp.ca_certs = "path/to/ca/cert"
|
||||
def __init__(self, jid, password):
|
||||
ClientXMPP.__init__(self, jid, password)
|
||||
self.add_event_handler("session_start", self.session_start)
|
||||
|
||||
if xmpp.connect(('${connectTo}', 5222)):
|
||||
xmpp.process(block=True)
|
||||
else:
|
||||
print("Unable to connect.")
|
||||
sys.exit(1)
|
||||
async def session_start(self, event):
|
||||
log = logging.getLogger(__name__)
|
||||
self.send_presence()
|
||||
self.get_roster()
|
||||
# Sending a test message
|
||||
self.send_message(mto="azurediamond@example.com", mbody="Hello, this is dog.", mtype="chat")
|
||||
log.info('Message sent')
|
||||
|
||||
# Test http upload (XEP_0363)
|
||||
def timeout_callback(arg):
|
||||
log.error("ERROR: Cannot upload file. XEP_0363 seems broken")
|
||||
sys.exit(1)
|
||||
url = await self['xep_0363'].upload_file("${dummyFile}",timeout=10, timeout_callback=timeout_callback)
|
||||
log.info('Upload success!')
|
||||
# Test MUC
|
||||
self.plugin['xep_0045'].join_muc('testMucRoom', 'cthon98', wait=True)
|
||||
log.info('MUC join success!')
|
||||
log.info('XMPP SCRIPT TEST SUCCESS')
|
||||
self.disconnect(wait=True)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
logging.basicConfig(level=logging.DEBUG,
|
||||
format='%(levelname)-8s %(message)s')
|
||||
|
||||
ct = CthonTest('cthon98@example.com', 'nothunter2')
|
||||
ct.register_plugin('xep_0071')
|
||||
ct.register_plugin('xep_0128')
|
||||
# HTTP Upload
|
||||
ct.register_plugin('xep_0363')
|
||||
# MUC
|
||||
ct.register_plugin('xep_0045')
|
||||
ct.connect(("server", 5222))
|
||||
ct.process(forever=False)
|
||||
''
|
||||
|
@ -1,4 +1,4 @@
|
||||
{ lib, mkDerivation, fetchurl, fetchFromGitHub, makeDesktopItem, cmake, boost, zlib
|
||||
{ lib, mkDerivation, fetchurl, fetchpatch, fetchFromGitHub, makeDesktopItem, cmake, boost, zlib
|
||||
, openssl, R, qtbase, qtxmlpatterns, qtsensors, qtwebengine, qtwebchannel
|
||||
, libuuid, hunspellDicts, unzip, ant, jdk, gnumake, makeWrapper, pandoc
|
||||
, llvmPackages
|
||||
@ -8,7 +8,7 @@ with lib;
|
||||
let
|
||||
verMajor = "1";
|
||||
verMinor = "2";
|
||||
verPatch = "5033";
|
||||
verPatch = "5042";
|
||||
version = "${verMajor}.${verMinor}.${verPatch}";
|
||||
ginVer = "2.1.2";
|
||||
gwtVer = "2.8.1";
|
||||
@ -26,11 +26,19 @@ mkDerivation rec {
|
||||
owner = "rstudio";
|
||||
repo = "rstudio";
|
||||
rev = "v${version}";
|
||||
sha256 = "0f3p2anz9xay2859bxj3bvyj582igsp628qxsccpkgn0jifvi4np";
|
||||
sha256 = "1n67fa357v51j3z1ma8v2ydfsx3y8n10k2svmfcf4mdzsi8w0kc5";
|
||||
};
|
||||
|
||||
# Hack RStudio to only use the input R and provided libclang.
|
||||
patches = [ ./r-location.patch ./clang-location.patch ];
|
||||
patches = [ ./r-location.patch ./clang-location.patch
|
||||
(fetchpatch {
|
||||
# Fetch a patch to ensure Rstudio compiles against R
|
||||
# 4.0.0, should be removed next 1.2.X Rstudio update
|
||||
# or possibly 1.3.X
|
||||
url = "https://github.com/rstudio/rstudio/commit/3fb2397c2f208bb8ace0bbaf269481ccb96b5b20.patch";
|
||||
sha256 = "0qpgjy6aash0fc0xbns42cwpj3nsw49nkbzwyq8az01xwg81g0f3";
|
||||
})
|
||||
];
|
||||
postPatch = ''
|
||||
substituteInPlace src/cpp/core/r_util/REnvironmentPosix.cpp --replace '@R@' ${R}
|
||||
substituteInPlace src/cpp/core/libclang/LibClang.cpp \
|
||||
|
@ -1,28 +1,64 @@
|
||||
{ stdenv, fetchurl, python2, keybinder3, intltool, file, gtk3, gobject-introspection
|
||||
, libnotify, wrapGAppsHook, vte
|
||||
{ stdenv
|
||||
, fetchFromGitHub
|
||||
, python3
|
||||
, keybinder3
|
||||
, intltool
|
||||
, file
|
||||
, gtk3
|
||||
, gobject-introspection
|
||||
, libnotify
|
||||
, wrapGAppsHook
|
||||
, vte
|
||||
}:
|
||||
|
||||
python2.pkgs.buildPythonApplication rec {
|
||||
name = "terminator-${version}";
|
||||
version = "1.91";
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "terminator";
|
||||
version = "1.92";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://launchpad.net/terminator/gtk3/${version}/+download/${name}.tar.gz";
|
||||
sha256 = "95f76e3c0253956d19ceab2f8da709a496f1b9cf9b1c5b8d3cd0b6da3cc7be69";
|
||||
src = fetchFromGitHub {
|
||||
owner = "gnome-terminator";
|
||||
repo = "terminator";
|
||||
rev = "v${version}";
|
||||
sha256 = "105f660wzf9cpn24xzwaaa09igg5h3qhchafv190v5nqck6g1ssh";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ file intltool wrapGAppsHook gobject-introspection ];
|
||||
buildInputs = [ gtk3 vte libnotify keybinder3
|
||||
gobject-introspection # Temporary fix, see https://github.com/NixOS/nixpkgs/issues/56943
|
||||
nativeBuildInputs = [
|
||||
file
|
||||
intltool
|
||||
gobject-introspection
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
gtk3
|
||||
gobject-introspection # Temporary fix, see https://github.com/NixOS/nixpkgs/issues/56943
|
||||
keybinder3
|
||||
libnotify
|
||||
python3
|
||||
vte
|
||||
];
|
||||
|
||||
propagatedBuildInputs = with python3.pkgs; [
|
||||
configobj
|
||||
dbus-python
|
||||
pygobject3
|
||||
psutil
|
||||
pycairo
|
||||
];
|
||||
propagatedBuildInputs = with python2.pkgs; [ pygobject3 psutil pycairo ];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs .
|
||||
patchShebangs run_tests tests po
|
||||
# dbus-python is correctly passed in propagatedBuildInputs, but for some reason setup.py complains.
|
||||
# The wrapped terminator has the correct path added, so ignore this.
|
||||
substituteInPlace setup.py --replace "'dbus-python'," ""
|
||||
'';
|
||||
|
||||
checkPhase = ''
|
||||
runHook preCheck
|
||||
|
||||
./run_tests
|
||||
|
||||
runHook postCheck
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
@ -33,7 +69,7 @@ python2.pkgs.buildPythonApplication rec {
|
||||
quadkonsole, etc. in that the main focus is arranging terminals in grids
|
||||
(tabs is the most common default method, which Terminator also supports).
|
||||
'';
|
||||
homepage = "https://gnometerminator.blogspot.no/p/introduction.html";
|
||||
homepage = "https://github.com/gnome-terminator/terminator";
|
||||
license = licenses.gpl2;
|
||||
maintainers = with maintainers; [ bjornfor ];
|
||||
platforms = platforms.linux;
|
||||
|
@ -21,12 +21,12 @@ let
|
||||
|
||||
in mkDerivationWith python3Packages.buildPythonApplication rec {
|
||||
pname = "qutebrowser";
|
||||
version = "1.10.1";
|
||||
version = "1.11.0";
|
||||
|
||||
# the release tarballs are different from the git checkout!
|
||||
src = fetchurl {
|
||||
url = "https://github.com/qutebrowser/qutebrowser/releases/download/v${version}/${pname}-${version}.tar.gz";
|
||||
sha256 = "06bcnsfb4kz92bh8xjxwaghhy9x2mmcb76wk3fv868jb1ga75vd8";
|
||||
sha256 = "0b0qlki9bp9mm41lrh6rc6qqvm4nsz8da63sby3a1f2xm9b9vvg2";
|
||||
};
|
||||
|
||||
# Needs tox
|
||||
|
@ -58,6 +58,6 @@ in rec {
|
||||
|
||||
kops_1_16 = mkKops {
|
||||
version = "1.16.1";
|
||||
sha256 = "08vy57ln0qar961sf9vbrh29f04qj5siqsfim1kqwvj5xrvwa39i";
|
||||
sha256 = "04ji1703z6b3rd4wmccah68api0jj2bndzkgdzqi855gccqbmi5g";
|
||||
};
|
||||
}
|
||||
|
@ -1,79 +1,82 @@
|
||||
{ lib, stdenv, fetchFromGitHub
|
||||
, cmake, cmark, lmdb, mkDerivation, qtbase, qtmacextras
|
||||
, qtmultimedia, qttools, mtxclient, boost, spdlog, olm, pkgconfig
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, fetchpatch
|
||||
, cmake
|
||||
, cmark
|
||||
, lmdb
|
||||
, lmdbxx
|
||||
, tweeny
|
||||
, mkDerivation
|
||||
, qtbase
|
||||
, qtmacextras
|
||||
, qtmultimedia
|
||||
, qttools
|
||||
, qtquickcontrols2
|
||||
, qtgraphicaleffects
|
||||
, mtxclient
|
||||
, boost17x
|
||||
, spdlog
|
||||
, olm
|
||||
, pkgconfig
|
||||
, nlohmann_json
|
||||
}:
|
||||
|
||||
# These hashes and revisions are based on those from here:
|
||||
# https://github.com/Nheko-Reborn/nheko/blob/v0.6.4/deps/CMakeLists.txt#L52
|
||||
let
|
||||
tweeny = fetchFromGitHub {
|
||||
owner = "mobius3";
|
||||
repo = "tweeny";
|
||||
rev = "b94ce07cfb02a0eb8ac8aaf66137dabdaea857cf";
|
||||
sha256 = "1wyyq0j7dhjd6qgvnh3knr70li47hmf5394yznkv9b1indqjx4mi";
|
||||
};
|
||||
|
||||
lmdbxx = fetchFromGitHub {
|
||||
owner = "bendiken";
|
||||
repo = "lmdbxx";
|
||||
rev = "0b43ca87d8cfabba392dfe884eb1edb83874de02";
|
||||
sha256 = "1whsc5cybf9rmgyaj6qjji03fv5jbgcgygp956s3835b9f9cjg1n";
|
||||
};
|
||||
in
|
||||
mkDerivation rec {
|
||||
pname = "nheko";
|
||||
version = "0.6.4";
|
||||
version = "0.7.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Nheko-Reborn";
|
||||
repo = "nheko";
|
||||
rev = "v${version}";
|
||||
sha256 = "19dkc98l1q4070v6mli4ybqn0ip0za607w39hjf0x8rqdxq45iwm";
|
||||
sha256 = "12sxibbrn79sxkf9jrm7jrlj7l5vz15claxrrll7pkv9mv44wady";
|
||||
};
|
||||
|
||||
# If, on Darwin, you encounter the error
|
||||
# error: must specify at least one argument for '...' parameter of variadic
|
||||
# macro [-Werror,-Wgnu-zero-variadic-macro-arguments]
|
||||
# Then adding this parameter is likely the fix you want.
|
||||
#
|
||||
# However, it looks like either cmake doesn't honor this CFLAGS variable, or
|
||||
# darwin's compiler doesn't have the same syntax as gcc for turning off
|
||||
# -Werror selectively.
|
||||
#
|
||||
# Anyway, this is something that will have to be debugged with access to a
|
||||
# darwin-based OS. Sorry about that!
|
||||
#
|
||||
#preConfigure = lib.optionalString stdenv.isDarwin ''
|
||||
# export CFLAGS=-Wno-error=gnu-zero-variadic-macro-arguments
|
||||
#'';
|
||||
|
||||
postPatch = ''
|
||||
mkdir -p .deps/include/
|
||||
ln -s ${tweeny}/include .deps/include/tweeny
|
||||
ln -s ${spdlog} .deps/spdlog
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
lmdbxx
|
||||
cmake
|
||||
pkgconfig
|
||||
];
|
||||
cmakeFlags = [
|
||||
"-DTWEENY_INCLUDE_DIR=.deps/include"
|
||||
"-DLMDBXX_INCLUDE_DIR=${lmdbxx}"
|
||||
"-Dnlohmann_json_DIR=${nlohmann_json}/lib/cmake/nlohmann_json"
|
||||
# Can be removed once either https://github.com/NixOS/nixpkgs/pull/85254 or
|
||||
# https://github.com/NixOS/nixpkgs/pull/73940 are merged
|
||||
"-DBoost_NO_BOOST_CMAKE=TRUE"
|
||||
];
|
||||
# commit missing from latest release and recommended by upstream:
|
||||
# https://github.com/NixOS/nixpkgs/pull/85922#issuecomment-619263903
|
||||
patches = [
|
||||
(fetchpatch {
|
||||
name = "room-ids-escape-patch";
|
||||
url = "https://github.com/Nheko-Reborn/nheko/commit/d94ac86816f9f325cba11f71344a3ca99591130d.patch";
|
||||
sha256 = "1p0kj4a60l3jf0rfakc88adld7ccg3vfjhzia5rf2i03h35cxw8c";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ cmake pkgconfig ];
|
||||
|
||||
buildInputs = [
|
||||
mtxclient olm boost lmdb spdlog cmark
|
||||
qtbase qtmultimedia qttools
|
||||
nlohmann_json
|
||||
tweeny
|
||||
mtxclient
|
||||
olm
|
||||
boost17x
|
||||
lmdb
|
||||
spdlog
|
||||
cmark
|
||||
qtbase
|
||||
qtmultimedia
|
||||
qttools
|
||||
qtquickcontrols2
|
||||
qtgraphicaleffects
|
||||
] ++ lib.optional stdenv.isDarwin qtmacextras;
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Desktop client for the Matrix protocol";
|
||||
homepage = "https://github.com/Nheko-Reborn/nheko";
|
||||
maintainers = with maintainers; [ ekleog fpletz ];
|
||||
platforms = platforms.unix;
|
||||
platforms = platforms.all;
|
||||
# Should be fixable if a higher clang version is used, see:
|
||||
# https://github.com/NixOS/nixpkgs/pull/85922#issuecomment-619287177
|
||||
broken = stdenv.targetPlatform.isDarwin;
|
||||
license = licenses.gpl3Plus;
|
||||
};
|
||||
}
|
||||
|
@ -1,26 +0,0 @@
|
||||
From 85ede2cf452800710de136f4f864921d3bb9773c Mon Sep 17 00:00:00 2001
|
||||
From: Tom Hall <tahall256@protonmail.ch>
|
||||
Date: Fri, 21 Feb 2020 22:56:06 +0000
|
||||
Subject: [PATCH] Disable test pending upstream fix
|
||||
|
||||
See https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17718
|
||||
---
|
||||
tests/reg-tests-1d.R | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/tests/reg-tests-1d.R b/tests/reg-tests-1d.R
|
||||
index 9b551a1fc8..18ce6027ed 100644
|
||||
--- a/tests/reg-tests-1d.R
|
||||
+++ b/tests/reg-tests-1d.R
|
||||
@@ -3079,7 +3079,7 @@ stopifnot(exprs = {
|
||||
x[1:52] %% 3 == 2:1
|
||||
-x[1:52] %% 3 == 1:2
|
||||
}) # larger x suffer from cancellation (well, warning too early now):
|
||||
-tools::assertWarning(x[60:68] %% 3)
|
||||
+#tools::assertWarning(x[60:68] %% 3)
|
||||
|
||||
|
||||
## Hilmar Berger's on R-devel list: 'data.frame() == NULL' etc
|
||||
--
|
||||
2.24.1
|
||||
|
@ -1,5 +1,5 @@
|
||||
{ stdenv, fetchurl, bzip2, gfortran, libX11, libXmu, libXt, libjpeg, libpng
|
||||
, libtiff, ncurses, pango, pcre, perl, readline, tcl, texLive, tk, xz, zlib
|
||||
, libtiff, ncurses, pango, pcre2, perl, readline, tcl, texLive, tk, xz, zlib
|
||||
, less, texinfo, graphviz, icu, pkgconfig, bison, imake, which, jdk, blas, lapack
|
||||
, curl, Cocoa, Foundation, libobjc, libcxx, tzdata, fetchpatch
|
||||
, withRecommendedPackages ? true
|
||||
@ -12,27 +12,24 @@
|
||||
assert (!blas.isILP64) && (!lapack.isILP64);
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "R-3.6.3";
|
||||
name = "R-4.0.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://cran.r-project.org/src/base/R-3/${name}.tar.gz";
|
||||
sha256 = "13xaxwfbzj0bd6rn2n27z0n04lb93mcyq991w4vdbbg8v282jc49";
|
||||
url = "https://cran.r-project.org/src/base/R-4/${name}.tar.gz";
|
||||
sha256 = "0h1995smlyiyhx7gpg9paxsfqrcn6g9bbp5h9r47i6an3clv1gh6";
|
||||
};
|
||||
|
||||
dontUseImakeConfigure = true;
|
||||
|
||||
buildInputs = [
|
||||
bzip2 gfortran libX11 libXmu libXt libXt libjpeg libpng libtiff ncurses
|
||||
pango pcre perl readline texLive xz zlib less texinfo graphviz icu
|
||||
pango pcre2 perl readline texLive xz zlib less texinfo graphviz icu
|
||||
pkgconfig bison imake which blas lapack curl tcl tk jdk
|
||||
] ++ stdenv.lib.optionals stdenv.isDarwin [ Cocoa Foundation libobjc libcxx ];
|
||||
|
||||
patches = [
|
||||
./no-usr-local-search-paths.patch
|
||||
] ++ stdenv.lib.optionals stdenv.hostPlatform.isAarch64 [
|
||||
# Remove a test which fails on aarch64.
|
||||
# See https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17718
|
||||
./0001-Disable-test-pending-upstream-fix.patch
|
||||
./fix-failing-test.patch
|
||||
];
|
||||
|
||||
prePatch = stdenv.lib.optionalString stdenv.isDarwin ''
|
||||
|
25
pkgs/applications/science/math/R/fix-failing-test.patch
Normal file
25
pkgs/applications/science/math/R/fix-failing-test.patch
Normal file
@ -0,0 +1,25 @@
|
||||
From e8f54bc562eb301d204b5f880614be58a2b39a2b Mon Sep 17 00:00:00 2001
|
||||
From: maechler <maechler@00db46b3-68df-0310-9c12-caf00c1e9a41>
|
||||
Date: Mon, 30 Mar 2020 19:15:59 +0000
|
||||
Subject: [PATCH] no longer fail in norm() check for broken OpenBLAS Lapack
|
||||
3.9.0
|
||||
|
||||
git-svn-id: https://svn.r-project.org/R/trunk@78112 00db46b3-68df-0310-9c12-caf00c1e9a41
|
||||
---
|
||||
tests/reg-tests-1d.R | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/tests/reg-tests-1d.R b/tests/reg-tests-1d.R
|
||||
index 6b7de765a95..fafd6911e7a 100644
|
||||
--- a/tests/reg-tests-1d.R
|
||||
+++ b/tests/reg-tests-1d.R
|
||||
@@ -3836,7 +3836,8 @@ stopifnot(is.na( norm(diag(c(1, NA)), "2") ))
|
||||
## norm(<matrix-w-NA>, "F")
|
||||
(m <- cbind(0, c(NA, 0), 0:-1))
|
||||
nTypes <- eval(formals(base::norm)$type) # "O" "I" "F" "M" "2"
|
||||
-stopifnot(is.na( print(vapply(nTypes, norm, 0., x = m)) )) # print(): show NA *or* NaN
|
||||
+print( # stopifnot( -- for now, as Lapack is still broken in some OpenBLAS -- FIXME
|
||||
+ is.na( print(vapply(nTypes, norm, 0., x = m)) )) # print(): show NA *or* NaN
|
||||
## "F" gave non-NA with LAPACK 3.9.0, before our patch in R-devel and R-patched
|
||||
|
||||
|
@ -29,6 +29,14 @@ stdenv.mkDerivation rec {
|
||||
url = "https://git.sagemath.org/sage.git/patch?id2=8bdc326ba57d1bb9664f63cf165a9e9920cc1afc&id=dc673c17555efca611f68398d5013b66e9825463";
|
||||
sha256 = "1hhannz7xzprijakn2w2d0rhd5zv2zikik9p51i87bas3nc658f7";
|
||||
})
|
||||
|
||||
# `is_unitary` test in `matrix_double_dense.pyx` fails with some BLAS implementations
|
||||
# https://trac.sagemath.org/ticket/29297 should be included in 9.1
|
||||
(fetchpatch {
|
||||
name = "is_unitary-special-case.patch";
|
||||
url = "https://git.sagemath.org/sage.git/patch?id=cc3eb9ffa991e328b09028d32aab7e7cc2ddbb6a";
|
||||
sha256 = "0jq4w8hnp5c9q99011ldr4n3knvm1rx2g85z0hidv3i9x868p0ay";
|
||||
})
|
||||
|
||||
# Unfortunately inclusion in upstream sage was rejected. Instead the bug was
|
||||
# fixed in python, but of course not backported to 2.7. So we'll probably
|
||||
|
49
pkgs/applications/science/physics/elmerfem/default.nix
Normal file
49
pkgs/applications/science/physics/elmerfem/default.nix
Normal file
@ -0,0 +1,49 @@
|
||||
{ stdenv, fetchFromGitHub, cmake, git, gfortran, openmpi, blas, liblapack, qt4, qwt6_qt4, pkg-config }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "elmerfem";
|
||||
version = "8.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "elmercsc";
|
||||
repo = "elmerfem";
|
||||
rev = "release-${version}";
|
||||
sha256 = "0vk31lplxlng173q8jjcpbyj1gaf98jvkqjvi9077d1nslya7vpm";
|
||||
};
|
||||
|
||||
hardeningDisable = [ "format" ];
|
||||
|
||||
nativeBuildInputs = [ cmake pkg-config git ];
|
||||
buildInputs = [ gfortran openmpi blas liblapack qt4 qwt6_qt4 ];
|
||||
|
||||
preConfigure = ''
|
||||
patchShebangs ./
|
||||
'';
|
||||
|
||||
storepath = placeholder "out";
|
||||
|
||||
cmakeFlags = [
|
||||
"-DELMER_INSTALL_LIB_DIR=${storepath}/lib"
|
||||
"-DWITH_OpenMP:BOOLEAN=TRUE"
|
||||
"-DWITH_MPI:BOOLEAN=TRUE"
|
||||
"-DWITH_ELMERGUI:BOOLEAN=TRUE"
|
||||
"-DCMAKE_INSTALL_LIBDIR=lib"
|
||||
"-DCMAKE_INSTALL_INCLUDEDIR=include"
|
||||
"-DCMAKE_OpenGL_GL_PREFERENCE=GLVND"
|
||||
];
|
||||
|
||||
patches = [
|
||||
./fix-cmake.patch
|
||||
];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = http://www.elmerfem.org/;
|
||||
description = "A finite element software for multiphysical problems.";
|
||||
platforms = platforms.unix;
|
||||
maintainers = [ maintainers.wulfsta ];
|
||||
license = licenses.lgpl21;
|
||||
};
|
||||
|
||||
}
|
13
pkgs/applications/science/physics/elmerfem/fix-cmake.patch
Normal file
13
pkgs/applications/science/physics/elmerfem/fix-cmake.patch
Normal file
@ -0,0 +1,13 @@
|
||||
diff --exclude '*~' -ruN A/torch/CMakeLists.txt B/torch/CMakeLists.txt
|
||||
--- A/fem/tests/CMakeLists.txt 2020-04-23 02:35:03.243388917 -0400
|
||||
+++ B/fem/tests/CMakeLists.txt 2018-12-19 20:18:40.671857320 -0400
|
||||
@@ -14,7 +14,7 @@
|
||||
SET(MESH2D_BIN "${CMAKE_BINARY_DIR}/meshgen2d/src/Mesh2D")
|
||||
|
||||
MACRO(SUBDIRLIST result curdir depth)
|
||||
set(glob_pattern "*")
|
||||
- FOREACH(D RANGE 1 depth)
|
||||
+ FOREACH(D RANGE 1 ${depth})
|
||||
FILE(GLOB children RELATIVE ${curdir} ${glob_pattern})
|
||||
FOREACH(child ${children})
|
||||
IF(IS_DIRECTORY ${curdir}/${child})
|
@ -1,11 +1,11 @@
|
||||
{
|
||||
"version": "12.8.9",
|
||||
"repo_hash": "07vayjy3020hapbdx2wiv91g9xrfmvngbyj05hs2p0p3gwj6g2a4",
|
||||
"version": "12.8.10",
|
||||
"repo_hash": "1njkihj66d8fnk1l0r5pys38akf5srqlrgj2hzc68l5m8d51dk15",
|
||||
"owner": "gitlab-org",
|
||||
"repo": "gitlab",
|
||||
"rev": "v12.8.9-ee",
|
||||
"rev": "v12.8.10-ee",
|
||||
"passthru": {
|
||||
"GITALY_SERVER_VERSION": "12.8.9",
|
||||
"GITALY_SERVER_VERSION": "12.8.10",
|
||||
"GITLAB_PAGES_VERSION": "1.16.0",
|
||||
"GITLAB_SHELL_VERSION": "11.0.0",
|
||||
"GITLAB_WORKHORSE_VERSION": "8.21.2"
|
||||
|
@ -114,7 +114,7 @@ GEM
|
||||
minitest (5.14.0)
|
||||
msgpack (1.3.1)
|
||||
multipart-post (2.0.0)
|
||||
nokogiri (1.10.7)
|
||||
nokogiri (1.10.9)
|
||||
mini_portile2 (~> 2.4.0)
|
||||
nokogumbo (1.5.0)
|
||||
nokogiri
|
||||
@ -242,4 +242,4 @@ DEPENDENCIES
|
||||
webmock (~> 3.4.0)
|
||||
|
||||
BUNDLED WITH
|
||||
1.17.3
|
||||
2.1.4
|
||||
|
@ -28,14 +28,14 @@ let
|
||||
};
|
||||
});
|
||||
in buildGoPackage rec {
|
||||
version = "12.8.9";
|
||||
version = "12.8.10";
|
||||
pname = "gitaly";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "gitlab-org";
|
||||
repo = "gitaly";
|
||||
rev = "v${version}";
|
||||
sha256 = "06q1km2pigpl4yxl8pkzdy2yxzvsfm6n5r3kmd8h19j3sc6imbmh";
|
||||
sha256 = "1vhnpyggh2ch93i75np11rjzvq8d6pwv2kzvwh7ak3fa02w9qdfs";
|
||||
};
|
||||
|
||||
# Fix a check which assumes that hook files are writeable by their
|
||||
|
@ -515,10 +515,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0r0qpgf80h764k176yr63gqbs2z0xbsp8vlvs2a79d5r9vs83kln";
|
||||
sha256 = "12j76d0bp608932xkzmfi638c7aqah57l437q8494znzbj610qnm";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.10.7";
|
||||
version = "1.10.9";
|
||||
};
|
||||
nokogumbo = {
|
||||
dependencies = ["nokogiri"];
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#! nix-shell -i python3 -p bundix bundler common-updater-scripts nix nix-prefetch-git python3 python3Packages.requests python3Packages.lxml python3Packages.click python3Packages.click-log vgo2nix yarn2nix
|
||||
#! nix-shell -i python3 -p bundix bundler common-updater-scripts nix nix-prefetch-git python3 python3Packages.requests python3Packages.click python3Packages.click-log vgo2nix yarn2nix
|
||||
|
||||
import click
|
||||
import click_log
|
||||
@ -13,7 +13,6 @@ from distutils.version import LooseVersion
|
||||
from typing import Iterable
|
||||
|
||||
import requests
|
||||
from xml.etree import ElementTree
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@ -30,12 +29,11 @@ class GitLabRepo:
|
||||
|
||||
@property
|
||||
def tags(self) -> Iterable[str]:
|
||||
r = requests.get(self.url + "/tags?format=atom", stream=True)
|
||||
r = requests.get(self.url + "/refs?sort=updated_desc&ref=master").json()
|
||||
tags = r.get("Tags", [])
|
||||
|
||||
tree = ElementTree.fromstring(r.content)
|
||||
versions = [e.text for e in tree.findall('{http://www.w3.org/2005/Atom}entry/{http://www.w3.org/2005/Atom}title')]
|
||||
# filter out versions not matching version_regex
|
||||
versions = list(filter(self.version_regex.match, versions))
|
||||
versions = list(filter(self.version_regex.match, tags))
|
||||
|
||||
# sort, but ignore v and -ee for sorting comparisons
|
||||
versions.sort(key=lambda x: LooseVersion(x.replace("v", "").replace("-ee", "")), reverse=True)
|
||||
|
@ -1,27 +1,46 @@
|
||||
{ stdenv, fetchurl, pkgconfig, glib, libX11, libXext, libXinerama }:
|
||||
{ stdenv, fetchurl, cmake, pkgconfig, glib, libX11, libXext, libXinerama, libXrandr
|
||||
, withDoc ? stdenv.buildPlatform == stdenv.targetPlatform, asciidoc ? null }:
|
||||
|
||||
# Doc generation is disabled by default when cross compiling because asciidoc
|
||||
# does not cross compile for now
|
||||
|
||||
assert withDoc -> asciidoc != null;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "herbstluftwm-0.7.2";
|
||||
pname = "herbstluftwm";
|
||||
version = "0.8.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://herbstluftwm.org/tarballs/${name}.tar.gz";
|
||||
sha256 = "1kc18aj9j3nfz6fj4qxg9s3gg4jvn6kzi3ii24hfm0vqdpy17xnz";
|
||||
url = "https://herbstluftwm.org/tarballs/herbstluftwm-${version}.tar.gz";
|
||||
sha256 = "0c1lf82z6a56g8asin91cmqhzk3anw0xwc44b31bpjixadmns57y";
|
||||
};
|
||||
|
||||
patchPhase = ''
|
||||
substituteInPlace config.mk \
|
||||
--replace "/usr/local" "$out" \
|
||||
--replace "/etc" "$out/etc" \
|
||||
--replace "/zsh/functions/Completion/X" "/zsh/site-functions" \
|
||||
--replace "/usr/share" "\$(PREFIX)/share"
|
||||
'';
|
||||
outputs = [
|
||||
"out"
|
||||
] ++ stdenv.lib.optionals withDoc [
|
||||
"doc"
|
||||
"man"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ pkgconfig ];
|
||||
buildInputs = [ glib libX11 libXext libXinerama ];
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_INSTALL_SYSCONF_PREFIX=${placeholder "out"}/etc"
|
||||
] ++ stdenv.lib.optional (!withDoc) "-DWITH_DOCUMENTATION=OFF";
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
pkgconfig
|
||||
] ++ stdenv.lib.optional withDoc asciidoc;
|
||||
|
||||
buildInputs = [
|
||||
libX11
|
||||
libXext
|
||||
libXinerama
|
||||
libXrandr
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "A manual tiling window manager for X";
|
||||
homepage = "http://herbstluftwm.org/";
|
||||
homepage = "https://herbstluftwm.org/";
|
||||
license = stdenv.lib.licenses.bsd2;
|
||||
platforms = stdenv.lib.platforms.linux;
|
||||
maintainers = with stdenv.lib.maintainers; [ the-kenny ];
|
||||
|
@ -17,7 +17,7 @@ unpack() {
|
||||
local appimageType=0
|
||||
|
||||
# https://github.com/AppImage/libappimage/blob/ca8d4b53bed5cbc0f3d0398e30806e0d3adeaaab/src/libappimage/utils/MagicBytesChecker.cpp#L45-L63
|
||||
eval "$(r2 "$src" -nn -Nqc "p8j 3 @ 8" |
|
||||
eval "$(r2 -nn -Nqc "p8j 3 @ 8" "$src"|
|
||||
jq -r '{appimageSignature: (.[:-1]|implode), appimageType: .[-1]}|
|
||||
@sh "appimageSignature=\(.appimageSignature) appimageType=\(.appimageType)"')"
|
||||
|
||||
@ -38,7 +38,7 @@ unpack() {
|
||||
|
||||
# multiarch offset one-liner using same method as AppImage
|
||||
# see https://gist.github.com/probonopd/a490ba3401b5ef7b881d5e603fa20c93
|
||||
offset=$(r2 "$src" -nn -Nqc "pfj.elf_header @ 0" |\
|
||||
offset=$(r2 -nn -Nqc "pfj.elf_header @ 0" "$src"|\
|
||||
jq 'map({(.name): .value}) | add | .shoff + (.shnum * .shentsize)')
|
||||
|
||||
echo "Uncompress $(basename "$src") of type $appimageType @ offset $offset."
|
||||
|
@ -1,6 +1,6 @@
|
||||
{ fetchurl }:
|
||||
|
||||
fetchurl {
|
||||
url = "https://github.com/commercialhaskell/all-cabal-hashes/archive/3e87a900a11faa97a8a068874c932f3172d0aa76.tar.gz";
|
||||
sha256 = "0cf35vics1211pr1g8a804zm3w4lsdacqkgw3hqk7wdrrbasb8ip";
|
||||
url = "https://github.com/commercialhaskell/all-cabal-hashes/archive/9d50cd974714cdcfdaabd089923b571a66bae55a.tar.gz";
|
||||
sha256 = "1hv4pxp47850l36ci2ywmc75c95fvdqr3swz9qymy25gd6rbfs9f";
|
||||
}
|
||||
|
@ -3,11 +3,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gnome-shell-extensions";
|
||||
version = "3.36.1";
|
||||
version = "3.36.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnome/sources/gnome-shell-extensions/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
|
||||
sha256 = "0fah7cc22g55w6w7ia3kr2wpdrc45h83xw4pimi54mhggmx9466y";
|
||||
sha256 = "0gq0z0k02b5cfaqrikk2hzbqzjkb6qwcanaqi2jh7nswa7g050lp";
|
||||
};
|
||||
|
||||
passthru = {
|
||||
|
@ -17,11 +17,11 @@ let
|
||||
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "gnome-shell";
|
||||
version = "3.36.1";
|
||||
version = "3.36.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnome/sources/gnome-shell/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
|
||||
sha256 = "0696qw6bmbga30qlvh1k6bkiajl7877j8yis4bwmi1wxkcmkh854";
|
||||
sha256 = "0lqpxhvn073bshnzarnisym3da3k3awsi3h906hm85hz3wm9n4iv";
|
||||
};
|
||||
|
||||
LANG = "en_US.UTF-8";
|
||||
|
@ -44,13 +44,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mutter";
|
||||
version = "3.36.1";
|
||||
version = "3.36.2";
|
||||
|
||||
outputs = [ "out" "dev" "man" ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnome/sources/mutter/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
|
||||
sha256 = "09fqs9805d07c60a2ibskqffsb5wn72l8grwzb9fic5sl574b0im";
|
||||
sha256 = "1x6svmd1k6w6a2m6ssq4hi997nxyq6z64fjjaid97z2rn177dcvm";
|
||||
};
|
||||
|
||||
mesonFlags = [
|
||||
|
@ -1,15 +1,23 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, qtbase, qttools, lxqt,
|
||||
libconfig }:
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, pkgconfig
|
||||
, qtbase
|
||||
, qttools
|
||||
, lxqt
|
||||
, libconfig
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "compton-conf";
|
||||
version = "0.14.1";
|
||||
version = "0.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "0bx21r83ahmsqf7bm1h17pi4y9js1iqsv7nwnlq58rc0ddkkhcdb";
|
||||
sha256 = "1wqnajarkrpmc60jr1zw5w39lvlf9ii4ri9wgyn55hh1rkbzi7py";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -27,7 +35,9 @@ mkDerivation rec {
|
||||
preConfigure = ''
|
||||
substituteInPlace autostart/CMakeLists.txt \
|
||||
--replace "DESTINATION \"\''${LXQT_ETC_XDG_DIR}" "DESTINATION \"etc/xdg" \
|
||||
'';
|
||||
'';
|
||||
|
||||
passthru.updateScript = lxqt.lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "GUI configuration tool for compton X composite manager";
|
||||
|
@ -1,48 +1,55 @@
|
||||
{ pkgs, makeScope, libsForQt5 }:
|
||||
|
||||
let
|
||||
packages = self: with self; {
|
||||
|
||||
# Update script tailored to LXQt packages from git repository
|
||||
lxqtUpdateScript = { pname, version, src }:
|
||||
pkgs.genericUpdater {
|
||||
inherit pname version;
|
||||
attrPath = "lxqt.${pname}";
|
||||
versionLister = "${pkgs.common-updater-scripts}/bin/list-git-tags ${src.meta.homepage}";
|
||||
};
|
||||
|
||||
# For compiling information, see:
|
||||
# - https://github.com/lxqt/lxqt/wiki/Building-from-source
|
||||
|
||||
### BASE
|
||||
libqtxdg = callPackage ./libqtxdg { };
|
||||
lxqt-build-tools = callPackage ./lxqt-build-tools { };
|
||||
libsysstat = callPackage ./libsysstat { };
|
||||
liblxqt = callPackage ./liblxqt { };
|
||||
libqtxdg = callPackage ./libqtxdg {};
|
||||
lxqt-build-tools = callPackage ./lxqt-build-tools {};
|
||||
libsysstat = callPackage ./libsysstat {};
|
||||
liblxqt = callPackage ./liblxqt {};
|
||||
|
||||
### CORE 1
|
||||
libfm-qt = callPackage ./libfm-qt { };
|
||||
lxqt-about = callPackage ./lxqt-about { };
|
||||
lxqt-admin = callPackage ./lxqt-admin { };
|
||||
lxqt-config = callPackage ./lxqt-config { };
|
||||
lxqt-globalkeys = callPackage ./lxqt-globalkeys { };
|
||||
lxqt-notificationd = callPackage ./lxqt-notificationd { };
|
||||
lxqt-openssh-askpass = callPackage ./lxqt-openssh-askpass { };
|
||||
lxqt-policykit = callPackage ./lxqt-policykit { };
|
||||
lxqt-powermanagement = callPackage ./lxqt-powermanagement { };
|
||||
lxqt-qtplugin = callPackage ./lxqt-qtplugin { };
|
||||
lxqt-session = callPackage ./lxqt-session { };
|
||||
lxqt-sudo = callPackage ./lxqt-sudo { };
|
||||
lxqt-themes = callPackage ./lxqt-themes { };
|
||||
pavucontrol-qt = libsForQt5.callPackage ./pavucontrol-qt { };
|
||||
qtermwidget = callPackage ./qtermwidget { };
|
||||
libfm-qt = callPackage ./libfm-qt {};
|
||||
lxqt-about = callPackage ./lxqt-about {};
|
||||
lxqt-admin = callPackage ./lxqt-admin {};
|
||||
lxqt-config = callPackage ./lxqt-config {};
|
||||
lxqt-globalkeys = callPackage ./lxqt-globalkeys {};
|
||||
lxqt-notificationd = callPackage ./lxqt-notificationd {};
|
||||
lxqt-openssh-askpass = callPackage ./lxqt-openssh-askpass {};
|
||||
lxqt-policykit = callPackage ./lxqt-policykit {};
|
||||
lxqt-powermanagement = callPackage ./lxqt-powermanagement {};
|
||||
lxqt-qtplugin = callPackage ./lxqt-qtplugin {};
|
||||
lxqt-session = callPackage ./lxqt-session {};
|
||||
lxqt-sudo = callPackage ./lxqt-sudo {};
|
||||
lxqt-themes = callPackage ./lxqt-themes {};
|
||||
pavucontrol-qt = libsForQt5.callPackage ./pavucontrol-qt {};
|
||||
qtermwidget = callPackage ./qtermwidget {};
|
||||
|
||||
### CORE 2
|
||||
lxqt-panel = callPackage ./lxqt-panel { };
|
||||
lxqt-runner = callPackage ./lxqt-runner { };
|
||||
pcmanfm-qt = callPackage ./pcmanfm-qt { };
|
||||
lxqt-panel = callPackage ./lxqt-panel {};
|
||||
lxqt-runner = callPackage ./lxqt-runner {};
|
||||
pcmanfm-qt = callPackage ./pcmanfm-qt {};
|
||||
|
||||
### OPTIONAL
|
||||
qterminal = callPackage ./qterminal { };
|
||||
compton-conf = pkgs.qt5.callPackage ./compton-conf { };
|
||||
obconf-qt = callPackage ./obconf-qt { };
|
||||
lximage-qt = callPackage ./lximage-qt { };
|
||||
qps = callPackage ./qps { };
|
||||
screengrab = callPackage ./screengrab { };
|
||||
qlipper = callPackage ./qlipper { };
|
||||
lxqt-archiver = callPackage ./lxqt-archiver { };
|
||||
qterminal = callPackage ./qterminal {};
|
||||
compton-conf = pkgs.qt5.callPackage ./compton-conf {};
|
||||
obconf-qt = callPackage ./obconf-qt {};
|
||||
lximage-qt = callPackage ./lximage-qt {};
|
||||
qps = callPackage ./qps {};
|
||||
screengrab = callPackage ./screengrab {};
|
||||
qlipper = callPackage ./qlipper {};
|
||||
lxqt-archiver = callPackage ./lxqt-archiver {};
|
||||
|
||||
preRequisitePackages = [
|
||||
pkgs.gvfs # virtual file systems support for PCManFM-QT
|
||||
@ -107,5 +114,5 @@ let
|
||||
];
|
||||
|
||||
};
|
||||
|
||||
in makeScope libsForQt5.newScope packages
|
||||
in
|
||||
makeScope libsForQt5.newScope packages
|
||||
|
@ -1,18 +1,28 @@
|
||||
{
|
||||
lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools,
|
||||
pcre, libexif, xorg, libfm, menu-cache,
|
||||
qtx11extras, qttools
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, pkgconfig
|
||||
, lxqt-build-tools
|
||||
, pcre
|
||||
, libexif
|
||||
, xorg
|
||||
, libfm
|
||||
, menu-cache
|
||||
, qtx11extras
|
||||
, qttools
|
||||
, lxqtUpdateScript
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "libfm-qt-unstable";
|
||||
version = "2019-09-22";
|
||||
pname = "libfm-qt";
|
||||
version = "0.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = "libfm-qt";
|
||||
rev = "7c94e9efb996df0602f1f2b34b0216ba9b6df498";
|
||||
sha256 = "1fnli2kh7n4hxmqwcb1n06lyk67d9a2fx6z70gas5jzym7r2h5vw";
|
||||
rev = version;
|
||||
sha256 = "0isshh627zr69kdmjxsy75i1nh95ky2wfhgy90g8j4zijpkdrd3l";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -33,6 +43,8 @@ mkDerivation rec {
|
||||
menu-cache
|
||||
];
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "Core library of PCManFM-Qt (Qt binding for libfm)";
|
||||
homepage = "https://github.com/lxqt/libfm-qt";
|
||||
|
@ -1,15 +1,27 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools, qtx11extras,
|
||||
qttools, qtsvg, libqtxdg, polkit-qt, kwindowsystem, xorg }:
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, lxqt-build-tools
|
||||
, qtx11extras
|
||||
, qttools
|
||||
, qtsvg
|
||||
, libqtxdg
|
||||
, polkit-qt
|
||||
, kwindowsystem
|
||||
, xorg
|
||||
, lxqtUpdateScript
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "liblxqt";
|
||||
version = "0.14.1";
|
||||
version = "0.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "0g2502lcws5j74p82qhfryz9n51cvi85hb50r5s227xhkv91q65k";
|
||||
sha256 = "1dqxsz8fy6xyzbkxhsymmr71yw4d5dwjgqd4rdjn0r9gk8ajrfzp";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -31,6 +43,8 @@ mkDerivation rec {
|
||||
sed -i "s|\''${POLKITQT-1_POLICY_FILES_INSTALL_DIR}|''${out}/share/polkit-1/actions|" CMakeLists.txt
|
||||
'';
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "Core utility library for all LXQt components";
|
||||
homepage = "https://github.com/lxqt/liblxqt";
|
||||
|
@ -1,28 +1,42 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, qtbase, qtsvg, lxqt-build-tools }:
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, qtbase
|
||||
, qtsvg
|
||||
, lxqt-build-tools
|
||||
, lxqtUpdateScript
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "libqtxdg";
|
||||
version = "3.4.0";
|
||||
version = "3.5.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "16jqnpc740a6phq7vcgy85hl7253yzyw4m5h71r0vijk79ir73b5";
|
||||
sha256 = "00dzs6zc8prc0mxmvq0pmpy1qi8rysg97as7jfd0ndk5jii0nd85";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake lxqt-build-tools ];
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
lxqt-build-tools
|
||||
];
|
||||
|
||||
buildInputs = [ qtbase qtsvg ];
|
||||
buildInputs = [
|
||||
qtbase
|
||||
qtsvg
|
||||
];
|
||||
|
||||
preConfigure = ''
|
||||
cmakeFlagsArray+=(
|
||||
"-DQTXDGX_ICONENGINEPLUGIN_INSTALL_PATH=$out/$qtPluginPrefix"
|
||||
"-DCMAKE_INSTALL_INCLUDEDIR=include"
|
||||
"-DCMAKE_INSTALL_LIBDIR=lib"
|
||||
"-DQTXDGX_ICONENGINEPLUGIN_INSTALL_PATH=$out/$qtPluginPrefix/iconengines"
|
||||
)
|
||||
'';
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "Qt implementation of freedesktop.org xdg specs";
|
||||
homepage = "https://github.com/lxqt/libqtxdg";
|
||||
|
@ -1,19 +1,33 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, qtbase, lxqt-build-tools }:
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, qtbase
|
||||
, lxqt-build-tools
|
||||
, lxqtUpdateScript
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "libsysstat";
|
||||
version = "0.4.2";
|
||||
version = "0.4.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "10h9n7km7yx8bnmzxi4nn1yqq03hizjkrx4745j0mczy7niiffsz";
|
||||
sha256 = "1dlshyv7pd7gwl55rd3msppjdpz2pwp5f4da9a9wapg7kiskqahf";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake lxqt-build-tools ];
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
lxqt-build-tools
|
||||
];
|
||||
|
||||
buildInputs = [ qtbase ];
|
||||
buildInputs = [
|
||||
qtbase
|
||||
];
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "Library used to query system info and statistics";
|
||||
|
@ -1,15 +1,28 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, qtbase, qttools,
|
||||
qtx11extras, qtsvg, xorg, lxqt-build-tools, libfm-qt, libexif }:
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, pkgconfig
|
||||
, qtbase
|
||||
, qttools
|
||||
, qtx11extras
|
||||
, qtsvg
|
||||
, xorg
|
||||
, lxqt-build-tools
|
||||
, libfm-qt
|
||||
, libexif
|
||||
, lxqtUpdateScript
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "lximage-qt";
|
||||
version = "0.14.1";
|
||||
version = "0.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "175l2w5w6iag01v05jq90pxx0al24wpw3mgsbcgqhl4z6h860r32";
|
||||
sha256 = "1pz0ird5vyrz1xycfn2vqh628f2mzwrx0psnp4hqdmj1xk9bjkbp";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -29,6 +42,8 @@ mkDerivation rec {
|
||||
libexif
|
||||
];
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "The image viewer and screenshot tool for lxqt";
|
||||
homepage = "https://github.com/lxqt/lximage-qt";
|
||||
|
@ -1,14 +1,26 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools, qtx11extras, qttools, qtsvg, kwindowsystem, liblxqt, libqtxdg }:
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, lxqt-build-tools
|
||||
, qtx11extras
|
||||
, qttools
|
||||
, qtsvg
|
||||
, kwindowsystem
|
||||
, liblxqt
|
||||
, libqtxdg
|
||||
, lxqtUpdateScript
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "lxqt-about";
|
||||
version = "0.14.1";
|
||||
version = "0.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "0dj2rhbhnkzmv1iqqyq0bcp03imwnvxdr7rnpqnrs9kkjacm8zvr";
|
||||
sha256 = "0bgwh9jbvpnsdcij0bfkgzg0pb0ljjalv65q4q0hlha430pmpv3x";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -25,6 +37,8 @@ mkDerivation rec {
|
||||
libqtxdg
|
||||
];
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "Dialogue window providing information about LXQt and the system it's running on";
|
||||
homepage = "https://github.com/lxqt/lxqt-about";
|
||||
|
@ -1,14 +1,27 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools, qtx11extras, qttools, qtsvg, kwindowsystem, liblxqt, libqtxdg, polkit-qt }:
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, lxqt-build-tools
|
||||
, qtx11extras
|
||||
, qttools
|
||||
, qtsvg
|
||||
, kwindowsystem
|
||||
, liblxqt
|
||||
, libqtxdg
|
||||
, polkit-qt
|
||||
, lxqtUpdateScript
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "lxqt-admin";
|
||||
version = "0.14.1";
|
||||
version = "0.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "121qj46app2bqdr24g5sz2mdjfd9w86wpgkwap46s0zgxm4li44i";
|
||||
sha256 = "16fbnlvla8lq6rkv5gpmkw2jj9h1wzd3jcf8sjrbns6ygyfdxx3a";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -31,6 +44,8 @@ mkDerivation rec {
|
||||
-i lxqt-admin-user/CMakeLists.txt
|
||||
'';
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "LXQt system administration tool";
|
||||
homepage = "https://github.com/lxqt/lxqt-admin";
|
||||
|
@ -1,15 +1,26 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools, json-glib, libfm-qt, qtbase, qttools, qtx11extras }:
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, pkgconfig
|
||||
, lxqt-build-tools
|
||||
, json-glib
|
||||
, libfm-qt
|
||||
, qtbase
|
||||
, qttools
|
||||
, qtx11extras
|
||||
, lxqtUpdateScript
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
# pname = "lxqt-archiver";
|
||||
pname = "lxqt-archiver-unstable";
|
||||
version = "2019-09-25";
|
||||
pname = "lxqt-archiver";
|
||||
version = "0.1.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = "lxqt-archiver";
|
||||
rev = "62501255434b2ba6a8fd043a5af13dc0df038a5b";
|
||||
sha256 = "1af58k68karmnay7xgngzlmcgkmvx6hay5m1xbl5id9hh16n20in";
|
||||
rev = version;
|
||||
sha256 = "0c0y8sy12laqyanvy6mmnpjvy1yb8k3241pbxhc3nyl5zrq3hzdh";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -26,10 +37,10 @@ mkDerivation rec {
|
||||
qtx11extras
|
||||
];
|
||||
|
||||
cmakeFlags = [ "-DPULL_TRANSLATIONS=NO" ];
|
||||
|
||||
hardeningDisable = [ "format" ];
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "Archive tool for the LXQt desktop environment";
|
||||
homepage = "https://github.com/lxqt/lxqt-archiver/";
|
||||
|
@ -1,19 +1,36 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, pcre, qtbase, glib }:
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, pkgconfig
|
||||
, pcre
|
||||
, qtbase
|
||||
, glib
|
||||
, lxqtUpdateScript
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "lxqt-build-tools";
|
||||
version = "0.6.0";
|
||||
version = "0.7.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "0i7m9s4g5rsw28vclc9nh0zcapx85cqfwxkx7rrw7wa12svy7pm2";
|
||||
sha256 = "18l1w9lyf3nyj05wjhaj4lclak6qydlhw9bqi6kxgr1bv8k709lf";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake pkgconfig setupHook ];
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
pkgconfig
|
||||
setupHook
|
||||
];
|
||||
|
||||
buildInputs = [ qtbase glib pcre ];
|
||||
buildInputs = [
|
||||
qtbase
|
||||
glib
|
||||
pcre
|
||||
];
|
||||
|
||||
setupHook = ./setup-hook.sh;
|
||||
|
||||
@ -24,6 +41,8 @@ mkDerivation rec {
|
||||
cp ${./LXQtConfigVars.cmake} $out/share/cmake/lxqt-build-tools/modules/LXQtConfigVars.cmake
|
||||
'';
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "Various packaging tools and scripts for LXQt applications";
|
||||
homepage = "https://github.com/lxqt/lxqt-build-tools";
|
||||
|
@ -1,16 +1,30 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools, qtbase,
|
||||
qtx11extras, qttools, qtsvg, kwindowsystem, libkscreen, liblxqt,
|
||||
libqtxdg, xorg }:
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, pkgconfig
|
||||
, lxqt-build-tools
|
||||
, qtbase
|
||||
, qtx11extras
|
||||
, qttools
|
||||
, qtsvg
|
||||
, kwindowsystem
|
||||
, libkscreen
|
||||
, liblxqt
|
||||
, libqtxdg
|
||||
, xorg
|
||||
, lxqtUpdateScript
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "lxqt-config";
|
||||
version = "0.14.1";
|
||||
version = "0.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "0x1k08587i2pakxlrj2n0l82r179sfywnzn2cphxiy89r5zpn7vi";
|
||||
sha256 = "1nqkc716rl4c0rad4vqlqadm6lljrhwpdflaa5k9lrdiingr0s7s";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -41,6 +55,8 @@ mkDerivation rec {
|
||||
sed -i "/\''${XORG_LIBINPUT_INCLUDE_DIRS}/a ${xorg.xf86inputlibinput.dev}/include/xorg" lxqt-config-input/CMakeLists.txt
|
||||
'';
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "Tools to configure LXQt and the underlying operating system";
|
||||
homepage = "https://github.com/lxqt/lxqt-config";
|
||||
|
@ -1,14 +1,27 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools, qtbase, qttools, qtx11extras, qtsvg, kwindowsystem, liblxqt, libqtxdg }:
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, lxqt-build-tools
|
||||
, qtbase
|
||||
, qttools
|
||||
, qtx11extras
|
||||
, qtsvg
|
||||
, kwindowsystem
|
||||
, liblxqt
|
||||
, libqtxdg
|
||||
, lxqtUpdateScript
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "lxqt-globalkeys";
|
||||
version = "0.14.3";
|
||||
version = "0.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "1ij9abjnqbnkcb7qqk3x7y4amr6l7kkmwhdpc0x2qk4yikn5ijdg";
|
||||
sha256 = "09vib713zbmnwicijycl3n9q35l45lrcw129lf9z95s3ch81x1hm";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -26,6 +39,8 @@ mkDerivation rec {
|
||||
libqtxdg
|
||||
];
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "LXQt service for global keyboard shortcuts registration";
|
||||
homepage = "https://github.com/lxqt/lxqt-globalkeys";
|
||||
|
@ -1,14 +1,27 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools, qtbase, qttools, qtsvg, kwindowsystem, liblxqt, libqtxdg, qtx11extras }:
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, lxqt-build-tools
|
||||
, qtbase
|
||||
, qttools
|
||||
, qtsvg
|
||||
, kwindowsystem
|
||||
, liblxqt
|
||||
, libqtxdg
|
||||
, qtx11extras
|
||||
, lxqtUpdateScript
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "lxqt-notificationd";
|
||||
version = "0.14.1";
|
||||
version = "0.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "1ihaf2i361j2snyy6kg8ccpfnc8hppvacmxjqzb1lpyaf1ajd139";
|
||||
sha256 = "0vqk1rc4fn2s0ls6sl03vzsb16xczrxab4rzjim3azm4pwsxjd1k";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -26,6 +39,8 @@ mkDerivation rec {
|
||||
qtx11extras
|
||||
];
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "The LXQt notification daemon";
|
||||
homepage = "https://github.com/lxqt/lxqt-notificationd";
|
||||
|
@ -1,14 +1,27 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools, qtbase, qttools, qtsvg, qtx11extras, kwindowsystem, liblxqt, libqtxdg }:
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, lxqt-build-tools
|
||||
, qtbase
|
||||
, qttools
|
||||
, qtsvg
|
||||
, qtx11extras
|
||||
, kwindowsystem
|
||||
, liblxqt
|
||||
, libqtxdg
|
||||
, lxqtUpdateScript
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "lxqt-openssh-askpass";
|
||||
version = "0.14.1";
|
||||
version = "0.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "04jmvhhlhhspwzj4hfq7fnaa3h7h02z3rlq8p55hzlzkvshqqh1q";
|
||||
sha256 = "056bj3ssp4vqapzqg3da3m95vi92043j7mv70lmpznxdwyjwgxc3";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -26,6 +39,8 @@ mkDerivation rec {
|
||||
libqtxdg
|
||||
];
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "GUI to query passwords on behalf of SSH agents";
|
||||
homepage = "https://github.com/lxqt/lxqt-openssh-askpass";
|
||||
|
@ -1,21 +1,42 @@
|
||||
{
|
||||
lib, mkDerivation, fetchFromGitHub,
|
||||
cmake, pkgconfig, lxqt-build-tools,
|
||||
qtbase, qttools, qtx11extras, qtsvg, libdbusmenu, kwindowsystem, solid,
|
||||
kguiaddons, liblxqt, libqtxdg, lxqt-globalkeys, libsysstat,
|
||||
xorg, libstatgrab, lm_sensors, libpulseaudio, alsaLib, menu-cache,
|
||||
lxmenu-data, pcre, libXdamage
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, pkgconfig
|
||||
, lxqt-build-tools
|
||||
, qtbase
|
||||
, qttools
|
||||
, qtx11extras
|
||||
, qtsvg
|
||||
, libdbusmenu
|
||||
, kwindowsystem
|
||||
, solid
|
||||
, kguiaddons
|
||||
, liblxqt
|
||||
, libqtxdg
|
||||
, lxqt-globalkeys
|
||||
, libsysstat
|
||||
, xorg
|
||||
, libstatgrab
|
||||
, lm_sensors
|
||||
, libpulseaudio
|
||||
, alsaLib
|
||||
, menu-cache
|
||||
, lxmenu-data
|
||||
, pcre
|
||||
, libXdamage
|
||||
, lxqtUpdateScript
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "lxqt-panel";
|
||||
version = "0.14.1";
|
||||
version = "0.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "1py3i7qgm6h2iwjwqfjml1rp06s7ls1d7z5i9iizsmfshdzkaq86";
|
||||
sha256 = "0k2gqf9f4g8fpny8p5m1anzk7mdxm9dgh6xlngz25nj4mshnq3xs";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -49,6 +70,8 @@ mkDerivation rec {
|
||||
libXdamage
|
||||
];
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "The LXQt desktop panel";
|
||||
homepage = "https://github.com/lxqt/lxqt-panel";
|
||||
|
@ -1,18 +1,30 @@
|
||||
{
|
||||
lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools,
|
||||
qtbase, qttools, qtx11extras, qtsvg, polkit-qt, kwindowsystem, liblxqt,
|
||||
libqtxdg, pcre
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, pkgconfig
|
||||
, lxqt-build-tools
|
||||
, qtbase
|
||||
, qttools
|
||||
, qtx11extras
|
||||
, qtsvg
|
||||
, polkit-qt
|
||||
, kwindowsystem
|
||||
, liblxqt
|
||||
, libqtxdg
|
||||
, pcre
|
||||
, lxqtUpdateScript
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "lxqt-policykit";
|
||||
version = "0.14.1";
|
||||
version = "0.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "0mh9jw09r0mk8xmgvmzk3yyfix0pzqya28rcx71fqjpbdv1sc44l";
|
||||
sha256 = "001zgjxgvzp7clfqr46sx8m3a7v38xxgxjqrpz01lxx18zik3d9h";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -33,6 +45,8 @@ mkDerivation rec {
|
||||
pcre
|
||||
];
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "The LXQt PolicyKit agent";
|
||||
homepage = "https://github.com/lxqt/lxqt-policykit";
|
||||
|
@ -1,14 +1,29 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools, qtbase, qttools, qtx11extras, qtsvg, kwindowsystem, solid, kidletime, liblxqt, libqtxdg }:
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, lxqt-build-tools
|
||||
, qtbase
|
||||
, qttools
|
||||
, qtx11extras
|
||||
, qtsvg
|
||||
, kwindowsystem
|
||||
, solid
|
||||
, kidletime
|
||||
, liblxqt
|
||||
, libqtxdg
|
||||
, lxqtUpdateScript
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "lxqt-powermanagement";
|
||||
version = "0.14.1";
|
||||
version = "0.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "1nhp4a28bpczhwz8b8da355zsxr1qwmkrm3bwllwp39liw947clx";
|
||||
sha256 = "0gqxy4d05gibsvq27qdfwp5v19310l0ln4bvwaan6ailbyyya90f";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -28,6 +43,8 @@ mkDerivation rec {
|
||||
libqtxdg
|
||||
];
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "Power management module for LXQt";
|
||||
homepage = "https://github.com/lxqt/lxqt-powermanagement";
|
||||
|
@ -1,18 +1,27 @@
|
||||
{
|
||||
lib, mkDerivation, fetchFromGitHub,
|
||||
cmake, lxqt-build-tools,
|
||||
qtbase, qtx11extras, qttools, qtsvg, libdbusmenu, libqtxdg, libfm-qt
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, lxqt-build-tools
|
||||
, qtbase
|
||||
, qtx11extras
|
||||
, qttools
|
||||
, qtsvg
|
||||
, libdbusmenu
|
||||
, libqtxdg
|
||||
, libfm-qt
|
||||
, lxqtUpdateScript
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "lxqt-qtplugin";
|
||||
version = "0.14.0";
|
||||
version = "0.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "16n50lxnya03zcviw65sy5dyg9dsrn64k91mrqfvraf6d90md4al";
|
||||
sha256 = "17x5jr78rbsf4pbvc4y3wwkpvsmynzkxy2ifvwhqyc2gmjspp8il";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -35,6 +44,8 @@ mkDerivation rec {
|
||||
--replace "DESTINATION \"\''${QT_PLUGINS_DIR}" "DESTINATION \"$qtPluginPrefix"
|
||||
'';
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "LXQt Qt platform integration plugin";
|
||||
homepage = "https://github.com/lxqt/lxqt-qtplugin";
|
||||
|
@ -1,15 +1,32 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools, qtbase, qttools, qtsvg, kwindowsystem, liblxqt, libqtxdg, lxqt-globalkeys, qtx11extras,
|
||||
menu-cache, muparser, pcre }:
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, pkgconfig
|
||||
, lxqt-build-tools
|
||||
, qtbase
|
||||
, qttools
|
||||
, qtsvg
|
||||
, kwindowsystem
|
||||
, liblxqt
|
||||
, libqtxdg
|
||||
, lxqt-globalkeys
|
||||
, qtx11extras
|
||||
, menu-cache
|
||||
, muparser
|
||||
, pcre
|
||||
, lxqtUpdateScript
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "lxqt-runner";
|
||||
version = "0.14.1";
|
||||
version = "0.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "01a8ycpkzcbh85y4025pd3nbpnzxh98ll1xwz4ykz13yvm0l2n1w";
|
||||
sha256 = "1x6s4k27cvj2k51hwpcp3l686c2am504ckry4fm76h0mlnkffjm5";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -32,6 +49,8 @@ mkDerivation rec {
|
||||
pcre
|
||||
];
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "Tool used to launch programs quickly by typing their names";
|
||||
homepage = "https://github.com/lxqt/lxqt-runner";
|
||||
|
@ -1,14 +1,30 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools, qtbase, qttools, qtsvg, qtx11extras, kwindowsystem, liblxqt, libqtxdg, xorg, xdg-user-dirs }:
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, pkgconfig
|
||||
, lxqt-build-tools
|
||||
, qtbase
|
||||
, qttools
|
||||
, qtsvg
|
||||
, qtx11extras
|
||||
, kwindowsystem
|
||||
, liblxqt
|
||||
, libqtxdg
|
||||
, xorg
|
||||
, xdg-user-dirs
|
||||
, lxqtUpdateScript
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "lxqt-session";
|
||||
version = "0.14.1";
|
||||
version = "0.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "0s6b0lblb795zz1p7sy677c1iznhmdzc4vw3jkc2agmsrhm7if7s";
|
||||
sha256 = "0kbk13dpmr75yd905n30k51cl7srrxz31ma4kacx450qgr5rwawn";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -30,6 +46,8 @@ mkDerivation rec {
|
||||
xdg-user-dirs
|
||||
];
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "An alternative session manager ported from the original razor-session";
|
||||
homepage = "https://github.com/lxqt/lxqt-session";
|
||||
|
@ -1,14 +1,28 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools, qtbase, qttools, qtx11extras, qtsvg, kwindowsystem, liblxqt, libqtxdg, sudo }:
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, lxqt-build-tools
|
||||
, qtbase
|
||||
, qttools
|
||||
, qtx11extras
|
||||
, qtsvg
|
||||
, kwindowsystem
|
||||
, liblxqt
|
||||
, libqtxdg
|
||||
, sudo
|
||||
, lxqtUpdateScript
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "lxqt-sudo";
|
||||
version = "0.14.1";
|
||||
version = "0.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "1my0wpic20493rdlabp9ghag1g3nhwafk2yklkgczlajmarakgpc";
|
||||
sha256 = "1j8pxqxb2c10hrfq34nfx75pc0cz6044j4w458nnxbgvl5b8cdcb";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -27,6 +41,8 @@ mkDerivation rec {
|
||||
sudo
|
||||
];
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "GUI frontend for sudo/su";
|
||||
homepage = "https://github.com/lxqt/lxqt-sudo";
|
||||
|
@ -1,14 +1,20 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools }:
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, lxqt-build-tools
|
||||
, lxqtUpdateScript
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "lxqt-themes";
|
||||
version = "0.14.0";
|
||||
version = "0.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "09dkcgnf3lmfly8v90p6wjlj5rin83pbailvvpx2jr8a48a8zb9f";
|
||||
sha256 = "1magzckhgrac2b5jm83hj3s8x4hyfnbh2v86lfa4c36whnfvsz29";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -16,6 +22,8 @@ mkDerivation rec {
|
||||
lxqt-build-tools
|
||||
];
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "Themes, graphics and icons for LXQt";
|
||||
homepage = "https://github.com/lxqt/lxqt-themes";
|
||||
|
@ -1,15 +1,27 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, pcre, qtbase, qttools,
|
||||
qtx11extras, xorg, lxqt-build-tools, openbox }:
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, pkgconfig
|
||||
, pcre
|
||||
, qtbase
|
||||
, qttools
|
||||
, qtx11extras
|
||||
, xorg
|
||||
, lxqt-build-tools
|
||||
, openbox
|
||||
, lxqtUpdateScript
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "obconf-qt";
|
||||
version = "0.14.1";
|
||||
version = "0.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "15dizs072ylmld1lxwgqkvybqy8ms8zki5586xm305jnlmrkb4lq";
|
||||
sha256 = "13bah70k78kscrr01z7dwdzwhay8mz0f7gfsg2a6w113mgqkn7ib";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -29,6 +41,8 @@ mkDerivation rec {
|
||||
openbox
|
||||
];
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "The Qt port of obconf, the Openbox configuration tool";
|
||||
homepage = "https://github.com/lxqt/obconf-qt";
|
||||
|
@ -1,15 +1,25 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, lxqt, libpulseaudio,
|
||||
pcre, qtbase, qttools, qtx11extras }:
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, pkgconfig
|
||||
, lxqt
|
||||
, libpulseaudio
|
||||
, pcre
|
||||
, qtbase
|
||||
, qttools
|
||||
, qtx11extras
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "pavucontrol-qt";
|
||||
version = "0.14.1";
|
||||
version = "0.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "124dk41v8l5pv7afi1h7fgbhm8zj605yfd8b769sn7id2bqj7bis";
|
||||
sha256 = "0ppm79c6pkz2hvs1rri55d3s46j6r0vhiv634wzap9qshjb1j367";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -26,6 +36,8 @@ mkDerivation rec {
|
||||
pcre
|
||||
];
|
||||
|
||||
passthru.updateScript = lxqt.lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "A Pulseaudio mixer in Qt (port of pavucontrol)";
|
||||
homepage = "https://github.com/lxqt/pavucontrol-qt";
|
||||
|
@ -1,15 +1,27 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, lxqt, qtbase, qttools,
|
||||
qtx11extras, libfm-qt, menu-cache, lxmenu-data }:
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, pkgconfig
|
||||
, lxqt
|
||||
, qtbase
|
||||
, qttools
|
||||
, qtx11extras
|
||||
, libfm-qt
|
||||
, menu-cache
|
||||
, lxmenu-data
|
||||
, lxqtUpdateScript
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "pcmanfm-qt";
|
||||
version = "0.14.1";
|
||||
version = "0.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "1zchxlbyiifing94mqwh45pp7z3ihldknqiaz0kanq1cnma1jj6k";
|
||||
sha256 = "16zwd2jfrmsnzfpywirkrpyilq1jj99liwvg77l20b1dbql9dc0q";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -28,6 +40,8 @@ mkDerivation rec {
|
||||
lxmenu-data
|
||||
];
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "File manager and desktop icon manager (Qt port of PCManFM and libfm)";
|
||||
homepage = "https://github.com/lxqt/pcmanfm-qt";
|
||||
|
@ -1,19 +1,33 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, qtbase, qttools }:
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, qtbase
|
||||
, qttools
|
||||
, lxqtUpdateScript
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "qlipper";
|
||||
version = "5.1.1";
|
||||
version = "5.1.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pvanek";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "0vlm4ab9isi7i2bimnyrk6083j2dfdrs14qj59vjcjri7mcwmf76";
|
||||
sha256 = "0zpkcqfylcfwvadp1bidcrr64d8ls5c7bdnkfqwjjd32sd35ly60";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
];
|
||||
|
||||
buildInputs = [ qtbase qttools ];
|
||||
buildInputs = [
|
||||
qtbase
|
||||
qttools
|
||||
];
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "Cross-platform clipboard history applet";
|
||||
|
@ -1,26 +1,49 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, qtbase, qtx11extras, qttools,
|
||||
lxqt-build-tools }:
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, kwindowsystem
|
||||
, liblxqt
|
||||
, libqtxdg
|
||||
, lxqt-build-tools
|
||||
, lxqtUpdateScript
|
||||
, qtbase
|
||||
, qttools
|
||||
, qtx11extras
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "qps";
|
||||
version = "2.0.0";
|
||||
version = "2.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "03rl59yk3b24j0y0k8dpdpb3yi4f1l642zn5pp5br3s2vwx1vzkg";
|
||||
sha256 = "0jg7sfhdm5xsahzcw8hc2vpp5p3sqzdqwp4my65nj85i7wzgxmva";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake lxqt-build-tools ];
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
lxqt-build-tools
|
||||
];
|
||||
|
||||
buildInputs = [ qtbase qtx11extras qttools ];
|
||||
buildInputs = [
|
||||
kwindowsystem
|
||||
liblxqt
|
||||
libqtxdg
|
||||
qtbase
|
||||
qttools
|
||||
qtx11extras
|
||||
];
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "Qt based process manager";
|
||||
homepage = "https://github.com/lxqt/qps";
|
||||
license = licenses.gpl2;
|
||||
platforms = with platforms; linux; # does not build on darwin
|
||||
platforms = with platforms; linux; # does not build on darwin
|
||||
maintainers = with maintainers; [ romildo ];
|
||||
};
|
||||
}
|
||||
|
@ -1,15 +1,24 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools, qtermwidget,
|
||||
qtbase, qttools, qtx11extras }:
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, lxqt-build-tools
|
||||
, qtermwidget
|
||||
, qtbase
|
||||
, qttools
|
||||
, qtx11extras
|
||||
, lxqtUpdateScript
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "qterminal";
|
||||
version = "0.14.1";
|
||||
version = "0.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "0bq6lvns56caijdmjm05nsj9vg69v9x5vid24bfxasck6q8nw24w";
|
||||
sha256 = "1vna0fvdasrdx7l5zxaaxi1v9fy34g2qblgkdhpczxivnmmxm5a3";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -24,6 +33,8 @@ mkDerivation rec {
|
||||
qtermwidget
|
||||
];
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "A lightweight Qt-based terminal emulator";
|
||||
homepage = "https://github.com/lxqt/qterminal";
|
||||
|
@ -1,19 +1,35 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, qtbase, qttools, lxqt-build-tools }:
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, qtbase
|
||||
, qttools
|
||||
, lxqt-build-tools
|
||||
, lxqtUpdateScript
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "qtermwidget";
|
||||
version = "0.14.1";
|
||||
version = "0.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "1pz8dwb86jpga4vfyn5v9n2s6dx3zh74yfp1kjsmsmhf878zs6lv";
|
||||
sha256 = "07wvcc650998yav9hr4hpm842j0iqdvls3mn9n2n4v8xvm7cii2m";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake lxqt-build-tools ];
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
lxqt-build-tools
|
||||
];
|
||||
|
||||
buildInputs = [ qtbase qttools ];
|
||||
buildInputs = [
|
||||
qtbase
|
||||
qttools
|
||||
];
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "A terminal emulator widget for Qt 5";
|
||||
|
@ -1,14 +1,28 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, qtbase, qttools, qtx11extras, qtsvg, kwindowsystem, libqtxdg, xorg, autoPatchelfHook }:
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, pkgconfig
|
||||
, qtbase
|
||||
, qttools
|
||||
, qtx11extras
|
||||
, qtsvg
|
||||
, kwindowsystem
|
||||
, libqtxdg
|
||||
, xorg
|
||||
, autoPatchelfHook
|
||||
, lxqtUpdateScript
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "screengrab";
|
||||
version = "2.0.0";
|
||||
version = "2.0.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxqt";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "1syvdqq45dr8hwigl9ax1wxr33m8z23nh6xzzlqbflyyd93xzjmn";
|
||||
sha256 = "07wm9q0nkrvmyb12kvh0709qrwizlxgy6i5j2czhb4giljrpr4x6";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -28,6 +42,8 @@ mkDerivation rec {
|
||||
xorg.libXdmcp
|
||||
];
|
||||
|
||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "Crossplatform tool for fast making screenshots";
|
||||
homepage = "https://github.com/lxqt/screengrab";
|
||||
|
@ -1,39 +0,0 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p libarchive curl common-updater-scripts
|
||||
|
||||
set -eu -o pipefail
|
||||
|
||||
cd "$(dirname "${BASH_SOURCE[0]}")"
|
||||
root=../../..
|
||||
export NIXPKGS_ALLOW_UNFREE=1
|
||||
|
||||
lxqt_version=0.14.1
|
||||
lxqtrepo=https://downloads.lxqt.org/${lxqt_version}.html
|
||||
|
||||
version() {
|
||||
(cd "$root" && nix-instantiate --eval --strict -A "$1.version" 2>/dev/null | tr -d '"')
|
||||
}
|
||||
|
||||
update_lxqt() {
|
||||
local pname
|
||||
local pversion
|
||||
curl -sS ${lxqtrepo} | sed -rne 's|.*<a href=.*>(.+) (.+)</a><br>|\1 \2|p' |
|
||||
while read pname pversion; do
|
||||
local pversionold=$(version lxqt.$pname)
|
||||
if [[ "$pversion" = "$pversionold" ]]; then
|
||||
echo "nothing to do, $pname $pversion is current"
|
||||
else
|
||||
echo "$pname: $pversionold -> $pversion"
|
||||
(cd "$root"
|
||||
local pfile=$(EDITOR=echo nix edit -f. lxqt.$pname 2>/dev/null)
|
||||
update-source-version lxqt.$pname "$pversion"
|
||||
git add $pfile
|
||||
git commit -m "lxqt.$pname: $pversionold -> $pversion"
|
||||
)
|
||||
fi
|
||||
echo
|
||||
done
|
||||
echo DONE
|
||||
}
|
||||
|
||||
update_lxqt
|
@ -45,12 +45,6 @@ self: super: {
|
||||
# Needs older QuickCheck version
|
||||
attoparsec-varword = dontCheck super.attoparsec-varword;
|
||||
|
||||
# http://bugs.darcs.net/issue2642
|
||||
darcs = doJailbreak (appendPatches super.darcs [
|
||||
./patches/darcs-setup.patch
|
||||
./patches/darcs-2.14.2-Compile-against-GHC-8.8.patch
|
||||
]);
|
||||
|
||||
# Tests are failing
|
||||
# https://github.com/bos/statistics/issues/123
|
||||
statistics = dontCheck super.statistics;
|
||||
@ -1073,35 +1067,8 @@ self: super: {
|
||||
|
||||
# Generate shell completion.
|
||||
cabal2nix = generateOptparseApplicativeCompletion "cabal2nix" super.cabal2nix;
|
||||
|
||||
stack =
|
||||
let
|
||||
stackWithOverrides =
|
||||
super.stack.override {
|
||||
# stack-2.1.3.1 requires pantry-0.2.0.0.
|
||||
pantry = self.pantry_0_2_0_0;
|
||||
};
|
||||
in
|
||||
generateOptparseApplicativeCompletion
|
||||
"stack"
|
||||
(appendPatches stackWithOverrides [
|
||||
# This PR fixes stack up to be able to build with Cabal-3. This patch
|
||||
# can probably be dropped when the next stack release is made after
|
||||
# 2.1.3.1.
|
||||
(pkgs.fetchpatch {
|
||||
url = "https://github.com/commercialhaskell/stack/pull/5156.diff";
|
||||
sha256 = "0knk6f9fh1b4fxkhvx5gfrwclal4vi2va4zy34gpmwnjr7knf42y";
|
||||
excludes = [
|
||||
"snapshot-lts-12.yaml"
|
||||
"snapshot-nightly.yaml"
|
||||
"snapshot.yaml"
|
||||
];
|
||||
})
|
||||
# This patch fixes stack up to be able to build various GHC-8.8 changes.
|
||||
# This can hopefully be dropped when the next stack release is made
|
||||
# after 2.1.3.1 (assuming the next stack release uses GHC-8.8).
|
||||
./patches/stack-ghc882-support.patch
|
||||
]);
|
||||
stack = generateOptparseApplicativeCompletion "stack" (super.stack.overrideScope (self: super: { http-download = self.http-download_0_2_0_0; }));
|
||||
http-download_0_2_0_0 = dontCheck super.http-download_0_2_0_0;
|
||||
|
||||
# musl fixes
|
||||
# dontCheck: use of non-standard strptime "%s" which musl doesn't support; only used in test
|
||||
@ -1516,4 +1483,9 @@ self: super: {
|
||||
sha256 = "sha256:0xbfhzhzg94b4r5qy5dg1c40liswwpqarrc2chcwgfbfnrmwkfc2";
|
||||
});
|
||||
|
||||
# Depends on selective >= 0.4, but the default of selective is 0.3
|
||||
headed-megaparsec = super.headed-megaparsec.override {
|
||||
selective = self.selective_0_4_1;
|
||||
};
|
||||
|
||||
} // import ./configuration-tensorflow.nix {inherit pkgs haskellLib;} self super
|
||||
|
@ -42,12 +42,30 @@ self: super: {
|
||||
unix = null;
|
||||
xhtml = null;
|
||||
|
||||
# The proper 3.2.0.0 release does not compile with ghc-8.10.1, so we take the
|
||||
# hitherto unreleased next version from the '3.2' branch of the upstream git
|
||||
# repository for the time being.
|
||||
cabal-install = assert super.cabal-install.version == "3.2.0.0";
|
||||
overrideCabal super.cabal-install (drv: {
|
||||
postUnpack = "sourceRoot+=/cabal-install; echo source root reset to $sourceRoot";
|
||||
version = "3.2.0.0-git";
|
||||
editedCabalFile = null;
|
||||
src = pkgs.fetchgit {
|
||||
url = "git://github.com/haskell/cabal.git";
|
||||
rev = "9bd4cc0591616aeae78e17167338371a2542a475";
|
||||
sha256 = "005q1shh7vqgykkp72hhmswmrfpz761x0q0jqfnl3wqim4xd9dg0";
|
||||
};
|
||||
});
|
||||
|
||||
# Deviate from Stackage LTS-15.x to fix the build.
|
||||
haddock-library = self.haddock-library_1_9_0;
|
||||
|
||||
# Jailbreak to fix the build.
|
||||
async = doJailbreak super.async;
|
||||
ChasingBottoms = doJailbreak super.ChasingBottoms;
|
||||
ed25519 = doJailbreak super.ed25519;
|
||||
email-validate = doJailbreak super.email-validate; # https://github.com/Porges/email-validate-hs/issues/51
|
||||
feed = doJailbreak super.feed; # https://github.com/bergmark/feed/issues/48
|
||||
hashable = doJailbreak super.hashable;
|
||||
pandoc = doJailbreak super.pandoc;
|
||||
parallel = doJailbreak super.parallel;
|
||||
@ -60,6 +78,7 @@ self: super: {
|
||||
system-fileio = doJailbreak super.system-fileio;
|
||||
tar = doJailbreak super.tar;
|
||||
tasty-expected-failure = doJailbreak super.tasty-expected-failure;
|
||||
tasty-rerun = doJailbreak super.tasty-rerun; # https://github.com/ocharles/tasty-rerun/issues/18
|
||||
unliftio-core = doJailbreak super.unliftio-core;
|
||||
vector = doJailbreak super.vector;
|
||||
zlib = doJailbreak super.zlib;
|
||||
|
@ -72,7 +72,7 @@ default-package-overrides:
|
||||
# gi-gdkx11-4.x requires gtk-4.x, which is still under development and
|
||||
# not yet available in Nixpkgs
|
||||
- gi-gdkx11 < 4
|
||||
# LTS Haskell 15.9
|
||||
# LTS Haskell 15.10
|
||||
- abstract-deque ==0.3
|
||||
- abstract-par ==0.3.3
|
||||
- AC-Angle ==1.0
|
||||
@ -319,7 +319,7 @@ default-package-overrides:
|
||||
- blaze-bootstrap ==0.1.0.1
|
||||
- blaze-builder ==0.4.1.0
|
||||
- blaze-html ==0.9.1.2
|
||||
- blaze-markup ==0.8.2.4
|
||||
- blaze-markup ==0.8.2.5
|
||||
- blaze-svg ==0.3.6.1
|
||||
- blaze-textual ==0.2.1.0
|
||||
- bmp ==1.2.6.3
|
||||
@ -437,9 +437,9 @@ default-package-overrides:
|
||||
- codec-rpm ==0.2.2
|
||||
- code-page ==0.2
|
||||
- coercible-utils ==0.1.0
|
||||
- co-log ==0.4.0.0
|
||||
- co-log-core ==0.2.1.0
|
||||
- co-log-polysemy ==0.0.1.1
|
||||
- co-log ==0.4.0.1
|
||||
- co-log-core ==0.2.1.1
|
||||
- co-log-polysemy ==0.0.1.2
|
||||
- Color ==0.1.4
|
||||
- colorful-monoids ==0.2.1.2
|
||||
- colorize-haskell ==1.0.1
|
||||
@ -859,7 +859,7 @@ default-package-overrides:
|
||||
- gi-glib ==2.0.23
|
||||
- gi-gobject ==2.0.22
|
||||
- gi-graphene ==1.0.1
|
||||
- gi-gtk ==3.0.32
|
||||
- gi-gtk ==3.0.33
|
||||
- gi-gtk-hs ==0.3.8.1
|
||||
- gingersnap ==0.3.1.0
|
||||
- gi-pango ==1.0.22
|
||||
@ -889,7 +889,7 @@ default-package-overrides:
|
||||
- graphviz ==2999.20.0.4
|
||||
- graph-wrapper ==0.2.6.0
|
||||
- gravatar ==0.8.0
|
||||
- greskell ==1.0.0.1
|
||||
- greskell ==1.0.1.0
|
||||
- greskell-core ==0.1.3.2
|
||||
- greskell-websocket ==0.1.2.1
|
||||
- groom ==0.1.2.1
|
||||
@ -932,6 +932,8 @@ default-package-overrides:
|
||||
- HaXml ==1.25.5
|
||||
- haxr ==3000.11.4
|
||||
- hdaemonize ==0.5.6
|
||||
- HDBC ==2.4.0.3
|
||||
- HDBC-session ==0.1.2.0
|
||||
- headroom ==0.1.3.0
|
||||
- heap ==1.0.4
|
||||
- heaps ==0.3.6.1
|
||||
@ -958,7 +960,7 @@ default-package-overrides:
|
||||
- highlighting-kate ==0.6.4
|
||||
- hinfo ==0.0.3.0
|
||||
- hinotify ==0.4
|
||||
- hint ==0.9.0.2
|
||||
- hint ==0.9.0.3
|
||||
- hjsmin ==0.2.0.4
|
||||
- hkgr ==0.2.5.2
|
||||
- hlibcpuid ==0.2.0
|
||||
@ -1471,7 +1473,7 @@ default-package-overrides:
|
||||
- OneTuple ==0.2.2.1
|
||||
- Only ==0.1
|
||||
- oo-prototypes ==0.1.0.0
|
||||
- opaleye ==0.6.7004.1
|
||||
- opaleye ==0.6.7004.2
|
||||
- OpenAL ==1.7.0.5
|
||||
- open-browser ==0.2.1.0
|
||||
- openexr-write ==0.1.0.2
|
||||
@ -1541,6 +1543,7 @@ default-package-overrides:
|
||||
- perfect-vector-shuffle ==0.1.1.1
|
||||
- persist ==0.1.1.4
|
||||
- persistable-record ==0.6.0.4
|
||||
- persistable-types-HDBC-pg ==0.0.3.5
|
||||
- persistent ==2.10.5.2
|
||||
- persistent-mysql ==2.10.2.3
|
||||
- persistent-pagination ==0.1.1.1
|
||||
@ -1625,7 +1628,7 @@ default-package-overrides:
|
||||
- print-console-colors ==0.1.0.0
|
||||
- process-extras ==0.7.4
|
||||
- product-isomorphic ==0.0.3.3
|
||||
- product-profunctors ==0.10.0.0
|
||||
- product-profunctors ==0.10.0.1
|
||||
- profiterole ==0.1
|
||||
- profunctors ==5.5.2
|
||||
- projectroot ==0.2.0.1
|
||||
@ -1727,6 +1730,8 @@ default-package-overrides:
|
||||
- reinterpret-cast ==0.1.0
|
||||
- relapse ==1.0.0.0
|
||||
- relational-query ==0.12.2.2
|
||||
- relational-query-HDBC ==0.7.2.0
|
||||
- relational-record ==0.2.2.0
|
||||
- relational-schemas ==0.1.8.0
|
||||
- relude ==0.6.0.0
|
||||
- renderable ==0.2.0.1
|
||||
@ -1738,10 +1743,10 @@ default-package-overrides:
|
||||
- rerebase ==1.4.1
|
||||
- resolv ==0.1.2.0
|
||||
- resource-pool ==0.2.3.2
|
||||
- resourcet ==1.2.3
|
||||
- resourcet ==1.2.4
|
||||
- result ==0.2.6.0
|
||||
- rethinkdb-client-driver ==0.0.25
|
||||
- retry ==0.8.1.1
|
||||
- retry ==0.8.1.2
|
||||
- rev-state ==0.1.2
|
||||
- rfc1751 ==0.1.2
|
||||
- rfc5051 ==0.1.0.4
|
||||
@ -1779,8 +1784,8 @@ default-package-overrides:
|
||||
- sampling ==0.3.3
|
||||
- say ==0.1.0.1
|
||||
- sbp ==2.6.3
|
||||
- scalpel ==0.6.1
|
||||
- scalpel-core ==0.6.1
|
||||
- scalpel ==0.6.2
|
||||
- scalpel-core ==0.6.2
|
||||
- scanf ==0.1.0.0
|
||||
- scanner ==0.3.1
|
||||
- scheduler ==1.4.2.2
|
||||
@ -1844,7 +1849,7 @@ default-package-overrides:
|
||||
- servant-swagger-ui-redoc ==0.3.3.1.22.3
|
||||
- servant-websockets ==2.0.0
|
||||
- servant-yaml ==0.1.0.1
|
||||
- serverless-haskell ==0.10.2
|
||||
- serverless-haskell ==0.10.5
|
||||
- serversession ==1.0.1
|
||||
- serversession-frontend-wai ==1.0
|
||||
- ses-html ==0.4.0.0
|
||||
@ -1889,7 +1894,7 @@ default-package-overrides:
|
||||
- skip-var ==0.1.1.0
|
||||
- skylighting ==0.8.3.4
|
||||
- skylighting-core ==0.8.3.4
|
||||
- slist ==0.1.0.0
|
||||
- slist ==0.1.1.0
|
||||
- small-bytearray-builder ==0.3.4.0
|
||||
- smallcheck ==1.1.5
|
||||
- smoothie ==0.4.2.10
|
||||
@ -1946,7 +1951,7 @@ default-package-overrides:
|
||||
- streaming ==0.2.3.0
|
||||
- streaming-bytestring ==0.1.6
|
||||
- streaming-commons ==0.2.1.2
|
||||
- streamly ==0.7.1
|
||||
- streamly ==0.7.2
|
||||
- streams ==3.3
|
||||
- strict ==0.3.2
|
||||
- strict-base-types ==0.6.1
|
||||
@ -1960,8 +1965,8 @@ default-package-overrides:
|
||||
- string-qq ==0.0.4
|
||||
- stringsearch ==0.3.6.6
|
||||
- string-transform ==1.1.1
|
||||
- stripe-concepts ==1.0.2.0
|
||||
- stripe-signature ==1.0.0.1
|
||||
- stripe-concepts ==1.0.2.2
|
||||
- stripe-signature ==1.0.0.2
|
||||
- strive ==5.0.10
|
||||
- structs ==0.1.3
|
||||
- structured-cli ==2.5.2.0
|
||||
@ -2035,7 +2040,7 @@ default-package-overrides:
|
||||
- test-framework-th ==0.2.4
|
||||
- testing-feat ==1.1.0.0
|
||||
- testing-type-modifiers ==0.1.0.1
|
||||
- texmath ==0.12.0.1
|
||||
- texmath ==0.12.0.2
|
||||
- text-binary ==0.2.1.1
|
||||
- text-builder ==0.6.6.1
|
||||
- text-conversions ==0.3.0
|
||||
@ -2131,7 +2136,7 @@ default-package-overrides:
|
||||
- typed-uuid ==0.0.0.2
|
||||
- type-equality ==1
|
||||
- type-errors ==0.2.0.0
|
||||
- type-errors-pretty ==0.0.1.0
|
||||
- type-errors-pretty ==0.0.1.1
|
||||
- type-fun ==0.1.1
|
||||
- type-hint ==0.1
|
||||
- type-level-integers ==0.0.1
|
||||
@ -2143,7 +2148,7 @@ default-package-overrides:
|
||||
- type-of-html ==1.5.1.0
|
||||
- type-of-html-static ==0.1.0.2
|
||||
- type-operators ==0.2.0.0
|
||||
- typerep-map ==0.3.2
|
||||
- typerep-map ==0.3.3.0
|
||||
- type-spec ==0.4.0.0
|
||||
- tzdata ==0.1.20190911.0
|
||||
- ua-parser ==0.7.5.1
|
||||
@ -2201,7 +2206,7 @@ default-package-overrides:
|
||||
- validity ==0.9.0.3
|
||||
- validity-aeson ==0.2.0.3
|
||||
- validity-bytestring ==0.4.1.1
|
||||
- validity-containers ==0.5.0.1
|
||||
- validity-containers ==0.5.0.3
|
||||
- validity-path ==0.4.0.1
|
||||
- validity-primitive ==0.0.0.1
|
||||
- validity-scientific ==0.2.0.3
|
||||
@ -4419,6 +4424,8 @@ broken-packages:
|
||||
- elision
|
||||
- elm-street
|
||||
- elm-websocket
|
||||
- elynx
|
||||
- elynx-markov
|
||||
- elynx-seq
|
||||
- elynx-tools
|
||||
- elynx-tree
|
||||
@ -5333,7 +5340,6 @@ broken-packages:
|
||||
- haddock-leksah
|
||||
- haddock-test
|
||||
- haddocset
|
||||
- hadolint
|
||||
- hadoop-formats
|
||||
- hadoop-rpc
|
||||
- hadoop-tools
|
||||
@ -5626,7 +5632,6 @@ broken-packages:
|
||||
- hasql-postgres
|
||||
- hasql-postgres-options
|
||||
- hasql-simple
|
||||
- hasql-th
|
||||
- hastache
|
||||
- hastache-aeson
|
||||
- haste
|
||||
@ -5708,7 +5713,6 @@ broken-packages:
|
||||
- hdph-closure
|
||||
- hdr-histogram
|
||||
- HDRUtils
|
||||
- headed-megaparsec
|
||||
- headergen
|
||||
- heapsort
|
||||
- heart-app
|
||||
@ -8658,6 +8662,7 @@ broken-packages:
|
||||
- reflex-basic-host
|
||||
- reflex-dom-retractable
|
||||
- reflex-dom-svg
|
||||
- reflex-dynamic-containers
|
||||
- reflex-fsnotify
|
||||
- reflex-ghci
|
||||
- reflex-gloss
|
||||
@ -8666,6 +8671,7 @@ broken-packages:
|
||||
- reflex-orphans
|
||||
- reflex-process
|
||||
- reflex-sdl2
|
||||
- reflex-test-host
|
||||
- reflex-transformers
|
||||
- reflex-vty
|
||||
- reformat
|
||||
@ -9151,6 +9157,7 @@ broken-packages:
|
||||
- shake-pack
|
||||
- shake-path
|
||||
- shake-persist
|
||||
- shakebook
|
||||
- shaker
|
||||
- shakespeare-babel
|
||||
- shakespeare-sass
|
||||
|
@ -628,11 +628,6 @@ self: super: builtins.intersectAttrs super {
|
||||
http-download = dontCheck super.http-download;
|
||||
pantry = dontCheck super.pantry;
|
||||
|
||||
# Hadolint wants to build a statically linked binary by default.
|
||||
hadolint = overrideCabal super.hadolint (drv: {
|
||||
preConfigure = "sed -i -e /ld-options:/d hadolint.cabal";
|
||||
});
|
||||
|
||||
# gtk2hs-buildtools is listed in setupHaskellDepends, but we
|
||||
# need it during the build itself, too.
|
||||
cairo = addBuildTool super.cairo self.buildHaskellPackages.gtk2hs-buildtools;
|
||||
|
2413
pkgs/development/haskell-modules/hackage-packages.nix
generated
2413
pkgs/development/haskell-modules/hackage-packages.nix
generated
File diff suppressed because it is too large
Load Diff
@ -1,104 +0,0 @@
|
||||
diff --git a/src/Stack/Coverage.hs b/src/Stack/Coverage.hs
|
||||
index d95fa332..f80e121a 100644
|
||||
--- a/src/Stack/Coverage.hs
|
||||
+++ b/src/Stack/Coverage.hs
|
||||
@@ -235,7 +235,7 @@ generateHpcReportForTargets opts tixFiles targetNames = do
|
||||
case nc of
|
||||
CTest testName ->
|
||||
liftM (pkgPath </>) $ parseRelFile (T.unpack testName ++ "/" ++ T.unpack testName ++ ".tix")
|
||||
- _ -> fail $
|
||||
+ _ -> liftIO $ fail $
|
||||
"Can't specify anything except test-suites as hpc report targets (" ++
|
||||
packageNameString name ++
|
||||
" is used with a non test-suite target)"
|
||||
diff --git a/src/Stack/Package.hs b/src/Stack/Package.hs
|
||||
index b69337ce..08eb9b9f 100644
|
||||
--- a/src/Stack/Package.hs
|
||||
+++ b/src/Stack/Package.hs
|
||||
@@ -463,7 +463,7 @@ makeObjectFilePathFromC
|
||||
makeObjectFilePathFromC cabalDir namedComponent distDir cFilePath = do
|
||||
relCFilePath <- stripProperPrefix cabalDir cFilePath
|
||||
relOFilePath <-
|
||||
- parseRelFile (replaceExtension (toFilePath relCFilePath) "o")
|
||||
+ parseRelFile (System.FilePath.replaceExtension (toFilePath relCFilePath) "o")
|
||||
return (componentOutputDir namedComponent distDir </> relOFilePath)
|
||||
|
||||
-- | Make the global autogen dir if Cabal version is new enough.
|
||||
diff --git a/src/Stack/Script.hs b/src/Stack/Script.hs
|
||||
index c63c9f62..70257be1 100644
|
||||
--- a/src/Stack/Script.hs
|
||||
+++ b/src/Stack/Script.hs
|
||||
@@ -172,8 +172,8 @@ scriptCmd opts = do
|
||||
|
||||
toExeName fp =
|
||||
if osIsWindows
|
||||
- then replaceExtension fp "exe"
|
||||
- else dropExtension fp
|
||||
+ then System.FilePath.replaceExtension fp "exe"
|
||||
+ else System.FilePath.dropExtension fp
|
||||
|
||||
getPackagesFromImports
|
||||
:: FilePath -- ^ script filename
|
||||
diff --git a/src/Stack/Setup.hs b/src/Stack/Setup.hs
|
||||
index 8bbfc45c..5c5b028c 100644
|
||||
--- a/src/Stack/Setup.hs
|
||||
+++ b/src/Stack/Setup.hs
|
||||
@@ -876,7 +876,7 @@ buildGhcFromSource getSetupInfo' installed (CompilerRepository url) commitId fla
|
||||
(_,files) <- listDir (cwd </> bindistPath)
|
||||
let
|
||||
isBindist p = "ghc-" `isPrefixOf` (toFilePath (filename p))
|
||||
- && fileExtension (filename p) == ".xz"
|
||||
+ && (maybe "" id (fileExtension (filename p))) == ".xz"
|
||||
mbindist = filter isBindist files
|
||||
case mbindist of
|
||||
[bindist] -> do
|
||||
diff --git a/src/Stack/Storage/Project.hs b/src/Stack/Storage/Project.hs
|
||||
index dc5318d8..984e6259 100644
|
||||
--- a/src/Stack/Storage/Project.hs
|
||||
+++ b/src/Stack/Storage/Project.hs
|
||||
@@ -12,6 +12,9 @@
|
||||
{-# LANGUAGE UndecidableInstances #-}
|
||||
{-# OPTIONS_GHC -Wno-unused-top-binds -Wno-identities #-}
|
||||
|
||||
+{-# LANGUAGE DerivingStrategies #-}
|
||||
+{-# LANGUAGE StandaloneDeriving #-}
|
||||
+
|
||||
-- | Work with SQLite database used for caches across a single project.
|
||||
module Stack.Storage.Project
|
||||
( initProjectStorage
|
||||
diff --git a/src/Stack/Storage/User.hs b/src/Stack/Storage/User.hs
|
||||
index 3845b094..09695344 100644
|
||||
--- a/src/Stack/Storage/User.hs
|
||||
+++ b/src/Stack/Storage/User.hs
|
||||
@@ -12,6 +12,9 @@
|
||||
{-# LANGUAGE UndecidableInstances #-}
|
||||
{-# OPTIONS_GHC -Wno-unused-top-binds -Wno-identities #-}
|
||||
|
||||
+{-# LANGUAGE DerivingStrategies #-}
|
||||
+{-# LANGUAGE StandaloneDeriving #-}
|
||||
+
|
||||
-- | Work with SQLite database used for caches across an entire user account.
|
||||
module Stack.Storage.User
|
||||
( initUserStorage
|
||||
diff --git a/src/Stack/Types/Config.hs b/src/Stack/Types/Config.hs
|
||||
index a5cc22b5..a329d353 100644
|
||||
--- a/src/Stack/Types/Config.hs
|
||||
+++ b/src/Stack/Types/Config.hs
|
||||
@@ -406,7 +406,7 @@ instance FromJSON CabalConfigKey where
|
||||
instance FromJSONKey CabalConfigKey where
|
||||
fromJSONKey = FromJSONKeyTextParser parseCabalConfigKey
|
||||
|
||||
-parseCabalConfigKey :: Monad m => Text -> m CabalConfigKey
|
||||
+parseCabalConfigKey :: MonadFail m => Text -> m CabalConfigKey
|
||||
parseCabalConfigKey "$targets" = pure CCKTargets
|
||||
parseCabalConfigKey "$locals" = pure CCKLocals
|
||||
parseCabalConfigKey "$everything" = pure CCKEverything
|
||||
@@ -974,7 +974,7 @@ parseConfigMonoidObject rootDir obj = do
|
||||
|
||||
return ConfigMonoid {..}
|
||||
where
|
||||
- handleExplicitSetupDep :: Monad m => (Text, Bool) -> m (Maybe PackageName, Bool)
|
||||
+ handleExplicitSetupDep :: MonadFail m => (Text, Bool) -> m (Maybe PackageName, Bool)
|
||||
handleExplicitSetupDep (name', b) = do
|
||||
name <-
|
||||
if name' == "*"
|
@ -6,7 +6,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/tcllib/bwidget-${version}.tar.gz";
|
||||
sha256 = "0knlnpmwam74v0qa1h9gg4f32vzzz7ays2wbslflf51ilg7nw6jk";
|
||||
sha256 = "0wm6hk3rnqhnn2cyw24drqwbfnysp6jyfi8lc1vih5k704a955lf";
|
||||
};
|
||||
|
||||
dontBuild = true;
|
||||
|
@ -1,4 +1,5 @@
|
||||
{ stdenv, lib, fetchFromGitHub, autoreconfHook, perl, pkgconfig, flux, zlib
|
||||
{ stdenv, lib, fetchFromGitHub, fetchpatch
|
||||
, autoreconfHook, perl, pkgconfig, flux, zlib
|
||||
, libjpeg, freetype, libpng, giflib
|
||||
, enableX11 ? true, xorg
|
||||
, enableSDL ? true, SDL }:
|
||||
@ -14,6 +15,16 @@ stdenv.mkDerivation rec {
|
||||
sha256 = "0bs3yzb7hy3mgydrj8ycg7pllrd2b6j0gxj596inyr7ihssr3i0y";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Fixes build in "davinci" with glibc >= 2.28
|
||||
# The "davinci" module is only enabled on 32-bit arm.
|
||||
# https://github.com/deniskropp/DirectFB/pull/17
|
||||
(fetchpatch {
|
||||
url = "https://github.com/deniskropp/DirectFB/commit/3a236241bbec3f15b012b6f0dbe94353d8094557.patch";
|
||||
sha256 = "0rj3gv0zlb225sqjz04p4yagy4xacf3210aa8vra8i1f0fv0w4kw";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook perl pkgconfig flux ];
|
||||
|
||||
buildInputs = [ zlib libjpeg freetype giflib libpng ]
|
||||
|
@ -4,6 +4,8 @@ stdenv.mkDerivation rec {
|
||||
pname = "fmt";
|
||||
version = "6.2.0";
|
||||
|
||||
outputs = [ "out" "dev" ];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "fmtlib";
|
||||
repo = "fmt";
|
||||
@ -19,9 +21,14 @@ stdenv.mkDerivation rec {
|
||||
url = "https://github.com/fmtlib/fmt/commit/7d01859ef16e6b65bc023ad8bebfedecb088bf81.patch";
|
||||
sha256 = "vdttRGgdltabeRAs4/z0BNtW2dLOhCxtXQFGVFKpEG0=";
|
||||
})
|
||||
];
|
||||
|
||||
outputs = [ "out" "dev" ];
|
||||
# Fix paths in pkg-config file
|
||||
# https://github.com/fmtlib/fmt/pull/1657
|
||||
(fetchpatch {
|
||||
url = "https://github.com/fmtlib/fmt/commit/78f041ab5b40a1145ba686aeb8013e8788b08cd2.patch";
|
||||
sha256 = "hjE6Q/ubA4UhvuJXgcsA3wiGoDK031P19njQRL9JF8M=";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
|
@ -1,35 +1,60 @@
|
||||
{ stdenv, fetchFromGitHub, fetchpatch, cmake, pkgconfig
|
||||
, boost, openssl, zlib, libsodium, olm, nlohmann_json }:
|
||||
{ stdenv
|
||||
, fetchFromGitHub
|
||||
, fetchpatch
|
||||
, cmake
|
||||
, pkgconfig
|
||||
, boost17x
|
||||
, openssl
|
||||
, zlib
|
||||
, libsodium
|
||||
, olm
|
||||
, spdlog
|
||||
, nlohmann_json
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mtxclient";
|
||||
version = "0.2.1";
|
||||
version = "0.3.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Nheko-Reborn";
|
||||
repo = "mtxclient";
|
||||
rev = "v${version}";
|
||||
sha256 = "0pycznrvj57ff6gbwfn1xj943d2dr4vadl79hii1z16gn0nzxpmj";
|
||||
sha256 = "0vf5xmn6yfi5lvskfgrdmnalvclzrapcrml92bj9qaa8vq8mfsf2";
|
||||
};
|
||||
|
||||
cmakeFlags = [
|
||||
# Network requiring tests can't be disabled individually:
|
||||
# https://github.com/Nheko-Reborn/mtxclient/issues/22
|
||||
"-DBUILD_LIB_TESTS=OFF"
|
||||
"-DBUILD_LIB_EXAMPLES=OFF"
|
||||
"-Dnlohmann_json_DIR=${nlohmann_json}/lib/cmake/nlohmann_json"
|
||||
# Can be removed once either https://github.com/NixOS/nixpkgs/pull/85254 or
|
||||
# https://github.com/NixOS/nixpkgs/pull/73940 are merged
|
||||
"-DBoost_NO_BOOST_CMAKE=TRUE"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ cmake pkgconfig ];
|
||||
buildInputs = [ boost openssl zlib libsodium olm ];
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
pkgconfig
|
||||
];
|
||||
buildInputs = [
|
||||
spdlog
|
||||
boost17x
|
||||
openssl
|
||||
zlib
|
||||
libsodium
|
||||
olm
|
||||
];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Client API library for Matrix, built on top of Boost.Asio";
|
||||
homepage = "https://github.com/Nheko-Reborn/mtxclient";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ fpletz ];
|
||||
platforms = platforms.unix;
|
||||
|
||||
# As of 2019-06-30, all of the dependencies are available on macOS but the
|
||||
# package itself does not build.
|
||||
broken = stdenv.isDarwin;
|
||||
platforms = platforms.all;
|
||||
# Should be fixable if a higher clang version is used, see:
|
||||
# https://github.com/NixOS/nixpkgs/pull/85922#issuecomment-619287177
|
||||
broken = stdenv.targetPlatform.isDarwin;
|
||||
};
|
||||
}
|
||||
|
30
pkgs/development/libraries/tweeny/default.nix
Normal file
30
pkgs/development/libraries/tweeny/default.nix
Normal file
@ -0,0 +1,30 @@
|
||||
{ stdenv
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "tweeny";
|
||||
version = "3.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mobius3";
|
||||
repo = "tweeny";
|
||||
rev = "v${version}";
|
||||
sha256 = "0qvby57g9a2m4afd1mgard3k7nm4ynbvali7nzm1qn3ygdmqid7n";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "A modern C++ tweening library";
|
||||
license = licenses.mit;
|
||||
homepage = "http://mobius3.github.io/tweeny";
|
||||
maintainers = [ maintainers.doronbehar ];
|
||||
platforms = with platforms; darwin ++ linux;
|
||||
};
|
||||
}
|
@ -1,19 +1,30 @@
|
||||
{ lib, stdenv, fetchurl, gtest, pkgconfig, doxygen, graphviz }:
|
||||
{ lib, stdenv, fetchurl, fetchpatch, cmake, gtest }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "uriparser";
|
||||
version = "0.9.1";
|
||||
version = "0.9.3";
|
||||
|
||||
# Release tarball differs from source tarball
|
||||
src = fetchurl {
|
||||
url = "https://github.com/uriparser/uriparser/releases/download/${pname}-${version}/${pname}-${version}.tar.bz2";
|
||||
sha256 = "1gisi7h8hd6mswbiaaa3s25bnb77xf37pzrmjy63rcdpwcyqy93m";
|
||||
sha256 = "13z234jdaqs9jj7i66gcv4q1rgsypjz6cighnlm1j4g80pdlmbr8";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig doxygen graphviz ];
|
||||
buildInputs = lib.optional doCheck gtest;
|
||||
configureFlags = lib.optional (!doCheck) "--disable-tests";
|
||||
patches = [
|
||||
# fixes tests
|
||||
(fetchpatch {
|
||||
url = "https://github.com/uriparser/uriparser/commit/f870e6c68696a6018702caa5c8a2feba9b0f99fa.diff";
|
||||
sha256 = "1nd6bhys9hwy6ippa42vm95zhw6hldm1s4xbdzmdjswc96as1ff5";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DURIPARSER_BUILD_DOCS=OFF"
|
||||
];
|
||||
|
||||
checkInputs = [ gtest ];
|
||||
doCheck = stdenv.targetPlatform.system == stdenv.hostPlatform.system;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
|
@ -125,5 +125,8 @@ nodePackages // {
|
||||
|
||||
thelounge = nodePackages.thelounge.override {
|
||||
buildInputs = [ nodePackages.node-pre-gyp ];
|
||||
postInstall = ''
|
||||
echo /var/lib/thelounge > $out/lib/node_modules/thelounge/.thelounge_home
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
@ -1,33 +0,0 @@
|
||||
{stdenv, buildOcaml, fetchurl, bin_prot_p4, comparelib, core_p4, custom_printf,
|
||||
fieldslib_p4, pa_bench, pa_ounit, pipebang, pa_test, textutils_p4, re2_p4, sexplib_p4}:
|
||||
|
||||
buildOcaml rec {
|
||||
name = "core_extended";
|
||||
version = "112.24.00";
|
||||
|
||||
minimumSupportedOcamlVersion = "4.02";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/janestreet/core_extended/archive/${version}.tar.gz";
|
||||
sha256 = "f87b0661b6c2cfb545ec61d1cb2ab1b9c4967b6ac14e651de41d3a6fb7f0f1e3";
|
||||
};
|
||||
|
||||
preConfigure = stdenv.lib.optionalString stdenv.isLinux ''
|
||||
patch lib/extended_unix_stubs.c <<EOF
|
||||
0a1
|
||||
> #define _LINUX_QUOTA_VERSION 2
|
||||
EOF
|
||||
'';
|
||||
|
||||
hasSharedObjects = true;
|
||||
buildInputs = [ pa_bench pa_test pa_ounit ];
|
||||
propagatedBuildInputs = [bin_prot_p4 comparelib core_p4 custom_printf fieldslib_p4
|
||||
pipebang textutils_p4 re2_p4 sexplib_p4 ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = "https://github.com/janestreet/core_extended";
|
||||
description = "Jane Street Capital's standard library overlay";
|
||||
license = licenses.asl20;
|
||||
maintainers = [ maintainers.ericbmerritt ];
|
||||
};
|
||||
}
|
@ -1,28 +0,0 @@
|
||||
{stdenv, buildOcamlJane,
|
||||
core,
|
||||
bin_prot, fieldslib, sexplib, typerep, variantslib,
|
||||
ppx_assert, ppx_bench, ppx_driver, ppx_expect, ppx_inline_test, ppx_jane,
|
||||
re2, textutils}:
|
||||
|
||||
buildOcamlJane {
|
||||
name = "core_extended";
|
||||
hash = "1j4ipcn741j8w3h4gpv5sygjzg6b5g6gc2jcrr4n0jyn5dq8b0p5";
|
||||
propagatedBuildInputs =
|
||||
[ core bin_prot fieldslib sexplib typerep variantslib
|
||||
ppx_assert ppx_bench ppx_driver ppx_expect ppx_inline_test ppx_jane
|
||||
re2 textutils ];
|
||||
|
||||
patchPhase = stdenv.lib.optionalString stdenv.isLinux ''
|
||||
patch src/extended_unix_stubs.c <<EOF
|
||||
0a1
|
||||
> #define _LINUX_QUOTA_VERSION 2
|
||||
EOF
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = "https://github.com/janestreet/core_extended";
|
||||
description = "Jane Street Capital's standard library overlay";
|
||||
license = licenses.asl20;
|
||||
maintainers = [ maintainers.maurer maintainers.ericbmerritt ];
|
||||
};
|
||||
}
|
@ -3,6 +3,7 @@
|
||||
}:
|
||||
|
||||
buildDunePackage rec {
|
||||
minimumOCamlVersion = "4.03";
|
||||
pname = "uri";
|
||||
version = "3.1.0";
|
||||
|
||||
|
@ -1,51 +0,0 @@
|
||||
{ stdenv, fetchzip, ocaml, findlib, ocamlbuild, re, stringext, ounit
|
||||
, sexplib, ppx_sexp_conv
|
||||
, legacyVersion ? false
|
||||
, sexplib_p4
|
||||
}:
|
||||
|
||||
if !stdenv.lib.versionAtLeast ocaml.version "4"
|
||||
|| legacyVersion && stdenv.lib.versionAtLeast ocaml.version "4.03"
|
||||
then throw "uri${stdenv.lib.optionalString legacyVersion "_p4"} is not available for OCaml ${ocaml.version}" else
|
||||
|
||||
with
|
||||
if legacyVersion
|
||||
then {
|
||||
version = "1.9.1";
|
||||
sha256 = "0v3jxqgyi4kj92r3x83rszfpnvvzy9lyb913basch4q64yka3w85";
|
||||
} else {
|
||||
version = "1.9.2";
|
||||
sha256 = "137pg8j654x7r0d1664iy2zp3l82nki1kkh921lwdrwc5qqdl6jx";
|
||||
};
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "ocaml${ocaml.version}-uri-${version}";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://github.com/mirage/ocaml-uri/archive/v${version}.tar.gz";
|
||||
inherit sha256;
|
||||
};
|
||||
|
||||
buildInputs = [ ocaml findlib ocamlbuild ounit ]
|
||||
++ stdenv.lib.optional (!legacyVersion) ppx_sexp_conv;
|
||||
propagatedBuildInputs = [ re (if legacyVersion then sexplib_p4 else sexplib) stringext ];
|
||||
|
||||
configurePhase = "ocaml setup.ml -configure --prefix $out --enable-tests";
|
||||
buildPhase = ''
|
||||
ocaml setup.ml -build
|
||||
ocaml setup.ml -doc
|
||||
'';
|
||||
doCheck = true;
|
||||
checkPhase = "ocaml setup.ml -test";
|
||||
installPhase = "ocaml setup.ml -install";
|
||||
|
||||
createFindlibDestdir = true;
|
||||
|
||||
meta = {
|
||||
homepage = "https://github.com/mirage/ocaml-uri";
|
||||
platforms = ocaml.meta.platforms or [];
|
||||
description = "RFC3986 URI parsing library for OCaml";
|
||||
license = stdenv.lib.licenses.isc;
|
||||
maintainers = with stdenv.lib.maintainers; [ vbgl ];
|
||||
};
|
||||
}
|
@ -17,13 +17,13 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "azure-identity";
|
||||
version = "1.3.0";
|
||||
version = "1.3.1";
|
||||
disabled = isPy38;
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
extension = "zip";
|
||||
sha256 = "17fa904e0447fd2a2dc19909379edb769b05656dbaf4863b8c4fdfb2bb54350c";
|
||||
sha256 = "5a59c36b4b05bdaec455c390feda71b6495fc828246593404351b9a41c2e877a";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
@ -0,0 +1,39 @@
|
||||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchPypi
|
||||
, python
|
||||
, isPy3k
|
||||
, azure-core
|
||||
, msrest
|
||||
, msrestazure
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "azure-keyvault-certificates";
|
||||
version = "4.1.0";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
extension = "zip";
|
||||
sha256 = "069l6m80rq4smyqbrmjb2w18wxxg49xi2yrf1wsxpq8r0r45cksl";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
azure-core
|
||||
msrest
|
||||
msrestazure
|
||||
];
|
||||
|
||||
pythonNamespaces = [ "azure.keyvault" ];
|
||||
|
||||
# has no tests
|
||||
doCheck = false;
|
||||
pythonImportsCheck = [ "azure.keyvault.certificates" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Microsoft Azure Key Vault Certificates Client Library for Python";
|
||||
homepage = "https://github.com/Azure/azure-sdk-for-python";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ jonringer ];
|
||||
};
|
||||
}
|
@ -1,20 +1,22 @@
|
||||
{ lib, buildPythonPackage, isPy27, fetchPypi
|
||||
, azure-keyvault-certificates
|
||||
, azure-keyvault-keys
|
||||
, azure-keyvault-secrets
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "azure-keyvault";
|
||||
version = "4.0.0";
|
||||
version = "4.1.0";
|
||||
disabled = isPy27;
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
extension = "zip";
|
||||
sha256 = "e85f5bd6cb4f10b3248b99bbf02e3acc6371d366846897027d4153f18025a2d7";
|
||||
sha256 = "69002a546921a8290eb54d9a3805cfc515c321bc1d4c0bfcfb463620245eca40";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
azure-keyvault-certificates
|
||||
azure-keyvault-keys
|
||||
azure-keyvault-secrets
|
||||
];
|
||||
|
@ -10,12 +10,12 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "azure-mgmt-advisor";
|
||||
version = "3.0.0";
|
||||
version = "4.0.0";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
extension = "zip";
|
||||
sha256 = "c52a4cf91d736c0ecdcb4d555e3b7713ff892343f610e7d65c63549edb98c221";
|
||||
sha256 = "1ecea7a9dc48c099c06aab68aace7fdbded91a5522932882b1707c29fa055054";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
@ -5,13 +5,13 @@
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
version = "0.1.0";
|
||||
version = "0.2.0";
|
||||
pname = "azure-mgmt-apimanagement";
|
||||
disabled = isPy27;
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "06bqqkn5mx127x1z7ycm6rl8ajxlrmrm2kcdpgkbl4baii1x6iax";
|
||||
sha256 = "790f01c0b32583706b8b8c59667c0f5a51cd70444eee76474e23a598911e1d72";
|
||||
extension = "zip";
|
||||
};
|
||||
|
||||
|
@ -11,12 +11,12 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "azure-mgmt-applicationinsights";
|
||||
version = "0.2.0";
|
||||
version = "0.3.0";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
extension = "zip";
|
||||
sha256 = "1hm6s7vym1y072jqypjgbhps8lza1d5kb8qcpyxnw4zsmsvshdp5";
|
||||
sha256 = "3c788a54db4fbca1a8850151462ec1471ff59c86b3a10d6082952bbdaa7e6651";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
@ -8,12 +8,12 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "azure-mgmt-cognitiveservices";
|
||||
version = "6.0.0";
|
||||
version = "6.1.0";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
extension = "zip";
|
||||
sha256 = "d03641336f4b2ec561112655c93ee80bc28d8e8daa45a57abc36169bd19c07a0";
|
||||
sha256 = "e0c4bbe656ababb942d708ee04f3f3305a2023e322a8b3fb1d8503aa682f59c4";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
@ -10,12 +10,12 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "azure-mgmt-containerservice";
|
||||
version = "9.0.0";
|
||||
version = "9.0.1";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
extension = "zip";
|
||||
sha256 = "6f05948bbd19ceb894f46f037b77c54116183364a671e180c007b5737c8d4590";
|
||||
sha256 = "7e4459679bdba4aa67a4b5848e63d94e965a304a7418ef7607eb7a9ce295d886";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
36
pkgs/development/python-modules/azure-mgmt-core/default.nix
Normal file
36
pkgs/development/python-modules/azure-mgmt-core/default.nix
Normal file
@ -0,0 +1,36 @@
|
||||
{ pkgs
|
||||
, buildPythonPackage
|
||||
, fetchPypi
|
||||
, python
|
||||
, azure-core
|
||||
, isPy3k
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
version = "1.0.0";
|
||||
pname = "azure-mgmt-core";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
extension = "zip";
|
||||
sha256 = "0pm565v05480f672l0n8z2sg6zk6iqyi91n0dhscibhdl54sy3si";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
azure-core
|
||||
];
|
||||
|
||||
pythonNamespaces = "azure.mgmt";
|
||||
|
||||
# not included
|
||||
doCheck = false;
|
||||
|
||||
pythonImportsCheck = [ "azure.mgmt.core" "azure.core" ];
|
||||
|
||||
meta = with pkgs.lib; {
|
||||
description = "Microsoft Azure Management Core Library for Python";
|
||||
homepage = "https://github.com/Azure/azure-sdk-for-python";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ jonringer ];
|
||||
};
|
||||
}
|
@ -10,12 +10,12 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "azure-mgmt-cosmosdb";
|
||||
version = "0.12.0";
|
||||
version = "0.13.0";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
extension = "zip";
|
||||
sha256 = "07c0hr7nha9789x1wz0ndca0sr0zscq63m9vd8pm1c6y0ss4iyn5";
|
||||
sha256 = "e83d21462f9d5b02e90f5590c4247ab73e0ff85fc4ac1fba32be119a15b10c98";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
@ -11,12 +11,12 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "azure-mgmt-loganalytics";
|
||||
version = "0.2.0";
|
||||
version = "0.5.0";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
extension = "zip";
|
||||
sha256 = "c7315ff0ee4d618fb38dca68548ef4023a7a20ce00efe27eb2105a5426237d86";
|
||||
sha256 = "16f4c4f676ea718b7e1c59bd9a516fcfc796f1aff844b183a7ce9afe69fb214d";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user