Merge master into staging-next
This commit is contained in:
commit
b95da5efb6
|
@ -10,7 +10,6 @@ with lib;
|
||||||
|
|
||||||
system.build.cloudstackImage = import ../../../lib/make-disk-image.nix {
|
system.build.cloudstackImage = import ../../../lib/make-disk-image.nix {
|
||||||
inherit lib config pkgs;
|
inherit lib config pkgs;
|
||||||
diskSize = 8192;
|
|
||||||
format = "qcow2";
|
format = "qcow2";
|
||||||
configFile = pkgs.writeText "configuration.nix"
|
configFile = pkgs.writeText "configuration.nix"
|
||||||
''
|
''
|
||||||
|
|
|
@ -40,8 +40,9 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
sizeMB = mkOption {
|
sizeMB = mkOption {
|
||||||
type = types.int;
|
type = with types; either (enum [ "auto" ]) int;
|
||||||
default = if config.ec2.hvm then 2048 else 8192;
|
default = "auto";
|
||||||
|
example = 8192;
|
||||||
description = "The size in MB of the image";
|
description = "The size in MB of the image";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -12,8 +12,8 @@ with lib;
|
||||||
|
|
||||||
system.build.openstackImage = import ../../../lib/make-disk-image.nix {
|
system.build.openstackImage = import ../../../lib/make-disk-image.nix {
|
||||||
inherit lib config;
|
inherit lib config;
|
||||||
|
additionalSpace = "1024M";
|
||||||
pkgs = import ../../../.. { inherit (pkgs) system; }; # ensure we use the regular qemu-kvm package
|
pkgs = import ../../../.. { inherit (pkgs) system; }; # ensure we use the regular qemu-kvm package
|
||||||
diskSize = 8192;
|
|
||||||
format = "qcow2";
|
format = "qcow2";
|
||||||
configFile = pkgs.writeText "configuration.nix"
|
configFile = pkgs.writeText "configuration.nix"
|
||||||
''
|
''
|
||||||
|
|
|
@ -6,6 +6,12 @@ let
|
||||||
ids = config.ids;
|
ids = config.ids;
|
||||||
cfg = config.users;
|
cfg = config.users;
|
||||||
|
|
||||||
|
isPasswdCompatible = str: !(hasInfix ":" str || hasInfix "\n" str);
|
||||||
|
passwdEntry = type: lib.types.addCheck type isPasswdCompatible // {
|
||||||
|
name = "passwdEntry ${type.name}";
|
||||||
|
description = "${type.description}, not containing newlines or colons";
|
||||||
|
};
|
||||||
|
|
||||||
# Check whether a password hash will allow login.
|
# Check whether a password hash will allow login.
|
||||||
allowsLogin = hash:
|
allowsLogin = hash:
|
||||||
hash == "" # login without password
|
hash == "" # login without password
|
||||||
|
@ -54,7 +60,7 @@ let
|
||||||
options = {
|
options = {
|
||||||
|
|
||||||
name = mkOption {
|
name = mkOption {
|
||||||
type = types.str;
|
type = passwdEntry types.str;
|
||||||
apply = x: assert (builtins.stringLength x < 32 || abort "Username '${x}' is longer than 31 characters which is not allowed!"); x;
|
apply = x: assert (builtins.stringLength x < 32 || abort "Username '${x}' is longer than 31 characters which is not allowed!"); x;
|
||||||
description = ''
|
description = ''
|
||||||
The name of the user account. If undefined, the name of the
|
The name of the user account. If undefined, the name of the
|
||||||
|
@ -63,7 +69,7 @@ let
|
||||||
};
|
};
|
||||||
|
|
||||||
description = mkOption {
|
description = mkOption {
|
||||||
type = types.str;
|
type = passwdEntry types.str;
|
||||||
default = "";
|
default = "";
|
||||||
example = "Alice Q. User";
|
example = "Alice Q. User";
|
||||||
description = ''
|
description = ''
|
||||||
|
@ -128,7 +134,7 @@ let
|
||||||
};
|
};
|
||||||
|
|
||||||
home = mkOption {
|
home = mkOption {
|
||||||
type = types.path;
|
type = passwdEntry types.path;
|
||||||
default = "/var/empty";
|
default = "/var/empty";
|
||||||
description = "The user's home directory.";
|
description = "The user's home directory.";
|
||||||
};
|
};
|
||||||
|
@ -157,7 +163,7 @@ let
|
||||||
};
|
};
|
||||||
|
|
||||||
shell = mkOption {
|
shell = mkOption {
|
||||||
type = types.nullOr (types.either types.shellPackage types.path);
|
type = types.nullOr (types.either types.shellPackage (passwdEntry types.path));
|
||||||
default = pkgs.shadow;
|
default = pkgs.shadow;
|
||||||
defaultText = "pkgs.shadow";
|
defaultText = "pkgs.shadow";
|
||||||
example = literalExample "pkgs.bashInteractive";
|
example = literalExample "pkgs.bashInteractive";
|
||||||
|
@ -217,7 +223,7 @@ let
|
||||||
};
|
};
|
||||||
|
|
||||||
hashedPassword = mkOption {
|
hashedPassword = mkOption {
|
||||||
type = with types; nullOr str;
|
type = with types; nullOr (passwdEntry str);
|
||||||
default = null;
|
default = null;
|
||||||
description = ''
|
description = ''
|
||||||
Specifies the hashed password for the user.
|
Specifies the hashed password for the user.
|
||||||
|
@ -251,7 +257,7 @@ let
|
||||||
};
|
};
|
||||||
|
|
||||||
initialHashedPassword = mkOption {
|
initialHashedPassword = mkOption {
|
||||||
type = with types; nullOr str;
|
type = with types; nullOr (passwdEntry str);
|
||||||
default = null;
|
default = null;
|
||||||
description = ''
|
description = ''
|
||||||
Specifies the initial hashed password for the user, i.e. the
|
Specifies the initial hashed password for the user, i.e. the
|
||||||
|
@ -323,7 +329,7 @@ let
|
||||||
options = {
|
options = {
|
||||||
|
|
||||||
name = mkOption {
|
name = mkOption {
|
||||||
type = types.str;
|
type = passwdEntry types.str;
|
||||||
description = ''
|
description = ''
|
||||||
The name of the group. If undefined, the name of the attribute set
|
The name of the group. If undefined, the name of the attribute set
|
||||||
will be used.
|
will be used.
|
||||||
|
@ -340,7 +346,7 @@ let
|
||||||
};
|
};
|
||||||
|
|
||||||
members = mkOption {
|
members = mkOption {
|
||||||
type = with types; listOf str;
|
type = with types; listOf (passwdEntry str);
|
||||||
default = [];
|
default = [];
|
||||||
description = ''
|
description = ''
|
||||||
The user names of the group members, added to the
|
The user names of the group members, added to the
|
||||||
|
|
|
@ -770,7 +770,6 @@
|
||||||
./services/networking/prayer.nix
|
./services/networking/prayer.nix
|
||||||
./services/networking/privoxy.nix
|
./services/networking/privoxy.nix
|
||||||
./services/networking/prosody.nix
|
./services/networking/prosody.nix
|
||||||
./services/networking/quagga.nix
|
|
||||||
./services/networking/quassel.nix
|
./services/networking/quassel.nix
|
||||||
./services/networking/quorum.nix
|
./services/networking/quorum.nix
|
||||||
./services/networking/quicktun.nix
|
./services/networking/quicktun.nix
|
||||||
|
|
|
@ -18,6 +18,7 @@ with lib;
|
||||||
|
|
||||||
# Completely removed modules
|
# Completely removed modules
|
||||||
(mkRemovedOptionModule [ "fonts" "fontconfig" "penultimate" ] "The corresponding package has removed from nixpkgs.")
|
(mkRemovedOptionModule [ "fonts" "fontconfig" "penultimate" ] "The corresponding package has removed from nixpkgs.")
|
||||||
|
(mkRemovedOptionModule [ "services" "quagga" ] "the corresponding package has been removed from nixpkgs")
|
||||||
(mkRemovedOptionModule [ "services" "chronos" ] "The corresponding package was removed from nixpkgs.")
|
(mkRemovedOptionModule [ "services" "chronos" ] "The corresponding package was removed from nixpkgs.")
|
||||||
(mkRemovedOptionModule [ "services" "deepin" ] "The corresponding packages were removed from nixpkgs.")
|
(mkRemovedOptionModule [ "services" "deepin" ] "The corresponding packages were removed from nixpkgs.")
|
||||||
(mkRemovedOptionModule [ "services" "firefox" "syncserver" "user" ] "")
|
(mkRemovedOptionModule [ "services" "firefox" "syncserver" "user" ] "")
|
||||||
|
|
|
@ -1,185 +0,0 @@
|
||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
|
||||||
|
|
||||||
cfg = config.services.quagga;
|
|
||||||
|
|
||||||
services = [ "babel" "bgp" "isis" "ospf6" "ospf" "pim" "rip" "ripng" ];
|
|
||||||
allServices = services ++ [ "zebra" ];
|
|
||||||
|
|
||||||
isEnabled = service: cfg.${service}.enable;
|
|
||||||
|
|
||||||
daemonName = service: if service == "zebra" then service else "${service}d";
|
|
||||||
|
|
||||||
configFile = service:
|
|
||||||
let
|
|
||||||
scfg = cfg.${service};
|
|
||||||
in
|
|
||||||
if scfg.configFile != null then scfg.configFile
|
|
||||||
else pkgs.writeText "${daemonName service}.conf"
|
|
||||||
''
|
|
||||||
! Quagga ${daemonName service} configuration
|
|
||||||
!
|
|
||||||
hostname ${config.networking.hostName}
|
|
||||||
log syslog
|
|
||||||
service password-encryption
|
|
||||||
!
|
|
||||||
${scfg.config}
|
|
||||||
!
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
|
|
||||||
serviceOptions = service:
|
|
||||||
{
|
|
||||||
enable = mkEnableOption "the Quagga ${toUpper service} routing protocol";
|
|
||||||
|
|
||||||
configFile = mkOption {
|
|
||||||
type = types.nullOr types.path;
|
|
||||||
default = null;
|
|
||||||
example = "/etc/quagga/${daemonName service}.conf";
|
|
||||||
description = ''
|
|
||||||
Configuration file to use for Quagga ${daemonName service}.
|
|
||||||
By default the NixOS generated files are used.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkOption {
|
|
||||||
type = types.lines;
|
|
||||||
default = "";
|
|
||||||
example =
|
|
||||||
let
|
|
||||||
examples = {
|
|
||||||
rip = ''
|
|
||||||
router rip
|
|
||||||
network 10.0.0.0/8
|
|
||||||
'';
|
|
||||||
|
|
||||||
ospf = ''
|
|
||||||
router ospf
|
|
||||||
network 10.0.0.0/8 area 0
|
|
||||||
'';
|
|
||||||
|
|
||||||
bgp = ''
|
|
||||||
router bgp 65001
|
|
||||||
neighbor 10.0.0.1 remote-as 65001
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
in
|
|
||||||
examples.${service} or "";
|
|
||||||
description = ''
|
|
||||||
${daemonName service} configuration statements.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
vtyListenAddress = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "127.0.0.1";
|
|
||||||
description = ''
|
|
||||||
Address to bind to for the VTY interface.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
vtyListenPort = mkOption {
|
|
||||||
type = types.nullOr types.int;
|
|
||||||
default = null;
|
|
||||||
description = ''
|
|
||||||
TCP Port to bind to for the VTY interface.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
in
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
###### interface
|
|
||||||
imports = [
|
|
||||||
{
|
|
||||||
options.services.quagga = {
|
|
||||||
zebra = (serviceOptions "zebra") // {
|
|
||||||
enable = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = any isEnabled services;
|
|
||||||
description = ''
|
|
||||||
Whether to enable the Zebra routing manager.
|
|
||||||
|
|
||||||
The Zebra routing manager is automatically enabled
|
|
||||||
if any routing protocols are configured.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{ options.services.quagga = (genAttrs services serviceOptions); }
|
|
||||||
];
|
|
||||||
|
|
||||||
###### implementation
|
|
||||||
|
|
||||||
config = mkIf (any isEnabled allServices) {
|
|
||||||
|
|
||||||
environment.systemPackages = [
|
|
||||||
pkgs.quagga # for the vtysh tool
|
|
||||||
];
|
|
||||||
|
|
||||||
users.users.quagga = {
|
|
||||||
description = "Quagga daemon user";
|
|
||||||
isSystemUser = true;
|
|
||||||
group = "quagga";
|
|
||||||
};
|
|
||||||
|
|
||||||
users.groups = {
|
|
||||||
quagga = {};
|
|
||||||
# Members of the quaggavty group can use vtysh to inspect the Quagga daemons
|
|
||||||
quaggavty = { members = [ "quagga" ]; };
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services =
|
|
||||||
let
|
|
||||||
quaggaService = service:
|
|
||||||
let
|
|
||||||
scfg = cfg.${service};
|
|
||||||
daemon = daemonName service;
|
|
||||||
in
|
|
||||||
nameValuePair daemon ({
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
restartTriggers = [ (configFile service) ];
|
|
||||||
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "forking";
|
|
||||||
PIDFile = "/run/quagga/${daemon}.pid";
|
|
||||||
ExecStart = "@${pkgs.quagga}/libexec/quagga/${daemon} ${daemon} -d -f ${configFile service}"
|
|
||||||
+ optionalString (scfg.vtyListenAddress != "") " -A ${scfg.vtyListenAddress}"
|
|
||||||
+ optionalString (scfg.vtyListenPort != null) " -P ${toString scfg.vtyListenPort}";
|
|
||||||
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
|
||||||
Restart = "on-abort";
|
|
||||||
};
|
|
||||||
} // (
|
|
||||||
if service == "zebra" then
|
|
||||||
{
|
|
||||||
description = "Quagga Zebra routing manager";
|
|
||||||
unitConfig.Documentation = "man:zebra(8)";
|
|
||||||
after = [ "network.target" ];
|
|
||||||
preStart = ''
|
|
||||||
install -m 0755 -o quagga -g quagga -d /run/quagga
|
|
||||||
|
|
||||||
${pkgs.iproute2}/bin/ip route flush proto zebra
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
description = "Quagga ${toUpper service} routing daemon";
|
|
||||||
unitConfig.Documentation = "man:${daemon}(8) man:zebra(8)";
|
|
||||||
bindsTo = [ "zebra.service" ];
|
|
||||||
after = [ "network.target" "zebra.service" ];
|
|
||||||
}
|
|
||||||
));
|
|
||||||
in
|
|
||||||
listToAttrs (map quaggaService (filter isEnabled allServices));
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
meta.maintainers = with lib.maintainers; [ ];
|
|
||||||
|
|
||||||
}
|
|
|
@ -9,8 +9,9 @@ in
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
virtualisation.azureImage.diskSize = mkOption {
|
virtualisation.azureImage.diskSize = mkOption {
|
||||||
type = with types; int;
|
type = with types; either (enum [ "auto" ]) int;
|
||||||
default = 2048;
|
default = "auto";
|
||||||
|
example = 2048;
|
||||||
description = ''
|
description = ''
|
||||||
Size of disk image. Unit is MB.
|
Size of disk image. Unit is MB.
|
||||||
'';
|
'';
|
||||||
|
|
|
@ -10,8 +10,9 @@ in
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
virtualisation.digitalOceanImage.diskSize = mkOption {
|
virtualisation.digitalOceanImage.diskSize = mkOption {
|
||||||
type = with types; int;
|
type = with types; either (enum [ "auto" ]) int;
|
||||||
default = 4096;
|
default = "auto";
|
||||||
|
example = 4096;
|
||||||
description = ''
|
description = ''
|
||||||
Size of disk image. Unit is MB.
|
Size of disk image. Unit is MB.
|
||||||
'';
|
'';
|
||||||
|
|
|
@ -18,8 +18,9 @@ in
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
virtualisation.googleComputeImage.diskSize = mkOption {
|
virtualisation.googleComputeImage.diskSize = mkOption {
|
||||||
type = with types; int;
|
type = with types; either (enum [ "auto" ]) int;
|
||||||
default = 1536;
|
default = "auto";
|
||||||
|
example = 1536;
|
||||||
description = ''
|
description = ''
|
||||||
Size of disk image. Unit is MB.
|
Size of disk image. Unit is MB.
|
||||||
'';
|
'';
|
||||||
|
|
|
@ -9,8 +9,9 @@ in {
|
||||||
options = {
|
options = {
|
||||||
hyperv = {
|
hyperv = {
|
||||||
baseImageSize = mkOption {
|
baseImageSize = mkOption {
|
||||||
type = types.int;
|
type = with types; either (enum [ "auto" ]) int;
|
||||||
default = 2048;
|
default = "auto";
|
||||||
|
example = 2048;
|
||||||
description = ''
|
description = ''
|
||||||
The size of the hyper-v base image in MiB.
|
The size of the hyper-v base image in MiB.
|
||||||
'';
|
'';
|
||||||
|
|
|
@ -11,8 +11,9 @@ in {
|
||||||
options = {
|
options = {
|
||||||
virtualbox = {
|
virtualbox = {
|
||||||
baseImageSize = mkOption {
|
baseImageSize = mkOption {
|
||||||
type = types.int;
|
type = with types; either (enum [ "auto" ]) int;
|
||||||
default = 50 * 1024;
|
default = "auto";
|
||||||
|
example = 50 * 1024;
|
||||||
description = ''
|
description = ''
|
||||||
The size of the VirtualBox base image in MiB.
|
The size of the VirtualBox base image in MiB.
|
||||||
'';
|
'';
|
||||||
|
|
|
@ -18,8 +18,9 @@ in {
|
||||||
options = {
|
options = {
|
||||||
vmware = {
|
vmware = {
|
||||||
baseImageSize = mkOption {
|
baseImageSize = mkOption {
|
||||||
type = types.int;
|
type = with types; either (enum [ "auto" ]) int;
|
||||||
default = 2048;
|
default = "auto";
|
||||||
|
example = 2048;
|
||||||
description = ''
|
description = ''
|
||||||
The size of the VMWare base image in MiB.
|
The size of the VMWare base image in MiB.
|
||||||
'';
|
'';
|
||||||
|
|
|
@ -343,7 +343,6 @@ in
|
||||||
proxy = handleTest ./proxy.nix {};
|
proxy = handleTest ./proxy.nix {};
|
||||||
pt2-clone = handleTest ./pt2-clone.nix {};
|
pt2-clone = handleTest ./pt2-clone.nix {};
|
||||||
qboot = handleTestOn ["x86_64-linux" "i686-linux"] ./qboot.nix {};
|
qboot = handleTestOn ["x86_64-linux" "i686-linux"] ./qboot.nix {};
|
||||||
quagga = handleTest ./quagga.nix {};
|
|
||||||
quorum = handleTest ./quorum.nix {};
|
quorum = handleTest ./quorum.nix {};
|
||||||
rabbitmq = handleTest ./rabbitmq.nix {};
|
rabbitmq = handleTest ./rabbitmq.nix {};
|
||||||
radarr = handleTest ./radarr.nix {};
|
radarr = handleTest ./radarr.nix {};
|
||||||
|
|
|
@ -1,96 +0,0 @@
|
||||||
# This test runs Quagga and checks if OSPF routing works.
|
|
||||||
#
|
|
||||||
# Network topology:
|
|
||||||
# [ client ]--net1--[ router1 ]--net2--[ router2 ]--net3--[ server ]
|
|
||||||
#
|
|
||||||
# All interfaces are in OSPF Area 0.
|
|
||||||
|
|
||||||
import ./make-test-python.nix ({ pkgs, ... }:
|
|
||||||
let
|
|
||||||
|
|
||||||
ifAddr = node: iface: (pkgs.lib.head node.config.networking.interfaces.${iface}.ipv4.addresses).address;
|
|
||||||
|
|
||||||
ospfConf = ''
|
|
||||||
interface eth2
|
|
||||||
ip ospf hello-interval 1
|
|
||||||
ip ospf dead-interval 5
|
|
||||||
!
|
|
||||||
router ospf
|
|
||||||
network 192.168.0.0/16 area 0
|
|
||||||
'';
|
|
||||||
|
|
||||||
in
|
|
||||||
{
|
|
||||||
name = "quagga";
|
|
||||||
|
|
||||||
meta = with pkgs.lib.maintainers; {
|
|
||||||
maintainers = [ ];
|
|
||||||
};
|
|
||||||
|
|
||||||
nodes = {
|
|
||||||
|
|
||||||
client =
|
|
||||||
{ nodes, ... }:
|
|
||||||
{
|
|
||||||
virtualisation.vlans = [ 1 ];
|
|
||||||
networking.defaultGateway = ifAddr nodes.router1 "eth1";
|
|
||||||
};
|
|
||||||
|
|
||||||
router1 =
|
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
virtualisation.vlans = [ 1 2 ];
|
|
||||||
boot.kernel.sysctl."net.ipv4.ip_forward" = "1";
|
|
||||||
networking.firewall.extraCommands = "iptables -A nixos-fw -i eth2 -p ospf -j ACCEPT";
|
|
||||||
services.quagga.ospf = {
|
|
||||||
enable = true;
|
|
||||||
config = ospfConf;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
router2 =
|
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
virtualisation.vlans = [ 3 2 ];
|
|
||||||
boot.kernel.sysctl."net.ipv4.ip_forward" = "1";
|
|
||||||
networking.firewall.extraCommands = "iptables -A nixos-fw -i eth2 -p ospf -j ACCEPT";
|
|
||||||
services.quagga.ospf = {
|
|
||||||
enable = true;
|
|
||||||
config = ospfConf;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
server =
|
|
||||||
{ nodes, ... }:
|
|
||||||
{
|
|
||||||
virtualisation.vlans = [ 3 ];
|
|
||||||
networking.defaultGateway = ifAddr nodes.router2 "eth1";
|
|
||||||
networking.firewall.allowedTCPPorts = [ 80 ];
|
|
||||||
services.httpd.enable = true;
|
|
||||||
services.httpd.adminAddr = "foo@example.com";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
testScript =
|
|
||||||
{ ... }:
|
|
||||||
''
|
|
||||||
start_all()
|
|
||||||
|
|
||||||
# Wait for the networking to start on all machines
|
|
||||||
for machine in client, router1, router2, server:
|
|
||||||
machine.wait_for_unit("network.target")
|
|
||||||
|
|
||||||
with subtest("Wait for OSPF to form adjacencies"):
|
|
||||||
for gw in router1, router2:
|
|
||||||
gw.wait_for_unit("ospfd")
|
|
||||||
gw.wait_until_succeeds("vtysh -c 'show ip ospf neighbor' | grep Full")
|
|
||||||
gw.wait_until_succeeds("vtysh -c 'show ip route' | grep '^O>'")
|
|
||||||
|
|
||||||
with subtest("Test ICMP"):
|
|
||||||
client.wait_until_succeeds("ping -c 3 server >&2")
|
|
||||||
|
|
||||||
with subtest("Test whether HTTP works"):
|
|
||||||
server.wait_for_unit("httpd")
|
|
||||||
client.succeed("curl --fail http://server/ >&2")
|
|
||||||
'';
|
|
||||||
})
|
|
|
@ -55,6 +55,7 @@ let majorVersion = "8";
|
||||||
|
|
||||||
patches =
|
patches =
|
||||||
optional (targetPlatform != hostPlatform) ../libstdc++-target.patch
|
optional (targetPlatform != hostPlatform) ../libstdc++-target.patch
|
||||||
|
++ optional targetPlatform.isNetBSD ../libstdc++-netbsd-ctypes.patch
|
||||||
++ optional noSysDirs ../no-sys-dirs.patch
|
++ optional noSysDirs ../no-sys-dirs.patch
|
||||||
/* ++ optional (hostPlatform != buildPlatform) (fetchpatch { # XXX: Refine when this should be applied
|
/* ++ optional (hostPlatform != buildPlatform) (fetchpatch { # XXX: Refine when this should be applied
|
||||||
url = "https://git.busybox.net/buildroot/plain/package/gcc/${version}/0900-remove-selftests.patch?id=11271540bfe6adafbc133caf6b5b902a816f5f02";
|
url = "https://git.busybox.net/buildroot/plain/package/gcc/${version}/0900-remove-selftests.patch?id=11271540bfe6adafbc133caf6b5b902a816f5f02";
|
||||||
|
|
|
@ -70,6 +70,7 @@ let majorVersion = "9";
|
||||||
# This patch can most likely be removed by a post 9.3.0-release.
|
# This patch can most likely be removed by a post 9.3.0-release.
|
||||||
[ ./avoid-cycling-subreg-reloads.patch ]
|
[ ./avoid-cycling-subreg-reloads.patch ]
|
||||||
++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch
|
++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch
|
||||||
|
++ optional targetPlatform.isNetBSD ../libstdc++-netbsd-ctypes.patch
|
||||||
++ optional noSysDirs ../no-sys-dirs.patch
|
++ optional noSysDirs ../no-sys-dirs.patch
|
||||||
/* ++ optional (hostPlatform != buildPlatform) (fetchpatch { # XXX: Refine when this should be applied
|
/* ++ optional (hostPlatform != buildPlatform) (fetchpatch { # XXX: Refine when this should be applied
|
||||||
url = "https://git.busybox.net/buildroot/plain/package/gcc/${version}/0900-remove-selftests.patch?id=11271540bfe6adafbc133caf6b5b902a816f5f02";
|
url = "https://git.busybox.net/buildroot/plain/package/gcc/${version}/0900-remove-selftests.patch?id=11271540bfe6adafbc133caf6b5b902a816f5f02";
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{ lib, stdenv, fetchFromGitLab, cmake, gfortran, perl }:
|
{ lib, stdenv, fetchFromGitLab, cmake, gfortran, perl }:
|
||||||
|
|
||||||
let
|
let
|
||||||
version = "5.1.2";
|
version = "5.1.3";
|
||||||
|
|
||||||
in stdenv.mkDerivation {
|
in stdenv.mkDerivation {
|
||||||
pname = "libxc";
|
pname = "libxc";
|
||||||
|
@ -11,7 +11,7 @@ in stdenv.mkDerivation {
|
||||||
owner = "libxc";
|
owner = "libxc";
|
||||||
repo = "libxc";
|
repo = "libxc";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "1bcj7x0kaal62m41v9hxb4h1d2cxs2ynvsfqqg7c5yi7829nvapb";
|
sha256 = "14czspifznsmvvix5hcm1rk18iy590qk8p5m00p0y032gmn9i2zj";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ gfortran ];
|
buildInputs = [ gfortran ];
|
||||||
|
@ -28,7 +28,6 @@ in stdenv.mkDerivation {
|
||||||
'';
|
'';
|
||||||
|
|
||||||
doCheck = true;
|
doCheck = true;
|
||||||
enableParallelBuilding = true;
|
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Library of exchange-correlation functionals for density-functional theory";
|
description = "Library of exchange-correlation functionals for density-functional theory";
|
||||||
|
|
|
@ -13,14 +13,14 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "brother";
|
pname = "brother";
|
||||||
version = "0.2.2";
|
version = "1.0.0";
|
||||||
disabled = pythonOlder "3.8";
|
disabled = pythonOlder "3.8";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "bieniu";
|
owner = "bieniu";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "sha256-vIefcL3K3ZbAUxMFM7gbbTFdrnmufWZHcq4OA19SYXE=";
|
sha256 = "sha256-0NfqPlQiOkNhR+H55E9LE4dGa9R8vcSyPNbbIeiRJV8=";
|
||||||
};
|
};
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
{ lib
|
||||||
|
, buildPythonPackage
|
||||||
|
, fetchFromGitHub
|
||||||
|
, capstone
|
||||||
|
, pyelftools
|
||||||
|
, tlsh
|
||||||
|
, nose
|
||||||
|
}:
|
||||||
|
buildPythonPackage {
|
||||||
|
pname = "telfhash";
|
||||||
|
version = "unstable-2021-01-29";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "trendmicro";
|
||||||
|
repo = "telfhash";
|
||||||
|
rev = "b5e398e59dc25a56a28861751c1fccc74ef71617";
|
||||||
|
sha256 = "jNu6qm8Q/UyJVaCqwFOPX02xAR5DwvCK3PaH6Fvmakk=";
|
||||||
|
};
|
||||||
|
|
||||||
|
# The tlsh library's name is just "tlsh"
|
||||||
|
postPatch = ''
|
||||||
|
substituteInPlace requirements.txt --replace "python-tlsh" "tlsh"
|
||||||
|
'';
|
||||||
|
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
capstone
|
||||||
|
pyelftools
|
||||||
|
tlsh
|
||||||
|
];
|
||||||
|
|
||||||
|
checkInputs = [
|
||||||
|
nose
|
||||||
|
];
|
||||||
|
|
||||||
|
checkPhase = ''
|
||||||
|
nosetests
|
||||||
|
'';
|
||||||
|
|
||||||
|
pythonImportsCheck = [
|
||||||
|
"telfhash"
|
||||||
|
];
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Symbol hash for ELF files";
|
||||||
|
homepage = "https://github.com/trendmicro/telfhash";
|
||||||
|
license = licenses.asl20;
|
||||||
|
maintainers = teams.determinatesystems.members;
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
{ lib
|
||||||
|
, aiohttp
|
||||||
|
, buildPythonPackage
|
||||||
|
, fetchFromGitHub
|
||||||
|
, pytest-aiohttp
|
||||||
|
, pytestCheckHook
|
||||||
|
, pythonOlder
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildPythonPackage rec {
|
||||||
|
pname = "zwave-js-server-python";
|
||||||
|
version = "0.23.1";
|
||||||
|
disabled = pythonOlder "3.8";
|
||||||
|
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "home-assistant-libs";
|
||||||
|
repo = pname;
|
||||||
|
rev = version;
|
||||||
|
sha256 = "0kmmhn357k22ana0ysd8jlz1fyfaqlc8k74ryaik0rrw7nmn1n11";
|
||||||
|
};
|
||||||
|
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
aiohttp
|
||||||
|
];
|
||||||
|
|
||||||
|
checkInputs = [
|
||||||
|
pytest-aiohttp
|
||||||
|
pytestCheckHook
|
||||||
|
];
|
||||||
|
|
||||||
|
pythonImportsCheck = [ "zwave_js_server" ];
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Python wrapper for zwave-js-server";
|
||||||
|
homepage = "https://github.com/home-assistant-libs/zwave-js-server-python";
|
||||||
|
license = with licenses; [ asl20 ];
|
||||||
|
maintainers = with maintainers; [ fab ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "gotestsum";
|
pname = "gotestsum";
|
||||||
version = "1.6.3";
|
version = "1.6.4";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "gotestyourself";
|
owner = "gotestyourself";
|
||||||
repo = "gotestsum";
|
repo = "gotestsum";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-xUDhJLTO3JZ7rlUUzcypUev60qmRK9zOlO2VYeXqT4o=";
|
sha256 = "sha256-5iSUk/J73enbc/N3bn7M4oj2A0yoF1jTWpnXD380hFI=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorSha256 = "sha256-sHi8iW+ZV/coeAwDUYnSH039UNtUO9HK0Bhz9Gmtv8k=";
|
vendorSha256 = "sha256-sHi8iW+ZV/coeAwDUYnSH039UNtUO9HK0Bhz9Gmtv8k=";
|
||||||
|
|
|
@ -71,6 +71,35 @@ let
|
||||||
in
|
in
|
||||||
lib.mapAttrs change grammars;
|
lib.mapAttrs change grammars;
|
||||||
|
|
||||||
|
# Usage:
|
||||||
|
# pkgs.tree-sitter.withPlugins (p: [ p.tree-sitter-c p.tree-sitter-java ... ])
|
||||||
|
#
|
||||||
|
# or for all grammars:
|
||||||
|
# pkgs.tree-sitter.withPlugins (_: allGrammars)
|
||||||
|
# which is equivalent to
|
||||||
|
# pkgs.tree-sitter.withPlugins (p: builtins.attrValues p)
|
||||||
|
withPlugins = grammarFn:
|
||||||
|
let
|
||||||
|
grammars = grammarFn builtGrammars;
|
||||||
|
in
|
||||||
|
linkFarm "grammars"
|
||||||
|
(map
|
||||||
|
(drv:
|
||||||
|
let
|
||||||
|
name = lib.strings.getName drv;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
name =
|
||||||
|
(lib.strings.removePrefix "tree-sitter-"
|
||||||
|
(lib.strings.removeSuffix "-grammar" name))
|
||||||
|
+ stdenv.hostPlatform.extensions.sharedLibrary;
|
||||||
|
path = "${drv}/parser";
|
||||||
|
}
|
||||||
|
)
|
||||||
|
grammars);
|
||||||
|
|
||||||
|
allGrammars = builtins.attrValues builtGrammars;
|
||||||
|
|
||||||
in
|
in
|
||||||
rustPlatform.buildRustPackage {
|
rustPlatform.buildRustPackage {
|
||||||
pname = "tree-sitter";
|
pname = "tree-sitter";
|
||||||
|
@ -111,7 +140,7 @@ rustPlatform.buildRustPackage {
|
||||||
updater = {
|
updater = {
|
||||||
inherit update-all-grammars;
|
inherit update-all-grammars;
|
||||||
};
|
};
|
||||||
inherit grammars builtGrammars;
|
inherit grammars builtGrammars withPlugins allGrammars;
|
||||||
|
|
||||||
tests = {
|
tests = {
|
||||||
# make sure all grammars build
|
# make sure all grammars build
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
, rust
|
, rust
|
||||||
, rustPlatform
|
, rustPlatform
|
||||||
, installShellFiles
|
, installShellFiles
|
||||||
|
, libiconv
|
||||||
, libobjc
|
, libobjc
|
||||||
, Security
|
, Security
|
||||||
, CoreServices
|
, CoreServices
|
||||||
|
@ -28,7 +29,7 @@ rustPlatform.buildRustPackage rec {
|
||||||
# Install completions post-install
|
# Install completions post-install
|
||||||
nativeBuildInputs = [ installShellFiles ];
|
nativeBuildInputs = [ installShellFiles ];
|
||||||
|
|
||||||
buildInputs = lib.optionals stdenv.isDarwin [ libobjc Security CoreServices Metal Foundation ];
|
buildInputs = lib.optionals stdenv.isDarwin [ libiconv libobjc Security CoreServices Metal Foundation ];
|
||||||
|
|
||||||
# The rusty_v8 package will try to download a `librusty_v8.a` release at build time to our read-only filesystem
|
# The rusty_v8 package will try to download a `librusty_v8.a` release at build time to our read-only filesystem
|
||||||
# To avoid this we pre-download the file and place it in the locations it will require it in advance
|
# To avoid this we pre-download the file and place it in the locations it will require it in advance
|
||||||
|
|
|
@ -50,6 +50,9 @@
|
||||||
, CoreFoundation
|
, CoreFoundation
|
||||||
, CoreServices
|
, CoreServices
|
||||||
|
|
||||||
|
# nvim-treesitter dependencies
|
||||||
|
, tree-sitter
|
||||||
|
|
||||||
# sved dependencies
|
# sved dependencies
|
||||||
, glib
|
, glib
|
||||||
, gobject-introspection
|
, gobject-introspection
|
||||||
|
@ -364,6 +367,24 @@ self: super: {
|
||||||
dependencies = with super; [ popfix ];
|
dependencies = with super; [ popfix ];
|
||||||
});
|
});
|
||||||
|
|
||||||
|
# Usage:
|
||||||
|
# pkgs.vimPlugins.nvim-treesitter.withPlugins (p: [ p.tree-sitter-c p.tree-sitter-java ... ])
|
||||||
|
# or for all grammars:
|
||||||
|
# pkgs.vimPlugins.nvim-treesitter.withPlugins (_: tree-sitter.allGrammars)
|
||||||
|
nvim-treesitter = super.nvim-treesitter.overrideAttrs (old: {
|
||||||
|
passthru.withPlugins =
|
||||||
|
grammarFn: self.nvim-treesitter.overrideAttrs (_: {
|
||||||
|
postPatch =
|
||||||
|
let
|
||||||
|
grammars = tree-sitter.withPlugins grammarFn;
|
||||||
|
in
|
||||||
|
''
|
||||||
|
rm -r parser
|
||||||
|
ln -s ${grammars} parser
|
||||||
|
'';
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
onehalf = super.onehalf.overrideAttrs (old: {
|
onehalf = super.onehalf.overrideAttrs (old: {
|
||||||
configurePhase = "cd vim";
|
configurePhase = "cd vim";
|
||||||
});
|
});
|
||||||
|
|
|
@ -20,17 +20,17 @@ let
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "displaylink";
|
pname = "displaylink";
|
||||||
version = "5.3.1.34";
|
version = "5.4.0-55.153";
|
||||||
|
|
||||||
src = requireFile rec {
|
src = requireFile rec {
|
||||||
name = "displaylink.zip";
|
name = "displaylink.zip";
|
||||||
sha256 = "1c1kbjgpb71f73qnyl44rvwi6l4ivddq789rwvvh0ahw2jm324hy";
|
sha256 = "1m2l3bnlfwfp94w7khr05npsbysg9mcyi7hi85n78xkd0xdcxml8";
|
||||||
message = ''
|
message = ''
|
||||||
In order to install the DisplayLink drivers, you must first
|
In order to install the DisplayLink drivers, you must first
|
||||||
comply with DisplayLink's EULA and download the binaries and
|
comply with DisplayLink's EULA and download the binaries and
|
||||||
sources from here:
|
sources from here:
|
||||||
|
|
||||||
https://www.displaylink.com/downloads/file?id=1576
|
https://www.synaptics.com/node/3751
|
||||||
|
|
||||||
Once you have downloaded the file, please use the following
|
Once you have downloaded the file, please use the following
|
||||||
commands and re-run the installation:
|
commands and re-run the installation:
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "evdi";
|
pname = "evdi";
|
||||||
version = "v1.7.2";
|
version = "unstable-20210401";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "DisplayLink";
|
owner = "DisplayLink";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = "b0b3d131b26df62664ca33775679eea7b70c47b1";
|
||||||
sha256 = "074j0xh037n8mc4isihfz9lap57wvxaxib32pvy6jhjl3wyik632";
|
sha256 = "09apbvdc78bbqzja9z3b1wrwmqkv3k7cn3lll5gsskxjnqbhxk9y";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = kernel.moduleBuildDependencies;
|
nativeBuildInputs = kernel.moduleBuildDependencies;
|
||||||
|
@ -33,6 +33,6 @@ stdenv.mkDerivation rec {
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
license = with licenses; [ lgpl21 gpl2 ];
|
license = with licenses; [ lgpl21 gpl2 ];
|
||||||
homepage = "https://www.displaylink.com/";
|
homepage = "https://www.displaylink.com/";
|
||||||
broken = versionOlder kernel.version "4.9" || stdenv.isAarch64;
|
broken = versionOlder kernel.version "4.19" || stdenv.isAarch64;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -984,6 +984,6 @@
|
||||||
"zone" = ps: with ps; [ ];
|
"zone" = ps: with ps; [ ];
|
||||||
"zoneminder" = ps: with ps; [ zm-py ];
|
"zoneminder" = ps: with ps; [ zm-py ];
|
||||||
"zwave" = ps: with ps; [ aiohttp-cors homeassistant-pyozw paho-mqtt pydispatcher python-openzwave-mqtt ];
|
"zwave" = ps: with ps; [ aiohttp-cors homeassistant-pyozw paho-mqtt pydispatcher python-openzwave-mqtt ];
|
||||||
"zwave_js" = ps: with ps; [ aiohttp-cors ]; # missing inputs: zwave-js-server-python
|
"zwave_js" = ps: with ps; [ aiohttp-cors zwave-js-server-python ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,19 @@ let
|
||||||
(mkOverride "astral" "1.10.1"
|
(mkOverride "astral" "1.10.1"
|
||||||
"d2a67243c4503131c856cafb1b1276de52a86e5b8a1d507b7e08bee51cb67bf1")
|
"d2a67243c4503131c856cafb1b1276de52a86e5b8a1d507b7e08bee51cb67bf1")
|
||||||
|
|
||||||
|
# Pinned due to API changes in brother>=1.0, remove >= 2021.5
|
||||||
|
(self: super: {
|
||||||
|
brother = super.brother.overridePythonAttrs (oldAttrs: rec {
|
||||||
|
version = "0.2.2";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "bieniu";
|
||||||
|
repo = "brother";
|
||||||
|
rev = version;
|
||||||
|
sha256 = "sha256-vIefcL3K3ZbAUxMFM7gbbTFdrnmufWZHcq4OA19SYXE=";
|
||||||
|
};
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
# Pinned due to API changes in iaqualink>=2.0, remove after
|
# Pinned due to API changes in iaqualink>=2.0, remove after
|
||||||
# https://github.com/home-assistant/core/pull/48137 was merged
|
# https://github.com/home-assistant/core/pull/48137 was merged
|
||||||
(self: super: {
|
(self: super: {
|
||||||
|
@ -213,6 +226,7 @@ in with py.pkgs; buildPythonApplication rec {
|
||||||
"axis"
|
"axis"
|
||||||
"bayesian"
|
"bayesian"
|
||||||
"binary_sensor"
|
"binary_sensor"
|
||||||
|
"brother"
|
||||||
"caldav"
|
"caldav"
|
||||||
"calendar"
|
"calendar"
|
||||||
"camera"
|
"camera"
|
||||||
|
@ -389,6 +403,7 @@ in with py.pkgs; buildPythonApplication rec {
|
||||||
"zha"
|
"zha"
|
||||||
"zone"
|
"zone"
|
||||||
"zwave"
|
"zwave"
|
||||||
|
"zwave_js"
|
||||||
];
|
];
|
||||||
|
|
||||||
pytestFlagsArray = [
|
pytestFlagsArray = [
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "alertmanager-irc-relay";
|
pname = "alertmanager-irc-relay";
|
||||||
version = "0.3.1";
|
version = "0.4.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "google";
|
owner = "google";
|
||||||
repo = "alertmanager-irc-relay";
|
repo = "alertmanager-irc-relay";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-IlWXsQZtDXG8sJBV+82BzEFj+JtUbfTOZyqYOrZFTXA=";
|
sha256 = "sha256-02uEvcxT5+0OJtqOyuQjgkqL0fZnN7umCSxBqAVPT9U=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorSha256 = "sha256-VLG15IXS/fXFMTCJKEqGW6qZ9aOLPhazidVsOywG+w4=";
|
vendorSha256 = "sha256-VLG15IXS/fXFMTCJKEqGW6qZ9aOLPhazidVsOywG+w4=";
|
||||||
|
|
|
@ -1,73 +0,0 @@
|
||||||
{ lib, stdenv, fetchurl, libcap, libnl, readline, net-snmp, less, perl, texinfo,
|
|
||||||
pkg-config, c-ares }:
|
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
pname = "quagga";
|
|
||||||
version = "1.2.4";
|
|
||||||
|
|
||||||
src = fetchurl {
|
|
||||||
url = "mirror://savannah/quagga/${pname}-${version}.tar.gz";
|
|
||||||
sha256 = "1lsksqxij5f1llqn86pkygrf5672kvrqn1kvxghi169hqf1c0r73";
|
|
||||||
};
|
|
||||||
|
|
||||||
buildInputs =
|
|
||||||
[ readline net-snmp c-ares ]
|
|
||||||
++ lib.optionals stdenv.isLinux [ libcap libnl ];
|
|
||||||
|
|
||||||
nativeBuildInputs = [ pkg-config perl texinfo ];
|
|
||||||
|
|
||||||
configureFlags = [
|
|
||||||
"--sysconfdir=/etc/quagga"
|
|
||||||
"--localstatedir=/run/quagga"
|
|
||||||
"--sbindir=$(out)/libexec/quagga"
|
|
||||||
"--disable-exampledir"
|
|
||||||
"--enable-user=quagga"
|
|
||||||
"--enable-group=quagga"
|
|
||||||
"--enable-configfile-mask=0640"
|
|
||||||
"--enable-logfile-mask=0640"
|
|
||||||
"--enable-vtysh"
|
|
||||||
"--enable-vty-group=quaggavty"
|
|
||||||
"--enable-snmp"
|
|
||||||
"--enable-multipath=64"
|
|
||||||
"--enable-rtadv"
|
|
||||||
"--enable-irdp"
|
|
||||||
"--enable-opaque-lsa"
|
|
||||||
"--enable-ospf-te"
|
|
||||||
"--enable-pimd"
|
|
||||||
"--enable-isis-topology"
|
|
||||||
];
|
|
||||||
|
|
||||||
preConfigure = ''
|
|
||||||
substituteInPlace vtysh/vtysh.c --replace \"more\" \"${less}/bin/less\"
|
|
||||||
'';
|
|
||||||
|
|
||||||
postInstall = ''
|
|
||||||
rm -f $out/bin/test_igmpv3_join
|
|
||||||
mv -f $out/libexec/quagga/ospfclient $out/bin/
|
|
||||||
'';
|
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "Quagga BGP/OSPF/ISIS/RIP/RIPNG routing daemon suite";
|
|
||||||
longDescription = ''
|
|
||||||
GNU Quagga is free software which manages TCP/IP based routing protocols.
|
|
||||||
It supports BGP4, BGP4+, OSPFv2, OSPFv3, IS-IS, RIPv1, RIPv2, and RIPng as
|
|
||||||
well as the IPv6 versions of these.
|
|
||||||
|
|
||||||
As the predecessor Zebra has been considered orphaned, the Quagga project
|
|
||||||
has been formed by members of the zebra mailing list and the former
|
|
||||||
zebra-pj project to continue developing.
|
|
||||||
|
|
||||||
Quagga uses threading if the kernel supports it, but can also run on
|
|
||||||
kernels that do not support threading. Each protocol has its own daemon.
|
|
||||||
|
|
||||||
It is more than a routed replacement, it can be used as a Route Server and
|
|
||||||
a Route Reflector.
|
|
||||||
'';
|
|
||||||
homepage = "https://www.nongnu.org/quagga/";
|
|
||||||
license = licenses.gpl2;
|
|
||||||
platforms = platforms.unix;
|
|
||||||
maintainers = with maintainers; [ ];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -773,6 +773,14 @@ self: super:
|
||||||
"--with-launchdaemons-dir=\${out}/LaunchDaemons"
|
"--with-launchdaemons-dir=\${out}/LaunchDaemons"
|
||||||
"--with-launchagents-dir=\${out}/LaunchAgents"
|
"--with-launchagents-dir=\${out}/LaunchAgents"
|
||||||
];
|
];
|
||||||
|
patches = [
|
||||||
|
# don't unset DBUS_SESSION_BUS_ADDRESS in startx
|
||||||
|
(fetchpatch {
|
||||||
|
name = "dont-unset-DBUS_SESSION_BUS_ADDRESS.patch";
|
||||||
|
url = "https://git.archlinux.org/svntogit/packages.git/plain/repos/extra-x86_64/fs46369.patch?h=packages/xorg-xinit&id=40f3ac0a31336d871c76065270d3f10e922d06f3";
|
||||||
|
sha256 = "18kb88i3s9nbq2jxl7l2hyj6p56c993hivk8mzxg811iqbbawkp7";
|
||||||
|
})
|
||||||
|
];
|
||||||
propagatedBuildInputs = attrs.propagatedBuildInputs or [] ++ [ self.xauth ]
|
propagatedBuildInputs = attrs.propagatedBuildInputs or [] ++ [ self.xauth ]
|
||||||
++ lib.optionals isDarwin [ self.libX11 self.xorgproto ];
|
++ lib.optionals isDarwin [ self.libX11 self.xorgproto ];
|
||||||
postFixup = ''
|
postFixup = ''
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
buildGoPackage rec {
|
buildGoPackage rec {
|
||||||
pname = "exoscale-cli";
|
pname = "exoscale-cli";
|
||||||
version = "1.27.2";
|
version = "1.28.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "exoscale";
|
owner = "exoscale";
|
||||||
repo = "cli";
|
repo = "cli";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-Wq3CWKYuF4AaOVpe0sGn9BzLx/6rSPFN6rFc2jUUVEA=";
|
sha256 = "sha256-YbWh4ZIlcxAD/8F/fsYIWjv5hKaHNNi+sNrD7Ax/xDw=";
|
||||||
};
|
};
|
||||||
|
|
||||||
goPackagePath = "github.com/exoscale/cli";
|
goPackagePath = "github.com/exoscale/cli";
|
||||||
|
|
|
@ -14,11 +14,11 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "agi";
|
pname = "agi";
|
||||||
version = "1.1.0-dev-20210413";
|
version = "1.1.0-dev-20210421";
|
||||||
|
|
||||||
src = fetchzip {
|
src = fetchzip {
|
||||||
url = "https://github.com/google/agi-dev-releases/releases/download/v${version}/agi-${version}-linux.zip";
|
url = "https://github.com/google/agi-dev-releases/releases/download/v${version}/agi-${version}-linux.zip";
|
||||||
sha256 = "13i6n95d0cjrhx68qsich6xzk5f9ga0y3m19k4z2d58s164rnh0v";
|
sha256 = "sha256-2IgGvQy6omDEwrzQDfa/OLi3f+Q2zarvJVGk6ZhsjSA=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|
|
@ -608,6 +608,7 @@ mapAliases ({
|
||||||
phonon = throw "phonon: Please use libsForQt5.phonon, as Qt4 support in this package has been removed."; # added 2019-11-22
|
phonon = throw "phonon: Please use libsForQt5.phonon, as Qt4 support in this package has been removed."; # added 2019-11-22
|
||||||
pynagsystemd = throw "pynagsystemd was removed as it was unmaintained and incompatible with recent systemd versions. Instead use its fork check_systemd."; # added 2020-10-24
|
pynagsystemd = throw "pynagsystemd was removed as it was unmaintained and incompatible with recent systemd versions. Instead use its fork check_systemd."; # added 2020-10-24
|
||||||
python2nix = throw "python2nix has been removed as it is outdated. Use e.g. nixpkgs-pytools instead."; # added 2021-03-08
|
python2nix = throw "python2nix has been removed as it is outdated. Use e.g. nixpkgs-pytools instead."; # added 2021-03-08
|
||||||
|
quagga = throw "quagga is no longer maintained upstream"; # added 2021-04-22
|
||||||
qca-qt5 = libsForQt5.qca-qt5; # added 2015-12-19
|
qca-qt5 = libsForQt5.qca-qt5; # added 2015-12-19
|
||||||
qcsxcad = libsForQt5.qcsxcad; # added 2020-11-05
|
qcsxcad = libsForQt5.qcsxcad; # added 2020-11-05
|
||||||
qmk_firmware = throw "qmk_firmware has been removed because it was broken"; # added 2021-04-02
|
qmk_firmware = throw "qmk_firmware has been removed because it was broken"; # added 2021-04-02
|
||||||
|
|
|
@ -19142,8 +19142,6 @@ in
|
||||||
|
|
||||||
qremotecontrol-server = callPackage ../servers/misc/qremotecontrol-server { };
|
qremotecontrol-server = callPackage ../servers/misc/qremotecontrol-server { };
|
||||||
|
|
||||||
quagga = callPackage ../servers/quagga { };
|
|
||||||
|
|
||||||
rabbitmq-server = callPackage ../servers/amqp/rabbitmq-server {
|
rabbitmq-server = callPackage ../servers/amqp/rabbitmq-server {
|
||||||
inherit (darwin.apple_sdk.frameworks) AppKit Carbon Cocoa;
|
inherit (darwin.apple_sdk.frameworks) AppKit Carbon Cocoa;
|
||||||
elixir = beam_nox.interpreters.elixir_1_8;
|
elixir = beam_nox.interpreters.elixir_1_8;
|
||||||
|
|
|
@ -7743,6 +7743,8 @@ in {
|
||||||
|
|
||||||
telethon-session-sqlalchemy = callPackage ../development/python-modules/telethon-session-sqlalchemy { };
|
telethon-session-sqlalchemy = callPackage ../development/python-modules/telethon-session-sqlalchemy { };
|
||||||
|
|
||||||
|
telfhash = callPackage ../development/python-modules/telfhash { };
|
||||||
|
|
||||||
tempita = callPackage ../development/python-modules/tempita { };
|
tempita = callPackage ../development/python-modules/tempita { };
|
||||||
|
|
||||||
tempora = callPackage ../development/python-modules/tempora { };
|
tempora = callPackage ../development/python-modules/tempora { };
|
||||||
|
@ -8754,5 +8756,7 @@ in {
|
||||||
|
|
||||||
zulip = callPackage ../development/python-modules/zulip { };
|
zulip = callPackage ../development/python-modules/zulip { };
|
||||||
|
|
||||||
|
zwave-js-server-python = callPackage ../development/python-modules/zwave-js-server-python { };
|
||||||
|
|
||||||
zxcvbn = callPackage ../development/python-modules/zxcvbn { };
|
zxcvbn = callPackage ../development/python-modules/zxcvbn { };
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue