Merge branch 'master' into add-missing-licenses
Conflicts: pkgs/development/libraries/exiv2/default.nix Set license to gpl2Plus
This commit is contained in:
commit
f7be21f4c9
@ -8,7 +8,7 @@ build daemon as so-called channels. To get channel information via git, add
|
||||
[nixpkgs-channels](https://github.com/NixOS/nixpkgs-channels.git) as a remote:
|
||||
|
||||
```
|
||||
% git remote add channels git://github.com/NixOS/nixpkgs-channels.git
|
||||
% git remote add channels https://github.com/NixOS/nixpkgs-channels.git
|
||||
```
|
||||
|
||||
For stability and maximum binary package support, it is recommended to maintain
|
||||
|
@ -9,7 +9,7 @@
|
||||
<para>
|
||||
Checkout the Nixpkgs source tree:
|
||||
<screen>
|
||||
$ git clone git://github.com/NixOS/nixpkgs.git
|
||||
$ git clone https://github.com/NixOS/nixpkgs
|
||||
$ cd nixpkgs</screen>
|
||||
</para>
|
||||
</listitem>
|
||||
|
@ -103,8 +103,9 @@
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
mention-bot usually notifies GitHub users based on the submitted changes,
|
||||
but it can happen that it misses some of the package maintainers.
|
||||
<link xlink:href="https://help.github.com/articles/about-codeowners/">CODEOWNERS</link>
|
||||
will make GitHub notify users based on the submitted changes, but it can
|
||||
happen that it misses some of the package maintainers.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
@ -376,8 +377,9 @@ $ nix-shell -p nox --run "nox-review -k pr PRNUMBER"
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
Mention-bot notify GitHub users based on the submitted changes, but it
|
||||
can happen that it miss some of the package maintainers.
|
||||
<link xlink:href="https://help.github.com/articles/about-codeowners/">CODEOWNERS</link>
|
||||
will make GitHub notify users based on the submitted changes, but it can
|
||||
happen that it misses some of the package maintainers.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
@ -936,6 +936,11 @@
|
||||
github = "demin-dmitriy";
|
||||
name = "Dmitriy Demin";
|
||||
};
|
||||
demize = {
|
||||
email = "johannes@kyriasis.com";
|
||||
github = "kyrias";
|
||||
name = "Johannes Löthberg";
|
||||
};
|
||||
demyanrogozhin = {
|
||||
email = "demyan.rogozhin@gmail.com";
|
||||
github = "demyanrogozhin";
|
||||
@ -1684,6 +1689,11 @@
|
||||
github = "imalsogreg";
|
||||
name = "Greg Hale";
|
||||
};
|
||||
imuli = {
|
||||
email = "i@imu.li";
|
||||
github = "imuli";
|
||||
name = "Imuli";
|
||||
};
|
||||
infinisil = {
|
||||
email = "infinisil@icloud.com";
|
||||
github = "infinisil";
|
||||
@ -2089,6 +2099,11 @@
|
||||
github = "kuznero";
|
||||
name = "Roman Kuznetsov";
|
||||
};
|
||||
kylewlacy = {
|
||||
email = "kylelacy+nix@pm.me";
|
||||
github = "kylewlacy";
|
||||
name = "Kyle Lacy";
|
||||
};
|
||||
lasandell = {
|
||||
email = "lasandell@gmail.com";
|
||||
github = "lasandell";
|
||||
@ -2174,6 +2189,11 @@
|
||||
github = "nathanielbaxter";
|
||||
name = "Nathaniel Baxter";
|
||||
};
|
||||
lightdiscord = {
|
||||
email = "arnaud@lightdiscord.me";
|
||||
github = "lightdiscord";
|
||||
name = "Arnaud Pascal";
|
||||
};
|
||||
lihop = {
|
||||
email = "nixos@leroy.geek.nz";
|
||||
github = "lihop";
|
||||
@ -3683,6 +3703,11 @@
|
||||
github = "s-na";
|
||||
name = "S. Nordin Abouzahra";
|
||||
};
|
||||
snaar = {
|
||||
email = "snaar@snaar.net";
|
||||
github = "snaar";
|
||||
name = "Serguei Narojnyi";
|
||||
};
|
||||
snyh = {
|
||||
email = "snyh@snyh.org";
|
||||
github = "snyh";
|
||||
|
@ -14,7 +14,7 @@
|
||||
xlink:href="http://nixos.org/nixpkgs/manual">Nixpkgs
|
||||
manual</link>. In short, you clone Nixpkgs:
|
||||
<screen>
|
||||
$ git clone git://github.com/NixOS/nixpkgs.git
|
||||
$ git clone https://github.com/NixOS/nixpkgs
|
||||
$ cd nixpkgs
|
||||
</screen>
|
||||
Then you write and test the package as described in the Nixpkgs manual.
|
||||
|
@ -26,6 +26,7 @@
|
||||
<xref linkend="opt-services.xserver.desktopManager.plasma5.enable"/> = true;
|
||||
<xref linkend="opt-services.xserver.desktopManager.xfce.enable"/> = true;
|
||||
<xref linkend="opt-services.xserver.desktopManager.gnome3.enable"/> = true;
|
||||
<xref linkend="opt-services.xserver.desktopManager.mate.enable"/> = true;
|
||||
<xref linkend="opt-services.xserver.windowManager.xmonad.enable"/> = true;
|
||||
<xref linkend="opt-services.xserver.windowManager.twm.enable"/> = true;
|
||||
<xref linkend="opt-services.xserver.windowManager.icewm.enable"/> = true;
|
||||
|
@ -11,9 +11,9 @@
|
||||
modify NixOS, however, you should check out the latest sources from Git. This
|
||||
is as follows:
|
||||
<screen>
|
||||
$ git clone git://github.com/NixOS/nixpkgs.git
|
||||
$ git clone https://github.com/NixOS/nixpkgs
|
||||
$ cd nixpkgs
|
||||
$ git remote add channels git://github.com/NixOS/nixpkgs-channels.git
|
||||
$ git remote add channels https://github.com/NixOS/nixpkgs-channels
|
||||
$ git remote update channels
|
||||
</screen>
|
||||
This will check out the latest Nixpkgs sources to
|
||||
|
@ -73,6 +73,12 @@ $ nix-instantiate -E '(import <nixpkgsunstable> {}).gitFull'
|
||||
</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
There is a new <varname>services.foundationdb</varname> module for deploying
|
||||
<link xlink:href="https://www.foundationdb.org">FoundationDB</link> clusters.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
When enabled the <literal>iproute2</literal> will copy the files expected
|
||||
@ -81,6 +87,22 @@ $ nix-instantiate -E '(import <nixpkgsunstable> {}).gitFull'
|
||||
routing tables for instance.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<varname>services.strongswan-swanctl</varname>
|
||||
is a modern replacement for <varname>services.strongswan</varname>.
|
||||
You can use either one of them to setup IPsec VPNs but not both at the same time.
|
||||
</para>
|
||||
<para>
|
||||
<varname>services.strongswan-swanctl</varname> uses the
|
||||
<link xlink:href="https://wiki.strongswan.org/projects/strongswan/wiki/swanctl">swanctl</link>
|
||||
command which uses the modern
|
||||
<link xlink:href="https://github.com/strongswan/strongswan/blob/master/src/libcharon/plugins/vici/README.md">vici</link>
|
||||
<emphasis>Versatile IKE Configuration Interface</emphasis>.
|
||||
The deprecated <literal>ipsec</literal> command used in <varname>services.strongswan</varname> is using the legacy
|
||||
<link xlink:href="https://github.com/strongswan/strongswan/blob/master/README_LEGACY.md">stroke configuration interface</link>.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
|
||||
|
@ -536,6 +536,13 @@ if ($showHardwareConfig) {
|
||||
# Use the systemd-boot EFI boot loader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
EOF
|
||||
} elsif (-e "/boot/extlinux") {
|
||||
$bootLoaderConfig = <<EOF;
|
||||
# Use the extlinux boot loader. (NixOS wants to enable GRUB by default)
|
||||
boot.loader.grub.enable = false;
|
||||
# Enables the generation of /boot/extlinux/extlinux.conf
|
||||
boot.loader.generic-extlinux-compatible.enable = true;
|
||||
EOF
|
||||
} elsif ($virt ne "systemd-nspawn") {
|
||||
$bootLoaderConfig = <<EOF;
|
||||
|
@ -323,6 +323,7 @@
|
||||
mapred = 296;
|
||||
hadoop = 297;
|
||||
hydron = 298;
|
||||
cfssl = 299;
|
||||
|
||||
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
|
||||
|
||||
@ -606,6 +607,7 @@
|
||||
mapred = 296;
|
||||
hadoop = 297;
|
||||
hydron = 298;
|
||||
cfssl = 299;
|
||||
|
||||
# When adding a gid, make sure it doesn't match an existing
|
||||
# uid. Users and groups with the same name should have equal
|
||||
|
@ -622,6 +622,7 @@
|
||||
./services/search/hound.nix
|
||||
./services/search/kibana.nix
|
||||
./services/search/solr.nix
|
||||
./services/security/cfssl.nix
|
||||
./services/security/clamav.nix
|
||||
./services/security/fail2ban.nix
|
||||
./services/security/fprintd.nix
|
||||
|
@ -9,7 +9,6 @@ with lib;
|
||||
(mkRenamedOptionModule [ "system" "nixos" "stateVersion" ] [ "system" "stateVersion" ])
|
||||
(mkRenamedOptionModule [ "system" "nixos" "defaultChannel" ] [ "system" "defaultChannel" ])
|
||||
|
||||
(mkRenamedOptionModule [ "dysnomia" ] [ "services" "dysnomia" ])
|
||||
(mkRenamedOptionModule [ "environment" "x11Packages" ] [ "environment" "systemPackages" ])
|
||||
(mkRenamedOptionModule [ "environment" "enableBashCompletion" ] [ "programs" "bash" "enableCompletion" ])
|
||||
(mkRenamedOptionModule [ "environment" "nix" ] [ "nix" "package" ])
|
||||
|
@ -55,11 +55,11 @@ in {
|
||||
};
|
||||
|
||||
musicDirectory = mkOption {
|
||||
type = types.path;
|
||||
type = with types; either path (strMatching "(http|https|nfs|smb)://.+");
|
||||
default = "${cfg.dataDir}/music";
|
||||
defaultText = ''''${dataDir}/music'';
|
||||
description = ''
|
||||
The directory where mpd reads music from.
|
||||
The directory or NFS/SMB network share where mpd reads music from.
|
||||
'';
|
||||
};
|
||||
|
||||
|
@ -12,12 +12,10 @@
|
||||
|
||||
<para><emphasis>Maintainer:</emphasis> Austin Seipp</para>
|
||||
|
||||
<para><emphasis>Available version(s):</emphasis> 5.1.x</para>
|
||||
<para><emphasis>Available version(s):</emphasis> 5.1.x, 5.2.x, 6.0.x</para>
|
||||
|
||||
<para>FoundationDB (or "FDB") is a distributed, open source, high performance,
|
||||
transactional key-value store. It can store petabytes of data and deliver
|
||||
exceptional performance while maintaining consistency and ACID semantics
|
||||
(serializable transactions) over a large cluster.</para>
|
||||
<para>FoundationDB (or "FDB") is an open source, distributed, transactional
|
||||
key-value store.</para>
|
||||
|
||||
<section><title>Configuring and basic setup</title>
|
||||
|
||||
@ -26,12 +24,12 @@ exceptional performance while maintaining consistency and ACID semantics
|
||||
|
||||
<programlisting>
|
||||
services.foundationdb.enable = true;
|
||||
services.foundationdb.package = pkgs.foundationdb51; # FoundationDB 5.1.x
|
||||
services.foundationdb.package = pkgs.foundationdb52; # FoundationDB 5.2.x
|
||||
</programlisting>
|
||||
</para>
|
||||
|
||||
<para>The <option>services.foundationdb.package</option> option is required,
|
||||
and must always be specified. Because FoundationDB network protocols and
|
||||
and must always be specified. Due to the fact FoundationDB network protocols and
|
||||
on-disk storage formats may change between (major) versions, and upgrades must
|
||||
be explicitly handled by the user, you must always manually specify this
|
||||
yourself so that the NixOS module will use the proper version. Note that minor,
|
||||
@ -70,6 +68,40 @@ fdb>
|
||||
</programlisting>
|
||||
</para>
|
||||
|
||||
<para>You can also write programs using the available client libraries.
|
||||
For example, the following Python program can be run in order to grab the
|
||||
cluster status, as a quick example. (This example uses
|
||||
<command>nix-shell</command> shebang support to automatically supply the
|
||||
necessary Python modules).
|
||||
|
||||
<programlisting>
|
||||
a@link> cat fdb-status.py
|
||||
#! /usr/bin/env nix-shell
|
||||
#! nix-shell -i python -p python pythonPackages.foundationdb52
|
||||
|
||||
import fdb
|
||||
import json
|
||||
|
||||
def main():
|
||||
fdb.api_version(520)
|
||||
db = fdb.open()
|
||||
|
||||
@fdb.transactional
|
||||
def get_status(tr):
|
||||
return str(tr['\xff\xff/status/json'])
|
||||
|
||||
obj = json.loads(get_status(db))
|
||||
print('FoundationDB available: %s' % obj['client']['database_status']['available'])
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
a@link> chmod +x fdb-status.py
|
||||
a@link> ./fdb-status.py
|
||||
FoundationDB available: True
|
||||
a@link>
|
||||
</programlisting>
|
||||
</para>
|
||||
|
||||
<para>FoundationDB is run under the <command>foundationdb</command> user and
|
||||
group by default, but this may be changed in the NixOS configuration. The
|
||||
systemd unit <command>foundationdb.service</command> controls the
|
||||
@ -295,7 +327,6 @@ only undergone fairly basic testing of all the available functionality.</para>
|
||||
individual <command>fdbserver</command> processes. Currently, all server
|
||||
processes inherit all the global <command>fdbmonitor</command> settings.
|
||||
</para></listitem>
|
||||
<listitem><para>Python bindings are not currently installed.</para></listitem>
|
||||
<listitem><para>Ruby bindings are not currently installed.</para></listitem>
|
||||
<listitem><para>Go bindings are not currently installed.</para></listitem>
|
||||
</itemizedlist>
|
||||
@ -306,8 +337,9 @@ only undergone fairly basic testing of all the available functionality.</para>
|
||||
|
||||
<para>NixOS's FoundationDB module allows you to configure all of the most
|
||||
relevant configuration options for <command>fdbmonitor</command>, matching it
|
||||
quite closely. For a complete list of all options, check <command>man
|
||||
configuration.nix</command>.</para>
|
||||
quite closely. A complete list of options for the FoundationDB module may be
|
||||
found <link linkend="opt-services.foundationdb.enable">here</link>. You should
|
||||
also read the FoundationDB documentation as well.</para>
|
||||
|
||||
</section>
|
||||
|
||||
|
@ -47,7 +47,7 @@ in
|
||||
###### implementation
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.dysnomia.enable = true;
|
||||
dysnomia.enable = true;
|
||||
|
||||
environment.systemPackages = [ pkgs.disnix ] ++ optional cfg.useWebServiceInterface pkgs.DisnixWebService;
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.dysnomia;
|
||||
cfg = config.dysnomia;
|
||||
|
||||
printProperties = properties:
|
||||
concatMapStrings (propertyName:
|
||||
@ -69,7 +69,7 @@ let
|
||||
in
|
||||
{
|
||||
options = {
|
||||
services.dysnomia = {
|
||||
dysnomia = {
|
||||
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
@ -142,7 +142,7 @@ in
|
||||
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
|
||||
services.dysnomia.package = pkgs.dysnomia.override (origArgs: {
|
||||
dysnomia.package = pkgs.dysnomia.override (origArgs: {
|
||||
enableApacheWebApplication = config.services.httpd.enable;
|
||||
enableAxis2WebService = config.services.tomcat.axis2.enable;
|
||||
enableEjabberdDump = config.services.ejabberd.enable;
|
||||
@ -153,7 +153,7 @@ in
|
||||
enableMongoDatabase = config.services.mongodb.enable;
|
||||
});
|
||||
|
||||
services.dysnomia.properties = {
|
||||
dysnomia.properties = {
|
||||
hostname = config.networking.hostName;
|
||||
inherit (config.nixpkgs.localSystem) system;
|
||||
|
||||
@ -171,7 +171,7 @@ in
|
||||
}}");
|
||||
};
|
||||
|
||||
services.dysnomia.containers = lib.recursiveUpdate ({
|
||||
dysnomia.containers = lib.recursiveUpdate ({
|
||||
process = {};
|
||||
wrapper = {};
|
||||
}
|
||||
|
@ -57,12 +57,6 @@ let
|
||||
--nodaemon --syslog --prefix=${name} --pidfile /run/${name}/${name}.pid ${name}
|
||||
'';
|
||||
|
||||
mkPidFileDir = name: ''
|
||||
mkdir -p /run/${name}
|
||||
chmod 0700 /run/${name}
|
||||
chown -R graphite:graphite /run/${name}
|
||||
'';
|
||||
|
||||
carbonEnv = {
|
||||
PYTHONPATH = let
|
||||
cenv = pkgs.python.buildEnv.override {
|
||||
@ -136,7 +130,7 @@ in {
|
||||
finders = mkOption {
|
||||
description = "List of finder plugins to load.";
|
||||
default = [];
|
||||
example = literalExample "[ pkgs.python27Packages.graphite_influxdb ]";
|
||||
example = literalExample "[ pkgs.python27Packages.influxgraph ]";
|
||||
type = types.listOf types.package;
|
||||
};
|
||||
|
||||
@ -412,18 +406,16 @@ in {
|
||||
after = [ "network.target" ];
|
||||
environment = carbonEnv;
|
||||
serviceConfig = {
|
||||
RuntimeDirectory = name;
|
||||
ExecStart = "${pkgs.pythonPackages.twisted}/bin/twistd ${carbonOpts name}";
|
||||
User = "graphite";
|
||||
Group = "graphite";
|
||||
PermissionsStartOnly = true;
|
||||
PIDFile="/run/${name}/${name}.pid";
|
||||
};
|
||||
preStart = mkPidFileDir name + ''
|
||||
|
||||
mkdir -p ${cfg.dataDir}/whisper
|
||||
chmod 0700 ${cfg.dataDir}/whisper
|
||||
chown graphite:graphite ${cfg.dataDir}
|
||||
chown graphite:graphite ${cfg.dataDir}/whisper
|
||||
preStart = ''
|
||||
install -dm0700 -o graphite -g graphite ${cfg.dataDir}
|
||||
install -dm0700 -o graphite -g graphite ${cfg.dataDir}/whisper
|
||||
'';
|
||||
};
|
||||
})
|
||||
@ -436,12 +428,12 @@ in {
|
||||
after = [ "network.target" ];
|
||||
environment = carbonEnv;
|
||||
serviceConfig = {
|
||||
RuntimeDirectory = name;
|
||||
ExecStart = "${pkgs.pythonPackages.twisted}/bin/twistd ${carbonOpts name}";
|
||||
User = "graphite";
|
||||
Group = "graphite";
|
||||
PIDFile="/run/${name}/${name}.pid";
|
||||
};
|
||||
preStart = mkPidFileDir name;
|
||||
};
|
||||
})
|
||||
|
||||
@ -452,12 +444,12 @@ in {
|
||||
after = [ "network.target" ];
|
||||
environment = carbonEnv;
|
||||
serviceConfig = {
|
||||
RuntimeDirectory = name;
|
||||
ExecStart = "${pkgs.pythonPackages.twisted}/bin/twistd ${carbonOpts name}";
|
||||
User = "graphite";
|
||||
Group = "graphite";
|
||||
PIDFile="/run/${name}/${name}.pid";
|
||||
};
|
||||
preStart = mkPidFileDir name;
|
||||
};
|
||||
})
|
||||
|
||||
@ -485,7 +477,7 @@ in {
|
||||
PYTHONPATH = let
|
||||
penv = pkgs.python.buildEnv.override {
|
||||
extraLibs = [
|
||||
pythonPackages.graphite_web
|
||||
pythonPackages.graphite-web
|
||||
pythonPackages.pysqlite
|
||||
];
|
||||
};
|
||||
@ -524,16 +516,16 @@ in {
|
||||
fi
|
||||
|
||||
# Only collect static files when graphite_web changes.
|
||||
if ! [ "${dataDir}/current_graphite_web" -ef "${pythonPackages.graphite_web}" ]; then
|
||||
if ! [ "${dataDir}/current_graphite_web" -ef "${pythonPackages.graphite-web}" ]; then
|
||||
mkdir -p ${staticDir}
|
||||
${pkgs.pythonPackages.django_1_8}/bin/django-admin.py collectstatic --noinput --clear
|
||||
chown -R graphite:graphite ${staticDir}
|
||||
ln -sfT "${pythonPackages.graphite_web}" "${dataDir}/current_graphite_web"
|
||||
ln -sfT "${pythonPackages.graphite-web}" "${dataDir}/current_graphite_web"
|
||||
fi
|
||||
'';
|
||||
};
|
||||
|
||||
environment.systemPackages = [ pythonPackages.graphite_web ];
|
||||
environment.systemPackages = [ pythonPackages.graphite-web ];
|
||||
}))
|
||||
|
||||
(mkIf cfg.api.enable {
|
||||
@ -607,7 +599,7 @@ in {
|
||||
GRAPHITE_URL = cfg.pager.graphiteUrl;
|
||||
};
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.pythonPackages.graphite_pager}/bin/graphite-pager --config ${pagerConfig}";
|
||||
ExecStart = "${pkgs.pythonPackages.graphitepager}/bin/graphite-pager --config ${pagerConfig}";
|
||||
User = "graphite";
|
||||
Group = "graphite";
|
||||
};
|
||||
@ -615,7 +607,7 @@ in {
|
||||
|
||||
services.redis.enable = mkDefault true;
|
||||
|
||||
environment.systemPackages = [ pkgs.pythonPackages.graphite_pager ];
|
||||
environment.systemPackages = [ pkgs.pythonPackages.graphitepager ];
|
||||
})
|
||||
|
||||
(mkIf cfg.beacon.enable {
|
||||
|
@ -14,6 +14,10 @@ let
|
||||
global = {
|
||||
"plugins directory" = "${wrappedPlugins}/libexec/netdata/plugins.d ${pkgs.netdata}/libexec/netdata/plugins.d";
|
||||
};
|
||||
web = {
|
||||
"web files owner" = "root";
|
||||
"web files group" = "root";
|
||||
};
|
||||
};
|
||||
mkConfig = generators.toINI {} (recursiveUpdate localConfig cfg.config);
|
||||
configFile = pkgs.writeText "netdata.conf" (if cfg.configText != null then cfg.configText else mkConfig);
|
||||
|
@ -73,7 +73,7 @@ let
|
||||
description = ''
|
||||
Specify a filter for iptables to use when
|
||||
<option>services.prometheus.exporters.${name}.openFirewall</option>
|
||||
is true. It is used as `ip46tables -I INPUT <option>firewallFilter</option> -j ACCEPT`.
|
||||
is true. It is used as `ip46tables -I nixos-fw <option>firewallFilter</option> -j nixos-fw-accept`.
|
||||
'';
|
||||
};
|
||||
user = mkOption {
|
||||
@ -116,9 +116,10 @@ let
|
||||
|
||||
mkExporterConf = { name, conf, serviceOpts }:
|
||||
mkIf conf.enable {
|
||||
networking.firewall.extraCommands = mkIf conf.openFirewall ''
|
||||
ip46tables -I INPUT ${conf.firewallFilter} -j ACCEPT
|
||||
'';
|
||||
networking.firewall.extraCommands = mkIf conf.openFirewall (concatStrings [
|
||||
"ip46tables -I nixos-fw ${conf.firewallFilter} "
|
||||
"-m comment --comment ${name}-exporter -j nixos-fw-accept"
|
||||
]);
|
||||
systemd.services."prometheus-${name}-exporter" = mkMerge ([{
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network.target" ];
|
||||
|
209
nixos/modules/services/security/cfssl.nix
Normal file
209
nixos/modules/services/security/cfssl.nix
Normal file
@ -0,0 +1,209 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.cfssl;
|
||||
in {
|
||||
options.services.cfssl = {
|
||||
enable = mkEnableOption "the CFSSL CA api-server";
|
||||
|
||||
dataDir = mkOption {
|
||||
default = "/var/lib/cfssl";
|
||||
type = types.path;
|
||||
description = "Cfssl work directory.";
|
||||
};
|
||||
|
||||
address = mkOption {
|
||||
default = "127.0.0.1";
|
||||
type = types.str;
|
||||
description = "Address to bind.";
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
default = 8888;
|
||||
type = types.ints.u16;
|
||||
description = "Port to bind.";
|
||||
};
|
||||
|
||||
ca = mkOption {
|
||||
defaultText = "\${cfg.dataDir}/ca.pem";
|
||||
type = types.str;
|
||||
description = "CA used to sign the new certificate -- accepts '[file:]fname' or 'env:varname'.";
|
||||
};
|
||||
|
||||
caKey = mkOption {
|
||||
defaultText = "file:\${cfg.dataDir}/ca-key.pem";
|
||||
type = types.str;
|
||||
description = "CA private key -- accepts '[file:]fname' or 'env:varname'.";
|
||||
};
|
||||
|
||||
caBundle = mkOption {
|
||||
default = null;
|
||||
type = types.nullOr types.path;
|
||||
description = "Path to root certificate store.";
|
||||
};
|
||||
|
||||
intBundle = mkOption {
|
||||
default = null;
|
||||
type = types.nullOr types.path;
|
||||
description = "Path to intermediate certificate store.";
|
||||
};
|
||||
|
||||
intDir = mkOption {
|
||||
default = null;
|
||||
type = types.nullOr types.path;
|
||||
description = "Intermediates directory.";
|
||||
};
|
||||
|
||||
metadata = mkOption {
|
||||
default = null;
|
||||
type = types.nullOr types.path;
|
||||
description = ''
|
||||
Metadata file for root certificate presence.
|
||||
The content of the file is a json dictionary (k,v): each key k is
|
||||
a SHA-1 digest of a root certificate while value v is a list of key
|
||||
store filenames.
|
||||
'';
|
||||
};
|
||||
|
||||
remote = mkOption {
|
||||
default = null;
|
||||
type = types.nullOr types.str;
|
||||
description = "Remote CFSSL server.";
|
||||
};
|
||||
|
||||
configFile = mkOption {
|
||||
default = null;
|
||||
type = types.nullOr types.str;
|
||||
description = "Path to configuration file. Do not put this in nix-store as it might contain secrets.";
|
||||
};
|
||||
|
||||
responder = mkOption {
|
||||
default = null;
|
||||
type = types.nullOr types.path;
|
||||
description = "Certificate for OCSP responder.";
|
||||
};
|
||||
|
||||
responderKey = mkOption {
|
||||
default = null;
|
||||
type = types.nullOr types.str;
|
||||
description = "Private key for OCSP responder certificate. Do not put this in nix-store.";
|
||||
};
|
||||
|
||||
tlsKey = mkOption {
|
||||
default = null;
|
||||
type = types.nullOr types.str;
|
||||
description = "Other endpoint's CA private key. Do not put this in nix-store.";
|
||||
};
|
||||
|
||||
tlsCert = mkOption {
|
||||
default = null;
|
||||
type = types.nullOr types.path;
|
||||
description = "Other endpoint's CA to set up TLS protocol.";
|
||||
};
|
||||
|
||||
mutualTlsCa = mkOption {
|
||||
default = null;
|
||||
type = types.nullOr types.path;
|
||||
description = "Mutual TLS - require clients be signed by this CA.";
|
||||
};
|
||||
|
||||
mutualTlsCn = mkOption {
|
||||
default = null;
|
||||
type = types.nullOr types.str;
|
||||
description = "Mutual TLS - regex for whitelist of allowed client CNs.";
|
||||
};
|
||||
|
||||
tlsRemoteCa = mkOption {
|
||||
default = null;
|
||||
type = types.nullOr types.path;
|
||||
description = "CAs to trust for remote TLS requests.";
|
||||
};
|
||||
|
||||
mutualTlsClientCert = mkOption {
|
||||
default = null;
|
||||
type = types.nullOr types.path;
|
||||
description = "Mutual TLS - client certificate to call remote instance requiring client certs.";
|
||||
};
|
||||
|
||||
mutualTlsClientKey = mkOption {
|
||||
default = null;
|
||||
type = types.nullOr types.path;
|
||||
description = "Mutual TLS - client key to call remote instance requiring client certs. Do not put this in nix-store.";
|
||||
};
|
||||
|
||||
dbConfig = mkOption {
|
||||
default = null;
|
||||
type = types.nullOr types.path;
|
||||
description = "Certificate db configuration file. Path must be writeable.";
|
||||
};
|
||||
|
||||
logLevel = mkOption {
|
||||
default = 1;
|
||||
type = types.enum [ 0 1 2 3 4 5 ];
|
||||
description = "Log level (0 = DEBUG, 5 = FATAL).";
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
users.extraGroups.cfssl = {
|
||||
gid = config.ids.gids.cfssl;
|
||||
};
|
||||
|
||||
users.extraUsers.cfssl = {
|
||||
description = "cfssl user";
|
||||
createHome = true;
|
||||
home = cfg.dataDir;
|
||||
group = "cfssl";
|
||||
uid = config.ids.uids.cfssl;
|
||||
};
|
||||
|
||||
systemd.services.cfssl = mkIf cfg.enable {
|
||||
description = "CFSSL CA API server";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network.target" ];
|
||||
|
||||
serviceConfig = {
|
||||
WorkingDirectory = cfg.dataDir;
|
||||
StateDirectory = cfg.dataDir;
|
||||
StateDirectoryMode = 700;
|
||||
Restart = "always";
|
||||
User = "cfssl";
|
||||
|
||||
ExecStart = with cfg; let
|
||||
opt = n: v: optionalString (v != null) ''-${n}="${v}"'';
|
||||
in
|
||||
lib.concatStringsSep " \\\n" [
|
||||
"${pkgs.cfssl}/bin/cfssl serve"
|
||||
(opt "address" address)
|
||||
(opt "port" (toString port))
|
||||
(opt "ca" ca)
|
||||
(opt "ca-key" caKey)
|
||||
(opt "ca-bundle" caBundle)
|
||||
(opt "int-bundle" intBundle)
|
||||
(opt "int-dir" intDir)
|
||||
(opt "metadata" metadata)
|
||||
(opt "remote" remote)
|
||||
(opt "config" configFile)
|
||||
(opt "responder" responder)
|
||||
(opt "responder-key" responderKey)
|
||||
(opt "tls-key" tlsKey)
|
||||
(opt "tls-cert" tlsCert)
|
||||
(opt "mutual-tls-ca" mutualTlsCa)
|
||||
(opt "mutual-tls-cn" mutualTlsCn)
|
||||
(opt "mutual-tls-client-key" mutualTlsClientKey)
|
||||
(opt "mutual-tls-client-cert" mutualTlsClientCert)
|
||||
(opt "tls-remote-ca" tlsRemoteCa)
|
||||
(opt "db-config" dbConfig)
|
||||
(opt "loglevel" (toString logLevel))
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
services.cfssl = {
|
||||
ca = mkDefault "${cfg.dataDir}/ca.pem";
|
||||
caKey = mkDefault "${cfg.dataDir}/ca-key.pem";
|
||||
};
|
||||
};
|
||||
}
|
@ -1,6 +1,8 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let cfg = config.services.hydron;
|
||||
let
|
||||
cfg = config.services.hydron;
|
||||
postgres = config.services.postgresql;
|
||||
in with lib; {
|
||||
options.services.hydron = {
|
||||
enable = mkEnableOption "hydron";
|
||||
@ -25,6 +27,38 @@ in with lib; {
|
||||
'';
|
||||
};
|
||||
|
||||
password = mkOption {
|
||||
type = types.str;
|
||||
default = "hydron";
|
||||
example = "dumbpass";
|
||||
description = "Password for the hydron database.";
|
||||
};
|
||||
|
||||
passwordFile = mkOption {
|
||||
type = types.path;
|
||||
default = "/run/keys/hydron-password-file";
|
||||
example = "/home/okina/hydron/keys/pass";
|
||||
description = "Password file for the hydron database.";
|
||||
};
|
||||
|
||||
postgresArgs = mkOption {
|
||||
type = types.str;
|
||||
description = "Postgresql connection arguments.";
|
||||
example = ''
|
||||
{
|
||||
"driver": "postgres",
|
||||
"connection": "user=hydron password=dumbpass dbname=hydron sslmode=disable"
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
postgresArgsFile = mkOption {
|
||||
type = types.path;
|
||||
default = "/run/keys/hydron-postgres-args";
|
||||
example = "/home/okina/hydron/keys/postgres";
|
||||
description = "Postgresql connection arguments file.";
|
||||
};
|
||||
|
||||
listenAddress = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
@ -47,16 +81,36 @@ in with lib; {
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
security.sudo.enable = cfg.enable;
|
||||
services.postgresql.enable = cfg.enable;
|
||||
services.hydron.passwordFile = mkDefault (pkgs.writeText "hydron-password-file" cfg.password);
|
||||
services.hydron.postgresArgsFile = mkDefault (pkgs.writeText "hydron-postgres-args" cfg.postgresArgs);
|
||||
services.hydron.postgresArgs = mkDefault ''
|
||||
{
|
||||
"driver": "postgres",
|
||||
"connection": "user=hydron password=${cfg.password} dbname=hydron sslmode=disable"
|
||||
}
|
||||
'';
|
||||
|
||||
systemd.services.hydron = {
|
||||
description = "hydron";
|
||||
after = [ "network.target" ];
|
||||
after = [ "network.target" "postgresql.service" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
preStart = ''
|
||||
# Ensure folder exists and permissions are correct
|
||||
mkdir -p ${escapeShellArg cfg.dataDir}/images
|
||||
# Ensure folder exists or create it and permissions are correct
|
||||
mkdir -p ${escapeShellArg cfg.dataDir}/{.hydron,images}
|
||||
ln -sf ${escapeShellArg cfg.postgresArgsFile} ${escapeShellArg cfg.dataDir}/.hydron/db_conf.json
|
||||
chmod 750 ${escapeShellArg cfg.dataDir}
|
||||
chown -R hydron:hydron ${escapeShellArg cfg.dataDir}
|
||||
|
||||
# Ensure the database is correct or create it
|
||||
${pkgs.sudo}/bin/sudo -u ${postgres.superUser} ${postgres.package}/bin/createuser \
|
||||
-SDR hydron || true
|
||||
${pkgs.sudo}/bin/sudo -u ${postgres.superUser} ${postgres.package}/bin/createdb \
|
||||
-T template0 -E UTF8 -O hydron hydron || true
|
||||
${pkgs.sudo}/bin/sudo -u hydron ${postgres.package}/bin/psql \
|
||||
-c "ALTER ROLE hydron WITH PASSWORD '$(cat ${escapeShellArg cfg.passwordFile})';" || true
|
||||
'';
|
||||
|
||||
serviceConfig = {
|
||||
@ -101,5 +155,9 @@ in with lib; {
|
||||
};
|
||||
};
|
||||
|
||||
imports = [
|
||||
(mkRenamedOptionModule [ "services" "hydron" "baseDir" ] [ "services" "hydron" "dataDir" ])
|
||||
];
|
||||
|
||||
meta.maintainers = with maintainers; [ chiiruno ];
|
||||
}
|
||||
|
@ -1,65 +1,71 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.services.meguca;
|
||||
postgres = config.services.postgresql;
|
||||
in
|
||||
{
|
||||
in with lib; {
|
||||
options.services.meguca = {
|
||||
enable = mkEnableOption "meguca";
|
||||
|
||||
baseDir = mkOption {
|
||||
dataDir = mkOption {
|
||||
type = types.path;
|
||||
default = "/run/meguca";
|
||||
default = "/var/lib/meguca";
|
||||
example = "/home/okina/meguca";
|
||||
description = "Location where meguca stores it's database and links.";
|
||||
};
|
||||
|
||||
password = mkOption {
|
||||
type = types.str;
|
||||
default = "meguca";
|
||||
example = "dumbpass";
|
||||
description = "Password for the meguca database.";
|
||||
};
|
||||
|
||||
passwordFile = mkOption {
|
||||
type = types.path;
|
||||
default = "/run/keys/meguca-password-file";
|
||||
example = "/home/okina/meguca/keys/pass";
|
||||
description = "Password file for the meguca database.";
|
||||
};
|
||||
|
||||
reverseProxy = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
example = "192.168.1.5";
|
||||
description = "Reverse proxy IP.";
|
||||
};
|
||||
|
||||
sslCertificate = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
example = "/home/okina/meguca/ssl.cert";
|
||||
description = "Path to the SSL certificate.";
|
||||
};
|
||||
|
||||
listenAddress = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
example = "127.0.0.1:8000";
|
||||
description = "Listen on a specific IP address and port.";
|
||||
};
|
||||
|
||||
cacheSize = mkOption {
|
||||
type = types.nullOr types.int;
|
||||
default = null;
|
||||
example = 256;
|
||||
description = "Cache size in MB.";
|
||||
};
|
||||
|
||||
postgresArgs = mkOption {
|
||||
type = types.str;
|
||||
default = "user=meguca password=" + cfg.password + " dbname=meguca sslmode=disable";
|
||||
example = "user=meguca password=dumbpass dbname=meguca sslmode=disable";
|
||||
description = "Postgresql connection arguments.";
|
||||
};
|
||||
|
||||
postgresArgsFile = mkOption {
|
||||
type = types.path;
|
||||
default = "/run/keys/meguca-postgres-args";
|
||||
example = "/home/okina/meguca/keys/postgres";
|
||||
description = "Postgresql connection arguments file.";
|
||||
};
|
||||
|
||||
@ -83,18 +89,11 @@ in
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
security.sudo.enable = cfg.enable == true;
|
||||
services.postgresql.enable = cfg.enable == true;
|
||||
|
||||
services.meguca.passwordFile = mkDefault (toString (pkgs.writeTextFile {
|
||||
name = "meguca-password-file";
|
||||
text = cfg.password;
|
||||
}));
|
||||
|
||||
services.meguca.postgresArgsFile = mkDefault (toString (pkgs.writeTextFile {
|
||||
name = "meguca-postgres-args";
|
||||
text = cfg.postgresArgs;
|
||||
}));
|
||||
security.sudo.enable = cfg.enable;
|
||||
services.postgresql.enable = cfg.enable;
|
||||
services.meguca.passwordFile = mkDefault (pkgs.writeText "meguca-password-file" cfg.password);
|
||||
services.meguca.postgresArgsFile = mkDefault (pkgs.writeText "meguca-postgres-args" cfg.postgresArgs);
|
||||
services.meguca.postgresArgs = mkDefault "user=meguca password=${cfg.password} dbname=meguca sslmode=disable";
|
||||
|
||||
systemd.services.meguca = {
|
||||
description = "meguca";
|
||||
@ -102,10 +101,11 @@ in
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
preStart = ''
|
||||
# Ensure folder exists and links are correct or create them
|
||||
mkdir -p ${cfg.baseDir}
|
||||
chmod 750 ${cfg.baseDir}
|
||||
ln -sf ${pkgs.meguca}/share/meguca/www ${cfg.baseDir}
|
||||
# Ensure folder exists or create it and links and permissions are correct
|
||||
mkdir -p ${escapeShellArg cfg.dataDir}
|
||||
ln -sf ${pkgs.meguca}/share/meguca/www ${escapeShellArg cfg.dataDir}
|
||||
chmod 750 ${escapeShellArg cfg.dataDir}
|
||||
chown -R meguca:meguca ${escapeShellArg cfg.dataDir}
|
||||
|
||||
# Ensure the database is correct or create it
|
||||
${pkgs.sudo}/bin/sudo -u ${postgres.superUser} ${postgres.package}/bin/createuser \
|
||||
@ -113,47 +113,46 @@ in
|
||||
${pkgs.sudo}/bin/sudo -u ${postgres.superUser} ${postgres.package}/bin/createdb \
|
||||
-T template0 -E UTF8 -O meguca meguca || true
|
||||
${pkgs.sudo}/bin/sudo -u meguca ${postgres.package}/bin/psql \
|
||||
-c "ALTER ROLE meguca WITH PASSWORD '$(cat ${cfg.passwordFile})';" || true
|
||||
-c "ALTER ROLE meguca WITH PASSWORD '$(cat ${escapeShellArg cfg.passwordFile})';" || true
|
||||
'';
|
||||
|
||||
script = ''
|
||||
cd ${cfg.baseDir}
|
||||
cd ${escapeShellArg cfg.dataDir}
|
||||
|
||||
${pkgs.meguca}/bin/meguca -d "$(cat ${cfg.postgresArgsFile})"\
|
||||
${optionalString (cfg.reverseProxy != null) " -R ${cfg.reverseProxy}"}\
|
||||
${optionalString (cfg.sslCertificate != null) " -S ${cfg.sslCertificate}"}\
|
||||
${optionalString (cfg.listenAddress != null) " -a ${cfg.listenAddress}"}\
|
||||
${optionalString (cfg.cacheSize != null) " -c ${toString cfg.cacheSize}"}\
|
||||
${optionalString (cfg.compressTraffic) " -g"}\
|
||||
${optionalString (cfg.assumeReverseProxy) " -r"}\
|
||||
${optionalString (cfg.httpsOnly) " -s"} start
|
||||
'';
|
||||
${pkgs.meguca}/bin/meguca -d "$(cat ${escapeShellArg cfg.postgresArgsFile})"''
|
||||
+ optionalString (cfg.reverseProxy != null) " -R ${cfg.reverseProxy}"
|
||||
+ optionalString (cfg.sslCertificate != null) " -S ${cfg.sslCertificate}"
|
||||
+ optionalString (cfg.listenAddress != null) " -a ${cfg.listenAddress}"
|
||||
+ optionalString (cfg.cacheSize != null) " -c ${toString cfg.cacheSize}"
|
||||
+ optionalString (cfg.compressTraffic) " -g"
|
||||
+ optionalString (cfg.assumeReverseProxy) " -r"
|
||||
+ optionalString (cfg.httpsOnly) " -s" + " start";
|
||||
|
||||
serviceConfig = {
|
||||
PermissionsStartOnly = true;
|
||||
Type = "forking";
|
||||
User = "meguca";
|
||||
Group = "meguca";
|
||||
RuntimeDirectory = "meguca";
|
||||
ExecStop = "${pkgs.meguca}/bin/meguca stop";
|
||||
};
|
||||
};
|
||||
|
||||
users = {
|
||||
groups.meguca.gid = config.ids.gids.meguca;
|
||||
|
||||
users.meguca = {
|
||||
description = "meguca server service user";
|
||||
home = cfg.baseDir;
|
||||
home = cfg.dataDir;
|
||||
createHome = true;
|
||||
group = "meguca";
|
||||
uid = config.ids.uids.meguca;
|
||||
};
|
||||
|
||||
groups.meguca = {
|
||||
gid = config.ids.gids.meguca;
|
||||
members = [ "meguca" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
imports = [
|
||||
(mkRenamedOptionModule [ "services" "meguca" "baseDir" ] [ "services" "meguca" "dataDir" ])
|
||||
];
|
||||
|
||||
meta.maintainers = with maintainers; [ chiiruno ];
|
||||
}
|
||||
|
@ -108,7 +108,7 @@ in
|
||||
};
|
||||
|
||||
webapps = mkOption {
|
||||
type = types.listOf types.package;
|
||||
type = types.listOf types.path;
|
||||
default = [ tomcat.webapps ];
|
||||
defaultText = "[ pkgs.tomcat85.webapps ]";
|
||||
description = "List containing WAR files or directories with WAR files which are web applications to be deployed on Tomcat";
|
||||
@ -118,8 +118,15 @@ in
|
||||
type = types.listOf (types.submodule {
|
||||
options = {
|
||||
name = mkOption {
|
||||
type = types.listOf types.str;
|
||||
type = types.str;
|
||||
description = "name of the virtualhost";
|
||||
};
|
||||
webapps = mkOption {
|
||||
type = types.listOf types.path;
|
||||
description = ''
|
||||
List containing web application WAR files and/or directories containing
|
||||
web applications and configuration files for the virtual host.
|
||||
'';
|
||||
default = [];
|
||||
};
|
||||
};
|
||||
|
@ -96,13 +96,13 @@ in
|
||||
else if any (w: w.name == defaultDM) cfg.session.list then
|
||||
defaultDM
|
||||
else
|
||||
throw ''
|
||||
Default desktop manager (${defaultDM}) not found.
|
||||
Probably you want to change
|
||||
services.xserver.desktopManager.default = "${defaultDM}";
|
||||
to one of
|
||||
builtins.trace ''
|
||||
Default desktop manager (${defaultDM}) not found at evaluation time.
|
||||
These are the known valid session names:
|
||||
${concatMapStringsSep "\n " (w: "services.xserver.desktopManager.default = \"${w.name}\";") cfg.session.list}
|
||||
'';
|
||||
It's also possible the default can be found in one of these packages:
|
||||
${concatMapStringsSep "\n " (p: p.name) config.services.xserver.displayManager.extraSessionFilePackages}
|
||||
'' defaultDM;
|
||||
};
|
||||
|
||||
};
|
||||
|
@ -57,8 +57,12 @@ in {
|
||||
sessionPath = mkOption {
|
||||
default = [];
|
||||
example = literalExample "[ pkgs.gnome3.gpaste ]";
|
||||
description = "Additional list of packages to be added to the session search path.
|
||||
Useful for gnome shell extensions or gsettings-conditionated autostart.";
|
||||
description = ''
|
||||
Additional list of packages to be added to the session search path.
|
||||
Useful for GNOME Shell extensions or GSettings-conditional autostart.
|
||||
|
||||
Note that this should be a last resort; patching the package is preferred (see GPaste).
|
||||
'';
|
||||
apply = list: list ++ [ pkgs.gnome3.gnome-shell pkgs.gnome3.gnome-shell-extensions ];
|
||||
};
|
||||
|
||||
@ -126,18 +130,10 @@ in {
|
||||
|
||||
fonts.fonts = [ pkgs.dejavu_fonts pkgs.cantarell-fonts ];
|
||||
|
||||
services.xserver.desktopManager.session = singleton
|
||||
{ name = "gnome3";
|
||||
bgSupport = true;
|
||||
start = ''
|
||||
# Set GTK_DATA_PREFIX so that GTK+ can find the themes
|
||||
export GTK_DATA_PREFIX=${config.system.path}
|
||||
|
||||
# find theme engines
|
||||
export GTK_PATH=${config.system.path}/lib/gtk-3.0:${config.system.path}/lib/gtk-2.0
|
||||
|
||||
export XDG_MENU_PREFIX=gnome-
|
||||
services.xserver.displayManager.extraSessionFilePackages = [ pkgs.gnome3.gnome-session ];
|
||||
|
||||
services.xserver.displayManager.sessionCommands = ''
|
||||
if test "$XDG_CURRENT_DESKTOP" = "GNOME"; then
|
||||
${concatMapStrings (p: ''
|
||||
if [ -d "${p}/share/gsettings-schemas/${p.name}" ]; then
|
||||
export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${p}/share/gsettings-schemas/${p.name}
|
||||
@ -148,34 +144,28 @@ in {
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${p}/lib
|
||||
fi
|
||||
'') cfg.sessionPath}
|
||||
fi
|
||||
'';
|
||||
|
||||
# Override default mimeapps
|
||||
export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${mimeAppsList}/share
|
||||
environment.variables.GNOME_SESSION_DEBUG = optionalString cfg.debug "1";
|
||||
|
||||
# Override gsettings-desktop-schema
|
||||
export NIX_GSETTINGS_OVERRIDES_DIR=${nixos-gsettings-desktop-schemas}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas
|
||||
# Override default mimeapps
|
||||
environment.variables.XDG_DATA_DIRS = [ "${mimeAppsList}/share" ];
|
||||
|
||||
# Let nautilus find extensions
|
||||
export NAUTILUS_EXTENSION_DIR=${config.system.path}/lib/nautilus/extensions-3.0/
|
||||
# Override GSettings schemas
|
||||
environment.variables.NIX_GSETTINGS_OVERRIDES_DIR = "${nixos-gsettings-desktop-schemas}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas";
|
||||
|
||||
# Find the mouse
|
||||
export XCURSOR_PATH=~/.icons:${config.system.path}/share/icons
|
||||
|
||||
# Update user dirs as described in http://freedesktop.org/wiki/Software/xdg-user-dirs/
|
||||
${pkgs.xdg-user-dirs}/bin/xdg-user-dirs-update
|
||||
|
||||
${pkgs.gnome3.gnome-session}/bin/gnome-session ${optionalString cfg.debug "--debug"} &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
|
||||
services.xserver.updateDbusEnvironment = true;
|
||||
# Let nautilus find extensions
|
||||
# TODO: Create nautilus-with-extensions package
|
||||
environment.variables.NAUTILUS_EXTENSION_DIR = "${config.system.path}/lib/nautilus/extensions-3.0";
|
||||
|
||||
environment.variables.GIO_EXTRA_MODULES = [ "${lib.getLib pkgs.gnome3.dconf}/lib/gio/modules"
|
||||
"${pkgs.gnome3.glib-networking.out}/lib/gio/modules"
|
||||
"${pkgs.gnome3.gvfs}/lib/gio/modules" ];
|
||||
environment.systemPackages = pkgs.gnome3.corePackages ++ cfg.sessionPath
|
||||
++ (removePackagesByName pkgs.gnome3.optionalPackages config.environment.gnome3.excludePackages);
|
||||
++ (removePackagesByName pkgs.gnome3.optionalPackages config.environment.gnome3.excludePackages) ++ [
|
||||
pkgs.xdg-user-dirs # Update user dirs as described in http://freedesktop.org/wiki/Software/xdg-user-dirs/
|
||||
];
|
||||
|
||||
# Use the correct gnome3 packageSet
|
||||
networking.networkmanager.basePackages =
|
||||
|
@ -27,55 +27,26 @@ let
|
||||
Xft.hintstyle: hintslight
|
||||
'';
|
||||
|
||||
# file provided by services.xserver.displayManager.session.script
|
||||
xsession = wm: dm: pkgs.writeScript "xsession"
|
||||
# file provided by services.xserver.displayManager.session.wrapper
|
||||
xsessionWrapper = pkgs.writeScript "xsession-wrapper"
|
||||
''
|
||||
#! ${pkgs.bash}/bin/bash
|
||||
|
||||
# Expected parameters:
|
||||
# $1 = <desktop-manager>+<window-manager>
|
||||
|
||||
# Actual parameters (FIXME):
|
||||
# SDDM is calling this script like the following:
|
||||
# $1 = /nix/store/xxx-xsession (= $0)
|
||||
# $2 = <desktop-manager>+<window-manager>
|
||||
# SLiM is using the following parameter:
|
||||
# $1 = /nix/store/xxx-xsession <desktop-manager>+<window-manager>
|
||||
# LightDM keeps the double quotes:
|
||||
# $1 = /nix/store/xxx-xsession "<desktop-manager>+<window-manager>"
|
||||
# The fake/auto display manager doesn't use any parameters and GDM is
|
||||
# broken.
|
||||
# If you want to "debug" this script don't print the parameters to stdout
|
||||
# or stderr because this script will be executed multiple times and the
|
||||
# output won't be visible in the log when the script is executed for the
|
||||
# first time (e.g. append them to a file instead)!
|
||||
|
||||
# All of the above cases are handled by the following hack (FIXME).
|
||||
# Since this line is *very important* for *all display managers* it is
|
||||
# very important to test changes to the following line with all display
|
||||
# managers:
|
||||
if [ "''${1:0:1}" = "/" ]; then eval exec "$1" "$2" ; fi
|
||||
|
||||
# Now it should be safe to assume that the script was called with the
|
||||
# expected parameters.
|
||||
# Shared environment setup for graphical sessions.
|
||||
|
||||
. /etc/profile
|
||||
cd "$HOME"
|
||||
|
||||
# The first argument of this script is the session type.
|
||||
sessionType="$1"
|
||||
if [ "$sessionType" = default ]; then sessionType=""; fi
|
||||
|
||||
${optionalString cfg.startDbusSession ''
|
||||
if test -z "$DBUS_SESSION_BUS_ADDRESS"; then
|
||||
exec ${pkgs.dbus.dbus-launch} --exit-with-session "$0" "$sessionType"
|
||||
exec ${pkgs.dbus.dbus-launch} --exit-with-session "$0" "$@"
|
||||
fi
|
||||
''}
|
||||
|
||||
${optionalString cfg.displayManager.job.logToJournal ''
|
||||
if [ -z "$_DID_SYSTEMD_CAT" ]; then
|
||||
export _DID_SYSTEMD_CAT=1
|
||||
exec ${config.systemd.package}/bin/systemd-cat -t xsession "$0" "$sessionType"
|
||||
exec ${config.systemd.package}/bin/systemd-cat -t xsession "$0" "$@"
|
||||
fi
|
||||
''}
|
||||
|
||||
@ -90,7 +61,9 @@ let
|
||||
}
|
||||
|
||||
# Publish access credentials in the root window.
|
||||
${config.hardware.pulseaudio.package.out}/bin/pactl load-module module-x11-publish "display=$DISPLAY"
|
||||
if ${config.hardware.pulseaudio.package.out}/bin/pulseaudio --dump-modules | grep module-x11-publish &> /dev/null; then
|
||||
${config.hardware.pulseaudio.package.out}/bin/pactl load-module module-x11-publish "display=$DISPLAY"
|
||||
fi
|
||||
''}
|
||||
|
||||
# Tell systemd about our $DISPLAY and $XAUTHORITY.
|
||||
@ -101,6 +74,7 @@ let
|
||||
${config.systemd.package}/bin/systemctl --user import-environment DISPLAY XAUTHORITY DBUS_SESSION_BUS_ADDRESS
|
||||
|
||||
# Load X defaults.
|
||||
# FIXME: Check XDG_SESSION_TYPE against x11
|
||||
${xorg.xrdb}/bin/xrdb -merge ${xresourcesXft}
|
||||
if test -e ~/.Xresources; then
|
||||
${xorg.xrdb}/bin/xrdb -merge ~/.Xresources
|
||||
@ -132,12 +106,33 @@ let
|
||||
# Allow the user to setup a custom session type.
|
||||
if test -x ~/.xsession; then
|
||||
exec ~/.xsession
|
||||
else
|
||||
if test "$sessionType" = "custom"; then
|
||||
sessionType="" # fall-thru if there is no ~/.xsession
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "$1"; then
|
||||
# Run the supplied session command. Remove any double quotes with eval.
|
||||
eval exec "$@"
|
||||
else
|
||||
# Fall back to the default window/desktopManager
|
||||
exec ${cfg.displayManager.session.script}
|
||||
fi
|
||||
'';
|
||||
|
||||
# file provided by services.xserver.displayManager.session.script
|
||||
xsession = wm: dm: pkgs.writeScript "xsession"
|
||||
''
|
||||
#! ${pkgs.bash}/bin/bash
|
||||
|
||||
# Legacy session script used to construct .desktop files from
|
||||
# `services.xserver.displayManager.session` entries. Called from
|
||||
# `sessionWrapper`.
|
||||
|
||||
# Expected parameters:
|
||||
# $1 = <desktop-manager>+<window-manager>
|
||||
|
||||
# The first argument of this script is the session type.
|
||||
sessionType="$1"
|
||||
if [ "$sessionType" = default ]; then sessionType=""; fi
|
||||
|
||||
# The session type is "<desktop-manager>+<window-manager>", so
|
||||
# extract those (see:
|
||||
# http://wiki.bash-hackers.org/syntax/pe#substring_removal).
|
||||
@ -186,19 +181,22 @@ let
|
||||
allowSubstitutes = false;
|
||||
}
|
||||
''
|
||||
mkdir -p "$out"
|
||||
mkdir -p "$out/share/xsessions"
|
||||
${concatMapStrings (n: ''
|
||||
cat - > "$out/${n}.desktop" << EODESKTOP
|
||||
cat - > "$out/share/xsessions/${n}.desktop" << EODESKTOP
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Type=XSession
|
||||
TryExec=${cfg.displayManager.session.script}
|
||||
Exec=${cfg.displayManager.session.script} "${n}"
|
||||
X-GDM-BypassXsession=true
|
||||
Name=${n}
|
||||
Comment=
|
||||
EODESKTOP
|
||||
'') names}
|
||||
|
||||
${concatMapStrings (pkg: ''
|
||||
${xorg.lndir}/bin/lndir ${pkg}/share/xsessions $out/share/xsessions
|
||||
'') cfg.displayManager.extraSessionFilePackages}
|
||||
'';
|
||||
|
||||
in
|
||||
@ -245,6 +243,14 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
extraSessionFilePackages = mkOption {
|
||||
type = types.listOf types.package;
|
||||
default = [];
|
||||
description = ''
|
||||
A list of packages containing xsession files to be passed to the display manager.
|
||||
'';
|
||||
};
|
||||
|
||||
session = mkOption {
|
||||
default = [];
|
||||
example = literalExample
|
||||
@ -280,6 +286,7 @@ in
|
||||
(filter (w: d.name != "none" || w.name != "none") wm));
|
||||
desktops = mkDesktops names;
|
||||
script = xsession wm dm;
|
||||
wrapper = xsessionWrapper;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -109,7 +109,7 @@ in
|
||||
environment = {
|
||||
GDM_X_SERVER_EXTRA_ARGS = toString
|
||||
(filter (arg: arg != "-terminate") cfg.xserverArgs);
|
||||
GDM_SESSIONS_DIR = "${cfg.session.desktops}";
|
||||
GDM_SESSIONS_DIR = "${cfg.session.desktops}/share/xsessions";
|
||||
# Find the mouse
|
||||
XCURSOR_PATH = "~/.icons:${pkgs.gnome3.adwaita-icon-theme}/share/icons";
|
||||
};
|
||||
@ -173,6 +173,8 @@ in
|
||||
${optionalString cfg.gdm.debug "Enable=true"}
|
||||
'';
|
||||
|
||||
environment.etc."gdm/Xsession".source = config.services.xserver.displayManager.session.wrapper;
|
||||
|
||||
# GDM LFS PAM modules, adapted somehow to NixOS
|
||||
security.pam.services = {
|
||||
gdm-launch-environment.text = ''
|
||||
|
@ -23,7 +23,7 @@ let
|
||||
makeWrapper ${pkgs.lightdm_gtk_greeter}/sbin/lightdm-gtk-greeter \
|
||||
$out/greeter \
|
||||
--prefix PATH : "${pkgs.glibc.bin}/bin" \
|
||||
--set GDK_PIXBUF_MODULE_FILE "${pkgs.gdk_pixbuf.out}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache" \
|
||||
--set GDK_PIXBUF_MODULE_FILE "${pkgs.librsvg.out}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache" \
|
||||
--set GTK_PATH "${theme}:${pkgs.gtk3.out}" \
|
||||
--set GTK_EXE_PREFIX "${theme}" \
|
||||
--set GTK_DATA_PREFIX "${theme}" \
|
||||
|
@ -45,11 +45,11 @@ let
|
||||
greeter-user = ${config.users.users.lightdm.name}
|
||||
greeters-directory = ${cfg.greeter.package}
|
||||
''}
|
||||
sessions-directory = ${dmcfg.session.desktops}
|
||||
sessions-directory = ${dmcfg.session.desktops}/share/xsessions
|
||||
|
||||
[Seat:*]
|
||||
xserver-command = ${xserverWrapper}
|
||||
session-wrapper = ${dmcfg.session.script}
|
||||
session-wrapper = ${dmcfg.session.wrapper}
|
||||
${optionalString cfg.greeter.enable ''
|
||||
greeter-session = ${cfg.greeter.name}
|
||||
''}
|
||||
@ -176,21 +176,13 @@ in
|
||||
LightDM auto-login requires services.xserver.displayManager.lightdm.autoLogin.user to be set
|
||||
'';
|
||||
}
|
||||
{ assertion = cfg.autoLogin.enable -> elem defaultSessionName dmcfg.session.names;
|
||||
{ assertion = cfg.autoLogin.enable -> dmDefault != "none" || wmDefault != "none";
|
||||
message = ''
|
||||
LightDM auto-login requires that services.xserver.desktopManager.default and
|
||||
services.xserver.windowMananger.default are set to valid values. The current
|
||||
default session: ${defaultSessionName} is not valid.
|
||||
'';
|
||||
}
|
||||
{ assertion = hasDefaultUserSession -> elem defaultSessionName dmcfg.session.names;
|
||||
message = ''
|
||||
services.xserver.desktopManager.default and
|
||||
services.xserver.windowMananger.default are not set to valid
|
||||
values. The current default session: ${defaultSessionName}
|
||||
is not valid.
|
||||
'';
|
||||
}
|
||||
{ assertion = !cfg.greeter.enable -> (cfg.autoLogin.enable && cfg.autoLogin.timeout == 0);
|
||||
message = ''
|
||||
LightDM can only run without greeter if automatic login is enabled and the timeout for it
|
||||
|
@ -49,8 +49,8 @@ let
|
||||
MinimumVT=${toString (if xcfg.tty != null then xcfg.tty else 7)}
|
||||
ServerPath=${xserverWrapper}
|
||||
XephyrPath=${pkgs.xorg.xorgserver.out}/bin/Xephyr
|
||||
SessionCommand=${dmcfg.session.script}
|
||||
SessionDir=${dmcfg.session.desktops}
|
||||
SessionCommand=${dmcfg.session.wrapper}
|
||||
SessionDir=${dmcfg.session.desktops}/share/xsessions
|
||||
XauthPath=${pkgs.xorg.xauth}/bin/xauth
|
||||
DisplayCommand=${Xsetup}
|
||||
DisplayStopCommand=${Xstop}
|
||||
|
@ -13,8 +13,8 @@ let
|
||||
xauth_path ${dmcfg.xauthBin}
|
||||
default_xserver ${dmcfg.xserverBin}
|
||||
xserver_arguments ${toString dmcfg.xserverArgs}
|
||||
sessiondir ${dmcfg.session.desktops}
|
||||
login_cmd exec ${pkgs.runtimeShell} ${dmcfg.session.script} "%session"
|
||||
sessiondir ${dmcfg.session.desktops}/share/xsessions
|
||||
login_cmd exec ${pkgs.runtimeShell} ${dmcfg.session.wrapper} "%session"
|
||||
halt_cmd ${config.systemd.package}/sbin/shutdown -h now
|
||||
reboot_cmd ${config.systemd.package}/sbin/shutdown -r now
|
||||
logfile /dev/stderr
|
||||
|
@ -43,6 +43,7 @@ def write_loader_conf(profile, generation):
|
||||
f.write("default nixos-generation-%d\n" % (generation))
|
||||
if not @editor@:
|
||||
f.write("editor 0");
|
||||
f.write("console-mode @consoleMode@\n");
|
||||
os.rename("@efiSysMountPoint@/loader/loader.conf.tmp", "@efiSysMountPoint@/loader/loader.conf")
|
||||
|
||||
def profile_path(profile, generation, name):
|
||||
|
@ -22,6 +22,8 @@ let
|
||||
|
||||
editor = if cfg.editor then "True" else "False";
|
||||
|
||||
inherit (cfg) consoleMode;
|
||||
|
||||
inherit (efi) efiSysMountPoint canTouchEfiVariables;
|
||||
};
|
||||
in {
|
||||
@ -52,6 +54,38 @@ in {
|
||||
compatibility.
|
||||
'';
|
||||
};
|
||||
|
||||
consoleMode = mkOption {
|
||||
default = "keep";
|
||||
|
||||
type = types.enum [ "0" "1" "2" "auto" "max" "keep" ];
|
||||
|
||||
description = ''
|
||||
The resolution of the console. The following values are valid:
|
||||
</para>
|
||||
<para>
|
||||
<itemizedlist>
|
||||
<listitem><para>
|
||||
<literal>"0"</literal>: Standard UEFI 80x25 mode
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<literal>"1"</literal>: 80x50 mode, not supported by all devices
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<literal>"2"</literal>: The first non-standard mode provided by the device firmware, if any
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<literal>"auto"</literal>: Pick a suitable mode automatically using heuristics
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<literal>"max"</literal>: Pick the highest-numbered available mode
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<literal>"keep"</literal>: Keep the mode selected by firmware (the default)
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
@ -55,6 +55,15 @@ with lib;
|
||||
'';
|
||||
};
|
||||
|
||||
device = mkOption {
|
||||
default = "TPPS/2 IBM TrackPoint";
|
||||
type = types.str;
|
||||
description = ''
|
||||
The device name of the trackpoint. You can check with xinput.
|
||||
Some newer devices (example x1c6) use "TPPS/2 Elan TrackPoint".
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
@ -68,12 +77,12 @@ with lib;
|
||||
(mkIf cfg.enable {
|
||||
services.udev.extraRules =
|
||||
''
|
||||
ACTION=="add|change", SUBSYSTEM=="input", ATTR{name}=="TPPS/2 IBM TrackPoint", ATTR{device/speed}="${toString cfg.speed}", ATTR{device/sensitivity}="${toString cfg.sensitivity}"
|
||||
ACTION=="add|change", SUBSYSTEM=="input", ATTR{name}=="${cfg.device}", ATTR{device/speed}="${toString cfg.speed}", ATTR{device/sensitivity}="${toString cfg.sensitivity}"
|
||||
'';
|
||||
|
||||
system.activationScripts.trackpoint =
|
||||
''
|
||||
${config.systemd.package}/bin/udevadm trigger --attr-match=name="TPPS/2 IBM TrackPoint"
|
||||
${config.systemd.package}/bin/udevadm trigger --attr-match=name="${cfg.device}"
|
||||
'';
|
||||
})
|
||||
|
||||
@ -81,7 +90,7 @@ with lib;
|
||||
services.xserver.inputClassSections =
|
||||
[''
|
||||
Identifier "Trackpoint Wheel Emulation"
|
||||
MatchProduct "${if cfg.fakeButtons then "PS/2 Generic Mouse" else "ETPS/2 Elantech TrackPoint|Elantech PS/2 TrackPoint|TPPS/2 IBM TrackPoint|DualPoint Stick|Synaptics Inc. Composite TouchPad / TrackPoint|ThinkPad USB Keyboard with TrackPoint|USB Trackpoint pointing device|Composite TouchPad / TrackPoint"}"
|
||||
MatchProduct "${if cfg.fakeButtons then "PS/2 Generic Mouse" else "ETPS/2 Elantech TrackPoint|Elantech PS/2 TrackPoint|TPPS/2 IBM TrackPoint|DualPoint Stick|Synaptics Inc. Composite TouchPad / TrackPoint|ThinkPad USB Keyboard with TrackPoint|USB Trackpoint pointing device|Composite TouchPad / TrackPoint|${cfg.device}"}"
|
||||
MatchDevicePath "/dev/input/event*"
|
||||
Option "EmulateWheel" "true"
|
||||
Option "EmulateWheelButton" "2"
|
||||
|
@ -256,6 +256,7 @@ in rec {
|
||||
tests.buildbot = callTest tests/buildbot.nix {};
|
||||
tests.cadvisor = callTestOnMatchingSystems ["x86_64-linux"] tests/cadvisor.nix {};
|
||||
tests.ceph = callTestOnMatchingSystems ["x86_64-linux"] tests/ceph.nix {};
|
||||
tests.cfssl = callTestOnMatchingSystems ["x86_64-linux"] tests/cfssl.nix {};
|
||||
tests.chromium = (callSubTestsOnMatchingSystems ["x86_64-linux"] tests/chromium.nix {}).stable or {};
|
||||
tests.cjdns = callTest tests/cjdns.nix {};
|
||||
tests.cloud-init = callTest tests/cloud-init.nix {};
|
||||
|
@ -12,7 +12,9 @@ let
|
||||
'';
|
||||
});
|
||||
|
||||
pythonPackages = (super.python.override {
|
||||
# Override certifi so that it accepts fake certificate for Let's Encrypt
|
||||
# Need to override the attribute used by simp_le, which is python3Packages
|
||||
python3Packages = (super.python3.override {
|
||||
packageOverrides = lib.const (pysuper: {
|
||||
certifi = pysuper.certifi.overridePythonAttrs (attrs: {
|
||||
postPatch = (attrs.postPatch or "") + ''
|
||||
|
67
nixos/tests/cfssl.nix
Normal file
67
nixos/tests/cfssl.nix
Normal file
@ -0,0 +1,67 @@
|
||||
import ./make-test.nix ({ pkgs, ...} : {
|
||||
name = "cfssl";
|
||||
|
||||
machine = { config, lib, pkgs, ... }:
|
||||
{
|
||||
networking.firewall.allowedTCPPorts = [ config.services.cfssl.port ];
|
||||
|
||||
services.cfssl.enable = true;
|
||||
systemd.services.cfssl.after = [ "cfssl-init.service" ];
|
||||
|
||||
systemd.services.cfssl-init = {
|
||||
description = "Initialize the cfssl CA";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
User = "cfssl";
|
||||
Type = "oneshot";
|
||||
WorkingDirectory = config.services.cfssl.dataDir;
|
||||
};
|
||||
script = with pkgs; ''
|
||||
${cfssl}/bin/cfssl genkey -initca ${pkgs.writeText "ca.json" (builtins.toJSON {
|
||||
hosts = [ "ca.example.com" ];
|
||||
key = {
|
||||
algo = "rsa"; size = 4096; };
|
||||
names = [
|
||||
{
|
||||
C = "US";
|
||||
L = "San Francisco";
|
||||
O = "Internet Widgets, LLC";
|
||||
OU = "Certificate Authority";
|
||||
ST = "California";
|
||||
}
|
||||
];
|
||||
})} | ${cfssl}/bin/cfssljson -bare ca
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
testScript =
|
||||
let
|
||||
cfsslrequest = with pkgs; writeScript "cfsslrequest" ''
|
||||
curl -X POST -H "Content-Type: application/json" -d @${csr} \
|
||||
http://localhost:8888/api/v1/cfssl/newkey | ${cfssl}/bin/cfssljson /tmp/certificate
|
||||
'';
|
||||
csr = pkgs.writeText "csr.json" (builtins.toJSON {
|
||||
CN = "www.example.com";
|
||||
hosts = [ "example.com" "www.example.com" ];
|
||||
key = {
|
||||
algo = "rsa";
|
||||
size = 2048;
|
||||
};
|
||||
names = [
|
||||
{
|
||||
C = "US";
|
||||
L = "San Francisco";
|
||||
O = "Example Company, LLC";
|
||||
OU = "Operations";
|
||||
ST = "California";
|
||||
}
|
||||
];
|
||||
});
|
||||
in
|
||||
''
|
||||
$machine->waitForUnit('cfssl.service');
|
||||
$machine->waitUntilSucceeds('${cfsslrequest}');
|
||||
$machine->succeed('ls /tmp/certificate-key.pem');
|
||||
'';
|
||||
})
|
@ -15,6 +15,7 @@ import ./make-test.nix ({ pkgs, ...} : {
|
||||
services.xserver.displayManager.lightdm.autoLogin.enable = true;
|
||||
services.xserver.displayManager.lightdm.autoLogin.user = "alice";
|
||||
services.xserver.desktopManager.gnome3.enable = true;
|
||||
services.xserver.desktopManager.default = "gnome";
|
||||
|
||||
virtualisation.memorySize = 1024;
|
||||
};
|
||||
|
@ -1,4 +1,4 @@
|
||||
import ./make-test.nix ({ ... } :
|
||||
import ./make-test.nix ({ pkgs, ... } :
|
||||
{
|
||||
name = "graphite";
|
||||
nodes = {
|
||||
@ -11,10 +11,12 @@ import ./make-test.nix ({ ... } :
|
||||
api = {
|
||||
enable = true;
|
||||
port = 8082;
|
||||
finders = [ pkgs.python27Packages.influxgraph ];
|
||||
};
|
||||
carbon.enableCache = true;
|
||||
seyren.enable = true;
|
||||
pager.enable = true;
|
||||
beacon.enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -25,6 +27,7 @@ import ./make-test.nix ({ ... } :
|
||||
$one->waitForUnit("graphiteWeb.service");
|
||||
$one->waitForUnit("graphiteApi.service");
|
||||
$one->waitForUnit("graphitePager.service");
|
||||
$one->waitForUnit("graphite-beacon.service");
|
||||
$one->waitForUnit("carbonCache.service");
|
||||
$one->waitForUnit("seyren.service");
|
||||
# The services above are of type "simple". systemd considers them active immediately
|
||||
|
@ -19,6 +19,10 @@ import ./make-test.nix ({ pkgs, ...} : {
|
||||
startAll;
|
||||
|
||||
$netdata->waitForUnit("netdata.service");
|
||||
|
||||
# check if the netdata main page loads.
|
||||
$netdata->succeed("curl --fail http://localhost:19999/");
|
||||
|
||||
# check if netdata can read disk ops for root owned processes.
|
||||
# if > 0, successful. verifies both netdata working and
|
||||
# apps.plugin has elevated capabilities.
|
||||
|
@ -86,6 +86,7 @@ rec {
|
||||
};
|
||||
|
||||
parity = callPackage ./parity { };
|
||||
parity-beta = callPackage ./parity/beta.nix { };
|
||||
parity-ui = callPackage ./parity-ui { };
|
||||
|
||||
particl-core = callPackage ./particl/particl-core.nix { boost = boost165; miniupnpc = miniupnpc_2; };
|
||||
|
7
pkgs/applications/altcoins/parity/beta.nix
Normal file
7
pkgs/applications/altcoins/parity/beta.nix
Normal file
@ -0,0 +1,7 @@
|
||||
let
|
||||
version = "2.0.1";
|
||||
sha256 = "0rfq0izpswfwbyvr5kb6zjyf6sd7l1706c0sp7ccy6ykdfb4v6zs";
|
||||
cargoSha256 = "1ij17bfwvikqi5aj71j1nwf3jhkf3y9a0kwydajviwal47p9grl9";
|
||||
patches = [ ./patches/vendored-sources-2.0.patch ];
|
||||
in
|
||||
import ./parity.nix { inherit version sha256 cargoSha256 patches; }
|
@ -1,7 +1,7 @@
|
||||
let
|
||||
version = "1.10.9";
|
||||
sha256 = "1irfksx887vvvdf97q26qacn22kmyj8fgb3ghh9wv5qnzrn3564g";
|
||||
cargoSha256 = "0rzhabyhprmcg0cdmibbb8zgqf6z4izsdq8m060mppkkv675x0lf";
|
||||
patches = [ ./patches/vendored-sources-1.10.patch ];
|
||||
version = "1.11.8";
|
||||
sha256 = "0qk5vl8ql3pr9pz5iz7whahwqi1fcbsf8kphn6z4grgc87id7b19";
|
||||
cargoSha256 = "0p2idd36cyzp2ax81k533bdma4hz0ws2981qj2s7jnhvmj4941l8";
|
||||
patches = [ ./patches/vendored-sources-1.11.patch ];
|
||||
in
|
||||
import ./parity.nix { inherit version sha256 cargoSha256 patches; }
|
||||
|
@ -10,6 +10,8 @@
|
||||
, pkgconfig
|
||||
, openssl
|
||||
, systemd
|
||||
, cmake
|
||||
, perl
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
@ -18,12 +20,15 @@ rustPlatform.buildRustPackage rec {
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "paritytech";
|
||||
repo = "parity";
|
||||
repo = "parity-ethereum";
|
||||
rev = "v${version}";
|
||||
inherit sha256;
|
||||
};
|
||||
|
||||
buildInputs = [ pkgconfig systemd.lib systemd.dev openssl openssl.dev ];
|
||||
buildInputs = [
|
||||
pkgconfig cmake perl
|
||||
systemd.lib systemd.dev openssl openssl.dev
|
||||
];
|
||||
|
||||
# Some checks failed
|
||||
doCheck = false;
|
||||
|
@ -1,5 +1,5 @@
|
||||
diff --git a/.cargo/config b/.cargo/config
|
||||
index 72652ad2f..b21c6aa7b 100644
|
||||
index 72652ad2f..57c5c2f8f 100644
|
||||
--- a/.cargo/config
|
||||
+++ b/.cargo/config
|
||||
@@ -1,3 +1,108 @@
|
||||
@ -52,19 +52,19 @@ index 72652ad2f..b21c6aa7b 100644
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/daemonize"]
|
||||
+git = "https://github.com/paritytech/daemonize"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/hidapi-rs"]
|
||||
+git = "https://github.com/paritytech/hidapi-rs"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/hyper"]
|
||||
+git = "https://github.com/paritytech/hyper"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/jsonrpc.git"]
|
||||
+git = "https://github.com/paritytech/jsonrpc.git"
|
||||
+branch = "parity-1.10"
|
||||
+branch = "parity-1.11"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/libusb-rs"]
|
||||
@ -77,6 +77,11 @@ index 72652ad2f..b21c6aa7b 100644
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/ring"]
|
||||
+git = "https://github.com/paritytech/ring"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/rust-ctrlc.git"]
|
||||
+git = "https://github.com/paritytech/rust-ctrlc.git"
|
||||
+branch = "master"
|
||||
@ -102,13 +107,7 @@ index 72652ad2f..b21c6aa7b 100644
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/tailhook/rotor"]
|
||||
+git = "https://github.com/tailhook/rotor"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/tomusdrw/ws-rs"]
|
||||
+git = "https://github.com/tomusdrw/ws-rs"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
@ -0,0 +1,98 @@
|
||||
diff --git a/.cargo/config b/.cargo/config
|
||||
index 72652ad2f..3c0eca89a 100644
|
||||
--- a/.cargo/config
|
||||
+++ b/.cargo/config
|
||||
@@ -1,3 +1,93 @@
|
||||
[target.x86_64-pc-windows-msvc]
|
||||
# Link the C runtime statically ; https://github.com/paritytech/parity/issues/6643
|
||||
rustflags = ["-Ctarget-feature=+crt-static"]
|
||||
+
|
||||
+[source."https://github.com/alexcrichton/mio-named-pipes"]
|
||||
+git = "https://github.com/alexcrichton/mio-named-pipes"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/nikvolf/parity-tokio-ipc"]
|
||||
+git = "https://github.com/nikvolf/parity-tokio-ipc"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/nikvolf/tokio-named-pipes"]
|
||||
+git = "https://github.com/nikvolf/tokio-named-pipes"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/app-dirs-rs"]
|
||||
+git = "https://github.com/paritytech/app-dirs-rs"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/bn"]
|
||||
+git = "https://github.com/paritytech/bn"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/daemonize"]
|
||||
+git = "https://github.com/paritytech/daemonize"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/hidapi-rs"]
|
||||
+git = "https://github.com/paritytech/hidapi-rs"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/jsonrpc.git"]
|
||||
+git = "https://github.com/paritytech/jsonrpc.git"
|
||||
+branch = "parity-1.11"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/libusb-rs"]
|
||||
+git = "https://github.com/paritytech/libusb-rs"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/libusb-sys"]
|
||||
+git = "https://github.com/paritytech/libusb-sys"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/parity-common"]
|
||||
+git = "https://github.com/paritytech/parity-common"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/ring"]
|
||||
+git = "https://github.com/paritytech/ring"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/rust-ctrlc.git"]
|
||||
+git = "https://github.com/paritytech/rust-ctrlc.git"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/rust-rocksdb"]
|
||||
+git = "https://github.com/paritytech/rust-rocksdb"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/rust-secp256k1"]
|
||||
+git = "https://github.com/paritytech/rust-secp256k1"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/rust-snappy"]
|
||||
+git = "https://github.com/paritytech/rust-snappy"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/trezor-sys"]
|
||||
+git = "https://github.com/paritytech/trezor-sys"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/tomusdrw/ws-rs"]
|
||||
+git = "https://github.com/tomusdrw/ws-rs"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
@ -1,4 +1,4 @@
|
||||
{ stdenv, fetchFromGitHub, cairo, fftw, gtkmm2, lv2, lvtk, pkgconfig, python }:
|
||||
{ stdenv, fetchFromGitHub, cairo, fftw, gtkmm2, lv2, lvtk, pkgconfig, python3 }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "ams-lv2-${version}";
|
||||
@ -12,13 +12,13 @@ stdenv.mkDerivation rec {
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig ];
|
||||
buildInputs = [ cairo fftw gtkmm2 lv2 lvtk python ];
|
||||
buildInputs = [ cairo fftw gtkmm2 lv2 lvtk ];
|
||||
|
||||
configurePhase = "python waf configure --prefix=$out";
|
||||
configurePhase = "${python3.interpreter} waf configure --prefix=$out";
|
||||
|
||||
buildPhase = "python waf";
|
||||
buildPhase = "${python3.interpreter} waf";
|
||||
|
||||
installPhase = "python waf install";
|
||||
installPhase = "${python3.interpreter} waf install";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "An LV2 port of the internal modules found in Alsa Modular Synth";
|
||||
|
65
pkgs/applications/audio/cadence/default.nix
Normal file
65
pkgs/applications/audio/cadence/default.nix
Normal file
@ -0,0 +1,65 @@
|
||||
{ stdenv
|
||||
, fetchurl
|
||||
, pkgconfig
|
||||
, qtbase
|
||||
, makeWrapper
|
||||
, jack2Full
|
||||
, python3Packages
|
||||
, a2jmidid
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "0.9.0";
|
||||
name = "cadence";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/falkTX/Cadence/archive/v${version}.tar.gz";
|
||||
sha256 = "07z1mnb0bmldb3i31bgw816pnvlvr9gawr51rpx3mhixg5wpiqzb";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
makeWrapper
|
||||
pkgconfig
|
||||
qtbase
|
||||
];
|
||||
|
||||
apps = [
|
||||
"cadence"
|
||||
"cadence-jacksettings"
|
||||
"cadence-pulse2loopback"
|
||||
"claudia"
|
||||
"cadence-aloop-daemon"
|
||||
"cadence-logs"
|
||||
"cadence-render"
|
||||
"catarina"
|
||||
"claudia-launcher"
|
||||
"cadence-pulse2jack"
|
||||
"cadence-session-start"
|
||||
"catia"
|
||||
];
|
||||
|
||||
makeFlags = ''
|
||||
PREFIX=""
|
||||
DESTDIR=$(out)
|
||||
'';
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [ pyqt5 ];
|
||||
|
||||
postInstall = ''
|
||||
# replace with our own wrappers.
|
||||
for app in $apps; do
|
||||
rm $out/bin/$app
|
||||
makeWrapper ${python3Packages.python.interpreter} $out/bin/$app \
|
||||
--set PYTHONPATH "$PYTHONPATH:$out/share/cadence" \
|
||||
--add-flags "-O $out/share/cadence/src/$app.py"
|
||||
done
|
||||
'';
|
||||
|
||||
meta = {
|
||||
homepage = https://github.com/falkTX/Cadence/;
|
||||
description = "Collection of tools useful for audio production";
|
||||
license = stdenv.lib.licenses.mit;
|
||||
maintainers = with stdenv.lib.maintainers; [ genesis ];
|
||||
platforms = stdenv.lib.platforms.linux;
|
||||
};
|
||||
}
|
81
pkgs/applications/audio/reaper/default.nix
Normal file
81
pkgs/applications/audio/reaper/default.nix
Normal file
@ -0,0 +1,81 @@
|
||||
{ stdenv, fetchurl, autoPatchelfHook, makeWrapper
|
||||
, alsaLib, xorg
|
||||
, fetchFromGitHub, pkgconfig, gnome3
|
||||
, gnome2, gdk_pixbuf, cairo, glib, freetype
|
||||
, libpulseaudio
|
||||
}:
|
||||
|
||||
let
|
||||
libSwell = stdenv.mkDerivation {
|
||||
name = "libSwell";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "justinfrankel";
|
||||
repo = "WDL";
|
||||
rev = "e87f5bdee7327b63398366fde6ec0a3f08bf600d";
|
||||
sha256 = "147idjqc6nc23w9krl8a9w571k5jx190z3id6ir6cr8zsx0lakdb";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig ];
|
||||
buildInputs = [ gnome3.gtk ];
|
||||
|
||||
buildPhase = ''
|
||||
cd WDL/swell
|
||||
make
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mv libSwell.so $out
|
||||
'';
|
||||
};
|
||||
|
||||
in stdenv.mkDerivation rec {
|
||||
name = "reaper-${version}";
|
||||
version = "5.94";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://www.reaper.fm/files/${stdenv.lib.versions.major version}.x/reaper${builtins.replaceStrings ["."] [""] version}_linux_x86_64.tar.xz";
|
||||
sha256 = "16g5q12wh1cfbl9wq03vb7vpsd870k7i7883z0wn492x7y9syz8z";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoPatchelfHook makeWrapper ];
|
||||
|
||||
buildInputs = [
|
||||
alsaLib
|
||||
stdenv.cc.cc.lib
|
||||
|
||||
xorg.libX11
|
||||
xorg.libXi
|
||||
|
||||
gnome3.gtk
|
||||
gdk_pixbuf
|
||||
gnome2.pango
|
||||
cairo
|
||||
glib
|
||||
freetype
|
||||
];
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
./install-reaper.sh --install $out/opt
|
||||
rm $out/opt/REAPER/uninstall-reaper.sh
|
||||
|
||||
cp ${libSwell.out} $out/opt/REAPER/libSwell.so
|
||||
|
||||
wrapProgram $out/opt/REAPER/reaper \
|
||||
--prefix LD_LIBRARY_PATH : ${libpulseaudio}/lib
|
||||
|
||||
mkdir $out/bin
|
||||
ln -s $out/opt/REAPER/reaper $out/bin/
|
||||
ln -s $out/opt/REAPER/reamote-server $out/bin/
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Digital audio workstation";
|
||||
homepage = https://www.reaper.fm/;
|
||||
license = licenses.unfree;
|
||||
platforms = [ "x86_64-linux" ];
|
||||
maintainers = with maintainers; [ jfrankenau ];
|
||||
};
|
||||
}
|
@ -1,13 +1,18 @@
|
||||
{ fetchurl, stdenv, dpkg, xorg, alsaLib, makeWrapper, openssl, freetype
|
||||
{ fetchurl, stdenv, squashfsTools, xorg, alsaLib, makeWrapper, openssl, freetype
|
||||
, glib, pango, cairo, atk, gdk_pixbuf, gtk2, cups, nspr, nss, libpng
|
||||
, libgcrypt, systemd, fontconfig, dbus, expat, ffmpeg_0_10, curl, zlib, gnome3 }:
|
||||
|
||||
let
|
||||
# Please update the stable branch!
|
||||
# Latest version number can be found at:
|
||||
# http://repository-origin.spotify.com/pool/non-free/s/spotify-client/
|
||||
# Be careful not to pick the testing version.
|
||||
version = "1.0.80.480.g51b03ac3-13";
|
||||
# "rev" decides what is actually being downloaded
|
||||
version = "1.0.80.474.gef6b503e-7";
|
||||
# To get the latest stable revision:
|
||||
# curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/spotify?channel=stable' | jq '.download_url,.version,.last_updated'
|
||||
# To get general information:
|
||||
# curl -H 'Snap-Device-Series: 16' 'https://api.snapcraft.io/v2/snaps/info/spotify' | jq '.'
|
||||
# More exapmles of api usage:
|
||||
# https://github.com/canonical-websites/snapcraft.io/blob/master/webapp/publisher/snaps/views.py
|
||||
rev = "16";
|
||||
|
||||
|
||||
deps = [
|
||||
alsaLib
|
||||
@ -49,12 +54,20 @@ in
|
||||
stdenv.mkDerivation {
|
||||
name = "spotify-${version}";
|
||||
|
||||
# fetch from snapcraft instead of the debian repository most repos fetch from.
|
||||
# That is a bit more cumbersome. But the debian repository only keeps the last
|
||||
# two versions, while snapcraft should provide versions indefinately:
|
||||
# https://forum.snapcraft.io/t/how-can-a-developer-remove-her-his-app-from-snap-store/512
|
||||
|
||||
# This is the next-best thing, since we're not allowed to re-distribute
|
||||
# spotify ourselves:
|
||||
# https://community.spotify.com/t5/Desktop-Linux/Redistribute-Spotify-on-Linux-Distributions/td-p/1695334
|
||||
src = fetchurl {
|
||||
url = "https://repository-origin.spotify.com/pool/non-free/s/spotify-client/spotify-client_${version}_amd64.deb";
|
||||
sha256 = "e32f4816ae79dbfa0c14086e76df3bc83d526402aac1dbba534127fc00fe50ea";
|
||||
url = "https://api.snapcraft.io/api/v1/snaps/download/pOBIoZ2LrCB3rDohMxoYGnbN14EHOgD7_${rev}.snap";
|
||||
sha512 = "45b7ab574b30fb368e0b6f4dd60addbfd1ddc02173b4f98b31c524eed49073432352a361e75959ce8e2f752231e93c79ca1b538c4bd295c935d1e2e0585d147f";
|
||||
};
|
||||
|
||||
buildInputs = [ dpkg makeWrapper ];
|
||||
buildInputs = [ squashfsTools makeWrapper ];
|
||||
|
||||
doConfigure = false;
|
||||
doBuild = false;
|
||||
@ -63,7 +76,23 @@ stdenv.mkDerivation {
|
||||
|
||||
unpackPhase = ''
|
||||
runHook preUnpack
|
||||
dpkg-deb -x $src .
|
||||
unsquashfs "$src" '/usr/share/spotify' '/usr/bin/spotify' '/meta/snap.yaml'
|
||||
cd squashfs-root
|
||||
if ! grep -q 'grade: stable' meta/snap.yaml; then
|
||||
# Unfortunately this check is not reliable: At the moment (2018-07-26) the
|
||||
# latest version in the "edge" channel is also marked as stable.
|
||||
echo "The snap package is marked as unstable:"
|
||||
grep 'grade: ' meta/snap.yaml
|
||||
echo "You probably chose the wrong revision."
|
||||
exit 1
|
||||
fi
|
||||
if ! grep -q '${version}' meta/snap.yaml; then
|
||||
echo "Package version differs from version found in snap metadata:"
|
||||
grep 'version: ' meta/snap.yaml
|
||||
echo "While the nix package specifies: ${version}."
|
||||
echo "You probably chose the wrong revision or forgot to update the nix version."
|
||||
exit 1
|
||||
fi
|
||||
runHook postUnpack
|
||||
'';
|
||||
|
||||
@ -75,6 +104,8 @@ stdenv.mkDerivation {
|
||||
mkdir -p $libdir
|
||||
mv ./usr/* $out/
|
||||
|
||||
cp meta/snap.yaml $out
|
||||
|
||||
# Work around Spotify referring to a specific minor version of
|
||||
# OpenSSL.
|
||||
|
||||
|
49
pkgs/applications/audio/spotify/update.sh
Normal file
49
pkgs/applications/audio/spotify/update.sh
Normal file
@ -0,0 +1,49 @@
|
||||
channel="stable" # stable/candidate/edge
|
||||
nixpkgs="$(git rev-parse --show-toplevel)"
|
||||
spotify_nix="$nixpkgs/pkgs/applications/audio/spotify/default.nix"
|
||||
|
||||
|
||||
|
||||
# create bash array from snap info
|
||||
snap_info=($(
|
||||
curl -H 'X-Ubuntu-Series: 16' \
|
||||
"https://api.snapcraft.io/api/v1/snaps/details/spotify?channel=$channel" \
|
||||
| jq --raw-output \
|
||||
'.revision,.download_sha512,.version,.last_updated'
|
||||
))
|
||||
|
||||
revision="${snap_info[0]}"
|
||||
sha512="${snap_info[1]}"
|
||||
version="${snap_info[2]}"
|
||||
last_updated="${snap_info[3]}"
|
||||
|
||||
# find the last commited version
|
||||
version_pre=$(
|
||||
git grep 'version\s*=' HEAD "$spotify_nix" \
|
||||
| sed -Ene 's/.*"(.*)".*/\1/p'
|
||||
)
|
||||
|
||||
if [[ "$version_pre" = "$version" ]]; then
|
||||
echo "Spotify is already up ot date"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Updating from ${version_pre} to ${version}, released on ${last_updated}"
|
||||
|
||||
# search-andreplace revision, hash and version
|
||||
sed --regexp-extended \
|
||||
-e 's/rev\s*=\s*"[0-9]+"\s*;/rev = "'"${revision}"'";/' \
|
||||
-e 's/sha512\s*=\s*".{128}"\s*;/sha512 = "'"${sha512}"'";/' \
|
||||
-e 's/version\s*=\s*".*"\s*;/version = "'"${version}"'";/' \
|
||||
-i "$spotify_nix"
|
||||
|
||||
if ! nix-build -A spotify "$nixpkgs"; then
|
||||
echo "The updated spotify failed to build."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
git add "$spotify_nix"
|
||||
# show diff for review
|
||||
git diff HEAD
|
||||
# prepare commit message, but allow edit
|
||||
git commit --edit --message "spotify: $version_pre -> $version"
|
@ -1,4 +1,4 @@
|
||||
{ channel, pname, version, build, sha256Hash, deprecated ? false }:
|
||||
{ channel, pname, version, build, sha256Hash }:
|
||||
|
||||
{ bash
|
||||
, buildFHSUserEnv
|
||||
@ -37,18 +37,6 @@
|
||||
}:
|
||||
|
||||
let
|
||||
# TODO: This is a bit stupid to be honest...
|
||||
# The problem is that we have to make sure this is only executed if the
|
||||
# derivation is actually build to avoid always printing this warning (e.g.
|
||||
# "nix-env -qaP"). Since this will always evaluate to "" it won't actually
|
||||
# change the derivation (only generate a side-effect) but we have to make
|
||||
# sure this expression is evaluated lazily!
|
||||
printDeprecationWarning = if deprecated then (builtins.trace ''
|
||||
android-studio-preview and androidStudioPackages.preview are old aliases
|
||||
and will be dropped at some point, please use androidStudioPackages.beta
|
||||
instead (corresponds to the correct channel name).''
|
||||
"")
|
||||
else "";
|
||||
drvName = "android-studio-${channel}-${version}";
|
||||
androidStudio = stdenv.mkDerivation {
|
||||
name = drvName;
|
||||
@ -142,7 +130,7 @@ in
|
||||
text = ''
|
||||
#!${bash}/bin/bash
|
||||
${fhsEnv}/bin/${drvName}-fhs-env ${androidStudio}/bin/studio.sh
|
||||
'' + printDeprecationWarning;
|
||||
'';
|
||||
} // {
|
||||
meta = with stdenv.lib; {
|
||||
description = "The Official IDE for Android (${channel} channel)";
|
||||
|
@ -18,17 +18,13 @@ let
|
||||
sha256Hash = "016nyn1pqviy089hg0dq7m4cqb39fdxdcy4zknkaq7dmgv1dj6x9";
|
||||
};
|
||||
latestVersion = { # canary & dev
|
||||
version = "3.3.0.2"; # "Android Studio 3.3 Canary 3"
|
||||
build = "181.4884283";
|
||||
sha256Hash = "0r93yzw87cgzz60p60gknij5vaqmv1a1kyd4cr9gx8cbxw46lhwh";
|
||||
version = "3.3.0.3"; # "Android Studio 3.3 Canary 4"
|
||||
build = "182.4924367";
|
||||
sha256Hash = "03fxjxlsbrpklsss1nvlkb41skr5ymmq9vdns8iikcm1ng925vfd";
|
||||
};
|
||||
in rec {
|
||||
# TODO: Drop old alias after 18.09
|
||||
preview = mkStudio (betaVersion // {
|
||||
channel = "beta";
|
||||
pname = "android-studio-preview";
|
||||
deprecated = true;
|
||||
});
|
||||
# Old alias
|
||||
preview = beta;
|
||||
|
||||
# Attributes are named by their corresponding release channels
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
{ stdenv, pkgs, fetchurl, makeWrapper, gvfs, atomEnv}:
|
||||
{ stdenv, pkgs, fetchurl, makeWrapper, wrapGAppsHook, gvfs, gtk3, atomEnv }:
|
||||
|
||||
let
|
||||
common = pname: {version, sha256, beta ? null}:
|
||||
@ -14,7 +14,19 @@ let
|
||||
inherit sha256;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
nativeBuildInputs = [
|
||||
wrapGAppsHook # Fix error: GLib-GIO-ERROR **: No GSettings schemas are installed on the system
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
gtk3 # Fix error: GLib-GIO-ERROR **: Settings schema 'org.gtk.Settings.FileChooser' is not installed
|
||||
];
|
||||
|
||||
preFixup = ''
|
||||
gappsWrapperArgs+=(
|
||||
--prefix "PATH" : "${gvfs}/bin" \
|
||||
)
|
||||
'';
|
||||
|
||||
buildCommand = ''
|
||||
mkdir -p $out/usr/
|
||||
@ -25,9 +37,6 @@ let
|
||||
rm -r $out/share/lintian
|
||||
rm -r $out/usr/
|
||||
sed -i "s/${pname})/.${pname}-wrapped)/" $out/bin/${pname}
|
||||
# sed -i "s/'${pname}'/'.${pname}-wrapped'/" $out/bin/${pname}
|
||||
wrapProgram $out/bin/${pname} \
|
||||
--prefix "PATH" : "${gvfs}/bin"
|
||||
|
||||
fixupPhase
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "qgis-2.18.20";
|
||||
name = "qgis-2.18.22";
|
||||
|
||||
buildInputs = [ gdal qt4 flex openssl bison proj geos xlibsWrapper sqlite gsl qwt qscintilla
|
||||
fcgi libspatialindex libspatialite postgresql qjson qca2 txt2tags pkgconfig ]
|
||||
@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://qgis.org/downloads/${name}.tar.bz2";
|
||||
sha256 = "0bm9sv268lc3v48zjypsjjs62xnyb7zabzrms4jsy020waz6sk9g";
|
||||
sha256 = "00b3a2hfn3i7bdx7x96vz2nj0976vpkhid4ss7n8c33fdvw3k82a";
|
||||
};
|
||||
|
||||
# CMAKE_FIND_FRAMEWORK=never stops the installer choosing system
|
||||
|
@ -12,14 +12,14 @@ let
|
||||
};
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
version = "1.0";
|
||||
version = "1.1";
|
||||
name = "renderdoc-${version}";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "baldurk";
|
||||
repo = "renderdoc";
|
||||
rev = "v${version}";
|
||||
sha256 = "0l7pjxfrly4llryjnwk42dzx65n78wc98h56qm4yh04ja8fdbx2y";
|
||||
sha256 = "0kb9m1dm0mnglqyh1srvl0f1bgjghxzbqarn0xfqw49wphqwhmcd";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
@ -1,7 +1,8 @@
|
||||
{ stdenv, fetchFromGitHub, pythonPackages }:
|
||||
{ stdenv, fetchFromGitHub, python3Packages }:
|
||||
|
||||
pythonPackages.buildPythonApplication rec {
|
||||
name = "antfs-cli-unstable-2017-02-11";
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "antfs-cli";
|
||||
version = "unstable-2017-02-11";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://github.com/Tigge/antfs-cli;
|
||||
@ -17,5 +18,5 @@ pythonPackages.buildPythonApplication rec {
|
||||
sha256 = "0v8y64kldfbs809j1g9d75dd1vxq7mfxnp4b45pz8anpxhjf64fy";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ pythonPackages.openant ];
|
||||
propagatedBuildInputs = [ python3Packages.openant ];
|
||||
}
|
||||
|
@ -1,19 +1,19 @@
|
||||
{ stdenv, fetchFromGitHub, rustPlatform, cmake, CoreServices, cf-private }:
|
||||
{ stdenv, fetchFromGitHub, rustPlatform, cmake, pkgconfig, openssl, CoreServices, cf-private }:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
name = "gutenberg-${version}";
|
||||
version = "0.3.4";
|
||||
version = "0.4.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Keats";
|
||||
repo = "gutenberg";
|
||||
rev = "v${version}";
|
||||
sha256 = "1v26q1m3bx7mdmmwgd6p601ncf13rr4rrx9s06fiy8vnd0ar1vlf";
|
||||
sha256 = "1i2jcyq6afswxyjifhl5irv84licsad7c83yiy17454mplvrmyg2";
|
||||
};
|
||||
|
||||
cargoSha256 = "0cdy0wvibkpnmlqwxvn02a2k2vqy6zdqzflj2dh6g1cjbz1j8qh5";
|
||||
cargoSha256 = "0hzxwvb5m8mvpfxys4ikkaag6khflh5bfglmay11wf6ayighv834";
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
nativeBuildInputs = [ cmake pkgconfig openssl ];
|
||||
buildInputs = stdenv.lib.optionals stdenv.isDarwin [ CoreServices cf-private ];
|
||||
|
||||
postInstall = ''
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
buildGoPackage rec {
|
||||
name = "hugo-${version}";
|
||||
version = "0.42.1";
|
||||
version = "0.46";
|
||||
|
||||
goPackagePath = "github.com/gohugoio/hugo";
|
||||
|
||||
@ -10,11 +10,13 @@ buildGoPackage rec {
|
||||
owner = "gohugoio";
|
||||
repo = "hugo";
|
||||
rev = "v${version}";
|
||||
sha256 = "17m8bkldvnd7yyzxi4rc8vv3qfypjzik38bjy4qavb7sjdjmfij9";
|
||||
sha256 = "0w5xkb6s03hprb4v151gdk8zzsgvy0i406363j1w03bic8ajwgmj";
|
||||
};
|
||||
|
||||
goDeps = ./deps.nix;
|
||||
|
||||
buildFlags = "-tags extended";
|
||||
|
||||
postInstall = ''
|
||||
rm $bin/bin/generate
|
||||
'';
|
||||
|
114
pkgs/applications/misc/hugo/deps.nix
generated
114
pkgs/applications/misc/hugo/deps.nix
generated
@ -1,5 +1,14 @@
|
||||
# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
|
||||
[
|
||||
{
|
||||
goPackagePath = "github.com/BurntSushi/locker";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/BurntSushi/locker";
|
||||
rev = "a6e239ea1c69bff1cfdb20c4b73dadf52f784b6a";
|
||||
sha256 = "1xak4aync4klswq5217qvw191asgla51jr42y94vp109lirm5dzg";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/BurntSushi/toml";
|
||||
fetch = {
|
||||
@ -32,8 +41,8 @@
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/alecthomas/chroma";
|
||||
rev = "d7b2ed20a4989ab604703f61f86523560f8a6a87";
|
||||
sha256 = "0ni2ncck787sxk9gl14xnyjnw4y27ipypjf4kc00g635fvc64ik6";
|
||||
rev = "5d7fef2ae60b501bbf28d476c3f273b8017d8261";
|
||||
sha256 = "150jv4vhsdi1gj3liwkgicdrwnzgv5qkq2fwznlnzf64vmfb0b9f";
|
||||
};
|
||||
}
|
||||
{
|
||||
@ -50,8 +59,17 @@
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/bep/gitmap";
|
||||
rev = "012701e8669671499fc43e9792335a1dcbfe2afb";
|
||||
sha256 = "10ixv4zwmrpxvpchws78yzsjvw1zplljw3iqvwpina2mkwwp71ql";
|
||||
rev = "ecb6fe06dbfd6bb4225e7fda7dc15612ecc8d960";
|
||||
sha256 = "0zqdl5h4ayi2gi5aqf35f1sjszhbcriksm2bf84fkrg7ngr48jn6";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/bep/go-tocss";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/bep/go-tocss";
|
||||
rev = "2abb118dc8688b6c7df44e12f4152c2bded9b19c";
|
||||
sha256 = "12q7h6nydklq4kg65kcgd85209rx7zf64ba6nf3k7y16knj4233q";
|
||||
};
|
||||
}
|
||||
{
|
||||
@ -68,8 +86,8 @@
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/cpuguy83/go-md2man";
|
||||
rev = "48d8747a2ca13185e7cc8efe6e9fc196a83f71a5";
|
||||
sha256 = "01hpll16rvxhnvv35vs3z8p51x54c5jyl1gjdm0g7kwfwp2chvjx";
|
||||
rev = "691ee98543af2f262f35fbb54bdd42f00b9b9cc5";
|
||||
sha256 = "1864g10y9n6ni0p1yqjhvwyjdh0lgxnf7dlb0c4njazdg5rppww9";
|
||||
};
|
||||
}
|
||||
{
|
||||
@ -86,8 +104,8 @@
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/disintegration/imaging";
|
||||
rev = "5e63c9a565d0a3260d23d060a795783dab90fefe";
|
||||
sha256 = "1mmiz439lygi30dj1rbps57iqh762jkinnpb4wfl382v4h136qvp";
|
||||
rev = "8021a62ea0dfe0ed2e6107f5ccd37e0d4a92a996";
|
||||
sha256 = "1c32sqfz78g9wxvpng8n9r404lf2lgjn9b24mg8y3rxylx29gks7";
|
||||
};
|
||||
}
|
||||
{
|
||||
@ -176,8 +194,8 @@
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/jdkato/prose";
|
||||
rev = "e27abfd3f31b84c37bbce37179b0428fcb1384be";
|
||||
sha256 = "04rjqh3jdxaqr9czp4vcj14hqfv7yppv4nb7ynb04c9jcq23ajw7";
|
||||
rev = "99216ea17cba4e2f2a4e8bca778643e5a529b7aa";
|
||||
sha256 = "1mdh276lmj21jbi22ky8ngdsl9hfcdv6czshycbaiwjr5y9cv7bn";
|
||||
};
|
||||
}
|
||||
{
|
||||
@ -234,13 +252,22 @@
|
||||
sha256 = "0hlqcwx6qqgy3vs13r10wn0d9x0xmww1v9jm09y2dp1ykgbampnk";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/mitchellh/hashstructure";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/mitchellh/hashstructure";
|
||||
rev = "2bca23e0e452137f789efbc8610126fd8b94f73b";
|
||||
sha256 = "0vpacsls26474wya360fjhzi6l4y8s8s251c4szvqxh17n5f5gk1";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/mitchellh/mapstructure";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/mitchellh/mapstructure";
|
||||
rev = "bb74f1db0675b241733089d5a1faa5dd8b0ef57b";
|
||||
sha256 = "1aqk9qr46bwgdc5j7n7als61xvssvyjf4qzfsvhacl4izpygqnw7";
|
||||
rev = "f15292f7a699fcc1a38a80977f80a046874ba8ac";
|
||||
sha256 = "0zm3nhdvmj3f8q0vg2sjfw1sm3pwsw0ggz501awz95w99664a8al";
|
||||
};
|
||||
}
|
||||
{
|
||||
@ -257,8 +284,8 @@
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/nicksnyder/go-i18n";
|
||||
rev = "f6ac3d9cf0c4b6a32527779e992ebde26bd3d948";
|
||||
sha256 = "1vg25khaf7lr90xwf97bsyn873cdi1j7nxh68s80jrg2a86zw0ff";
|
||||
rev = "461e8b98df7454b4cb46a1611a6734f05ee331d0";
|
||||
sha256 = "0aq1q06y6azsi6mfmary5xs7gmmg8fh8lhx1wbpdlqk11asm9rq0";
|
||||
};
|
||||
}
|
||||
{
|
||||
@ -275,8 +302,8 @@
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/pelletier/go-toml";
|
||||
rev = "c01d1270ff3e442a8a57cddc1c92dc1138598194";
|
||||
sha256 = "1fjzpcjng60mc3a4b2ql5a00d5gah84wj740dabv9kq67mpg8fxy";
|
||||
rev = "c2dbbc24a97911339e01bda0b8cabdbd8f13b602";
|
||||
sha256 = "0v1dsqnk5zmn6ir8jgxijx14s47jvijlqfz3aq435snfrgybd5rz";
|
||||
};
|
||||
}
|
||||
{
|
||||
@ -320,8 +347,8 @@
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/spf13/cobra";
|
||||
rev = "1e58aa3361fd650121dceeedc399e7189c05674a";
|
||||
sha256 = "1d6dy60dw7i2mcab10yp99wi5w28jzhzzf16w4ys6bna7ymndiin";
|
||||
rev = "7c4570c3ebeb8129a1f7456d0908a8b676b6f9f1";
|
||||
sha256 = "16amh0prlzqrrbg5j629sg0f688nfzfgn9sair8jyybqampr3wc7";
|
||||
};
|
||||
}
|
||||
{
|
||||
@ -365,8 +392,35 @@
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/spf13/viper";
|
||||
rev = "15738813a09db5c8e5b60a19d67d3f9bd38da3a4";
|
||||
sha256 = "1mjfzg8zvnxckaq6l8gw99i2msrfqn9yr04dc3b7kd5bpxi6zr4v";
|
||||
rev = "d493c32b69b8c6f2377bf30bc4d70267ffbc0793";
|
||||
sha256 = "1jq46790rkjn6c1887wz98dqjk792ij6wnrifzk1maglmfb061hh";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/tdewolff/minify";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/tdewolff/minify";
|
||||
rev = "cf3a1790b606e292e4a0ee82e949a4f0d1c7617d";
|
||||
sha256 = "1r496149l5iqzxkfcbll5dqcqxy4a7jjxvzm62c8hrybmwj574kn";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/tdewolff/parse";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/tdewolff/parse";
|
||||
rev = "4ceb50b40fad068875f5b093c5df0619012dc544";
|
||||
sha256 = "1ap76hdiabn41r7zxc7nq3n3ld7zqf97jaf71zlzzjrphi3fwrg1";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/wellington/go-libsass";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/wellington/go-libsass";
|
||||
rev = "615eaa47ef794d037c1906a0eb7bf85375a5decf";
|
||||
sha256 = "0imjiskn4vq7nml5jwb1scgl61jg53cfpkjnb9rsc6m8gsd8s16s";
|
||||
};
|
||||
}
|
||||
{
|
||||
@ -374,8 +428,8 @@
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/yosssi/ace";
|
||||
rev = "ea038f4770b6746c3f8f84f14fa60d9fe1205b56";
|
||||
sha256 = "1kbvbc56grrpnl65grygd23gyn3nkkhxdg8awhzkjmd0cvki8w1f";
|
||||
rev = "2b21b56204aee785bf8d500c3f9dcbe3ed7d4515";
|
||||
sha256 = "0cgpq1zdnh8l8zsn9w63asc9k7cm6k4qvjgrb4hr1106h8fjwfma";
|
||||
};
|
||||
}
|
||||
{
|
||||
@ -383,8 +437,8 @@
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://go.googlesource.com/image";
|
||||
rev = "af66defab954cb421ca110193eed9477c8541e2a";
|
||||
sha256 = "0dgi7svwzs37c7m5dz2jig3xr45fyjihhr8cg0x8nc8sc8fsyq4h";
|
||||
rev = "c73c2afc3b812cdd6385de5a50616511c4a3d458";
|
||||
sha256 = "1kkafy29vz5xf6r29ghbvvbwrgjxwxvzk6dsa2qhyp1ddk6l2vkz";
|
||||
};
|
||||
}
|
||||
{
|
||||
@ -392,8 +446,8 @@
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://go.googlesource.com/net";
|
||||
rev = "db08ff08e8622530d9ed3a0e8ac279f6d4c02196";
|
||||
sha256 = "1f6q8kbijnrfy6wjqxrzgjf38ippckc5w34lhqsjs7kq045aar9a";
|
||||
rev = "f4c29de78a2a91c00474a2e689954305c350adf9";
|
||||
sha256 = "02nibjrr1il8sxnr0w1s5fj7gz6ayhg3hsywf948qhc68n5adv8x";
|
||||
};
|
||||
}
|
||||
{
|
||||
@ -410,8 +464,8 @@
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://go.googlesource.com/sys";
|
||||
rev = "6c888cc515d3ed83fc103cf1d84468aad274b0a7";
|
||||
sha256 = "18anqrdajp4p015v3f5y641k3lmgp2jr0lfyx0pb3ia0qvn93mrp";
|
||||
rev = "3dc4335d56c789b04b0ba99b7a37249d9b614314";
|
||||
sha256 = "1105b7jqzz8g2bfkdbkj2pdzq4vhfmhm42khir88vjqfd1l7ha31";
|
||||
};
|
||||
}
|
||||
{
|
||||
@ -419,8 +473,8 @@
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://go.googlesource.com/text";
|
||||
rev = "5c1cf69b5978e5a34c5f9ba09a83e56acc4b7877";
|
||||
sha256 = "03br8p1sb1ffr02l8hyrgcyib7ms0z06wy3v4r1dj2l6q4ghwzfs";
|
||||
rev = "96e34ec0e18a62a1e59880c7bf617b655efecb66";
|
||||
sha256 = "1n1p5zz0vyvlhac40hxml6c5xwpsw8rjx1pbls9381a0s19ncbdg";
|
||||
};
|
||||
}
|
||||
{
|
||||
|
@ -1,14 +1,14 @@
|
||||
{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, libusb1, rtl-sdr }:
|
||||
stdenv.mkDerivation rec {
|
||||
|
||||
version = "2018-02-23";
|
||||
version = "18.05";
|
||||
name = "rtl_433-${version}";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "merbanan";
|
||||
repo = "rtl_433";
|
||||
rev = "51d275c";
|
||||
sha256 = "1j443wmws5xgc18s47bvw3pqljk747izypz52rmlrvs16v96cg2g";
|
||||
rev = "18.05";
|
||||
sha256 = "0vfhnjyrx6w1m8g1hww5vdz4zgdlhcaps9g0397mxlki4sm77wpc";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook pkgconfig ];
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -9,15 +9,17 @@
|
||||
with lib;
|
||||
|
||||
let
|
||||
version = "3.9.0";
|
||||
version = "3.10.0";
|
||||
ver = stdenv.lib.elemAt (stdenv.lib.splitString "." version);
|
||||
versionMajor = ver 0;
|
||||
versionMinor = ver 1;
|
||||
versionPatch = ver 2;
|
||||
gitCommit = "191fece";
|
||||
gitCommit = "dd10d17";
|
||||
# version is in vendor/k8s.io/kubernetes/pkg/version/base.go
|
||||
k8sversion = "v1.9.1";
|
||||
k8sgitcommit = "a0ce1bc657";
|
||||
k8sversion = "v1.10.0";
|
||||
k8sgitcommit = "b81c8f8";
|
||||
k8sgitMajor = "0";
|
||||
k8sgitMinor = "1";
|
||||
in stdenv.mkDerivation rec {
|
||||
name = "openshift-origin-${version}";
|
||||
inherit version;
|
||||
@ -26,7 +28,7 @@ in stdenv.mkDerivation rec {
|
||||
owner = "openshift";
|
||||
repo = "origin";
|
||||
rev = "v${version}";
|
||||
sha256 = "06k0zilfyvll7z34yirraslgpwgah9k6y5i6wgi7f00a79k76k78";
|
||||
sha256 = "13aglz005jl48z17vnggkvr39l5h6jcqgkfyvkaz4c3jakms1hi9";
|
||||
};
|
||||
|
||||
# go > 1.10
|
||||
@ -38,15 +40,15 @@ in stdenv.mkDerivation rec {
|
||||
patchPhase = ''
|
||||
patchShebangs ./hack
|
||||
|
||||
substituteInPlace pkg/oc/bootstrap/docker/host/host.go \
|
||||
substituteInPlace pkg/oc/clusterup/docker/host/host.go \
|
||||
--replace 'nsenter --mount=/rootfs/proc/1/ns/mnt findmnt' \
|
||||
'nsenter --mount=/rootfs/proc/1/ns/mnt ${utillinux}/bin/findmnt'
|
||||
|
||||
substituteInPlace pkg/oc/bootstrap/docker/host/host.go \
|
||||
substituteInPlace pkg/oc/clusterup/docker/host/host.go \
|
||||
--replace 'nsenter --mount=/rootfs/proc/1/ns/mnt mount' \
|
||||
'nsenter --mount=/rootfs/proc/1/ns/mnt ${utillinux}/bin/mount'
|
||||
|
||||
substituteInPlace pkg/oc/bootstrap/docker/host/host.go \
|
||||
substituteInPlace pkg/oc/clusterup/docker/host/host.go \
|
||||
--replace 'nsenter --mount=/rootfs/proc/1/ns/mnt mkdir' \
|
||||
'nsenter --mount=/rootfs/proc/1/ns/mnt ${coreutils}/bin/mkdir'
|
||||
'';
|
||||
@ -61,6 +63,8 @@ in stdenv.mkDerivation rec {
|
||||
echo "OS_GIT_COMMIT=${gitCommit}" >> os-version-defs
|
||||
echo "KUBE_GIT_VERSION=${k8sversion}" >> os-version-defs
|
||||
echo "KUBE_GIT_COMMIT=${k8sgitcommit}" >> os-version-defs
|
||||
echo "KUBE_GIT_MAJOR=${k8sgitMajor}" >> os-version-defs
|
||||
echo "KUBE_GIT_MINOR=${k8sgitMinor}" >> os-version-defs
|
||||
export OS_VERSION_FILE="os-version-defs"
|
||||
export CC=clang
|
||||
make all WHAT='${concatStringsSep " " components}'
|
||||
|
@ -19,7 +19,7 @@
|
||||
|
||||
buildGoPackage rec {
|
||||
name = "terraform-provider-libvirt-${version}";
|
||||
version = "0.3";
|
||||
version = "0.4";
|
||||
|
||||
goPackagePath = "github.com/dmacvicar/terraform-provider-libvirt";
|
||||
|
||||
@ -27,13 +27,13 @@ buildGoPackage rec {
|
||||
owner = "dmacvicar";
|
||||
repo = "terraform-provider-libvirt";
|
||||
rev = "v${version}";
|
||||
sha256 = "004gxy55p5cf39f2zpah0i2zhvs4x6ixnxy8z9v7314604ggpkna";
|
||||
sha256 = "05jkjp1kis4ncryv34pkb9cz2yhzbwg62x9qmlqsqlxwz9hqny3r";
|
||||
};
|
||||
|
||||
buildInputs = [ libvirt pkgconfig makeWrapper ];
|
||||
|
||||
goDeps = ./deps.nix;
|
||||
|
||||
# mkisofs needed to create ISOs holding cloud-init data,
|
||||
# and wrapped to terraform via deecb4c1aab780047d79978c636eeb879dd68630
|
||||
propagatedBuildInputs = [ cdrtools ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
|
@ -1,12 +0,0 @@
|
||||
# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
|
||||
[
|
||||
{
|
||||
goPackagePath = "github.com/aws/aws-sdk-go";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/aws/aws-sdk-go";
|
||||
rev = "c861d27d0304a79f727e9a8a4e2ac1e74602fdc0";
|
||||
sha256 = "023cyg551dvm2l50dx1qsikkj77lk2dhiya7by8in7h65av6hjgl";
|
||||
};
|
||||
}
|
||||
]
|
@ -4,15 +4,15 @@
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-alicloud";
|
||||
version = "1.9.5";
|
||||
sha256 = "12yhy0p4xciw70i0gvwzbg39f6mfin2cfdblxyqjlv9bwg26k7jz";
|
||||
version = "1.10.0";
|
||||
sha256 = "19lplakpl8dz4a8xw9va86gd774yq4gayq4kzv3pvr62b03a999x";
|
||||
};
|
||||
archive =
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-archive";
|
||||
version = "1.0.3";
|
||||
sha256 = "1il8v9zi838naprr8dqzipk6ns71l8vdqidarxklnn8wdwxmacg4";
|
||||
version = "1.1.0";
|
||||
sha256 = "1fsynv725cmqz819v9p4i4h4w4y77mbya5y9v81sqvacqvr3i05h";
|
||||
};
|
||||
arukas =
|
||||
{
|
||||
@ -32,29 +32,22 @@
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-aws";
|
||||
version = "1.25.0";
|
||||
sha256 = "1cg2pch6nip96qdzca7q0ak6308fkjxz9zjdcv74cwg0f65frh7d";
|
||||
};
|
||||
azure-classic =
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-azure-classic";
|
||||
version = "0.1.1";
|
||||
sha256 = "11myqq3wnxvpysjycvwg7b14ll8d9vkn06xb3r26kmc42fkl5xv1";
|
||||
version = "1.30.0";
|
||||
sha256 = "1si2fm5nm7gad90lf410zwjf2q5kd8mv6nkkbfnfdzkpkchavr95";
|
||||
};
|
||||
azurerm =
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-azurerm";
|
||||
version = "1.7.0";
|
||||
sha256 = "0lf83pc5gdmd61i93221zdg9pdzfpfnvhis8kf1s2jlc6zshbabv";
|
||||
version = "1.12.0";
|
||||
sha256 = "1avp2vhlj60iw17pw39003p30byms7xvq5lkippm60ak4ky9p51b";
|
||||
};
|
||||
azurestack =
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-azurestack";
|
||||
version = "0.1.0";
|
||||
sha256 = "144dfaq16g41i9y2pcq2ilgygndad3vivr6fbygg8yl10m5l4qp0";
|
||||
version = "0.2.0";
|
||||
sha256 = "0s1ga0ga0rbpp552hbq1dfnkpdjvk1c40i7qqnqmm20xlz6k55mb";
|
||||
};
|
||||
bitbucket =
|
||||
{
|
||||
@ -63,6 +56,13 @@
|
||||
version = "1.0.0";
|
||||
sha256 = "0gi8p1q0y8x5y8lqihijkpqs3v152h0q7icv7ixk33xsdcvb418y";
|
||||
};
|
||||
brightbox =
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-brightbox";
|
||||
version = "1.0.5";
|
||||
sha256 = "0sn7k5bqgms5sxjhjikmby0jf2n6y14z6s4wsifxaw7b0082fy28";
|
||||
};
|
||||
chef =
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
@ -88,8 +88,8 @@
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-cloudflare";
|
||||
version = "1.0.0";
|
||||
sha256 = "1ar9wcgr45f2v6bqjn24zii0qwfppla8ya3gjc546sh1a7m0h9p3";
|
||||
version = "1.1.0";
|
||||
sha256 = "1rmg7gndhmb1wp0zszhwx9vrax8411iy24yrpkmayjify3vsvdpx";
|
||||
};
|
||||
cloudscale =
|
||||
{
|
||||
@ -123,8 +123,8 @@
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-datadog";
|
||||
version = "1.0.3";
|
||||
sha256 = "0nh2dww3hx6jrkcd9lq5hpnqr3grp9cmqi4nwmxlrc5azf8x0mii";
|
||||
version = "1.1.0";
|
||||
sha256 = "0ckmjpw9dkj5490kwxamdvnnidnjdgxnb1biqpvwj4139hlcl628";
|
||||
};
|
||||
digitalocean =
|
||||
{
|
||||
@ -158,8 +158,8 @@
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-docker";
|
||||
version = "0.1.1";
|
||||
sha256 = "02lhbl34dq7lsby3g32969i4g9l3z6xw1v00shljd3amgyz2l2r2";
|
||||
version = "1.0.0";
|
||||
sha256 = "09ribvyv02r907pdvyrwaklr14xyvyn14rijslnm16xp8d4waz9h";
|
||||
};
|
||||
dyn =
|
||||
{
|
||||
@ -179,15 +179,15 @@
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-fastly";
|
||||
version = "0.2.0";
|
||||
sha256 = "0vrvyqhzbrvhyhdkg2y2dgadf5j7bj0cbzd13f9m86d146zlf8lb";
|
||||
version = "0.3.0";
|
||||
sha256 = "1hh4s81g256iy1rvp9snqbyhidz8n6p7pzanlxp89ffrq9p32sp0";
|
||||
};
|
||||
flexibleengine =
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-flexibleengine";
|
||||
version = "1.0.1";
|
||||
sha256 = "1xf5cmn434a0zr9qxc7f0jma9gf111cp7fm2vgyhkd62hipafcas";
|
||||
version = "1.1.0";
|
||||
sha256 = "07g6kc211crxf9nvgvghg05jdahd1fb09lpwfcps9ph259pwwam3";
|
||||
};
|
||||
github =
|
||||
{
|
||||
@ -207,15 +207,15 @@
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-google";
|
||||
version = "1.15.0";
|
||||
sha256 = "0xwijnv7mzlyzplkylfphph568b9bxavrclnlwvp9ylvklq70nzl";
|
||||
version = "1.16.2";
|
||||
sha256 = "1d8by6rb4s2dggapcbb4b2g5hf280bjayz9p5q9njgsn83579pnm";
|
||||
};
|
||||
grafana =
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-grafana";
|
||||
version = "1.0.2";
|
||||
sha256 = "17pj4mm7ik9llhgckza822866x6986cdcr821f16dchvn3bfbf2i";
|
||||
version = "1.2.0";
|
||||
sha256 = "1kn2bbdgci6nfl2gyk4w8w203fscqws2748idv9m53ikczg8n573";
|
||||
};
|
||||
hcloud =
|
||||
{
|
||||
@ -228,8 +228,8 @@
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-heroku";
|
||||
version = "1.0.1";
|
||||
sha256 = "1kx74d0ywzim5zj3y5ac80r18igsqax39yv9qaam546a88ya31yy";
|
||||
version = "1.2.0";
|
||||
sha256 = "1w2r0wnfcr9aqij5ckq0apd8az8yzdg704hi1zjb1ggb54v97n31";
|
||||
};
|
||||
http =
|
||||
{
|
||||
@ -238,6 +238,13 @@
|
||||
version = "1.0.1";
|
||||
sha256 = "1bnqrx4xya3lm5wp4byy6npazll6w1g6bv4rawgncswsgx08zqng";
|
||||
};
|
||||
huaweicloud =
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-huaweicloud";
|
||||
version = "1.1.0";
|
||||
sha256 = "1jsvv5yfxgz998p4wbldbq82hl4ykn1yp21igphl94n3b0jj33dj";
|
||||
};
|
||||
icinga2 =
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
@ -256,8 +263,8 @@
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-influxdb";
|
||||
version = "1.0.0";
|
||||
sha256 = "1w1izzs22b2w2qmpdxbhaj9kvnfyw0wlq3nigrigwwvqav43knh9";
|
||||
version = "1.0.1";
|
||||
sha256 = "0713h50675njnpdy4w1azfq8h6yai40gx6w2fbvw4n59h6jlfny4";
|
||||
};
|
||||
kubernetes =
|
||||
{
|
||||
@ -347,22 +354,22 @@
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-oneandone";
|
||||
version = "1.1.0";
|
||||
sha256 = "1yps2mcdy61afxva7vg0i82s24zkdrn5abwblm0gcgc0cz588r9d";
|
||||
version = "1.2.0";
|
||||
sha256 = "1lrcy05zklv7vc8653f8cn3jjc9zjjwi488dpaphsmsl1md3m88b";
|
||||
};
|
||||
opc =
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-opc";
|
||||
version = "1.1.2";
|
||||
sha256 = "0v413wgnr8h682han88s0n15cdwd9a0dxr9s2mknpi4664c41qlk";
|
||||
version = "1.2.0";
|
||||
sha256 = "19rfm12w97ccyrzpdw0qlwfn7gh64lqh17kj3cv11y1f731z8rlw";
|
||||
};
|
||||
openstack =
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-openstack";
|
||||
version = "1.6.0";
|
||||
sha256 = "14chn2vb8y9rz5irh8m2ky9yxmw2za45gikncjm4gfc3xl6803iq";
|
||||
version = "1.7.0";
|
||||
sha256 = "0sw2kmcsi9sjzi549fj6knida01q0lnpqvc3cpyjyv92f6w4bznn";
|
||||
};
|
||||
opentelekomcloud =
|
||||
{
|
||||
@ -382,15 +389,15 @@
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-oraclepaas";
|
||||
version = "1.2.1";
|
||||
sha256 = "0r404rysjhbsxh45ad23k12rs8js2pdczakzavnjx508kr29gcqc";
|
||||
version = "1.3.0";
|
||||
sha256 = "09vsb52cbf2h1rdwfg4xb54gklwgmaxdgjcdq1yx5gxj7lfbdl9v";
|
||||
};
|
||||
ovh =
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-ovh";
|
||||
version = "0.2.0";
|
||||
sha256 = "12dpgx0fpmqw64v5a70fihbgixyw71bdjbdi17gal7s2pj1xw159";
|
||||
version = "0.3.0";
|
||||
sha256 = "05bzkwa50alh8mpslh64dddp815m8df240w1mmphdmp9rsi6hqp8";
|
||||
};
|
||||
packet =
|
||||
{
|
||||
@ -417,8 +424,8 @@
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-postgresql";
|
||||
version = "0.1.1";
|
||||
sha256 = "0ls5z02vaalcrbaq375qnk0267pb17rpsx4s3plfnr7qclv21pwn";
|
||||
version = "0.1.2";
|
||||
sha256 = "08wv03j70mych4nnamivjihwvca3aksjxgjlj8yasz5292qgl05w";
|
||||
};
|
||||
powerdns =
|
||||
{
|
||||
@ -431,8 +438,8 @@
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-profitbricks";
|
||||
version = "1.3.1";
|
||||
sha256 = "1g4filwv38rq9wcdbpnpgfnv8qj1kzdnjc8awvbsdlxlj4fa06bi";
|
||||
version = "1.3.2";
|
||||
sha256 = "0mk77n833np6ahm6bzvpg31a0m1qazaipd0vqzccqfkbz78sm3jb";
|
||||
};
|
||||
rabbitmq =
|
||||
{
|
||||
@ -466,15 +473,15 @@
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-runscope";
|
||||
version = "0.1.0";
|
||||
sha256 = "05l305423njds2cmmxg67swpdnp3zibs36dq4cfjk47i4byvipjz";
|
||||
version = "0.3.0";
|
||||
sha256 = "1srnnlw94q1av8rzy8753fk4vazv5ldbimgr9gd51vrmpvmlgxas";
|
||||
};
|
||||
scaleway =
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-scaleway";
|
||||
version = "1.4.1";
|
||||
sha256 = "1zxb3981w30hv1aax28ayiy0sl0vzrrwkynp4lmwwhfjyhyagnm1";
|
||||
version = "1.5.1";
|
||||
sha256 = "1b42fh7mwj2cx3g16lgp4sw6ca5qqj0mhm6i7qid8agwsga34v0y";
|
||||
};
|
||||
softlayer =
|
||||
{
|
||||
@ -487,15 +494,22 @@
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-spotinst";
|
||||
version = "1.0.0";
|
||||
sha256 = "1p05wamv70mywfqf0b3nxpvxc0m8ydb5zcl2kpzsrii9mq21pjrf";
|
||||
version = "1.2.0";
|
||||
sha256 = "09k79xg5cbs4qhxr0b4f42qpxj6j2795z5vmwbxfkirb5bkpqdq1";
|
||||
};
|
||||
statuscake =
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-statuscake";
|
||||
version = "0.1.0";
|
||||
sha256 = "084520cak2krwpks2ipqcjfw3k4rrzn6gqqncz8c4i6g01f1m7yg";
|
||||
version = "0.2.0";
|
||||
sha256 = "065izach0hq04664hz7rc3gd0r3l06lzwcbj5800zjfv1inp6pxs";
|
||||
};
|
||||
telefonicaopencloud =
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-telefonicaopencloud";
|
||||
version = "1.0.0";
|
||||
sha256 = "1761wkjz3d2458xl7855lxklyxgyk05fddh92rp6975y0ca6xa5m";
|
||||
};
|
||||
template =
|
||||
{
|
||||
@ -536,8 +550,8 @@
|
||||
{
|
||||
owner = "terraform-providers";
|
||||
repo = "terraform-provider-vault";
|
||||
version = "1.1.0";
|
||||
sha256 = "1g0cca662glqcz83l1skhj3nb7g386x65kwz95kyp59nvyxywvbq";
|
||||
version = "1.1.1";
|
||||
sha256 = "0kiqpnb4669xw9b8nf6a8ky0jhnp14bipaizml3gdh1hnda6hflw";
|
||||
};
|
||||
vcd =
|
||||
{
|
||||
|
@ -16,10 +16,5 @@ let
|
||||
# if the versions are not provided via file paths.
|
||||
postBuild = "mv go/bin/${repo}{,_v${version}}";
|
||||
};
|
||||
|
||||
maybeDrv = name: data:
|
||||
# azure-classic is an archived repo
|
||||
if name == "azure-classic" then null
|
||||
else toDrv data;
|
||||
in
|
||||
lib.mapAttrs maybeDrv list
|
||||
lib.mapAttrs (n: v: toDrv v) list
|
||||
|
@ -71,7 +71,7 @@ fi
|
||||
|
||||
org=terraform-providers
|
||||
|
||||
repos=$(get_org_repos "$org" | grep terraform-provider- | grep -v terraform-provider-scaffolding | grep -v terraform-provider-telefonicaopencloud | sort)
|
||||
repos=$(get_org_repos "$org" | grep terraform-provider- | grep -v terraform-provider-scaffolding | grep -v terraform-provider-azure-classic | sort)
|
||||
|
||||
|
||||
# Get all the providers with index
|
||||
|
@ -13,13 +13,13 @@
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "dino-unstable-2018-06-03";
|
||||
name = "dino-unstable-2018-07-08";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dino";
|
||||
repo = "dino";
|
||||
rev = "52e116ee44be1667660c08858a28fe8fda125f79";
|
||||
sha256 = "1yybmjd50r41366clrsw21qybbpjfkvim2n5b3dkcagjnifak0zl";
|
||||
rev = "df8b5fcb722c4a33ed18cbbaafecb206f127b849";
|
||||
sha256 = "1r7h9pxix0sylnwab7a8lir9h5yssk98128x2bzva77id9id33vi";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
|
@ -3,9 +3,24 @@
|
||||
, dbus, libX11, xorg, libXi, libXcursor, libXdamage, libXrandr, libXcomposite
|
||||
, libXext, libXfixes, libXrender, libXtst, libXScrnSaver, nss, nspr, alsaLib
|
||||
, cups, expat, udev
|
||||
# Unfortunately this also overwrites the UI language (not just the spell
|
||||
# checking language!):
|
||||
, hunspellDicts, spellcheckerLanguage ? null # E.g. "de_DE"
|
||||
# For a full list of available languages:
|
||||
# $ cat pkgs/development/libraries/hunspell/dictionaries.nix | grep "dictFileName =" | awk '{ print $3 }'
|
||||
}:
|
||||
|
||||
let
|
||||
customLanguageWrapperArgs = (with lib;
|
||||
let
|
||||
# E.g. "de_DE" -> "de-de" (spellcheckerLanguage -> hunspellDict)
|
||||
spellLangComponents = splitString "_" spellcheckerLanguage;
|
||||
hunspellDict = elemAt spellLangComponents 0 + "-" + toLower (elemAt spellLangComponents 1);
|
||||
in if spellcheckerLanguage != null
|
||||
then ''
|
||||
--set HUNSPELL_DICTIONARIES "${hunspellDicts.${hunspellDict}}/share/hunspell" \
|
||||
--set LC_MESSAGES "${spellcheckerLanguage}"''
|
||||
else "");
|
||||
rpath = lib.makeLibraryPath [
|
||||
alsaLib
|
||||
atk
|
||||
@ -40,11 +55,11 @@ let
|
||||
|
||||
in stdenv.mkDerivation rec {
|
||||
name = "signal-desktop-${version}";
|
||||
version = "1.14.4";
|
||||
version = "1.15.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://updates.signal.org/desktop/apt/pool/main/s/signal-desktop/signal-desktop_${version}_amd64.deb";
|
||||
sha256 = "0590r7748kv6g7zygq95v8qxf7vi2n5ypj6734x9yshrn8z6p8lr";
|
||||
sha256 = "1q73jx92h8zwk1dn103ymskz35q6kfiqc44886jr0p7mlpndqsa4";
|
||||
};
|
||||
|
||||
phases = [ "unpackPhase" "installPhase" ];
|
||||
@ -68,6 +83,7 @@ in stdenv.mkDerivation rec {
|
||||
--set-rpath ${rpath}:$out/libexec $out/libexec/signal-desktop
|
||||
wrapProgram $out/libexec/signal-desktop \
|
||||
--prefix XDG_DATA_DIRS : "${gtk3}/share/gsettings-schemas/${gtk3.name}/" \
|
||||
${customLanguageWrapperArgs} \
|
||||
"''${gappsWrapperArgs[@]}"
|
||||
|
||||
# Symlink to bin
|
||||
|
@ -14,5 +14,7 @@ in {
|
||||
stable = mkTelegram stableVersion;
|
||||
preview = mkTelegram (stableVersion // {
|
||||
stable = false;
|
||||
version = "1.3.12";
|
||||
sha256Hash = "00z4ljs4fvbk7sf8wv1v50kln26gv8q12x6q41ai9gfzkvq5f69a";
|
||||
});
|
||||
}
|
||||
|
@ -2,41 +2,59 @@
|
||||
, fetchurl
|
||||
, dbus
|
||||
, zlib, fontconfig
|
||||
, qtbase, qtmultimedia
|
||||
, libjson, libgpgerror
|
||||
, libX11, libxcb, libXau, libXdmcp, freetype, libbsd
|
||||
, pythonPackages, squashfsTools, makeDesktopItem
|
||||
}:
|
||||
|
||||
with stdenv.lib;
|
||||
let
|
||||
libPath = makeLibraryPath
|
||||
[ stdenv.cc.cc dbus libX11 zlib libX11 libxcb libXau libXdmcp freetype fontconfig libbsd ];
|
||||
[ stdenv.cc.cc qtbase qtmultimedia dbus libX11 zlib libX11 libxcb libXau libXdmcp freetype fontconfig libbsd libjson libgpgerror];
|
||||
|
||||
version = "2016-1-17";
|
||||
version = "2018-1-30";
|
||||
|
||||
mainbin = "SoulseekQt-" + (version) +"-"+ (if stdenv.is64bit then "64bit" else "32bit");
|
||||
srcs = {
|
||||
"i686-linux" = fetchurl {
|
||||
url = "https://www.dropbox.com/s/kebk1b5ib1m3xxw/${mainbin}.tgz";
|
||||
sha256 = "0r9rhnfslkgbw3l7fnc0rcfqjh58amgh5p33kwam0qvn1h1frnir";
|
||||
};
|
||||
|
||||
"x86_64-linux" = fetchurl {
|
||||
url = "https://www.dropbox.com/s/7qh902qv2sxyp6p/${mainbin}.tgz";
|
||||
sha256 = "05l3smpdvw8xdhv4v8a28j0yi1kvzhrha2ck23g4bl7x9wkay4cc";
|
||||
url = "https://www.dropbox.com/s/0vi87eef3ooh7iy/${mainbin}.tgz";
|
||||
sha256 = "0d1cayxr1a4j19bc5a3qp9pg22ggzmd55b6f5av3lc6lvwqqg4w6";
|
||||
};
|
||||
};
|
||||
|
||||
desktopItem = makeDesktopItem {
|
||||
name = "SoulseekQt";
|
||||
exec = "soulseekqt";
|
||||
icon = "$out/share/soulseekqt/";
|
||||
comment = "Official Qt SoulSeek client";
|
||||
desktopName = "SoulseekQt";
|
||||
genericName = "SoulseekQt";
|
||||
categories = "Network;";
|
||||
};
|
||||
|
||||
in stdenv.mkDerivation rec {
|
||||
|
||||
name = "soulseekqt-${version}";
|
||||
inherit version;
|
||||
src = srcs."${stdenv.system}" or (throw "unsupported system: ${stdenv.system}");
|
||||
|
||||
sourceRoot = ".";
|
||||
buildPhase = ":"; # nothing to build
|
||||
dontBuild = true;
|
||||
|
||||
buildInputs = [ pythonPackages.binwalk squashfsTools ];
|
||||
|
||||
# avoid usage of appimagetool
|
||||
unpackCmd = ''
|
||||
export HOME=$(pwd) # workaround for binwalk
|
||||
tar xvf $curSrc && binwalk --quiet \
|
||||
${mainbin}.AppImage -D 'squashfs:.squashfs:unsquashfs %e'
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp ${mainbin} $out/bin/soulseekqt
|
||||
mkdir -p $out/{bin,share/soulseekqt}
|
||||
cd squashfs-root/
|
||||
cp -R soulseek.png translations $out/share/soulseekqt
|
||||
cp SoulseekQt $out/bin/soulseekqt
|
||||
'';
|
||||
|
||||
fixupPhase = ''
|
||||
@ -50,6 +68,6 @@ in stdenv.mkDerivation rec {
|
||||
homepage = http://www.soulseekqt.net;
|
||||
license = licenses.unfree;
|
||||
maintainers = [ maintainers.genesis ];
|
||||
platforms = [ "i686-linux" "x86_64-linux" ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
}
|
||||
|
83
pkgs/applications/networking/protonmail-bridge/default.nix
Normal file
83
pkgs/applications/networking/protonmail-bridge/default.nix
Normal file
@ -0,0 +1,83 @@
|
||||
{ stdenv, fetchurl, lib, qtbase, qtmultimedia, qtsvg, qtdeclarative, qttools, full,
|
||||
libsecret, libGL, libpulseaudio, glib, makeWrapper, makeDesktopItem }:
|
||||
|
||||
let
|
||||
version = "1.0.5-1";
|
||||
|
||||
description = ''
|
||||
An application that runs on your computer in the background and seamlessly encrypts
|
||||
and decrypts your mail as it enters and leaves your computer
|
||||
'';
|
||||
|
||||
desktopItem = makeDesktopItem {
|
||||
name = "Desktop-Bridge";
|
||||
exec = "Desktop-Bridge";
|
||||
icon = "desktop-bridge";
|
||||
comment = stdenv.lib.replaceStrings ["\n"] [" "] description;
|
||||
desktopName = "ProtonMail Bridge";
|
||||
genericName = "ProtonMail Bridge for Linux";
|
||||
categories = "Utility;Security;Network;Email";
|
||||
};
|
||||
in stdenv.mkDerivation rec {
|
||||
name = "protonmail-bridge-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://protonmail.com/download/protonmail-bridge_${version}_amd64.deb";
|
||||
sha256 = "1fsf4l5c9ii370fgy721a71h34g7vjfddscal3jblb4mm3ywzxfl";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
sourceRoot = ".";
|
||||
|
||||
unpackCmd = ''
|
||||
ar p "$src" data.tar.xz | tar xJ
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/{bin,lib,share}
|
||||
mkdir -p $out/share/{applications,icons/hicolor/scalable/apps}
|
||||
|
||||
cp -r usr/lib/protonmail/bridge/Desktop-Bridge{,.sh} $out/lib
|
||||
cp usr/share/icons/protonmail/Desktop-Bridge.svg $out/share/icons/hicolor/scalable/apps/desktop-bridge.svg
|
||||
cp ${desktopItem}/share/applications/* $out/share/applications
|
||||
|
||||
ln -s $out/lib/Desktop-Bridge $out/bin/Desktop-Bridge
|
||||
'';
|
||||
|
||||
postFixup = let
|
||||
rpath = lib.makeLibraryPath [
|
||||
stdenv.cc.cc.lib
|
||||
qtbase
|
||||
qtmultimedia
|
||||
qtsvg
|
||||
qtdeclarative
|
||||
qttools
|
||||
libGL
|
||||
libsecret
|
||||
libpulseaudio
|
||||
glib
|
||||
];
|
||||
|
||||
qtPath = prefix: "${full}/${prefix}";
|
||||
in ''
|
||||
patchelf \
|
||||
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||
--set-rpath "${rpath}" \
|
||||
$out/lib/Desktop-Bridge
|
||||
|
||||
wrapProgram $out/lib/Desktop-Bridge \
|
||||
--set QT_PLUGIN_PATH "${qtPath qtbase.qtPluginPrefix}" \
|
||||
--set QML_IMPORT_PATH "${qtPath qtbase.qtQmlPrefix}" \
|
||||
--set QML2_IMPORT_PATH "${qtPath qtbase.qtQmlPrefix}" \
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://www.protonmail.com/bridge;
|
||||
license = licenses.mit;
|
||||
platforms = [ "x86_64-linux" ];
|
||||
maintainers = with maintainers; [ lightdiscord ];
|
||||
|
||||
inherit description;
|
||||
};
|
||||
}
|
@ -15,6 +15,8 @@ stdenv.mkDerivation rec {
|
||||
|
||||
buildInputs = [ cmake zlib ncurses ];
|
||||
|
||||
enableParallelBuilding = false;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Identify single nucleotide positions that are different between tumor and normal";
|
||||
license = licenses.mit;
|
||||
|
@ -1,11 +1,9 @@
|
||||
{ stdenv, buildPythonApplication, fetchFromGitHub, ncurses, pillow, pytest }:
|
||||
{ stdenv, python3, fetchFromGitHub, ncurses }:
|
||||
|
||||
let
|
||||
with python3.pkgs; buildPythonApplication rec {
|
||||
pname = "almonds";
|
||||
version = "1.25b";
|
||||
in
|
||||
|
||||
buildPythonApplication {
|
||||
name = "almonds-${version}";
|
||||
src = fetchFromGitHub {
|
||||
owner = "Tenchi2xh";
|
||||
repo = "Almonds";
|
||||
|
@ -1,20 +1,22 @@
|
||||
{ stdenv, fetchFromGitHub, python3Packages }:
|
||||
{ stdenv, fetchFromGitHub, python3Packages, readline }:
|
||||
|
||||
with stdenv.lib;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "bcal-${version}";
|
||||
version = "1.8";
|
||||
version = "1.9";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jarun";
|
||||
repo = "bcal";
|
||||
rev = "v${version}";
|
||||
sha256 = "0jdn46wzwq7yn3x6p1xyqarp52pcr0ghnfhkm7nyxv734g1abw7r";
|
||||
sha256 = "0h6qi5rvzl6c6fsfdpdb3l4jcgip03l18i0b1x08z1y89i56y8mm";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ python3Packages.pytest ];
|
||||
|
||||
buildInputs = [ readline ];
|
||||
|
||||
doCheck = true;
|
||||
checkPhase = ''
|
||||
python3 -m pytest test.py
|
||||
|
@ -8,10 +8,6 @@ let
|
||||
# https://trac.sagemath.org/ticket/15980 for tracking of python3 support
|
||||
python = nixpkgs.python2.override {
|
||||
packageOverrides = self: super: {
|
||||
cypari2 = super.cypari2.override { inherit pari; };
|
||||
|
||||
cysignals = super.cysignals.override { inherit pari; };
|
||||
|
||||
# python packages that appear unmaintained and were not accepted into the nixpkgs
|
||||
# tree because of that. These packages are only dependencies of the more-or-less
|
||||
# deprecated sagenb. However sagenb is still a default dependency and the doctests
|
||||
@ -24,7 +20,7 @@ let
|
||||
pybrial = self.callPackage ./pybrial.nix {};
|
||||
|
||||
sagelib = self.callPackage ./sagelib.nix {
|
||||
inherit flint ecl pari eclib ntl arb;
|
||||
inherit flint ecl arb;
|
||||
inherit sage-src openblas-blas-pc openblas-cblas-pc openblas-lapack-pc pynac singular;
|
||||
linbox = nixpkgs.linbox.override { withSage = true; };
|
||||
};
|
||||
@ -38,20 +34,20 @@ let
|
||||
};
|
||||
|
||||
env-locations = self.callPackage ./env-locations.nix {
|
||||
inherit pari_data ecl pari;
|
||||
inherit pari_data ecl;
|
||||
inherit singular;
|
||||
three = nodePackages_8_x.three;
|
||||
mathjax = nodePackages_8_x.mathjax;
|
||||
};
|
||||
|
||||
sage-env = self.callPackage ./sage-env.nix {
|
||||
inherit sage-src python rWrapper openblas-cblas-pc ecl singular eclib pari palp flint pynac pythonEnv giac ntl;
|
||||
inherit sage-src python rWrapper openblas-cblas-pc ecl singular palp flint pynac pythonEnv;
|
||||
pkg-config = nixpkgs.pkgconfig; # not to confuse with pythonPackages.pkgconfig
|
||||
};
|
||||
|
||||
sage-with-env = self.callPackage ./sage-with-env.nix {
|
||||
inherit pari eclib pythonEnv ntl;
|
||||
inherit sage-src openblas-blas-pc openblas-cblas-pc openblas-lapack-pc pynac singular giac;
|
||||
inherit pythonEnv;
|
||||
inherit sage-src openblas-blas-pc openblas-cblas-pc openblas-lapack-pc pynac singular;
|
||||
pkg-config = nixpkgs.pkgconfig; # not to confuse with pythonPackages.pkgconfig
|
||||
three = nodePackages_8_x.three;
|
||||
};
|
||||
@ -106,41 +102,18 @@ let
|
||||
});
|
||||
};
|
||||
|
||||
# https://trac.sagemath.org/ticket/25532
|
||||
ntl = nixpkgs.ntl.overrideAttrs (oldAttrs: rec {
|
||||
name = "ntl-10.5.0";
|
||||
sourceRoot = "${name}/src";
|
||||
src = fetchurl {
|
||||
url = "http://www.shoup.net/ntl/${name}.tar.gz";
|
||||
sha256 = "1lmldaldgfr2b2a6585m3np5ds8bq1bis2s1ajycjm49vp4kc2xr";
|
||||
};
|
||||
});
|
||||
|
||||
giac = nixpkgs.giac.override { inherit ntl; };
|
||||
arb = nixpkgs.arb.override { inherit flint; };
|
||||
|
||||
# update causes issues
|
||||
# https://groups.google.com/forum/#!topic/sage-packaging/cS3v05Q0zso
|
||||
# https://trac.sagemath.org/ticket/24735
|
||||
singular = (nixpkgs.singular.override { inherit ntl flint; }).overrideAttrs (oldAttrs: {
|
||||
name = "singular-4.1.0p3";
|
||||
src = fetchurl {
|
||||
url = "http://www.mathematik.uni-kl.de/ftp/pub/Math/Singular/SOURCES/4-1-0/singular-4.1.0p3.tar.gz";
|
||||
sha256 = "105zs3zk46b1cps403ap9423rl48824ap5gyrdgmg8fma34680a4";
|
||||
};
|
||||
});
|
||||
singular = nixpkgs.singular.override { inherit flint; };
|
||||
|
||||
# *not* to confuse with the python package "pynac"
|
||||
# https://trac.sagemath.org/ticket/24838 (depends on arb update)
|
||||
pynac = nixpkgs.pynac.override { inherit singular flint; };
|
||||
|
||||
eclib = nixpkgs.eclib.override { inherit pari ntl; };
|
||||
|
||||
# With openblas (64 bit), the tests fail the same way as when sage is build with
|
||||
# openblas instead of openblasCompat. Apparently other packages somehow use flints
|
||||
# blas when it is available. Alternative would be to override flint to use
|
||||
# openblasCompat.
|
||||
flint = nixpkgs.flint.override { withBlas = false; inherit ntl; };
|
||||
flint = nixpkgs.flint.override { withBlas = false; };
|
||||
|
||||
# Multiple palp dimensions need to be available and sage expects them all to be
|
||||
# in the same folder.
|
||||
@ -165,15 +138,6 @@ let
|
||||
|
||||
# https://trac.sagemath.org/ticket/22191
|
||||
ecl = nixpkgs.ecl_16_1_2;
|
||||
|
||||
# sage currently uses an unreleased version of pari
|
||||
pari = (nixpkgs.pari.override { withThread = false; }).overrideAttrs (attrs: rec {
|
||||
version = "2.10-1280-g88fb5b3"; # on update remove pari-stackwarn patch from `sage-src.nix`
|
||||
src = fetchurl {
|
||||
url = "mirror://sageupstream/pari/pari-${version}.tar.gz";
|
||||
sha256 = "19gbsm8jqq3hraanbmsvzkbh88iwlqbckzbnga3y76r7k42akn7m";
|
||||
};
|
||||
});
|
||||
in
|
||||
python.pkgs.sage-wrapper // {
|
||||
doc = python.pkgs.sagedoc;
|
||||
|
@ -1,427 +0,0 @@
|
||||
commit c885927e25b29bd23869e02379c2918da430323e
|
||||
Author: Timo Kaufmann <timokau@zoho.com>
|
||||
Date: Sat Jun 30 02:26:15 2018 +0200
|
||||
|
||||
diff --git a/build/pkgs/arb/checksums.ini b/build/pkgs/arb/checksums.ini
|
||||
index 1924ee03c3..9323b97391 100644
|
||||
--- a/build/pkgs/arb/checksums.ini
|
||||
+++ b/build/pkgs/arb/checksums.ini
|
||||
@@ -1,4 +1,4 @@
|
||||
tarball=arb-VERSION.tar.gz
|
||||
-sha1=27476d0529e48a07d92da90bd0fb80dd18f443e3
|
||||
-md5=733285d9705d10b8024e551ffa81952f
|
||||
-cksum=2391183744
|
||||
+sha1=44eda7bf8eaa666c45b1fc2c1b5bd08756d94b58
|
||||
+md5=fa24de9fffe4394fb6a7a6792e2ecc5f
|
||||
+cksum=3689220688
|
||||
diff --git a/build/pkgs/arb/package-version.txt b/build/pkgs/arb/package-version.txt
|
||||
index c8810e9bdb..fb2c0766b7 100644
|
||||
--- a/build/pkgs/arb/package-version.txt
|
||||
+++ b/build/pkgs/arb/package-version.txt
|
||||
@@ -1 +1 @@
|
||||
-2.12.0.p0
|
||||
+2.13.0
|
||||
diff --git a/build/pkgs/arb/patches/arb-pie-hardening-conflict.patch b/build/pkgs/arb/patches/arb-pie-hardening-conflict.patch
|
||||
deleted file mode 100644
|
||||
index 3e5c0e708b..0000000000
|
||||
--- a/build/pkgs/arb/patches/arb-pie-hardening-conflict.patch
|
||||
+++ /dev/null
|
||||
@@ -1,17 +0,0 @@
|
||||
-In newer binutils, ld options -r and -pie conflict.
|
||||
-Patch due to Jörg-Volker Peetz
|
||||
-(source : https://groups.google.com/d/msg/sage-devel/TduebNoZuBE/sEULolL0BQAJ),
|
||||
-packaged by Emmanuel Charpentier
|
||||
-
|
||||
-diff -ru arb-2.8.1-orig/Makefile.subdirs arb-2.8.1-new/Makefile.subdirs
|
||||
---- arb-2.8.1-orig/Makefile.subdirs 2015-12-31 17:30:01.000000000 +0100
|
||||
-+++ arb-2.8.1-new/Makefile.subdirs 2016-11-07 18:50:34.540051779 +0100
|
||||
-@@ -52,7 +52,7 @@
|
||||
- $(QUIET_CC) $(CC) $(CFLAGS) $(INCS) -c $< -o $@ -MMD -MP -MF "$(BUILD_DIR)/$(MOD_DIR)_$*.d" -MT "$(BUILD_DIR)/$(MOD_DIR)_$*.d" -MT "$@"
|
||||
-
|
||||
- $(MOD_LOBJ): $(LOBJS)
|
||||
-- $(QUIET_CC) $(CC) $(ABI_FLAG) -Wl,-r $^ -o $@ -nostdlib
|
||||
-+ $(QUIET_CC) $(CC) $(ABI_FLAG) -r $^ -o $@ -nostdlib
|
||||
-
|
||||
- -include $(LOBJS:.lo=.d)
|
||||
-
|
||||
diff --git a/src/sage/rings/complex_arb.pyx b/src/sage/rings/complex_arb.pyx
|
||||
index 70d51e655a..00e7caea2c 100644
|
||||
--- a/src/sage/rings/complex_arb.pyx
|
||||
+++ b/src/sage/rings/complex_arb.pyx
|
||||
@@ -857,14 +857,14 @@ class ComplexBallField(UniqueRepresentation, Field):
|
||||
[0.500000000000000 +/- 2.09e-16]
|
||||
|
||||
sage: CBF.integral(lambda x, _: x.gamma(), 1 - CBF(i), 1 + CBF(i))
|
||||
- [+/- 3.95e-15] + [1.5723926694981 +/- 4.53e-14]*I
|
||||
+ [+/- 4...e-15] + [1.5723926694981 +/- 4...e-14]*I
|
||||
|
||||
sage: C = ComplexBallField(100)
|
||||
sage: C.integral(lambda x, _: x.cos() * x.sin(), 0, 1)
|
||||
[0.35403670913678559674939205737 +/- 8.89e-30]
|
||||
|
||||
sage: CBF.integral(lambda x, _: (x + x.exp()).sin(), 0, 8)
|
||||
- [0.34740017266 +/- 6.36e-12]
|
||||
+ [0.34740017266 +/- 6...e-12]
|
||||
|
||||
sage: C = ComplexBallField(2000)
|
||||
sage: C.integral(lambda x, _: (x + x.exp()).sin(), 0, 8) # long time
|
||||
@@ -879,14 +879,14 @@ class ComplexBallField(UniqueRepresentation, Field):
|
||||
....: else:
|
||||
....: return z.sqrt()
|
||||
sage: CBF.integral(my_sqrt, -1 + CBF(i), -1 - CBF(i))
|
||||
- [+/- 1.14e-14] + [-0.4752076627926 +/- 5.18e-14]*I
|
||||
+ [+/- 1.14e-14] + [-0.4752076627926 +/- 5...e-14]*I
|
||||
|
||||
Note, though, that proper handling of the ``analytic`` flag is required
|
||||
even when the path does not touch the branch cut::
|
||||
|
||||
sage: correct = CBF.integral(my_sqrt, 1, 2); correct
|
||||
[1.21895141649746 +/- 3.73e-15]
|
||||
- sage: RBF(integral(sqrt(x), x, 1, 2))
|
||||
+ sage: RBF(integral(sqrt(x), x, 1, 2)) # long time
|
||||
[1.21895141649746 +/- 1.79e-15]
|
||||
sage: wrong = CBF.integral(lambda z, _: z.sqrt(), 1, 2) # WRONG!
|
||||
sage: correct - wrong
|
||||
@@ -915,9 +915,9 @@ class ComplexBallField(UniqueRepresentation, Field):
|
||||
the integrand is unbounded::
|
||||
|
||||
sage: CBF.integral(lambda x, _: 1/x, -1, 1)
|
||||
- [+/- inf] + [+/- inf]*I
|
||||
+ nan + nan*I
|
||||
sage: CBF.integral(lambda x, _: 1/x, 10^-1000, 1)
|
||||
- [+/- inf] + [+/- inf]*I
|
||||
+ nan + nan*I
|
||||
sage: CBF.integral(lambda x, _: 1/x, 10^-1000, 1, abs_tol=1e-10)
|
||||
[2302.5850930 +/- 1.26e-8]
|
||||
|
||||
@@ -928,14 +928,15 @@ class ComplexBallField(UniqueRepresentation, Field):
|
||||
sage: CBF.integral(lambda x, _: x.exp(), -1020, -1010, abs_tol=1e-450)
|
||||
[2.304377150950e-439 +/- 9.74e-452]
|
||||
sage: CBF.integral(lambda x, _: x.exp(), -1020, -1010, abs_tol=0)
|
||||
- [2.304377150949e-439 +/- 7.53e-452]
|
||||
- sage: CBF.integral(lambda x, _: x.exp(), -1020, -1010, rel_tol=1e-4, abs_tol=0)
|
||||
- [2.30438e-439 +/- 3.90e-445]
|
||||
+ [2.304377150950e-439 +/- 7...e-452]
|
||||
+ sage: CBF.integral(lambda x, _: x.exp(), -1020, -1010, rel_tol=1e-2, abs_tol=0)
|
||||
+ [2.30438e-439 +/- 5.94e-445]
|
||||
|
||||
- sage: CBF.integral(lambda x, _: x*(1/x).sin(), 0, 1)
|
||||
- [+/- 0.644]
|
||||
- sage: CBF.integral(lambda x, _: x*(1/x).sin(), 0, 1, use_heap=True)
|
||||
- [0.3785300 +/- 4.32e-8]
|
||||
+ sage: epsi = CBF(1e-10)
|
||||
+ sage: CBF.integral(lambda x, _: x*(1/x).sin(), epsi, 1)
|
||||
+ [0.38 +/- 8.54e-3]
|
||||
+ sage: CBF.integral(lambda x, _: x*(1/x).sin(), epsi, 1, use_heap=True)
|
||||
+ [0.37853002 +/- 8.73e-9]
|
||||
|
||||
ALGORITHM:
|
||||
|
||||
@@ -951,12 +952,12 @@ class ComplexBallField(UniqueRepresentation, Field):
|
||||
|
||||
sage: i = QuadraticField(-1).gen()
|
||||
sage: CBF.integral(lambda x, _: (1 + i*x).gamma(), -1, 1)
|
||||
- [1.5723926694981 +/- 4.53e-14] + [+/- 3.95e-15]*I
|
||||
+ [1.5723926694981 +/- 4...e-14] + [+/- 4...e-15]*I
|
||||
|
||||
- sage: ComplexBallField(10000).integral(lambda x, _: x.sin(), 0, 1, rel_tol=1e-400)
|
||||
- [0.459... +/- ...e-4...]
|
||||
+ sage: ComplexBallField(10000).integral(lambda x, _: x.sin(), 0, 1, rel_tol=1e-300)
|
||||
+ [0.459... +/- ...e-3...]
|
||||
sage: CBF.integral(lambda x, _: x.sin(), 0, 100, rel_tol=10)
|
||||
- [+/- 7.61]
|
||||
+ [0.138 +/- 5.53e-4]
|
||||
|
||||
sage: ComplexBallField(10000).integral(lambda x, _: x.sin(), 0, 1, abs_tol=1e-400)
|
||||
[0.459697... +/- ...e-4...]
|
||||
@@ -2389,9 +2390,9 @@ cdef class ComplexBall(RingElement):
|
||||
sage: ~CBF(i/3)
|
||||
[-3.00000000000000 +/- 9.44e-16]*I
|
||||
sage: ~CBF(0)
|
||||
- [+/- inf]
|
||||
+ nan
|
||||
sage: ~CBF(RIF(10,11))
|
||||
- [0.1 +/- 9.53e-3]
|
||||
+ [0.1 +/- 9.10e-3]
|
||||
"""
|
||||
cdef ComplexBall res = self._new()
|
||||
if _do_sig(prec(self)): sig_on()
|
||||
@@ -2512,9 +2513,9 @@ cdef class ComplexBall(RingElement):
|
||||
sage: CBF(-2, 1)/CBF(1, 1/3)
|
||||
[-1.500000000000000 +/- 8.83e-16] + [1.500000000000000 +/- 5.64e-16]*I
|
||||
sage: CBF(2+I)/CBF(0)
|
||||
- [+/- inf] + [+/- inf]*I
|
||||
+ nan + nan*I
|
||||
sage: CBF(1)/CBF(0)
|
||||
- [+/- inf]
|
||||
+ nan
|
||||
sage: CBF(1)/CBF(RBF(0, 1.))
|
||||
nan
|
||||
"""
|
||||
@@ -2543,9 +2544,9 @@ cdef class ComplexBall(RingElement):
|
||||
sage: CBF(0)^(1/3)
|
||||
0
|
||||
sage: CBF(0)^(-1)
|
||||
- [+/- inf]
|
||||
+ nan
|
||||
sage: CBF(0)^(-2)
|
||||
- [+/- inf] + [+/- inf]*I
|
||||
+ nan + nan*I
|
||||
|
||||
TESTS::
|
||||
|
||||
@@ -2656,12 +2657,12 @@ cdef class ComplexBall(RingElement):
|
||||
sage: CBF(1).rising_factorial(5)
|
||||
120.0000000000000
|
||||
sage: CBF(1/3, 1/2).rising_factorial(300)
|
||||
- [-3.87949484514e+612 +/- 5.23e+600] + [-3.52042209763e+612 +/- 5.55e+600]*I
|
||||
+ [-3.87949484514e+612 +/- 5...e+600] + [-3.52042209763e+612 +/- 5...e+600]*I
|
||||
|
||||
sage: CBF(1).rising_factorial(-1)
|
||||
nan
|
||||
sage: CBF(1).rising_factorial(2**64)
|
||||
- [+/- 2.30e+347382171305201370464]
|
||||
+ [+/- 2.30e+347382171326740403407]
|
||||
sage: ComplexBallField(128)(1).rising_factorial(2**64)
|
||||
[2.343691126796861348e+347382171305201285713 +/- 4.71e+347382171305201285694]
|
||||
sage: CBF(1/2).rising_factorial(CBF(2,3))
|
||||
@@ -2700,7 +2701,7 @@ cdef class ComplexBall(RingElement):
|
||||
[1.000000000000000 +/- 2.83e-16] + [-0.441271200305303 +/- 2.82e-16]*I
|
||||
|
||||
sage: CBF('inf').log()
|
||||
- nan + nan*I
|
||||
+ [+/- inf]
|
||||
sage: CBF(2).log(0)
|
||||
nan + nan*I
|
||||
"""
|
||||
@@ -2808,7 +2809,7 @@ cdef class ComplexBall(RingElement):
|
||||
sage: CBF(pi/2, 1/10).tan()
|
||||
[+/- 2.87e-14] + [10.0333111322540 +/- 2.36e-14]*I
|
||||
sage: CBF(pi/2).tan()
|
||||
- [+/- inf]
|
||||
+ nan
|
||||
"""
|
||||
cdef ComplexBall res = self._new()
|
||||
if _do_sig(prec(self)): sig_on()
|
||||
@@ -2825,7 +2826,7 @@ cdef class ComplexBall(RingElement):
|
||||
sage: CBF(pi, 1/10).cot()
|
||||
[+/- 5.74e-14] + [-10.0333111322540 +/- 2.81e-14]*I
|
||||
sage: CBF(pi).cot()
|
||||
- [+/- inf]
|
||||
+ nan
|
||||
"""
|
||||
cdef ComplexBall res = self._new()
|
||||
if _do_sig(prec(self)): sig_on()
|
||||
@@ -3211,9 +3212,9 @@ cdef class ComplexBall(RingElement):
|
||||
1.000000000000000*I
|
||||
|
||||
sage: CBF(2+3*I).hypergeometric([1/4,1/3],[1/2])
|
||||
- [0.7871684267473 +/- 7.34e-14] + [0.2749254173721 +/- 9.23e-14]*I
|
||||
+ [0.7871684267473 +/- 7...e-14] + [0.2749254173721 +/- 9...e-14]*I
|
||||
sage: CBF(2+3*I).hypergeometric([1/4,1/3],[1/2],regularized=True)
|
||||
- [0.4441122268685 +/- 3.96e-14] + [0.1551100567338 +/- 5.75e-14]*I
|
||||
+ [0.4441122268685 +/- 3...e-14] + [0.1551100567338 +/- 5...e-14]*I
|
||||
|
||||
sage: CBF(5).hypergeometric([2,3], [-5])
|
||||
nan + nan*I
|
||||
@@ -4041,9 +4042,9 @@ cdef class ComplexBall(RingElement):
|
||||
|
||||
sage: phi = CBF(1,1)
|
||||
sage: (CBF.pi()/2).elliptic_e_inc(phi)
|
||||
- [1.283840957898 +/- 3.23e-13] + [-0.5317843366915 +/- 7.79e-14]*I
|
||||
+ [1.283840957898 +/- 3...e-13] + [-0.5317843366915 +/- 7...e-14]*I
|
||||
sage: phi.elliptic_e()
|
||||
- [1.2838409578982 +/- 5.90e-14] + [-0.5317843366915 +/- 3.35e-14]*I
|
||||
+ [1.2838409578982 +/- 5...e-14] + [-0.5317843366915 +/- 3...e-14]*I
|
||||
|
||||
sage: phi = CBF(2, 3/7)
|
||||
sage: (CBF.pi()/2).elliptic_e_inc(phi)
|
||||
@@ -4312,8 +4313,7 @@ cdef class ComplexBall(RingElement):
|
||||
sage: CBF(10).laguerre_L(3, 2)
|
||||
[-6.666666666667 +/- 4.15e-13]
|
||||
sage: CBF(5,7).laguerre_L(CBF(2,3), CBF(1,-2))
|
||||
- [5515.315030271 +/- 4.37e-10] + [-12386.942845271 +/- 5.47e-10]*I
|
||||
-
|
||||
+ [5515.315030271 +/- 4...e-10] + [-12386.942845271 +/- 5...e-10]*I
|
||||
"""
|
||||
cdef ComplexBall my_n = self._parent.coerce(n)
|
||||
cdef ComplexBall my_m = self._parent.coerce(m)
|
||||
@@ -4357,9 +4357,9 @@ cdef class ComplexBall(RingElement):
|
||||
EXAMPLES::
|
||||
|
||||
sage: CBF(1/2).legendre_P(5)
|
||||
- [0.08984375000000000 +/- 4.5...e-18]
|
||||
+ [0.0898437500000000 +/- 7...e-17]
|
||||
sage: CBF(1,2).legendre_P(CBF(2,3), CBF(0,1))
|
||||
- [0.10996180744364 +/- 7.45e-15] + [0.14312767804055 +/- 8.38e-15]*I
|
||||
+ [0.10996180744364 +/- 7.12e-15] + [0.14312767804055 +/- 8.07e-15]*I
|
||||
sage: CBF(-10).legendre_P(5, 325/100)
|
||||
[-22104403.487377 +/- 6.81e-7] + [53364750.687392 +/- 7.25e-7]*I
|
||||
sage: CBF(-10).legendre_P(5, 325/100, type=3)
|
||||
@@ -4393,9 +4393,9 @@ cdef class ComplexBall(RingElement):
|
||||
sage: CBF(1/2).legendre_Q(5)
|
||||
[0.55508089057168 +/- 2.79e-15]
|
||||
sage: CBF(1,2).legendre_Q(CBF(2,3), CBF(0,1))
|
||||
- [0.167678710 +/- 4.60e-10] + [-0.161558598 +/- 7.47e-10]*I
|
||||
+ [0.167678710 +/- 3.91e-10] + [-0.161558598 +/- 6.77e-10]*I
|
||||
sage: CBF(-10).legendre_Q(5, 325/100)
|
||||
- [-83825154.36008 +/- 4.94e-6] + [-34721515.80396 +/- 5.40e-6]*I
|
||||
+ [-83825154.36008 +/- 5.02e-6] + [-34721515.80396 +/- 5.42e-6]*I
|
||||
sage: CBF(-10).legendre_Q(5, 325/100, type=3)
|
||||
[-4.797306921692e-6 +/- 6.82e-19] + [-4.797306921692e-6 +/- 6.57e-19]*I
|
||||
|
||||
diff --git a/src/sage/rings/polynomial/polynomial_complex_arb.pyx b/src/sage/rings/polynomial/polynomial_complex_arb.pyx
|
||||
index c436d4705b..ef611a566b 100644
|
||||
--- a/src/sage/rings/polynomial/polynomial_complex_arb.pyx
|
||||
+++ b/src/sage/rings/polynomial/polynomial_complex_arb.pyx
|
||||
@@ -543,7 +543,7 @@ cdef class Polynomial_complex_arb(Polynomial):
|
||||
sage: (1 - x/3).inverse_series_trunc(3)
|
||||
([0.1111111111111111 +/- 5.99e-17])*x^2 + ([0.3333333333333333 +/- 7.04e-17])*x + 1.000000000000000
|
||||
sage: x.inverse_series_trunc(1)
|
||||
- [+/- inf]
|
||||
+ nan
|
||||
sage: Pol(0).inverse_series_trunc(2)
|
||||
(nan + nan*I)*x + nan + nan*I
|
||||
|
||||
@@ -671,7 +671,7 @@ cdef class Polynomial_complex_arb(Polynomial):
|
||||
sage: pol._sqrt_series(2)
|
||||
([+/- 7.51e-3] + [+/- 0.501]*I)*x + [+/- 5.01e-3] + [+/- 1.01]*I
|
||||
sage: x._sqrt_series(2)
|
||||
- ([+/- inf] + [+/- inf]*I)*x
|
||||
+ (nan + nan*I)*x
|
||||
"""
|
||||
cdef Polynomial_complex_arb res = self._new()
|
||||
if n < 0:
|
||||
diff --git a/src/sage/rings/real_arb.pyx b/src/sage/rings/real_arb.pyx
|
||||
index c9f68e38d7..76e3037a9a 100644
|
||||
--- a/src/sage/rings/real_arb.pyx
|
||||
+++ b/src/sage/rings/real_arb.pyx
|
||||
@@ -161,7 +161,7 @@ values and should be preferred::
|
||||
|
||||
sage: RBF(NaN) < RBF(infinity)
|
||||
False
|
||||
- sage: 1/RBF(0) <= RBF(infinity)
|
||||
+ sage: RBF(0).add_error(infinity) <= RBF(infinity)
|
||||
True
|
||||
|
||||
TESTS::
|
||||
@@ -252,6 +252,8 @@ cdef void mpfi_to_arb(arb_t target, const mpfi_t source, const long precision):
|
||||
(+infinity, +infinity)
|
||||
sage: RBF(RIF(-infinity)).endpoints()
|
||||
(-infinity, -infinity)
|
||||
+ sage: RBF(RIF(-infinity, infinity)).endpoints()
|
||||
+ (-infinity, +infinity)
|
||||
sage: RIF(RBF(infinity)).endpoints()
|
||||
(+infinity, +infinity)
|
||||
sage: RIF(RBF(-infinity)).endpoints()
|
||||
@@ -266,10 +268,11 @@ cdef void mpfi_to_arb(arb_t target, const mpfi_t source, const long precision):
|
||||
if _do_sig(precision): sig_on()
|
||||
mpfi_get_left(left, source)
|
||||
mpfi_get_right(right, source)
|
||||
- arb_set_interval_mpfr(target, left, right, precision)
|
||||
- # Work around weakness of arb_set_interval_mpfr(tgt, inf, inf)
|
||||
- if mpfr_equal_p(left, right):
|
||||
- mag_zero(arb_radref(target))
|
||||
+ if mpfr_inf_p(left) and mpfr_inf_p(right) and mpfr_sgn(left) < 0 < mpfr_sgn(right):
|
||||
+ # Work around a weakness of arb_set_interval_mpfr(tgt, -inf, inf)
|
||||
+ arb_zero_pm_inf(target)
|
||||
+ else:
|
||||
+ arb_set_interval_mpfr(target, left, right, precision)
|
||||
if _do_sig(precision): sig_off()
|
||||
|
||||
mpfr_clear(left)
|
||||
@@ -649,17 +652,15 @@ class RealBallField(UniqueRepresentation, Field):
|
||||
EXAMPLES::
|
||||
|
||||
sage: RBF.some_elements()
|
||||
- [1.000000000000000,
|
||||
- [0.3333333333333333 +/- 7.04e-17],
|
||||
+ [0, 1.000000000000000, [0.3333333333333333 +/- 7.04e-17],
|
||||
[-4.733045976388941e+363922934236666733021124 +/- 3.46e+363922934236666733021108],
|
||||
- [+/- inf],
|
||||
- [+/- inf],
|
||||
- nan]
|
||||
+ [+/- inf], [+/- inf], [+/- inf], nan]
|
||||
"""
|
||||
import sage.symbolic.constants
|
||||
- return [self(1), self(1)/3,
|
||||
+ inf = self(sage.rings.infinity.Infinity)
|
||||
+ return [self(0), self(1), self(1)/3,
|
||||
-self(2)**(Integer(2)**80),
|
||||
- self(sage.rings.infinity.Infinity), ~self(0),
|
||||
+ inf, -inf, self.zero().add_error(inf),
|
||||
self.element_class(self, sage.symbolic.constants.NotANumber())]
|
||||
|
||||
def _sum_of_products(self, terms):
|
||||
@@ -881,7 +882,7 @@ class RealBallField(UniqueRepresentation, Field):
|
||||
sage: RBF.gamma(5)
|
||||
24.00000000000000
|
||||
sage: RBF.gamma(10**20)
|
||||
- [+/- 5.92e+1956570551809674821757]
|
||||
+ [+/- 5.50e+1956570552410610660600]
|
||||
sage: RBF.gamma(1/3)
|
||||
[2.678938534707747 +/- 8.99e-16]
|
||||
sage: RBF.gamma(-5)
|
||||
@@ -2247,7 +2248,7 @@ cdef class RealBall(RingElement):
|
||||
sage: inf = RBF(+infinity)
|
||||
sage: other_inf = RBF(+infinity, 42.r)
|
||||
sage: neg_inf = RBF(-infinity)
|
||||
- sage: extended_line = 1/RBF(0)
|
||||
+ sage: extended_line = RBF(0).add_error(infinity)
|
||||
sage: exact_nan = inf - inf
|
||||
sage: exact_nan.mid(), exact_nan.rad()
|
||||
(NaN, 0.00000000)
|
||||
@@ -2659,7 +2660,7 @@ cdef class RealBall(RingElement):
|
||||
sage: ~RBF(5)
|
||||
[0.2000000000000000 +/- 4.45e-17]
|
||||
sage: ~RBF(0)
|
||||
- [+/- inf]
|
||||
+ nan
|
||||
sage: RBF(RIF(-0.1,0.1))
|
||||
[+/- 0.101]
|
||||
|
||||
@@ -2739,7 +2740,7 @@ cdef class RealBall(RingElement):
|
||||
sage: RBF(pi)/RBF(e)
|
||||
[1.155727349790922 +/- 8.43e-16]
|
||||
sage: RBF(2)/RBF(0)
|
||||
- [+/- inf]
|
||||
+ nan
|
||||
"""
|
||||
cdef RealBall res = self._new()
|
||||
if _do_sig(prec(self)): sig_on()
|
||||
@@ -2765,7 +2766,7 @@ cdef class RealBall(RingElement):
|
||||
sage: RBF(-1)^(1/3)
|
||||
nan
|
||||
sage: RBF(0)^(-1)
|
||||
- [+/- inf]
|
||||
+ nan
|
||||
sage: RBF(-e)**RBF(pi)
|
||||
nan
|
||||
|
||||
@@ -3129,7 +3130,7 @@ cdef class RealBall(RingElement):
|
||||
sage: RBF(1).tan()
|
||||
[1.557407724654902 +/- 3.26e-16]
|
||||
sage: RBF(pi/2).tan()
|
||||
- [+/- inf]
|
||||
+ nan
|
||||
"""
|
||||
cdef RealBall res = self._new()
|
||||
if _do_sig(prec(self)): sig_on()
|
||||
@@ -3146,7 +3147,7 @@ cdef class RealBall(RingElement):
|
||||
sage: RBF(1).cot()
|
||||
[0.642092615934331 +/- 4.79e-16]
|
||||
sage: RBF(pi).cot()
|
||||
- [+/- inf]
|
||||
+ nan
|
||||
"""
|
||||
cdef RealBall res = self._new()
|
||||
if _do_sig(prec(self)): sig_on()
|
||||
@@ -3257,7 +3258,7 @@ cdef class RealBall(RingElement):
|
||||
sage: RBF(1).coth()
|
||||
[1.313035285499331 +/- 4.97e-16]
|
||||
sage: RBF(0).coth()
|
||||
- [+/- inf]
|
||||
+ nan
|
||||
"""
|
||||
cdef RealBall res = self._new()
|
||||
if _do_sig(prec(self)): sig_on()
|
@ -0,0 +1,15 @@
|
||||
diff --git a/build/pkgs/openblas/package-version.txt b/build/pkgs/openblas/package-version.txt
|
||||
index 3bc45c25d4..7c7c224887 100644
|
||||
--- a/src/sage/schemes/elliptic_curves/padics.py
|
||||
+++ b/src/sage/schemes/elliptic_curves/padics.py
|
||||
@@ -292,8 +292,8 @@ def padic_regulator(self, p, prec=20, height=None, check_hypotheses=True):
|
||||
|
||||
sage: max_prec = 30 # make sure we get past p^2 # long time
|
||||
sage: full = E.padic_regulator(5, max_prec) # long time
|
||||
- sage: for prec in range(1, max_prec): # long time
|
||||
- ....: assert E.padic_regulator(5, prec) == full # long time
|
||||
+ sage: for prec in range(1, max_prec): # known bug (#25969) # long time
|
||||
+ ....: assert E.padic_regulator(5, prec) == full # known bug (#25969) # long time
|
||||
|
||||
A case where the generator belongs to the formal group already
|
||||
(:trac:`3632`)::
|
@ -1,48 +0,0 @@
|
||||
diff --git a/src/sage/interfaces/maxima_abstract.py b/src/sage/interfaces/maxima_abstract.py
|
||||
index 961c20aaac..3d601d8939 100644
|
||||
--- a/src/sage/interfaces/maxima_abstract.py
|
||||
+++ b/src/sage/interfaces/maxima_abstract.py
|
||||
@@ -1743,7 +1743,7 @@ class MaximaAbstractElement(ExtraTabCompletion, InterfaceElement):
|
||||
sage: y,d = var('y,d')
|
||||
sage: f = function('f')
|
||||
sage: latex(maxima(derivative(f(x*y), x)))
|
||||
- \left(\left.{{{\it \partial}}\over{{\it \partial}\, {\it t_0}}}\,f\left({\it t_0}\right) \right|_{{\it t_0}={\it x}\, {\it y}}\right)\,{\it y}
|
||||
+ \left(\left.{{{\it \partial}}\over{{\it \partial}\, {\it t}_{0}}}\,f\left({\it t}_{0}\right) \right|_{{\it t}_{0}={\it x}\, {\it y}}\right)\,{\it y}
|
||||
sage: latex(maxima(derivative(f(x,y,d), d,x,x,y)))
|
||||
{{{\it \partial}^4}\over{{\it \partial}\,{\it d}\, {\it \partial}\,{\it x}^2\,{\it \partial}\, {\it y}}}\,f\left({\it x} , {\it y} , {\it d}\right)
|
||||
sage: latex(maxima(d/(d-2)))
|
||||
diff --git a/src/sage/manifolds/differentiable/metric.py b/src/sage/manifolds/differentiable/metric.py
|
||||
index 3cd6ad3235..1e18af1a6b 100644
|
||||
--- a/src/sage/manifolds/differentiable/metric.py
|
||||
+++ b/src/sage/manifolds/differentiable/metric.py
|
||||
@@ -993,7 +993,7 @@ class PseudoRiemannianMetric(TensorField):
|
||||
2-dimensional differentiable manifold S^2
|
||||
sage: g.riemann()[:]
|
||||
[[[[0, 0], [0, 0]], [[0, sin(th)^2], [-sin(th)^2, 0]]],
|
||||
- [[[0, (cos(th)^2 - 1)/sin(th)^2], [1, 0]], [[0, 0], [0, 0]]]]
|
||||
+ [[[0, -1], [1, 0]], [[0, 0], [0, 0]]]]
|
||||
|
||||
In dimension 2, the Riemann tensor can be expressed entirely in terms of
|
||||
the Ricci scalar `r`:
|
||||
diff --git a/src/sage/symbolic/expression.pyx b/src/sage/symbolic/expression.pyx
|
||||
index dfb8751467..27402e54ab 100644
|
||||
--- a/src/sage/symbolic/expression.pyx
|
||||
+++ b/src/sage/symbolic/expression.pyx
|
||||
@@ -7154,7 +7154,7 @@ cdef class Expression(CommutativeRingElement):
|
||||
sage: ex = lcm(sin(x)^2 - 1, sin(x)^2 + sin(x)); ex
|
||||
(sin(x)^2 + sin(x))*(sin(x)^2 - 1)/(sin(x) + 1)
|
||||
sage: ex.simplify_full()
|
||||
- -cos(x)^2*sin(x)
|
||||
+ sin(x)^3 - sin(x)
|
||||
|
||||
TESTS:
|
||||
|
||||
@@ -10004,7 +10004,7 @@ cdef class Expression(CommutativeRingElement):
|
||||
|
||||
sage: f=tan(3*x)
|
||||
sage: f.simplify_trig()
|
||||
- (4*cos(x)^2 - 1)*sin(x)/(4*cos(x)^3 - 3*cos(x))
|
||||
+ -(4*cos(x)^2 - 1)*sin(x)/(4*cos(x)*sin(x)^2 - cos(x))
|
||||
sage: f.simplify_trig(False)
|
||||
sin(3*x)/cos(3*x)
|
||||
|
@ -0,0 +1,18 @@
|
||||
diff --git a/src/sage/libs/pari/__init__.py b/src/sage/libs/pari/__init__.py
|
||||
index e451766474..77eda66097 100644
|
||||
--- a/src/sage/libs/pari/__init__.py
|
||||
+++ b/src/sage/libs/pari/__init__.py
|
||||
@@ -205,6 +205,13 @@ def _get_pari_instance():
|
||||
# messages in Sage.
|
||||
P.default("debugmem", 0)
|
||||
|
||||
+ # Make sure pari doesn't use threads, regardless of how it was compiled.
|
||||
+ # Threads cause some doctest failures (memory issues). Those could probably
|
||||
+ # be solved without disabling threads. But that would require figuring out
|
||||
+ # some sensible values for `threadsizemax`. See
|
||||
+ # https://pari.math.u-bordeaux.fr/dochtml/html/GP_defaults.html
|
||||
+ P.default("nbthreads", 1)
|
||||
+
|
||||
return P
|
||||
|
||||
pari = _get_pari_instance()
|
@ -1,479 +0,0 @@
|
||||
diff --git a/src/sage/calculus/calculus.py b/src/sage/calculus/calculus.py
|
||||
index 3a417d9d5c..fadaadbaf6 100644
|
||||
--- a/src/sage/calculus/calculus.py
|
||||
+++ b/src/sage/calculus/calculus.py
|
||||
@@ -231,7 +231,7 @@ Another example::
|
||||
sage: f(x=3)
|
||||
arcsinh(1)
|
||||
sage: f.derivative(x)
|
||||
- 1/3/sqrt(1/9*x^2 + 1)
|
||||
+ 1/sqrt(x^2 + 9)
|
||||
|
||||
We compute the length of the parabola from 0 to 2::
|
||||
|
||||
@@ -1509,8 +1509,8 @@ def laplace(ex, t, s, algorithm='maxima'):
|
||||
Testing SymPy::
|
||||
|
||||
sage: laplace(t^n, t, s, algorithm='sympy')
|
||||
- (s^(-n)*gamma(n + 1)/s, 0, -re(n) < 1)
|
||||
-
|
||||
+ (gamma(n + 1)/(s*s^n), 0, -re(n) < 1)
|
||||
+
|
||||
Testing Maxima::
|
||||
|
||||
sage: laplace(t^n, t, s, algorithm='maxima')
|
||||
diff --git a/src/sage/functions/hypergeometric.py b/src/sage/functions/hypergeometric.py
|
||||
index 1fc2db5c94..f3e49b9cdb 100644
|
||||
--- a/src/sage/functions/hypergeometric.py
|
||||
+++ b/src/sage/functions/hypergeometric.py
|
||||
@@ -34,7 +34,7 @@ Simplification (note that ``simplify_full`` does not yet call
|
||||
sage: a.simplify_hypergeometric()
|
||||
1/((-e^x + 1)^e^x)
|
||||
sage: a.simplify_hypergeometric(algorithm='sage')
|
||||
- (-e^x + 1)^(-e^x)
|
||||
+ 1/((-e^x + 1)^e^x)
|
||||
|
||||
Equality testing::
|
||||
|
||||
@@ -145,7 +145,7 @@ Series expansions of confluent hypergeometric functions::
|
||||
|
||||
sage: hypergeometric_M(2, 2, x).series(x, 3)
|
||||
1 + 1*x + 1/2*x^2 + Order(x^3)
|
||||
- sage: hypergeometric_U(2, 2, x).series(x == 3, 100).subs(x=1).n()
|
||||
+ sage: hypergeometric_U(2, 2, x).series(x == 3, 100).subs(x=1).n() # known bug (see :trac:`25688`)
|
||||
0.403652637676806
|
||||
sage: hypergeometric_U(2, 2, 1).n()
|
||||
0.403652637676806
|
||||
@@ -773,7 +773,7 @@ def closed_form(hyp):
|
||||
sage: closed_form(hypergeometric([], [], z))
|
||||
e^z
|
||||
sage: closed_form(hypergeometric([a], [], z))
|
||||
- (-z + 1)^(-a)
|
||||
+ 1/((-z + 1)^a)
|
||||
sage: closed_form(hypergeometric([1, 1, 2], [1, 1], z))
|
||||
(z - 1)^(-2)
|
||||
sage: closed_form(hypergeometric([2, 3], [1], x))
|
||||
@@ -1121,7 +1121,7 @@ class Hypergeometric_U(BuiltinFunction):
|
||||
sage: var('a b z')
|
||||
(a, b, z)
|
||||
sage: hypergeometric_U(a, b, z).generalized()
|
||||
- z^(-a)*hypergeometric((a, a - b + 1), (), -1/z)
|
||||
+ hypergeometric((a, a - b + 1), (), -1/z)/z^a
|
||||
sage: hypergeometric_U(1, 3, 1/2).generalized()
|
||||
2*hypergeometric((1, -1), (), -2)
|
||||
sage: hypergeometric_U(3, I, 2).generalized()
|
||||
diff --git a/src/sage/functions/log.py b/src/sage/functions/log.py
|
||||
index 75d1bf8060..61968582af 100644
|
||||
--- a/src/sage/functions/log.py
|
||||
+++ b/src/sage/functions/log.py
|
||||
@@ -518,17 +518,17 @@ class Function_polylog(GinacFunction):
|
||||
|
||||
sage: BF = RealBallField(100)
|
||||
sage: polylog(2, BF(1/3))
|
||||
- [0.36621322997706348761674629766 +/- 4.51e-30]
|
||||
+ [0.36621322997706348761674629766... +/- ...]
|
||||
sage: polylog(2, BF(4/3))
|
||||
- nan
|
||||
+ [2.27001825336107090380391448586 +/- 5.64e-30] + [-0.90377988538400159956755721265 +/- 8.39e-30]*I
|
||||
sage: parent(_)
|
||||
- Real ball field with 100 bits of precision
|
||||
+ Complex ball field with 100 bits of precision
|
||||
sage: polylog(2, CBF(1/3))
|
||||
- [0.366213229977063 +/- 5.85e-16]
|
||||
+ [0.366213229977063 +/- ...]
|
||||
sage: parent(_)
|
||||
Complex ball field with 53 bits of precision
|
||||
sage: polylog(2, CBF(1))
|
||||
- [1.644934066848226 +/- 6.59e-16]
|
||||
+ [1.644934066848226 +/- ...]
|
||||
sage: parent(_)
|
||||
Complex ball field with 53 bits of precision
|
||||
"""
|
||||
diff --git a/src/sage/functions/trig.py b/src/sage/functions/trig.py
|
||||
index e7e7a311cd..1f2926d6c9 100644
|
||||
--- a/src/sage/functions/trig.py
|
||||
+++ b/src/sage/functions/trig.py
|
||||
@@ -529,13 +529,8 @@ class Function_arcsin(GinacFunction):
|
||||
arcsin
|
||||
sage: asin(complex(1,1))
|
||||
(0.6662394324925152+1.0612750619050357j)
|
||||
-
|
||||
- Check that :trac:`22823` is fixed::
|
||||
-
|
||||
- sage: bool(asin(SR(2.1)) == NaN)
|
||||
- True
|
||||
- sage: asin(SR(2.1)).is_real()
|
||||
- False
|
||||
+ sage: asin(SR(2.1))
|
||||
+ 1.57079632679490 - 1.37285914424258*I
|
||||
"""
|
||||
GinacFunction.__init__(self, 'arcsin', latex_name=r"\arcsin",
|
||||
conversions=dict(maxima='asin', sympy='asin', fricas="asin", giac="asin"))
|
||||
@@ -595,13 +590,8 @@ class Function_arccos(GinacFunction):
|
||||
arccos
|
||||
sage: acos(complex(1,1))
|
||||
(0.9045568943023814-1.0612750619050357j)
|
||||
-
|
||||
- Check that :trac:`22823` is fixed::
|
||||
-
|
||||
- sage: bool(acos(SR(2.1)) == NaN)
|
||||
- True
|
||||
- sage: acos(SR(2.1)).is_real()
|
||||
- False
|
||||
+ sage: acos(SR(2.1))
|
||||
+ 1.37285914424258*I
|
||||
"""
|
||||
GinacFunction.__init__(self, 'arccos', latex_name=r"\arccos",
|
||||
conversions=dict(maxima='acos', sympy='acos', fricas='acos', giac='acos'))
|
||||
@@ -807,7 +797,7 @@ class Function_arcsec(GinacFunction):
|
||||
sage: arcsec(2).n(100)
|
||||
1.0471975511965977461542144611
|
||||
sage: arcsec(1/2).n(100)
|
||||
- NaN
|
||||
+ 1.3169578969248167086250463473*I
|
||||
sage: RDF(arcsec(2)) # abs tol 1e-15
|
||||
1.0471975511965976
|
||||
sage: arcsec(1 + I)
|
||||
@@ -958,7 +948,9 @@ class Function_arctan2(GinacFunction):
|
||||
sage: atan2(0,0,hold=True)
|
||||
arctan2(0, 0)
|
||||
sage: atan2(0,0,hold=True).n()
|
||||
- NaN
|
||||
+ Traceback (most recent call last):
|
||||
+ ...
|
||||
+ RuntimeError: atan2(): division by zero
|
||||
|
||||
Check if :trac:`10062` is fixed, this was caused by
|
||||
``(I*I).is_positive()`` returning ``True``::
|
||||
diff --git a/src/sage/geometry/hyperbolic_space/hyperbolic_geodesic.py b/src/sage/geometry/hyperbolic_space/hyperbolic_geodesic.py
|
||||
index 3b5c8d1729..1c6b73a16c 100644
|
||||
--- a/src/sage/geometry/hyperbolic_space/hyperbolic_geodesic.py
|
||||
+++ b/src/sage/geometry/hyperbolic_space/hyperbolic_geodesic.py
|
||||
@@ -1422,8 +1422,10 @@ class HyperbolicGeodesicUHP(HyperbolicGeodesic):
|
||||
expressions do not generate runtime errors. ::
|
||||
|
||||
sage: g=HyperbolicPlane().UHP().get_geodesic(-1+I,1+I)
|
||||
- sage: g.midpoint()
|
||||
- Point in UHP 1/2*(sqrt(2)*e^(1/2*arccosh(3)) - sqrt(2) + (I - 1)*e^(1/2*arccosh(3)) + I - 1)/((1/4*I - 1/4)*sqrt(2)*e^(1/2*arccosh(3)) - (1/4*I - 1/4)*sqrt(2) + 1/2*e^(1/2*arccosh(3)) + 1/2)
|
||||
+ sage: point = g.midpoint(); point
|
||||
+ Point in UHP -1/2*(sqrt(2)*...
|
||||
+ sage: QQbar(point.coordinates()).radical_expression()
|
||||
+ I*sqrt(2)
|
||||
|
||||
Check that floating points remain floating points
|
||||
in :meth:`midpoint` ::
|
||||
diff --git a/src/sage/interfaces/fricas.py b/src/sage/interfaces/fricas.py
|
||||
index 82aae78e37..8501ea2a18 100644
|
||||
--- a/src/sage/interfaces/fricas.py
|
||||
+++ b/src/sage/interfaces/fricas.py
|
||||
@@ -1084,14 +1084,14 @@ class FriCASElement(ExpectElement):
|
||||
0.451026811796262,
|
||||
0.732815101786507,
|
||||
0.837981225008390,
|
||||
- NaN,
|
||||
- NaN,
|
||||
+ 1.57079632679490 - 0.467145308103262*I,
|
||||
+ 0.467145308103262*I,
|
||||
1.11976951499863,
|
||||
0.451026811796262,
|
||||
0.732815101786507,
|
||||
0.837981225008390,
|
||||
- NaN,
|
||||
- NaN]
|
||||
+ 1.57079632679490 - 0.467145308103262*I,
|
||||
+ 0.467145308103262*I]
|
||||
sage: l = [tanh, sinh, cosh, coth, sech, csch, asinh, acosh, atanh, acoth, asech, acsch, arcsinh, arccosh, arctanh, arccoth, arcsech, arccsch]
|
||||
sage: [f(x)._fricas_().sage().subs(x=0.9) for f in l] # optional - fricas
|
||||
[0.716297870199024,
|
||||
diff --git a/src/sage/libs/pynac/pynac.pyx b/src/sage/libs/pynac/pynac.pyx
|
||||
index 9e9d8f664b..e3406f007e 100644
|
||||
--- a/src/sage/libs/pynac/pynac.pyx
|
||||
+++ b/src/sage/libs/pynac/pynac.pyx
|
||||
@@ -1824,7 +1824,7 @@ cdef py_atan2(x, y):
|
||||
sage: atan2(CC(I), CC(I+1))
|
||||
0.553574358897045 + 0.402359478108525*I
|
||||
sage: atan2(CBF(I), CBF(I+1))
|
||||
- [0.55357435889705 +/- 5.58e-15] + [0.402359478108525 +/- 7.11e-16]*I
|
||||
+ [0.55357435889705 +/- ...] + [0.402359478108525 +/- ...]*I
|
||||
|
||||
Check that :trac:`23776` is fixed and RDF input gives real output::
|
||||
|
||||
diff --git a/src/sage/matrix/matrix_symbolic_dense.pyx b/src/sage/matrix/matrix_symbolic_dense.pyx
|
||||
index 46a15e53eb..7a0beb437b 100644
|
||||
--- a/src/sage/matrix/matrix_symbolic_dense.pyx
|
||||
+++ b/src/sage/matrix/matrix_symbolic_dense.pyx
|
||||
@@ -200,7 +200,7 @@ cdef class Matrix_symbolic_dense(Matrix_generic_dense):
|
||||
sage: eval, [evec], mult = es[0]
|
||||
sage: delta = eval*evec - evec*A
|
||||
sage: abs(abs(delta)) < 1e-10
|
||||
- sqrt(9/25*((2*sqrt(6) - 3)*(sqrt(6) - 2) + 7*sqrt(6) - 18)^2 + 9/25*((sqrt(6) - 2)*(sqrt(6) - 4) + 6*sqrt(6) - 14)^2) < (1.00000000000000e-10)
|
||||
+ 3/5*sqrt(((2*sqrt(6) - 3)*(sqrt(6) - 2) + 7*sqrt(6) - 18)^2 + ((sqrt(6) - 2)*(sqrt(6) - 4) + 6*sqrt(6) - 14)^2) < (1.00000000000000e-10)
|
||||
sage: abs(abs(delta)).n() < 1e-10
|
||||
True
|
||||
|
||||
diff --git a/src/sage/modules/matrix_morphism.py b/src/sage/modules/matrix_morphism.py
|
||||
index 17a1d6e290..03892ceec0 100644
|
||||
--- a/src/sage/modules/matrix_morphism.py
|
||||
+++ b/src/sage/modules/matrix_morphism.py
|
||||
@@ -214,9 +214,9 @@ class MatrixMorphism_abstract(sage.categories.morphism.Morphism):
|
||||
sage: f((1, 0))
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
- TypeError: Unable to coerce entries (=[1.00000000000000*I, 0.000000000000000]) to coefficients in Real Field with 53 bits of precision
|
||||
+ TypeError: Unable to coerce entries (=[1.00000000000000*I, 0]) to coefficients in Real Field with 53 bits of precision
|
||||
sage: f((1, 0), coerce=False)
|
||||
- (1.00000000000000*I, 0.000000000000000)
|
||||
+ (1.00000000000000*I, 0)
|
||||
|
||||
"""
|
||||
if self.domain().is_ambient():
|
||||
diff --git a/src/sage/plot/plot.py b/src/sage/plot/plot.py
|
||||
index 77cdeb8c46..e501e74036 100644
|
||||
--- a/src/sage/plot/plot.py
|
||||
+++ b/src/sage/plot/plot.py
|
||||
@@ -2061,7 +2061,7 @@ def _plot(funcs, xrange, parametric=False,
|
||||
plot properly (:trac:`13246`)::
|
||||
|
||||
sage: parametric_plot((x, arcsec(x)), (x, -2, 2))
|
||||
- Graphics object consisting of 1 graphics primitive
|
||||
+ Graphics object consisting of 2 graphics primitives
|
||||
|
||||
"""
|
||||
from sage.plot.colors import Color
|
||||
diff --git a/src/sage/repl/display/formatter.py b/src/sage/repl/display/formatter.py
|
||||
index 8ce2e839d7..948207c95e 100644
|
||||
--- a/src/sage/repl/display/formatter.py
|
||||
+++ b/src/sage/repl/display/formatter.py
|
||||
@@ -25,11 +25,11 @@ generally, all sage expression as an ASCII art object::
|
||||
sage: shell = get_test_shell()
|
||||
sage: shell.run_cell('%display ascii_art')
|
||||
sage: shell.run_cell('integral(x^2/pi^x, x)')
|
||||
- / 2 2 \ -x*log(pi)
|
||||
- -\x *log (pi) + 2*x*log(pi) + 2/*e
|
||||
- ---------------------------------------------
|
||||
- 3
|
||||
- log (pi)
|
||||
+ -x / 2 2 \
|
||||
+ -pi *\x *log (pi) + 2*x*log(pi) + 2/
|
||||
+ --------------------------------------
|
||||
+ 3
|
||||
+ log (pi)
|
||||
sage: shell.run_cell("i = var('i')")
|
||||
sage: shell.run_cell('sum(i*x^i, i, 0, 10)')
|
||||
10 9 8 7 6 5 4 3 2
|
||||
diff --git a/src/sage/rings/asymptotic/asymptotics_multivariate_generating_functions.py b/src/sage/rings/asymptotic/asymptotics_multivariate_generating_functions.py
|
||||
index d8ebbf4f76..8c60f65e99 100644
|
||||
--- a/src/sage/rings/asymptotic/asymptotics_multivariate_generating_functions.py
|
||||
+++ b/src/sage/rings/asymptotic/asymptotics_multivariate_generating_functions.py
|
||||
@@ -151,8 +151,8 @@ A multiple point example (Example 6.5 of [RaWi2012]_)::
|
||||
[(x + 2*y - 1, 1), (2*x + y - 1, 1)])
|
||||
sage: F1 = decomp[1]
|
||||
sage: F1.asymptotics(p, alpha, 2)
|
||||
- (-3*((2*a^2 - 5*a*b + 2*b^2)*r^2 + (a + b)*r + 3)*((1/3)^(-a)*(1/3)^(-b))^r,
|
||||
- (1/3)^(-a)*(1/3)^(-b), -3*(2*a^2 - 5*a*b + 2*b^2)*r^2 - 3*(a + b)*r - 9)
|
||||
+ (-3*((2*a^2 - 5*a*b + 2*b^2)*r^2 + (a + b)*r + 3)*(1/((1/3)^a*(1/3)^b))^r,
|
||||
+ 1/((1/3)^a*(1/3)^b), -3*(2*a^2 - 5*a*b + 2*b^2)*r^2 - 3*(a + b)*r - 9)
|
||||
sage: alpha = [4, 3]
|
||||
sage: decomp = F.asymptotic_decomposition(alpha)
|
||||
sage: F1 = decomp[1]
|
||||
@@ -2159,7 +2159,7 @@ class FractionWithFactoredDenominator(RingElement):
|
||||
sage: p = {x: 1/3, y: 1/3}
|
||||
sage: alpha = (var('a'), var('b'))
|
||||
sage: F.asymptotics_multiple(p, alpha, 2, var('r')) # long time
|
||||
- (3*((1/3)^(-a)*(1/3)^(-b))^r*e^(2/3), (1/3)^(-a)*(1/3)^(-b), 3*e^(2/3))
|
||||
+ (3*(1/((1/3)^a*(1/3)^b))^r*e^(2/3), 1/((1/3)^a*(1/3)^b), 3*e^(2/3))
|
||||
"""
|
||||
from itertools import product
|
||||
from sage.calculus.functions import jacobian
|
||||
diff --git a/src/sage/stats/basic_stats.py b/src/sage/stats/basic_stats.py
|
||||
index 16a268a02c..5fd244e93b 100644
|
||||
--- a/src/sage/stats/basic_stats.py
|
||||
+++ b/src/sage/stats/basic_stats.py
|
||||
@@ -183,7 +183,7 @@ def std(v, bias=False):
|
||||
sage: std([])
|
||||
NaN
|
||||
sage: std([I, sqrt(2), 3/5])
|
||||
- sqrt(1/450*(10*sqrt(2) - 5*I - 3)^2 + 1/450*(5*sqrt(2) - 10*I + 3)^2 + 1/450*(5*sqrt(2) + 5*I - 6)^2)
|
||||
+ 1/15*sqrt(1/2)*sqrt((10*sqrt(2) - 5*I - 3)^2 + (5*sqrt(2) - 10*I + 3)^2 + (5*sqrt(2) + 5*I - 6)^2)
|
||||
sage: std([RIF(1.0103, 1.0103), RIF(2)])
|
||||
0.6998235813403261?
|
||||
sage: import numpy
|
||||
diff --git a/src/sage/symbolic/expression.pyx b/src/sage/symbolic/expression.pyx
|
||||
index ab4c05de3a..60f0dc549a 100644
|
||||
--- a/src/sage/symbolic/expression.pyx
|
||||
+++ b/src/sage/symbolic/expression.pyx
|
||||
@@ -622,7 +622,7 @@ cdef class Expression(CommutativeRingElement):
|
||||
sage: x^(-5)
|
||||
x^(-5)
|
||||
sage: x^(-y)
|
||||
- x^(-y)
|
||||
+ 1/(x^y)
|
||||
sage: 2*x^(-1)
|
||||
2/x
|
||||
sage: i*x
|
||||
@@ -3621,14 +3621,14 @@ cdef class Expression(CommutativeRingElement):
|
||||
sage: repl_dict = {b_0: b_0, b_3: b_1, b_2: b_3, b_1: b_2}
|
||||
sage: P = precomp.substitute(repl_dict)
|
||||
sage: P.expand()
|
||||
- -2^(-b_0)*2^(-b_2)*2^b_3 - 2^b_0*2^(-b_2)*2^b_3 -
|
||||
- 2^(-b_0)*2^b_2*2^b_3 + 2^b_0*2^b_2*2^b_3 - 2*2^(-b_0)*2^(-b_2)
|
||||
- - 2*2^b_0*2^(-b_2) - 2*2^(-b_0)*2^b_2 + 2*2^b_0*2^b_2 +
|
||||
- 2^(-b_0)*2^b_3 + 2^b_0*2^b_3 + 2^(-b_2)*2^b_3 + 2^b_2*2^b_3 +
|
||||
- 2*2^(-b_0) + 2*2^b_0 + 2*2^(-b_2) + 2*2^b_2 - 9*2^b_3 -
|
||||
- 2^(-b_0)*2^(-b_2)/2^b_3 - 2^b_0*2^(-b_2)/2^b_3 -
|
||||
- 2^(-b_0)*2^b_2/2^b_3 + 2^b_0*2^b_2/2^b_3 + 2^(-b_0)/2^b_3 +
|
||||
- 2^b_0/2^b_3 + 2^(-b_2)/2^b_3 + 2^b_2/2^b_3 - 9/2^b_3 - 18
|
||||
+ 2^b_0*2^b_2*2^b_3 + 2*2^b_0*2^b_2 + 2^b_0*2^b_3 + 2^b_2*2^b_3 +
|
||||
+ 2*2^b_0 + 2*2^b_2 - 9*2^b_3 + 2^b_0*2^b_2/2^b_3 -
|
||||
+ 2^b_0*2^b_3/2^b_2 - 2^b_2*2^b_3/2^b_0 - 2*2^b_0/2^b_2 -
|
||||
+ 2*2^b_2/2^b_0 + 2^b_0/2^b_3 + 2^b_2/2^b_3 + 2^b_3/2^b_0 +
|
||||
+ 2^b_3/2^b_2 + 2/2^b_0 + 2/2^b_2 - 2^b_0/(2^b_2*2^b_3) -
|
||||
+ 2^b_2/(2^b_0*2^b_3) - 9/2^b_3 - 2^b_3/(2^b_0*2^b_2) -
|
||||
+ 2/(2^b_0*2^b_2) + 1/(2^b_0*2^b_3) + 1/(2^b_2*2^b_3) -
|
||||
+ 1/(2^b_0*2^b_2*2^b_3) - 18
|
||||
|
||||
sage: _0,b_1,b_2=var('b_0,b_1,b_2')
|
||||
sage: f = 1/27*b_2^2/(2^b_2)^2 + 1/27*b_1^2/(2^b_1)^2 + \
|
||||
@@ -3809,7 +3809,7 @@ cdef class Expression(CommutativeRingElement):
|
||||
|
||||
sage: x = SR.symbol('x', domain='real')
|
||||
sage: (x^3)^(1/3)
|
||||
- (x^3)^(1/3)
|
||||
+ x
|
||||
sage: (x^4)^(1/4)
|
||||
abs(x)
|
||||
sage: (x^8)^(1/4)
|
||||
@@ -3872,7 +3872,7 @@ cdef class Expression(CommutativeRingElement):
|
||||
sage: 2^(x/log(2))
|
||||
e^x
|
||||
sage: 2^(-x^2/2/log(2))
|
||||
- e^(-1/2*x^2)
|
||||
+ 1/e^(1/2*x^2)
|
||||
sage: x^(x/log(x))
|
||||
x^(x/log(x))
|
||||
sage: assume(x > 0)
|
||||
@@ -4816,18 +4816,24 @@ cdef class Expression(CommutativeRingElement):
|
||||
sage: ((x+y)^(x+y)).match(w0^w0)
|
||||
{$0: x + y}
|
||||
sage: t = ((a+b)*(a+c)).match((a+w0)*(a+w1))
|
||||
- sage: t[w0], t[w1]
|
||||
- (c, b)
|
||||
+ sage: set([t[w0], t[w1]]) == set([b, c])
|
||||
+ True
|
||||
sage: ((a+b)*(a+c)).match((w0+b)*(w0+c))
|
||||
{$0: a}
|
||||
sage: t = ((a+b)*(a+c)).match((w0+w1)*(w0+w2))
|
||||
- sage: t[w0], t[w1], t[w2]
|
||||
- (a, c, b)
|
||||
- sage: print(((a+b)*(a+c)).match((w0+w1)*(w1+w2)))
|
||||
- None
|
||||
+ sage: t[w0]
|
||||
+ a
|
||||
+ sage: set([t[w1], t[w2]]) == set([b, c])
|
||||
+ True
|
||||
+ sage: t = ((a+b)*(a+c)).match((w0+w1)*(w1+w2))
|
||||
+ sage: t[w1]
|
||||
+ a
|
||||
+ sage: set([t[w0], t[w2]]) == set([b, c])
|
||||
+ True
|
||||
sage: t = (a*(x+y)+a*z+b).match(a*w0+w1)
|
||||
- sage: t[w0], t[w1]
|
||||
- (x + y, a*z + b)
|
||||
+ sage: s = set([t[w0], t[w1]])
|
||||
+ sage: s == set([x+y, a*z+b]) or s == set([z, a*(x+y)+b])
|
||||
+ True
|
||||
sage: print((a+b+c+d+f+g).match(c))
|
||||
None
|
||||
sage: (a+b+c+d+f+g).has(c)
|
||||
@@ -4836,7 +4842,7 @@ cdef class Expression(CommutativeRingElement):
|
||||
{$0: a + b + d + f + g}
|
||||
sage: (a+b+c+d+f+g).match(c+g+w0)
|
||||
{$0: a + b + d + f}
|
||||
- sage: (a+b).match(a+b+w0)
|
||||
+ sage: (a+b).match(a+b+w0) # known bug
|
||||
{$0: 0}
|
||||
sage: print((a*b^2).match(a^w0*b^w1))
|
||||
None
|
||||
@@ -5009,7 +5015,7 @@ cdef class Expression(CommutativeRingElement):
|
||||
a^3 + b^3 + (x + y)^3
|
||||
|
||||
sage: t.subs(w0 == w0^2)
|
||||
- (x^2 + y^2)^18 + a^16 + b^16
|
||||
+ a^8 + b^8 + (x^2 + y^2)^6
|
||||
|
||||
sage: t.subs(a == b, b == c)
|
||||
(x + y)^3 + b^2 + c^2
|
||||
@@ -8392,9 +8398,13 @@ cdef class Expression(CommutativeRingElement):
|
||||
sage: SR(I).arctan2(1)
|
||||
arctan2(I, 1)
|
||||
sage: SR(CDF(0,1)).arctan2(1)
|
||||
- NaN + +infinity*I
|
||||
- sage: SR(1).arctan2(CDF(0,1)) # known bug
|
||||
- 0.7853981633974484 - 19.012501686914433*I
|
||||
+ Traceback (most recent call last):
|
||||
+ ...
|
||||
+ ValueError: power::eval(): division by zero
|
||||
+ sage: SR(1).arctan2(CDF(0,1))
|
||||
+ Traceback (most recent call last):
|
||||
+ ...
|
||||
+ ValueError: power::eval(): division by zero
|
||||
|
||||
sage: arctan2(0,oo)
|
||||
0
|
||||
@@ -8656,7 +8666,7 @@ cdef class Expression(CommutativeRingElement):
|
||||
1/2*I*pi
|
||||
sage: SR(1/2).arccosh()
|
||||
arccosh(1/2)
|
||||
- sage: SR(CDF(1/2)).arccosh() # rel tol 1e-15
|
||||
+ sage: SR(CDF(1/2)).arccosh() # rel tol 1e-15
|
||||
1.0471975511965976*I
|
||||
sage: maxima('acosh(0.5)')
|
||||
1.04719755119659...*%i
|
||||
@@ -11687,7 +11697,7 @@ cdef class Expression(CommutativeRingElement):
|
||||
sage: a.solve(t)
|
||||
[]
|
||||
sage: b = a.canonicalize_radical(); b
|
||||
- -23040.0*(-2.0*e^(1800*t) + 25.0*e^(900*t) - 32.0)*e^(-2400*t)
|
||||
+ (46080.0*e^(1800*t) - 576000.0*e^(900*t) + 737280.0)*e^(-2400*t)
|
||||
sage: b.solve(t)
|
||||
[]
|
||||
sage: b.solve(t, to_poly_solve=True)
|
||||
@@ -12163,14 +12173,14 @@ cdef class Expression(CommutativeRingElement):
|
||||
|
||||
sage: (n,k,j)=var('n,k,j')
|
||||
sage: sum(binomial(n,k)*binomial(k-1,j)*(-1)**(k-1-j),k,j+1,n)
|
||||
- -(-1)^(-j)*sum((-1)^k*binomial(k - 1, j)*binomial(n, k), k, j + 1, n)
|
||||
+ -(-1)^j*sum((-1)^k*binomial(k - 1, j)*binomial(n, k), k, j + 1, n)
|
||||
sage: assume(j>-1)
|
||||
sage: sum(binomial(n,k)*binomial(k-1,j)*(-1)**(k-1-j),k,j+1,n)
|
||||
1
|
||||
sage: forget()
|
||||
sage: assume(n>=j)
|
||||
sage: sum(binomial(n,k)*binomial(k-1,j)*(-1)**(k-1-j),k,j+1,n)
|
||||
- -(-1)^(-j)*sum((-1)^k*binomial(k - 1, j)*binomial(n, k), k, j + 1, n)
|
||||
+ -(-1)^j*sum((-1)^k*binomial(k - 1, j)*binomial(n, k), k, j + 1, n)
|
||||
sage: forget()
|
||||
sage: assume(j==-1)
|
||||
sage: sum(binomial(n,k)*binomial(k-1,j)*(-1)**(k-1-j),k,j+1,n)
|
||||
@@ -12178,7 +12188,7 @@ cdef class Expression(CommutativeRingElement):
|
||||
sage: forget()
|
||||
sage: assume(j<-1)
|
||||
sage: sum(binomial(n,k)*binomial(k-1,j)*(-1)**(k-1-j),k,j+1,n)
|
||||
- -(-1)^(-j)*sum((-1)^k*binomial(k - 1, j)*binomial(n, k), k, j + 1, n)
|
||||
+ -(-1)^j*sum((-1)^k*binomial(k - 1, j)*binomial(n, k), k, j + 1, n)
|
||||
sage: forget()
|
||||
|
||||
Check that :trac:`16176` is fixed::
|
||||
diff --git a/src/sage/symbolic/relation.py b/src/sage/symbolic/relation.py
|
||||
index da6f0eef42..4bd65ef572 100644
|
||||
--- a/src/sage/symbolic/relation.py
|
||||
+++ b/src/sage/symbolic/relation.py
|
||||
@@ -895,7 +895,7 @@ def solve(f, *args, **kwds):
|
||||
sage: (r[0][x], r[0][y])
|
||||
(2*lambert_w(1/2), 1)
|
||||
sage: solve(-2*x**3 + 4*x**2 - 2*x + 6 > 0, x, algorithm='sympy')
|
||||
- [x < (1/6*sqrt(77) + 79/54)^(1/3) + 1/9/(1/6*sqrt(77) + 79/54)^(1/3) + 2/3]
|
||||
+ [x < 1/3*(1/2)^(1/3)*(9*sqrt(77) + 79)^(1/3) + 2/3*(1/2)^(2/3)/(9*sqrt(77) + 79)^(1/3) + 2/3]
|
||||
sage: solve(sqrt(2*x^2 - 7) - (3 - x),x,algorithm='sympy')
|
||||
[x == -8, x == 2]
|
||||
sage: solve(sqrt(2*x + 9) - sqrt(x + 1) - sqrt(x + 4),x,algorithm='sympy')
|
@ -1,40 +0,0 @@
|
||||
diff --git a/src/sage/tests/py3_syntax.py b/src/sage/tests/py3_syntax.py
|
||||
index e564860b48..86ab3725f9 100644
|
||||
--- a/src/sage/tests/py3_syntax.py
|
||||
+++ b/src/sage/tests/py3_syntax.py
|
||||
@@ -179,15 +179,30 @@ class Python3SyntaxTest(SortedDirectoryWalkerABC):
|
||||
sage: py3_syntax = Python3SyntaxTest()
|
||||
sage: py3_syntax.test(src.name)
|
||||
Invalid Python 3 syntax found:
|
||||
- File "...py", line 1
|
||||
- print "invalid print statement"
|
||||
- ^
|
||||
- SyntaxError: Missing parentheses in call to 'print'
|
||||
+ Missing parentheses in call to 'print'...
|
||||
sage: os.unlink(src.name)
|
||||
"""
|
||||
+
|
||||
+ # compile all given files in memory, printing all errors
|
||||
+ # inspired by the py_compile module (but without writing to file)
|
||||
+ script = """
|
||||
+import sys
|
||||
+import importlib.machinery
|
||||
+rv = 0
|
||||
+for file in sys.argv[1:]:
|
||||
+ loader = importlib.machinery.SourceFileLoader('<sage_test>', file)
|
||||
+ source_bytes = loader.get_data(file)
|
||||
+ try:
|
||||
+ code = loader.source_to_code(source_bytes, file)
|
||||
+ except Exception as err:
|
||||
+ print(err)
|
||||
+ rv = 1
|
||||
+sys.exit(rv)
|
||||
+"""
|
||||
cmd = [
|
||||
'python3',
|
||||
- '-m', 'py_compile'
|
||||
+ '-c',
|
||||
+ script,
|
||||
] + list(filenames)
|
||||
process = subprocess.Popen(
|
||||
cmd,
|
@ -1,31 +0,0 @@
|
||||
From 7419e0246230594ebfd5e7a2fe6b80d67abfc98a Mon Sep 17 00:00:00 2001
|
||||
From: Jeroen Demeyer <jdemeyer@cage.ugent.be>
|
||||
Date: Tue, 20 Mar 2018 10:40:41 +0100
|
||||
Subject: Fix sphinxify doctests
|
||||
|
||||
---
|
||||
sagenb/misc/sphinxify.py | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/sagenb/misc/sphinxify.py b/sagenb/misc/sphinxify.py
|
||||
index 4f76d41..15623d9 100644
|
||||
--- a/sagenb/misc/sphinxify.py
|
||||
+++ b/sagenb/misc/sphinxify.py
|
||||
@@ -47,11 +47,11 @@ def sphinxify(docstring, format='html'):
|
||||
|
||||
sage: from sage.misc.sphinxify import sphinxify
|
||||
sage: sphinxify('A test')
|
||||
- '...<div class="docstring">\n \n <p>A test</p>\n\n\n</div>'
|
||||
+ '<div class="docstring">\n \n <p>A test</p>\n\n\n</div>'
|
||||
sage: sphinxify('**Testing**\n`monospace`')
|
||||
- '...<div class="docstring"...<strong>Testing</strong>\n<span class="math"...</p>\n\n\n</div>'
|
||||
+ '<div class="docstring"...<strong>Testing</strong>\n<span class="math notranslate"...</p>\n\n\n</div>'
|
||||
sage: sphinxify('`x=y`')
|
||||
- '...<div class="docstring">\n \n <p><span class="math">x=y</span></p>\n\n\n</div>'
|
||||
+ '<div class="docstring">\n \n <p><span class="math notranslate">x=y</span></p>\n\n\n</div>'
|
||||
sage: sphinxify('`x=y`', format='text')
|
||||
'x=y\n'
|
||||
sage: sphinxify(':math:`x=y`', format='text')
|
||||
--
|
||||
cgit v1.0-1-gd88e
|
||||
|
@ -0,0 +1,274 @@
|
||||
diff --git a/src/sage/interfaces/singular.py b/src/sage/interfaces/singular.py
|
||||
index 9d65c9fa6c..a028bbe719 100644
|
||||
--- a/src/sage/interfaces/singular.py
|
||||
+++ b/src/sage/interfaces/singular.py
|
||||
@@ -654,7 +654,7 @@ class Singular(ExtraTabCompletion, Expect):
|
||||
|
||||
s = Expect.eval(self, x, **kwds)
|
||||
|
||||
- if s.find("error") != -1 or s.find("Segment fault") != -1:
|
||||
+ if s.find("error occurred") != -1 or s.find("Segment fault") != -1:
|
||||
raise SingularError('Singular error:\n%s'%s)
|
||||
|
||||
if get_verbose() > 0:
|
||||
@@ -1079,7 +1079,7 @@ class Singular(ExtraTabCompletion, Expect):
|
||||
sage: S = singular.ring('real', '(a,b)', 'lp')
|
||||
sage: singular.current_ring()
|
||||
polynomial ring, over a field, global ordering
|
||||
- // coefficients: float
|
||||
+ // coefficients: Float()
|
||||
// number of vars : 2
|
||||
// block 1 : ordering lp
|
||||
// : names a b
|
||||
@@ -1157,7 +1157,7 @@ class Singular(ExtraTabCompletion, Expect):
|
||||
sage: singular._tab_completion()
|
||||
['exteriorPower',
|
||||
...
|
||||
- 'flintZ']
|
||||
+ 'crossprod']
|
||||
"""
|
||||
p = re.compile("// *([a-z0-9A-Z_]*).*") #compiles regular expression
|
||||
proclist = self.eval("listvar(proc)").splitlines()
|
||||
@@ -1183,7 +1183,7 @@ class Singular(ExtraTabCompletion, Expect):
|
||||
EXAMPLES::
|
||||
|
||||
sage: singular.version()
|
||||
- "Singular ... version 4.1.0 ...
|
||||
+ "Singular ... version 4...
|
||||
"""
|
||||
return singular_version()
|
||||
|
||||
@@ -1562,7 +1562,7 @@ class SingularElement(ExtraTabCompletion, ExpectElement):
|
||||
elif charstr[0] in ['0', 'QQ']:
|
||||
from sage.all import QQ
|
||||
br = QQ
|
||||
- elif charstr[0]=='real':
|
||||
+ elif charstr[0].startswith('Float'):
|
||||
from sage.all import RealField, ceil, log
|
||||
prec = singular.eval('ringlist(basering)[1][2][1]')
|
||||
br = RealField(ceil((ZZ(prec)+1)/log(2,10)))
|
||||
@@ -1750,7 +1750,7 @@ class SingularElement(ExtraTabCompletion, ExpectElement):
|
||||
|
||||
# Singular 4 puts parentheses around floats and sign outside them
|
||||
charstr = self.parent().eval('charstr(basering)').split(',',1)
|
||||
- if charstr[0] in ['real', 'complex']:
|
||||
+ if charstr[0]=='complex' or charstr[0].startswith('Float'):
|
||||
for i in range(coeff_start, 2 * coeff_start):
|
||||
singular_poly_list[i] = singular_poly_list[i].replace('(','').replace(')','')
|
||||
|
||||
@@ -1992,7 +1992,7 @@ class SingularElement(ExtraTabCompletion, ExpectElement):
|
||||
sage: S = singular.ring('real', '(a,b)', 'lp')
|
||||
sage: singular.current_ring()
|
||||
polynomial ring, over a field, global ordering
|
||||
- // coefficients: float
|
||||
+ // coefficients: Float()
|
||||
// number of vars : 2
|
||||
// block 1 : ordering lp
|
||||
// : names a b
|
||||
@@ -2072,7 +2072,7 @@ class SingularElement(ExtraTabCompletion, ExpectElement):
|
||||
sage: R._tab_completion()
|
||||
['exteriorPower',
|
||||
...
|
||||
- 'flintZ']
|
||||
+ 'crossprod']
|
||||
"""
|
||||
return self.parent()._tab_completion()
|
||||
|
||||
@@ -2358,7 +2358,7 @@ def singular_version():
|
||||
EXAMPLES::
|
||||
|
||||
sage: singular.version()
|
||||
- "Singular ... version 4.1.0 ...
|
||||
+ "Singular ... version 4...
|
||||
"""
|
||||
return singular.eval('system("--version");')
|
||||
|
||||
diff --git a/src/sage/libs/singular/decl.pxd b/src/sage/libs/singular/decl.pxd
|
||||
index 4b658c4807..d863740419 100644
|
||||
--- a/src/sage/libs/singular/decl.pxd
|
||||
+++ b/src/sage/libs/singular/decl.pxd
|
||||
@@ -170,7 +170,7 @@ cdef extern from "singular/Singular/libsingular.h":
|
||||
|
||||
int n_NumberOfParameters(const n_Procs_s* r)
|
||||
|
||||
- ctypedef struct poly "polyrec":
|
||||
+ ctypedef struct poly "spolyrec":
|
||||
poly *next
|
||||
number *coef
|
||||
unsigned long exp[1]
|
||||
@@ -630,9 +630,13 @@ cdef extern from "singular/Singular/libsingular.h":
|
||||
# return p*q, destroys p and q
|
||||
poly *p_Mult_q(poly *p, poly *q, ring *r)
|
||||
|
||||
+ # polynomial division, ignoring the rest
|
||||
+ # via singclap_pdivide resp. idLift, destroys p,q
|
||||
+ poly *p_Divide(poly *p, poly *q, ring *r)
|
||||
+
|
||||
# divide monomial p by monomial q, p,q const
|
||||
|
||||
- poly *pDivide(poly *p,poly *q)
|
||||
+ poly *pMDivide(poly *p,poly *q)
|
||||
|
||||
# return the i-th power of p; p destroyed, requires global ring
|
||||
|
||||
diff --git a/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx b/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
|
||||
index 2a8d9ae021..aeff53af6c 100644
|
||||
--- a/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
|
||||
+++ b/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
|
||||
@@ -190,8 +190,8 @@ from sage.libs.singular.decl cimport (
|
||||
n_IsUnit, n_Invers,
|
||||
p_ISet, rChangeCurrRing, p_Copy, p_Init, p_SetCoeff, p_Setm, p_SetExp, p_Add_q,
|
||||
p_NSet, p_GetCoeff, p_Delete, p_GetExp, pNext, rRingVar, omAlloc0, omStrDup,
|
||||
- omFree, pDivide, p_SetCoeff0, n_Init, p_DivisibleBy, pLcm, p_LmDivisibleBy,
|
||||
- pDivide, p_IsConstant, p_ExpVectorEqual, p_String, p_LmInit, n_Copy,
|
||||
+ omFree, pMDivide, p_Divide, p_SetCoeff0, n_Init, p_DivisibleBy, pLcm, p_LmDivisibleBy,
|
||||
+ pMDivide, p_IsConstant, p_ExpVectorEqual, p_String, p_LmInit, n_Copy,
|
||||
p_IsUnit, p_Series, p_Head, idInit, fast_map_common_subexp, id_Delete,
|
||||
p_IsHomogeneous, p_Homogen, p_Totaldegree,pLDeg1_Totaldegree, singclap_pdivide, singclap_factorize,
|
||||
idLift, IDELEMS, On, Off, SW_USE_CHINREM_GCD, SW_USE_EZGCD,
|
||||
@@ -1693,8 +1693,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
|
||||
if not g._poly:
|
||||
raise ZeroDivisionError
|
||||
|
||||
- if r!=currRing: rChangeCurrRing(r) # pDivide
|
||||
- res = pDivide(f._poly, g._poly)
|
||||
+ if r!=currRing: rChangeCurrRing(r) # pMDivide
|
||||
+ res = pMDivide(f._poly, g._poly)
|
||||
if coeff:
|
||||
if r.cf.type == n_unknown or r.cf.cfDivBy(p_GetCoeff(f._poly, r), p_GetCoeff(g._poly, r), r.cf):
|
||||
n = r.cf.cfDiv( p_GetCoeff(f._poly, r) , p_GetCoeff(g._poly, r), r.cf)
|
||||
@@ -1853,8 +1853,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
|
||||
and (<MPolynomial_libsingular>g) \
|
||||
and g.parent() is self \
|
||||
and p_LmDivisibleBy((<MPolynomial_libsingular>g)._poly, m, r):
|
||||
- if r!=currRing: rChangeCurrRing(r) # pDivide
|
||||
- flt = pDivide(f._poly, (<MPolynomial_libsingular>g)._poly)
|
||||
+ if r!=currRing: rChangeCurrRing(r) # pMDivide
|
||||
+ flt = pMDivide(f._poly, (<MPolynomial_libsingular>g)._poly)
|
||||
#p_SetCoeff(flt, n_Div( p_GetCoeff(f._poly, r) , p_GetCoeff((<MPolynomial_libsingular>g)._poly, r), r), r)
|
||||
p_SetCoeff(flt, n_Init(1, r), r)
|
||||
return new_MP(self,flt), g
|
||||
@@ -4023,16 +4023,6 @@ cdef class MPolynomial_libsingular(MPolynomial):
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
NotImplementedError: Division of multivariate polynomials over non fields by non-monomials not implemented.
|
||||
-
|
||||
- TESTS::
|
||||
-
|
||||
- sage: P.<x,y> = ZZ[]
|
||||
- sage: p = 3*(-x^8*y^2 - x*y^9 + 6*x^8*y + 17*x^2*y^6 - x^3*y^2)
|
||||
- sage: q = 7*(x^2 + x*y + y^2 + 1)
|
||||
- sage: p*q//q == p
|
||||
- True
|
||||
- sage: p*q//p == q
|
||||
- True
|
||||
"""
|
||||
cdef MPolynomialRing_libsingular parent = self._parent
|
||||
cdef ring *r = self._parent_ring
|
||||
@@ -4052,13 +4042,18 @@ cdef class MPolynomial_libsingular(MPolynomial):
|
||||
_right = <MPolynomial_libsingular>right
|
||||
|
||||
if r.cf.type != n_unknown:
|
||||
+ if r.cf.type == n_Z:
|
||||
+ P = parent.change_ring(RationalField())
|
||||
+ f = P(self)//P(right)
|
||||
+ CM = list(f)
|
||||
+ return parent(sum([c.floor()*m for c,m in CM]))
|
||||
if _right.is_monomial():
|
||||
p = _self._poly
|
||||
quo = p_ISet(0,r)
|
||||
- if r != currRing: rChangeCurrRing(r) # pDivide
|
||||
+ if r != currRing: rChangeCurrRing(r) # pMDivide
|
||||
while p:
|
||||
if p_DivisibleBy(_right._poly, p, r):
|
||||
- temp = pDivide(p, _right._poly)
|
||||
+ temp = pMDivide(p, _right._poly)
|
||||
p_SetCoeff0(temp, n_Copy(p_GetCoeff(p, r), r), r)
|
||||
quo = p_Add_q(quo, temp, r)
|
||||
p = pNext(p)
|
||||
@@ -4794,6 +4789,8 @@ cdef class MPolynomial_libsingular(MPolynomial):
|
||||
sage: p = -x*y + x*z + 54*x - 2
|
||||
sage: (5*p^2).lcm(3*p) == 15*p^2
|
||||
True
|
||||
+ sage: lcm(2*x,2*x*y)
|
||||
+ 2*x*y
|
||||
"""
|
||||
cdef ring *_ring = self._parent_ring
|
||||
cdef poly *ret
|
||||
@@ -4821,9 +4818,7 @@ cdef class MPolynomial_libsingular(MPolynomial):
|
||||
if _ring!=currRing: rChangeCurrRing(_ring) # singclap_gcd
|
||||
gcd = singclap_gcd(p_Copy(self._poly, _ring), p_Copy(_g._poly, _ring), _ring )
|
||||
prod = pp_Mult_qq(self._poly, _g._poly, _ring)
|
||||
- ret = singclap_pdivide(prod , gcd , _ring)
|
||||
- p_Delete(&prod, _ring)
|
||||
- p_Delete(&gcd, _ring)
|
||||
+ ret = p_Divide(prod, gcd, _ring)
|
||||
if count >= 20:
|
||||
sig_off()
|
||||
return new_MP(self._parent, ret)
|
||||
@@ -4866,7 +4861,7 @@ cdef class MPolynomial_libsingular(MPolynomial):
|
||||
sage: f.quo_rem(y)
|
||||
(2*x^2, x + 1)
|
||||
sage: f.quo_rem(3*x)
|
||||
- (2*x*y + 1, -4*x^2*y - 2*x + 1)
|
||||
+ (0, 2*x^2*y + x + 1)
|
||||
|
||||
TESTS::
|
||||
|
||||
@@ -4888,7 +4883,7 @@ cdef class MPolynomial_libsingular(MPolynomial):
|
||||
if right.is_zero():
|
||||
raise ZeroDivisionError
|
||||
|
||||
- if not self._parent._base.is_field() and not is_IntegerRing(self._parent._base):
|
||||
+ if not self._parent._base.is_field():
|
||||
py_quo = self//right
|
||||
py_rem = self - right*py_quo
|
||||
return py_quo, py_rem
|
||||
diff --git a/src/sage/rings/polynomial/plural.pyx b/src/sage/rings/polynomial/plural.pyx
|
||||
index d5439f7f08..ad20ebcca0 100644
|
||||
--- a/src/sage/rings/polynomial/plural.pyx
|
||||
+++ b/src/sage/rings/polynomial/plural.pyx
|
||||
@@ -998,7 +998,7 @@ cdef class NCPolynomialRing_plural(Ring):
|
||||
if not g._poly:
|
||||
raise ZeroDivisionError
|
||||
|
||||
- res = pDivide(f._poly,g._poly)
|
||||
+ res = pMDivide(f._poly,g._poly)
|
||||
if coeff:
|
||||
if (r.cf.type == n_unknown) or r.cf.cfDivBy(p_GetCoeff(f._poly, r), p_GetCoeff(g._poly, r), r.cf):
|
||||
n = r.cf.cfDiv( p_GetCoeff(f._poly, r) , p_GetCoeff(g._poly, r), r.cf)
|
||||
@@ -1193,7 +1193,7 @@ cdef class NCPolynomialRing_plural(Ring):
|
||||
if isinstance(g, NCPolynomial_plural) \
|
||||
and (<NCPolynomial_plural>g) \
|
||||
and p_LmDivisibleBy((<NCPolynomial_plural>g)._poly, m, r):
|
||||
- flt = pDivide(f._poly, (<NCPolynomial_plural>g)._poly)
|
||||
+ flt = pMDivide(f._poly, (<NCPolynomial_plural>g)._poly)
|
||||
#p_SetCoeff(flt, n_Div( p_GetCoeff(f._poly, r) , p_GetCoeff((<NCPolynomial_plural>g)._poly, r), r), r)
|
||||
p_SetCoeff(flt, n_Init(1, r), r)
|
||||
return new_NCP(self,flt), g
|
||||
diff --git a/src/sage/rings/polynomial/polynomial_singular_interface.py b/src/sage/rings/polynomial/polynomial_singular_interface.py
|
||||
index 9331169f8b..f753610fd3 100644
|
||||
--- a/src/sage/rings/polynomial/polynomial_singular_interface.py
|
||||
+++ b/src/sage/rings/polynomial/polynomial_singular_interface.py
|
||||
@@ -81,8 +81,8 @@ class PolynomialRing_singular_repr:
|
||||
sage: R.<x,y> = PolynomialRing(CC)
|
||||
sage: singular(R)
|
||||
polynomial ring, over a field, global ordering
|
||||
- // coefficients: float[I](complex:15 digits, additional 0 digits)/(I^2+1)
|
||||
- // number of vars : 2
|
||||
+ // coefficients: real[I](complex:15 digits, additional 0 digits)/(I^2+1)
|
||||
+ // number of vars : 2
|
||||
// block 1 : ordering dp
|
||||
// : names x y
|
||||
// block 2 : ordering C
|
||||
@@ -90,8 +90,8 @@ class PolynomialRing_singular_repr:
|
||||
sage: R.<x,y> = PolynomialRing(RealField(100))
|
||||
sage: singular(R)
|
||||
polynomial ring, over a field, global ordering
|
||||
- // coefficients: float
|
||||
- // number of vars : 2
|
||||
+ // coefficients: Float()
|
||||
+ // number of vars : 2
|
||||
// block 1 : ordering dp
|
||||
// : names x y
|
||||
// block 2 : ordering C
|
@ -1,62 +0,0 @@
|
||||
diff --git a/src/bin/sage b/src/bin/sage
|
||||
index 397f30cbed..3fc473c343 100755
|
||||
--- a/src/bin/sage
|
||||
+++ b/src/bin/sage
|
||||
@@ -980,8 +980,11 @@ if [ "$1" = '-rsyncdist' -o "$1" = "--rsyncdist" ]; then
|
||||
fi
|
||||
|
||||
if [ "$1" = "-docbuild" -o "$1" = "--docbuild" ]; then
|
||||
+ # Redirect stdin from /dev/null. This helps with running TeX which
|
||||
+ # tends to ask interactive questions if something goes wrong. These
|
||||
+ # cause the build to hang. If stdin is /dev/null, TeX just aborts.
|
||||
shift
|
||||
- exec sage-python23 -m "sage_setup.docbuild" "$@"
|
||||
+ exec sage-python23 -m sage_setup.docbuild "$@" </dev/null
|
||||
fi
|
||||
|
||||
if [ "$1" = '-gdb' -o "$1" = "--gdb" ]; then
|
||||
diff --git a/src/doc/common/conf.py b/src/doc/common/conf.py
|
||||
index 25f94f7b7d..3f07474d9b 100644
|
||||
--- a/src/doc/common/conf.py
|
||||
+++ b/src/doc/common/conf.py
|
||||
@@ -627,7 +627,7 @@ def call_intersphinx(app, env, node, contnode):
|
||||
sage: for line in open(thematic_index).readlines():
|
||||
....: if "padics" in line:
|
||||
....: sys.stdout.write(line)
|
||||
- <li><a class="reference external" href="../reference/padics/sage/rings/padics/tutorial.html#sage-rings-padics-tutorial" title="(in Sage Reference Manual: p-Adics ...)"><span>Introduction to the -adics</span></a></li>
|
||||
+ <li><a class="reference external" href="../reference/padics/sage/rings/padics/tutorial.html#sage-rings-padics-tutorial" title="(in Sage Reference Manual: p-Adics v...)"><span>Introduction to the -adics</span></a></li>
|
||||
"""
|
||||
debug_inf(app, "???? Trying intersphinx for %s"%node['reftarget'])
|
||||
builder = app.builder
|
||||
diff --git a/src/sage/misc/sphinxify.py b/src/sage/misc/sphinxify.py
|
||||
index 4f76d4113a..8f426b5989 100644
|
||||
--- a/src/sage/misc/sphinxify.py
|
||||
+++ b/src/sage/misc/sphinxify.py
|
||||
@@ -47,11 +47,11 @@ def sphinxify(docstring, format='html'):
|
||||
|
||||
sage: from sage.misc.sphinxify import sphinxify
|
||||
sage: sphinxify('A test')
|
||||
- '...<div class="docstring">\n \n <p>A test</p>\n\n\n</div>'
|
||||
+ '<div class="docstring">\n \n <p>A test</p>\n\n\n</div>'
|
||||
sage: sphinxify('**Testing**\n`monospace`')
|
||||
- '...<div class="docstring"...<strong>Testing</strong>\n<span class="math"...</p>\n\n\n</div>'
|
||||
+ '<div class="docstring"...<strong>Testing</strong>\n<span class="math...</p>\n\n\n</div>'
|
||||
sage: sphinxify('`x=y`')
|
||||
- '...<div class="docstring">\n \n <p><span class="math">x=y</span></p>\n\n\n</div>'
|
||||
+ '<div class="docstring">\n \n <p><span class="math notranslate nohighlight">x=y</span></p>\n\n\n</div>'
|
||||
sage: sphinxify('`x=y`', format='text')
|
||||
'x=y\n'
|
||||
sage: sphinxify(':math:`x=y`', format='text')
|
||||
diff --git a/src/sage_setup/docbuild/sphinxbuild.py b/src/sage_setup/docbuild/sphinxbuild.py
|
||||
index fda76a4174..d3413239dd 100644
|
||||
--- a/src/sage_setup/docbuild/sphinxbuild.py
|
||||
+++ b/src/sage_setup/docbuild/sphinxbuild.py
|
||||
@@ -207,7 +207,7 @@ def runsphinx():
|
||||
try:
|
||||
sys.stdout = SageSphinxLogger(sys.stdout, os.path.basename(output_dir))
|
||||
sys.stderr = SageSphinxLogger(sys.stderr, os.path.basename(output_dir))
|
||||
- sphinx.cmdline.main(sys.argv)
|
||||
+ sphinx.cmdline.main(sys.argv[1:])
|
||||
finally:
|
||||
sys.stdout = saved_stdout
|
||||
sys.stderr = saved_stderr
|
@ -0,0 +1,46 @@
|
||||
commit f02714d4aea80e17cb8df62bab75d7c1a1b61a8e
|
||||
Author: Timo Kaufmann <timokau@zoho.com>
|
||||
Date: Mon Jul 9 18:26:18 2018 +0200
|
||||
|
||||
Don't attempt to create dirs when showing pkg info
|
||||
|
||||
The script dir cannot be assumed to be writeable after installation.
|
||||
|
||||
diff --git a/build/bin/sage-spkg b/build/bin/sage-spkg
|
||||
index f3e02aeae5..190d558ad1 100755
|
||||
--- a/build/bin/sage-spkg
|
||||
+++ b/build/bin/sage-spkg
|
||||
@@ -167,14 +167,6 @@ if [ -z "$SAGE_BUILD_DIR" ]; then
|
||||
export SAGE_BUILD_DIR="$SAGE_LOCAL/var/tmp/sage/build"
|
||||
fi
|
||||
|
||||
-for dir in "$SAGE_SPKG_INST" "$SAGE_SPKG_SCRIPTS"; do
|
||||
- mkdir -p "$dir"
|
||||
- if [ $? -ne 0 ]; then
|
||||
- error_msg "Error creating directory $dir"
|
||||
- exit 1
|
||||
- fi
|
||||
-done
|
||||
-
|
||||
|
||||
# Remove '.' from PYTHONPATH, which may also come from SAGE_PATH, to avoid
|
||||
# trouble with setuptools / easy_install (cf. #10192, #10176):
|
||||
@@ -563,11 +555,13 @@ fi
|
||||
# Setup directories
|
||||
##################################################################
|
||||
|
||||
-mkdir -p "$SAGE_BUILD_DIR"
|
||||
-if [ $? -ne 0 ]; then
|
||||
- error_msg "Error creating directory $SAGE_BUILD_DIR"
|
||||
- exit 1
|
||||
-fi
|
||||
+for dir in "$SAGE_SPKG_INST" "$SAGE_SPKG_SCRIPTS" "$SAGE_BUILD_DIR"; do
|
||||
+ mkdir -p "$dir"
|
||||
+ if [ $? -ne 0 ]; then
|
||||
+ error_msg "Error creating directory $dir"
|
||||
+ exit 1
|
||||
+ fi
|
||||
+done
|
||||
|
||||
# Trac #5852: check write permissions
|
||||
if [ ! -w "$SAGE_BUILD_DIR" ]; then
|
@ -1,13 +0,0 @@
|
||||
diff --git a/src/sage/misc/package.py b/src/sage/misc/package.py
|
||||
index 7ff4f21675..1d72168833 100644
|
||||
--- a/src/sage/misc/package.py
|
||||
+++ b/src/sage/misc/package.py
|
||||
@@ -350,7 +350,7 @@ def package_versions(package_type, local=False):
|
||||
sage: 'gap' in std
|
||||
True
|
||||
sage: std['zn_poly']
|
||||
- ('0.9.p11', '0.9.p11')
|
||||
+ ('0.9', '0.9.p11')
|
||||
"""
|
||||
return {pkg['name']: (pkg['installed_version'], pkg['remote_version']) for pkg in list_packages(package_type, local=local).values()}
|
||||
|
@ -3,17 +3,20 @@
|
||||
, fetchpatch
|
||||
}:
|
||||
stdenv.mkDerivation rec {
|
||||
version = "8.2";
|
||||
version = "8.3";
|
||||
name = "sage-src-${version}";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "sagemath";
|
||||
repo = "sage";
|
||||
rev = version;
|
||||
sha256 = "0d7vc16s7dj23an2cb8v5bhbnc6nsw20qhnnxr0xh8qg629027b8";
|
||||
sha256 = "0mbm99m5xry21xpi4q3q96gx392liwbifywf5awvl0j85a7rkfyx";
|
||||
};
|
||||
|
||||
nixPatches = [
|
||||
# https://trac.sagemath.org/ticket/25809
|
||||
./patches/spkg-scripts.patch
|
||||
|
||||
# https://trac.sagemath.org/ticket/25309
|
||||
(fetchpatch {
|
||||
name = "spkg-paths.patch";
|
||||
@ -26,14 +29,7 @@ stdenv.mkDerivation rec {
|
||||
sha256 = "14s50yg3hpw9cp3v581dx7zfmpm2j972im7x30iwki8k45mjvk3i";
|
||||
})
|
||||
|
||||
# https://trac.sagemath.org/ticket/25328
|
||||
# https://trac.sagemath.org/ticket/25546
|
||||
# https://trac.sagemath.org/ticket/25722
|
||||
(fetchpatch {
|
||||
name = "install-jupyter-kernel-in-correct-prefix.patch";
|
||||
url = "https://git.sagemath.org/sage.git/patch?id=72167b98e3f64326df6b2c78785df25539472fcc";
|
||||
sha256 = "0pscnjhm7r2yr2rxnv4kkkq626vwaja720lixa3m3w9rwlxll5a7";
|
||||
})
|
||||
./patches/test-in-tmpdir.patch
|
||||
|
||||
# https://trac.sagemath.org/ticket/25358
|
||||
@ -43,27 +39,13 @@ stdenv.mkDerivation rec {
|
||||
sha256 = "1hhannz7xzprijakn2w2d0rhd5zv2zikik9p51i87bas3nc658f7";
|
||||
})
|
||||
|
||||
# https://trac.sagemath.org/ticket/25357 rebased on 8.2
|
||||
./patches/python3-syntax-without-write.patch
|
||||
|
||||
# https://trac.sagemath.org/ticket/25314
|
||||
(fetchpatch {
|
||||
name = "make-qepcad-test-optional.patch";
|
||||
url = "https://git.sagemath.org/sage.git/patch/?h=fe294c58bd035ef427e268901d54a6faa0058138";
|
||||
sha256 = "003d5baf5c0n5rfg010ijwkwz8kg0s414cxwczs2vhdayxdixbix";
|
||||
})
|
||||
|
||||
# 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
|
||||
# have to keep this around until 2.7 is deprecated.
|
||||
# https://trac.sagemath.org/ticket/25316
|
||||
# https://github.com/python/cpython/pull/7476
|
||||
./patches/python-5755-hotpatch.patch
|
||||
|
||||
# https://trac.sagemath.org/ticket/25354
|
||||
# https://trac.sagemath.org/ticket/25531
|
||||
(fetchpatch {
|
||||
name = "cysignals-include.patch";
|
||||
url = "https://git.sagemath.org/sage.git/patch/?h=28778bd25a37c80884d2b24e0683fb2989300cef";
|
||||
sha256 = "0fiiiw91pgs8avm9ggj8hb64bhqzl6jcw094d94nhirmh8w2jmc5";
|
||||
})
|
||||
|
||||
# https://trac.sagemath.org/ticket/25315
|
||||
(fetchpatch {
|
||||
name = "find-libraries-in-dyld-library-path.patch";
|
||||
@ -71,16 +53,13 @@ stdenv.mkDerivation rec {
|
||||
sha256 = "1k3afq3qlzmgqwx6rzs5wv153vv9dsf5rk8pi61g57l3r3npbjmc";
|
||||
})
|
||||
|
||||
# Pari upstream has since accepted a patch, so this patch won't be necessary once sage updates pari.
|
||||
# https://trac.sagemath.org/ticket/25312
|
||||
./patches/pari-stackwarn.patch
|
||||
|
||||
# https://trac.sagemath.org/ticket/25311
|
||||
./patches/zn_poly_version.patch
|
||||
|
||||
# https://trac.sagemath.org/ticket/25345
|
||||
# (upstream patch doesn't apply on 8.2 source)
|
||||
./patches/dochtml-optional.patch
|
||||
|
||||
# work with pari with threads enabled at compile time (disable them at runtime)
|
||||
# https://trac.sagemath.org/ticket/26002
|
||||
./patches/pari-no-threads.patch
|
||||
];
|
||||
|
||||
packageUpgradePatches = [
|
||||
@ -106,87 +85,55 @@ stdenv.mkDerivation rec {
|
||||
# the last version.
|
||||
./patches/eclib-regulator-precision.patch
|
||||
|
||||
# sphinx 1.6 -> 1.7 upgrade
|
||||
# https://trac.sagemath.org/ticket/24935
|
||||
./patches/sphinx-1.7.patch
|
||||
|
||||
# Adapt hashes to new boost version
|
||||
# https://trac.sagemath.org/ticket/22243
|
||||
# (this ticket doesn't only upgrade boost but also avoids this problem in the future)
|
||||
(fetchpatch {
|
||||
name = "boost-upgrade.patch";
|
||||
url = "https://git.sagemath.org/sage.git/patch?id=a24a9c6b30b93957333a3116196214a931325b69";
|
||||
sha256 = "0z3870g2ms2a81vnw08dc2i4k7jr62w8fggvcdwaavgd1wvdxwfl";
|
||||
})
|
||||
|
||||
# gfan 0.6.2
|
||||
# https://trac.sagemath.org/ticket/23353
|
||||
(fetchpatch {
|
||||
name = "gfan-update.patch";
|
||||
url = "https://git.sagemath.org/sage.git/patch/?h=420215fc469cde733ec7a339e59b78ad6eec804c&id=112498a293ea2bf563e41aed35f1aa608f01b349";
|
||||
sha256 = "0ga3hkx8cr23dpc919lgvpi5lmy0d728jkq9z6kf0fl9s8g31mxb";
|
||||
})
|
||||
|
||||
# New glpk version has new warnings, filter those out until upstream sage has found a solution
|
||||
# https://trac.sagemath.org/ticket/24824
|
||||
./patches/pari-stackwarn.patch # not actually necessary since tha pari upgrade, but necessary for the glpk patch to apply
|
||||
(fetchpatch {
|
||||
url = "https://salsa.debian.org/science-team/sagemath/raw/58bbba93a807ca2933ca317501d093a1bb4b84db/debian/patches/dt-version-glpk-4.65-ignore-warnings.patch";
|
||||
sha256 = "0b9293v73wb4x13wv5zwyjgclc01zn16msccfzzi6znswklgvddp";
|
||||
stripLen = 1;
|
||||
})
|
||||
|
||||
# https://trac.sagemath.org/ticket/25329
|
||||
(fetchpatch {
|
||||
name = "dont-check-exact-glpk-version.patch";
|
||||
url = "https://git.sagemath.org/sage.git/patch?id2=8bdc326ba57d1bb9664f63cf165a9e9920cc1afc&id=89d068d8d77316bfffa6bf8e9ebf70b3b3b88e5c";
|
||||
sha256 = "00knwxs6fmymfgfl0q5kcavmxm9sf90a4r76y35n5s55gj8pl918";
|
||||
})
|
||||
|
||||
# https://trac.sagemath.org/ticket/25355
|
||||
(fetchpatch {
|
||||
name = "maxima-5.41.0.patch";
|
||||
url = "https://git.sagemath.org/sage.git/patch/?id=87328023c4739abdf24108038201e3fa9bdfc739";
|
||||
sha256 = "0hxi7qr5mfx1bc32r8j7iba4gzd7c6v63asylyf5cbyp86azpb7i";
|
||||
})
|
||||
|
||||
# Update cddlib from 0.94g to 0.94h.
|
||||
# https://trac.sagemath.org/ticket/25341 (doesn't apply to 8.2 sources)
|
||||
(fetchpatch {
|
||||
url = "https://salsa.debian.org/science-team/sagemath/raw/58bbba93a807ca2933ca317501d093a1bb4b84db/debian/patches/u2-version-cddlib-094h.patch";
|
||||
sha256 = "0fmw7pzbaxs2dshky6iw9pr8i23p9ih2y2lw661qypdrxh5xw03k";
|
||||
stripLen = 1;
|
||||
})
|
||||
(fetchpatch {
|
||||
name = "revert-cddlib-doctest-changes.patch";
|
||||
url = "https://git.sagemath.org/sage.git/patch/?id=269c1e1551285566b8ba7a2b890989e5590e9f11";
|
||||
sha256 = "12bcjhq7hm2pmmj2bgjvcffjyls2x7q61ivlnaj5v5bsvhc183iy";
|
||||
revert = true;
|
||||
})
|
||||
|
||||
|
||||
# Only formatting changes.
|
||||
# https://trac.sagemath.org/ticket/25260
|
||||
./patches/numpy-1.14.3.patch
|
||||
|
||||
# https://trac.sagemath.org/ticket/24374
|
||||
(fetchpatch {
|
||||
name = "networkx-2.1.patch";
|
||||
url = "https://salsa.debian.org/science-team/sagemath/raw/487df9ae48ca1d93d9b1cb3af8745d31e30fb741/debian/patches/u0-version-networkx-2.1.patch";
|
||||
sha256 = "1xxxawygbgxgvlv7b4w8hhzgdnva4rhmgdxaiaa3pwdwln0yc750";
|
||||
stripLen = 1;
|
||||
})
|
||||
|
||||
# https://trac.sagemath.org/ticket/24927 rebased
|
||||
./patches/arb-2.13.0.patch
|
||||
|
||||
# https://trac.sagemath.org/ticket/24838 rebased
|
||||
./patches/pynac-0.7.22.patch
|
||||
|
||||
# https://trac.sagemath.org/ticket/25862
|
||||
./patches/eclib-20180710.patch
|
||||
|
||||
# https://trac.sagemath.org/ticket/24735
|
||||
./patches/singular-4.1.1p2.patch
|
||||
|
||||
# https://trac.sagemath.org/ticket/25567 and dependency #25635
|
||||
(fetchpatch {
|
||||
name = "pari-upgrade-dependency.patch";
|
||||
url = "https://git.sagemath.org/sage.git/patch/?id=6995e7cae1b3476ad0145f8dfc897cf91f0c3c4d";
|
||||
sha256 = "1dvhabl1c9pwd9xkjvbjjg15mvb14b24p1f3cby1mlqk34d4lrs6";
|
||||
})
|
||||
(fetchpatch {
|
||||
name = "pari-2.11.0.patch";
|
||||
url = "https://git.sagemath.org/sage.git/patch/?id=7af4748cab37d651eaa88be501db88f4a5ffc584";
|
||||
sha256 = "13f740ly3c19gcmhjngiycvmc3mcfj61y00i6jv0wmfgpm2z3ank";
|
||||
})
|
||||
|
||||
# ntl upgrade
|
||||
(fetchpatch {
|
||||
name = "lcalc-c++11.patch";
|
||||
url = "https://git.archlinux.org/svntogit/community.git/plain/trunk/sagemath-lcalc-c++11.patch?h=packages/sagemath&id=0e31ae526ab7c6b5c0bfacb3f8b1c4fd490035aa";
|
||||
sha256 = "0p5wnvbx65i7cp0bjyaqgp4rly8xgnk12pqwaq3dqby0j2bk6ijb";
|
||||
})
|
||||
|
||||
# cddlib 0.94i -> 0.94j
|
||||
(fetchpatch {
|
||||
name = "cddlib-0.94j.patch";
|
||||
url = "https://git.sagemath.org/sage.git/patch/?id=2ab1546b3e21d1d0ab3b4fcd58576848b3a2d888";
|
||||
sha256 = "1c5gnasq7y9xxj762bn79bis0zi8d9bgg7jzlf64ifixsrc5cymb";
|
||||
})
|
||||
];
|
||||
|
||||
patches = nixPatches ++ packageUpgradePatches;
|
||||
patches = nixPatches ++ packageUpgradePatches ++ [
|
||||
./patches/known-padics-bug.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
# make sure shebangs etc are fixed, but sage-python23 still works
|
||||
|
@ -3,7 +3,7 @@
|
||||
let
|
||||
name = "scilab-bin-${ver}";
|
||||
|
||||
ver = "5.5.2";
|
||||
ver = "6.0.1";
|
||||
|
||||
majorVer = builtins.elemAt (lib.splitString "." ver) 0;
|
||||
|
||||
@ -24,9 +24,9 @@ stdenv.mkDerivation rec {
|
||||
url = "https://www.scilab.org/download/${ver}/scilab-${ver}.bin.linux-${architecture}.tar.gz";
|
||||
sha256 =
|
||||
if stdenv.system == "i686-linux" then
|
||||
"6143a95ded40411a35630a89b365875a6526cd4db1e2865ac5612929a7db937a"
|
||||
"0fgjc2ak3b2qi6yin3fy50qwk2bcj0zbz1h4lyyic9n1n1qcliib"
|
||||
else if stdenv.system == "x86_64-linux" then
|
||||
"c0dd7a5f06ec7a1df7a6b1b8b14407ff7f45e56821dff9b3c46bd09d4df8d350"
|
||||
"1scswlznc14vyzg0gqa1q9gcpwx05kz1sbn563463mzkdp7nd35d"
|
||||
else
|
||||
badArch;
|
||||
};
|
||||
|
@ -1,5 +1,6 @@
|
||||
{ stdenv, fetchurl, gmp, bison, perl, ncurses, readline, coreutils, pkgconfig
|
||||
, lib
|
||||
, fetchpatch
|
||||
, autoreconfHook
|
||||
, file
|
||||
, flint
|
||||
@ -36,6 +37,18 @@ stdenv.mkDerivation rec {
|
||||
patchShebangs .
|
||||
'';
|
||||
|
||||
patches = [
|
||||
# NTL error handler was introduced in the library part, preventing users of
|
||||
# the library from implementing their own error handling
|
||||
# https://www.singular.uni-kl.de/forum/viewtopic.php?t=2769
|
||||
(fetchpatch {
|
||||
name = "move_error_handler_out_of_libsingular.patch";
|
||||
# rebased version of https://github.com/Singular/Sources/commit/502cf86d0bb2a96715be6764774b64a69c1ca34c.patch
|
||||
url = "https://git.sagemath.org/sage.git/plain/build/pkgs/singular/patches/singular-ntl-error-handler.patch?h=50b9ae2fd233c30860e1cbb3e63a26f2cc10560a";
|
||||
sha256 = "0vgh4m9zn1kjl0br68n04j4nmn5i1igfn28cph0chnwf7dvr9194";
|
||||
})
|
||||
];
|
||||
|
||||
# For reference (last checked on commit 75f460d):
|
||||
# https://github.com/Singular/Sources/blob/spielwiese/doc/Building-Singular-from-source.md
|
||||
# https://github.com/Singular/Sources/blob/spielwiese/doc/external-packages-dynamic-modules.md
|
||||
|
@ -1,4 +1,4 @@
|
||||
{ stdenv, fetchurl, fetchFromGitHub, makeWrapper
|
||||
{ stdenv, fetchpatch, fetchurl, fetchFromGitHub, makeWrapper
|
||||
, docutils, perl, pkgconfig, python3, which, ffmpeg_4
|
||||
, freefont_ttf, freetype, libass, libpthreadstubs
|
||||
, lua, luasocket, libuchardet, libiconv ? null, darwin
|
||||
@ -35,7 +35,7 @@
|
||||
, youtubeSupport ? true, youtube-dl ? null
|
||||
, vaapiSupport ? true, libva ? null
|
||||
, drmSupport ? true, libdrm ? null
|
||||
, openalSupport ? true, openalSoft ? null
|
||||
, openalSupport ? false, openalSoft ? null
|
||||
, vapoursynthSupport ? false, vapoursynth ? null
|
||||
, archiveSupport ? false, libarchive ? null
|
||||
, jackaudioSupport ? false, libjack2 ? null
|
||||
@ -93,6 +93,13 @@ in stdenv.mkDerivation rec {
|
||||
sha256 = "0i2nl65diqsjyz28dj07h6d8gq6ix72ysfm0nhs8514hqccaihs3";
|
||||
};
|
||||
|
||||
# FIXME: Remove this patch for building on macOS if it gets released in
|
||||
# the future.
|
||||
patches = optional stdenv.isDarwin (fetchpatch {
|
||||
url = https://github.com/mpv-player/mpv/commit/dc553c8cf4349b2ab5d2a373ad2fac8bdd229ebb.patch;
|
||||
sha256 = "0pa8vlb8rsxvd1s39c4iv7gbaqlkn3hx21a6xnpij99jdjkw3pg8";
|
||||
});
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs ./TOOLS/
|
||||
'';
|
||||
@ -107,6 +114,7 @@ in stdenv.mkDerivation rec {
|
||||
"--disable-libmpv-static"
|
||||
"--disable-static-build"
|
||||
"--disable-build-date" # Purity
|
||||
"--disable-macos-cocoa-cb" # Disable whilst Swift isn't supported
|
||||
(enableFeature archiveSupport "libarchive")
|
||||
(enableFeature dvdreadSupport "dvdread")
|
||||
(enableFeature dvdnavSupport "dvdnav")
|
||||
@ -143,7 +151,6 @@ in stdenv.mkDerivation rec {
|
||||
++ optional speexSupport speex
|
||||
++ optional bs2bSupport libbs2b
|
||||
++ optional openalSupport openalSoft
|
||||
++ optional (openalSupport && stdenv.isDarwin) darwin.apple_sdk.frameworks.OpenAL
|
||||
++ optional libpngSupport libpng
|
||||
++ optional youtubeSupport youtube-dl
|
||||
++ optional sdl2Support SDL2
|
||||
@ -152,20 +159,24 @@ in stdenv.mkDerivation rec {
|
||||
++ optional drmSupport libdrm
|
||||
++ optional vapoursynthSupport vapoursynth
|
||||
++ optional archiveSupport libarchive
|
||||
++ optional stdenv.isDarwin libiconv
|
||||
++ optionals dvdnavSupport [ libdvdnav libdvdnav.libdvdread ]
|
||||
++ optionals x11Support [ libX11 libXext libGLU_combined libXxf86vm libXrandr ]
|
||||
++ optionals waylandSupport [ wayland wayland-protocols libxkbcommon ]
|
||||
++ optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [
|
||||
CoreFoundation libiconv Cocoa CoreAudio
|
||||
CoreFoundation Cocoa CoreAudio
|
||||
]);
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
buildPhase = ''
|
||||
python3 ${waf} build
|
||||
'' + optionalString stdenv.isDarwin ''
|
||||
python3 TOOLS/osxbundle.py -s build/mpv
|
||||
'';
|
||||
|
||||
installPhase =
|
||||
# Ensure youtube-dl is available in $PATH for mpv
|
||||
wrapperFlags =
|
||||
let
|
||||
getPath = type : "${luasocket}/lib/lua/${lua.luaversion}/?.${type};" +
|
||||
"${luasocket}/share/lua/${lua.luaversion}/?.${type}";
|
||||
@ -173,24 +184,32 @@ in stdenv.mkDerivation rec {
|
||||
luaCPath = getPath "so";
|
||||
in
|
||||
''
|
||||
python3 ${waf} install
|
||||
|
||||
# Use a standard font
|
||||
mkdir -p $out/share/mpv
|
||||
ln -s ${freefont_ttf}/share/fonts/truetype/FreeSans.ttf $out/share/mpv/subfont.ttf
|
||||
# Ensure youtube-dl is available in $PATH for MPV
|
||||
wrapProgram $out/bin/mpv \
|
||||
--prefix LUA_PATH : "${luaPath}" \
|
||||
--prefix LUA_CPATH : "${luaCPath}" \
|
||||
'' + optionalString youtubeSupport ''
|
||||
--prefix PATH : "${youtube-dl}/bin" \
|
||||
'' + optionalString vapoursynthSupport ''
|
||||
--prefix PYTHONPATH : "${vapoursynth}/lib/${python3.libPrefix}/site-packages:$PYTHONPATH"
|
||||
'' + ''
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
python3 ${waf} install
|
||||
|
||||
# Use a standard font
|
||||
mkdir -p $out/share/mpv
|
||||
ln -s ${freefont_ttf}/share/fonts/truetype/FreeSans.ttf $out/share/mpv/subfont.ttf
|
||||
wrapProgram "$out/bin/mpv" \
|
||||
${wrapperFlags}
|
||||
|
||||
cp TOOLS/umpv $out/bin
|
||||
wrapProgram $out/bin/umpv \
|
||||
--set MPV "$out/bin/mpv"
|
||||
|
||||
'' + optionalString stdenv.isDarwin ''
|
||||
mkdir -p $out/Applications
|
||||
cp -r build/mpv.app $out/Applications
|
||||
wrapProgram "$out/Applications/mpv.app/Contents/MacOS/mpv" \
|
||||
${wrapperFlags}
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
|
86
pkgs/applications/video/plex-media-player/default.nix
Normal file
86
pkgs/applications/video/plex-media-player/default.nix
Normal file
@ -0,0 +1,86 @@
|
||||
{ stdenv, fetchFromGitHub, fetchurl, makeDesktopItem, pkgconfig, cmake, python3
|
||||
, libX11, libXrandr, qtbase, qtwebchannel, qtwebengine, qtx11extras
|
||||
, libvdpau, SDL2, mpv, libGL }:
|
||||
let
|
||||
# During compilation, a CMake bundle is downloaded from `artifacts.plex.tv`,
|
||||
# which then downloads a handful of web client-related files. To enable
|
||||
# sandboxed builds, we manually download them and save them so these files
|
||||
# are fetched ahead-of-time instead of during the CMake build. Whenever
|
||||
# plex-media-player is updated, the versions for these files are changed,
|
||||
# so the build IDs (and SHAs) below will need to be updated!
|
||||
depSrcs = rec {
|
||||
webClientBuildId = "56-23317d81e49651";
|
||||
webClientDesktopBuildId = "3.57.1-1e49651";
|
||||
webClientTvBuildId = "3.60.1-23317d8";
|
||||
|
||||
webClient = fetchurl {
|
||||
url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/buildid.cmake";
|
||||
sha256 = "1a48a65zzdx347kfnxriwkb0yjlhvn2g8jkda5pz10r3lwja0gbi";
|
||||
};
|
||||
webClientDesktopHash = fetchurl {
|
||||
url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-desktop-${webClientDesktopBuildId}.tar.xz.sha1";
|
||||
sha256 = "04wdgpsh33y8hyjhjrfw6ymf9g002jny7hvhld4xp33lwxhd2j5w";
|
||||
};
|
||||
webClientDesktop = fetchurl {
|
||||
url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-desktop-${webClientDesktopBuildId}.tar.xz";
|
||||
sha256 = "1asw9f84z9sm3w7ifnc7j631j84rgx23c6msmn2dnw48ckv3bj2z";
|
||||
};
|
||||
webClientTvHash = fetchurl {
|
||||
url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-tv-${webClientTvBuildId}.tar.xz.sha1";
|
||||
sha256 = "0d1hsvmpwczwx442f8qdvfr8c3w84630j9qwpg2y4qm423sgdvja";
|
||||
};
|
||||
webClientTv = fetchurl {
|
||||
url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-tv-${webClientTvBuildId}.tar.xz";
|
||||
sha256 = "1ih3l5paf1jl68b1xq3iqqmvs3m07fybz57hcz4f78v0gwq2kryq";
|
||||
};
|
||||
};
|
||||
in stdenv.mkDerivation rec {
|
||||
name = "plex-media-player-${version}";
|
||||
version = "2.14.1.880";
|
||||
vsnHash = "301a4b6c";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "plexinc";
|
||||
repo = "plex-media-player";
|
||||
rev = "v${version}-${vsnHash}";
|
||||
sha256 = "0xz41r697vl6s3qvy6jwriv3pb9cfy61j6sydvdq121x5a0jnh9a";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig cmake python3 ];
|
||||
buildInputs = [ libX11 libXrandr qtbase qtwebchannel qtwebengine qtx11extras
|
||||
libvdpau SDL2 mpv libGL ];
|
||||
|
||||
desktopItem = makeDesktopItem {
|
||||
name = "plex-media-player";
|
||||
exec = "plexmediaplayer";
|
||||
icon = "plex-media-player";
|
||||
comment = "View your media";
|
||||
desktopName = "Plex Media Player";
|
||||
genericName = "Media Player";
|
||||
categories = "AudioVideo;Video;Player;TV;";
|
||||
};
|
||||
|
||||
preConfigure = with depSrcs; ''
|
||||
mkdir -p build/dependencies
|
||||
ln -s ${webClient} build/dependencies/buildid-${webClientBuildId}.cmake
|
||||
ln -s ${webClientDesktopHash} build/dependencies/web-client-desktop-${webClientDesktopBuildId}.tar.xz.sha1
|
||||
ln -s ${webClientDesktop} build/dependencies/web-client-desktop-${webClientDesktopBuildId}.tar.xz
|
||||
ln -s ${webClientTvHash} build/dependencies/web-client-tv-${webClientTvBuildId}.tar.xz.sha1
|
||||
ln -s ${webClientTv} build/dependencies/web-client-tv-${webClientTvBuildId}.tar.xz
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/share/{applications,pixmaps}
|
||||
cp ${src}/resources/images/icon.png $out/share/pixmaps/plex-media-player.png
|
||||
cp ${desktopItem}/share/applications/* $out/share/applications
|
||||
'';
|
||||
|
||||
cmakeFlags = [ "-DCMAKE_BUILD_TYPE=RelWithDebInfo" "-DQTROOT=${qtbase}" ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Streaming media player for Plex";
|
||||
license = licenses.gpl2;
|
||||
maintainers = with maintainers; [ kylewlacy ];
|
||||
homepage = https://plex.tv;
|
||||
};
|
||||
}
|
@ -1,20 +1,20 @@
|
||||
{ stdenv, fetchFromGitHub, SDL2, frei0r, gettext, mlt, jack1, pkgconfig, qtbase
|
||||
, qtmultimedia, qtwebkit, qtx11extras, qtwebsockets, qtquickcontrols
|
||||
, qtgraphicaleffects, libmlt
|
||||
, qmake, makeWrapper, fetchpatch, qttools }:
|
||||
, qmake, makeWrapper, qttools }:
|
||||
|
||||
assert stdenv.lib.versionAtLeast libmlt.version "6.8.0";
|
||||
assert stdenv.lib.versionAtLeast mlt.version "6.8.0";
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "shotcut-${version}";
|
||||
version = "18.06.02";
|
||||
version = "18.08";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mltframework";
|
||||
repo = "shotcut";
|
||||
rev = "v${version}";
|
||||
sha256 = "1pqpgsb8ix1akq326chf46vvl5h02dwmdskskf2n6impygsy4x7v";
|
||||
sha256 = "1p2s4avm3bl5ippmgfzkkbb2w0xs4vhk2wbcd22g7bh1zq9w190n";
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
|
||||
NIX_CFLAGS_COMPILE = "-I${libmlt}/include/mlt++ -I${libmlt}/include/mlt";
|
||||
qmakeFlags = [ "QMAKE_LRELEASE=${stdenv.lib.getDev qttools}/bin/lrelease" ];
|
||||
qmakeFlags = [ "QMAKE_LRELEASE=${stdenv.lib.getDev qttools}/bin/lrelease" "SHOTCUT_VERSION=${version}" ];
|
||||
|
||||
prePatch = ''
|
||||
sed 's_shotcutPath, "qmelt"_"${mlt}/bin/melt"_' -i src/jobs/meltjob.cpp
|
||||
@ -35,12 +35,6 @@ stdenv.mkDerivation rec {
|
||||
sed "s_/usr/bin/nice_''${NICE}_" -i src/jobs/meltjob.cpp src/jobs/ffmpegjob.cpp
|
||||
'';
|
||||
|
||||
patches = [ (fetchpatch {
|
||||
url = https://github.com/mltframework/shotcut/commit/f304b7403cc7beb57b1610afd9c5c8173749e80b.patch;
|
||||
name = "qt511.patch";
|
||||
sha256 = "1ynvyjchcb33a33x4w1ddnah2gyzmnm125ailgg6xy60lqsnsmp9";
|
||||
} ) ];
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/share/shotcut
|
||||
cp -r src/qml $out/share/shotcut/
|
||||
|
25
pkgs/data/fonts/inter-ui/default.nix
Normal file
25
pkgs/data/fonts/inter-ui/default.nix
Normal file
@ -0,0 +1,25 @@
|
||||
{ stdenv, fetchzip }:
|
||||
|
||||
let
|
||||
version = "2.5";
|
||||
in fetchzip {
|
||||
name = "inter-ui-${version}";
|
||||
|
||||
url = "https://github.com/rsms/inter/releases/download/v${version}/Inter-UI-${version}.zip";
|
||||
|
||||
postFetch = ''
|
||||
mkdir -p $out/share/fonts/opentype
|
||||
unzip -j $downloadedFile \*.otf -d $out/share/fonts/opentype
|
||||
'';
|
||||
|
||||
sha256 = "1d88y6c9vbjz5siazhavnpfpazfkvpbcbb4pdycbnj03mmx6y07v";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://rsms.me/inter/;
|
||||
description = "A typeface specially designed for user interfaces";
|
||||
license = licenses.ofl;
|
||||
platforms = platforms.all;
|
||||
maintainers = with maintainers; [ demize ];
|
||||
};
|
||||
}
|
||||
|
@ -34,56 +34,48 @@ let
|
||||
};
|
||||
in stdenv.lib.mapAttrs mkVariant {
|
||||
adventor = {
|
||||
displayName = "Adventor";
|
||||
version = "2_501";
|
||||
sha256 = "0qjg3x0adfppyx3x33cm07ww9i9sl88xaq07m7wfip8rmyp567fn";
|
||||
outputHash = "117h6f02m1r54b4f1a98q5kkjchl5pv9ibm1jla6xrzhk2pchb27";
|
||||
abbreviation = "qag";
|
||||
};
|
||||
bonum = {
|
||||
displayName = "Bonum";
|
||||
version = "2.004";
|
||||
sha256 = "0qbrs98knx4h0b297c5n3vav4mkal1a95ai2dzmdc10pghfzl8vv";
|
||||
outputHash = "0bid8gzwz50ylmm8jyqf9s4nfvy6cp1x34wbyrh4gyk1ki6hf3z1";
|
||||
abbreviation = "qbk";
|
||||
};
|
||||
chorus = {
|
||||
displayName = "Chorus";
|
||||
version = "2.003";
|
||||
sha256 = "1b0zak27fzmapwbf2jasvsd95vhnqyc92n985d1lc1ivwja1zgfa";
|
||||
outputHash = "0fqifd45c1ys6y98b66lmldfbv7wjb2414fs9swicv4n7xvl3cp1";
|
||||
abbreviation = "qzc";
|
||||
};
|
||||
cursor = {
|
||||
displayName = "Cursor";
|
||||
version = "2.004";
|
||||
sha256 = "0ck3jm33bk2xsxp5d2irzd3j24zb49f0gnjvd1nikg1ivk8w85ng";
|
||||
outputHash = "0i76835xqlkrnlx303mx63m0f4899j056c2ag2fl6p9qk8s4rskp";
|
||||
abbreviation = "qcr";
|
||||
};
|
||||
heros = {
|
||||
displayName = "Heros";
|
||||
version = "2.004";
|
||||
sha256 = "1fj2srxxf6ap913y5yd3dn4jzg828j7381gifs39nm5lnzmgw78y";
|
||||
outputHash = "16y76ab46fxm9k8wfmwx4w0cl96yrmjywz587lyr08s0agp1v3kf";
|
||||
abbreviation = "qhv";
|
||||
};
|
||||
pagella = {
|
||||
displayName = "Pagella";
|
||||
version ="2_501";
|
||||
sha256 = "1kccaxs3vk93la2pz4nv05hx1x3diyla49cz4l33zifdcp2zgg9d";
|
||||
outputHash = "1nnjsgplimh29502pkd19rvfg93x31svxxmx4x7h51njrx1j8qa8";
|
||||
abbreviation = "qpl";
|
||||
};
|
||||
schola = {
|
||||
displayName = "Schola";
|
||||
version = "2.005";
|
||||
sha256 = "05z3gk4mm0sa7wwjcv31j2xlzqhwhcncpamn0kn9y0221cdknyp8";
|
||||
outputHash = "1yqq1ngcylhldrh1v35l439k72szq9m4gx6g0wh235fk65chb2bm";
|
||||
abbreviation = "qcs";
|
||||
};
|
||||
termes = {
|
||||
displayName = "Termes";
|
||||
version = "2.004";
|
||||
sha256 = "1aq3yqbgkc3z20dkcqyhicsyq0afbgg4l397z96sd8a16jyz2x8k";
|
||||
outputHash = "1igw821m601h8937pix6yish4d8fxmz3h4j9hripf41bxsiafzzg";
|
||||
|
47
pkgs/desktops/gnome-3/apps/gnome-todo/default.nix
Normal file
47
pkgs/desktops/gnome-3/apps/gnome-todo/default.nix
Normal file
@ -0,0 +1,47 @@
|
||||
{ stdenv, fetchurl, meson, ninja, pkgconfig, wrapGAppsHook
|
||||
, gettext, gnome3, glib, gtk, libpeas
|
||||
, gnome-online-accounts, gsettings-desktop-schemas
|
||||
, evolution-data-server, libxml2, libsoup, libical, rest, json-glib }:
|
||||
|
||||
let
|
||||
pname = "gnome-todo";
|
||||
version = "3.28.1";
|
||||
in stdenv.mkDerivation rec {
|
||||
name = "${pname}-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnome/sources/${pname}/${gnome3.versionBranch version}/${name}.tar.xz";
|
||||
sha256 = "08ygqbib72jlf9y0a16k54zz51sncpq2wa18wp81v46q8301ymy7";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
meson ninja pkgconfig gettext wrapGAppsHook
|
||||
];
|
||||
buildInputs = [
|
||||
glib gtk libpeas gnome-online-accounts
|
||||
gsettings-desktop-schemas gnome3.defaultIconTheme
|
||||
# Plug-ins
|
||||
evolution-data-server libxml2 libsoup libical
|
||||
rest json-glib
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
chmod +x meson_post_install.py
|
||||
patchShebangs meson_post_install.py
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
updateScript = gnome3.updateScript {
|
||||
packageName = pname;
|
||||
attrPath = "gnome3.${pname}";
|
||||
};
|
||||
};
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Personal task manager for GNOME";
|
||||
homepage = https://wiki.gnome.org/Apps/Todo;
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = gnome3.maintainers;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
|
||||
"--sysconfdir=/etc"
|
||||
"--localstatedir=/var"
|
||||
"--with-plymouth=yes"
|
||||
"--enable-gdm-xsession"
|
||||
"--with-initial-vt=7"
|
||||
"--with-systemdsystemunitdir=$(out)/etc/systemd/system"
|
||||
];
|
||||
|
@ -1,4 +1,4 @@
|
||||
{ fetchurl, stdenv, meson, ninja, pkgconfig, gnome3, glib, gtk, gsettings-desktop-schemas
|
||||
{ fetchurl, stdenv, substituteAll, meson, ninja, pkgconfig, gnome3, glib, gtk, gsettings-desktop-schemas
|
||||
, gnome-desktop, dbus, json-glib, libICE, xmlto, docbook_xsl, docbook_xml_dtd_412
|
||||
, libxslt, gettext, makeWrapper, systemd, xorg, epoxy }:
|
||||
|
||||
@ -11,6 +11,15 @@ stdenv.mkDerivation rec {
|
||||
sha256 = "14nmbirgrp2nm16khbz109saqdlinlbrlhjnbjydpnrlimfgg4xq";
|
||||
};
|
||||
|
||||
patches = [
|
||||
(substituteAll {
|
||||
src = ./fix-paths.patch;
|
||||
# FIXME: glib binaries shouldn't be in .dev!
|
||||
gsettings = "${glib.dev}/bin/gsettings";
|
||||
dbusLaunch = "${dbus.lib}/bin/dbus-launch";
|
||||
})
|
||||
];
|
||||
|
||||
mesonFlags = [ "-Dsystemd=true" ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -29,15 +38,13 @@ stdenv.mkDerivation rec {
|
||||
patchShebangs meson_post_install.py
|
||||
'';
|
||||
|
||||
# FIXME: glib binaries shouldn't be in .dev!
|
||||
preFixup = ''
|
||||
for desktopFile in $(grep -rl "Exec=gnome-session" $out/share)
|
||||
do
|
||||
echo "Patching gnome-session path in: $desktopFile"
|
||||
sed -i "s,^Exec=gnome-session,Exec=$out/bin/gnome-session," $desktopFile
|
||||
sed -i "s,Exec=gnome-session,Exec=$out/bin/gnome-session," $desktopFile
|
||||
done
|
||||
wrapProgram "$out/bin/gnome-session" \
|
||||
--prefix PATH : "${glib.dev}/bin" \
|
||||
--prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
|
||||
--suffix XDG_DATA_DIRS : "$out/share:$GSETTINGS_SCHEMAS_PATH" \
|
||||
--suffix XDG_DATA_DIRS : "${gnome3.gnome-shell}/share"\
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user