Merge branch 'master' of https://github.com/nixos/nixpkgs
This commit is contained in:
commit
27f20884b5
@ -12,12 +12,12 @@ build daemon as so-called channels. To get channel information via git, add
|
|||||||
```
|
```
|
||||||
|
|
||||||
For stability and maximum binary package support, it is recommended to maintain
|
For stability and maximum binary package support, it is recommended to maintain
|
||||||
custom changes on top of one of the channels, e.g. `nixos-17.09` for the latest
|
custom changes on top of one of the channels, e.g. `nixos-18.03` for the latest
|
||||||
release and `nixos-unstable` for the latest successful build of master:
|
release and `nixos-unstable` for the latest successful build of master:
|
||||||
|
|
||||||
```
|
```
|
||||||
% git remote update channels
|
% git remote update channels
|
||||||
% git rebase channels/nixos-17.09
|
% git rebase channels/nixos-18.03
|
||||||
```
|
```
|
||||||
|
|
||||||
For pull-requests, please rebase onto nixpkgs `master`.
|
For pull-requests, please rebase onto nixpkgs `master`.
|
||||||
@ -31,9 +31,9 @@ For pull-requests, please rebase onto nixpkgs `master`.
|
|||||||
* [Manual (NixOS)](https://nixos.org/nixos/manual/)
|
* [Manual (NixOS)](https://nixos.org/nixos/manual/)
|
||||||
* [Community maintained wiki](https://nixos.wiki/)
|
* [Community maintained wiki](https://nixos.wiki/)
|
||||||
* [Continuous package builds for unstable/master](https://hydra.nixos.org/jobset/nixos/trunk-combined)
|
* [Continuous package builds for unstable/master](https://hydra.nixos.org/jobset/nixos/trunk-combined)
|
||||||
* [Continuous package builds for 17.09 release](https://hydra.nixos.org/jobset/nixos/release-17.09)
|
* [Continuous package builds for 18.03 release](https://hydra.nixos.org/jobset/nixos/release-18.03)
|
||||||
* [Tests for unstable/master](https://hydra.nixos.org/job/nixos/trunk-combined/tested#tabs-constituents)
|
* [Tests for unstable/master](https://hydra.nixos.org/job/nixos/trunk-combined/tested#tabs-constituents)
|
||||||
* [Tests for 17.09 release](https://hydra.nixos.org/job/nixos/release-17.09/tested#tabs-constituents)
|
* [Tests for 18.03 release](https://hydra.nixos.org/job/nixos/release-18.03/tested#tabs-constituents)
|
||||||
|
|
||||||
Communication:
|
Communication:
|
||||||
|
|
||||||
|
@ -25,13 +25,6 @@ out/html/index.html: manual-full.xml style.css highlightjs
|
|||||||
./manual-full.xml
|
./manual-full.xml
|
||||||
|
|
||||||
mkdir -p out/html/highlightjs/
|
mkdir -p out/html/highlightjs/
|
||||||
echo "document.onreadystatechange = function () { \
|
|
||||||
var listings = document.querySelectorAll('.programlisting, .screen'); \
|
|
||||||
for (i = 0; i < listings.length; ++i) { \
|
|
||||||
hljs.highlightBlock(listings[i]); \
|
|
||||||
} \
|
|
||||||
} " > out/html/highlightjs/loader.js
|
|
||||||
|
|
||||||
cp -r highlightjs out/html/
|
cp -r highlightjs out/html/
|
||||||
|
|
||||||
cp ./overrides.css out/html/
|
cp ./overrides.css out/html/
|
||||||
@ -63,6 +56,7 @@ highlightjs:
|
|||||||
cp -r "$$HIGHLIGHTJS/highlight.pack.js" highlightjs/
|
cp -r "$$HIGHLIGHTJS/highlight.pack.js" highlightjs/
|
||||||
cp -r "$$HIGHLIGHTJS/LICENSE" highlightjs/
|
cp -r "$$HIGHLIGHTJS/LICENSE" highlightjs/
|
||||||
cp -r "$$HIGHLIGHTJS/mono-blue.css" highlightjs/
|
cp -r "$$HIGHLIGHTJS/mono-blue.css" highlightjs/
|
||||||
|
cp -r "$$HIGHLIGHTJS/loader.js" highlightjs/
|
||||||
|
|
||||||
|
|
||||||
manual-full.xml: ${MD_TARGETS} .version *.xml
|
manual-full.xml: ${MD_TARGETS} .version *.xml
|
||||||
|
@ -221,16 +221,69 @@
|
|||||||
|
|
||||||
<para>
|
<para>
|
||||||
All generators follow a similar call interface: <code>generatorName
|
All generators follow a similar call interface: <code>generatorName
|
||||||
configFunctions data</code>, where <literal>configFunctions</literal> is a
|
configFunctions data</code>, where <literal>configFunctions</literal> is
|
||||||
set of user-defined functions that format variable parts of the content.
|
an attrset of user-defined functions that format nested parts of the
|
||||||
|
content.
|
||||||
They each have common defaults, so often they do not need to be set
|
They each have common defaults, so often they do not need to be set
|
||||||
manually. An example is <code>mkSectionName ? (name: libStr.escape [ "[" "]"
|
manually. An example is <code>mkSectionName ? (name: libStr.escape [ "[" "]"
|
||||||
] name)</code> from the <literal>INI</literal> generator. It gets the name
|
] name)</code> from the <literal>INI</literal> generator. It receives the
|
||||||
of a section and returns a sanitized name. The default
|
name of a section and sanitizes it. The default
|
||||||
<literal>mkSectionName</literal> escapes <literal>[</literal> and
|
<literal>mkSectionName</literal> escapes <literal>[</literal> and
|
||||||
<literal>]</literal> with a backslash.
|
<literal>]</literal> with a backslash.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
Generators can be fine-tuned to produce exactly the file format required
|
||||||
|
by your application/service. One example is an INI-file format which uses
|
||||||
|
<literal>: </literal> as separator, the strings
|
||||||
|
<literal>"yes"</literal>/<literal>"no"</literal> as boolean values
|
||||||
|
and requires all string values to be quoted:
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<programlisting>
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
customToINI = generators.toINI {
|
||||||
|
# specifies how to format a key/value pair
|
||||||
|
mkKeyValue = generators.mkKeyValueDefault {
|
||||||
|
# specifies the generated string for a subset of nix values
|
||||||
|
mkValueString = v:
|
||||||
|
if v == true then ''"yes"''
|
||||||
|
else if v == false then ''"no"''
|
||||||
|
else if isString v then ''"${v}"''
|
||||||
|
# and delegats all other values to the default generator
|
||||||
|
else generators.mkValueStringDefault {} v;
|
||||||
|
} ":";
|
||||||
|
};
|
||||||
|
|
||||||
|
# the INI file can now be given as plain old nix values
|
||||||
|
in customToINI {
|
||||||
|
main = {
|
||||||
|
pushinfo = true;
|
||||||
|
autopush = false;
|
||||||
|
host = "localhost";
|
||||||
|
port = 42;
|
||||||
|
};
|
||||||
|
mergetool = {
|
||||||
|
merge = "diff3";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
</programlisting>
|
||||||
|
|
||||||
|
<para>This will produce the following INI file as nix string:</para>
|
||||||
|
|
||||||
|
<programlisting>
|
||||||
|
[main]
|
||||||
|
autopush:"no"
|
||||||
|
host:"localhost"
|
||||||
|
port:42
|
||||||
|
pushinfo:"yes"
|
||||||
|
str\:ange:"very::strange"
|
||||||
|
|
||||||
|
[mergetool]
|
||||||
|
merge:"diff3"
|
||||||
|
</programlisting>
|
||||||
|
|
||||||
<note><para>Nix store paths can be converted to strings by enclosing a
|
<note><para>Nix store paths can be converted to strings by enclosing a
|
||||||
derivation attribute like so: <code>"${drv}"</code>.</para></note>
|
derivation attribute like so: <code>"${drv}"</code>.</para></note>
|
||||||
|
|
||||||
|
@ -62,16 +62,7 @@ depending on the JDK at runtime.</para>
|
|||||||
|
|
||||||
<para>It is possible to use a different Java compiler than
|
<para>It is possible to use a different Java compiler than
|
||||||
<command>javac</command> from the OpenJDK. For instance, to use the
|
<command>javac</command> from the OpenJDK. For instance, to use the
|
||||||
Eclipse Java Compiler:
|
GNU Java Compiler:
|
||||||
|
|
||||||
<programlisting>
|
|
||||||
buildInputs = [ jre ant ecj ];
|
|
||||||
</programlisting>
|
|
||||||
|
|
||||||
(Note that here you don’t need the full JDK as an input, but just the
|
|
||||||
JRE.) The ECJ has a stdenv setup hook that sets some environment
|
|
||||||
variables to cause Ant to use ECJ, but this doesn’t work with all Ant
|
|
||||||
files. Similarly, you can use the GNU Java Compiler:
|
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
buildInputs = [ gcj ant ];
|
buildInputs = [ gcj ant ];
|
||||||
|
@ -16,6 +16,12 @@ cargo
|
|||||||
into the `environment.systemPackages` or bring them into
|
into the `environment.systemPackages` or bring them into
|
||||||
scope with `nix-shell -p rustc cargo`.
|
scope with `nix-shell -p rustc cargo`.
|
||||||
|
|
||||||
|
> If you are using NixOS and you want to use rust without a nix expression you
|
||||||
|
> probably want to add the following in your `configuration.nix` to build
|
||||||
|
> crates with C dependencies.
|
||||||
|
>
|
||||||
|
> environment.systemPackages = [binutils gcc gnumake openssl pkgconfig]
|
||||||
|
|
||||||
For daily builds (beta and nightly) use either rustup from
|
For daily builds (beta and nightly) use either rustup from
|
||||||
nixpkgs or use the [Rust nightlies
|
nixpkgs or use the [Rust nightlies
|
||||||
overlay](#using-the-rust-nightlies-overlay).
|
overlay](#using-the-rust-nightlies-overlay).
|
||||||
@ -76,7 +82,7 @@ an example for a minimal `hello` crate:
|
|||||||
Compiling hello v0.1.0 (file:///tmp/hello)
|
Compiling hello v0.1.0 (file:///tmp/hello)
|
||||||
Finished dev [unoptimized + debuginfo] target(s) in 0.20 secs
|
Finished dev [unoptimized + debuginfo] target(s) in 0.20 secs
|
||||||
$ carnix -o hello.nix --src ./. Cargo.lock --standalone
|
$ carnix -o hello.nix --src ./. Cargo.lock --standalone
|
||||||
$ nix-build hello.nix
|
$ nix-build hello.nix -A hello_0_1_0
|
||||||
|
|
||||||
Now, the file produced by the call to `carnix`, called `hello.nix`, looks like:
|
Now, the file produced by the call to `carnix`, called `hello.nix`, looks like:
|
||||||
|
|
||||||
@ -276,6 +282,84 @@ features, we would write:
|
|||||||
|
|
||||||
Where `diesel.nix` is the file generated by Carnix, as explained above.
|
Where `diesel.nix` is the file generated by Carnix, as explained above.
|
||||||
|
|
||||||
|
|
||||||
|
## Setting Up `nix-shell`
|
||||||
|
Oftentimes you want to develop code from within `nix-shell`. Unfortunately
|
||||||
|
`buildRustCrate` does not support common `nix-shell` operations directly
|
||||||
|
(see [this issue](https://github.com/NixOS/nixpkgs/issues/37945))
|
||||||
|
so we will use `stdenv.mkDerivation` instead.
|
||||||
|
|
||||||
|
Using the example `hello` project above, we want to do the following:
|
||||||
|
- Have access to `cargo` and `rustc`
|
||||||
|
- Have the `openssl` library available to a crate through it's _normal_
|
||||||
|
compilation mechanism (`pkg-config`).
|
||||||
|
|
||||||
|
A typical `shell.nix` might look like:
|
||||||
|
|
||||||
|
```
|
||||||
|
with import <nixpkgs> {};
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "rust-env";
|
||||||
|
buildInputs = [
|
||||||
|
rustc cargo
|
||||||
|
|
||||||
|
# Example Additional Dependencies
|
||||||
|
pkgconfig openssl
|
||||||
|
];
|
||||||
|
|
||||||
|
# Set Environment Variables
|
||||||
|
RUST_BACKTRACE = 1;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
You should now be able to run the following:
|
||||||
|
```
|
||||||
|
$ nix-shell --pure
|
||||||
|
$ cargo build
|
||||||
|
$ cargo test
|
||||||
|
```
|
||||||
|
|
||||||
|
### Controlling Rust Version Inside `nix-shell`
|
||||||
|
To control your rust version (i.e. use nightly) from within `shell.nix` (or
|
||||||
|
other nix expressions) you can use the following `shell.nix`
|
||||||
|
|
||||||
|
```
|
||||||
|
# Latest Nightly
|
||||||
|
with import <nixpkgs> {};
|
||||||
|
let src = fetchFromGitHub {
|
||||||
|
owner = "mozilla";
|
||||||
|
repo = "nixpkgs-mozilla";
|
||||||
|
# commit from: 2018-03-27
|
||||||
|
rev = "2945b0b6b2fd19e7d23bac695afd65e320efcebe";
|
||||||
|
sha256 = "034m1dryrzh2lmjvk3c0krgip652dql46w5yfwpvh7gavd3iypyw";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
with import "${src.out}/rust-overlay.nix" pkgs pkgs;
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "rust-env";
|
||||||
|
buildInputs = [
|
||||||
|
# Note: to use use stable, just replace `nightly` with `stable`
|
||||||
|
latest.rustChannels.nightly.rust
|
||||||
|
|
||||||
|
# Add some extra dependencies from `pkgs`
|
||||||
|
pkgconfig openssl
|
||||||
|
];
|
||||||
|
|
||||||
|
# Set Environment Variables
|
||||||
|
RUST_BACKTRACE = 1;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Now run:
|
||||||
|
```
|
||||||
|
$ rustc --version
|
||||||
|
rustc 1.26.0-nightly (188e693b3 2018-03-26)
|
||||||
|
```
|
||||||
|
|
||||||
|
To see that you are using nightly.
|
||||||
|
|
||||||
|
|
||||||
## Using the Rust nightlies overlay
|
## Using the Rust nightlies overlay
|
||||||
|
|
||||||
Mozilla provides an overlay for nixpkgs to bring a nightly version of Rust into scope.
|
Mozilla provides an overlay for nixpkgs to bring a nightly version of Rust into scope.
|
||||||
|
@ -713,7 +713,7 @@ the <literal>inotify.py</literal> script in weechat-scripts requires
|
|||||||
D-Bus or libnotify, and the <literal>fish.py</literal> script requires
|
D-Bus or libnotify, and the <literal>fish.py</literal> script requires
|
||||||
pycrypto. To use these scripts, use the <literal>python</literal>
|
pycrypto. To use these scripts, use the <literal>python</literal>
|
||||||
plugin's <literal>withPackages</literal> attribute:
|
plugin's <literal>withPackages</literal> attribute:
|
||||||
<programlisting>weechat.override {configure = {availablePlugins, ...}: {
|
<programlisting>weechat.override { configure = {availablePlugins, ...}: {
|
||||||
plugins = with availablePlugins; [
|
plugins = with availablePlugins; [
|
||||||
(python.withPackages (ps: with ps; [ pycrypto python-dbus ]))
|
(python.withPackages (ps: with ps; [ pycrypto python-dbus ]))
|
||||||
];
|
];
|
||||||
@ -721,5 +721,15 @@ plugin's <literal>withPackages</literal> attribute:
|
|||||||
}
|
}
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</para>
|
</para>
|
||||||
|
<para>
|
||||||
|
In order to also keep all default plugins installed, it is possible to use
|
||||||
|
the following method:
|
||||||
|
<programlisting>weechat.override { configure = { availablePlugins, ... }: {
|
||||||
|
plugins = builtins.attrValues (availablePlugins // {
|
||||||
|
python = availablePlugins.python.withPackages (ps: with ps; [ pycrypto python-dbus ]);
|
||||||
|
});
|
||||||
|
}; }
|
||||||
|
</programlisting>
|
||||||
|
</para>
|
||||||
</section>
|
</section>
|
||||||
</chapter>
|
</chapter>
|
||||||
|
@ -248,6 +248,23 @@ table
|
|||||||
box-shadow: 0.4em 0.4em 0.5em #e0e0e0;
|
box-shadow: 0.4em 0.4em 0.5em #e0e0e0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
table.simplelist
|
||||||
|
{
|
||||||
|
text-align: left;
|
||||||
|
color: #005aa0;
|
||||||
|
border: 0;
|
||||||
|
padding: 5px;
|
||||||
|
background: #fffff5;
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: italic;
|
||||||
|
box-shadow: none;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.navheader table, div.navfooter table {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
div.affiliation
|
div.affiliation
|
||||||
{
|
{
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
|
@ -317,11 +317,11 @@ Additional information.
|
|||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
review uncommitted changes:
|
review uncommitted changes:
|
||||||
<screen>nix-shell -p nox --run nox-review wip</screen>
|
<screen>nix-shell -p nox --run "nox-review wip"</screen>
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
review changes from pull request number 12345:
|
review changes from pull request number 12345:
|
||||||
<screen>nix-shell -p nox --run nox-review pr 12345</screen>
|
<screen>nix-shell -p nox --run "nox-review pr 12345"</screen>
|
||||||
</para>
|
</para>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
|
@ -5,9 +5,11 @@
|
|||||||
*/
|
*/
|
||||||
let
|
let
|
||||||
|
|
||||||
callLibs = file: import file { inherit lib; };
|
inherit (import ./fixed-points.nix {}) makeExtensible;
|
||||||
|
|
||||||
lib = rec {
|
lib = makeExtensible (self: let
|
||||||
|
callLibs = file: import file { lib = self; };
|
||||||
|
in with self; {
|
||||||
|
|
||||||
# often used, or depending on very little
|
# often used, or depending on very little
|
||||||
trivial = callLibs ./trivial.nix;
|
trivial = callLibs ./trivial.nix;
|
||||||
@ -128,5 +130,5 @@ let
|
|||||||
mergeAttrsNoOverride mergeAttrByFunc mergeAttrsByFuncDefaults
|
mergeAttrsNoOverride mergeAttrByFunc mergeAttrsByFuncDefaults
|
||||||
mergeAttrsByFuncDefaultsClean mergeAttrBy
|
mergeAttrsByFuncDefaultsClean mergeAttrBy
|
||||||
prepareDerivationArgs nixType imap overridableDelayableArgs;
|
prepareDerivationArgs nixType imap overridableDelayableArgs;
|
||||||
};
|
});
|
||||||
in lib
|
in lib
|
||||||
|
@ -4,6 +4,12 @@
|
|||||||
* They all follow a similar interface:
|
* They all follow a similar interface:
|
||||||
* generator { config-attrs } data
|
* generator { config-attrs } data
|
||||||
*
|
*
|
||||||
|
* `config-attrs` are “holes” in the generators
|
||||||
|
* with sensible default implementations that
|
||||||
|
* can be overwritten. The default implementations
|
||||||
|
* are mostly generators themselves, called with
|
||||||
|
* their respective default values; they can be reused.
|
||||||
|
*
|
||||||
* Tests can be found in ./tests.nix
|
* Tests can be found in ./tests.nix
|
||||||
* Documentation in the manual, #sec-generators
|
* Documentation in the manual, #sec-generators
|
||||||
*/
|
*/
|
||||||
@ -20,6 +26,32 @@ in
|
|||||||
|
|
||||||
rec {
|
rec {
|
||||||
|
|
||||||
|
## -- HELPER FUNCTIONS & DEFAULTS --
|
||||||
|
|
||||||
|
/* Convert a value to a sensible default string representation.
|
||||||
|
* The builtin `toString` function has some strange defaults,
|
||||||
|
* suitable for bash scripts but not much else.
|
||||||
|
*/
|
||||||
|
mkValueStringDefault = {}: v: with builtins;
|
||||||
|
let err = t: v: abort
|
||||||
|
("generators.mkValueStringDefault: " +
|
||||||
|
"${t} not supported: ${toPretty {} v}");
|
||||||
|
in if isInt v then toString v
|
||||||
|
# we default to not quoting strings
|
||||||
|
else if isString v then v
|
||||||
|
# isString returns "1", which is not a good default
|
||||||
|
else if true == v then "true"
|
||||||
|
# here it returns to "", which is even less of a good default
|
||||||
|
else if false == v then "false"
|
||||||
|
else if null == v then "null"
|
||||||
|
# if you have lists you probably want to replace this
|
||||||
|
else if isList v then err "lists" v
|
||||||
|
# same as for lists, might want to replace
|
||||||
|
else if isAttrs v then err "attrsets" v
|
||||||
|
else if isFunction v then err "functions" v
|
||||||
|
else err "this value is" (toString v);
|
||||||
|
|
||||||
|
|
||||||
/* Generate a line of key k and value v, separated by
|
/* Generate a line of key k and value v, separated by
|
||||||
* character sep. If sep appears in k, it is escaped.
|
* character sep. If sep appears in k, it is escaped.
|
||||||
* Helper for synaxes with different separators.
|
* Helper for synaxes with different separators.
|
||||||
@ -30,11 +62,14 @@ rec {
|
|||||||
* > "f\:oo:bar"
|
* > "f\:oo:bar"
|
||||||
*/
|
*/
|
||||||
mkKeyValueDefault = {
|
mkKeyValueDefault = {
|
||||||
mkValueString ? toString
|
mkValueString ? mkValueStringDefault {}
|
||||||
}: sep: k: v:
|
}: sep: k: v:
|
||||||
"${libStr.escape [sep] k}${sep}${mkValueString v}";
|
"${libStr.escape [sep] k}${sep}${mkValueString v}";
|
||||||
|
|
||||||
|
|
||||||
|
## -- FILE FORMAT GENERATORS --
|
||||||
|
|
||||||
|
|
||||||
/* Generate a key-value-style config file from an attrset.
|
/* Generate a key-value-style config file from an attrset.
|
||||||
*
|
*
|
||||||
* mkKeyValue is the same as in toINI.
|
* mkKeyValue is the same as in toINI.
|
||||||
@ -98,6 +133,7 @@ rec {
|
|||||||
*/
|
*/
|
||||||
toYAML = {}@args: toJSON args;
|
toYAML = {}@args: toJSON args;
|
||||||
|
|
||||||
|
|
||||||
/* Pretty print a value, akin to `builtins.trace`.
|
/* Pretty print a value, akin to `builtins.trace`.
|
||||||
* Should probably be a builtin as well.
|
* Should probably be a builtin as well.
|
||||||
*/
|
*/
|
||||||
@ -108,8 +144,9 @@ rec {
|
|||||||
allowPrettyValues ? false
|
allowPrettyValues ? false
|
||||||
}@args: v: with builtins;
|
}@args: v: with builtins;
|
||||||
if isInt v then toString v
|
if isInt v then toString v
|
||||||
else if isBool v then (if v == true then "true" else "false")
|
else if isString v then ''"${libStr.escape [''"''] v}"''
|
||||||
else if isString v then "\"" + v + "\""
|
else if true == v then "true"
|
||||||
|
else if false == v then "false"
|
||||||
else if null == v then "null"
|
else if null == v then "null"
|
||||||
else if isFunction v then
|
else if isFunction v then
|
||||||
let fna = lib.functionArgs v;
|
let fna = lib.functionArgs v;
|
||||||
@ -132,6 +169,6 @@ rec {
|
|||||||
(name: value:
|
(name: value:
|
||||||
"${toPretty args name} = ${toPretty args value};") v)
|
"${toPretty args name} = ${toPretty args value};") v)
|
||||||
+ " }"
|
+ " }"
|
||||||
else abort "toPretty: should never happen (v = ${v})";
|
else abort "generators.toPretty: should never happen (v = ${v})";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,7 @@ rec {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
closed = closeModules (modules ++ [ internalModule ]) ({ inherit config options; lib = import ./.; } // specialArgs);
|
closed = closeModules (modules ++ [ internalModule ]) ({ inherit config options lib; } // specialArgs);
|
||||||
|
|
||||||
options = mergeModules prefix (reverseList (filterModules (specialArgs.modulesPath or "") closed));
|
options = mergeModules prefix (reverseList (filterModules (specialArgs.modulesPath or "") closed));
|
||||||
|
|
||||||
@ -660,7 +660,7 @@ rec {
|
|||||||
doRename = { from, to, visible, warn, use }:
|
doRename = { from, to, visible, warn, use }:
|
||||||
let
|
let
|
||||||
toOf = attrByPath to
|
toOf = attrByPath to
|
||||||
(abort "Renaming error: option `${showOption to}' does not exists.");
|
(abort "Renaming error: option `${showOption to}' does not exist.");
|
||||||
in
|
in
|
||||||
{ config, options, ... }:
|
{ config, options, ... }:
|
||||||
{ options = setAttrByPath from (mkOption {
|
{ options = setAttrByPath from (mkOption {
|
||||||
|
@ -207,6 +207,29 @@ runTests {
|
|||||||
expected = ''f\:oo:bar'';
|
expected = ''f\:oo:bar'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
testMkValueString = {
|
||||||
|
expr = let
|
||||||
|
vals = {
|
||||||
|
int = 42;
|
||||||
|
string = ''fo"o'';
|
||||||
|
bool = true;
|
||||||
|
bool2 = false;
|
||||||
|
null = null;
|
||||||
|
# float = 42.23; # floats are strange
|
||||||
|
};
|
||||||
|
in mapAttrs
|
||||||
|
(const (generators.mkValueStringDefault {}))
|
||||||
|
vals;
|
||||||
|
expected = {
|
||||||
|
int = "42";
|
||||||
|
string = ''fo"o'';
|
||||||
|
bool = "true";
|
||||||
|
bool2 = "false";
|
||||||
|
null = "null";
|
||||||
|
# float = "42.23" true false [ "bar" ] ]'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
testToKeyValue = {
|
testToKeyValue = {
|
||||||
expr = generators.toKeyValue {} {
|
expr = generators.toKeyValue {} {
|
||||||
key = "value";
|
key = "value";
|
||||||
@ -249,6 +272,8 @@ runTests {
|
|||||||
"section 1" = {
|
"section 1" = {
|
||||||
attribute1 = 5;
|
attribute1 = 5;
|
||||||
x = "Me-se JarJar Binx";
|
x = "Me-se JarJar Binx";
|
||||||
|
# booleans are converted verbatim by default
|
||||||
|
boolean = false;
|
||||||
};
|
};
|
||||||
"foo[]" = {
|
"foo[]" = {
|
||||||
"he\\h=he" = "this is okay";
|
"he\\h=he" = "this is okay";
|
||||||
@ -260,6 +285,7 @@ runTests {
|
|||||||
|
|
||||||
[section 1]
|
[section 1]
|
||||||
attribute1=5
|
attribute1=5
|
||||||
|
boolean=false
|
||||||
x=Me-se JarJar Binx
|
x=Me-se JarJar Binx
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -72,6 +72,11 @@
|
|||||||
github = "FireyFly";
|
github = "FireyFly";
|
||||||
name = "Jonas Höglund";
|
name = "Jonas Höglund";
|
||||||
};
|
};
|
||||||
|
Fresheyeball = {
|
||||||
|
email = "fresheyeball@gmail.com";
|
||||||
|
github = "fresheyeball";
|
||||||
|
name = "Isaac Shapira";
|
||||||
|
};
|
||||||
Gonzih = {
|
Gonzih = {
|
||||||
email = "gonzih@gmail.com";
|
email = "gonzih@gmail.com";
|
||||||
github = "Gonzih";
|
github = "Gonzih";
|
||||||
@ -512,6 +517,11 @@
|
|||||||
email = "sivaraman.balaji@gmail.com";
|
email = "sivaraman.balaji@gmail.com";
|
||||||
name = "Balaji Sivaraman";
|
name = "Balaji Sivaraman";
|
||||||
};
|
};
|
||||||
|
bandresen = {
|
||||||
|
email = "bandresen@gmail.com";
|
||||||
|
github = "bandresen";
|
||||||
|
name = "Benjamin Andresen";
|
||||||
|
};
|
||||||
barrucadu = {
|
barrucadu = {
|
||||||
email = "mike@barrucadu.co.uk";
|
email = "mike@barrucadu.co.uk";
|
||||||
github = "barrucadu";
|
github = "barrucadu";
|
||||||
@ -596,6 +606,11 @@
|
|||||||
github = "bjornfor";
|
github = "bjornfor";
|
||||||
name = "Bjørn Forsman";
|
name = "Bjørn Forsman";
|
||||||
};
|
};
|
||||||
|
bkchr = {
|
||||||
|
email = "nixos@kchr.de";
|
||||||
|
github = "bkchr";
|
||||||
|
name = "Bastian Köcher";
|
||||||
|
};
|
||||||
bluescreen303 = {
|
bluescreen303 = {
|
||||||
email = "mathijs@bluescreen303.nl";
|
email = "mathijs@bluescreen303.nl";
|
||||||
github = "bluescreen303";
|
github = "bluescreen303";
|
||||||
@ -690,6 +705,11 @@
|
|||||||
github = "carlsverre";
|
github = "carlsverre";
|
||||||
name = "Carl Sverre";
|
name = "Carl Sverre";
|
||||||
};
|
};
|
||||||
|
cartr = {
|
||||||
|
email = "carter.sande@duodecima.technology";
|
||||||
|
github = "cartr";
|
||||||
|
name = "Carter Sande";
|
||||||
|
};
|
||||||
casey = {
|
casey = {
|
||||||
email = "casey@rodarmor.net";
|
email = "casey@rodarmor.net";
|
||||||
github = "casey";
|
github = "casey";
|
||||||
@ -1171,6 +1191,11 @@
|
|||||||
github = "ellis";
|
github = "ellis";
|
||||||
name = "Ellis Whitehead";
|
name = "Ellis Whitehead";
|
||||||
};
|
};
|
||||||
|
elvishjerricco = {
|
||||||
|
email = "elvishjerricco@gmail.com";
|
||||||
|
github = "ElvishJerricco";
|
||||||
|
name = "Will Fancher";
|
||||||
|
};
|
||||||
enzime = {
|
enzime = {
|
||||||
email = "enzime@users.noreply.github.com";
|
email = "enzime@users.noreply.github.com";
|
||||||
github = "enzime";
|
github = "enzime";
|
||||||
@ -1996,6 +2021,11 @@
|
|||||||
github = "leenaars";
|
github = "leenaars";
|
||||||
name = "Michiel Leenaars";
|
name = "Michiel Leenaars";
|
||||||
};
|
};
|
||||||
|
leo60228 = {
|
||||||
|
email = "iakornfeld@gmail.com";
|
||||||
|
github = "leo60228";
|
||||||
|
name = "leo60228";
|
||||||
|
};
|
||||||
leonardoce = {
|
leonardoce = {
|
||||||
email = "leonardo.cecchi@gmail.com";
|
email = "leonardo.cecchi@gmail.com";
|
||||||
github = "leonardoce";
|
github = "leonardoce";
|
||||||
@ -2964,6 +2994,11 @@
|
|||||||
github = "redbaron";
|
github = "redbaron";
|
||||||
name = "Maxim Ivanov";
|
name = "Maxim Ivanov";
|
||||||
};
|
};
|
||||||
|
redfish64 = {
|
||||||
|
email = "engler@gmail.com";
|
||||||
|
github = "redfish64";
|
||||||
|
name = "Tim Engler";
|
||||||
|
};
|
||||||
redvers = {
|
redvers = {
|
||||||
email = "red@infect.me";
|
email = "red@infect.me";
|
||||||
github = "redvers";
|
github = "redvers";
|
||||||
@ -3406,6 +3441,11 @@
|
|||||||
github = "suvash";
|
github = "suvash";
|
||||||
name = "Suvash Thapaliya";
|
name = "Suvash Thapaliya";
|
||||||
};
|
};
|
||||||
|
sveitser = {
|
||||||
|
email = "sveitser@gmail.com";
|
||||||
|
github = "sveitser";
|
||||||
|
name = "Mathis Antony";
|
||||||
|
};
|
||||||
svsdep = {
|
svsdep = {
|
||||||
email = "svsdep@gmail.com";
|
email = "svsdep@gmail.com";
|
||||||
github = "svsdep";
|
github = "svsdep";
|
||||||
@ -3586,6 +3626,11 @@
|
|||||||
github = "tnias";
|
github = "tnias";
|
||||||
name = "Philipp Bartsch";
|
name = "Philipp Bartsch";
|
||||||
};
|
};
|
||||||
|
tobim = {
|
||||||
|
email = "nix@tobim.fastmail.fm";
|
||||||
|
github = "tobimpub";
|
||||||
|
name = "Tobias Mayer";
|
||||||
|
};
|
||||||
tohl = {
|
tohl = {
|
||||||
email = "tom@logand.com";
|
email = "tom@logand.com";
|
||||||
github = "tohl";
|
github = "tohl";
|
||||||
@ -3961,6 +4006,11 @@
|
|||||||
github = "yrashk";
|
github = "yrashk";
|
||||||
name = "Yurii Rashkovskii";
|
name = "Yurii Rashkovskii";
|
||||||
};
|
};
|
||||||
|
ysndr = {
|
||||||
|
email = "me@ysndr.de";
|
||||||
|
github = "ysndr";
|
||||||
|
name = "Yannik Sander";
|
||||||
|
};
|
||||||
yuriaisaka = {
|
yuriaisaka = {
|
||||||
email = "yuri.aisaka+nix@gmail.com";
|
email = "yuri.aisaka+nix@gmail.com";
|
||||||
github = "yuriaisaka";
|
github = "yuriaisaka";
|
||||||
|
@ -100,7 +100,10 @@ sub uploadFile {
|
|||||||
sub redirect {
|
sub redirect {
|
||||||
my ($name, $dest) = @_;
|
my ($name, $dest) = @_;
|
||||||
#print STDERR "linking $name to $dest...\n";
|
#print STDERR "linking $name to $dest...\n";
|
||||||
$bucket->add_key($name, "", { 'x-amz-website-redirect-location' => "/" . $dest })
|
$bucket->add_key($name, "", {
|
||||||
|
'x-amz-website-redirect-location' => "/" . $dest,
|
||||||
|
'x-amz-acl' => "public-read"
|
||||||
|
})
|
||||||
or die "failed to create redirect from $name to $dest\n";
|
or die "failed to create redirect from $name to $dest\n";
|
||||||
$cache{$name} = 1;
|
$cache{$name} = 1;
|
||||||
}
|
}
|
||||||
@ -112,7 +115,10 @@ sub uploadFile {
|
|||||||
|
|
||||||
# Upload the file as sha512/<hash-in-base-16>.
|
# Upload the file as sha512/<hash-in-base-16>.
|
||||||
print STDERR "uploading $fn to $mainKey...\n";
|
print STDERR "uploading $fn to $mainKey...\n";
|
||||||
$bucket->add_key_filename($mainKey, $fn, { 'x-amz-meta-original-name' => $name })
|
$bucket->add_key_filename($mainKey, $fn, {
|
||||||
|
'x-amz-meta-original-name' => $name,
|
||||||
|
'x-amz-acl' => "public-read"
|
||||||
|
})
|
||||||
or die "failed to upload $fn to $mainKey\n";
|
or die "failed to upload $fn to $mainKey\n";
|
||||||
$cache{$mainKey} = 1;
|
$cache{$mainKey} = 1;
|
||||||
}
|
}
|
||||||
|
@ -124,11 +124,12 @@ let
|
|||||||
manualXsltprocOptions = toString [
|
manualXsltprocOptions = toString [
|
||||||
"--param section.autolabel 1"
|
"--param section.autolabel 1"
|
||||||
"--param section.label.includes.component.label 1"
|
"--param section.label.includes.component.label 1"
|
||||||
"--stringparam html.stylesheet style.css"
|
"--stringparam html.stylesheet 'style.css overrides.css highlightjs/mono-blue.css'"
|
||||||
|
"--stringparam html.script './highlightjs/highlight.pack.js ./highlightjs/loader.js'"
|
||||||
"--param xref.with.number.and.title 1"
|
"--param xref.with.number.and.title 1"
|
||||||
"--param toc.section.depth 3"
|
"--param toc.section.depth 3"
|
||||||
"--stringparam admon.style ''"
|
"--stringparam admon.style ''"
|
||||||
"--stringparam callout.graphics.extension .gif"
|
"--stringparam callout.graphics.extension .svg"
|
||||||
"--stringparam current.docid manual"
|
"--stringparam current.docid manual"
|
||||||
"--param chunk.section.depth 0"
|
"--param chunk.section.depth 0"
|
||||||
"--param chunk.first.sections 1"
|
"--param chunk.first.sections 1"
|
||||||
@ -260,9 +261,11 @@ in rec {
|
|||||||
${manual-combined}/manual-combined.xml
|
${manual-combined}/manual-combined.xml
|
||||||
|
|
||||||
mkdir -p $dst/images/callouts
|
mkdir -p $dst/images/callouts
|
||||||
cp ${docbook5_xsl}/xml/xsl/docbook/images/callouts/*.gif $dst/images/callouts/
|
cp ${docbook5_xsl}/xml/xsl/docbook/images/callouts/*.svg $dst/images/callouts/
|
||||||
|
|
||||||
cp ${./style.css} $dst/style.css
|
cp ${../../../doc/style.css} $dst/style.css
|
||||||
|
cp ${../../../doc/overrides.css} $dst/overrides.css
|
||||||
|
cp -r ${pkgs.documentation-highlighter} $dst/highlightjs
|
||||||
|
|
||||||
mkdir -p $out/nix-support
|
mkdir -p $out/nix-support
|
||||||
echo "nix-build out $out" >> $out/nix-support/hydra-build-products
|
echo "nix-build out $out" >> $out/nix-support/hydra-build-products
|
||||||
@ -286,7 +289,7 @@ in rec {
|
|||||||
${manual-combined}/manual-combined.xml
|
${manual-combined}/manual-combined.xml
|
||||||
|
|
||||||
mkdir -p $dst/epub/OEBPS/images/callouts
|
mkdir -p $dst/epub/OEBPS/images/callouts
|
||||||
cp -r ${docbook5_xsl}/xml/xsl/docbook/images/callouts/*.gif $dst/epub/OEBPS/images/callouts # */
|
cp -r ${docbook5_xsl}/xml/xsl/docbook/images/callouts/*.svg $dst/epub/OEBPS/images/callouts # */
|
||||||
echo "application/epub+zip" > mimetype
|
echo "application/epub+zip" > mimetype
|
||||||
manual="$dst/nixos-manual.epub"
|
manual="$dst/nixos-manual.epub"
|
||||||
zip -0Xq "$manual" mimetype
|
zip -0Xq "$manual" mimetype
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
version="5.0"
|
version="5.0"
|
||||||
xml:id="sec-release-18.03">
|
xml:id="sec-release-18.03">
|
||||||
|
|
||||||
<title>Release 18.03 (“Impala”, 2018/03/??)</title>
|
<title>Release 18.03 (“Impala”, 2018/04/04)</title>
|
||||||
|
|
||||||
<section xmlns="http://docbook.org/ns/docbook"
|
<section xmlns="http://docbook.org/ns/docbook"
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
@ -18,6 +18,20 @@
|
|||||||
has the following highlights: </para>
|
has the following highlights: </para>
|
||||||
|
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
End of support is planned for end of October 2018, handing over to 18.09.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Platform support: x86_64-linux and x86_64-darwin since release time (the latter isn't NixOS, really).
|
||||||
|
Binaries for aarch64-linux are available, but no channel exists yet, as it's waiting for some test fixes, etc.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Nix now defaults to 2.0; see its
|
Nix now defaults to 2.0; see its
|
||||||
@ -27,13 +41,13 @@ has the following highlights: </para>
|
|||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Linux kernel defaults to the 4.14 branch (it was 4.9).
|
Core version changes: linux: 4.9 -> 4.14, glibc: 2.25 -> 2.26, gcc: 6 -> 7, systemd: 234 -> 237.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
GCC defaults to 7.x (it was 6.x).
|
Desktop version changes: gnome: 3.24 -> 3.26, (KDE) plasma-desktop: 5.10 -> 5.12.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
@ -59,13 +73,7 @@ has the following highlights: </para>
|
|||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>PHP now defaults to PHP 7.2, updated from 7.1.</para>
|
||||||
The GNOME version is now 3.26.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>PHP now defaults to PHP 7.2</para>
|
|
||||||
</listitem>
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
|
|
||||||
@ -81,9 +89,66 @@ has the following highlights: </para>
|
|||||||
<para>The following new services were added since the last release:</para>
|
<para>The following new services were added since the last release:</para>
|
||||||
|
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
<listitem>
|
<listitem><para><literal>./config/krb5/default.nix</literal></para></listitem>
|
||||||
<para></para>
|
<listitem><para><literal>./hardware/digitalbitbox.nix</literal></para></listitem>
|
||||||
</listitem>
|
<listitem><para><literal>./misc/label.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./programs/ccache.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./programs/criu.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./programs/digitalbitbox/default.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./programs/less.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./programs/npm.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./programs/plotinus.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./programs/rootston.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./programs/systemtap.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./programs/sway.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./programs/udevil.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./programs/way-cooler.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./programs/yabar.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./programs/zsh/zsh-autoenv.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/backup/borgbackup.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/backup/crashplan-small-business.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/desktops/dleyna-renderer.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/desktops/dleyna-server.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/desktops/pipewire.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/desktops/gnome3/chrome-gnome-shell.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/desktops/gnome3/tracker-miners.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/hardware/fwupd.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/hardware/interception-tools.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/hardware/u2f.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/hardware/usbmuxd.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/mail/clamsmtp.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/mail/dkimproxy-out.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/mail/pfix-srsd.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/misc/gitea.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/misc/home-assistant.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/misc/ihaskell.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/misc/logkeys.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/misc/novacomd.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/misc/osrm.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/misc/plexpy.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/misc/pykms.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/misc/tzupdate.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/monitoring/fusion-inventory.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/monitoring/prometheus/exporters.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/network-filesystems/beegfs.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/network-filesystems/davfs2.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/network-filesystems/openafs/client.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/network-filesystems/openafs/server.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/network-filesystems/ceph.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/networking/aria2.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/networking/monero.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/networking/nghttpx/default.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/networking/nixops-dns.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/networking/rxe.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/networking/stunnel.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/web-apps/matomo.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/web-apps/restya-board.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/web-servers/mighttpd2.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./services/x11/fractalart.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./system/boot/binfmt.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./system/boot/grow-partition.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./tasks/filesystems/ecryptfs.nix</literal></para></listitem>
|
||||||
|
<listitem><para><literal>./virtualisation/hyperv-guest.nix</literal></para></listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
@ -174,7 +239,7 @@ following incompatible changes:</para>
|
|||||||
the <literal>openssh_with_kerberos</literal> package
|
the <literal>openssh_with_kerberos</literal> package
|
||||||
is now a deprecated alias.
|
is now a deprecated alias.
|
||||||
If you do not want Kerberos support,
|
If you do not want Kerberos support,
|
||||||
you can do <literal>openssh.override { withKerboros = false; }</literal>.
|
you can do <literal>openssh.override { withKerberos = false; }</literal>.
|
||||||
Note, this also applies to the <literal>openssh_hpn</literal> package.
|
Note, this also applies to the <literal>openssh_hpn</literal> package.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
@ -418,15 +483,6 @@ following incompatible changes:</para>
|
|||||||
have been added to set up static routing.
|
have been added to set up static routing.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
The option <option>services.xserver.desktopManager.default</option> is now
|
|
||||||
<literal>none</literal> by default. An assertion failure is thrown if WM's
|
|
||||||
and DM's default are <literal>none</literal>.
|
|
||||||
To explicitly run a plain X session without and DM or WM, the newly
|
|
||||||
introduced option <option>services.xserver.plainX</option> must be set to true.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
The option <option>services.logstash.listenAddress</option> is now <literal>127.0.0.1</literal> by default.
|
The option <option>services.logstash.listenAddress</option> is now <literal>127.0.0.1</literal> by default.
|
||||||
|
@ -1,267 +0,0 @@
|
|||||||
/* Copied from http://bakefile.sourceforge.net/, which appears
|
|
||||||
licensed under the GNU GPL. */
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
Basic headers and text:
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
body
|
|
||||||
{
|
|
||||||
font-family: "Nimbus Sans L", sans-serif;
|
|
||||||
background: white;
|
|
||||||
margin: 2em 1em 2em 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1, h2, h3, h4
|
|
||||||
{
|
|
||||||
color: #005aa0;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 /* title */
|
|
||||||
{
|
|
||||||
font-size: 200%;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 /* chapters, appendices, subtitle */
|
|
||||||
{
|
|
||||||
font-size: 180%;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Extra space between chapters, appendices. */
|
|
||||||
div.chapter > div.titlepage h2, div.appendix > div.titlepage h2
|
|
||||||
{
|
|
||||||
margin-top: 1.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.section > div.titlepage h2 /* sections */
|
|
||||||
{
|
|
||||||
font-size: 150%;
|
|
||||||
margin-top: 1.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 /* subsections */
|
|
||||||
{
|
|
||||||
font-size: 125%;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.simplesect h2
|
|
||||||
{
|
|
||||||
font-size: 110%;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.appendix h3
|
|
||||||
{
|
|
||||||
font-size: 150%;
|
|
||||||
margin-top: 1.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.refnamediv h2, div.refsynopsisdiv h2, div.refsection h2 /* refentry parts */
|
|
||||||
{
|
|
||||||
margin-top: 1.4em;
|
|
||||||
font-size: 125%;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.refsection h3
|
|
||||||
{
|
|
||||||
font-size: 110%;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
Examples:
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
div.example
|
|
||||||
{
|
|
||||||
border: 1px solid #b0b0b0;
|
|
||||||
padding: 6px 6px;
|
|
||||||
margin-left: 1.5em;
|
|
||||||
margin-right: 1.5em;
|
|
||||||
background: #f4f4f8;
|
|
||||||
border-radius: 0.4em;
|
|
||||||
box-shadow: 0.4em 0.4em 0.5em #e0e0e0;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.example p.title
|
|
||||||
{
|
|
||||||
margin-top: 0em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.example pre
|
|
||||||
{
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
Screen dumps:
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
pre.screen, pre.programlisting
|
|
||||||
{
|
|
||||||
border: 1px solid #b0b0b0;
|
|
||||||
padding: 3px 3px;
|
|
||||||
margin-left: 1.5em;
|
|
||||||
margin-right: 1.5em;
|
|
||||||
color: #600000;
|
|
||||||
background: #f4f4f8;
|
|
||||||
font-family: monospace;
|
|
||||||
border-radius: 0.4em;
|
|
||||||
box-shadow: 0.4em 0.4em 0.5em #e0e0e0;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.example pre.programlisting
|
|
||||||
{
|
|
||||||
border: 0px;
|
|
||||||
padding: 0 0;
|
|
||||||
margin: 0 0 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
Notes, warnings etc:
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
.note, .warning
|
|
||||||
{
|
|
||||||
border: 1px solid #b0b0b0;
|
|
||||||
padding: 3px 3px;
|
|
||||||
margin-left: 1.5em;
|
|
||||||
margin-right: 1.5em;
|
|
||||||
margin-bottom: 1em;
|
|
||||||
padding: 0.3em 0.3em 0.3em 0.3em;
|
|
||||||
background: #fffff5;
|
|
||||||
border-radius: 0.4em;
|
|
||||||
box-shadow: 0.4em 0.4em 0.5em #e0e0e0;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.note, div.warning
|
|
||||||
{
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.note h3, div.warning h3
|
|
||||||
{
|
|
||||||
color: red;
|
|
||||||
font-size: 100%;
|
|
||||||
padding-right: 0.5em;
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.note p, div.warning p
|
|
||||||
{
|
|
||||||
margin-bottom: 0em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.note h3 + p, div.warning h3 + p
|
|
||||||
{
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.note h3
|
|
||||||
{
|
|
||||||
color: blue;
|
|
||||||
font-size: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.navfooter *
|
|
||||||
{
|
|
||||||
font-size: 90%;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
Links colors and highlighting:
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
a { text-decoration: none; }
|
|
||||||
a:hover { text-decoration: underline; }
|
|
||||||
a:link { color: #0048b3; }
|
|
||||||
a:visited { color: #002a6a; }
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
Table of contents:
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
div.toc
|
|
||||||
{
|
|
||||||
font-size: 90%;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.toc dl
|
|
||||||
{
|
|
||||||
margin-top: 0em;
|
|
||||||
margin-bottom: 0em;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
Special elements:
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
tt, code
|
|
||||||
{
|
|
||||||
color: #400000;
|
|
||||||
}
|
|
||||||
|
|
||||||
.term
|
|
||||||
{
|
|
||||||
font-weight: bold;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
div.variablelist dd p, div.glosslist dd p
|
|
||||||
{
|
|
||||||
margin-top: 0em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.variablelist dd, div.glosslist dd
|
|
||||||
{
|
|
||||||
margin-left: 1.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.glosslist dt
|
|
||||||
{
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
|
|
||||||
.varname
|
|
||||||
{
|
|
||||||
color: #400000;
|
|
||||||
}
|
|
||||||
|
|
||||||
span.command strong
|
|
||||||
{
|
|
||||||
font-weight: normal;
|
|
||||||
color: #400000;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.calloutlist table
|
|
||||||
{
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
table
|
|
||||||
{
|
|
||||||
border-collapse: collapse;
|
|
||||||
box-shadow: 0.4em 0.4em 0.5em #e0e0e0;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.simplelist
|
|
||||||
{
|
|
||||||
text-align: left;
|
|
||||||
color: #005aa0;
|
|
||||||
border: 0;
|
|
||||||
padding: 5px;
|
|
||||||
background: #fffff5;
|
|
||||||
font-weight: normal;
|
|
||||||
font-style: italic;
|
|
||||||
box-shadow: none;
|
|
||||||
margin-bottom: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.navheader table, div.navfooter table {
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
@ -1,4 +1,4 @@
|
|||||||
{ stdenv, perl, xz, pathsFromGraph
|
{ stdenv, perl, pixz, pathsFromGraph
|
||||||
|
|
||||||
, # The file name of the resulting tarball
|
, # The file name of the resulting tarball
|
||||||
fileName ? "nixos-system-${stdenv.system}"
|
fileName ? "nixos-system-${stdenv.system}"
|
||||||
@ -21,14 +21,20 @@
|
|||||||
|
|
||||||
# Extra tar arguments
|
# Extra tar arguments
|
||||||
, extraArgs ? ""
|
, extraArgs ? ""
|
||||||
|
# Command used for compression
|
||||||
|
, compressCommand ? "pixz"
|
||||||
|
# Extension for the compressed tarball
|
||||||
|
, compressionExtension ? ".xz"
|
||||||
|
# extra inputs, like the compressor to use
|
||||||
|
, extraInputs ? [ pixz ]
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
name = "tarball";
|
name = "tarball";
|
||||||
builder = ./make-system-tarball.sh;
|
builder = ./make-system-tarball.sh;
|
||||||
buildInputs = [perl xz];
|
buildInputs = [ perl ] ++ extraInputs;
|
||||||
|
|
||||||
inherit fileName pathsFromGraph extraArgs extraCommands;
|
inherit fileName pathsFromGraph extraArgs extraCommands compressCommand;
|
||||||
|
|
||||||
# !!! should use XML.
|
# !!! should use XML.
|
||||||
sources = map (x: x.source) contents;
|
sources = map (x: x.source) contents;
|
||||||
@ -41,4 +47,6 @@ stdenv.mkDerivation {
|
|||||||
# For obtaining the closure of `storeContents'.
|
# For obtaining the closure of `storeContents'.
|
||||||
exportReferencesGraph =
|
exportReferencesGraph =
|
||||||
map (x: [("closure-" + baseNameOf x.object) x.object]) storeContents;
|
map (x: [("closure-" + baseNameOf x.object) x.object]) storeContents;
|
||||||
|
|
||||||
|
extension = compressionExtension;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
source $stdenv/setup
|
source $stdenv/setup
|
||||||
set -x
|
|
||||||
|
|
||||||
sources_=($sources)
|
sources_=($sources)
|
||||||
targets_=($targets)
|
targets_=($targets)
|
||||||
@ -54,8 +53,8 @@ mkdir -p $out/tarball
|
|||||||
|
|
||||||
rm env-vars
|
rm env-vars
|
||||||
|
|
||||||
tar --sort=name --mtime='@1' --owner=0 --group=0 --numeric-owner -cvJf $out/tarball/$fileName.tar.xz * $extraArgs
|
time tar --sort=name --mtime='@1' --owner=0 --group=0 --numeric-owner -c * $extraArgs | $compressCommand > $out/tarball/$fileName.tar${extension}
|
||||||
|
|
||||||
mkdir -p $out/nix-support
|
mkdir -p $out/nix-support
|
||||||
echo $system > $out/nix-support/system
|
echo $system > $out/nix-support/system
|
||||||
echo "file system-tarball $out/tarball/$fileName.tar.xz" > $out/nix-support/hydra-build-products
|
echo "file system-tarball $out/tarball/$fileName.tar${extension}" > $out/nix-support/hydra-build-products
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
#
|
#
|
||||||
# $ nix-build ./option-usage.nix --argstr testOption service.xserver.enable -A txt -o service.xserver.enable._txt
|
# $ nix-build ./option-usage.nix --argstr testOption service.xserver.enable -A txt -o service.xserver.enable._txt
|
||||||
#
|
#
|
||||||
# otther target exists such as, `dotContent`, `dot`, and `pdf`. If you are
|
# Other targets exists such as `dotContent`, `dot`, and `pdf`. If you are
|
||||||
# looking for the option usage of multiple options, you can provide a list
|
# looking for the option usage of multiple options, you can provide a list
|
||||||
# as argument.
|
# as argument.
|
||||||
#
|
#
|
||||||
@ -35,7 +35,7 @@
|
|||||||
# value is replaced by a `throw` statement which is caught by the `tryEval`
|
# value is replaced by a `throw` statement which is caught by the `tryEval`
|
||||||
# evaluation of each option value.
|
# evaluation of each option value.
|
||||||
#
|
#
|
||||||
# We then compare the result of the evluation of the original module, with
|
# We then compare the result of the evaluation of the original module, with
|
||||||
# the result of the second evaluation, and consider that the new failures are
|
# the result of the second evaluation, and consider that the new failures are
|
||||||
# caused by our mutation of the `config` argument.
|
# caused by our mutation of the `config` argument.
|
||||||
#
|
#
|
||||||
@ -62,7 +62,7 @@ let
|
|||||||
"_module.args"
|
"_module.args"
|
||||||
|
|
||||||
# For some reasons which we yet have to investigate, some options cannot
|
# For some reasons which we yet have to investigate, some options cannot
|
||||||
# be replaced by a throw without cuasing a non-catchable failure.
|
# be replaced by a throw without causing a non-catchable failure.
|
||||||
"networking.bonds"
|
"networking.bonds"
|
||||||
"networking.bridges"
|
"networking.bridges"
|
||||||
"networking.interfaces"
|
"networking.interfaces"
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
BUCKET_NAME="${BUCKET_NAME:-nixos-images}"
|
BUCKET_NAME="${BUCKET_NAME:-nixos-cloud-images}"
|
||||||
TIMESTAMP="$(date +%Y%m%d%H%M)"
|
TIMESTAMP="$(date +%Y%m%d%H%M)"
|
||||||
export TIMESTAMP
|
export TIMESTAMP
|
||||||
|
|
||||||
@ -19,5 +19,5 @@ img_name=$(basename "$img_path")
|
|||||||
img_id=$(echo "$img_name" | sed 's|.raw.tar.gz$||;s|\.|-|g;s|_|-|g')
|
img_id=$(echo "$img_name" | sed 's|.raw.tar.gz$||;s|\.|-|g;s|_|-|g')
|
||||||
if ! gsutil ls "gs://${BUCKET_NAME}/$img_name"; then
|
if ! gsutil ls "gs://${BUCKET_NAME}/$img_name"; then
|
||||||
gsutil cp "$img_path" "gs://${BUCKET_NAME}/$img_name"
|
gsutil cp "$img_path" "gs://${BUCKET_NAME}/$img_name"
|
||||||
|
gsutil acl ch -u AllUsers:R "gs://${BUCKET_NAME}/$img_name"
|
||||||
fi
|
fi
|
||||||
gcloud compute images create "$img_id" --source-uri "gs://${BUCKET_NAME}/$img_name"
|
|
||||||
|
@ -17,23 +17,23 @@ let
|
|||||||
resolved = canLoadExternalModules && config.services.resolved.enable;
|
resolved = canLoadExternalModules && config.services.resolved.enable;
|
||||||
|
|
||||||
hostArray = [ "files" ]
|
hostArray = [ "files" ]
|
||||||
++ optionals mymachines [ "mymachines" ]
|
++ optional mymachines "mymachines"
|
||||||
++ optionals nssmdns [ "mdns_minimal [NOTFOUND=return]" ]
|
++ optional nssmdns "mdns_minimal [NOTFOUND=return]"
|
||||||
++ optionals nsswins [ "wins" ]
|
++ optional nsswins "wins"
|
||||||
++ optionals resolved ["resolve [!UNAVAIL=return]"]
|
++ optional resolved "resolve [!UNAVAIL=return]"
|
||||||
++ [ "dns" ]
|
++ [ "dns" ]
|
||||||
++ optionals nssmdns [ "mdns" ]
|
++ optional nssmdns "mdns"
|
||||||
++ optionals myhostname ["myhostname" ];
|
++ optional myhostname "myhostname";
|
||||||
|
|
||||||
passwdArray = [ "files" ]
|
passwdArray = [ "files" ]
|
||||||
++ optional sssd "sss"
|
++ optional sssd "sss"
|
||||||
++ optionals ldap [ "ldap" ]
|
++ optional ldap "ldap"
|
||||||
++ optionals mymachines [ "mymachines" ]
|
++ optional mymachines "mymachines"
|
||||||
++ [ "systemd" ];
|
++ [ "systemd" ];
|
||||||
|
|
||||||
shadowArray = [ "files" ]
|
shadowArray = [ "files" ]
|
||||||
++ optional sssd "sss"
|
++ optional sssd "sss"
|
||||||
++ optionals ldap [ "ldap" ];
|
++ optional ldap "ldap";
|
||||||
|
|
||||||
servicesArray = [ "files" ]
|
servicesArray = [ "files" ]
|
||||||
++ optional sssd "sss";
|
++ optional sssd "sss";
|
||||||
|
@ -109,7 +109,6 @@ in
|
|||||||
"/sbin"
|
"/sbin"
|
||||||
"/share/applications"
|
"/share/applications"
|
||||||
"/share/desktop-directories"
|
"/share/desktop-directories"
|
||||||
"/share/doc"
|
|
||||||
"/share/emacs"
|
"/share/emacs"
|
||||||
"/share/icons"
|
"/share/icons"
|
||||||
"/share/menus"
|
"/share/menus"
|
||||||
|
@ -35,6 +35,7 @@ let
|
|||||||
|
|
||||||
name = mkOption {
|
name = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
|
apply = x: assert (builtins.stringLength x < 32 || abort "Username '${x}' is longer than 31 characters which is not allowed!"); x;
|
||||||
description = ''
|
description = ''
|
||||||
The name of the user account. If undefined, the name of the
|
The name of the user account. If undefined, the name of the
|
||||||
attribute set will be used.
|
attribute set will be used.
|
||||||
@ -91,6 +92,7 @@ let
|
|||||||
|
|
||||||
group = mkOption {
|
group = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
|
apply = x: assert (builtins.stringLength x < 17 || abort "Group name '${x}' is longer than 16 characters which is not allowed!"); x;
|
||||||
default = "nogroup";
|
default = "nogroup";
|
||||||
description = "The user's primary group.";
|
description = "The user's primary group.";
|
||||||
};
|
};
|
||||||
@ -502,9 +504,6 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Install all the user shells
|
|
||||||
environment.systemPackages = systemShells;
|
|
||||||
|
|
||||||
users.groups = {
|
users.groups = {
|
||||||
root.gid = ids.gids.root;
|
root.gid = ids.gids.root;
|
||||||
wheel.gid = ids.gids.wheel;
|
wheel.gid = ids.gids.wheel;
|
||||||
@ -541,14 +540,29 @@ in {
|
|||||||
# for backwards compatibility
|
# for backwards compatibility
|
||||||
system.activationScripts.groups = stringAfter [ "users" ] "";
|
system.activationScripts.groups = stringAfter [ "users" ] "";
|
||||||
|
|
||||||
environment.etc."subuid" = {
|
# Install all the user shells
|
||||||
text = subuidFile;
|
environment.systemPackages = systemShells;
|
||||||
mode = "0644";
|
|
||||||
};
|
environment.etc = {
|
||||||
environment.etc."subgid" = {
|
"subuid" = {
|
||||||
text = subgidFile;
|
text = subuidFile;
|
||||||
mode = "0644";
|
mode = "0644";
|
||||||
};
|
};
|
||||||
|
"subgid" = {
|
||||||
|
text = subgidFile;
|
||||||
|
mode = "0644";
|
||||||
|
};
|
||||||
|
} // (mapAttrs' (name: { packages, ... }: {
|
||||||
|
name = "profiles/per-user/${name}";
|
||||||
|
value.source = pkgs.buildEnv {
|
||||||
|
name = "user-environment";
|
||||||
|
paths = packages;
|
||||||
|
inherit (config.environment) pathsToLink extraOutputsToInstall;
|
||||||
|
inherit (config.system.path) ignoreCollisions postBuild;
|
||||||
|
};
|
||||||
|
}) (filterAttrs (_: u: u.packages != []) cfg.users));
|
||||||
|
|
||||||
|
environment.profiles = [ "/etc/profiles/per-user/$USER" ];
|
||||||
|
|
||||||
assertions = [
|
assertions = [
|
||||||
{ assertion = !cfg.enforceIdUniqueness || (uidsAreUnique && gidsAreUnique);
|
{ assertion = !cfg.enforceIdUniqueness || (uidsAreUnique && gidsAreUnique);
|
||||||
@ -579,22 +593,4 @@ in {
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
imports =
|
|
||||||
[ (mkAliasOptionModule [ "users" "extraUsers" ] [ "users" "users" ])
|
|
||||||
(mkAliasOptionModule [ "users" "extraGroups" ] [ "users" "groups" ])
|
|
||||||
{
|
|
||||||
environment = {
|
|
||||||
etc = mapAttrs' (name: { packages, ... }: {
|
|
||||||
name = "profiles/per-user/${name}";
|
|
||||||
value.source = pkgs.buildEnv {
|
|
||||||
name = "user-environment";
|
|
||||||
paths = packages;
|
|
||||||
inherit (config.environment) pathsToLink extraOutputsToInstall;
|
|
||||||
inherit (config.system.path) ignoreCollisions postBuild;
|
|
||||||
};
|
|
||||||
}) (filterAttrs (_: { packages, ... }: packages != []) cfg.users);
|
|
||||||
profiles = ["/etc/profiles/per-user/$USER"];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
@ -21,9 +21,6 @@ in
|
|||||||
"it cannot be cross compiled";
|
"it cannot be cross compiled";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Needed by RPi firmware
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
|
|
||||||
boot.loader.grub.enable = false;
|
boot.loader.grub.enable = false;
|
||||||
boot.loader.generic-extlinux-compatible.enable = true;
|
boot.loader.generic-extlinux-compatible.enable = true;
|
||||||
|
|
||||||
|
@ -21,9 +21,6 @@ in
|
|||||||
"it cannot be cross compiled";
|
"it cannot be cross compiled";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Needed by RPi firmware
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
|
|
||||||
boot.loader.grub.enable = false;
|
boot.loader.grub.enable = false;
|
||||||
boot.loader.generic-extlinux-compatible.enable = true;
|
boot.loader.generic-extlinux-compatible.enable = true;
|
||||||
|
|
||||||
|
@ -21,9 +21,6 @@ in
|
|||||||
"it cannot be cross compiled";
|
"it cannot be cross compiled";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Needed by RPi firmware
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
|
|
||||||
boot.loader.grub.enable = false;
|
boot.loader.grub.enable = false;
|
||||||
boot.loader.generic-extlinux-compatible.enable = true;
|
boot.loader.generic-extlinux-compatible.enable = true;
|
||||||
|
|
||||||
|
@ -20,6 +20,20 @@ let
|
|||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.sdImage = {
|
options.sdImage = {
|
||||||
|
imageName = mkOption {
|
||||||
|
default = "${config.sdImage.imageBaseName}-${config.system.nixos.label}-${pkgs.stdenv.system}.img";
|
||||||
|
description = ''
|
||||||
|
Name of the generated image file.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
imageBaseName = mkOption {
|
||||||
|
default = "nixos-sd-image";
|
||||||
|
description = ''
|
||||||
|
Prefix of the name of the generated image file.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
storePaths = mkOption {
|
storePaths = mkOption {
|
||||||
type = with types; listOf package;
|
type = with types; listOf package;
|
||||||
example = literalExample "[ pkgs.stdenv ]";
|
example = literalExample "[ pkgs.stdenv ]";
|
||||||
@ -61,19 +75,25 @@ in
|
|||||||
sdImage.storePaths = [ config.system.build.toplevel ];
|
sdImage.storePaths = [ config.system.build.toplevel ];
|
||||||
|
|
||||||
system.build.sdImage = pkgs.stdenv.mkDerivation {
|
system.build.sdImage = pkgs.stdenv.mkDerivation {
|
||||||
name = "sd-image-${pkgs.stdenv.system}.img";
|
name = config.sdImage.imageName;
|
||||||
|
|
||||||
buildInputs = with pkgs; [ dosfstools e2fsprogs mtools libfaketime utillinux ];
|
buildInputs = with pkgs; [ dosfstools e2fsprogs mtools libfaketime utillinux ];
|
||||||
|
|
||||||
buildCommand = ''
|
buildCommand = ''
|
||||||
|
mkdir -p $out/nix-support $out/sd-image
|
||||||
|
export img=$out/sd-image/${config.sdImage.imageName}
|
||||||
|
|
||||||
|
echo "${pkgs.stdenv.system}" > $out/nix-support/system
|
||||||
|
echo "file sd-image $img" >> $out/nix-support/hydra-build-products
|
||||||
|
|
||||||
# Create the image file sized to fit /boot and /, plus 20M of slack
|
# Create the image file sized to fit /boot and /, plus 20M of slack
|
||||||
rootSizeBlocks=$(du -B 512 --apparent-size ${rootfsImage} | awk '{ print $1 }')
|
rootSizeBlocks=$(du -B 512 --apparent-size ${rootfsImage} | awk '{ print $1 }')
|
||||||
bootSizeBlocks=$((${toString config.sdImage.bootSize} * 1024 * 1024 / 512))
|
bootSizeBlocks=$((${toString config.sdImage.bootSize} * 1024 * 1024 / 512))
|
||||||
imageSize=$((rootSizeBlocks * 512 + bootSizeBlocks * 512 + 20 * 1024 * 1024))
|
imageSize=$((rootSizeBlocks * 512 + bootSizeBlocks * 512 + 20 * 1024 * 1024))
|
||||||
truncate -s $imageSize $out
|
truncate -s $imageSize $img
|
||||||
|
|
||||||
# type=b is 'W95 FAT32', type=83 is 'Linux'.
|
# type=b is 'W95 FAT32', type=83 is 'Linux'.
|
||||||
sfdisk $out <<EOF
|
sfdisk $img <<EOF
|
||||||
label: dos
|
label: dos
|
||||||
label-id: 0x2178694e
|
label-id: 0x2178694e
|
||||||
|
|
||||||
@ -82,11 +102,11 @@ in
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Copy the rootfs into the SD image
|
# Copy the rootfs into the SD image
|
||||||
eval $(partx $out -o START,SECTORS --nr 2 --pairs)
|
eval $(partx $img -o START,SECTORS --nr 2 --pairs)
|
||||||
dd conv=notrunc if=${rootfsImage} of=$out seek=$START count=$SECTORS
|
dd conv=notrunc if=${rootfsImage} of=$img seek=$START count=$SECTORS
|
||||||
|
|
||||||
# Create a FAT32 /boot partition of suitable size into bootpart.img
|
# Create a FAT32 /boot partition of suitable size into bootpart.img
|
||||||
eval $(partx $out -o START,SECTORS --nr 1 --pairs)
|
eval $(partx $img -o START,SECTORS --nr 1 --pairs)
|
||||||
truncate -s $((SECTORS * 512)) bootpart.img
|
truncate -s $((SECTORS * 512)) bootpart.img
|
||||||
faketime "1970-01-01 00:00:00" mkfs.vfat -i 0x2178694e -n NIXOS_BOOT bootpart.img
|
faketime "1970-01-01 00:00:00" mkfs.vfat -i 0x2178694e -n NIXOS_BOOT bootpart.img
|
||||||
|
|
||||||
@ -96,7 +116,7 @@ in
|
|||||||
|
|
||||||
# Copy the populated /boot into the SD image
|
# Copy the populated /boot into the SD image
|
||||||
(cd boot; mcopy -bpsvm -i ../bootpart.img ./* ::)
|
(cd boot; mcopy -bpsvm -i ../bootpart.img ./* ::)
|
||||||
dd conv=notrunc if=bootpart.img of=$out seek=$START count=$SECTORS
|
dd conv=notrunc if=bootpart.img of=$img seek=$START count=$SECTORS
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
77
nixos/modules/misc/documentation.nix
Normal file
77
nixos/modules/misc/documentation.nix
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let cfg = config.documentation; in
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
|
options = {
|
||||||
|
|
||||||
|
documentation = {
|
||||||
|
|
||||||
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Whether to install documentation of packages from
|
||||||
|
<option>environment.systemPackages</option> into the generated system path.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
man.enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Whether to install manual pages and the <command>man</command> command.
|
||||||
|
This also includes "man" outputs.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
doc.enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Whether to install documentation distributed in packages' <literal>/share/doc</literal>.
|
||||||
|
Usually plain text and/or HTML.
|
||||||
|
This also includes "doc" outputs.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
info.enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Whether to install info pages and the <command>info</command> command.
|
||||||
|
This also includes "info" outputs.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable (mkMerge [
|
||||||
|
|
||||||
|
(mkIf cfg.man.enable {
|
||||||
|
environment.systemPackages = [ pkgs.man-db ];
|
||||||
|
environment.pathsToLink = [ "/share/man" ];
|
||||||
|
environment.extraOutputsToInstall = [ "man" ];
|
||||||
|
})
|
||||||
|
|
||||||
|
(mkIf cfg.doc.enable {
|
||||||
|
# TODO(@oxij): put it here and remove from profiles?
|
||||||
|
# environment.systemPackages = [ pkgs.w3m ]; # w3m-nox?
|
||||||
|
environment.pathsToLink = [ "/share/doc" ];
|
||||||
|
environment.extraOutputsToInstall = [ "doc" ];
|
||||||
|
})
|
||||||
|
|
||||||
|
(mkIf cfg.info.enable {
|
||||||
|
environment.systemPackages = [ pkgs.texinfoInteractive ];
|
||||||
|
environment.pathsToLink = [ "/share/info" ];
|
||||||
|
environment.extraOutputsToInstall = [ "info" ];
|
||||||
|
})
|
||||||
|
|
||||||
|
]);
|
||||||
|
|
||||||
|
}
|
@ -16,6 +16,21 @@ in
|
|||||||
|
|
||||||
options.system = {
|
options.system = {
|
||||||
|
|
||||||
|
# XXX: Reintroduce old options to make nixops before 1.6 able to evaluate configurations
|
||||||
|
# XXX: Remove after nixops has been bumped to a compatible version
|
||||||
|
nixosVersion = mkOption {
|
||||||
|
readOnly = true;
|
||||||
|
internal = true;
|
||||||
|
type = types.str;
|
||||||
|
default = config.system.nixos.version;
|
||||||
|
};
|
||||||
|
nixosVersionSuffix = mkOption {
|
||||||
|
readOnly = true;
|
||||||
|
internal = true;
|
||||||
|
type = types.str;
|
||||||
|
default = config.system.nixos.versionSuffix;
|
||||||
|
};
|
||||||
|
|
||||||
nixos.version = mkOption {
|
nixos.version = mkOption {
|
||||||
internal = true;
|
internal = true;
|
||||||
type = types.str;
|
type = types.str;
|
||||||
|
@ -58,6 +58,7 @@
|
|||||||
./installer/tools/tools.nix
|
./installer/tools/tools.nix
|
||||||
./misc/assertions.nix
|
./misc/assertions.nix
|
||||||
./misc/crashdump.nix
|
./misc/crashdump.nix
|
||||||
|
./misc/documentation.nix
|
||||||
./misc/extra-arguments.nix
|
./misc/extra-arguments.nix
|
||||||
./misc/ids.nix
|
./misc/ids.nix
|
||||||
./misc/lib.nix
|
./misc/lib.nix
|
||||||
@ -85,12 +86,10 @@
|
|||||||
./programs/freetds.nix
|
./programs/freetds.nix
|
||||||
./programs/gnupg.nix
|
./programs/gnupg.nix
|
||||||
./programs/gphoto2.nix
|
./programs/gphoto2.nix
|
||||||
./programs/info.nix
|
|
||||||
./programs/java.nix
|
./programs/java.nix
|
||||||
./programs/kbdlight.nix
|
./programs/kbdlight.nix
|
||||||
./programs/less.nix
|
./programs/less.nix
|
||||||
./programs/light.nix
|
./programs/light.nix
|
||||||
./programs/man.nix
|
|
||||||
./programs/mosh.nix
|
./programs/mosh.nix
|
||||||
./programs/mtr.nix
|
./programs/mtr.nix
|
||||||
./programs/nano.nix
|
./programs/nano.nix
|
||||||
@ -323,8 +322,9 @@
|
|||||||
./services/misc/geoip-updater.nix
|
./services/misc/geoip-updater.nix
|
||||||
./services/misc/gitea.nix
|
./services/misc/gitea.nix
|
||||||
#./services/misc/gitit.nix
|
#./services/misc/gitit.nix
|
||||||
./services/misc/gitlab.nix
|
#./services/misc/gitlab.nix
|
||||||
./services/misc/gitolite.nix
|
./services/misc/gitolite.nix
|
||||||
|
./services/misc/gitweb.nix
|
||||||
./services/misc/gogs.nix
|
./services/misc/gogs.nix
|
||||||
./services/misc/gollum.nix
|
./services/misc/gollum.nix
|
||||||
./services/misc/gpsd.nix
|
./services/misc/gpsd.nix
|
||||||
@ -650,6 +650,7 @@
|
|||||||
./services/web-servers/mighttpd2.nix
|
./services/web-servers/mighttpd2.nix
|
||||||
./services/web-servers/minio.nix
|
./services/web-servers/minio.nix
|
||||||
./services/web-servers/nginx/default.nix
|
./services/web-servers/nginx/default.nix
|
||||||
|
./services/web-servers/nginx/gitweb.nix
|
||||||
./services/web-servers/phpfpm/default.nix
|
./services/web-servers/phpfpm/default.nix
|
||||||
./services/web-servers/shellinabox.nix
|
./services/web-servers/shellinabox.nix
|
||||||
./services/web-servers/tomcat.nix
|
./services/web-servers/tomcat.nix
|
||||||
|
@ -14,9 +14,7 @@ in {
|
|||||||
];
|
];
|
||||||
|
|
||||||
# Create the tarball
|
# Create the tarball
|
||||||
system.build.tarball = import ../../lib/make-system-tarball.nix {
|
system.build.tarball = pkgs.callPackage ../../lib/make-system-tarball.nix {
|
||||||
inherit (pkgs) stdenv perl xz pathsFromGraph;
|
|
||||||
|
|
||||||
contents = [];
|
contents = [];
|
||||||
extraArgs = "--owner=0";
|
extraArgs = "--owner=0";
|
||||||
|
|
||||||
|
@ -10,10 +10,9 @@ with lib;
|
|||||||
|
|
||||||
# This isn't perfect, but let's expect the user specifies an UTF-8 defaultLocale
|
# This isn't perfect, but let's expect the user specifies an UTF-8 defaultLocale
|
||||||
i18n.supportedLocales = [ (config.i18n.defaultLocale + "/UTF-8") ];
|
i18n.supportedLocales = [ (config.i18n.defaultLocale + "/UTF-8") ];
|
||||||
services.nixosManual.enable = mkDefault false;
|
|
||||||
|
|
||||||
programs.man.enable = mkDefault false;
|
documentation.enable = mkDefault false;
|
||||||
programs.info.enable = mkDefault false;
|
services.nixosManual.enable = mkDefault false;
|
||||||
|
|
||||||
sound.enable = mkDefault false;
|
sound.enable = mkDefault false;
|
||||||
}
|
}
|
||||||
|
@ -1,30 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
options = {
|
|
||||||
|
|
||||||
programs.info.enable = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = true;
|
|
||||||
description = ''
|
|
||||||
Whether to enable info pages and the <command>info</command> command.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
config = mkIf config.programs.info.enable {
|
|
||||||
|
|
||||||
environment.systemPackages = [ pkgs.texinfoInteractive ];
|
|
||||||
|
|
||||||
environment.pathsToLink = [ "/info" "/share/info" ];
|
|
||||||
|
|
||||||
environment.extraOutputsToInstall = [ "info" ];
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
@ -1,31 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
options = {
|
|
||||||
|
|
||||||
programs.man.enable = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = true;
|
|
||||||
description = ''
|
|
||||||
Whether to enable manual pages and the <command>man</command> command.
|
|
||||||
This also includes "man" outputs of all <literal>systemPackages</literal>.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
config = mkIf config.programs.man.enable {
|
|
||||||
|
|
||||||
environment.systemPackages = [ pkgs.man-db ];
|
|
||||||
|
|
||||||
environment.pathsToLink = [ "/share/man" ];
|
|
||||||
|
|
||||||
environment.extraOutputsToInstall = [ "man" ];
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
@ -4,6 +4,7 @@ with lib;
|
|||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
(mkRenamedOptionModule [ "dysnomia" ] [ "services" "dysnomia" ])
|
||||||
(mkRenamedOptionModule [ "environment" "x11Packages" ] [ "environment" "systemPackages" ])
|
(mkRenamedOptionModule [ "environment" "x11Packages" ] [ "environment" "systemPackages" ])
|
||||||
(mkRenamedOptionModule [ "environment" "enableBashCompletion" ] [ "programs" "bash" "enableCompletion" ])
|
(mkRenamedOptionModule [ "environment" "enableBashCompletion" ] [ "programs" "bash" "enableCompletion" ])
|
||||||
(mkRenamedOptionModule [ "environment" "nix" ] [ "nix" "package" ])
|
(mkRenamedOptionModule [ "environment" "nix" ] [ "nix" "package" ])
|
||||||
@ -196,13 +197,17 @@ with lib;
|
|||||||
(mkRenamedOptionModule [ "virtualization" "growPartition" ] [ "boot" "growPartition" ])
|
(mkRenamedOptionModule [ "virtualization" "growPartition" ] [ "boot" "growPartition" ])
|
||||||
|
|
||||||
# misc/version.nix
|
# misc/version.nix
|
||||||
(mkRenamedOptionModule [ "config" "system" "nixosVersion" ] [ "config" "system" "nixos" "version" ])
|
#(mkRenamedOptionModule [ "config" "system" "nixosVersion" ] [ "config" "system" "nixos" "version" ])
|
||||||
(mkRenamedOptionModule [ "config" "system" "nixosRelease" ] [ "config" "system" "nixos" "release" ])
|
(mkRenamedOptionModule [ "config" "system" "nixosRelease" ] [ "config" "system" "nixos" "release" ])
|
||||||
(mkRenamedOptionModule [ "config" "system" "nixosVersionSuffix" ] [ "config" "system" "nixos" "versionSuffix" ])
|
#(mkRenamedOptionModule [ "config" "system" "nixosVersionSuffix" ] [ "config" "system" "nixos" "versionSuffix" ])
|
||||||
(mkRenamedOptionModule [ "config" "system" "nixosRevision" ] [ "config" "system" "nixos" "revision" ])
|
(mkRenamedOptionModule [ "config" "system" "nixosRevision" ] [ "config" "system" "nixos" "revision" ])
|
||||||
(mkRenamedOptionModule [ "config" "system" "nixosCodeName" ] [ "config" "system" "nixos" "codeName" ])
|
(mkRenamedOptionModule [ "config" "system" "nixosCodeName" ] [ "config" "system" "nixos" "codeName" ])
|
||||||
(mkRenamedOptionModule [ "config" "system" "nixosLabel" ] [ "config" "system" "nixos" "label" ])
|
(mkRenamedOptionModule [ "config" "system" "nixosLabel" ] [ "config" "system" "nixos" "label" ])
|
||||||
|
|
||||||
|
# Users
|
||||||
|
(mkAliasOptionModule [ "users" "extraUsers" ] [ "users" "users" ])
|
||||||
|
(mkAliasOptionModule [ "users" "extraGroups" ] [ "users" "groups" ])
|
||||||
|
|
||||||
# Options that are obsolete and have no replacement.
|
# Options that are obsolete and have no replacement.
|
||||||
(mkRemovedOptionModule [ "boot" "initrd" "luks" "enable" ] "")
|
(mkRemovedOptionModule [ "boot" "initrd" "luks" "enable" ] "")
|
||||||
(mkRemovedOptionModule [ "programs" "bash" "enable" ] "")
|
(mkRemovedOptionModule [ "programs" "bash" "enable" ] "")
|
||||||
@ -240,6 +245,10 @@ with lib;
|
|||||||
|
|
||||||
# Xen
|
# Xen
|
||||||
(mkRenamedOptionModule [ "virtualisation" "xen" "qemu-package" ] [ "virtualisation" "xen" "package-qemu" ])
|
(mkRenamedOptionModule [ "virtualisation" "xen" "qemu-package" ] [ "virtualisation" "xen" "package-qemu" ])
|
||||||
|
|
||||||
|
(mkRenamedOptionModule [ "programs" "info" "enable" ] [ "documentation" "info" "enable" ])
|
||||||
|
(mkRenamedOptionModule [ "programs" "man" "enable" ] [ "documentation" "man" "enable" ])
|
||||||
|
|
||||||
] ++ (flip map [ "blackboxExporter" "collectdExporter" "fritzboxExporter"
|
] ++ (flip map [ "blackboxExporter" "collectdExporter" "fritzboxExporter"
|
||||||
"jsonExporter" "minioExporter" "nginxExporter" "nodeExporter"
|
"jsonExporter" "minioExporter" "nginxExporter" "nodeExporter"
|
||||||
"snmpExporter" "unifiExporter" "varnishExporter" ]
|
"snmpExporter" "unifiExporter" "varnishExporter" ]
|
||||||
|
@ -766,7 +766,7 @@ in {
|
|||||||
rm /opt/cni/bin/* || true
|
rm /opt/cni/bin/* || true
|
||||||
${concatMapStrings (package: ''
|
${concatMapStrings (package: ''
|
||||||
echo "Linking cni package: ${package}"
|
echo "Linking cni package: ${package}"
|
||||||
ln -fs ${package.plugins}/* /opt/cni/bin
|
ln -fs ${package}/bin/* /opt/cni/bin
|
||||||
'') cfg.kubelet.cni.packages}
|
'') cfg.kubelet.cni.packages}
|
||||||
'';
|
'';
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
@ -828,7 +828,7 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
# Allways include cni plugins
|
# Allways include cni plugins
|
||||||
services.kubernetes.kubelet.cni.packages = [pkgs.cni];
|
services.kubernetes.kubelet.cni.packages = [pkgs.cni-plugins];
|
||||||
|
|
||||||
boot.kernelModules = ["br_netfilter"];
|
boot.kernelModules = ["br_netfilter"];
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@ let
|
|||||||
|
|
||||||
''
|
''
|
||||||
default_internal_user = ${cfg.user}
|
default_internal_user = ${cfg.user}
|
||||||
|
default_internal_group = ${cfg.group}
|
||||||
${optionalString (cfg.mailUser != null) "mail_uid = ${cfg.mailUser}"}
|
${optionalString (cfg.mailUser != null) "mail_uid = ${cfg.mailUser}"}
|
||||||
${optionalString (cfg.mailGroup != null) "mail_gid = ${cfg.mailGroup}"}
|
${optionalString (cfg.mailGroup != null) "mail_gid = ${cfg.mailGroup}"}
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ in
|
|||||||
###### implementation
|
###### implementation
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
dysnomia.enable = true;
|
services.dysnomia.enable = true;
|
||||||
|
|
||||||
environment.systemPackages = [ pkgs.disnix ] ++ optional cfg.useWebServiceInterface pkgs.DisnixWebService;
|
environment.systemPackages = [ pkgs.disnix ] ++ optional cfg.useWebServiceInterface pkgs.DisnixWebService;
|
||||||
|
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
with lib;
|
with lib;
|
||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.dysnomia;
|
cfg = config.services.dysnomia;
|
||||||
|
|
||||||
printProperties = properties:
|
printProperties = properties:
|
||||||
concatMapStrings (propertyName:
|
concatMapStrings (propertyName:
|
||||||
let
|
let
|
||||||
@ -13,7 +13,7 @@ let
|
|||||||
if isList property then "${propertyName}=(${lib.concatMapStrings (elem: "\"${toString elem}\" ") (properties."${propertyName}")})\n"
|
if isList property then "${propertyName}=(${lib.concatMapStrings (elem: "\"${toString elem}\" ") (properties."${propertyName}")})\n"
|
||||||
else "${propertyName}=\"${toString property}\"\n"
|
else "${propertyName}=\"${toString property}\"\n"
|
||||||
) (builtins.attrNames properties);
|
) (builtins.attrNames properties);
|
||||||
|
|
||||||
properties = pkgs.stdenv.mkDerivation {
|
properties = pkgs.stdenv.mkDerivation {
|
||||||
name = "dysnomia-properties";
|
name = "dysnomia-properties";
|
||||||
buildCommand = ''
|
buildCommand = ''
|
||||||
@ -22,13 +22,13 @@ let
|
|||||||
EOF
|
EOF
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
containersDir = pkgs.stdenv.mkDerivation {
|
containersDir = pkgs.stdenv.mkDerivation {
|
||||||
name = "dysnomia-containers";
|
name = "dysnomia-containers";
|
||||||
buildCommand = ''
|
buildCommand = ''
|
||||||
mkdir -p $out
|
mkdir -p $out
|
||||||
cd $out
|
cd $out
|
||||||
|
|
||||||
${concatMapStrings (containerName:
|
${concatMapStrings (containerName:
|
||||||
let
|
let
|
||||||
containerProperties = cfg.containers."${containerName}";
|
containerProperties = cfg.containers."${containerName}";
|
||||||
@ -42,11 +42,11 @@ let
|
|||||||
) (builtins.attrNames cfg.containers)}
|
) (builtins.attrNames cfg.containers)}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
linkMutableComponents = {containerName}:
|
linkMutableComponents = {containerName}:
|
||||||
''
|
''
|
||||||
mkdir ${containerName}
|
mkdir ${containerName}
|
||||||
|
|
||||||
${concatMapStrings (componentName:
|
${concatMapStrings (componentName:
|
||||||
let
|
let
|
||||||
component = cfg.components."${containerName}"."${componentName}";
|
component = cfg.components."${containerName}"."${componentName}";
|
||||||
@ -54,13 +54,13 @@ let
|
|||||||
"ln -s ${component} ${containerName}/${componentName}\n"
|
"ln -s ${component} ${containerName}/${componentName}\n"
|
||||||
) (builtins.attrNames (cfg.components."${containerName}" or {}))}
|
) (builtins.attrNames (cfg.components."${containerName}" or {}))}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
componentsDir = pkgs.stdenv.mkDerivation {
|
componentsDir = pkgs.stdenv.mkDerivation {
|
||||||
name = "dysnomia-components";
|
name = "dysnomia-components";
|
||||||
buildCommand = ''
|
buildCommand = ''
|
||||||
mkdir -p $out
|
mkdir -p $out
|
||||||
cd $out
|
cd $out
|
||||||
|
|
||||||
${concatMapStrings (containerName:
|
${concatMapStrings (containerName:
|
||||||
let
|
let
|
||||||
components = cfg.components."${containerName}";
|
components = cfg.components."${containerName}";
|
||||||
@ -72,59 +72,59 @@ let
|
|||||||
in
|
in
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
dysnomia = {
|
services.dysnomia = {
|
||||||
|
|
||||||
enable = mkOption {
|
enable = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
description = "Whether to enable Dysnomia";
|
description = "Whether to enable Dysnomia";
|
||||||
};
|
};
|
||||||
|
|
||||||
enableAuthentication = mkOption {
|
enableAuthentication = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
description = "Whether to publish privacy-sensitive authentication credentials";
|
description = "Whether to publish privacy-sensitive authentication credentials";
|
||||||
};
|
};
|
||||||
|
|
||||||
package = mkOption {
|
package = mkOption {
|
||||||
type = types.path;
|
type = types.path;
|
||||||
description = "The Dysnomia package";
|
description = "The Dysnomia package";
|
||||||
};
|
};
|
||||||
|
|
||||||
properties = mkOption {
|
properties = mkOption {
|
||||||
description = "An attribute set in which each attribute represents a machine property. Optionally, these values can be shell substitutions.";
|
description = "An attribute set in which each attribute represents a machine property. Optionally, these values can be shell substitutions.";
|
||||||
default = {};
|
default = {};
|
||||||
};
|
};
|
||||||
|
|
||||||
containers = mkOption {
|
containers = mkOption {
|
||||||
description = "An attribute set in which each key represents a container and each value an attribute set providing its configuration properties";
|
description = "An attribute set in which each key represents a container and each value an attribute set providing its configuration properties";
|
||||||
default = {};
|
default = {};
|
||||||
};
|
};
|
||||||
|
|
||||||
components = mkOption {
|
components = mkOption {
|
||||||
description = "An atttribute set in which each key represents a container and each value an attribute set in which each key represents a component and each value a derivation constructing its initial state";
|
description = "An atttribute set in which each key represents a container and each value an attribute set in which each key represents a component and each value a derivation constructing its initial state";
|
||||||
default = {};
|
default = {};
|
||||||
};
|
};
|
||||||
|
|
||||||
extraContainerProperties = mkOption {
|
extraContainerProperties = mkOption {
|
||||||
description = "An attribute set providing additional container settings in addition to the default properties";
|
description = "An attribute set providing additional container settings in addition to the default properties";
|
||||||
default = {};
|
default = {};
|
||||||
};
|
};
|
||||||
|
|
||||||
extraContainerPaths = mkOption {
|
extraContainerPaths = mkOption {
|
||||||
description = "A list of paths containing additional container configurations that are added to the search folders";
|
description = "A list of paths containing additional container configurations that are added to the search folders";
|
||||||
default = [];
|
default = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
extraModulePaths = mkOption {
|
extraModulePaths = mkOption {
|
||||||
description = "A list of paths containing additional modules that are added to the search folders";
|
description = "A list of paths containing additional modules that are added to the search folders";
|
||||||
default = [];
|
default = [];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
||||||
environment.etc = {
|
environment.etc = {
|
||||||
"dysnomia/containers" = {
|
"dysnomia/containers" = {
|
||||||
source = containersDir;
|
source = containersDir;
|
||||||
@ -136,16 +136,16 @@ in
|
|||||||
source = properties;
|
source = properties;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.variables = {
|
environment.variables = {
|
||||||
DYSNOMIA_STATEDIR = "/var/state/dysnomia-nixos";
|
DYSNOMIA_STATEDIR = "/var/state/dysnomia-nixos";
|
||||||
DYSNOMIA_CONTAINERS_PATH = "${lib.concatMapStrings (containerPath: "${containerPath}:") cfg.extraContainerPaths}/etc/dysnomia/containers";
|
DYSNOMIA_CONTAINERS_PATH = "${lib.concatMapStrings (containerPath: "${containerPath}:") cfg.extraContainerPaths}/etc/dysnomia/containers";
|
||||||
DYSNOMIA_MODULES_PATH = "${lib.concatMapStrings (modulePath: "${modulePath}:") cfg.extraModulePaths}/etc/dysnomia/modules";
|
DYSNOMIA_MODULES_PATH = "${lib.concatMapStrings (modulePath: "${modulePath}:") cfg.extraModulePaths}/etc/dysnomia/modules";
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = [ cfg.package ];
|
environment.systemPackages = [ cfg.package ];
|
||||||
|
|
||||||
dysnomia.package = pkgs.dysnomia.override (origArgs: {
|
services.dysnomia.package = pkgs.dysnomia.override (origArgs: {
|
||||||
enableApacheWebApplication = config.services.httpd.enable;
|
enableApacheWebApplication = config.services.httpd.enable;
|
||||||
enableAxis2WebService = config.services.tomcat.axis2.enable;
|
enableAxis2WebService = config.services.tomcat.axis2.enable;
|
||||||
enableEjabberdDump = config.services.ejabberd.enable;
|
enableEjabberdDump = config.services.ejabberd.enable;
|
||||||
@ -155,8 +155,8 @@ in
|
|||||||
enableTomcatWebApplication = config.services.tomcat.enable;
|
enableTomcatWebApplication = config.services.tomcat.enable;
|
||||||
enableMongoDatabase = config.services.mongodb.enable;
|
enableMongoDatabase = config.services.mongodb.enable;
|
||||||
});
|
});
|
||||||
|
|
||||||
dysnomia.properties = {
|
services.dysnomia.properties = {
|
||||||
hostname = config.networking.hostName;
|
hostname = config.networking.hostName;
|
||||||
system = if config.nixpkgs.system == "" then builtins.currentSystem else config.nixpkgs.system;
|
system = if config.nixpkgs.system == "" then builtins.currentSystem else config.nixpkgs.system;
|
||||||
|
|
||||||
@ -173,8 +173,8 @@ in
|
|||||||
'';
|
'';
|
||||||
}}");
|
}}");
|
||||||
};
|
};
|
||||||
|
|
||||||
dysnomia.containers = lib.recursiveUpdate ({
|
services.dysnomia.containers = lib.recursiveUpdate ({
|
||||||
process = {};
|
process = {};
|
||||||
wrapper = {};
|
wrapper = {};
|
||||||
}
|
}
|
||||||
|
51
nixos/modules/services/misc/gitweb.nix
Normal file
51
nixos/modules/services/misc/gitweb.nix
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.services.gitweb;
|
||||||
|
|
||||||
|
in
|
||||||
|
{
|
||||||
|
|
||||||
|
options.services.gitweb = {
|
||||||
|
|
||||||
|
projectroot = mkOption {
|
||||||
|
default = "/srv/git";
|
||||||
|
type = types.path;
|
||||||
|
description = ''
|
||||||
|
Path to git projects (bare repositories) that should be served by
|
||||||
|
gitweb. Must not end with a slash.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = mkOption {
|
||||||
|
default = "";
|
||||||
|
type = types.lines;
|
||||||
|
description = ''
|
||||||
|
Verbatim configuration text appended to the generated gitweb.conf file.
|
||||||
|
'';
|
||||||
|
example = ''
|
||||||
|
$feature{'highlight'}{'default'} = [1];
|
||||||
|
$feature{'ctags'}{'default'} = [1];
|
||||||
|
$feature{'avatar'}{'default'} = ['gravatar'];
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
gitwebConfigFile = mkOption {
|
||||||
|
default = pkgs.writeText "gitweb.conf" ''
|
||||||
|
# path to git projects (<project>.git)
|
||||||
|
$projectroot = "${cfg.projectroot}";
|
||||||
|
$highlight_bin = "${pkgs.highlight}/bin/highlight";
|
||||||
|
${cfg.extraConfig}
|
||||||
|
'';
|
||||||
|
type = types.path;
|
||||||
|
readOnly = true;
|
||||||
|
internal = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
meta.maintainers = with maintainers; [ gnidorah ];
|
||||||
|
|
||||||
|
}
|
@ -35,6 +35,9 @@ let
|
|||||||
SECRET_KEY = #secretkey#
|
SECRET_KEY = #secretkey#
|
||||||
INSTALL_LOCK = true
|
INSTALL_LOCK = true
|
||||||
|
|
||||||
|
[log]
|
||||||
|
ROOT_PATH = ${cfg.stateDir}/log
|
||||||
|
|
||||||
${cfg.extraConfig}
|
${cfg.extraConfig}
|
||||||
'';
|
'';
|
||||||
in
|
in
|
||||||
|
@ -439,17 +439,18 @@ in
|
|||||||
|
|
||||||
services.xserver.displayManager.hiddenUsers = map ({ name, ... }: name) nixbldUsers;
|
services.xserver.displayManager.hiddenUsers = map ({ name, ... }: name) nixbldUsers;
|
||||||
|
|
||||||
|
# FIXME: use systemd-tmpfiles to create Nix directories.
|
||||||
system.activationScripts.nix = stringAfter [ "etc" "users" ]
|
system.activationScripts.nix = stringAfter [ "etc" "users" ]
|
||||||
''
|
''
|
||||||
# Nix initialisation.
|
# Nix initialisation.
|
||||||
mkdir -m 0755 -p \
|
install -m 0755 -d \
|
||||||
/nix/var/nix/gcroots \
|
/nix/var/nix/gcroots \
|
||||||
/nix/var/nix/temproots \
|
/nix/var/nix/temproots \
|
||||||
/nix/var/nix/userpool \
|
/nix/var/nix/userpool \
|
||||||
/nix/var/nix/profiles \
|
/nix/var/nix/profiles \
|
||||||
/nix/var/nix/db \
|
/nix/var/nix/db \
|
||||||
/nix/var/log/nix/drvs
|
/nix/var/log/nix/drvs
|
||||||
mkdir -m 1777 -p \
|
install -m 1777 -d \
|
||||||
/nix/var/nix/gcroots/per-user \
|
/nix/var/nix/gcroots/per-user \
|
||||||
/nix/var/nix/profiles/per-user \
|
/nix/var/nix/profiles/per-user \
|
||||||
/nix/var/nix/gcroots/tmp
|
/nix/var/nix/gcroots/tmp
|
||||||
|
@ -112,10 +112,10 @@ in
|
|||||||
|
|
||||||
system.build.manual = manual;
|
system.build.manual = manual;
|
||||||
|
|
||||||
environment.systemPackages =
|
environment.systemPackages = []
|
||||||
[ manual.manual helpScript ]
|
++ optionals config.services.xserver.enable [ desktopItem pkgs.nixos-icons ]
|
||||||
++ optionals config.services.xserver.enable [desktopItem pkgs.nixos-icons]
|
++ optional config.documentation.man.enable manual.manpages
|
||||||
++ optional config.programs.man.enable manual.manpages;
|
++ optionals config.documentation.doc.enable [ manual.manual helpScript ];
|
||||||
|
|
||||||
boot.extraTTYs = mkIf cfg.showManual ["tty${toString cfg.ttyNumber}"];
|
boot.extraTTYs = mkIf cfg.showManual ["tty${toString cfg.ttyNumber}"];
|
||||||
|
|
||||||
|
@ -6,6 +6,8 @@ let
|
|||||||
|
|
||||||
cfg = config.services.parsoid;
|
cfg = config.services.parsoid;
|
||||||
|
|
||||||
|
parsoid = pkgs.nodePackages."parsoid-git://github.com/abbradar/parsoid#stable";
|
||||||
|
|
||||||
confTree = {
|
confTree = {
|
||||||
worker_heartbeat_timeout = 300000;
|
worker_heartbeat_timeout = 300000;
|
||||||
logging = { level = "info"; };
|
logging = { level = "info"; };
|
||||||
@ -93,7 +95,7 @@ in
|
|||||||
after = [ "network.target" ];
|
after = [ "network.target" ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
User = "nobody";
|
User = "nobody";
|
||||||
ExecStart = "${pkgs.nodePackages.parsoid}/lib/node_modules/parsoid/bin/server.js -c ${confFile} -n ${toString cfg.workers}";
|
ExecStart = "${parsoid}/lib/node_modules/parsoid/bin/server.js -c ${confFile} -n ${toString cfg.workers}";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -26,16 +26,10 @@ in
|
|||||||
|
|
||||||
environment.systemPackages = [ pkgs.monit ];
|
environment.systemPackages = [ pkgs.monit ];
|
||||||
|
|
||||||
environment.etc = [
|
environment.etc."monitrc" = {
|
||||||
{
|
text = config.services.monit.config;
|
||||||
source = pkgs.writeTextFile {
|
mode = "0400";
|
||||||
name = "monitrc";
|
};
|
||||||
text = config.services.monit.config;
|
|
||||||
};
|
|
||||||
target = "monitrc";
|
|
||||||
mode = "0400";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
systemd.services.monit = {
|
systemd.services.monit = {
|
||||||
description = "Pro-active monitoring utility for unix systems";
|
description = "Pro-active monitoring utility for unix systems";
|
||||||
@ -48,6 +42,8 @@ in
|
|||||||
KillMode = "process";
|
KillMode = "process";
|
||||||
Restart = "always";
|
Restart = "always";
|
||||||
};
|
};
|
||||||
|
restartTriggers = [ config.environment.etc."monitrc".source ];
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -36,6 +36,7 @@ let
|
|||||||
|
|
||||||
preStart = ''
|
preStart = ''
|
||||||
mkdir -m 755 -p ${cfg.stateDir}
|
mkdir -m 755 -p ${cfg.stateDir}
|
||||||
|
chown dhcpd:nogroup ${cfg.stateDir}
|
||||||
touch ${cfg.stateDir}/dhcpd.leases
|
touch ${cfg.stateDir}/dhcpd.leases
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
@ -44,9 +44,9 @@ in
|
|||||||
path = [ pkgs.iptables pkgs.tcpcrypt pkgs.procps ];
|
path = [ pkgs.iptables pkgs.tcpcrypt pkgs.procps ];
|
||||||
|
|
||||||
preStart = ''
|
preStart = ''
|
||||||
mkdir -p /var/run/tcpcryptd
|
mkdir -p /run/tcpcryptd
|
||||||
chown tcpcryptd /var/run/tcpcryptd
|
chown tcpcryptd /run/tcpcryptd
|
||||||
sysctl -n net.ipv4.tcp_ecn >/run/pre-tcpcrypt-ecn-state
|
sysctl -n net.ipv4.tcp_ecn > /run/tcpcryptd/pre-tcpcrypt-ecn-state
|
||||||
sysctl -w net.ipv4.tcp_ecn=0
|
sysctl -w net.ipv4.tcp_ecn=0
|
||||||
|
|
||||||
iptables -t raw -N nixos-tcpcrypt
|
iptables -t raw -N nixos-tcpcrypt
|
||||||
@ -61,8 +61,8 @@ in
|
|||||||
script = "tcpcryptd -x 0x10";
|
script = "tcpcryptd -x 0x10";
|
||||||
|
|
||||||
postStop = ''
|
postStop = ''
|
||||||
if [ -f /run/pre-tcpcrypt-ecn-state ]; then
|
if [ -f /run/tcpcryptd/pre-tcpcrypt-ecn-state ]; then
|
||||||
sysctl -w net.ipv4.tcp_ecn=$(cat /run/pre-tcpcrypt-ecn-state)
|
sysctl -w net.ipv4.tcp_ecn=$(cat /run/tcpcryptd/pre-tcpcrypt-ecn-state)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
iptables -t mangle -D POSTROUTING -j nixos-tcpcrypt || true
|
iptables -t mangle -D POSTROUTING -j nixos-tcpcrypt || true
|
||||||
|
@ -112,7 +112,7 @@ in
|
|||||||
mkdir -m 0755 -p ${stateDir}/dev/
|
mkdir -m 0755 -p ${stateDir}/dev/
|
||||||
cp ${confFile} ${stateDir}/unbound.conf
|
cp ${confFile} ${stateDir}/unbound.conf
|
||||||
${optionalString cfg.enableRootTrustAnchor ''
|
${optionalString cfg.enableRootTrustAnchor ''
|
||||||
${pkgs.unbound}/bin/unbound-anchor -a ${rootTrustAnchorFile}
|
${pkgs.unbound}/bin/unbound-anchor -a ${rootTrustAnchorFile} || echo "Root anchor updated!"
|
||||||
chown unbound ${stateDir} ${rootTrustAnchorFile}
|
chown unbound ${stateDir} ${rootTrustAnchorFile}
|
||||||
''}
|
''}
|
||||||
touch ${stateDir}/dev/random
|
touch ${stateDir}/dev/random
|
||||||
|
@ -7,6 +7,16 @@ let
|
|||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.services.zerotierone.enable = mkEnableOption "ZeroTierOne";
|
options.services.zerotierone.enable = mkEnableOption "ZeroTierOne";
|
||||||
|
|
||||||
|
options.services.zerotierone.joinNetworks = mkOption {
|
||||||
|
default = [];
|
||||||
|
example = [ "a8a2c3c10c1a68de" ];
|
||||||
|
type = types.listOf types.str;
|
||||||
|
description = ''
|
||||||
|
List of ZeroTier Network IDs to join on startup
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
options.services.zerotierone.package = mkOption {
|
options.services.zerotierone.package = mkOption {
|
||||||
default = pkgs.zerotierone;
|
default = pkgs.zerotierone;
|
||||||
defaultText = "pkgs.zerotierone";
|
defaultText = "pkgs.zerotierone";
|
||||||
@ -22,12 +32,13 @@ in
|
|||||||
path = [ cfg.package ];
|
path = [ cfg.package ];
|
||||||
after = [ "network.target" ];
|
after = [ "network.target" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
preStart =
|
preStart = ''
|
||||||
''
|
mkdir -p /var/lib/zerotier-one/networks.d
|
||||||
mkdir -p /var/lib/zerotier-one
|
|
||||||
chmod 700 /var/lib/zerotier-one
|
chmod 700 /var/lib/zerotier-one
|
||||||
chown -R root:root /var/lib/zerotier-one
|
chown -R root:root /var/lib/zerotier-one
|
||||||
'';
|
'' + (concatMapStrings (netId: ''
|
||||||
|
touch "/var/lib/zerotier-one/networks.d/${netId}.conf"
|
||||||
|
'') cfg.joinNetworks);
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${cfg.package}/bin/zerotier-one";
|
ExecStart = "${cfg.package}/bin/zerotier-one";
|
||||||
Restart = "always";
|
Restart = "always";
|
||||||
@ -38,6 +49,9 @@ in
|
|||||||
# ZeroTier does not issue DHCP leases, but some strangers might...
|
# ZeroTier does not issue DHCP leases, but some strangers might...
|
||||||
networking.dhcpcd.denyInterfaces = [ "zt0" ];
|
networking.dhcpcd.denyInterfaces = [ "zt0" ];
|
||||||
|
|
||||||
|
# ZeroTier receives UDP transmissions on port 9993 by default
|
||||||
|
networking.firewall.allowedUDPPorts = [ 9993 ];
|
||||||
|
|
||||||
environment.systemPackages = [ cfg.package ];
|
environment.systemPackages = [ cfg.package ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,19 @@ let
|
|||||||
|
|
||||||
# for users in group "transmission" to have access to torrents
|
# for users in group "transmission" to have access to torrents
|
||||||
fullSettings = { umask = 2; download-dir = downloadDir; incomplete-dir = incompleteDir; } // cfg.settings;
|
fullSettings = { umask = 2; download-dir = downloadDir; incomplete-dir = incompleteDir; } // cfg.settings;
|
||||||
|
|
||||||
|
# Directories transmission expects to exist and be ug+rwx.
|
||||||
|
directoriesToManage = [ homeDir settingsDir fullSettings.download-dir fullSettings.incomplete-dir ];
|
||||||
|
|
||||||
|
preStart = pkgs.writeScript "transmission-pre-start" ''
|
||||||
|
#!${pkgs.runtimeShell}
|
||||||
|
set -ex
|
||||||
|
for DIR in ${escapeShellArgs directoriesToManage}; do
|
||||||
|
mkdir -p "$DIR"
|
||||||
|
chmod 770 "$DIR"
|
||||||
|
done
|
||||||
|
cp -f ${settingsFile} ${settingsDir}/settings.json
|
||||||
|
'';
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
@ -59,8 +72,8 @@ in
|
|||||||
time the service starts). String values must be quoted, integer and
|
time the service starts). String values must be quoted, integer and
|
||||||
boolean values must not.
|
boolean values must not.
|
||||||
|
|
||||||
See https://trac.transmissionbt.com/wiki/EditConfigFiles for
|
See https://github.com/transmission/transmission/wiki/Editing-Configuration-Files
|
||||||
documentation.
|
for documentation.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -89,9 +102,7 @@ in
|
|||||||
|
|
||||||
# 1) Only the "transmission" user and group have access to torrents.
|
# 1) Only the "transmission" user and group have access to torrents.
|
||||||
# 2) Optionally update/force specific fields into the configuration file.
|
# 2) Optionally update/force specific fields into the configuration file.
|
||||||
serviceConfig.ExecStartPre = ''
|
serviceConfig.ExecStartPre = preStart;
|
||||||
${pkgs.runtimeShell} -c "mkdir -p ${homeDir} ${settingsDir} ${fullSettings.download-dir} ${fullSettings.incomplete-dir} && chmod 770 ${homeDir} ${settingsDir} ${fullSettings.download-dir} ${fullSettings.incomplete-dir} && rm -f ${settingsDir}/settings.json && cp -f ${settingsFile} ${settingsDir}/settings.json"
|
|
||||||
'';
|
|
||||||
serviceConfig.ExecStart = "${pkgs.transmission}/bin/transmission-daemon -f --port ${toString config.services.transmission.port}";
|
serviceConfig.ExecStart = "${pkgs.transmission}/bin/transmission-daemon -f --port ${toString config.services.transmission.port}";
|
||||||
serviceConfig.ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
serviceConfig.ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||||
serviceConfig.User = "transmission";
|
serviceConfig.User = "transmission";
|
||||||
|
@ -118,7 +118,7 @@ with lib;
|
|||||||
default = [];
|
default = [];
|
||||||
example = [
|
example = [
|
||||||
{ urlPath = "/foo/bar.png";
|
{ urlPath = "/foo/bar.png";
|
||||||
files = "/home/eelco/some-file.png";
|
file = "/home/eelco/some-file.png";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
description = ''
|
description = ''
|
||||||
|
@ -3,12 +3,7 @@
|
|||||||
with lib;
|
with lib;
|
||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.services.lighttpd.gitweb;
|
cfg = config.services.gitweb;
|
||||||
gitwebConfigFile = pkgs.writeText "gitweb.conf" ''
|
|
||||||
# path to git projects (<project>.git)
|
|
||||||
$projectroot = "${cfg.projectroot}";
|
|
||||||
${cfg.extraConfig}
|
|
||||||
'';
|
|
||||||
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
@ -23,26 +18,9 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
projectroot = mkOption {
|
|
||||||
default = "/srv/git";
|
|
||||||
type = types.path;
|
|
||||||
description = ''
|
|
||||||
Path to git projects (bare repositories) that should be served by
|
|
||||||
gitweb. Must not end with a slash.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
extraConfig = mkOption {
|
|
||||||
default = "";
|
|
||||||
type = types.lines;
|
|
||||||
description = ''
|
|
||||||
Verbatim configuration text appended to the generated gitweb.conf file.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf config.services.lighttpd.gitweb.enable {
|
||||||
|
|
||||||
# declare module dependencies
|
# declare module dependencies
|
||||||
services.lighttpd.enableModules = [ "mod_cgi" "mod_redirect" "mod_alias" "mod_setenv" ];
|
services.lighttpd.enableModules = [ "mod_cgi" "mod_redirect" "mod_alias" "mod_setenv" ];
|
||||||
@ -60,7 +38,7 @@ in
|
|||||||
"/gitweb/" => "${pkgs.git}/share/gitweb/gitweb.cgi"
|
"/gitweb/" => "${pkgs.git}/share/gitweb/gitweb.cgi"
|
||||||
)
|
)
|
||||||
setenv.add-environment = (
|
setenv.add-environment = (
|
||||||
"GITWEB_CONFIG" => "${gitwebConfigFile}",
|
"GITWEB_CONFIG" => "${cfg.gitwebConfigFile}",
|
||||||
"HOME" => "${cfg.projectroot}"
|
"HOME" => "${cfg.projectroot}"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
59
nixos/modules/services/web-servers/nginx/gitweb.nix
Normal file
59
nixos/modules/services/web-servers/nginx/gitweb.nix
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.services.gitweb;
|
||||||
|
|
||||||
|
in
|
||||||
|
{
|
||||||
|
|
||||||
|
options.services.nginx.gitweb = {
|
||||||
|
|
||||||
|
enable = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
description = ''
|
||||||
|
If true, enable gitweb in nginx. Access it at http://yourserver/gitweb
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf config.services.nginx.gitweb.enable {
|
||||||
|
|
||||||
|
systemd.services.gitweb = {
|
||||||
|
description = "GitWeb service";
|
||||||
|
script = "${pkgs.git}/share/gitweb/gitweb.cgi --fastcgi --nproc=1";
|
||||||
|
environment = {
|
||||||
|
FCGI_SOCKET_PATH = "/run/gitweb/gitweb.sock";
|
||||||
|
};
|
||||||
|
serviceConfig = {
|
||||||
|
User = "nginx";
|
||||||
|
Group = "nginx";
|
||||||
|
RuntimeDirectory = [ "gitweb" ];
|
||||||
|
};
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
services.nginx = {
|
||||||
|
virtualHosts.default = {
|
||||||
|
locations."/gitweb/" = {
|
||||||
|
root = "${pkgs.git}/share";
|
||||||
|
tryFiles = "$uri @gitweb";
|
||||||
|
};
|
||||||
|
locations."@gitweb" = {
|
||||||
|
extraConfig = ''
|
||||||
|
include ${pkgs.nginx}/conf/fastcgi_params;
|
||||||
|
fastcgi_param GITWEB_CONFIG ${cfg.gitwebConfigFile};
|
||||||
|
fastcgi_pass unix:/run/gitweb/gitweb.sock;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
meta.maintainers = with maintainers; [ gnidorah ];
|
||||||
|
|
||||||
|
}
|
@ -87,11 +87,11 @@ in
|
|||||||
|
|
||||||
default = mkOption {
|
default = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "none";
|
default = "";
|
||||||
example = "plasma5";
|
example = "none";
|
||||||
description = "Default desktop manager loaded if none have been chosen.";
|
description = "Default desktop manager loaded if none have been chosen.";
|
||||||
apply = defaultDM:
|
apply = defaultDM:
|
||||||
if defaultDM == "none" && cfg.session.list != [] then
|
if defaultDM == "" && cfg.session.list != [] then
|
||||||
(head cfg.session.list).name
|
(head cfg.session.list).name
|
||||||
else if any (w: w.name == defaultDM) cfg.session.list then
|
else if any (w: w.name == defaultDM) cfg.session.list then
|
||||||
defaultDM
|
defaultDM
|
||||||
|
@ -61,6 +61,8 @@ in
|
|||||||
|
|
||||||
environment.variables.GIO_EXTRA_MODULES = [ "${pkgs.gvfs}/lib/gio/modules" ];
|
environment.variables.GIO_EXTRA_MODULES = [ "${pkgs.gvfs}/lib/gio/modules" ];
|
||||||
|
|
||||||
|
services.upower.enable = config.powerManagement.enable;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -108,6 +108,8 @@ in
|
|||||||
services.gnome3.gnome-keyring.enable = true;
|
services.gnome3.gnome-keyring.enable = true;
|
||||||
services.upower.enable = config.powerManagement.enable;
|
services.upower.enable = config.powerManagement.enable;
|
||||||
|
|
||||||
|
security.pam.services."mate-screensaver".unixAuth = true;
|
||||||
|
|
||||||
environment.pathsToLink = [ "/share" ];
|
environment.pathsToLink = [ "/share" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -62,9 +62,7 @@ in
|
|||||||
example = "wmii";
|
example = "wmii";
|
||||||
description = "Default window manager loaded if none have been chosen.";
|
description = "Default window manager loaded if none have been chosen.";
|
||||||
apply = defaultWM:
|
apply = defaultWM:
|
||||||
if defaultWM == "none" && cfg.session != [] then
|
if any (w: w.name == defaultWM) cfg.session then
|
||||||
(head cfg.session).name
|
|
||||||
else if any (w: w.name == defaultWM) cfg.session then
|
|
||||||
defaultWM
|
defaultWM
|
||||||
else
|
else
|
||||||
throw "Default window manager (${defaultWM}) not found.";
|
throw "Default window manager (${defaultWM}) not found.";
|
||||||
|
@ -161,15 +161,6 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
plainX = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = ''
|
|
||||||
Whether the X11 session can be plain (without DM/WM) and
|
|
||||||
the Xsession script will be used as fallback or not.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
autorun = mkOption {
|
autorun = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = true;
|
default = true;
|
||||||
@ -561,11 +552,6 @@ in
|
|||||||
+ "${toString (length primaryHeads)} heads set to primary: "
|
+ "${toString (length primaryHeads)} heads set to primary: "
|
||||||
+ concatMapStringsSep ", " (x: x.output) primaryHeads;
|
+ concatMapStringsSep ", " (x: x.output) primaryHeads;
|
||||||
})
|
})
|
||||||
{ assertion = cfg.desktopManager.default == "none" && cfg.windowManager.default == "none" -> cfg.plainX;
|
|
||||||
message = "Either the desktop manager or the window manager shouldn't be `none`! "
|
|
||||||
+ "To explicitly allow this, you can also set `services.xserver.plainX` to `true`. "
|
|
||||||
+ "The `default` value looks for enabled WMs/DMs and select the first one.";
|
|
||||||
}
|
|
||||||
];
|
];
|
||||||
|
|
||||||
environment.etc =
|
environment.etc =
|
||||||
|
@ -43,7 +43,7 @@ if [ ! -e /proc/1 ]; then
|
|||||||
local options="$3"
|
local options="$3"
|
||||||
local fsType="$4"
|
local fsType="$4"
|
||||||
|
|
||||||
mkdir -m 0755 -p "$mountPoint"
|
install -m 0755 -d "$mountPoint"
|
||||||
mount -n -t "$fsType" -o "$options" "$device" "$mountPoint"
|
mount -n -t "$fsType" -o "$options" "$device" "$mountPoint"
|
||||||
}
|
}
|
||||||
source @earlyMountScript@
|
source @earlyMountScript@
|
||||||
@ -71,7 +71,7 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
# Provide a /etc/mtab.
|
# Provide a /etc/mtab.
|
||||||
mkdir -m 0755 -p /etc
|
install -m 0755 -d /etc
|
||||||
test -e /etc/fstab || touch /etc/fstab # to shut up mount
|
test -e /etc/fstab || touch /etc/fstab # to shut up mount
|
||||||
rm -f /etc/mtab* # not that we care about stale locks
|
rm -f /etc/mtab* # not that we care about stale locks
|
||||||
ln -s /proc/mounts /etc/mtab
|
ln -s /proc/mounts /etc/mtab
|
||||||
@ -79,8 +79,8 @@ ln -s /proc/mounts /etc/mtab
|
|||||||
|
|
||||||
# More special file systems, initialise required directories.
|
# More special file systems, initialise required directories.
|
||||||
[ -e /proc/bus/usb ] && mount -t usbfs usbfs /proc/bus/usb # UML doesn't have USB by default
|
[ -e /proc/bus/usb ] && mount -t usbfs usbfs /proc/bus/usb # UML doesn't have USB by default
|
||||||
mkdir -m 01777 -p /tmp
|
install -m 01777 -d /tmp
|
||||||
mkdir -m 0755 -p /var/{log,lib,db} /nix/var /etc/nixos/ \
|
install -m 0755 -d /var/{log,lib,db} /nix/var /etc/nixos/ \
|
||||||
/run/lock /home /bin # for the /bin/sh symlink
|
/run/lock /home /bin # for the /bin/sh symlink
|
||||||
|
|
||||||
|
|
||||||
|
@ -68,8 +68,7 @@ let
|
|||||||
(hasAttr dev cfg.macvlans) ||
|
(hasAttr dev cfg.macvlans) ||
|
||||||
(hasAttr dev cfg.sits) ||
|
(hasAttr dev cfg.sits) ||
|
||||||
(hasAttr dev cfg.vlans) ||
|
(hasAttr dev cfg.vlans) ||
|
||||||
(hasAttr dev cfg.vswitches) ||
|
(hasAttr dev cfg.vswitches)
|
||||||
(hasAttr dev cfg.wlanInterfaces)
|
|
||||||
then [ "${dev}-netdev.service" ]
|
then [ "${dev}-netdev.service" ]
|
||||||
else optional (dev != null && dev != "lo" && !config.boot.isContainer) (subsystemDevice dev);
|
else optional (dev != null && dev != "lo" && !config.boot.isContainer) (subsystemDevice dev);
|
||||||
|
|
||||||
|
@ -62,35 +62,6 @@ let
|
|||||||
then mapAttrsToList (n: v: v//{_iName=n;}) (filterAttrs (n: _: n==device) interfaces) ++ mapAttrsToList (n: v: v//{_iName=n;}) (filterAttrs (n: _: n!=device) interfaces)
|
then mapAttrsToList (n: v: v//{_iName=n;}) (filterAttrs (n: _: n==device) interfaces) ++ mapAttrsToList (n: v: v//{_iName=n;}) (filterAttrs (n: _: n!=device) interfaces)
|
||||||
else mapAttrsToList (n: v: v // {_iName = n;}) interfaces;
|
else mapAttrsToList (n: v: v // {_iName = n;}) interfaces;
|
||||||
|
|
||||||
# udev script that configures a physical wlan device and adds virtual interfaces
|
|
||||||
wlanDeviceUdevScript = device: interfaceList: pkgs.writeScript "wlan-${device}-udev-script" ''
|
|
||||||
#!${pkgs.runtimeShell}
|
|
||||||
|
|
||||||
# Change the wireless phy device to a predictable name.
|
|
||||||
if [ -e "/sys/class/net/${device}/phy80211/name" ]; then
|
|
||||||
${pkgs.iw}/bin/iw phy `${pkgs.coreutils}/bin/cat /sys/class/net/${device}/phy80211/name` set name ${device} || true
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Crate new, virtual interfaces and configure them at the same time
|
|
||||||
${flip concatMapStrings (drop 1 interfaceList) (i: ''
|
|
||||||
${pkgs.iw}/bin/iw dev ${device} interface add ${i._iName} type ${i.type} \
|
|
||||||
${optionalString (i.type == "mesh" && i.meshID != null) "mesh_id ${i.meshID}"} \
|
|
||||||
${optionalString (i.type == "monitor" && i.flags != null) "flags ${i.flags}"} \
|
|
||||||
${optionalString (i.type == "managed" && i.fourAddr != null) "4addr ${if i.fourAddr then "on" else "off"}"} \
|
|
||||||
${optionalString (i.mac != null) "addr ${i.mac}"}
|
|
||||||
'')}
|
|
||||||
|
|
||||||
# Reconfigure and rename the default interface that already exists
|
|
||||||
${flip concatMapStrings (take 1 interfaceList) (i: ''
|
|
||||||
${pkgs.iw}/bin/iw dev ${device} set type ${i.type}
|
|
||||||
${optionalString (i.type == "mesh" && i.meshID != null) "${pkgs.iw}/bin/iw dev ${device} set meshid ${i.meshID}"}
|
|
||||||
${optionalString (i.type == "monitor" && i.flags != null) "${pkgs.iw}/bin/iw dev ${device} set monitor ${i.flags}"}
|
|
||||||
${optionalString (i.type == "managed" && i.fourAddr != null) "${pkgs.iw}/bin/iw dev ${device} set 4addr ${if i.fourAddr then "on" else "off"}"}
|
|
||||||
${optionalString (i.mac != null) "${pkgs.iproute}/bin/ip link set dev ${device} address ${i.mac}"}
|
|
||||||
${optionalString (device != i._iName) "${pkgs.iproute}/bin/ip link set dev ${device} name ${i._iName}"}
|
|
||||||
'')}
|
|
||||||
'';
|
|
||||||
|
|
||||||
# We must escape interfaces due to the systemd interpretation
|
# We must escape interfaces due to the systemd interpretation
|
||||||
subsystemDevice = interface:
|
subsystemDevice = interface:
|
||||||
"sys-subsystem-net-devices-${escapeSystemdPath interface}.device";
|
"sys-subsystem-net-devices-${escapeSystemdPath interface}.device";
|
||||||
|
@ -240,5 +240,22 @@ let self = {
|
|||||||
"17.09".sa-east-1.hvm-ebs = "ami-4762202b";
|
"17.09".sa-east-1.hvm-ebs = "ami-4762202b";
|
||||||
"17.09".ap-south-1.hvm-ebs = "ami-4e376021";
|
"17.09".ap-south-1.hvm-ebs = "ami-4e376021";
|
||||||
|
|
||||||
latest = self."17.09";
|
# 18.03.131792.becbe4dbe16
|
||||||
|
"18.03".eu-west-1.hvm-ebs = "ami-cda4fab4";
|
||||||
|
"18.03".eu-west-2.hvm-ebs = "ami-d96786be";
|
||||||
|
"18.03".eu-west-3.hvm-ebs = "ami-6b0cba16";
|
||||||
|
"18.03".eu-central-1.hvm-ebs = "ami-5e2b75b5";
|
||||||
|
"18.03".us-east-1.hvm-ebs = "ami-d464cba9";
|
||||||
|
"18.03".us-east-2.hvm-ebs = "ami-fd221298";
|
||||||
|
"18.03".us-west-1.hvm-ebs = "ami-ff0d1d9f";
|
||||||
|
"18.03".us-west-2.hvm-ebs = "ami-c05c3bb8";
|
||||||
|
"18.03".ca-central-1.hvm-ebs = "ami-cc72f4a8";
|
||||||
|
"18.03".ap-southeast-1.hvm-ebs = "ami-b61633ca";
|
||||||
|
"18.03".ap-southeast-2.hvm-ebs = "ami-530fc131";
|
||||||
|
"18.03".ap-northeast-1.hvm-ebs = "ami-90d6c0ec";
|
||||||
|
"18.03".ap-northeast-2.hvm-ebs = "ami-a1248bcf";
|
||||||
|
"18.03".sa-east-1.hvm-ebs = "ami-b090c6dc";
|
||||||
|
"18.03".ap-south-1.hvm-ebs = "ami-32c9ec5d";
|
||||||
|
|
||||||
|
latest = self."18.03";
|
||||||
}; in self
|
}; in self
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
diskSize = 1024; # MB
|
diskSize = 1536; # MB
|
||||||
gce = pkgs.google-compute-engine;
|
gce = pkgs.google-compute-engine;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
@ -57,6 +57,12 @@ in
|
|||||||
# Always include cryptsetup so that NixOps can use it.
|
# Always include cryptsetup so that NixOps can use it.
|
||||||
environment.systemPackages = [ pkgs.cryptsetup ];
|
environment.systemPackages = [ pkgs.cryptsetup ];
|
||||||
|
|
||||||
|
# Make sure GCE image does not replace host key that NixOps sets
|
||||||
|
environment.etc."default/instance_configs.cfg".text = lib.mkDefault ''
|
||||||
|
[InstanceSetup]
|
||||||
|
set_host_keys = false
|
||||||
|
'';
|
||||||
|
|
||||||
# Rely on GCP's firewall instead
|
# Rely on GCP's firewall instead
|
||||||
networking.firewall.enable = mkDefault false;
|
networking.firewall.enable = mkDefault false;
|
||||||
|
|
||||||
|
@ -55,6 +55,17 @@ let
|
|||||||
}).config.system.build.isoImage);
|
}).config.system.build.isoImage);
|
||||||
|
|
||||||
|
|
||||||
|
makeSdImage =
|
||||||
|
{ module, maintainers ? ["dezgeg"], system }:
|
||||||
|
|
||||||
|
with import nixpkgs { inherit system; };
|
||||||
|
|
||||||
|
hydraJob ((import lib/eval-config.nix {
|
||||||
|
inherit system;
|
||||||
|
modules = [ module versionModule ];
|
||||||
|
}).config.system.build.sdImage);
|
||||||
|
|
||||||
|
|
||||||
makeSystemTarball =
|
makeSystemTarball =
|
||||||
{ module, maintainers ? ["viric"], system }:
|
{ module, maintainers ? ["viric"], system }:
|
||||||
|
|
||||||
@ -155,6 +166,10 @@ in rec {
|
|||||||
inherit system;
|
inherit system;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
sd_image = forMatchingSystems [ "aarch64-linux" ] (system: makeSdImage {
|
||||||
|
module = ./modules/installer/cd-dvd/sd-image-aarch64.nix;
|
||||||
|
inherit system;
|
||||||
|
});
|
||||||
|
|
||||||
# A bootable VirtualBox virtual appliance as an OVA file (i.e. packaged OVF).
|
# A bootable VirtualBox virtual appliance as an OVA file (i.e. packaged OVF).
|
||||||
ova = forMatchingSystems [ "x86_64-linux" ] (system:
|
ova = forMatchingSystems [ "x86_64-linux" ] (system:
|
||||||
@ -296,7 +311,10 @@ in rec {
|
|||||||
tests.kernel-copperhead = callTest tests/kernel-copperhead.nix {};
|
tests.kernel-copperhead = callTest tests/kernel-copperhead.nix {};
|
||||||
tests.kernel-latest = callTest tests/kernel-latest.nix {};
|
tests.kernel-latest = callTest tests/kernel-latest.nix {};
|
||||||
tests.kernel-lts = callTest tests/kernel-lts.nix {};
|
tests.kernel-lts = callTest tests/kernel-lts.nix {};
|
||||||
tests.kubernetes = callSubTestsOnMatchingSystems ["x86_64-linux"] tests/kubernetes/default.nix {};
|
tests.kubernetes.dns = callSubTestsOnMatchingSystems ["x86_64-linux"] tests/kubernetes/dns.nix {};
|
||||||
|
## kubernetes.e2e should eventually replace kubernetes.rbac when it works
|
||||||
|
#tests.kubernetes.e2e = callSubTestsOnMatchingSystems ["x86_64-linux"] tests/kubernetes/e2e.nix {};
|
||||||
|
tests.kubernetes.rbac = callSubTestsOnMatchingSystems ["x86_64-linux"] tests/kubernetes/rbac.nix {};
|
||||||
tests.latestKernel.login = callTest tests/login.nix { latestKernel = true; };
|
tests.latestKernel.login = callTest tests/login.nix { latestKernel = true; };
|
||||||
tests.ldap = callTest tests/ldap.nix {};
|
tests.ldap = callTest tests/ldap.nix {};
|
||||||
#tests.lightdm = callTest tests/lightdm.nix {};
|
#tests.lightdm = callTest tests/lightdm.nix {};
|
||||||
@ -365,6 +383,7 @@ in rec {
|
|||||||
tests.switchTest = callTest tests/switch-test.nix {};
|
tests.switchTest = callTest tests/switch-test.nix {};
|
||||||
tests.taskserver = callTest tests/taskserver.nix {};
|
tests.taskserver = callTest tests/taskserver.nix {};
|
||||||
tests.tomcat = callTest tests/tomcat.nix {};
|
tests.tomcat = callTest tests/tomcat.nix {};
|
||||||
|
tests.transmission = callTest tests/transmission.nix {};
|
||||||
tests.udisks2 = callTest tests/udisks2.nix {};
|
tests.udisks2 = callTest tests/udisks2.nix {};
|
||||||
tests.vault = callTest tests/vault.nix {};
|
tests.vault = callTest tests/vault.nix {};
|
||||||
tests.virtualbox = callSubTestsOnMatchingSystems ["x86_64-linux"] tests/virtualbox.nix {};
|
tests.virtualbox = callSubTestsOnMatchingSystems ["x86_64-linux"] tests/virtualbox.nix {};
|
||||||
|
@ -17,20 +17,14 @@ import ./make-test.nix ({ pkgs, lib, ... }:
|
|||||||
startAll;
|
startAll;
|
||||||
|
|
||||||
$machine->fail("test -f ~root/at-1");
|
$machine->fail("test -f ~root/at-1");
|
||||||
$machine->fail("test -f ~root/batch-1");
|
|
||||||
$machine->fail("test -f ~alice/at-1");
|
$machine->fail("test -f ~alice/at-1");
|
||||||
$machine->fail("test -f ~alice/batch-1");
|
|
||||||
|
|
||||||
$machine->succeed("echo 'touch ~root/at-1' | at now+1min");
|
$machine->succeed("echo 'touch ~root/at-1' | at now+1min");
|
||||||
$machine->succeed("echo 'touch ~root/batch-1' | batch");
|
|
||||||
$machine->succeed("su - alice -c \"echo 'touch at-1' | at now+1min\"");
|
$machine->succeed("su - alice -c \"echo 'touch at-1' | at now+1min\"");
|
||||||
$machine->succeed("su - alice -c \"echo 'touch batch-1' | batch\"");
|
|
||||||
|
|
||||||
$machine->succeed("sleep 1.5m");
|
$machine->succeed("sleep 1.5m");
|
||||||
|
|
||||||
$machine->succeed("test -f ~root/at-1");
|
$machine->succeed("test -f ~root/at-1");
|
||||||
$machine->succeed("test -f ~root/batch-1");
|
|
||||||
$machine->succeed("test -f ~alice/at-1");
|
$machine->succeed("test -f ~alice/at-1");
|
||||||
$machine->succeed("test -f ~alice/batch-1");
|
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -20,7 +20,7 @@ import ./make-test.nix ({ pkgs, ...} : {
|
|||||||
containers.foo.config = {};
|
containers.foo.config = {};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in [ pkgs.stdenv emptyContainer.config.containers.foo.path ];
|
in [ pkgs.stdenv emptyContainer.config.containers.foo.path pkgs.libxslt ];
|
||||||
};
|
};
|
||||||
|
|
||||||
testScript =
|
testScript =
|
||||||
|
@ -52,7 +52,7 @@ import ./make-test.nix ({ pkgs, ...} : {
|
|||||||
config = {
|
config = {
|
||||||
networking.bonds.bond0 = {
|
networking.bonds.bond0 = {
|
||||||
interfaces = [ "eth1" ];
|
interfaces = [ "eth1" ];
|
||||||
mode = "active-backup";
|
driverOptions.mode = "active-backup";
|
||||||
};
|
};
|
||||||
networking.interfaces.bond0.ipv4.addresses = [
|
networking.interfaces.bond0.ipv4.addresses = [
|
||||||
{ address = "10.10.0.3"; prefixLength = 24; }
|
{ address = "10.10.0.3"; prefixLength = 24; }
|
||||||
@ -73,7 +73,7 @@ import ./make-test.nix ({ pkgs, ...} : {
|
|||||||
config = {
|
config = {
|
||||||
networking.bonds.bond0 = {
|
networking.bonds.bond0 = {
|
||||||
interfaces = [ "eth1" ];
|
interfaces = [ "eth1" ];
|
||||||
mode = "active-backup";
|
driverOptions.mode = "active-backup";
|
||||||
};
|
};
|
||||||
networking.bridges.br0.interfaces = [ "bond0" ];
|
networking.bridges.br0.interfaces = [ "bond0" ];
|
||||||
networking.interfaces.br0.ipv4.addresses = [
|
networking.interfaces.br0.ipv4.addresses = [
|
||||||
|
@ -6,29 +6,62 @@
|
|||||||
kubelets
|
kubelets
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
runWithCFSSL = name: cmd:
|
runWithCFSSL = name: cmd:
|
||||||
builtins.fromJSON (builtins.readFile (
|
let secrets = pkgs.runCommand "${name}-cfss.json" {
|
||||||
pkgs.runCommand "${name}-cfss.json" {
|
buildInputs = [ pkgs.cfssl pkgs.jq ];
|
||||||
buildInputs = [ pkgs.cfssl ];
|
outputs = [ "out" "cert" "key" "csr" ];
|
||||||
} "cfssl ${cmd} > $out"
|
}
|
||||||
));
|
''
|
||||||
|
(
|
||||||
|
echo "${cmd}"
|
||||||
|
cfssl ${cmd} > tmp
|
||||||
|
cat tmp | jq -r .key > $key
|
||||||
|
cat tmp | jq -r .cert > $cert
|
||||||
|
cat tmp | jq -r .csr > $csr
|
||||||
|
|
||||||
writeCFSSL = content:
|
touch $out
|
||||||
pkgs.runCommand content.name {
|
) 2>&1 | fold -w 80 -s
|
||||||
buildInputs = [ pkgs.cfssl ];
|
'';
|
||||||
} ''
|
in {
|
||||||
mkdir -p $out
|
key = secrets.key;
|
||||||
cd $out
|
cert = secrets.cert;
|
||||||
cat ${writeFile content} | cfssljson -bare ${content.name}
|
csr = secrets.csr;
|
||||||
'';
|
};
|
||||||
|
|
||||||
|
writeCFSSL = content:
|
||||||
|
pkgs.runCommand content.name {
|
||||||
|
buildInputs = [ pkgs.cfssl pkgs.jq ];
|
||||||
|
} ''
|
||||||
|
mkdir -p $out
|
||||||
|
cd $out
|
||||||
|
|
||||||
|
json=${pkgs.lib.escapeShellArg (builtins.toJSON content)}
|
||||||
|
|
||||||
|
# for a given $field in the $json, treat the associated value as a
|
||||||
|
# file path and substitute the contents thereof into the $json
|
||||||
|
# object.
|
||||||
|
expandFileField() {
|
||||||
|
local field=$1
|
||||||
|
if jq -e --arg field "$field" 'has($field)'; then
|
||||||
|
local path="$(echo "$json" | jq -r ".$field")"
|
||||||
|
json="$(echo "$json" | jq --arg val "$(cat "$path")" ".$field = \$val")"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
expandFileField key
|
||||||
|
expandFileField ca
|
||||||
|
expandFileField cert
|
||||||
|
|
||||||
|
echo "$json" | cfssljson -bare ${content.name}
|
||||||
|
'';
|
||||||
|
|
||||||
noCSR = content: pkgs.lib.filterAttrs (n: v: n != "csr") content;
|
noCSR = content: pkgs.lib.filterAttrs (n: v: n != "csr") content;
|
||||||
noKey = content: pkgs.lib.filterAttrs (n: v: n != "key") content;
|
noKey = content: pkgs.lib.filterAttrs (n: v: n != "key") content;
|
||||||
|
|
||||||
writeFile = content: pkgs.writeText "content" (
|
writeFile = content:
|
||||||
if pkgs.lib.isAttrs content then builtins.toJSON content
|
if pkgs.lib.isDerivation content
|
||||||
else toString content
|
then content
|
||||||
);
|
else pkgs.writeText "content" (builtins.toJSON content);
|
||||||
|
|
||||||
createServingCertKey = { ca, cn, hosts? [], size ? 2048, name ? cn }:
|
createServingCertKey = { ca, cn, hosts? [], size ? 2048, name ? cn }:
|
||||||
noCSR (
|
noCSR (
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
with import ./base.nix { inherit system; };
|
with import ./base.nix { inherit system; };
|
||||||
let
|
let
|
||||||
domain = "my.zyx";
|
domain = "my.zyx";
|
||||||
certs = import ./certs.nix { externalDomain = domain; };
|
certs = import ./certs.nix { externalDomain = domain; kubelets = ["machine1" "machine2"]; };
|
||||||
kubeconfig = pkgs.writeText "kubeconfig.json" (builtins.toJSON {
|
kubeconfig = pkgs.writeText "kubeconfig.json" (builtins.toJSON {
|
||||||
apiVersion = "v1";
|
apiVersion = "v1";
|
||||||
kind = "Config";
|
kind = "Config";
|
||||||
|
@ -12,7 +12,7 @@ let
|
|||||||
});
|
});
|
||||||
|
|
||||||
roRoleBinding = pkgs.writeText "ro-role-binding.json" (builtins.toJSON {
|
roRoleBinding = pkgs.writeText "ro-role-binding.json" (builtins.toJSON {
|
||||||
apiVersion = "rbac.authorization.k8s.io/v1beta1";
|
apiVersion = "rbac.authorization.k8s.io/v1";
|
||||||
kind = "RoleBinding";
|
kind = "RoleBinding";
|
||||||
metadata = {
|
metadata = {
|
||||||
name = "read-pods";
|
name = "read-pods";
|
||||||
@ -31,7 +31,7 @@ let
|
|||||||
});
|
});
|
||||||
|
|
||||||
roRole = pkgs.writeText "ro-role.json" (builtins.toJSON {
|
roRole = pkgs.writeText "ro-role.json" (builtins.toJSON {
|
||||||
apiVersion = "rbac.authorization.k8s.io/v1beta1";
|
apiVersion = "rbac.authorization.k8s.io/v1";
|
||||||
kind = "Role";
|
kind = "Role";
|
||||||
metadata = {
|
metadata = {
|
||||||
name = "pod-reader";
|
name = "pod-reader";
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import ./make-test.nix {
|
import ./make-test.nix {
|
||||||
name = "dovecot";
|
name = "openldap";
|
||||||
|
|
||||||
machine = { pkgs, ... }: {
|
machine = { pkgs, ... }: {
|
||||||
services.openldap = {
|
services.openldap = {
|
||||||
|
21
nixos/tests/transmission.nix
Normal file
21
nixos/tests/transmission.nix
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import ./make-test.nix ({ pkgs, ...} : {
|
||||||
|
name = "transmission";
|
||||||
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
|
maintainers = [ coconnor ];
|
||||||
|
};
|
||||||
|
|
||||||
|
machine = { config, pkgs, ... }: {
|
||||||
|
imports = [ ../modules/profiles/minimal.nix ];
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [ 9091 ];
|
||||||
|
|
||||||
|
services.transmission.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript =
|
||||||
|
''
|
||||||
|
startAll;
|
||||||
|
$machine->waitForUnit("transmission");
|
||||||
|
$machine->shutdown;
|
||||||
|
'';
|
||||||
|
})
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
buildGoPackage rec {
|
buildGoPackage rec {
|
||||||
name = "go-ethereum-${version}";
|
name = "go-ethereum-${version}";
|
||||||
version = "1.8.2";
|
version = "1.8.3";
|
||||||
goPackagePath = "github.com/ethereum/go-ethereum";
|
goPackagePath = "github.com/ethereum/go-ethereum";
|
||||||
|
|
||||||
# Fix for usb-related segmentation faults on darwin
|
# Fix for usb-related segmentation faults on darwin
|
||||||
@ -27,7 +27,7 @@ buildGoPackage rec {
|
|||||||
owner = "ethereum";
|
owner = "ethereum";
|
||||||
repo = "go-ethereum";
|
repo = "go-ethereum";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "19ryfy9dsmgk3kimkmq2hif1di4binqg9718xrmirf063rajk02a";
|
sha256 = "1vdrf3fi4arr6aivyp5myj4jy7apqbiqa6brr3jplmc07q1yijnf";
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
|
@ -2,32 +2,34 @@
|
|||||||
, makeWrapper, makeDesktopItem
|
, makeWrapper, makeDesktopItem
|
||||||
, qtbase, qmake, qtmultimedia, qttools
|
, qtbase, qmake, qtmultimedia, qttools
|
||||||
, qtgraphicaleffects, qtdeclarative
|
, qtgraphicaleffects, qtdeclarative
|
||||||
, qtlocation, qtquickcontrols, qtwebchannel
|
, qtlocation, qtquickcontrols2, qtwebchannel
|
||||||
, qtwebengine, qtx11extras, qtxmlpatterns
|
, qtwebengine, qtx11extras, qtxmlpatterns
|
||||||
, monero, unbound, readline, boost, libunwind
|
, monero, unbound, readline, boost, libunwind
|
||||||
|
, pcsclite, zeromq, cppzmq, pkgconfig
|
||||||
}:
|
}:
|
||||||
|
|
||||||
with stdenv.lib;
|
with stdenv.lib;
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "monero-gui-${version}";
|
name = "monero-gui-${version}";
|
||||||
version = "0.11.1.0";
|
version = "0.12.0.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "monero-project";
|
owner = "monero-project";
|
||||||
repo = "monero-gui";
|
repo = "monero-gui";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "01d7apwrv8j8bh7plvvhlnll3ransaha3n6rx19nkgvfn319hswq";
|
sha256 = "1mg5ival8a2wdp14yib4wzqax4xyvd40zjy9anhszljds1439jhl";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ qmake ];
|
nativeBuildInputs = [ qmake pkgconfig ];
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
qtbase qtmultimedia qtgraphicaleffects
|
qtbase qtmultimedia qtgraphicaleffects
|
||||||
qtdeclarative qtlocation qtquickcontrols
|
qtdeclarative qtlocation qtquickcontrols2
|
||||||
qtwebchannel qtwebengine qtx11extras
|
qtwebchannel qtwebengine qtx11extras
|
||||||
qtxmlpatterns monero unbound readline
|
qtxmlpatterns monero unbound readline
|
||||||
boost libunwind makeWrapper
|
boost libunwind pcsclite zeromq cppzmq
|
||||||
|
makeWrapper
|
||||||
];
|
];
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
diff --git a/main.cpp b/main.cpp
|
diff --git a/main.cpp b/main.cpp
|
||||||
index 1a9a979..2316929 100644
|
index c03b160..a8ea263 100644
|
||||||
--- a/main.cpp
|
--- a/main.cpp
|
||||||
+++ b/main.cpp
|
+++ b/main.cpp
|
||||||
@@ -74,10 +74,6 @@ int main(int argc, char *argv[])
|
@@ -80,14 +80,16 @@ int main(int argc, char *argv[])
|
||||||
// qDebug() << "High DPI auto scaling - enabled";
|
// qDebug() << "High DPI auto scaling - enabled";
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
@ -13,9 +13,6 @@ index 1a9a979..2316929 100644
|
|||||||
MainApp app(argc, argv);
|
MainApp app(argc, argv);
|
||||||
|
|
||||||
qDebug() << "app startd";
|
qDebug() << "app startd";
|
||||||
@@ -86,6 +82,13 @@ int main(int argc, char *argv[])
|
|
||||||
app.setOrganizationDomain("getmonero.org");
|
|
||||||
app.setOrganizationName("monero-project");
|
|
||||||
|
|
||||||
+ // Log settings
|
+ // Log settings
|
||||||
+ QString logfile =
|
+ QString logfile =
|
||||||
@ -23,20 +20,19 @@ index 1a9a979..2316929 100644
|
|||||||
+ + "/monero-wallet-gui.log";
|
+ + "/monero-wallet-gui.log";
|
||||||
+ Monero::Wallet::init(argv[0], logfile.toUtf8().constData());
|
+ Monero::Wallet::init(argv[0], logfile.toUtf8().constData());
|
||||||
+
|
+
|
||||||
+
|
app.setApplicationName("monero-core");
|
||||||
filter *eventFilter = new filter;
|
app.setOrganizationDomain("getmonero.org");
|
||||||
app.installEventFilter(eventFilter);
|
app.setOrganizationName("monero-project");
|
||||||
|
|
||||||
diff --git a/src/libwalletqt/Wallet.cpp b/src/libwalletqt/Wallet.cpp
|
diff --git a/src/libwalletqt/Wallet.cpp b/src/libwalletqt/Wallet.cpp
|
||||||
index 8525bf3..6967b24 100644
|
index 74649ce..fe1efc6 100644
|
||||||
--- a/src/libwalletqt/Wallet.cpp
|
--- a/src/libwalletqt/Wallet.cpp
|
||||||
+++ b/src/libwalletqt/Wallet.cpp
|
+++ b/src/libwalletqt/Wallet.cpp
|
||||||
@@ -613,7 +613,7 @@ QString Wallet::getDaemonLogPath() const
|
@@ -729,7 +729,7 @@ QString Wallet::getWalletLogPath() const
|
||||||
|
#ifdef Q_OS_MACOS
|
||||||
QString Wallet::getWalletLogPath() const
|
return QStandardPaths::standardLocations(QStandardPaths::HomeLocation).at(0) + "/Library/Logs/" + filename;
|
||||||
{
|
#else
|
||||||
- return QCoreApplication::applicationDirPath() + "/monero-wallet-gui.log";
|
- return QCoreApplication::applicationDirPath() + "/" + filename;
|
||||||
+ return QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + "/monero-wallet-gui.log";
|
+ return QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + filename;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
Wallet::Wallet(Monero::Wallet *w, QObject *parent)
|
|
||||||
|
@ -1,78 +0,0 @@
|
|||||||
diff --git a/src/wallet/CMakeLists.txt b/src/wallet/CMakeLists.txt
|
|
||||||
index 63908005..f6656d5c 100644
|
|
||||||
--- a/src/wallet/CMakeLists.txt
|
|
||||||
+++ b/src/wallet/CMakeLists.txt
|
|
||||||
@@ -86,43 +86,40 @@ target_link_libraries(wallet
|
|
||||||
${EXTRA_LIBRARIES})
|
|
||||||
add_dependencies(wallet version)
|
|
||||||
|
|
||||||
-if (NOT BUILD_GUI_DEPS)
|
|
||||||
- set(wallet_rpc_sources
|
|
||||||
- wallet_rpc_server.cpp)
|
|
||||||
+set(wallet_rpc_sources
|
|
||||||
+ wallet_rpc_server.cpp)
|
|
||||||
|
|
||||||
- set(wallet_rpc_headers)
|
|
||||||
+set(wallet_rpc_headers)
|
|
||||||
|
|
||||||
- set(wallet_rpc_private_headers
|
|
||||||
- wallet_rpc_server.h)
|
|
||||||
+set(wallet_rpc_private_headers
|
|
||||||
+ wallet_rpc_server.h)
|
|
||||||
|
|
||||||
- monero_private_headers(wallet_rpc_server
|
|
||||||
- ${wallet_rpc_private_headers})
|
|
||||||
- monero_add_executable(wallet_rpc_server
|
|
||||||
- ${wallet_rpc_sources}
|
|
||||||
- ${wallet_rpc_headers}
|
|
||||||
- ${wallet_rpc_private_headers})
|
|
||||||
-
|
|
||||||
- target_link_libraries(wallet_rpc_server
|
|
||||||
- PRIVATE
|
|
||||||
- wallet
|
|
||||||
- epee
|
|
||||||
- rpc
|
|
||||||
- cryptonote_core
|
|
||||||
- cncrypto
|
|
||||||
- common
|
|
||||||
- ${Boost_CHRONO_LIBRARY}
|
|
||||||
- ${Boost_PROGRAM_OPTIONS_LIBRARY}
|
|
||||||
- ${Boost_FILESYSTEM_LIBRARY}
|
|
||||||
- ${Boost_THREAD_LIBRARY}
|
|
||||||
- ${CMAKE_THREAD_LIBS_INIT}
|
|
||||||
- ${EXTRA_LIBRARIES})
|
|
||||||
- add_dependencies(wallet_rpc_server version)
|
|
||||||
- set_property(TARGET wallet_rpc_server
|
|
||||||
- PROPERTY
|
|
||||||
- OUTPUT_NAME "monero-wallet-rpc")
|
|
||||||
- install(TARGETS wallet_rpc_server DESTINATION bin)
|
|
||||||
-endif()
|
|
||||||
+monero_private_headers(wallet_rpc_server
|
|
||||||
+ ${wallet_rpc_private_headers})
|
|
||||||
+monero_add_executable(wallet_rpc_server
|
|
||||||
+ ${wallet_rpc_sources}
|
|
||||||
+ ${wallet_rpc_headers}
|
|
||||||
+ ${wallet_rpc_private_headers})
|
|
||||||
|
|
||||||
+target_link_libraries(wallet_rpc_server
|
|
||||||
+ PRIVATE
|
|
||||||
+ wallet
|
|
||||||
+ epee
|
|
||||||
+ rpc
|
|
||||||
+ cryptonote_core
|
|
||||||
+ cncrypto
|
|
||||||
+ common
|
|
||||||
+ ${Boost_CHRONO_LIBRARY}
|
|
||||||
+ ${Boost_PROGRAM_OPTIONS_LIBRARY}
|
|
||||||
+ ${Boost_FILESYSTEM_LIBRARY}
|
|
||||||
+ ${Boost_THREAD_LIBRARY}
|
|
||||||
+ ${CMAKE_THREAD_LIBS_INIT}
|
|
||||||
+ ${EXTRA_LIBRARIES})
|
|
||||||
+add_dependencies(wallet_rpc_server version)
|
|
||||||
+set_property(TARGET wallet_rpc_server
|
|
||||||
+ PROPERTY
|
|
||||||
+ OUTPUT_NAME "monero-wallet-rpc")
|
|
||||||
+install(TARGETS wallet_rpc_server DESTINATION bin)
|
|
||||||
|
|
||||||
# build and install libwallet_merged only if we building for GUI
|
|
||||||
if (BUILD_GUI_DEPS)
|
|
@ -1,48 +1,44 @@
|
|||||||
{ stdenv, fetchpatch, fetchFromGitHub, cmake
|
{ stdenv, fetchFromGitHub, cmake, pkgconfig, git
|
||||||
, boost, miniupnpc, openssl, pkgconfig, unbound
|
, boost, miniupnpc, openssl, unbound, cppzmq
|
||||||
, IOKit
|
, zeromq, pcsclite, readline
|
||||||
|
, CoreData, IOKit, PCSC
|
||||||
}:
|
}:
|
||||||
|
|
||||||
|
assert stdenv.isDarwin -> IOKit != null;
|
||||||
|
|
||||||
|
with stdenv.lib;
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "monero-${version}";
|
name = "monero-${version}";
|
||||||
version = "0.11.1.0";
|
version = "0.12.0.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "monero-project";
|
owner = "monero-project";
|
||||||
repo = "monero";
|
repo = "monero";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0nrpxx6r63ia6ard85d504x2kgaikvrhb5sg93ml70l6djyy1148";
|
sha256 = "1lc9mkrl1m8mdbvj88y8y5rv44vinxf7dyv221ndmw5c5gs5zfgk";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake pkgconfig ];
|
nativeBuildInputs = [ cmake pkgconfig git ];
|
||||||
|
|
||||||
buildInputs = [ boost miniupnpc openssl unbound ]
|
buildInputs = [
|
||||||
++ stdenv.lib.optional stdenv.isDarwin IOKit;
|
boost miniupnpc openssl unbound
|
||||||
|
cppzmq zeromq pcsclite readline
|
||||||
patches = [
|
] ++ optionals stdenv.isDarwin [ IOKit CoreData PCSC ];
|
||||||
./build-wallet-rpc.patch # fixed in next release
|
|
||||||
];
|
|
||||||
|
|
||||||
cmakeFlags = [
|
cmakeFlags = [
|
||||||
"-DCMAKE_BUILD_TYPE=Release"
|
"-DCMAKE_BUILD_TYPE=Release"
|
||||||
"-DBUILD_GUI_DEPS=ON"
|
"-DBUILD_GUI_DEPS=ON"
|
||||||
|
"-DReadline_ROOT_DIR=${readline.dev}"
|
||||||
];
|
];
|
||||||
|
|
||||||
doCheck = false;
|
hardeningDisable = [ "fortify" ];
|
||||||
|
|
||||||
installPhase = ''
|
meta = {
|
||||||
make install
|
|
||||||
install -Dt "$out/bin/" \
|
|
||||||
bin/monero-blockchain-export \
|
|
||||||
bin/monero-blockchain-import \
|
|
||||||
bin/monero-wallet-rpc
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
|
||||||
description = "Private, secure, untraceable currency";
|
description = "Private, secure, untraceable currency";
|
||||||
homepage = https://getmonero.org/;
|
homepage = https://getmonero.org/;
|
||||||
license = licenses.bsd3;
|
license = licenses.bsd3;
|
||||||
platforms = platforms.all;
|
platforms = platforms.all;
|
||||||
maintainers = [ maintainers.ehmry ];
|
maintainers = with maintainers; [ ehmry rnhmjoj ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{ stdenv, fetchurl, pkgconfig, intltool, gtk3, glib, libid3tag, id3lib, taglib
|
{ stdenv, fetchurl, pkgconfig, intltool, gtk3, glib, libid3tag, id3lib, taglib
|
||||||
, libvorbis, libogg, flac, itstool, libxml2, gsettings-desktop-schemas
|
, libvorbis, libogg, opusfile, flac, itstool, libxml2, gsettings-desktop-schemas
|
||||||
, gnome3, wrapGAppsHook
|
, gnome3, wrapGAppsHook
|
||||||
}:
|
}:
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ in stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig intltool itstool libxml2 wrapGAppsHook ];
|
nativeBuildInputs = [ pkgconfig intltool itstool libxml2 wrapGAppsHook ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
gtk3 glib libid3tag id3lib taglib libvorbis libogg flac
|
gtk3 glib libid3tag id3lib taglib libvorbis libogg opusfile flac
|
||||||
gsettings-desktop-schemas gnome3.defaultIconTheme
|
gsettings-desktop-schemas gnome3.defaultIconTheme
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -7,14 +7,13 @@
|
|||||||
|
|
||||||
mkDerivation rec {
|
mkDerivation rec {
|
||||||
name = "elisa-${version}";
|
name = "elisa-${version}";
|
||||||
# 0.1 is expected in early/mid 2018-04
|
version = "0.1";
|
||||||
version = "0.0.20180320";
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "KDE";
|
owner = "KDE";
|
||||||
repo = "elisa";
|
repo = "elisa";
|
||||||
rev = "9dd35d7244a8a3553275152f5b50fbe6d272ce64";
|
rev = version;
|
||||||
sha256 = "0mjqvcpk2y4jlwkka8gzl50wgqjjx9bzpbrj79cr0ib3jyviss4k";
|
sha256 = "13i0fkpwrskric3gfalh7mcpp4l2knwnq7jpq391lgh6krq04r4w";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules kdoctools wrapGAppsHook ];
|
nativeBuildInputs = [ extra-cmake-modules kdoctools wrapGAppsHook ];
|
||||||
|
@ -11,10 +11,10 @@ with stdenv.lib;
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "fmit-${version}";
|
name = "fmit-${version}";
|
||||||
version = "1.1.13";
|
version = "1.1.14";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
sha256 = "1p374gf7iksrlyvddm3w4qk3l0rxsiyymz5s8dmc447yvin8ykfq";
|
sha256 = "18gvl8smcnigzldy1acs5h8rscf287b39xi4y2cl5armqbj0y38x";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
repo = "fmit";
|
repo = "fmit";
|
||||||
owner = "gillesdegottex";
|
owner = "gillesdegottex";
|
||||||
|
@ -4,11 +4,11 @@
|
|||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "mpg123-1.25.8";
|
name = "mpg123-1.25.10";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://sourceforge/mpg123/${name}.tar.bz2";
|
url = "mirror://sourceforge/mpg123/${name}.tar.bz2";
|
||||||
sha256 = "16s9z1xc5kv1p90g42vsr9m4gq3dwjsmrj873x4i8601mvpm3nkr";
|
sha256 = "08vhp8lz7d9ybhxcmkq3adwfryhivfvp0745k4r9kgz4wap3f4vc";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = stdenv.lib.optional (!stdenv.isDarwin) alsaLib;
|
buildInputs = stdenv.lib.optional (!stdenv.isDarwin) alsaLib;
|
||||||
|
@ -20,13 +20,16 @@ stdenv.mkDerivation rec {
|
|||||||
mv helmholtz~/src/Makefile .
|
mv helmholtz~/src/Makefile .
|
||||||
rm -rf helmholtz~/src/
|
rm -rf helmholtz~/src/
|
||||||
rm helmholtz~/helmholtz~.pd_darwin
|
rm helmholtz~/helmholtz~.pd_darwin
|
||||||
|
rm helmholtz~/helmholtz~.pd_linux
|
||||||
rm helmholtz~/helmholtz~.dll
|
rm helmholtz~/helmholtz~.dll
|
||||||
rm -rf __MACOSX
|
rm -rf __MACOSX
|
||||||
'';
|
'';
|
||||||
|
|
||||||
patchPhase = ''
|
patchPhase = ''
|
||||||
|
mkdir -p $out/helmholtz~
|
||||||
sed -i "s@current: pd_darwin@current: pd_linux@g" Makefile
|
sed -i "s@current: pd_darwin@current: pd_linux@g" Makefile
|
||||||
sed -i "s@-Wl@@g" Makefile
|
sed -i "s@-Wl@@g" Makefile
|
||||||
|
sed -i "s@\$(NAME).pd_linux \.\./\$(NAME).pd_linux@helmholtz~.pd_linux $out/helmholtz~/@g" Makefile
|
||||||
'';
|
'';
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
|
@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "praat-${version}";
|
name = "praat-${version}";
|
||||||
version = "6.0.37";
|
version = "6.0.38";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/praat/praat/archive/v${version}.tar.gz";
|
url = "https://github.com/praat/praat/archive/v${version}.tar.gz";
|
||||||
sha256 = "1c675jfzcrwfn8lcswm5y5kmazkhnb0p4mzlf5sim57hms88ffjq";
|
sha256 = "1l01mdhd0kf6mnyrg8maydr56cpw4312gryk303kr0a4w0gwzhhc";
|
||||||
};
|
};
|
||||||
|
|
||||||
configurePhase = ''
|
configurePhase = ''
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{ stdenv, fetchurl, cmake, pkgconfig, xorg, libjpeg, libpng
|
{ stdenv, fetchurl, fetchpatch, cmake, pkgconfig, xorg, libjpeg, libpng
|
||||||
, fontconfig, freetype, pam, dbus_libs, makeWrapper }:
|
, fontconfig, freetype, pam, dbus_libs, makeWrapper }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
@ -26,7 +26,10 @@ stdenv.mkDerivation rec {
|
|||||||
# Allow to set logfile to a special "/dev/stderr" in order to continue
|
# Allow to set logfile to a special "/dev/stderr" in order to continue
|
||||||
# logging to stderr and thus to the journal.
|
# logging to stderr and thus to the journal.
|
||||||
./no-logfile.patch
|
./no-logfile.patch
|
||||||
];
|
] ++ stdenv.lib.optional stdenv.hostPlatform.isMusl (fetchpatch {
|
||||||
|
url = "https://raw.githubusercontent.com/gentoo/musl/8eddda8072add075ebf56cf6d288bc1450d6b5f8/x11-misc/slim/files/slim-1.3.6-add-missing-libgen_h.patch";
|
||||||
|
sha256 = "0f82672s2r2cmdqfn2mbg3di76mbla9n0ik20p2gv4igi6p866xm";
|
||||||
|
});
|
||||||
|
|
||||||
preConfigure = "substituteInPlace CMakeLists.txt --replace /lib $out/lib";
|
preConfigure = "substituteInPlace CMakeLists.txt --replace /lib $out/lib";
|
||||||
|
|
||||||
|
@ -8,9 +8,9 @@ let
|
|||||||
inherit (gnome2) GConf gnome_vfs;
|
inherit (gnome2) GConf gnome_vfs;
|
||||||
};
|
};
|
||||||
latestVersion = {
|
latestVersion = {
|
||||||
version = "3.2.0.7"; # "Android Studio 3.2 Canary 8"
|
version = "3.2.0.8"; # "Android Studio 3.2 Canary 9"
|
||||||
build = "173.4670218";
|
build = "173.4688006";
|
||||||
sha256Hash = "0p1lls1pkhji8x0p32clsiq3ng64jhqv2vxkhdkmsbh5p4dc1g21";
|
sha256Hash = "13kln5s45qzdi54gca0bvdiwl2mi6lg8zgp7f36a24zbmvdmnslv";
|
||||||
};
|
};
|
||||||
in rec {
|
in rec {
|
||||||
# Old alias
|
# Old alias
|
||||||
@ -21,9 +21,9 @@ in rec {
|
|||||||
stable = mkStudio {
|
stable = mkStudio {
|
||||||
pname = "android-studio";
|
pname = "android-studio";
|
||||||
#pname = "android-studio-stable"; # TODO: Rename and provide symlink
|
#pname = "android-studio-stable"; # TODO: Rename and provide symlink
|
||||||
version = "3.0.1.0"; # "Android Studio 3.0.1"
|
version = "3.1.0.16"; # "Android Studio 3.1"
|
||||||
build = "171.4443003";
|
build = "173.4670197";
|
||||||
sha256Hash = "1krahlqr70nq3csqiinq2m4fgs68j11hd9gg2dx2nrpw5zni0wdd";
|
sha256Hash = "1i0ldyadrcyy5pl9vjpm2k755mf08xi9x5qz8655qsbiajzqf9fy";
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
description = "The Official IDE for Android (stable channel)";
|
description = "The Official IDE for Android (stable channel)";
|
||||||
@ -41,9 +41,9 @@ in rec {
|
|||||||
beta = mkStudio {
|
beta = mkStudio {
|
||||||
pname = "android-studio-preview";
|
pname = "android-studio-preview";
|
||||||
#pname = "android-studio-beta"; # TODO: Rename and provide symlink
|
#pname = "android-studio-beta"; # TODO: Rename and provide symlink
|
||||||
version = "3.1.0.15"; # "Android Studio 3.1 RC 3"
|
version = "3.1.0.16"; # "Android Studio 3.1"
|
||||||
build = "173.4658569";
|
build = "173.4670197";
|
||||||
sha256Hash = "0jvq7k5vhrli41bj2imnsp3z70c7yws3fvs8m873qrjvfgmi5qrq";
|
sha256Hash = "1i0ldyadrcyy5pl9vjpm2k755mf08xi9x5qz8655qsbiajzqf9fy";
|
||||||
|
|
||||||
meta = stable.meta // {
|
meta = stable.meta // {
|
||||||
description = "The Official IDE for Android (beta channel)";
|
description = "The Official IDE for Android (beta channel)";
|
||||||
|
@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "atom-${version}";
|
name = "atom-${version}";
|
||||||
version = "1.25.0";
|
version = "1.25.1";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/atom/atom/releases/download/v${version}/atom-amd64.deb";
|
url = "https://github.com/atom/atom/releases/download/v${version}/atom-amd64.deb";
|
||||||
sha256 = "04iiw0qzl9025l4lasz42w5nfnvsmc7vwcf4a9c2hvl9xsyckajh";
|
sha256 = "0h0kr4w26c6i89rb9y4aw4l8f63al42i2cy3ddk16m1irzij9fk4";
|
||||||
name = "${name}.deb";
|
name = "${name}.deb";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{ stdenv, makeDesktopItem, freetype, fontconfig, libX11, libXrender
|
{ stdenv, makeDesktopItem, freetype, fontconfig, libX11, libXrender
|
||||||
, zlib, jdk, glib, gtk2, libXtst, gsettings-desktop-schemas, webkitgtk24x-gtk2
|
, zlib, jdk, glib, gtk3, libXtst, gsettings-desktop-schemas, webkitgtk
|
||||||
, makeWrapper, ... }:
|
, makeWrapper, ... }:
|
||||||
|
|
||||||
{ name, src ? builtins.getAttr stdenv.system sources, sources ? null, description }:
|
{ name, src ? builtins.getAttr stdenv.system sources, sources ? null, description }:
|
||||||
@ -18,9 +18,9 @@ stdenv.mkDerivation rec {
|
|||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
fontconfig freetype glib gsettings-desktop-schemas gtk2 jdk libX11
|
fontconfig freetype glib gsettings-desktop-schemas gtk3 jdk libX11
|
||||||
libXrender libXtst makeWrapper zlib
|
libXrender libXtst makeWrapper zlib
|
||||||
] ++ stdenv.lib.optional (webkitgtk24x-gtk2 != null) webkitgtk24x-gtk2;
|
] ++ stdenv.lib.optional (webkitgtk != null) webkitgtk;
|
||||||
|
|
||||||
buildCommand = ''
|
buildCommand = ''
|
||||||
# Unpack tarball.
|
# Unpack tarball.
|
||||||
@ -41,7 +41,7 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
makeWrapper $out/eclipse/eclipse $out/bin/eclipse \
|
makeWrapper $out/eclipse/eclipse $out/bin/eclipse \
|
||||||
--prefix PATH : ${jdk}/bin \
|
--prefix PATH : ${jdk}/bin \
|
||||||
--prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath ([ glib gtk2 libXtst ] ++ stdenv.lib.optional (webkitgtk24x-gtk2 != null) webkitgtk24x-gtk2)} \
|
--prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath ([ glib gtk3 libXtst ] ++ stdenv.lib.optional (webkitgtk != null) webkitgtk)} \
|
||||||
--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" \
|
--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" \
|
||||||
--add-flags "-configuration \$HOME/.eclipse/''${productId}_$productVersion/configuration"
|
--add-flags "-configuration \$HOME/.eclipse/''${productId}_$productVersion/configuration"
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{ stdenv, lib, fetchurl, makeDesktopItem, makeWrapper
|
{ stdenv, lib, fetchurl, makeDesktopItem, makeWrapper
|
||||||
, freetype, fontconfig, libX11, libXext, libXrender, zlib
|
, freetype, fontconfig, libX11, libXext, libXrender, zlib
|
||||||
, glib, gtk2, libXtst, jdk, gsettings-desktop-schemas
|
, glib, gtk3, libXtst, jdk, gsettings-desktop-schemas
|
||||||
, webkitgtk24x-gtk2 ? null # for internal web browser
|
, webkitgtk ? null # for internal web browser
|
||||||
, buildEnv, writeText, runCommand
|
, buildEnv, writeText, runCommand
|
||||||
, callPackage
|
, callPackage
|
||||||
}:
|
}:
|
||||||
@ -15,7 +15,7 @@ rec {
|
|||||||
|
|
||||||
buildEclipse = import ./build-eclipse.nix {
|
buildEclipse = import ./build-eclipse.nix {
|
||||||
inherit stdenv makeDesktopItem freetype fontconfig libX11 libXrender zlib
|
inherit stdenv makeDesktopItem freetype fontconfig libX11 libXrender zlib
|
||||||
jdk glib gtk2 libXtst gsettings-desktop-schemas webkitgtk24x-gtk2
|
jdk glib gtk3 libXtst gsettings-desktop-schemas webkitgtk
|
||||||
makeWrapper;
|
makeWrapper;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
104
pkgs/applications/editors/emacs-modes/elpa-generated.nix
generated
104
pkgs/applications/editors/emacs-modes/elpa-generated.nix
generated
@ -175,10 +175,10 @@
|
|||||||
}) {};
|
}) {};
|
||||||
auctex = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
auctex = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||||
pname = "auctex";
|
pname = "auctex";
|
||||||
version = "12.1.0";
|
version = "12.1.1";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/auctex-12.1.0.tar";
|
url = "https://elpa.gnu.org/packages/auctex-12.1.1.tar";
|
||||||
sha256 = "0iy5x61xqkxaph2hq64sg50l1c6yp6qhzppwadayxkdz00b46sas";
|
sha256 = "10l96569dy9pfp8bm64pndhk1skg65kqhsyllwfa0zvb7mjkm70l";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
@ -713,10 +713,10 @@
|
|||||||
ebdb = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib, seq }:
|
ebdb = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib, seq }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "ebdb";
|
pname = "ebdb";
|
||||||
version = "0.4.3";
|
version = "0.5";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/ebdb-0.4.3.tar";
|
url = "https://elpa.gnu.org/packages/ebdb-0.5.tar";
|
||||||
sha256 = "1xq0nhhgzgzrvxbb0lgpz71rfd0dcjakh87wg8wi3cpiw9w7zx41";
|
sha256 = "1apsb08ml50nacqa6i86zwa2xxdfqry380bksp16zv63cj86b67g";
|
||||||
};
|
};
|
||||||
packageRequires = [ cl-lib emacs seq ];
|
packageRequires = [ cl-lib emacs seq ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -768,10 +768,10 @@
|
|||||||
el-search = callPackage ({ cl-print, elpaBuild, emacs, fetchurl, lib, stream }:
|
el-search = callPackage ({ cl-print, elpaBuild, emacs, fetchurl, lib, stream }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "el-search";
|
pname = "el-search";
|
||||||
version = "1.6";
|
version = "1.6.3";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/el-search-1.6.tar";
|
url = "https://elpa.gnu.org/packages/el-search-1.6.3.tar";
|
||||||
sha256 = "18pv2l6rl8f9x0yjn4iyf6g94c0ly5mizqg0vxr3m420bkbyk95h";
|
sha256 = "1yd8qlq95fb5qfmg3m16i9d5nsmkkgr12q0981r5ng06pc0j4al6";
|
||||||
};
|
};
|
||||||
packageRequires = [ cl-print emacs stream ];
|
packageRequires = [ cl-print emacs stream ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -861,10 +861,10 @@
|
|||||||
}) {};
|
}) {};
|
||||||
exwm = callPackage ({ elpaBuild, fetchurl, lib, xelb }: elpaBuild {
|
exwm = callPackage ({ elpaBuild, fetchurl, lib, xelb }: elpaBuild {
|
||||||
pname = "exwm";
|
pname = "exwm";
|
||||||
version = "0.17";
|
version = "0.18";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/exwm-0.17.tar";
|
url = "https://elpa.gnu.org/packages/exwm-0.18.tar";
|
||||||
sha256 = "03vgrrrc1d3xr9ydl1ydvmqnvpnzg858dzdky2nd65h9ssyp2f5f";
|
sha256 = "1shz5bf4v4gg3arjaaldics5qkg3aiiaf3ngys8lb6qyxhcpvh6q";
|
||||||
};
|
};
|
||||||
packageRequires = [ xelb ];
|
packageRequires = [ xelb ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -931,10 +931,10 @@
|
|||||||
gited = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
|
gited = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "gited";
|
pname = "gited";
|
||||||
version = "0.3.4";
|
version = "0.4.1";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/gited-0.3.4.tar";
|
url = "https://elpa.gnu.org/packages/gited-0.4.1.tar";
|
||||||
sha256 = "0s03p0z5dqhigl01hzin2qy53nm7b4ilvfm83d0ca683i9rb7hx1";
|
sha256 = "0080jcr10xvvf2rl7ar01c6zmzd0pafrs6w2l8v4cwwapyhv0dcd";
|
||||||
};
|
};
|
||||||
packageRequires = [ cl-lib emacs ];
|
packageRequires = [ cl-lib emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -1106,10 +1106,10 @@
|
|||||||
}) {};
|
}) {};
|
||||||
iterators = callPackage ({ elpaBuild, emacs, fetchurl, lib }: elpaBuild {
|
iterators = callPackage ({ elpaBuild, emacs, fetchurl, lib }: elpaBuild {
|
||||||
pname = "iterators";
|
pname = "iterators";
|
||||||
version = "0.1";
|
version = "0.1.1";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/iterators-0.1.el";
|
url = "https://elpa.gnu.org/packages/iterators-0.1.1.el";
|
||||||
sha256 = "0rljqdaj88cbhngj4ddd2z3bfd35r84aivq4h10mk4n4h8whjpj4";
|
sha256 = "1r2cz2n6cr6wal5pqiqi5pn28pams639czgrvd60xcqmlr3li3g5";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -1160,10 +1160,10 @@
|
|||||||
js2-mode = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
|
js2-mode = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "js2-mode";
|
pname = "js2-mode";
|
||||||
version = "20170721";
|
version = "20180301";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/js2-mode-20170721.tar";
|
url = "https://elpa.gnu.org/packages/js2-mode-20180301.tar";
|
||||||
sha256 = "02w2hgk8qbmwkksqf1dmslpr3xn9zjp3srl3qh8730w8r8s8czni";
|
sha256 = "0kcs70iygbpaxs094q6agsjs56sz03jy4fwk178f9hr93x95pynx";
|
||||||
};
|
};
|
||||||
packageRequires = [ cl-lib emacs ];
|
packageRequires = [ cl-lib emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -1423,14 +1423,29 @@
|
|||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
multishell = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
mmm-mode = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
|
||||||
|
elpaBuild {
|
||||||
|
pname = "mmm-mode";
|
||||||
|
version = "0.5.6";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://elpa.gnu.org/packages/mmm-mode-0.5.6.tar";
|
||||||
|
sha256 = "1vwsi8sk1i16dvz940c6q7i75023hrw07sc4cpmcz06rj8r68gr0";
|
||||||
|
};
|
||||||
|
packageRequires = [ cl-lib ];
|
||||||
|
meta = {
|
||||||
|
homepage = "https://elpa.gnu.org/packages/mmm-mode.html";
|
||||||
|
license = lib.licenses.free;
|
||||||
|
};
|
||||||
|
}) {};
|
||||||
|
multishell = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
|
||||||
|
elpaBuild {
|
||||||
pname = "multishell";
|
pname = "multishell";
|
||||||
version = "1.1.5";
|
version = "1.1.5";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/multishell-1.1.5.tar";
|
url = "https://elpa.gnu.org/packages/multishell-1.1.5.tar";
|
||||||
sha256 = "0g38p5biyxqkjdkmxlikvhkhkmafyy3ibd012q83skaf8fi4cv1y";
|
sha256 = "0g38p5biyxqkjdkmxlikvhkhkmafyy3ibd012q83skaf8fi4cv1y";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [ cl-lib ];
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "https://elpa.gnu.org/packages/multishell.html";
|
homepage = "https://elpa.gnu.org/packages/multishell.html";
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
@ -1438,10 +1453,10 @@
|
|||||||
}) {};
|
}) {};
|
||||||
muse = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
muse = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||||
pname = "muse";
|
pname = "muse";
|
||||||
version = "3.20.1";
|
version = "3.20.2";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/muse-3.20.1.tar";
|
url = "https://elpa.gnu.org/packages/muse-3.20.2.tar";
|
||||||
sha256 = "0h8lxm08r519psz93m1i43prkcpsm2dgkcvdlpvg7sm0ky7i5cay";
|
sha256 = "0g2ff6x45x2k5dnkp31sk3bjj92jyhhnar7l5hzn8vp22l0rv8wn";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
@ -1544,10 +1559,10 @@
|
|||||||
}) {};
|
}) {};
|
||||||
num3-mode = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
num3-mode = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||||
pname = "num3-mode";
|
pname = "num3-mode";
|
||||||
version = "1.2";
|
version = "1.3";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/num3-mode-1.2.el";
|
url = "https://elpa.gnu.org/packages/num3-mode-1.3.el";
|
||||||
sha256 = "1nm3yjp5qs6rq4ak47gb6325vjfw0dnkryfgybgly0m6h4hhpbd8";
|
sha256 = "0x2jpnzvpbj03pbmhsny5gygh63c4dbl4g3k0cfs3vh4qmp2dg6w";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
@ -1595,6 +1610,19 @@
|
|||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
|
org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||||
|
pname = "org";
|
||||||
|
version = "9.1.9";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://elpa.gnu.org/packages/org-9.1.9.tar";
|
||||||
|
sha256 = "16yr0srfzsrzv2b1f2wjk8gb2pyhsgj2hxbscixirkxqz674c5cl";
|
||||||
|
};
|
||||||
|
packageRequires = [];
|
||||||
|
meta = {
|
||||||
|
homepage = "https://elpa.gnu.org/packages/org.html";
|
||||||
|
license = lib.licenses.free;
|
||||||
|
};
|
||||||
|
}) {};
|
||||||
osc = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
osc = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||||
pname = "osc";
|
pname = "osc";
|
||||||
version = "0.1";
|
version = "0.1";
|
||||||
@ -1717,10 +1745,10 @@
|
|||||||
python = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
|
python = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "python";
|
pname = "python";
|
||||||
version = "0.26";
|
version = "0.26.1";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/python-0.26.el";
|
url = "https://elpa.gnu.org/packages/python-0.26.1.el";
|
||||||
sha256 = "197sq42xd4ryqq2zy1802pns6wf6n4vzx90yxgn1zzqpwffpv317";
|
sha256 = "1dpw2w2nk6ggr8pz293qysjkiya3i7k25i447fbycjil59anzpb3";
|
||||||
};
|
};
|
||||||
packageRequires = [ cl-lib emacs ];
|
packageRequires = [ cl-lib emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -1756,10 +1784,10 @@
|
|||||||
}) {};
|
}) {};
|
||||||
rainbow-mode = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
rainbow-mode = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||||
pname = "rainbow-mode";
|
pname = "rainbow-mode";
|
||||||
version = "0.13";
|
version = "1.0";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/rainbow-mode-0.13.el";
|
url = "https://elpa.gnu.org/packages/rainbow-mode-1.0.el";
|
||||||
sha256 = "1d3aamx6qgqqpqijwsr02ggwrh67gfink1bir0692alfkm3zdddl";
|
sha256 = "1mg9dbgvg79sphpic56d11mrjwx668xffx5z5jszc9fdl5b8ygml";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
@ -1809,10 +1837,10 @@
|
|||||||
realgud = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib, load-relative, loc-changes, test-simple }:
|
realgud = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib, load-relative, loc-changes, test-simple }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "realgud";
|
pname = "realgud";
|
||||||
version = "1.4.4";
|
version = "1.4.5";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/realgud-1.4.4.tar";
|
url = "https://elpa.gnu.org/packages/realgud-1.4.5.tar";
|
||||||
sha256 = "1nc8km339ip90h1j55ahfga03v7x7rh4iycmw6yrxyzir68vwn7c";
|
sha256 = "108wgxg7fb4byaiasgvbxv2hq7b00biq9f0mh9hy6vw4160y5w24";
|
||||||
};
|
};
|
||||||
packageRequires = [
|
packageRequires = [
|
||||||
cl-lib
|
cl-lib
|
||||||
|
2534
pkgs/applications/editors/emacs-modes/melpa-generated.nix
generated
2534
pkgs/applications/editors/emacs-modes/melpa-generated.nix
generated
File diff suppressed because it is too large
Load Diff
@ -82,10 +82,6 @@ self:
|
|||||||
inherit (self.melpaPackages) ess ctable popup;
|
inherit (self.melpaPackages) ess ctable popup;
|
||||||
};
|
};
|
||||||
|
|
||||||
ess-R-object-popup = super.ess-R-object-popup.override {
|
|
||||||
inherit (self.melpaPackages) ess popup;
|
|
||||||
};
|
|
||||||
|
|
||||||
# upstream issue: missing dependency highlight
|
# upstream issue: missing dependency highlight
|
||||||
evil-search-highlight-persist = markBroken super.evil-search-highlight-persist;
|
evil-search-highlight-persist = markBroken super.evil-search-highlight-persist;
|
||||||
|
|
||||||
@ -117,7 +113,7 @@ self:
|
|||||||
ido-complete-space-or-hyphen = markBroken super.ido-complete-space-or-hyphen;
|
ido-complete-space-or-hyphen = markBroken super.ido-complete-space-or-hyphen;
|
||||||
|
|
||||||
# upstream issue: missing file header
|
# upstream issue: missing file header
|
||||||
initsplit = markBroken super.initsplit;
|
initsplit = super.initsplit;
|
||||||
|
|
||||||
# Expects bash to be at /bin/bash
|
# Expects bash to be at /bin/bash
|
||||||
ivy-rtags = markBroken super.ivy-rtags;
|
ivy-rtags = markBroken super.ivy-rtags;
|
||||||
@ -128,9 +124,6 @@ self:
|
|||||||
# upstream issue: missing file header
|
# upstream issue: missing file header
|
||||||
link = markBroken super.link;
|
link = markBroken super.link;
|
||||||
|
|
||||||
# upstream issue: mismatched filename
|
|
||||||
link-hint = markBroken super.link-hint;
|
|
||||||
|
|
||||||
# upstream issue: missing file header
|
# upstream issue: missing file header
|
||||||
maxframe = markBroken super.maxframe;
|
maxframe = markBroken super.maxframe;
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -81,10 +81,6 @@ self:
|
|||||||
inherit (self.melpaPackages) ess ctable popup;
|
inherit (self.melpaPackages) ess ctable popup;
|
||||||
};
|
};
|
||||||
|
|
||||||
ess-R-object-popup = super.ess-R-object-popup.override {
|
|
||||||
inherit (self.melpaPackages) ess popup;
|
|
||||||
};
|
|
||||||
|
|
||||||
# upstream issue: doesn't build
|
# upstream issue: doesn't build
|
||||||
eterm-256color = markBroken super.eterm-256color;
|
eterm-256color = markBroken super.eterm-256color;
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
{ callPackage }: {
|
{ callPackage }: {
|
||||||
org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||||
pname = "org";
|
pname = "org";
|
||||||
version = "20180226";
|
version = "20180402";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://orgmode.org/elpa/org-20180226.tar";
|
url = "https://orgmode.org/elpa/org-20180402.tar";
|
||||||
sha256 = "0jqvry6gah1bwnryha4asynj13jyds3qim0xcy7s01rxk99m2ziy";
|
sha256 = "0gb8hh26jzjqy262ll8jl3ym0cpw6s17id2gizv5qvw18knxs751";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
@ -14,10 +14,10 @@
|
|||||||
}) {};
|
}) {};
|
||||||
org-plus-contrib = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
org-plus-contrib = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||||
pname = "org-plus-contrib";
|
pname = "org-plus-contrib";
|
||||||
version = "20180226";
|
version = "20180402";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://orgmode.org/elpa/org-plus-contrib-20180226.tar";
|
url = "https://orgmode.org/elpa/org-plus-contrib-20180402.tar";
|
||||||
sha256 = "034wp70hcqnpidji5k1k80mj35iyyy098nbvc2sl7i2aca4m03zc";
|
sha256 = "09q5nr0ka7z719mi626wj5d51bcvdb08gk4zf94dzpks0gsqiikr";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "focuswriter-${version}";
|
name = "focuswriter-${version}";
|
||||||
version = "1.6.10";
|
version = "1.6.11";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://gottcode.org/focuswriter/focuswriter-${version}-src.tar.bz2";
|
url = "https://gottcode.org/focuswriter/focuswriter-${version}-src.tar.bz2";
|
||||||
sha256 = "0hrbycy5lapdkaa2xm90j45sgsiqdnlk9wry41kxxpdln9msabxs";
|
sha256 = "0izbsm2vx24pnd92gf7ky8x47g324a8d16hy1s8kk3x1inxd80z1";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig qmake qttools ];
|
nativeBuildInputs = [ pkgconfig qmake qttools ];
|
||||||
@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
|
|||||||
description = "Simple, distraction-free writing environment";
|
description = "Simple, distraction-free writing environment";
|
||||||
license = licenses.gpl3Plus;
|
license = licenses.gpl3Plus;
|
||||||
maintainers = with maintainers; [ madjar ];
|
maintainers = with maintainers; [ madjar ];
|
||||||
platforms = platforms.all;
|
platforms = platforms.linux;
|
||||||
homepage = https://gottcode.org/focuswriter/;
|
homepage = https://gottcode.org/focuswriter/;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,33 +1,39 @@
|
|||||||
|
{buildVersion, x32sha256, x64sha256}:
|
||||||
|
|
||||||
{ fetchurl, stdenv, glib, xorg, cairo, gtk2, pango, makeWrapper, openssl, bzip2,
|
{ fetchurl, stdenv, glib, xorg, cairo, gtk2, pango, makeWrapper, openssl, bzip2,
|
||||||
pkexecPath ? "/run/wrappers/bin/pkexec", libredirect,
|
pkexecPath ? "/run/wrappers/bin/pkexec", libredirect,
|
||||||
gksuSupport ? false, gksu, unzip, zip, bash }:
|
gksuSupport ? false, gksu, unzip, zip, bash}:
|
||||||
|
|
||||||
assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux";
|
assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux";
|
||||||
assert gksuSupport -> gksu != null;
|
assert gksuSupport -> gksu != null;
|
||||||
|
|
||||||
let
|
let
|
||||||
build = "3143";
|
|
||||||
libPath = stdenv.lib.makeLibraryPath [glib xorg.libX11 gtk2 cairo pango];
|
libPath = stdenv.lib.makeLibraryPath [glib xorg.libX11 gtk2 cairo pango];
|
||||||
redirects = [ "/usr/bin/pkexec=${pkexecPath}" ]
|
redirects = [ "/usr/bin/pkexec=${pkexecPath}" ]
|
||||||
++ stdenv.lib.optional gksuSupport "/usr/bin/gksudo=${gksu}/bin/gksudo";
|
++ stdenv.lib.optional gksuSupport "/usr/bin/gksudo=${gksu}/bin/gksudo";
|
||||||
in let
|
in let
|
||||||
|
archSha256 =
|
||||||
|
if stdenv.system == "i686-linux" then
|
||||||
|
x32sha256
|
||||||
|
else
|
||||||
|
x64sha256;
|
||||||
|
|
||||||
|
arch =
|
||||||
|
if stdenv.system == "i686-linux" then
|
||||||
|
"x32"
|
||||||
|
else
|
||||||
|
"x64";
|
||||||
|
|
||||||
# package with just the binaries
|
# package with just the binaries
|
||||||
sublime = stdenv.mkDerivation {
|
sublime = stdenv.mkDerivation {
|
||||||
name = "sublimetext3-${build}-bin";
|
name = "sublimetext3-${buildVersion}-bin";
|
||||||
|
|
||||||
src =
|
src =
|
||||||
if stdenv.system == "i686-linux" then
|
fetchurl {
|
||||||
fetchurl {
|
name = "sublimetext-${buildVersion}.tar.bz2";
|
||||||
name = "sublimetext-${build}.tar.bz2";
|
url = "https://download.sublimetext.com/sublime_text_3_build_${buildVersion}_${arch}.tar.bz2";
|
||||||
url = "https://download.sublimetext.com/sublime_text_3_build_${build}_x32.tar.bz2";
|
sha256 = archSha256;
|
||||||
sha256 = "0dgpx4wij2m77f478p746qadavab172166bghxmj7fb61nvw9v5i";
|
};
|
||||||
}
|
|
||||||
else
|
|
||||||
fetchurl {
|
|
||||||
name = "sublimetext-${build}.tar.bz2";
|
|
||||||
url = "https://download.sublimetext.com/sublime_text_3_build_${build}_x64.tar.bz2";
|
|
||||||
sha256 = "06b554d2cvpxc976rvh89ix3kqc7klnngvk070xrs8wbyb221qcw";
|
|
||||||
};
|
|
||||||
|
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
dontPatchELF = true;
|
dontPatchELF = true;
|
||||||
@ -80,8 +86,8 @@ in let
|
|||||||
wrapProgram $out/plugin_host --prefix LD_PRELOAD : ${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"}/libgcc_s.so.1:${openssl.out}/lib/libssl.so:${bzip2.out}/lib/libbz2.so
|
wrapProgram $out/plugin_host --prefix LD_PRELOAD : ${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"}/libgcc_s.so.1:${openssl.out}/lib/libssl.so:${bzip2.out}/lib/libbz2.so
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
in stdenv.mkDerivation {
|
in stdenv.mkDerivation (rec {
|
||||||
name = "sublimetext3-${build}";
|
name = "sublimetext3-${buildVersion}";
|
||||||
|
|
||||||
phases = [ "installPhase" ];
|
phases = [ "installPhase" ];
|
||||||
|
|
||||||
@ -110,4 +116,4 @@ in stdenv.mkDerivation {
|
|||||||
license = licenses.unfree;
|
license = licenses.unfree;
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
};
|
};
|
||||||
}
|
})
|
18
pkgs/applications/editors/sublime/3/packages.nix
Normal file
18
pkgs/applications/editors/sublime/3/packages.nix
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{ callPackage }:
|
||||||
|
|
||||||
|
let
|
||||||
|
common = opts: callPackage (import ./common.nix opts);
|
||||||
|
in
|
||||||
|
rec {
|
||||||
|
sublime3-dev = common {
|
||||||
|
buildVersion = "3161";
|
||||||
|
x32sha256 = "0qrm2qmfsj71lr83c8zas2n3xk8hk9k4w8ygnasjhggmyjm3wy0q";
|
||||||
|
x64sha256 = "0cgadylm68s2jly10r038q1fvmbzmpc2nvqy86vlyq9avgqbm5pc";
|
||||||
|
} {};
|
||||||
|
|
||||||
|
sublime3 = common {
|
||||||
|
buildVersion = "3143";
|
||||||
|
x32sha256 = "0dgpx4wij2m77f478p746qadavab172166bghxmj7fb61nvw9v5i";
|
||||||
|
x64sha256 = "06b554d2cvpxc976rvh89ix3kqc7klnngvk070xrs8wbyb221qcw";
|
||||||
|
} {};
|
||||||
|
}
|
@ -3,13 +3,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "tiled-${version}";
|
name = "tiled-${version}";
|
||||||
version = "1.1.3";
|
version = "1.1.4";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "bjorn";
|
owner = "bjorn";
|
||||||
repo = "tiled";
|
repo = "tiled";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0rf50w7nkdm70999q1mj7sy5hyjj41qjf4izi849q9a7xnhddv44";
|
sha256 = "0ln8lis9g23wp3w70xwbkzqmmbkd02cdx6z7msw9lrpkjzkj7mlr";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig qmake ];
|
nativeBuildInputs = [ pkgconfig qmake ];
|
||||||
|
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