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
|
||||
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:
|
||||
|
||||
```
|
||||
% git remote update channels
|
||||
% git rebase channels/nixos-17.09
|
||||
% git rebase channels/nixos-18.03
|
||||
```
|
||||
|
||||
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/)
|
||||
* [Community maintained wiki](https://nixos.wiki/)
|
||||
* [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 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:
|
||||
|
||||
|
@ -25,13 +25,6 @@ out/html/index.html: manual-full.xml style.css highlightjs
|
||||
./manual-full.xml
|
||||
|
||||
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 ./overrides.css out/html/
|
||||
@ -63,6 +56,7 @@ highlightjs:
|
||||
cp -r "$$HIGHLIGHTJS/highlight.pack.js" highlightjs/
|
||||
cp -r "$$HIGHLIGHTJS/LICENSE" highlightjs/
|
||||
cp -r "$$HIGHLIGHTJS/mono-blue.css" highlightjs/
|
||||
cp -r "$$HIGHLIGHTJS/loader.js" highlightjs/
|
||||
|
||||
|
||||
manual-full.xml: ${MD_TARGETS} .version *.xml
|
||||
|
@ -221,16 +221,69 @@
|
||||
|
||||
<para>
|
||||
All generators follow a similar call interface: <code>generatorName
|
||||
configFunctions data</code>, where <literal>configFunctions</literal> is a
|
||||
set of user-defined functions that format variable parts of the content.
|
||||
configFunctions data</code>, where <literal>configFunctions</literal> is
|
||||
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
|
||||
manually. An example is <code>mkSectionName ? (name: libStr.escape [ "[" "]"
|
||||
] name)</code> from the <literal>INI</literal> generator. It gets the name
|
||||
of a section and returns a sanitized name. The default
|
||||
] name)</code> from the <literal>INI</literal> generator. It receives the
|
||||
name of a section and sanitizes it. The default
|
||||
<literal>mkSectionName</literal> escapes <literal>[</literal> and
|
||||
<literal>]</literal> with a backslash.
|
||||
</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
|
||||
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
|
||||
<command>javac</command> from the OpenJDK. For instance, to use the
|
||||
Eclipse 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:
|
||||
GNU Java Compiler:
|
||||
|
||||
<programlisting>
|
||||
buildInputs = [ gcj ant ];
|
||||
|
@ -16,6 +16,12 @@ cargo
|
||||
into the `environment.systemPackages` or bring them into
|
||||
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
|
||||
nixpkgs or use the [Rust nightlies
|
||||
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)
|
||||
Finished dev [unoptimized + debuginfo] target(s) in 0.20 secs
|
||||
$ 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:
|
||||
|
||||
@ -276,6 +282,84 @@ features, we would write:
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
pycrypto. To use these scripts, use the <literal>python</literal>
|
||||
plugin's <literal>withPackages</literal> attribute:
|
||||
<programlisting>weechat.override {configure = {availablePlugins, ...}: {
|
||||
<programlisting>weechat.override { configure = {availablePlugins, ...}: {
|
||||
plugins = with availablePlugins; [
|
||||
(python.withPackages (ps: with ps; [ pycrypto python-dbus ]))
|
||||
];
|
||||
@ -721,5 +721,15 @@ plugin's <literal>withPackages</literal> attribute:
|
||||
}
|
||||
</programlisting>
|
||||
</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>
|
||||
</chapter>
|
||||
|
@ -248,6 +248,23 @@ table
|
||||
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
|
||||
{
|
||||
font-style: italic;
|
||||
|
@ -317,11 +317,11 @@ Additional information.
|
||||
</para>
|
||||
<para>
|
||||
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>
|
||||
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>
|
||||
</section>
|
||||
<section>
|
||||
|
@ -5,9 +5,11 @@
|
||||
*/
|
||||
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
|
||||
trivial = callLibs ./trivial.nix;
|
||||
@ -128,5 +130,5 @@ let
|
||||
mergeAttrsNoOverride mergeAttrByFunc mergeAttrsByFuncDefaults
|
||||
mergeAttrsByFuncDefaultsClean mergeAttrBy
|
||||
prepareDerivationArgs nixType imap overridableDelayableArgs;
|
||||
};
|
||||
});
|
||||
in lib
|
||||
|
@ -4,6 +4,12 @@
|
||||
* They all follow a similar interface:
|
||||
* 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
|
||||
* Documentation in the manual, #sec-generators
|
||||
*/
|
||||
@ -20,6 +26,32 @@ in
|
||||
|
||||
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
|
||||
* character sep. If sep appears in k, it is escaped.
|
||||
* Helper for synaxes with different separators.
|
||||
@ -30,11 +62,14 @@ rec {
|
||||
* > "f\:oo:bar"
|
||||
*/
|
||||
mkKeyValueDefault = {
|
||||
mkValueString ? toString
|
||||
mkValueString ? mkValueStringDefault {}
|
||||
}: sep: k: v:
|
||||
"${libStr.escape [sep] k}${sep}${mkValueString v}";
|
||||
|
||||
|
||||
## -- FILE FORMAT GENERATORS --
|
||||
|
||||
|
||||
/* Generate a key-value-style config file from an attrset.
|
||||
*
|
||||
* mkKeyValue is the same as in toINI.
|
||||
@ -98,6 +133,7 @@ rec {
|
||||
*/
|
||||
toYAML = {}@args: toJSON args;
|
||||
|
||||
|
||||
/* Pretty print a value, akin to `builtins.trace`.
|
||||
* Should probably be a builtin as well.
|
||||
*/
|
||||
@ -108,8 +144,9 @@ rec {
|
||||
allowPrettyValues ? false
|
||||
}@args: v: with builtins;
|
||||
if isInt v then toString v
|
||||
else if isBool v then (if v == true then "true" else "false")
|
||||
else if isString v then "\"" + v + "\""
|
||||
else if isString v then ''"${libStr.escape [''"''] v}"''
|
||||
else if true == v then "true"
|
||||
else if false == v then "false"
|
||||
else if null == v then "null"
|
||||
else if isFunction v then
|
||||
let fna = lib.functionArgs v;
|
||||
@ -132,6 +169,6 @@ rec {
|
||||
(name: value:
|
||||
"${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));
|
||||
|
||||
@ -660,7 +660,7 @@ rec {
|
||||
doRename = { from, to, visible, warn, use }:
|
||||
let
|
||||
toOf = attrByPath to
|
||||
(abort "Renaming error: option `${showOption to}' does not exists.");
|
||||
(abort "Renaming error: option `${showOption to}' does not exist.");
|
||||
in
|
||||
{ config, options, ... }:
|
||||
{ options = setAttrByPath from (mkOption {
|
||||
|
@ -207,6 +207,29 @@ runTests {
|
||||
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 = {
|
||||
expr = generators.toKeyValue {} {
|
||||
key = "value";
|
||||
@ -249,6 +272,8 @@ runTests {
|
||||
"section 1" = {
|
||||
attribute1 = 5;
|
||||
x = "Me-se JarJar Binx";
|
||||
# booleans are converted verbatim by default
|
||||
boolean = false;
|
||||
};
|
||||
"foo[]" = {
|
||||
"he\\h=he" = "this is okay";
|
||||
@ -260,6 +285,7 @@ runTests {
|
||||
|
||||
[section 1]
|
||||
attribute1=5
|
||||
boolean=false
|
||||
x=Me-se JarJar Binx
|
||||
'';
|
||||
};
|
||||
|
@ -72,6 +72,11 @@
|
||||
github = "FireyFly";
|
||||
name = "Jonas Höglund";
|
||||
};
|
||||
Fresheyeball = {
|
||||
email = "fresheyeball@gmail.com";
|
||||
github = "fresheyeball";
|
||||
name = "Isaac Shapira";
|
||||
};
|
||||
Gonzih = {
|
||||
email = "gonzih@gmail.com";
|
||||
github = "Gonzih";
|
||||
@ -512,6 +517,11 @@
|
||||
email = "sivaraman.balaji@gmail.com";
|
||||
name = "Balaji Sivaraman";
|
||||
};
|
||||
bandresen = {
|
||||
email = "bandresen@gmail.com";
|
||||
github = "bandresen";
|
||||
name = "Benjamin Andresen";
|
||||
};
|
||||
barrucadu = {
|
||||
email = "mike@barrucadu.co.uk";
|
||||
github = "barrucadu";
|
||||
@ -596,6 +606,11 @@
|
||||
github = "bjornfor";
|
||||
name = "Bjørn Forsman";
|
||||
};
|
||||
bkchr = {
|
||||
email = "nixos@kchr.de";
|
||||
github = "bkchr";
|
||||
name = "Bastian Köcher";
|
||||
};
|
||||
bluescreen303 = {
|
||||
email = "mathijs@bluescreen303.nl";
|
||||
github = "bluescreen303";
|
||||
@ -690,6 +705,11 @@
|
||||
github = "carlsverre";
|
||||
name = "Carl Sverre";
|
||||
};
|
||||
cartr = {
|
||||
email = "carter.sande@duodecima.technology";
|
||||
github = "cartr";
|
||||
name = "Carter Sande";
|
||||
};
|
||||
casey = {
|
||||
email = "casey@rodarmor.net";
|
||||
github = "casey";
|
||||
@ -1171,6 +1191,11 @@
|
||||
github = "ellis";
|
||||
name = "Ellis Whitehead";
|
||||
};
|
||||
elvishjerricco = {
|
||||
email = "elvishjerricco@gmail.com";
|
||||
github = "ElvishJerricco";
|
||||
name = "Will Fancher";
|
||||
};
|
||||
enzime = {
|
||||
email = "enzime@users.noreply.github.com";
|
||||
github = "enzime";
|
||||
@ -1996,6 +2021,11 @@
|
||||
github = "leenaars";
|
||||
name = "Michiel Leenaars";
|
||||
};
|
||||
leo60228 = {
|
||||
email = "iakornfeld@gmail.com";
|
||||
github = "leo60228";
|
||||
name = "leo60228";
|
||||
};
|
||||
leonardoce = {
|
||||
email = "leonardo.cecchi@gmail.com";
|
||||
github = "leonardoce";
|
||||
@ -2964,6 +2994,11 @@
|
||||
github = "redbaron";
|
||||
name = "Maxim Ivanov";
|
||||
};
|
||||
redfish64 = {
|
||||
email = "engler@gmail.com";
|
||||
github = "redfish64";
|
||||
name = "Tim Engler";
|
||||
};
|
||||
redvers = {
|
||||
email = "red@infect.me";
|
||||
github = "redvers";
|
||||
@ -3406,6 +3441,11 @@
|
||||
github = "suvash";
|
||||
name = "Suvash Thapaliya";
|
||||
};
|
||||
sveitser = {
|
||||
email = "sveitser@gmail.com";
|
||||
github = "sveitser";
|
||||
name = "Mathis Antony";
|
||||
};
|
||||
svsdep = {
|
||||
email = "svsdep@gmail.com";
|
||||
github = "svsdep";
|
||||
@ -3586,6 +3626,11 @@
|
||||
github = "tnias";
|
||||
name = "Philipp Bartsch";
|
||||
};
|
||||
tobim = {
|
||||
email = "nix@tobim.fastmail.fm";
|
||||
github = "tobimpub";
|
||||
name = "Tobias Mayer";
|
||||
};
|
||||
tohl = {
|
||||
email = "tom@logand.com";
|
||||
github = "tohl";
|
||||
@ -3961,6 +4006,11 @@
|
||||
github = "yrashk";
|
||||
name = "Yurii Rashkovskii";
|
||||
};
|
||||
ysndr = {
|
||||
email = "me@ysndr.de";
|
||||
github = "ysndr";
|
||||
name = "Yannik Sander";
|
||||
};
|
||||
yuriaisaka = {
|
||||
email = "yuri.aisaka+nix@gmail.com";
|
||||
github = "yuriaisaka";
|
||||
|
@ -100,7 +100,10 @@ sub uploadFile {
|
||||
sub redirect {
|
||||
my ($name, $dest) = @_;
|
||||
#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";
|
||||
$cache{$name} = 1;
|
||||
}
|
||||
@ -112,7 +115,10 @@ sub uploadFile {
|
||||
|
||||
# Upload the file as sha512/<hash-in-base-16>.
|
||||
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";
|
||||
$cache{$mainKey} = 1;
|
||||
}
|
||||
|
@ -124,11 +124,12 @@ let
|
||||
manualXsltprocOptions = toString [
|
||||
"--param section.autolabel 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 toc.section.depth 3"
|
||||
"--stringparam admon.style ''"
|
||||
"--stringparam callout.graphics.extension .gif"
|
||||
"--stringparam callout.graphics.extension .svg"
|
||||
"--stringparam current.docid manual"
|
||||
"--param chunk.section.depth 0"
|
||||
"--param chunk.first.sections 1"
|
||||
@ -260,9 +261,11 @@ in rec {
|
||||
${manual-combined}/manual-combined.xml
|
||||
|
||||
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
|
||||
echo "nix-build out $out" >> $out/nix-support/hydra-build-products
|
||||
@ -286,7 +289,7 @@ in rec {
|
||||
${manual-combined}/manual-combined.xml
|
||||
|
||||
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
|
||||
manual="$dst/nixos-manual.epub"
|
||||
zip -0Xq "$manual" mimetype
|
||||
|
@ -4,7 +4,7 @@
|
||||
version="5.0"
|
||||
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"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
@ -18,6 +18,20 @@
|
||||
has the following highlights: </para>
|
||||
|
||||
<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>
|
||||
<para>
|
||||
Nix now defaults to 2.0; see its
|
||||
@ -27,13 +41,13 @@ has the following highlights: </para>
|
||||
|
||||
<listitem>
|
||||
<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>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<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>
|
||||
</listitem>
|
||||
|
||||
@ -59,13 +73,7 @@ has the following highlights: </para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
The GNOME version is now 3.26.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>PHP now defaults to PHP 7.2</para>
|
||||
<para>PHP now defaults to PHP 7.2, updated from 7.1.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
@ -81,9 +89,66 @@ has the following highlights: </para>
|
||||
<para>The following new services were added since the last release:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para></para>
|
||||
</listitem>
|
||||
<listitem><para><literal>./config/krb5/default.nix</literal></para></listitem>
|
||||
<listitem><para><literal>./hardware/digitalbitbox.nix</literal></para></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>
|
||||
|
||||
</section>
|
||||
@ -174,7 +239,7 @@ following incompatible changes:</para>
|
||||
the <literal>openssh_with_kerberos</literal> package
|
||||
is now a deprecated alias.
|
||||
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.
|
||||
</para>
|
||||
</listitem>
|
||||
@ -418,15 +483,6 @@ following incompatible changes:</para>
|
||||
have been added to set up static routing.
|
||||
</para>
|
||||
</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>
|
||||
<para>
|
||||
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
|
||||
fileName ? "nixos-system-${stdenv.system}"
|
||||
@ -21,14 +21,20 @@
|
||||
|
||||
# Extra tar arguments
|
||||
, 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 {
|
||||
name = "tarball";
|
||||
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.
|
||||
sources = map (x: x.source) contents;
|
||||
@ -41,4 +47,6 @@ stdenv.mkDerivation {
|
||||
# For obtaining the closure of `storeContents'.
|
||||
exportReferencesGraph =
|
||||
map (x: [("closure-" + baseNameOf x.object) x.object]) storeContents;
|
||||
|
||||
extension = compressionExtension;
|
||||
}
|
||||
|
@ -1,5 +1,4 @@
|
||||
source $stdenv/setup
|
||||
set -x
|
||||
|
||||
sources_=($sources)
|
||||
targets_=($targets)
|
||||
@ -54,8 +53,8 @@ mkdir -p $out/tarball
|
||||
|
||||
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
|
||||
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
|
||||
#
|
||||
# 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
|
||||
# as argument.
|
||||
#
|
||||
@ -35,7 +35,7 @@
|
||||
# value is replaced by a `throw` statement which is caught by the `tryEval`
|
||||
# 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
|
||||
# caused by our mutation of the `config` argument.
|
||||
#
|
||||
@ -62,7 +62,7 @@ let
|
||||
"_module.args"
|
||||
|
||||
# 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.bridges"
|
||||
"networking.interfaces"
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
BUCKET_NAME="${BUCKET_NAME:-nixos-images}"
|
||||
BUCKET_NAME="${BUCKET_NAME:-nixos-cloud-images}"
|
||||
TIMESTAMP="$(date +%Y%m%d%H%M)"
|
||||
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')
|
||||
if ! gsutil ls "gs://${BUCKET_NAME}/$img_name"; then
|
||||
gsutil cp "$img_path" "gs://${BUCKET_NAME}/$img_name"
|
||||
gsutil acl ch -u AllUsers:R "gs://${BUCKET_NAME}/$img_name"
|
||||
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;
|
||||
|
||||
hostArray = [ "files" ]
|
||||
++ optionals mymachines [ "mymachines" ]
|
||||
++ optionals nssmdns [ "mdns_minimal [NOTFOUND=return]" ]
|
||||
++ optionals nsswins [ "wins" ]
|
||||
++ optionals resolved ["resolve [!UNAVAIL=return]"]
|
||||
++ optional mymachines "mymachines"
|
||||
++ optional nssmdns "mdns_minimal [NOTFOUND=return]"
|
||||
++ optional nsswins "wins"
|
||||
++ optional resolved "resolve [!UNAVAIL=return]"
|
||||
++ [ "dns" ]
|
||||
++ optionals nssmdns [ "mdns" ]
|
||||
++ optionals myhostname ["myhostname" ];
|
||||
++ optional nssmdns "mdns"
|
||||
++ optional myhostname "myhostname";
|
||||
|
||||
passwdArray = [ "files" ]
|
||||
++ optional sssd "sss"
|
||||
++ optionals ldap [ "ldap" ]
|
||||
++ optionals mymachines [ "mymachines" ]
|
||||
++ optional ldap "ldap"
|
||||
++ optional mymachines "mymachines"
|
||||
++ [ "systemd" ];
|
||||
|
||||
shadowArray = [ "files" ]
|
||||
++ optional sssd "sss"
|
||||
++ optionals ldap [ "ldap" ];
|
||||
++ optional ldap "ldap";
|
||||
|
||||
servicesArray = [ "files" ]
|
||||
++ optional sssd "sss";
|
||||
|
@ -109,7 +109,6 @@ in
|
||||
"/sbin"
|
||||
"/share/applications"
|
||||
"/share/desktop-directories"
|
||||
"/share/doc"
|
||||
"/share/emacs"
|
||||
"/share/icons"
|
||||
"/share/menus"
|
||||
|
@ -35,6 +35,7 @@ let
|
||||
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
apply = x: assert (builtins.stringLength x < 32 || abort "Username '${x}' is longer than 31 characters which is not allowed!"); x;
|
||||
description = ''
|
||||
The name of the user account. If undefined, the name of the
|
||||
attribute set will be used.
|
||||
@ -91,6 +92,7 @@ let
|
||||
|
||||
group = mkOption {
|
||||
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";
|
||||
description = "The user's primary group.";
|
||||
};
|
||||
@ -502,9 +504,6 @@ in {
|
||||
};
|
||||
};
|
||||
|
||||
# Install all the user shells
|
||||
environment.systemPackages = systemShells;
|
||||
|
||||
users.groups = {
|
||||
root.gid = ids.gids.root;
|
||||
wheel.gid = ids.gids.wheel;
|
||||
@ -541,14 +540,29 @@ in {
|
||||
# for backwards compatibility
|
||||
system.activationScripts.groups = stringAfter [ "users" ] "";
|
||||
|
||||
environment.etc."subuid" = {
|
||||
text = subuidFile;
|
||||
mode = "0644";
|
||||
};
|
||||
environment.etc."subgid" = {
|
||||
text = subgidFile;
|
||||
mode = "0644";
|
||||
};
|
||||
# Install all the user shells
|
||||
environment.systemPackages = systemShells;
|
||||
|
||||
environment.etc = {
|
||||
"subuid" = {
|
||||
text = subuidFile;
|
||||
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 = [
|
||||
{ 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";
|
||||
};
|
||||
|
||||
# Needed by RPi firmware
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
boot.loader.grub.enable = false;
|
||||
boot.loader.generic-extlinux-compatible.enable = true;
|
||||
|
||||
|
@ -21,9 +21,6 @@ in
|
||||
"it cannot be cross compiled";
|
||||
};
|
||||
|
||||
# Needed by RPi firmware
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
boot.loader.grub.enable = false;
|
||||
boot.loader.generic-extlinux-compatible.enable = true;
|
||||
|
||||
|
@ -21,9 +21,6 @@ in
|
||||
"it cannot be cross compiled";
|
||||
};
|
||||
|
||||
# Needed by RPi firmware
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
boot.loader.grub.enable = false;
|
||||
boot.loader.generic-extlinux-compatible.enable = true;
|
||||
|
||||
|
@ -20,6 +20,20 @@ let
|
||||
in
|
||||
{
|
||||
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 {
|
||||
type = with types; listOf package;
|
||||
example = literalExample "[ pkgs.stdenv ]";
|
||||
@ -61,19 +75,25 @@ in
|
||||
sdImage.storePaths = [ config.system.build.toplevel ];
|
||||
|
||||
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 ];
|
||||
|
||||
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
|
||||
rootSizeBlocks=$(du -B 512 --apparent-size ${rootfsImage} | awk '{ print $1 }')
|
||||
bootSizeBlocks=$((${toString config.sdImage.bootSize} * 1024 * 1024 / 512))
|
||||
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'.
|
||||
sfdisk $out <<EOF
|
||||
sfdisk $img <<EOF
|
||||
label: dos
|
||||
label-id: 0x2178694e
|
||||
|
||||
@ -82,11 +102,11 @@ in
|
||||
EOF
|
||||
|
||||
# Copy the rootfs into the SD image
|
||||
eval $(partx $out -o START,SECTORS --nr 2 --pairs)
|
||||
dd conv=notrunc if=${rootfsImage} of=$out seek=$START count=$SECTORS
|
||||
eval $(partx $img -o START,SECTORS --nr 2 --pairs)
|
||||
dd conv=notrunc if=${rootfsImage} of=$img seek=$START count=$SECTORS
|
||||
|
||||
# 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
|
||||
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
|
||||
(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 = {
|
||||
|
||||
# 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 {
|
||||
internal = true;
|
||||
type = types.str;
|
||||
|
@ -58,6 +58,7 @@
|
||||
./installer/tools/tools.nix
|
||||
./misc/assertions.nix
|
||||
./misc/crashdump.nix
|
||||
./misc/documentation.nix
|
||||
./misc/extra-arguments.nix
|
||||
./misc/ids.nix
|
||||
./misc/lib.nix
|
||||
@ -85,12 +86,10 @@
|
||||
./programs/freetds.nix
|
||||
./programs/gnupg.nix
|
||||
./programs/gphoto2.nix
|
||||
./programs/info.nix
|
||||
./programs/java.nix
|
||||
./programs/kbdlight.nix
|
||||
./programs/less.nix
|
||||
./programs/light.nix
|
||||
./programs/man.nix
|
||||
./programs/mosh.nix
|
||||
./programs/mtr.nix
|
||||
./programs/nano.nix
|
||||
@ -323,8 +322,9 @@
|
||||
./services/misc/geoip-updater.nix
|
||||
./services/misc/gitea.nix
|
||||
#./services/misc/gitit.nix
|
||||
./services/misc/gitlab.nix
|
||||
#./services/misc/gitlab.nix
|
||||
./services/misc/gitolite.nix
|
||||
./services/misc/gitweb.nix
|
||||
./services/misc/gogs.nix
|
||||
./services/misc/gollum.nix
|
||||
./services/misc/gpsd.nix
|
||||
@ -650,6 +650,7 @@
|
||||
./services/web-servers/mighttpd2.nix
|
||||
./services/web-servers/minio.nix
|
||||
./services/web-servers/nginx/default.nix
|
||||
./services/web-servers/nginx/gitweb.nix
|
||||
./services/web-servers/phpfpm/default.nix
|
||||
./services/web-servers/shellinabox.nix
|
||||
./services/web-servers/tomcat.nix
|
||||
|
@ -14,9 +14,7 @@ in {
|
||||
];
|
||||
|
||||
# Create the tarball
|
||||
system.build.tarball = import ../../lib/make-system-tarball.nix {
|
||||
inherit (pkgs) stdenv perl xz pathsFromGraph;
|
||||
|
||||
system.build.tarball = pkgs.callPackage ../../lib/make-system-tarball.nix {
|
||||
contents = [];
|
||||
extraArgs = "--owner=0";
|
||||
|
||||
|
@ -10,10 +10,9 @@ with lib;
|
||||
|
||||
# This isn't perfect, but let's expect the user specifies an UTF-8 defaultLocale
|
||||
i18n.supportedLocales = [ (config.i18n.defaultLocale + "/UTF-8") ];
|
||||
services.nixosManual.enable = mkDefault false;
|
||||
|
||||
programs.man.enable = mkDefault false;
|
||||
programs.info.enable = mkDefault false;
|
||||
documentation.enable = mkDefault false;
|
||||
services.nixosManual.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 = [
|
||||
(mkRenamedOptionModule [ "dysnomia" ] [ "services" "dysnomia" ])
|
||||
(mkRenamedOptionModule [ "environment" "x11Packages" ] [ "environment" "systemPackages" ])
|
||||
(mkRenamedOptionModule [ "environment" "enableBashCompletion" ] [ "programs" "bash" "enableCompletion" ])
|
||||
(mkRenamedOptionModule [ "environment" "nix" ] [ "nix" "package" ])
|
||||
@ -196,13 +197,17 @@ with lib;
|
||||
(mkRenamedOptionModule [ "virtualization" "growPartition" ] [ "boot" "growPartition" ])
|
||||
|
||||
# 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" "nixosVersionSuffix" ] [ "config" "system" "nixos" "versionSuffix" ])
|
||||
#(mkRenamedOptionModule [ "config" "system" "nixosVersionSuffix" ] [ "config" "system" "nixos" "versionSuffix" ])
|
||||
(mkRenamedOptionModule [ "config" "system" "nixosRevision" ] [ "config" "system" "nixos" "revision" ])
|
||||
(mkRenamedOptionModule [ "config" "system" "nixosCodeName" ] [ "config" "system" "nixos" "codeName" ])
|
||||
(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.
|
||||
(mkRemovedOptionModule [ "boot" "initrd" "luks" "enable" ] "")
|
||||
(mkRemovedOptionModule [ "programs" "bash" "enable" ] "")
|
||||
@ -240,6 +245,10 @@ with lib;
|
||||
|
||||
# Xen
|
||||
(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"
|
||||
"jsonExporter" "minioExporter" "nginxExporter" "nodeExporter"
|
||||
"snmpExporter" "unifiExporter" "varnishExporter" ]
|
||||
|
@ -766,7 +766,7 @@ in {
|
||||
rm /opt/cni/bin/* || true
|
||||
${concatMapStrings (package: ''
|
||||
echo "Linking cni package: ${package}"
|
||||
ln -fs ${package.plugins}/* /opt/cni/bin
|
||||
ln -fs ${package}/bin/* /opt/cni/bin
|
||||
'') cfg.kubelet.cni.packages}
|
||||
'';
|
||||
serviceConfig = {
|
||||
@ -828,7 +828,7 @@ in {
|
||||
};
|
||||
|
||||
# Allways include cni plugins
|
||||
services.kubernetes.kubelet.cni.packages = [pkgs.cni];
|
||||
services.kubernetes.kubelet.cni.packages = [pkgs.cni-plugins];
|
||||
|
||||
boot.kernelModules = ["br_netfilter"];
|
||||
|
||||
|
@ -30,6 +30,7 @@ let
|
||||
|
||||
''
|
||||
default_internal_user = ${cfg.user}
|
||||
default_internal_group = ${cfg.group}
|
||||
${optionalString (cfg.mailUser != null) "mail_uid = ${cfg.mailUser}"}
|
||||
${optionalString (cfg.mailGroup != null) "mail_gid = ${cfg.mailGroup}"}
|
||||
|
||||
|
@ -57,7 +57,7 @@ in
|
||||
###### implementation
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
dysnomia.enable = true;
|
||||
services.dysnomia.enable = true;
|
||||
|
||||
environment.systemPackages = [ pkgs.disnix ] ++ optional cfg.useWebServiceInterface pkgs.DisnixWebService;
|
||||
|
||||
|
@ -3,8 +3,8 @@
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.dysnomia;
|
||||
|
||||
cfg = config.services.dysnomia;
|
||||
|
||||
printProperties = properties:
|
||||
concatMapStrings (propertyName:
|
||||
let
|
||||
@ -13,7 +13,7 @@ let
|
||||
if isList property then "${propertyName}=(${lib.concatMapStrings (elem: "\"${toString elem}\" ") (properties."${propertyName}")})\n"
|
||||
else "${propertyName}=\"${toString property}\"\n"
|
||||
) (builtins.attrNames properties);
|
||||
|
||||
|
||||
properties = pkgs.stdenv.mkDerivation {
|
||||
name = "dysnomia-properties";
|
||||
buildCommand = ''
|
||||
@ -22,13 +22,13 @@ let
|
||||
EOF
|
||||
'';
|
||||
};
|
||||
|
||||
|
||||
containersDir = pkgs.stdenv.mkDerivation {
|
||||
name = "dysnomia-containers";
|
||||
buildCommand = ''
|
||||
mkdir -p $out
|
||||
cd $out
|
||||
|
||||
|
||||
${concatMapStrings (containerName:
|
||||
let
|
||||
containerProperties = cfg.containers."${containerName}";
|
||||
@ -42,11 +42,11 @@ let
|
||||
) (builtins.attrNames cfg.containers)}
|
||||
'';
|
||||
};
|
||||
|
||||
|
||||
linkMutableComponents = {containerName}:
|
||||
''
|
||||
mkdir ${containerName}
|
||||
|
||||
|
||||
${concatMapStrings (componentName:
|
||||
let
|
||||
component = cfg.components."${containerName}"."${componentName}";
|
||||
@ -54,13 +54,13 @@ let
|
||||
"ln -s ${component} ${containerName}/${componentName}\n"
|
||||
) (builtins.attrNames (cfg.components."${containerName}" or {}))}
|
||||
'';
|
||||
|
||||
|
||||
componentsDir = pkgs.stdenv.mkDerivation {
|
||||
name = "dysnomia-components";
|
||||
buildCommand = ''
|
||||
mkdir -p $out
|
||||
cd $out
|
||||
|
||||
|
||||
${concatMapStrings (containerName:
|
||||
let
|
||||
components = cfg.components."${containerName}";
|
||||
@ -72,59 +72,59 @@ let
|
||||
in
|
||||
{
|
||||
options = {
|
||||
dysnomia = {
|
||||
|
||||
services.dysnomia = {
|
||||
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Whether to enable Dysnomia";
|
||||
};
|
||||
|
||||
|
||||
enableAuthentication = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Whether to publish privacy-sensitive authentication credentials";
|
||||
};
|
||||
|
||||
|
||||
package = mkOption {
|
||||
type = types.path;
|
||||
description = "The Dysnomia package";
|
||||
};
|
||||
|
||||
|
||||
properties = mkOption {
|
||||
description = "An attribute set in which each attribute represents a machine property. Optionally, these values can be shell substitutions.";
|
||||
default = {};
|
||||
};
|
||||
|
||||
|
||||
containers = mkOption {
|
||||
description = "An attribute set in which each key represents a container and each value an attribute set providing its configuration properties";
|
||||
default = {};
|
||||
};
|
||||
|
||||
|
||||
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";
|
||||
default = {};
|
||||
};
|
||||
|
||||
|
||||
extraContainerProperties = mkOption {
|
||||
description = "An attribute set providing additional container settings in addition to the default properties";
|
||||
default = {};
|
||||
};
|
||||
|
||||
|
||||
extraContainerPaths = mkOption {
|
||||
description = "A list of paths containing additional container configurations that are added to the search folders";
|
||||
default = [];
|
||||
};
|
||||
|
||||
|
||||
extraModulePaths = mkOption {
|
||||
description = "A list of paths containing additional modules that are added to the search folders";
|
||||
default = [];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
|
||||
environment.etc = {
|
||||
"dysnomia/containers" = {
|
||||
source = containersDir;
|
||||
@ -136,16 +136,16 @@ in
|
||||
source = properties;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
environment.variables = {
|
||||
DYSNOMIA_STATEDIR = "/var/state/dysnomia-nixos";
|
||||
DYSNOMIA_CONTAINERS_PATH = "${lib.concatMapStrings (containerPath: "${containerPath}:") cfg.extraContainerPaths}/etc/dysnomia/containers";
|
||||
DYSNOMIA_MODULES_PATH = "${lib.concatMapStrings (modulePath: "${modulePath}:") cfg.extraModulePaths}/etc/dysnomia/modules";
|
||||
};
|
||||
|
||||
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
|
||||
dysnomia.package = pkgs.dysnomia.override (origArgs: {
|
||||
|
||||
services.dysnomia.package = pkgs.dysnomia.override (origArgs: {
|
||||
enableApacheWebApplication = config.services.httpd.enable;
|
||||
enableAxis2WebService = config.services.tomcat.axis2.enable;
|
||||
enableEjabberdDump = config.services.ejabberd.enable;
|
||||
@ -155,8 +155,8 @@ in
|
||||
enableTomcatWebApplication = config.services.tomcat.enable;
|
||||
enableMongoDatabase = config.services.mongodb.enable;
|
||||
});
|
||||
|
||||
dysnomia.properties = {
|
||||
|
||||
services.dysnomia.properties = {
|
||||
hostname = config.networking.hostName;
|
||||
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 = {};
|
||||
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#
|
||||
INSTALL_LOCK = true
|
||||
|
||||
[log]
|
||||
ROOT_PATH = ${cfg.stateDir}/log
|
||||
|
||||
${cfg.extraConfig}
|
||||
'';
|
||||
in
|
||||
|
@ -439,17 +439,18 @@ in
|
||||
|
||||
services.xserver.displayManager.hiddenUsers = map ({ name, ... }: name) nixbldUsers;
|
||||
|
||||
# FIXME: use systemd-tmpfiles to create Nix directories.
|
||||
system.activationScripts.nix = stringAfter [ "etc" "users" ]
|
||||
''
|
||||
# Nix initialisation.
|
||||
mkdir -m 0755 -p \
|
||||
install -m 0755 -d \
|
||||
/nix/var/nix/gcroots \
|
||||
/nix/var/nix/temproots \
|
||||
/nix/var/nix/userpool \
|
||||
/nix/var/nix/profiles \
|
||||
/nix/var/nix/db \
|
||||
/nix/var/log/nix/drvs
|
||||
mkdir -m 1777 -p \
|
||||
install -m 1777 -d \
|
||||
/nix/var/nix/gcroots/per-user \
|
||||
/nix/var/nix/profiles/per-user \
|
||||
/nix/var/nix/gcroots/tmp
|
||||
|
@ -112,10 +112,10 @@ in
|
||||
|
||||
system.build.manual = manual;
|
||||
|
||||
environment.systemPackages =
|
||||
[ manual.manual helpScript ]
|
||||
++ optionals config.services.xserver.enable [desktopItem pkgs.nixos-icons]
|
||||
++ optional config.programs.man.enable manual.manpages;
|
||||
environment.systemPackages = []
|
||||
++ optionals config.services.xserver.enable [ desktopItem pkgs.nixos-icons ]
|
||||
++ optional config.documentation.man.enable manual.manpages
|
||||
++ optionals config.documentation.doc.enable [ manual.manual helpScript ];
|
||||
|
||||
boot.extraTTYs = mkIf cfg.showManual ["tty${toString cfg.ttyNumber}"];
|
||||
|
||||
|
@ -6,6 +6,8 @@ let
|
||||
|
||||
cfg = config.services.parsoid;
|
||||
|
||||
parsoid = pkgs.nodePackages."parsoid-git://github.com/abbradar/parsoid#stable";
|
||||
|
||||
confTree = {
|
||||
worker_heartbeat_timeout = 300000;
|
||||
logging = { level = "info"; };
|
||||
@ -93,7 +95,7 @@ in
|
||||
after = [ "network.target" ];
|
||||
serviceConfig = {
|
||||
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.etc = [
|
||||
{
|
||||
source = pkgs.writeTextFile {
|
||||
name = "monitrc";
|
||||
text = config.services.monit.config;
|
||||
};
|
||||
target = "monitrc";
|
||||
mode = "0400";
|
||||
}
|
||||
];
|
||||
environment.etc."monitrc" = {
|
||||
text = config.services.monit.config;
|
||||
mode = "0400";
|
||||
};
|
||||
|
||||
systemd.services.monit = {
|
||||
description = "Pro-active monitoring utility for unix systems";
|
||||
@ -48,6 +42,8 @@ in
|
||||
KillMode = "process";
|
||||
Restart = "always";
|
||||
};
|
||||
restartTriggers = [ config.environment.etc."monitrc".source ];
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
|
@ -36,6 +36,7 @@ let
|
||||
|
||||
preStart = ''
|
||||
mkdir -m 755 -p ${cfg.stateDir}
|
||||
chown dhcpd:nogroup ${cfg.stateDir}
|
||||
touch ${cfg.stateDir}/dhcpd.leases
|
||||
'';
|
||||
|
||||
|
@ -44,9 +44,9 @@ in
|
||||
path = [ pkgs.iptables pkgs.tcpcrypt pkgs.procps ];
|
||||
|
||||
preStart = ''
|
||||
mkdir -p /var/run/tcpcryptd
|
||||
chown tcpcryptd /var/run/tcpcryptd
|
||||
sysctl -n net.ipv4.tcp_ecn >/run/pre-tcpcrypt-ecn-state
|
||||
mkdir -p /run/tcpcryptd
|
||||
chown tcpcryptd /run/tcpcryptd
|
||||
sysctl -n net.ipv4.tcp_ecn > /run/tcpcryptd/pre-tcpcrypt-ecn-state
|
||||
sysctl -w net.ipv4.tcp_ecn=0
|
||||
|
||||
iptables -t raw -N nixos-tcpcrypt
|
||||
@ -61,8 +61,8 @@ in
|
||||
script = "tcpcryptd -x 0x10";
|
||||
|
||||
postStop = ''
|
||||
if [ -f /run/pre-tcpcrypt-ecn-state ]; then
|
||||
sysctl -w net.ipv4.tcp_ecn=$(cat /run/pre-tcpcrypt-ecn-state)
|
||||
if [ -f /run/tcpcryptd/pre-tcpcrypt-ecn-state ]; then
|
||||
sysctl -w net.ipv4.tcp_ecn=$(cat /run/tcpcryptd/pre-tcpcrypt-ecn-state)
|
||||
fi
|
||||
|
||||
iptables -t mangle -D POSTROUTING -j nixos-tcpcrypt || true
|
||||
|
@ -112,7 +112,7 @@ in
|
||||
mkdir -m 0755 -p ${stateDir}/dev/
|
||||
cp ${confFile} ${stateDir}/unbound.conf
|
||||
${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}
|
||||
''}
|
||||
touch ${stateDir}/dev/random
|
||||
|
@ -7,6 +7,16 @@ let
|
||||
in
|
||||
{
|
||||
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 {
|
||||
default = pkgs.zerotierone;
|
||||
defaultText = "pkgs.zerotierone";
|
||||
@ -22,12 +32,13 @@ in
|
||||
path = [ cfg.package ];
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
preStart =
|
||||
''
|
||||
mkdir -p /var/lib/zerotier-one
|
||||
preStart = ''
|
||||
mkdir -p /var/lib/zerotier-one/networks.d
|
||||
chmod 700 /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 = {
|
||||
ExecStart = "${cfg.package}/bin/zerotier-one";
|
||||
Restart = "always";
|
||||
@ -38,6 +49,9 @@ in
|
||||
# ZeroTier does not issue DHCP leases, but some strangers might...
|
||||
networking.dhcpcd.denyInterfaces = [ "zt0" ];
|
||||
|
||||
# ZeroTier receives UDP transmissions on port 9993 by default
|
||||
networking.firewall.allowedUDPPorts = [ 9993 ];
|
||||
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
};
|
||||
}
|
||||
|
@ -21,6 +21,19 @@ let
|
||||
|
||||
# for users in group "transmission" to have access to torrents
|
||||
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
|
||||
{
|
||||
options = {
|
||||
@ -59,8 +72,8 @@ in
|
||||
time the service starts). String values must be quoted, integer and
|
||||
boolean values must not.
|
||||
|
||||
See https://trac.transmissionbt.com/wiki/EditConfigFiles for
|
||||
documentation.
|
||||
See https://github.com/transmission/transmission/wiki/Editing-Configuration-Files
|
||||
for documentation.
|
||||
'';
|
||||
};
|
||||
|
||||
@ -89,9 +102,7 @@ in
|
||||
|
||||
# 1) Only the "transmission" user and group have access to torrents.
|
||||
# 2) Optionally update/force specific fields into the configuration file.
|
||||
serviceConfig.ExecStartPre = ''
|
||||
${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.ExecStartPre = preStart;
|
||||
serviceConfig.ExecStart = "${pkgs.transmission}/bin/transmission-daemon -f --port ${toString config.services.transmission.port}";
|
||||
serviceConfig.ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||
serviceConfig.User = "transmission";
|
||||
|
@ -118,7 +118,7 @@ with lib;
|
||||
default = [];
|
||||
example = [
|
||||
{ urlPath = "/foo/bar.png";
|
||||
files = "/home/eelco/some-file.png";
|
||||
file = "/home/eelco/some-file.png";
|
||||
}
|
||||
];
|
||||
description = ''
|
||||
|
@ -3,12 +3,7 @@
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.lighttpd.gitweb;
|
||||
gitwebConfigFile = pkgs.writeText "gitweb.conf" ''
|
||||
# path to git projects (<project>.git)
|
||||
$projectroot = "${cfg.projectroot}";
|
||||
${cfg.extraConfig}
|
||||
'';
|
||||
cfg = config.services.gitweb;
|
||||
|
||||
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
|
||||
services.lighttpd.enableModules = [ "mod_cgi" "mod_redirect" "mod_alias" "mod_setenv" ];
|
||||
@ -60,7 +38,7 @@ in
|
||||
"/gitweb/" => "${pkgs.git}/share/gitweb/gitweb.cgi"
|
||||
)
|
||||
setenv.add-environment = (
|
||||
"GITWEB_CONFIG" => "${gitwebConfigFile}",
|
||||
"GITWEB_CONFIG" => "${cfg.gitwebConfigFile}",
|
||||
"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 {
|
||||
type = types.str;
|
||||
default = "none";
|
||||
example = "plasma5";
|
||||
default = "";
|
||||
example = "none";
|
||||
description = "Default desktop manager loaded if none have been chosen.";
|
||||
apply = defaultDM:
|
||||
if defaultDM == "none" && cfg.session.list != [] then
|
||||
if defaultDM == "" && cfg.session.list != [] then
|
||||
(head cfg.session.list).name
|
||||
else if any (w: w.name == defaultDM) cfg.session.list then
|
||||
defaultDM
|
||||
|
@ -61,6 +61,8 @@ in
|
||||
|
||||
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.upower.enable = config.powerManagement.enable;
|
||||
|
||||
security.pam.services."mate-screensaver".unixAuth = true;
|
||||
|
||||
environment.pathsToLink = [ "/share" ];
|
||||
};
|
||||
|
||||
|
@ -62,9 +62,7 @@ in
|
||||
example = "wmii";
|
||||
description = "Default window manager loaded if none have been chosen.";
|
||||
apply = defaultWM:
|
||||
if defaultWM == "none" && cfg.session != [] then
|
||||
(head cfg.session).name
|
||||
else if any (w: w.name == defaultWM) cfg.session then
|
||||
if any (w: w.name == defaultWM) cfg.session then
|
||||
defaultWM
|
||||
else
|
||||
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 {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
@ -561,11 +552,6 @@ in
|
||||
+ "${toString (length primaryHeads)} heads set to primary: "
|
||||
+ 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 =
|
||||
|
@ -43,7 +43,7 @@ if [ ! -e /proc/1 ]; then
|
||||
local options="$3"
|
||||
local fsType="$4"
|
||||
|
||||
mkdir -m 0755 -p "$mountPoint"
|
||||
install -m 0755 -d "$mountPoint"
|
||||
mount -n -t "$fsType" -o "$options" "$device" "$mountPoint"
|
||||
}
|
||||
source @earlyMountScript@
|
||||
@ -71,7 +71,7 @@ fi
|
||||
|
||||
|
||||
# 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
|
||||
rm -f /etc/mtab* # not that we care about stale locks
|
||||
ln -s /proc/mounts /etc/mtab
|
||||
@ -79,8 +79,8 @@ ln -s /proc/mounts /etc/mtab
|
||||
|
||||
# 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
|
||||
mkdir -m 01777 -p /tmp
|
||||
mkdir -m 0755 -p /var/{log,lib,db} /nix/var /etc/nixos/ \
|
||||
install -m 01777 -d /tmp
|
||||
install -m 0755 -d /var/{log,lib,db} /nix/var /etc/nixos/ \
|
||||
/run/lock /home /bin # for the /bin/sh symlink
|
||||
|
||||
|
||||
|
@ -68,8 +68,7 @@ let
|
||||
(hasAttr dev cfg.macvlans) ||
|
||||
(hasAttr dev cfg.sits) ||
|
||||
(hasAttr dev cfg.vlans) ||
|
||||
(hasAttr dev cfg.vswitches) ||
|
||||
(hasAttr dev cfg.wlanInterfaces)
|
||||
(hasAttr dev cfg.vswitches)
|
||||
then [ "${dev}-netdev.service" ]
|
||||
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)
|
||||
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
|
||||
subsystemDevice = interface:
|
||||
"sys-subsystem-net-devices-${escapeSystemdPath interface}.device";
|
||||
|
@ -240,5 +240,22 @@ let self = {
|
||||
"17.09".sa-east-1.hvm-ebs = "ami-4762202b";
|
||||
"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
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
with lib;
|
||||
let
|
||||
diskSize = 1024; # MB
|
||||
diskSize = 1536; # MB
|
||||
gce = pkgs.google-compute-engine;
|
||||
in
|
||||
{
|
||||
@ -57,6 +57,12 @@ in
|
||||
# Always include cryptsetup so that NixOps can use it.
|
||||
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
|
||||
networking.firewall.enable = mkDefault false;
|
||||
|
||||
|
@ -55,6 +55,17 @@ let
|
||||
}).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 =
|
||||
{ module, maintainers ? ["viric"], system }:
|
||||
|
||||
@ -155,6 +166,10 @@ in rec {
|
||||
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).
|
||||
ova = forMatchingSystems [ "x86_64-linux" ] (system:
|
||||
@ -296,7 +311,10 @@ in rec {
|
||||
tests.kernel-copperhead = callTest tests/kernel-copperhead.nix {};
|
||||
tests.kernel-latest = callTest tests/kernel-latest.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.ldap = callTest tests/ldap.nix {};
|
||||
#tests.lightdm = callTest tests/lightdm.nix {};
|
||||
@ -365,6 +383,7 @@ in rec {
|
||||
tests.switchTest = callTest tests/switch-test.nix {};
|
||||
tests.taskserver = callTest tests/taskserver.nix {};
|
||||
tests.tomcat = callTest tests/tomcat.nix {};
|
||||
tests.transmission = callTest tests/transmission.nix {};
|
||||
tests.udisks2 = callTest tests/udisks2.nix {};
|
||||
tests.vault = callTest tests/vault.nix {};
|
||||
tests.virtualbox = callSubTestsOnMatchingSystems ["x86_64-linux"] tests/virtualbox.nix {};
|
||||
|
@ -17,20 +17,14 @@ import ./make-test.nix ({ pkgs, lib, ... }:
|
||||
startAll;
|
||||
|
||||
$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/batch-1");
|
||||
|
||||
$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 batch-1' | batch\"");
|
||||
|
||||
$machine->succeed("sleep 1.5m");
|
||||
|
||||
$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/batch-1");
|
||||
'';
|
||||
})
|
||||
|
@ -20,7 +20,7 @@ import ./make-test.nix ({ pkgs, ...} : {
|
||||
containers.foo.config = {};
|
||||
};
|
||||
};
|
||||
in [ pkgs.stdenv emptyContainer.config.containers.foo.path ];
|
||||
in [ pkgs.stdenv emptyContainer.config.containers.foo.path pkgs.libxslt ];
|
||||
};
|
||||
|
||||
testScript =
|
||||
|
@ -52,7 +52,7 @@ import ./make-test.nix ({ pkgs, ...} : {
|
||||
config = {
|
||||
networking.bonds.bond0 = {
|
||||
interfaces = [ "eth1" ];
|
||||
mode = "active-backup";
|
||||
driverOptions.mode = "active-backup";
|
||||
};
|
||||
networking.interfaces.bond0.ipv4.addresses = [
|
||||
{ address = "10.10.0.3"; prefixLength = 24; }
|
||||
@ -73,7 +73,7 @@ import ./make-test.nix ({ pkgs, ...} : {
|
||||
config = {
|
||||
networking.bonds.bond0 = {
|
||||
interfaces = [ "eth1" ];
|
||||
mode = "active-backup";
|
||||
driverOptions.mode = "active-backup";
|
||||
};
|
||||
networking.bridges.br0.interfaces = [ "bond0" ];
|
||||
networking.interfaces.br0.ipv4.addresses = [
|
||||
|
@ -6,29 +6,62 @@
|
||||
kubelets
|
||||
}:
|
||||
let
|
||||
runWithCFSSL = name: cmd:
|
||||
builtins.fromJSON (builtins.readFile (
|
||||
pkgs.runCommand "${name}-cfss.json" {
|
||||
buildInputs = [ pkgs.cfssl ];
|
||||
} "cfssl ${cmd} > $out"
|
||||
));
|
||||
runWithCFSSL = name: cmd:
|
||||
let secrets = pkgs.runCommand "${name}-cfss.json" {
|
||||
buildInputs = [ pkgs.cfssl pkgs.jq ];
|
||||
outputs = [ "out" "cert" "key" "csr" ];
|
||||
}
|
||||
''
|
||||
(
|
||||
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:
|
||||
pkgs.runCommand content.name {
|
||||
buildInputs = [ pkgs.cfssl ];
|
||||
} ''
|
||||
mkdir -p $out
|
||||
cd $out
|
||||
cat ${writeFile content} | cfssljson -bare ${content.name}
|
||||
'';
|
||||
touch $out
|
||||
) 2>&1 | fold -w 80 -s
|
||||
'';
|
||||
in {
|
||||
key = secrets.key;
|
||||
cert = secrets.cert;
|
||||
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;
|
||||
noKey = content: pkgs.lib.filterAttrs (n: v: n != "key") content;
|
||||
|
||||
writeFile = content: pkgs.writeText "content" (
|
||||
if pkgs.lib.isAttrs content then builtins.toJSON content
|
||||
else toString content
|
||||
);
|
||||
writeFile = content:
|
||||
if pkgs.lib.isDerivation content
|
||||
then content
|
||||
else pkgs.writeText "content" (builtins.toJSON content);
|
||||
|
||||
createServingCertKey = { ca, cn, hosts? [], size ? 2048, name ? cn }:
|
||||
noCSR (
|
||||
|
@ -2,7 +2,7 @@
|
||||
with import ./base.nix { inherit system; };
|
||||
let
|
||||
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 {
|
||||
apiVersion = "v1";
|
||||
kind = "Config";
|
||||
|
@ -12,7 +12,7 @@ let
|
||||
});
|
||||
|
||||
roRoleBinding = pkgs.writeText "ro-role-binding.json" (builtins.toJSON {
|
||||
apiVersion = "rbac.authorization.k8s.io/v1beta1";
|
||||
apiVersion = "rbac.authorization.k8s.io/v1";
|
||||
kind = "RoleBinding";
|
||||
metadata = {
|
||||
name = "read-pods";
|
||||
@ -31,7 +31,7 @@ let
|
||||
});
|
||||
|
||||
roRole = pkgs.writeText "ro-role.json" (builtins.toJSON {
|
||||
apiVersion = "rbac.authorization.k8s.io/v1beta1";
|
||||
apiVersion = "rbac.authorization.k8s.io/v1";
|
||||
kind = "Role";
|
||||
metadata = {
|
||||
name = "pod-reader";
|
||||
|
@ -1,5 +1,5 @@
|
||||
import ./make-test.nix {
|
||||
name = "dovecot";
|
||||
name = "openldap";
|
||||
|
||||
machine = { pkgs, ... }: {
|
||||
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 {
|
||||
name = "go-ethereum-${version}";
|
||||
version = "1.8.2";
|
||||
version = "1.8.3";
|
||||
goPackagePath = "github.com/ethereum/go-ethereum";
|
||||
|
||||
# Fix for usb-related segmentation faults on darwin
|
||||
@ -27,7 +27,7 @@ buildGoPackage rec {
|
||||
owner = "ethereum";
|
||||
repo = "go-ethereum";
|
||||
rev = "v${version}";
|
||||
sha256 = "19ryfy9dsmgk3kimkmq2hif1di4binqg9718xrmirf063rajk02a";
|
||||
sha256 = "1vdrf3fi4arr6aivyp5myj4jy7apqbiqa6brr3jplmc07q1yijnf";
|
||||
};
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
|
@ -2,32 +2,34 @@
|
||||
, makeWrapper, makeDesktopItem
|
||||
, qtbase, qmake, qtmultimedia, qttools
|
||||
, qtgraphicaleffects, qtdeclarative
|
||||
, qtlocation, qtquickcontrols, qtwebchannel
|
||||
, qtlocation, qtquickcontrols2, qtwebchannel
|
||||
, qtwebengine, qtx11extras, qtxmlpatterns
|
||||
, monero, unbound, readline, boost, libunwind
|
||||
, pcsclite, zeromq, cppzmq, pkgconfig
|
||||
}:
|
||||
|
||||
with stdenv.lib;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "monero-gui-${version}";
|
||||
version = "0.11.1.0";
|
||||
version = "0.12.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "monero-project";
|
||||
repo = "monero-gui";
|
||||
rev = "v${version}";
|
||||
sha256 = "01d7apwrv8j8bh7plvvhlnll3ransaha3n6rx19nkgvfn319hswq";
|
||||
sha256 = "1mg5ival8a2wdp14yib4wzqax4xyvd40zjy9anhszljds1439jhl";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ qmake ];
|
||||
nativeBuildInputs = [ qmake pkgconfig ];
|
||||
|
||||
buildInputs = [
|
||||
qtbase qtmultimedia qtgraphicaleffects
|
||||
qtdeclarative qtlocation qtquickcontrols
|
||||
qtdeclarative qtlocation qtquickcontrols2
|
||||
qtwebchannel qtwebengine qtx11extras
|
||||
qtxmlpatterns monero unbound readline
|
||||
boost libunwind makeWrapper
|
||||
boost libunwind pcsclite zeromq cppzmq
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
patches = [
|
||||
|
@ -1,8 +1,8 @@
|
||||
diff --git a/main.cpp b/main.cpp
|
||||
index 1a9a979..2316929 100644
|
||||
index c03b160..a8ea263 100644
|
||||
--- a/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";
|
||||
//#endif
|
||||
|
||||
@ -13,9 +13,6 @@ index 1a9a979..2316929 100644
|
||||
MainApp app(argc, argv);
|
||||
|
||||
qDebug() << "app startd";
|
||||
@@ -86,6 +82,13 @@ int main(int argc, char *argv[])
|
||||
app.setOrganizationDomain("getmonero.org");
|
||||
app.setOrganizationName("monero-project");
|
||||
|
||||
+ // Log settings
|
||||
+ QString logfile =
|
||||
@ -23,20 +20,19 @@ index 1a9a979..2316929 100644
|
||||
+ + "/monero-wallet-gui.log";
|
||||
+ Monero::Wallet::init(argv[0], logfile.toUtf8().constData());
|
||||
+
|
||||
+
|
||||
filter *eventFilter = new filter;
|
||||
app.installEventFilter(eventFilter);
|
||||
|
||||
app.setApplicationName("monero-core");
|
||||
app.setOrganizationDomain("getmonero.org");
|
||||
app.setOrganizationName("monero-project");
|
||||
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
|
||||
+++ b/src/libwalletqt/Wallet.cpp
|
||||
@@ -613,7 +613,7 @@ QString Wallet::getDaemonLogPath() const
|
||||
|
||||
QString Wallet::getWalletLogPath() const
|
||||
{
|
||||
- return QCoreApplication::applicationDirPath() + "/monero-wallet-gui.log";
|
||||
+ return QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + "/monero-wallet-gui.log";
|
||||
@@ -729,7 +729,7 @@ QString Wallet::getWalletLogPath() const
|
||||
#ifdef Q_OS_MACOS
|
||||
return QStandardPaths::standardLocations(QStandardPaths::HomeLocation).at(0) + "/Library/Logs/" + filename;
|
||||
#else
|
||||
- return QCoreApplication::applicationDirPath() + "/" + filename;
|
||||
+ 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
|
||||
, boost, miniupnpc, openssl, pkgconfig, unbound
|
||||
, IOKit
|
||||
{ stdenv, fetchFromGitHub, cmake, pkgconfig, git
|
||||
, boost, miniupnpc, openssl, unbound, cppzmq
|
||||
, zeromq, pcsclite, readline
|
||||
, CoreData, IOKit, PCSC
|
||||
}:
|
||||
|
||||
assert stdenv.isDarwin -> IOKit != null;
|
||||
|
||||
with stdenv.lib;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "monero-${version}";
|
||||
version = "0.11.1.0";
|
||||
version = "0.12.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "monero-project";
|
||||
repo = "monero";
|
||||
rev = "v${version}";
|
||||
sha256 = "0nrpxx6r63ia6ard85d504x2kgaikvrhb5sg93ml70l6djyy1148";
|
||||
sha256 = "1lc9mkrl1m8mdbvj88y8y5rv44vinxf7dyv221ndmw5c5gs5zfgk";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake pkgconfig ];
|
||||
nativeBuildInputs = [ cmake pkgconfig git ];
|
||||
|
||||
buildInputs = [ boost miniupnpc openssl unbound ]
|
||||
++ stdenv.lib.optional stdenv.isDarwin IOKit;
|
||||
|
||||
patches = [
|
||||
./build-wallet-rpc.patch # fixed in next release
|
||||
];
|
||||
buildInputs = [
|
||||
boost miniupnpc openssl unbound
|
||||
cppzmq zeromq pcsclite readline
|
||||
] ++ optionals stdenv.isDarwin [ IOKit CoreData PCSC ];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_BUILD_TYPE=Release"
|
||||
"-DBUILD_GUI_DEPS=ON"
|
||||
"-DReadline_ROOT_DIR=${readline.dev}"
|
||||
];
|
||||
|
||||
doCheck = false;
|
||||
hardeningDisable = [ "fortify" ];
|
||||
|
||||
installPhase = ''
|
||||
make install
|
||||
install -Dt "$out/bin/" \
|
||||
bin/monero-blockchain-export \
|
||||
bin/monero-blockchain-import \
|
||||
bin/monero-wallet-rpc
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
meta = {
|
||||
description = "Private, secure, untraceable currency";
|
||||
homepage = https://getmonero.org/;
|
||||
license = licenses.bsd3;
|
||||
platforms = platforms.all;
|
||||
maintainers = [ maintainers.ehmry ];
|
||||
maintainers = with maintainers; [ ehmry rnhmjoj ];
|
||||
};
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
{ 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
|
||||
}:
|
||||
|
||||
@ -18,7 +18,7 @@ in stdenv.mkDerivation rec {
|
||||
|
||||
nativeBuildInputs = [ pkgconfig intltool itstool libxml2 wrapGAppsHook ];
|
||||
buildInputs = [
|
||||
gtk3 glib libid3tag id3lib taglib libvorbis libogg flac
|
||||
gtk3 glib libid3tag id3lib taglib libvorbis libogg opusfile flac
|
||||
gsettings-desktop-schemas gnome3.defaultIconTheme
|
||||
];
|
||||
|
||||
|
@ -7,14 +7,13 @@
|
||||
|
||||
mkDerivation rec {
|
||||
name = "elisa-${version}";
|
||||
# 0.1 is expected in early/mid 2018-04
|
||||
version = "0.0.20180320";
|
||||
version = "0.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "KDE";
|
||||
repo = "elisa";
|
||||
rev = "9dd35d7244a8a3553275152f5b50fbe6d272ce64";
|
||||
sha256 = "0mjqvcpk2y4jlwkka8gzl50wgqjjx9bzpbrj79cr0ib3jyviss4k";
|
||||
rev = version;
|
||||
sha256 = "13i0fkpwrskric3gfalh7mcpp4l2knwnq7jpq391lgh6krq04r4w";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ extra-cmake-modules kdoctools wrapGAppsHook ];
|
||||
|
@ -11,10 +11,10 @@ with stdenv.lib;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "fmit-${version}";
|
||||
version = "1.1.13";
|
||||
version = "1.1.14";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
sha256 = "1p374gf7iksrlyvddm3w4qk3l0rxsiyymz5s8dmc447yvin8ykfq";
|
||||
sha256 = "18gvl8smcnigzldy1acs5h8rscf287b39xi4y2cl5armqbj0y38x";
|
||||
rev = "v${version}";
|
||||
repo = "fmit";
|
||||
owner = "gillesdegottex";
|
||||
|
@ -4,11 +4,11 @@
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "mpg123-1.25.8";
|
||||
name = "mpg123-1.25.10";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/mpg123/${name}.tar.bz2";
|
||||
sha256 = "16s9z1xc5kv1p90g42vsr9m4gq3dwjsmrj873x4i8601mvpm3nkr";
|
||||
sha256 = "08vhp8lz7d9ybhxcmkq3adwfryhivfvp0745k4r9kgz4wap3f4vc";
|
||||
};
|
||||
|
||||
buildInputs = stdenv.lib.optional (!stdenv.isDarwin) alsaLib;
|
||||
|
@ -20,13 +20,16 @@ stdenv.mkDerivation rec {
|
||||
mv helmholtz~/src/Makefile .
|
||||
rm -rf helmholtz~/src/
|
||||
rm helmholtz~/helmholtz~.pd_darwin
|
||||
rm helmholtz~/helmholtz~.pd_linux
|
||||
rm helmholtz~/helmholtz~.dll
|
||||
rm -rf __MACOSX
|
||||
'';
|
||||
|
||||
patchPhase = ''
|
||||
mkdir -p $out/helmholtz~
|
||||
sed -i "s@current: pd_darwin@current: pd_linux@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 = ''
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "praat-${version}";
|
||||
version = "6.0.37";
|
||||
version = "6.0.38";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/praat/praat/archive/v${version}.tar.gz";
|
||||
sha256 = "1c675jfzcrwfn8lcswm5y5kmazkhnb0p4mzlf5sim57hms88ffjq";
|
||||
sha256 = "1l01mdhd0kf6mnyrg8maydr56cpw4312gryk303kr0a4w0gwzhhc";
|
||||
};
|
||||
|
||||
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 }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
@ -26,7 +26,10 @@ stdenv.mkDerivation rec {
|
||||
# Allow to set logfile to a special "/dev/stderr" in order to continue
|
||||
# logging to stderr and thus to the journal.
|
||||
./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";
|
||||
|
||||
|
@ -8,9 +8,9 @@ let
|
||||
inherit (gnome2) GConf gnome_vfs;
|
||||
};
|
||||
latestVersion = {
|
||||
version = "3.2.0.7"; # "Android Studio 3.2 Canary 8"
|
||||
build = "173.4670218";
|
||||
sha256Hash = "0p1lls1pkhji8x0p32clsiq3ng64jhqv2vxkhdkmsbh5p4dc1g21";
|
||||
version = "3.2.0.8"; # "Android Studio 3.2 Canary 9"
|
||||
build = "173.4688006";
|
||||
sha256Hash = "13kln5s45qzdi54gca0bvdiwl2mi6lg8zgp7f36a24zbmvdmnslv";
|
||||
};
|
||||
in rec {
|
||||
# Old alias
|
||||
@ -21,9 +21,9 @@ in rec {
|
||||
stable = mkStudio {
|
||||
pname = "android-studio";
|
||||
#pname = "android-studio-stable"; # TODO: Rename and provide symlink
|
||||
version = "3.0.1.0"; # "Android Studio 3.0.1"
|
||||
build = "171.4443003";
|
||||
sha256Hash = "1krahlqr70nq3csqiinq2m4fgs68j11hd9gg2dx2nrpw5zni0wdd";
|
||||
version = "3.1.0.16"; # "Android Studio 3.1"
|
||||
build = "173.4670197";
|
||||
sha256Hash = "1i0ldyadrcyy5pl9vjpm2k755mf08xi9x5qz8655qsbiajzqf9fy";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "The Official IDE for Android (stable channel)";
|
||||
@ -41,9 +41,9 @@ in rec {
|
||||
beta = mkStudio {
|
||||
pname = "android-studio-preview";
|
||||
#pname = "android-studio-beta"; # TODO: Rename and provide symlink
|
||||
version = "3.1.0.15"; # "Android Studio 3.1 RC 3"
|
||||
build = "173.4658569";
|
||||
sha256Hash = "0jvq7k5vhrli41bj2imnsp3z70c7yws3fvs8m873qrjvfgmi5qrq";
|
||||
version = "3.1.0.16"; # "Android Studio 3.1"
|
||||
build = "173.4670197";
|
||||
sha256Hash = "1i0ldyadrcyy5pl9vjpm2k755mf08xi9x5qz8655qsbiajzqf9fy";
|
||||
|
||||
meta = stable.meta // {
|
||||
description = "The Official IDE for Android (beta channel)";
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "atom-${version}";
|
||||
version = "1.25.0";
|
||||
version = "1.25.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/atom/atom/releases/download/v${version}/atom-amd64.deb";
|
||||
sha256 = "04iiw0qzl9025l4lasz42w5nfnvsmc7vwcf4a9c2hvl9xsyckajh";
|
||||
sha256 = "0h0kr4w26c6i89rb9y4aw4l8f63al42i2cy3ddk16m1irzij9fk4";
|
||||
name = "${name}.deb";
|
||||
};
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
{ 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, ... }:
|
||||
|
||||
{ name, src ? builtins.getAttr stdenv.system sources, sources ? null, description }:
|
||||
@ -18,9 +18,9 @@ stdenv.mkDerivation rec {
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
fontconfig freetype glib gsettings-desktop-schemas gtk2 jdk libX11
|
||||
fontconfig freetype glib gsettings-desktop-schemas gtk3 jdk libX11
|
||||
libXrender libXtst makeWrapper zlib
|
||||
] ++ stdenv.lib.optional (webkitgtk24x-gtk2 != null) webkitgtk24x-gtk2;
|
||||
] ++ stdenv.lib.optional (webkitgtk != null) webkitgtk;
|
||||
|
||||
buildCommand = ''
|
||||
# Unpack tarball.
|
||||
@ -41,7 +41,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
makeWrapper $out/eclipse/eclipse $out/bin/eclipse \
|
||||
--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" \
|
||||
--add-flags "-configuration \$HOME/.eclipse/''${productId}_$productVersion/configuration"
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
{ stdenv, lib, fetchurl, makeDesktopItem, makeWrapper
|
||||
, freetype, fontconfig, libX11, libXext, libXrender, zlib
|
||||
, glib, gtk2, libXtst, jdk, gsettings-desktop-schemas
|
||||
, webkitgtk24x-gtk2 ? null # for internal web browser
|
||||
, glib, gtk3, libXtst, jdk, gsettings-desktop-schemas
|
||||
, webkitgtk ? null # for internal web browser
|
||||
, buildEnv, writeText, runCommand
|
||||
, callPackage
|
||||
}:
|
||||
@ -15,7 +15,7 @@ rec {
|
||||
|
||||
buildEclipse = import ./build-eclipse.nix {
|
||||
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;
|
||||
};
|
||||
|
||||
|
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 {
|
||||
pname = "auctex";
|
||||
version = "12.1.0";
|
||||
version = "12.1.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/auctex-12.1.0.tar";
|
||||
sha256 = "0iy5x61xqkxaph2hq64sg50l1c6yp6qhzppwadayxkdz00b46sas";
|
||||
url = "https://elpa.gnu.org/packages/auctex-12.1.1.tar";
|
||||
sha256 = "10l96569dy9pfp8bm64pndhk1skg65kqhsyllwfa0zvb7mjkm70l";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
@ -713,10 +713,10 @@
|
||||
ebdb = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib, seq }:
|
||||
elpaBuild {
|
||||
pname = "ebdb";
|
||||
version = "0.4.3";
|
||||
version = "0.5";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/ebdb-0.4.3.tar";
|
||||
sha256 = "1xq0nhhgzgzrvxbb0lgpz71rfd0dcjakh87wg8wi3cpiw9w7zx41";
|
||||
url = "https://elpa.gnu.org/packages/ebdb-0.5.tar";
|
||||
sha256 = "1apsb08ml50nacqa6i86zwa2xxdfqry380bksp16zv63cj86b67g";
|
||||
};
|
||||
packageRequires = [ cl-lib emacs seq ];
|
||||
meta = {
|
||||
@ -768,10 +768,10 @@
|
||||
el-search = callPackage ({ cl-print, elpaBuild, emacs, fetchurl, lib, stream }:
|
||||
elpaBuild {
|
||||
pname = "el-search";
|
||||
version = "1.6";
|
||||
version = "1.6.3";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/el-search-1.6.tar";
|
||||
sha256 = "18pv2l6rl8f9x0yjn4iyf6g94c0ly5mizqg0vxr3m420bkbyk95h";
|
||||
url = "https://elpa.gnu.org/packages/el-search-1.6.3.tar";
|
||||
sha256 = "1yd8qlq95fb5qfmg3m16i9d5nsmkkgr12q0981r5ng06pc0j4al6";
|
||||
};
|
||||
packageRequires = [ cl-print emacs stream ];
|
||||
meta = {
|
||||
@ -861,10 +861,10 @@
|
||||
}) {};
|
||||
exwm = callPackage ({ elpaBuild, fetchurl, lib, xelb }: elpaBuild {
|
||||
pname = "exwm";
|
||||
version = "0.17";
|
||||
version = "0.18";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/exwm-0.17.tar";
|
||||
sha256 = "03vgrrrc1d3xr9ydl1ydvmqnvpnzg858dzdky2nd65h9ssyp2f5f";
|
||||
url = "https://elpa.gnu.org/packages/exwm-0.18.tar";
|
||||
sha256 = "1shz5bf4v4gg3arjaaldics5qkg3aiiaf3ngys8lb6qyxhcpvh6q";
|
||||
};
|
||||
packageRequires = [ xelb ];
|
||||
meta = {
|
||||
@ -931,10 +931,10 @@
|
||||
gited = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "gited";
|
||||
version = "0.3.4";
|
||||
version = "0.4.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/gited-0.3.4.tar";
|
||||
sha256 = "0s03p0z5dqhigl01hzin2qy53nm7b4ilvfm83d0ca683i9rb7hx1";
|
||||
url = "https://elpa.gnu.org/packages/gited-0.4.1.tar";
|
||||
sha256 = "0080jcr10xvvf2rl7ar01c6zmzd0pafrs6w2l8v4cwwapyhv0dcd";
|
||||
};
|
||||
packageRequires = [ cl-lib emacs ];
|
||||
meta = {
|
||||
@ -1106,10 +1106,10 @@
|
||||
}) {};
|
||||
iterators = callPackage ({ elpaBuild, emacs, fetchurl, lib }: elpaBuild {
|
||||
pname = "iterators";
|
||||
version = "0.1";
|
||||
version = "0.1.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/iterators-0.1.el";
|
||||
sha256 = "0rljqdaj88cbhngj4ddd2z3bfd35r84aivq4h10mk4n4h8whjpj4";
|
||||
url = "https://elpa.gnu.org/packages/iterators-0.1.1.el";
|
||||
sha256 = "1r2cz2n6cr6wal5pqiqi5pn28pams639czgrvd60xcqmlr3li3g5";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
@ -1160,10 +1160,10 @@
|
||||
js2-mode = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "js2-mode";
|
||||
version = "20170721";
|
||||
version = "20180301";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/js2-mode-20170721.tar";
|
||||
sha256 = "02w2hgk8qbmwkksqf1dmslpr3xn9zjp3srl3qh8730w8r8s8czni";
|
||||
url = "https://elpa.gnu.org/packages/js2-mode-20180301.tar";
|
||||
sha256 = "0kcs70iygbpaxs094q6agsjs56sz03jy4fwk178f9hr93x95pynx";
|
||||
};
|
||||
packageRequires = [ cl-lib emacs ];
|
||||
meta = {
|
||||
@ -1423,14 +1423,29 @@
|
||||
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";
|
||||
version = "1.1.5";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/multishell-1.1.5.tar";
|
||||
sha256 = "0g38p5biyxqkjdkmxlikvhkhkmafyy3ibd012q83skaf8fi4cv1y";
|
||||
};
|
||||
packageRequires = [];
|
||||
packageRequires = [ cl-lib ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/multishell.html";
|
||||
license = lib.licenses.free;
|
||||
@ -1438,10 +1453,10 @@
|
||||
}) {};
|
||||
muse = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||
pname = "muse";
|
||||
version = "3.20.1";
|
||||
version = "3.20.2";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/muse-3.20.1.tar";
|
||||
sha256 = "0h8lxm08r519psz93m1i43prkcpsm2dgkcvdlpvg7sm0ky7i5cay";
|
||||
url = "https://elpa.gnu.org/packages/muse-3.20.2.tar";
|
||||
sha256 = "0g2ff6x45x2k5dnkp31sk3bjj92jyhhnar7l5hzn8vp22l0rv8wn";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
@ -1544,10 +1559,10 @@
|
||||
}) {};
|
||||
num3-mode = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||
pname = "num3-mode";
|
||||
version = "1.2";
|
||||
version = "1.3";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/num3-mode-1.2.el";
|
||||
sha256 = "1nm3yjp5qs6rq4ak47gb6325vjfw0dnkryfgybgly0m6h4hhpbd8";
|
||||
url = "https://elpa.gnu.org/packages/num3-mode-1.3.el";
|
||||
sha256 = "0x2jpnzvpbj03pbmhsny5gygh63c4dbl4g3k0cfs3vh4qmp2dg6w";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
@ -1595,6 +1610,19 @@
|
||||
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 {
|
||||
pname = "osc";
|
||||
version = "0.1";
|
||||
@ -1717,10 +1745,10 @@
|
||||
python = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "python";
|
||||
version = "0.26";
|
||||
version = "0.26.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/python-0.26.el";
|
||||
sha256 = "197sq42xd4ryqq2zy1802pns6wf6n4vzx90yxgn1zzqpwffpv317";
|
||||
url = "https://elpa.gnu.org/packages/python-0.26.1.el";
|
||||
sha256 = "1dpw2w2nk6ggr8pz293qysjkiya3i7k25i447fbycjil59anzpb3";
|
||||
};
|
||||
packageRequires = [ cl-lib emacs ];
|
||||
meta = {
|
||||
@ -1756,10 +1784,10 @@
|
||||
}) {};
|
||||
rainbow-mode = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||
pname = "rainbow-mode";
|
||||
version = "0.13";
|
||||
version = "1.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/rainbow-mode-0.13.el";
|
||||
sha256 = "1d3aamx6qgqqpqijwsr02ggwrh67gfink1bir0692alfkm3zdddl";
|
||||
url = "https://elpa.gnu.org/packages/rainbow-mode-1.0.el";
|
||||
sha256 = "1mg9dbgvg79sphpic56d11mrjwx668xffx5z5jszc9fdl5b8ygml";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
@ -1809,10 +1837,10 @@
|
||||
realgud = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib, load-relative, loc-changes, test-simple }:
|
||||
elpaBuild {
|
||||
pname = "realgud";
|
||||
version = "1.4.4";
|
||||
version = "1.4.5";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/realgud-1.4.4.tar";
|
||||
sha256 = "1nc8km339ip90h1j55ahfga03v7x7rh4iycmw6yrxyzir68vwn7c";
|
||||
url = "https://elpa.gnu.org/packages/realgud-1.4.5.tar";
|
||||
sha256 = "108wgxg7fb4byaiasgvbxv2hq7b00biq9f0mh9hy6vw4160y5w24";
|
||||
};
|
||||
packageRequires = [
|
||||
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;
|
||||
};
|
||||
|
||||
ess-R-object-popup = super.ess-R-object-popup.override {
|
||||
inherit (self.melpaPackages) ess popup;
|
||||
};
|
||||
|
||||
# upstream issue: missing dependency highlight
|
||||
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;
|
||||
|
||||
# upstream issue: missing file header
|
||||
initsplit = markBroken super.initsplit;
|
||||
initsplit = super.initsplit;
|
||||
|
||||
# Expects bash to be at /bin/bash
|
||||
ivy-rtags = markBroken super.ivy-rtags;
|
||||
@ -128,9 +124,6 @@ self:
|
||||
# upstream issue: missing file header
|
||||
link = markBroken super.link;
|
||||
|
||||
# upstream issue: mismatched filename
|
||||
link-hint = markBroken super.link-hint;
|
||||
|
||||
# upstream issue: missing file header
|
||||
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;
|
||||
};
|
||||
|
||||
ess-R-object-popup = super.ess-R-object-popup.override {
|
||||
inherit (self.melpaPackages) ess popup;
|
||||
};
|
||||
|
||||
# upstream issue: doesn't build
|
||||
eterm-256color = markBroken super.eterm-256color;
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
{ callPackage }: {
|
||||
org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||
pname = "org";
|
||||
version = "20180226";
|
||||
version = "20180402";
|
||||
src = fetchurl {
|
||||
url = "https://orgmode.org/elpa/org-20180226.tar";
|
||||
sha256 = "0jqvry6gah1bwnryha4asynj13jyds3qim0xcy7s01rxk99m2ziy";
|
||||
url = "https://orgmode.org/elpa/org-20180402.tar";
|
||||
sha256 = "0gb8hh26jzjqy262ll8jl3ym0cpw6s17id2gizv5qvw18knxs751";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
@ -14,10 +14,10 @@
|
||||
}) {};
|
||||
org-plus-contrib = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||
pname = "org-plus-contrib";
|
||||
version = "20180226";
|
||||
version = "20180402";
|
||||
src = fetchurl {
|
||||
url = "https://orgmode.org/elpa/org-plus-contrib-20180226.tar";
|
||||
sha256 = "034wp70hcqnpidji5k1k80mj35iyyy098nbvc2sl7i2aca4m03zc";
|
||||
url = "https://orgmode.org/elpa/org-plus-contrib-20180402.tar";
|
||||
sha256 = "09q5nr0ka7z719mi626wj5d51bcvdb08gk4zf94dzpks0gsqiikr";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "focuswriter-${version}";
|
||||
version = "1.6.10";
|
||||
version = "1.6.11";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://gottcode.org/focuswriter/focuswriter-${version}-src.tar.bz2";
|
||||
sha256 = "0hrbycy5lapdkaa2xm90j45sgsiqdnlk9wry41kxxpdln9msabxs";
|
||||
sha256 = "0izbsm2vx24pnd92gf7ky8x47g324a8d16hy1s8kk3x1inxd80z1";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig qmake qttools ];
|
||||
@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
|
||||
description = "Simple, distraction-free writing environment";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ madjar ];
|
||||
platforms = platforms.all;
|
||||
platforms = platforms.linux;
|
||||
homepage = https://gottcode.org/focuswriter/;
|
||||
};
|
||||
}
|
||||
|
@ -1,33 +1,39 @@
|
||||
{buildVersion, x32sha256, x64sha256}:
|
||||
|
||||
{ fetchurl, stdenv, glib, xorg, cairo, gtk2, pango, makeWrapper, openssl, bzip2,
|
||||
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 gksuSupport -> gksu != null;
|
||||
|
||||
let
|
||||
build = "3143";
|
||||
|
||||
libPath = stdenv.lib.makeLibraryPath [glib xorg.libX11 gtk2 cairo pango];
|
||||
redirects = [ "/usr/bin/pkexec=${pkexecPath}" ]
|
||||
++ stdenv.lib.optional gksuSupport "/usr/bin/gksudo=${gksu}/bin/gksudo";
|
||||
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
|
||||
sublime = stdenv.mkDerivation {
|
||||
name = "sublimetext3-${build}-bin";
|
||||
|
||||
name = "sublimetext3-${buildVersion}-bin";
|
||||
src =
|
||||
if stdenv.system == "i686-linux" then
|
||||
fetchurl {
|
||||
name = "sublimetext-${build}.tar.bz2";
|
||||
url = "https://download.sublimetext.com/sublime_text_3_build_${build}_x32.tar.bz2";
|
||||
sha256 = "0dgpx4wij2m77f478p746qadavab172166bghxmj7fb61nvw9v5i";
|
||||
}
|
||||
else
|
||||
fetchurl {
|
||||
name = "sublimetext-${build}.tar.bz2";
|
||||
url = "https://download.sublimetext.com/sublime_text_3_build_${build}_x64.tar.bz2";
|
||||
sha256 = "06b554d2cvpxc976rvh89ix3kqc7klnngvk070xrs8wbyb221qcw";
|
||||
};
|
||||
fetchurl {
|
||||
name = "sublimetext-${buildVersion}.tar.bz2";
|
||||
url = "https://download.sublimetext.com/sublime_text_3_build_${buildVersion}_${arch}.tar.bz2";
|
||||
sha256 = archSha256;
|
||||
};
|
||||
|
||||
dontStrip = 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
|
||||
'';
|
||||
};
|
||||
in stdenv.mkDerivation {
|
||||
name = "sublimetext3-${build}";
|
||||
in stdenv.mkDerivation (rec {
|
||||
name = "sublimetext3-${buildVersion}";
|
||||
|
||||
phases = [ "installPhase" ];
|
||||
|
||||
@ -110,4 +116,4 @@ in stdenv.mkDerivation {
|
||||
license = licenses.unfree;
|
||||
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 {
|
||||
name = "tiled-${version}";
|
||||
version = "1.1.3";
|
||||
version = "1.1.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bjorn";
|
||||
repo = "tiled";
|
||||
rev = "v${version}";
|
||||
sha256 = "0rf50w7nkdm70999q1mj7sy5hyjj41qjf4izi849q9a7xnhddv44";
|
||||
sha256 = "0ln8lis9g23wp3w70xwbkzqmmbkd02cdx6z7msw9lrpkjzkj7mlr";
|
||||
};
|
||||
|
||||
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