Merge branch 'staging-next' into staging
This commit is contained in:
commit
58377555ed
8
.github/CODEOWNERS
vendored
8
.github/CODEOWNERS
vendored
@ -195,10 +195,10 @@
|
|||||||
/pkgs/top-level/php-packages.nix @NixOS/php
|
/pkgs/top-level/php-packages.nix @NixOS/php
|
||||||
|
|
||||||
# Podman, CRI-O modules and related
|
# Podman, CRI-O modules and related
|
||||||
/nixos/modules/virtualisation/containers.nix @NixOS/podman
|
/nixos/modules/virtualisation/containers.nix @NixOS/podman @zowoq
|
||||||
/nixos/modules/virtualisation/cri-o.nix @NixOS/podman
|
/nixos/modules/virtualisation/cri-o.nix @NixOS/podman @zowoq
|
||||||
/nixos/modules/virtualisation/podman.nix @NixOS/podman
|
/nixos/modules/virtualisation/podman.nix @NixOS/podman @zowoq
|
||||||
/nixos/tests/podman.nix @NixOS/podman
|
/nixos/tests/podman.nix @NixOS/podman @zowoq
|
||||||
|
|
||||||
# Blockchains
|
# Blockchains
|
||||||
/pkgs/applications/blockchains @mmahut
|
/pkgs/applications/blockchains @mmahut
|
||||||
|
@ -191,6 +191,8 @@ androidenv.emulateApp {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Additional flags may be applied to the Android SDK's emulator through the runtime environment variable `$NIX_ANDROID_EMULATOR_FLAGS`.
|
||||||
|
|
||||||
It is also possible to specify an APK to deploy inside the emulator
|
It is also possible to specify an APK to deploy inside the emulator
|
||||||
and the package and activity names to launch it:
|
and the package and activity names to launch it:
|
||||||
|
|
||||||
|
@ -538,8 +538,123 @@ buildPythonPackage rec {
|
|||||||
```
|
```
|
||||||
Note also the line `doCheck = false;`, we explicitly disabled running the test-suite.
|
Note also the line `doCheck = false;`, we explicitly disabled running the test-suite.
|
||||||
|
|
||||||
|
#### Testing Python Packages
|
||||||
|
|
||||||
#### Develop local package
|
It is highly encouraged to have testing as part of the package build. This
|
||||||
|
helps to avoid situations where the package was able to build and install,
|
||||||
|
but is not usable at runtime. Currently, all packages will use the `test`
|
||||||
|
command provided by the setup.py (i.e. `python setup.py test`). However,
|
||||||
|
this is currently deprecated https://github.com/pypa/setuptools/pull/1878
|
||||||
|
and your package should provide its own checkPhase.
|
||||||
|
|
||||||
|
*NOTE:* The `checkPhase` for python maps to the `installCheckPhase` on a
|
||||||
|
normal derivation. This is due to many python packages not behaving well
|
||||||
|
to the pre-installed version of the package. Version info, and natively
|
||||||
|
compiled extensions generally only exist in the install directory, and
|
||||||
|
thus can cause issues when a test suite asserts on that behavior.
|
||||||
|
|
||||||
|
*NOTE:* Tests should only be disabled if they don't agree with nix
|
||||||
|
(e.g. external dependencies, network access, flakey tests), however,
|
||||||
|
as many tests should be enabled as possible. Failing tests can still be
|
||||||
|
a good indication that the package is not in a valid state.
|
||||||
|
|
||||||
|
#### Using pytest
|
||||||
|
|
||||||
|
Pytest is the most common test runner for python repositories. A trivial
|
||||||
|
test run would be:
|
||||||
|
```
|
||||||
|
checkInputs = [ pytest ];
|
||||||
|
checkPhase = "pytest";
|
||||||
|
```
|
||||||
|
|
||||||
|
However, many repositories' test suites do not translate well to nix's build
|
||||||
|
sandbox, and will generally need many tests to be disabled.
|
||||||
|
|
||||||
|
To filter tests using pytest, one can do the following:
|
||||||
|
```
|
||||||
|
checkInputs = [ pytest ];
|
||||||
|
# avoid tests which need additional data or touch network
|
||||||
|
checkPhase = ''
|
||||||
|
pytest tests/ --ignore=tests/integration -k 'not download and not update'
|
||||||
|
'';
|
||||||
|
```
|
||||||
|
|
||||||
|
`--ignore` will tell pytest to ignore that file or directory from being
|
||||||
|
collected as part of a test run. This is useful is a file uses a package
|
||||||
|
which is not available in nixpkgs, thus skipping that test file is much
|
||||||
|
easier than having to create a new package.
|
||||||
|
|
||||||
|
`-k` is used to define a predicate for test names. In this example, we are
|
||||||
|
filtering out tests which contain `download` or `update` in their test case name.
|
||||||
|
Only one `-k` argument is allows, and thus a long predicate should be concatenated
|
||||||
|
with "\" and wrapped to the next line.
|
||||||
|
|
||||||
|
*NOTE:* In pytest==6.0.1, the use of "\" to continue a line (e.g. `-k 'not download \'`) has
|
||||||
|
been removed, in this case, it's recommended to use `pytestCheckHook`.
|
||||||
|
|
||||||
|
#### Using pytestCheckHook
|
||||||
|
|
||||||
|
`pytestCheckHook` is a convenient hook which will substitute the setuptools
|
||||||
|
`test` command for a checkPhase which runs `pytest`. This is also beneficial
|
||||||
|
when a package may need many items disabled to run the test suite.
|
||||||
|
|
||||||
|
Using the example above, the analagous pytestCheckHook usage would be:
|
||||||
|
```
|
||||||
|
checkInputs = [ pytestCheckHook ];
|
||||||
|
|
||||||
|
# requires additional data
|
||||||
|
pytestFlagsArray = [ "tests/" "--ignore=tests/integration" ];
|
||||||
|
|
||||||
|
disabledTests = [
|
||||||
|
# touches network
|
||||||
|
"download"
|
||||||
|
"update"
|
||||||
|
];
|
||||||
|
```
|
||||||
|
|
||||||
|
This is expecially useful when tests need to be conditionallydisabled,
|
||||||
|
for example:
|
||||||
|
|
||||||
|
```
|
||||||
|
disabledTests = [
|
||||||
|
# touches network
|
||||||
|
"download"
|
||||||
|
"update"
|
||||||
|
] ++ lib.optionals (pythonAtLeast "3.8") [
|
||||||
|
# broken due to python3.8 async changes
|
||||||
|
"async"
|
||||||
|
] ++ lib.optionals stdenv.isDarwin [
|
||||||
|
# can fail when building with other packages
|
||||||
|
"socket"
|
||||||
|
];
|
||||||
|
```
|
||||||
|
Trying to concatenate the related strings to disable tests in a regular checkPhase
|
||||||
|
would be much harder to read. This also enables us to comment on why specific tests
|
||||||
|
are disabled.
|
||||||
|
|
||||||
|
#### Using pythonImportsCheck
|
||||||
|
|
||||||
|
Although unit tests are highly prefered to valid correctness of a package. Not
|
||||||
|
all packages have test suites that can be ran easily, and some have none at all.
|
||||||
|
To help ensure the package still works, `pythonImportsCheck` can attempt to import
|
||||||
|
the listed modules.
|
||||||
|
|
||||||
|
```
|
||||||
|
pythonImportsCheck = [ "requests" "urllib" ];
|
||||||
|
```
|
||||||
|
roughly translates to:
|
||||||
|
```
|
||||||
|
postCheck = ''
|
||||||
|
PYTHONPATH=$out/${python.sitePackages}:$PYTHONPATH
|
||||||
|
python -c "import requests; import urllib"
|
||||||
|
'';
|
||||||
|
```
|
||||||
|
However, this is done in it's own phase, and not dependent on whether `doCheck = true;`
|
||||||
|
|
||||||
|
This can also be useful in verifying that the package doesn't assume commonly
|
||||||
|
present packages (e.g. `setuptools`)
|
||||||
|
|
||||||
|
### Develop local package
|
||||||
|
|
||||||
As a Python developer you're likely aware of [development mode](http://setuptools.readthedocs.io/en/latest/setuptools.html#development-mode)
|
As a Python developer you're likely aware of [development mode](http://setuptools.readthedocs.io/en/latest/setuptools.html#development-mode)
|
||||||
(`python setup.py develop`); instead of installing the package this command
|
(`python setup.py develop`); instead of installing the package this command
|
||||||
@ -1017,7 +1132,7 @@ are used in `buildPythonPackage`.
|
|||||||
- `pipBuildHook` to build a wheel using `pip` and PEP 517. Note a build system
|
- `pipBuildHook` to build a wheel using `pip` and PEP 517. Note a build system
|
||||||
(e.g. `setuptools` or `flit`) should still be added as `nativeBuildInput`.
|
(e.g. `setuptools` or `flit`) should still be added as `nativeBuildInput`.
|
||||||
- `pipInstallHook` to install wheels.
|
- `pipInstallHook` to install wheels.
|
||||||
- `pytestCheckHook` to run tests with `pytest`.
|
- `pytestCheckHook` to run tests with `pytest`. See [example usage](#using-pytestcheckhook).
|
||||||
- `pythonCatchConflictsHook` to check whether a Python package is not already existing.
|
- `pythonCatchConflictsHook` to check whether a Python package is not already existing.
|
||||||
- `pythonImportsCheckHook` to check whether importing the listed modules works.
|
- `pythonImportsCheckHook` to check whether importing the listed modules works.
|
||||||
- `pythonRemoveBinBytecode` to remove bytecode from the `/bin` folder.
|
- `pythonRemoveBinBytecode` to remove bytecode from the `/bin` folder.
|
||||||
|
@ -85,6 +85,11 @@ lib.mapAttrs (n: v: v // { shortName = n; }) {
|
|||||||
fullName = ''Beerware License'';
|
fullName = ''Beerware License'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
blueOak100 = spdx {
|
||||||
|
spdxId = "BlueOak-1.0.0";
|
||||||
|
fullName = "Blue Oak Model License 1.0.0";
|
||||||
|
};
|
||||||
|
|
||||||
bsd0 = spdx {
|
bsd0 = spdx {
|
||||||
spdxId = "0BSD";
|
spdxId = "0BSD";
|
||||||
fullName = "BSD Zero Clause License";
|
fullName = "BSD Zero Clause License";
|
||||||
|
@ -115,8 +115,19 @@ rec {
|
|||||||
|
|
||||||
checkUnmatched =
|
checkUnmatched =
|
||||||
if config._module.check && config._module.freeformType == null && merged.unmatchedDefns != [] then
|
if config._module.check && config._module.freeformType == null && merged.unmatchedDefns != [] then
|
||||||
let inherit (head merged.unmatchedDefns) file prefix;
|
let
|
||||||
in throw "The option `${showOption prefix}' defined in `${file}' does not exist."
|
firstDef = head merged.unmatchedDefns;
|
||||||
|
baseMsg = "The option `${showOption (prefix ++ firstDef.prefix)}' defined in `${firstDef.file}' does not exist.";
|
||||||
|
in
|
||||||
|
if attrNames options == [ "_module" ]
|
||||||
|
then throw ''
|
||||||
|
${baseMsg}
|
||||||
|
|
||||||
|
However there are no options defined in `${showOption prefix}'. Are you sure you've
|
||||||
|
declared your options properly? This can happen if you e.g. declared your options in `types.submodule'
|
||||||
|
under `config' rather than `options'.
|
||||||
|
''
|
||||||
|
else throw baseMsg
|
||||||
else null;
|
else null;
|
||||||
|
|
||||||
result = builtins.seq checkUnmatched {
|
result = builtins.seq checkUnmatched {
|
||||||
|
@ -26,6 +26,13 @@
|
|||||||
|
|
||||||
`handle == github` is strongly preferred whenever `github` is an acceptable attribute name and is short and convenient.
|
`handle == github` is strongly preferred whenever `github` is an acceptable attribute name and is short and convenient.
|
||||||
|
|
||||||
|
If `github` begins with a numeral, `handle` should be prefixed with an underscore.
|
||||||
|
```nix
|
||||||
|
_1example = {
|
||||||
|
github = "1example";
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
Add PGP/GPG keys only if you actually use them to sign commits and/or mail.
|
Add PGP/GPG keys only if you actually use them to sign commits and/or mail.
|
||||||
|
|
||||||
To get the required PGP/GPG values for a key run
|
To get the required PGP/GPG values for a key run
|
||||||
@ -41,7 +48,7 @@
|
|||||||
See `./scripts/check-maintainer-github-handles.sh` for an example on how to work with this data.
|
See `./scripts/check-maintainer-github-handles.sh` for an example on how to work with this data.
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
"0x4A6F" = {
|
_0x4A6F = {
|
||||||
email = "mail-maintainer@0x4A6F.dev";
|
email = "mail-maintainer@0x4A6F.dev";
|
||||||
name = "Joachim Ernst";
|
name = "Joachim Ernst";
|
||||||
github = "0x4A6F";
|
github = "0x4A6F";
|
||||||
@ -51,7 +58,7 @@
|
|||||||
fingerprint = "F466 A548 AD3F C1F1 8C88 4576 8702 7528 B006 D66D";
|
fingerprint = "F466 A548 AD3F C1F1 8C88 4576 8702 7528 B006 D66D";
|
||||||
}];
|
}];
|
||||||
};
|
};
|
||||||
"1000101" = {
|
_1000101 = {
|
||||||
email = "b1000101@pm.me";
|
email = "b1000101@pm.me";
|
||||||
github = "1000101";
|
github = "1000101";
|
||||||
githubId = 791309;
|
githubId = 791309;
|
||||||
@ -247,6 +254,12 @@
|
|||||||
githubId = 732652;
|
githubId = 732652;
|
||||||
name = "Andreas Herrmann";
|
name = "Andreas Herrmann";
|
||||||
};
|
};
|
||||||
|
ahrzb = {
|
||||||
|
email = "ahrzb5@gmail.com";
|
||||||
|
github = "ahrzb";
|
||||||
|
githubId = 5220438;
|
||||||
|
name = "AmirHossein Roozbahani";
|
||||||
|
};
|
||||||
ahuzik = {
|
ahuzik = {
|
||||||
email = "ales.guzik@gmail.com";
|
email = "ales.guzik@gmail.com";
|
||||||
github = "alesguzik";
|
github = "alesguzik";
|
||||||
@ -1884,7 +1897,7 @@
|
|||||||
githubId = 4971975;
|
githubId = 4971975;
|
||||||
name = "Janne Heß";
|
name = "Janne Heß";
|
||||||
};
|
};
|
||||||
"dasj19" = {
|
dasj19 = {
|
||||||
email = "daniel@serbanescu.dk";
|
email = "daniel@serbanescu.dk";
|
||||||
github = "dasj19";
|
github = "dasj19";
|
||||||
githubId = 7589338;
|
githubId = 7589338;
|
||||||
@ -2460,6 +2473,12 @@
|
|||||||
githubId = 97852;
|
githubId = 97852;
|
||||||
name = "Ellis Whitehead";
|
name = "Ellis Whitehead";
|
||||||
};
|
};
|
||||||
|
elkowar = {
|
||||||
|
email = "thereal.elkowar@gmail.com";
|
||||||
|
github = "elkowar";
|
||||||
|
githubId = 5300871;
|
||||||
|
name = "Leon Kowarschick";
|
||||||
|
};
|
||||||
elohmeier = {
|
elohmeier = {
|
||||||
email = "elo-nixos@nerdworks.de";
|
email = "elo-nixos@nerdworks.de";
|
||||||
github = "elohmeier";
|
github = "elohmeier";
|
||||||
@ -3822,6 +3841,12 @@
|
|||||||
githubId = 51518420;
|
githubId = 51518420;
|
||||||
name = "jitwit";
|
name = "jitwit";
|
||||||
};
|
};
|
||||||
|
jjjollyjim = {
|
||||||
|
email = "jamie@kwiius.com";
|
||||||
|
github = "JJJollyjim";
|
||||||
|
githubId = 691552;
|
||||||
|
name = "Jamie McClymont";
|
||||||
|
};
|
||||||
jk = {
|
jk = {
|
||||||
email = "hello+nixpkgs@j-k.io";
|
email = "hello+nixpkgs@j-k.io";
|
||||||
github = "06kellyjac";
|
github = "06kellyjac";
|
||||||
@ -4177,6 +4202,12 @@
|
|||||||
githubId = 87115;
|
githubId = 87115;
|
||||||
name = "Wael Nasreddine";
|
name = "Wael Nasreddine";
|
||||||
};
|
};
|
||||||
|
kalekseev = {
|
||||||
|
email = "mail@kalekseev.com";
|
||||||
|
github = "kalekseev";
|
||||||
|
githubId = 367259;
|
||||||
|
name = "Konstantin Alekseev";
|
||||||
|
};
|
||||||
kamadorueda = {
|
kamadorueda = {
|
||||||
name = "Kevin Amado";
|
name = "Kevin Amado";
|
||||||
email = "kamadorueda@gmail.com";
|
email = "kamadorueda@gmail.com";
|
||||||
@ -4414,6 +4445,12 @@
|
|||||||
githubId = 524268;
|
githubId = 524268;
|
||||||
name = "Koral";
|
name = "Koral";
|
||||||
};
|
};
|
||||||
|
koslambrou = {
|
||||||
|
email = "koslambrou@gmail.com";
|
||||||
|
github = "koslambrou";
|
||||||
|
githubId = 2037002;
|
||||||
|
name = "Konstantinos";
|
||||||
|
};
|
||||||
kovirobi = {
|
kovirobi = {
|
||||||
email = "kovirobi@gmail.com";
|
email = "kovirobi@gmail.com";
|
||||||
github = "kovirobi";
|
github = "kovirobi";
|
||||||
@ -5181,6 +5218,12 @@
|
|||||||
githubId = 35892750;
|
githubId = 35892750;
|
||||||
name = "Maxine Aubrey";
|
name = "Maxine Aubrey";
|
||||||
};
|
};
|
||||||
|
maxxk = {
|
||||||
|
email = "maxim.krivchikov@gmail.com";
|
||||||
|
github = "maxxk";
|
||||||
|
githubId = 1191859;
|
||||||
|
name = "Maxim Krivchikov";
|
||||||
|
};
|
||||||
mbakke = {
|
mbakke = {
|
||||||
email = "mbakke@fastmail.com";
|
email = "mbakke@fastmail.com";
|
||||||
github = "mbakke";
|
github = "mbakke";
|
||||||
@ -5944,6 +5987,12 @@
|
|||||||
githubId = 1224006;
|
githubId = 1224006;
|
||||||
name = "Roberto Abdelkader Martínez Pérez";
|
name = "Roberto Abdelkader Martínez Pérez";
|
||||||
};
|
};
|
||||||
|
nilsirl = {
|
||||||
|
email = "nils@nilsand.re";
|
||||||
|
github = "NilsIrl";
|
||||||
|
githubId = 26231126;
|
||||||
|
name = "Nils ANDRÉ-CHANG";
|
||||||
|
};
|
||||||
ninjatrappeur = {
|
ninjatrappeur = {
|
||||||
email = "felix@alternativebit.fr";
|
email = "felix@alternativebit.fr";
|
||||||
github = "ninjatrappeur";
|
github = "ninjatrappeur";
|
||||||
@ -6328,6 +6377,12 @@
|
|||||||
githubId = 157610;
|
githubId = 157610;
|
||||||
name = "Piotr Bogdan";
|
name = "Piotr Bogdan";
|
||||||
};
|
};
|
||||||
|
pblkt = {
|
||||||
|
email = "pebblekite@gmail.com";
|
||||||
|
github = "pblkt";
|
||||||
|
githubId = 6498458;
|
||||||
|
name = "pebble kite";
|
||||||
|
};
|
||||||
pcarrier = {
|
pcarrier = {
|
||||||
email = "pc@rrier.ca";
|
email = "pc@rrier.ca";
|
||||||
github = "pcarrier";
|
github = "pcarrier";
|
||||||
@ -6712,6 +6767,12 @@
|
|||||||
githubId = 115877;
|
githubId = 115877;
|
||||||
name = "Kenny Shen";
|
name = "Kenny Shen";
|
||||||
};
|
};
|
||||||
|
quentini = {
|
||||||
|
email = "quentini@airmail.cc";
|
||||||
|
github = "QuentinI";
|
||||||
|
githubId = 18196237;
|
||||||
|
name = "Quentin Inkling";
|
||||||
|
};
|
||||||
qyliss = {
|
qyliss = {
|
||||||
email = "hi@alyssa.is";
|
email = "hi@alyssa.is";
|
||||||
github = "alyssais";
|
github = "alyssais";
|
||||||
@ -8090,6 +8151,12 @@
|
|||||||
githubId = 863327;
|
githubId = 863327;
|
||||||
name = "Tyler Benster";
|
name = "Tyler Benster";
|
||||||
};
|
};
|
||||||
|
tcbravo = {
|
||||||
|
email = "tomas.bravo@protonmail.ch";
|
||||||
|
github = "tcbravo";
|
||||||
|
githubId = 66133083;
|
||||||
|
name = "Tomas Bravo";
|
||||||
|
};
|
||||||
tckmn = {
|
tckmn = {
|
||||||
email = "andy@tck.mn";
|
email = "andy@tck.mn";
|
||||||
github = "tckmn";
|
github = "tckmn";
|
||||||
@ -8198,7 +8265,7 @@
|
|||||||
githubId = 8547242;
|
githubId = 8547242;
|
||||||
name = "Stefan Rohrbacher";
|
name = "Stefan Rohrbacher";
|
||||||
};
|
};
|
||||||
"thelegy" = {
|
thelegy = {
|
||||||
email = "mail+nixos@0jb.de";
|
email = "mail+nixos@0jb.de";
|
||||||
github = "thelegy";
|
github = "thelegy";
|
||||||
githubId = 3105057;
|
githubId = 3105057;
|
||||||
@ -9089,6 +9156,16 @@
|
|||||||
fingerprint = "85F8 E850 F8F2 F823 F934 535B EC50 6589 9AEA AF4C";
|
fingerprint = "85F8 E850 F8F2 F823 F934 535B EC50 6589 9AEA AF4C";
|
||||||
}];
|
}];
|
||||||
};
|
};
|
||||||
|
yusdacra = {
|
||||||
|
email = "y.bera003.06@protonmail.com";
|
||||||
|
github = "yusdacra";
|
||||||
|
githubId = 19897088;
|
||||||
|
name = "Yusuf Bera Ertan";
|
||||||
|
keys = [{
|
||||||
|
longkeyid = "rsa2048/0x61807181F60EFCB2";
|
||||||
|
fingerprint = "9270 66BD 8125 A45B 4AC4 0326 6180 7181 F60E FCB2";
|
||||||
|
}];
|
||||||
|
};
|
||||||
yvesf = {
|
yvesf = {
|
||||||
email = "yvesf+nix@xapek.org";
|
email = "yvesf+nix@xapek.org";
|
||||||
github = "yvesf";
|
github = "yvesf";
|
||||||
|
@ -70,35 +70,12 @@ Platform Vendor Advanced Micro Devices, Inc.</screen>
|
|||||||
Core Next</link> (GCN) GPUs are supported through the
|
Core Next</link> (GCN) GPUs are supported through the
|
||||||
<package>rocm-opencl-icd</package> package. Adding this package to
|
<package>rocm-opencl-icd</package> package. Adding this package to
|
||||||
<xref linkend="opt-hardware.opengl.extraPackages"/> enables OpenCL
|
<xref linkend="opt-hardware.opengl.extraPackages"/> enables OpenCL
|
||||||
support. However, OpenCL Image support is provided through the
|
support:
|
||||||
non-free <package>rocm-runtime-ext</package> package. This package can
|
|
||||||
be added to the same configuration option, but requires that
|
|
||||||
<varname>allowUnfree</varname> option is is enabled for nixpkgs. Full
|
|
||||||
OpenCL support on supported AMD GPUs is thus enabled as follows:
|
|
||||||
|
|
||||||
<programlisting><xref linkend="opt-hardware.opengl.extraPackages"/> = [
|
<programlisting><xref linkend="opt-hardware.opengl.extraPackages"/> = [
|
||||||
rocm-opencl-icd
|
rocm-opencl-icd
|
||||||
rocm-runtime-ext
|
|
||||||
];</programlisting>
|
];</programlisting>
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
|
||||||
It is also possible to use the OpenCL Image extension without a
|
|
||||||
system-wide installation of the <package>rocm-runtime-ext</package>
|
|
||||||
package by setting the <varname>ROCR_EXT_DIR</varname> environment
|
|
||||||
variable to the directory that contains the extension:
|
|
||||||
|
|
||||||
<screen><prompt>$</prompt> export \
|
|
||||||
ROCR_EXT_DIR=`nix-build '<nixpkgs>' --no-out-link -A rocm-runtime-ext`/lib/rocm-runtime-ext</screen>
|
|
||||||
</para>
|
|
||||||
|
|
||||||
<para>
|
|
||||||
With either approach, you can verify that OpenCL Image support
|
|
||||||
is indeed working with the <command>clinfo</command> command:
|
|
||||||
|
|
||||||
<screen><prompt>$</prompt> clinfo | grep Image
|
|
||||||
Image support Yes</screen>
|
|
||||||
</para>
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section xml:id="sec-gpu-accel-opencl-intel">
|
<section xml:id="sec-gpu-accel-opencl-intel">
|
||||||
|
@ -136,7 +136,7 @@
|
|||||||
<filename>/mnt</filename>:
|
<filename>/mnt</filename>:
|
||||||
</para>
|
</para>
|
||||||
<screen>
|
<screen>
|
||||||
# nixos-enter /mnt
|
# nixos-enter --root /mnt
|
||||||
</screen>
|
</screen>
|
||||||
<para>
|
<para>
|
||||||
Run a shell command:
|
Run a shell command:
|
||||||
|
@ -137,7 +137,7 @@ GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'localhost' WITH GRANT OPTION;
|
|||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
<varname>services.postfix.sslCACert</varname> was replaced by <varname>services.postfix.tlsTrustedAuthorities</varname> which now defaults to system certifcate authorities.
|
<varname>services.postfix.sslCACert</varname> was replaced by <varname>services.postfix.tlsTrustedAuthorities</varname> which now defaults to system certificate authorities.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
@ -156,6 +156,45 @@ GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'localhost' WITH GRANT OPTION;
|
|||||||
Support for built-in LCDs in various pieces of Logitech hardware (keyboards and USB speakers). <varname>hardware.logitech.lcd.enable</varname> enables support for all hardware supported by the g15daemon project.
|
Support for built-in LCDs in various pieces of Logitech hardware (keyboards and USB speakers). <varname>hardware.logitech.lcd.enable</varname> enables support for all hardware supported by the g15daemon project.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Zabbix now defaults to 5.0, updated from 4.4. Please carefully read through
|
||||||
|
<link xlink:href="https://www.zabbix.com/documentation/current/manual/installation/upgrade/sources">the upgrade guide</link>
|
||||||
|
and apply any changes required. Be sure to take special note of the section on
|
||||||
|
<link xlink:href="https://www.zabbix.com/documentation/current/manual/installation/upgrade_notes_500#enabling_extended_range_of_numeric_float_values">enabling extended range of numeric (float) values</link>
|
||||||
|
as you will need to apply this database migration manually.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
If you are using Zabbix Server with a MySQL or MariaDB database you should note that using a character set of <literal>utf8</literal> and a collate of <literal>utf8_bin</literal> has become mandatory with
|
||||||
|
this release. See the upstream <link xlink:href="https://support.zabbix.com/browse/ZBX-17357">issue</link> for further discussion. Before upgrading you should check the character set and collation used by
|
||||||
|
your database and ensure they are correct:
|
||||||
|
<programlisting>
|
||||||
|
SELECT
|
||||||
|
default_character_set_name,
|
||||||
|
default_collation_name
|
||||||
|
FROM
|
||||||
|
information_schema.schemata
|
||||||
|
WHERE
|
||||||
|
schema_name = 'zabbix';
|
||||||
|
</programlisting>
|
||||||
|
If these values are not correct you should take a backup of your database and convert the character set and collation as required. Here is an
|
||||||
|
<link xlink:href="https://www.zabbix.com/forum/zabbix-help/396573-reinstall-after-upgrade?p=396891#post396891">example</link> of how to do so, taken from
|
||||||
|
the Zabbix forums:
|
||||||
|
<programlisting>
|
||||||
|
ALTER DATABASE `zabbix` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
|
||||||
|
|
||||||
|
-- the following will produce a list of SQL commands you should subsequently execute
|
||||||
|
SELECT CONCAT("ALTER TABLE ", TABLE_NAME," CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;") AS ExecuteTheString
|
||||||
|
FROM information_schema.`COLUMNS`
|
||||||
|
WHERE table_schema = "zabbix" AND COLLATION_NAME = "utf8_general_ci";
|
||||||
|
</programlisting>
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
The NixOS module system now supports freeform modules as a mix between <literal>types.attrsOf</literal> and <literal>types.submodule</literal>. These allow you to explicitly declare a subset of options while still permitting definitions without an associated option. See <xref linkend='sec-freeform-modules'/> for how to use them.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
@ -199,12 +238,10 @@ GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'localhost' WITH GRANT OPTION;
|
|||||||
in the source tree for downloaded modules instead of using go's <link
|
in the source tree for downloaded modules instead of using go's <link
|
||||||
xlink:href="https://golang.org/cmd/go/#hdr-Module_proxy_protocol">module
|
xlink:href="https://golang.org/cmd/go/#hdr-Module_proxy_protocol">module
|
||||||
proxy protocol</link>. This storage format is simpler and therefore less
|
proxy protocol</link>. This storage format is simpler and therefore less
|
||||||
likekly to break with future versions of go. As a result
|
likely to break with future versions of go. As a result
|
||||||
<literal>buildGoModule</literal> switched from
|
<literal>buildGoModule</literal> switched from
|
||||||
<literal>modSha256</literal> to the <literal>vendorSha256</literal>
|
<literal>modSha256</literal> to the <literal>vendorSha256</literal>
|
||||||
attribute to pin fetched version data. <literal>buildGoModule</literal>
|
attribute to pin fetched version data.
|
||||||
still accepts <literal>modSha256</literal> with a warning, but support will
|
|
||||||
be removed in the next release.
|
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
@ -213,7 +250,7 @@ GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'localhost' WITH GRANT OPTION;
|
|||||||
<link xlink:href="https://grafana.com/docs/grafana/latest/guides/whats-new-in-v6-4/">deprecated in Grafana</link>
|
<link xlink:href="https://grafana.com/docs/grafana/latest/guides/whats-new-in-v6-4/">deprecated in Grafana</link>
|
||||||
and the <package>phantomjs</package> project is
|
and the <package>phantomjs</package> project is
|
||||||
<link xlink:href="https://github.com/ariya/phantomjs/issues/15344#issue-302015362">currently unmaintained</link>.
|
<link xlink:href="https://github.com/ariya/phantomjs/issues/15344#issue-302015362">currently unmaintained</link>.
|
||||||
It can still be enabled by providing <literal>phantomJsSupport = true</literal> to the package instanciation:
|
It can still be enabled by providing <literal>phantomJsSupport = true</literal> to the package instantiation:
|
||||||
<programlisting>{
|
<programlisting>{
|
||||||
services.grafana.package = pkgs.grafana.overrideAttrs (oldAttrs: rec {
|
services.grafana.package = pkgs.grafana.overrideAttrs (oldAttrs: rec {
|
||||||
phantomJsSupport = false;
|
phantomJsSupport = false;
|
||||||
@ -225,7 +262,7 @@ GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'localhost' WITH GRANT OPTION;
|
|||||||
<para>
|
<para>
|
||||||
The <link linkend="opt-services.supybot.enable">supybot</link> module now uses <literal>/var/lib/supybot</literal>
|
The <link linkend="opt-services.supybot.enable">supybot</link> module now uses <literal>/var/lib/supybot</literal>
|
||||||
as its default <link linkend="opt-services.supybot.stateDir">stateDir</link> path if <literal>stateVersion</literal>
|
as its default <link linkend="opt-services.supybot.stateDir">stateDir</link> path if <literal>stateVersion</literal>
|
||||||
is 20.09 or higher. It also enables number of
|
is 20.09 or higher. It also enables a number of
|
||||||
<link xlink:href="https://www.freedesktop.org/software/systemd/man/systemd.exec.html#Sandboxing">systemd sandboxing options</link>
|
<link xlink:href="https://www.freedesktop.org/software/systemd/man/systemd.exec.html#Sandboxing">systemd sandboxing options</link>
|
||||||
which may possibly interfere with some plugins. If this is the case you can disable the options through attributes in
|
which may possibly interfere with some plugins. If this is the case you can disable the options through attributes in
|
||||||
<option>systemd.services.supybot.serviceConfig</option>.
|
<option>systemd.services.supybot.serviceConfig</option>.
|
||||||
@ -678,11 +715,19 @@ services.dokuwiki."mywiki" = {
|
|||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
The <xref linkend="opt-services.postgresql.dataDir"/> option is now set to <literal>"/var/lib/postgresql/${cfg.package.psqlSchema}"</literal> regardless of your
|
The <xref linkend="opt-services.postgresql.dataDir"/> option is now set to <literal>"/var/lib/postgresql/${cfg.package.psqlSchema}"</literal> regardless of your
|
||||||
<xref linkend="opt-system.stateVersion"/>. Users with an existing postgresql install that have a <xref linkend="opt-system.stateVersion"/> of <literal>17.09</literal> or below
|
<xref linkend="opt-system.stateVersion"/>. Users with an existing postgresql install that have a <xref linkend="opt-system.stateVersion"/> of <literal>17.03</literal> or below
|
||||||
should double check what the value of their <xref linkend="opt-services.postgresql.dataDir"/> option is (<literal>/var/db/postgresql</literal>) and then explicitly
|
should double check what the value of their <xref linkend="opt-services.postgresql.dataDir"/> option is (<literal>/var/db/postgresql</literal>) and then explicitly
|
||||||
set this value to maintain compatibility:
|
set this value to maintain compatibility:
|
||||||
<programlisting>
|
<programlisting>
|
||||||
services.postgresql.dataDir = "/var/db/postgresql";
|
services.postgresql.dataDir = "/var/db/postgresql";
|
||||||
|
</programlisting>
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
The postgresql module now expects there to be a database super user account called <literal>postgres</literal> regardless of your <xref linkend="opt-system.stateVersion"/>. Users
|
||||||
|
with an existing postgresql install that have a <xref linkend="opt-system.stateVersion"/> of <literal>17.03</literal> or below should run the following SQL statements as a
|
||||||
|
database super admin user before upgrading:
|
||||||
|
<programlisting>
|
||||||
|
CREATE ROLE postgres LOGIN SUPERUSER;
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
@ -691,6 +736,13 @@ services.postgresql.dataDir = "/var/db/postgresql";
|
|||||||
The USBGuard module now removes options and instead hardcodes values for <literal>IPCAccessControlFiles</literal>, <literal>ruleFiles</literal>, and <literal>auditFilePath</literal>. Audit logs can be found in the journal.
|
The USBGuard module now removes options and instead hardcodes values for <literal>IPCAccessControlFiles</literal>, <literal>ruleFiles</literal>, and <literal>auditFilePath</literal>. Audit logs can be found in the journal.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
The NixOS module system now evaluates option definitions more strictly, allowing it to detect a larger set of problems.
|
||||||
|
As a result, what previously evaluated may not do so anymore.
|
||||||
|
See <link xlink:href="https://github.com/NixOS/nixpkgs/pull/82743#issuecomment-674520472">the PR that changed this</link> for more info.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
@ -907,6 +959,18 @@ services.transmission.settings.rpc-bind-address = "0.0.0.0";
|
|||||||
Fontconfig 2.10.x was removed from Nixpkgs - it hasn't been used in any nixpkgs package anymore.
|
Fontconfig 2.10.x was removed from Nixpkgs - it hasn't been used in any nixpkgs package anymore.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
The packages <package>perl</package>, <package>rsync</package> and <package>strace</package> were removed from <option>systemPackages</option>. If you need them, install them again with <code><xref linkend="opt-environment.systemPackages"/> = with pkgs; [ perl rsync strace ];</code> in your <filename>configuration.nix</filename>.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
The <literal>undervolt</literal> option no longer needs to apply its
|
||||||
|
settings every 30s. If they still become undone, open an issue and restore
|
||||||
|
the previous behaviour using <literal>undervolt.useTimer</literal>.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</section>
|
</section>
|
||||||
</section>
|
</section>
|
||||||
|
@ -29,7 +29,7 @@ log() {
|
|||||||
echo "$@" >&2
|
echo "$@" >&2
|
||||||
}
|
}
|
||||||
|
|
||||||
if [ -z "$1" ]; then
|
if [ "$#" -ne 1 ]; then
|
||||||
log "Usage: ./upload-amazon-image.sh IMAGE_OUTPUT"
|
log "Usage: ./upload-amazon-image.sh IMAGE_OUTPUT"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
@ -1,292 +0,0 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.fonts.fontconfig;
|
|
||||||
|
|
||||||
fcBool = x: "<bool>" + (boolToString x) + "</bool>";
|
|
||||||
|
|
||||||
# back-supported fontconfig version and package
|
|
||||||
# version is used for font cache generation
|
|
||||||
supportVersion = "210";
|
|
||||||
supportPkg = pkgs."fontconfig_${supportVersion}";
|
|
||||||
|
|
||||||
# latest fontconfig version and package
|
|
||||||
# version is used for configuration folder name, /etc/fonts/VERSION/
|
|
||||||
# note: format differs from supportVersion and can not be used with makeCacheConf
|
|
||||||
latestVersion = pkgs.fontconfig.configVersion;
|
|
||||||
latestPkg = pkgs.fontconfig;
|
|
||||||
|
|
||||||
# supported version fonts.conf
|
|
||||||
supportFontsConf = pkgs.makeFontsConf { fontconfig = supportPkg; fontDirectories = config.fonts.fonts; };
|
|
||||||
|
|
||||||
# configuration file to read fontconfig cache
|
|
||||||
# version dependent
|
|
||||||
# priority 0
|
|
||||||
cacheConfSupport = makeCacheConf { version = supportVersion; };
|
|
||||||
cacheConfLatest = makeCacheConf {};
|
|
||||||
|
|
||||||
# generate the font cache setting file for a fontconfig version
|
|
||||||
# use latest when no version is passed
|
|
||||||
makeCacheConf = { version ? null }:
|
|
||||||
let
|
|
||||||
fcPackage = if version == null
|
|
||||||
then "fontconfig"
|
|
||||||
else "fontconfig_${version}";
|
|
||||||
makeCache = fontconfig: pkgs.makeFontsCache { inherit fontconfig; fontDirectories = config.fonts.fonts; };
|
|
||||||
cache = makeCache pkgs.${fcPackage};
|
|
||||||
cache32 = makeCache pkgs.pkgsi686Linux.${fcPackage};
|
|
||||||
in
|
|
||||||
pkgs.writeText "fc-00-nixos-cache.conf" ''
|
|
||||||
<?xml version='1.0'?>
|
|
||||||
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
|
|
||||||
<fontconfig>
|
|
||||||
<!-- Font directories -->
|
|
||||||
${concatStringsSep "\n" (map (font: "<dir>${font}</dir>") config.fonts.fonts)}
|
|
||||||
<!-- Pre-generated font caches -->
|
|
||||||
<cachedir>${cache}</cachedir>
|
|
||||||
${optionalString (pkgs.stdenv.isx86_64 && cfg.cache32Bit) ''
|
|
||||||
<cachedir>${cache32}</cachedir>
|
|
||||||
''}
|
|
||||||
</fontconfig>
|
|
||||||
'';
|
|
||||||
|
|
||||||
# local configuration file
|
|
||||||
localConf = pkgs.writeText "fc-local.conf" cfg.localConf;
|
|
||||||
|
|
||||||
# rendering settings configuration files
|
|
||||||
# priority 10
|
|
||||||
hintingConf = pkgs.writeText "fc-10-hinting.conf" ''
|
|
||||||
<?xml version='1.0'?>
|
|
||||||
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
|
|
||||||
<fontconfig>
|
|
||||||
|
|
||||||
<!-- Default rendering settings -->
|
|
||||||
<match target="pattern">
|
|
||||||
<edit mode="append" name="hinting">
|
|
||||||
${fcBool cfg.hinting.enable}
|
|
||||||
</edit>
|
|
||||||
<edit mode="append" name="autohint">
|
|
||||||
${fcBool cfg.hinting.autohint}
|
|
||||||
</edit>
|
|
||||||
<edit mode="append" name="hintstyle">
|
|
||||||
<const>hintslight</const>
|
|
||||||
</edit>
|
|
||||||
</match>
|
|
||||||
|
|
||||||
</fontconfig>
|
|
||||||
'';
|
|
||||||
|
|
||||||
antialiasConf = pkgs.writeText "fc-10-antialias.conf" ''
|
|
||||||
<?xml version='1.0'?>
|
|
||||||
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
|
|
||||||
<fontconfig>
|
|
||||||
|
|
||||||
<!-- Default rendering settings -->
|
|
||||||
<match target="pattern">
|
|
||||||
<edit mode="append" name="antialias">
|
|
||||||
${fcBool cfg.antialias}
|
|
||||||
</edit>
|
|
||||||
</match>
|
|
||||||
|
|
||||||
</fontconfig>
|
|
||||||
'';
|
|
||||||
|
|
||||||
subpixelConf = pkgs.writeText "fc-10-subpixel.conf" ''
|
|
||||||
<?xml version='1.0'?>
|
|
||||||
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
|
|
||||||
<fontconfig>
|
|
||||||
|
|
||||||
<!-- Default rendering settings -->
|
|
||||||
<match target="pattern">
|
|
||||||
<edit mode="append" name="rgba">
|
|
||||||
<const>${cfg.subpixel.rgba}</const>
|
|
||||||
</edit>
|
|
||||||
<edit mode="append" name="lcdfilter">
|
|
||||||
<const>lcd${cfg.subpixel.lcdfilter}</const>
|
|
||||||
</edit>
|
|
||||||
</match>
|
|
||||||
|
|
||||||
</fontconfig>
|
|
||||||
'';
|
|
||||||
|
|
||||||
dpiConf = pkgs.writeText "fc-11-dpi.conf" ''
|
|
||||||
<?xml version='1.0'?>
|
|
||||||
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
|
|
||||||
<fontconfig>
|
|
||||||
|
|
||||||
<match target="pattern">
|
|
||||||
<edit name="dpi" mode="assign">
|
|
||||||
<double>${toString cfg.dpi}</double>
|
|
||||||
</edit>
|
|
||||||
</match>
|
|
||||||
|
|
||||||
</fontconfig>
|
|
||||||
'';
|
|
||||||
|
|
||||||
# default fonts configuration file
|
|
||||||
# priority 52
|
|
||||||
defaultFontsConf =
|
|
||||||
let genDefault = fonts: name:
|
|
||||||
optionalString (fonts != []) ''
|
|
||||||
<alias>
|
|
||||||
<family>${name}</family>
|
|
||||||
<prefer>
|
|
||||||
${concatStringsSep ""
|
|
||||||
(map (font: ''
|
|
||||||
<family>${font}</family>
|
|
||||||
'') fonts)}
|
|
||||||
</prefer>
|
|
||||||
</alias>
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
pkgs.writeText "fc-52-nixos-default-fonts.conf" ''
|
|
||||||
<?xml version='1.0'?>
|
|
||||||
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
|
|
||||||
<fontconfig>
|
|
||||||
|
|
||||||
<!-- Default fonts -->
|
|
||||||
${genDefault cfg.defaultFonts.sansSerif "sans-serif"}
|
|
||||||
|
|
||||||
${genDefault cfg.defaultFonts.serif "serif"}
|
|
||||||
|
|
||||||
${genDefault cfg.defaultFonts.monospace "monospace"}
|
|
||||||
|
|
||||||
</fontconfig>
|
|
||||||
'';
|
|
||||||
|
|
||||||
# reject Type 1 fonts
|
|
||||||
# priority 53
|
|
||||||
rejectType1 = pkgs.writeText "fc-53-nixos-reject-type1.conf" ''
|
|
||||||
<?xml version="1.0"?>
|
|
||||||
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
|
|
||||||
<fontconfig>
|
|
||||||
|
|
||||||
<!-- Reject Type 1 fonts -->
|
|
||||||
<selectfont>
|
|
||||||
<rejectfont>
|
|
||||||
<pattern>
|
|
||||||
<patelt name="fontformat"><string>Type 1</string></patelt>
|
|
||||||
</pattern>
|
|
||||||
</rejectfont>
|
|
||||||
</selectfont>
|
|
||||||
|
|
||||||
</fontconfig>
|
|
||||||
'';
|
|
||||||
|
|
||||||
# The configuration to be included in /etc/font/
|
|
||||||
penultimateConf = pkgs.runCommand "fontconfig-penultimate-conf" {
|
|
||||||
preferLocalBuild = true;
|
|
||||||
} ''
|
|
||||||
support_folder=$out/etc/fonts/conf.d
|
|
||||||
latest_folder=$out/etc/fonts/${latestVersion}/conf.d
|
|
||||||
|
|
||||||
mkdir -p $support_folder
|
|
||||||
mkdir -p $latest_folder
|
|
||||||
|
|
||||||
# fonts.conf
|
|
||||||
ln -s ${supportFontsConf} $support_folder/../fonts.conf
|
|
||||||
ln -s ${latestPkg.out}/etc/fonts/fonts.conf \
|
|
||||||
$latest_folder/../fonts.conf
|
|
||||||
|
|
||||||
# fontconfig-penultimate various configuration files
|
|
||||||
ln -s ${pkgs.fontconfig-penultimate}/etc/fonts/conf.d/*.conf \
|
|
||||||
$support_folder
|
|
||||||
ln -s ${pkgs.fontconfig-penultimate}/etc/fonts/conf.d/*.conf \
|
|
||||||
$latest_folder
|
|
||||||
|
|
||||||
ln -s ${cacheConfSupport} $support_folder/00-nixos-cache.conf
|
|
||||||
ln -s ${cacheConfLatest} $latest_folder/00-nixos-cache.conf
|
|
||||||
|
|
||||||
rm $support_folder/10-antialias.conf $latest_folder/10-antialias.conf
|
|
||||||
ln -s ${antialiasConf} $support_folder/10-antialias.conf
|
|
||||||
ln -s ${antialiasConf} $latest_folder/10-antialias.conf
|
|
||||||
|
|
||||||
rm $support_folder/10-hinting.conf $latest_folder/10-hinting.conf
|
|
||||||
ln -s ${hintingConf} $support_folder/10-hinting.conf
|
|
||||||
ln -s ${hintingConf} $latest_folder/10-hinting.conf
|
|
||||||
|
|
||||||
${optionalString cfg.useEmbeddedBitmaps ''
|
|
||||||
rm $support_folder/10-no-embedded-bitmaps.conf
|
|
||||||
rm $latest_folder/10-no-embedded-bitmaps.conf
|
|
||||||
''}
|
|
||||||
|
|
||||||
rm $support_folder/10-subpixel.conf $latest_folder/10-subpixel.conf
|
|
||||||
ln -s ${subpixelConf} $support_folder/10-subpixel.conf
|
|
||||||
ln -s ${subpixelConf} $latest_folder/10-subpixel.conf
|
|
||||||
|
|
||||||
${optionalString (cfg.dpi != 0) ''
|
|
||||||
ln -s ${dpiConf} $support_folder/11-dpi.conf
|
|
||||||
ln -s ${dpiConf} $latest_folder/11-dpi.conf
|
|
||||||
''}
|
|
||||||
|
|
||||||
# 50-user.conf
|
|
||||||
${optionalString (!cfg.includeUserConf) ''
|
|
||||||
rm $support_folder/50-user.conf
|
|
||||||
rm $latest_folder/50-user.conf
|
|
||||||
''}
|
|
||||||
|
|
||||||
# 51-local.conf
|
|
||||||
rm $latest_folder/51-local.conf
|
|
||||||
substitute \
|
|
||||||
${pkgs.fontconfig-penultimate}/etc/fonts/conf.d/51-local.conf \
|
|
||||||
$latest_folder/51-local.conf \
|
|
||||||
--replace local.conf /etc/fonts/${latestVersion}/local.conf
|
|
||||||
|
|
||||||
# local.conf (indirect priority 51)
|
|
||||||
${optionalString (cfg.localConf != "") ''
|
|
||||||
ln -s ${localConf} $support_folder/../local.conf
|
|
||||||
ln -s ${localConf} $latest_folder/../local.conf
|
|
||||||
''}
|
|
||||||
|
|
||||||
# 52-nixos-default-fonts.conf
|
|
||||||
ln -s ${defaultFontsConf} $support_folder/52-nixos-default-fonts.conf
|
|
||||||
ln -s ${defaultFontsConf} $latest_folder/52-nixos-default-fonts.conf
|
|
||||||
|
|
||||||
# 53-no-bitmaps.conf
|
|
||||||
${optionalString cfg.allowBitmaps ''
|
|
||||||
rm $support_folder/53-no-bitmaps.conf
|
|
||||||
rm $latest_folder/53-no-bitmaps.conf
|
|
||||||
''}
|
|
||||||
|
|
||||||
${optionalString (!cfg.allowType1) ''
|
|
||||||
# 53-nixos-reject-type1.conf
|
|
||||||
ln -s ${rejectType1} $support_folder/53-nixos-reject-type1.conf
|
|
||||||
ln -s ${rejectType1} $latest_folder/53-nixos-reject-type1.conf
|
|
||||||
''}
|
|
||||||
'';
|
|
||||||
|
|
||||||
in
|
|
||||||
{
|
|
||||||
|
|
||||||
options = {
|
|
||||||
|
|
||||||
fonts = {
|
|
||||||
|
|
||||||
fontconfig = {
|
|
||||||
|
|
||||||
penultimate = {
|
|
||||||
enable = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = ''
|
|
||||||
Enable fontconfig-penultimate settings to supplement the
|
|
||||||
NixOS defaults by providing per-font rendering defaults and
|
|
||||||
metric aliases.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf (config.fonts.fontconfig.enable && config.fonts.fontconfig.penultimate.enable) {
|
|
||||||
|
|
||||||
fonts.fontconfig.confPackages = [ penultimateConf ];
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
@ -190,13 +190,6 @@ let
|
|||||||
ln -s ${pkg.out}/etc/fonts/conf.d/*.conf \
|
ln -s ${pkg.out}/etc/fonts/conf.d/*.conf \
|
||||||
$dst/
|
$dst/
|
||||||
|
|
||||||
# update 51-local.conf path to look at local.conf
|
|
||||||
rm $dst/51-local.conf
|
|
||||||
|
|
||||||
substitute ${pkg.out}/etc/fonts/conf.d/51-local.conf \
|
|
||||||
$dst/51-local.conf \
|
|
||||||
--replace local.conf /etc/fonts/${pkg.configVersion}/local.conf
|
|
||||||
|
|
||||||
# 00-nixos-cache.conf
|
# 00-nixos-cache.conf
|
||||||
ln -s ${cacheConf} $dst/00-nixos-cache.conf
|
ln -s ${cacheConf} $dst/00-nixos-cache.conf
|
||||||
|
|
||||||
@ -204,8 +197,10 @@ let
|
|||||||
ln -s ${renderConf} $dst/10-nixos-rendering.conf
|
ln -s ${renderConf} $dst/10-nixos-rendering.conf
|
||||||
|
|
||||||
# 50-user.conf
|
# 50-user.conf
|
||||||
${optionalString (!cfg.includeUserConf) ''
|
# Since latest fontconfig looks for default files inside the package,
|
||||||
rm $dst/50-user.conf
|
# we had to move this one elsewhere to be able to exclude it here.
|
||||||
|
${optionalString cfg.includeUserConf ''
|
||||||
|
ln -s ${pkg.out}/etc/fonts/conf.d.bak/50-user.conf $dst/50-user.conf
|
||||||
''}
|
''}
|
||||||
|
|
||||||
# local.conf (indirect priority 51)
|
# local.conf (indirect priority 51)
|
||||||
@ -455,7 +450,7 @@ in
|
|||||||
environment.systemPackages = [ pkgs.fontconfig ];
|
environment.systemPackages = [ pkgs.fontconfig ];
|
||||||
environment.etc.fonts.source = "${fontconfigEtc}/etc/fonts/";
|
environment.etc.fonts.source = "${fontconfigEtc}/etc/fonts/";
|
||||||
})
|
})
|
||||||
(mkIf (cfg.enable && !cfg.penultimate.enable) {
|
(mkIf cfg.enable {
|
||||||
fonts.fontconfig.confPackages = [ confPkg ];
|
fonts.fontconfig.confPackages = [ confPkg ];
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
@ -33,14 +33,11 @@ let
|
|||||||
pkgs.ncurses
|
pkgs.ncurses
|
||||||
pkgs.netcat
|
pkgs.netcat
|
||||||
config.programs.ssh.package
|
config.programs.ssh.package
|
||||||
pkgs.perl
|
|
||||||
pkgs.procps
|
pkgs.procps
|
||||||
pkgs.rsync
|
|
||||||
pkgs.strace
|
|
||||||
pkgs.su
|
pkgs.su
|
||||||
pkgs.time
|
pkgs.time
|
||||||
pkgs.utillinux
|
pkgs.utillinux
|
||||||
pkgs.which # 88K size
|
pkgs.which
|
||||||
pkgs.zstd
|
pkgs.zstd
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ with lib;
|
|||||||
####### implementation
|
####### implementation
|
||||||
|
|
||||||
config = mkIf config.hardware.onlykey.enable {
|
config = mkIf config.hardware.onlykey.enable {
|
||||||
services.udev.extraRules = builtin.readFile ./onlykey.udev;
|
services.udev.extraRules = builtins.readFile ./onlykey.udev;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -321,7 +321,7 @@ in
|
|||||||
monetdb = 290;
|
monetdb = 290;
|
||||||
restic = 291;
|
restic = 291;
|
||||||
openvpn = 292;
|
openvpn = 292;
|
||||||
meguca = 293;
|
# meguca = 293; # removed 2020-08-21
|
||||||
yarn = 294;
|
yarn = 294;
|
||||||
hdfs = 295;
|
hdfs = 295;
|
||||||
mapred = 296;
|
mapred = 296;
|
||||||
@ -622,7 +622,7 @@ in
|
|||||||
monetdb = 290;
|
monetdb = 290;
|
||||||
restic = 291;
|
restic = 291;
|
||||||
openvpn = 292;
|
openvpn = 292;
|
||||||
meguca = 293;
|
# meguca = 293; # removed 2020-08-21
|
||||||
yarn = 294;
|
yarn = 294;
|
||||||
hdfs = 295;
|
hdfs = 295;
|
||||||
mapred = 296;
|
mapred = 296;
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
[
|
[
|
||||||
./config/debug-info.nix
|
./config/debug-info.nix
|
||||||
./config/fonts/fontconfig.nix
|
./config/fonts/fontconfig.nix
|
||||||
./config/fonts/fontconfig-penultimate.nix
|
|
||||||
./config/fonts/fontdir.nix
|
./config/fonts/fontdir.nix
|
||||||
./config/fonts/fonts.nix
|
./config/fonts/fonts.nix
|
||||||
./config/fonts/ghostscript.nix
|
./config/fonts/ghostscript.nix
|
||||||
@ -866,6 +865,7 @@
|
|||||||
./services/web-apps/moinmoin.nix
|
./services/web-apps/moinmoin.nix
|
||||||
./services/web-apps/restya-board.nix
|
./services/web-apps/restya-board.nix
|
||||||
./services/web-apps/sogo.nix
|
./services/web-apps/sogo.nix
|
||||||
|
./services/web-apps/rss-bridge.nix
|
||||||
./services/web-apps/tt-rss.nix
|
./services/web-apps/tt-rss.nix
|
||||||
./services/web-apps/trac.nix
|
./services/web-apps/trac.nix
|
||||||
./services/web-apps/trilium.nix
|
./services/web-apps/trilium.nix
|
||||||
@ -886,7 +886,6 @@
|
|||||||
./services/web-servers/lighttpd/collectd.nix
|
./services/web-servers/lighttpd/collectd.nix
|
||||||
./services/web-servers/lighttpd/default.nix
|
./services/web-servers/lighttpd/default.nix
|
||||||
./services/web-servers/lighttpd/gitweb.nix
|
./services/web-servers/lighttpd/gitweb.nix
|
||||||
./services/web-servers/meguca.nix
|
|
||||||
./services/web-servers/mighttpd2.nix
|
./services/web-servers/mighttpd2.nix
|
||||||
./services/web-servers/minio.nix
|
./services/web-servers/minio.nix
|
||||||
./services/web-servers/molly-brown.nix
|
./services/web-servers/molly-brown.nix
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
pkgs.fuse
|
pkgs.fuse
|
||||||
pkgs.fuse3
|
pkgs.fuse3
|
||||||
pkgs.sshfs-fuse
|
pkgs.sshfs-fuse
|
||||||
|
pkgs.rsync
|
||||||
pkgs.socat
|
pkgs.socat
|
||||||
pkgs.screen
|
pkgs.screen
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@ with lib;
|
|||||||
(mkAliasOptionModule [ "environment" "checkConfigurationOptions" ] [ "_module" "check" ])
|
(mkAliasOptionModule [ "environment" "checkConfigurationOptions" ] [ "_module" "check" ])
|
||||||
|
|
||||||
# Completely removed modules
|
# Completely removed modules
|
||||||
|
(mkRemovedOptionModule [ "fonts" "fontconfig" "penultimate" ] "The corresponding package has removed from nixpkgs.")
|
||||||
(mkRemovedOptionModule [ "services" "chronos" ] "The corresponding package was removed from nixpkgs.")
|
(mkRemovedOptionModule [ "services" "chronos" ] "The corresponding package was removed from nixpkgs.")
|
||||||
(mkRemovedOptionModule [ "services" "firefox" "syncserver" "user" ] "")
|
(mkRemovedOptionModule [ "services" "firefox" "syncserver" "user" ] "")
|
||||||
(mkRemovedOptionModule [ "services" "firefox" "syncserver" "group" ] "")
|
(mkRemovedOptionModule [ "services" "firefox" "syncserver" "group" ] "")
|
||||||
@ -47,6 +48,7 @@ with lib;
|
|||||||
instead, or any other display manager in NixOS as they all support auto-login.
|
instead, or any other display manager in NixOS as they all support auto-login.
|
||||||
'')
|
'')
|
||||||
(mkRemovedOptionModule [ "services" "dnscrypt-proxy" ] "Use services.dnscrypt-proxy2 instead")
|
(mkRemovedOptionModule [ "services" "dnscrypt-proxy" ] "Use services.dnscrypt-proxy2 instead")
|
||||||
|
(mkRemovedOptionModule [ "services" "meguca" ] "Use meguca has been removed from nixpkgs")
|
||||||
(mkRemovedOptionModule ["hardware" "brightnessctl" ] ''
|
(mkRemovedOptionModule ["hardware" "brightnessctl" ] ''
|
||||||
The brightnessctl module was removed because newer versions of
|
The brightnessctl module was removed because newer versions of
|
||||||
brightnessctl don't require the udev rules anymore (they can use the
|
brightnessctl don't require the udev rules anymore (they can use the
|
||||||
|
@ -150,6 +150,14 @@ let
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extraLegoFlags = mkOption {
|
||||||
|
type = types.listOf types.str;
|
||||||
|
default = [];
|
||||||
|
description = ''
|
||||||
|
Additional global flags to pass to all lego commands.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
extraLegoRenewFlags = mkOption {
|
extraLegoRenewFlags = mkOption {
|
||||||
type = types.listOf types.str;
|
type = types.listOf types.str;
|
||||||
default = [];
|
default = [];
|
||||||
@ -157,6 +165,14 @@ let
|
|||||||
Additional flags to pass to lego renew.
|
Additional flags to pass to lego renew.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extraLegoRunFlags = mkOption {
|
||||||
|
type = types.listOf types.str;
|
||||||
|
default = [];
|
||||||
|
description = ''
|
||||||
|
Additional flags to pass to lego run.
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -313,9 +329,10 @@ in
|
|||||||
++ optionals (data.dnsProvider != null && !data.dnsPropagationCheck) [ "--dns.disable-cp" ]
|
++ optionals (data.dnsProvider != null && !data.dnsPropagationCheck) [ "--dns.disable-cp" ]
|
||||||
++ concatLists (mapAttrsToList (name: root: [ "-d" name ]) data.extraDomains)
|
++ concatLists (mapAttrsToList (name: root: [ "-d" name ]) data.extraDomains)
|
||||||
++ (if data.dnsProvider != null then [ "--dns" data.dnsProvider ] else [ "--http" "--http.webroot" data.webroot ])
|
++ (if data.dnsProvider != null then [ "--dns" data.dnsProvider ] else [ "--http" "--http.webroot" data.webroot ])
|
||||||
++ optionals (cfg.server != null || data.server != null) ["--server" (if data.server == null then cfg.server else data.server)];
|
++ optionals (cfg.server != null || data.server != null) ["--server" (if data.server == null then cfg.server else data.server)]
|
||||||
|
++ data.extraLegoFlags;
|
||||||
certOpts = optionals data.ocspMustStaple [ "--must-staple" ];
|
certOpts = optionals data.ocspMustStaple [ "--must-staple" ];
|
||||||
runOpts = escapeShellArgs (globalOpts ++ [ "run" ] ++ certOpts);
|
runOpts = escapeShellArgs (globalOpts ++ [ "run" ] ++ certOpts ++ data.extraLegoRunFlags);
|
||||||
renewOpts = escapeShellArgs (globalOpts ++
|
renewOpts = escapeShellArgs (globalOpts ++
|
||||||
[ "renew" "--days" (toString cfg.validMinDays) ] ++
|
[ "renew" "--days" (toString cfg.validMinDays) ] ++
|
||||||
certOpts ++ data.extraLegoRenewFlags);
|
certOpts ++ data.extraLegoRenewFlags);
|
||||||
|
@ -225,14 +225,15 @@ in
|
|||||||
Contents of the <filename>recovery.conf</filename> file.
|
Contents of the <filename>recovery.conf</filename> file.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
superUser = mkOption {
|
superUser = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default= if versionAtLeast config.system.stateVersion "17.09" then "postgres" else "root";
|
default = "postgres";
|
||||||
internal = true;
|
internal = true;
|
||||||
|
readOnly = true;
|
||||||
description = ''
|
description = ''
|
||||||
NixOS traditionally used 'root' as superuser, most other distros use 'postgres'.
|
PostgreSQL superuser account to use for various operations. Internal since changing
|
||||||
From 17.09 we also try to follow this standard. Internal since changing this value
|
this value would lead to breakage while setting up databases.
|
||||||
would lead to breakage while setting up databases.
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -310,6 +311,35 @@ in
|
|||||||
''}
|
''}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
# Wait for PostgreSQL to be ready to accept connections.
|
||||||
|
postStart =
|
||||||
|
''
|
||||||
|
PSQL="psql --port=${toString cfg.port}"
|
||||||
|
|
||||||
|
while ! $PSQL -d postgres -c "" 2> /dev/null; do
|
||||||
|
if ! kill -0 "$MAINPID"; then exit 1; fi
|
||||||
|
sleep 0.1
|
||||||
|
done
|
||||||
|
|
||||||
|
if test -e "${cfg.dataDir}/.first_startup"; then
|
||||||
|
${optionalString (cfg.initialScript != null) ''
|
||||||
|
$PSQL -f "${cfg.initialScript}" -d postgres
|
||||||
|
''}
|
||||||
|
rm -f "${cfg.dataDir}/.first_startup"
|
||||||
|
fi
|
||||||
|
'' + optionalString (cfg.ensureDatabases != []) ''
|
||||||
|
${concatMapStrings (database: ''
|
||||||
|
$PSQL -tAc "SELECT 1 FROM pg_database WHERE datname = '${database}'" | grep -q 1 || $PSQL -tAc 'CREATE DATABASE "${database}"'
|
||||||
|
'') cfg.ensureDatabases}
|
||||||
|
'' + ''
|
||||||
|
${concatMapStrings (user: ''
|
||||||
|
$PSQL -tAc "SELECT 1 FROM pg_roles WHERE rolname='${user.name}'" | grep -q 1 || $PSQL -tAc 'CREATE USER "${user.name}"'
|
||||||
|
${concatStringsSep "\n" (mapAttrsToList (database: permission: ''
|
||||||
|
$PSQL -tAc 'GRANT ${permission} ON ${database} TO "${user.name}"'
|
||||||
|
'') user.ensurePermissions)}
|
||||||
|
'') cfg.ensureUsers}
|
||||||
|
'';
|
||||||
|
|
||||||
serviceConfig = mkMerge [
|
serviceConfig = mkMerge [
|
||||||
{ ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
{ ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||||
User = "postgres";
|
User = "postgres";
|
||||||
@ -329,40 +359,6 @@ in
|
|||||||
TimeoutSec = 120;
|
TimeoutSec = 120;
|
||||||
|
|
||||||
ExecStart = "${postgresql}/bin/postgres";
|
ExecStart = "${postgresql}/bin/postgres";
|
||||||
|
|
||||||
# Wait for PostgreSQL to be ready to accept connections.
|
|
||||||
ExecStartPost =
|
|
||||||
let
|
|
||||||
setupScript = pkgs.writeScript "postgresql-setup" (''
|
|
||||||
#!${pkgs.runtimeShell} -e
|
|
||||||
|
|
||||||
PSQL="${pkgs.utillinux}/bin/runuser -u ${cfg.superUser} -- psql --port=${toString cfg.port}"
|
|
||||||
|
|
||||||
while ! $PSQL -d postgres -c "" 2> /dev/null; do
|
|
||||||
if ! kill -0 "$MAINPID"; then exit 1; fi
|
|
||||||
sleep 0.1
|
|
||||||
done
|
|
||||||
|
|
||||||
if test -e "${cfg.dataDir}/.first_startup"; then
|
|
||||||
${optionalString (cfg.initialScript != null) ''
|
|
||||||
$PSQL -f "${cfg.initialScript}" -d postgres
|
|
||||||
''}
|
|
||||||
rm -f "${cfg.dataDir}/.first_startup"
|
|
||||||
fi
|
|
||||||
'' + optionalString (cfg.ensureDatabases != []) ''
|
|
||||||
${concatMapStrings (database: ''
|
|
||||||
$PSQL -tAc "SELECT 1 FROM pg_database WHERE datname = '${database}'" | grep -q 1 || $PSQL -tAc 'CREATE DATABASE "${database}"'
|
|
||||||
'') cfg.ensureDatabases}
|
|
||||||
'' + ''
|
|
||||||
${concatMapStrings (user: ''
|
|
||||||
$PSQL -tAc "SELECT 1 FROM pg_roles WHERE rolname='${user.name}'" | grep -q 1 || $PSQL -tAc 'CREATE USER "${user.name}"'
|
|
||||||
${concatStringsSep "\n" (mapAttrsToList (database: permission: ''
|
|
||||||
$PSQL -tAc 'GRANT ${permission} ON ${database} TO "${user.name}"'
|
|
||||||
'') user.ensurePermissions)}
|
|
||||||
'') cfg.ensureUsers}
|
|
||||||
'');
|
|
||||||
in
|
|
||||||
"+${setupScript}";
|
|
||||||
}
|
}
|
||||||
(mkIf (cfg.dataDir == "/var/lib/postgresql/${cfg.package.psqlSchema}") {
|
(mkIf (cfg.dataDir == "/var/lib/postgresql/${cfg.package.psqlSchema}") {
|
||||||
StateDirectory = "postgresql postgresql/${cfg.package.psqlSchema}";
|
StateDirectory = "postgresql postgresql/${cfg.package.psqlSchema}";
|
||||||
|
@ -53,11 +53,11 @@
|
|||||||
<varname>emacs</varname>
|
<varname>emacs</varname>
|
||||||
</term>
|
</term>
|
||||||
<term>
|
<term>
|
||||||
<varname>emacs25</varname>
|
<varname>emacs</varname>
|
||||||
</term>
|
</term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
The latest stable version of Emacs 25 using the
|
The latest stable version of Emacs using the
|
||||||
<link
|
<link
|
||||||
xlink:href="http://www.gtk.org">GTK 2</link>
|
xlink:href="http://www.gtk.org">GTK 2</link>
|
||||||
widget toolkit.
|
widget toolkit.
|
||||||
@ -66,11 +66,11 @@
|
|||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>
|
<term>
|
||||||
<varname>emacs25-nox</varname>
|
<varname>emacs-nox</varname>
|
||||||
</term>
|
</term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Emacs 25 built without any dependency on X11 libraries.
|
Emacs built without any dependency on X11 libraries.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@ -79,11 +79,11 @@
|
|||||||
<varname>emacsMacport</varname>
|
<varname>emacsMacport</varname>
|
||||||
</term>
|
</term>
|
||||||
<term>
|
<term>
|
||||||
<varname>emacs25Macport</varname>
|
<varname>emacsMacport</varname>
|
||||||
</term>
|
</term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Emacs 25 with the "Mac port" patches, providing a more native look and
|
Emacs with the "Mac port" patches, providing a more native look and
|
||||||
feel under macOS.
|
feel under macOS.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
@ -103,6 +103,17 @@ in
|
|||||||
The temperature target on battery power in Celsius degrees.
|
The temperature target on battery power in Celsius degrees.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
useTimer = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Whether to set a timer that applies the undervolt settings every 30s.
|
||||||
|
This will cause spam in the journal but might be required for some
|
||||||
|
hardware under specific conditions.
|
||||||
|
Enable this if your undervolt settings don't hold.
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
@ -114,6 +125,11 @@ in
|
|||||||
path = [ pkgs.undervolt ];
|
path = [ pkgs.undervolt ];
|
||||||
|
|
||||||
description = "Intel Undervolting Service";
|
description = "Intel Undervolting Service";
|
||||||
|
|
||||||
|
# Apply undervolt on boot, nixos generation switch and resume
|
||||||
|
wantedBy = [ "multi-user.target" "post-resume.target" ];
|
||||||
|
after = [ "post-resume.target" ]; # Not sure why but it won't work without this
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
Restart = "no";
|
Restart = "no";
|
||||||
@ -121,7 +137,7 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.timers.undervolt = {
|
systemd.timers.undervolt = mkIf cfg.useTimer {
|
||||||
description = "Undervolt timer to ensure voltage settings are always applied";
|
description = "Undervolt timer to ensure voltage settings are always applied";
|
||||||
partOf = [ "undervolt.service" ];
|
partOf = [ "undervolt.service" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
@ -5,54 +5,93 @@ with lib;
|
|||||||
let
|
let
|
||||||
cfg = config.services.logrotate;
|
cfg = config.services.logrotate;
|
||||||
|
|
||||||
pathOptions = {
|
pathOpts = {
|
||||||
options = {
|
options = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Whether to enable log rotation for this path. This can be used to explicitly disable
|
||||||
|
logging that has been configured by NixOS.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
path = mkOption {
|
path = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
description = "The path to log files to be rotated";
|
description = ''
|
||||||
|
The path to log files to be rotated.
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
user = mkOption {
|
user = mkOption {
|
||||||
type = types.str;
|
type = with types; nullOr str;
|
||||||
description = "The user account to use for rotation";
|
default = null;
|
||||||
|
description = ''
|
||||||
|
The user account to use for rotation.
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
group = mkOption {
|
group = mkOption {
|
||||||
type = types.str;
|
type = with types; nullOr str;
|
||||||
description = "The group to use for rotation";
|
default = null;
|
||||||
|
description = ''
|
||||||
|
The group to use for rotation.
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
frequency = mkOption {
|
frequency = mkOption {
|
||||||
type = types.enum [
|
type = types.enum [ "daily" "weekly" "monthly" "yearly" ];
|
||||||
"daily" "weekly" "monthly" "yearly"
|
|
||||||
];
|
|
||||||
default = "daily";
|
default = "daily";
|
||||||
description = "How often to rotate the logs";
|
description = ''
|
||||||
|
How often to rotate the logs.
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
keep = mkOption {
|
keep = mkOption {
|
||||||
type = types.int;
|
type = types.int;
|
||||||
default = 20;
|
default = 20;
|
||||||
description = "How many rotations to keep";
|
description = ''
|
||||||
|
How many rotations to keep.
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
extraConfig = mkOption {
|
extraConfig = mkOption {
|
||||||
type = types.lines;
|
type = types.lines;
|
||||||
default = "";
|
default = "";
|
||||||
description = "Extra logrotate config options for this path";
|
description = ''
|
||||||
|
Extra logrotate config options for this path. Refer to
|
||||||
|
<link xlink:href="https://linux.die.net/man/8/logrotate"/> for details.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
priority = mkOption {
|
||||||
|
type = types.int;
|
||||||
|
default = 1000;
|
||||||
|
description = ''
|
||||||
|
Order of this logrotate block in relation to the others. The semantics are
|
||||||
|
the same as with `lib.mkOrder`. Smaller values have a greater priority.
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
pathConfig = options: ''
|
config.extraConfig = ''
|
||||||
"${options.path}" {
|
|
||||||
su ${options.user} ${options.group}
|
|
||||||
${options.frequency}
|
|
||||||
missingok
|
missingok
|
||||||
notifempty
|
notifempty
|
||||||
rotate ${toString options.keep}
|
'';
|
||||||
${options.extraConfig}
|
};
|
||||||
|
|
||||||
|
mkConf = pathOpts: ''
|
||||||
|
# generated by NixOS using the `services.logrotate.paths.${pathOpts.name}` attribute set
|
||||||
|
"${pathOpts.path}" {
|
||||||
|
${optionalString (pathOpts.user != null || pathOpts.group != null) "su ${pathOpts.user} ${pathOpts.group}"}
|
||||||
|
${pathOpts.frequency}
|
||||||
|
rotate ${toString pathOpts.keep}
|
||||||
|
${pathOpts.extraConfig}
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
configFile = pkgs.writeText "logrotate.conf" (
|
paths = sortProperties (mapAttrsToList (name: pathOpts: pathOpts // { name = name; }) (filterAttrs (_: pathOpts: pathOpts.enable) cfg.paths));
|
||||||
(concatStringsSep "\n" ((map pathConfig cfg.paths) ++ [cfg.extraConfig]))
|
configFile = pkgs.writeText "logrotate.conf" (concatStringsSep "\n" ((map mkConf paths) ++ [ cfg.extraConfig ]));
|
||||||
);
|
|
||||||
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
@ -65,41 +104,66 @@ in
|
|||||||
enable = mkEnableOption "the logrotate systemd service";
|
enable = mkEnableOption "the logrotate systemd service";
|
||||||
|
|
||||||
paths = mkOption {
|
paths = mkOption {
|
||||||
type = types.listOf (types.submodule pathOptions);
|
type = with types; attrsOf (submodule pathOpts);
|
||||||
default = [];
|
default = {};
|
||||||
description = "List of attribute sets with paths to rotate";
|
description = ''
|
||||||
example = {
|
Attribute set of paths to rotate. The order each block appears in the generated configuration file
|
||||||
"/var/log/myapp/*.log" = {
|
can be controlled by the <link linkend="opt-services.logrotate.paths._name_.priority">priority</link> option
|
||||||
user = "myuser";
|
using the same semantics as `lib.mkOrder`. Smaller values have a greater priority.
|
||||||
group = "mygroup";
|
'';
|
||||||
rotate = "weekly";
|
example = literalExample ''
|
||||||
keep = 5;
|
{
|
||||||
};
|
httpd = {
|
||||||
};
|
path = "/var/log/httpd/*.log";
|
||||||
|
user = config.services.httpd.user;
|
||||||
|
group = config.services.httpd.group;
|
||||||
|
keep = 7;
|
||||||
|
};
|
||||||
|
|
||||||
|
myapp = {
|
||||||
|
path = "/var/log/myapp/*.log";
|
||||||
|
user = "myuser";
|
||||||
|
group = "mygroup";
|
||||||
|
frequency = "weekly";
|
||||||
|
keep = 5;
|
||||||
|
priority = 1;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
extraConfig = mkOption {
|
extraConfig = mkOption {
|
||||||
default = "";
|
default = "";
|
||||||
type = types.lines;
|
type = types.lines;
|
||||||
description = ''
|
description = ''
|
||||||
Extra contents to add to the logrotate config file.
|
Extra contents to append to the logrotate configuration file. Refer to
|
||||||
See https://linux.die.net/man/8/logrotate
|
<link xlink:href="https://linux.die.net/man/8/logrotate"/> for details.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
systemd.services.logrotate = {
|
assertions = mapAttrsToList (name: pathOpts:
|
||||||
description = "Logrotate Service";
|
{ assertion = (pathOpts.user != null) == (pathOpts.group != null);
|
||||||
wantedBy = [ "multi-user.target" ];
|
message = ''
|
||||||
startAt = "*-*-* *:05:00";
|
If either of `services.logrotate.paths.${name}.user` or `services.logrotate.paths.${name}.group` are specified then *both* must be specified.
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
) cfg.paths;
|
||||||
|
|
||||||
serviceConfig.Restart = "no";
|
systemd.services.logrotate = {
|
||||||
serviceConfig.User = "root";
|
description = "Logrotate Service";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
startAt = "*-*-* *:05:00";
|
||||||
script = ''
|
script = ''
|
||||||
exec ${pkgs.logrotate}/sbin/logrotate ${configFile}
|
exec ${pkgs.logrotate}/sbin/logrotate ${configFile}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
Restart = "no";
|
||||||
|
User = "root";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -4,13 +4,9 @@ with lib;
|
|||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.services.logstash;
|
cfg = config.services.logstash;
|
||||||
pluginPath = lib.concatStringsSep ":" cfg.plugins;
|
|
||||||
havePluginPath = lib.length cfg.plugins > 0;
|
|
||||||
ops = lib.optionalString;
|
ops = lib.optionalString;
|
||||||
verbosityFlag = "--log.level " + cfg.logLevel;
|
verbosityFlag = "--log.level " + cfg.logLevel;
|
||||||
|
|
||||||
pluginsPath = "--path.plugins ${pluginPath}";
|
|
||||||
|
|
||||||
logstashConf = pkgs.writeText "logstash.conf" ''
|
logstashConf = pkgs.writeText "logstash.conf" ''
|
||||||
input {
|
input {
|
||||||
${cfg.inputConfig}
|
${cfg.inputConfig}
|
||||||
@ -173,7 +169,7 @@ in
|
|||||||
ExecStart = concatStringsSep " " (filter (s: stringLength s != 0) [
|
ExecStart = concatStringsSep " " (filter (s: stringLength s != 0) [
|
||||||
"${cfg.package}/bin/logstash"
|
"${cfg.package}/bin/logstash"
|
||||||
"-w ${toString cfg.filterWorkers}"
|
"-w ${toString cfg.filterWorkers}"
|
||||||
(ops havePluginPath pluginsPath)
|
(concatMapStringsSep " " (x: "--path.plugins ${x}") cfg.plugins)
|
||||||
"${verbosityFlag}"
|
"${verbosityFlag}"
|
||||||
"-f ${logstashConf}"
|
"-f ${logstashConf}"
|
||||||
"--path.settings ${logstashSettingsDir}"
|
"--path.settings ${logstashSettingsDir}"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ options, config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
|
|
||||||
@ -83,11 +83,11 @@ let
|
|||||||
)
|
)
|
||||||
|
|
||||||
(
|
(
|
||||||
optionalString (cfg.mailboxes != []) ''
|
optionalString (cfg.mailboxes != {}) ''
|
||||||
protocol imap {
|
protocol imap {
|
||||||
namespace inbox {
|
namespace inbox {
|
||||||
inbox=yes
|
inbox=yes
|
||||||
${concatStringsSep "\n" (map mailboxConfig cfg.mailboxes)}
|
${concatStringsSep "\n" (map mailboxConfig (attrValues cfg.mailboxes))}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
''
|
''
|
||||||
@ -131,12 +131,13 @@ let
|
|||||||
special_use = \${toString mailbox.specialUse}
|
special_use = \${toString mailbox.specialUse}
|
||||||
'' + "}";
|
'' + "}";
|
||||||
|
|
||||||
mailboxes = { ... }: {
|
mailboxes = { name, ... }: {
|
||||||
options = {
|
options = {
|
||||||
name = mkOption {
|
name = mkOption {
|
||||||
type = types.nullOr (types.strMatching ''[^"]+'');
|
type = types.strMatching ''[^"]+'';
|
||||||
example = "Spam";
|
example = "Spam";
|
||||||
default = null;
|
default = name;
|
||||||
|
readOnly = true;
|
||||||
description = "The name of the mailbox.";
|
description = "The name of the mailbox.";
|
||||||
};
|
};
|
||||||
auto = mkOption {
|
auto = mkOption {
|
||||||
@ -335,19 +336,11 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
mailboxes = mkOption {
|
mailboxes = mkOption {
|
||||||
type = with types; let m = submodule mailboxes; in either (listOf m) (attrsOf m);
|
type = with types; coercedTo
|
||||||
|
(listOf unspecified)
|
||||||
|
(list: listToAttrs (map (entry: { name = entry.name; value = removeAttrs entry ["name"]; }) list))
|
||||||
|
(attrsOf (submodule mailboxes));
|
||||||
default = {};
|
default = {};
|
||||||
apply = x:
|
|
||||||
if isList x then warn "Declaring `services.dovecot2.mailboxes' as a list is deprecated and will break eval in 21.03!" x
|
|
||||||
else mapAttrsToList (name: value:
|
|
||||||
if value.name != null
|
|
||||||
then throw ''
|
|
||||||
When specifying dovecot2 mailboxes as attributes, declaring
|
|
||||||
a `name'-attribute is prohibited! The name ${value.name} should
|
|
||||||
be the attribute key!
|
|
||||||
''
|
|
||||||
else value // { inherit name; }
|
|
||||||
) x;
|
|
||||||
example = literalExample ''
|
example = literalExample ''
|
||||||
{
|
{
|
||||||
Spam = { specialUse = "Junk"; auto = "create"; };
|
Spam = { specialUse = "Junk"; auto = "create"; };
|
||||||
@ -471,6 +464,10 @@ in
|
|||||||
|
|
||||||
environment.systemPackages = [ dovecotPkg ];
|
environment.systemPackages = [ dovecotPkg ];
|
||||||
|
|
||||||
|
warnings = mkIf (any isList options.services.dovecot2.mailboxes.definitions) [
|
||||||
|
"Declaring `services.dovecot2.mailboxes' as a list is deprecated and will break eval in 21.03! See the release notes for more info for migration."
|
||||||
|
];
|
||||||
|
|
||||||
assertions = [
|
assertions = [
|
||||||
{
|
{
|
||||||
assertion = intersectLists cfg.protocols [ "pop3" "imap" ] != [];
|
assertion = intersectLists cfg.protocols [ "pop3" "imap" ] != [];
|
||||||
|
@ -54,7 +54,7 @@ let
|
|||||||
'') gitlabConfig.production.repositories.storages))}
|
'') gitlabConfig.production.repositories.storages))}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
gitlabShellConfig = {
|
gitlabShellConfig = flip recursiveUpdate cfg.extraShellConfig {
|
||||||
user = cfg.user;
|
user = cfg.user;
|
||||||
gitlab_url = "http+unix://${pathUrlQuote gitlabSocket}";
|
gitlab_url = "http+unix://${pathUrlQuote gitlabSocket}";
|
||||||
http_settings.self_signed_cert = false;
|
http_settings.self_signed_cert = false;
|
||||||
@ -517,6 +517,12 @@ in {
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extraShellConfig = mkOption {
|
||||||
|
type = types.attrs;
|
||||||
|
default = {};
|
||||||
|
description = "Extra configuration to merge into shell-config.yml";
|
||||||
|
};
|
||||||
|
|
||||||
extraConfig = mkOption {
|
extraConfig = mkOption {
|
||||||
type = types.attrs;
|
type = types.attrs;
|
||||||
default = {};
|
default = {};
|
||||||
|
@ -50,6 +50,12 @@ in
|
|||||||
description = "Parse and interpret emoji tags";
|
description = "Parse and interpret emoji tags";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
h1-title = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = "Use the first h1 as page title";
|
||||||
|
};
|
||||||
|
|
||||||
branch = mkOption {
|
branch = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "master";
|
default = "master";
|
||||||
@ -102,6 +108,7 @@ in
|
|||||||
--ref ${cfg.branch} \
|
--ref ${cfg.branch} \
|
||||||
${optionalString cfg.mathjax "--mathjax"} \
|
${optionalString cfg.mathjax "--mathjax"} \
|
||||||
${optionalString cfg.emoji "--emoji"} \
|
${optionalString cfg.emoji "--emoji"} \
|
||||||
|
${optionalString cfg.h1-title "--h1-title"} \
|
||||||
${optionalString (cfg.allowUploads != null) "--allow-uploads ${cfg.allowUploads}"} \
|
${optionalString (cfg.allowUploads != null) "--allow-uploads ${cfg.allowUploads}"} \
|
||||||
${cfg.stateDir}
|
${cfg.stateDir}
|
||||||
'';
|
'';
|
||||||
|
@ -16,6 +16,14 @@ in
|
|||||||
description = "User account under which Jellyfin runs.";
|
description = "User account under which Jellyfin runs.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
package = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
example = literalExample "pkgs.jellyfin";
|
||||||
|
description = ''
|
||||||
|
Jellyfin package to use.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
group = mkOption {
|
group = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "jellyfin";
|
default = "jellyfin";
|
||||||
@ -35,11 +43,16 @@ in
|
|||||||
Group = cfg.group;
|
Group = cfg.group;
|
||||||
StateDirectory = "jellyfin";
|
StateDirectory = "jellyfin";
|
||||||
CacheDirectory = "jellyfin";
|
CacheDirectory = "jellyfin";
|
||||||
ExecStart = "${pkgs.jellyfin}/bin/jellyfin --datadir '/var/lib/${StateDirectory}' --cachedir '/var/cache/${CacheDirectory}'";
|
ExecStart = "${cfg.package}/bin/jellyfin --datadir '/var/lib/${StateDirectory}' --cachedir '/var/cache/${CacheDirectory}'";
|
||||||
Restart = "on-failure";
|
Restart = "on-failure";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
services.jellyfin.package = mkDefault (
|
||||||
|
if versionAtLeast config.system.stateVersion "20.09" then pkgs.jellyfin
|
||||||
|
else pkgs.jellyfin_10_5
|
||||||
|
);
|
||||||
|
|
||||||
users.users = mkIf (cfg.user == "jellyfin") {
|
users.users = mkIf (cfg.user == "jellyfin") {
|
||||||
jellyfin = {
|
jellyfin = {
|
||||||
group = cfg.group;
|
group = cfg.group;
|
||||||
|
@ -4,19 +4,29 @@ with lib;
|
|||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.services.monit;
|
cfg = config.services.monit;
|
||||||
|
extraConfig = pkgs.writeText "monitConfig" cfg.extraConfig;
|
||||||
in
|
in
|
||||||
|
|
||||||
{
|
{
|
||||||
|
imports = [
|
||||||
|
(mkRenamedOptionModule [ "services" "monit" "config" ] ["services" "monit" "extraConfig" ])
|
||||||
|
];
|
||||||
|
|
||||||
options.services.monit = {
|
options.services.monit = {
|
||||||
|
|
||||||
enable = mkEnableOption "Monit";
|
enable = mkEnableOption "Monit";
|
||||||
|
|
||||||
config = mkOption {
|
configFiles = mkOption {
|
||||||
type = types.lines;
|
type = types.listOf types.path;
|
||||||
default = "";
|
default = [];
|
||||||
description = "monitrc content";
|
description = "List of paths to be included in the monitrc file";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extraConfig = mkOption {
|
||||||
|
type = types.lines;
|
||||||
|
default = "";
|
||||||
|
description = "Additional monit config as string";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
@ -24,7 +34,7 @@ in
|
|||||||
environment.systemPackages = [ pkgs.monit ];
|
environment.systemPackages = [ pkgs.monit ];
|
||||||
|
|
||||||
environment.etc.monitrc = {
|
environment.etc.monitrc = {
|
||||||
text = cfg.config;
|
text = concatMapStringsSep "\n" (path: "include ${path}") (cfg.configFiles ++ [extraConfig]);
|
||||||
mode = "0400";
|
mode = "0400";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ let
|
|||||||
${pkgs.coreutils}/bin/cat << EOF
|
${pkgs.coreutils}/bin/cat << EOF
|
||||||
From: smartd on ${host} <${nm.sender}>
|
From: smartd on ${host} <${nm.sender}>
|
||||||
To: undisclosed-recipients:;
|
To: undisclosed-recipients:;
|
||||||
Subject: SMART error on $SMARTD_DEVICESTRING: $SMARTD_FAILTYPE
|
Subject: $SMARTD_SUBJECT
|
||||||
|
|
||||||
$SMARTD_FULLMESSAGE
|
$SMARTD_FULLMESSAGE
|
||||||
EOF
|
EOF
|
||||||
@ -239,11 +239,7 @@ in
|
|||||||
|
|
||||||
systemd.services.smartd = {
|
systemd.services.smartd = {
|
||||||
description = "S.M.A.R.T. Daemon";
|
description = "S.M.A.R.T. Daemon";
|
||||||
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
path = [ pkgs.nettools ]; # for hostname and dnsdomanname calls in smartd
|
|
||||||
|
|
||||||
serviceConfig.ExecStart = "${pkgs.smartmontools}/sbin/smartd ${lib.concatStringsSep " " cfg.extraOptions} --no-fork --configfile=${smartdConf}";
|
serviceConfig.ExecStart = "${pkgs.smartmontools}/sbin/smartd ${lib.concatStringsSep " " cfg.extraOptions} --no-fork --configfile=${smartdConf}";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -5,8 +5,8 @@ let
|
|||||||
pgsql = config.services.postgresql;
|
pgsql = config.services.postgresql;
|
||||||
mysql = config.services.mysql;
|
mysql = config.services.mysql;
|
||||||
|
|
||||||
inherit (lib) mkDefault mkEnableOption mkIf mkMerge mkOption;
|
inherit (lib) mkAfter mkDefault mkEnableOption mkIf mkMerge mkOption;
|
||||||
inherit (lib) attrValues concatMapStringsSep literalExample optional optionalAttrs optionalString types;
|
inherit (lib) attrValues concatMapStringsSep getName literalExample optional optionalAttrs optionalString types;
|
||||||
inherit (lib.generators) toKeyValue;
|
inherit (lib.generators) toKeyValue;
|
||||||
|
|
||||||
user = "zabbix";
|
user = "zabbix";
|
||||||
@ -232,14 +232,15 @@ in
|
|||||||
services.mysql = optionalAttrs mysqlLocal {
|
services.mysql = optionalAttrs mysqlLocal {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = mkDefault pkgs.mariadb;
|
package = mkDefault pkgs.mariadb;
|
||||||
ensureDatabases = [ cfg.database.name ];
|
|
||||||
ensureUsers = [
|
|
||||||
{ name = cfg.database.user;
|
|
||||||
ensurePermissions = { "${cfg.database.name}.*" = "ALL PRIVILEGES"; };
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
systemd.services.mysql.postStart = mkAfter (optionalString mysqlLocal ''
|
||||||
|
( echo "CREATE DATABASE IF NOT EXISTS \`${cfg.database.name}\` CHARACTER SET utf8 COLLATE utf8_bin;"
|
||||||
|
echo "CREATE USER IF NOT EXISTS '${cfg.database.user}'@'localhost' IDENTIFIED WITH ${if (getName config.services.mysql.package == getName pkgs.mariadb) then "unix_socket" else "auth_socket"};"
|
||||||
|
echo "GRANT ALL PRIVILEGES ON \`${cfg.database.name}\`.* TO '${cfg.database.user}'@'localhost';"
|
||||||
|
) | ${config.services.mysql.package}/bin/mysql -N
|
||||||
|
'');
|
||||||
|
|
||||||
services.postgresql = optionalAttrs pgsqlLocal {
|
services.postgresql = optionalAttrs pgsqlLocal {
|
||||||
enable = true;
|
enable = true;
|
||||||
ensureDatabases = [ cfg.database.name ];
|
ensureDatabases = [ cfg.database.name ];
|
||||||
|
@ -5,8 +5,8 @@ let
|
|||||||
pgsql = config.services.postgresql;
|
pgsql = config.services.postgresql;
|
||||||
mysql = config.services.mysql;
|
mysql = config.services.mysql;
|
||||||
|
|
||||||
inherit (lib) mkDefault mkEnableOption mkIf mkMerge mkOption;
|
inherit (lib) mkAfter mkDefault mkEnableOption mkIf mkMerge mkOption;
|
||||||
inherit (lib) attrValues concatMapStringsSep literalExample optional optionalAttrs optionalString types;
|
inherit (lib) attrValues concatMapStringsSep getName literalExample optional optionalAttrs optionalString types;
|
||||||
inherit (lib.generators) toKeyValue;
|
inherit (lib.generators) toKeyValue;
|
||||||
|
|
||||||
user = "zabbix";
|
user = "zabbix";
|
||||||
@ -220,14 +220,15 @@ in
|
|||||||
services.mysql = optionalAttrs mysqlLocal {
|
services.mysql = optionalAttrs mysqlLocal {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = mkDefault pkgs.mariadb;
|
package = mkDefault pkgs.mariadb;
|
||||||
ensureDatabases = [ cfg.database.name ];
|
|
||||||
ensureUsers = [
|
|
||||||
{ name = cfg.database.user;
|
|
||||||
ensurePermissions = { "${cfg.database.name}.*" = "ALL PRIVILEGES"; };
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
systemd.services.mysql.postStart = mkAfter (optionalString mysqlLocal ''
|
||||||
|
( echo "CREATE DATABASE IF NOT EXISTS \`${cfg.database.name}\` CHARACTER SET utf8 COLLATE utf8_bin;"
|
||||||
|
echo "CREATE USER IF NOT EXISTS '${cfg.database.user}'@'localhost' IDENTIFIED WITH ${if (getName config.services.mysql.package == getName pkgs.mariadb) then "unix_socket" else "auth_socket"};"
|
||||||
|
echo "GRANT ALL PRIVILEGES ON \`${cfg.database.name}\`.* TO '${cfg.database.user}'@'localhost';"
|
||||||
|
) | ${config.services.mysql.package}/bin/mysql -N
|
||||||
|
'');
|
||||||
|
|
||||||
services.postgresql = optionalAttrs pgsqlLocal {
|
services.postgresql = optionalAttrs pgsqlLocal {
|
||||||
enable = true;
|
enable = true;
|
||||||
ensureDatabases = [ cfg.database.name ];
|
ensureDatabases = [ cfg.database.name ];
|
||||||
|
@ -256,6 +256,6 @@ in
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
meta.maintainers = with maintainers; [ maintainers."1000101" ];
|
meta.maintainers = with maintainers; [ _1000101 ];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -270,6 +270,6 @@ in
|
|||||||
nameValuePair "${cfg.group}" { })) eachBlockbook;
|
nameValuePair "${cfg.group}" { })) eachBlockbook;
|
||||||
};
|
};
|
||||||
|
|
||||||
meta.maintainers = with maintainers; [ maintainers."1000101" ];
|
meta.maintainers = with maintainers; [ _1000101 ];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -108,7 +108,6 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
meta.maintainers = with maintainers; [ maintainers."1000101" ];
|
meta.maintainers = with maintainers; [ _1000101 ];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,7 +90,7 @@ in
|
|||||||
config = mkIf cfg.enable (
|
config = mkIf cfg.enable (
|
||||||
mkMerge [
|
mkMerge [
|
||||||
{
|
{
|
||||||
meta.maintainers = [ lib.maintainers."0x4A6F" ];
|
meta.maintainers = with lib.maintainers; [ _0x4A6F ];
|
||||||
|
|
||||||
systemd.services.xandikos = {
|
systemd.services.xandikos = {
|
||||||
description = "A Simple Calendar and Contact Server";
|
description = "A Simple Calendar and Contact Server";
|
||||||
|
@ -11,6 +11,7 @@ let
|
|||||||
settingsDir = ".config/transmission-daemon";
|
settingsDir = ".config/transmission-daemon";
|
||||||
downloadsDir = "Downloads";
|
downloadsDir = "Downloads";
|
||||||
incompleteDir = ".incomplete";
|
incompleteDir = ".incomplete";
|
||||||
|
watchDir = "watchdir";
|
||||||
# TODO: switch to configGen.json once RFC0042 is implemented
|
# TODO: switch to configGen.json once RFC0042 is implemented
|
||||||
settingsFile = pkgs.writeText "settings.json" (builtins.toJSON cfg.settings);
|
settingsFile = pkgs.writeText "settings.json" (builtins.toJSON cfg.settings);
|
||||||
in
|
in
|
||||||
@ -35,6 +36,8 @@ in
|
|||||||
download-dir = "${cfg.home}/${downloadsDir}";
|
download-dir = "${cfg.home}/${downloadsDir}";
|
||||||
incomplete-dir = "${cfg.home}/${incompleteDir}";
|
incomplete-dir = "${cfg.home}/${incompleteDir}";
|
||||||
incomplete-dir-enabled = true;
|
incomplete-dir-enabled = true;
|
||||||
|
watch-dir = "${cfg.home}/${watchDir}";
|
||||||
|
watch-dir-enabled = false;
|
||||||
message-level = 1;
|
message-level = 1;
|
||||||
peer-port = 51413;
|
peer-port = 51413;
|
||||||
peer-port-random-high = 65535;
|
peer-port-random-high = 65535;
|
||||||
@ -161,6 +164,9 @@ in
|
|||||||
{ assertion = types.path.check cfg.settings.incomplete-dir;
|
{ assertion = types.path.check cfg.settings.incomplete-dir;
|
||||||
message = "`services.transmission.settings.incomplete-dir' must be an absolute path.";
|
message = "`services.transmission.settings.incomplete-dir' must be an absolute path.";
|
||||||
}
|
}
|
||||||
|
{ assertion = types.path.check cfg.settings.watch-dir;
|
||||||
|
message = "`services.transmission.settings.watch-dir' must be an absolute path.";
|
||||||
|
}
|
||||||
{ assertion = cfg.settings.script-torrent-done-filename == "" || types.path.check cfg.settings.script-torrent-done-filename;
|
{ assertion = cfg.settings.script-torrent-done-filename == "" || types.path.check cfg.settings.script-torrent-done-filename;
|
||||||
message = "`services.transmission.settings.script-torrent-done-filename' must be an absolute path.";
|
message = "`services.transmission.settings.script-torrent-done-filename' must be an absolute path.";
|
||||||
}
|
}
|
||||||
@ -220,14 +226,16 @@ in
|
|||||||
cfg.settings.download-dir
|
cfg.settings.download-dir
|
||||||
] ++
|
] ++
|
||||||
optional cfg.settings.incomplete-dir-enabled
|
optional cfg.settings.incomplete-dir-enabled
|
||||||
cfg.settings.incomplete-dir;
|
cfg.settings.incomplete-dir
|
||||||
|
++
|
||||||
|
optional cfg.settings.watch-dir-enabled
|
||||||
|
cfg.settings.watch-dir
|
||||||
|
;
|
||||||
BindReadOnlyPaths = [
|
BindReadOnlyPaths = [
|
||||||
# No confinement done of /nix/store here like in systemd-confinement.nix,
|
# No confinement done of /nix/store here like in systemd-confinement.nix,
|
||||||
# an AppArmor profile is provided to get a confinement based upon paths and rights.
|
# an AppArmor profile is provided to get a confinement based upon paths and rights.
|
||||||
builtins.storeDir
|
builtins.storeDir
|
||||||
"-/etc/hosts"
|
"/etc"
|
||||||
"-/etc/ld-nix.so.preload"
|
|
||||||
"-/etc/localtime"
|
|
||||||
] ++
|
] ++
|
||||||
optional (cfg.settings.script-torrent-done-enabled &&
|
optional (cfg.settings.script-torrent-done-enabled &&
|
||||||
cfg.settings.script-torrent-done-filename != "")
|
cfg.settings.script-torrent-done-filename != "")
|
||||||
@ -410,11 +418,17 @@ in
|
|||||||
${optionalString cfg.settings.incomplete-dir-enabled ''
|
${optionalString cfg.settings.incomplete-dir-enabled ''
|
||||||
rw ${cfg.settings.incomplete-dir}/**,
|
rw ${cfg.settings.incomplete-dir}/**,
|
||||||
''}
|
''}
|
||||||
|
${optionalString cfg.settings.watch-dir-enabled ''
|
||||||
|
rw ${cfg.settings.watch-dir}/**,
|
||||||
|
''}
|
||||||
profile dirs {
|
profile dirs {
|
||||||
rw ${cfg.settings.download-dir}/**,
|
rw ${cfg.settings.download-dir}/**,
|
||||||
${optionalString cfg.settings.incomplete-dir-enabled ''
|
${optionalString cfg.settings.incomplete-dir-enabled ''
|
||||||
rw ${cfg.settings.incomplete-dir}/**,
|
rw ${cfg.settings.incomplete-dir}/**,
|
||||||
''}
|
''}
|
||||||
|
${optionalString cfg.settings.watch-dir-enabled ''
|
||||||
|
rw ${cfg.settings.watch-dir}/**,
|
||||||
|
''}
|
||||||
}
|
}
|
||||||
|
|
||||||
${optionalString (cfg.settings.script-torrent-done-enabled &&
|
${optionalString (cfg.settings.script-torrent-done-enabled &&
|
||||||
|
@ -383,6 +383,6 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
meta.maintainers = with maintainers; [ maintainers."1000101" ];
|
meta.maintainers = with maintainers; [ _1000101 ];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
127
nixos/modules/services/web-apps/rss-bridge.nix
Normal file
127
nixos/modules/services/web-apps/rss-bridge.nix
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.services.rss-bridge;
|
||||||
|
|
||||||
|
poolName = "rss-bridge";
|
||||||
|
|
||||||
|
whitelist = pkgs.writeText "rss-bridge_whitelist.txt"
|
||||||
|
(concatStringsSep "\n" cfg.whitelist);
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
services.rss-bridge = {
|
||||||
|
enable = mkEnableOption "rss-bridge";
|
||||||
|
|
||||||
|
user = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "nginx";
|
||||||
|
example = "nginx";
|
||||||
|
description = ''
|
||||||
|
User account under which both the service and the web-application run.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
group = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "nginx";
|
||||||
|
example = "nginx";
|
||||||
|
description = ''
|
||||||
|
Group under which the web-application run.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
pool = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = poolName;
|
||||||
|
description = ''
|
||||||
|
Name of existing phpfpm pool that is used to run web-application.
|
||||||
|
If not specified a pool will be created automatically with
|
||||||
|
default values.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
dataDir = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "/var/lib/rss-bridge";
|
||||||
|
description = ''
|
||||||
|
Location in which cache directory will be created.
|
||||||
|
You can put <literal>config.ini.php</literal> in here.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
virtualHost = mkOption {
|
||||||
|
type = types.nullOr types.str;
|
||||||
|
default = "rss-bridge";
|
||||||
|
description = ''
|
||||||
|
Name of the nginx virtualhost to use and setup. If null, do not setup any virtualhost.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
whitelist = mkOption {
|
||||||
|
type = types.listOf types.str;
|
||||||
|
default = [];
|
||||||
|
example = options.literalExample ''
|
||||||
|
[
|
||||||
|
"Facebook"
|
||||||
|
"Instagram"
|
||||||
|
"Twitter"
|
||||||
|
]
|
||||||
|
'';
|
||||||
|
description = ''
|
||||||
|
List of bridges to be whitelisted.
|
||||||
|
If the list is empty, rss-bridge will use whitelist.default.txt.
|
||||||
|
Use <literal>[ "*" ]</literal> to whitelist all.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
services.phpfpm.pools = mkIf (cfg.pool == poolName) {
|
||||||
|
${poolName} = {
|
||||||
|
user = cfg.user;
|
||||||
|
settings = mapAttrs (name: mkDefault) {
|
||||||
|
"listen.owner" = cfg.user;
|
||||||
|
"listen.group" = cfg.user;
|
||||||
|
"listen.mode" = "0600";
|
||||||
|
"pm" = "dynamic";
|
||||||
|
"pm.max_children" = 75;
|
||||||
|
"pm.start_servers" = 10;
|
||||||
|
"pm.min_spare_servers" = 5;
|
||||||
|
"pm.max_spare_servers" = 20;
|
||||||
|
"pm.max_requests" = 500;
|
||||||
|
"catch_workers_output" = 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"d '${cfg.dataDir}/cache' 0750 ${cfg.user} ${cfg.group} - -"
|
||||||
|
(mkIf (cfg.whitelist != []) "L+ ${cfg.dataDir}/whitelist.txt - - - - ${whitelist}")
|
||||||
|
"z '${cfg.dataDir}/config.ini.php' 0750 ${cfg.user} ${cfg.group} - -"
|
||||||
|
];
|
||||||
|
|
||||||
|
services.nginx = mkIf (cfg.virtualHost != null) {
|
||||||
|
enable = true;
|
||||||
|
virtualHosts = {
|
||||||
|
${cfg.virtualHost} = {
|
||||||
|
root = "${pkgs.rss-bridge}";
|
||||||
|
|
||||||
|
locations."/" = {
|
||||||
|
tryFiles = "$uri /index.php$is_args$args";
|
||||||
|
};
|
||||||
|
|
||||||
|
locations."~ ^/index.php(/|$)" = {
|
||||||
|
extraConfig = ''
|
||||||
|
include ${pkgs.nginx}/conf/fastcgi_params;
|
||||||
|
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||||
|
fastcgi_pass unix:${config.services.phpfpm.pools.${cfg.pool}.socket};
|
||||||
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
|
fastcgi_param RSSBRIDGE_DATA ${cfg.dataDir};
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -10,6 +10,12 @@ let
|
|||||||
|
|
||||||
pkg = cfg.package.out;
|
pkg = cfg.package.out;
|
||||||
|
|
||||||
|
apachectl = pkgs.runCommand "apachectl" { meta.priority = -1; } ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
cp ${pkg}/bin/apachectl $out/bin/apachectl
|
||||||
|
sed -i $out/bin/apachectl -e 's|$HTTPD -t|$HTTPD -t -f ${httpdConf}|'
|
||||||
|
'';
|
||||||
|
|
||||||
httpdConf = cfg.configFile;
|
httpdConf = cfg.configFile;
|
||||||
|
|
||||||
php = cfg.phpPackage.override { apacheHttpd = pkg; };
|
php = cfg.phpPackage.override { apacheHttpd = pkg; };
|
||||||
@ -650,10 +656,29 @@ in
|
|||||||
postRun = "systemctl reload httpd.service";
|
postRun = "systemctl reload httpd.service";
|
||||||
}) (filterAttrs (name: hostOpts: hostOpts.enableACME) cfg.virtualHosts);
|
}) (filterAttrs (name: hostOpts: hostOpts.enableACME) cfg.virtualHosts);
|
||||||
|
|
||||||
environment.systemPackages = [ pkg ];
|
environment.systemPackages = [
|
||||||
|
apachectl
|
||||||
|
pkg
|
||||||
|
];
|
||||||
|
|
||||||
# required for "apachectl configtest"
|
services.logrotate = optionalAttrs (cfg.logFormat != "none") {
|
||||||
environment.etc."httpd/httpd.conf".source = httpdConf;
|
enable = mkDefault true;
|
||||||
|
paths.httpd = {
|
||||||
|
path = "${cfg.logDir}/*.log";
|
||||||
|
user = cfg.user;
|
||||||
|
group = cfg.group;
|
||||||
|
frequency = "daily";
|
||||||
|
keep = 28;
|
||||||
|
extraConfig = ''
|
||||||
|
sharedscripts
|
||||||
|
compress
|
||||||
|
delaycompress
|
||||||
|
postrotate
|
||||||
|
systemctl reload httpd.service > /dev/null 2>/dev/null || true
|
||||||
|
endscript
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
services.httpd.phpOptions =
|
services.httpd.phpOptions =
|
||||||
''
|
''
|
||||||
|
@ -1,174 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.services.meguca;
|
|
||||||
postgres = config.services.postgresql;
|
|
||||||
in with lib; {
|
|
||||||
options.services.meguca = {
|
|
||||||
enable = mkEnableOption "meguca";
|
|
||||||
|
|
||||||
dataDir = mkOption {
|
|
||||||
type = types.path;
|
|
||||||
default = "/var/lib/meguca";
|
|
||||||
example = "/home/okina/meguca";
|
|
||||||
description = "Location where meguca stores it's database and links.";
|
|
||||||
};
|
|
||||||
|
|
||||||
password = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "meguca";
|
|
||||||
example = "dumbpass";
|
|
||||||
description = "Password for the meguca database.";
|
|
||||||
};
|
|
||||||
|
|
||||||
passwordFile = mkOption {
|
|
||||||
type = types.path;
|
|
||||||
default = "/run/keys/meguca-password-file";
|
|
||||||
example = "/home/okina/meguca/keys/pass";
|
|
||||||
description = "Password file for the meguca database.";
|
|
||||||
};
|
|
||||||
|
|
||||||
reverseProxy = mkOption {
|
|
||||||
type = types.nullOr types.str;
|
|
||||||
default = null;
|
|
||||||
example = "192.168.1.5";
|
|
||||||
description = "Reverse proxy IP.";
|
|
||||||
};
|
|
||||||
|
|
||||||
sslCertificate = mkOption {
|
|
||||||
type = types.nullOr types.str;
|
|
||||||
default = null;
|
|
||||||
example = "/home/okina/meguca/ssl.cert";
|
|
||||||
description = "Path to the SSL certificate.";
|
|
||||||
};
|
|
||||||
|
|
||||||
listenAddress = mkOption {
|
|
||||||
type = types.nullOr types.str;
|
|
||||||
default = null;
|
|
||||||
example = "127.0.0.1:8000";
|
|
||||||
description = "Listen on a specific IP address and port.";
|
|
||||||
};
|
|
||||||
|
|
||||||
cacheSize = mkOption {
|
|
||||||
type = types.nullOr types.int;
|
|
||||||
default = null;
|
|
||||||
example = 256;
|
|
||||||
description = "Cache size in MB.";
|
|
||||||
};
|
|
||||||
|
|
||||||
postgresArgs = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
example = "user=meguca password=dumbpass dbname=meguca sslmode=disable";
|
|
||||||
description = "Postgresql connection arguments.";
|
|
||||||
};
|
|
||||||
|
|
||||||
postgresArgsFile = mkOption {
|
|
||||||
type = types.path;
|
|
||||||
default = "/run/keys/meguca-postgres-args";
|
|
||||||
example = "/home/okina/meguca/keys/postgres";
|
|
||||||
description = "Postgresql connection arguments file.";
|
|
||||||
};
|
|
||||||
|
|
||||||
compressTraffic = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = "Compress all traffic with gzip.";
|
|
||||||
};
|
|
||||||
|
|
||||||
assumeReverseProxy = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = "Assume the server is behind a reverse proxy, when resolving client IPs.";
|
|
||||||
};
|
|
||||||
|
|
||||||
httpsOnly = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = "Serve and listen only through HTTPS.";
|
|
||||||
};
|
|
||||||
|
|
||||||
videoPaths = mkOption {
|
|
||||||
type = types.listOf types.path;
|
|
||||||
default = [];
|
|
||||||
example = [ "/home/okina/Videos/tehe_pero.webm" ];
|
|
||||||
description = "Videos that will be symlinked into www/videos.";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
security.sudo.enable = cfg.enable;
|
|
||||||
services.postgresql.enable = cfg.enable;
|
|
||||||
services.postgresql.package = pkgs.postgresql_11;
|
|
||||||
services.meguca.passwordFile = mkDefault (pkgs.writeText "meguca-password-file" cfg.password);
|
|
||||||
services.meguca.postgresArgsFile = mkDefault (pkgs.writeText "meguca-postgres-args" cfg.postgresArgs);
|
|
||||||
services.meguca.postgresArgs = mkDefault "user=meguca password=${cfg.password} dbname=meguca sslmode=disable";
|
|
||||||
|
|
||||||
systemd.services.meguca = {
|
|
||||||
description = "meguca";
|
|
||||||
after = [ "network.target" "postgresql.service" ];
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
|
|
||||||
preStart = ''
|
|
||||||
# Ensure folder exists or create it and links and permissions are correct
|
|
||||||
mkdir -p ${escapeShellArg cfg.dataDir}/www
|
|
||||||
rm -rf ${escapeShellArg cfg.dataDir}/www/videos
|
|
||||||
ln -sf ${pkgs.meguca}/share/meguca/www/* ${escapeShellArg cfg.dataDir}/www
|
|
||||||
unlink ${escapeShellArg cfg.dataDir}/www/videos
|
|
||||||
mkdir -p ${escapeShellArg cfg.dataDir}/www/videos
|
|
||||||
|
|
||||||
for vid in ${escapeShellArg cfg.videoPaths}; do
|
|
||||||
ln -sf $vid ${escapeShellArg cfg.dataDir}/www/videos
|
|
||||||
done
|
|
||||||
|
|
||||||
chmod 750 ${escapeShellArg cfg.dataDir}
|
|
||||||
chown -R meguca:meguca ${escapeShellArg cfg.dataDir}
|
|
||||||
|
|
||||||
# Ensure the database is correct or create it
|
|
||||||
${pkgs.sudo}/bin/sudo -u ${postgres.superUser} ${postgres.package}/bin/createuser \
|
|
||||||
-SDR meguca || true
|
|
||||||
${pkgs.sudo}/bin/sudo -u ${postgres.superUser} ${postgres.package}/bin/createdb \
|
|
||||||
-T template0 -E UTF8 -O meguca meguca || true
|
|
||||||
${pkgs.sudo}/bin/sudo -u meguca ${postgres.package}/bin/psql \
|
|
||||||
-c "ALTER ROLE meguca WITH PASSWORD '$(cat ${escapeShellArg cfg.passwordFile})';" || true
|
|
||||||
'';
|
|
||||||
|
|
||||||
script = ''
|
|
||||||
cd ${escapeShellArg cfg.dataDir}
|
|
||||||
|
|
||||||
${pkgs.meguca}/bin/meguca -d "$(cat ${escapeShellArg cfg.postgresArgsFile})"''
|
|
||||||
+ optionalString (cfg.reverseProxy != null) " -R ${cfg.reverseProxy}"
|
|
||||||
+ optionalString (cfg.sslCertificate != null) " -S ${cfg.sslCertificate}"
|
|
||||||
+ optionalString (cfg.listenAddress != null) " -a ${cfg.listenAddress}"
|
|
||||||
+ optionalString (cfg.cacheSize != null) " -c ${toString cfg.cacheSize}"
|
|
||||||
+ optionalString (cfg.compressTraffic) " -g"
|
|
||||||
+ optionalString (cfg.assumeReverseProxy) " -r"
|
|
||||||
+ optionalString (cfg.httpsOnly) " -s" + " start";
|
|
||||||
|
|
||||||
serviceConfig = {
|
|
||||||
PermissionsStartOnly = true;
|
|
||||||
Type = "forking";
|
|
||||||
User = "meguca";
|
|
||||||
Group = "meguca";
|
|
||||||
ExecStop = "${pkgs.meguca}/bin/meguca stop";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
users = {
|
|
||||||
groups.meguca.gid = config.ids.gids.meguca;
|
|
||||||
|
|
||||||
users.meguca = {
|
|
||||||
description = "meguca server service user";
|
|
||||||
home = cfg.dataDir;
|
|
||||||
createHome = true;
|
|
||||||
group = "meguca";
|
|
||||||
uid = config.ids.uids.meguca;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
imports = [
|
|
||||||
(mkRenamedOptionModule [ "services" "meguca" "baseDir" ] [ "services" "meguca" "dataDir" ])
|
|
||||||
];
|
|
||||||
|
|
||||||
meta.maintainers = with maintainers; [ chiiruno ];
|
|
||||||
}
|
|
@ -61,7 +61,8 @@ in
|
|||||||
"--kill"
|
"--kill"
|
||||||
] ++ cfg.extraOptions);
|
] ++ cfg.extraOptions);
|
||||||
ExecStop = "${pkgs.procps}/bin/pkill imwheel";
|
ExecStop = "${pkgs.procps}/bin/pkill imwheel";
|
||||||
Restart = "on-failure";
|
RestartSec = 3;
|
||||||
|
Restart = "always";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -82,12 +82,11 @@ in
|
|||||||
services.xserver.windowManager = {
|
services.xserver.windowManager = {
|
||||||
session = [{
|
session = [{
|
||||||
name = "xmonad";
|
name = "xmonad";
|
||||||
start = if (cfg.config != null) then ''
|
start = let
|
||||||
${xmonadBin}
|
xmonadCommand = if (cfg.config != null) then xmonadBin else "${xmonad}/bin/xmonad";
|
||||||
waitPID=$!
|
in ''
|
||||||
'' else ''
|
systemd-cat -t xmonad ${xmonadCommand} &
|
||||||
systemd-cat -t xmonad ${xmonad}/bin/xmonad &
|
waitPID=$!
|
||||||
waitPID=$!
|
|
||||||
'';
|
'';
|
||||||
}];
|
}];
|
||||||
};
|
};
|
||||||
|
@ -378,12 +378,14 @@ mountFS() {
|
|||||||
|
|
||||||
mkdir -p "/mnt-root$mountPoint"
|
mkdir -p "/mnt-root$mountPoint"
|
||||||
|
|
||||||
# For CIFS mounts, retry a few times before giving up.
|
# For ZFS and CIFS mounts, retry a few times before giving up.
|
||||||
|
# We do this for ZFS as a workaround for issue NixOS/nixpkgs#25383.
|
||||||
local n=0
|
local n=0
|
||||||
while true; do
|
while true; do
|
||||||
mount "/mnt-root$mountPoint" && break
|
mount "/mnt-root$mountPoint" && break
|
||||||
if [ "$fsType" != cifs -o "$n" -ge 10 ]; then fail; break; fi
|
if [ \( "$fsType" != cifs -a "$fsType" != zfs \) -o "$n" -ge 10 ]; then fail; break; fi
|
||||||
echo "retrying..."
|
echo "retrying..."
|
||||||
|
sleep 1
|
||||||
n=$((n + 1))
|
n=$((n + 1))
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@ -1,22 +1,13 @@
|
|||||||
# This module allows the test driver to connect to the virtual machine
|
# This module allows the test driver to connect to the virtual machine
|
||||||
# via a root shell attached to port 514.
|
# via a root shell attached to port 514.
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ options, config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
with import ../../lib/qemu-flags.nix { inherit pkgs; };
|
with import ../../lib/qemu-flags.nix { inherit pkgs; };
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
||||||
# This option is a dummy that if used in conjunction with
|
|
||||||
# modules/virtualisation/qemu-vm.nix gets merged with the same option defined
|
|
||||||
# there and only is declared here because some modules use
|
|
||||||
# test-instrumentation.nix but not qemu-vm.nix.
|
|
||||||
#
|
|
||||||
# One particular example are the boot tests where we want instrumentation
|
|
||||||
# within the images but not other stuff like setting up 9p filesystems.
|
|
||||||
options.virtualisation.qemu = { };
|
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
|
|
||||||
systemd.services.backdoor =
|
systemd.services.backdoor =
|
||||||
|
@ -85,7 +85,7 @@ in
|
|||||||
|
|
||||||
environment.etc."crictl.yaml".source = copyFile "${pkgs.cri-o-unwrapped.src}/crictl.yaml";
|
environment.etc."crictl.yaml".source = copyFile "${pkgs.cri-o-unwrapped.src}/crictl.yaml";
|
||||||
|
|
||||||
environment.etc."crio/crio.conf".text = ''
|
environment.etc."crio/crio.conf.d/00-default.conf".text = ''
|
||||||
[crio]
|
[crio]
|
||||||
storage_driver = "${cfg.storageDriver}"
|
storage_driver = "${cfg.storageDriver}"
|
||||||
|
|
||||||
@ -100,6 +100,7 @@ in
|
|||||||
cgroup_manager = "systemd"
|
cgroup_manager = "systemd"
|
||||||
log_level = "${cfg.logLevel}"
|
log_level = "${cfg.logLevel}"
|
||||||
manage_ns_lifecycle = true
|
manage_ns_lifecycle = true
|
||||||
|
pinns_path = "${cfg.package}/bin/pinns"
|
||||||
|
|
||||||
${optionalString (cfg.runtime != null) ''
|
${optionalString (cfg.runtime != null) ''
|
||||||
default_runtime = "${cfg.runtime}"
|
default_runtime = "${cfg.runtime}"
|
||||||
@ -109,6 +110,7 @@ in
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
environment.etc."cni/net.d/10-crio-bridge.conf".source = copyFile "${pkgs.cri-o-unwrapped.src}/contrib/cni/10-crio-bridge.conf";
|
environment.etc."cni/net.d/10-crio-bridge.conf".source = copyFile "${pkgs.cri-o-unwrapped.src}/contrib/cni/10-crio-bridge.conf";
|
||||||
|
environment.etc."cni/net.d/99-loopback.conf".source = copyFile "${pkgs.cri-o-unwrapped.src}/contrib/cni/99-loopback.conf";
|
||||||
|
|
||||||
# Enable common /etc/containers configuration
|
# Enable common /etc/containers configuration
|
||||||
virtualisation.containers.enable = true;
|
virtualisation.containers.enable = true;
|
||||||
|
@ -34,6 +34,7 @@ in
|
|||||||
bind = handleTest ./bind.nix {};
|
bind = handleTest ./bind.nix {};
|
||||||
bitcoind = handleTest ./bitcoind.nix {};
|
bitcoind = handleTest ./bitcoind.nix {};
|
||||||
bittorrent = handleTest ./bittorrent.nix {};
|
bittorrent = handleTest ./bittorrent.nix {};
|
||||||
|
bitwarden = handleTest ./bitwarden.nix {};
|
||||||
blockbook-frontend = handleTest ./blockbook-frontend.nix {};
|
blockbook-frontend = handleTest ./blockbook-frontend.nix {};
|
||||||
buildkite-agents = handleTest ./buildkite-agents.nix {};
|
buildkite-agents = handleTest ./buildkite-agents.nix {};
|
||||||
boot = handleTestOn ["x86_64-linux"] ./boot.nix {}; # syslinux is unsupported on aarch64
|
boot = handleTestOn ["x86_64-linux"] ./boot.nix {}; # syslinux is unsupported on aarch64
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import ./make-test-python.nix ({ pkgs, ... }: {
|
import ./make-test-python.nix ({ pkgs, ... }: {
|
||||||
name = "bitcoind";
|
name = "bitcoind";
|
||||||
meta = with pkgs.stdenv.lib; {
|
meta = with pkgs.stdenv.lib; {
|
||||||
maintainers = with maintainers; [ maintainers."1000101" ];
|
maintainers = with maintainers; [ _1000101 ];
|
||||||
};
|
};
|
||||||
|
|
||||||
machine = { ... }: {
|
machine = { ... }: {
|
||||||
|
188
nixos/tests/bitwarden.nix
Normal file
188
nixos/tests/bitwarden.nix
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
{ system ? builtins.currentSystem
|
||||||
|
, config ? { }
|
||||||
|
, pkgs ? import ../.. { inherit system config; }
|
||||||
|
}:
|
||||||
|
|
||||||
|
# These tests will:
|
||||||
|
# * Set up a bitwarden-rs server
|
||||||
|
# * Have Firefox use the web vault to create an account, log in, and save a password to the valut
|
||||||
|
# * Have the bw cli log in and read that password from the vault
|
||||||
|
#
|
||||||
|
# Note that Firefox must be on the same machine as the server for WebCrypto APIs to be available (or HTTPS must be configured)
|
||||||
|
#
|
||||||
|
# The same tests should work without modification on the official bitwarden server, if we ever package that.
|
||||||
|
|
||||||
|
with import ../lib/testing-python.nix { inherit system pkgs; };
|
||||||
|
with pkgs.lib;
|
||||||
|
let
|
||||||
|
backends = [ "sqlite" "mysql" "postgresql" ];
|
||||||
|
|
||||||
|
dbPassword = "please_dont_hack";
|
||||||
|
|
||||||
|
userEmail = "meow@example.com";
|
||||||
|
userPassword = "also_super_secret_ZJWpBKZi668QGt"; # Must be complex to avoid interstitial warning on the signup page
|
||||||
|
|
||||||
|
storedPassword = "seeeecret";
|
||||||
|
|
||||||
|
makeBitwardenTest = backend: makeTest {
|
||||||
|
name = "bitwarden_rs-${backend}";
|
||||||
|
meta = {
|
||||||
|
maintainers = with pkgs.stdenv.lib.maintainers; [ jjjollyjim ];
|
||||||
|
};
|
||||||
|
|
||||||
|
nodes = {
|
||||||
|
server = { pkgs, ... }:
|
||||||
|
let backendConfig = {
|
||||||
|
mysql = {
|
||||||
|
services.mysql = {
|
||||||
|
enable = true;
|
||||||
|
initialScript = pkgs.writeText "mysql-init.sql" ''
|
||||||
|
CREATE DATABASE bitwarden;
|
||||||
|
CREATE USER 'bitwardenuser'@'localhost' IDENTIFIED BY '${dbPassword}';
|
||||||
|
GRANT ALL ON `bitwarden`.* TO 'bitwardenuser'@'localhost';
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
'';
|
||||||
|
package = pkgs.mysql;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.bitwarden_rs.config.databaseUrl = "mysql://bitwardenuser:${dbPassword}@localhost/bitwarden";
|
||||||
|
|
||||||
|
systemd.services.bitwarden_rs.after = [ "mysql.service" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
postgresql = {
|
||||||
|
services.postgresql = {
|
||||||
|
enable = true;
|
||||||
|
initialScript = pkgs.writeText "postgresql-init.sql" ''
|
||||||
|
CREATE DATABASE bitwarden;
|
||||||
|
CREATE USER bitwardenuser WITH PASSWORD '${dbPassword}';
|
||||||
|
GRANT ALL PRIVILEGES ON DATABASE bitwarden TO bitwardenuser;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
services.bitwarden_rs.config.databaseUrl = "postgresql://bitwardenuser:${dbPassword}@localhost/bitwarden";
|
||||||
|
|
||||||
|
systemd.services.bitwarden_rs.after = [ "postgresql.service" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
sqlite = { };
|
||||||
|
};
|
||||||
|
in
|
||||||
|
mkMerge [
|
||||||
|
backendConfig.${backend}
|
||||||
|
{
|
||||||
|
services.bitwarden_rs = {
|
||||||
|
enable = true;
|
||||||
|
dbBackend = backend;
|
||||||
|
config.rocketPort = 80;
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [ 80 ];
|
||||||
|
|
||||||
|
environment.systemPackages =
|
||||||
|
let
|
||||||
|
testRunner = pkgs.writers.writePython3Bin "test-runner"
|
||||||
|
{
|
||||||
|
libraries = [ pkgs.python3Packages.selenium ];
|
||||||
|
} ''
|
||||||
|
from selenium.webdriver import Firefox
|
||||||
|
from selenium.webdriver.firefox.options import Options
|
||||||
|
from selenium.webdriver.support.ui import WebDriverWait
|
||||||
|
from selenium.webdriver.support import expected_conditions as EC
|
||||||
|
|
||||||
|
options = Options()
|
||||||
|
options.add_argument('--headless')
|
||||||
|
driver = Firefox(options=options)
|
||||||
|
|
||||||
|
driver.implicitly_wait(20)
|
||||||
|
driver.get('http://localhost/#/register')
|
||||||
|
|
||||||
|
wait = WebDriverWait(driver, 10)
|
||||||
|
|
||||||
|
wait.until(EC.title_contains("Create Account"))
|
||||||
|
|
||||||
|
driver.find_element_by_css_selector('input#email').send_keys(
|
||||||
|
'${userEmail}'
|
||||||
|
)
|
||||||
|
driver.find_element_by_css_selector('input#name').send_keys(
|
||||||
|
'A Cat'
|
||||||
|
)
|
||||||
|
driver.find_element_by_css_selector('input#masterPassword').send_keys(
|
||||||
|
'${userPassword}'
|
||||||
|
)
|
||||||
|
driver.find_element_by_css_selector('input#masterPasswordRetype').send_keys(
|
||||||
|
'${userPassword}'
|
||||||
|
)
|
||||||
|
|
||||||
|
driver.find_element_by_xpath("//button[contains(., 'Submit')]").click()
|
||||||
|
|
||||||
|
wait.until_not(EC.title_contains("Create Account"))
|
||||||
|
|
||||||
|
driver.find_element_by_css_selector('input#masterPassword').send_keys(
|
||||||
|
'${userPassword}'
|
||||||
|
)
|
||||||
|
driver.find_element_by_xpath("//button[contains(., 'Log In')]").click()
|
||||||
|
|
||||||
|
wait.until(EC.title_contains("My Vault"))
|
||||||
|
|
||||||
|
driver.find_element_by_xpath("//button[contains(., 'Add Item')]").click()
|
||||||
|
|
||||||
|
driver.find_element_by_css_selector('input#name').send_keys(
|
||||||
|
'secrets'
|
||||||
|
)
|
||||||
|
driver.find_element_by_css_selector('input#loginPassword').send_keys(
|
||||||
|
'${storedPassword}'
|
||||||
|
)
|
||||||
|
|
||||||
|
driver.find_element_by_xpath("//button[contains(., 'Save')]").click()
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
[ pkgs.firefox-unwrapped pkgs.geckodriver testRunner ];
|
||||||
|
|
||||||
|
virtualisation.memorySize = 768;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
client = { pkgs, ... }:
|
||||||
|
{
|
||||||
|
environment.systemPackages = [ pkgs.bitwarden-cli ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
start_all()
|
||||||
|
server.wait_for_unit("bitwarden_rs.service")
|
||||||
|
server.wait_for_open_port(80)
|
||||||
|
|
||||||
|
with subtest("configure the cli"):
|
||||||
|
client.succeed("bw --nointeraction config server http://server")
|
||||||
|
|
||||||
|
with subtest("can't login to nonexistant account"):
|
||||||
|
client.fail(
|
||||||
|
"bw --nointeraction --raw login ${userEmail} ${userPassword}"
|
||||||
|
)
|
||||||
|
|
||||||
|
with subtest("use the web interface to sign up, log in, and save a password"):
|
||||||
|
server.succeed("PYTHONUNBUFFERED=1 test-runner | systemd-cat -t test-runner")
|
||||||
|
|
||||||
|
with subtest("log in with the cli"):
|
||||||
|
key = client.succeed(
|
||||||
|
"bw --nointeraction --raw login ${userEmail} ${userPassword}"
|
||||||
|
).strip()
|
||||||
|
|
||||||
|
with subtest("sync with the cli"):
|
||||||
|
client.succeed(f"bw --nointeraction --raw --session {key} sync -f")
|
||||||
|
|
||||||
|
with subtest("get the password with the cli"):
|
||||||
|
password = client.succeed(
|
||||||
|
f"bw --nointeraction --raw --session {key} list items | ${pkgs.jq}/bin/jq -r .[].login.password"
|
||||||
|
)
|
||||||
|
assert password.strip() == "${storedPassword}"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in
|
||||||
|
builtins.listToAttrs (
|
||||||
|
map
|
||||||
|
(backend: { name = backend; value = makeBitwardenTest backend; })
|
||||||
|
backends
|
||||||
|
)
|
@ -1,7 +1,7 @@
|
|||||||
import ./make-test-python.nix ({ pkgs, ... }: {
|
import ./make-test-python.nix ({ pkgs, ... }: {
|
||||||
name = "blockbook-frontend";
|
name = "blockbook-frontend";
|
||||||
meta = with pkgs.stdenv.lib; {
|
meta = with pkgs.stdenv.lib; {
|
||||||
maintainers = with maintainers; [ maintainers."1000101" ];
|
maintainers = with maintainers; [ _1000101 ];
|
||||||
};
|
};
|
||||||
|
|
||||||
machine = { ... }: {
|
machine = { ... }: {
|
||||||
|
@ -33,7 +33,7 @@ let
|
|||||||
in {
|
in {
|
||||||
name = "dokuwiki";
|
name = "dokuwiki";
|
||||||
meta = with pkgs.stdenv.lib; {
|
meta = with pkgs.stdenv.lib; {
|
||||||
maintainers = with maintainers; [ maintainers."1000101" ];
|
maintainers = with maintainers; [ _1000101 ];
|
||||||
};
|
};
|
||||||
machine = { ... }: {
|
machine = { ... }: {
|
||||||
services.dokuwiki."site1.local" = {
|
services.dokuwiki."site1.local" = {
|
||||||
|
@ -158,7 +158,10 @@ in import ./make-test-python.nix {
|
|||||||
|
|
||||||
s3 = { pkgs, ... } : {
|
s3 = { pkgs, ... } : {
|
||||||
# Minio requires at least 1GiB of free disk space to run.
|
# Minio requires at least 1GiB of free disk space to run.
|
||||||
virtualisation.diskSize = 2 * 1024;
|
virtualisation = {
|
||||||
|
diskSize = 2 * 1024;
|
||||||
|
memorySize = 1024;
|
||||||
|
};
|
||||||
networking.firewall.allowedTCPPorts = [ minioPort ];
|
networking.firewall.allowedTCPPorts = [ minioPort ];
|
||||||
|
|
||||||
services.minio = {
|
services.minio = {
|
||||||
@ -235,7 +238,7 @@ in import ./make-test-python.nix {
|
|||||||
# Test if the Thanos bucket command is able to retrieve blocks from the S3 bucket
|
# Test if the Thanos bucket command is able to retrieve blocks from the S3 bucket
|
||||||
# and check if the blocks have the correct labels:
|
# and check if the blocks have the correct labels:
|
||||||
store.succeed(
|
store.succeed(
|
||||||
"thanos bucket ls "
|
"thanos tools bucket ls "
|
||||||
+ "--objstore.config-file=${nodes.store.config.services.thanos.store.objstore.config-file} "
|
+ "--objstore.config-file=${nodes.store.config.services.thanos.store.objstore.config-file} "
|
||||||
+ "--output=json | "
|
+ "--output=json | "
|
||||||
+ "jq .thanos.labels.some_label | "
|
+ "jq .thanos.labels.some_label | "
|
||||||
|
@ -9,6 +9,8 @@ import ./make-test-python.nix ({ pkgs, ...} : {
|
|||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [ 9091 ];
|
networking.firewall.allowedTCPPorts = [ 9091 ];
|
||||||
|
|
||||||
|
security.apparmor.enable = true;
|
||||||
|
|
||||||
services.transmission.enable = true;
|
services.transmission.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import ./make-test-python.nix ({ pkgs, ... }: {
|
import ./make-test-python.nix ({ pkgs, ... }: {
|
||||||
name = "trezord";
|
name = "trezord";
|
||||||
meta = with pkgs.stdenv.lib; {
|
meta = with pkgs.stdenv.lib; {
|
||||||
maintainers = with maintainers; [ mmahut maintainers."1000101" ];
|
maintainers = with maintainers; [ mmahut _1000101 ];
|
||||||
};
|
};
|
||||||
nodes = {
|
nodes = {
|
||||||
machine = { ... }: {
|
machine = { ... }: {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import ./make-test-python.nix ({ pkgs, ... }: {
|
import ./make-test-python.nix ({ pkgs, ... }: {
|
||||||
name = "trickster";
|
name = "trickster";
|
||||||
meta = with pkgs.stdenv.lib; {
|
meta = with pkgs.stdenv.lib; {
|
||||||
maintainers = with maintainers; [ maintainers."1000101" ];
|
maintainers = with maintainers; [ _1000101 ];
|
||||||
};
|
};
|
||||||
|
|
||||||
nodes = {
|
nodes = {
|
||||||
|
@ -4,7 +4,7 @@ import ./make-test-python.nix (
|
|||||||
{
|
{
|
||||||
name = "xandikos";
|
name = "xandikos";
|
||||||
|
|
||||||
meta.maintainers = [ lib.maintainers."0x4A6F" ];
|
meta.maintainers = with lib.maintainers; [ _0x4A6F ];
|
||||||
|
|
||||||
nodes = {
|
nodes = {
|
||||||
xandikos_client = {};
|
xandikos_client = {};
|
||||||
|
26
pkgs/applications/audio/ashuffle/default.nix
Normal file
26
pkgs/applications/audio/ashuffle/default.nix
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
{ stdenv, fetchFromGitHub, cmake, pkg-config, mpd_clientlib, meson, ninja }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "ashuffle";
|
||||||
|
version = "3.4.0";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "joshkunz";
|
||||||
|
repo = "ashuffle";
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "09q6lwgc1dc8bg1mb9js9qz3xcsxph3548nxzvyb4v8111gixrp7";
|
||||||
|
fetchSubmodules = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
dontUseCmakeConfigure = true;
|
||||||
|
nativeBuildInputs = [ cmake pkg-config meson ninja ];
|
||||||
|
buildInputs = [ mpd_clientlib ];
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = "https://github.com/joshkunz/ashuffle";
|
||||||
|
description = "Automatic library-wide shuffle for mpd";
|
||||||
|
maintainers = [ maintainers.tcbravo ];
|
||||||
|
platforms = platforms.unix;
|
||||||
|
license = licenses.mit;
|
||||||
|
};
|
||||||
|
}
|
28
pkgs/applications/audio/bchoppr/default.nix
Normal file
28
pkgs/applications/audio/bchoppr/default.nix
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
{ stdenv, fetchFromGitHub, pkg-config, cairo, libX11, lv2 }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "bchoppr";
|
||||||
|
version = "1.6.4";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "sjaehn";
|
||||||
|
repo = pname;
|
||||||
|
rev = "${version}";
|
||||||
|
sha256 = "16b0sg7q2b8l4y4bp5s3yzsj9j6jayjy2mlvqkby6l7hcgjcj493";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ pkg-config ];
|
||||||
|
buildInputs = [ cairo libX11 lv2 ];
|
||||||
|
|
||||||
|
installFlags = [ "PREFIX=$(out)" ];
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = https://github.com/sjaehn/BChoppr;
|
||||||
|
description = "An audio stream chopping LV2 plugin";
|
||||||
|
maintainers = [ maintainers.magnetophon ];
|
||||||
|
platforms = platforms.linux;
|
||||||
|
license = licenses.gpl3Plus;
|
||||||
|
};
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
{ stdenv, fetchurl, ffmpeg_3, sox }:
|
{ stdenv, fetchurl, ffmpeg, sox }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "bs1770gain";
|
pname = "bs1770gain";
|
||||||
@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
|
|||||||
sha256 = "1p6yz5q7czyf9ard65sp4kawdlkg40cfscr3b24znymmhs3p7rbk";
|
sha256 = "1p6yz5q7czyf9ard65sp4kawdlkg40cfscr3b24znymmhs3p7rbk";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ ffmpeg_3 sox ];
|
buildInputs = [ ffmpeg sox ];
|
||||||
|
|
||||||
NIX_CFLAGS_COMPILE = "-Wno-error";
|
NIX_CFLAGS_COMPILE = "-Wno-error";
|
||||||
|
|
||||||
|
28
pkgs/applications/audio/bschaffl/default.nix
Normal file
28
pkgs/applications/audio/bschaffl/default.nix
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
{ stdenv, fetchFromGitHub, pkg-config, cairo, libX11, lv2 }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "bschaffl";
|
||||||
|
version = "0.3";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "sjaehn";
|
||||||
|
repo = pname;
|
||||||
|
rev = version;
|
||||||
|
sha256 = "1pcch7j1wgsb77mjy58hl3z43p83dv0vcmyh129m9k216b09gy29";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ pkg-config ];
|
||||||
|
buildInputs = [ cairo libX11 lv2 ];
|
||||||
|
|
||||||
|
installFlags = [ "PREFIX=$(out)" ];
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = "https://github.com/sjaehn/BSchaffl";
|
||||||
|
description = "Pattern-controlled MIDI amp & time stretch LV2 plugin";
|
||||||
|
maintainers = [ maintainers.magnetophon ];
|
||||||
|
platforms = platforms.linux;
|
||||||
|
license = licenses.gpl3;
|
||||||
|
};
|
||||||
|
}
|
@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "BSlizr";
|
pname = "BSlizr";
|
||||||
version = "1.2.6";
|
version = "1.2.8";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "sjaehn";
|
owner = "sjaehn";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "${version}";
|
rev = "${version}";
|
||||||
sha256 = "1l0znwvvqd2s24c652q54pkizlh86mvmr8h0qqp9xma0i575fcrh";
|
sha256 = "1f7xrljvsy7a1p8c7wln2zhwarl3ara7gbjxkpyh47wfdpigpdb0";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig ];
|
nativeBuildInputs = [ pkgconfig ];
|
||||||
|
@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
|
|||||||
# When updating, please check if https://github.com/csound/csound/issues/1078
|
# When updating, please check if https://github.com/csound/csound/issues/1078
|
||||||
# has been fixed in the new version so we can use the normal fluidsynth
|
# has been fixed in the new version so we can use the normal fluidsynth
|
||||||
# version and remove fluidsynth 1.x from nixpkgs again.
|
# version and remove fluidsynth 1.x from nixpkgs again.
|
||||||
version = "6.13.0";
|
version = "6.14.0";
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
|
|||||||
owner = "csound";
|
owner = "csound";
|
||||||
repo = "csound";
|
repo = "csound";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "14822ybqyp31z18gky2y9zadr9dkbhabg97y139py73w7v3af1bh";
|
sha256 = "1sr9knfhbm2m0wpkjq2l5n471vnl51wy4p6j4m95zqybimzb4s2j";
|
||||||
};
|
};
|
||||||
|
|
||||||
cmakeFlags = [ "-DBUILD_CSOUND_AC=0" ] # fails to find Score.hpp
|
cmakeFlags = [ "-DBUILD_CSOUND_AC=0" ] # fails to find Score.hpp
|
||||||
|
30
pkgs/applications/audio/freqtweak/default.nix
Normal file
30
pkgs/applications/audio/freqtweak/default.nix
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
{ stdenv, fetchFromGitHub, autoconf, automake, pkg-config, fftwFloat, libjack2, libsigcxx, libxml2, wxGTK }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "freqtweak";
|
||||||
|
version = "unstable-2019-08-03";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "essej";
|
||||||
|
repo = pname;
|
||||||
|
rev = "d4205337558d36657a4ee6b3afb29358aa18c0fd";
|
||||||
|
sha256 = "10cq27mdgrrc54a40al9ahi0wqd0p2c1wxbdg518q8pzfxaxs5fi";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ autoconf automake pkg-config ];
|
||||||
|
buildInputs = [ fftwFloat libjack2 libsigcxx libxml2 wxGTK ];
|
||||||
|
|
||||||
|
preConfigure = ''
|
||||||
|
sh autogen.sh
|
||||||
|
'';
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = http://essej.net/freqtweak/;
|
||||||
|
description = "Realtime audio frequency spectral manipulation";
|
||||||
|
maintainers = [ maintainers.magnetophon ];
|
||||||
|
platforms = platforms.linux;
|
||||||
|
license = licenses.gpl2Plus;
|
||||||
|
};
|
||||||
|
}
|
@ -7,13 +7,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "ft2-clone";
|
pname = "ft2-clone";
|
||||||
version = "1.26";
|
version = "1.28";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "8bitbubsy";
|
owner = "8bitbubsy";
|
||||||
repo = "ft2-clone";
|
repo = "ft2-clone";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0fqb4415qy2nwjz7ahi43nk795ifswb2b37sc7p5n9m4yc8h53wv";
|
sha256 = "1hbcl89cpx9bsafxrjyfx6vrbs4h3lnzmqm12smcvdg8ksfgzj0d";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake ];
|
nativeBuildInputs = [ cmake ];
|
||||||
|
27
pkgs/applications/audio/geonkick/default.nix
Normal file
27
pkgs/applications/audio/geonkick/default.nix
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
{ stdenv, fetchFromGitLab, cmake, pkg-config, redkite, libsndfile, rapidjson, libjack2, lv2, libX11, cairo }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "geonkick";
|
||||||
|
version = "2.3.3";
|
||||||
|
|
||||||
|
src = fetchFromGitLab {
|
||||||
|
owner = "iurie-sw";
|
||||||
|
repo = pname;
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "0h1abb6q2bmi01a3v37adkc4zc03j47jpvffz8p2lpp33xhljghs";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ cmake pkg-config ];
|
||||||
|
|
||||||
|
buildInputs = [ redkite libsndfile rapidjson libjack2 lv2 libX11 cairo ];
|
||||||
|
|
||||||
|
cmakeFlags = [ "-DGKICK_REDKITE_SDK_PATH=${redkite}" ];
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
homepage = "https://gitlab.com/iurie-sw/geonkick";
|
||||||
|
description = "A free software percussion synthesizer";
|
||||||
|
license = stdenv.lib.licenses.gpl3Plus;
|
||||||
|
platforms = stdenv.lib.platforms.linux;
|
||||||
|
maintainers = [ stdenv.lib.maintainers.magnetophon ];
|
||||||
|
};
|
||||||
|
}
|
@ -20,13 +20,13 @@
|
|||||||
|
|
||||||
python3.pkgs.buildPythonApplication rec {
|
python3.pkgs.buildPythonApplication rec {
|
||||||
pname = "gSpeech";
|
pname = "gSpeech";
|
||||||
version = "0.9.2";
|
version = "0.10.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "mothsart";
|
owner = "mothsart";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "11pvdpb9jjssp8nmlj21gs7ncgfm89kw26mfc8c2x8w2q4h92ja3";
|
sha256 = "1i0jwgxcn94nsi7c0ad0w77y04g04ka2szijzfqzqfnacdmdyrfc";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
@ -56,8 +56,8 @@ python3.pkgs.buildPythonApplication rec {
|
|||||||
];
|
];
|
||||||
|
|
||||||
postFixup = ''
|
postFixup = ''
|
||||||
wrapProgram $out/bin/gspeech --prefix PATH : ${lib.makeBinPath [ picotts ]}
|
wrapProgram $out/bin/gspeech --prefix PATH : ${lib.makeBinPath [ picotts sox ]}
|
||||||
wrapProgram $out/bin/gspeech-cli --prefix PATH : ${lib.makeBinPath [ picotts ]}
|
wrapProgram $out/bin/gspeech-cli --prefix PATH : ${lib.makeBinPath [ picotts sox ]}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
strictDeps = false;
|
strictDeps = false;
|
||||||
|
47
pkgs/applications/audio/gwc/default.nix
Normal file
47
pkgs/applications/audio/gwc/default.nix
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
{ stdenv
|
||||||
|
, fetchFromGitHub
|
||||||
|
, autoreconfHook
|
||||||
|
, pkg-config
|
||||||
|
, alsaLib
|
||||||
|
, libpulseaudio
|
||||||
|
, gtk2
|
||||||
|
, hicolor-icon-theme
|
||||||
|
, libsndfile
|
||||||
|
, fftw
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "gwc";
|
||||||
|
version = "0.22-04";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "AlisterH";
|
||||||
|
repo = pname;
|
||||||
|
rev = version;
|
||||||
|
sha256 = "0xvfra32dchnnyf9kj5s5xmqhln8jdrc9f0040hjr2dsb58y206p";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
autoreconfHook
|
||||||
|
pkg-config
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
alsaLib
|
||||||
|
libpulseaudio
|
||||||
|
gtk2
|
||||||
|
hicolor-icon-theme
|
||||||
|
libsndfile
|
||||||
|
fftw
|
||||||
|
];
|
||||||
|
|
||||||
|
enableParallelBuilding = false; # Fails to generate machine.h in time.
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "GUI application for removing noise (hiss, pops and clicks) from audio files";
|
||||||
|
homepage = "https://github.com/AlisterH/gwc/";
|
||||||
|
license = licenses.gpl2Plus;
|
||||||
|
maintainers = with maintainers; [ magnetophon ];
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
43
pkgs/applications/audio/kapitonov-plugins-pack/default.nix
Normal file
43
pkgs/applications/audio/kapitonov-plugins-pack/default.nix
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
{ stdenv, fetchFromGitHub, faust, meson, ninja, pkg-config
|
||||||
|
, boost, cairo, fftw, gnome3, ladspa-sdk, libxcb, lv2, xcbutilwm
|
||||||
|
, zita-convolver, zita-resampler
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "kapitonov-plugins-pack";
|
||||||
|
version = "1.2.1";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "olegkapitonov";
|
||||||
|
repo = pname;
|
||||||
|
rev = version;
|
||||||
|
sha256 = "1mxi7b1vrzg25x85lqk8c77iziqrqyz18mqkfjlz09sxp5wfs9w4";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
faust
|
||||||
|
meson
|
||||||
|
ninja
|
||||||
|
pkg-config
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
boost
|
||||||
|
cairo
|
||||||
|
fftw
|
||||||
|
ladspa-sdk
|
||||||
|
libxcb
|
||||||
|
lv2
|
||||||
|
xcbutilwm
|
||||||
|
zita-convolver
|
||||||
|
zita-resampler
|
||||||
|
];
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "Set of LADSPA and LV2 plugins for guitar sound processing";
|
||||||
|
homepage = https://github.com/olegkapitonov/Kapitonov-Plugins-Pack;
|
||||||
|
license = licenses.gpl3;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
maintainers = with maintainers; [ magnetophon ];
|
||||||
|
};
|
||||||
|
}
|
28
pkgs/applications/audio/lv2-cpp-tools/default.nix
Normal file
28
pkgs/applications/audio/lv2-cpp-tools/default.nix
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
{ stdenv, fetchzip, pkgconfig, lv2, gtkmm2, boost }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "lv2-cpp-tools";
|
||||||
|
version = "1.0.5";
|
||||||
|
|
||||||
|
src = fetchzip {
|
||||||
|
url = "http://deb.debian.org/debian/pool/main/l/lv2-c++-tools/lv2-c++-tools_${version}.orig.tar.bz2";
|
||||||
|
sha256 = "039bq7d7s2bhfcnlsfq0mqxr9a9iqwg5bwcpxfi24c6yl6krydsi";
|
||||||
|
};
|
||||||
|
|
||||||
|
preConfigure = ''
|
||||||
|
sed -r 's,/bin/bash,${stdenv.shell},g' -i ./configure
|
||||||
|
sed -r 's,/sbin/ldconfig,ldconfig,g' -i ./Makefile.template
|
||||||
|
'';
|
||||||
|
|
||||||
|
nativeBuildInputs = [ pkgconfig ];
|
||||||
|
|
||||||
|
buildInputs = [ lv2 gtkmm2 boost ];
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = "http://ll-plugins.nongnu.org/hacking.html";
|
||||||
|
description = "Tools and libraries that may come in handy when writing LV2 plugins in C++";
|
||||||
|
license = licenses.gpl3;
|
||||||
|
maintainers = [ maintainers.michalrus ];
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
37
pkgs/applications/audio/molot-lite/default.nix
Normal file
37
pkgs/applications/audio/molot-lite/default.nix
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
{ stdenv, fetchurl, unzip, lv2 }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
pname = "molot-lite";
|
||||||
|
version = "unstable-2014-04-23";
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
# fetchzip does not accept urls that do not end with .zip.
|
||||||
|
url = "https://sourceforge.net/p/molot/code/ci/c4eddc426f8d5821e8ebcf1d67265365e4c8c52a/tree/molot_src.zip?format=raw";
|
||||||
|
sha256 = "1c47dwfgrmn9459px8s5zikcqyr0777v226qzcxlr6azlcjwr51b";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ unzip ];
|
||||||
|
buildInputs = [ lv2 ];
|
||||||
|
|
||||||
|
unpackPhase = ''
|
||||||
|
unzip $src
|
||||||
|
'';
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
make -C Molot_Mono_Lite
|
||||||
|
make -C Molot_Stereo_Lite
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
make install INSTALL_DIR=$out/lib/lv2 -C Molot_Mono_Lite
|
||||||
|
make install INSTALL_DIR=$out/lib/lv2 -C Molot_Stereo_Lite
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "Stereo and mono audio signal dynamic range compressor in LV2 format";
|
||||||
|
homepage = "https://sourceforge.net/projects/molot/";
|
||||||
|
license = licenses.gpl3Plus;
|
||||||
|
maintainers = [ maintainers.magnetophon ];
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "parlatype";
|
pname = "parlatype";
|
||||||
version = "2.0";
|
version = "2.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "gkarsay";
|
owner = "gkarsay";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "026i19vkdq35rldbjp1wglamr22a1330iv736mmgbd8fs7vz22nx";
|
sha256 = "1k53q0kbwpnbgyr0lmfzf5sm4f93d8nbjrzdz9pdhzpxgihndg25";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
@ -30,14 +30,12 @@
|
|||||||
, zita-convolver
|
, zita-convolver
|
||||||
, zam-plugins
|
, zam-plugins
|
||||||
, rubberband
|
, rubberband
|
||||||
, mda_lv2
|
|
||||||
, lsp-plugins
|
, lsp-plugins
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
lv2Plugins = [
|
lv2Plugins = [
|
||||||
calf # limiter, compressor exciter, bass enhancer and others
|
calf # limiter, compressor exciter, bass enhancer and others
|
||||||
mda_lv2 # loudness
|
|
||||||
lsp-plugins # delay
|
lsp-plugins # delay
|
||||||
];
|
];
|
||||||
ladspaPlugins = [
|
ladspaPlugins = [
|
||||||
@ -46,13 +44,13 @@ let
|
|||||||
];
|
];
|
||||||
in stdenv.mkDerivation rec {
|
in stdenv.mkDerivation rec {
|
||||||
pname = "pulseeffects";
|
pname = "pulseeffects";
|
||||||
version = "4.7.3";
|
version = "4.8.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "wwmm";
|
owner = "wwmm";
|
||||||
repo = "pulseeffects";
|
repo = "pulseeffects";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "1xsw3v9vapd8q1dxacdgy2wk0xf3adqwbmcqiimdkd34llbdv88f";
|
sha256 = "9dQNYWBx8iAifRTZr2FRlYv4keZt5Cfahwi/w01duFg=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "qtractor";
|
pname = "qtractor";
|
||||||
version = "0.9.14";
|
version = "0.9.15";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz";
|
url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz";
|
||||||
sha256 = "1gh268gdpj7nw19xfh7k2l3aban4yrs1lmx33qswrnngs2izj1fk";
|
sha256 = "0k7a6llwrzs07flr9mvzvay9ygc2x64syg8npyabsw5a4d85fwsx";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
@ -6,11 +6,11 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "reaper";
|
pname = "reaper";
|
||||||
version = "6.10";
|
version = "6.12c";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://www.reaper.fm/files/${stdenv.lib.versions.major version}.x/reaper${builtins.replaceStrings ["."] [""] version}_linux_x86_64.tar.xz";
|
url = "https://www.reaper.fm/files/${stdenv.lib.versions.major version}.x/reaper${builtins.replaceStrings ["."] [""] version}_linux_x86_64.tar.xz";
|
||||||
sha256 = "1p54phmsa6xbqxb5cpgwnz7ny4famb8zi25y3cmxwgr4pfy94b2p";
|
sha256 = "1xnd4qvgwsz1dmgb656i611776dqcb84m1gh30i8jhpwcr9ym46w";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ autoPatchelfHook makeWrapper ];
|
nativeBuildInputs = [ autoPatchelfHook makeWrapper ];
|
||||||
|
@ -4,11 +4,11 @@
|
|||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "snd-20.2";
|
name = "snd-20.3";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://sourceforge/snd/${name}.tar.gz";
|
url = "mirror://sourceforge/snd/${name}.tar.gz";
|
||||||
sha256 = "0ip4sfyxqlbghlggipmvvqjqs1a7qas0zcmzw8d1nwg6krjkfj0r";
|
sha256 = "016slh34gb6qqb38m8k9yg48rbhc5p12084szcwvanhh5v7fc7mk";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig ];
|
nativeBuildInputs = [ pkgconfig ];
|
||||||
|
@ -35,13 +35,13 @@
|
|||||||
|
|
||||||
mkDerivation rec {
|
mkDerivation rec {
|
||||||
pname = "strawberry";
|
pname = "strawberry";
|
||||||
version = "0.6.13";
|
version = "0.7.2";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "jonaski";
|
owner = "jonaski";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "1v0334aivqyqx611cmhgshknzmrgyynbmxcg70qzrs2lyybw2fc1";
|
sha256 = "sha256-YUR9SDiRV/gJKx4H1cgdDnKGulTQPVP7MpHyihUEgqg=";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
|
36
pkgs/applications/audio/talentedhack/default.nix
Normal file
36
pkgs/applications/audio/talentedhack/default.nix
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
{ stdenv, fetchFromGitHub, lv2, fftwFloat, pkgconfig }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "talentedhack";
|
||||||
|
version = "1.86";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "jeremysalwen";
|
||||||
|
repo = "talentedhack";
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "0kwvayalysmk7y49jq0k16al252md8d45z58hphzsksmyz6148bx";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ pkgconfig ];
|
||||||
|
|
||||||
|
buildInputs = [ lv2 fftwFloat ];
|
||||||
|
|
||||||
|
# To avoid name clashes, plugins should be compiled with symbols hidden, except for `lv2_descriptor`:
|
||||||
|
preConfigure = ''
|
||||||
|
sed -r 's/^CFLAGS.*$/\0 -fvisibility=hidden/' -i Makefile
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
d=$out/lib/lv2/talentedhack.lv2
|
||||||
|
mkdir -p $d
|
||||||
|
cp *.so *.ttl $d
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = "https://github.com/jeremysalwen/TalentedHack";
|
||||||
|
description = "LV2 port of Autotalent pitch correction plugin";
|
||||||
|
license = licenses.gpl3;
|
||||||
|
maintainers = [ maintainers.michalrus ];
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
53
pkgs/applications/audio/tamgamp.lv2/default.nix
Normal file
53
pkgs/applications/audio/tamgamp.lv2/default.nix
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
{ stdenv, fetchFromGitHub, pkg-config, lv2, zita-resampler }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "tamgamp.lv2";
|
||||||
|
version = "unstable-2020-06-14";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "sadko4u";
|
||||||
|
repo = pname;
|
||||||
|
rev = "426da74142fcb6b7687a35b2b1dda3392e171b92";
|
||||||
|
sha256 = "0dqsnim7v79rx13bkkh143gqz0xg26cpf6ya3mrwwprpf5hns2bp";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ pkg-config ];
|
||||||
|
|
||||||
|
buildInputs = [ lv2 zita-resampler ];
|
||||||
|
|
||||||
|
makeFlags = [ "PREFIX=$(out)" ];
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = "https://github.com/sadko4u/tamgamp.lv2";
|
||||||
|
description = "Guitar amplifier simulator";
|
||||||
|
longDescription = ''
|
||||||
|
Tamgamp (Pronouncement: "Damage Amp") is an LV2 guitar amp simulator that provides two plugins:
|
||||||
|
|
||||||
|
- Tamgamp - a plugin based on Guitarix DK Builder simulated chains.
|
||||||
|
- TamgampGX - a plugin based on tuned Guitarix internal amplifiers implementation.
|
||||||
|
|
||||||
|
The reference to the original Guitarix project: https://guitarix.org/
|
||||||
|
|
||||||
|
It simulates the set of the following guitar amplifiers:
|
||||||
|
|
||||||
|
- Fender Princeton Reverb-amp AA1164 (without reverb module)
|
||||||
|
- Fender Twin Reverb-Amp AA769 (Normal channel, bright off)
|
||||||
|
- Fender Twin Reverb-Amp AA769 (Vibrato channel, bright on)
|
||||||
|
- Marshall JCM-800 High-gain input
|
||||||
|
- Marshall JCM-800 Low-gain input
|
||||||
|
- Mesa/Boogie DC3 preamplifier (lead channel)
|
||||||
|
- Mesa/Boogie DC3 preamplifier (rhythm channel)
|
||||||
|
- Mesa Dual Rectifier preamplifier (orange channel, less gain)
|
||||||
|
- Mesa Dual Rectifier preamplifier (red channel, more gain)
|
||||||
|
- Peavey 5150II crunch channel
|
||||||
|
- Peavey 5150II lead channel
|
||||||
|
- VOX AC-30 Brilliant channel
|
||||||
|
- VOX AC-30 normal channel
|
||||||
|
'';
|
||||||
|
maintainers = [ maintainers.magnetophon ];
|
||||||
|
platforms = platforms.linux;
|
||||||
|
license = licenses.lgpl3Plus;
|
||||||
|
};
|
||||||
|
}
|
67
pkgs/applications/audio/uhhyou.lv2/default.nix
Normal file
67
pkgs/applications/audio/uhhyou.lv2/default.nix
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
{ stdenv
|
||||||
|
, fetchFromGitHub
|
||||||
|
, pkg-config
|
||||||
|
, python3
|
||||||
|
, fftw
|
||||||
|
, libGL
|
||||||
|
, libX11
|
||||||
|
, libjack2
|
||||||
|
, liblo
|
||||||
|
, lv2
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
# this is what upstream calls the package, see:
|
||||||
|
# https://github.com/ryukau/LV2Plugins#uhhyou-plugins-lv2
|
||||||
|
pname = "uhhyou.lv2";
|
||||||
|
version = "unstable-2020-07-31";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "ryukau";
|
||||||
|
repo = "LV2Plugins";
|
||||||
|
rev = "6189be67acaeb95452f8adab73a731d94a7b6f47";
|
||||||
|
fetchSubmodules = true;
|
||||||
|
sha256 = "049gigx2s89z8vf17gscs00c150lmcdwya311nbrwa18fz4bx242";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ pkg-config python3 ];
|
||||||
|
|
||||||
|
buildInputs = [ fftw libGL libX11 libjack2 liblo lv2 ];
|
||||||
|
|
||||||
|
makeFlags = [ "PREFIX=$(out)" ];
|
||||||
|
|
||||||
|
prePatch = ''
|
||||||
|
patchShebangs generate-ttl.sh
|
||||||
|
cp patch/NanoVG.cpp lib/DPF/dgl/src/NanoVG.cpp
|
||||||
|
'';
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "Audio plugins for Linux";
|
||||||
|
longDescription = ''
|
||||||
|
Plugin List:
|
||||||
|
- CubicPadSynth
|
||||||
|
- EnvelopedSine
|
||||||
|
- EsPhaser
|
||||||
|
- FDNCymbal
|
||||||
|
- FoldShaper
|
||||||
|
- IterativeSinCluster
|
||||||
|
- L3Reverb
|
||||||
|
- L4Reverb
|
||||||
|
- LatticeReverb
|
||||||
|
- LightPadSynth
|
||||||
|
- ModuloShaper
|
||||||
|
- OddPowShaper
|
||||||
|
- SevenDelay
|
||||||
|
- SoftClipper
|
||||||
|
- SyncSawSynth
|
||||||
|
- TrapezoidSynth
|
||||||
|
- WaveCymbal
|
||||||
|
'';
|
||||||
|
homepage = "https://github.com/ryukau/LV2Plugins/";
|
||||||
|
license = licenses.gpl3Plus;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
maintainers = [ maintainers.magnetophon ];
|
||||||
|
};
|
||||||
|
}
|
89
pkgs/applications/audio/virtual-ans/default.nix
Normal file
89
pkgs/applications/audio/virtual-ans/default.nix
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
{ stdenv
|
||||||
|
, fetchzip
|
||||||
|
, libX11
|
||||||
|
, libXi
|
||||||
|
, libGL
|
||||||
|
, alsaLib
|
||||||
|
, SDL2
|
||||||
|
, autoPatchelfHook
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "virtual-ans";
|
||||||
|
version = "3.0.2c";
|
||||||
|
|
||||||
|
src = fetchzip {
|
||||||
|
url = "https://warmplace.ru/soft/ans/virtual_ans-${version}.zip";
|
||||||
|
sha256 = "03r1v3l7rd59dakr7ndvgsqchv00ppkvi6sslgf1ng07r3rsvb1n";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
autoPatchelfHook
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
stdenv.cc.cc.lib
|
||||||
|
libX11
|
||||||
|
libXi
|
||||||
|
libGL
|
||||||
|
alsaLib
|
||||||
|
SDL2
|
||||||
|
];
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
cp -R ./* $out/
|
||||||
|
|
||||||
|
# Remove all executables except for current architecture
|
||||||
|
ls -1d $out/START* | grep -v ${startScript} | xargs rm -rf
|
||||||
|
ls -1d $out/bin/pixilang_linux* | grep -v ${linuxExecutable} | xargs rm -rf
|
||||||
|
|
||||||
|
# Start script performs relative search for resources, so it cannot be moved
|
||||||
|
# to bin directory
|
||||||
|
ln -s $out/${startScript} $out/bin/virtual-ans
|
||||||
|
'';
|
||||||
|
|
||||||
|
startScript = if stdenv.isx86_32 then "START_LINUX_X86"
|
||||||
|
else if stdenv.isx86_64 then "START_LINUX_X86_64"
|
||||||
|
#else if stdenv.isDarwin then "START_MACOS.app" # disabled because I cannot test on Darwin
|
||||||
|
else abort "Unsupported platform: ${stdenv.platform.kernelArch}.";
|
||||||
|
|
||||||
|
linuxExecutable = if stdenv.isx86_32 then "pixilang_linux_x86"
|
||||||
|
else if stdenv.isx86_64 then "pixilang_linux_x86_64"
|
||||||
|
else "";
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "Photoelectronic microtonal/spectral musical instrument";
|
||||||
|
longDescription = ''
|
||||||
|
Virtual ANS is a software simulator of the unique Russian synthesizer ANS
|
||||||
|
- photoelectronic musical instrument created by Evgeny Murzin from 1938 to
|
||||||
|
1958. The ANS made it possible to draw music in the form of a spectrogram
|
||||||
|
(sonogram), without live instruments and performers. It was used by
|
||||||
|
Stanislav Kreichi, Alfred Schnittke, Edward Artemiev and other Soviet
|
||||||
|
composers in their experimental works. You can also hear the sound of the
|
||||||
|
ANS in Andrei Tarkovsky's movies Solaris, The Mirror, Stalker.
|
||||||
|
|
||||||
|
The simulator extends the capabilities of the original instrument. Now
|
||||||
|
it's a full-featured graphics editor where you can convert sound into an
|
||||||
|
image, load and play pictures, draw microtonal/spectral music and create
|
||||||
|
some unusual deep atmospheric sounds. This app is for everyone who loves
|
||||||
|
experiments and is looking for something new.
|
||||||
|
|
||||||
|
Key features:
|
||||||
|
|
||||||
|
+ unlimited number of pure tone generators;
|
||||||
|
+ powerful sonogram editor - you can draw the spectrum and play it at the same time;
|
||||||
|
+ any sound (from a WAV file or a Microphone/Line-in) can be converted to image (sonogram) and vice versa;
|
||||||
|
+ support for MIDI devices;
|
||||||
|
+ polyphonic synth mode with MIDI mapping;
|
||||||
|
+ supported file formats: WAV, AIFF, PNG, JPEG, GIF;
|
||||||
|
+ supported sound systems: ASIO, DirectSound, MME, ALSA, OSS, JACK, Audiobus, IAA.
|
||||||
|
'';
|
||||||
|
homepage = "https://warmplace.ru/soft/ans/";
|
||||||
|
license = licenses.free;
|
||||||
|
# I cannot test the Darwin version, so I'll leave it disabled
|
||||||
|
platforms = [ "x86_64-linux" "i686-linux" ];
|
||||||
|
maintainers = with maintainers; [ jacg ];
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
27
pkgs/applications/audio/vocproc/default.nix
Normal file
27
pkgs/applications/audio/vocproc/default.nix
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
{ stdenv, fetchzip, pkgconfig, lvtk, lv2, fftw, lv2-cpp-tools, gtkmm2 }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "vocproc";
|
||||||
|
version = "0.2.1";
|
||||||
|
|
||||||
|
src = fetchzip {
|
||||||
|
url = "https://hyperglitch.com/files/vocproc/${pname}-${version}.default.tar.gz";
|
||||||
|
sha256 = "07a1scyz14mg2jdbw6fpv4qg91zsw61qqii64n9qbnny9d5pn8n2";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ pkgconfig ];
|
||||||
|
|
||||||
|
buildInputs = [ lv2 fftw lv2-cpp-tools gtkmm2 ];
|
||||||
|
|
||||||
|
makeFlags = [
|
||||||
|
"INSTALL_DIR=$(out)/lib/lv2"
|
||||||
|
];
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = "https://hyperglitch.com/dev/VocProc";
|
||||||
|
description = "An LV2 plugin for pitch shifting (with or without formant correction), vocoding, automatic pitch correction and harmonizing of singing voice (harmonizer)";
|
||||||
|
license = licenses.gpl2;
|
||||||
|
maintainers = [ maintainers.michalrus ];
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
@ -7,13 +7,13 @@ with stdenv.lib;
|
|||||||
mkDerivation rec {
|
mkDerivation rec {
|
||||||
|
|
||||||
name = "bitcoin" + (toString (optional (!withGui) "d")) + "-abc-" + version;
|
name = "bitcoin" + (toString (optional (!withGui) "d")) + "-abc-" + version;
|
||||||
version = "0.21.12";
|
version = "0.21.13";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "bitcoin-ABC";
|
owner = "bitcoin-ABC";
|
||||||
repo = "bitcoin-abc";
|
repo = "bitcoin-abc";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "1mad3aqfwrxi06135nf8hv13d67nilmxpx4dw5vjcy1zi3lljj1j";
|
sha256 = "1x8xcdi1vcskggk9bqkwr3ah4vi9b7sj2h8hf7spac6dvz8lmzav";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [ ./fix-bitcoin-qt-build.patch ];
|
patches = [ ./fix-bitcoin-qt-build.patch ];
|
||||||
|
@ -7,13 +7,13 @@ with stdenv.lib;
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "bitcoin" + (toString (optional (!withGui) "d")) + "-unlimited-" + version;
|
name = "bitcoin" + (toString (optional (!withGui) "d")) + "-unlimited-" + version;
|
||||||
version = "1.7.0.0";
|
version = "1.8.0.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "bitcoinunlimited";
|
owner = "bitcoinunlimited";
|
||||||
repo = "bitcoinunlimited";
|
repo = "bitcoinunlimited";
|
||||||
rev = "bucash${version}";
|
rev = "BCHunlimited${version}";
|
||||||
sha256 = "0lil6rivrj4cnr8a7n8zn9rp9f4h2nk88jjxc29m6dwqn5gk6f1i";
|
sha256 = "01qi15li5x9fvhsmvx7ai5fz6yzqqd3r9yv7081h75jn0nxai49q";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig autoreconfHook python3 ]
|
nativeBuildInputs = [ pkgconfig autoreconfHook python3 ]
|
||||||
|
@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "ergo";
|
pname = "ergo";
|
||||||
version = "3.3.0";
|
version = "3.3.1";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/ergoplatform/ergo/releases/download/v${version}/ergo-${version}.jar";
|
url = "https://github.com/ergoplatform/ergo/releases/download/v${version}/ergo-${version}.jar";
|
||||||
sha256 = "1lja4ba6bm1jk0lh2ra5v8i5g3f1gy7mk2b3yrx1w7x02ll9gr06";
|
sha256 = "1qr1vfb6mhm2hxl2ksydkhadm7phadn93lwm3f9zni01plk56bb5";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ makeWrapper ];
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
|
@ -10,13 +10,13 @@ assert stdenv.isDarwin -> IOKit != null;
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "monero";
|
pname = "monero";
|
||||||
version = "0.16.0.1";
|
version = "0.16.0.3";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "monero-project";
|
owner = "monero-project";
|
||||||
repo = "monero";
|
repo = "monero";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0n2cviqm8radpynx70fc0819k1xknjc58cvb4whlc49ilyvh8ky6";
|
sha256 = "1r9x3712vhb24dxxirfiwj5f9x0h4m7x0ngiiavf5983dfdlgz33";
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
59
pkgs/applications/blockchains/mycrypto/default.nix
Normal file
59
pkgs/applications/blockchains/mycrypto/default.nix
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
{ lib, appimageTools, fetchurl, makeDesktopItem
|
||||||
|
, gsettings-desktop-schemas, gtk2
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
pname = "MyCrypto";
|
||||||
|
version = "1.7.12";
|
||||||
|
sha256 = "0zmdmkli9zxygrcvrd4lbi0xqyq32dqlkxby8lsjknj1nd6l26n3";
|
||||||
|
name = "${pname}-${version}";
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://github.com/mycryptohq/mycrypto/releases/download/${version}/linux-x86-64_${version}_MyCrypto.AppImage";
|
||||||
|
inherit sha256;
|
||||||
|
};
|
||||||
|
|
||||||
|
appimageContents = appimageTools.extractType2 {
|
||||||
|
inherit name src;
|
||||||
|
};
|
||||||
|
|
||||||
|
desktopItem = makeDesktopItem {
|
||||||
|
name = pname;
|
||||||
|
desktopName = pname;
|
||||||
|
comment = "MyCrypto is a free, open-source interface for interacting with the blockchain";
|
||||||
|
exec = pname;
|
||||||
|
icon = "mycrypto";
|
||||||
|
categories = "Finance;";
|
||||||
|
};
|
||||||
|
|
||||||
|
in appimageTools.wrapType2 rec {
|
||||||
|
inherit name src;
|
||||||
|
|
||||||
|
profile = ''
|
||||||
|
export XDG_DATA_DIRS=${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:${gtk2}/share/gsettings-schemas/${gtk2.name}:$XDG_DATA_DIRS
|
||||||
|
'';
|
||||||
|
|
||||||
|
multiPkgs = null; # no p32bit needed
|
||||||
|
extraPkgs = appimageTools.defaultFhsEnvArgs.multiPkgs;
|
||||||
|
|
||||||
|
extraInstallCommands = ''
|
||||||
|
mv $out/bin/{${name},${pname}}
|
||||||
|
|
||||||
|
mkdir -p $out/share
|
||||||
|
cp -rt $out/share ${desktopItem}/share/applications ${appimageContents}/usr/share/icons
|
||||||
|
chmod -R +w $out/share
|
||||||
|
mv $out/share/icons/hicolor/{0x0,256x256}
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "A free, open-source interface for interacting with the blockchain";
|
||||||
|
longDescription = ''
|
||||||
|
MyCrypto is an open-source, client-side tool for generating ether wallets,
|
||||||
|
handling ERC-20 tokens, and interacting with the blockchain more easily.
|
||||||
|
'';
|
||||||
|
homepage = "https://mycrypto.com";
|
||||||
|
license = licenses.mit;
|
||||||
|
platforms = [ "x86_64-linux" ];
|
||||||
|
maintainers = with maintainers; [ oxalica ];
|
||||||
|
};
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
{ callPackage, makeFontsConf, gnome2 }:
|
{ callPackage, makeFontsConf, gnome2, buildFHSUserEnv }:
|
||||||
|
|
||||||
let
|
let
|
||||||
mkStudio = opts: callPackage (import ./common.nix opts) {
|
mkStudio = opts: callPackage (import ./common.nix opts) {
|
||||||
@ -6,6 +6,7 @@ let
|
|||||||
fontDirectories = [];
|
fontDirectories = [];
|
||||||
};
|
};
|
||||||
inherit (gnome2) GConf gnome_vfs;
|
inherit (gnome2) GConf gnome_vfs;
|
||||||
|
inherit buildFHSUserEnv;
|
||||||
};
|
};
|
||||||
stableVersion = {
|
stableVersion = {
|
||||||
version = "4.0.1.0"; # "Android Studio 4.0.1"
|
version = "4.0.1.0"; # "Android Studio 4.0.1"
|
||||||
|
318
pkgs/applications/editors/emacs-modes/elpa-generated.nix
generated
318
pkgs/applications/editors/emacs-modes/elpa-generated.nix
generated
@ -19,10 +19,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "ack";
|
pname = "ack";
|
||||||
ename = "ack";
|
ename = "ack";
|
||||||
version = "1.8";
|
version = "1.10";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/ack-1.8.tar";
|
url = "https://elpa.gnu.org/packages/ack-1.10.tar";
|
||||||
sha256 = "1d4218km7j1bx1fsna29j3gi3k2ak2fzbk1gyki327pnnlma6bav";
|
sha256 = "0jz8badhjpzjlrprpzgcm1z6ask1ykc7ab62ixjrj9wcgfjif5qw";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
@ -39,10 +39,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "ada-mode";
|
pname = "ada-mode";
|
||||||
ename = "ada-mode";
|
ename = "ada-mode";
|
||||||
version = "7.1.1";
|
version = "7.1.4";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/ada-mode-7.1.1.tar";
|
url = "https://elpa.gnu.org/packages/ada-mode-7.1.4.tar";
|
||||||
sha256 = "11ch0dn478ddzkcjcyqf2rjim7w0fjb8xfijqxxi07847w4gkklp";
|
sha256 = "13zcs7kn7rca82c80qshbdpmmmgkf5phr88hf7p5nwxqhkazy9cd";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs uniquify-files wisi ];
|
packageRequires = [ emacs uniquify-files wisi ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -54,10 +54,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "ada-ref-man";
|
pname = "ada-ref-man";
|
||||||
ename = "ada-ref-man";
|
ename = "ada-ref-man";
|
||||||
version = "2012.5";
|
version = "2020.1";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/ada-ref-man-2012.5.tar";
|
url = "https://elpa.gnu.org/packages/ada-ref-man-2020.1.tar";
|
||||||
sha256 = "0n7izqc44i3l6fxbzkq9gwwlcf04rr9g1whrk8biz84jhbyh23x8";
|
sha256 = "1g4brb9g2spd55issyqldfc4azwilbrz8kh8sl0lka2kn42l3qqc";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
@ -223,10 +223,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "auctex";
|
pname = "auctex";
|
||||||
ename = "auctex";
|
ename = "auctex";
|
||||||
version = "12.2.1";
|
version = "12.2.4";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/auctex-12.2.1.tar";
|
url = "https://elpa.gnu.org/packages/auctex-12.2.4.tar";
|
||||||
sha256 = "14y0kdri2zvz81qwpncsr3ly4ciqab6g8yxl956k3ddn36b3a56s";
|
sha256 = "1yz2h692mr35zgqwlxdq8rzv8n0jixhpaqmbiki00hlysm4zh9py";
|
||||||
};
|
};
|
||||||
packageRequires = [ cl-lib emacs ];
|
packageRequires = [ cl-lib emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -557,10 +557,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "company";
|
pname = "company";
|
||||||
ename = "company";
|
ename = "company";
|
||||||
version = "0.9.12";
|
version = "0.9.13";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/company-0.9.12.tar";
|
url = "https://elpa.gnu.org/packages/company-0.9.13.tar";
|
||||||
sha256 = "1vcgfccdc06alba3jl6dg7ms20wdzdhaqikh7id5lbawb00hc10j";
|
sha256 = "1c9x9wlzzsn7vrsm57l2l44nqx455saa6wrm853szzg09qn8dlnw";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -636,6 +636,36 @@
|
|||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
|
counsel = callPackage ({ elpaBuild, emacs, fetchurl, lib, swiper }:
|
||||||
|
elpaBuild {
|
||||||
|
pname = "counsel";
|
||||||
|
ename = "counsel";
|
||||||
|
version = "0.13.1";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://elpa.gnu.org/packages/counsel-0.13.1.el";
|
||||||
|
sha256 = "1y3hr3j5bh5mbyh1cqzxx04181qpvj4xyv1gym2gxcjd30nfllli";
|
||||||
|
};
|
||||||
|
packageRequires = [ emacs swiper ];
|
||||||
|
meta = {
|
||||||
|
homepage = "https://elpa.gnu.org/packages/counsel.html";
|
||||||
|
license = lib.licenses.free;
|
||||||
|
};
|
||||||
|
}) {};
|
||||||
|
cpio-mode = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||||
|
elpaBuild {
|
||||||
|
pname = "cpio-mode";
|
||||||
|
ename = "cpio-mode";
|
||||||
|
version = "0.16";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://elpa.gnu.org/packages/cpio-mode-0.16.tar";
|
||||||
|
sha256 = "06xdifgx45aghfppz5dws3v6w37q84lwgxp1pc51p2jjflqbqy5q";
|
||||||
|
};
|
||||||
|
packageRequires = [ emacs ];
|
||||||
|
meta = {
|
||||||
|
homepage = "https://elpa.gnu.org/packages/cpio-mode.html";
|
||||||
|
license = lib.licenses.free;
|
||||||
|
};
|
||||||
|
}) {};
|
||||||
crisp = callPackage ({ elpaBuild, fetchurl, lib }:
|
crisp = callPackage ({ elpaBuild, fetchurl, lib }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "crisp";
|
pname = "crisp";
|
||||||
@ -730,10 +760,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "debbugs";
|
pname = "debbugs";
|
||||||
ename = "debbugs";
|
ename = "debbugs";
|
||||||
version = "0.22";
|
version = "0.25";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/debbugs-0.22.tar";
|
url = "https://elpa.gnu.org/packages/debbugs-0.25.tar";
|
||||||
sha256 = "05ik9qv539b5c1nzxkk3lk23bqj4vqgmfmd8x367abhb7c9gix2z";
|
sha256 = "0h0pxav170yzfpjf4vb8simiw67x9dkcjx9m4ghdk6wia25y8jni";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs soap-client ];
|
packageRequires = [ emacs soap-client ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -745,10 +775,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "delight";
|
pname = "delight";
|
||||||
ename = "delight";
|
ename = "delight";
|
||||||
version = "1.5";
|
version = "1.7";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/delight-1.5.el";
|
url = "https://elpa.gnu.org/packages/delight-1.7.el";
|
||||||
sha256 = "0kzlvzwmn6zj0874086q2xw0pclyi7wlkq48zh2lkd2796xm8vw7";
|
sha256 = "0pihsghrf9xnd1kqlq48qmjcmp5ra95wwwgrb3l8m1wagmmc0bi1";
|
||||||
};
|
};
|
||||||
packageRequires = [ cl-lib nadvice ];
|
packageRequires = [ cl-lib nadvice ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -925,10 +955,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "ebdb";
|
pname = "ebdb";
|
||||||
ename = "ebdb";
|
ename = "ebdb";
|
||||||
version = "0.6.17";
|
version = "0.6.18";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/ebdb-0.6.17.tar";
|
url = "https://elpa.gnu.org/packages/ebdb-0.6.18.tar";
|
||||||
sha256 = "07335pcqvvj1apzbwy4dc4i6pc6w21hr7v9fvgkc9c2x7fqlqg24";
|
sha256 = "0znbv3c7wdgak1f1zb051vg4r29fksqh53k1j77jfmqcvwkpz2mw";
|
||||||
};
|
};
|
||||||
packageRequires = [ cl-lib emacs seq ];
|
packageRequires = [ cl-lib emacs seq ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -970,10 +1000,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "ediprolog";
|
pname = "ediprolog";
|
||||||
ename = "ediprolog";
|
ename = "ediprolog";
|
||||||
version = "1.2";
|
version = "2.1";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/ediprolog-1.2.el";
|
url = "https://elpa.gnu.org/packages/ediprolog-2.1.el";
|
||||||
sha256 = "039ffvp7c810mjyargmgw1i87g0z8qs8qicq826sd9aiz9hprfaz";
|
sha256 = "1piimsmzpirw8plrpy79xbpnvynzzhcxi31g6lg6is8gridiv3md";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
@ -1040,10 +1070,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "eldoc";
|
pname = "eldoc";
|
||||||
ename = "eldoc";
|
ename = "eldoc";
|
||||||
version = "1.0.0";
|
version = "1.8.0";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/eldoc-1.0.0.el";
|
url = "https://elpa.gnu.org/packages/eldoc-1.8.0.el";
|
||||||
sha256 = "0jdqnndvpz929rbfgrm2bgw3z2vp7dvvgk3wnhvlhf63mdiza89m";
|
sha256 = "1zxy9x9a0yqwdi572jj04x9lyj3d87mpyfbn3092a5nqwc864k9w";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -1085,10 +1115,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "elisp-benchmarks";
|
pname = "elisp-benchmarks";
|
||||||
ename = "elisp-benchmarks";
|
ename = "elisp-benchmarks";
|
||||||
version = "1.4";
|
version = "1.7";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/elisp-benchmarks-1.4.tar";
|
url = "https://elpa.gnu.org/packages/elisp-benchmarks-1.7.tar";
|
||||||
sha256 = "18ia04aq4pqa8374x60g3g66jqmm17c6n904naa0jhqphlgam8pb";
|
sha256 = "1ps28bvh87d98k84ygx374a1kbwvnqm4w8jpkgzic01as78hgkiz";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
@ -1096,6 +1126,21 @@
|
|||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
|
emms = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
|
||||||
|
elpaBuild {
|
||||||
|
pname = "emms";
|
||||||
|
ename = "emms";
|
||||||
|
version = "5.42";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://elpa.gnu.org/packages/emms-5.42.tar";
|
||||||
|
sha256 = "1khx1fvllrs6w9kxk12mp1hj309c90mc7lkq1vvlqlr7vd6zmnpj";
|
||||||
|
};
|
||||||
|
packageRequires = [ cl-lib ];
|
||||||
|
meta = {
|
||||||
|
homepage = "https://elpa.gnu.org/packages/emms.html";
|
||||||
|
license = lib.licenses.free;
|
||||||
|
};
|
||||||
|
}) {};
|
||||||
enwc = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
enwc = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "enwc";
|
pname = "enwc";
|
||||||
@ -1187,10 +1232,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "exwm";
|
pname = "exwm";
|
||||||
ename = "exwm";
|
ename = "exwm";
|
||||||
version = "0.23";
|
version = "0.24";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/exwm-0.23.tar";
|
url = "https://elpa.gnu.org/packages/exwm-0.24.tar";
|
||||||
sha256 = "05w1v3wrp1lzz20zd9lcvr5nhk809kgy6svvkbs15xhnr6x55ad5";
|
sha256 = "0lj1a3cmbpf4h6x8k6x8cdm1qb51ca6filydnvi5zcda8zpl060s";
|
||||||
};
|
};
|
||||||
packageRequires = [ xelb ];
|
packageRequires = [ xelb ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -1243,16 +1288,16 @@
|
|||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
flymake = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
flymake = callPackage ({ eldoc, elpaBuild, emacs, fetchurl, lib }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "flymake";
|
pname = "flymake";
|
||||||
ename = "flymake";
|
ename = "flymake";
|
||||||
version = "1.0.8";
|
version = "1.0.9";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/flymake-1.0.8.el";
|
url = "https://elpa.gnu.org/packages/flymake-1.0.9.el";
|
||||||
sha256 = "1hqxrqb227v4ncjjqx8im3c4mhg8w5yjbz9hpfcm5x8xnr2yd6bp";
|
sha256 = "0xm1crhjcs14iqkf481igbf40wj2ib3hjzinw1gn8w1n0462ymp6";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ eldoc emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "https://elpa.gnu.org/packages/flymake.html";
|
homepage = "https://elpa.gnu.org/packages/flymake.html";
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
@ -1292,10 +1337,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "frog-menu";
|
pname = "frog-menu";
|
||||||
ename = "frog-menu";
|
ename = "frog-menu";
|
||||||
version = "0.2.10";
|
version = "0.2.11";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/frog-menu-0.2.10.el";
|
url = "https://elpa.gnu.org/packages/frog-menu-0.2.11.el";
|
||||||
sha256 = "050qikvgh9v7kgvhznjsfrpyhs7iq1x63bryqdkrwlf668yhzi1m";
|
sha256 = "06iw11z61fd0g4w3562k3smcmzaq3nivvvc6gzm8y8k5pcrqzdff";
|
||||||
};
|
};
|
||||||
packageRequires = [ avy emacs posframe ];
|
packageRequires = [ avy emacs posframe ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -1591,10 +1636,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "hyperbole";
|
pname = "hyperbole";
|
||||||
ename = "hyperbole";
|
ename = "hyperbole";
|
||||||
version = "7.0.6";
|
version = "7.1.2";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/hyperbole-7.0.6.tar";
|
url = "https://elpa.gnu.org/packages/hyperbole-7.1.2.tar";
|
||||||
sha256 = "08gi4v76s53nfmn3s0qcxc3zii0pspjfd6ry7jq1kgm3z34x8hab";
|
sha256 = "1bspmqnbniwr9385wh823dsr5fgch5qnlkf45s4vi0nvg8jdccp1";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -1636,10 +1681,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "ivy";
|
pname = "ivy";
|
||||||
ename = "ivy";
|
ename = "ivy";
|
||||||
version = "0.13.0";
|
version = "0.13.1";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/ivy-0.13.0.tar";
|
url = "https://elpa.gnu.org/packages/ivy-0.13.1.tar";
|
||||||
sha256 = "18r9vb9v7hvdkylchn436sgh7ji9avhry1whjip8zrn0c1bnqmk8";
|
sha256 = "0n0ixhdykbdpis4krkqq6zncbby28p34742q96n0l91w0p19slcx";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -1726,10 +1771,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "jsonrpc";
|
pname = "jsonrpc";
|
||||||
ename = "jsonrpc";
|
ename = "jsonrpc";
|
||||||
version = "1.0.11";
|
version = "1.0.12";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/jsonrpc-1.0.11.el";
|
url = "https://elpa.gnu.org/packages/jsonrpc-1.0.12.el";
|
||||||
sha256 = "04cy1mqd6y8k5lcpg076szjk9av9345mmsnzzh6vgbcw3dcgbr23";
|
sha256 = "0cqp05awikbrn88ifld3vwnv6cxgmr83wlnsvxw8bqb96djz70ad";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -1782,6 +1827,21 @@
|
|||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
|
leaf = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||||
|
elpaBuild {
|
||||||
|
pname = "leaf";
|
||||||
|
ename = "leaf";
|
||||||
|
version = "4.2.5";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://elpa.gnu.org/packages/leaf-4.2.5.tar";
|
||||||
|
sha256 = "0y78mp4c2gcwp7dc87wlx3r4hfmap14vvx8gkjc9nkf99qavpnkw";
|
||||||
|
};
|
||||||
|
packageRequires = [ emacs ];
|
||||||
|
meta = {
|
||||||
|
homepage = "https://elpa.gnu.org/packages/leaf.html";
|
||||||
|
license = lib.licenses.free;
|
||||||
|
};
|
||||||
|
}) {};
|
||||||
let-alist = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
let-alist = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "let-alist";
|
pname = "let-alist";
|
||||||
@ -2026,10 +2086,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "mmm-mode";
|
pname = "mmm-mode";
|
||||||
ename = "mmm-mode";
|
ename = "mmm-mode";
|
||||||
version = "0.5.7";
|
version = "0.5.8";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/mmm-mode-0.5.7.tar";
|
url = "https://elpa.gnu.org/packages/mmm-mode-0.5.8.tar";
|
||||||
sha256 = "0c4azrkgagyfm9znh7hmw93gkvddpsxlr0dwjp96winymih7mahf";
|
sha256 = "05ckf4zapdpvnd3sqpw6kxaa567zh536a36m9qzx3sqyjbyn5fb4";
|
||||||
};
|
};
|
||||||
packageRequires = [ cl-lib ];
|
packageRequires = [ cl-lib ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -2041,10 +2101,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "modus-operandi-theme";
|
pname = "modus-operandi-theme";
|
||||||
ename = "modus-operandi-theme";
|
ename = "modus-operandi-theme";
|
||||||
version = "0.8.1";
|
version = "0.11.0";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/modus-operandi-theme-0.8.1.el";
|
url = "https://elpa.gnu.org/packages/modus-operandi-theme-0.11.0.el";
|
||||||
sha256 = "0i8s6blkhx53m1jk1bblqs7fwlbn57xkxxhsp9famcj5m0xyfimb";
|
sha256 = "11sq105vpp8rmyayfb7h8gz099kfdr7nb8n4pg81iby4fllj1kgd";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -2056,10 +2116,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "modus-vivendi-theme";
|
pname = "modus-vivendi-theme";
|
||||||
ename = "modus-vivendi-theme";
|
ename = "modus-vivendi-theme";
|
||||||
version = "0.8.1";
|
version = "0.11.0";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/modus-vivendi-theme-0.8.1.el";
|
url = "https://elpa.gnu.org/packages/modus-vivendi-theme-0.11.0.el";
|
||||||
sha256 = "121nlr5w58j4q47rh9xjjf9wzb97yl2m1n2l6g58ck4vnarwndl1";
|
sha256 = "14ky9cxg9cpvhgg24ra0xla2dapqjlf948470q7v0m402x1r2iif";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -2485,10 +2545,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "phps-mode";
|
pname = "phps-mode";
|
||||||
ename = "phps-mode";
|
ename = "phps-mode";
|
||||||
version = "0.3.48";
|
version = "0.3.52";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/phps-mode-0.3.48.tar";
|
url = "https://elpa.gnu.org/packages/phps-mode-0.3.52.tar";
|
||||||
sha256 = "1mnbrsgh6lx7kgkfsfq5zk78a97iwh8mxgxzyf1zq4jj6ziwd6bv";
|
sha256 = "11783i4raw6z326bqin9g37ig2szbqsma1r0fsdckyn2q6w7nn92";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -2530,10 +2590,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "posframe";
|
pname = "posframe";
|
||||||
ename = "posframe";
|
ename = "posframe";
|
||||||
version = "0.7.0";
|
version = "0.8.0";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/posframe-0.7.0.el";
|
url = "https://elpa.gnu.org/packages/posframe-0.8.0.el";
|
||||||
sha256 = "1kwl83jb5k1hnx0s2qw972v0gjqbbvk4sdcdb1qbdxsyw36sylc9";
|
sha256 = "1vzaiiw2pxa0zrc2bkaxljpr4035xrh3d8z3l5f0jvp72cnq49kp";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -2541,16 +2601,16 @@
|
|||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
project = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
project = callPackage ({ elpaBuild, emacs, fetchurl, lib, xref }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "project";
|
pname = "project";
|
||||||
ename = "project";
|
ename = "project";
|
||||||
version = "0.1.2";
|
version = "0.5.1";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/project-0.1.2.el";
|
url = "https://elpa.gnu.org/packages/project-0.5.1.el";
|
||||||
sha256 = "0713hwim1chf6lxpg1rb234aa1gj92c153fjlc4jddp6dzzgn50d";
|
sha256 = "1i15hlrfipsfrdmgh6xzkr6aszgvik3y8j9363qkj654dl04pmz4";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs xref ];
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "https://elpa.gnu.org/packages/project.html";
|
homepage = "https://elpa.gnu.org/packages/project.html";
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
@ -2571,6 +2631,21 @@
|
|||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
|
pspp-mode = callPackage ({ elpaBuild, fetchurl, lib }:
|
||||||
|
elpaBuild {
|
||||||
|
pname = "pspp-mode";
|
||||||
|
ename = "pspp-mode";
|
||||||
|
version = "1.1";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://elpa.gnu.org/packages/pspp-mode-1.1.el";
|
||||||
|
sha256 = "1qnwj7r367qs0ykw71c6s96ximgg2wb3hxg5fwsl9q2vfhbh35ca";
|
||||||
|
};
|
||||||
|
packageRequires = [];
|
||||||
|
meta = {
|
||||||
|
homepage = "https://elpa.gnu.org/packages/pspp-mode.html";
|
||||||
|
license = lib.licenses.free;
|
||||||
|
};
|
||||||
|
}) {};
|
||||||
python = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
|
python = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "python";
|
pname = "python";
|
||||||
@ -2620,10 +2695,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "rainbow-mode";
|
pname = "rainbow-mode";
|
||||||
ename = "rainbow-mode";
|
ename = "rainbow-mode";
|
||||||
version = "1.0.4";
|
version = "1.0.5";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/rainbow-mode-1.0.4.el";
|
url = "https://elpa.gnu.org/packages/rainbow-mode-1.0.5.el";
|
||||||
sha256 = "0rp76gix1ph1wrmdax6y2m3i9y1dmgv7ikjz8xsl5lizkygsy9cg";
|
sha256 = "159fps843k5pap9k04a7ll1k3gw6d9c6w08lq4bbc3lqg78aa2l9";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
@ -2840,10 +2915,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "relint";
|
pname = "relint";
|
||||||
ename = "relint";
|
ename = "relint";
|
||||||
version = "1.17";
|
version = "1.18";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/relint-1.17.tar";
|
url = "https://elpa.gnu.org/packages/relint-1.18.tar";
|
||||||
sha256 = "1nv13dqdhf72c1jgk1ml4k6jqb8wsyphcx2vhsyhig5198lg4kd7";
|
sha256 = "0zfislsksrkn6qs0w26yaff5xr7xqy2x235dcdpz8s2v35b6dhci";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs xr ];
|
packageRequires = [ emacs xr ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -2881,6 +2956,21 @@
|
|||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
|
rt-liberation = callPackage ({ elpaBuild, fetchurl, lib }:
|
||||||
|
elpaBuild {
|
||||||
|
pname = "rt-liberation";
|
||||||
|
ename = "rt-liberation";
|
||||||
|
version = "1.31";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://elpa.gnu.org/packages/rt-liberation-1.31.tar";
|
||||||
|
sha256 = "0qqqqwdkb0h8137rqsr08179skl1475cg4hl7a987rmccys0j83c";
|
||||||
|
};
|
||||||
|
packageRequires = [];
|
||||||
|
meta = {
|
||||||
|
homepage = "https://elpa.gnu.org/packages/rt-liberation.html";
|
||||||
|
license = lib.licenses.free;
|
||||||
|
};
|
||||||
|
}) {};
|
||||||
rudel = callPackage ({ cl-generic
|
rudel = callPackage ({ cl-generic
|
||||||
, cl-lib ? null
|
, cl-lib ? null
|
||||||
, cl-print
|
, cl-print
|
||||||
@ -3067,6 +3157,21 @@
|
|||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
|
so-long = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||||
|
elpaBuild {
|
||||||
|
pname = "so-long";
|
||||||
|
ename = "so-long";
|
||||||
|
version = "1.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://elpa.gnu.org/packages/so-long-1.0.el";
|
||||||
|
sha256 = "00z9gnxz32rakd0k7lqaj050fwmqzq5vr9d6rb7ji3fn01rjp7kj";
|
||||||
|
};
|
||||||
|
packageRequires = [ emacs ];
|
||||||
|
meta = {
|
||||||
|
homepage = "https://elpa.gnu.org/packages/so-long.html";
|
||||||
|
license = lib.licenses.free;
|
||||||
|
};
|
||||||
|
}) {};
|
||||||
soap-client = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
|
soap-client = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "soap-client";
|
pname = "soap-client";
|
||||||
@ -3191,10 +3296,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "svg-clock";
|
pname = "svg-clock";
|
||||||
ename = "svg-clock";
|
ename = "svg-clock";
|
||||||
version = "1.1";
|
version = "1.2";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/svg-clock-1.1.el";
|
url = "https://elpa.gnu.org/packages/svg-clock-1.2.el";
|
||||||
sha256 = "12wf4dd3vgbq1v3363cil4wr2skx60xy546jc69ycyk0jq7plcq3";
|
sha256 = "15pmj07wnlcpv78av9qpnbfwdjlkf237vib8smpa7nvyikdfszfr";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs svg ];
|
packageRequires = [ emacs svg ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -3202,6 +3307,21 @@
|
|||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
|
swiper = callPackage ({ elpaBuild, emacs, fetchurl, ivy, lib }:
|
||||||
|
elpaBuild {
|
||||||
|
pname = "swiper";
|
||||||
|
ename = "swiper";
|
||||||
|
version = "0.13.1";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://elpa.gnu.org/packages/swiper-0.13.1.el";
|
||||||
|
sha256 = "06ild7kck0x5ry8bf0al24nh04q01q3jhj6jjl4xz8n2s6jnn70y";
|
||||||
|
};
|
||||||
|
packageRequires = [ emacs ivy ];
|
||||||
|
meta = {
|
||||||
|
homepage = "https://elpa.gnu.org/packages/swiper.html";
|
||||||
|
license = lib.licenses.free;
|
||||||
|
};
|
||||||
|
}) {};
|
||||||
system-packages = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
system-packages = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "system-packages";
|
pname = "system-packages";
|
||||||
@ -3300,10 +3420,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "tramp";
|
pname = "tramp";
|
||||||
ename = "tramp";
|
ename = "tramp";
|
||||||
version = "2.4.3.4";
|
version = "2.4.4.1";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/tramp-2.4.3.4.tar";
|
url = "https://elpa.gnu.org/packages/tramp-2.4.4.1.tar";
|
||||||
sha256 = "01il42xb6s38qnb7bhn9d7gscc5p5y4da5a4dp1i1cyi823sfp8f";
|
sha256 = "0jayd75yscaqvg6y0m6g2mgbjswyj5gqdij2az9g0j18vm5vbqy3";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -3491,10 +3611,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "verilog-mode";
|
pname = "verilog-mode";
|
||||||
ename = "verilog-mode";
|
ename = "verilog-mode";
|
||||||
version = "2020.2.23.232634261";
|
version = "2020.6.27.14326051";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/verilog-mode-2020.2.23.232634261.el";
|
url = "https://elpa.gnu.org/packages/verilog-mode-2020.6.27.14326051.el";
|
||||||
sha256 = "07r2nzyfwmpv1299q1v768ai14rdgq7y4bvz5xsnp4qj3g06p0f6";
|
sha256 = "194gn8cj01jb9xcl0qq3gq6mzxfdyn459ysb35fnib7pcnafm188";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
@ -3704,10 +3824,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "wisi";
|
pname = "wisi";
|
||||||
ename = "wisi";
|
ename = "wisi";
|
||||||
version = "3.1.1";
|
version = "3.1.3";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/wisi-3.1.1.tar";
|
url = "https://elpa.gnu.org/packages/wisi-3.1.3.tar";
|
||||||
sha256 = "0abm9xfyk2izi0w9172sfhdq83abcxgbngngbh2gby54df0ycn0q";
|
sha256 = "0cbjcm35lp164wd06mn3clikga07qxfsfnkvadswsapsd0cn2b4k";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs seq ];
|
packageRequires = [ emacs seq ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -3724,10 +3844,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "wisitoken-grammar-mode";
|
pname = "wisitoken-grammar-mode";
|
||||||
ename = "wisitoken-grammar-mode";
|
ename = "wisitoken-grammar-mode";
|
||||||
version = "1.1.0";
|
version = "1.2.0";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/wisitoken-grammar-mode-1.1.0.tar";
|
url = "https://elpa.gnu.org/packages/wisitoken-grammar-mode-1.2.0.tar";
|
||||||
sha256 = "123z9j76cm0p22d9n4kqvn2477fdkgp5jarw564nd71cxrrb52ms";
|
sha256 = "0isxmpwys148djjymszdm5nisqjp9xff8kad45l4cpb3c717vsjw";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs mmm-mode wisi ];
|
packageRequires = [ emacs mmm-mode wisi ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -3810,16 +3930,16 @@
|
|||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
xref = callPackage ({ elpaBuild, emacs, fetchurl, lib, project }:
|
xref = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "xref";
|
pname = "xref";
|
||||||
ename = "xref";
|
ename = "xref";
|
||||||
version = "1.0.1";
|
version = "1.0.2";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/xref-1.0.1.el";
|
url = "https://elpa.gnu.org/packages/xref-1.0.2.el";
|
||||||
sha256 = "17wlwilm2d1gvin8mkkqnpw2skjx0klxfs1pqpy8rrzdfpsb55li";
|
sha256 = "156rfwdihb3vz31iszbmby16spqswyf69nhl3r2cp6jzkgwzc1d8";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs project ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "https://elpa.gnu.org/packages/xref.html";
|
homepage = "https://elpa.gnu.org/packages/xref.html";
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
|
@ -4,10 +4,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "org";
|
pname = "org";
|
||||||
ename = "org";
|
ename = "org";
|
||||||
version = "20200511";
|
version = "20200817";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://orgmode.org/elpa/org-20200511.tar";
|
url = "https://orgmode.org/elpa/org-20200817.tar";
|
||||||
sha256 = "147k6nmq00milw5knyhw01z481rcdl6s30vk4fkjidw508nkmg9c";
|
sha256 = "159hch9zls3apxq11c5rjpmci1avyl7q3cgsrqxwgnzy8c61104d";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
@ -19,10 +19,10 @@
|
|||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "org-plus-contrib";
|
pname = "org-plus-contrib";
|
||||||
ename = "org-plus-contrib";
|
ename = "org-plus-contrib";
|
||||||
version = "20200511";
|
version = "20200817";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://orgmode.org/elpa/org-plus-contrib-20200511.tar";
|
url = "https://orgmode.org/elpa/org-plus-contrib-20200817.tar";
|
||||||
sha256 = "1hsdp7n985404zdqj6gyfw1bxxbs0p3bf4fyizvgji21zxwnf63f";
|
sha256 = "0n3fhcxjsk2w78p7djna4nlppa7ypjxzpq3r5dmzc8jpl71mipba";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
|||||||
let
|
let
|
||||||
pkgs = import ../../../.. {};
|
pkgs = import ../../../.. {};
|
||||||
|
|
||||||
emacsEnv = (pkgs.emacsPackagesFor pkgs.emacs26).emacsWithPackages (epkgs: let
|
emacsEnv = (pkgs.emacsPackagesFor pkgs.emacs).emacsWithPackages (epkgs: let
|
||||||
|
|
||||||
promise = epkgs.trivialBuild {
|
promise = epkgs.trivialBuild {
|
||||||
pname = "promise";
|
pname = "promise";
|
||||||
|
@ -1,146 +0,0 @@
|
|||||||
{ stdenv, lib, fetchurl, ncurses, xlibsWrapper, libXaw, libXpm, Xaw3d, fetchpatch
|
|
||||||
, pkgconfig, gettext, libXft, dbus, libpng, libjpeg, libungif
|
|
||||||
, libtiff, librsvg, gconf, libxml2, imagemagick, gnutls, libselinux
|
|
||||||
, alsaLib, cairo, acl, gpm, AppKit, GSS, ImageIO
|
|
||||||
, withX ? !stdenv.isDarwin
|
|
||||||
, withGTK2 ? false, gtk2 ? null
|
|
||||||
, withGTK3 ? true, gtk3 ? null, gsettings-desktop-schemas ? null
|
|
||||||
, withXwidgets ? false, webkitgtk, wrapGAppsHook ? null, glib-networking ? null
|
|
||||||
, withCsrc ? true
|
|
||||||
, autoconf ? null, automake ? null, texinfo ? null
|
|
||||||
}:
|
|
||||||
|
|
||||||
assert (libXft != null) -> libpng != null; # probably a bug
|
|
||||||
assert stdenv.isDarwin -> libXaw != null; # fails to link otherwise
|
|
||||||
assert withGTK2 -> withX || stdenv.isDarwin;
|
|
||||||
assert withGTK3 -> withX || stdenv.isDarwin;
|
|
||||||
assert withGTK2 -> !withGTK3 && gtk2 != null;
|
|
||||||
assert withGTK3 -> !withGTK2 && gtk3 != null;
|
|
||||||
assert withXwidgets -> withGTK3 && webkitgtk != null;
|
|
||||||
|
|
||||||
let
|
|
||||||
toolkit =
|
|
||||||
if withGTK2 then "gtk2"
|
|
||||||
else if withGTK3 then "gtk3"
|
|
||||||
else "lucid";
|
|
||||||
in
|
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
name = "emacs-${version}${versionModifier}";
|
|
||||||
version = "25.3";
|
|
||||||
versionModifier = "";
|
|
||||||
|
|
||||||
src = fetchurl {
|
|
||||||
url = "mirror://gnu/emacs/${name}.tar.xz";
|
|
||||||
sha256 = "02y00y9q42g1iqgz5qhmsja75hwxd88yrn9zp14lanay0zkwafi5";
|
|
||||||
};
|
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
|
||||||
|
|
||||||
patches = lib.optionals stdenv.isDarwin [
|
|
||||||
./at-fdcwd.patch
|
|
||||||
|
|
||||||
# Backport of the fix to
|
|
||||||
# https://lists.gnu.org/archive/html/bug-gnu-emacs/2017-04/msg00201.html
|
|
||||||
# Should be removed when switching to Emacs 26.1
|
|
||||||
(fetchurl {
|
|
||||||
url = "https://gist.githubusercontent.com/aaronjensen/f45894ddf431ecbff78b1bcf533d3e6b/raw/6a5cd7f57341aba673234348d8b0d2e776f86719/Emacs-25-OS-X-use-vfork.patch";
|
|
||||||
sha256 = "1nlsxiaynswqhy99jf4mw9x0sndhwcrwy8713kq1l3xqv9dbrzgj";
|
|
||||||
})
|
|
||||||
] ++ [
|
|
||||||
# Backport patches so we can use webkitgtk with xwidgets.
|
|
||||||
(fetchpatch {
|
|
||||||
name = "0001-Omit-unnecessary-includes-from-xwidget-c.patch";
|
|
||||||
url = "https://github.com/emacs-mirror/emacs/commit/a36ed9b5e95afea5716256bac24d883263aefbaf.patch";
|
|
||||||
sha256 = "1j34c0vkj87il87xy1px23yk6bw73adpr7wqa79ncj89i4lc8qkb";
|
|
||||||
})
|
|
||||||
(fetchpatch {
|
|
||||||
name = "0002-xwidget-Use-WebKit2-API.patch";
|
|
||||||
url = "https://github.com/emacs-mirror/emacs/commit/d781662873f228b110a128f7a2b6583a4d5e0a3a.patch";
|
|
||||||
sha256 = "1lld56zi4cw2hmjxhhdcc0f07k8lbj32h10wcq4ml3asdwa31ryr";
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig autoconf automake texinfo ]
|
|
||||||
++ lib.optional (withX && (withGTK3 || withXwidgets)) wrapGAppsHook;
|
|
||||||
|
|
||||||
buildInputs =
|
|
||||||
[ ncurses gconf libxml2 gnutls alsaLib acl gpm gettext ]
|
|
||||||
++ lib.optionals stdenv.isLinux [ dbus libselinux ]
|
|
||||||
++ lib.optionals withX
|
|
||||||
[ xlibsWrapper libXaw Xaw3d libXpm libpng libjpeg libungif libtiff librsvg libXft
|
|
||||||
imagemagick gconf ]
|
|
||||||
++ lib.optional (withX && withGTK2) gtk2
|
|
||||||
++ lib.optionals (withX && withGTK3) [ gtk3 gsettings-desktop-schemas ]
|
|
||||||
++ lib.optional (stdenv.isDarwin && withX) cairo
|
|
||||||
++ lib.optionals (withX && withXwidgets) [ webkitgtk glib-networking ]
|
|
||||||
++ lib.optionals stdenv.isDarwin [ AppKit GSS ImageIO ];
|
|
||||||
|
|
||||||
hardeningDisable = [ "format" ];
|
|
||||||
|
|
||||||
configureFlags = [ "--with-modules" ] ++
|
|
||||||
(if stdenv.isDarwin
|
|
||||||
then [ "--with-ns" "--disable-ns-self-contained" ]
|
|
||||||
else if withX
|
|
||||||
then [ "--with-x-toolkit=${toolkit}" "--with-xft" ]
|
|
||||||
else [ "--with-x=no" "--with-xpm=no" "--with-jpeg=no" "--with-png=no"
|
|
||||||
"--with-gif=no" "--with-tiff=no" ])
|
|
||||||
++ lib.optional withXwidgets "--with-xwidgets";
|
|
||||||
|
|
||||||
preConfigure = ''
|
|
||||||
./autogen.sh
|
|
||||||
'' + ''
|
|
||||||
substituteInPlace lisp/international/mule-cmds.el \
|
|
||||||
--replace /usr/share/locale ${gettext}/share/locale
|
|
||||||
|
|
||||||
for makefile_in in $(find . -name Makefile.in -print); do
|
|
||||||
substituteInPlace $makefile_in --replace /bin/pwd pwd
|
|
||||||
done
|
|
||||||
'';
|
|
||||||
|
|
||||||
installTargets = [ "tags" "install" ];
|
|
||||||
|
|
||||||
postInstall = ''
|
|
||||||
mkdir -p $out/share/emacs/site-lisp
|
|
||||||
cp ${./site-start.el} $out/share/emacs/site-lisp/site-start.el
|
|
||||||
$out/bin/emacs --batch -f batch-byte-compile $out/share/emacs/site-lisp/site-start.el
|
|
||||||
|
|
||||||
rm -rf $out/var
|
|
||||||
rm -rf $out/share/emacs/${version}/site-lisp
|
|
||||||
'' + lib.optionalString withCsrc ''
|
|
||||||
for srcdir in src lisp lwlib ; do
|
|
||||||
dstdir=$out/share/emacs/${version}/$srcdir
|
|
||||||
mkdir -p $dstdir
|
|
||||||
find $srcdir -name "*.[chm]" -exec cp {} $dstdir \;
|
|
||||||
cp $srcdir/TAGS $dstdir
|
|
||||||
echo '((nil . ((tags-file-name . "TAGS"))))' > $dstdir/.dir-locals.el
|
|
||||||
done
|
|
||||||
'' + lib.optionalString stdenv.isDarwin ''
|
|
||||||
mkdir -p $out/Applications
|
|
||||||
mv nextstep/Emacs.app $out/Applications
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
|
||||||
description = "The extensible, customizable GNU text editor";
|
|
||||||
homepage = "https://www.gnu.org/software/emacs/";
|
|
||||||
license = licenses.gpl3Plus;
|
|
||||||
maintainers = with maintainers; [ lovek323 peti jwiegley ];
|
|
||||||
platforms = platforms.all;
|
|
||||||
|
|
||||||
longDescription = ''
|
|
||||||
GNU Emacs is an extensible, customizable text editor—and more. At its
|
|
||||||
core is an interpreter for Emacs Lisp, a dialect of the Lisp
|
|
||||||
programming language with extensions to support text editing.
|
|
||||||
|
|
||||||
The features of GNU Emacs include: content-sensitive editing modes,
|
|
||||||
including syntax coloring, for a wide variety of file types including
|
|
||||||
plain text, source code, and HTML; complete built-in documentation,
|
|
||||||
including a tutorial for new users; full Unicode support for nearly all
|
|
||||||
human languages and their scripts; highly customizable, using Emacs
|
|
||||||
Lisp code or a graphical interface; a large number of extensions that
|
|
||||||
add other functionality, including a project planner, mail and news
|
|
||||||
reader, debugger interface, calendar, and more. Many of these
|
|
||||||
extensions are distributed with GNU Emacs; others are available
|
|
||||||
separately.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
8
pkgs/applications/editors/emacs/26.nix
Normal file
8
pkgs/applications/editors/emacs/26.nix
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import ./generic.nix (rec {
|
||||||
|
version = "26.3";
|
||||||
|
sha256 = "119ldpk7sgn9jlpyngv5y4z3i7bb8q3xp4p0qqi7i5nq39syd42d";
|
||||||
|
patches = [
|
||||||
|
./clean-env-26.patch
|
||||||
|
./tramp-detect-wrapped-gvfsd-26.patch
|
||||||
|
];
|
||||||
|
})
|
8
pkgs/applications/editors/emacs/27.nix
Normal file
8
pkgs/applications/editors/emacs/27.nix
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import ./generic.nix (rec {
|
||||||
|
version = "27.1";
|
||||||
|
sha256 = "0h9f2wpmp6rb5rfwvqwv1ia1nw86h74p7hnz3vb3gjazj67i4k2a";
|
||||||
|
patches = [
|
||||||
|
./clean-env.patch
|
||||||
|
./tramp-detect-wrapped-gvfsd.patch
|
||||||
|
];
|
||||||
|
})
|
15
pkgs/applications/editors/emacs/clean-env-26.patch
Normal file
15
pkgs/applications/editors/emacs/clean-env-26.patch
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
Dump temacs in an empty environment to prevent -dev paths from ending
|
||||||
|
up in the dumped image.
|
||||||
|
|
||||||
|
diff --git a/src/Makefile.in b/src/Makefile.in
|
||||||
|
--- a/src/Makefile.in
|
||||||
|
+++ b/src/Makefile.in
|
||||||
|
@@ -535,7 +535,7 @@ ifeq ($(CANNOT_DUMP),yes)
|
||||||
|
ln -f temacs$(EXEEXT) $@
|
||||||
|
else
|
||||||
|
unset EMACS_HEAP_EXEC; \
|
||||||
|
- LC_ALL=C $(RUN_TEMACS) -batch $(BUILD_DETAILS) -l loadup dump
|
||||||
|
+ env -i LC_ALL=C $(RUN_TEMACS) -batch $(BUILD_DETAILS) -l loadup dump
|
||||||
|
ifneq ($(PAXCTL_dumped),)
|
||||||
|
$(PAXCTL_dumped) $@
|
||||||
|
endif
|
@ -1,3 +1,11 @@
|
|||||||
|
{
|
||||||
|
version
|
||||||
|
, sha256
|
||||||
|
, versionModifier ? ""
|
||||||
|
, pname ? "emacs"
|
||||||
|
, name ? "emacs-${version}${versionModifier}"
|
||||||
|
, patches ? [ ]
|
||||||
|
}:
|
||||||
{ stdenv, lib, fetchurl, fetchpatch, ncurses, xlibsWrapper, libXaw, libXpm
|
{ stdenv, lib, fetchurl, fetchpatch, ncurses, xlibsWrapper, libXaw, libXpm
|
||||||
, Xaw3d, libXcursor, pkgconfig, gettext, libXft, dbus, libpng, libjpeg, libungif
|
, Xaw3d, libXcursor, pkgconfig, gettext, libXft, dbus, libpng, libjpeg, libungif
|
||||||
, libtiff, librsvg, gconf, libxml2, imagemagick, gnutls, libselinux
|
, libtiff, librsvg, gconf, libxml2, imagemagick, gnutls, libselinux
|
||||||
@ -32,25 +40,17 @@ assert withXwidgets -> withGTK3 && webkitgtk != null;
|
|||||||
|
|
||||||
|
|
||||||
let
|
let
|
||||||
version = "27.1";
|
|
||||||
versionModifier = "";
|
|
||||||
name = "emacs-${version}${versionModifier}";
|
|
||||||
|
|
||||||
in stdenv.mkDerivation {
|
in stdenv.mkDerivation {
|
||||||
inherit name version;
|
inherit pname version;
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://gnu/emacs/${name}.tar.xz";
|
url = "mirror://gnu/emacs/${name}.tar.xz";
|
||||||
sha256 = "0h9f2wpmp6rb5rfwvqwv1ia1nw86h74p7hnz3vb3gjazj67i4k2a";
|
inherit sha256;
|
||||||
};
|
};
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
patches = [
|
|
||||||
./clean-env.patch
|
|
||||||
./tramp-detect-wrapped-gvfsd.patch
|
|
||||||
];
|
|
||||||
|
|
||||||
postPatch = lib.concatStringsSep "\n" [
|
postPatch = lib.concatStringsSep "\n" [
|
||||||
(lib.optionalString srcRepo ''
|
(lib.optionalString srcRepo ''
|
||||||
rm -fr .git
|
rm -fr .git
|
@ -0,0 +1,14 @@
|
|||||||
|
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el
|
||||||
|
index f370abba31..f2806263a9 100644
|
||||||
|
--- a/lisp/net/tramp-gvfs.el
|
||||||
|
+++ b/lisp/net/tramp-gvfs.el
|
||||||
|
@@ -164,7 +164,8 @@ tramp-gvfs-enabled
|
||||||
|
(and (featurep 'dbusbind)
|
||||||
|
(tramp-compat-funcall 'dbus-get-unique-name :system)
|
||||||
|
(tramp-compat-funcall 'dbus-get-unique-name :session)
|
||||||
|
- (or (tramp-compat-process-running-p "gvfs-fuse-daemon")
|
||||||
|
+ (or (tramp-compat-process-running-p ".gvfsd-fuse-wrapped")
|
||||||
|
+ (tramp-compat-process-running-p "gvfs-fuse-daemon")
|
||||||
|
(tramp-compat-process-running-p "gvfsd-fuse"))))
|
||||||
|
"Non-nil when GVFS is available.")
|
||||||
|
|
@ -220,9 +220,6 @@ let
|
|||||||
};
|
};
|
||||||
}) (attrs: {
|
}) (attrs: {
|
||||||
patchPhase = lib.optionalString (!stdenv.isDarwin) (attrs.patchPhase + ''
|
patchPhase = lib.optionalString (!stdenv.isDarwin) (attrs.patchPhase + ''
|
||||||
# Patch built-in mono for ReSharperHost to start successfully
|
|
||||||
interpreter=$(echo ${stdenv.glibc.out}/lib/ld-linux*.so.2)
|
|
||||||
patchelf --set-interpreter "$interpreter" lib/ReSharperHost/linux-x64/mono/bin/mono-sgen
|
|
||||||
rm -rf lib/ReSharperHost/linux-x64/dotnet
|
rm -rf lib/ReSharperHost/linux-x64/dotnet
|
||||||
mkdir -p lib/ReSharperHost/linux-x64/dotnet/
|
mkdir -p lib/ReSharperHost/linux-x64/dotnet/
|
||||||
ln -s ${dotnet-sdk_3}/bin/dotnet lib/ReSharperHost/linux-x64/dotnet/dotnet
|
ln -s ${dotnet-sdk_3}/bin/dotnet lib/ReSharperHost/linux-x64/dotnet/dotnet
|
||||||
@ -388,12 +385,12 @@ in
|
|||||||
|
|
||||||
rider = buildRider rec {
|
rider = buildRider rec {
|
||||||
name = "rider-${version}";
|
name = "rider-${version}";
|
||||||
version = "2020.1.4"; /* updated by script */
|
version = "2020.2"; /* updated by script */
|
||||||
description = "A cross-platform .NET IDE based on the IntelliJ platform and ReSharper";
|
description = "A cross-platform .NET IDE based on the IntelliJ platform and ReSharper";
|
||||||
license = stdenv.lib.licenses.unfree;
|
license = stdenv.lib.licenses.unfree;
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.jetbrains.com/rider/JetBrains.Rider-${version}.tar.gz";
|
url = "https://download.jetbrains.com/rider/JetBrains.Rider-${version}.tar.gz";
|
||||||
sha256 = "0vicgwgsbllfw6fz4l82x4vbka3agf541576ix9akyvsskwbaxj9"; /* updated by script */
|
sha256 = "0fxgdxsrrl659lh45slikgck6jld90rd6nnj8gj3aixq0yp5pkix"; /* updated by script */
|
||||||
};
|
};
|
||||||
wmClass = "jetbrains-rider";
|
wmClass = "jetbrains-rider";
|
||||||
update-channel = "Rider RELEASE";
|
update-channel = "Rider RELEASE";
|
||||||
|
@ -20,6 +20,14 @@ let
|
|||||||
));
|
));
|
||||||
|
|
||||||
pyEnv = python.withPackages(ps: [ ps.pynvim ps.msgpack ]);
|
pyEnv = python.withPackages(ps: [ ps.pynvim ps.msgpack ]);
|
||||||
|
|
||||||
|
# FIXME: this is verry messy and strange.
|
||||||
|
# see https://github.com/NixOS/nixpkgs/pull/80528
|
||||||
|
luv = lua.pkgs.luv;
|
||||||
|
luvpath = with builtins ; if stdenv.isDarwin
|
||||||
|
then "${luv.libluv}/lib/lua/${lua.luaversion}/libluv.${head (match "([0-9.]+).*" luv.version)}.dylib"
|
||||||
|
else "${luv}/lib/lua/${lua.luaversion}/luv.so";
|
||||||
|
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "neovim-unwrapped";
|
pname = "neovim-unwrapped";
|
||||||
@ -47,7 +55,7 @@ in
|
|||||||
libtermkey
|
libtermkey
|
||||||
libuv
|
libuv
|
||||||
libvterm-neovim
|
libvterm-neovim
|
||||||
lua.pkgs.luv.libluv
|
luv.libluv
|
||||||
msgpack
|
msgpack
|
||||||
ncurses
|
ncurses
|
||||||
neovimLuaEnv
|
neovimLuaEnv
|
||||||
@ -88,10 +96,8 @@ in
|
|||||||
cmakeFlags = [
|
cmakeFlags = [
|
||||||
"-DGPERF_PRG=${gperf}/bin/gperf"
|
"-DGPERF_PRG=${gperf}/bin/gperf"
|
||||||
"-DLUA_PRG=${neovimLuaEnv.interpreter}"
|
"-DLUA_PRG=${neovimLuaEnv.interpreter}"
|
||||||
|
"-DLIBLUV_LIBRARY=${luvpath}"
|
||||||
]
|
]
|
||||||
# FIXME: this is verry messy and strange.
|
|
||||||
++ optional (!stdenv.isDarwin) "-DLIBLUV_LIBRARY=${lua.pkgs.luv}/lib/lua/${lua.luaversion}/luv.so"
|
|
||||||
++ optional (stdenv.isDarwin) "-DLIBLUV_LIBRARY=${lua.pkgs.luv.libluv}/lib/lua/${lua.luaversion}/libluv.dylib"
|
|
||||||
++ optional doCheck "-DBUSTED_PRG=${neovimLuaEnv}/bin/busted"
|
++ optional doCheck "-DBUSTED_PRG=${neovimLuaEnv}/bin/busted"
|
||||||
++ optional (!lua.pkgs.isLuaJIT) "-DPREFER_LUA=ON"
|
++ optional (!lua.pkgs.isLuaJIT) "-DPREFER_LUA=ON"
|
||||||
;
|
;
|
||||||
|
@ -11,8 +11,8 @@ let
|
|||||||
archive_fmt = if system == "x86_64-darwin" then "zip" else "tar.gz";
|
archive_fmt = if system == "x86_64-darwin" then "zip" else "tar.gz";
|
||||||
|
|
||||||
sha256 = {
|
sha256 = {
|
||||||
x86_64-linux = "0rrs2v97xhlxyjvipss5dmk88j7b03kyszwyhy46755954nzm85j";
|
x86_64-linux = "1yar8j6h39gpnq4givxh5cvi336p56sgc8pg32j6sasqk6mxv02c";
|
||||||
x86_64-darwin = "1vmr78wf6cpib6j0f5gxs8683n27jk96lm4mwg6ji1np6b00m8nx";
|
x86_64-darwin = "1d68xkqkd49z7v4y3230l2v77aw34d7jkdbgj0wnc04kv6n8wx88";
|
||||||
}.${system};
|
}.${system};
|
||||||
in
|
in
|
||||||
callPackage ./generic.nix rec {
|
callPackage ./generic.nix rec {
|
||||||
@ -21,7 +21,7 @@ in
|
|||||||
|
|
||||||
# Please backport all compatible updates to the stable release.
|
# Please backport all compatible updates to the stable release.
|
||||||
# This is important for the extension ecosystem.
|
# This is important for the extension ecosystem.
|
||||||
version = "1.48.0";
|
version = "1.48.1";
|
||||||
pname = "vscode";
|
pname = "vscode";
|
||||||
|
|
||||||
executableName = "code" + lib.optionalString isInsiders "-insiders";
|
executableName = "code" + lib.optionalString isInsiders "-insiders";
|
||||||
|
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