Skip to content

Commit

Permalink
Revert "Merge master into staging-next"
Browse files Browse the repository at this point in the history
I merged master into staging-next but accidentally pushed it to master.
This should get us back to 87a19e9.

This reverts commit ac241fb, reversing
changes made to 76a4392.
  • Loading branch information
FRidh committed Feb 5, 2020
1 parent ac241fb commit 0be87c7
Show file tree
Hide file tree
Showing 28 changed files with 415 additions and 290 deletions.
2 changes: 1 addition & 1 deletion lib/strings.nix
Expand Up @@ -244,7 +244,7 @@ rec {
Also note that Nix treats strings as a list of bytes and thus doesn't
handle unicode.
Type: stringToCharacters :: string -> [string]
Type: stringtoCharacters :: string -> [string]
Example:
stringToCharacters ""
Expand Down
14 changes: 5 additions & 9 deletions nixos/modules/installer/cd-dvd/iso-image.nix
Expand Up @@ -569,18 +569,14 @@ in
};

fileSystems."/nix/store" =
{ fsType = "overlay";
device = "overlay";
options = [
"lowerdir=/nix/.ro-store"
"upperdir=/nix/.rw-store/store"
"workdir=/nix/.rw-store/work"
];
{ fsType = "unionfs-fuse";
device = "unionfs";
options = [ "allow_other" "cow" "nonempty" "chroot=/mnt-root" "max_files=32768" "hide_meta_files" "dirs=/nix/.rw-store=rw:/nix/.ro-store=ro" ];
};

boot.initrd.availableKernelModules = [ "squashfs" "iso9660" "uas" "overlay" ];
boot.initrd.availableKernelModules = [ "squashfs" "iso9660" "uas" ];

boot.initrd.kernelModules = [ "loop" "overlay" ];
boot.initrd.kernelModules = [ "loop" ];

# Closures to be copied to the Nix store on the CD, namely the init
# script and the top-level system configuration directory.
Expand Down
14 changes: 5 additions & 9 deletions nixos/modules/installer/netboot/netboot.nix
Expand Up @@ -50,18 +50,14 @@ with lib;
};

fileSystems."/nix/store" =
{ fsType = "overlay";
device = "overlay";
options = [
"lowerdir=/nix/.ro-store"
"upperdir=/nix/.rw-store/store"
"workdir=/nix/.rw-store/work"
];
{ fsType = "unionfs-fuse";
device = "unionfs";
options = [ "allow_other" "cow" "nonempty" "chroot=/mnt-root" "max_files=32768" "hide_meta_files" "dirs=/nix/.rw-store=rw:/nix/.ro-store=ro" ];
};

boot.initrd.availableKernelModules = [ "squashfs" "overlay" ];
boot.initrd.availableKernelModules = [ "squashfs" ];

boot.initrd.kernelModules = [ "loop" "overlay" ];
boot.initrd.kernelModules = [ "loop" ];

# Closures to be copied to the Nix store, namely the init
# script and the top-level system configuration directory.
Expand Down
4 changes: 2 additions & 2 deletions nixos/modules/misc/ids.nix
Expand Up @@ -299,7 +299,7 @@ in
couchpotato = 267;
gogs = 268;
pdns-recursor = 269;
#kresd = 270; # switched to "knot-resolver" with dynamic ID
kresd = 270;
rpc = 271;
geoip = 272;
fcron = 273;
Expand Down Expand Up @@ -600,7 +600,7 @@ in
headphones = 266;
couchpotato = 267;
gogs = 268;
#kresd = 270; # switched to "knot-resolver" with dynamic ID
kresd = 270;
#rpc = 271; # unused
#geoip = 272; # unused
fcron = 273;
Expand Down
146 changes: 83 additions & 63 deletions nixos/modules/services/networking/kresd.nix
Expand Up @@ -3,34 +3,12 @@
with lib;

let
cfg = config.services.kresd;

# Convert systemd-style address specification to kresd config line(s).
# On Nix level we don't attempt to precisely validate the address specifications.
mkListen = kind: addr: let
al_v4 = builtins.match "([0-9.]\+):([0-9]\+)" addr;
al_v6 = builtins.match "\\[(.\+)]:([0-9]\+)" addr;
al_portOnly = builtins.match "()([0-9]\+)" addr;
al = findFirst (a: a != null)
(throw "services.kresd.*: incorrect address specification '${addr}'")
[ al_v4 al_v6 al_portOnly ];
port = last al;
addrSpec = if al_portOnly == null then "'${head al}'" else "{'::', '127.0.0.1'}";
in # freebind is set for compatibility with earlier kresd services;
# it could be configurable, for example.
''
net.listen(${addrSpec}, ${port}, { kind = '${kind}', freebind = true })
'';

configFile = pkgs.writeText "kresd.conf" (
optionalString (cfg.listenDoH != []) ''
modules.load('http')
''
+ concatMapStrings (mkListen "dns") cfg.listenPlain
+ concatMapStrings (mkListen "tls") cfg.listenTLS
+ concatMapStrings (mkListen "doh") cfg.listenDoH
+ cfg.extraConfig
);
cfg = config.services.kresd;
configFile = pkgs.writeText "kresd.conf" ''
${optionalString (cfg.listenDoH != []) "modules.load('http')"}
${cfg.extraConfig};
'';

package = pkgs.knot-resolver.override {
extraFeatures = cfg.listenDoH != [];
Expand All @@ -47,7 +25,6 @@ in {
value
)
)
(mkRemovedOptionModule [ "services" "kresd" "cacheDir" ] "Please use (bind-)mounting instead.")
];

###### interface
Expand All @@ -58,8 +35,8 @@ in {
description = ''
Whether to enable knot-resolver domain name server.
DNSSEC validation is turned on by default.
You can run <literal>sudo nc -U /run/knot-resolver/control/1</literal>
and give commands interactively to kresd@1.service.
You can run <literal>sudo nc -U /run/kresd/control</literal>
and give commands interactively to kresd.
'';
};
extraConfig = mkOption {
Expand All @@ -69,10 +46,16 @@ in {
Extra lines to be added verbatim to the generated configuration file.
'';
};
cacheDir = mkOption {
type = types.path;
default = "/var/cache/kresd";
description = ''
Directory for caches. They are intended to survive reboots.
'';
};
listenPlain = mkOption {
type = with types; listOf str;
default = [ "[::1]:53" "127.0.0.1:53" ];
example = [ "53" ];
description = ''
What addresses and ports the server should listen on.
For detailed syntax see ListenStream in man systemd.socket.
Expand All @@ -92,54 +75,91 @@ in {
default = [];
example = [ "198.51.100.1:443" "[2001:db8::1]:443" "443" ];
description = ''
Addresses and ports on which kresd should provide DNS over HTTPS (see RFC 8484).
Addresses and ports on which kresd should provide DNS over HTTPS (see RFC 7858).
For detailed syntax see ListenStream in man systemd.socket.
'';
};
instances = mkOption {
type = types.ints.unsigned;
default = 1;
description = ''
The number of instances to start. They will be called kresd@{1,2,...}.service.
Knot Resolver uses no threads, so this is the way to scale.
You can dynamically start/stop them at will, so this is just system default.
'';
};
# TODO: perhaps options for more common stuff like cache size or forwarding
};

###### implementation
config = mkIf cfg.enable {
environment.etc."knot-resolver/kresd.conf".source = configFile; # not required
environment.etc."kresd.conf".source = configFile; # not required

users.users.knot-resolver =
{ isSystemUser = true;
group = "knot-resolver";
users.users.kresd =
{ uid = config.ids.uids.kresd;
group = "kresd";
description = "Knot-resolver daemon user";
};
users.groups.knot-resolver.gid = null;
users.groups.kresd.gid = config.ids.gids.kresd;

systemd.sockets.kresd = rec {
wantedBy = [ "sockets.target" ];
before = wantedBy;
listenStreams = cfg.listenPlain;
socketConfig = {
ListenDatagram = listenStreams;
FreeBind = true;
FileDescriptorName = "dns";
};
};

systemd.packages = [ package ]; # the units are patched inside the package a bit
systemd.sockets.kresd-tls = mkIf (cfg.listenTLS != []) rec {
wantedBy = [ "sockets.target" ];
before = wantedBy;
partOf = [ "kresd.socket" ];
listenStreams = cfg.listenTLS;
socketConfig = {
FileDescriptorName = "tls";
FreeBind = true;
Service = "kresd.service";
};
};

systemd.targets.kresd = { # configure units started by default
wantedBy = [ "multi-user.target" ];
wants = [ "kres-cache-gc.service" ]
++ map (i: "kresd@${toString i}.service") (range 1 cfg.instances);
systemd.sockets.kresd-doh = mkIf (cfg.listenDoH != []) rec {
wantedBy = [ "sockets.target" ];
before = wantedBy;
partOf = [ "kresd.socket" ];
listenStreams = cfg.listenDoH;
socketConfig = {
FileDescriptorName = "doh";
FreeBind = true;
Service = "kresd.service";
};
};
systemd.services."kresd@".serviceConfig = {
ExecStart = "${package}/bin/kresd --noninteractive "
+ "-c ${package}/lib/knot-resolver/distro-preconfig.lua -c ${configFile}";
# Ensure correct ownership in case UID or GID changes.
CacheDirectory = "knot-resolver";
CacheDirectoryMode = "0750";

systemd.sockets.kresd-control = rec {
wantedBy = [ "sockets.target" ];
before = wantedBy;
partOf = [ "kresd.socket" ];
listenStreams = [ "/run/kresd/control" ];
socketConfig = {
FileDescriptorName = "control";
Service = "kresd.service";
SocketMode = "0660"; # only root user/group may connect and control kresd
};
};

environment.etc."tmpfiles.d/knot-resolver.conf".source =
"${package}/lib/tmpfiles.d/knot-resolver.conf";
systemd.tmpfiles.rules = [ "d '${cfg.cacheDir}' 0770 kresd kresd - -" ];

# Try cleaning up the previously default location of cache file.
# Note that /var/cache/* should always be safe to remove.
# TODO: remove later, probably between 20.09 and 21.03
systemd.tmpfiles.rules = [ "R /var/cache/kresd" ];
systemd.services.kresd = {
description = "Knot-resolver daemon";

serviceConfig = {
User = "kresd";
Type = "notify";
WorkingDirectory = cfg.cacheDir;
Restart = "on-failure";
Sockets = [ "kresd.socket" "kresd-control.socket" ]
++ optional (cfg.listenTLS != []) "kresd-tls.socket";
};

# Trust anchor goes from dns-root-data by default.
script = ''
exec '${package}/bin/kresd' --config '${configFile}' --forks=1
'';

requires = [ "kresd.socket" ];
};
};
}
13 changes: 5 additions & 8 deletions nixos/modules/system/boot/stage-1-init.sh
Expand Up @@ -334,10 +334,8 @@ mountFS() {

# Filter out x- options, which busybox doesn't do yet.
local optionsFiltered="$(IFS=,; for i in $options; do if [ "${i:0:2}" != "x-" ]; then echo -n $i,; fi; done)"
# Prefix (lower|upper|work)dir with /mnt-root (overlayfs)
local optionsPrefixed="$( echo "$optionsFiltered" | sed -E 's#\<(lowerdir|upperdir|workdir)=#\1=/mnt-root#g' )"
echo "$device /mnt-root$mountPoint $fsType $optionsPrefixed" >> /etc/fstab
echo "$device /mnt-root$mountPoint $fsType $optionsFiltered" >> /etc/fstab
checkFS "$device" "$fsType"
Expand All @@ -356,11 +354,10 @@ mountFS() {
;;
esac
# Create backing directories for overlayfs
if [ "$fsType" = overlay ]; then
for i in upper work; do
dir="$( echo "$optionsPrefixed" | grep -o "${i}dir=[^,]*" )"
mkdir -m 0700 -p "${dir##*=}"
# Create backing directories for unionfs-fuse.
if [ "$fsType" = unionfs-fuse ]; then
for i in $(IFS=:; echo ${options##*,dirs=}); do
mkdir -m 0700 -p /mnt-root"${i%=*}"
done
fi
Expand Down
6 changes: 3 additions & 3 deletions nixos/tests/lorri/default.nix
Expand Up @@ -15,12 +15,12 @@ import ../make-test-python.nix {
# Start the daemon and wait until it is ready
machine.execute("lorri daemon > lorri.stdout 2> lorri.stderr &")
machine.wait_until_succeeds("grep --fixed-strings 'ready' lorri.stdout")
machine.wait_until_succeeds("grep --fixed-strings 'lorri: ready' lorri.stdout")
# Ping the daemon
machine.succeed("lorri internal__ping shell.nix")
machine.execute("lorri ping_ $(readlink -f shell.nix)")
# Wait for the daemon to finish the build
machine.wait_until_succeeds("grep --fixed-strings 'Completed' lorri.stdout")
machine.wait_until_succeeds("grep --fixed-strings 'OutputPaths' lorri.stdout")
'';
}
24 changes: 14 additions & 10 deletions pkgs/applications/graphics/paraview/default.nix
@@ -1,5 +1,9 @@
{ stdenv, fetchFromGitHub, cmake, makeWrapper, qtbase , qttools, python
, libGLU, libGL , libXt, qtx11extras, qtxmlpatterns , mkDerivation }:
{
stdenv, fetchFromGitHub, cmake, makeWrapper
,qtbase, qttools, python, libGLU, libGL
,libXt, qtx11extras, qtxmlpatterns
, mkDerivation
}:

mkDerivation rec {
pname = "paraview";
Expand Down Expand Up @@ -49,20 +53,20 @@ mkDerivation rec {

# Paraview links into the Python library, resolving symbolic links on the way,
# so we need to put the correct sitePackages (with numpy) back on the path
preFixup = ''
wrapQtApp $out/bin/paraview \
postInstall = ''
wrapProgram $out/bin/paraview \
--prefix PYTHONPATH "${python.pkgs.numpy}/${python.sitePackages}"
wrapQtApp $out/bin/pvbatch \
wrapProgram $out/bin/pvbatch \
--prefix PYTHONPATH "${python.pkgs.numpy}/${python.sitePackages}"
wrapQtApp $out/bin/pvpython \
wrapProgram $out/bin/pvpython \
--prefix PYTHONPATH "${python.pkgs.numpy}/${python.sitePackages}"
'';

meta = with stdenv.lib; {
meta = {
homepage = http://www.paraview.org/;
description = "3D Data analysis and visualization application";
license = licenses.free;
maintainers = with maintainers; [ guibert ];
platforms = platforms.linux;
license = stdenv.lib.licenses.free;
maintainers = with stdenv.lib.maintainers; [guibert];
platforms = with stdenv.lib.platforms; linux;
};
}
4 changes: 2 additions & 2 deletions pkgs/applications/science/biology/spades/default.nix
Expand Up @@ -2,11 +2,11 @@

stdenv.mkDerivation rec {
pname = "SPAdes";
version = "3.14.0";
version = "3.13.1";

src = fetchurl {
url = "http://cab.spbu.ru/files/release${version}/${pname}-${version}.tar.gz";
sha256 = "1ffxswd2ngkpy1d6l3lb6a9cmyy1fglbdsws00b3m1k22zaqv60q";
sha256 = "0giayz197lmq2108filkn9izma3i803sb3iskv9hs5snzdr9p8ld";
};

nativeBuildInputs = [ cmake ];
Expand Down

0 comments on commit 0be87c7

Please sign in to comment.