Merge master into staging-next
This commit is contained in:
commit
2ca68c7757
|
@ -40,6 +40,23 @@
|
|||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="ssec-icon-theme-packaging">
|
||||
<title>Packaging icon themes</title>
|
||||
|
||||
<para>
|
||||
Icon themes may inherit from other icon themes. The inheritance is specified using the <literal>Inherits</literal> key in the <filename>index.theme</filename> file distributed with the icon theme. According to the <link xlink:href="https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html">icon theme specification</link>, icons not provided by the theme are looked for in its parent icon themes. Therefore the parent themes should be installed as dependencies for a more complete experience regarding the icon sets used.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The package <package>hicolor-icon-theme</package> provides a setup hook which makes symbolic links for the parent themes into the directory <filename>share/icons</filename> of the current theme directory in the nix store, making sure they can be found at runtime. For that to work the packages providing parent icon themes should be listed as propagated build dependencies, together with <package>hicolor-icon-theme</package>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Also make sure that <filename>icon-theme.cache</filename> is installed for each theme provided by the package, and set <code>dontDropIconThemeCache</code> to <code>true</code> so that the cache file is not removed by the <package>gtk3</package> setup hook.
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
<section xml:id="ssec-gnome-themes">
|
||||
<title>GTK Themes</title>
|
||||
|
||||
|
|
|
@ -145,7 +145,7 @@ genericBuild
|
|||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
GNU Make. It has been patched to provide <quote>nested</quote> output that can be fed into the <command>nix-log2xml</command> command and <command>log2html</command> stylesheet to create a structured, readable output of the build steps performed by Make.
|
||||
GNU Make.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
|
|
|
@ -5064,6 +5064,12 @@
|
|||
githubId = 3269878;
|
||||
name = "Miguel Madrid Mencía";
|
||||
};
|
||||
mindavi = {
|
||||
email = "rol3517@gmail.com";
|
||||
github = "Mindavi";
|
||||
githubId = 9799623;
|
||||
name = "Rick van Schijndel";
|
||||
};
|
||||
minijackson = {
|
||||
email = "minijackson@riseup.net";
|
||||
github = "minijackson";
|
||||
|
@ -5862,6 +5868,16 @@
|
|||
githubId = 131844;
|
||||
name = "Igor Pashev";
|
||||
};
|
||||
patryk27 = {
|
||||
email = "wychowaniec.patryk@gmail.com";
|
||||
github = "Patryk27";
|
||||
githubId = 3395477;
|
||||
name = "Patryk Wychowaniec";
|
||||
keys = [{
|
||||
longkeyid = "rsa4096/0xF62547D075E09767";
|
||||
fingerprint = "196A BFEC 6A1D D1EC 7594 F8D1 F625 47D0 75E0 9767";
|
||||
}];
|
||||
};
|
||||
patternspandemic = {
|
||||
email = "patternspandemic@live.com";
|
||||
github = "patternspandemic";
|
||||
|
|
|
@ -16,11 +16,11 @@
|
|||
effects, some example settings:
|
||||
<programlisting>
|
||||
<link linkend="opt-services.picom.enable">services.picom</link> = {
|
||||
<link linkend="opt-services.picom.enable">enable</link> = true;
|
||||
<link linkend="opt-services.picom.fade">fade</link> = true;
|
||||
<link linkend="opt-services.picom.inactiveOpacity">inactiveOpacity</link> = "0.9";
|
||||
<link linkend="opt-services.picom.shadow">shadow</link> = true;
|
||||
<link linkend="opt-services.picom.fadeDelta">fadeDelta</link> = 4;
|
||||
<link linkend="opt-services.picom.enable">enable</link> = true;
|
||||
<link linkend="opt-services.picom.fade">fade</link> = true;
|
||||
<link linkend="opt-services.picom.inactiveOpacity">inactiveOpacity</link> = 0.9;
|
||||
<link linkend="opt-services.picom.shadow">shadow</link> = true;
|
||||
<link linkend="opt-services.picom.fadeDelta">fadeDelta</link> = 4;
|
||||
};
|
||||
</programlisting>
|
||||
</para>
|
||||
|
|
|
@ -24,16 +24,6 @@
|
|||
</arg>
|
||||
</group>
|
||||
</arg>
|
||||
<arg>
|
||||
<group choice='req'>
|
||||
<arg choice='plain'>
|
||||
<option>--print-build-logs</option>
|
||||
</arg>
|
||||
<arg choice='plain'>
|
||||
<option>-L</option>
|
||||
</arg>
|
||||
</group>
|
||||
</arg>
|
||||
<arg>
|
||||
<arg choice='plain'>
|
||||
<option>-I</option>
|
||||
|
@ -178,12 +168,6 @@
|
|||
<para>Please note that this option may be specified repeatedly.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--print-build-logs</option> / <option>-L</option></term>
|
||||
<listitem>
|
||||
<para>Print the full build logs of <command>nix build</command> to stderr.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<option>--root</option>
|
||||
|
|
|
@ -317,6 +317,15 @@ php.override {
|
|||
<manvolnum>5</manvolnum></citerefentry> for details.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
In the <literal>picom</literal> module, several options that accepted
|
||||
floating point numbers encoded as strings (for example
|
||||
<xref linkend="opt-services.picom.activeOpacity"/>) have been changed
|
||||
to the (relatively) new native <literal>float</literal> type. To migrate
|
||||
your configuration simply remove the quotes around the numbers.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
|
||||
|
|
|
@ -143,7 +143,7 @@ class Logger:
|
|||
self.logfile = os.environ.get("LOGFILE", "/dev/null")
|
||||
self.logfile_handle = codecs.open(self.logfile, "wb")
|
||||
self.xml = XMLGenerator(self.logfile_handle, encoding="utf-8")
|
||||
self.queue: "Queue[Dict[str, str]]" = Queue(1000)
|
||||
self.queue: "Queue[Dict[str, str]]" = Queue()
|
||||
|
||||
self.xml.startDocument()
|
||||
self.xml.startElement("logfile", attrs={})
|
||||
|
@ -391,11 +391,11 @@ class Machine:
|
|||
def execute(self, command: str) -> Tuple[int, str]:
|
||||
self.connect()
|
||||
|
||||
out_command = "( {} ); echo '|!EOF' $?\n".format(command)
|
||||
out_command = "( {} ); echo '|!=EOF' $?\n".format(command)
|
||||
self.shell.send(out_command.encode())
|
||||
|
||||
output = ""
|
||||
status_code_pattern = re.compile(r"(.*)\|\!EOF\s+(\d+)")
|
||||
status_code_pattern = re.compile(r"(.*)\|\!=EOF\s+(\d+)")
|
||||
|
||||
while True:
|
||||
chunk = self.shell.recv(4096).decode(errors="ignore")
|
||||
|
|
|
@ -8,30 +8,22 @@ let
|
|||
|
||||
# only with nscd up and running we can load NSS modules that are not integrated in NSS
|
||||
canLoadExternalModules = config.services.nscd.enable;
|
||||
myhostname = canLoadExternalModules;
|
||||
mymachines = canLoadExternalModules;
|
||||
# XXX Move these to their respective modules
|
||||
nssmdns = canLoadExternalModules && config.services.avahi.nssmdns;
|
||||
nsswins = canLoadExternalModules && config.services.samba.nsswins;
|
||||
ldap = canLoadExternalModules && (config.users.ldap.enable && config.users.ldap.nsswitch);
|
||||
resolved = canLoadExternalModules && config.services.resolved.enable;
|
||||
|
||||
hostArray = mkMerge [
|
||||
(mkBefore [ "files" ])
|
||||
(mkIf mymachines [ "mymachines" ])
|
||||
(mkIf nssmdns [ "mdns_minimal [NOTFOUND=return]" ])
|
||||
(mkIf nsswins [ "wins" ])
|
||||
(mkIf resolved [ "resolve [!UNAVAIL=return]" ])
|
||||
(mkAfter [ "dns" ])
|
||||
(mkIf nssmdns (mkOrder 1501 [ "mdns" ])) # 1501 to ensure it's after dns
|
||||
(mkIf myhostname (mkOrder 1600 [ "myhostname" ])) # 1600 to ensure it's always the last
|
||||
];
|
||||
|
||||
passwdArray = mkMerge [
|
||||
(mkBefore [ "files" ])
|
||||
(mkIf ldap [ "ldap" ])
|
||||
(mkIf mymachines [ "mymachines" ])
|
||||
(mkIf canLoadExternalModules (mkAfter [ "systemd" ]))
|
||||
];
|
||||
|
||||
shadowArray = mkMerge [
|
||||
|
@ -134,11 +126,6 @@ in {
|
|||
assertion = config.system.nssModules.path != "" -> canLoadExternalModules;
|
||||
message = "Loading NSS modules from path ${config.system.nssModules.path} requires nscd being enabled.";
|
||||
}
|
||||
{
|
||||
# resolved does not need to add to nssModules, therefore needs an extra assertion
|
||||
assertion = resolved -> canLoadExternalModules;
|
||||
message = "Loading systemd-resolved's nss-resolve NSS module requires nscd being enabled.";
|
||||
}
|
||||
];
|
||||
|
||||
# Name Service Switch configuration file. Required by the C
|
||||
|
@ -164,12 +151,5 @@ in {
|
|||
hosts = hostArray;
|
||||
services = mkBefore [ "files" ];
|
||||
};
|
||||
|
||||
# Systemd provides nss-myhostname to ensure that our hostname
|
||||
# always resolves to a valid IP address. It returns all locally
|
||||
# configured IP addresses, or ::1 and 127.0.0.2 as
|
||||
# fallbacks. Systemd also provides nss-mymachines to return IP
|
||||
# addresses of local containers.
|
||||
system.nssModules = (optionals canLoadExternalModules [ config.systemd.package.out ]);
|
||||
};
|
||||
}
|
||||
|
|
|
@ -15,7 +15,6 @@ mountPoint=/mnt
|
|||
channelPath=
|
||||
system=
|
||||
verbosity=()
|
||||
buildLogs=
|
||||
|
||||
while [ "$#" -gt 0 ]; do
|
||||
i="$1"; shift 1
|
||||
|
@ -60,9 +59,6 @@ while [ "$#" -gt 0 ]; do
|
|||
-v*|--verbose)
|
||||
verbosity+=("$i")
|
||||
;;
|
||||
-L|--print-build-logs)
|
||||
buildLogs="$i"
|
||||
;;
|
||||
*)
|
||||
echo "$0: unknown option \`$i'"
|
||||
exit 1
|
||||
|
@ -100,9 +96,9 @@ sub="auto?trusted=1"
|
|||
if [[ -z $system ]]; then
|
||||
echo "building the configuration in $NIXOS_CONFIG..."
|
||||
outLink="$tmpdir/system"
|
||||
nix build --out-link "$outLink" --store "$mountPoint" "${extraBuildFlags[@]}" \
|
||||
nix-build --out-link "$outLink" --store "$mountPoint" "${extraBuildFlags[@]}" \
|
||||
--extra-substituters "$sub" \
|
||||
-f '<nixpkgs/nixos>' system -I "nixos-config=$NIXOS_CONFIG" ${verbosity[@]} ${buildLogs}
|
||||
'<nixpkgs/nixos>' -A system -I "nixos-config=$NIXOS_CONFIG" ${verbosity[@]}
|
||||
system=$(readlink -f $outLink)
|
||||
fi
|
||||
|
||||
|
|
|
@ -231,6 +231,10 @@ in
|
|||
|
||||
};
|
||||
|
||||
meta = {
|
||||
maintainers = lib.maintainers.mic92;
|
||||
};
|
||||
|
||||
|
||||
###### implementation
|
||||
|
||||
|
|
|
@ -34,13 +34,7 @@ in
|
|||
|
||||
services.postgresql = {
|
||||
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to run PostgreSQL.
|
||||
'';
|
||||
};
|
||||
enable = mkEnableOption "PostgreSQL Server";
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
|
|
|
@ -510,8 +510,7 @@ in
|
|||
|
||||
system.activationScripts.nix = stringAfter [ "etc" "users" ]
|
||||
''
|
||||
# Create directories in /nix.
|
||||
${nix}/bin/nix ping-store --no-net
|
||||
install -m 0755 -d /nix/var/nix/{gcroots,profiles}/per-user
|
||||
|
||||
# Subscribe the root user to the NixOS channel by default.
|
||||
if [ ! -e "/root/.nix-channels" ]; then
|
||||
|
|
|
@ -20,12 +20,14 @@ let
|
|||
ssid=${cfg.ssid}
|
||||
hw_mode=${cfg.hwMode}
|
||||
channel=${toString cfg.channel}
|
||||
${optionalString (cfg.countryCode != null) ''country_code=${cfg.countryCode}''}
|
||||
${optionalString (cfg.countryCode != null) ''ieee80211d=1''}
|
||||
|
||||
# logging (debug level)
|
||||
logger_syslog=-1
|
||||
logger_syslog_level=2
|
||||
logger_syslog_level=${toString cfg.logLevel}
|
||||
logger_stdout=-1
|
||||
logger_stdout_level=2
|
||||
logger_stdout_level=${toString cfg.logLevel}
|
||||
|
||||
ctrl_interface=/run/hostapd
|
||||
ctrl_interface_group=${cfg.group}
|
||||
|
@ -147,6 +149,35 @@ in
|
|||
'';
|
||||
};
|
||||
|
||||
logLevel = mkOption {
|
||||
default = 2;
|
||||
type = types.int;
|
||||
description = ''
|
||||
Levels (minimum value for logged events):
|
||||
0 = verbose debugging
|
||||
1 = debugging
|
||||
2 = informational messages
|
||||
3 = notification
|
||||
4 = warning
|
||||
'';
|
||||
};
|
||||
|
||||
countryCode = mkOption {
|
||||
default = null;
|
||||
example = "US";
|
||||
type = with types; nullOr str;
|
||||
description = ''
|
||||
Country code (ISO/IEC 3166-1). Used to set regulatory domain.
|
||||
Set as needed to indicate country in which device is operating.
|
||||
This can limit available channels and transmit power.
|
||||
These two octets are used as the first two octets of the Country String
|
||||
(dot11CountryString).
|
||||
If set this enables IEEE 802.11d. This advertises the countryCode and
|
||||
the set of allowed channels and transmit power levels based on the
|
||||
regulatory limits.
|
||||
'';
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
default = "";
|
||||
example = ''
|
||||
|
@ -167,6 +198,8 @@ in
|
|||
|
||||
environment.systemPackages = [ pkgs.hostapd ];
|
||||
|
||||
services.udev.packages = optional (cfg.countryCode != null) [ pkgs.crda ];
|
||||
|
||||
systemd.services.hostapd =
|
||||
{ description = "hostapd wireless AP";
|
||||
|
||||
|
|
|
@ -91,41 +91,47 @@ in {
|
|||
description = "Unit App Server";
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
path = with pkgs; [ curl ];
|
||||
preStart = ''
|
||||
test -f '${cfg.stateDir}/conf.json' || rm -f '${cfg.stateDir}/conf.json'
|
||||
[ ! -e '${cfg.stateDir}/conf.json' ] || rm -f '${cfg.stateDir}/conf.json'
|
||||
'';
|
||||
postStart = ''
|
||||
curl -X PUT --data-binary '@${configFile}' --unix-socket '/run/unit/control.unit.sock' 'http://localhost/config'
|
||||
${pkgs.curl}/bin/curl -X PUT --data-binary '@${configFile}' --unix-socket '/run/unit/control.unit.sock' 'http://localhost/config'
|
||||
'';
|
||||
serviceConfig = {
|
||||
Type = "forking";
|
||||
PIDFile = "/run/unit/unit.pid";
|
||||
ExecStart = ''
|
||||
${cfg.package}/bin/unitd --control 'unix:/run/unit/control.unit.sock' --pid '/run/unit/unit.pid' \
|
||||
--log '${cfg.logDir}/unit.log' --state '${cfg.stateDir}' --no-daemon \
|
||||
--log '${cfg.logDir}/unit.log' --state '${cfg.stateDir}' \
|
||||
--user ${cfg.user} --group ${cfg.group}
|
||||
'';
|
||||
# User and group
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
# Capabilities
|
||||
AmbientCapabilities = [ "CAP_NET_BIND_SERVICE" "CAP_SETGID" "CAP_SETUID" ];
|
||||
ExecStop = ''
|
||||
${pkgs.curl}/bin/curl -X DELETE --unix-socket '/run/unit/control.unit.sock' 'http://localhost/config'
|
||||
'';
|
||||
# Runtime directory and mode
|
||||
RuntimeDirectory = "unit";
|
||||
RuntimeDirectoryMode = "0750";
|
||||
# Access write directories
|
||||
ReadWritePaths = [ cfg.stateDir cfg.logDir ];
|
||||
# Security
|
||||
NoNewPrivileges = true;
|
||||
# Sandboxing
|
||||
ProtectSystem = "full";
|
||||
ProtectSystem = "strict";
|
||||
ProtectHome = true;
|
||||
RuntimeDirectory = "unit";
|
||||
RuntimeDirectoryMode = "0750";
|
||||
PrivateTmp = true;
|
||||
PrivateDevices = true;
|
||||
ProtectHostname = true;
|
||||
ProtectKernelTunables = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectControlGroups = true;
|
||||
RestrictAddressFamilies = [ "AF_UNIX" "AF_INET" "AF_INET6" ];
|
||||
LockPersonality = true;
|
||||
MemoryDenyWriteExecute = true;
|
||||
RestrictRealtime = true;
|
||||
RestrictSUIDSGID = true;
|
||||
PrivateMounts = true;
|
||||
# System Call Filtering
|
||||
SystemCallArchitectures = "native";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -109,7 +109,7 @@ in
|
|||
|
||||
# Without this, elementary LightDM greeter will pre-select non-existent `default` session
|
||||
# https://github.com/elementary/greeter/issues/368
|
||||
services.xserver.displayManager.defaultSession = "pantheon";
|
||||
services.xserver.displayManager.defaultSession = mkDefault "pantheon";
|
||||
|
||||
services.xserver.displayManager.sessionCommands = ''
|
||||
if test "$XDG_CURRENT_DESKTOP" = "Pantheon"; then
|
||||
|
|
|
@ -1,39 +1,48 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
with builtins;
|
||||
|
||||
let
|
||||
|
||||
cfg = config.services.picom;
|
||||
|
||||
pairOf = x: with types; addCheck (listOf x) (y: length y == 2);
|
||||
pairOf = x: with types;
|
||||
addCheck (listOf x) (y: length y == 2)
|
||||
// { description = "pair of ${x.description}"; };
|
||||
|
||||
floatBetween = a: b: with lib; with types;
|
||||
addCheck str (x: versionAtLeast x a && versionOlder x b);
|
||||
floatBetween = a: b: with types;
|
||||
let
|
||||
# toString prints floats with hardcoded high precision
|
||||
floatToString = f: builtins.toJSON f;
|
||||
in
|
||||
addCheck float (x: x <= b && x >= a)
|
||||
// { description = "a floating point number in " +
|
||||
"range [${floatToString a}, ${floatToString b}]"; };
|
||||
|
||||
toConf = attrs: concatStringsSep "\n"
|
||||
(mapAttrsToList
|
||||
(k: v: let
|
||||
sep = if isAttrs v then ":" else "=";
|
||||
# Basically a tinkered lib.generators.mkKeyValueDefault
|
||||
mkValueString = v:
|
||||
if isBool v then boolToString v
|
||||
else if isInt v then toString v
|
||||
else if isFloat v then toString v
|
||||
else if isString v then ''"${escape [ ''"'' ] v}"''
|
||||
else if isList v then "[ "
|
||||
+ concatMapStringsSep " , " mkValueString v
|
||||
+ " ]"
|
||||
else if isAttrs v then "{ "
|
||||
+ concatStringsSep " "
|
||||
(mapAttrsToList
|
||||
(key: value: "${toString key}=${mkValueString value};")
|
||||
v)
|
||||
+ " }"
|
||||
else abort "picom.mkValueString: unexpected type (v = ${v})";
|
||||
in "${escape [ sep ] k}${sep}${mkValueString v};")
|
||||
attrs);
|
||||
mkDefaultAttrs = mapAttrs (n: v: mkDefault v);
|
||||
|
||||
# Basically a tinkered lib.generators.mkKeyValueDefault
|
||||
# It either serializes a top-level definition "key: { values };"
|
||||
# or an expression "key = { values };"
|
||||
mkAttrsString = top:
|
||||
mapAttrsToList (k: v:
|
||||
let sep = if (top && isAttrs v) then ":" else "=";
|
||||
in "${escape [ sep ] k}${sep}${mkValueString v};");
|
||||
|
||||
# This serializes a Nix expression to the libconfig format.
|
||||
mkValueString = v:
|
||||
if types.bool.check v then boolToString v
|
||||
else if types.int.check v then toString v
|
||||
else if types.float.check v then toString v
|
||||
else if types.str.check v then "\"${escape [ "\"" ] v}\""
|
||||
else if builtins.isList v then "[ ${concatMapStringsSep " , " mkValueString v} ]"
|
||||
else if types.attrs.check v then "{ ${concatStringsSep " " (mkAttrsString false v) } }"
|
||||
else throw ''
|
||||
invalid expression used in option services.picom.settings:
|
||||
${v}
|
||||
'';
|
||||
|
||||
toConf = attrs: concatStringsSep "\n" (mkAttrsString true cfg.settings);
|
||||
|
||||
configFile = pkgs.writeText "picom.conf" (toConf cfg.settings);
|
||||
|
||||
|
@ -61,7 +70,7 @@ in {
|
|||
};
|
||||
|
||||
fadeDelta = mkOption {
|
||||
type = types.addCheck types.int (x: x > 0);
|
||||
type = types.ints.positive;
|
||||
default = 10;
|
||||
example = 5;
|
||||
description = ''
|
||||
|
@ -70,12 +79,11 @@ in {
|
|||
};
|
||||
|
||||
fadeSteps = mkOption {
|
||||
type = pairOf (floatBetween "0.01" "1.01");
|
||||
default = [ "0.028" "0.03" ];
|
||||
example = [ "0.04" "0.04" ];
|
||||
type = pairOf (floatBetween 0.01 1);
|
||||
default = [ 0.028 0.03 ];
|
||||
example = [ 0.04 0.04 ];
|
||||
description = ''
|
||||
Opacity change between fade steps (in and out).
|
||||
(numbers in range 0.01 - 1.0)
|
||||
'';
|
||||
};
|
||||
|
||||
|
@ -111,11 +119,11 @@ in {
|
|||
};
|
||||
|
||||
shadowOpacity = mkOption {
|
||||
type = floatBetween "0.0" "1.01";
|
||||
default = "0.75";
|
||||
example = "0.8";
|
||||
type = floatBetween 0 1;
|
||||
default = 0.75;
|
||||
example = 0.8;
|
||||
description = ''
|
||||
Window shadows opacity (number in range 0.0 - 1.0).
|
||||
Window shadows opacity.
|
||||
'';
|
||||
};
|
||||
|
||||
|
@ -134,29 +142,29 @@ in {
|
|||
};
|
||||
|
||||
activeOpacity = mkOption {
|
||||
type = floatBetween "0.0" "1.01";
|
||||
default = "1.0";
|
||||
example = "0.8";
|
||||
type = floatBetween 0 1;
|
||||
default = 1.0;
|
||||
example = 0.8;
|
||||
description = ''
|
||||
Opacity of active windows (number in range 0.0 - 1.0).
|
||||
Opacity of active windows.
|
||||
'';
|
||||
};
|
||||
|
||||
inactiveOpacity = mkOption {
|
||||
type = floatBetween "0.1" "1.01";
|
||||
default = "1.0";
|
||||
example = "0.8";
|
||||
type = floatBetween 0.1 1;
|
||||
default = 1.0;
|
||||
example = 0.8;
|
||||
description = ''
|
||||
Opacity of inactive windows (number in range 0.1 - 1.0).
|
||||
Opacity of inactive windows.
|
||||
'';
|
||||
};
|
||||
|
||||
menuOpacity = mkOption {
|
||||
type = floatBetween "0.0" "1.01";
|
||||
default = "1.0";
|
||||
example = "0.8";
|
||||
type = floatBetween 0 1;
|
||||
default = 1.0;
|
||||
example = 0.8;
|
||||
description = ''
|
||||
Opacity of dropdown and popup menu (number in range 0.0 - 1.0).
|
||||
Opacity of dropdown and popup menu.
|
||||
'';
|
||||
};
|
||||
|
||||
|
@ -210,7 +218,7 @@ in {
|
|||
};
|
||||
|
||||
refreshRate = mkOption {
|
||||
type = types.addCheck types.int (x: x >= 0);
|
||||
type = types.ints.unsigned;
|
||||
default = 0;
|
||||
example = 60;
|
||||
description = ''
|
||||
|
@ -218,54 +226,69 @@ in {
|
|||
'';
|
||||
};
|
||||
|
||||
settings = let
|
||||
configTypes = with types; oneOf [ bool int float str ];
|
||||
# types.loaOf converts lists to sets
|
||||
loaOf = t: with types; either (listOf t) (attrsOf t);
|
||||
settings = with types;
|
||||
let
|
||||
scalar = oneOf [ bool int float str ]
|
||||
// { description = "scalar types"; };
|
||||
|
||||
libConfig = oneOf [ scalar (listOf libConfig) (attrsOf libConfig) ]
|
||||
// { description = "libconfig type"; };
|
||||
|
||||
topLevel = attrsOf libConfig
|
||||
// { description = ''
|
||||
libconfig configuration. The format consists of an attributes
|
||||
set (called a group) of settings. Each setting can be a scalar type
|
||||
(boolean, integer, floating point number or string), a list of
|
||||
scalars or a group itself
|
||||
'';
|
||||
};
|
||||
|
||||
in mkOption {
|
||||
type = loaOf (types.either configTypes (loaOf (types.either configTypes (loaOf configTypes))));
|
||||
default = {};
|
||||
type = topLevel;
|
||||
default = { };
|
||||
example = literalExample ''
|
||||
blur =
|
||||
{ method = "gaussian";
|
||||
size = 10;
|
||||
deviation = 5.0;
|
||||
};
|
||||
'';
|
||||
description = ''
|
||||
Additional Picom configuration.
|
||||
Picom settings. Use this option to configure Picom settings not exposed
|
||||
in a NixOS option or to bypass one. For the available options see the
|
||||
CONFIGURATION FILES section at <literal>picom(1)</literal>.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.picom.settings = let
|
||||
# Hard conversion to float, literally lib.toInt but toFloat
|
||||
toFloat = str: let
|
||||
may_be_float = builtins.fromJSON str;
|
||||
in if builtins.isFloat may_be_float
|
||||
then may_be_float
|
||||
else throw "Could not convert ${str} to float.";
|
||||
in {
|
||||
services.picom.settings = mkDefaultAttrs {
|
||||
# fading
|
||||
fading = mkDefault cfg.fade;
|
||||
fade-delta = mkDefault cfg.fadeDelta;
|
||||
fade-in-step = mkDefault (toFloat (elemAt cfg.fadeSteps 0));
|
||||
fade-out-step = mkDefault (toFloat (elemAt cfg.fadeSteps 1));
|
||||
fade-exclude = mkDefault cfg.fadeExclude;
|
||||
fading = cfg.fade;
|
||||
fade-delta = cfg.fadeDelta;
|
||||
fade-in-step = elemAt cfg.fadeSteps 0;
|
||||
fade-out-step = elemAt cfg.fadeSteps 1;
|
||||
fade-exclude = cfg.fadeExclude;
|
||||
|
||||
# shadows
|
||||
shadow = mkDefault cfg.shadow;
|
||||
shadow-offset-x = mkDefault (elemAt cfg.shadowOffsets 0);
|
||||
shadow-offset-y = mkDefault (elemAt cfg.shadowOffsets 1);
|
||||
shadow-opacity = mkDefault (toFloat cfg.shadowOpacity);
|
||||
shadow-exclude = mkDefault cfg.shadowExclude;
|
||||
shadow = cfg.shadow;
|
||||
shadow-offset-x = elemAt cfg.shadowOffsets 0;
|
||||
shadow-offset-y = elemAt cfg.shadowOffsets 1;
|
||||
shadow-opacity = cfg.shadowOpacity;
|
||||
shadow-exclude = cfg.shadowExclude;
|
||||
|
||||
# opacity
|
||||
active-opacity = mkDefault (toFloat cfg.activeOpacity);
|
||||
inactive-opacity = mkDefault (toFloat cfg.inactiveOpacity);
|
||||
active-opacity = cfg.activeOpacity;
|
||||
inactive-opacity = cfg.inactiveOpacity;
|
||||
|
||||
wintypes = mkDefault cfg.wintypes;
|
||||
wintypes = cfg.wintypes;
|
||||
|
||||
opacity-rule = mkDefault cfg.opacityRules;
|
||||
opacity-rule = cfg.opacityRules;
|
||||
|
||||
# other options
|
||||
backend = mkDefault cfg.backend;
|
||||
vsync = mkDefault cfg.vSync;
|
||||
refresh-rate = mkDefault cfg.refreshRate;
|
||||
backend = cfg.backend;
|
||||
vsync = cfg.vSync;
|
||||
refresh-rate = cfg.refreshRate;
|
||||
};
|
||||
|
||||
systemd.user.services.picom = {
|
||||
|
|
|
@ -138,6 +138,10 @@ in
|
|||
|
||||
users.users.resolved.group = "systemd-resolve";
|
||||
|
||||
# add resolve to nss hosts database if enabled and nscd enabled
|
||||
# system.nssModules is configured in nixos/modules/system/boot/systemd.nix
|
||||
system.nssDatabases.hosts = optional config.services.nscd.enable "resolve [!UNAVAIL=return]";
|
||||
|
||||
systemd.additionalUpstreamSystemUnits = [
|
||||
"systemd-resolved.service"
|
||||
];
|
||||
|
|
|
@ -405,6 +405,8 @@ let
|
|||
"hibernate" "hybrid-sleep" "suspend-then-hibernate" "lock"
|
||||
];
|
||||
|
||||
proxy_env = config.networking.proxy.envVars;
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
|
@ -827,6 +829,27 @@ in
|
|||
|
||||
system.build.units = cfg.units;
|
||||
|
||||
# Systemd provides various NSS modules to look up dynamic users, locally
|
||||
# configured IP adresses and local container hostnames.
|
||||
# On NixOS, these can only be passed to the NSS system via nscd (and its
|
||||
# LD_LIBRARY_PATH), which is why it's usually a very good idea to have nscd
|
||||
# enabled (also see the config.nscd.enable description).
|
||||
# While there is already an assertion in place complaining loudly about
|
||||
# having nssModules configured and nscd disabled, for some reason we still
|
||||
# check for nscd being enabled before adding to nssModules.
|
||||
system.nssModules = optional config.services.nscd.enable systemd.out;
|
||||
system.nssDatabases = mkIf config.services.nscd.enable {
|
||||
hosts = (mkMerge [
|
||||
[ "mymachines" ]
|
||||
(mkOrder 1600 [ "myhostname" ] # 1600 to ensure it's always the last
|
||||
)
|
||||
]);
|
||||
passwd = (mkMerge [
|
||||
[ "mymachines" ]
|
||||
(mkAfter [ "systemd" ])
|
||||
]);
|
||||
};
|
||||
|
||||
environment.systemPackages = [ systemd ];
|
||||
|
||||
environment.etc = let
|
||||
|
@ -1035,6 +1058,7 @@ in
|
|||
systemd.targets.remote-fs.unitConfig.X-StopOnReconfiguration = true;
|
||||
systemd.targets.network-online.wantedBy = [ "multi-user.target" ];
|
||||
systemd.services.systemd-binfmt.wants = [ "proc-sys-fs-binfmt_misc.mount" ];
|
||||
systemd.services.systemd-importd.environment = proxy_env;
|
||||
|
||||
# Don't bother with certain units in containers.
|
||||
systemd.services.systemd-remount-fs.unitConfig.ConditionVirtualization = "!container";
|
||||
|
|
|
@ -189,9 +189,18 @@ let
|
|||
mkdir /boot/grub
|
||||
echo '(hd0) /dev/vda' > /boot/grub/device.map
|
||||
|
||||
# Install GRUB and generate the GRUB boot menu.
|
||||
touch /etc/NIXOS
|
||||
# This is needed for systemd-boot to find ESP, and udev is not available here to create this
|
||||
mkdir -p /dev/block
|
||||
ln -s /dev/vda2 /dev/block/254:2
|
||||
|
||||
# Set up system profile (normally done by nixos-rebuild / nix-env --set)
|
||||
mkdir -p /nix/var/nix/profiles
|
||||
ln -s ${config.system.build.toplevel} /nix/var/nix/profiles/system-1-link
|
||||
ln -s /nix/var/nix/profiles/system-1-link /nix/var/nix/profiles/system
|
||||
|
||||
# Install bootloader
|
||||
touch /etc/NIXOS
|
||||
export NIXOS_INSTALL_BOOTLOADER=1
|
||||
${config.system.build.toplevel}/bin/switch-to-configuration boot
|
||||
|
||||
umount /boot
|
||||
|
|
|
@ -24,7 +24,6 @@ in
|
|||
_3proxy = handleTest ./3proxy.nix {};
|
||||
acme = handleTest ./acme.nix {};
|
||||
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
|
||||
|
@ -85,6 +84,7 @@ in
|
|||
ecryptfs = handleTest ./ecryptfs.nix {};
|
||||
ejabberd = handleTest ./xmpp/ejabberd.nix {};
|
||||
elk = handleTestOn ["x86_64-linux"] ./elk.nix {};
|
||||
enlightenment = handleTest ./enlightenment.nix {};
|
||||
env = handleTest ./env.nix {};
|
||||
etcd = handleTestOn ["x86_64-linux"] ./etcd.nix {};
|
||||
etcd-cluster = handleTestOn ["x86_64-linux"] ./etcd-cluster.nix {};
|
||||
|
@ -164,7 +164,6 @@ in
|
|||
kubernetes.rbac = handleTestOn ["x86_64-linux"] ./kubernetes/rbac.nix {};
|
||||
latestKernel.hardened = handleTest ./hardened.nix { latestKernel = true; };
|
||||
latestKernel.login = handleTest ./login.nix { latestKernel = true; };
|
||||
ldap = handleTest ./ldap.nix {};
|
||||
leaps = handleTest ./leaps.nix {};
|
||||
lidarr = handleTest ./lidarr.nix {};
|
||||
lightdm = handleTest ./lightdm.nix {};
|
||||
|
@ -176,6 +175,8 @@ in
|
|||
magnetico = handleTest ./magnetico.nix {};
|
||||
magic-wormhole-mailbox-server = handleTest ./magic-wormhole-mailbox-server.nix {};
|
||||
mailcatcher = handleTest ./mailcatcher.nix {};
|
||||
mariadb-galera-mariabackup = handleTest ./mysql/mariadb-galera-mariabackup.nix {};
|
||||
mariadb-galera-rsync = handleTest ./mysql/mariadb-galera-rsync.nix {};
|
||||
mathics = handleTest ./mathics.nix {};
|
||||
matomo = handleTest ./matomo.nix {};
|
||||
matrix-synapse = handleTest ./matrix-synapse.nix {};
|
||||
|
@ -197,9 +198,10 @@ in
|
|||
munin = handleTest ./munin.nix {};
|
||||
mutableUsers = handleTest ./mutable-users.nix {};
|
||||
mxisd = handleTest ./mxisd.nix {};
|
||||
mysql = handleTest ./mysql.nix {};
|
||||
mysqlBackup = handleTest ./mysql-backup.nix {};
|
||||
mysqlReplication = handleTest ./mysql-replication.nix {};
|
||||
mysql = handleTest ./mysql/mysql.nix {};
|
||||
mysql-autobackup = handleTest ./mysql/mysql-autobackup.nix {};
|
||||
mysql-backup = handleTest ./mysql/mysql-backup.nix {};
|
||||
mysql-replication = handleTest ./mysql/mysql-replication.nix {};
|
||||
nagios = handleTest ./nagios.nix {};
|
||||
nat.firewall = handleTest ./nat.nix { withFirewall = true; };
|
||||
nat.firewall-conntrack = handleTest ./nat.nix { withFirewall = true; withConntrackHelpers = true; };
|
||||
|
@ -297,6 +299,7 @@ in
|
|||
syncthing-relay = handleTest ./syncthing-relay.nix {};
|
||||
systemd = handleTest ./systemd.nix {};
|
||||
systemd-analyze = handleTest ./systemd-analyze.nix {};
|
||||
systemd-boot = handleTestOn ["x86_64-linux"] ./systemd-boot.nix {};
|
||||
systemd-confinement = handleTest ./systemd-confinement.nix {};
|
||||
systemd-timesyncd = handleTest ./systemd-timesyncd.nix {};
|
||||
systemd-networkd-vrf = handleTest ./systemd-networkd-vrf.nix {};
|
||||
|
@ -320,6 +323,7 @@ in
|
|||
trickster = handleTest ./trickster.nix {};
|
||||
tuptime = handleTest ./tuptime.nix {};
|
||||
udisks2 = handleTest ./udisks2.nix {};
|
||||
unit-php = handleTest ./web-servers/unit-php.nix {};
|
||||
upnp = handleTest ./upnp.nix {};
|
||||
uwsgi = handleTest ./uwsgi.nix {};
|
||||
vault = handleTest ./vault.nix {};
|
||||
|
|
101
nixos/tests/enlightenment.nix
Normal file
101
nixos/tests/enlightenment.nix
Normal file
|
@ -0,0 +1,101 @@
|
|||
import ./make-test-python.nix ({ pkgs, ...} :
|
||||
{
|
||||
name = "enlightenment";
|
||||
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ romildo ];
|
||||
};
|
||||
|
||||
machine = { ... }:
|
||||
{
|
||||
imports = [ ./common/user-account.nix ];
|
||||
services.xserver.enable = true;
|
||||
services.xserver.desktopManager.enlightenment.enable = true;
|
||||
services.xserver.displayManager.lightdm = {
|
||||
enable = true;
|
||||
autoLogin = {
|
||||
enable = true;
|
||||
user = "alice";
|
||||
};
|
||||
};
|
||||
hardware.pulseaudio.enable = true; # needed for the factl test, /dev/snd/* exists without them but udev doesn't care then
|
||||
virtualisation.memorySize = 1024;
|
||||
environment.systemPackages = [ pkgs.xdotool ];
|
||||
services.acpid.enable = true;
|
||||
services.connman.enable = true;
|
||||
services.connman.package = pkgs.connmanMinimal;
|
||||
};
|
||||
|
||||
enableOCR = true;
|
||||
|
||||
testScript = { nodes, ... }: let
|
||||
user = nodes.machine.config.users.users.alice;
|
||||
in ''
|
||||
with subtest("Ensure x starts"):
|
||||
machine.wait_for_x()
|
||||
machine.wait_for_file("${user.home}/.Xauthority")
|
||||
machine.succeed("xauth merge ${user.home}/.Xauthority")
|
||||
|
||||
with subtest("Check that logging in has given the user ownership of devices"):
|
||||
machine.succeed("getfacl -p /dev/snd/timer | grep -q ${user.name}")
|
||||
|
||||
with subtest("First time wizard"):
|
||||
machine.wait_for_text("Default") # Language
|
||||
machine.succeed("xdotool mousemove 512 185 click 1") # Default Language
|
||||
machine.screenshot("wizard1")
|
||||
machine.succeed("xdotool mousemove 512 740 click 1") # Next
|
||||
|
||||
machine.wait_for_text("English") # Keyboard (default)
|
||||
machine.screenshot("wizard2")
|
||||
machine.succeed("xdotool mousemove 512 740 click 1") # Next
|
||||
|
||||
machine.wait_for_text("Standard") # Profile (default)
|
||||
machine.screenshot("wizard3")
|
||||
machine.succeed("xdotool mousemove 512 740 click 1") # Next
|
||||
|
||||
machine.wait_for_text("Title") # Sizing (default)
|
||||
machine.screenshot("wizard4")
|
||||
machine.succeed("xdotool mousemove 512 740 click 1") # Next
|
||||
|
||||
machine.wait_for_text("clicked") # Windows Phocus
|
||||
machine.succeed("xdotool mousemove 512 370 click 1") # Click
|
||||
machine.screenshot("wizard5")
|
||||
machine.succeed("xdotool mousemove 512 740 click 1") # Next
|
||||
|
||||
machine.wait_for_text("bindings") # Mouse Modifiers (default)
|
||||
machine.screenshot("wizard6")
|
||||
machine.succeed("xdotool mousemove 512 740 click 1") # Next
|
||||
|
||||
machine.wait_for_text("Connman") # Network Management (default)
|
||||
machine.screenshot("wizard7")
|
||||
machine.succeed("xdotool mousemove 512 740 click 1") # Next
|
||||
|
||||
machine.wait_for_text("BlusZ") # Bluetooh Management (default)
|
||||
machine.screenshot("wizard8")
|
||||
machine.succeed("xdotool mousemove 512 740 click 1") # Next
|
||||
|
||||
machine.wait_for_text("Compositing") # Compositing (default)
|
||||
machine.screenshot("wizard9")
|
||||
machine.succeed("xdotool mousemove 512 740 click 1") # Next
|
||||
|
||||
machine.wait_for_text("update") # Updates
|
||||
machine.succeed("xdotool mousemove 512 495 click 1") # Disable
|
||||
machine.screenshot("wizard10")
|
||||
machine.succeed("xdotool mousemove 512 740 click 1") # Next
|
||||
|
||||
machine.wait_for_text("taskbar") # Taskbar
|
||||
machine.succeed("xdotool mousemove 480 410 click 1") # Enable
|
||||
machine.screenshot("wizard11")
|
||||
machine.succeed("xdotool mousemove 512 740 click 1") # Next
|
||||
|
||||
machine.wait_for_text("Home") # The desktop
|
||||
machine.screenshot("wizard12")
|
||||
|
||||
with subtest("Run Terminology"):
|
||||
machine.succeed("terminology &")
|
||||
machine.sleep(5)
|
||||
machine.send_chars("ls --color -alF\n")
|
||||
machine.sleep(2)
|
||||
machine.screenshot("terminology")
|
||||
'';
|
||||
})
|
|
@ -1,405 +0,0 @@
|
|||
import ./make-test-python.nix ({ pkgs, lib, ...} :
|
||||
|
||||
let
|
||||
unlines = lib.concatStringsSep "\n";
|
||||
unlinesAttrs = f: as: unlines (lib.mapAttrsToList f as);
|
||||
|
||||
dbDomain = "example.com";
|
||||
dbSuffix = "dc=example,dc=com";
|
||||
dbAdminDn = "cn=admin,${dbSuffix}";
|
||||
dbAdminPwd = "admin-password";
|
||||
# NOTE: slappasswd -h "{SSHA}" -s '${dbAdminPwd}'
|
||||
dbAdminPwdHash = "{SSHA}i7FopSzkFQMrHzDMB1vrtkI0rBnwouP8";
|
||||
ldapUser = "test-ldap-user";
|
||||
ldapUserId = 10000;
|
||||
ldapUserPwd = "user-password";
|
||||
# NOTE: slappasswd -h "{SSHA}" -s '${ldapUserPwd}'
|
||||
ldapUserPwdHash = "{SSHA}v12XICMZNGT6r2KJ26rIkN8Vvvp4QX6i";
|
||||
ldapGroup = "test-ldap-group";
|
||||
ldapGroupId = 10000;
|
||||
|
||||
mkClient = useDaemon:
|
||||
{ lib, ... }:
|
||||
{
|
||||
virtualisation.memorySize = 256;
|
||||
virtualisation.vlans = [ 1 ];
|
||||
security.pam.services.su.rootOK = lib.mkForce false;
|
||||
users.ldap.enable = true;
|
||||
users.ldap.daemon = {
|
||||
enable = useDaemon;
|
||||
rootpwmoddn = "cn=admin,${dbSuffix}";
|
||||
rootpwmodpwFile = "/etc/nslcd.rootpwmodpw";
|
||||
};
|
||||
users.ldap.loginPam = true;
|
||||
users.ldap.nsswitch = true;
|
||||
users.ldap.server = "ldap://server";
|
||||
users.ldap.base = "ou=posix,${dbSuffix}";
|
||||
users.ldap.bind = {
|
||||
distinguishedName = "cn=admin,${dbSuffix}";
|
||||
passwordFile = "/etc/ldap/bind.password";
|
||||
};
|
||||
# NOTE: passwords stored in clear in Nix's store, but this is a test.
|
||||
environment.etc."ldap/bind.password".source = pkgs.writeText "password" dbAdminPwd;
|
||||
environment.etc."nslcd.rootpwmodpw".source = pkgs.writeText "rootpwmodpw" dbAdminPwd;
|
||||
};
|
||||
in
|
||||
|
||||
{
|
||||
name = "ldap";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ montag451 ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
|
||||
server =
|
||||
{ pkgs, config, ... }:
|
||||
let
|
||||
inherit (config.services) openldap;
|
||||
|
||||
slapdConfig = pkgs.writeText "cn=config.ldif" (''
|
||||
dn: cn=config
|
||||
objectClass: olcGlobal
|
||||
#olcPidFile: /run/slapd/slapd.pid
|
||||
# List of arguments that were passed to the server
|
||||
#olcArgsFile: /run/slapd/slapd.args
|
||||
# Read slapd-config(5) for possible values
|
||||
olcLogLevel: none
|
||||
# The tool-threads parameter sets the actual amount of CPU's
|
||||
# that is used for indexing.
|
||||
olcToolThreads: 1
|
||||
|
||||
dn: olcDatabase={-1}frontend,cn=config
|
||||
objectClass: olcDatabaseConfig
|
||||
objectClass: olcFrontendConfig
|
||||
# The maximum number of entries that is returned for a search operation
|
||||
olcSizeLimit: 500
|
||||
# Allow unlimited access to local connection from the local root user
|
||||
olcAccess: to *
|
||||
by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage
|
||||
by * break
|
||||
# Allow unauthenticated read access for schema and base DN autodiscovery
|
||||
olcAccess: to dn.exact=""
|
||||
by * read
|
||||
olcAccess: to dn.base="cn=Subschema"
|
||||
by * read
|
||||
|
||||
dn: olcDatabase=config,cn=config
|
||||
objectClass: olcDatabaseConfig
|
||||
olcRootDN: cn=admin,cn=config
|
||||
#olcRootPW:
|
||||
# NOTE: access to cn=config, system root can be manager
|
||||
# with SASL mechanism (-Y EXTERNAL) over unix socket (-H ldapi://)
|
||||
olcAccess: to *
|
||||
by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
|
||||
by * break
|
||||
|
||||
dn: cn=schema,cn=config
|
||||
objectClass: olcSchemaConfig
|
||||
|
||||
include: file://${pkgs.openldap}/etc/schema/core.ldif
|
||||
include: file://${pkgs.openldap}/etc/schema/cosine.ldif
|
||||
include: file://${pkgs.openldap}/etc/schema/nis.ldif
|
||||
include: file://${pkgs.openldap}/etc/schema/inetorgperson.ldif
|
||||
|
||||
dn: cn=module{0},cn=config
|
||||
objectClass: olcModuleList
|
||||
# Where the dynamically loaded modules are stored
|
||||
#olcModulePath: /usr/lib/ldap
|
||||
olcModuleLoad: back_mdb
|
||||
|
||||
''
|
||||
+ unlinesAttrs (olcSuffix: {conf, ...}:
|
||||
"include: file://" + pkgs.writeText "config.ldif" conf
|
||||
) slapdDatabases
|
||||
);
|
||||
|
||||
slapdDatabases = {
|
||||
${dbSuffix} = {
|
||||
conf = ''
|
||||
dn: olcBackend={1}mdb,cn=config
|
||||
objectClass: olcBackendConfig
|
||||
|
||||
dn: olcDatabase={1}mdb,cn=config
|
||||
olcSuffix: ${dbSuffix}
|
||||
olcDbDirectory: ${openldap.dataDir}/${dbSuffix}
|
||||
objectClass: olcDatabaseConfig
|
||||
objectClass: olcMdbConfig
|
||||
# NOTE: checkpoint the database periodically in case of system failure
|
||||
# and to speed up slapd shutdown.
|
||||
olcDbCheckpoint: 512 30
|
||||
# Database max size is 1G
|
||||
olcDbMaxSize: 1073741824
|
||||
olcLastMod: TRUE
|
||||
# NOTE: database superuser. Needed for syncrepl,
|
||||
# and used to auth as admin through a TCP connection.
|
||||
olcRootDN: cn=admin,${dbSuffix}
|
||||
olcRootPW: ${dbAdminPwdHash}
|
||||
#
|
||||
olcDbIndex: objectClass eq
|
||||
olcDbIndex: cn,uid eq
|
||||
olcDbIndex: uidNumber,gidNumber eq
|
||||
olcDbIndex: member,memberUid eq
|
||||
#
|
||||
olcAccess: to attrs=userPassword
|
||||
by self write
|
||||
by anonymous auth
|
||||
by dn="cn=admin,${dbSuffix}" write
|
||||
by dn="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" write
|
||||
by * none
|
||||
olcAccess: to attrs=shadowLastChange
|
||||
by self write
|
||||
by dn="cn=admin,${dbSuffix}" write
|
||||
by dn="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" write
|
||||
by * none
|
||||
olcAccess: to dn.sub="ou=posix,${dbSuffix}"
|
||||
by self read
|
||||
by dn="cn=admin,${dbSuffix}" read
|
||||
by dn="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read
|
||||
olcAccess: to *
|
||||
by self read
|
||||
by * none
|
||||
'';
|
||||
data = ''
|
||||
dn: ${dbSuffix}
|
||||
objectClass: top
|
||||
objectClass: dcObject
|
||||
objectClass: organization
|
||||
o: ${dbDomain}
|
||||
|
||||
dn: cn=admin,${dbSuffix}
|
||||
objectClass: simpleSecurityObject
|
||||
objectClass: organizationalRole
|
||||
description: ${dbDomain} LDAP administrator
|
||||
roleOccupant: ${dbSuffix}
|
||||
userPassword: ${ldapUserPwdHash}
|
||||
|
||||
dn: ou=posix,${dbSuffix}
|
||||
objectClass: top
|
||||
objectClass: organizationalUnit
|
||||
|
||||
dn: ou=accounts,ou=posix,${dbSuffix}
|
||||
objectClass: top
|
||||
objectClass: organizationalUnit
|
||||
|
||||
dn: ou=groups,ou=posix,${dbSuffix}
|
||||
objectClass: top
|
||||
objectClass: organizationalUnit
|
||||
''
|
||||
+ lib.concatMapStrings posixAccount [
|
||||
{ uid=ldapUser; uidNumber=ldapUserId; gidNumber=ldapGroupId; userPassword=ldapUserPwdHash; }
|
||||
]
|
||||
+ lib.concatMapStrings posixGroup [
|
||||
{ gid=ldapGroup; gidNumber=ldapGroupId; members=[]; }
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
# NOTE: create a user account using the posixAccount objectClass.
|
||||
posixAccount =
|
||||
{ uid
|
||||
, uidNumber ? null
|
||||
, gidNumber ? null
|
||||
, cn ? ""
|
||||
, sn ? ""
|
||||
, userPassword ? ""
|
||||
, loginShell ? "/bin/sh"
|
||||
}: ''
|
||||
|
||||
dn: uid=${uid},ou=accounts,ou=posix,${dbSuffix}
|
||||
objectClass: person
|
||||
objectClass: posixAccount
|
||||
objectClass: shadowAccount
|
||||
cn: ${cn}
|
||||
gecos:
|
||||
${if gidNumber == null then "#" else "gidNumber: ${toString gidNumber}"}
|
||||
homeDirectory: /home/${uid}
|
||||
loginShell: ${loginShell}
|
||||
sn: ${sn}
|
||||
${if uidNumber == null then "#" else "uidNumber: ${toString uidNumber}"}
|
||||
${if userPassword == "" then "#" else "userPassword: ${userPassword}"}
|
||||
'';
|
||||
|
||||
# NOTE: create a group using the posixGroup objectClass.
|
||||
posixGroup =
|
||||
{ gid
|
||||
, gidNumber
|
||||
, members
|
||||
}: ''
|
||||
|
||||
dn: cn=${gid},ou=groups,ou=posix,${dbSuffix}
|
||||
objectClass: top
|
||||
objectClass: posixGroup
|
||||
gidNumber: ${toString gidNumber}
|
||||
${lib.concatMapStrings (member: "memberUid: ${member}\n") members}
|
||||
'';
|
||||
in
|
||||
{
|
||||
virtualisation.memorySize = 256;
|
||||
virtualisation.vlans = [ 1 ];
|
||||
networking.firewall.allowedTCPPorts = [ 389 ];
|
||||
services.openldap.enable = true;
|
||||
services.openldap.dataDir = "/var/db/openldap";
|
||||
services.openldap.configDir = "/var/db/slapd";
|
||||
services.openldap.urlList = [
|
||||
"ldap:///"
|
||||
"ldapi:///"
|
||||
];
|
||||
systemd.services.openldap = {
|
||||
preStart = ''
|
||||
set -e
|
||||
# NOTE: slapd's config is always re-initialized.
|
||||
rm -rf "${openldap.configDir}"/cn=config \
|
||||
"${openldap.configDir}"/cn=config.ldif
|
||||
install -D -d -m 0700 -o "${openldap.user}" -g "${openldap.group}" "${openldap.configDir}"
|
||||
# NOTE: olcDbDirectory must be created before adding the config.
|
||||
'' +
|
||||
unlinesAttrs (olcSuffix: {data, ...}: ''
|
||||
# NOTE: database is always re-initialized.
|
||||
rm -rf "${openldap.dataDir}/${olcSuffix}"
|
||||
install -D -d -m 0700 -o "${openldap.user}" -g "${openldap.group}" \
|
||||
"${openldap.dataDir}/${olcSuffix}"
|
||||
'') slapdDatabases
|
||||
+ ''
|
||||
# NOTE: slapd is supposed to be stopped while in preStart,
|
||||
# hence slap* commands can safely be used.
|
||||
umask 0077
|
||||
${pkgs.openldap}/bin/slapadd -n 0 \
|
||||
-F "${openldap.configDir}" \
|
||||
-l ${slapdConfig}
|
||||
chown -R "${openldap.user}:${openldap.group}" "${openldap.configDir}"
|
||||
# NOTE: slapadd(8): To populate the config database slapd-config(5),
|
||||
# use -n 0 as it is always the first database.
|
||||
# It must physically exist on the filesystem prior to this, however.
|
||||
'' +
|
||||
unlinesAttrs (olcSuffix: {data, ...}: ''
|
||||
# NOTE: load database ${olcSuffix}
|
||||
# (as root to avoid depending on sudo or chpst)
|
||||
${pkgs.openldap}/bin/slapadd \
|
||||
-F "${openldap.configDir}" \
|
||||
-l ${pkgs.writeText "data.ldif" data}
|
||||
'' + ''
|
||||
# NOTE: redundant with default openldap's preStart, but do not harm.
|
||||
chown -R "${openldap.user}:${openldap.group}" \
|
||||
"${openldap.dataDir}/${olcSuffix}"
|
||||
'') slapdDatabases;
|
||||
};
|
||||
};
|
||||
|
||||
client1 = mkClient true; # use nss_pam_ldapd
|
||||
client2 = mkClient false; # use nss_ldap and pam_ldap
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
def expect_script(*commands):
|
||||
script = ";".join(commands)
|
||||
return f"${pkgs.expect}/bin/expect -c '{script}'"
|
||||
|
||||
|
||||
server.start()
|
||||
server.wait_for_unit("default.target")
|
||||
|
||||
with subtest("slapd: auth as database admin with SASL and check a POSIX account"):
|
||||
server.succeed(
|
||||
'test "$(ldapsearch -LLL -H ldapi:// -Y EXTERNAL '
|
||||
+ "-b 'uid=${ldapUser},ou=accounts,ou=posix,${dbSuffix}' "
|
||||
+ "-s base uidNumber | "
|
||||
+ "sed -ne 's/^uidNumber: \\(.*\\)/\\1/p')\" -eq ${toString ldapUserId}"
|
||||
)
|
||||
|
||||
with subtest("slapd: auth as database admin with password and check a POSIX account"):
|
||||
server.succeed(
|
||||
"test \"$(ldapsearch -LLL -H ldap://server -D 'cn=admin,${dbSuffix}' "
|
||||
+ "-w '${dbAdminPwd}' -b 'uid=${ldapUser},ou=accounts,ou=posix,${dbSuffix}' "
|
||||
+ "-s base uidNumber | "
|
||||
+ "sed -ne 's/^uidNumber: \\(.*\\)/\\1/p')\" -eq ${toString ldapUserId}"
|
||||
)
|
||||
|
||||
client1.start()
|
||||
client1.wait_for_unit("default.target")
|
||||
|
||||
with subtest("password: su with password to a POSIX account"):
|
||||
client1.succeed(
|
||||
expect_script(
|
||||
'spawn su "${ldapUser}"',
|
||||
'expect "Password:"',
|
||||
'send "${ldapUserPwd}\n"',
|
||||
'expect "*"',
|
||||
'send "whoami\n"',
|
||||
'expect -ex "${ldapUser}" {exit}',
|
||||
"exit 1",
|
||||
)
|
||||
)
|
||||
|
||||
with subtest("password: change password of a POSIX account as root"):
|
||||
client1.succeed(
|
||||
"chpasswd <<<'${ldapUser}:new-password'",
|
||||
expect_script(
|
||||
'spawn su "${ldapUser}"',
|
||||
'expect "Password:"',
|
||||
'send "new-password\n"',
|
||||
'expect "*"',
|
||||
'send "whoami\n"',
|
||||
'expect -ex "${ldapUser}" {exit}',
|
||||
"exit 1",
|
||||
),
|
||||
"chpasswd <<<'${ldapUser}:${ldapUserPwd}'",
|
||||
)
|
||||
|
||||
with subtest("password: change password of a POSIX account from itself"):
|
||||
client1.succeed(
|
||||
"chpasswd <<<'${ldapUser}:${ldapUserPwd}' ",
|
||||
expect_script(
|
||||
"spawn su --login ${ldapUser} -c passwd",
|
||||
'expect "Password: "',
|
||||
'send "${ldapUserPwd}\n"',
|
||||
'expect "(current) UNIX password: "',
|
||||
'send "${ldapUserPwd}\n"',
|
||||
'expect "New password: "',
|
||||
'send "new-password\n"',
|
||||
'expect "Retype new password: "',
|
||||
'send "new-password\n"',
|
||||
'expect "passwd: password updated successfully" {exit}',
|
||||
"exit 1",
|
||||
),
|
||||
expect_script(
|
||||
'spawn su "${ldapUser}"',
|
||||
'expect "Password:"',
|
||||
'send "${ldapUserPwd}\n"',
|
||||
'expect "su: Authentication failure" {exit}',
|
||||
"exit 1",
|
||||
),
|
||||
expect_script(
|
||||
'spawn su "${ldapUser}"',
|
||||
'expect "Password:"',
|
||||
'send "new-password\n"',
|
||||
'expect "*"',
|
||||
'send "whoami\n"',
|
||||
'expect -ex "${ldapUser}" {exit}',
|
||||
"exit 1",
|
||||
),
|
||||
"chpasswd <<<'${ldapUser}:${ldapUserPwd}'",
|
||||
)
|
||||
|
||||
client2.start()
|
||||
client2.wait_for_unit("default.target")
|
||||
|
||||
with subtest("NSS"):
|
||||
client1.succeed(
|
||||
"test \"$(id -u '${ldapUser}')\" -eq ${toString ldapUserId}",
|
||||
"test \"$(id -u -n '${ldapUser}')\" = '${ldapUser}'",
|
||||
"test \"$(id -g '${ldapUser}')\" -eq ${toString ldapGroupId}",
|
||||
"test \"$(id -g -n '${ldapUser}')\" = '${ldapGroup}'",
|
||||
"test \"$(id -u '${ldapUser}')\" -eq ${toString ldapUserId}",
|
||||
"test \"$(id -u -n '${ldapUser}')\" = '${ldapUser}'",
|
||||
"test \"$(id -g '${ldapUser}')\" -eq ${toString ldapGroupId}",
|
||||
"test \"$(id -g -n '${ldapUser}')\" = '${ldapGroup}'",
|
||||
)
|
||||
|
||||
with subtest("PAM"):
|
||||
client1.succeed(
|
||||
"echo ${ldapUserPwd} | su -l '${ldapUser}' -c true",
|
||||
"echo ${ldapUserPwd} | su -l '${ldapUser}' -c true",
|
||||
)
|
||||
'';
|
||||
})
|
223
nixos/tests/mysql/mariadb-galera-mariabackup.nix
Normal file
223
nixos/tests/mysql/mariadb-galera-mariabackup.nix
Normal file
|
@ -0,0 +1,223 @@
|
|||
import ./../make-test-python.nix ({ pkgs, ...} :
|
||||
|
||||
let
|
||||
mysqlenv-common = pkgs.buildEnv { name = "mysql-path-env-common"; pathsToLink = [ "/bin" ]; paths = with pkgs; [ bash gawk gnutar inetutils which ]; };
|
||||
mysqlenv-mariabackup = pkgs.buildEnv { name = "mysql-path-env-mariabackup"; pathsToLink = [ "/bin" ]; paths = with pkgs; [ gzip iproute netcat procps pv socat ]; };
|
||||
|
||||
in {
|
||||
name = "mariadb-galera-mariabackup";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ izorkin ];
|
||||
};
|
||||
|
||||
# The test creates a Galera cluster with 3 nodes and is checking if mariabackup-based SST works. The cluster is tested by creating a DB and an empty table on one node,
|
||||
# and checking the table's presence on the other node.
|
||||
|
||||
nodes = {
|
||||
galera_01 =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
networking = {
|
||||
interfaces.eth1 = {
|
||||
ipv4.addresses = [
|
||||
{ address = "192.168.1.1"; prefixLength = 24; }
|
||||
];
|
||||
};
|
||||
extraHosts = ''
|
||||
192.168.1.1 galera_01
|
||||
192.168.1.2 galera_02
|
||||
192.168.1.3 galera_03
|
||||
'';
|
||||
firewall.allowedTCPPorts = [ 3306 4444 4567 4568 ];
|
||||
firewall.allowedUDPPorts = [ 4567 ];
|
||||
};
|
||||
users.users.testuser = { };
|
||||
systemd.services.mysql = with pkgs; {
|
||||
path = [ mysqlenv-common mysqlenv-mariabackup ];
|
||||
};
|
||||
services.mysql = {
|
||||
enable = true;
|
||||
package = pkgs.mariadb;
|
||||
ensureDatabases = [ "testdb" ];
|
||||
ensureUsers = [{
|
||||
name = "testuser";
|
||||
ensurePermissions = {
|
||||
"testdb.*" = "ALL PRIVILEGES";
|
||||
};
|
||||
}];
|
||||
initialScript = pkgs.writeText "mariadb-init.sql" ''
|
||||
GRANT ALL PRIVILEGES ON *.* TO 'check_repl'@'localhost' IDENTIFIED BY 'check_pass' WITH GRANT OPTION;
|
||||
FLUSH PRIVILEGES;
|
||||
'';
|
||||
settings = {
|
||||
mysqld = {
|
||||
bind_address = "0.0.0.0";
|
||||
};
|
||||
galera = {
|
||||
wsrep_on = "ON";
|
||||
wsrep_debug = "OFF";
|
||||
wsrep_retry_autocommit = "3";
|
||||
wsrep_provider = "${pkgs.mariadb-galera_25}/lib/galera/libgalera_smm.so";
|
||||
wsrep_cluster_address = "gcomm://";
|
||||
wsrep_cluster_name = "galera";
|
||||
wsrep_node_address = "192.168.1.1";
|
||||
wsrep_node_name = "galera_01";
|
||||
wsrep_sst_method = "mariabackup";
|
||||
wsrep_sst_auth = "check_repl:check_pass";
|
||||
binlog_format = "ROW";
|
||||
enforce_storage_engine = "InnoDB";
|
||||
innodb_autoinc_lock_mode = "2";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
galera_02 =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
networking = {
|
||||
interfaces.eth1 = {
|
||||
ipv4.addresses = [
|
||||
{ address = "192.168.1.2"; prefixLength = 24; }
|
||||
];
|
||||
};
|
||||
extraHosts = ''
|
||||
192.168.1.1 galera_01
|
||||
192.168.1.2 galera_02
|
||||
192.168.1.3 galera_03
|
||||
'';
|
||||
firewall.allowedTCPPorts = [ 3306 4444 4567 4568 ];
|
||||
firewall.allowedUDPPorts = [ 4567 ];
|
||||
};
|
||||
users.users.testuser = { };
|
||||
systemd.services.mysql = with pkgs; {
|
||||
path = [ mysqlenv-common mysqlenv-mariabackup ];
|
||||
};
|
||||
services.mysql = {
|
||||
enable = true;
|
||||
package = pkgs.mariadb;
|
||||
settings = {
|
||||
mysqld = {
|
||||
bind_address = "0.0.0.0";
|
||||
};
|
||||
galera = {
|
||||
wsrep_on = "ON";
|
||||
wsrep_debug = "OFF";
|
||||
wsrep_retry_autocommit = "3";
|
||||
wsrep_provider = "${pkgs.mariadb-galera_25}/lib/galera/libgalera_smm.so";
|
||||
wsrep_cluster_address = "gcomm://galera_01,galera_02,galera_03";
|
||||
wsrep_cluster_name = "galera";
|
||||
wsrep_node_address = "192.168.1.2";
|
||||
wsrep_node_name = "galera_02";
|
||||
wsrep_sst_method = "mariabackup";
|
||||
wsrep_sst_auth = "check_repl:check_pass";
|
||||
binlog_format = "ROW";
|
||||
enforce_storage_engine = "InnoDB";
|
||||
innodb_autoinc_lock_mode = "2";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
galera_03 =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
networking = {
|
||||
interfaces.eth1 = {
|
||||
ipv4.addresses = [
|
||||
{ address = "192.168.1.3"; prefixLength = 24; }
|
||||
];
|
||||
};
|
||||
extraHosts = ''
|
||||
192.168.1.1 galera_01
|
||||
192.168.1.2 galera_02
|
||||
192.168.1.3 galera_03
|
||||
'';
|
||||
firewall.allowedTCPPorts = [ 3306 4444 4567 4568 ];
|
||||
firewall.allowedUDPPorts = [ 4567 ];
|
||||
};
|
||||
users.users.testuser = { };
|
||||
systemd.services.mysql = with pkgs; {
|
||||
path = [ mysqlenv-common mysqlenv-mariabackup ];
|
||||
};
|
||||
services.mysql = {
|
||||
enable = true;
|
||||
package = pkgs.mariadb;
|
||||
settings = {
|
||||
mysqld = {
|
||||
bind_address = "0.0.0.0";
|
||||
};
|
||||
galera = {
|
||||
wsrep_on = "ON";
|
||||
wsrep_debug = "OFF";
|
||||
wsrep_retry_autocommit = "3";
|
||||
wsrep_provider = "${pkgs.mariadb-galera_25}/lib/galera/libgalera_smm.so";
|
||||
wsrep_cluster_address = "gcomm://galera_01,galera_02,galera_03";
|
||||
wsrep_cluster_name = "galera";
|
||||
wsrep_node_address = "192.168.1.3";
|
||||
wsrep_node_name = "galera_03";
|
||||
wsrep_sst_method = "mariabackup";
|
||||
wsrep_sst_auth = "check_repl:check_pass";
|
||||
binlog_format = "ROW";
|
||||
enforce_storage_engine = "InnoDB";
|
||||
innodb_autoinc_lock_mode = "2";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
galera_01.start()
|
||||
galera_01.wait_for_unit("mysql")
|
||||
galera_01.wait_for_open_port(3306)
|
||||
galera_01.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; create table db1 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
||||
)
|
||||
galera_01.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db1 values (37);'"
|
||||
)
|
||||
galera_02.start()
|
||||
galera_02.wait_for_unit("mysql")
|
||||
galera_02.wait_for_open_port(3306)
|
||||
galera_03.start()
|
||||
galera_03.wait_for_unit("mysql")
|
||||
galera_03.wait_for_open_port(3306)
|
||||
galera_02.succeed(
|
||||
"sudo -u testuser mysql -u root -e 'use testdb; select test_id from db1;' -N | grep 37"
|
||||
)
|
||||
galera_02.succeed(
|
||||
"sudo -u testuser mysql -u root -e 'use testdb; create table db2 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
||||
)
|
||||
galera_02.succeed("systemctl stop mysql")
|
||||
galera_01.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db2 values (38);'"
|
||||
)
|
||||
galera_03.succeed(
|
||||
"sudo -u testuser mysql -u root -e 'use testdb; create table db3 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
||||
)
|
||||
galera_01.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db3 values (39);'"
|
||||
)
|
||||
galera_02.succeed("systemctl start mysql")
|
||||
galera_02.wait_for_open_port(3306)
|
||||
galera_02.succeed(
|
||||
"sudo -u testuser mysql -u root -e 'show status' -N | grep 'wsrep_cluster_size.*3'"
|
||||
)
|
||||
galera_03.succeed(
|
||||
"sudo -u testuser mysql -u root -e 'show status' -N | grep 'wsrep_local_state_comment.*Synced'"
|
||||
)
|
||||
galera_01.succeed(
|
||||
"sudo -u testuser mysql -u root -e 'use testdb; select test_id from db3;' -N | grep 39"
|
||||
)
|
||||
galera_02.succeed(
|
||||
"sudo -u testuser mysql -u root -e 'use testdb; select test_id from db2;' -N | grep 38"
|
||||
)
|
||||
galera_03.succeed(
|
||||
"sudo -u testuser mysql -u root -e 'use testdb; select test_id from db1;' -N | grep 37"
|
||||
)
|
||||
galera_01.succeed("sudo -u testuser mysql -u testuser -e 'use testdb; drop table db3;'")
|
||||
galera_02.succeed("sudo -u testuser mysql -u root -e 'use testdb; drop table db2;'")
|
||||
galera_03.succeed("sudo -u testuser mysql -u root -e 'use testdb; drop table db1;'")
|
||||
'';
|
||||
})
|
216
nixos/tests/mysql/mariadb-galera-rsync.nix
Normal file
216
nixos/tests/mysql/mariadb-galera-rsync.nix
Normal file
|
@ -0,0 +1,216 @@
|
|||
import ./../make-test-python.nix ({ pkgs, ...} :
|
||||
|
||||
let
|
||||
mysqlenv-common = pkgs.buildEnv { name = "mysql-path-env-common"; pathsToLink = [ "/bin" ]; paths = with pkgs; [ bash gawk gnutar inetutils which ]; };
|
||||
mysqlenv-rsync = pkgs.buildEnv { name = "mysql-path-env-rsync"; pathsToLink = [ "/bin" ]; paths = with pkgs; [ lsof procps rsync stunnel ]; };
|
||||
|
||||
in {
|
||||
name = "mariadb-galera-rsync";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ izorkin ];
|
||||
};
|
||||
|
||||
# The test creates a Galera cluster with 3 nodes and is checking if rsync-based SST works. The cluster is tested by creating a DB and an empty table on one node,
|
||||
# and checking the table's presence on the other node.
|
||||
|
||||
nodes = {
|
||||
galera_04 =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
networking = {
|
||||
interfaces.eth1 = {
|
||||
ipv4.addresses = [
|
||||
{ address = "192.168.2.1"; prefixLength = 24; }
|
||||
];
|
||||
};
|
||||
extraHosts = ''
|
||||
192.168.2.1 galera_04
|
||||
192.168.2.2 galera_05
|
||||
192.168.2.3 galera_06
|
||||
'';
|
||||
firewall.allowedTCPPorts = [ 3306 4444 4567 4568 ];
|
||||
firewall.allowedUDPPorts = [ 4567 ];
|
||||
};
|
||||
users.users.testuser = { };
|
||||
systemd.services.mysql = with pkgs; {
|
||||
path = [ mysqlenv-common mysqlenv-rsync ];
|
||||
};
|
||||
services.mysql = {
|
||||
enable = true;
|
||||
package = pkgs.mariadb;
|
||||
ensureDatabases = [ "testdb" ];
|
||||
ensureUsers = [{
|
||||
name = "testuser";
|
||||
ensurePermissions = {
|
||||
"testdb.*" = "ALL PRIVILEGES";
|
||||
};
|
||||
}];
|
||||
settings = {
|
||||
mysqld = {
|
||||
bind_address = "0.0.0.0";
|
||||
};
|
||||
galera = {
|
||||
wsrep_on = "ON";
|
||||
wsrep_debug = "OFF";
|
||||
wsrep_retry_autocommit = "3";
|
||||
wsrep_provider = "${pkgs.mariadb-galera_25}/lib/galera/libgalera_smm.so";
|
||||
wsrep_cluster_address = "gcomm://";
|
||||
wsrep_cluster_name = "galera-rsync";
|
||||
wsrep_node_address = "192.168.2.1";
|
||||
wsrep_node_name = "galera_04";
|
||||
wsrep_sst_method = "rsync";
|
||||
binlog_format = "ROW";
|
||||
enforce_storage_engine = "InnoDB";
|
||||
innodb_autoinc_lock_mode = "2";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
galera_05 =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
networking = {
|
||||
interfaces.eth1 = {
|
||||
ipv4.addresses = [
|
||||
{ address = "192.168.2.2"; prefixLength = 24; }
|
||||
];
|
||||
};
|
||||
extraHosts = ''
|
||||
192.168.2.1 galera_04
|
||||
192.168.2.2 galera_05
|
||||
192.168.2.3 galera_06
|
||||
'';
|
||||
firewall.allowedTCPPorts = [ 3306 4444 4567 4568 ];
|
||||
firewall.allowedUDPPorts = [ 4567 ];
|
||||
};
|
||||
users.users.testuser = { };
|
||||
systemd.services.mysql = with pkgs; {
|
||||
path = [ mysqlenv-common mysqlenv-rsync ];
|
||||
};
|
||||
services.mysql = {
|
||||
enable = true;
|
||||
package = pkgs.mariadb;
|
||||
settings = {
|
||||
mysqld = {
|
||||
bind_address = "0.0.0.0";
|
||||
};
|
||||
galera = {
|
||||
wsrep_on = "ON";
|
||||
wsrep_debug = "OFF";
|
||||
wsrep_retry_autocommit = "3";
|
||||
wsrep_provider = "${pkgs.mariadb-galera_25}/lib/galera/libgalera_smm.so";
|
||||
wsrep_cluster_address = "gcomm://galera_04,galera_05,galera_06";
|
||||
wsrep_cluster_name = "galera-rsync";
|
||||
wsrep_node_address = "192.168.2.2";
|
||||
wsrep_node_name = "galera_05";
|
||||
wsrep_sst_method = "rsync";
|
||||
binlog_format = "ROW";
|
||||
enforce_storage_engine = "InnoDB";
|
||||
innodb_autoinc_lock_mode = "2";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
galera_06 =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
networking = {
|
||||
interfaces.eth1 = {
|
||||
ipv4.addresses = [
|
||||
{ address = "192.168.2.3"; prefixLength = 24; }
|
||||
];
|
||||
};
|
||||
extraHosts = ''
|
||||
192.168.2.1 galera_04
|
||||
192.168.2.2 galera_05
|
||||
192.168.2.3 galera_06
|
||||
'';
|
||||
firewall.allowedTCPPorts = [ 3306 4444 4567 4568 ];
|
||||
firewall.allowedUDPPorts = [ 4567 ];
|
||||
};
|
||||
users.users.testuser = { };
|
||||
systemd.services.mysql = with pkgs; {
|
||||
path = [ mysqlenv-common mysqlenv-rsync ];
|
||||
};
|
||||
services.mysql = {
|
||||
enable = true;
|
||||
package = pkgs.mariadb;
|
||||
settings = {
|
||||
mysqld = {
|
||||
bind_address = "0.0.0.0";
|
||||
};
|
||||
galera = {
|
||||
wsrep_on = "ON";
|
||||
wsrep_debug = "OFF";
|
||||
wsrep_retry_autocommit = "3";
|
||||
wsrep_provider = "${pkgs.mariadb-galera_25}/lib/galera/libgalera_smm.so";
|
||||
wsrep_cluster_address = "gcomm://galera_04,galera_05,galera_06";
|
||||
wsrep_cluster_name = "galera-rsync";
|
||||
wsrep_node_address = "192.168.2.3";
|
||||
wsrep_node_name = "galera_06";
|
||||
wsrep_sst_method = "rsync";
|
||||
binlog_format = "ROW";
|
||||
enforce_storage_engine = "InnoDB";
|
||||
innodb_autoinc_lock_mode = "2";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
galera_04.start()
|
||||
galera_04.wait_for_unit("mysql")
|
||||
galera_04.wait_for_open_port(3306)
|
||||
galera_04.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; create table db1 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
||||
)
|
||||
galera_04.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db1 values (41);'"
|
||||
)
|
||||
galera_05.start()
|
||||
galera_05.wait_for_unit("mysql")
|
||||
galera_05.wait_for_open_port(3306)
|
||||
galera_06.start()
|
||||
galera_06.wait_for_unit("mysql")
|
||||
galera_06.wait_for_open_port(3306)
|
||||
galera_05.succeed(
|
||||
"sudo -u testuser mysql -u root -e 'use testdb; select test_id from db1;' -N | grep 41"
|
||||
)
|
||||
galera_05.succeed(
|
||||
"sudo -u testuser mysql -u root -e 'use testdb; create table db2 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
||||
)
|
||||
galera_05.succeed("systemctl stop mysql")
|
||||
galera_04.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db2 values (42);'"
|
||||
)
|
||||
galera_06.succeed(
|
||||
"sudo -u testuser mysql -u root -e 'use testdb; create table db3 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
||||
)
|
||||
galera_04.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db3 values (43);'"
|
||||
)
|
||||
galera_05.succeed("systemctl start mysql")
|
||||
galera_05.wait_for_open_port(3306)
|
||||
galera_05.succeed(
|
||||
"sudo -u testuser mysql -u root -e 'show status' -N | grep 'wsrep_cluster_size.*3'"
|
||||
)
|
||||
galera_06.succeed(
|
||||
"sudo -u testuser mysql -u root -e 'show status' -N | grep 'wsrep_local_state_comment.*Synced'"
|
||||
)
|
||||
galera_04.succeed(
|
||||
"sudo -u testuser mysql -u root -e 'use testdb; select test_id from db3;' -N | grep 43"
|
||||
)
|
||||
galera_05.succeed(
|
||||
"sudo -u testuser mysql -u root -e 'use testdb; select test_id from db2;' -N | grep 42"
|
||||
)
|
||||
galera_06.succeed(
|
||||
"sudo -u testuser mysql -u root -e 'use testdb; select test_id from db1;' -N | grep 41"
|
||||
)
|
||||
galera_04.succeed("sudo -u testuser mysql -u testuser -e 'use testdb; drop table db3;'")
|
||||
galera_05.succeed("sudo -u testuser mysql -u root -e 'use testdb; drop table db2;'")
|
||||
galera_06.succeed("sudo -u testuser mysql -u root -e 'use testdb; drop table db1;'")
|
||||
'';
|
||||
})
|
|
@ -1,4 +1,4 @@
|
|||
import ./make-test-python.nix ({ pkgs, lib, ... }:
|
||||
import ./../make-test-python.nix ({ pkgs, lib, ... }:
|
||||
|
||||
{
|
||||
name = "automysqlbackup";
|
|
@ -1,5 +1,5 @@
|
|||
# Test whether mysqlBackup option works
|
||||
import ./make-test-python.nix ({ pkgs, ... } : {
|
||||
import ./../make-test-python.nix ({ pkgs, ... } : {
|
||||
name = "mysql-backup";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ rvl ];
|
|
@ -1,4 +1,4 @@
|
|||
import ./make-test-python.nix ({ pkgs, ...} :
|
||||
import ./../make-test-python.nix ({ pkgs, ...} :
|
||||
|
||||
let
|
||||
replicateUser = "replicate";
|
|
@ -1,4 +1,4 @@
|
|||
import ./make-test-python.nix ({ pkgs, ...} : {
|
||||
import ./../make-test-python.nix ({ pkgs, ...} : {
|
||||
name = "mysql";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ eelco shlevy ];
|
|
@ -1,247 +0,0 @@
|
|||
import ./make-test.nix ({ pkgs, ... }:
|
||||
|
||||
with pkgs.lib;
|
||||
|
||||
let
|
||||
ksExt = pkgs.writeText "ks-ext4" ''
|
||||
clearpart --all --initlabel --drives=vdb
|
||||
|
||||
part /boot --recommended --label=boot --fstype=ext2 --ondisk=vdb
|
||||
part swap --recommended --label=swap --fstype=swap --ondisk=vdb
|
||||
part /nix --size=500 --label=nix --fstype=ext3 --ondisk=vdb
|
||||
part / --recommended --label=root --fstype=ext4 --ondisk=vdb
|
||||
'';
|
||||
|
||||
ksBtrfs = pkgs.writeText "ks-btrfs" ''
|
||||
clearpart --all --initlabel --drives=vdb,vdc
|
||||
|
||||
part swap1 --recommended --label=swap1 --fstype=swap --ondisk=vdb
|
||||
part swap2 --recommended --label=swap2 --fstype=swap --ondisk=vdc
|
||||
|
||||
part btrfs.1 --grow --ondisk=vdb
|
||||
part btrfs.2 --grow --ondisk=vdc
|
||||
|
||||
btrfs / --data=0 --metadata=1 --label=root btrfs.1 btrfs.2
|
||||
'';
|
||||
|
||||
ksF2fs = pkgs.writeText "ks-f2fs" ''
|
||||
clearpart --all --initlabel --drives=vdb
|
||||
|
||||
part swap --recommended --label=swap --fstype=swap --ondisk=vdb
|
||||
part /boot --recommended --label=boot --fstype=f2fs --ondisk=vdb
|
||||
part / --recommended --label=root --fstype=f2fs --ondisk=vdb
|
||||
'';
|
||||
|
||||
ksRaid = pkgs.writeText "ks-raid" ''
|
||||
clearpart --all --initlabel --drives=vdb,vdc
|
||||
|
||||
part raid.01 --size=200 --ondisk=vdb
|
||||
part raid.02 --size=200 --ondisk=vdc
|
||||
|
||||
part swap1 --size=500 --label=swap1 --fstype=swap --ondisk=vdb
|
||||
part swap2 --size=500 --label=swap2 --fstype=swap --ondisk=vdc
|
||||
|
||||
part raid.11 --grow --ondisk=vdb
|
||||
part raid.12 --grow --ondisk=vdc
|
||||
|
||||
raid /boot --level=1 --fstype=ext3 --device=md0 raid.01 raid.02
|
||||
raid / --level=1 --fstype=xfs --device=md1 raid.11 raid.12
|
||||
'';
|
||||
|
||||
ksRaidLvmCrypt = pkgs.writeText "ks-lvm-crypt" ''
|
||||
clearpart --all --initlabel --drives=vdb,vdc
|
||||
|
||||
part raid.1 --grow --ondisk=vdb
|
||||
part raid.2 --grow --ondisk=vdc
|
||||
|
||||
raid pv.0 --level=1 --encrypted --passphrase=x --device=md0 raid.1 raid.2
|
||||
|
||||
volgroup nixos pv.0
|
||||
|
||||
logvol /boot --size=200 --fstype=ext3 --name=boot --vgname=nixos
|
||||
logvol swap --size=500 --fstype=swap --name=swap --vgname=nixos
|
||||
logvol / --size=1000 --grow --fstype=ext4 --name=root --vgname=nixos
|
||||
'';
|
||||
in {
|
||||
name = "partitiion";
|
||||
|
||||
machine = { pkgs, ... }: {
|
||||
environment.systemPackages = [
|
||||
pkgs.pythonPackages.nixpart0
|
||||
pkgs.file pkgs.btrfs-progs pkgs.xfsprogs pkgs.lvm2
|
||||
];
|
||||
virtualisation.emptyDiskImages = [ 4096 4096 ];
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
my $diskStart;
|
||||
my @mtab;
|
||||
|
||||
sub getMtab {
|
||||
my $mounts = $machine->succeed("cat /proc/mounts");
|
||||
chomp $mounts;
|
||||
return map [split], split /\n/, $mounts;
|
||||
}
|
||||
|
||||
sub parttest {
|
||||
my ($desc, $code) = @_;
|
||||
$machine->start;
|
||||
$machine->waitForUnit("default.target");
|
||||
|
||||
# Gather mounts and superblock
|
||||
@mtab = getMtab;
|
||||
$diskStart = $machine->succeed("dd if=/dev/vda bs=512 count=1");
|
||||
|
||||
subtest($desc, $code);
|
||||
$machine->shutdown;
|
||||
}
|
||||
|
||||
sub ensureSanity {
|
||||
# Check whether the filesystem in /dev/vda is still intact
|
||||
my $newDiskStart = $machine->succeed("dd if=/dev/vda bs=512 count=1");
|
||||
if ($diskStart ne $newDiskStart) {
|
||||
$machine->log("Something went wrong, the partitioner wrote " .
|
||||
"something into the first 512 bytes of /dev/vda!");
|
||||
die;
|
||||
}
|
||||
|
||||
# Check whether nixpart has unmounted anything
|
||||
my @currentMtab = getMtab;
|
||||
for my $mount (@mtab) {
|
||||
my $path = $mount->[1];
|
||||
unless (grep { $_->[1] eq $path } @currentMtab) {
|
||||
$machine->log("The partitioner seems to have unmounted $path.");
|
||||
die;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub checkMount {
|
||||
my $mounts = $machine->succeed("cat /proc/mounts");
|
||||
|
||||
}
|
||||
|
||||
sub kickstart {
|
||||
$machine->copyFileFromHost($_[0], "/kickstart");
|
||||
$machine->succeed("nixpart -v /kickstart");
|
||||
ensureSanity;
|
||||
}
|
||||
|
||||
sub ensurePartition {
|
||||
my ($name, $match) = @_;
|
||||
my $path = $name =~ /^\// ? $name : "/dev/disk/by-label/$name";
|
||||
my $out = $machine->succeed("file -Ls $path");
|
||||
my @matches = grep(/^$path: .*$match/i, $out);
|
||||
if (!@matches) {
|
||||
$machine->log("Partition on $path was expected to have a " .
|
||||
"file system that matches $match, but instead has: $out");
|
||||
die;
|
||||
}
|
||||
}
|
||||
|
||||
sub ensureNoPartition {
|
||||
$machine->succeed("test ! -e /dev/$_[0]");
|
||||
}
|
||||
|
||||
sub ensureMountPoint {
|
||||
$machine->succeed("mountpoint $_[0]");
|
||||
}
|
||||
|
||||
sub remountAndCheck {
|
||||
$machine->nest("Remounting partitions:", sub {
|
||||
# XXX: "findmnt -ARunl -oTARGET /mnt" seems to NOT print all mounts!
|
||||
my $getmounts_cmd = "cat /proc/mounts | cut -d' ' -f2 | grep '^/mnt'";
|
||||
# Insert canaries first
|
||||
my $canaries = $machine->succeed($getmounts_cmd . " | while read p;" .
|
||||
" do touch \"\$p/canary\";" .
|
||||
" echo \"\$p/canary\"; done");
|
||||
# Now unmount manually
|
||||
$machine->succeed($getmounts_cmd . " | tac | xargs -r umount");
|
||||
# /mnt should be empty or non-existing
|
||||
my $found = $machine->succeed("find /mnt -mindepth 1");
|
||||
chomp $found;
|
||||
if ($found) {
|
||||
$machine->log("Cruft found in /mnt:\n$found");
|
||||
die;
|
||||
}
|
||||
# Try to remount with nixpart
|
||||
$machine->succeed("nixpart -vm /kickstart");
|
||||
ensureMountPoint("/mnt");
|
||||
# Check if our beloved canaries are dead
|
||||
chomp $canaries;
|
||||
$machine->nest("Checking canaries:", sub {
|
||||
for my $canary (split /\n/, $canaries) {
|
||||
$machine->succeed("test -e '$canary'");
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
parttest "ext2, ext3 and ext4 filesystems", sub {
|
||||
kickstart("${ksExt}");
|
||||
ensurePartition("boot", "ext2");
|
||||
ensurePartition("swap", "swap");
|
||||
ensurePartition("nix", "ext3");
|
||||
ensurePartition("root", "ext4");
|
||||
ensurePartition("/dev/vdb4", "boot sector");
|
||||
ensureNoPartition("vdb6");
|
||||
ensureNoPartition("vdc1");
|
||||
remountAndCheck;
|
||||
ensureMountPoint("/mnt/boot");
|
||||
ensureMountPoint("/mnt/nix");
|
||||
};
|
||||
|
||||
parttest "btrfs filesystem", sub {
|
||||
$machine->succeed("modprobe btrfs");
|
||||
kickstart("${ksBtrfs}");
|
||||
ensurePartition("swap1", "swap");
|
||||
ensurePartition("swap2", "swap");
|
||||
ensurePartition("/dev/vdb2", "btrfs");
|
||||
ensurePartition("/dev/vdc2", "btrfs");
|
||||
ensureNoPartition("vdb3");
|
||||
ensureNoPartition("vdc3");
|
||||
remountAndCheck;
|
||||
};
|
||||
|
||||
parttest "f2fs filesystem", sub {
|
||||
$machine->succeed("modprobe f2fs");
|
||||
kickstart("${ksF2fs}");
|
||||
ensurePartition("swap", "swap");
|
||||
ensurePartition("boot", "f2fs");
|
||||
ensurePartition("root", "f2fs");
|
||||
remountAndCheck;
|
||||
ensureMountPoint("/mnt/boot", "f2fs");
|
||||
};
|
||||
|
||||
parttest "RAID1 with XFS", sub {
|
||||
kickstart("${ksRaid}");
|
||||
ensurePartition("swap1", "swap");
|
||||
ensurePartition("swap2", "swap");
|
||||
ensurePartition("/dev/md0", "ext3");
|
||||
ensurePartition("/dev/md1", "xfs");
|
||||
ensureNoPartition("vdb4");
|
||||
ensureNoPartition("vdc4");
|
||||
ensureNoPartition("md2");
|
||||
remountAndCheck;
|
||||
ensureMountPoint("/mnt/boot");
|
||||
};
|
||||
|
||||
parttest "RAID1 with LUKS and LVM", sub {
|
||||
kickstart("${ksRaidLvmCrypt}");
|
||||
ensurePartition("/dev/vdb1", "data");
|
||||
ensureNoPartition("vdb2");
|
||||
ensurePartition("/dev/vdc1", "data");
|
||||
ensureNoPartition("vdc2");
|
||||
|
||||
ensurePartition("/dev/md0", "luks");
|
||||
ensureNoPartition("md1");
|
||||
|
||||
ensurePartition("/dev/nixos/boot", "ext3");
|
||||
ensurePartition("/dev/nixos/swap", "swap");
|
||||
ensurePartition("/dev/nixos/root", "ext4");
|
||||
|
||||
remountAndCheck;
|
||||
ensureMountPoint("/mnt/boot");
|
||||
};
|
||||
'';
|
||||
})
|
31
nixos/tests/systemd-boot.nix
Normal file
31
nixos/tests/systemd-boot.nix
Normal file
|
@ -0,0 +1,31 @@
|
|||
{ system ? builtins.currentSystem,
|
||||
config ? {},
|
||||
pkgs ? import ../.. { inherit system config; }
|
||||
}:
|
||||
|
||||
with import ../lib/testing-python.nix { inherit system pkgs; };
|
||||
with pkgs.lib;
|
||||
|
||||
makeTest {
|
||||
name = "systemd-boot";
|
||||
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ danielfullmer ];
|
||||
|
||||
machine = { pkgs, lib, ... }: {
|
||||
virtualisation.useBootLoader = true;
|
||||
virtualisation.useEFIBoot = true;
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
machine.start()
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
|
||||
machine.succeed("test -e /boot/loader/entries/nixos-generation-1.conf")
|
||||
|
||||
# Ensure we actually booted using systemd-boot.
|
||||
# Magic number is the vendor UUID used by systemd-boot.
|
||||
machine.succeed(
|
||||
"test -e /sys/firmware/efi/efivars/LoaderEntrySelected-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f"
|
||||
)
|
||||
'';
|
||||
}
|
47
nixos/tests/web-servers/unit-php.nix
Normal file
47
nixos/tests/web-servers/unit-php.nix
Normal file
|
@ -0,0 +1,47 @@
|
|||
import ../make-test-python.nix ({pkgs, ...}:
|
||||
let
|
||||
testdir = pkgs.writeTextDir "www/info.php" "<?php phpinfo();";
|
||||
|
||||
in {
|
||||
name = "unit-php-test";
|
||||
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ izorkin ];
|
||||
|
||||
machine = { config, lib, pkgs, ... }: {
|
||||
services.unit = {
|
||||
enable = true;
|
||||
config = ''
|
||||
{
|
||||
"listeners": {
|
||||
"*:9074": {
|
||||
"application": "php_74"
|
||||
}
|
||||
},
|
||||
"applications": {
|
||||
"php_74": {
|
||||
"type": "php 7.4",
|
||||
"processes": 1,
|
||||
"user": "testuser",
|
||||
"group": "testgroup",
|
||||
"root": "${testdir}/www",
|
||||
"index": "info.php"
|
||||
}
|
||||
}
|
||||
}
|
||||
'';
|
||||
};
|
||||
users = {
|
||||
users.testuser = {
|
||||
isNormalUser = false;
|
||||
uid = 1074;
|
||||
group = "testgroup";
|
||||
};
|
||||
groups.testgroup = {
|
||||
gid= 1074;
|
||||
};
|
||||
};
|
||||
};
|
||||
testScript = ''
|
||||
machine.wait_for_unit("unit.service")
|
||||
assert "PHP Version ${pkgs.php74.version}" in machine.succeed("curl -vvv -s http://127.0.0.1:9074/")
|
||||
'';
|
||||
})
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "BSEQuencer";
|
||||
version = "1.2.0";
|
||||
version = "1.4.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "sjaehn";
|
||||
repo = pname;
|
||||
rev = "${version}";
|
||||
sha256 = "08xwz5v8wrar0rx7qdr9pkpjz2k9sw6bn5glhpn6sp6453fabf8q";
|
||||
sha256 = "1zz1cirmx4wm4im4gjdp691f2042c8d1i8np1ns71f6kqdj9ps3k";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig ];
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
mkDerivation rec {
|
||||
pname = "drumkv1";
|
||||
version = "0.9.13";
|
||||
version = "0.9.14";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/drumkv1/${pname}-${version}.tar.gz";
|
||||
sha256 = "1h88sakxs0b20k8v2sh14y05fin1zqmhnid6h9mk9c37ixxg58ia";
|
||||
sha256 = "0fr7pkp55zvjxf7p22drs93fsjgvqhbd55vxi0srhp2s2wzz5qak";
|
||||
};
|
||||
|
||||
buildInputs = [ libjack2 alsaLib libsndfile liblo lv2 qt5.qtbase qt5.qttools ];
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
, gtk2
|
||||
, jack2Full
|
||||
, alsaLib
|
||||
, opencv
|
||||
, opencv2
|
||||
, libsndfile
|
||||
}:
|
||||
|
||||
|
@ -20,7 +20,7 @@ faust.wrapWithBuildEnv {
|
|||
gtk2
|
||||
jack2Full
|
||||
alsaLib
|
||||
opencv
|
||||
opencv2
|
||||
libsndfile
|
||||
];
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{ faust
|
||||
, jack2Full
|
||||
, opencv
|
||||
, opencv2
|
||||
, qt4
|
||||
, libsndfile
|
||||
, which
|
||||
|
@ -17,7 +17,7 @@ faust.wrapWithBuildEnv {
|
|||
|
||||
propagatedBuildInputs = [
|
||||
jack2Full
|
||||
opencv
|
||||
opencv2
|
||||
qt4
|
||||
libsndfile
|
||||
which
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "Mopidy-Iris";
|
||||
version = "3.46.0";
|
||||
version = "3.47.0";
|
||||
|
||||
src = python3Packages.fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "0c7b6zbcj4bq5qsxvhjwqclrl1k2hs3wb50pfjbw7gs7m3gm2b7d";
|
||||
sha256 = "1lvq5qsnn2djwkgbadzr7rr6ik2xh8yyj0p3y3hck9pl96ms7lfv";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
|
|
@ -10,13 +10,13 @@ assert pcreSupport -> pcre != null;
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "ncmpc";
|
||||
version = "0.37";
|
||||
version = "0.38";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "MusicPlayerDaemon";
|
||||
repo = "ncmpc";
|
||||
rev = "v${version}";
|
||||
sha256 = "1b0vd0h49kjg4nxjfjrcg8gzplz93ryr6xyfha2pvhlrzdd2d1lj";
|
||||
sha256 = "1kidpd1xrfax3v31q93r9g9b7jd841476q47wgd94h1a86b70gs9";
|
||||
};
|
||||
|
||||
buildInputs = [ glib ncurses mpd_clientlib boost ]
|
||||
|
|
39
pkgs/applications/audio/ninjas2/default.nix
Normal file
39
pkgs/applications/audio/ninjas2/default.nix
Normal file
|
@ -0,0 +1,39 @@
|
|||
{ stdenv, fetchFromGitHub, libjack2, libGL, pkgconfig, xorg, mesa, libsndfile, libsamplerate }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "ninjas2";
|
||||
version = "0.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "clearly-broken-software";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "1kwp6pmnfar2ip9693gprfbcfscklgri1k1ycimxzlqr61nkd2k9";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
patchPhase = ''
|
||||
patchShebangs dpf/utils/generate-ttl.sh
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ pkgconfig ];
|
||||
buildInputs = [
|
||||
libjack2 xorg.libX11 libGL mesa libsndfile libsamplerate
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
install -dD bin/ninjas2.lv2 $out/lib/lv2/ninjas2.lv2
|
||||
install -D bin/ninjas2-vst.so $out/lib/vst/ninjas2-vst.so
|
||||
install -D bin/ninjas2 $out/bin/ninjas2
|
||||
'';
|
||||
|
||||
makeFlags = [ "PREFIX=$(out)" ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = "https://github.com/clearly-broken-software/ninjas2";
|
||||
description = "sample slicer plugin for LV2, VST, and jack standalone";
|
||||
license = with licenses; [ gpl3 ];
|
||||
maintainers = [ maintainers.magnetophon ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -17,11 +17,11 @@ with stdenv.lib;
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "particl-core";
|
||||
version = "0.17.1.2";
|
||||
version = "0.19.1.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/particl/particl-core/archive/v${version}.tar.gz";
|
||||
sha256 = "16hcyxwp6yrypwvxz6i2987z3jmpk47xcgnsgh9klih8baqg64p5";
|
||||
sha256 = "11y5q2srkh6r2samppjb5mg6hl79y16j2lj1r23p0968vb9c45kl";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig autoreconfHook ];
|
||||
|
|
|
@ -18,9 +18,9 @@ let
|
|||
sha256Hash = "11fmpf58z44i78ldkapzivz6md65744vqczzbwv8mkjkv9nz95rs";
|
||||
};
|
||||
latestVersion = { # canary & dev
|
||||
version = "4.1.0.7"; # "Android Studio 4.1 Canary 7"
|
||||
build = "193.6401718";
|
||||
sha256Hash = "1xa61rhi7dgxm0y6yl5dxd09x530mzyxvx9bp1jprzfwvc7s0byh";
|
||||
version = "4.1.0.8"; # "Android Studio 4.1 Canary 8"
|
||||
build = "193.6423924";
|
||||
sha256Hash = "0ksgmhz9vhkw2mxzjapli0w6203ssd8ddgb0dq06rck8v7ysy8bp";
|
||||
};
|
||||
in {
|
||||
# Attributes are named by their corresponding release channels
|
||||
|
|
|
@ -4,8 +4,8 @@ let
|
|||
src = pkgs.fetchgit {
|
||||
url = "https://github.com/ttuegel/emacs2nix.git";
|
||||
fetchSubmodules = true;
|
||||
rev = "752fe1bd891425cb7a4a53cd7b98c194c1fe4518";
|
||||
sha256 = "0asfdswh8sbnapbqhbz539zzxmv72f1iviha95iys34sgnd5k1nk";
|
||||
rev = "d4c52a7b22b0622aecf0b0d59941a4a2b250617c";
|
||||
sha256 = "133m0bmm8ahy0jbappgcdjqppkpxf5s9wg4gg254afx3f7yfqzbh";
|
||||
};
|
||||
|
||||
in pkgs.mkShell {
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
elpaBuild {
|
||||
pname = "org";
|
||||
ename = "org";
|
||||
version = "20191203";
|
||||
version = "20200504";
|
||||
src = fetchurl {
|
||||
url = "https://orgmode.org/elpa/org-20191203.tar";
|
||||
sha256 = "1fcgiswjnqmfzx3xkmlqyyhc4a8ms07vdsv7nkizgxqdh9hwfm2q";
|
||||
url = "https://orgmode.org/elpa/org-20200504.tar";
|
||||
sha256 = "1nalr2jafhzfkaf4bn8kscxd7nm1wz7dbw2629j2msxknw76dwk1";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
|
@ -19,10 +19,10 @@
|
|||
elpaBuild {
|
||||
pname = "org-plus-contrib";
|
||||
ename = "org-plus-contrib";
|
||||
version = "20191203";
|
||||
version = "20200504";
|
||||
src = fetchurl {
|
||||
url = "https://orgmode.org/elpa/org-plus-contrib-20191203.tar";
|
||||
sha256 = "1kvw95492acb7gqn8gxbp1vg4fyw80w43yvflxnfxdf6jnnw2wah";
|
||||
url = "https://orgmode.org/elpa/org-plus-contrib-20200504.tar";
|
||||
sha256 = "1ykw3qspz18jgf3ngsvk2ys282489fcjrbk7pbv3ppxzjha4rmhb";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
|
@ -30,4 +30,4 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
}
|
||||
}
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "kdev-php";
|
||||
version = "5.5.0";
|
||||
version = "5.5.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/KDE/${pname}/archive/v${version}.tar.gz";
|
||||
sha256 = "1hd3ckayrwszda517zfvhihrfmzq4m3kcsrz4sqkbvib0giwsfkp";
|
||||
sha256 = "1z3mmlg5srzff0y1pjd4wfdf9k4rzk7gfdvbvzizkiy395qw1phv";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake extra-cmake-modules ];
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "kdev-python";
|
||||
version = "5.5.0";
|
||||
version = "5.5.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/KDE/${pname}/archive/v${version}.tar.gz";
|
||||
sha256 = "0kna6vkxc6lrfzb3gzn11qvw8jpa86gi1k996hdk83gn0lhmkvx5";
|
||||
sha256 = "0k4j2kp77sz2p8s77wmcawia81bx7vfb2nnh9lqxzdk2mmlg387c";
|
||||
};
|
||||
|
||||
cmakeFlags = [
|
||||
|
|
|
@ -10,11 +10,11 @@
|
|||
|
||||
mkDerivation rec {
|
||||
pname = "kdevelop";
|
||||
version = "5.5.0";
|
||||
version = "5.5.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://kde/stable/${pname}/${version}/src/${pname}-${version}.tar.xz";
|
||||
sha256 = "0438721v24pim5q0q54ivsws9a679fm7ymrm1nn9g1fv06qsm4d8";
|
||||
sha256 = "18hxwkdbfw0qs3p19jv6d8wwwdzb9m087891i8w2bzkn21fd5pmy";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
mkDerivation rec {
|
||||
pname = "leo-editor";
|
||||
version = "6.2";
|
||||
version = "6.2.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "leo-editor";
|
||||
repo = "leo-editor";
|
||||
rev = version;
|
||||
sha256 = "07f10qwvi3p7bskzxnx5rlhlfrh7rx8v0xdlc4vs2271438j1j2z";
|
||||
sha256 = "1s9jvxwzsl32clp78g92nq9p2byf08libr5widl1jnkv1cpkbvh9";
|
||||
};
|
||||
|
||||
dontBuild = true;
|
||||
|
|
|
@ -3,13 +3,13 @@
|
|||
|
||||
mkDerivation rec {
|
||||
pname = "tiled";
|
||||
version = "1.3.3";
|
||||
version = "1.3.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bjorn";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "0v8imw6zdygs9ymsgk41jclsfr1jwbracjc5balydh15r57rvwjd";
|
||||
sha256 = "0q3x1v88szxm8177qcnynfiyc7w8sn07ig6c7fjd164q7w30y24m";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig qmake ];
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{ stdenv, fetchurl, gdal, wxGTK30, proj, libiodbc, lzma,
|
||||
libharu, opencv, vigra, postgresql, Cocoa,
|
||||
libharu, opencv2, vigra, postgresql, Cocoa,
|
||||
unixODBC , poppler, hdf4, hdf5, netcdf, sqlite, qhull, giflib }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
|
@ -8,7 +8,7 @@ stdenv.mkDerivation {
|
|||
|
||||
# See https://groups.google.com/forum/#!topic/nix-devel/h_vSzEJAPXs
|
||||
# for why the have additional buildInputs on darwin
|
||||
buildInputs = [ gdal wxGTK30 proj libharu opencv vigra postgresql libiodbc lzma
|
||||
buildInputs = [ gdal wxGTK30 proj libharu opencv2 vigra postgresql libiodbc lzma
|
||||
qhull giflib ]
|
||||
++ stdenv.lib.optionals stdenv.isDarwin
|
||||
[ Cocoa unixODBC poppler hdf4.out hdf5 netcdf sqlite ];
|
||||
|
|
|
@ -33,11 +33,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gthumb";
|
||||
version = "3.8.3";
|
||||
version = "3.10.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
|
||||
sha256 = "1a0gss9cjcwayrcpkam5kc1giwbfy38jgqxvh33in9gfq9dgrygg";
|
||||
sha256 = "0j7cxp4hhkvkckyvll6pmqkv5rwrknlzq9j1my0grb01b8wzhw9y";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -103,7 +103,7 @@ rustPlatform.buildRustPackage rec {
|
|||
cp -r $releaseDir/osx/Alacritty.app $out/Applications/Alacritty.app
|
||||
'' else ''
|
||||
install -D extra/linux/Alacritty.desktop -t $out/share/applications/
|
||||
install -D extra/logo/alacritty-term.svg $out/share/icons/hicolor/scalable/apps/Alacritty.svg
|
||||
install -D extra/logo/compat/alacritty-term.svg $out/share/icons/hicolor/scalable/apps/Alacritty.svg
|
||||
|
||||
# patchelf generates an ELF that binutils' "strip" doesn't like:
|
||||
# strip: not enough room for program headers, try linking with -N
|
||||
|
|
|
@ -30,11 +30,11 @@ let
|
|||
in
|
||||
mkDerivation rec {
|
||||
pname = "calibre";
|
||||
version = "4.12.0";
|
||||
version = "4.15.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://download.calibre-ebook.com/${version}/${pname}-${version}.tar.xz";
|
||||
sha256 = "144vl5p0adcywcqaarrriq5zd8q5i934yfjg9himiq1vdp9vy4fi";
|
||||
sha256 = "0m8mvyw5c1khd54jx896w6nfwaydmpi3cb6wi5p2a0hxdksqgrkm";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "curaengine";
|
||||
version = "4.5.0";
|
||||
version = "4.6.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Ultimaker";
|
||||
repo = "CuraEngine";
|
||||
rev = version;
|
||||
sha256 = "1gml8f6yqmghgncl1zggs7h2hdh05wf68jw9npg0gh7n9l7yzkk4";
|
||||
sha256 = "1fr151hmdg2lhk9pbpan1hb1pafj784nijr4pz646ljmjh12vfk2";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "dbeaver-ce";
|
||||
version = "7.0.3";
|
||||
version = "7.0.4";
|
||||
|
||||
desktopItem = makeDesktopItem {
|
||||
name = "dbeaver";
|
||||
|
@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
|
|||
|
||||
src = fetchurl {
|
||||
url = "https://dbeaver.io/files/${version}/dbeaver-ce-${version}-linux.gtk.x86_64.tar.gz";
|
||||
sha256 = "189rsavmaa7480r61qhpzagia3c8jr3dfcl01ks3nfyq53j08hml";
|
||||
sha256 = "1d36d2rzsr8c048w0jyacvmgh46jamr9nzs22rmpm7xbzlnvdg4k";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
|
|
|
@ -5,13 +5,13 @@ with python3.pkgs;
|
|||
|
||||
buildPythonApplication rec {
|
||||
pname = "gcalcli";
|
||||
version = "4.2.0";
|
||||
version = "4.2.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "insanum";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "0746vmhfclkpkqnyaidxid2z20mlv86hv0pjxy1qglrja91vkd72";
|
||||
sha256 = "1xwrgmy2azvr99b7df92m2imj0wy4fh53bn7lvcrnghjbnh7n0l0";
|
||||
};
|
||||
|
||||
postPatch = lib.optionalString stdenv.isLinux ''
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
{ stdenv, fetchurl, dee, gtk2, intltool, libdbusmenu-gtk2, libunity, pkg-config, rsync }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "1.2.6";
|
||||
version = "1.2.8";
|
||||
pname = "grsync";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/grsync/grsync-${version}.tar.gz";
|
||||
sha256 = "06ani65d58p8r3jvxjwpwyqrr07ya3icdqc243nxcrv7bvmarmb6";
|
||||
sha256 = "1c86jch73cy7ig9k4shvcd3jnaxk7jppfcr8nmkz8gbylsn5zsll";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "hugo";
|
||||
version = "0.69.2";
|
||||
version = "0.70.0";
|
||||
|
||||
goPackagePath = "github.com/gohugoio/hugo";
|
||||
|
||||
|
@ -10,10 +10,10 @@ buildGoModule rec {
|
|||
owner = "gohugoio";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "0bw31264q8w2r3fm3g2qjh9531nmbn942vl5rjf2cjff25c0d4ji";
|
||||
sha256 = "14g1x95jh91z9xm3xkv2psw2jn7z6bv2009miyv727df4d58nh6m";
|
||||
};
|
||||
|
||||
modSha256 = "1i1mw8jcklmnsqawc1jkgw4h1dxjxb9zaf2p8pgfzxzpy5cp6qkl";
|
||||
modSha256 = "015ha8pjz1fv8qg558xa6hl52fp2qd486ir9m01dvxw63xqx76ss";
|
||||
|
||||
buildFlags = [ "-tags" "extended" ];
|
||||
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "jgmenu";
|
||||
version = "4.1.0";
|
||||
version = "4.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "johanmalm";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "1wsh37rapb1bszlq36hvwxqvfds39hbvbl152m8as4zlh93wfvvk";
|
||||
sha256 = "1wcmx2yhm6n54w6nymgb8pgfjv411i3zj1vk79q9vr052y1622z0";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -5,13 +5,13 @@
|
|||
|
||||
mkDerivation rec {
|
||||
pname = "klayout";
|
||||
version = "0.26.2";
|
||||
version = "0.26.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "KLayout";
|
||||
repo = "klayout";
|
||||
rev = "v${version}";
|
||||
sha256 = "0svyqayvr45snqw0dhx6jpnjhg4qb097pz28s8k1crx5i31nnd94";
|
||||
sha256 = "0hqc11vz24b6nfpfzsjwwmaq0sznwwqpzmd48q5wpdl0kz1309gj";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
|
|
@ -1,43 +0,0 @@
|
|||
From 81cf57e4653360af7f1718391e424fa05d8ea000 Mon Sep 17 00:00:00 2001
|
||||
From: Keshav Kini <keshav.kini@gmail.com>
|
||||
Date: Thu, 9 Aug 2018 18:36:15 -0700
|
||||
Subject: [PATCH] Use `rm` from PATH
|
||||
|
||||
On NixOS (a Linux distribution), there is no `/bin/rm`, but an `rm`
|
||||
command will generally be available in one's path when running shell
|
||||
scripts. Here, I change a couple of invocations of `/bin/rm` into
|
||||
invocations of `rm` to deal with this issue.
|
||||
|
||||
Since `rm` is already called elsewhere in the script without an
|
||||
absolute path, I assume this change will not cause any
|
||||
regressions. Still, I've tested this on a CentOS machine and a NixOS
|
||||
machine, though not other platforms.
|
||||
---
|
||||
makeself-header.sh | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/makeself-header.sh b/makeself-header.sh
|
||||
index 4d2c005..2babf34 100755
|
||||
--- a/makeself-header.sh
|
||||
+++ b/makeself-header.sh
|
||||
@@ -515,7 +515,7 @@ if test x"\$quiet" = xn; then
|
||||
fi
|
||||
res=3
|
||||
if test x"\$keep" = xn; then
|
||||
- trap 'echo Signal caught, cleaning up >&2; cd \$TMPROOT; /bin/rm -rf "\$tmpdir"; eval \$finish; exit 15' 1 2 3 15
|
||||
+ trap 'echo Signal caught, cleaning up >&2; cd \$TMPROOT; rm -rf "\$tmpdir"; eval \$finish; exit 15' 1 2 3 15
|
||||
fi
|
||||
|
||||
if test x"\$nodiskspace" = xn; then
|
||||
@@ -581,7 +581,7 @@ if test x"\$script" != x; then
|
||||
fi
|
||||
if test x"\$keep" = xn; then
|
||||
cd "\$TMPROOT"
|
||||
- /bin/rm -rf "\$tmpdir"
|
||||
+ rm -rf "\$tmpdir"
|
||||
fi
|
||||
eval \$finish; exit \$res
|
||||
EOF
|
||||
--
|
||||
2.14.1
|
||||
|
|
@ -1,22 +1,21 @@
|
|||
{ stdenv, fetchFromGitHub }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "2.4.0";
|
||||
version = "2.4.2";
|
||||
pname = "makeself";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "megastep";
|
||||
repo = "makeself";
|
||||
rev = "release-${version}";
|
||||
sha256 = "1lw3gx1zpzp2wmzrw5v7k31vfsrdzadqha9ni309fp07g8inrr9n";
|
||||
fetchSubmodules = true;
|
||||
sha256 = "07cq7q71bv3fwddkp2863ylry2ivds00f8sjy8npjpdbkailxm21";
|
||||
};
|
||||
|
||||
# backported from https://github.com/megastep/makeself/commit/77156e28ff21231c400423facc7049d9c60fd1bd
|
||||
patches = [ ./Use-rm-from-PATH.patch ];
|
||||
patchPhase = "patchShebangs test";
|
||||
|
||||
postPatch = ''
|
||||
sed -e "s|^HEADER=.*|HEADER=$out/share/${pname}-${version}/makeself-header.sh|" -i makeself.sh
|
||||
'';
|
||||
doCheck = true;
|
||||
checkTarget = "test";
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/{bin,share/{${pname}-${version},man/man1}}
|
||||
|
@ -26,6 +25,10 @@ stdenv.mkDerivation rec {
|
|||
cp makeself-header.sh $out/share/${pname}-${version}
|
||||
'';
|
||||
|
||||
fixupPhase = ''
|
||||
sed -e "s|^HEADER=.*|HEADER=$out/share/${pname}-${version}/makeself-header.sh|" -i $out/bin/makeself
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = "http://megastep.org/makeself";
|
||||
description = "Utility to create self-extracting packages";
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
, desktop-file-utils, libSM, imagemagick }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "19.09";
|
||||
version = "20.03";
|
||||
pname = "mediainfo-gui";
|
||||
src = fetchurl {
|
||||
url = "https://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.xz";
|
||||
sha256 = "1a2ssklg12sjsw09y8my9kf35mizi3zj7w002nspcmw28apb1x82";
|
||||
sha256 = "1f1shnycf0f1fwka9k9s250l228xjkg0k4k73h8bpld8msighgnw";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook pkgconfig ];
|
||||
|
|
|
@ -8,13 +8,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "minder";
|
||||
version = "1.7.2";
|
||||
version = "1.7.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "phase1geo";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "0pfp0dglj2ig2p1h000137dxw777mjvzzqj3gcnbxjxqz3m6fzc0";
|
||||
sha256 = "00lkb1w536jyhka2znxmgbyss13j4h75yvl42z4hlgz31wljcin4";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig meson ninja python3 wrapGAppsHook vala shared-mime-info ];
|
||||
|
|
|
@ -7,11 +7,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mlterm";
|
||||
version = "3.8.9";
|
||||
version = "3.9.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/project/mlterm/01release/${pname}-${version}/${pname}-${version}.tar.gz";
|
||||
sha256 = "1iy7wq953gcnygr1d04h5ddvhpmy8l575n5is2w0rj3ck31ihpqd";
|
||||
sha256 = "17h6j4nmbyvsx2shm8mqm7smzq9i7mbqxjw19c2m0rhf5yzqhr3k";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig autoconf ];
|
||||
|
|
|
@ -9,13 +9,13 @@
|
|||
|
||||
mkDerivation rec {
|
||||
pname = "moolticute";
|
||||
version = "0.43.3";
|
||||
version = "0.43.16";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mooltipass";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "0kl7wksiqmy0hqbg6xwmzqfn3l17if2hiw7xc9x067x9rviyxrl3";
|
||||
sha256 = "1gx1hbxiilggwfw0jspyk2cw92r6qs9a8yqa8x1d2ndf493mjx9y";
|
||||
};
|
||||
|
||||
outputs = [ "out" "udev" ];
|
||||
|
|
|
@ -35,13 +35,13 @@
|
|||
|
||||
buildPythonApplication rec {
|
||||
pname = "orca";
|
||||
version = "3.36.1";
|
||||
version = "3.36.2";
|
||||
|
||||
format = "other";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
|
||||
sha256 = "07w3k0f791zd1pj9j6d27k7gk7c6hx112ngrdz18h573df5n9b61";
|
||||
sha256 = "0hxz8wlyjn6w3zqg1p56pwdj0p23d6vynzczklyc6n91dyvma06g";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
|
|
@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
|
|||
comment = "Query GUI for mongodb";
|
||||
desktopName = "Robo3T";
|
||||
genericName = "MongoDB management tool";
|
||||
categories = "Development;IDE;mongodb;";
|
||||
categories = "Development;IDE;";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [makeWrapper];
|
||||
|
|
|
@ -16,10 +16,10 @@ let
|
|||
|
||||
pname = "simplenote";
|
||||
|
||||
version = "1.15.1";
|
||||
version = "1.16.0";
|
||||
|
||||
sha256 = {
|
||||
x86_64-linux = "1q1y5favj2ny0l2iq53vq39ns68zfr2z1plskxdg2d93jarvcr8x";
|
||||
x86_64-linux = "01nk3dbyhs0p7f6b4bkrng95i29g0x7vxj0rx1qb7sm3n11yi091";
|
||||
}.${system} or throwSystem;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
|
|
|
@ -20,14 +20,14 @@
|
|||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
version = "0.10.8";
|
||||
version = "0.10.9";
|
||||
pname = "syncthingtray";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Martchus";
|
||||
repo = "syncthingtray";
|
||||
rev = "v${version}";
|
||||
sha256 = "1g27v109m0ar090b340x6lsrzfp85hskcr3kapc2rgdhaa0mygpd";
|
||||
sha256 = "19kni5v9g0p4751bw2xb8dawg5yjkyk39vdy0m93448lsl8cqq04";
|
||||
};
|
||||
|
||||
buildInputs = [ qtbase cpp-utilities qtutilities ]
|
||||
|
|
|
@ -14,13 +14,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "xiphos";
|
||||
version = "4.0.7";
|
||||
version = "4.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "crosswire";
|
||||
repo = "xiphos";
|
||||
rev = version;
|
||||
sha256 = "1vwf1ps6nrajxl1qbs6v1cgykmq5wn4j09j10gbcd3b2nvrprf3g";
|
||||
sha256 = "14il9k4i58qbc78hcadw3gqy21sb9q661d75vlj6fwpczbzj7x1a";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig wrapGAppsHook wafHook ];
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
# This file is autogenerated from update.sh in the same directory.
|
||||
{
|
||||
beta = {
|
||||
sha256 = "1s3flhzp69g62285r9nwc5m9fa65ldx19inwdm4nq1m5bn63v6lj";
|
||||
sha256bin64 = "0xbbj89xx98vvw1a4l4wj7hhwjasdmkxbbkgaad2cj4zqmbb8h52";
|
||||
version = "83.0.4103.23";
|
||||
sha256 = "0z9p4v5mkinf7hbdagh4bz6ymqjxg3df3wjpvm201ilzzngmjqz1";
|
||||
sha256bin64 = "1srvlirhnynh0q2a17p8z13p7r54z0cchh1d1h07hqljnwmsf8qj";
|
||||
version = "83.0.4103.34";
|
||||
};
|
||||
dev = {
|
||||
sha256 = "1jgx55sb3azwb2rni89yxlz94j264iilwh0br29sngcailxamrbd";
|
||||
sha256bin64 = "107yndkcdb78zxpswn9aja63n0q4q5q49183058z5jm4zlplkgad";
|
||||
version = "84.0.4122.7";
|
||||
sha256 = "178fc112bsbrgj2hss78y8rhnz8hl85fr33gawk9fz88zk5qz7xd";
|
||||
sha256bin64 = "06qra245l2bbgxc3k04aabkgq1qnzybnrjhrjb25vriv31ji36b1";
|
||||
version = "84.0.4128.3";
|
||||
};
|
||||
stable = {
|
||||
sha256 = "1ls663s1f74p912x42qp3zcvm17kmjiv1ij6yy1c14gdhcpmjx7z";
|
||||
sha256bin64 = "0nzds27x1j3298cq5xkgikjdddymbw88gcpnlm03492b6090257y";
|
||||
version = "81.0.4044.129";
|
||||
sha256 = "19kpzmqmld0m0nflx13w9flxfal19msnxhzl3lip1jqih65z4y7l";
|
||||
sha256bin64 = "0sl4wv7npc3rhi7jgn679hi7j5ykzwpx5dahy78h87yfg4fx84wx";
|
||||
version = "81.0.4044.138";
|
||||
};
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,23 @@
|
|||
diff -ur firefox-65.0-orig/docshell/base/nsAboutRedirector.cpp firefox-65.0/docshell/base/nsAboutRedirector.cpp
|
||||
--- firefox-76.0.orig/docshell/base/nsAboutRedirector.cpp 2020-05-03 19:01:29.926544735 +0200
|
||||
+++ firefox-76.0/docshell/base/nsAboutRedirector.cpp 2020-05-03 19:12:00.845035570 +0200
|
||||
@@ -62,8 +62,6 @@
|
||||
{"about", "chrome://global/content/aboutAbout.html", 0},
|
||||
{"addons", "chrome://mozapps/content/extensions/extensions.xhtml",
|
||||
nsIAboutModule::ALLOW_SCRIPT},
|
||||
- {"buildconfig", "chrome://global/content/buildconfig.html",
|
||||
- nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT},
|
||||
{"checkerboard", "chrome://global/content/aboutCheckerboard.html",
|
||||
nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
|
||||
nsIAboutModule::ALLOW_SCRIPT},
|
||||
diff -ur firefox-65.0-orig/toolkit/content/jar.mn firefox-65.0/toolkit/content/jar.mn
|
||||
--- firefox-65.0-orig/toolkit/content/jar.mn 2019-01-23 00:48:35.033372506 +0100
|
||||
+++ firefox-65.0/toolkit/content/jar.mn 2019-01-23 00:50:45.126565924 +0100
|
||||
@@ -36,7 +36,6 @@
|
||||
content/global/plugins.css
|
||||
content/global/browser-child.js
|
||||
content/global/browser-content.js
|
||||
-* content/global/buildconfig.html
|
||||
content/global/buildconfig.css
|
||||
content/global/contentAreaUtils.js
|
||||
content/global/datepicker.xhtml
|
|
@ -7,14 +7,14 @@ in
|
|||
rec {
|
||||
firefox = common rec {
|
||||
pname = "firefox";
|
||||
ffversion = "75.0";
|
||||
ffversion = "76.0";
|
||||
src = fetchurl {
|
||||
url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz";
|
||||
sha512 = "0m3ibm6dy9cpvsxkzkzwj7na5rm5qz7sm3bpx604ibay9pccvgv59jxapisvmswzmlz2nv02l6p2gxlz3b0lbcg7rd5zasia92y7j99";
|
||||
sha512 = "3dq9h84w1qqidabbrl34jgyjr8bbmbf5wddjazpr7znfm49fn2xyg8fmm5lx9dakghk3wp8yhfi36gmk08fzlrm47v6h17dm9hkh0hz";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./no-buildconfig-ffx65.patch
|
||||
./no-buildconfig-ffx76.patch
|
||||
];
|
||||
|
||||
meta = {
|
||||
|
@ -35,10 +35,10 @@ rec {
|
|||
|
||||
firefox-esr-68 = common rec {
|
||||
pname = "firefox-esr";
|
||||
ffversion = "68.7.0esr";
|
||||
ffversion = "68.8.0esr";
|
||||
src = fetchurl {
|
||||
url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz";
|
||||
sha512 = "29qbcc78hz1rsnz735a5miwfj0c3r1c5qm2043vyd9qz879vsh4ab82k7wncm3xa04kqdff26zh1rpbbjmdr7gwn4q8nmjzzs7wzpd3";
|
||||
sha512 = "2rl5irkamxi8caa8krj0wng93lb82kk9mf09mgci87mj9hy6fxzcrlmiiffp14s03rv0raagrn4w54pbx1336mylq6saxmfhpf676hk";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
|
|
@ -2,13 +2,14 @@
|
|||
|
||||
## various stuff that can be plugged in
|
||||
, flashplayer, hal-flash
|
||||
, ffmpeg, xorg, libpulseaudio, libcanberra-gtk2, libglvnd
|
||||
, ffmpeg_4, xorg, libpulseaudio, libcanberra-gtk2, libglvnd
|
||||
, gnome3/*.gnome-shell*/
|
||||
, browserpass, chrome-gnome-shell, uget-integrator, plasma-browser-integration, bukubrow
|
||||
, tridactyl-native
|
||||
, fx_cast_bridge
|
||||
, udev
|
||||
, kerberos
|
||||
, libva
|
||||
}:
|
||||
|
||||
## configurability of the wrapper itself
|
||||
|
@ -64,8 +65,8 @@ let
|
|||
++ lib.optional (cfg.enableFXCastBridge or false) fx_cast_bridge
|
||||
++ extraNativeMessagingHosts
|
||||
);
|
||||
libs = lib.optional stdenv.isLinux udev
|
||||
++ lib.optional ffmpegSupport ffmpeg
|
||||
libs = lib.optionals stdenv.isLinux [ udev libva ]
|
||||
++ lib.optional ffmpegSupport ffmpeg_4
|
||||
++ lib.optional gssSupport kerberos
|
||||
++ lib.optional gdkWayland libglvnd
|
||||
++ lib.optionals (cfg.enableQuakeLive or false)
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
, libuuid
|
||||
, gstreamer, gst-plugins-base, libxml2
|
||||
, glib, gtk3, pango, gdk-pixbuf, cairo, atk, at-spi2-atk, at-spi2-core, gnome2
|
||||
, libdrm, mesa
|
||||
, nss, nspr
|
||||
, patchelf, makeWrapper
|
||||
, isSnapshot ? false
|
||||
|
@ -37,6 +38,7 @@ in stdenv.mkDerivation rec {
|
|||
atk at-spi2-atk at-spi2-core alsaLib dbus cups gtk3 gdk-pixbuf libexif ffmpeg systemd
|
||||
freetype fontconfig libXrender libuuid expat glib nss nspr
|
||||
gstreamer libxml2 gst-plugins-base pango cairo gnome2.GConf
|
||||
libdrm mesa
|
||||
] ++ stdenv.lib.optional proprietaryCodecs vivaldi-ffmpeg-codecs;
|
||||
|
||||
libPath = stdenv.lib.makeLibraryPath buildInputs
|
||||
|
|
|
@ -52,12 +52,12 @@ in rec {
|
|||
mkKops = generic;
|
||||
|
||||
kops_1_15 = mkKops {
|
||||
version = "1.15.2";
|
||||
sha256 = "1sjfd7pfi81ccq1dkgkh9xx6y94bqzlp727pvyf7l01x3d14z2b3";
|
||||
version = "1.15.3";
|
||||
sha256 = "0pzgrsl61nw8pm3s032lj020fw13x3fpzlj7lknsnd581f0gg4df";
|
||||
};
|
||||
|
||||
kops_1_16 = mkKops {
|
||||
version = "1.16.1";
|
||||
sha256 = "04ji1703z6b3rd4wmccah68api0jj2bndzkgdzqi855gccqbmi5g";
|
||||
version = "1.16.2";
|
||||
sha256 = "1vhkjhx1n3f6ggw5cy1avs3sbqb2da6khck9zqd4s7almjbpc2h2";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "kubeval";
|
||||
version = "0.14.0";
|
||||
version = "0.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "instrumenta";
|
||||
repo = "kubeval";
|
||||
rev = "${version}";
|
||||
sha256 = "0kpwk7bv36m3i8vavm1pqc8l611c6l9qbagcc64v6r85qig4w5xv";
|
||||
sha256 = "05li0qv4q7fy2lr50r6c1r8dhx00jb1g01qmgc72a9zqp378yiq0";
|
||||
};
|
||||
|
||||
modSha256 = "0y9x44y3bchi8xg0a6jmp2rmi8dybkl6qlywb6nj1viab1s8dd4y";
|
||||
|
@ -17,7 +17,7 @@ buildGoModule rec {
|
|||
description = "Validate your Kubernetes configuration files";
|
||||
homepage = "https://github.com/instrumenta/kubeval";
|
||||
license = licenses.asl20;
|
||||
maintainers = with maintainers; [ nicknovitski ];
|
||||
maintainers = with maintainers; [ johanot nicknovitski ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
{ stdenv, lib, fetchurl, autoPatchelfHook, dpkg, awscli }:
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "ssm-session-manager-plugin";
|
||||
version = "1.1.61.0";
|
||||
|
||||
src = fetchurl {
|
||||
url =
|
||||
"https://s3.amazonaws.com/session-manager-downloads/plugin/${version}/ubuntu_64bit/session-manager-plugin.deb";
|
||||
sha256 = "0z59irrpwhjjhn379454xyraqs590hij2n6n6k25w5hh8ak7imfl";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoPatchelfHook dpkg ];
|
||||
|
||||
buildInputs = [ awscli ];
|
||||
|
||||
unpackPhase = "dpkg-deb -x $src .";
|
||||
|
||||
installPhase =
|
||||
"install -m755 -D usr/local/sessionmanagerplugin/bin/session-manager-plugin $out/bin/session-manager-plugin";
|
||||
|
||||
meta = with lib; {
|
||||
homepage =
|
||||
"https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html";
|
||||
description = "Amazon SSM Session Manager Plugin";
|
||||
platforms = [ "x86_64-linux" ];
|
||||
license = licenses.unfree;
|
||||
maintainers = with maintainers; [ mbaillie ];
|
||||
};
|
||||
}
|
|
@ -1,24 +1,21 @@
|
|||
{ stdenv, lib, buildGoPackage, fetchFromGitHub, terraform, makeWrapper }:
|
||||
{ stdenv, lib, buildGoModule, fetchFromGitHub, terraform, makeWrapper }:
|
||||
|
||||
buildGoPackage rec {
|
||||
buildGoModule rec {
|
||||
pname = "terragrunt";
|
||||
version = "0.23.2";
|
||||
version = "0.23.14";
|
||||
|
||||
goPackagePath = "github.com/gruntwork-io/terragrunt";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "gruntwork-io";
|
||||
repo = "terragrunt";
|
||||
rev = "v${version}";
|
||||
sha256 = "1r3q7faxys0h147cr9154pcix1qgj36v41ja9hhbggm4c7vig4s1";
|
||||
src = fetchFromGitHub {
|
||||
owner = "gruntwork-io";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "1znb9d4n9zv3dq10dw17kb1h04gj8iz6gwx1a741fcf4ygp8zpy1";
|
||||
};
|
||||
|
||||
goDeps = ./deps.nix;
|
||||
modSha256 = "0pjqsb6lxk73prc6jxj07iwd1wyy5gqz24kigb308r3n0c2vcnky";
|
||||
|
||||
buildInputs = [ makeWrapper ];
|
||||
|
||||
preBuild = ''
|
||||
find go/src -name vendor | xargs -I % sh -c 'echo Removing %; rm -rf %'
|
||||
buildFlagsArray+=("-ldflags" "-X main.VERSION=v${version}")
|
||||
'';
|
||||
|
||||
|
|
525
pkgs/applications/networking/cluster/terragrunt/deps.nix
generated
525
pkgs/applications/networking/cluster/terragrunt/deps.nix
generated
|
@ -1,525 +0,0 @@
|
|||
# file generated from Gopkg.lock using dep2nix (https://github.com/nixcloud/dep2nix)
|
||||
[
|
||||
{
|
||||
goPackagePath = "cloud.google.com/go";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://code.googlesource.com/gocloud";
|
||||
rev = "d96ccb2ba7586bb79a416471882d347754a78ce5";
|
||||
sha256 = "18f1l28665x1a8j8a5bh2i7wb2vrwj050d1g5qda50isgqaybixd";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/BurntSushi/toml";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/BurntSushi/toml";
|
||||
rev = "3012a1dbe2e4bd1391d42b32f0577cb7bbc7f005";
|
||||
sha256 = "1fjdwwfzyzllgiwydknf1pwjvy49qxfsczqx5gz3y0izs7as99j6";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/agext/levenshtein";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/agext/levenshtein";
|
||||
rev = "0ded9c86537917af2ff89bc9c78de6bd58477894";
|
||||
sha256 = "19d7q69yhcg7gl81j038rkbjz8yjb4qwnsqrmxa4zvhgzlc7d130";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/apparentlymart/go-cidr";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/apparentlymart/go-cidr";
|
||||
rev = "b1115bf8e14a60131a196f908223e4506b0ddc35";
|
||||
sha256 = "0r938rb18c9cr2k417cwwd4pfq74aabpjp9pzvk4qkxc5279igl3";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/apparentlymart/go-textseg";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/apparentlymart/go-textseg";
|
||||
rev = "fb01f485ebef760e5ee06d55e1b07534dda2d295";
|
||||
sha256 = "0n9xcyj7p5y8mbqilk9zprfyqvgm2y9f1g440wqw9dnn3s4fi1k4";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/aws/aws-sdk-go";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/aws/aws-sdk-go";
|
||||
rev = "572908275ed4e38fef7ccb7d507f2faacaa7ab36";
|
||||
sha256 = "07bn3v0c4pd38qdp0a0kgmsvh7q30f14qp7pbbls3jzmvpxh49zs";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/bgentry/go-netrc";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/bgentry/go-netrc";
|
||||
rev = "9fd32a8b3d3d3f9d43c341bfe098430e07609480";
|
||||
sha256 = "0dn2h8avgavqdzdqnph8bkhj35bx0wssczry1zdczr22xv650g1l";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/bmatcuk/doublestar";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/bmatcuk/doublestar";
|
||||
rev = "2437321e1473408f122a95f65df3d8841fec4fba";
|
||||
sha256 = "0z1jg4l746825qs95sffbc69av1yj0l37n8rjmmnwf7hxh5glxzp";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/creack/pty";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/creack/pty";
|
||||
rev = "3a6a957789163cacdfe0e291617a1c8e80612c11";
|
||||
sha256 = "1v52599qq76dwq742mffakzj6mxqqccv2szn3hjicjld56nmd2d3";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/davecgh/go-spew";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/davecgh/go-spew";
|
||||
rev = "8991bc29aa16c548c550c7ff78260e27b9ab7c73";
|
||||
sha256 = "0hka6hmyvp701adzag2g26cxdj47g21x6jz4sc6jjz1mn59d474y";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/fatih/color";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/fatih/color";
|
||||
rev = "5b77d2a35fb0ede96d138fc9a99f5c9b6aef11b4";
|
||||
sha256 = "0v8msvg38r8d1iiq2i5r4xyfx0invhc941kjrsg5gzwvagv55inv";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/go-errors/errors";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/go-errors/errors";
|
||||
rev = "a6af135bd4e28680facf08a3d206b454abc877a4";
|
||||
sha256 = "0rznpknk19rxkr7li6dqs52c26pjazp69lh493l4ny4sxn5922lp";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/golang/protobuf";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/golang/protobuf";
|
||||
rev = "b5d812f8a3706043e23a9cd5babf2e5423744d30";
|
||||
sha256 = "15am4s4646qy6iv0g3kkqq52rzykqjhm4bf08dk0fy2r58knpsyl";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/google/go-cmp";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/google/go-cmp";
|
||||
rev = "6f77996f0c42f7b84e5a2b252227263f93432e9b";
|
||||
sha256 = "1hyxx3434zshl2m9ja78gwlkg1rx9yl6diqa7dnjb31xz5x4gbjj";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/google/uuid";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/google/uuid";
|
||||
rev = "0cd6bf5da1e1c83f8b45653022c74f71af0538a4";
|
||||
sha256 = "0hfxcf9frkb57k6q0rdkrmnfs78ms21r1qfk9fhlqga2yh5xg8zb";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/googleapis/gax-go";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/googleapis/gax-go";
|
||||
rev = "beaecbbdd8af86aa3acf14180d53828ce69400b2";
|
||||
sha256 = "1iwnm6ky1x53lgs44mw3hpdkjzrm5qd0kfs50m0qcq2ml5m1cwdm";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/gruntwork-io/terratest";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/gruntwork-io/terratest";
|
||||
rev = "a02960d4ef0711ae95ae2651271b4e073f88da4e";
|
||||
sha256 = "0mywsimj8if8j2jbp8sf4igl5lcdlj81hd3lif86fsmyrma090vw";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/hashicorp/errwrap";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/hashicorp/errwrap";
|
||||
rev = "8a6fb523712970c966eefc6b39ed2c5e74880354";
|
||||
sha256 = "0slfb6w3b61xz04r32bi0a1bygc82rjzhqkxj2si2074wynqnr1c";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/hashicorp/go-cleanhttp";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/hashicorp/go-cleanhttp";
|
||||
rev = "eda1e5db218aad1db63ca4642c8906b26bcf2744";
|
||||
sha256 = "07kx3fhryqmaw3czacmm11qwx63js2q8cfq967vphk7xg9q377kk";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/hashicorp/go-getter";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/hashicorp/go-getter";
|
||||
rev = "f9ec369200fd2163b8f452e5e45696d83ae3f4b6";
|
||||
sha256 = "1h69946nsmpp06iqg85whwvjrfqlk1gf9q7y01f0r3sf0cb28f30";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/hashicorp/go-multierror";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/hashicorp/go-multierror";
|
||||
rev = "886a7fbe3eb1c874d46f623bfa70af45f425b3d1";
|
||||
sha256 = "00nyn8llqzbfm8aflr9kwsvpzi4kv8v45c141v88xskxp5xf6z49";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/hashicorp/go-safetemp";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/hashicorp/go-safetemp";
|
||||
rev = "c9a55de4fe06c920a71964b53cfe3dd293a3c743";
|
||||
sha256 = "0gydks8bkq88adlzmv8qj3rvljx15j94c8lyrp88ji2jn6dvv643";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/hashicorp/go-uuid";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/hashicorp/go-uuid";
|
||||
rev = "4f571afc59f3043a65f8fe6bf46d887b10a01d43";
|
||||
sha256 = "0jvb88m0rq41bwgirsadgw7mnayl27av3gd2vqa3xvxp3fy0hp5k";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/hashicorp/go-version";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/hashicorp/go-version";
|
||||
rev = "ac23dc3fea5d1a983c43f6a0f6e2c13f0195d8bd";
|
||||
sha256 = "1bwi6y6111xq8ww8kjq0w1cmz15l1h9hb2id6596l8l0ag1vjj1z";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/hashicorp/golang-lru";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/hashicorp/golang-lru";
|
||||
rev = "7087cb70de9f7a8bc0a10c375cb0d2280a8edf9c";
|
||||
sha256 = "13f870cvk161bzjj6x41l45r5x9i1z9r2ymwmvm7768kg08zznpy";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/hashicorp/hcl2";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/hashicorp/hcl2";
|
||||
rev = "318e80eefe28c3aa01b434c61bcf4c83a0cc6b25";
|
||||
sha256 = "1wlm47qk84ggn6lanafirc49kaq998r1nw2xdcv4ghdxy2ijc0rj";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/hashicorp/terraform";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/hashicorp/terraform";
|
||||
rev = "abec0acf40d8e31ac612a244cf3886fb3bcce0bb";
|
||||
sha256 = "14js4n08rg30y0jrm0na79syglpb64cb7cxys0x3w47pcbgymrka";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/jmespath/go-jmespath";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/jmespath/go-jmespath";
|
||||
rev = "c2b33e84";
|
||||
sha256 = "1r6w7ydx8ydryxk3sfhzsk8m6f1nsik9jg3i1zhi69v4kfl4d5cz";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/jstemmer/go-junit-report";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/jstemmer/go-junit-report";
|
||||
rev = "cc1f095d5cc5eca2844f5c5ea7bb37f6b9bf6cac";
|
||||
sha256 = "1knip80yir1cdsjlb3rzy0a4w3kl4ljpiciaz6hjzwqlfhnv7bkw";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/mattn/go-colorable";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/mattn/go-colorable";
|
||||
rev = "167de6bfdfba052fa6b2d3664c8f5272e23c9072";
|
||||
sha256 = "1nwjmsppsjicr7anq8na6md7b1z84l9ppnlr045hhxjvbkqwalvx";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/mattn/go-isatty";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/mattn/go-isatty";
|
||||
rev = "e1f7b56ace729e4a73a29a6b4fac6cd5fcda7ab3";
|
||||
sha256 = "0i3km37lajahh1y2392g4hpgvq05arcgiiv93yhzxxyv0fpqj72m";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/mattn/go-zglob";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/mattn/go-zglob";
|
||||
rev = "2ea3427bfa539cca900ca2768d8663ecc8a708c1";
|
||||
sha256 = "1sncdyq5fbd42al4amyy91h7vlzm3wm6c9vl8za2pjgfgsd581fz";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/mitchellh/go-homedir";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/mitchellh/go-homedir";
|
||||
rev = "af06845cf3004701891bf4fdb884bfe4920b3727";
|
||||
sha256 = "0ydzkipf28hwj2bfxqmwlww47khyk6d152xax4bnyh60f4lq3nx1";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/mitchellh/go-testing-interface";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/mitchellh/go-testing-interface";
|
||||
rev = "6d0b8010fcc857872e42fc6c931227569016843c";
|
||||
sha256 = "1dl2js8di858bawg7dadlf1qjpkl2g3apziihjyf5imri3znyfpw";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/mitchellh/go-wordwrap";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/mitchellh/go-wordwrap";
|
||||
rev = "9e67c67572bc5dd02aef930e2b0ae3c02a4b5a5c";
|
||||
sha256 = "1jffbwcr3nnq6c12c5856bwzv2nxjzqk3jwgvxkwi1xhpd2by0bf";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/mitchellh/mapstructure";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/mitchellh/mapstructure";
|
||||
rev = "3536a929edddb9a5b34bd6861dc4a9647cb459fe";
|
||||
sha256 = "03bpv28jz9zhn4947saqwi328ydj7f6g6pf1m2d4m5zdh5jlfkrr";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/pmezard/go-difflib";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/pmezard/go-difflib";
|
||||
rev = "792786c7400a136282c1664665ae0a8db921c6c2";
|
||||
sha256 = "0c1cn55m4rypmscgf0rrb88pn58j3ysvc2d0432dp3c6fqg6cnzw";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/stretchr/testify";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/stretchr/testify";
|
||||
rev = "ffdc059bfe9ce6a4e144ba849dbedead332c6053";
|
||||
sha256 = "0wjchp2c8xbgcbbq32w3kvblk6q6yn533g78nxl6iskq6y95lxsy";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/ulikunitz/xz";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/ulikunitz/xz";
|
||||
rev = "6f934d456d51e742b4eeab20d925a827ef22320a";
|
||||
sha256 = "1qpk02c0nfgfyg110nmbaiy5x12fpn0pm8gy7h1s8pwns133n831";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/urfave/cli";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/urfave/cli";
|
||||
rev = "cfb38830724cc34fedffe9a2a29fb54fa9169cd1";
|
||||
sha256 = "0y6f4sbzkiiwrxbl15biivj8c7qwxnvm3zl2dd3mw4wzg4x10ygj";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/zclconf/go-cty";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/zclconf/go-cty";
|
||||
rev = "6fd39ad70c3a6bbdb1b4e47444e4cce72f901200";
|
||||
sha256 = "0mb0ws70jg93vlamzhdvyvyfq6x0s0ll5gf44yanb1dhlz6i1f90";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/zclconf/go-cty-yaml";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/zclconf/go-cty-yaml";
|
||||
rev = "bc34c981dadb5ed30af852693e3aba8fb6546f42";
|
||||
sha256 = "0dams5g61n88rk7zq7sy0yap873ksjafhf81hn2fg2dpfjhcd3y2";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "go.opencensus.io";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/census-instrumentation/opencensus-go";
|
||||
rev = "9c377598961b706d1542bd2d84d538b5094d596e";
|
||||
sha256 = "05jr8gkr2w34i5wwki4zhl5ch0qrgi7cdgag5iy5gpxplhbrvbg9";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "golang.org/x/crypto";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://go.googlesource.com/crypto";
|
||||
rev = "5c40567a22f818bd14a1ea7245dad9f8ef0691aa";
|
||||
sha256 = "17g8fb9vy2sqq8vgz8jdvf6c6d2290gm2qs0i4yzsd86mgn4dlrg";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "golang.org/x/exp";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://go.googlesource.com/exp";
|
||||
rev = "f17229e696bd4e065144fd6ae1313e41515abbdc";
|
||||
sha256 = "0q1fij8izg7xcnx7wqh0zdnya11k3d9a5fqm0yb2r93jhlf3x128";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "golang.org/x/lint";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://go.googlesource.com/lint";
|
||||
rev = "910be7a94367618fd0fd25eaabbee4fdc0ac7092";
|
||||
sha256 = "08gskshgfwxhmm9i4vgd4q7kqd5i7yihqh33v6r07br6kqd0g995";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "golang.org/x/mod";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://go.googlesource.com/mod";
|
||||
rev = "ed3ec21bb8e252814c380df79a80f366440ddb2d";
|
||||
sha256 = "1fp6885dclq77mh73v7i54v2b9llpv4di193zc8vmsbbkkc483cl";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "golang.org/x/net";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://go.googlesource.com/net";
|
||||
rev = "461777fb6f67e8cb9d70cda16573678d085a74cf";
|
||||
sha256 = "0sc0llch05q6h7nqgayi3sgismsznpnlsz4gh89y4klpymdcpbh2";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "golang.org/x/oauth2";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://go.googlesource.com/oauth2";
|
||||
rev = "0f29369cfe4552d0e4bcddc57cc75f4d7e672a33";
|
||||
sha256 = "06jwpvx0x2gjn2y959drbcir5kd7vg87k0r1216abk6rrdzzrzi2";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "golang.org/x/sys";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://go.googlesource.com/sys";
|
||||
rev = "93c9922d18aeb82498a065f07aec7ad7fa60dfb7";
|
||||
sha256 = "0hv96nwbv0li3nrv43ldfzmf12yrrbji2cf8n44iibv8ps5kfssx";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "golang.org/x/text";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://go.googlesource.com/text";
|
||||
rev = "342b2e1fbaa52c93f31447ad2c6abc048c63e475";
|
||||
sha256 = "0flv9idw0jm5nm8lx25xqanbkqgfiym6619w575p7nrdh0riqwqh";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "golang.org/x/tools";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://go.googlesource.com/tools";
|
||||
rev = "49b8ac185c84c5092be0953fb92b7660db9b8162";
|
||||
sha256 = "0ccsm8p9i83f0s0z5c7jwyzj7jgcg60zf20hzrmp705669wn5y67";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "golang.org/x/xerrors";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://go.googlesource.com/xerrors";
|
||||
rev = "9bdfabe68543c54f90421aeb9a60ef8061b5b544";
|
||||
sha256 = "1yjfi1bk9xb81lqn85nnm13zz725wazvrx3b50hx19qmwg7a4b0c";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "google.golang.org/api";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://code.googlesource.com/google-api-go-client";
|
||||
rev = "e9c39defab7fc4be8ec95d4ce422dbeae4070400";
|
||||
sha256 = "01wjr07xnb9s32y2jc6d0rba3jxwccd2wydm6cql41yhyr3x84rd";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "google.golang.org/appengine";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/golang/appengine";
|
||||
rev = "b2f4a3cf3c67576a2ee09e1fe62656a5086ce880";
|
||||
sha256 = "0zxlvwzxwkwz4bs4h9zc9979dx76y4xf9ks4d22bclg47dv59yry";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "google.golang.org/genproto";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/google/go-genproto";
|
||||
rev = "eb0b1bdb6ae60fcfc41b8d907b50dfb346112301";
|
||||
sha256 = "0g00wfxd4z886bglyszcvfpgzak0476axqyfaqv3va62ndbqpk90";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "google.golang.org/grpc";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/grpc/grpc-go";
|
||||
rev = "f495f5b15ae7ccda3b38c53a1bfcde4c1a58a2bc";
|
||||
sha256 = "09phrrsafgq6hnbw8cawvx44bdpk1p584fys17x1bwn0j0451zzs";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "honnef.co/go/tools";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/dominikh/go-tools";
|
||||
rev = "afd67930eec2a9ed3e9b19f684d17a062285f16a";
|
||||
sha256 = "1rwwahmbs4dwxncwjj56likir1kps9937vm2id3rygxzzla40zal";
|
||||
};
|
||||
}
|
||||
]
|
|
@ -6,13 +6,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "psi-plus";
|
||||
version = "1.4.1086";
|
||||
version = "1.4.1159";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "psi-plus";
|
||||
repo = "psi-plus-snapshots";
|
||||
rev = version;
|
||||
sha256 = "0war4hbjs1m7ll6rvpl3lj44lb0p5fi0g2siinnxpjffz2ydi97p";
|
||||
sha256 = "1k4ip2glkjsbb28gzffahi81kz90qkf213j89gsmcvbdjf4kp687";
|
||||
};
|
||||
|
||||
cmakeFlags = [
|
||||
|
|
|
@ -19,12 +19,12 @@ with lib;
|
|||
|
||||
mkDerivation rec {
|
||||
pname = "telegram-desktop";
|
||||
version = "2.1.1";
|
||||
version = "2.1.2";
|
||||
|
||||
# Telegram-Desktop with submodules
|
||||
src = fetchurl {
|
||||
url = "https://github.com/telegramdesktop/tdesktop/releases/download/v${version}/tdesktop-${version}-full.tar.gz";
|
||||
sha256 = "0032csgzwfby5a8q8w9iks7ggv1dcqli3qyhksbzly2xzxmfzqaj";
|
||||
sha256 = "0n387scs5kmc5jrypyxkc9cj4c7nb5761bdb8qxw8j342sm5ai24";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
|
|
@ -2,18 +2,22 @@
|
|||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "afew";
|
||||
version = "2.0.0";
|
||||
version = "3.0.0";
|
||||
|
||||
src = python3Packages.fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "0j60501nm242idf2ig0h7p6wrg58n5v2p6zfym56v9pbvnbmns0s";
|
||||
sha256 = "18j3xyzchlslcrkycr2i59jg73cb6yh5s7l3qnl6sa7vgxcbhq7c";
|
||||
};
|
||||
|
||||
nativeBuildInputs = with python3Packages; [ sphinx setuptools_scm ];
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [
|
||||
python3Packages.setuptools python3Packages.notmuch chardet dkimpy
|
||||
] ++ stdenv.lib.optional (!python3Packages.isPy3k) subprocess32;
|
||||
];
|
||||
|
||||
checkInputs = with python3Packages; [
|
||||
freezegun notmuch
|
||||
];
|
||||
|
||||
makeWrapperArgs = [
|
||||
''--prefix PATH ':' "${notmuch}/bin"''
|
||||
|
|
|
@ -4,11 +4,11 @@ with stdenv.lib;
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mpop";
|
||||
version = "1.4.7";
|
||||
version = "1.4.9";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://marlam.de/${pname}/releases/${pname}-${version}.tar.xz";
|
||||
sha256 = "0c6n5afn9pr4p7gxkv462lysrw52w9fhvavzm99c78dcp9dj5xnk";
|
||||
sha256 = "0hinmyd4lipy9wi3grwm72vv6xrpf4m08i9g9nlxzxnwfanw885q";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig ];
|
||||
|
|
|
@ -3,17 +3,17 @@
|
|||
let
|
||||
common = { stname, target, postInstall ? "" }:
|
||||
buildGoModule rec {
|
||||
version = "1.4.2";
|
||||
version = "1.5.0";
|
||||
name = "${stname}-${version}";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "syncthing";
|
||||
repo = "syncthing";
|
||||
rev = "v${version}";
|
||||
sha256 = "0pfzpbdir2agwsyfjh1rxlyyd225xmyrr4k2g4vlg5r12kpcjwya";
|
||||
sha256 = "0yy31rfvr9d6kidfvvy36ljxlc14x5ir3ln19zg4k02hdqn0xkpj";
|
||||
};
|
||||
|
||||
modSha256 = "0qjhb55nd8mlnswbk8bgl2sb9angmv8fnympmmyqj1dqa7lcs87z";
|
||||
modSha256 = "1vs7lxlqd7jr4r9xkk7w7k6gxzjmm7ic0a1scfpx8rcr5swa9cq1";
|
||||
|
||||
patches = [
|
||||
./add-stcli-target.patch
|
||||
|
|
|
@ -16,7 +16,7 @@ stdenv.mkDerivation {
|
|||
substituteInPlace Makefile --replace "gcc" "cc"
|
||||
'';
|
||||
|
||||
patches = [ ./10_fix_buffer_overflow_wordole_c.patch ];
|
||||
patches = [ ./10_fix_buffer_overflow_wordole_c_CVE-2014-8123.patch ];
|
||||
|
||||
installTargets = [ "global_install" ];
|
||||
|
||||
|
|
|
@ -1,5 +1,14 @@
|
|||
{ fetchurl, stdenv, gtk, pkgconfig, libgsf, libofx, intltool, wrapGAppsHook
|
||||
, libsoup, gnome3 }:
|
||||
{ fetchurl
|
||||
, stdenv
|
||||
, gtk
|
||||
, pkgconfig
|
||||
, libgsf
|
||||
, libofx
|
||||
, intltool
|
||||
, wrapGAppsHook
|
||||
, libsoup
|
||||
, gnome3
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "grisbi";
|
||||
|
@ -7,12 +16,18 @@ stdenv.mkDerivation rec {
|
|||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/grisbi/${pname}-${version}.tar.bz2";
|
||||
sha1 = "crv3bga72v6fw07wad0nkrgdg4war66j";
|
||||
sha256 = "1piiyyxjsjbw9gcqydvknzxmmfgh8kdqal12ywrxyxih2afwnvbw";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
|
||||
buildInputs = [ gtk libgsf libofx intltool libsoup
|
||||
gnome3.adwaita-icon-theme ];
|
||||
buildInputs = [
|
||||
gtk
|
||||
libgsf
|
||||
libofx
|
||||
intltool
|
||||
libsoup
|
||||
gnome3.adwaita-icon-theme
|
||||
];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "A personnal accounting application.";
|
||||
|
@ -24,7 +39,7 @@ stdenv.mkDerivation rec {
|
|||
management and other information that make Grisbi adapted for
|
||||
associations.
|
||||
'';
|
||||
homepage = "http://grisbi.org";
|
||||
homepage = "https://grisbi.org";
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = with maintainers; [ layus ];
|
||||
platforms = platforms.linux;
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
, libsoup, gnome3 }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "homebank-5.3.2";
|
||||
name = "homebank-5.4.1";
|
||||
src = fetchurl {
|
||||
url = "http://homebank.free.fr/public/${name}.tar.gz";
|
||||
sha256 = "1fr4060yqlciay98dypvifmfvr8y2kbpj89d86mcvq9gb00vij2b";
|
||||
sha256 = "1m1hpaby6zi8y0vmj2ljklp34a55l2qsr7pxw3852k2m4v5n9zsx";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
|
||||
|
|
|
@ -19,7 +19,17 @@ let
|
|||
maintainers = with maintainers; [ emmanuelrosa dtzWill kampka ];
|
||||
};
|
||||
|
||||
version = "0.40.7";
|
||||
version = "0.42.1";
|
||||
|
||||
desktopSource = {
|
||||
url = "https://github.com/zadam/trilium/releases/download/v${version}/trilium-linux-x64-${version}.tar.xz";
|
||||
sha256 = "0xcbkm6z1a0jh3qywlwcjk6l302cxgdfcq8sw30vbnz99cyarpvz";
|
||||
};
|
||||
|
||||
serverSource = {
|
||||
url = "https://github.com/zadam/trilium/releases/download/v${version}/trilium-linux-x64-server-${version}.tar.xz";
|
||||
sha256 = "012l36z0n3fcdajj3v4w2bcb1619sdhg6cvy3y89b6rxl0h2wdiw";
|
||||
};
|
||||
|
||||
in {
|
||||
|
||||
|
@ -28,10 +38,7 @@ in {
|
|||
inherit version;
|
||||
inherit meta;
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/zadam/trilium/releases/download/v${version}/trilium-linux-x64-${version}.tar.xz";
|
||||
sha256 = "0xi3bb0kbphbgpk2wlsad509g0hwwb259q2vkv0kgyr4i4wcyc1f";
|
||||
};
|
||||
src = fetchurl desktopSource;
|
||||
|
||||
# Fetch from source repo, no longer included in release.
|
||||
# (they did special-case icon.png but we want the scalable svg)
|
||||
|
@ -76,10 +83,7 @@ in {
|
|||
inherit version;
|
||||
inherit meta;
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/zadam/trilium/releases/download/v${version}/trilium-linux-x64-server-${version}.tar.xz";
|
||||
sha256 = "15bspngnnbq6mhp1f82j9hccg0ymhm6i4rddpgz3n7dw5wxdj0sm";
|
||||
};
|
||||
src = fetchurl serverSource;
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
|
|
|
@ -4,13 +4,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "dablin";
|
||||
version = "1.12.0";
|
||||
version = "1.13.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Opendigitalradio";
|
||||
repo = "dablin";
|
||||
rev = version;
|
||||
sha256 = "0d514ixz062xyyh4k3laxwhn3k3a1l4jq4w7rxf8x46d3743zrf7";
|
||||
sha256 = "0143jnhwwh4din6mlrkbm8m2wm8vnrlk0yk9r5qcvj70r2314bgq";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake pkgconfig ];
|
||||
|
|
|
@ -2,12 +2,12 @@
|
|||
libsamplerate, libpulseaudio, libXinerama, gettext, pkgconfig, alsaLib }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "4.1.11";
|
||||
version = "4.1.12";
|
||||
pname = "fldigi";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz";
|
||||
sha256 = "1y62xn1pim38ibaf2mbl8b7aq20jdaac6lgggb9r402w9bj5b196";
|
||||
sha256 = "1yjjv2ss84xfiaidypp476mhrbpnw4zf7mb5cdqwhdh604x0svr1";
|
||||
};
|
||||
|
||||
buildInputs = [ libXinerama gettext hamlib fltk14 libjpeg libpng portaudio
|
||||
|
|
|
@ -5,13 +5,13 @@
|
|||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "urh";
|
||||
version = "2.8.5";
|
||||
version = "2.8.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jopohl";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "060npn0q7yrby2zj9hi8x7raivs91v9hvryvf45k1ipyqh8dgri6";
|
||||
sha256 = "1grak0vzlzqvg8bqaalyamwvkyzlmj9nbczqp6jcdf6w2vnbzhph";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ qt5.wrapQtAppsHook ];
|
||||
|
|
48
pkgs/applications/science/astronomy/kstars/default.nix
Normal file
48
pkgs/applications/science/astronomy/kstars/default.nix
Normal file
|
@ -0,0 +1,48 @@
|
|||
{
|
||||
mkDerivation, lib, fetchgit,
|
||||
extra-cmake-modules,
|
||||
|
||||
kconfig, kdoctools, kguiaddons, ki18n, kinit, kiconthemes, kio,
|
||||
knewstuff, kplotting, kwidgetsaddons, kxmlgui,
|
||||
|
||||
qtx11extras, qtwebsockets,
|
||||
|
||||
eigen, zlib,
|
||||
|
||||
cfitsio, indilib, xplanet
|
||||
}:
|
||||
|
||||
mkDerivation {
|
||||
name = "kstars";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://anongit.kde.org/kstars.git";
|
||||
rev = "7acc527939280edd22823371dc4e22494c6c626a";
|
||||
sha256 = "1n1lgi7p3dj893fdnzjbnrha40p4apl0dy8zppcabxwrb1khb84v";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
|
||||
buildInputs = [
|
||||
kconfig kdoctools kguiaddons ki18n kinit kiconthemes kio
|
||||
knewstuff kplotting kwidgetsaddons kxmlgui
|
||||
|
||||
qtx11extras qtwebsockets
|
||||
|
||||
eigen zlib
|
||||
|
||||
cfitsio indilib xplanet
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Virtual planetarium astronomy software";
|
||||
homepage = "https://kde.org/applications/education/org.kde.kstars";
|
||||
longDescription = ''
|
||||
It provides an accurate graphical simulation of the night sky, from any location on Earth, at any date and time.
|
||||
The display includes up to 100 million stars, 13.000 deep-sky objects, all 8 planets, the Sun and Moon, and thousands of comets, asteroids, supernovae, and satellites.
|
||||
For students and teachers, it supports adjustable simulation speeds in order to view phenomena that happen over long timescales, the KStars Astrocalculator to predict conjunctions, and many common astronomical calculations.
|
||||
'';
|
||||
license = licenses.gpl2;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ timput ];
|
||||
};
|
||||
}
|
|
@ -1,17 +1,17 @@
|
|||
{ stdenv, lib, fetchFromGitHub, python, makeWrapper
|
||||
, eigen, fftw, libtiff, zlib, ants, bc
|
||||
, eigen, fftw, libtiff, libpng, zlib, ants, bc
|
||||
, qt5, libGL, libGLU, libX11, libXext
|
||||
, withGui ? true }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mrtrix";
|
||||
version = "3.0_RC3_latest";
|
||||
version = "3.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "MRtrix3";
|
||||
repo = "mrtrix3";
|
||||
rev = version;
|
||||
sha256 = "184nv524p8j94qicjy9l288bqcgl2yxqqs55a7042i0gfsnwp51c";
|
||||
sha256 = "1vvmmbw3m0bdfwp4szr62ygzsvkj0ss91cx5zlkspsr1rff05f9b";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
|
@ -22,7 +22,9 @@ stdenv.mkDerivation rec {
|
|||
python
|
||||
fftw
|
||||
libtiff
|
||||
zlib ] ++ lib.optionals withGui [
|
||||
libpng
|
||||
zlib
|
||||
] ++ lib.optionals withGui [
|
||||
libGL
|
||||
libGLU
|
||||
libX11
|
||||
|
@ -34,9 +36,14 @@ stdenv.mkDerivation rec {
|
|||
installCheckInputs = [ bc ];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs ./build ./configure ./run_tests ./bin/population_template
|
||||
patchShebangs ./build ./configure ./run_tests ./bin/*
|
||||
|
||||
# patching interpreters before fixup is needed for tests:
|
||||
patchShebangs ./bin/*
|
||||
patchShebangs testing/binaries/data/vectorstats/*py
|
||||
|
||||
substituteInPlace ./run_tests \
|
||||
--replace 'git submodule update --init >> $LOGFILE 2>&1' ""
|
||||
--replace 'git submodule update --init $datadir >> $LOGFILE 2>&1' ""
|
||||
'';
|
||||
|
||||
configurePhase = ''
|
||||
|
@ -50,7 +57,13 @@ stdenv.mkDerivation rec {
|
|||
(cd testing && ../build)
|
||||
'';
|
||||
|
||||
installCheckPhase = "./run_tests";
|
||||
installCheckPhase = ''
|
||||
./run_tests units
|
||||
./run_tests binaries
|
||||
|
||||
# can also `./run_tests scripts`, but this fails due to lack of FSL package
|
||||
# (and there's no convenient way to disable individual tests)
|
||||
'';
|
||||
doInstallCheck = true;
|
||||
|
||||
installPhase = ''
|
||||
|
@ -63,7 +76,9 @@ stdenv.mkDerivation rec {
|
|||
|
||||
postInstall = ''
|
||||
for prog in $out/bin/*; do
|
||||
wrapProgram $prog --prefix PATH : ${lib.makeBinPath [ ants ]}
|
||||
if [[ -x "$prog" ]]; then
|
||||
wrapProgram $prog --prefix PATH : ${lib.makeBinPath [ ants ]}
|
||||
fi
|
||||
done
|
||||
'';
|
||||
|
||||
|
|
|
@ -4,12 +4,12 @@ with stdenv.lib;
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "marvin";
|
||||
version = "20.9.0";
|
||||
version = "20.10.0";
|
||||
|
||||
src = fetchurl {
|
||||
name = "marvin-${version}.deb";
|
||||
url = "http://dl.chemaxon.com/marvin/${version}/marvin_linux_${versions.majorMinor version}.deb";
|
||||
sha256 = "1c6q1vb96jsb37g5qbhzcnasd5pdqjyc190yg3caw3gwrd97889q";
|
||||
sha256 = "042ndlns48pa6mn6wyrp4q9c1v0a2vzcnhw5l766zdnxdjyv0acx";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ dpkg makeWrapper ];
|
||||
|
|
|
@ -2,16 +2,16 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "elan";
|
||||
version = "0.8.0";
|
||||
version = "0.9.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kha";
|
||||
repo = "elan";
|
||||
rev = "v${version}";
|
||||
sha256 = "0n2ncssjcmp3x5kbnci7xbq5fgcihlr3vaglyhhwzrxkjy2vpmpd";
|
||||
sha256 = "17i8sn53hk03fsawpwfinm1w0nb6lcmdbk8ar2mxyhkxczd45vag";
|
||||
};
|
||||
|
||||
cargoSha256 = "1pkg0n7kxckr0zhr8dr12b9fxg5q185kj3r9k2rmnkj2dpa2mxh3";
|
||||
cargoSha256 = "1b2b200wci1lirnkbhfmravz85v8ly918qkr0nwg7dlmhvg9gjb0";
|
||||
|
||||
nativeBuildInputs = [ pkgconfig ];
|
||||
|
||||
|
@ -22,7 +22,7 @@ rustPlatform.buildRustPackage rec {
|
|||
postInstall = ''
|
||||
pushd $out/bin
|
||||
mv elan-init elan
|
||||
for link in lean leanpkg leanchecker leanc; do
|
||||
for link in lean leanpkg leanchecker leanc leanmake; do
|
||||
ln -s elan $link
|
||||
done
|
||||
popd
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue