Merge staging-next into staging
This commit is contained in:
commit
4afe7a7bf3
@ -21,7 +21,7 @@ At the moment we support three different methods for managing plugins:
|
|||||||
|
|
||||||
Adding custom .vimrc lines can be done using the following code:
|
Adding custom .vimrc lines can be done using the following code:
|
||||||
|
|
||||||
```
|
```nix
|
||||||
vim_configurable.customize {
|
vim_configurable.customize {
|
||||||
# `name` specifies the name of the executable and package
|
# `name` specifies the name of the executable and package
|
||||||
name = "vim-with-plugins";
|
name = "vim-with-plugins";
|
||||||
@ -32,11 +32,11 @@ vim_configurable.customize {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
This configuration is used when vim is invoked with the command specified as name, in this case `vim-with-plugins`.
|
This configuration is used when Vim is invoked with the command specified as name, in this case `vim-with-plugins`.
|
||||||
|
|
||||||
For Neovim the `configure` argument can be overridden to achieve the same:
|
For Neovim the `configure` argument can be overridden to achieve the same:
|
||||||
|
|
||||||
```
|
```nix
|
||||||
neovim.override {
|
neovim.override {
|
||||||
configure = {
|
configure = {
|
||||||
customRC = ''
|
customRC = ''
|
||||||
@ -46,10 +46,10 @@ neovim.override {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
If you want to use `neovim-qt` as a graphical editor, you can configure it by overriding neovim in an overlay
|
If you want to use `neovim-qt` as a graphical editor, you can configure it by overriding Neovim in an overlay
|
||||||
or passing it an overridden neovimn:
|
or passing it an overridden Neovimn:
|
||||||
|
|
||||||
```
|
```nix
|
||||||
neovim-qt.override {
|
neovim-qt.override {
|
||||||
neovim = neovim.override {
|
neovim = neovim.override {
|
||||||
configure = {
|
configure = {
|
||||||
@ -63,15 +63,15 @@ neovim-qt.override {
|
|||||||
|
|
||||||
## Managing plugins with Vim packages
|
## Managing plugins with Vim packages
|
||||||
|
|
||||||
To store you plugins in Vim packages (the native vim plugin manager, see `:help packages`) the following example can be used:
|
To store you plugins in Vim packages (the native Vim plugin manager, see `:help packages`) the following example can be used:
|
||||||
|
|
||||||
```
|
```nix
|
||||||
vim_configurable.customize {
|
vim_configurable.customize {
|
||||||
vimrcConfig.packages.myVimPackage = with pkgs.vimPlugins; {
|
vimrcConfig.packages.myVimPackage = with pkgs.vimPlugins; {
|
||||||
# loaded on launch
|
# loaded on launch
|
||||||
start = [ youcompleteme fugitive ];
|
start = [ youcompleteme fugitive ];
|
||||||
# manually loadable by calling `:packadd $plugin-name`
|
# manually loadable by calling `:packadd $plugin-name`
|
||||||
# however, if a vim plugin has a dependency that is not explicitly listed in
|
# however, if a Vim plugin has a dependency that is not explicitly listed in
|
||||||
# opt that dependency will always be added to start to avoid confusion.
|
# opt that dependency will always be added to start to avoid confusion.
|
||||||
opt = [ phpCompletion elm-vim ];
|
opt = [ phpCompletion elm-vim ];
|
||||||
# To automatically load a plugin when opening a filetype, add vimrc lines like:
|
# To automatically load a plugin when opening a filetype, add vimrc lines like:
|
||||||
@ -83,7 +83,7 @@ vim_configurable.customize {
|
|||||||
`myVimPackage` is an arbitrary name for the generated package. You can choose any name you like.
|
`myVimPackage` is an arbitrary name for the generated package. You can choose any name you like.
|
||||||
For Neovim the syntax is:
|
For Neovim the syntax is:
|
||||||
|
|
||||||
```
|
```nix
|
||||||
neovim.override {
|
neovim.override {
|
||||||
configure = {
|
configure = {
|
||||||
customRC = ''
|
customRC = ''
|
||||||
@ -92,7 +92,7 @@ neovim.override {
|
|||||||
packages.myVimPackage = with pkgs.vimPlugins; {
|
packages.myVimPackage = with pkgs.vimPlugins; {
|
||||||
# see examples below how to use custom packages
|
# see examples below how to use custom packages
|
||||||
start = [ ];
|
start = [ ];
|
||||||
# If a vim plugin has a dependency that is not explicitly listed in
|
# If a Vim plugin has a dependency that is not explicitly listed in
|
||||||
# opt that dependency will always be added to start to avoid confusion.
|
# opt that dependency will always be added to start to avoid confusion.
|
||||||
opt = [ ];
|
opt = [ ];
|
||||||
};
|
};
|
||||||
@ -102,7 +102,7 @@ neovim.override {
|
|||||||
|
|
||||||
The resulting package can be added to `packageOverrides` in `~/.nixpkgs/config.nix` to make it installable:
|
The resulting package can be added to `packageOverrides` in `~/.nixpkgs/config.nix` to make it installable:
|
||||||
|
|
||||||
```
|
```nix
|
||||||
{
|
{
|
||||||
packageOverrides = pkgs: with pkgs; {
|
packageOverrides = pkgs: with pkgs; {
|
||||||
myVim = vim_configurable.customize {
|
myVim = vim_configurable.customize {
|
||||||
@ -126,7 +126,7 @@ After that you can install your special grafted `myVim` or `myNeovim` packages.
|
|||||||
To use [vim-plug](https://github.com/junegunn/vim-plug) to manage your Vim
|
To use [vim-plug](https://github.com/junegunn/vim-plug) to manage your Vim
|
||||||
plugins the following example can be used:
|
plugins the following example can be used:
|
||||||
|
|
||||||
```
|
```nix
|
||||||
vim_configurable.customize {
|
vim_configurable.customize {
|
||||||
vimrcConfig.packages.myVimPackage = with pkgs.vimPlugins; {
|
vimrcConfig.packages.myVimPackage = with pkgs.vimPlugins; {
|
||||||
# loaded on launch
|
# loaded on launch
|
||||||
@ -137,7 +137,7 @@ vim_configurable.customize {
|
|||||||
|
|
||||||
For Neovim the syntax is:
|
For Neovim the syntax is:
|
||||||
|
|
||||||
```
|
```nix
|
||||||
neovim.override {
|
neovim.override {
|
||||||
configure = {
|
configure = {
|
||||||
customRC = ''
|
customRC = ''
|
||||||
@ -161,38 +161,49 @@ assuming that "using latest version" is ok most of the time.
|
|||||||
|
|
||||||
First create a vim-scripts file having one plugin name per line. Example:
|
First create a vim-scripts file having one plugin name per line. Example:
|
||||||
|
|
||||||
"tlib"
|
```
|
||||||
{'name': 'vim-addon-sql'}
|
"tlib"
|
||||||
{'filetype_regex': '\%(vim)$', 'names': ['reload', 'vim-dev-plugin']}
|
{'name': 'vim-addon-sql'}
|
||||||
|
{'filetype_regex': '\%(vim)$', 'names': ['reload', 'vim-dev-plugin']}
|
||||||
|
```
|
||||||
|
|
||||||
Such vim-scripts file can be read by VAM as well like this:
|
Such vim-scripts file can be read by VAM as well like this:
|
||||||
|
|
||||||
call vam#Scripts(expand('~/.vim-scripts'), {})
|
```vim
|
||||||
|
call vam#Scripts(expand('~/.vim-scripts'), {})
|
||||||
|
```
|
||||||
|
|
||||||
Create a default.nix file:
|
Create a default.nix file:
|
||||||
|
|
||||||
{ nixpkgs ? import <nixpkgs> {}, compiler ? "ghc7102" }:
|
```nix
|
||||||
nixpkgs.vim_configurable.customize { name = "vim"; vimrcConfig.vam.pluginDictionaries = [ "vim-addon-vim2nix" ]; }
|
{ nixpkgs ? import <nixpkgs> {}, compiler ? "ghc7102" }:
|
||||||
|
nixpkgs.vim_configurable.customize { name = "vim"; vimrcConfig.vam.pluginDictionaries = [ "vim-addon-vim2nix" ]; }
|
||||||
|
```
|
||||||
|
|
||||||
Create a generate.vim file:
|
Create a generate.vim file:
|
||||||
|
|
||||||
ActivateAddons vim-addon-vim2nix
|
```vim
|
||||||
let vim_scripts = "vim-scripts"
|
ActivateAddons vim-addon-vim2nix
|
||||||
call nix#ExportPluginsForNix({
|
let vim_scripts = "vim-scripts"
|
||||||
\ 'path_to_nixpkgs': eval('{"'.substitute(substitute(substitute($NIX_PATH, ':', ',', 'g'), '=',':', 'g'), '\([:,]\)', '"\1"',"g").'"}')["nixpkgs"],
|
call nix#ExportPluginsForNix({
|
||||||
\ 'cache_file': '/tmp/vim2nix-cache',
|
\ 'path_to_nixpkgs': eval('{"'.substitute(substitute(substitute($NIX_PATH, ':', ',', 'g'), '=',':', 'g'), '\([:,]\)', '"\1"',"g").'"}')["nixpkgs"],
|
||||||
\ 'try_catch': 0,
|
\ 'cache_file': '/tmp/vim2nix-cache',
|
||||||
\ 'plugin_dictionaries': ["vim-addon-manager"]+map(readfile(vim_scripts), 'eval(v:val)')
|
\ 'try_catch': 0,
|
||||||
\ })
|
\ 'plugin_dictionaries': ["vim-addon-manager"]+map(readfile(vim_scripts), 'eval(v:val)')
|
||||||
|
\ })
|
||||||
|
```
|
||||||
|
|
||||||
Then run
|
Then run
|
||||||
|
|
||||||
nix-shell -p vimUtils.vim_with_vim2nix --command "vim -c 'source generate.vim'"
|
```bash
|
||||||
|
nix-shell -p vimUtils.vim_with_vim2nix --command "vim -c 'source generate.vim'"
|
||||||
|
```
|
||||||
|
|
||||||
You should get a Vim buffer with the nix derivations (output1) and vam.pluginDictionaries (output2).
|
You should get a Vim buffer with the nix derivations (output1) and vam.pluginDictionaries (output2).
|
||||||
You can add your vim to your system's configuration file like this and start it by "vim-my":
|
You can add your Vim to your system's configuration file like this and start it by "vim-my":
|
||||||
|
|
||||||
my-vim =
|
```
|
||||||
|
my-vim =
|
||||||
let plugins = let inherit (vimUtils) buildVimPluginFrom2Nix; in {
|
let plugins = let inherit (vimUtils) buildVimPluginFrom2Nix; in {
|
||||||
copy paste output1 here
|
copy paste output1 here
|
||||||
}; in vim_configurable.customize {
|
}; in vim_configurable.customize {
|
||||||
@ -207,11 +218,12 @@ You can add your vim to your system's configuration file like this and start it
|
|||||||
# vimrcConfig.pathogen.knownPlugins = plugins; # plugins
|
# vimrcConfig.pathogen.knownPlugins = plugins; # plugins
|
||||||
# vimrcConfig.pathogen.pluginNames = ["tlib"];
|
# vimrcConfig.pathogen.pluginNames = ["tlib"];
|
||||||
};
|
};
|
||||||
|
```
|
||||||
|
|
||||||
Sample output1:
|
Sample output1:
|
||||||
|
|
||||||
"reload" = buildVimPluginFrom2Nix { # created by nix#NixDerivation
|
```
|
||||||
|
"reload" = buildVimPluginFrom2Nix { # created by nix#NixDerivation
|
||||||
name = "reload";
|
name = "reload";
|
||||||
src = fetchgit {
|
src = fetchgit {
|
||||||
url = "git://github.com/xolox/vim-reload";
|
url = "git://github.com/xolox/vim-reload";
|
||||||
@ -220,30 +232,41 @@ Sample output1:
|
|||||||
};
|
};
|
||||||
dependencies = ["nim-misc"];
|
dependencies = ["nim-misc"];
|
||||||
|
|
||||||
};
|
};
|
||||||
[...]
|
[...]
|
||||||
|
```
|
||||||
|
|
||||||
Sample output2:
|
Sample output2:
|
||||||
|
|
||||||
[
|
```nix
|
||||||
|
[
|
||||||
''vim-addon-manager''
|
''vim-addon-manager''
|
||||||
''tlib''
|
''tlib''
|
||||||
{ "name" = ''vim-addon-sql''; }
|
{ "name" = ''vim-addon-sql''; }
|
||||||
{ "filetype_regex" = ''\%(vim)$$''; "names" = [ ''reload'' ''vim-dev-plugin'' ]; }
|
{ "filetype_regex" = ''\%(vim)$$''; "names" = [ ''reload'' ''vim-dev-plugin'' ]; }
|
||||||
]
|
]
|
||||||
|
```
|
||||||
|
|
||||||
## Adding new plugins to nixpkgs
|
## Adding new plugins to nixpkgs
|
||||||
|
|
||||||
In `pkgs/misc/vim-plugins/vim-plugin-names` we store the plugin names
|
Nix expressions for Vim plugins are stored in [pkgs/misc/vim-plugins](/pkgs/misc/vim-plugins). For the vast majority of plugins, Nix expressions are automatically generated by running [`./update.py`](/pkgs/misc/vim-plugins/update.py). This creates a [generated.nix](/pkgs/misc/vim-plugins/generated.nix) file based on the plugins listed in [vim-plugin-names](/pkgs/misc/vim-plugins/vim-plugin-names). Plugins are listed in alphabetical order in `vim-plugin-names` using the format `[github username]/[repository]`. For example https://github.com/scrooloose/nerdtree becomes `scrooloose/nerdtree`.
|
||||||
for all vim plugins we automatically generate plugins for.
|
|
||||||
The format of this file `github username/github repository`:
|
Some plugins require overrides in order to function properly. Overrides are placed in [overrides.nix](/pkgs/misc/vim-plugins/overrides.nix). Overrides are most often required when a plugin requires some dependencies, or extra steps are required during the build process. For example `deoplete-fish` requires both `deoplete-nvim` and `vim-fish`, and so the following override was added:
|
||||||
For example https://github.com/scrooloose/nerdtree becomes `scrooloose/nerdtree`.
|
|
||||||
After adding your plugin to this file run the `./update.py` in the same folder.
|
```
|
||||||
This will updated a file called `generated.nix` and make your plugin accessible in the
|
deoplete-fish = super.deoplete-fish.overrideAttrs(old: {
|
||||||
`vimPlugins` attribute set (`vimPlugins.nerdtree` in our example).
|
dependencies = with super; [ deoplete-nvim vim-fish ];
|
||||||
If additional steps to the build process of the plugin are required, add an
|
});
|
||||||
override to the `pkgs/misc/vim-plugins/default.nix` in the same directory.
|
```
|
||||||
|
|
||||||
|
Sometimes plugins require an override that must be changed when the plugin is updated. This can cause issues when Vim plugins are auto-updated but the associated override isn't updated. For these plugins, the override should be written so that it specifies all information required to install the plugin, and running `./update.py` doesn't change the derivation for the plugin. Manually updating the override is required to update these types of plugins. An example of such a plugin is `LanguageClient-neovim`.
|
||||||
|
|
||||||
|
To add a new plugin:
|
||||||
|
|
||||||
|
1. run `./update.py` and create a commit named "vimPlugins: Update",
|
||||||
|
2. add the new plugin to [vim-plugin-names](/pkgs/misc/vim-plugins/vim-plugin-names) and add overrides if required to [overrides.nix](/pkgs/misc/vim-plugins/overrides.nix),
|
||||||
|
3. run `./update.py` again and create a commit named "vimPlugins.[name]: init at [version]" (where `name` and `version` can be found in [generated.nix](/pkgs/misc/vim-plugins/generated.nix)), and
|
||||||
|
4. create a pull request.
|
||||||
|
|
||||||
## Important repositories
|
## Important repositories
|
||||||
|
|
||||||
@ -252,4 +275,3 @@ override to the `pkgs/misc/vim-plugins/default.nix` in the same directory.
|
|||||||
|
|
||||||
- [vim2nix](https://github.com/MarcWeber/vim-addon-vim2nix) which generates the
|
- [vim2nix](https://github.com/MarcWeber/vim-addon-vim2nix) which generates the
|
||||||
.nix code
|
.nix code
|
||||||
|
|
||||||
|
@ -393,6 +393,11 @@
|
|||||||
github = "aneeshusa";
|
github = "aneeshusa";
|
||||||
name = "Aneesh Agrawal";
|
name = "Aneesh Agrawal";
|
||||||
};
|
};
|
||||||
|
angristan = {
|
||||||
|
email = "angristan@pm.me";
|
||||||
|
github = "angristan";
|
||||||
|
name = "Stanislas Lange";
|
||||||
|
};
|
||||||
ankhers = {
|
ankhers = {
|
||||||
email = "justin.k.wood@gmail.com";
|
email = "justin.k.wood@gmail.com";
|
||||||
github = "ankhers";
|
github = "ankhers";
|
||||||
@ -4214,9 +4219,13 @@
|
|||||||
name = "Ben Hamlin";
|
name = "Ben Hamlin";
|
||||||
};
|
};
|
||||||
prusnak = {
|
prusnak = {
|
||||||
email = "stick@gk2.sk";
|
email = "pavol@rusnak.io";
|
||||||
github = "prusnak";
|
github = "prusnak";
|
||||||
name = "Pavol Rusnak";
|
name = "Pavol Rusnak";
|
||||||
|
keys = [{
|
||||||
|
longkeyid = "rsa4096/0x91F3B339B9A02A3D";
|
||||||
|
fingerprint = "86E6 792F C27B FD47 8860 C110 91F3 B339 B9A0 2A3D";
|
||||||
|
}];
|
||||||
};
|
};
|
||||||
pshendry = {
|
pshendry = {
|
||||||
email = "paul@pshendry.com";
|
email = "paul@pshendry.com";
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<author><personname><firstname>Eelco</firstname><surname>Dolstra</surname></personname>
|
<author><personname><firstname>Eelco</firstname><surname>Dolstra</surname></personname>
|
||||||
<contrib>Author</contrib>
|
<contrib>Author</contrib>
|
||||||
</author>
|
</author>
|
||||||
<copyright><year>2007-2018</year><holder>Eelco Dolstra</holder>
|
<copyright><year>2007-2019</year><holder>Eelco Dolstra</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</info>
|
</info>
|
||||||
<xi:include href="man-configuration.xml" />
|
<xi:include href="man-configuration.xml" />
|
||||||
|
@ -214,6 +214,18 @@
|
|||||||
have a look at the <link xlink:href="https://github.com/nginxinc/nginx-prometheus-exporter">official repo</link>.
|
have a look at the <link xlink:href="https://github.com/nginxinc/nginx-prometheus-exporter">official repo</link>.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Nodejs 8 is scheduled EOL under the lifetime of 19.09 and has been dropped.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
By default, prometheus exporters are now run with <literal>DynamicUser</literal> enabled.
|
||||||
|
Exporters that need a real user, now run under a seperate user and group which follow the pattern <literal><exporter-name>-exporter</literal>, instead of the previous default <literal>nobody</literal> and <literal>nogroup</literal>.
|
||||||
|
Only some exporters are affected by the latter, namely the exporters <literal>dovecot</literal>, <literal>node</literal>, <literal>postfix</literal> and <literal>varnish</literal>.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ with lib;
|
|||||||
systemd.packages = packages;
|
systemd.packages = packages;
|
||||||
|
|
||||||
environment.variables = {
|
environment.variables = {
|
||||||
GTK_USE_PORTAL = optional cfg.gtkUsePortal "1";
|
GTK_USE_PORTAL = mkIf cfg.gtkUsePortal "1";
|
||||||
XDG_DESKTOP_PORTAL_PATH = map (p: "${p}/share/xdg-desktop-portal/portals") cfg.extraPortals;
|
XDG_DESKTOP_PORTAL_PATH = map (p: "${p}/share/xdg-desktop-portal/portals") cfg.extraPortals;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -235,6 +235,7 @@ in
|
|||||||
systemd.user.services.ssh-agent = mkIf cfg.startAgent
|
systemd.user.services.ssh-agent = mkIf cfg.startAgent
|
||||||
{ description = "SSH Agent";
|
{ description = "SSH Agent";
|
||||||
wantedBy = [ "default.target" ];
|
wantedBy = [ "default.target" ];
|
||||||
|
unitConfig.ConditionUser = "!@system";
|
||||||
serviceConfig =
|
serviceConfig =
|
||||||
{ ExecStartPre = "${pkgs.coreutils}/bin/rm -f %t/ssh-agent";
|
{ ExecStartPre = "${pkgs.coreutils}/bin/rm -f %t/ssh-agent";
|
||||||
ExecStart =
|
ExecStart =
|
||||||
|
@ -502,6 +502,7 @@ in {
|
|||||||
"d ${cfg.statePath} 0750 ${cfg.user} ${cfg.group} -"
|
"d ${cfg.statePath} 0750 ${cfg.user} ${cfg.group} -"
|
||||||
"d ${cfg.statePath}/builds 0750 ${cfg.user} ${cfg.group} -"
|
"d ${cfg.statePath}/builds 0750 ${cfg.user} ${cfg.group} -"
|
||||||
"d ${cfg.statePath}/config 0750 ${cfg.user} ${cfg.group} -"
|
"d ${cfg.statePath}/config 0750 ${cfg.user} ${cfg.group} -"
|
||||||
|
"d ${cfg.statePath}/config/initializers 0750 ${cfg.user} ${cfg.group} -"
|
||||||
"d ${cfg.statePath}/db 0750 ${cfg.user} ${cfg.group} -"
|
"d ${cfg.statePath}/db 0750 ${cfg.user} ${cfg.group} -"
|
||||||
"d ${cfg.statePath}/log 0750 ${cfg.user} ${cfg.group} -"
|
"d ${cfg.statePath}/log 0750 ${cfg.user} ${cfg.group} -"
|
||||||
"d ${cfg.statePath}/repositories 2770 ${cfg.user} ${cfg.group} -"
|
"d ${cfg.statePath}/repositories 2770 ${cfg.user} ${cfg.group} -"
|
||||||
|
@ -28,10 +28,12 @@ let
|
|||||||
"dovecot"
|
"dovecot"
|
||||||
"fritzbox"
|
"fritzbox"
|
||||||
"json"
|
"json"
|
||||||
|
"mail"
|
||||||
"minio"
|
"minio"
|
||||||
"nginx"
|
"nginx"
|
||||||
"node"
|
"node"
|
||||||
"postfix"
|
"postfix"
|
||||||
|
"postgres"
|
||||||
"snmp"
|
"snmp"
|
||||||
"surfboard"
|
"surfboard"
|
||||||
"tor"
|
"tor"
|
||||||
@ -86,7 +88,7 @@ let
|
|||||||
};
|
};
|
||||||
user = mkOption {
|
user = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "nobody";
|
default = "${name}-exporter";
|
||||||
description = ''
|
description = ''
|
||||||
User name under which the ${name} exporter shall be run.
|
User name under which the ${name} exporter shall be run.
|
||||||
Has no effect when <option>systemd.services.prometheus-${name}-exporter.serviceConfig.DynamicUser</option> is true.
|
Has no effect when <option>systemd.services.prometheus-${name}-exporter.serviceConfig.DynamicUser</option> is true.
|
||||||
@ -94,7 +96,7 @@ let
|
|||||||
};
|
};
|
||||||
group = mkOption {
|
group = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "nobody";
|
default = "${name}-exporter";
|
||||||
description = ''
|
description = ''
|
||||||
Group under which the ${name} exporter shall be run.
|
Group under which the ${name} exporter shall be run.
|
||||||
Has no effect when <option>systemd.services.prometheus-${name}-exporter.serviceConfig.DynamicUser</option> is true.
|
Has no effect when <option>systemd.services.prometheus-${name}-exporter.serviceConfig.DynamicUser</option> is true.
|
||||||
@ -125,8 +127,23 @@ let
|
|||||||
);
|
);
|
||||||
|
|
||||||
mkExporterConf = { name, conf, serviceOpts }:
|
mkExporterConf = { name, conf, serviceOpts }:
|
||||||
|
let
|
||||||
|
enableDynamicUser = serviceOpts.serviceConfig.DynamicUser or true;
|
||||||
|
in
|
||||||
mkIf conf.enable {
|
mkIf conf.enable {
|
||||||
warnings = conf.warnings or [];
|
warnings = conf.warnings or [];
|
||||||
|
users.users = (mkIf (conf.user == "${name}-exporter" && !enableDynamicUser) {
|
||||||
|
"${name}-exporter" = {
|
||||||
|
description = ''
|
||||||
|
Prometheus ${name} exporter service user
|
||||||
|
'';
|
||||||
|
isSystemUser = true;
|
||||||
|
inherit (conf) group;
|
||||||
|
};
|
||||||
|
});
|
||||||
|
users.groups = (mkIf (conf.group == "${name}-exporter" && !enableDynamicUser) {
|
||||||
|
"${name}-exporter" = {};
|
||||||
|
});
|
||||||
networking.firewall.extraCommands = mkIf conf.openFirewall (concatStrings [
|
networking.firewall.extraCommands = mkIf conf.openFirewall (concatStrings [
|
||||||
"ip46tables -A nixos-fw ${conf.firewallFilter} "
|
"ip46tables -A nixos-fw ${conf.firewallFilter} "
|
||||||
"-m comment --comment ${name}-exporter -j nixos-fw-accept"
|
"-m comment --comment ${name}-exporter -j nixos-fw-accept"
|
||||||
@ -137,7 +154,8 @@ let
|
|||||||
serviceConfig.Restart = mkDefault "always";
|
serviceConfig.Restart = mkDefault "always";
|
||||||
serviceConfig.PrivateTmp = mkDefault true;
|
serviceConfig.PrivateTmp = mkDefault true;
|
||||||
serviceConfig.WorkingDirectory = mkDefault /tmp;
|
serviceConfig.WorkingDirectory = mkDefault /tmp;
|
||||||
} serviceOpts ] ++ optional (!(serviceOpts.serviceConfig.DynamicUser or false)) {
|
serviceConfig.DynamicUser = mkDefault enableDynamicUser;
|
||||||
|
} serviceOpts ] ++ optional (!enableDynamicUser) {
|
||||||
serviceConfig.User = conf.user;
|
serviceConfig.User = conf.user;
|
||||||
serviceConfig.Group = conf.group;
|
serviceConfig.Group = conf.group;
|
||||||
});
|
});
|
||||||
@ -162,13 +180,19 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
config = mkMerge ([{
|
config = mkMerge ([{
|
||||||
assertions = [{
|
assertions = [ {
|
||||||
assertion = (cfg.snmp.configurationPath == null) != (cfg.snmp.configuration == null);
|
assertion = (cfg.snmp.configurationPath == null) != (cfg.snmp.configuration == null);
|
||||||
message = ''
|
message = ''
|
||||||
Please ensure you have either `services.prometheus.exporters.snmp.configuration'
|
Please ensure you have either `services.prometheus.exporters.snmp.configuration'
|
||||||
or `services.prometheus.exporters.snmp.configurationPath' set!
|
or `services.prometheus.exporters.snmp.configurationPath' set!
|
||||||
'';
|
'';
|
||||||
}];
|
} {
|
||||||
|
assertion = (cfg.mail.configFile == null) != (cfg.mail.configuration == {});
|
||||||
|
message = ''
|
||||||
|
Please specify either 'services.prometheus.exporters.mail.configuration'
|
||||||
|
or 'services.prometheus.exporters.mail.configFile'.
|
||||||
|
'';
|
||||||
|
} ];
|
||||||
}] ++ [(mkIf config.services.minio.enable {
|
}] ++ [(mkIf config.services.minio.enable {
|
||||||
services.prometheus.exporters.minio.minioAddress = mkDefault "http://localhost:9000";
|
services.prometheus.exporters.minio.minioAddress = mkDefault "http://localhost:9000";
|
||||||
services.prometheus.exporters.minio.minioAccessKey = mkDefault config.services.minio.accessKey;
|
services.prometheus.exporters.minio.minioAccessKey = mkDefault config.services.minio.accessKey;
|
||||||
|
@ -159,8 +159,10 @@ in
|
|||||||
# `serviceOpts.script` and `serviceOpts.serviceConfig.ExecStart`
|
# `serviceOpts.script` and `serviceOpts.serviceConfig.ExecStart`
|
||||||
# has to be specified here. This will be merged with the default
|
# has to be specified here. This will be merged with the default
|
||||||
# service confiuration.
|
# service confiuration.
|
||||||
|
# Note that by default 'DynamicUser' is 'true'.
|
||||||
serviceOpts = {
|
serviceOpts = {
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
|
DynamicUser = false;
|
||||||
ExecStart = ''
|
ExecStart = ''
|
||||||
${pkgs.prometheus-postfix-exporter}/bin/postfix_exporter \
|
${pkgs.prometheus-postfix-exporter}/bin/postfix_exporter \
|
||||||
--web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
|
--web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
|
||||||
|
@ -39,7 +39,6 @@ in
|
|||||||
};
|
};
|
||||||
serviceOpts = {
|
serviceOpts = {
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
DynamicUser = true;
|
|
||||||
ExecStart = ''
|
ExecStart = ''
|
||||||
${pkgs.prometheus-bind-exporter}/bin/bind_exporter \
|
${pkgs.prometheus-bind-exporter}/bin/bind_exporter \
|
||||||
-web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
|
-web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
|
||||||
|
@ -18,7 +18,6 @@ in
|
|||||||
serviceOpts = {
|
serviceOpts = {
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
AmbientCapabilities = [ "CAP_NET_RAW" ]; # for ping probes
|
AmbientCapabilities = [ "CAP_NET_RAW" ]; # for ping probes
|
||||||
DynamicUser = true;
|
|
||||||
ExecStart = ''
|
ExecStart = ''
|
||||||
${pkgs.prometheus-blackbox-exporter}/bin/blackbox_exporter \
|
${pkgs.prometheus-blackbox-exporter}/bin/blackbox_exporter \
|
||||||
--web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
|
--web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
|
||||||
|
@ -64,7 +64,6 @@ in
|
|||||||
'' else "";
|
'' else "";
|
||||||
in {
|
in {
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
DynamicUser = true;
|
|
||||||
ExecStart = ''
|
ExecStart = ''
|
||||||
${pkgs.prometheus-collectd-exporter}/bin/collectd_exporter \
|
${pkgs.prometheus-collectd-exporter}/bin/collectd_exporter \
|
||||||
-log.format ${cfg.logFormat} \
|
-log.format ${cfg.logFormat} \
|
||||||
|
@ -26,7 +26,6 @@ in
|
|||||||
};
|
};
|
||||||
serviceOpts = {
|
serviceOpts = {
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
DynamicUser = true;
|
|
||||||
ExecStart = ''
|
ExecStart = ''
|
||||||
${pkgs.prometheus-dnsmasq-exporter}/bin/dnsmasq_exporter \
|
${pkgs.prometheus-dnsmasq-exporter}/bin/dnsmasq_exporter \
|
||||||
--listen ${cfg.listenAddress}:${toString cfg.port} \
|
--listen ${cfg.listenAddress}:${toString cfg.port} \
|
||||||
|
@ -39,8 +39,8 @@ in
|
|||||||
mail_plugins = $mail_plugins old_stats
|
mail_plugins = $mail_plugins old_stats
|
||||||
service old-stats {
|
service old-stats {
|
||||||
unix_listener old-stats {
|
unix_listener old-stats {
|
||||||
user = nobody
|
user = dovecot-exporter
|
||||||
group = nobody
|
group = dovecot-exporter
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
''';
|
''';
|
||||||
@ -59,6 +59,7 @@ in
|
|||||||
};
|
};
|
||||||
serviceOpts = {
|
serviceOpts = {
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
|
DynamicUser = false;
|
||||||
ExecStart = ''
|
ExecStart = ''
|
||||||
${pkgs.prometheus-dovecot-exporter}/bin/dovecot_exporter \
|
${pkgs.prometheus-dovecot-exporter}/bin/dovecot_exporter \
|
||||||
--web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
|
--web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
|
||||||
|
@ -26,7 +26,6 @@ in
|
|||||||
};
|
};
|
||||||
serviceOpts = {
|
serviceOpts = {
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
DynamicUser = true;
|
|
||||||
ExecStart = ''
|
ExecStart = ''
|
||||||
${pkgs.prometheus-fritzbox-exporter}/bin/exporter \
|
${pkgs.prometheus-fritzbox-exporter}/bin/exporter \
|
||||||
-listen-address ${cfg.listenAddress}:${toString cfg.port} \
|
-listen-address ${cfg.listenAddress}:${toString cfg.port} \
|
||||||
|
@ -24,7 +24,6 @@ in
|
|||||||
};
|
};
|
||||||
serviceOpts = {
|
serviceOpts = {
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
DynamicUser = true;
|
|
||||||
ExecStart = ''
|
ExecStart = ''
|
||||||
${pkgs.prometheus-json-exporter}/bin/prometheus-json-exporter \
|
${pkgs.prometheus-json-exporter}/bin/prometheus-json-exporter \
|
||||||
--port ${toString cfg.port} \
|
--port ${toString cfg.port} \
|
||||||
|
157
nixos/modules/services/monitoring/prometheus/exporters/mail.nix
Normal file
157
nixos/modules/services/monitoring/prometheus/exporters/mail.nix
Normal file
@ -0,0 +1,157 @@
|
|||||||
|
{ config, lib, pkgs, options }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.services.prometheus.exporters.mail;
|
||||||
|
|
||||||
|
configurationFile = pkgs.writeText "prometheus-mail-exporter.conf" (builtins.toJSON (
|
||||||
|
# removes the _module attribute, null values and converts attrNames to lowercase
|
||||||
|
mapAttrs' (name: value:
|
||||||
|
if name == "servers"
|
||||||
|
then nameValuePair (toLower name)
|
||||||
|
((map (srv: (mapAttrs' (n: v: nameValuePair (toLower n) v)
|
||||||
|
(filterAttrs (n: v: !(n == "_module" || v == null)) srv)
|
||||||
|
))) value)
|
||||||
|
else nameValuePair (toLower name) value
|
||||||
|
) (filterAttrs (n: _: !(n == "_module")) cfg.configuration)
|
||||||
|
));
|
||||||
|
|
||||||
|
serverOptions.options = {
|
||||||
|
name = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
description = ''
|
||||||
|
Value for label 'configname' which will be added to all metrics.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
server = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
description = ''
|
||||||
|
Hostname of the server that should be probed.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
port = mkOption {
|
||||||
|
type = types.int;
|
||||||
|
example = 587;
|
||||||
|
description = ''
|
||||||
|
Port to use for SMTP.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
from = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
example = "exporteruser@domain.tld";
|
||||||
|
description = ''
|
||||||
|
Content of 'From' Header for probing mails.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
to = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
example = "exporteruser@domain.tld";
|
||||||
|
description = ''
|
||||||
|
Content of 'To' Header for probing mails.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
detectionDir = mkOption {
|
||||||
|
type = types.path;
|
||||||
|
example = "/var/spool/mail/exporteruser/new";
|
||||||
|
description = ''
|
||||||
|
Directory in which new mails for the exporter user are placed.
|
||||||
|
Note that this needs to exist when the exporter starts.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
login = mkOption {
|
||||||
|
type = types.nullOr types.str;
|
||||||
|
default = null;
|
||||||
|
example = "exporteruser@domain.tld";
|
||||||
|
description = ''
|
||||||
|
Username to use for SMTP authentication.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
passphrase = mkOption {
|
||||||
|
type = types.nullOr types.str;
|
||||||
|
default = null;
|
||||||
|
description = ''
|
||||||
|
Password to use for SMTP authentication.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
exporterOptions.options = {
|
||||||
|
monitoringInterval = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
example = "10s";
|
||||||
|
description = ''
|
||||||
|
Time interval between two probe attempts.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
mailCheckTimeout = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
description = ''
|
||||||
|
Timeout until mails are considered "didn't make it".
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
disableFileDelition = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Disables the exporter's function to delete probing mails.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
servers = mkOption {
|
||||||
|
type = types.listOf (types.submodule serverOptions);
|
||||||
|
default = [];
|
||||||
|
example = literalExample ''
|
||||||
|
[ {
|
||||||
|
name = "testserver";
|
||||||
|
server = "smtp.domain.tld";
|
||||||
|
port = 587;
|
||||||
|
from = "exporteruser@domain.tld";
|
||||||
|
to = "exporteruser@domain.tld";
|
||||||
|
detectionDir = "/path/to/Maildir/new";
|
||||||
|
} ]
|
||||||
|
'';
|
||||||
|
description = ''
|
||||||
|
List of servers that should be probed.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
port = 9225;
|
||||||
|
extraOpts = {
|
||||||
|
configFile = mkOption {
|
||||||
|
type = types.nullOr types.path;
|
||||||
|
default = null;
|
||||||
|
description = ''
|
||||||
|
Specify the mailexporter configuration file to use.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
configuration = mkOption {
|
||||||
|
type = types.submodule exporterOptions;
|
||||||
|
default = {};
|
||||||
|
description = ''
|
||||||
|
Specify the mailexporter configuration file to use.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
telemetryPath = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "/metrics";
|
||||||
|
description = ''
|
||||||
|
Path under which to expose metrics.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
serviceOpts = {
|
||||||
|
serviceConfig = {
|
||||||
|
DynamicUser = false;
|
||||||
|
ExecStart = ''
|
||||||
|
${pkgs.prometheus-mail-exporter}/bin/mailexporter \
|
||||||
|
--web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
|
||||||
|
--config.file ${
|
||||||
|
if cfg.configuration != {} then configurationFile else cfg.configFile
|
||||||
|
} \
|
||||||
|
${concatStringsSep " \\\n " cfg.extraFlags}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -50,7 +50,6 @@ in
|
|||||||
};
|
};
|
||||||
serviceOpts = {
|
serviceOpts = {
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
DynamicUser = true;
|
|
||||||
ExecStart = ''
|
ExecStart = ''
|
||||||
${pkgs.prometheus-minio-exporter}/bin/minio-exporter \
|
${pkgs.prometheus-minio-exporter}/bin/minio-exporter \
|
||||||
-web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
|
-web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
|
||||||
|
@ -34,7 +34,6 @@ in
|
|||||||
};
|
};
|
||||||
serviceOpts = {
|
serviceOpts = {
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
DynamicUser = true;
|
|
||||||
ExecStart = ''
|
ExecStart = ''
|
||||||
${pkgs.prometheus-nginx-exporter}/bin/nginx-prometheus-exporter \
|
${pkgs.prometheus-nginx-exporter}/bin/nginx-prometheus-exporter \
|
||||||
--nginx.scrape-uri '${cfg.scrapeUri}' \
|
--nginx.scrape-uri '${cfg.scrapeUri}' \
|
||||||
|
@ -27,6 +27,7 @@ in
|
|||||||
};
|
};
|
||||||
serviceOpts = {
|
serviceOpts = {
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
|
DynamicUser = false;
|
||||||
RuntimeDirectory = "prometheus-node-exporter";
|
RuntimeDirectory = "prometheus-node-exporter";
|
||||||
ExecStart = ''
|
ExecStart = ''
|
||||||
${pkgs.prometheus-node-exporter}/bin/node_exporter \
|
${pkgs.prometheus-node-exporter}/bin/node_exporter \
|
||||||
|
@ -62,6 +62,7 @@ in
|
|||||||
};
|
};
|
||||||
serviceOpts = {
|
serviceOpts = {
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
|
DynamicUser = false;
|
||||||
ExecStart = ''
|
ExecStart = ''
|
||||||
${pkgs.prometheus-postfix-exporter}/bin/postfix_exporter \
|
${pkgs.prometheus-postfix-exporter}/bin/postfix_exporter \
|
||||||
--web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
|
--web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
|
||||||
|
@ -0,0 +1,47 @@
|
|||||||
|
{ config, lib, pkgs, options }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.services.prometheus.exporters.postgres;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
port = 9187;
|
||||||
|
extraOpts = {
|
||||||
|
telemetryPath = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "/metrics";
|
||||||
|
description = ''
|
||||||
|
Path under which to expose metrics.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
dataSourceName = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "user=postgres database=postgres host=/run/postgresql sslmode=disable";
|
||||||
|
example = "postgresql://username:password@localhost:5432/postgres?sslmode=disable";
|
||||||
|
description = ''
|
||||||
|
Accepts PostgreSQL URI form and key=value form arguments.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
runAsLocalSuperUser = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Whether to run the exporter as the local 'postgres' super user.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
serviceOpts = {
|
||||||
|
environment.DATA_SOURCE_NAME = cfg.dataSourceName;
|
||||||
|
serviceConfig = {
|
||||||
|
DynamicUser = false;
|
||||||
|
User = mkIf cfg.runAsLocalSuperUser (mkForce "postgres");
|
||||||
|
ExecStart = ''
|
||||||
|
${pkgs.prometheus-postgres-exporter}/bin/postgres_exporter \
|
||||||
|
--web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
|
||||||
|
--web.telemetry-path ${cfg.telemetryPath} \
|
||||||
|
${concatStringsSep " \\\n " cfg.extraFlags}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -57,7 +57,6 @@ in
|
|||||||
else "${pkgs.writeText "snmp-eporter-conf.yml" (builtins.toJSON cfg.configuration)}";
|
else "${pkgs.writeText "snmp-eporter-conf.yml" (builtins.toJSON cfg.configuration)}";
|
||||||
in {
|
in {
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
DynamicUser = true;
|
|
||||||
ExecStart = ''
|
ExecStart = ''
|
||||||
${pkgs.prometheus-snmp-exporter.bin}/bin/snmp_exporter \
|
${pkgs.prometheus-snmp-exporter.bin}/bin/snmp_exporter \
|
||||||
--config.file=${configFile} \
|
--config.file=${configFile} \
|
||||||
|
@ -20,7 +20,6 @@ in
|
|||||||
description = "Prometheus exporter for surfboard cable modem";
|
description = "Prometheus exporter for surfboard cable modem";
|
||||||
unitConfig.Documentation = "https://github.com/ipstatic/surfboard_exporter";
|
unitConfig.Documentation = "https://github.com/ipstatic/surfboard_exporter";
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
DynamicUser = true;
|
|
||||||
ExecStart = ''
|
ExecStart = ''
|
||||||
${pkgs.prometheus-surfboard-exporter}/bin/surfboard_exporter \
|
${pkgs.prometheus-surfboard-exporter}/bin/surfboard_exporter \
|
||||||
--web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
|
--web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
|
||||||
|
@ -26,7 +26,6 @@ in
|
|||||||
};
|
};
|
||||||
serviceOpts = {
|
serviceOpts = {
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
DynamicUser = true;
|
|
||||||
ExecStart = ''
|
ExecStart = ''
|
||||||
${pkgs.prometheus-tor-exporter}/bin/prometheus-tor-exporter \
|
${pkgs.prometheus-tor-exporter}/bin/prometheus-tor-exporter \
|
||||||
-b ${cfg.listenAddress} \
|
-b ${cfg.listenAddress} \
|
||||||
|
@ -51,7 +51,6 @@ in
|
|||||||
};
|
};
|
||||||
serviceOpts = {
|
serviceOpts = {
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
DynamicUser = true;
|
|
||||||
ExecStart = ''
|
ExecStart = ''
|
||||||
${pkgs.prometheus-unifi-exporter}/bin/unifi_exporter \
|
${pkgs.prometheus-unifi-exporter}/bin/unifi_exporter \
|
||||||
-telemetry.addr ${cfg.listenAddress}:${toString cfg.port} \
|
-telemetry.addr ${cfg.listenAddress}:${toString cfg.port} \
|
||||||
|
@ -69,6 +69,7 @@ in
|
|||||||
path = [ pkgs.varnish ];
|
path = [ pkgs.varnish ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
RestartSec = mkDefault 1;
|
RestartSec = mkDefault 1;
|
||||||
|
DynamicUser = false;
|
||||||
ExecStart = ''
|
ExecStart = ''
|
||||||
${pkgs.prometheus-varnish-exporter}/bin/prometheus_varnish_exporter \
|
${pkgs.prometheus-varnish-exporter}/bin/prometheus_varnish_exporter \
|
||||||
--web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
|
--web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
|
||||||
|
@ -36,19 +36,17 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
serviceOpts = {
|
serviceOpts = {
|
||||||
script = ''
|
path = [ pkgs.wireguard-tools ];
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
AmbientCapabilities = [ "CAP_NET_ADMIN" ];
|
||||||
|
ExecStart = ''
|
||||||
${pkgs.prometheus-wireguard-exporter}/bin/prometheus_wireguard_exporter \
|
${pkgs.prometheus-wireguard-exporter}/bin/prometheus_wireguard_exporter \
|
||||||
-p ${toString cfg.port} \
|
-p ${toString cfg.port} \
|
||||||
${optionalString cfg.verbose "-v"} \
|
${optionalString cfg.verbose "-v"} \
|
||||||
${optionalString cfg.singleSubnetPerField "-s"} \
|
${optionalString cfg.singleSubnetPerField "-s"} \
|
||||||
${optionalString (cfg.wireguardConfig != null) "-n ${cfg.wireguardConfig}"}
|
${optionalString (cfg.wireguardConfig != null) "-n ${cfg.wireguardConfig}"}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
path = [ pkgs.wireguard-tools ];
|
|
||||||
|
|
||||||
serviceConfig = {
|
|
||||||
DynamicUser = true;
|
|
||||||
AmbientCapabilities = [ "CAP_NET_ADMIN" ];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -48,6 +48,7 @@ in {
|
|||||||
requires = [ "keybase.service" ];
|
requires = [ "keybase.service" ];
|
||||||
after = [ "keybase.service" ];
|
after = [ "keybase.service" ];
|
||||||
path = [ "/run/wrappers" ];
|
path = [ "/run/wrappers" ];
|
||||||
|
unitConfig.ConditionUser = "!@system";
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p ${cfg.mountPoint}";
|
ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p ${cfg.mountPoint}";
|
||||||
ExecStart = "${pkgs.kbfs}/bin/kbfsfuse ${toString cfg.extraFlags} ${cfg.mountPoint}";
|
ExecStart = "${pkgs.kbfs}/bin/kbfsfuse ${toString cfg.extraFlags} ${cfg.mountPoint}";
|
||||||
|
@ -26,6 +26,7 @@ in {
|
|||||||
|
|
||||||
systemd.user.services.keybase = {
|
systemd.user.services.keybase = {
|
||||||
description = "Keybase service";
|
description = "Keybase service";
|
||||||
|
unitConfig.ConditionUser = "!@system";
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = ''
|
ExecStart = ''
|
||||||
${pkgs.keybase}/bin/keybase service --auto-forked
|
${pkgs.keybase}/bin/keybase service --auto-forked
|
||||||
|
@ -372,16 +372,18 @@ in {
|
|||||||
|
|
||||||
systemd.packages = [ pkgs.syncthing ];
|
systemd.packages = [ pkgs.syncthing ];
|
||||||
|
|
||||||
users = mkIf (cfg.systemService && cfg.user == defaultUser) {
|
users.users = mkIf (cfg.systemService && cfg.user == defaultUser) {
|
||||||
users."${defaultUser}" =
|
"${defaultUser}" =
|
||||||
{ group = cfg.group;
|
{ group = cfg.group;
|
||||||
home = cfg.dataDir;
|
home = cfg.dataDir;
|
||||||
createHome = true;
|
createHome = true;
|
||||||
uid = config.ids.uids.syncthing;
|
uid = config.ids.uids.syncthing;
|
||||||
description = "Syncthing daemon user";
|
description = "Syncthing daemon user";
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
groups."${defaultUser}".gid =
|
users.groups = mkIf (cfg.systemService && cfg.group == defaultUser) {
|
||||||
|
"${defaultUser}".gid =
|
||||||
config.ids.gids.syncthing;
|
config.ids.gids.syncthing;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -188,6 +188,47 @@ let
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
mail = {
|
||||||
|
exporterConfig = {
|
||||||
|
enable = true;
|
||||||
|
configuration = {
|
||||||
|
monitoringInterval = "2s";
|
||||||
|
mailCheckTimeout = "10s";
|
||||||
|
servers = [ {
|
||||||
|
name = "testserver";
|
||||||
|
server = "localhost";
|
||||||
|
port = 25;
|
||||||
|
from = "mail-exporter@localhost";
|
||||||
|
to = "mail-exporter@localhost";
|
||||||
|
detectionDir = "/var/spool/mail/mail-exporter/new";
|
||||||
|
} ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
metricProvider = {
|
||||||
|
services.postfix.enable = true;
|
||||||
|
systemd.services.prometheus-mail-exporter = {
|
||||||
|
after = [ "postfix.service" ];
|
||||||
|
requires = [ "postfix.service" ];
|
||||||
|
preStart = ''
|
||||||
|
mkdir -p 0600 mail-exporter/new
|
||||||
|
'';
|
||||||
|
serviceConfig = {
|
||||||
|
ProtectHome = true;
|
||||||
|
ReadOnlyPaths = "/";
|
||||||
|
ReadWritePaths = "/var/spool/mail";
|
||||||
|
WorkingDirectory = "/var/spool/mail";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
users.users.mailexporter.isSystemUser = true;
|
||||||
|
};
|
||||||
|
exporterTest = ''
|
||||||
|
waitForUnit("postfix.service")
|
||||||
|
waitForUnit("prometheus-mail-exporter.service")
|
||||||
|
waitForOpenPort(9225)
|
||||||
|
waitUntilSucceeds("curl -sSf http://localhost:9225/metrics | grep -q 'mail_deliver_success{configname=\"testserver\"} 1'")
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
nginx = {
|
nginx = {
|
||||||
exporterConfig = {
|
exporterConfig = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@ -232,6 +273,30 @@ let
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
postgres = {
|
||||||
|
exporterConfig = {
|
||||||
|
enable = true;
|
||||||
|
runAsLocalSuperUser = true;
|
||||||
|
};
|
||||||
|
metricProvider = {
|
||||||
|
services.postgresql.enable = true;
|
||||||
|
};
|
||||||
|
exporterTest = ''
|
||||||
|
waitForUnit("prometheus-postgres-exporter.service");
|
||||||
|
waitForOpenPort(9187);
|
||||||
|
waitForUnit("postgresql.service");
|
||||||
|
succeed("curl -sSf http://localhost:9187/metrics | grep -q 'pg_exporter_last_scrape_error 0'");
|
||||||
|
succeed("curl -sSf http://localhost:9187/metrics | grep -q 'pg_up 1'");
|
||||||
|
systemctl("stop postgresql.service");
|
||||||
|
succeed("curl -sSf http://localhost:9187/metrics | grep -qv 'pg_exporter_last_scrape_error 0'");
|
||||||
|
succeed("curl -sSf http://localhost:9187/metrics | grep -q 'pg_up 0'");
|
||||||
|
systemctl("start postgresql.service");
|
||||||
|
waitForUnit("postgresql.service");
|
||||||
|
succeed("curl -sSf http://localhost:9187/metrics | grep -q 'pg_exporter_last_scrape_error 0'");
|
||||||
|
succeed("curl -sSf http://localhost:9187/metrics | grep -q 'pg_up 1'");
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
snmp = {
|
snmp = {
|
||||||
exporterConfig = {
|
exporterConfig = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{ fetchurl, stdenv, squashfsTools, xorg, alsaLib, makeWrapper, openssl, freetype
|
{ fetchurl, stdenv, squashfsTools, xorg, alsaLib, makeWrapper, openssl, freetype
|
||||||
, glib, pango, cairo, atk, gdk-pixbuf, gtk2, cups, nspr, nss, libpng, libnotify
|
, glib, pango, cairo, atk, gdk-pixbuf, gtk2, cups, nspr, nss, libpng, libnotify
|
||||||
, libgcrypt, systemd, fontconfig, dbus, expat, ffmpeg_3, curl, zlib, gnome3
|
, libgcrypt, systemd, fontconfig, dbus, expat, ffmpeg_3, curl, zlib, gnome3
|
||||||
, at-spi2-atk
|
, at-spi2-atk, at-spi2-core, apulse
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
@ -10,20 +10,22 @@ let
|
|||||||
# If an update breaks things, one of those might have valuable info:
|
# If an update breaks things, one of those might have valuable info:
|
||||||
# https://aur.archlinux.org/packages/spotify/
|
# https://aur.archlinux.org/packages/spotify/
|
||||||
# https://community.spotify.com/t5/Desktop-Linux
|
# https://community.spotify.com/t5/Desktop-Linux
|
||||||
version = "1.0.96.181.gf6bc1b6b-12";
|
version = "1.1.10.546.ge08ef575-19";
|
||||||
# To get the latest stable revision:
|
# 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'
|
# 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:
|
# To get general information:
|
||||||
# curl -H 'Snap-Device-Series: 16' 'https://api.snapcraft.io/v2/snaps/info/spotify' | jq '.'
|
# curl -H 'Snap-Device-Series: 16' 'https://api.snapcraft.io/v2/snaps/info/spotify' | jq '.'
|
||||||
# More examples of api usage:
|
# More examples of api usage:
|
||||||
# https://github.com/canonical-websites/snapcraft.io/blob/master/webapp/publisher/snaps/views.py
|
# https://github.com/canonical-websites/snapcraft.io/blob/master/webapp/publisher/snaps/views.py
|
||||||
rev = "30";
|
rev = "36";
|
||||||
|
|
||||||
|
|
||||||
deps = [
|
deps = [
|
||||||
alsaLib
|
alsaLib
|
||||||
|
apulse
|
||||||
atk
|
atk
|
||||||
at-spi2-atk
|
at-spi2-atk
|
||||||
|
at-spi2-core
|
||||||
cairo
|
cairo
|
||||||
cups
|
cups
|
||||||
curl
|
curl
|
||||||
@ -72,7 +74,7 @@ stdenv.mkDerivation {
|
|||||||
# https://community.spotify.com/t5/Desktop-Linux/Redistribute-Spotify-on-Linux-Distributions/td-p/1695334
|
# https://community.spotify.com/t5/Desktop-Linux/Redistribute-Spotify-on-Linux-Distributions/td-p/1695334
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://api.snapcraft.io/api/v1/snaps/download/pOBIoZ2LrCB3rDohMxoYGnbN14EHOgD7_${rev}.snap";
|
url = "https://api.snapcraft.io/api/v1/snaps/download/pOBIoZ2LrCB3rDohMxoYGnbN14EHOgD7_${rev}.snap";
|
||||||
sha512 = "859730fbc80067f0828f7e13eee9a21b13b749f897a50e17c2da4ee672785cfd79e1af6336e609529d105e040dc40f61b6189524783ac93d49f991c4ea8b3c56";
|
sha512 = "c49f1a86a9b737e64a475bbe62754a36f607669e908eb725a2395f0a0a6b95968e0c8ce27ab2c8b6c92fe8cbacb1ef58de11c79b92dc0f58c2c6d3a140706a1f";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ squashfsTools makeWrapper ];
|
buildInputs = [ squashfsTools makeWrapper ];
|
||||||
@ -134,6 +136,8 @@ stdenv.mkDerivation {
|
|||||||
librarypath="${stdenv.lib.makeLibraryPath deps}:$libdir"
|
librarypath="${stdenv.lib.makeLibraryPath deps}:$libdir"
|
||||||
wrapProgram $out/share/spotify/spotify \
|
wrapProgram $out/share/spotify/spotify \
|
||||||
--prefix LD_LIBRARY_PATH : "$librarypath" \
|
--prefix LD_LIBRARY_PATH : "$librarypath" \
|
||||||
|
--prefix LD_LIBRARY_PATH : "${apulse}/lib/apulse" \
|
||||||
|
--set APULSE_PLAYBACK_DEVICE plug:dmix \
|
||||||
--prefix PATH : "${gnome3.zenity}/bin"
|
--prefix PATH : "${gnome3.zenity}/bin"
|
||||||
|
|
||||||
# fix Icon line in the desktop file (#48062)
|
# fix Icon line in the desktop file (#48062)
|
||||||
@ -158,7 +162,7 @@ stdenv.mkDerivation {
|
|||||||
homepage = https://www.spotify.com/;
|
homepage = https://www.spotify.com/;
|
||||||
description = "Play music from the Spotify music service";
|
description = "Play music from the Spotify music service";
|
||||||
license = licenses.unfree;
|
license = licenses.unfree;
|
||||||
maintainers = with maintainers; [ eelco ftrvxmtrx sheenobu mudri timokau ];
|
maintainers = with maintainers; [ eelco ftrvxmtrx sheenobu mudri timokau angristan ];
|
||||||
platforms = [ "x86_64-linux" ];
|
platforms = [ "x86_64-linux" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
90
pkgs/applications/editors/emacs-modes/libgenerated.nix
Normal file
90
pkgs/applications/editors/emacs-modes/libgenerated.nix
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
lib: self:
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
fetcherGenerators = { repo ? null
|
||||||
|
, url ? null
|
||||||
|
, ... }:
|
||||||
|
{ sha256
|
||||||
|
, commit
|
||||||
|
, ...}: {
|
||||||
|
github = self.callPackage ({ fetchFromGitHub }:
|
||||||
|
fetchFromGitHub {
|
||||||
|
owner = lib.head (lib.splitString "/" repo);
|
||||||
|
repo = lib.head (lib.tail (lib.splitString "/" repo));
|
||||||
|
rev = commit;
|
||||||
|
inherit sha256;
|
||||||
|
}
|
||||||
|
) {};
|
||||||
|
gitlab = self.callPackage ({ fetchFromGitLab }:
|
||||||
|
fetchFromGitLab {
|
||||||
|
owner = lib.head (lib.splitString "/" repo);
|
||||||
|
repo = lib.head (lib.tail (lib.splitString "/" repo));
|
||||||
|
rev = commit;
|
||||||
|
inherit sha256;
|
||||||
|
}
|
||||||
|
) {};
|
||||||
|
git = self.callPackage ({ fetchgit }:
|
||||||
|
fetchgit {
|
||||||
|
rev = commit;
|
||||||
|
inherit sha256 url;
|
||||||
|
}
|
||||||
|
) {};
|
||||||
|
bitbucket = self.callPackage ({ fetchhg }:
|
||||||
|
fetchhg {
|
||||||
|
rev = commit;
|
||||||
|
url = "https://bitbucket.com/${repo}";
|
||||||
|
inherit sha256;
|
||||||
|
}
|
||||||
|
) {};
|
||||||
|
hg = self.callPackage ({ fetchhg }:
|
||||||
|
fetchhg {
|
||||||
|
rev = commit;
|
||||||
|
inherit sha256 url;
|
||||||
|
}
|
||||||
|
) {};
|
||||||
|
};
|
||||||
|
|
||||||
|
in {
|
||||||
|
|
||||||
|
melpaDerivation = variant:
|
||||||
|
{ ename, fetcher
|
||||||
|
, commit ? null
|
||||||
|
, sha256 ? null
|
||||||
|
, ... }@args:
|
||||||
|
let
|
||||||
|
sourceArgs = args."${variant}";
|
||||||
|
version = sourceArgs.version or null;
|
||||||
|
deps = sourceArgs.deps or null;
|
||||||
|
error = sourceArgs.error or args.error or null;
|
||||||
|
hasSource = lib.hasAttr variant args;
|
||||||
|
pname = builtins.replaceStrings [ "@" ] [ "at" ] ename;
|
||||||
|
broken = ! isNull error;
|
||||||
|
in
|
||||||
|
lib.nameValuePair ename (if hasSource then (
|
||||||
|
self.callPackage ({ melpaBuild, fetchurl, ... }@pkgargs:
|
||||||
|
melpaBuild {
|
||||||
|
inherit pname;
|
||||||
|
ename = ename;
|
||||||
|
version = if isNull version then "" else
|
||||||
|
lib.concatStringsSep "." (map toString version);
|
||||||
|
# TODO: Broken should not result in src being null (hack to avoid eval errors)
|
||||||
|
src = if (isNull sha256 || broken) then null else
|
||||||
|
lib.getAttr fetcher (fetcherGenerators args sourceArgs);
|
||||||
|
recipe = if isNull commit then null else
|
||||||
|
fetchurl {
|
||||||
|
name = pname + "-recipe";
|
||||||
|
url = "https://raw.githubusercontent.com/melpa/melpa/${commit}/recipes/${ename}";
|
||||||
|
inherit sha256;
|
||||||
|
};
|
||||||
|
packageRequires = lib.optional (! isNull deps)
|
||||||
|
(map (dep: pkgargs."${dep}" or self."${dep}" or null)
|
||||||
|
deps);
|
||||||
|
meta = (sourceArgs.meta or {}) // {
|
||||||
|
inherit broken;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
) {}
|
||||||
|
) else null);
|
||||||
|
|
||||||
|
}
|
111400
pkgs/applications/editors/emacs-modes/melpa-generated.nix
generated
111400
pkgs/applications/editors/emacs-modes/melpa-generated.nix
generated
File diff suppressed because it is too large
Load Diff
@ -4,12 +4,11 @@
|
|||||||
|
|
||||||
To update the list of packages from MELPA,
|
To update the list of packages from MELPA,
|
||||||
|
|
||||||
1. Clone https://github.com/ttuegel/emacs2nix.
|
1. Run ./update-melpa
|
||||||
2. Clone https://github.com/milkypostman/melpa.
|
2. Check for evaluation errors:
|
||||||
3. Run `./melpa-packages.sh --melpa PATH_TO_MELPA_CLONE` from emacs2nix.
|
env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPackagesNg.melpaStablePackages
|
||||||
4. Copy the new `melpa-generated.nix` file into Nixpkgs.
|
env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPackagesNg.melpaPackages
|
||||||
5. Check for evaluation errors: `nix-instantiate ./. -A emacsPackagesNg.melpaPackages`.
|
3. `git commit -m "melpa-packages: $(date -Idate)" recipes-archive-melpa.json`
|
||||||
6. `git add pkgs/applications/editors/emacs-modes/melpa-generated.nix && git commit -m "melpa-packages $(date -Idate)"`
|
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -18,7 +17,9 @@ To update the list of packages from MELPA,
|
|||||||
self:
|
self:
|
||||||
|
|
||||||
let
|
let
|
||||||
imported = import ./melpa-generated.nix { inherit (self) callPackage; };
|
inherit (import ./libgenerated.nix lib self) melpaDerivation;
|
||||||
|
imported = lib.listToAttrs (map (melpaDerivation "unstable")
|
||||||
|
(lib.importJSON ./recipes-archive-melpa.json));
|
||||||
super = builtins.removeAttrs imported [
|
super = builtins.removeAttrs imported [
|
||||||
"swbuff-x" # required dependency swbuff is missing
|
"swbuff-x" # required dependency swbuff is missing
|
||||||
];
|
];
|
||||||
@ -233,6 +234,12 @@ self:
|
|||||||
# upstream issue: missing file header
|
# upstream issue: missing file header
|
||||||
textmate = markBroken super.textmate;
|
textmate = markBroken super.textmate;
|
||||||
|
|
||||||
|
treemacs-magit = super.treemacs-magit.overrideAttrs (attrs: {
|
||||||
|
# searches for Git at build time
|
||||||
|
nativeBuildInputs =
|
||||||
|
(attrs.nativeBuildInputs or []) ++ [ external.git ];
|
||||||
|
});
|
||||||
|
|
||||||
# missing OCaml
|
# missing OCaml
|
||||||
utop = markBroken super.utop;
|
utop = markBroken super.utop;
|
||||||
|
|
||||||
@ -258,6 +265,29 @@ self:
|
|||||||
'';
|
'';
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
# Map legacy renames from emacs2nix since code generation was ported to emacs lisp
|
||||||
|
_0blayout = super."0blayout";
|
||||||
|
_0xc = super."0xc";
|
||||||
|
_2048-game = super."2048-game";
|
||||||
|
_4clojure = super."4clojure";
|
||||||
|
at = super."@";
|
||||||
|
desktop-plus = super."desktop+";
|
||||||
|
# filesets-plus = super."filesets+";
|
||||||
|
ghub-plus = super."ghub+";
|
||||||
|
git-gutter-plus = super."git-gutter+";
|
||||||
|
git-gutter-fringe-plus = super."git-gutter-fringe+";
|
||||||
|
ido-completing-read-plus = super."ido-completing-read+";
|
||||||
|
image-plus = super."image+";
|
||||||
|
image-dired-plus = super."image-dired+";
|
||||||
|
markdown-mode-plus = super."markdown-mode+";
|
||||||
|
package-plus = super."package+";
|
||||||
|
rect-plus = super."rect+";
|
||||||
|
term-plus = super."term+";
|
||||||
|
term-plus-key-intercept = super."term+key-intercept";
|
||||||
|
term-plus-mux = super."term+mux";
|
||||||
|
xml-plus = super."xml+";
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
melpaPackages =
|
melpaPackages =
|
||||||
|
56691
pkgs/applications/editors/emacs-modes/melpa-stable-generated.nix
generated
56691
pkgs/applications/editors/emacs-modes/melpa-stable-generated.nix
generated
File diff suppressed because it is too large
Load Diff
@ -4,22 +4,23 @@
|
|||||||
|
|
||||||
To update the list of packages from MELPA,
|
To update the list of packages from MELPA,
|
||||||
|
|
||||||
1. Clone https://github.com/ttuegel/emacs2nix.
|
|
||||||
2. Clone https://github.com/milkypostman/melpa.
|
1. Run ./update-melpa
|
||||||
3. Run `./melpa-stable-packages.sh --melpa PATH_TO_MELPA_CLONE` from emacs2nix.
|
2. Check for evaluation errors:
|
||||||
4. Copy the new `melpa-stable-generated.nix` file into Nixpkgs.
|
env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPackagesNg.melpaStablePackages
|
||||||
5. Check for evaluation errors: `nix-instantiate ./. -A emacsPackagesNg.melpaStablePackages`.
|
env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPackagesNg.melpaPackages
|
||||||
6. `git add pkgs/applications/editors/emacs-modes/melpa-stable-generated.nix && git commit -m "melpa-stable-packages $(date -Idate)"`
|
3. `git commit -m "melpa-packages: $(date -Idate)" recipes-archive-melpa.json`
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
{ external }:
|
{ lib, external }:
|
||||||
|
|
||||||
self:
|
self:
|
||||||
|
|
||||||
let
|
let
|
||||||
imported = import ./melpa-stable-generated.nix { inherit (self) callPackage; };
|
inherit (import ./libgenerated.nix lib self) melpaDerivation;
|
||||||
|
imported = lib.listToAttrs (map (melpaDerivation "stable")
|
||||||
|
(lib.importJSON ./recipes-archive-melpa.json));
|
||||||
super = imported;
|
super = imported;
|
||||||
|
|
||||||
dontConfigure = pkg: pkg.override (args: {
|
dontConfigure = pkg: pkg.override (args: {
|
||||||
@ -28,11 +29,11 @@ self:
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
markBroken = pkg: pkg.override (args: {
|
markBroken = pkg: if pkg != null then pkg.override (args: {
|
||||||
melpaBuild = drv: args.melpaBuild (drv // {
|
melpaBuild = drv: args.melpaBuild (drv // {
|
||||||
meta = (drv.meta or {}) // { broken = true; };
|
meta = (drv.meta or {}) // { broken = true; };
|
||||||
});
|
});
|
||||||
});
|
}) else null;
|
||||||
|
|
||||||
overrides = {
|
overrides = {
|
||||||
# Expects bash to be at /bin/bash
|
# Expects bash to be at /bin/bash
|
||||||
@ -205,6 +206,28 @@ self:
|
|||||||
|
|
||||||
# upstream issue: missing file header
|
# upstream issue: missing file header
|
||||||
window-numbering = markBroken super.window-numbering;
|
window-numbering = markBroken super.window-numbering;
|
||||||
|
|
||||||
|
# Map legacy renames from emacs2nix since code generation was ported to emacs lisp
|
||||||
|
_0blayout = super."0blayout";
|
||||||
|
_0xc = super."0xc";
|
||||||
|
_2048-game = super."2048-game";
|
||||||
|
_4clojure = super."4clojure";
|
||||||
|
at = super."@";
|
||||||
|
desktop-plus = super."desktop+";
|
||||||
|
ghub-plus = super."ghub+";
|
||||||
|
git-gutter-plus = super."git-gutter+";
|
||||||
|
git-gutter-fringe-plus = super."git-gutter-fringe+";
|
||||||
|
ido-completing-read-plus = super."ido-completing-read+";
|
||||||
|
image-plus = super."image+";
|
||||||
|
image-dired-plus = super."image-dired+";
|
||||||
|
markdown-mode-plus = super."markdown-mode+";
|
||||||
|
package-plus = super."package+";
|
||||||
|
rect-plus = super."rect+";
|
||||||
|
term-plus = super."term+";
|
||||||
|
term-plus-key-intercept = super."term+key-intercept";
|
||||||
|
term-plus-mux = super."term+mux";
|
||||||
|
xml-plus = super."xml+";
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
melpaStablePackages = super // overrides;
|
melpaStablePackages = super // overrides;
|
||||||
|
96458
pkgs/applications/editors/emacs-modes/recipes-archive-melpa.json
Normal file
96458
pkgs/applications/editors/emacs-modes/recipes-archive-melpa.json
Normal file
File diff suppressed because it is too large
Load Diff
8
pkgs/applications/editors/emacs-modes/update-melpa
Executable file
8
pkgs/applications/editors/emacs-modes/update-melpa
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#! /usr/bin/env nix-shell
|
||||||
|
#! nix-shell --show-trace -i sh -p git nix nix-prefetch-git nix-prefetch-hg "import ./updater-emacs.nix"
|
||||||
|
|
||||||
|
# "with import ../../../.. {}; emacsWithPackages (epkgs: with epkgs.melpaPackages; [ promise semaphore ])"
|
||||||
|
|
||||||
|
exec emacs --fg-daemon=updater --quick -l update-melpa.el -f run-updater "$@"
|
||||||
|
|
||||||
|
# exec emacs update-melpa.el "$@"
|
434
pkgs/applications/editors/emacs-modes/update-melpa.el
Normal file
434
pkgs/applications/editors/emacs-modes/update-melpa.el
Normal file
@ -0,0 +1,434 @@
|
|||||||
|
;; -*- lexical-binding: t -*-
|
||||||
|
|
||||||
|
;; This is the updater for recipes-archive-melpa.json
|
||||||
|
|
||||||
|
(require 'promise)
|
||||||
|
(require 'semaphore-promise)
|
||||||
|
(require 'url)
|
||||||
|
(require 'json)
|
||||||
|
(require 'cl)
|
||||||
|
(require 'subr-x)
|
||||||
|
(require 'seq)
|
||||||
|
|
||||||
|
;; # Lib
|
||||||
|
|
||||||
|
(defun alist-set (key value alist)
|
||||||
|
(cons
|
||||||
|
(cons key value)
|
||||||
|
(assq-delete-all
|
||||||
|
key alist)))
|
||||||
|
|
||||||
|
(defun alist-update (key f alist)
|
||||||
|
(let ((value (alist-get key alist)))
|
||||||
|
(cons
|
||||||
|
(cons key (funcall f value))
|
||||||
|
(assq-delete-all
|
||||||
|
key alist))))
|
||||||
|
|
||||||
|
|
||||||
|
(defun process-promise (semaphore program &rest args)
|
||||||
|
"Generate an asynchronous process and
|
||||||
|
return Promise to resolve in that process."
|
||||||
|
(promise-then
|
||||||
|
(semaphore-promise-gated
|
||||||
|
semaphore
|
||||||
|
(lambda (resolve reject)
|
||||||
|
(funcall resolve (apply #'promise:make-process program args))))
|
||||||
|
#'car))
|
||||||
|
|
||||||
|
(defun mangle-name (s)
|
||||||
|
(if (string-match "^[a-zA-Z].*" s)
|
||||||
|
s
|
||||||
|
(concat "_" s)))
|
||||||
|
|
||||||
|
;; ## Shell promise + env
|
||||||
|
|
||||||
|
(defun as-string (o)
|
||||||
|
(with-output-to-string (princ o)))
|
||||||
|
|
||||||
|
(defun assocenv (env &rest namevals)
|
||||||
|
(let ((process-environment (copy-sequence env)))
|
||||||
|
(mapc (lambda (e)
|
||||||
|
(setenv (as-string (car e))
|
||||||
|
(cadr e)))
|
||||||
|
(seq-partition namevals 2))
|
||||||
|
process-environment))
|
||||||
|
|
||||||
|
(defun shell-promise (semaphore env script)
|
||||||
|
(semaphore-promise-gated
|
||||||
|
semaphore
|
||||||
|
(lambda (resolve reject)
|
||||||
|
(let ((process-environment env))
|
||||||
|
(funcall resolve (promise:make-shell-command script))))))
|
||||||
|
|
||||||
|
;; # Updater
|
||||||
|
|
||||||
|
;; ## Previous Archive Reader
|
||||||
|
|
||||||
|
(defun previous-commit (index ename variant)
|
||||||
|
(when-let (pdesc (and index (gethash ename index)))
|
||||||
|
(when-let (desc (and pdesc (gethash variant pdesc)))
|
||||||
|
(gethash 'commit desc))))
|
||||||
|
|
||||||
|
(defun previous-sha256 (index ename variant)
|
||||||
|
(when-let (pdesc (and index (gethash ename index)))
|
||||||
|
(when-let (desc (and pdesc (gethash variant pdesc)))
|
||||||
|
(gethash 'sha256 desc))))
|
||||||
|
|
||||||
|
(defun parse-previous-archive (filename)
|
||||||
|
(let ((idx (make-hash-table :test 'equal)))
|
||||||
|
(loop for desc in
|
||||||
|
(let ((json-object-type 'hash-table)
|
||||||
|
(json-array-type 'list)
|
||||||
|
(json-key-type 'symbol))
|
||||||
|
(json-read-file filename))
|
||||||
|
do (puthash (gethash 'ename desc)
|
||||||
|
desc idx))
|
||||||
|
idx))
|
||||||
|
|
||||||
|
;; ## Prefetcher
|
||||||
|
|
||||||
|
;; (defun latest-git-revision (url)
|
||||||
|
;; (process-promise "git" "ls-remote" url))
|
||||||
|
|
||||||
|
(defun prefetch (semaphore fetcher repo commit)
|
||||||
|
(promise-then
|
||||||
|
(apply 'process-promise
|
||||||
|
semaphore
|
||||||
|
(pcase fetcher
|
||||||
|
("github" (list "nix-prefetch-url"
|
||||||
|
"--unpack" (concat "https://github.com/" repo "/archive/" commit ".tar.gz")))
|
||||||
|
("gitlab" (list "nix-prefetch-url"
|
||||||
|
"--unpack" (concat "https://gitlab.com/" repo "/repository/archive.tar.gz?ref=" commit)))
|
||||||
|
("bitbucket" (list "nix-prefetch-hg"
|
||||||
|
(concat "https://bitbucket.com/" repo) commit))
|
||||||
|
("hg" (list "nix-prefetch-hg"
|
||||||
|
repo commit))
|
||||||
|
("git" (list "nix-prefetch-git"
|
||||||
|
"--fetch-submodules"
|
||||||
|
"--url" repo
|
||||||
|
"--rev" commit))
|
||||||
|
(_ (throw 'unknown-fetcher fetcher))))
|
||||||
|
(lambda (res)
|
||||||
|
(pcase fetcher
|
||||||
|
("git" (alist-get 'sha256 (json-read-from-string res)))
|
||||||
|
(_ (car (split-string res)))))))
|
||||||
|
|
||||||
|
(defun source-sha (semaphore ename eprops aprops previous variant)
|
||||||
|
(let* ((fetcher (alist-get 'fetcher eprops))
|
||||||
|
(url (alist-get 'url eprops))
|
||||||
|
(repo (alist-get 'repo eprops))
|
||||||
|
(commit (gethash 'commit aprops))
|
||||||
|
(prev-commit (previous-commit previous ename variant))
|
||||||
|
(prev-sha256 (previous-sha256 previous ename variant)))
|
||||||
|
(if (and commit prev-sha256
|
||||||
|
(equal prev-commit commit))
|
||||||
|
(progn
|
||||||
|
(message "INFO: %s: re-using %s %s" ename prev-commit prev-sha256)
|
||||||
|
(promise-resolve `((sha256 . ,prev-sha256))))
|
||||||
|
(if (and commit (or repo url))
|
||||||
|
(promise-then
|
||||||
|
(prefetch semaphore fetcher (or repo url) commit)
|
||||||
|
(lambda (sha256)
|
||||||
|
(message "INFO: %s: prefetched repository %s %s" ename commit sha256)
|
||||||
|
`((sha256 . ,sha256)))
|
||||||
|
(lambda (err)
|
||||||
|
(message "ERROR: %s: during prefetch %s" ename err)
|
||||||
|
(promise-resolve
|
||||||
|
`((error . ,err)))))
|
||||||
|
(progn
|
||||||
|
(message "ERROR: %s: no commit information" ename)
|
||||||
|
(promise-resolve
|
||||||
|
`((error . "No commit information"))))))))
|
||||||
|
|
||||||
|
(defun source-info (recipe archive source-sha)
|
||||||
|
(let* ((esym (car recipe))
|
||||||
|
(ename (symbol-name esym))
|
||||||
|
(eprops (cdr recipe))
|
||||||
|
(aentry (gethash esym archive))
|
||||||
|
(version (and aentry (gethash 'ver aentry)))
|
||||||
|
(deps (when-let (deps (gethash 'deps aentry))
|
||||||
|
(remove 'emacs (hash-table-keys deps))))
|
||||||
|
(aprops (and aentry (gethash 'props aentry)))
|
||||||
|
(commit (gethash 'commit aprops)))
|
||||||
|
(append `((version . ,version))
|
||||||
|
(when (< 0 (length deps))
|
||||||
|
`((deps . ,(sort deps 'string<))))
|
||||||
|
`((commit . ,commit))
|
||||||
|
source-sha)))
|
||||||
|
|
||||||
|
(defun recipe-info (recipe-index ename)
|
||||||
|
(if-let (desc (gethash ename recipe-index))
|
||||||
|
(destructuring-bind (rcp-commit . rcp-sha256) desc
|
||||||
|
`((commit . ,rcp-commit)
|
||||||
|
(sha256 . ,rcp-sha256)))
|
||||||
|
`((error . "No recipe info"))))
|
||||||
|
|
||||||
|
(defun start-fetch (semaphore recipe-index-promise recipes unstable-archive stable-archive previous)
|
||||||
|
(promise-all
|
||||||
|
(mapcar (lambda (entry)
|
||||||
|
(let* ((esym (car entry))
|
||||||
|
(ename (symbol-name esym))
|
||||||
|
(eprops (cdr entry))
|
||||||
|
(fetcher (alist-get 'fetcher eprops))
|
||||||
|
(url (alist-get 'url eprops))
|
||||||
|
(repo (alist-get 'repo eprops))
|
||||||
|
|
||||||
|
(unstable-aentry (gethash esym unstable-archive))
|
||||||
|
(unstable-aprops (and unstable-aentry (gethash 'props unstable-aentry)))
|
||||||
|
(unstable-commit (and unstable-aprops (gethash 'commit unstable-aprops)))
|
||||||
|
|
||||||
|
(stable-aentry (gethash esym stable-archive))
|
||||||
|
(stable-aprops (and stable-aentry (gethash 'props stable-aentry)))
|
||||||
|
(stable-commit (and stable-aprops (gethash 'commit stable-aprops)))
|
||||||
|
|
||||||
|
(unstable-shap (if unstable-aprops
|
||||||
|
(source-sha semaphore ename eprops unstable-aprops previous 'unstable)
|
||||||
|
(promise-resolve nil)))
|
||||||
|
(stable-shap (if (equal unstable-commit stable-commit)
|
||||||
|
unstable-shap
|
||||||
|
(if stable-aprops
|
||||||
|
(source-sha semaphore ename eprops stable-aprops previous 'stable)
|
||||||
|
(promise-resolve nil)))))
|
||||||
|
|
||||||
|
(promise-then
|
||||||
|
(promise-all (list recipe-index-promise unstable-shap stable-shap))
|
||||||
|
(lambda (res)
|
||||||
|
(seq-let [recipe-index unstable-sha stable-sha] res
|
||||||
|
(append `((ename . ,ename))
|
||||||
|
(if-let (desc (gethash ename recipe-index))
|
||||||
|
(destructuring-bind (rcp-commit . rcp-sha256) desc
|
||||||
|
(append `((commit . ,rcp-commit)
|
||||||
|
(sha256 . ,rcp-sha256))
|
||||||
|
(when (not unstable-aprops)
|
||||||
|
(message "ERROR: %s: not in archive" ename)
|
||||||
|
`((error . "Not in archive")))))
|
||||||
|
`((error . "No recipe info")))
|
||||||
|
`((fetcher . ,fetcher))
|
||||||
|
(if (or (equal "github" fetcher)
|
||||||
|
(equal "bitbucket" fetcher)
|
||||||
|
(equal "gitlab" fetcher))
|
||||||
|
`((repo . ,repo))
|
||||||
|
`((url . ,url)))
|
||||||
|
(when unstable-aprops `((unstable . ,(source-info entry unstable-archive unstable-sha))))
|
||||||
|
(when stable-aprops `((stable . ,(source-info entry stable-archive stable-sha))))))))))
|
||||||
|
recipes)))
|
||||||
|
|
||||||
|
;; ## Emitter
|
||||||
|
|
||||||
|
(defun emit-json (prefetch-semaphore recipe-index-promise recipes archive stable-archive previous)
|
||||||
|
(promise-then
|
||||||
|
(start-fetch
|
||||||
|
prefetch-semaphore
|
||||||
|
recipe-index-promise
|
||||||
|
(sort recipes (lambda (a b)
|
||||||
|
(string-lessp
|
||||||
|
(symbol-name (car a))
|
||||||
|
(symbol-name (car b)))))
|
||||||
|
archive stable-archive
|
||||||
|
previous)
|
||||||
|
(lambda (descriptors)
|
||||||
|
(message "Finished downloading %d descriptors" (length descriptors))
|
||||||
|
(let ((buf (generate-new-buffer "*recipes-archive*")))
|
||||||
|
(with-current-buffer buf
|
||||||
|
;; (switch-to-buffer buf)
|
||||||
|
;; (json-mode)
|
||||||
|
(insert
|
||||||
|
(let ((json-encoding-pretty-print t)
|
||||||
|
(json-encoding-default-indentation " "))
|
||||||
|
(json-encode descriptors)))
|
||||||
|
buf)))))
|
||||||
|
|
||||||
|
;; ## Recipe indexer
|
||||||
|
|
||||||
|
(defun http-get (url parser)
|
||||||
|
(promise-new
|
||||||
|
(lambda (resolve reject)
|
||||||
|
(url-retrieve
|
||||||
|
url (lambda (status)
|
||||||
|
(funcall resolve (condition-case err
|
||||||
|
(progn
|
||||||
|
(goto-char (point-min))
|
||||||
|
(search-forward "\n\n")
|
||||||
|
(message (buffer-substring (point-min) (point)))
|
||||||
|
(delete-region (point-min) (point))
|
||||||
|
(funcall parser))
|
||||||
|
(funcall reject err))))))))
|
||||||
|
|
||||||
|
(defun json-read-buffer (buffer)
|
||||||
|
(with-current-buffer buffer
|
||||||
|
(save-excursion
|
||||||
|
(mark-whole-buffer)
|
||||||
|
(json-read))))
|
||||||
|
|
||||||
|
(defun error-count (recipes-archive)
|
||||||
|
(length
|
||||||
|
(seq-filter
|
||||||
|
(lambda (desc)
|
||||||
|
(alist-get 'error desc))
|
||||||
|
recipes-archive)))
|
||||||
|
|
||||||
|
;; (error-count (json-read-buffer "recipes-archive-melpa.json"))
|
||||||
|
|
||||||
|
(defun latest-recipe-commit (semaphore repo base-rev recipe)
|
||||||
|
(shell-promise
|
||||||
|
semaphore (assocenv process-environment
|
||||||
|
"GIT_DIR" repo
|
||||||
|
"BASE_REV" base-rev
|
||||||
|
"RECIPE" recipe)
|
||||||
|
"exec git log --first-parent -n1 --pretty=format:%H $BASE_REV -- recipes/$RECIPE"))
|
||||||
|
|
||||||
|
(defun latest-recipe-sha256 (semaphore repo base-rev recipe)
|
||||||
|
(promise-then
|
||||||
|
(shell-promise
|
||||||
|
semaphore (assocenv process-environment
|
||||||
|
"GIT_DIR" repo
|
||||||
|
"BASE_REV" base-rev
|
||||||
|
"RECIPE" recipe)
|
||||||
|
"exec nix-hash --flat --type sha256 --base32 <(
|
||||||
|
git cat-file blob $(
|
||||||
|
git ls-tree $BASE_REV recipes/$RECIPE | cut -f1 | cut -d' ' -f3
|
||||||
|
)
|
||||||
|
)")
|
||||||
|
(lambda (res)
|
||||||
|
(car
|
||||||
|
(split-string res)))))
|
||||||
|
|
||||||
|
(defun index-recipe-commits (semaphore repo base-rev recipes)
|
||||||
|
(promise-then
|
||||||
|
(promise-all
|
||||||
|
(mapcar (lambda (recipe)
|
||||||
|
(promise-then
|
||||||
|
(latest-recipe-commit semaphore repo base-rev recipe)
|
||||||
|
(let ((sha256p (latest-recipe-sha256 semaphore repo base-rev recipe)))
|
||||||
|
(lambda (commit)
|
||||||
|
(promise-then sha256p
|
||||||
|
(lambda (sha256)
|
||||||
|
(message "Indexed Recipe %s %s %s" recipe commit sha256)
|
||||||
|
(cons recipe (cons commit sha256))))))))
|
||||||
|
recipes))
|
||||||
|
(lambda (rcp-commits)
|
||||||
|
(let ((idx (make-hash-table :test 'equal)))
|
||||||
|
(mapc (lambda (rcpc)
|
||||||
|
(puthash (car rcpc) (cdr rcpc) idx))
|
||||||
|
rcp-commits)
|
||||||
|
idx))))
|
||||||
|
|
||||||
|
(defun with-melpa-checkout (resolve)
|
||||||
|
(let ((tmpdir (make-temp-file "melpa-" t)))
|
||||||
|
(promise-finally
|
||||||
|
(promise-then
|
||||||
|
(shell-promise
|
||||||
|
(semaphore-create 1 "dummy")
|
||||||
|
(assocenv process-environment "MELPA_DIR" tmpdir)
|
||||||
|
"cd $MELPA_DIR
|
||||||
|
(git init --bare
|
||||||
|
git remote add origin https://github.com/melpa/melpa.git
|
||||||
|
git fetch origin) 1>&2
|
||||||
|
echo -n $MELPA_DIR")
|
||||||
|
(lambda (dir)
|
||||||
|
(message "Created melpa checkout %s" dir)
|
||||||
|
(funcall resolve dir)))
|
||||||
|
(lambda ()
|
||||||
|
(delete-directory tmpdir t)
|
||||||
|
(message "Deleted melpa checkout %s" tmpdir)))))
|
||||||
|
|
||||||
|
(defun list-recipes (repo base-rev)
|
||||||
|
(promise-then
|
||||||
|
(shell-promise nil (assocenv process-environment
|
||||||
|
"GIT_DIR" repo
|
||||||
|
"BASE_REV" base-rev)
|
||||||
|
"git ls-tree --name-only $BASE_REV recipes/")
|
||||||
|
(lambda (s)
|
||||||
|
(mapcar (lambda (n)
|
||||||
|
(substring n 8))
|
||||||
|
(split-string s)))))
|
||||||
|
|
||||||
|
;; ## Main runner
|
||||||
|
|
||||||
|
(defvar recipe-indexp)
|
||||||
|
(defvar archivep)
|
||||||
|
|
||||||
|
(defun run-updater ()
|
||||||
|
(message "Turning off logging to *Message* buffer")
|
||||||
|
(setq message-log-max nil)
|
||||||
|
(setenv "GIT_ASKPASS")
|
||||||
|
(setenv "SSH_ASKPASS")
|
||||||
|
(setq process-adaptive-read-buffering nil)
|
||||||
|
|
||||||
|
;; Indexer and Prefetcher run in parallel
|
||||||
|
|
||||||
|
;; Recipe Indexer
|
||||||
|
(setq recipe-indexp
|
||||||
|
(with-melpa-checkout
|
||||||
|
(lambda (repo)
|
||||||
|
(promise-then
|
||||||
|
(promise-then
|
||||||
|
(list-recipes repo "origin/master")
|
||||||
|
(lambda (recipe-names)
|
||||||
|
(promise:make-thread #'index-recipe-commits
|
||||||
|
;; The indexer runs on a local git repository,
|
||||||
|
;; so it is CPU bound.
|
||||||
|
;; Adjust for core count + 2
|
||||||
|
(semaphore-create 6 "local-indexer")
|
||||||
|
repo "origin/master"
|
||||||
|
;; (seq-take recipe-names 20)
|
||||||
|
recipe-names)))
|
||||||
|
(lambda (res)
|
||||||
|
(message "Indexed Recipes: %d" (hash-table-count res))
|
||||||
|
(defvar recipe-index res)
|
||||||
|
res)
|
||||||
|
(lambda (err)
|
||||||
|
(message "ERROR: %s" err))))))
|
||||||
|
|
||||||
|
;; Prefetcher + Emitter
|
||||||
|
(setq archivep
|
||||||
|
(promise-then
|
||||||
|
(promise-then (promise-all
|
||||||
|
(list (http-get "https://melpa.org/recipes.json"
|
||||||
|
(lambda ()
|
||||||
|
(let ((json-object-type 'alist)
|
||||||
|
(json-array-type 'list)
|
||||||
|
(json-key-type 'symbol))
|
||||||
|
(json-read))))
|
||||||
|
(http-get "https://melpa.org/archive.json"
|
||||||
|
(lambda ()
|
||||||
|
(let ((json-object-type 'hash-table)
|
||||||
|
(json-array-type 'list)
|
||||||
|
(json-key-type 'symbol))
|
||||||
|
(json-read))))
|
||||||
|
(http-get "https://stable.melpa.org/archive.json"
|
||||||
|
(lambda ()
|
||||||
|
(let ((json-object-type 'hash-table)
|
||||||
|
(json-array-type 'list)
|
||||||
|
(json-key-type 'symbol))
|
||||||
|
(json-read))))))
|
||||||
|
(lambda (resolved)
|
||||||
|
(message "Finished download")
|
||||||
|
(seq-let [recipes-content archive-content stable-archive-content] resolved
|
||||||
|
;; The prefetcher is network bound, so 64 seems a good estimate
|
||||||
|
;; for parallel network connections
|
||||||
|
(promise:make-thread #'emit-json (semaphore-create 64 "prefetch-pool")
|
||||||
|
recipe-indexp
|
||||||
|
recipes-content
|
||||||
|
archive-content
|
||||||
|
stable-archive-content
|
||||||
|
(parse-previous-archive "recipes-archive-melpa.json")))))
|
||||||
|
(lambda (buf)
|
||||||
|
(with-current-buffer buf
|
||||||
|
(write-file "recipes-archive-melpa.json")))
|
||||||
|
(lambda (err)
|
||||||
|
(message "ERROR: %s" err))))
|
||||||
|
|
||||||
|
;; Shutdown routine
|
||||||
|
(make-thread
|
||||||
|
(lambda ()
|
||||||
|
(promise-finally archivep
|
||||||
|
(lambda ()
|
||||||
|
;; (message "Joining threads %s" (all-threads))
|
||||||
|
;; (mapc (lambda (thr)
|
||||||
|
;; (when (not (eq thr (current-thread)))
|
||||||
|
;; (thread-join thr)))
|
||||||
|
;; (all-threads))
|
||||||
|
|
||||||
|
(kill-emacs 0))))))
|
29
pkgs/applications/editors/emacs-modes/updater-emacs.nix
Normal file
29
pkgs/applications/editors/emacs-modes/updater-emacs.nix
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
with import ../../../.. {};
|
||||||
|
(emacsPackagesNgFor emacs26).
|
||||||
|
emacsWithPackages (epkgs: let
|
||||||
|
promise = epkgs.trivialBuild {
|
||||||
|
pname = "promise";
|
||||||
|
version = "1";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "bendlas";
|
||||||
|
repo = "emacs-promise";
|
||||||
|
rev = "4da97087c5babbd8429b5ce62a8323b9b03c6022";
|
||||||
|
sha256 = "0yin7kj69g4zxs30pvk47cnfygxlaw7jc7chr3b36lz51yqczjsy";
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
semaphore = epkgs.trivialBuild {
|
||||||
|
pname = "semaphore";
|
||||||
|
version = "1";
|
||||||
|
packageRequires = [ promise ];
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "webnf";
|
||||||
|
repo = "semaphore.el";
|
||||||
|
rev = "93802cb093073bc6a6ccd797328dafffcef248e0";
|
||||||
|
sha256 = "09pfyp27m35sv340xarhld7xx2vv5fs5xj4418709iw6l6hpk853";
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in [ promise semaphore ]
|
||||||
|
# ++ (with epkgs.melpaPackages; [ smex rainbow-delimiters paredit ])
|
||||||
|
)
|
@ -1,9 +1,8 @@
|
|||||||
{ stdenv, fetchFromGitHub, qmake, pkgconfig, qttools, qtwebengine, hunspell }:
|
{ stdenv, mkDerivation, fetchFromGitHub, qmake, pkgconfig, qttools, qtwebengine, hunspell }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
mkDerivation rec {
|
||||||
pname = "ghostwriter";
|
pname = "ghostwriter";
|
||||||
version = "1.8.0";
|
version = "1.8.0";
|
||||||
name = "${pname}-${version}";
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "wereturtle";
|
owner = "wereturtle";
|
||||||
|
@ -3,13 +3,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "goxel-${version}";
|
name = "goxel-${version}";
|
||||||
version = "0.9.0";
|
version = "0.10.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "guillaumechereau";
|
owner = "guillaumechereau";
|
||||||
repo = "goxel";
|
repo = "goxel";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "1vd1vw5pplm4ig9f5gwnbvndnag1h7j0jj0cnj78gpiv96qak2vw";
|
sha256 = "1mdw4bs7hvfn0yngd9ial5wzlfkcbhr3wzldb1w7s3s48agixkdr";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [ ./disable-imgui_ini.patch ];
|
patches = [ ./disable-imgui_ini.patch ];
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{ clipnotify, makeWrapper, xsel, dmenu2, utillinux, gawk, stdenv, fetchFromGitHub, lib }:
|
{ clipnotify, makeWrapper, xsel, dmenu, utillinux, gawk, stdenv, fetchFromGitHub, lib }:
|
||||||
let
|
let
|
||||||
runtimePath = lib.makeBinPath [ clipnotify xsel dmenu2 utillinux gawk ];
|
runtimePath = lib.makeBinPath [ clipnotify xsel dmenu utillinux gawk ];
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "clipmenu-${version}";
|
name = "clipmenu-${version}";
|
||||||
|
@ -1,29 +0,0 @@
|
|||||||
{stdenv, fetchhg, libX11, libXinerama, libXft, zlib}:
|
|
||||||
|
|
||||||
with stdenv.lib;
|
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
name = "dmenu2-0.3pre-2014-07-08";
|
|
||||||
|
|
||||||
src = fetchhg {
|
|
||||||
url = "https://bitbucket.org/melek/dmenu2";
|
|
||||||
rev = "36cb94a16edf928bdaaa636123392517ed469be0";
|
|
||||||
sha256 = "1b17z5ypg6ij7zz3ncp3irc87raccna10y4w490c872a99lp23lv";
|
|
||||||
};
|
|
||||||
|
|
||||||
buildInputs = [ libX11 libXinerama zlib libXft ];
|
|
||||||
|
|
||||||
postPatch = ''
|
|
||||||
sed -ri -e 's!\<(dmenu|stest)\>!'"$out/bin"'/&!g' dmenu_run
|
|
||||||
'';
|
|
||||||
|
|
||||||
preConfigure = [ ''sed -i "s@PREFIX = /usr/local@PREFIX = $out@g" config.mk'' ];
|
|
||||||
|
|
||||||
meta = {
|
|
||||||
description = "A patched fork of the original dmenu - an efficient dynamic menu for X";
|
|
||||||
homepage = https://bitbucket.org/melek/dmenu2;
|
|
||||||
license = licenses.mit;
|
|
||||||
maintainers = [ maintainers.cstrahan ];
|
|
||||||
platforms = platforms.all;
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,6 +1,6 @@
|
|||||||
{ stdenv, fetchurl, fetchpatch, cmake, qtscript, qtwebengine, gdal, proj, routino, quazip }:
|
{ mkDerivation, lib, fetchurl, fetchpatch, cmake, qtscript, qtwebengine, gdal, proj, routino, quazip }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
mkDerivation rec {
|
||||||
name = "qmapshack-${version}";
|
name = "qmapshack-${version}";
|
||||||
version = "1.13.0";
|
version = "1.13.0";
|
||||||
|
|
||||||
@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
|
|||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with lib; {
|
||||||
homepage = https://bitbucket.org/maproom/qmapshack/wiki/Home;
|
homepage = https://bitbucket.org/maproom/qmapshack/wiki/Home;
|
||||||
description = "Plan your next outdoor trip";
|
description = "Plan your next outdoor trip";
|
||||||
license = licenses.gpl3;
|
license = licenses.gpl3;
|
||||||
|
@ -3,11 +3,9 @@
|
|||||||
, gtk, girara, gettext, libxml2, check
|
, gtk, girara, gettext, libxml2, check
|
||||||
, sqlite, glib, texlive, libintl, libseccomp
|
, sqlite, glib, texlive, libintl, libseccomp
|
||||||
, file, librsvg
|
, file, librsvg
|
||||||
, gtk-mac-integration, synctexSupport ? true
|
, gtk-mac-integration
|
||||||
}:
|
}:
|
||||||
|
|
||||||
assert synctexSupport -> texlive != null;
|
|
||||||
|
|
||||||
with stdenv.lib;
|
with stdenv.lib;
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
@ -29,7 +27,8 @@ stdenv.mkDerivation rec {
|
|||||||
# "-Dseccomp=enabled"
|
# "-Dseccomp=enabled"
|
||||||
"-Dmanpages=enabled"
|
"-Dmanpages=enabled"
|
||||||
"-Dconvert-icon=enabled"
|
"-Dconvert-icon=enabled"
|
||||||
] ++ optional synctexSupport "-Dsynctex=enabled";
|
"-Dsynctex=enabled"
|
||||||
|
];
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
meson ninja pkgconfig desktop-file-utils python3.pkgs.sphinx
|
meson ninja pkgconfig desktop-file-utils python3.pkgs.sphinx
|
||||||
@ -38,8 +37,8 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
gtk girara libintl sqlite glib file librsvg
|
gtk girara libintl sqlite glib file librsvg
|
||||||
] ++ optional synctexSupport texlive.bin.core
|
texlive.bin.core
|
||||||
++ optional stdenv.isLinux libseccomp
|
] ++ optional stdenv.isLinux libseccomp
|
||||||
++ optional stdenv.isDarwin gtk-mac-integration;
|
++ optional stdenv.isDarwin gtk-mac-integration;
|
||||||
|
|
||||||
doCheck = true;
|
doCheck = true;
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
{ config, pkgs
|
{ config, pkgs
|
||||||
# zathura_pdf_mupdf fails to load _opj_create_decompress at runtime on Darwin (https://github.com/NixOS/nixpkgs/pull/61295#issue-277982980)
|
# zathura_pdf_mupdf fails to load _opj_create_decompress at runtime on Darwin (https://github.com/NixOS/nixpkgs/pull/61295#issue-277982980)
|
||||||
, useMupdf ? config.zathura.useMupdf or (!pkgs.stdenv.isDarwin)
|
, useMupdf ? config.zathura.useMupdf or (!pkgs.stdenv.isDarwin) }:
|
||||||
, synctexSupport ? true }:
|
|
||||||
|
|
||||||
let
|
let
|
||||||
callPackage = pkgs.newScope self;
|
callPackage = pkgs.newScope self;
|
||||||
@ -9,9 +8,7 @@ let
|
|||||||
self = rec {
|
self = rec {
|
||||||
gtk = pkgs.gtk3;
|
gtk = pkgs.gtk3;
|
||||||
|
|
||||||
zathura_core = callPackage ./core {
|
zathura_core = callPackage ./core { };
|
||||||
inherit synctexSupport;
|
|
||||||
};
|
|
||||||
|
|
||||||
zathura_pdf_poppler = callPackage ./pdf-poppler { };
|
zathura_pdf_poppler = callPackage ./pdf-poppler { };
|
||||||
|
|
||||||
|
@ -67,7 +67,8 @@ let
|
|||||||
in attrs: concatStringsSep " " (attrValues (mapAttrs toFlag attrs));
|
in attrs: concatStringsSep " " (attrValues (mapAttrs toFlag attrs));
|
||||||
|
|
||||||
gnSystemLibraries = [
|
gnSystemLibraries = [
|
||||||
"flac" "libwebp" "libxslt" "yasm" "opus" "snappy" "libpng" "zlib"
|
"flac" "libwebp" "libxslt" "yasm" "opus" "snappy" "libpng"
|
||||||
|
# "zlib" # version 77 reports unresolved dependency on //third_party/zlib:zlib_config
|
||||||
# "libjpeg" # fails with multiple undefined references to chromium_jpeg_*
|
# "libjpeg" # fails with multiple undefined references to chromium_jpeg_*
|
||||||
# "re2" # fails with linker errors
|
# "re2" # fails with linker errors
|
||||||
# "ffmpeg" # https://crbug.com/731766
|
# "ffmpeg" # https://crbug.com/731766
|
||||||
|
@ -1,18 +1,18 @@
|
|||||||
# This file is autogenerated from update.sh in the same directory.
|
# This file is autogenerated from update.sh in the same directory.
|
||||||
{
|
{
|
||||||
beta = {
|
beta = {
|
||||||
sha256 = "0pq7q7plbmfg2f6m74wl2l19k15ik2mvw56bfzk4c9cdns8w6b8a";
|
sha256 = "1521vh38mfgy7aj1lw1vpbdm8m6wyh52d5p7bz4x6kvvxsnacp11";
|
||||||
sha256bin64 = "09zf3kldvi8zh7arvl94vjmbvgsghwa51b5j0ic8ncdn880dlq0j";
|
sha256bin64 = "0rbc0ld655szg42mqjdby8749d2jg34nlpp4cpq66qb4zi6vvb04";
|
||||||
version = "76.0.3809.25";
|
version = "76.0.3809.87";
|
||||||
};
|
};
|
||||||
dev = {
|
dev = {
|
||||||
sha256 = "19v1i4ks5rpwdcwmfj8qqni4afyhnddb5hbbisabnjif3b8xrvjw";
|
sha256 = "15v25nwcdxqgw6n0ym7fz5qaq0a74p0wiwcq155xy6zvr3q8q1nw";
|
||||||
sha256bin64 = "0vsbxvqidrvw797h0and67pdb4maijsiv6jkpj3kqaxakiwnadxj";
|
sha256bin64 = "1qawl0hsl6qpc10avli8raw4nzwcpmp6dyada5pga7i4k5jpsr95";
|
||||||
version = "76.0.3809.21";
|
version = "77.0.3860.5";
|
||||||
};
|
};
|
||||||
stable = {
|
stable = {
|
||||||
sha256 = "0f9qjhxvk8sajj7qa061crfmln65q7sniylrgp0qijwyw6xrmddi";
|
sha256 = "1521vh38mfgy7aj1lw1vpbdm8m6wyh52d5p7bz4x6kvvxsnacp11";
|
||||||
sha256bin64 = "1xvqfrq119iwgvd2d4z2v2ladi2kl52kji55yxdmyi377dpk5rfa";
|
sha256bin64 = "0hnfn2zxdrp96a4p98r08w4krzwkpb1kp4rjk03754akjyg1b3xx";
|
||||||
version = "75.0.3770.90";
|
version = "76.0.3809.87";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -97,8 +97,8 @@ in rec {
|
|||||||
terraform_0_11-full = terraform_0_11.full;
|
terraform_0_11-full = terraform_0_11.full;
|
||||||
|
|
||||||
terraform_0_12 = pluggable (generic {
|
terraform_0_12 = pluggable (generic {
|
||||||
version = "0.12.5";
|
version = "0.12.6";
|
||||||
sha256 = "0p064rhaanwx4szs8hv6mdqad8d2bgfd94h2la11j58xbsxc7hap";
|
sha256 = "0vxvciv4amblxx50wivlm60fyj1ardfgdpj3l8cj9fhi79b3khxl";
|
||||||
patches = [ ./provider-path.patch ];
|
patches = [ ./provider-path.patch ];
|
||||||
passthru = { inherit plugins; };
|
passthru = { inherit plugins; };
|
||||||
});
|
});
|
||||||
|
29
pkgs/applications/networking/dsvpn/default.nix
Normal file
29
pkgs/applications/networking/dsvpn/default.nix
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
{ stdenv, fetchFromGitHub }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "dsvpn";
|
||||||
|
version = "0.1.0";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "jedisct1";
|
||||||
|
repo = pname;
|
||||||
|
rev = version;
|
||||||
|
sha256 = "1g747197zpg83ba9l9vxg8m3jv13wcprhnyr8asdxq745kzmynsr";
|
||||||
|
};
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
install -Dm755 -t $out/bin dsvpn
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "A Dead Simple VPN";
|
||||||
|
homepage = "https://github.com/jedisct1/dsvpn";
|
||||||
|
license = licenses.mit;
|
||||||
|
maintainers = [ maintainers.marsam ];
|
||||||
|
platforms = platforms.unix;
|
||||||
|
};
|
||||||
|
}
|
@ -1,36 +1,83 @@
|
|||||||
{ stdenv, fetchFromGitLab, meson, ninja, gettext, cargo, rustc, python3, rustPlatform, pkgconfig, gtksourceview
|
{ stdenv
|
||||||
, hicolor-icon-theme, glib, libhandy, gtk3, libsecret, dbus, openssl, sqlite, gst_all_1, wrapGAppsHook, fetchpatch }:
|
, fetchFromGitLab
|
||||||
|
, fetchpatch
|
||||||
|
, meson
|
||||||
|
, ninja
|
||||||
|
, gettext
|
||||||
|
, cargo
|
||||||
|
, rustc
|
||||||
|
, python3
|
||||||
|
, rustPlatform
|
||||||
|
, pkgconfig
|
||||||
|
, gtksourceview
|
||||||
|
, hicolor-icon-theme
|
||||||
|
, glib
|
||||||
|
, libhandy
|
||||||
|
, gtk3
|
||||||
|
, dbus
|
||||||
|
, openssl
|
||||||
|
, sqlite
|
||||||
|
, gst_all_1
|
||||||
|
, cairo
|
||||||
|
, gdk-pixbuf
|
||||||
|
, gspell
|
||||||
|
, wrapGAppsHook
|
||||||
|
}:
|
||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
version = "4.0.0";
|
pname = "fractal";
|
||||||
name = "fractal-${version}";
|
version = "4.2.0";
|
||||||
|
|
||||||
src = fetchFromGitLab {
|
src = fetchFromGitLab {
|
||||||
domain = "gitlab.gnome.org";
|
domain = "gitlab.gnome.org";
|
||||||
owner = "GNOME";
|
owner = "GNOME";
|
||||||
repo = "fractal";
|
repo = "fractal";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "05q47jdgbi5jz01280msb8gxnbsrgf2jvglfm6k40f1xw4wxkrzy";
|
sha256 = "0clwsmd6h759bzlazfq5ig56dbx7npx3h43yspk87j1rm2dp1177";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
cargoSha256 = "1hwjajkphl5439dymglgj3h92hxgbf7xpipzrga7ga8m10nx1dhl";
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
meson ninja pkgconfig gettext cargo rustc python3 wrapGAppsHook
|
cargo
|
||||||
];
|
gettext
|
||||||
buildInputs = [
|
meson
|
||||||
glib gtk3 libhandy dbus openssl sqlite gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-plugins-bad
|
ninja
|
||||||
gtksourceview hicolor-icon-theme libsecret
|
pkgconfig
|
||||||
|
python3
|
||||||
|
rustc
|
||||||
|
wrapGAppsHook
|
||||||
];
|
];
|
||||||
|
|
||||||
patches = [
|
buildInputs = [
|
||||||
# Fixes build with >= gstreamer 1.15.1
|
cairo
|
||||||
|
dbus
|
||||||
|
gdk-pixbuf
|
||||||
|
glib
|
||||||
|
gspell
|
||||||
|
gst_all_1.gst-editing-services
|
||||||
|
gst_all_1.gst-plugins-bad
|
||||||
|
gst_all_1.gst-plugins-base
|
||||||
|
gst_all_1.gstreamer
|
||||||
|
gtk3
|
||||||
|
gtksourceview
|
||||||
|
hicolor-icon-theme
|
||||||
|
libhandy
|
||||||
|
openssl
|
||||||
|
sqlite
|
||||||
|
];
|
||||||
|
|
||||||
|
cargoPatches = [
|
||||||
|
# https://gitlab.gnome.org/GNOME/fractal/merge_requests/446
|
||||||
(fetchpatch {
|
(fetchpatch {
|
||||||
url = "https://gitlab.gnome.org/GNOME/fractal/commit/e78f36c25c095ea09c9c421187593706ad7c4065.patch";
|
url = "https://gitlab.gnome.org/GNOME/fractal/commit/2778acdc6c50bc6f034513029b66b0b092bc4c38.patch";
|
||||||
sha256 = "1qv7ayhkhgrrldag2lzs9ql17nbc1d72j375ljhhf6cms89r19ir";
|
sha256 = "08v17xmbwrjw688ps4hsnd60d5fm26xj72an3zf6yszha2b97j6y";
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
patchShebangs scripts/meson_post_install.py
|
chmod +x scripts/test.sh
|
||||||
|
patchShebangs scripts/meson_post_install.py scripts/test.sh
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# Don't use buildRustPackage phases, only use it for rust deps setup
|
# Don't use buildRustPackage phases, only use it for rust deps setup
|
||||||
@ -39,13 +86,11 @@ rustPlatform.buildRustPackage rec {
|
|||||||
checkPhase = null;
|
checkPhase = null;
|
||||||
installPhase = null;
|
installPhase = null;
|
||||||
|
|
||||||
cargoSha256 = "1ax5dv200v8mfx0418bx8sbwpbp6zj469xg75hp78kqfiv83pn1g";
|
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
description = "Matrix group messaging app";
|
description = "Matrix group messaging app";
|
||||||
homepage = https://gitlab.gnome.org/GNOME/fractal;
|
homepage = https://gitlab.gnome.org/GNOME/fractal;
|
||||||
license = licenses.gpl3;
|
license = licenses.gpl3;
|
||||||
maintainers = with maintainers; [ dtzWill ];
|
maintainers = with maintainers; [ dtzWill worldofpeace ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{ stdenv, fetchFromGitHub, fetchNodeModules, nodejs-8_x, ruby, sencha
|
{ stdenv, fetchFromGitHub, fetchNodeModules, nodejs-10_x, ruby, sencha
|
||||||
, auth0ClientID, auth0Domain }:
|
, auth0ClientID, auth0Domain }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
@ -12,12 +12,12 @@ stdenv.mkDerivation rec {
|
|||||||
sha256 = "1h44srl2gzkhjaazpwz1pwy4dp5x776fc685kahlvjlsfls0fvy9";
|
sha256 = "1h44srl2gzkhjaazpwz1pwy4dp5x776fc685kahlvjlsfls0fvy9";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ nodejs-8_x ruby sencha ];
|
nativeBuildInputs = [ nodejs-10_x ruby sencha ];
|
||||||
|
|
||||||
node_modules = fetchNodeModules {
|
node_modules = fetchNodeModules {
|
||||||
inherit src;
|
inherit src;
|
||||||
|
|
||||||
nodejs = nodejs-8_x;
|
nodejs = nodejs-10_x;
|
||||||
sha256 = "0qsgr8cq81yismal5sqr02skakqpynwwzk5s98dr5bg91y361fgy";
|
sha256 = "0qsgr8cq81yismal5sqr02skakqpynwwzk5s98dr5bg91y361fgy";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2,26 +2,19 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "rambox-pro";
|
pname = "rambox-pro";
|
||||||
version = "1.1.2";
|
version = "1.1.4";
|
||||||
|
|
||||||
dontBuild = true;
|
dontBuild = true;
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
|
|
||||||
buildInputs = [ nss xorg.libxkbfile ];
|
buildInputs = [ nss xorg.libXext xorg.libxkbfile xorg.libXScrnSaver ];
|
||||||
nativeBuildInputs = [ autoPatchelfHook makeWrapper nodePackages.asar ];
|
nativeBuildInputs = [ autoPatchelfHook makeWrapper nodePackages.asar ];
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/ramboxapp/download/releases/download/v${version}/RamboxPro-${version}-linux-x64.tar.gz";
|
url = "https://github.com/ramboxapp/download/releases/download/v${version}/RamboxPro-${version}-linux-x64.tar.gz";
|
||||||
sha256 = "0rrfpl371hp278b02b9b6745ax29yrdfmxrmkxv6d158jzlv0dlr";
|
sha256 = "0vwh3km3h46bgynd10s8ijl3aj5sskzncdj14h3k7h4sibd8r71a";
|
||||||
};
|
};
|
||||||
|
|
||||||
postPatch = ''
|
|
||||||
substituteInPlace resources/app.asar.unpacked/node_modules/ad-block/vendor/depot_tools/create-chromium-git-src \
|
|
||||||
--replace "/usr/bin/env -S bash -e" "${stdenv.shell}"
|
|
||||||
substituteInPlace resources/app.asar.unpacked/node_modules/ad-block/node_modules/bloom-filter-cpp/vendor/depot_tools/create-chromium-git-src \
|
|
||||||
--replace "/usr/bin/env -S bash -e" "${stdenv.shell}"
|
|
||||||
'';
|
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/bin $out/opt/RamboxPro $out/share/applications
|
mkdir -p $out/bin $out/opt/RamboxPro $out/share/applications
|
||||||
asar e resources/app.asar $out/opt/RamboxPro/resources/app.asar.unpacked
|
asar e resources/app.asar $out/opt/RamboxPro/resources/app.asar.unpacked
|
||||||
|
@ -7,7 +7,7 @@ let
|
|||||||
|
|
||||||
# Please keep the version x.y.0.z and do not update to x.y.76.z because the
|
# Please keep the version x.y.0.z and do not update to x.y.76.z because the
|
||||||
# source of the latter disappears much faster.
|
# source of the latter disappears much faster.
|
||||||
version = "8.49.0.49";
|
version = "8.50.0.38";
|
||||||
|
|
||||||
rpath = stdenv.lib.makeLibraryPath [
|
rpath = stdenv.lib.makeLibraryPath [
|
||||||
alsaLib
|
alsaLib
|
||||||
@ -58,7 +58,7 @@ let
|
|||||||
if stdenv.hostPlatform.system == "x86_64-linux" then
|
if stdenv.hostPlatform.system == "x86_64-linux" then
|
||||||
fetchurl {
|
fetchurl {
|
||||||
url = "https://repo.skype.com/deb/pool/main/s/skypeforlinux/skypeforlinux_${version}_amd64.deb";
|
url = "https://repo.skype.com/deb/pool/main/s/skypeforlinux/skypeforlinux_${version}_amd64.deb";
|
||||||
sha256 = "0l5q336kkw9i13076qn7fkknypg7cwjp58qi8xd6h0rwha3kkqa2";
|
sha256 = "1g0aacp4qgzp3018w1s685yr3ssqlw0z2x6ifrj01k4ig82jfkn6";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
throw "Skype for linux is not supported on ${stdenv.hostPlatform.system}";
|
throw "Skype for linux is not supported on ${stdenv.hostPlatform.system}";
|
||||||
|
@ -1,22 +1,19 @@
|
|||||||
{ stdenv, fetchurl }:
|
{ stdenv, fetchgit }:
|
||||||
|
|
||||||
let
|
stdenv.mkDerivation rec {
|
||||||
rev = "e2a6a9cd9da70175881ab991220c86aa87179509";
|
rev = "e2a6a9cd9da70175881ab991220c86aa87179509";
|
||||||
sha256 = "1gw0kpszgflk3vqjlm5igd2rznh36mb2j1iqrcqi6pzxlpccv1lg";
|
|
||||||
version = "2019-07-25";
|
version = "2019-07-25";
|
||||||
in stdenv.mkDerivation {
|
name = "slack-theme-black-${version}";
|
||||||
inherit version;
|
|
||||||
|
|
||||||
name = "slack-theme-black";
|
src = fetchgit { inherit rev;
|
||||||
src = fetchurl {
|
url = "https://github.com/laCour/slack-night-mode";
|
||||||
url = "https://raw.githubusercontent.com/laCour/slack-night-mode/${rev}/css/raw/black.css";
|
sha256 = "1jwxy63qzgvr83idsgcg7yhm9kn0ybfji1m964c5c6ypzcm7j10v";
|
||||||
inherit sha256;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
dontUnpack = true;
|
dontUnpack = true;
|
||||||
|
|
||||||
buildCommand = ''
|
buildCommand = ''
|
||||||
mkdir $out
|
mkdir $out
|
||||||
cp $src $out/theme.css
|
cp $src/css/raw/black.css $out/theme.css
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ at-spi2-atk, libuuid, nodePackages
|
|||||||
|
|
||||||
let
|
let
|
||||||
|
|
||||||
version = "4.0.0";
|
version = "4.0.1";
|
||||||
|
|
||||||
rpath = stdenv.lib.makeLibraryPath [
|
rpath = stdenv.lib.makeLibraryPath [
|
||||||
alsaLib
|
alsaLib
|
||||||
@ -51,7 +51,7 @@ let
|
|||||||
if stdenv.hostPlatform.system == "x86_64-linux" then
|
if stdenv.hostPlatform.system == "x86_64-linux" then
|
||||||
fetchurl {
|
fetchurl {
|
||||||
url = "https://downloads.slack-edge.com/linux_releases/slack-desktop-${version}-amd64.deb";
|
url = "https://downloads.slack-edge.com/linux_releases/slack-desktop-${version}-amd64.deb";
|
||||||
sha256 = "911a4c05fb4f85181df13f013e82440b0d171862c9cb137dc19b6381d47bd57e";
|
sha256 = "1g7c8jka750pblsfzjvfyf7sp1m409kybqagml9miif1v71scxv2";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
throw "Slack is not supported on ${stdenv.hostPlatform.system}";
|
throw "Slack is not supported on ${stdenv.hostPlatform.system}";
|
||||||
@ -113,6 +113,7 @@ in stdenv.mkDerivation {
|
|||||||
description = "Desktop client for Slack";
|
description = "Desktop client for Slack";
|
||||||
homepage = https://slack.com;
|
homepage = https://slack.com;
|
||||||
license = licenses.unfree;
|
license = licenses.unfree;
|
||||||
|
maintainers = [ maintainers.mmahut ];
|
||||||
platforms = [ "x86_64-linux" ];
|
platforms = [ "x86_64-linux" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
19
pkgs/applications/networking/instant-messengers/slack/update.sh
Executable file
19
pkgs/applications/networking/instant-messengers/slack/update.sh
Executable file
@ -0,0 +1,19 @@
|
|||||||
|
#!/usr/bin/env nix-shell
|
||||||
|
#!nix-shell -i bash -p curl common-updater-scripts jq
|
||||||
|
|
||||||
|
set -eu -o pipefail
|
||||||
|
|
||||||
|
oldVersion="$(nix-instantiate --eval -E "with import ./. {}; slack-theme-black.version or (builtins.parseDrvName slack-theme-black.name).version" | tr -d '"')"
|
||||||
|
latestSha="$(curl -L -s https://api.github.com/repos/laCour/slack-night-mode/commits\?sha\=master\&since\=${oldVersion} | jq -r '.[0].sha')"
|
||||||
|
|
||||||
|
if [ ! "null" = "${latestSha}" ]; then
|
||||||
|
latestDate="$(curl -L -s https://api.github.com/repos/laCour/slack-night-mode/commits/${latestSha} | jq '.commit.author.date' | sed 's|"\(.*\)T.*|\1|g')"
|
||||||
|
update-source-version slack-theme-black "${latestSha}" --version-key=rev
|
||||||
|
update-source-version slack-theme-black "${latestDate}" --ignore-same-hash
|
||||||
|
nixpkgs="$(git rev-parse --show-toplevel)"
|
||||||
|
default_nix="$nixpkgs/pkgs/applications/networking/instant-messengers/slack/dark-theme.nix"
|
||||||
|
git add "${default_nix}"
|
||||||
|
git commit -m "slack-theme-black: ${oldVersion} -> ${latestDate}"
|
||||||
|
else
|
||||||
|
echo "slack-theme-black is already up-to-date"
|
||||||
|
fi
|
@ -1,5 +1,5 @@
|
|||||||
{ stdenv, fetchurl, mkDerivation, makeWrapper, makeDesktopItem, autoPatchelfHook
|
{ stdenv, fetchurl, mkDerivation, autoPatchelfHook
|
||||||
, wrapQtAppsHook
|
, fetchFromGitHub
|
||||||
# Dynamic libraries
|
# Dynamic libraries
|
||||||
, dbus, glib, libGL, libX11, libXfixes, libuuid, libxcb, qtbase, qtdeclarative
|
, dbus, glib, libGL, libX11, libXfixes, libuuid, libxcb, qtbase, qtdeclarative
|
||||||
, qtimageformats, qtlocation, qtquickcontrols, qtquickcontrols2, qtscript, qtsvg
|
, qtimageformats, qtlocation, qtquickcontrols, qtquickcontrols2, qtscript, qtsvg
|
||||||
@ -22,12 +22,20 @@ let
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Used for icons, appdata, and desktop file.
|
||||||
|
desktopIntegration = fetchFromGitHub {
|
||||||
|
owner = "flathub";
|
||||||
|
repo = "us.zoom.Zoom";
|
||||||
|
rev = "0d294e1fdd2a4ef4e05d414bc680511f24d835d7";
|
||||||
|
sha256 = "0rm188844a10v8d6zgl2pnwsliwknawj09b02iabrvjw5w1lp6wl";
|
||||||
|
};
|
||||||
|
|
||||||
in mkDerivation {
|
in mkDerivation {
|
||||||
name = "zoom-us-${version}";
|
name = "zoom-us-${version}";
|
||||||
|
|
||||||
src = srcs.${stdenv.hostPlatform.system};
|
src = srcs.${stdenv.hostPlatform.system};
|
||||||
|
|
||||||
nativeBuildInputs = [ autoPatchelfHook makeWrapper wrapQtAppsHook ];
|
nativeBuildInputs = [ autoPatchelfHook ];
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
dbus glib libGL libX11 libXfixes libuuid libxcb libjpeg_turbo
|
dbus glib libGL libX11 libXfixes libuuid libxcb libjpeg_turbo
|
||||||
@ -66,15 +74,26 @@ in mkDerivation {
|
|||||||
runHook postInstall
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
|
|
||||||
postInstall = (makeDesktopItem {
|
postInstall = ''
|
||||||
name = "zoom-us";
|
mkdir -p $out/share/{applications,appdata,icons}
|
||||||
exec = "$out/bin/zoom-us %U";
|
|
||||||
icon = "$out/share/zoom-us/application-x-zoom.png";
|
# Desktop File
|
||||||
desktopName = "Zoom";
|
cp ${desktopIntegration}/us.zoom.Zoom.desktop $out/share/applications
|
||||||
genericName = "Video Conference";
|
substituteInPlace $out/share/applications/us.zoom.Zoom.desktop \
|
||||||
categories = "Network;Application;";
|
--replace "Exec=zoom" "Exec=$out/bin/zoom-us"
|
||||||
mimeType = "x-scheme-handler/zoommtg;";
|
|
||||||
}).buildCommand + ''
|
# Appdata
|
||||||
|
cp ${desktopIntegration}/us.zoom.Zoom.appdata.xml $out/share/appdata
|
||||||
|
|
||||||
|
# Icons
|
||||||
|
for icon_size in 64 96 128 256; do
|
||||||
|
path=$icon_size'x'$icon_size
|
||||||
|
icon=${desktopIntegration}/us.zoom.Zoom.$icon_size.png
|
||||||
|
|
||||||
|
mkdir -p $out/share/icons/hicolor/$path/apps
|
||||||
|
cp $icon $out/share/icons/hicolor/$path/apps/us.zoom.Zoom.png
|
||||||
|
done
|
||||||
|
|
||||||
ln -s $out/share/zoom-us/zoom $out/bin/zoom-us
|
ln -s $out/share/zoom-us/zoom $out/bin/zoom-us
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ assert iceSupport -> zeroc_ice != null;
|
|||||||
|
|
||||||
with stdenv.lib;
|
with stdenv.lib;
|
||||||
let
|
let
|
||||||
generic = overrides: source: stdenv.mkDerivation (source // overrides // {
|
generic = overrides: source: (if source.qtVersion == 5 then qt5.mkDerivation else stdenv.mkDerivation) (source // overrides // {
|
||||||
name = "${overrides.type}-${source.version}";
|
name = "${overrides.type}-${source.version}";
|
||||||
|
|
||||||
patches = (source.patches or []) ++ optional jackSupport ./mumble-jack-support.patch;
|
patches = (source.patches or []) ++ optional jackSupport ./mumble-jack-support.patch;
|
||||||
@ -26,7 +26,7 @@ let
|
|||||||
# protobuf is freezed to 3.6 because of this bug: https://github.com/mumble-voip/mumble/issues/3617
|
# protobuf is freezed to 3.6 because of this bug: https://github.com/mumble-voip/mumble/issues/3617
|
||||||
# this could be reverted to the latest version in a future release of mumble as it is already fixed in master
|
# this could be reverted to the latest version in a future release of mumble as it is already fixed in master
|
||||||
buildInputs = [ boost protobuf3_6 avahi ]
|
buildInputs = [ boost protobuf3_6 avahi ]
|
||||||
++ { qt4 = [ qt4 ]; qt5 = [ qt5.qtbase ]; }."qt${toString source.qtVersion}"
|
++ optional (source.qtVersion == 4) qt4
|
||||||
++ (overrides.buildInputs or [ ]);
|
++ (overrides.buildInputs or [ ]);
|
||||||
|
|
||||||
qmakeFlags = [
|
qmakeFlags = [
|
||||||
@ -45,20 +45,23 @@ let
|
|||||||
++ (overrides.configureFlags or [ ]);
|
++ (overrides.configureFlags or [ ]);
|
||||||
|
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
qmakeFlags="$qmakeFlags DEFINES+=PLUGIN_PATH=$out/lib"
|
qmakeFlags="$qmakeFlags DEFINES+=PLUGIN_PATH=$out/lib/mumble"
|
||||||
patchShebangs scripts
|
patchShebangs scripts
|
||||||
'';
|
'';
|
||||||
|
|
||||||
makeFlags = [ "release" ];
|
makeFlags = [ "release" ];
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/{lib,bin}
|
runHook preInstall
|
||||||
find release -type f -not -name \*.\* -exec cp {} $out/bin \;
|
|
||||||
find release -type f -name \*.\* -exec cp {} $out/lib \;
|
|
||||||
|
|
||||||
|
${overrides.installPhase}
|
||||||
|
|
||||||
|
# doc stuff
|
||||||
mkdir -p $out/share/man/man1
|
mkdir -p $out/share/man/man1
|
||||||
cp man/mum* $out/share/man/man1
|
install -Dm644 man/mum* $out/share/man/man1/
|
||||||
'' + (overrides.installPhase or "");
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
@ -74,7 +77,7 @@ let
|
|||||||
client = source: generic {
|
client = source: generic {
|
||||||
type = "mumble";
|
type = "mumble";
|
||||||
|
|
||||||
nativeBuildInputs = optionals (source.qtVersion == 5) [ qt5.qttools ];
|
nativeBuildInputs = optional (source.qtVersion == 5) qt5.qttools;
|
||||||
buildInputs = [ libopus libsndfile speex ]
|
buildInputs = [ libopus libsndfile speex ]
|
||||||
++ optional (source.qtVersion == 5) qt5.qtsvg
|
++ optional (source.qtVersion == 5) qt5.qtsvg
|
||||||
++ optional stdenv.isLinux alsaLib
|
++ optional stdenv.isLinux alsaLib
|
||||||
@ -89,12 +92,19 @@ let
|
|||||||
NIX_CFLAGS_COMPILE = optional speechdSupport "-I${speechd}/include/speech-dispatcher";
|
NIX_CFLAGS_COMPILE = optional speechdSupport "-I${speechd}/include/speech-dispatcher";
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/share/applications
|
# bin stuff
|
||||||
cp scripts/mumble.desktop $out/share/applications
|
install -Dm755 release/mumble $out/bin/mumble
|
||||||
|
install -Dm755 scripts/mumble-overlay $out/bin/mumble-overlay
|
||||||
|
|
||||||
mkdir -p $out/share/icons{,/hicolor/scalable/apps}
|
# lib stuff
|
||||||
cp icons/mumble.svg $out/share/icons
|
mkdir -p $out/lib/mumble
|
||||||
ln -s $out/share/icons/mumble.svg $out/share/icons/hicolor/scalable/apps
|
cp -P release/libmumble.so* $out/lib
|
||||||
|
cp -P release/libcelt* $out/lib/mumble
|
||||||
|
cp -P release/plugins/* $out/lib/mumble
|
||||||
|
|
||||||
|
# icons
|
||||||
|
install -Dm644 scripts/mumble.desktop $out/share/applications/mumble.desktop
|
||||||
|
install -Dm644 icons/mumble.svg $out/share/icons/hicolor/scalable/apps/mumble.svg
|
||||||
'';
|
'';
|
||||||
} source;
|
} source;
|
||||||
|
|
||||||
@ -110,6 +120,11 @@ let
|
|||||||
];
|
];
|
||||||
|
|
||||||
buildInputs = [ libcap ] ++ optional iceSupport zeroc_ice;
|
buildInputs = [ libcap ] ++ optional iceSupport zeroc_ice;
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
# bin stuff
|
||||||
|
install -Dm755 release/murmurd $out/bin/murmurd
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
stableSource = rec {
|
stableSource = rec {
|
||||||
@ -138,26 +153,24 @@ let
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
gitSource = rec {
|
rcSource = rec {
|
||||||
version = "2019-07-10";
|
version = "1.3.0-rc2";
|
||||||
qtVersion = 5;
|
qtVersion = 5;
|
||||||
|
|
||||||
# Needs submodules
|
# Needs submodules
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "mumble-voip";
|
owner = "mumble-voip";
|
||||||
repo = "mumble";
|
repo = "mumble";
|
||||||
rev = "41b265584654c7ac216fd3ccb9c141734d3f839b";
|
rev = version;
|
||||||
sha256 = "00irlzz5q4drmsfbwrkyy7p7w8a5fc1ip5vyicq3g3cy58dprpqr";
|
sha256 = "00irlzz5q4drmsfbwrkyy7p7w8a5fc1ip5vyicq3g3cy58dprpqr";
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
mumble = client stableSource;
|
mumble = client stableSource;
|
||||||
mumble_git = client gitSource;
|
mumble_rc = client rcSource;
|
||||||
murmur = server stableSource;
|
murmur = server stableSource;
|
||||||
murmur_git = (server gitSource).overrideAttrs (old: {
|
murmur_rc = (server rcSource).overrideAttrs (old: {
|
||||||
meta = old.meta // { broken = iceSupport; };
|
meta = old.meta // { broken = iceSupport; };
|
||||||
|
|
||||||
nativeBuildInputs = old.nativeBuildInputs or [] ++ [ qt5.wrapQtAppsHook ];
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -45,16 +45,16 @@ in pythonPackages.buildPythonApplication rec {
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
preBuild = ''
|
preBuild = ''
|
||||||
paver generate_setup
|
${pythonPackages.paver}/bin/paver generate_setup
|
||||||
'';
|
'';
|
||||||
|
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
||||||
meta = {
|
meta = with stdenv.lib; {
|
||||||
description = "Free and open source downloader for 1-click-hosting sites";
|
description = "Free and open source downloader for 1-click-hosting sites";
|
||||||
homepage = https://github.com/pyload/pyload;
|
homepage = https://github.com/pyload/pyload;
|
||||||
license = stdenv.lib.licenses.gpl3;
|
license = licenses.gpl3;
|
||||||
maintainers = [ stdenv.lib.maintainers.mahe ];
|
maintainers = [ maintainers.mahe ];
|
||||||
platforms = stdenv.lib.platforms.all;
|
platforms = platforms.all;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -2,16 +2,17 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "strelka-${version}";
|
name = "strelka-${version}";
|
||||||
version = "2.9.5";
|
version = "2.9.10";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "Illumina";
|
owner = "Illumina";
|
||||||
repo = "strelka";
|
repo = "strelka";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0x4a6nkx1jnyag9svghsdjz1fz6q7qx5pn77wphdfnk81f9yspf8";
|
sha256 = "1nykbmim1124xh22nrhrsn8xgjb3s2y7akrdapn9sl1gdych4ppf";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ cmake zlib python2 ];
|
nativeBuildInputs = [ cmake ];
|
||||||
|
buildInputs = [ zlib python2 ];
|
||||||
|
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
sed -i 's|/usr/bin/env python|${python2}/bin/python|' src/python/lib/makeRunScript.py
|
sed -i 's|/usr/bin/env python|${python2}/bin/python|' src/python/lib/makeRunScript.py
|
||||||
|
@ -1,31 +1,40 @@
|
|||||||
{ stdenv, fetchFromGitHub, autoconf, gperf, flex, bison }:
|
{ stdenv, fetchFromGitHub, autoconf, gperf, flex, bison, readline, ncurses
|
||||||
|
, bzip2, zlib
|
||||||
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "iverilog-${version}";
|
pname = "iverilog";
|
||||||
version = "2019.03.27";
|
version = "unstable-2019-08-01";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "steveicarus";
|
owner = "steveicarus";
|
||||||
repo = "iverilog";
|
repo = pname;
|
||||||
rev = "a9388a895eb85a9d7f2924b89f839f94e1b6d7c4";
|
rev = "c383d2048c0bd15f5db083f14736400546fb6215";
|
||||||
sha256 = "01d48sy3pzg9x1xpczqrsii2ckrvgnrfj720wiz22jdn90nirhhr";
|
sha256 = "1zs0gyhws0qa315magz3w5m45v97knczdgbf2zn4d7bdb7cv417c";
|
||||||
};
|
};
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
patchPhase = ''
|
prePatch = ''
|
||||||
|
substituteInPlace configure.in \
|
||||||
|
--replace "AC_CHECK_LIB(termcap, tputs)" "AC_CHECK_LIB(termcap, tputs)"
|
||||||
|
'';
|
||||||
|
|
||||||
|
preConfigure = ''
|
||||||
chmod +x $PWD/autoconf.sh
|
chmod +x $PWD/autoconf.sh
|
||||||
$PWD/autoconf.sh
|
$PWD/autoconf.sh
|
||||||
'';
|
'';
|
||||||
|
|
||||||
buildInputs = [ autoconf gperf flex bison ];
|
nativeBuildInputs = [ autoconf gperf flex bison ];
|
||||||
|
|
||||||
meta = {
|
buildInputs = [ readline ncurses bzip2 zlib ];
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
description = "Icarus Verilog compiler";
|
description = "Icarus Verilog compiler";
|
||||||
repositories.git = https://github.com/steveicarus/iverilog.git;
|
repositories.git = https://github.com/steveicarus/iverilog.git;
|
||||||
homepage = http://www.icarus.com;
|
homepage = "http://iverilog.icarus.com/";
|
||||||
license = stdenv.lib.licenses.gpl2Plus;
|
license = licenses.lgpl21;
|
||||||
maintainers = with stdenv.lib.maintainers; [winden];
|
maintainers = with maintainers; [ winden ];
|
||||||
platforms = with stdenv.lib.platforms; linux;
|
platforms = platforms.linux;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
{ stdenv, fetchFromGitHub
|
{ stdenv, fetchFromGitHub, mkDerivation
|
||||||
, pkgconfig, qtbase, qttools, qmake, qtmultimedia, qtx11extras, alsaLib, libv4l, libXrandr
|
, pkgconfig, qtbase, qttools, qmake, qtmultimedia, qtx11extras, alsaLib, libv4l, libXrandr
|
||||||
, ffmpeg
|
, ffmpeg
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
mkDerivation rec {
|
||||||
|
|
||||||
pname = "vokoscreen";
|
pname = "vokoscreen";
|
||||||
version = "2.5.8-beta";
|
version = "2.5.8-beta";
|
||||||
|
@ -39,7 +39,7 @@ in {
|
|||||||
sha256 = "1j8i32dq6rrlv3kf2hnq81iqks06kczaxjks7nw3zyq1231winm9";
|
sha256 = "1j8i32dq6rrlv3kf2hnq81iqks06kczaxjks7nw3zyq1231winm9";
|
||||||
};
|
};
|
||||||
v5 = font-awesome {
|
v5 = font-awesome {
|
||||||
version = "5.10.0";
|
version = "5.10.1";
|
||||||
sha256 = "11nga1drlpkrmw307ga6plbj5z1b70cnckr465z8z6vkbcd6jkv3";
|
sha256 = "1ckr7n0hlhvyl8nkhyjr7k6r07czpcfp0s2mnb48mvfgxd3j992p";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -345,8 +345,6 @@ lib.makeScope pkgs.newScope (self: with self; {
|
|||||||
|
|
||||||
nautilus-python = callPackage ./misc/nautilus-python { };
|
nautilus-python = callPackage ./misc/nautilus-python { };
|
||||||
|
|
||||||
pidgin-im-gnome-shell-extension = callPackage ./misc/pidgin { };
|
|
||||||
|
|
||||||
gtkhtml = callPackage ./misc/gtkhtml { enchant = pkgs.enchant1; };
|
gtkhtml = callPackage ./misc/gtkhtml { enchant = pkgs.enchant1; };
|
||||||
|
|
||||||
pomodoro = callPackage ./misc/pomodoro { };
|
pomodoro = callPackage ./misc/pomodoro { };
|
||||||
@ -398,4 +396,6 @@ lib.makeScope pkgs.newScope (self: with self; {
|
|||||||
gtk = gtk3;
|
gtk = gtk3;
|
||||||
gtkmm = gtkmm3;
|
gtkmm = gtkmm3;
|
||||||
rest = librest;
|
rest = librest;
|
||||||
|
|
||||||
|
pidgin-im-gnome-shell-extension = pkgs.gnomeExtensions.pidgin-im-integration; # added 2019-08-01
|
||||||
})
|
})
|
||||||
|
@ -0,0 +1,31 @@
|
|||||||
|
{ stdenv, fetchFromGitHub, glib }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "gnome-shell-extension-pidgin-im-integration";
|
||||||
|
version = "32";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "muffinmad";
|
||||||
|
repo = "pidgin-im-gnome-shell-extension";
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "1jyg8r0s1v83sgg6y0jbsj2v37mglh8rvd8vi27fxnjq9xmg8kpc";
|
||||||
|
};
|
||||||
|
|
||||||
|
dontConfigure = true;
|
||||||
|
dontBuild = true;
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
share_dir="$prefix/share"
|
||||||
|
extensions_dir="$share_dir/gnome-shell/extensions/pidgin@muffinmad"
|
||||||
|
mkdir -p "$extensions_dir"
|
||||||
|
mv *.js metadata.json dbus.xml schemas locale "$extensions_dir"
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = https://github.com/muffinmad/pidgin-im-gnome-shell-extension;
|
||||||
|
description = "Make Pidgin IM conversations appear in the Gnome Shell message tray";
|
||||||
|
license = licenses.gpl2;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
maintainers = with maintainers; [ ];
|
||||||
|
};
|
||||||
|
}
|
@ -1,42 +0,0 @@
|
|||||||
{ stdenv, fetchFromGitHub, glib }:
|
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
version = "1.0.1";
|
|
||||||
basename = "pidgin-im-gnome-shell-extension";
|
|
||||||
name = "${basename}-${version}";
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "muffinmad";
|
|
||||||
repo = "${basename}";
|
|
||||||
rev = "v${version}";
|
|
||||||
sha256 = "1567s2sfqig4jw0nrn134f5vkx0yq31q044grv3xk4vpl1f3z2lr";
|
|
||||||
};
|
|
||||||
|
|
||||||
buildInputs = [ glib ];
|
|
||||||
|
|
||||||
configurePhase = "";
|
|
||||||
buildPhase = "";
|
|
||||||
installPhase = ''
|
|
||||||
share_dir="$prefix/share"
|
|
||||||
extensions_dir="$share_dir/gnome-shell/extensions/pidgin@muffinmad"
|
|
||||||
mkdir -p "$extensions_dir"
|
|
||||||
mv *.js metadata.json dbus.xml gnome-shell-extension-pidgin.pot "$extensions_dir"
|
|
||||||
|
|
||||||
schemas_dir="$share_dir/gsettings-schemas/${name}/glib-2.0/schemas"
|
|
||||||
mkdir -p "$schemas_dir"
|
|
||||||
mv schemas/* "$schemas_dir" # fix Emacs syntax highlighting: */
|
|
||||||
glib-compile-schemas "$schemas_dir"
|
|
||||||
|
|
||||||
locale_dir="$share_dir/locale"
|
|
||||||
mkdir -p "$locale_dir"
|
|
||||||
mv locale/* $locale_dir # fix Emacs syntax highlighting: */
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
|
||||||
homepage = https://github.com/muffinmad/pidgin-im-gnome-shell-extension;
|
|
||||||
description = "Make Pidgin IM conversations appear in the Gnome Shell message tray";
|
|
||||||
license = licenses.gpl2;
|
|
||||||
platforms = platforms.linux;
|
|
||||||
maintainers = with maintainers; [ ];
|
|
||||||
};
|
|
||||||
}
|
|
@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "cerbere";
|
pname = "cerbere";
|
||||||
version = "0.2.4";
|
version = "2.5.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "elementary";
|
owner = "elementary";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "0f9jr6q5z6nir5b77f96wm9rx6r6s9i0sr1yrymg3n7jyjgrvdwp";
|
sha256 = "12y6gg4vyc1rhdm2c7pr7bgmdrah7ddphyh25fgh3way8l9gh7vw";
|
||||||
};
|
};
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
diff --git a/mx.py b/mx.py
|
diff --git a/mx.py b/mx.py
|
||||||
index d119b62..471fe98 100644
|
index af7a9c2..08c0ea8 100755
|
||||||
--- a/mx.py
|
--- a/mx.py
|
||||||
+++ b/mx.py
|
+++ b/mx.py
|
||||||
@@ -4961,30 +4961,6 @@ class PackedResourceLibrary(ResourceLibrary):
|
@@ -4976,30 +4976,6 @@ class PackedResourceLibrary(ResourceLibrary):
|
||||||
|
|
||||||
def get_path(self, resolve):
|
def get_path(self, resolve):
|
||||||
extract_path = _make_absolute(self.extract_path, self.suite.dir)
|
extract_path = _make_absolute(self.extract_path, self.suite.dir)
|
||||||
@ -33,7 +33,7 @@ index d119b62..471fe98 100644
|
|||||||
return extract_path
|
return extract_path
|
||||||
|
|
||||||
def _check_download_needed(self):
|
def _check_download_needed(self):
|
||||||
@@ -5885,7 +5861,7 @@ class HgConfig(VC):
|
@@ -5900,7 +5876,7 @@ class HgConfig(VC):
|
||||||
|
|
||||||
def update_to_branch(self, vcdir, branch, abortOnError=True):
|
def update_to_branch(self, vcdir, branch, abortOnError=True):
|
||||||
cmd = ['update', branch]
|
cmd = ['update', branch]
|
||||||
@ -42,7 +42,7 @@ index d119b62..471fe98 100644
|
|||||||
|
|
||||||
def add(self, vcdir, path, abortOnError=True):
|
def add(self, vcdir, path, abortOnError=True):
|
||||||
return self.run(['hg', '-q', '-R', vcdir, 'add', path]) == 0
|
return self.run(['hg', '-q', '-R', vcdir, 'add', path]) == 0
|
||||||
@@ -5922,7 +5898,7 @@ class HgConfig(VC):
|
@@ -5937,7 +5913,7 @@ class HgConfig(VC):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def parent_info(self, vcdir, abortOnError=True):
|
def parent_info(self, vcdir, abortOnError=True):
|
||||||
@ -51,7 +51,7 @@ index d119b62..471fe98 100644
|
|||||||
author, date = out.split("|||")
|
author, date = out.split("|||")
|
||||||
ts, _ = date.split(" ")
|
ts, _ = date.split(" ")
|
||||||
return self._sanitize_parent_info({
|
return self._sanitize_parent_info({
|
||||||
@@ -8287,46 +8263,8 @@ class SuiteImport:
|
@@ -8301,46 +8277,8 @@ class SuiteImport:
|
||||||
version = import_dict.get("version")
|
version = import_dict.get("version")
|
||||||
suite_dir = None
|
suite_dir = None
|
||||||
version_from = import_dict.get("versionFrom")
|
version_from = import_dict.get("versionFrom")
|
||||||
@ -100,7 +100,7 @@ index d119b62..471fe98 100644
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_source_urls(source, kind=None):
|
def get_source_urls(source, kind=None):
|
||||||
@@ -8367,8 +8305,6 @@ class Suite(object):
|
@@ -8381,8 +8319,6 @@ class Suite(object):
|
||||||
:type dists: list[Distribution]
|
:type dists: list[Distribution]
|
||||||
"""
|
"""
|
||||||
def __init__(self, mxDir, primary, internal, importing_suite, load, vc, vc_dir, dynamicallyImported=False):
|
def __init__(self, mxDir, primary, internal, importing_suite, load, vc, vc_dir, dynamicallyImported=False):
|
||||||
@ -109,7 +109,7 @@ index d119b62..471fe98 100644
|
|||||||
self.imported_by = [] if primary else [importing_suite]
|
self.imported_by = [] if primary else [importing_suite]
|
||||||
self.mxDir = mxDir
|
self.mxDir = mxDir
|
||||||
self.dir = dirname(mxDir)
|
self.dir = dirname(mxDir)
|
||||||
@@ -8396,7 +8332,7 @@ class Suite(object):
|
@@ -8410,7 +8346,7 @@ class Suite(object):
|
||||||
self._outputRoot = None
|
self._outputRoot = None
|
||||||
self._preloaded_suite_dict = None
|
self._preloaded_suite_dict = None
|
||||||
self.vc = vc
|
self.vc = vc
|
||||||
@ -118,7 +118,7 @@ index d119b62..471fe98 100644
|
|||||||
self._preload_suite_dict()
|
self._preload_suite_dict()
|
||||||
self._init_imports()
|
self._init_imports()
|
||||||
if load:
|
if load:
|
||||||
@@ -9295,7 +9231,9 @@ def get_dynamic_imports():
|
@@ -9310,7 +9246,9 @@ def get_dynamic_imports():
|
||||||
class SourceSuite(Suite):
|
class SourceSuite(Suite):
|
||||||
"""A source suite"""
|
"""A source suite"""
|
||||||
def __init__(self, mxDir, primary=False, load=True, internal=False, importing_suite=None, dynamicallyImported=False):
|
def __init__(self, mxDir, primary=False, load=True, internal=False, importing_suite=None, dynamicallyImported=False):
|
||||||
@ -129,7 +129,7 @@ index d119b62..471fe98 100644
|
|||||||
Suite.__init__(self, mxDir, primary, internal, importing_suite, load, vc, vc_dir, dynamicallyImported=dynamicallyImported)
|
Suite.__init__(self, mxDir, primary, internal, importing_suite, load, vc, vc_dir, dynamicallyImported=dynamicallyImported)
|
||||||
logvv("SourceSuite.__init__({}), got vc={}, vc_dir={}".format(mxDir, self.vc, self.vc_dir))
|
logvv("SourceSuite.__init__({}), got vc={}, vc_dir={}".format(mxDir, self.vc, self.vc_dir))
|
||||||
self.projects = []
|
self.projects = []
|
||||||
@@ -9344,17 +9282,7 @@ class SourceSuite(Suite):
|
@@ -9359,17 +9297,7 @@ class SourceSuite(Suite):
|
||||||
"""
|
"""
|
||||||
Gets the release tag from VC or create a time based once if VC is unavailable
|
Gets the release tag from VC or create a time based once if VC is unavailable
|
||||||
"""
|
"""
|
||||||
@ -148,7 +148,7 @@ index d119b62..471fe98 100644
|
|||||||
|
|
||||||
def scm_metadata(self, abortOnError=False):
|
def scm_metadata(self, abortOnError=False):
|
||||||
scm = self.scm
|
scm = self.scm
|
||||||
@@ -12526,55 +12454,8 @@ def _attempt_download(url, path, jarEntryName=None):
|
@@ -12541,55 +12469,8 @@ def _attempt_download(url, path, jarEntryName=None):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def download(path, urls, verbose=False, abortOnError=True, verifyOnly=False):
|
def download(path, urls, verbose=False, abortOnError=True, verifyOnly=False):
|
||||||
@ -206,7 +206,7 @@ index d119b62..471fe98 100644
|
|||||||
|
|
||||||
def update_file(path, content, showDiff=False):
|
def update_file(path, content, showDiff=False):
|
||||||
"""
|
"""
|
||||||
@@ -13378,6 +13259,7 @@ class Archiver(SafeFileCreation):
|
@@ -13393,6 +13274,7 @@ class Archiver(SafeFileCreation):
|
||||||
|
|
||||||
def _add_zip(self, filename, archive_name, provenance):
|
def _add_zip(self, filename, archive_name, provenance):
|
||||||
self._add_provenance(archive_name, provenance)
|
self._add_provenance(archive_name, provenance)
|
||||||
@ -214,7 +214,7 @@ index d119b62..471fe98 100644
|
|||||||
self.zf.write(filename, archive_name)
|
self.zf.write(filename, archive_name)
|
||||||
|
|
||||||
def _add_str_zip(self, data, archive_name, provenance):
|
def _add_str_zip(self, data, archive_name, provenance):
|
||||||
@@ -18526,12 +18408,35 @@ def _find_suite_import(importing_suite, suite_import, fatalIfMissing=True, load=
|
@@ -18541,12 +18423,35 @@ def _find_suite_import(importing_suite, suite_import, fatalIfMissing=True, load=
|
||||||
Attempts to locate an existing suite in the local context
|
Attempts to locate an existing suite in the local context
|
||||||
Returns the path to the mx.name dir if found else None
|
Returns the path to the mx.name dir if found else None
|
||||||
"""
|
"""
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
{ stdenv, lib, fetchFromGitHub, fetchurl, fetchzip, fetchgit, mercurial, python27,
|
{ stdenv, lib, fetchFromGitHub, fetchurl, fetchzip, fetchgit, mercurial, python27, setJavaClassPath,
|
||||||
zlib, makeWrapper, openjdk, unzip, git, clang, llvm, which, icu, ruby, bzip2
|
zlib, makeWrapper, openjdk, unzip, git, clang, llvm, which, icu, ruby, bzip2, glibc
|
||||||
# gfortran, readline, bzip2, lzma, pcre, curl, ed, tree ## WIP: fastr deps
|
# gfortran, readline, bzip2, lzma, pcre, curl, ed, tree ## WIP: fastr deps
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
version = "1.0.0-rc15";
|
version = "19.1.1";
|
||||||
truffleMake = ./truffle.make;
|
truffleMake = ./truffle.make;
|
||||||
makeMxGitCache = list: out: ''
|
makeMxGitCache = list: out: ''
|
||||||
mkdir ${out}
|
mkdir ${out}
|
||||||
@ -32,7 +32,7 @@ let
|
|||||||
hg checkout ${lib.escapeShellArg "vm${version}"}
|
hg checkout ${lib.escapeShellArg "vm${version}"}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# pre-download some cache entries ('mx' will not be able to download under nixbld1)
|
# pre-download some cache entries ('mx' will not be able to download under nixbld)
|
||||||
makeMxCache = list:
|
makeMxCache = list:
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
name = "mx-cache";
|
name = "mx-cache";
|
||||||
@ -62,31 +62,27 @@ let
|
|||||||
};
|
};
|
||||||
|
|
||||||
jvmci8-mxcache = [
|
jvmci8-mxcache = [
|
||||||
rec { sha1 = "977b33afe2344a9ee801fd3317c54d8e1f9d7a79"; name = "JACOCOCORE_0.8.2_${sha1}/jacococore-0.8.2.jar"; url = mirror://maven/org/jacoco/org.jacoco.core/0.8.2/org.jacoco.core-0.8.2.jar; }
|
rec { sha1 = "53addc878614171ff0fcbc8f78aed12175c22cdb"; name = "JACOCOCORE_0.8.4_${sha1}/jacococore-0.8.4.jar"; url = mirror://maven/org/jacoco/org.jacoco.core/0.8.4/org.jacoco.core-0.8.4.jar; }
|
||||||
rec { sha1 = "46f38efb779fb08216379e1a196396f4e22bbe41"; name = "JACOCOCORE_0.8.2_${sha1}/jacococore-0.8.2.sources.jar"; url = mirror://maven/org/jacoco/org.jacoco.core/0.8.2/org.jacoco.core-0.8.2-sources.jar; }
|
rec { sha1 = "9bd1fa334d941005bc9ab3ac92478a590f5b7d73"; name = "JACOCOCORE_0.8.4_${sha1}/jacococore-0.8.4.sources.jar"; url = mirror://maven/org/jacoco/org.jacoco.core/0.8.4/org.jacoco.core-0.8.4-sources.jar; }
|
||||||
rec { sha1 = "50e133cdfd2d31ca5702b73615be70f801d3ae26"; name = "JACOCOREPORT_0.8.2_${sha1}/jacocoreport-0.8.2.jar"; url = mirror://maven/org/jacoco/org.jacoco.report/0.8.2/org.jacoco.report-0.8.2.jar; }
|
rec { sha1 = "e5ca9511493b7e3bc2cabdb8ded92e855f3aac32"; name = "JACOCOREPORT_0.8.4_${sha1}/jacocoreport-0.8.4.jar"; url = mirror://maven/org/jacoco/org.jacoco.report/0.8.4/org.jacoco.report-0.8.4.jar; }
|
||||||
rec { sha1 = "7488cd6e42cc4fa85b51200b7f451465692e033b"; name = "JACOCOREPORT_0.8.2_${sha1}/jacocoreport-0.8.2.sources.jar"; url = mirror://maven/org/jacoco/org.jacoco.report/0.8.2/org.jacoco.report-0.8.2-sources.jar; }
|
rec { sha1 = "eb61e479b35b467954f28a565c094c563b790e19"; name = "JACOCOREPORT_0.8.4_${sha1}/jacocoreport-0.8.4.sources.jar"; url = mirror://maven/org/jacoco/org.jacoco.report/0.8.4/org.jacoco.report-0.8.4-sources.jar; }
|
||||||
rec { sha1 = "4806883004063feb978b8811f00d5ea2138750bb"; name = "JACOCOAGENT_0.8.2_${sha1}/jacocoagent-0.8.2.jar"; url = mirror://maven/org/jacoco/org.jacoco.agent/0.8.2/org.jacoco.agent-0.8.2-runtime.jar; }
|
rec { sha1 = "869021a6d90cfb008b12e83fccbe42eca29e5355"; name = "JACOCOAGENT_0.8.4_${sha1}/jacocoagent-0.8.4.jar"; url = mirror://maven/org/jacoco/org.jacoco.agent/0.8.4/org.jacoco.agent-0.8.4-runtime.jar; }
|
||||||
rec { sha1 = "306816fb57cf94f108a43c95731b08934dcae15c"; name = "JOPTSIMPLE_4_6_${sha1}/joptsimple-4-6.jar"; url = mirror://maven/net/sf/jopt-simple/jopt-simple/4.6/jopt-simple-4.6.jar; }
|
rec { sha1 = "306816fb57cf94f108a43c95731b08934dcae15c"; name = "JOPTSIMPLE_4_6_${sha1}/joptsimple-4-6.jar"; url = mirror://maven/net/sf/jopt-simple/jopt-simple/4.6/jopt-simple-4.6.jar; }
|
||||||
rec { sha1 = "9cd14a61d7aa7d554f251ef285a6f2c65caf7b65"; name = "JOPTSIMPLE_4_6_${sha1}/joptsimple-4-6.sources.jar"; url = mirror://maven/net/sf/jopt-simple/jopt-simple/4.6/jopt-simple-4.6-sources.jar; }
|
rec { sha1 = "9cd14a61d7aa7d554f251ef285a6f2c65caf7b65"; name = "JOPTSIMPLE_4_6_${sha1}/joptsimple-4-6.sources.jar"; url = mirror://maven/net/sf/jopt-simple/jopt-simple/4.6/jopt-simple-4.6-sources.jar; }
|
||||||
rec { sha1 = "b852fb028de645ad2852bbe998e084d253f450a5"; name = "JMH_GENERATOR_ANNPROCESS_1_18_${sha1}/jmh-generator-annprocess-1-18.jar"; url = mirror://maven/org/openjdk/jmh/jmh-generator-annprocess/1.18/jmh-generator-annprocess-1.18.jar; }
|
rec { sha1 = "fa29aa438674ff19d5e1386d2c3527a0267f291e"; name = "ASM_7.1_${sha1}/asm-7.1.jar"; url = mirror://maven/org/ow2/asm/asm/7.1/asm-7.1.jar; }
|
||||||
rec { sha1 = "d455b0dc6108b5e6f1fb4f6cf1c7b4cbedbecc97"; name = "JMH_GENERATOR_ANNPROCESS_1_18_${sha1}/jmh-generator-annprocess-1-18.sources.jar"; url = mirror://maven/org/openjdk/jmh/jmh-generator-annprocess/1.18/jmh-generator-annprocess-1.18-sources.jar; }
|
rec { sha1 = "9d170062d595240da35301362b079e5579c86f49"; name = "ASM_7.1_${sha1}/asm-7.1.sources.jar"; url = mirror://maven/org/ow2/asm/asm/7.1/asm-7.1-sources.jar; }
|
||||||
rec { sha1 = "7aac374614a8a76cad16b91f1a4419d31a7dcda3"; name = "JMH_GENERATOR_ANNPROCESS_1_21_${sha1}/jmh-generator-annprocess-1-21.jar"; url = mirror://maven/org/openjdk/jmh/jmh-generator-annprocess/1.21/jmh-generator-annprocess-1.21.jar; }
|
rec { sha1 = "a3662cf1c1d592893ffe08727f78db35392fa302"; name = "ASM_TREE_7.1_${sha1}/asm-tree-7.1.jar"; url = mirror://maven/org/ow2/asm/asm-tree/7.1/asm-tree-7.1.jar; }
|
||||||
rec { sha1 = "fb48e2a97df95f8b9dced54a1a37749d2a64d2ae"; name = "JMH_GENERATOR_ANNPROCESS_1_21_${sha1}/jmh-generator-annprocess-1-21.sources.jar"; url = mirror://maven/org/openjdk/jmh/jmh-generator-annprocess/1.21/jmh-generator-annprocess-1.21-sources.jar; }
|
rec { sha1 = "157238292b551de8680505fa2d19590d136e25b9"; name = "ASM_TREE_7.1_${sha1}/asm-tree-7.1.sources.jar"; url = mirror://maven/org/ow2/asm/asm-tree/7.1/asm-tree-7.1-sources.jar; }
|
||||||
rec { sha1 = "c01b6798f81b0fc2c5faa70cbe468c275d4b50c7"; name = "ASM_6.2.1_${sha1}/asm-6.2.1.jar"; url = mirror://maven/org/ow2/asm/asm/6.2.1/asm-6.2.1.jar; }
|
rec { sha1 = "379e0250f7a4a42c66c5e94e14d4c4491b3c2ed3"; name = "ASM_ANALYSIS_7.1_${sha1}/asm-analysis-7.1.jar"; url = mirror://maven/org/ow2/asm/asm-analysis/7.1/asm-analysis-7.1.jar; }
|
||||||
rec { sha1 = "cee28077ac7a63d3de0b205ec314d83944ff6267"; name = "ASM_6.2.1_${sha1}/asm-6.2.1.sources.jar"; url = mirror://maven/org/ow2/asm/asm/6.2.1/asm-6.2.1-sources.jar; }
|
rec { sha1 = "36789198124eb075f1a5efa18a0a7812fb16f47f"; name = "ASM_ANALYSIS_7.1_${sha1}/asm-analysis-7.1.sources.jar"; url = mirror://maven/org/ow2/asm/asm-analysis/7.1/asm-analysis-7.1-sources.jar; }
|
||||||
rec { sha1 = "332b022092ecec53cdb6272dc436884b2d940615"; name = "ASM_TREE_6.2.1_${sha1}/asm-tree-6.2.1.jar"; url = mirror://maven/org/ow2/asm/asm-tree/6.2.1/asm-tree-6.2.1.jar; }
|
rec { sha1 = "431dc677cf5c56660c1c9004870de1ed1ea7ce6c"; name = "ASM_COMMONS_7.1_${sha1}/asm-commons-7.1.jar"; url = mirror://maven/org/ow2/asm/asm-commons/7.1/asm-commons-7.1.jar; }
|
||||||
rec { sha1 = "072bd64989090e4ed58e4657e3d4481d96f643af"; name = "ASM_TREE_6.2.1_${sha1}/asm-tree-6.2.1.sources.jar"; url = mirror://maven/org/ow2/asm/asm-tree/6.2.1/asm-tree-6.2.1-sources.jar; }
|
rec { sha1 = "a62ff3ae6e37affda7c6fb7d63b89194c6d006ee"; name = "ASM_COMMONS_7.1_${sha1}/asm-commons-7.1.sources.jar"; url = mirror://maven/org/ow2/asm/asm-commons/7.1/asm-commons-7.1-sources.jar; }
|
||||||
rec { sha1 = "e8b876c5ccf226cae2f44ed2c436ad3407d0ec1d"; name = "ASM_ANALYSIS_6.2.1_${sha1}/asm-analysis-6.2.1.jar"; url = mirror://maven/org/ow2/asm/asm-analysis/6.2.1/asm-analysis-6.2.1.jar; }
|
|
||||||
rec { sha1 = "b0b249bd185677648692e7c57b488b6d7c2a6653"; name = "ASM_ANALYSIS_6.2.1_${sha1}/asm-analysis-6.2.1.sources.jar"; url = mirror://maven/org/ow2/asm/asm-analysis/6.2.1/asm-analysis-6.2.1-sources.jar; }
|
|
||||||
rec { sha1 = "eaf31376d741a3e2017248a4c759209fe25c77d3"; name = "ASM_COMMONS_6.2.1_${sha1}/asm-commons-6.2.1.jar"; url = mirror://maven/org/ow2/asm/asm-commons/6.2.1/asm-commons-6.2.1.jar; }
|
|
||||||
rec { sha1 = "667fa0f9d370e7848b0e3d173942855a91fd1daf"; name = "ASM_COMMONS_6.2.1_${sha1}/asm-commons-6.2.1.sources.jar"; url = mirror://maven/org/ow2/asm/asm-commons/6.2.1/asm-commons-6.2.1-sources.jar; }
|
|
||||||
rec { sha1 = "ec2544ab27e110d2d431bdad7d538ed509b21e62"; name = "COMMONS_MATH3_3_2_${sha1}/commons-math3-3-2.jar"; url = mirror://maven/org/apache/commons/commons-math3/3.2/commons-math3-3.2.jar; }
|
rec { sha1 = "ec2544ab27e110d2d431bdad7d538ed509b21e62"; name = "COMMONS_MATH3_3_2_${sha1}/commons-math3-3-2.jar"; url = mirror://maven/org/apache/commons/commons-math3/3.2/commons-math3-3.2.jar; }
|
||||||
rec { sha1 = "cd098e055bf192a60c81d81893893e6e31a6482f"; name = "COMMONS_MATH3_3_2_${sha1}/commons-math3-3-2.sources.jar"; url = mirror://maven/org/apache/commons/commons-math3/3.2/commons-math3-3.2-sources.jar; }
|
rec { sha1 = "cd098e055bf192a60c81d81893893e6e31a6482f"; name = "COMMONS_MATH3_3_2_${sha1}/commons-math3-3-2.sources.jar"; url = mirror://maven/org/apache/commons/commons-math3/3.2/commons-math3-3.2-sources.jar; }
|
||||||
rec { sha1 = "0174aa0077e9db596e53d7f9ec37556d9392d5a6"; name = "JMH_1_18_${sha1}/jmh-1-18.jar"; url = mirror://maven/org/openjdk/jmh/jmh-core/1.18/jmh-core-1.18.jar; }
|
|
||||||
rec { sha1 = "7ff1e1aafea436b6aa8b29a8b8f1c2d66be26f5b"; name = "JMH_1_18_${sha1}/jmh-1-18.sources.jar"; url = mirror://maven/org/openjdk/jmh/jmh-core/1.18/jmh-core-1.18-sources.jar; }
|
|
||||||
rec { sha1 = "442447101f63074c61063858033fbfde8a076873"; name = "JMH_1_21_${sha1}/jmh-1-21.jar"; url = mirror://maven/org/openjdk/jmh/jmh-core/1.21/jmh-core-1.21.jar; }
|
rec { sha1 = "442447101f63074c61063858033fbfde8a076873"; name = "JMH_1_21_${sha1}/jmh-1-21.jar"; url = mirror://maven/org/openjdk/jmh/jmh-core/1.21/jmh-core-1.21.jar; }
|
||||||
rec { sha1 = "a6fe84788bf8cf762b0e561bf48774c2ea74e370"; name = "JMH_1_21_${sha1}/jmh-1-21.sources.jar"; url = mirror://maven/org/openjdk/jmh/jmh-core/1.21/jmh-core-1.21-sources.jar; }
|
rec { sha1 = "a6fe84788bf8cf762b0e561bf48774c2ea74e370"; name = "JMH_1_21_${sha1}/jmh-1-21.sources.jar"; url = mirror://maven/org/openjdk/jmh/jmh-core/1.21/jmh-core-1.21-sources.jar; }
|
||||||
|
rec { sha1 = "7aac374614a8a76cad16b91f1a4419d31a7dcda3"; name = "JMH_GENERATOR_ANNPROCESS_1_21_${sha1}/jmh-generator-annprocess-1-21.jar"; url = mirror://maven/org/openjdk/jmh/jmh-generator-annprocess/1.21/jmh-generator-annprocess-1.21.jar; }
|
||||||
|
rec { sha1 = "fb48e2a97df95f8b9dced54a1a37749d2a64d2ae"; name = "JMH_GENERATOR_ANNPROCESS_1_21_${sha1}/jmh-generator-annprocess-1-21.sources.jar"; url = mirror://maven/org/openjdk/jmh/jmh-generator-annprocess/1.21/jmh-generator-annprocess-1.21-sources.jar; }
|
||||||
rec { sha1 = "2973d150c0dc1fefe998f834810d68f278ea58ec"; name = "JUNIT_${sha1}/junit.jar"; url = mirror://maven/junit/junit/4.12/junit-4.12.jar; }
|
rec { sha1 = "2973d150c0dc1fefe998f834810d68f278ea58ec"; name = "JUNIT_${sha1}/junit.jar"; url = mirror://maven/junit/junit/4.12/junit-4.12.jar; }
|
||||||
rec { sha1 = "a6c32b40bf3d76eca54e3c601e5d1470c86fcdfa"; name = "JUNIT_${sha1}/junit.sources.jar"; url = mirror://maven/junit/junit/4.12/junit-4.12-sources.jar; }
|
rec { sha1 = "a6c32b40bf3d76eca54e3c601e5d1470c86fcdfa"; name = "JUNIT_${sha1}/junit.sources.jar"; url = mirror://maven/junit/junit/4.12/junit-4.12-sources.jar; }
|
||||||
rec { sha1 = "42a25dc3219429f0e5d060061f71acb49bf010a0"; name = "HAMCREST_${sha1}/hamcrest.jar"; url = mirror://maven/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar; }
|
rec { sha1 = "42a25dc3219429f0e5d060061f71acb49bf010a0"; name = "HAMCREST_${sha1}/hamcrest.jar"; url = mirror://maven/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar; }
|
||||||
@ -114,8 +110,8 @@ let
|
|||||||
rec { sha1 = "280c265b789e041c02e5c97815793dfc283fb1e6"; name = "LIBFFI_SOURCES_${sha1}/libffi-sources.tar.gz"; url = https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/libffi-3.2.1.tar.gz; }
|
rec { sha1 = "280c265b789e041c02e5c97815793dfc283fb1e6"; name = "LIBFFI_SOURCES_${sha1}/libffi-sources.tar.gz"; url = https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/libffi-3.2.1.tar.gz; }
|
||||||
rec { sha1 = "8819cea8bfe22c9c63f55465e296b3855ea41786"; name = "TruffleJSON_${sha1}/trufflejson.jar"; url = https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/trufflejson-20180130.jar; }
|
rec { sha1 = "8819cea8bfe22c9c63f55465e296b3855ea41786"; name = "TruffleJSON_${sha1}/trufflejson.jar"; url = https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/trufflejson-20180130.jar; }
|
||||||
rec { sha1 = "9712a8124c40298015f04a74f61b3d81a51513af"; name = "CHECKSTYLE_8.8_${sha1}/checkstyle-8.8.jar"; url = https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/checkstyle-8.8-all.jar; }
|
rec { sha1 = "9712a8124c40298015f04a74f61b3d81a51513af"; name = "CHECKSTYLE_8.8_${sha1}/checkstyle-8.8.jar"; url = https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/checkstyle-8.8-all.jar; }
|
||||||
rec { sha1 = "5a5574f03b58465226166a638641a384b9f44445"; name = "VISUALVM_COMMON_${sha1}/visualvm-common.tar.gz"; url = https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/visualvm-655.tar.gz; }
|
rec { sha1 = "158ba6f2b346469b5f8083d1700c3f55b8b9082c"; name = "VISUALVM_COMMON_${sha1}/visualvm-common.tar.gz"; url = https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/visualvm/visualvm-19_0_0-11.tar.gz; }
|
||||||
rec { sha1 = "64f07398bac9897e9b8123edeaf5cf9ff19517b5"; name = "VISUALVM_PLATFORM_SPECIFIC_${sha1}/visualvm-platform-specific.tar.gz"; url = https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/visualvm-655-linux-amd64.tar.gz; }
|
rec { sha1 = "eb5ffa476ed2f6fac0ecd4bb2ae32741f9646932"; name = "VISUALVM_PLATFORM_SPECIFIC_${sha1}/visualvm-platform-specific.tar.gz"; url = https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/visualvm/visualvm-19_0_0-11-linux-amd64.tar.gz; }
|
||||||
rec { sha1 = "e6e60889b7211a80b21052a249bd7e0f88f79fee"; name = "Java-WebSocket_${sha1}/java-websocket.jar"; url = mirror://maven/org/java-websocket/Java-WebSocket/1.3.9/Java-WebSocket-1.3.9.jar; }
|
rec { sha1 = "e6e60889b7211a80b21052a249bd7e0f88f79fee"; name = "Java-WebSocket_${sha1}/java-websocket.jar"; url = mirror://maven/org/java-websocket/Java-WebSocket/1.3.9/Java-WebSocket-1.3.9.jar; }
|
||||||
rec { sha1 = "7a4d00d5ec5febd252a6182e8b6e87a0a9821f81"; name = "ICU4J_${sha1}/icu4j.jar"; url = mirror://maven/com/ibm/icu/icu4j/62.1/icu4j-62.1.jar; }
|
rec { sha1 = "7a4d00d5ec5febd252a6182e8b6e87a0a9821f81"; name = "ICU4J_${sha1}/icu4j.jar"; url = mirror://maven/com/ibm/icu/icu4j/62.1/icu4j-62.1.jar; }
|
||||||
# This duplication of asm with underscore and minus is totally weird
|
# This duplication of asm with underscore and minus is totally weird
|
||||||
@ -145,14 +141,10 @@ let
|
|||||||
];
|
];
|
||||||
|
|
||||||
graal-mxcachegit = [
|
graal-mxcachegit = [
|
||||||
{ sha256 = "0siryzvmj9h8zkyr0d3gy9fqgyxb9s5xs15rf7lnx9zh3ykq549y"; name = "graaljs";
|
{ sha256 = "05z2830ng71bhgsxc0zyc74l1bz7hg54la8j1r99993fhhch4y36"; name = "graaljs"; url = "https://github.com/graalvm/graaljs.git"; rev = "vm-${version}"; }
|
||||||
url = "http://github.com/graalvm/graaljs.git"; rev = "vm-${version}"; }
|
{ sha256 = "0ai5x4n1c2lcfkfpp29zn1bcmp3khc5hvssyw1qr1l2zy79fxwjp"; name = "truffleruby"; url = "https://github.com/oracle/truffleruby.git"; rev = "vm-${version}"; }
|
||||||
{ sha256 = "1ii3mwa0c2zk9vm51hyrymdz3whfihm6sccd2r5ja2v53jcdc1a3"; name = "truffleruby";
|
{ sha256 = "010079qsl6dff3yca8vlzcahq9z1ppyr758shjkm1f7izwphjv7p"; name = "fastr"; url = "https://github.com/oracle/fastr.git"; rev = "vm-${version}"; }
|
||||||
url = "http://github.com/oracle/truffleruby.git"; rev = "vm-${version}"; }
|
{ sha256 = "0hcqbasqs0yb7p1sal63qbxqxh942gh5vzl95pfdlflmc2g82v4q"; name = "graalpython"; url = "https://github.com/graalvm/graalpython.git"; rev = "vm-${version}"; }
|
||||||
{ sha256 = "1nz8yqg2k9shpmhj3jv7k2icfg72cm55baf354rsh1pqanay8qb7"; name = "fastr";
|
|
||||||
url = "http://github.com/oracle/fastr.git"; rev = "vm-${version}"; }
|
|
||||||
{ sha256 = "1c8nnrl30fys22gk3y6dvxzq0fq1a5hjkqrw15p68cwpz9wma4gi"; name = "graalpython";
|
|
||||||
url = "https://github.com/graalvm/graalpython.git"; rev = "vm-${version}"; }
|
|
||||||
];
|
];
|
||||||
|
|
||||||
ninja-syntax = python27.pkgs.buildPythonPackage rec {
|
ninja-syntax = python27.pkgs.buildPythonPackage rec {
|
||||||
@ -176,13 +168,13 @@ let
|
|||||||
in rec {
|
in rec {
|
||||||
|
|
||||||
mx = stdenv.mkDerivation rec {
|
mx = stdenv.mkDerivation rec {
|
||||||
version = "5.215.4";
|
version = "5.223.0";
|
||||||
pname = "mx";
|
pname = "mx";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "graalvm";
|
owner = "graalvm";
|
||||||
repo = "mx";
|
repo = "mx";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "0wrwfiwqjw6xp0bvp2g15jn6yrjb9w6jw1xnwvkyhkw1s6m0w0z1";
|
sha256 = "0q51dnm6n1472p93dxr4jh8d7cv09a70pq89cdgxwh42vapykrn9";
|
||||||
};
|
};
|
||||||
nativeBuildInputs = [ makeWrapper ];
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
prePatch = ''
|
prePatch = ''
|
||||||
@ -215,19 +207,19 @@ in rec {
|
|||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
homepage = https://github.com/graalvm/mx;
|
homepage = https://github.com/graalvm/mx;
|
||||||
description = "Command-line tool used for the development of Graal projects";
|
description = "Command-line tool used for the development of Graal projects";
|
||||||
license = licenses.unfree;
|
license = licenses.gpl2;
|
||||||
platforms = python27.meta.platforms;
|
platforms = python27.meta.platforms;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
jvmci8 = stdenv.mkDerivation rec {
|
jvmci8 = stdenv.mkDerivation rec {
|
||||||
version = "0.58";
|
version = "19.2-b01";
|
||||||
name = "jvmci-${version}";
|
name = "jvmci-${version}";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "graalvm";
|
owner = "graalvm";
|
||||||
repo = "graal-jvmci-8";
|
repo = "graal-jvmci-8";
|
||||||
rev = "jvmci-${version}";
|
rev = "jvmci-${version}";
|
||||||
sha256 = "0p8icn3d99zggsh6pqb15dz1j186ck442sjpn2cv43n4nvdmmp1m";
|
sha256 = "0maipj871vaxvap4576m0pzblzqxfjjzmwap3ndd84ny8d6vbqaa";
|
||||||
};
|
};
|
||||||
buildInputs = [ mx mercurial openjdk ];
|
buildInputs = [ mx mercurial openjdk ];
|
||||||
postUnpack = ''
|
postUnpack = ''
|
||||||
@ -245,6 +237,9 @@ in rec {
|
|||||||
# The hotspot version name regex fix
|
# The hotspot version name regex fix
|
||||||
substituteInPlace mx.jvmci/mx_jvmci.py \
|
substituteInPlace mx.jvmci/mx_jvmci.py \
|
||||||
--replace "\\d+.\\d+-b\\d+" "\\d+.\\d+-bga"
|
--replace "\\d+.\\d+-b\\d+" "\\d+.\\d+-bga"
|
||||||
|
substituteInPlace src/share/vm/jvmci/jvmciCompilerToVM.cpp \
|
||||||
|
--replace 'method->name_and_sig_as_C_string(), method->native_function(), entry' \
|
||||||
|
'method->name_and_sig_as_C_string(), p2i(method->native_function()), p2i(entry)' || exit -1
|
||||||
'';
|
'';
|
||||||
hardeningDisable = [ "fortify" ];
|
hardeningDisable = [ "fortify" ];
|
||||||
NIX_CFLAGS_COMPILE = [
|
NIX_CFLAGS_COMPILE = [
|
||||||
@ -264,9 +259,22 @@ in rec {
|
|||||||
mv openjdk1.8.0_*/linux-amd64/product/* $out
|
mv openjdk1.8.0_*/linux-amd64/product/* $out
|
||||||
install -v -m0555 -D $MX_CACHE_DIR/hsdis*/hsdis.so $out/jre/lib/amd64/hsdis-amd64.so
|
install -v -m0555 -D $MX_CACHE_DIR/hsdis*/hsdis.so $out/jre/lib/amd64/hsdis-amd64.so
|
||||||
'';
|
'';
|
||||||
dontFixup = true; # do not nuke path of ffmpeg etc
|
# copy-paste openjdk's preFixup
|
||||||
dontStrip = true; # why? see in oraclejdk derivation
|
preFixup = ''
|
||||||
meta = openjdk.meta // { inherit (graalvm8.meta) platforms; };
|
# Propagate the setJavaClassPath setup hook from the JRE so that
|
||||||
|
# any package that depends on the JRE has $CLASSPATH set up
|
||||||
|
# properly.
|
||||||
|
mkdir -p $out/nix-support
|
||||||
|
printWords ${setJavaClassPath} > $out/nix-support/propagated-build-inputs
|
||||||
|
|
||||||
|
# Set JAVA_HOME automatically.
|
||||||
|
mkdir -p $out/nix-support
|
||||||
|
cat <<EOF > $out/nix-support/setup-hook
|
||||||
|
if [ -z "\$JAVA_HOME" ]; then export JAVA_HOME=$out; fi
|
||||||
|
EOF
|
||||||
|
'';
|
||||||
|
dontStrip = true; # stripped javac crashes with "segmentaion fault"
|
||||||
|
inherit (openjdk) meta;
|
||||||
inherit (openjdk) postFixup;
|
inherit (openjdk) postFixup;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -277,7 +285,7 @@ in rec {
|
|||||||
owner = "oracle";
|
owner = "oracle";
|
||||||
repo = "graal";
|
repo = "graal";
|
||||||
rev = "vm-${version}";
|
rev = "vm-${version}";
|
||||||
sha256 = "18fqah8x7gwz02ji40b4vyqav9x5dw703xwikjc117wlyymb1k56";
|
sha256 = "0abx6adk91yzaf1md4qbidxykpqcgphh6j4hj01ry57s4if0j66f";
|
||||||
};
|
};
|
||||||
patches = [ ./002_setjmp.c.patch ./003_mx_truffle.py.patch ];
|
patches = [ ./002_setjmp.c.patch ./003_mx_truffle.py.patch ];
|
||||||
buildInputs = [ mx zlib mercurial jvmci8 git clang llvm
|
buildInputs = [ mx zlib mercurial jvmci8 git clang llvm
|
||||||
@ -320,6 +328,10 @@ in rec {
|
|||||||
|
|
||||||
# Patch the native-image template, as it will be run during build
|
# Patch the native-image template, as it will be run during build
|
||||||
chmod +x vm/mx.vm/launcher_template.sh && patchShebangs vm/mx.vm
|
chmod +x vm/mx.vm/launcher_template.sh && patchShebangs vm/mx.vm
|
||||||
|
# Prevent random errors from too low maxRuntimecompilemethods
|
||||||
|
substituteInPlace truffle/mx.truffle/macro-truffle.properties \
|
||||||
|
--replace '-H:MaxRuntimeCompileMethods=1400' \
|
||||||
|
'-H:MaxRuntimeCompileMethods=28000'
|
||||||
'';
|
'';
|
||||||
|
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
@ -345,19 +357,21 @@ in rec {
|
|||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out
|
mkdir -p $out
|
||||||
cp -rf $MX_ALT_OUTPUT_ROOT/vm/linux-amd64/GRAALVM_CMP_GU_GVM_INS_JS_LIBPOLY_NFI_NJS_POLY_POLYNATIVE_PRO_PYN_RGX_SLG_SVM_SVMAG_SVMCF_SVML_TFL_VVM/graalvm-unknown-${version}/* $out
|
rm -rf $MX_ALT_OUTPUT_ROOT/vm/linux-amd64/GRAALVM_*STAGE1*
|
||||||
|
cp -rf $MX_ALT_OUTPUT_ROOT/vm/linux-amd64/GRAALVM*/graalvm-unknown-${version}/* $out
|
||||||
|
|
||||||
# BUG workaround http://mail.openjdk.java.net/pipermail/graal-dev/2017-December/005141.html
|
# BUG workaround http://mail.openjdk.java.net/pipermail/graal-dev/2017-December/005141.html
|
||||||
substituteInPlace $out/jre/lib/security/java.security \
|
substituteInPlace $out/jre/lib/security/java.security \
|
||||||
--replace file:/dev/random file:/dev/./urandom \
|
--replace file:/dev/random file:/dev/./urandom \
|
||||||
--replace NativePRNGBlocking SHA1PRNG
|
--replace NativePRNGBlocking SHA1PRNG
|
||||||
# Organize the out dir
|
# copy static and dynamic libraries needed for static compilation
|
||||||
mkdir -p $out/share && mv $out/man $out/share
|
cp -rf ${glibc}/lib/* $out/jre/lib/svm/clibraries/linux-amd64/
|
||||||
rm $out/ASSEMBLY_EXCEPTION $out/release $out/LICENSE $out/THIRD_PARTY_README
|
cp ${glibc.static}/lib/* $out/jre/lib/svm/clibraries/linux-amd64/
|
||||||
|
cp ${zlib.static}/lib/libz.a $out/jre/lib/svm/clibraries/linux-amd64/libz.a
|
||||||
'';
|
'';
|
||||||
|
|
||||||
dontFixup = true; # do not nuke path of ffmpeg etc
|
inherit (jvmci8) preFixup;
|
||||||
dontStrip = true; # why? see in oraclejdk derivation
|
dontStrip = true; # stripped javac crashes with "segmentaion fault"
|
||||||
doInstallCheck = true;
|
doInstallCheck = true;
|
||||||
installCheckPhase = ''
|
installCheckPhase = ''
|
||||||
echo ${lib.escapeShellArg ''
|
echo ${lib.escapeShellArg ''
|
||||||
@ -377,8 +391,14 @@ in rec {
|
|||||||
$out/bin/native-image --no-server HelloWorld
|
$out/bin/native-image --no-server HelloWorld
|
||||||
./helloworld
|
./helloworld
|
||||||
./helloworld | fgrep 'Hello World'
|
./helloworld | fgrep 'Hello World'
|
||||||
|
|
||||||
|
# Ahead-Of-Time compilation with --static
|
||||||
|
$out/bin/native-image --no-server --static HelloWorld
|
||||||
|
./helloworld
|
||||||
|
./helloworld | fgrep 'Hello World'
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
passthru.home = graalvm8;
|
passthru.home = graalvm8;
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
@ -386,7 +406,7 @@ in rec {
|
|||||||
description = "High-Performance Polyglot VM";
|
description = "High-Performance Polyglot VM";
|
||||||
license = licenses.gpl2;
|
license = licenses.gpl2;
|
||||||
maintainers = with maintainers; [ volth hlolli ];
|
maintainers = with maintainers; [ volth hlolli ];
|
||||||
platforms = [ "x86_64-linux" ];
|
platforms = [ "x86_64-linux" /*"aarch64-linux" "x86_64-darwin"*/ ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{ stdenv, makeWrapper, fetchFromGitHub, ocaml, findlib, dune
|
{ stdenv, makeWrapper, fetchFromGitHub, ocaml, findlib, dune
|
||||||
, menhir, merlin_extend, ppx_tools_versioned, utop
|
, menhir, merlin-extend, ppx_tools_versioned, utop
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
nativeBuildInputs = [ makeWrapper ];
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
|
|
||||||
propagatedBuildInputs = [ menhir merlin_extend ppx_tools_versioned ];
|
propagatedBuildInputs = [ menhir merlin-extend ppx_tools_versioned ];
|
||||||
|
|
||||||
buildInputs = [ ocaml findlib dune utop menhir ];
|
buildInputs = [ ocaml findlib dune utop menhir ];
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
buildGoPackage rec {
|
buildGoPackage rec {
|
||||||
name = "joker-${version}";
|
name = "joker-${version}";
|
||||||
version = "0.12.2";
|
version = "0.12.4";
|
||||||
|
|
||||||
goPackagePath = "github.com/candid82/joker";
|
goPackagePath = "github.com/candid82/joker";
|
||||||
|
|
||||||
@ -10,11 +10,13 @@ buildGoPackage rec {
|
|||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
owner = "candid82";
|
owner = "candid82";
|
||||||
repo = "joker";
|
repo = "joker";
|
||||||
sha256 = "0cqz8k53fzz3xqx9czk3hgq164dsbvnk51s0j29g1bmkbl51c2vm";
|
sha256 = "1swi991khmyhxn6w6xsdqp1wbyx3qmd9d7yhpwvqasyxp8gg3szm";
|
||||||
};
|
};
|
||||||
|
|
||||||
preBuild = "go generate ./...";
|
preBuild = "go generate ./...";
|
||||||
|
|
||||||
|
postBuild = "rm go/bin/sum256dir";
|
||||||
|
|
||||||
dontInstallSrc = true;
|
dontInstallSrc = true;
|
||||||
|
|
||||||
excludedPackages = "gen"; # Do not install private generators.
|
excludedPackages = "gen"; # Do not install private generators.
|
||||||
|
@ -1,13 +1,17 @@
|
|||||||
{ callPackage }:
|
{ pkgs }:
|
||||||
|
let
|
||||||
|
inherit (pkgs) callPackage;
|
||||||
|
icu = pkgs.icu60;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
ticcutils = callPackage ./ticcutils.nix { };
|
ticcutils = callPackage ./ticcutils.nix { };
|
||||||
libfolia = callPackage ./libfolia.nix { };
|
libfolia = callPackage ./libfolia.nix { inherit icu; };
|
||||||
ucto = callPackage ./ucto.nix { };
|
ucto = callPackage ./ucto.nix { inherit icu; };
|
||||||
uctodata = callPackage ./uctodata.nix { };
|
uctodata = callPackage ./uctodata.nix { };
|
||||||
timbl = callPackage ./timbl.nix { };
|
timbl = callPackage ./timbl.nix { };
|
||||||
timblserver = callPackage ./timblserver.nix { };
|
timblserver = callPackage ./timblserver.nix { };
|
||||||
mbt = callPackage ./mbt.nix { };
|
mbt = callPackage ./mbt.nix { };
|
||||||
frog = callPackage ./frog.nix { };
|
frog = callPackage ./frog.nix { inherit icu; };
|
||||||
frogdata = callPackage ./frogdata.nix { };
|
frogdata = callPackage ./frogdata.nix { };
|
||||||
|
|
||||||
test = callPackage ./test.nix { };
|
test = callPackage ./test.nix { };
|
||||||
|
6
pkgs/development/libraries/protobuf/3.8.nix
Normal file
6
pkgs/development/libraries/protobuf/3.8.nix
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{ callPackage, ... }:
|
||||||
|
|
||||||
|
callPackage ./generic-v3.nix {
|
||||||
|
version = "3.8.0";
|
||||||
|
sha256 = "0vll02a6k46k720wfh25sl4hdai0130s3ix2l1wh6j1lm9pi7bm8";
|
||||||
|
}
|
6
pkgs/development/libraries/protobuf/3.9.nix
Normal file
6
pkgs/development/libraries/protobuf/3.9.nix
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{ callPackage, ... }:
|
||||||
|
|
||||||
|
callPackage ./generic-v3.nix {
|
||||||
|
version = "3.9.0";
|
||||||
|
sha256 = "1xq2njqrbmizwg91ggi1lqr0n26cm2jdyk668ljc24ihrpk0z9bw";
|
||||||
|
}
|
@ -12,7 +12,7 @@ rec {
|
|||||||
|
|
||||||
buildApp = import ./build-app.nix {
|
buildApp = import ./build-app.nix {
|
||||||
inherit (pkgs) stdenv python which file jdk nodejs;
|
inherit (pkgs) stdenv python which file jdk nodejs;
|
||||||
inherit (pkgs.nodePackages_8_x) alloy titanium;
|
inherit (pkgs.nodePackages_10_x) alloy titanium;
|
||||||
inherit (androidenv) composeAndroidPackages;
|
inherit (androidenv) composeAndroidPackages;
|
||||||
inherit (xcodeenv) composeXcodeWrapper;
|
inherit (xcodeenv) composeXcodeWrapper;
|
||||||
inherit titaniumsdk;
|
inherit titaniumsdk;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# This file has been generated by node2nix 1.7.0. Do not edit!
|
# This file has been generated by node2nix 1.6.0. Do not edit!
|
||||||
|
|
||||||
{pkgs ? import <nixpkgs> {
|
{pkgs ? import <nixpkgs> {
|
||||||
inherit system;
|
inherit system;
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
# This file has been generated by node2nix 1.7.0. Do not edit!
|
# This file has been generated by node2nix 1.6.0. Do not edit!
|
||||||
|
|
||||||
{pkgs ? import <nixpkgs> {
|
{pkgs ? import <nixpkgs> {
|
||||||
inherit system;
|
inherit system;
|
||||||
}, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-12_x"}:
|
}, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-6_x"}:
|
||||||
|
|
||||||
let
|
let
|
||||||
nodeEnv = import ./node-env.nix {
|
nodeEnv = import ./node-env.nix {
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
# This file has been generated by node2nix 1.7.0. Do not edit!
|
|
||||||
|
|
||||||
{pkgs ? import <nixpkgs> {
|
|
||||||
inherit system;
|
|
||||||
}, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-8_x"}:
|
|
||||||
|
|
||||||
let
|
|
||||||
nodeEnv = import ./node-env.nix {
|
|
||||||
inherit (pkgs) stdenv python2 utillinux runCommand writeTextFile;
|
|
||||||
inherit nodejs;
|
|
||||||
libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
import ./node-packages-v8.nix {
|
|
||||||
inherit (pkgs) fetchurl fetchgit;
|
|
||||||
inherit nodeEnv;
|
|
||||||
}
|
|
@ -7,15 +7,6 @@ let
|
|||||||
};
|
};
|
||||||
in
|
in
|
||||||
nodePackages // {
|
nodePackages // {
|
||||||
aws-azure-login = nodePackages.aws-azure-login.override {
|
|
||||||
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD = "true";
|
|
||||||
|
|
||||||
buildInputs = [ pkgs.makeWrapper ];
|
|
||||||
postInstall = ''
|
|
||||||
wrapProgram "$out/bin/aws-azure-login" --set PUPPETEER_EXECUTABLE_PATH "${pkgs.chromium}/bin/chromium"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
bower2nix = nodePackages.bower2nix.override {
|
bower2nix = nodePackages.bower2nix.override {
|
||||||
buildInputs = [ pkgs.makeWrapper ];
|
buildInputs = [ pkgs.makeWrapper ];
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
|
@ -1,27 +0,0 @@
|
|||||||
{ pkgs, nodejs, stdenv }:
|
|
||||||
|
|
||||||
let
|
|
||||||
nodePackages = import ./composition-v8.nix {
|
|
||||||
inherit pkgs nodejs;
|
|
||||||
inherit (stdenv.hostPlatform) system;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
nodePackages // {
|
|
||||||
pnpm = nodePackages.pnpm.override {
|
|
||||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
|
||||||
postInstall = let
|
|
||||||
pnpmLibPath = stdenv.lib.makeBinPath [
|
|
||||||
nodejs.passthru.python
|
|
||||||
nodejs
|
|
||||||
];
|
|
||||||
in ''
|
|
||||||
for prog in $out/bin/*; do
|
|
||||||
wrapProgram "$prog" --prefix PATH : ${pnpmLibPath}
|
|
||||||
done
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
stf = nodePackages.stf.override {
|
|
||||||
nativeBuildInputs = with pkgs; [ yasm czmq protobufc ];
|
|
||||||
};
|
|
||||||
}
|
|
@ -4,6 +4,5 @@
|
|||||||
set -eu -o pipefail
|
set -eu -o pipefail
|
||||||
|
|
||||||
rm -f node-env.nix
|
rm -f node-env.nix
|
||||||
node2nix -8 -i node-packages-v8.json -o node-packages-v8.nix -c composition-v8.nix
|
|
||||||
node2nix --nodejs-10 -i node-packages-v10.json -o node-packages-v10.nix -c composition-v10.nix
|
node2nix --nodejs-10 -i node-packages-v10.json -o node-packages-v10.nix -c composition-v10.nix
|
||||||
node2nix --nodejs-12 -i node-packages-v12.json -o node-packages-v12.nix -c composition-v12.nix
|
node2nix --nodejs-12 -i node-packages-v12.json -o node-packages-v12.nix -c composition-v12.nix
|
||||||
|
@ -11,7 +11,7 @@ let
|
|||||||
|
|
||||||
cat > $out/bin/tar <<EOF
|
cat > $out/bin/tar <<EOF
|
||||||
#! ${stdenv.shell} -e
|
#! ${stdenv.shell} -e
|
||||||
$(type -p tar) "\$@" --warning=no-unknown-keyword --delay-directory-restore
|
$(type -p tar) "\$@" --warning=no-unknown-keyword
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
chmod +x $out/bin/tar
|
chmod +x $out/bin/tar
|
||||||
@ -72,7 +72,7 @@ let
|
|||||||
packageDir="$(find . -maxdepth 1 -type d | tail -1)"
|
packageDir="$(find . -maxdepth 1 -type d | tail -1)"
|
||||||
|
|
||||||
# Restore write permissions to make building work
|
# Restore write permissions to make building work
|
||||||
find "$packageDir" -type d -exec chmod u+x {} \;
|
find "$packageDir" -type d -print0 | xargs -0 chmod u+x
|
||||||
chmod -R u+w "$packageDir"
|
chmod -R u+w "$packageDir"
|
||||||
|
|
||||||
# Move the extracted tarball into the output folder
|
# Move the extracted tarball into the output folder
|
||||||
@ -219,16 +219,7 @@ let
|
|||||||
packageObj["_integrity"] = "sha1-000000000000000000000000000="; // When no _integrity string has been provided (e.g. by Git dependencies), add a dummy one. It does not seem to harm and it bypasses downloads.
|
packageObj["_integrity"] = "sha1-000000000000000000000000000="; // When no _integrity string has been provided (e.g. by Git dependencies), add a dummy one. It does not seem to harm and it bypasses downloads.
|
||||||
}
|
}
|
||||||
|
|
||||||
if(dependency.resolved) {
|
|
||||||
packageObj["_resolved"] = dependency.resolved; // Adopt the resolved property if one has been provided
|
|
||||||
} else {
|
|
||||||
packageObj["_resolved"] = dependency.version; // Set the resolved version to the version identifier. This prevents NPM from cloning Git repositories.
|
packageObj["_resolved"] = dependency.version; // Set the resolved version to the version identifier. This prevents NPM from cloning Git repositories.
|
||||||
}
|
|
||||||
|
|
||||||
if(dependency.from !== undefined) { // Adopt from property if one has been provided
|
|
||||||
packageObj["_from"] = dependency.from;
|
|
||||||
}
|
|
||||||
|
|
||||||
fs.writeFileSync(packageJSONPath, JSON.stringify(packageObj, null, 2));
|
fs.writeFileSync(packageJSONPath, JSON.stringify(packageObj, null, 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -317,11 +308,50 @@ let
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
prepareAndInvokeNPM = {packageName, bypassCache, reconstructLock, npmFlags, production}:
|
# Builds and composes an NPM package including all its dependencies
|
||||||
|
buildNodePackage =
|
||||||
|
{ name
|
||||||
|
, packageName
|
||||||
|
, version
|
||||||
|
, dependencies ? []
|
||||||
|
, buildInputs ? []
|
||||||
|
, production ? true
|
||||||
|
, npmFlags ? ""
|
||||||
|
, dontNpmInstall ? false
|
||||||
|
, bypassCache ? false
|
||||||
|
, preRebuild ? ""
|
||||||
|
, dontStrip ? true
|
||||||
|
, unpackPhase ? "true"
|
||||||
|
, buildPhase ? "true"
|
||||||
|
, ... }@args:
|
||||||
|
|
||||||
let
|
let
|
||||||
forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
|
forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
|
||||||
|
extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" ];
|
||||||
in
|
in
|
||||||
''
|
stdenv.mkDerivation ({
|
||||||
|
name = "node-${name}-${version}";
|
||||||
|
buildInputs = [ tarWrapper python nodejs ]
|
||||||
|
++ stdenv.lib.optional (stdenv.isLinux) utillinux
|
||||||
|
++ stdenv.lib.optional (stdenv.isDarwin) libtool
|
||||||
|
++ buildInputs;
|
||||||
|
|
||||||
|
inherit dontStrip; # Stripping may fail a build for some package deployments
|
||||||
|
inherit dontNpmInstall preRebuild unpackPhase buildPhase;
|
||||||
|
|
||||||
|
compositionScript = composePackage args;
|
||||||
|
pinpointDependenciesScript = pinpointDependenciesOfPackage args;
|
||||||
|
|
||||||
|
passAsFile = [ "compositionScript" "pinpointDependenciesScript" ];
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
# Create and enter a root node_modules/ folder
|
||||||
|
mkdir -p $out/lib/node_modules
|
||||||
|
cd $out/lib/node_modules
|
||||||
|
|
||||||
|
# Compose the package and all its dependencies
|
||||||
|
source $compositionScriptPath
|
||||||
|
|
||||||
# Pinpoint the versions of all dependencies to the ones that are actually being used
|
# Pinpoint the versions of all dependencies to the ones that are actually being used
|
||||||
echo "pinpointing versions of dependencies..."
|
echo "pinpointing versions of dependencies..."
|
||||||
source $pinpointDependenciesScriptPath
|
source $pinpointDependenciesScriptPath
|
||||||
@ -345,18 +375,11 @@ let
|
|||||||
runHook preRebuild
|
runHook preRebuild
|
||||||
|
|
||||||
${stdenv.lib.optionalString bypassCache ''
|
${stdenv.lib.optionalString bypassCache ''
|
||||||
${stdenv.lib.optionalString reconstructLock ''
|
if [ ! -f package-lock.json ]
|
||||||
if [ -f package-lock.json ]
|
|
||||||
then
|
then
|
||||||
echo "WARNING: Reconstruct lock option enabled, but a lock file already exists!"
|
|
||||||
echo "This will most likely result in version mismatches! We will remove the lock file and regenerate it!"
|
|
||||||
rm package-lock.json
|
|
||||||
else
|
|
||||||
echo "No package-lock.json file found, reconstructing..."
|
echo "No package-lock.json file found, reconstructing..."
|
||||||
fi
|
|
||||||
|
|
||||||
node ${reconstructPackageLock}
|
node ${reconstructPackageLock}
|
||||||
''}
|
fi
|
||||||
|
|
||||||
node ${addIntegrityFieldsScript}
|
node ${addIntegrityFieldsScript}
|
||||||
''}
|
''}
|
||||||
@ -370,53 +393,6 @@ let
|
|||||||
|
|
||||||
npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} install
|
npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} install
|
||||||
fi
|
fi
|
||||||
'';
|
|
||||||
|
|
||||||
# Builds and composes an NPM package including all its dependencies
|
|
||||||
buildNodePackage =
|
|
||||||
{ name
|
|
||||||
, packageName
|
|
||||||
, version
|
|
||||||
, dependencies ? []
|
|
||||||
, buildInputs ? []
|
|
||||||
, production ? true
|
|
||||||
, npmFlags ? ""
|
|
||||||
, dontNpmInstall ? false
|
|
||||||
, bypassCache ? false
|
|
||||||
, reconstructLock ? false
|
|
||||||
, preRebuild ? ""
|
|
||||||
, dontStrip ? true
|
|
||||||
, unpackPhase ? "true"
|
|
||||||
, buildPhase ? "true"
|
|
||||||
, ... }@args:
|
|
||||||
|
|
||||||
let
|
|
||||||
extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" ];
|
|
||||||
in
|
|
||||||
stdenv.mkDerivation ({
|
|
||||||
name = "node_${name}-${version}";
|
|
||||||
buildInputs = [ tarWrapper python nodejs ]
|
|
||||||
++ stdenv.lib.optional (stdenv.isLinux) utillinux
|
|
||||||
++ stdenv.lib.optional (stdenv.isDarwin) libtool
|
|
||||||
++ buildInputs;
|
|
||||||
|
|
||||||
inherit dontStrip; # Stripping may fail a build for some package deployments
|
|
||||||
inherit dontNpmInstall preRebuild unpackPhase buildPhase;
|
|
||||||
|
|
||||||
compositionScript = composePackage args;
|
|
||||||
pinpointDependenciesScript = pinpointDependenciesOfPackage args;
|
|
||||||
|
|
||||||
passAsFile = [ "compositionScript" "pinpointDependenciesScript" ];
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
# Create and enter a root node_modules/ folder
|
|
||||||
mkdir -p $out/lib/node_modules
|
|
||||||
cd $out/lib/node_modules
|
|
||||||
|
|
||||||
# Compose the package and all its dependencies
|
|
||||||
source $compositionScriptPath
|
|
||||||
|
|
||||||
${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }}
|
|
||||||
|
|
||||||
# Create symlink to the deployed executable folder, if applicable
|
# Create symlink to the deployed executable folder, if applicable
|
||||||
if [ -d "$out/lib/node_modules/.bin" ]
|
if [ -d "$out/lib/node_modules/.bin" ]
|
||||||
@ -455,13 +431,14 @@ let
|
|||||||
, npmFlags ? ""
|
, npmFlags ? ""
|
||||||
, dontNpmInstall ? false
|
, dontNpmInstall ? false
|
||||||
, bypassCache ? false
|
, bypassCache ? false
|
||||||
, reconstructLock ? false
|
|
||||||
, dontStrip ? true
|
, dontStrip ? true
|
||||||
, unpackPhase ? "true"
|
, unpackPhase ? "true"
|
||||||
, buildPhase ? "true"
|
, buildPhase ? "true"
|
||||||
, ... }@args:
|
, ... }@args:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
|
||||||
|
|
||||||
extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ];
|
extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ];
|
||||||
|
|
||||||
nodeDependencies = stdenv.mkDerivation ({
|
nodeDependencies = stdenv.mkDerivation ({
|
||||||
@ -496,13 +473,39 @@ let
|
|||||||
fi
|
fi
|
||||||
''}
|
''}
|
||||||
|
|
||||||
# Go to the parent folder to make sure that all packages are pinpointed
|
# Pinpoint the versions of all dependencies to the ones that are actually being used
|
||||||
|
echo "pinpointing versions of dependencies..."
|
||||||
cd ..
|
cd ..
|
||||||
${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
|
${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
|
||||||
|
|
||||||
${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }}
|
source $pinpointDependenciesScriptPath
|
||||||
|
cd ${packageName}
|
||||||
|
|
||||||
|
# Patch the shebangs of the bundled modules to prevent them from
|
||||||
|
# calling executables outside the Nix store as much as possible
|
||||||
|
patchShebangs .
|
||||||
|
|
||||||
|
export HOME=$PWD
|
||||||
|
|
||||||
|
${stdenv.lib.optionalString bypassCache ''
|
||||||
|
if [ ! -f package-lock.json ]
|
||||||
|
then
|
||||||
|
echo "No package-lock.json file found, reconstructing..."
|
||||||
|
node ${reconstructPackageLock}
|
||||||
|
fi
|
||||||
|
|
||||||
|
node ${addIntegrityFieldsScript}
|
||||||
|
''}
|
||||||
|
|
||||||
|
npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} rebuild
|
||||||
|
|
||||||
|
${stdenv.lib.optionalString (!dontNpmInstall) ''
|
||||||
|
# NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
|
||||||
|
rm -f npm-shrinkwrap.json
|
||||||
|
|
||||||
|
npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} install
|
||||||
|
''}
|
||||||
|
|
||||||
# Expose the executables that were installed
|
|
||||||
cd ..
|
cd ..
|
||||||
${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
|
${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
|
||||||
|
|
||||||
@ -529,7 +532,6 @@ let
|
|||||||
inherit nodeDependencies;
|
inherit nodeDependencies;
|
||||||
shellHook = stdenv.lib.optionalString (dependencies != []) ''
|
shellHook = stdenv.lib.optionalString (dependencies != []) ''
|
||||||
export NODE_PATH=$nodeDependencies/lib/node_modules
|
export NODE_PATH=$nodeDependencies/lib/node_modules
|
||||||
export PATH="$nodeDependencies/bin:$PATH"
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
|
@ -2,8 +2,15 @@
|
|||||||
"@angular/cli"
|
"@angular/cli"
|
||||||
, "@antora/cli"
|
, "@antora/cli"
|
||||||
, "@antora/site-generator-default"
|
, "@antora/site-generator-default"
|
||||||
|
, "@vue/cli"
|
||||||
|
, "@webassemblyjs/cli"
|
||||||
|
, "@webassemblyjs/repl"
|
||||||
|
, "@webassemblyjs/wasm-strip"
|
||||||
|
, "@webassemblyjs/wasm-text-gen"
|
||||||
|
, "@webassemblyjs/wast-refmt"
|
||||||
|
, "alloy"
|
||||||
, "asar"
|
, "asar"
|
||||||
, "aws-azure-login"
|
, "azure-cli"
|
||||||
, "azure-functions-core-tools"
|
, "azure-functions-core-tools"
|
||||||
, "bash-language-server"
|
, "bash-language-server"
|
||||||
, "bower"
|
, "bower"
|
||||||
@ -27,10 +34,10 @@
|
|||||||
, "elm-live"
|
, "elm-live"
|
||||||
, "elm-oracle"
|
, "elm-oracle"
|
||||||
, "emoj"
|
, "emoj"
|
||||||
|
, "emojione"
|
||||||
, "eslint"
|
, "eslint"
|
||||||
, "eslint_d"
|
, "eslint_d"
|
||||||
, "emojione"
|
, {"fast-cli": "1.x"}
|
||||||
, { "fast-cli": "1.x" }
|
|
||||||
, "fkill-cli"
|
, "fkill-cli"
|
||||||
, "forever"
|
, "forever"
|
||||||
, "git-run"
|
, "git-run"
|
||||||
@ -40,26 +47,26 @@
|
|||||||
, "grunt-cli"
|
, "grunt-cli"
|
||||||
, "gulp"
|
, "gulp"
|
||||||
, "gulp-cli"
|
, "gulp-cli"
|
||||||
, "htmlhint"
|
|
||||||
, "html-minifier"
|
, "html-minifier"
|
||||||
|
, "htmlhint"
|
||||||
, "http-server"
|
, "http-server"
|
||||||
, "hueadm"
|
, "hueadm"
|
||||||
, "ionic"
|
|
||||||
, "ios-deploy"
|
|
||||||
, "imapnotify"
|
, "imapnotify"
|
||||||
, "indium"
|
, "indium"
|
||||||
|
, "ionic"
|
||||||
|
, "ios-deploy"
|
||||||
, "jake"
|
, "jake"
|
||||||
, "javascript-typescript-langserver"
|
, "javascript-typescript-langserver"
|
||||||
, "joplin"
|
, "joplin"
|
||||||
|
, "js-beautify"
|
||||||
|
, "js-yaml"
|
||||||
, "jsdoc"
|
, "jsdoc"
|
||||||
, "jshint"
|
, "jshint"
|
||||||
, "json"
|
, "json"
|
||||||
, "js-beautify"
|
|
||||||
, "jsonlint"
|
|
||||||
, "json-diff"
|
, "json-diff"
|
||||||
, "json-refs"
|
, "json-refs"
|
||||||
, "json-server"
|
, "json-server"
|
||||||
, "js-yaml"
|
, "jsonlint"
|
||||||
, "karma"
|
, "karma"
|
||||||
, "lcov-result-merger"
|
, "lcov-result-merger"
|
||||||
, "leetcode-cli"
|
, "leetcode-cli"
|
||||||
@ -68,7 +75,7 @@
|
|||||||
, "less-plugin-clean-css"
|
, "less-plugin-clean-css"
|
||||||
, "live-server"
|
, "live-server"
|
||||||
, "livedown"
|
, "livedown"
|
||||||
, { "lumo-build-deps": "../interpreters/clojurescript/lumo" }
|
, {"lumo-build-deps": "../interpreters/clojurescript/lumo" }
|
||||||
, "madoko"
|
, "madoko"
|
||||||
, "markdown-link-check"
|
, "markdown-link-check"
|
||||||
, "mathjax"
|
, "mathjax"
|
||||||
@ -78,24 +85,25 @@
|
|||||||
, "multi-file-swagger"
|
, "multi-file-swagger"
|
||||||
, "neovim"
|
, "neovim"
|
||||||
, "nijs"
|
, "nijs"
|
||||||
, "node2nix"
|
|
||||||
, "node-gyp"
|
, "node-gyp"
|
||||||
, "node-gyp-build"
|
, "node-gyp-build"
|
||||||
, "node-inspector"
|
, "node-inspector"
|
||||||
, "node-pre-gyp"
|
, "node-pre-gyp"
|
||||||
, "nodemon"
|
|
||||||
, "node-red"
|
, "node-red"
|
||||||
|
, "node2nix"
|
||||||
|
, "nodemon"
|
||||||
, "npm"
|
, "npm"
|
||||||
, "npm-check-updates"
|
, "npm-check-updates"
|
||||||
|
, {"npm2nix": "git://github.com/NixOS/npm2nix.git#5.12.0"}
|
||||||
, "ocaml-language-server"
|
, "ocaml-language-server"
|
||||||
|
, "parcel-bundler"
|
||||||
, "peerflix"
|
, "peerflix"
|
||||||
, "peerflix-server"
|
, "peerflix-server"
|
||||||
, "pnpm"
|
, "pnpm"
|
||||||
, "parcel-bundler"
|
|
||||||
, "prettier"
|
, "prettier"
|
||||||
, "pulp"
|
, "pulp"
|
||||||
, "react-tools"
|
|
||||||
, "react-native-cli"
|
, "react-native-cli"
|
||||||
|
, "react-tools"
|
||||||
, "reveal.js"
|
, "reveal.js"
|
||||||
, "s3http"
|
, "s3http"
|
||||||
, "semver"
|
, "semver"
|
||||||
@ -108,9 +116,10 @@
|
|||||||
, "speed-test"
|
, "speed-test"
|
||||||
, "ssb-server"
|
, "ssb-server"
|
||||||
, "stackdriver-statsd-backend"
|
, "stackdriver-statsd-backend"
|
||||||
|
, "stf"
|
||||||
, "svgo"
|
, "svgo"
|
||||||
, "swagger"
|
, "swagger"
|
||||||
, { "tedicross": "git+https://github.com/TediCross/TediCross.git#v0.8.7" }
|
, {"tedicross": "git+https://github.com/TediCross/TediCross.git#v0.8.7"}
|
||||||
, "tern"
|
, "tern"
|
||||||
, "textlint"
|
, "textlint"
|
||||||
, "textlint-plugin-latex"
|
, "textlint-plugin-latex"
|
||||||
@ -129,6 +138,7 @@
|
|||||||
, "thelounge"
|
, "thelounge"
|
||||||
, "three"
|
, "three"
|
||||||
, "tiddlywiki"
|
, "tiddlywiki"
|
||||||
|
, "titanium"
|
||||||
, "triton"
|
, "triton"
|
||||||
, "tsun"
|
, "tsun"
|
||||||
, "ttf2eot"
|
, "ttf2eot"
|
||||||
@ -139,17 +149,11 @@
|
|||||||
, "vscode-css-languageserver-bin"
|
, "vscode-css-languageserver-bin"
|
||||||
, "vscode-html-languageserver-bin"
|
, "vscode-html-languageserver-bin"
|
||||||
, "vue-cli"
|
, "vue-cli"
|
||||||
, "@vue/cli"
|
|
||||||
, "vue-language-server"
|
, "vue-language-server"
|
||||||
, "@webassemblyjs/cli"
|
, "web-ext"
|
||||||
, "@webassemblyjs/repl"
|
|
||||||
, "@webassemblyjs/wasm-strip"
|
|
||||||
, "@webassemblyjs/wasm-text-gen"
|
|
||||||
, "@webassemblyjs/wast-refmt"
|
|
||||||
, "webpack"
|
, "webpack"
|
||||||
, "webpack-cli"
|
, "webpack-cli"
|
||||||
, "webtorrent-cli"
|
, "webtorrent-cli"
|
||||||
, "web-ext"
|
|
||||||
, "wring"
|
, "wring"
|
||||||
, "write-good"
|
, "write-good"
|
||||||
, "yarn"
|
, "yarn"
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
|||||||
# This file has been generated by node2nix 1.7.0. Do not edit!
|
# This file has been generated by node2nix 1.6.0. Do not edit!
|
||||||
|
|
||||||
{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
|
{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
|
||||||
|
|
||||||
@ -1624,13 +1624,13 @@ let
|
|||||||
sha1 = "212d5bfe1318306a420f6402b8e26ff39647a849";
|
sha1 = "212d5bfe1318306a420f6402b8e26ff39647a849";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
"psl-1.2.0" = {
|
"psl-1.3.0" = {
|
||||||
name = "psl";
|
name = "psl";
|
||||||
packageName = "psl";
|
packageName = "psl";
|
||||||
version = "1.2.0";
|
version = "1.3.0";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://registry.npmjs.org/psl/-/psl-1.2.0.tgz";
|
url = "https://registry.npmjs.org/psl/-/psl-1.3.0.tgz";
|
||||||
sha512 = "GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA==";
|
sha512 = "avHdspHO+9rQTLbv1RO+MPYeP/SzsCoxofjVnHanETfQhTJrmB0HlDoW+EiN/R+C0BZ+gERab9NY0lPN2TxNag==";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
"punycode-1.4.1" = {
|
"punycode-1.4.1" = {
|
||||||
@ -1714,13 +1714,13 @@ let
|
|||||||
sha512 = "NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==";
|
sha512 = "NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
"resolve-1.11.1" = {
|
"resolve-1.12.0" = {
|
||||||
name = "resolve";
|
name = "resolve";
|
||||||
packageName = "resolve";
|
packageName = "resolve";
|
||||||
version = "1.11.1";
|
version = "1.12.0";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz";
|
url = "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz";
|
||||||
sha512 = "vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==";
|
sha512 = "B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
"resolve-dir-1.0.1" = {
|
"resolve-dir-1.0.1" = {
|
||||||
@ -2303,8 +2303,7 @@ in
|
|||||||
license = "MIT";
|
license = "MIT";
|
||||||
};
|
};
|
||||||
production = true;
|
production = true;
|
||||||
bypassCache = true;
|
bypassCache = false;
|
||||||
reconstructLock = true;
|
|
||||||
};
|
};
|
||||||
coffee-script = nodeEnv.buildNodePackage {
|
coffee-script = nodeEnv.buildNodePackage {
|
||||||
name = "coffee-script";
|
name = "coffee-script";
|
||||||
@ -2321,8 +2320,7 @@ in
|
|||||||
license = "MIT";
|
license = "MIT";
|
||||||
};
|
};
|
||||||
production = true;
|
production = true;
|
||||||
bypassCache = true;
|
bypassCache = false;
|
||||||
reconstructLock = true;
|
|
||||||
};
|
};
|
||||||
grunt-cli = nodeEnv.buildNodePackage {
|
grunt-cli = nodeEnv.buildNodePackage {
|
||||||
name = "grunt-cli";
|
name = "grunt-cli";
|
||||||
@ -2497,7 +2495,7 @@ in
|
|||||||
sources."regex-not-1.0.2"
|
sources."regex-not-1.0.2"
|
||||||
sources."repeat-element-1.1.3"
|
sources."repeat-element-1.1.3"
|
||||||
sources."repeat-string-1.6.1"
|
sources."repeat-string-1.6.1"
|
||||||
sources."resolve-1.11.1"
|
sources."resolve-1.12.0"
|
||||||
sources."resolve-dir-1.0.1"
|
sources."resolve-dir-1.0.1"
|
||||||
sources."resolve-url-0.2.1"
|
sources."resolve-url-0.2.1"
|
||||||
sources."ret-0.1.15"
|
sources."ret-0.1.15"
|
||||||
@ -2587,8 +2585,7 @@ in
|
|||||||
license = "MIT";
|
license = "MIT";
|
||||||
};
|
};
|
||||||
production = true;
|
production = true;
|
||||||
bypassCache = true;
|
bypassCache = false;
|
||||||
reconstructLock = true;
|
|
||||||
};
|
};
|
||||||
node2nix = nodeEnv.buildNodePackage {
|
node2nix = nodeEnv.buildNodePackage {
|
||||||
name = "node2nix";
|
name = "node2nix";
|
||||||
@ -2716,7 +2713,7 @@ in
|
|||||||
sources."performance-now-2.1.0"
|
sources."performance-now-2.1.0"
|
||||||
sources."process-nextick-args-2.0.1"
|
sources."process-nextick-args-2.0.1"
|
||||||
sources."proto-list-1.2.4"
|
sources."proto-list-1.2.4"
|
||||||
sources."psl-1.2.0"
|
sources."psl-1.3.0"
|
||||||
sources."punycode-2.1.1"
|
sources."punycode-2.1.1"
|
||||||
sources."qs-6.5.2"
|
sources."qs-6.5.2"
|
||||||
(sources."readable-stream-2.3.6" // {
|
(sources."readable-stream-2.3.6" // {
|
||||||
@ -2725,7 +2722,7 @@ in
|
|||||||
];
|
];
|
||||||
})
|
})
|
||||||
sources."request-2.88.0"
|
sources."request-2.88.0"
|
||||||
sources."resolve-1.11.1"
|
sources."resolve-1.12.0"
|
||||||
sources."retry-0.10.1"
|
sources."retry-0.10.1"
|
||||||
sources."rimraf-2.6.3"
|
sources."rimraf-2.6.3"
|
||||||
sources."safe-buffer-5.2.0"
|
sources."safe-buffer-5.2.0"
|
||||||
@ -2777,7 +2774,6 @@ in
|
|||||||
license = "MIT";
|
license = "MIT";
|
||||||
};
|
};
|
||||||
production = true;
|
production = true;
|
||||||
bypassCache = true;
|
bypassCache = false;
|
||||||
reconstructLock = true;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
@ -1,13 +0,0 @@
|
|||||||
[
|
|
||||||
"alloy"
|
|
||||||
, "azure-cli"
|
|
||||||
, "bower"
|
|
||||||
, "coffee-script"
|
|
||||||
, "grunt-cli"
|
|
||||||
, "node-gyp"
|
|
||||||
, "node-gyp-build"
|
|
||||||
, "node-pre-gyp"
|
|
||||||
, "pnpm"
|
|
||||||
, "stf"
|
|
||||||
, "titanium"
|
|
||||||
]
|
|
File diff suppressed because it is too large
Load Diff
23
pkgs/development/ocaml-modules/lambdasoup/default.nix
Normal file
23
pkgs/development/ocaml-modules/lambdasoup/default.nix
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
{ lib, fetchFromGitHub, buildDunePackage, markup }:
|
||||||
|
|
||||||
|
buildDunePackage rec {
|
||||||
|
pname = "lambdasoup";
|
||||||
|
version = "0.6.3"; # NB: double-check the license when updating
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "aantron";
|
||||||
|
repo = pname;
|
||||||
|
rev = version;
|
||||||
|
sha256 = "1w4zp3vswijzvrx0c3fv269ncqwnvvrzc46629nnwm9shwv07vmv";
|
||||||
|
};
|
||||||
|
|
||||||
|
propagatedBuildInputs = [ markup ];
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Functional HTML scraping and rewriting with CSS in OCaml";
|
||||||
|
homepage = "https://aantron.github.io/lambdasoup/";
|
||||||
|
license = lib.licenses.bsd2;
|
||||||
|
maintainers = [ lib.maintainers.vbgl ];
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
22
pkgs/development/ocaml-modules/merlin-extend/default.nix
Normal file
22
pkgs/development/ocaml-modules/merlin-extend/default.nix
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{ lib, buildDunePackage, fetchFromGitHub, cppo }:
|
||||||
|
|
||||||
|
buildDunePackage rec {
|
||||||
|
pname = "merlin-extend";
|
||||||
|
version = "0.4";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "let-def";
|
||||||
|
repo = pname;
|
||||||
|
sha256 = "1dxiqmm7ry24gvw6p9n4mrz37mnq4s6m8blrccsv3rb8yq82acx9";
|
||||||
|
rev = "v${version}";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs = [ cppo ];
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
inherit (src.meta) homepage;
|
||||||
|
description = "SDK to extend Merlin";
|
||||||
|
license = licenses.mit;
|
||||||
|
maintainers = [ maintainers.volth ];
|
||||||
|
};
|
||||||
|
}
|
@ -1,26 +0,0 @@
|
|||||||
{ stdenv, buildOcaml, fetchFromGitHub, cppo }:
|
|
||||||
|
|
||||||
buildOcaml rec {
|
|
||||||
name = "merlin_extend";
|
|
||||||
version = "0.3";
|
|
||||||
|
|
||||||
minimumSupportedOcamlVersion = "4.02";
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "let-def";
|
|
||||||
repo = "merlin-extend";
|
|
||||||
sha256 = "1z6hybcb7ry0bkzjd0r2dlcgjnhhxdsr06x3h03sj7h5fihsc7vd";
|
|
||||||
rev = "v${version}";
|
|
||||||
};
|
|
||||||
|
|
||||||
buildInputs = [ cppo ];
|
|
||||||
|
|
||||||
createFindlibDestdir = true;
|
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
|
||||||
homepage = https://github.com/let-def/merlin-extend;
|
|
||||||
description = "SDK to extend Merlin";
|
|
||||||
license = licenses.mit;
|
|
||||||
maintainers = [ maintainers.volth ];
|
|
||||||
};
|
|
||||||
}
|
|
22
pkgs/development/ocaml-modules/secp256k1/default.nix
Normal file
22
pkgs/development/ocaml-modules/secp256k1/default.nix
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{ stdenv, fetchFromGitHub, buildDunePackage, base, stdio, configurator, secp256k1 }:
|
||||||
|
|
||||||
|
buildDunePackage rec {
|
||||||
|
pname = "secp256k1";
|
||||||
|
version = "0.4.0";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "dakk";
|
||||||
|
repo = "secp256k1-ml";
|
||||||
|
rev = "42c04c93e2ed9596f6378676e944c8cfabfa69d7";
|
||||||
|
sha256 = "1zw2kgg181a9lj1m8z0ybijs8gw9w1kk990avh1bp9x8kc1asffg";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs = [ base stdio configurator secp256k1 ];
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = https://github.com/dakk/secp256k1-ml;
|
||||||
|
description = "Elliptic curve library secp256k1 wrapper for Ocaml";
|
||||||
|
license = licenses.mit;
|
||||||
|
maintainers = [ maintainers.vyorkin ];
|
||||||
|
};
|
||||||
|
}
|
@ -6,11 +6,11 @@
|
|||||||
}:
|
}:
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "cmd2";
|
pname = "cmd2";
|
||||||
version = "0.9.14";
|
version = "0.9.15";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "0rllwc4h89xdivy85nmgqdi2s0sk1zw31mlvrnlr9gz2902cnq93";
|
sha256 = "0k3y3czpabw173vhqg523l2r804jj08986wlz6vyh224zr0ngggw";
|
||||||
};
|
};
|
||||||
|
|
||||||
LC_ALL="en_US.UTF-8";
|
LC_ALL="en_US.UTF-8";
|
||||||
|
@ -1,11 +1,16 @@
|
|||||||
{ lib
|
{ blessed
|
||||||
, buildPythonPackage
|
, buildPythonPackage
|
||||||
, fetchPypi
|
, fetchPypi
|
||||||
, pythonOlder
|
, lib
|
||||||
|
, libcxx
|
||||||
|
, libcxxabi
|
||||||
, llvm
|
, llvm
|
||||||
, typesentry
|
, openmp
|
||||||
, blessed
|
|
||||||
, pytest
|
, pytest
|
||||||
|
, pythonOlder
|
||||||
|
, stdenv
|
||||||
|
, substituteAll
|
||||||
|
, typesentry
|
||||||
}:
|
}:
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
@ -17,10 +22,25 @@ buildPythonPackage rec {
|
|||||||
sha256 = "1s8z81zffrckvdwrrl0pkjc7gsdvjxw59xgg6ck81dl7gkh5grjk";
|
sha256 = "1s8z81zffrckvdwrrl0pkjc7gsdvjxw59xgg6ck81dl7gkh5grjk";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
# Disable the compiler monkey patching, and remove the task that's copying
|
||||||
|
# the native dependencies to the build directory.
|
||||||
|
./remove-compiler-monkeypatch_disable-native-relocation.patch
|
||||||
|
] ++ lib.optionals stdenv.isDarwin [
|
||||||
|
# Replace the library auto-detection with hardcoded paths.
|
||||||
|
(substituteAll {
|
||||||
|
src = ./hardcode-library-paths.patch;
|
||||||
|
|
||||||
|
libomp_dylib = "${lib.getLib openmp}/lib/libomp.dylib";
|
||||||
|
libcxx_dylib = "${lib.getLib libcxx}/lib/libc++.1.dylib";
|
||||||
|
libcxxabi_dylib = "${lib.getLib libcxxabi}/lib/libc++abi.dylib";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
disabled = pythonOlder "3.5";
|
disabled = pythonOlder "3.5";
|
||||||
|
|
||||||
propagatedBuildInputs = [ typesentry blessed ];
|
propagatedBuildInputs = [ typesentry blessed ];
|
||||||
buildInputs = [ llvm ];
|
buildInputs = [ llvm ] ++ lib.optionals stdenv.isDarwin [ openmp ];
|
||||||
checkInputs = [ pytest ];
|
checkInputs = [ pytest ];
|
||||||
|
|
||||||
LLVM = llvm;
|
LLVM = llvm;
|
||||||
|
@ -0,0 +1,43 @@
|
|||||||
|
diff --git a/ci/setup_utils.py b/ci/setup_utils.py
|
||||||
|
index 66b385a..6255af0 100644
|
||||||
|
--- a/ci/setup_utils.py
|
||||||
|
+++ b/ci/setup_utils.py
|
||||||
|
@@ -600,37 +600,7 @@ def find_linked_dynamic_libraries():
|
||||||
|
them as a list of absolute paths.
|
||||||
|
"""
|
||||||
|
with TaskContext("Find the required dynamic libraries") as log:
|
||||||
|
- llvm = get_llvm()
|
||||||
|
- libs = required_link_libraries()
|
||||||
|
- resolved = []
|
||||||
|
- for libname in libs:
|
||||||
|
- if llvm:
|
||||||
|
- fullpath = os.path.join(llvm, "lib", libname)
|
||||||
|
- if os.path.isfile(fullpath):
|
||||||
|
- resolved.append(fullpath)
|
||||||
|
- log.info("Library `%s` found at %s" % (libname, fullpath))
|
||||||
|
- continue
|
||||||
|
- else:
|
||||||
|
- log.info("%s does not exist" % fullpath)
|
||||||
|
- # Rely on the shell `locate` command to find the dynamic libraries.
|
||||||
|
- proc = subprocess.Popen(["locate", libname], stdout=subprocess.PIPE,
|
||||||
|
- stderr=subprocess.PIPE)
|
||||||
|
- stdout, stderr = proc.communicate()
|
||||||
|
- if proc.returncode == 0:
|
||||||
|
- results = stdout.decode().strip().split("\n")
|
||||||
|
- results = [r for r in results if r]
|
||||||
|
- if results:
|
||||||
|
- results.sort(key=len)
|
||||||
|
- fullpath = results[0]
|
||||||
|
- assert os.path.isfile(fullpath), "Invalid path: %r" % (fullpath,)
|
||||||
|
- resolved.append(fullpath)
|
||||||
|
- log.info("Library `%s` found at %s" % (libname, fullpath))
|
||||||
|
- continue
|
||||||
|
- else:
|
||||||
|
- log.fatal("Cannot locate dynamic library `%s`" % libname)
|
||||||
|
- else:
|
||||||
|
- log.fatal("`locate` command returned the following error:\n%s"
|
||||||
|
- % stderr.decode())
|
||||||
|
+ resolved = ["@libomp_dylib@", "@libcxx_dylib@", "@libcxxabi_dylib@"]
|
||||||
|
return resolved
|
||||||
|
|
||||||
|
|
@ -0,0 +1,28 @@
|
|||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index 58fc875..8032561 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -141,23 +141,6 @@ if cmd in ("build", "bdist_wheel", "build_ext", "install"):
|
||||||
|
extra_link_args = get_extra_link_args()
|
||||||
|
cpp_files = get_c_sources("c")
|
||||||
|
|
||||||
|
- with TaskContext("Copy dynamic libraries") as log:
|
||||||
|
- # Copy system libraries into the datatable/lib folder, so that they can
|
||||||
|
- # be packaged with the wheel
|
||||||
|
- libs = find_linked_dynamic_libraries()
|
||||||
|
- for libpath in libs:
|
||||||
|
- trgfile = os.path.join("datatable", "lib",
|
||||||
|
- os.path.basename(libpath))
|
||||||
|
- if os.path.exists(trgfile):
|
||||||
|
- log.info("File %s already exists, skipped" % trgfile)
|
||||||
|
- else:
|
||||||
|
- log.info("Copying %s to %s" % (libpath, trgfile))
|
||||||
|
- shutil.copy(libpath, trgfile)
|
||||||
|
-
|
||||||
|
- if ismacos():
|
||||||
|
- monkey_patch_compiler()
|
||||||
|
-
|
||||||
|
-
|
||||||
|
# Create the git version file
|
||||||
|
if cmd in ("build", "sdist", "bdist_wheel", "install"):
|
||||||
|
make_git_version_file(True)
|
@ -18,7 +18,7 @@ buildPythonPackage rec {
|
|||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "f0e962052718068ad3b1d8bcc703794660858f58803c3798628817f492a8769c";
|
sha256 = "173nm29g85w8cac3fg40b27qaq26g41wgg6qn79ql1hq4w2n5sgh";
|
||||||
};
|
};
|
||||||
|
|
||||||
checkInputs = [ pytest nose ];
|
checkInputs = [ pytest nose ];
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user