mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-07-13 13:40:28 +03:00
Merge branch 'master' into staging-next
Hydra nixpkgs: ?compare=1548439
This commit is contained in:
commit
b5697c6954
129 changed files with 2555 additions and 1217 deletions
|
@ -51,8 +51,7 @@ let
|
|||
# that we can disable the autospawn feature in programs that
|
||||
# are built with PulseAudio support (like KDE).
|
||||
clientConf = writeText "client.conf" ''
|
||||
autospawn=${if nonSystemWide then "yes" else "no"}
|
||||
${optionalString nonSystemWide "daemon-binary=${binary}"}
|
||||
autospawn=no
|
||||
${cfg.extraClientConf}
|
||||
'';
|
||||
|
||||
|
|
|
@ -21,5 +21,12 @@ in
|
|||
services.udev.packages = [
|
||||
pkgs.steamPackages.steam
|
||||
];
|
||||
|
||||
# The uinput module needs to be loaded in order to trigger the udev rules
|
||||
# defined in the steam package for setting permissions on /dev/uinput.
|
||||
#
|
||||
# If the udev rules are not triggered, some controllers won't work with
|
||||
# steam.
|
||||
boot.kernelModules = [ "uinput" ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -806,6 +806,7 @@
|
|||
./services/web-apps/restya-board.nix
|
||||
./services/web-apps/tt-rss.nix
|
||||
./services/web-apps/selfoss.nix
|
||||
./services/web-apps/shiori.nix
|
||||
./services/web-apps/virtlyst.nix
|
||||
./services/web-apps/wordpress.nix
|
||||
./services/web-apps/youtrack.nix
|
||||
|
|
|
@ -52,6 +52,27 @@ with lib;
|
|||
"ax25"
|
||||
"netrom"
|
||||
"rose"
|
||||
|
||||
# Old or rare or insufficiently audited filesystems
|
||||
"adfs"
|
||||
"affs"
|
||||
"bfs"
|
||||
"befs"
|
||||
"cramfs"
|
||||
"efs"
|
||||
"erofs"
|
||||
"exofs"
|
||||
"freevxfs"
|
||||
"f2fs"
|
||||
"hfs"
|
||||
"hpfs"
|
||||
"jfs"
|
||||
"minix"
|
||||
"nilfs2"
|
||||
"qnx4"
|
||||
"qnx6"
|
||||
"sysv"
|
||||
"ufs"
|
||||
];
|
||||
|
||||
# Restrict ptrace() usage to processes with a pre-defined relationship
|
||||
|
|
|
@ -45,6 +45,7 @@ let
|
|||
daemonService = appName: args:
|
||||
{ description = "Samba Service Daemon ${appName}";
|
||||
|
||||
after = [ "network.target" ];
|
||||
requiredBy = [ "samba.target" ];
|
||||
partOf = [ "samba.target" ];
|
||||
|
||||
|
|
50
nixos/modules/services/web-apps/shiori.nix
Normal file
50
nixos/modules/services/web-apps/shiori.nix
Normal file
|
@ -0,0 +1,50 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.services.shiori;
|
||||
in {
|
||||
options = {
|
||||
services.shiori = {
|
||||
enable = mkEnableOption "Shiori simple bookmarks manager";
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.shiori;
|
||||
defaultText = "pkgs.shiori";
|
||||
description = "The Shiori package to use.";
|
||||
};
|
||||
|
||||
address = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
description = ''
|
||||
The IP address on which Shiori will listen.
|
||||
If empty, listens on all interfaces.
|
||||
'';
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 8080;
|
||||
description = "The port of the Shiori web application";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
systemd.services.shiori = with cfg; {
|
||||
description = "Shiori simple bookmarks manager";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = "${package}/bin/shiori serve --address '${address}' --port '${toString port}'";
|
||||
DynamicUser = true;
|
||||
Environment = "SHIORI_DIR=/var/lib/shiori";
|
||||
StateDirectory = "shiori";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
meta.maintainers = with maintainers; [ minijackson ];
|
||||
}
|
|
@ -220,10 +220,11 @@ in
|
|||
exec ${lightdm}/sbin/lightdm
|
||||
'';
|
||||
|
||||
# Replaces getty and plymouth quit since it quits plymouth on it's own.
|
||||
# Replaces getty
|
||||
systemd.services.display-manager.conflicts = [
|
||||
"getty@tty7.service"
|
||||
"plymouth-quit.service"
|
||||
# TODO: Add "plymouth-quit.service" so LightDM can control when plymouth
|
||||
# quits. Currently this breaks switching to configurations with plymouth.
|
||||
];
|
||||
|
||||
# Pull in dependencies of services we replace.
|
||||
|
|
|
@ -113,11 +113,21 @@ in {
|
|||
config =
|
||||
let
|
||||
units = mapAttrs' (n: v: let nspawnFile = "${n}.nspawn"; in nameValuePair nspawnFile (instanceToUnit nspawnFile v)) cfg;
|
||||
in mkIf (cfg != {}) {
|
||||
|
||||
environment.etc."systemd/nspawn".source = generateUnits "nspawn" units [] [];
|
||||
|
||||
systemd.targets.multi-user.wants = [ "machines.target" ];
|
||||
};
|
||||
in
|
||||
mkMerge [
|
||||
(mkIf (cfg != {}) {
|
||||
environment.etc."systemd/nspawn".source = mkIf (cfg != {}) (generateUnits "nspawn" units [] []);
|
||||
})
|
||||
{
|
||||
systemd.targets.multi-user.wants = [ "machines.target" ];
|
||||
|
||||
# Workaround for https://github.com/NixOS/nixpkgs/pull/67232#issuecomment-531315437 and https://github.com/systemd/systemd/issues/13622
|
||||
# Once systemd fixes this upstream, we can re-enable -U
|
||||
systemd.services."systemd-nspawn@".serviceConfig.ExecStart = [
|
||||
"" # deliberately empty. signals systemd to override the ExecStart
|
||||
# Only difference between upstream is that we do not pass the -U flag
|
||||
"${pkgs.systemd}/bin/systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest --network-veth --settings=override --machine=%i"
|
||||
];
|
||||
}
|
||||
];
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@ in
|
|||
atd = handleTest ./atd.nix {};
|
||||
automysqlbackup = handleTest ./automysqlbackup.nix {};
|
||||
avahi = handleTest ./avahi.nix {};
|
||||
babeld = handleTest ./babeld.nix {};
|
||||
bcachefs = handleTestOn ["x86_64-linux"] ./bcachefs.nix {}; # linux-4.18.2018.10.12 is unsupported on aarch64
|
||||
beanstalkd = handleTest ./beanstalkd.nix {};
|
||||
beegfs = handleTestOn ["x86_64-linux"] ./beegfs.nix {}; # beegfs is unsupported on aarch64
|
||||
|
|
148
nixos/tests/babeld.nix
Normal file
148
nixos/tests/babeld.nix
Normal file
|
@ -0,0 +1,148 @@
|
|||
|
||||
import ./make-test.nix ({ pkgs, lib, ...} : {
|
||||
name = "babeld";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ hexa ];
|
||||
};
|
||||
|
||||
nodes =
|
||||
{ client = { pkgs, lib, ... }:
|
||||
{
|
||||
virtualisation.vlans = [ 10 ];
|
||||
|
||||
networking = {
|
||||
useDHCP = false;
|
||||
interfaces."eth1" = {
|
||||
ipv4.addresses = lib.mkForce [ { address = "192.168.10.2"; prefixLength = 24; } ];
|
||||
ipv4.routes = lib.mkForce [ { address = "0.0.0.0"; prefixLength = 0; via = "192.168.10.1"; } ];
|
||||
ipv6.addresses = lib.mkForce [ { address = "2001:db8:10::2"; prefixLength = 64; } ];
|
||||
ipv6.routes = lib.mkForce [ { address = "::"; prefixLength = 0; via = "2001:db8:10::1"; } ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
localRouter = { pkgs, lib, ... }:
|
||||
{
|
||||
virtualisation.vlans = [ 10 20 ];
|
||||
|
||||
boot.kernel.sysctl."net.ipv4.conf.all.forwarding" = 1;
|
||||
boot.kernel.sysctl."net.ipv6.conf.all.forwarding" = 1;
|
||||
|
||||
networking = {
|
||||
useDHCP = false;
|
||||
firewall.enable = false;
|
||||
|
||||
interfaces."eth1" = {
|
||||
ipv4.addresses = lib.mkForce [ { address = "192.168.10.1"; prefixLength = 24; } ];
|
||||
ipv6.addresses = lib.mkForce [ { address = "2001:db8:10::1"; prefixLength = 64; } ];
|
||||
};
|
||||
|
||||
interfaces."eth2" = {
|
||||
ipv4.addresses = lib.mkForce [ { address = "192.168.20.1"; prefixLength = 24; } ];
|
||||
ipv6.addresses = lib.mkForce [ { address = "2001:db8:20::1"; prefixLength = 64; } ];
|
||||
};
|
||||
};
|
||||
|
||||
services.babeld = {
|
||||
enable = true;
|
||||
interfaces.eth2 = {
|
||||
hello-interval = 1;
|
||||
type = "wired";
|
||||
};
|
||||
extraConfig = ''
|
||||
local-port-readwrite 33123
|
||||
|
||||
import-table 254 # main
|
||||
export-table 254 # main
|
||||
|
||||
in ip 192.168.10.0/24 deny
|
||||
in ip 192.168.20.0/24 deny
|
||||
in ip 2001:db8:10::/64 deny
|
||||
in ip 2001:db8:20::/64 deny
|
||||
|
||||
in ip 192.168.30.0/24 allow
|
||||
in ip 2001:db8:30::/64 allow
|
||||
|
||||
in deny
|
||||
|
||||
redistribute local proto 2
|
||||
redistribute local deny
|
||||
'';
|
||||
};
|
||||
};
|
||||
remoteRouter = { pkgs, lib, ... }:
|
||||
{
|
||||
virtualisation.vlans = [ 20 30 ];
|
||||
|
||||
boot.kernel.sysctl."net.ipv4.conf.all.forwarding" = 1;
|
||||
boot.kernel.sysctl."net.ipv6.conf.all.forwarding" = 1;
|
||||
|
||||
networking = {
|
||||
useDHCP = false;
|
||||
firewall.enable = false;
|
||||
|
||||
interfaces."eth1" = {
|
||||
ipv4.addresses = lib.mkForce [ { address = "192.168.20.2"; prefixLength = 24; } ];
|
||||
ipv6.addresses = lib.mkForce [ { address = "2001:db8:20::2"; prefixLength = 64; } ];
|
||||
};
|
||||
|
||||
interfaces."eth2" = {
|
||||
ipv4.addresses = lib.mkForce [ { address = "192.168.30.1"; prefixLength = 24; } ];
|
||||
ipv6.addresses = lib.mkForce [ { address = "2001:db8:30::1"; prefixLength = 64; } ];
|
||||
};
|
||||
};
|
||||
|
||||
services.babeld = {
|
||||
enable = true;
|
||||
interfaces.eth1 = {
|
||||
hello-interval = 1;
|
||||
type = "wired";
|
||||
};
|
||||
extraConfig = ''
|
||||
local-port-readwrite 33123
|
||||
|
||||
import-table 254 # main
|
||||
export-table 254 # main
|
||||
|
||||
in ip 192.168.20.0/24 deny
|
||||
in ip 192.168.30.0/24 deny
|
||||
in ip 2001:db8:20::/64 deny
|
||||
in ip 2001:db8:30::/64 deny
|
||||
|
||||
in ip 192.168.10.0/24 allow
|
||||
in ip 2001:db8:10::/64 allow
|
||||
|
||||
in deny
|
||||
|
||||
redistribute local proto 2
|
||||
redistribute local deny
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
testScript =
|
||||
''
|
||||
startAll;
|
||||
|
||||
$client->waitForUnit("network-online.target");
|
||||
$localRouter->waitForUnit("network-online.target");
|
||||
$remoteRouter->waitForUnit("network-online.target");
|
||||
|
||||
$localRouter->waitForUnit("babeld.service");
|
||||
$remoteRouter->waitForUnit("babeld.service");
|
||||
|
||||
$localRouter->waitUntilSucceeds("ip route get 192.168.30.1");
|
||||
$localRouter->waitUntilSucceeds("ip route get 2001:db8:30::1");
|
||||
|
||||
$remoteRouter->waitUntilSucceeds("ip route get 192.168.10.1");
|
||||
$remoteRouter->waitUntilSucceeds("ip route get 2001:db8:10::1");
|
||||
|
||||
$client->succeed("ping -c1 192.168.30.1");
|
||||
$client->succeed("ping -c1 2001:db8:30::1");
|
||||
|
||||
$remoteRouter->succeed("ping -c1 192.168.10.2");
|
||||
$remoteRouter->succeed("ping -c1 2001:db8:10::2");
|
||||
'';
|
||||
})
|
17
nixos/tests/shiori.nix
Normal file
17
nixos/tests/shiori.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
import ./make-test.nix ({ lib, ...}:
|
||||
|
||||
{
|
||||
name = "shiori";
|
||||
meta.maintainers = with lib.maintainers; [ minijackson ];
|
||||
|
||||
machine =
|
||||
{ ... }:
|
||||
{ services.shiori.enable = true; };
|
||||
|
||||
testScript = ''
|
||||
$machine->waitForUnit('shiori.service');
|
||||
$machine->waitForOpenPort('8080');
|
||||
$machine->succeed("curl --fail http://localhost:8080/");
|
||||
$machine->succeed("curl --fail --location http://localhost:8080/ | grep -qi shiori");
|
||||
'';
|
||||
})
|
Loading…
Add table
Add a link
Reference in a new issue