Merge master into staging-next
This commit is contained in:
commit
e8122c3628
|
@ -115,8 +115,8 @@ let
|
||||||
mergeModules' mergeOptionDecls evalOptionValue mergeDefinitions
|
mergeModules' mergeOptionDecls evalOptionValue mergeDefinitions
|
||||||
pushDownProperties dischargeProperties filterOverrides
|
pushDownProperties dischargeProperties filterOverrides
|
||||||
sortProperties fixupOptionType mkIf mkAssert mkMerge mkOverride
|
sortProperties fixupOptionType mkIf mkAssert mkMerge mkOverride
|
||||||
mkOptionDefault mkDefault mkForce mkVMOverride mkStrict
|
mkOptionDefault mkDefault mkForce mkVMOverride
|
||||||
mkFixStrictness mkOrder mkBefore mkAfter mkAliasDefinitions
|
mkOrder mkBefore mkAfter mkAliasDefinitions
|
||||||
mkAliasAndWrapDefinitions fixMergeModules mkRemovedOptionModule
|
mkAliasAndWrapDefinitions fixMergeModules mkRemovedOptionModule
|
||||||
mkRenamedOptionModule mkMergedOptionModule mkChangedOptionModule
|
mkRenamedOptionModule mkMergedOptionModule mkChangedOptionModule
|
||||||
mkAliasOptionModule doRename;
|
mkAliasOptionModule doRename;
|
||||||
|
|
|
@ -713,10 +713,6 @@ rec {
|
||||||
mkForce = mkOverride 50;
|
mkForce = mkOverride 50;
|
||||||
mkVMOverride = mkOverride 10; # used by ‘nixos-rebuild build-vm’
|
mkVMOverride = mkOverride 10; # used by ‘nixos-rebuild build-vm’
|
||||||
|
|
||||||
mkStrict = builtins.trace "`mkStrict' is obsolete; use `mkOverride 0' instead." (mkOverride 0);
|
|
||||||
|
|
||||||
mkFixStrictness = id; # obsolete, no-op
|
|
||||||
|
|
||||||
mkOrder = priority: content:
|
mkOrder = priority: content:
|
||||||
{ _type = "order";
|
{ _type = "order";
|
||||||
inherit priority content;
|
inherit priority content;
|
||||||
|
|
|
@ -321,7 +321,26 @@
|
||||||
</section>
|
</section>
|
||||||
<section xml:id="sec-release-21.11-notable-changes">
|
<section xml:id="sec-release-21.11-notable-changes">
|
||||||
<title>Other Notable Changes</title>
|
<title>Other Notable Changes</title>
|
||||||
<para>
|
<itemizedlist>
|
||||||
</para>
|
<listitem>
|
||||||
|
<para>
|
||||||
|
The setting
|
||||||
|
<link xlink:href="options.html#opt-services.openssh.logLevel"><literal>services.openssh.logLevel</literal></link>
|
||||||
|
<literal>"VERBOSE"</literal>
|
||||||
|
<literal>"INFO"</literal>. This brings NixOS in line
|
||||||
|
with upstream and other Linux distributions, and reduces log
|
||||||
|
spam on servers due to bruteforcing botnets.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
However, if
|
||||||
|
<link xlink:href="options.html#opt-services.fail2ban.enable"><literal>services.fail2ban.enable</literal></link>
|
||||||
|
is <literal>true</literal>, the <literal>fail2ban</literal>
|
||||||
|
will override the verbosity to
|
||||||
|
<literal>"VERBOSE"</literal>, so that
|
||||||
|
<literal>fail2ban</literal> can observe the failed login
|
||||||
|
attempts from the SSH logs.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
</section>
|
</section>
|
||||||
</section>
|
</section>
|
||||||
|
|
|
@ -79,3 +79,7 @@ In addition to numerous new and upgraded packages, this release has the followin
|
||||||
old 2.7.7 version.
|
old 2.7.7 version.
|
||||||
|
|
||||||
## Other Notable Changes {#sec-release-21.11-notable-changes}
|
## Other Notable Changes {#sec-release-21.11-notable-changes}
|
||||||
|
|
||||||
|
- The setting [`services.openssh.logLevel`](options.html#opt-services.openssh.logLevel) `"VERBOSE"` `"INFO"`. This brings NixOS in line with upstream and other Linux distributions, and reduces log spam on servers due to bruteforcing botnets.
|
||||||
|
|
||||||
|
However, if [`services.fail2ban.enable`](options.html#opt-services.fail2ban.enable) is `true`, the `fail2ban` will override the verbosity to `"VERBOSE"`, so that `fail2ban` can observe the failed login attempts from the SSH logs.
|
||||||
|
|
|
@ -351,15 +351,12 @@ in
|
||||||
|
|
||||||
logLevel = mkOption {
|
logLevel = mkOption {
|
||||||
type = types.enum [ "QUIET" "FATAL" "ERROR" "INFO" "VERBOSE" "DEBUG" "DEBUG1" "DEBUG2" "DEBUG3" ];
|
type = types.enum [ "QUIET" "FATAL" "ERROR" "INFO" "VERBOSE" "DEBUG" "DEBUG1" "DEBUG2" "DEBUG3" ];
|
||||||
default = "VERBOSE";
|
default = "INFO"; # upstream default
|
||||||
description = ''
|
description = ''
|
||||||
Gives the verbosity level that is used when logging messages from sshd(8). The possible values are:
|
Gives the verbosity level that is used when logging messages from sshd(8). The possible values are:
|
||||||
QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, and DEBUG3. The default is VERBOSE. DEBUG and DEBUG1
|
QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, and DEBUG3. The default is INFO. DEBUG and DEBUG1
|
||||||
are equivalent. DEBUG2 and DEBUG3 each specify higher levels of debugging output. Logging with a DEBUG level
|
are equivalent. DEBUG2 and DEBUG3 each specify higher levels of debugging output. Logging with a DEBUG level
|
||||||
violates the privacy of users and is not recommended.
|
violates the privacy of users and is not recommended.
|
||||||
|
|
||||||
LogLevel VERBOSE logs user's key fingerprint on login.
|
|
||||||
Needed to have a clear audit track of which key was used to log in.
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,12 @@ in
|
||||||
enable = mkOption {
|
enable = mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
description = "Whether to enable the fail2ban service.";
|
description = ''
|
||||||
|
Whether to enable the fail2ban service.
|
||||||
|
|
||||||
|
See the documentation of <option>services.fail2ban.jails</option>
|
||||||
|
for what jails are enabled by default.
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
package = mkOption {
|
package = mkOption {
|
||||||
|
@ -221,6 +226,15 @@ in
|
||||||
defined in <filename>/etc/fail2ban/action.d</filename>,
|
defined in <filename>/etc/fail2ban/action.d</filename>,
|
||||||
while filters are defined in
|
while filters are defined in
|
||||||
<filename>/etc/fail2ban/filter.d</filename>.
|
<filename>/etc/fail2ban/filter.d</filename>.
|
||||||
|
|
||||||
|
NixOS comes with a default <literal>sshd</literal> jail;
|
||||||
|
for it to work well,
|
||||||
|
<option>services.openssh.logLevel</option> should be set to
|
||||||
|
<literal>"VERBOSE"</literal> or higher so that fail2ban
|
||||||
|
can observe failed login attempts.
|
||||||
|
This module sets it to <literal>"VERBOSE"</literal> if
|
||||||
|
not set otherwise, so enabling fail2ban can make SSH logs
|
||||||
|
more verbose.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -313,6 +327,9 @@ in
|
||||||
banaction_allports = ${cfg.banaction-allports}
|
banaction_allports = ${cfg.banaction-allports}
|
||||||
'';
|
'';
|
||||||
# Block SSH if there are too many failing connection attempts.
|
# Block SSH if there are too many failing connection attempts.
|
||||||
|
# Benefits from verbose sshd logging to observe failed login attempts,
|
||||||
|
# so we set that here unless the user overrode it.
|
||||||
|
services.openssh.logLevel = lib.mkDefault "VERBOSE";
|
||||||
services.fail2ban.jails.sshd = mkDefault ''
|
services.fail2ban.jails.sshd = mkDefault ''
|
||||||
enabled = true
|
enabled = true
|
||||||
port = ${concatMapStringsSep "," (p: toString p) config.services.openssh.ports}
|
port = ${concatMapStringsSep "," (p: toString p) config.services.openssh.ports}
|
||||||
|
|
|
@ -188,27 +188,27 @@ let cfg = config.services.xserver.libinput;
|
||||||
};
|
};
|
||||||
|
|
||||||
mkX11ConfigForDevice = deviceType: matchIs: ''
|
mkX11ConfigForDevice = deviceType: matchIs: ''
|
||||||
Identifier "libinput ${deviceType} configuration"
|
Identifier "libinput ${deviceType} configuration"
|
||||||
MatchDriver "libinput"
|
MatchDriver "libinput"
|
||||||
MatchIs${matchIs} "${xorgBool true}"
|
MatchIs${matchIs} "${xorgBool true}"
|
||||||
${optionalString (cfg.${deviceType}.dev != null) ''MatchDevicePath "${cfg.${deviceType}.dev}"''}
|
${optionalString (cfg.${deviceType}.dev != null) ''MatchDevicePath "${cfg.${deviceType}.dev}"''}
|
||||||
Option "AccelProfile" "${cfg.${deviceType}.accelProfile}"
|
Option "AccelProfile" "${cfg.${deviceType}.accelProfile}"
|
||||||
${optionalString (cfg.${deviceType}.accelSpeed != null) ''Option "AccelSpeed" "${cfg.${deviceType}.accelSpeed}"''}
|
${optionalString (cfg.${deviceType}.accelSpeed != null) ''Option "AccelSpeed" "${cfg.${deviceType}.accelSpeed}"''}
|
||||||
${optionalString (cfg.${deviceType}.buttonMapping != null) ''Option "ButtonMapping" "${cfg.${deviceType}.buttonMapping}"''}
|
${optionalString (cfg.${deviceType}.buttonMapping != null) ''Option "ButtonMapping" "${cfg.${deviceType}.buttonMapping}"''}
|
||||||
${optionalString (cfg.${deviceType}.calibrationMatrix != null) ''Option "CalibrationMatrix" "${cfg.${deviceType}.calibrationMatrix}"''}
|
${optionalString (cfg.${deviceType}.calibrationMatrix != null) ''Option "CalibrationMatrix" "${cfg.${deviceType}.calibrationMatrix}"''}
|
||||||
${optionalString (cfg.${deviceType}.clickMethod != null) ''Option "ClickMethod" "${cfg.${deviceType}.clickMethod}"''}
|
${optionalString (cfg.${deviceType}.clickMethod != null) ''Option "ClickMethod" "${cfg.${deviceType}.clickMethod}"''}
|
||||||
Option "LeftHanded" "${xorgBool cfg.${deviceType}.leftHanded}"
|
Option "LeftHanded" "${xorgBool cfg.${deviceType}.leftHanded}"
|
||||||
Option "MiddleEmulation" "${xorgBool cfg.${deviceType}.middleEmulation}"
|
Option "MiddleEmulation" "${xorgBool cfg.${deviceType}.middleEmulation}"
|
||||||
Option "NaturalScrolling" "${xorgBool cfg.${deviceType}.naturalScrolling}"
|
Option "NaturalScrolling" "${xorgBool cfg.${deviceType}.naturalScrolling}"
|
||||||
${optionalString (cfg.${deviceType}.scrollButton != null) ''Option "ScrollButton" "${toString cfg.${deviceType}.scrollButton}"''}
|
${optionalString (cfg.${deviceType}.scrollButton != null) ''Option "ScrollButton" "${toString cfg.${deviceType}.scrollButton}"''}
|
||||||
Option "ScrollMethod" "${cfg.${deviceType}.scrollMethod}"
|
Option "ScrollMethod" "${cfg.${deviceType}.scrollMethod}"
|
||||||
Option "HorizontalScrolling" "${xorgBool cfg.${deviceType}.horizontalScrolling}"
|
Option "HorizontalScrolling" "${xorgBool cfg.${deviceType}.horizontalScrolling}"
|
||||||
Option "SendEventsMode" "${cfg.${deviceType}.sendEventsMode}"
|
Option "SendEventsMode" "${cfg.${deviceType}.sendEventsMode}"
|
||||||
Option "Tapping" "${xorgBool cfg.${deviceType}.tapping}"
|
Option "Tapping" "${xorgBool cfg.${deviceType}.tapping}"
|
||||||
Option "TappingDragLock" "${xorgBool cfg.${deviceType}.tappingDragLock}"
|
Option "TappingDragLock" "${xorgBool cfg.${deviceType}.tappingDragLock}"
|
||||||
Option "DisableWhileTyping" "${xorgBool cfg.${deviceType}.disableWhileTyping}"
|
Option "DisableWhileTyping" "${xorgBool cfg.${deviceType}.disableWhileTyping}"
|
||||||
${cfg.${deviceType}.additionalOptions}
|
${cfg.${deviceType}.additionalOptions}
|
||||||
'';
|
'';
|
||||||
in {
|
in {
|
||||||
|
|
||||||
imports =
|
imports =
|
||||||
|
|
|
@ -81,13 +81,7 @@ let
|
||||||
monitors = forEach xrandrHeads (h: ''
|
monitors = forEach xrandrHeads (h: ''
|
||||||
Option "monitor-${h.config.output}" "${h.name}"
|
Option "monitor-${h.config.output}" "${h.name}"
|
||||||
'');
|
'');
|
||||||
# First option is indented through the space in the config but any
|
in concatStrings monitors;
|
||||||
# subsequent options aren't so we need to apply indentation to
|
|
||||||
# them here
|
|
||||||
monitorsIndented = if length monitors > 1
|
|
||||||
then singleton (head monitors) ++ map (m: " " + m) (tail monitors)
|
|
||||||
else monitors;
|
|
||||||
in concatStrings monitorsIndented;
|
|
||||||
|
|
||||||
# Here we chain every monitor from the left to right, so we have:
|
# Here we chain every monitor from the left to right, so we have:
|
||||||
# m4 right of m3 right of m2 right of m1 .----.----.----.----.
|
# m4 right of m3 right of m2 right of m1 .----.----.----.----.
|
||||||
|
@ -138,10 +132,15 @@ let
|
||||||
|
|
||||||
echo '${cfg.filesSection}' >> $out
|
echo '${cfg.filesSection}' >> $out
|
||||||
echo 'EndSection' >> $out
|
echo 'EndSection' >> $out
|
||||||
|
echo >> $out
|
||||||
|
|
||||||
echo "$config" >> $out
|
echo "$config" >> $out
|
||||||
''; # */
|
''; # */
|
||||||
|
|
||||||
|
prefixStringLines = prefix: str:
|
||||||
|
concatMapStringsSep "\n" (line: prefix + line) (splitString "\n" str);
|
||||||
|
|
||||||
|
indent = prefixStringLines " ";
|
||||||
in
|
in
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -358,6 +357,13 @@ in
|
||||||
description = ''
|
description = ''
|
||||||
The contents of the configuration file of the X server
|
The contents of the configuration file of the X server
|
||||||
(<filename>xorg.conf</filename>).
|
(<filename>xorg.conf</filename>).
|
||||||
|
|
||||||
|
This option is set by multiple modules, and the configs are
|
||||||
|
concatenated together.
|
||||||
|
|
||||||
|
In Xorg configs the last config entries take precedence,
|
||||||
|
so you may want to use <literal>lib.mkAfter</literal> on this option
|
||||||
|
to override NixOS's defaults.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -736,29 +742,29 @@ in
|
||||||
Section "ServerFlags"
|
Section "ServerFlags"
|
||||||
Option "AllowMouseOpenFail" "on"
|
Option "AllowMouseOpenFail" "on"
|
||||||
Option "DontZap" "${if cfg.enableCtrlAltBackspace then "off" else "on"}"
|
Option "DontZap" "${if cfg.enableCtrlAltBackspace then "off" else "on"}"
|
||||||
${cfg.serverFlagsSection}
|
${indent cfg.serverFlagsSection}
|
||||||
EndSection
|
EndSection
|
||||||
|
|
||||||
Section "Module"
|
Section "Module"
|
||||||
${cfg.moduleSection}
|
${indent cfg.moduleSection}
|
||||||
EndSection
|
EndSection
|
||||||
|
|
||||||
Section "Monitor"
|
Section "Monitor"
|
||||||
Identifier "Monitor[0]"
|
Identifier "Monitor[0]"
|
||||||
${cfg.monitorSection}
|
${indent cfg.monitorSection}
|
||||||
EndSection
|
EndSection
|
||||||
|
|
||||||
# Additional "InputClass" sections
|
# Additional "InputClass" sections
|
||||||
${flip concatMapStrings cfg.inputClassSections (inputClassSection: ''
|
${flip (concatMapStringsSep "\n") cfg.inputClassSections (inputClassSection: ''
|
||||||
Section "InputClass"
|
Section "InputClass"
|
||||||
${inputClassSection}
|
${indent inputClassSection}
|
||||||
EndSection
|
EndSection
|
||||||
'')}
|
'')}
|
||||||
|
|
||||||
|
|
||||||
Section "ServerLayout"
|
Section "ServerLayout"
|
||||||
Identifier "Layout[all]"
|
Identifier "Layout[all]"
|
||||||
${cfg.serverLayoutSection}
|
${indent cfg.serverLayoutSection}
|
||||||
# Reference the Screen sections for each driver. This will
|
# Reference the Screen sections for each driver. This will
|
||||||
# cause the X server to try each in turn.
|
# cause the X server to try each in turn.
|
||||||
${flip concatMapStrings (filter (d: d.display) cfg.drivers) (d: ''
|
${flip concatMapStrings (filter (d: d.display) cfg.drivers) (d: ''
|
||||||
|
@ -781,9 +787,9 @@ in
|
||||||
Identifier "Device-${driver.name}[0]"
|
Identifier "Device-${driver.name}[0]"
|
||||||
Driver "${driver.driverName or driver.name}"
|
Driver "${driver.driverName or driver.name}"
|
||||||
${if cfg.useGlamor then ''Option "AccelMethod" "glamor"'' else ""}
|
${if cfg.useGlamor then ''Option "AccelMethod" "glamor"'' else ""}
|
||||||
${cfg.deviceSection}
|
${indent cfg.deviceSection}
|
||||||
${driver.deviceSection or ""}
|
${indent (driver.deviceSection or "")}
|
||||||
${xrandrDeviceSection}
|
${indent xrandrDeviceSection}
|
||||||
EndSection
|
EndSection
|
||||||
${optionalString driver.display ''
|
${optionalString driver.display ''
|
||||||
|
|
||||||
|
@ -794,18 +800,22 @@ in
|
||||||
Monitor "Monitor[0]"
|
Monitor "Monitor[0]"
|
||||||
''}
|
''}
|
||||||
|
|
||||||
${cfg.screenSection}
|
${indent cfg.screenSection}
|
||||||
${driver.screenSection or ""}
|
${indent (driver.screenSection or "")}
|
||||||
|
|
||||||
${optionalString (cfg.defaultDepth != 0) ''
|
${optionalString (cfg.defaultDepth != 0) ''
|
||||||
DefaultDepth ${toString cfg.defaultDepth}
|
DefaultDepth ${toString cfg.defaultDepth}
|
||||||
''}
|
''}
|
||||||
|
|
||||||
${optionalString
|
${optionalString
|
||||||
(driver.name != "virtualbox" &&
|
(
|
||||||
|
driver.name != "virtualbox"
|
||||||
|
&&
|
||||||
(cfg.resolutions != [] ||
|
(cfg.resolutions != [] ||
|
||||||
cfg.extraDisplaySettings != "" ||
|
cfg.extraDisplaySettings != "" ||
|
||||||
cfg.virtualScreen != null))
|
cfg.virtualScreen != null
|
||||||
|
)
|
||||||
|
)
|
||||||
(let
|
(let
|
||||||
f = depth:
|
f = depth:
|
||||||
''
|
''
|
||||||
|
@ -813,7 +823,7 @@ in
|
||||||
Depth ${toString depth}
|
Depth ${toString depth}
|
||||||
${optionalString (cfg.resolutions != [])
|
${optionalString (cfg.resolutions != [])
|
||||||
"Modes ${concatMapStrings (res: ''"${toString res.x}x${toString res.y}"'') cfg.resolutions}"}
|
"Modes ${concatMapStrings (res: ''"${toString res.x}x${toString res.y}"'') cfg.resolutions}"}
|
||||||
${cfg.extraDisplaySettings}
|
${indent cfg.extraDisplaySettings}
|
||||||
${optionalString (cfg.virtualScreen != null)
|
${optionalString (cfg.virtualScreen != null)
|
||||||
"Virtual ${toString cfg.virtualScreen.x} ${toString cfg.virtualScreen.y}"}
|
"Virtual ${toString cfg.virtualScreen.x} ${toString cfg.virtualScreen.y}"}
|
||||||
EndSubSection
|
EndSubSection
|
||||||
|
|
|
@ -87,9 +87,9 @@ with lib;
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf (cfg.emulateWheel) {
|
(mkIf (cfg.emulateWheel) {
|
||||||
services.xserver.inputClassSections =
|
services.xserver.inputClassSections = [
|
||||||
[''
|
''
|
||||||
Identifier "Trackpoint Wheel Emulation"
|
Identifier "Trackpoint Wheel Emulation"
|
||||||
MatchProduct "${if cfg.fakeButtons then "PS/2 Generic Mouse" else "ETPS/2 Elantech TrackPoint|Elantech PS/2 TrackPoint|TPPS/2 IBM TrackPoint|DualPoint Stick|Synaptics Inc. Composite TouchPad / TrackPoint|ThinkPad USB Keyboard with TrackPoint|USB Trackpoint pointing device|Composite TouchPad / TrackPoint|${cfg.device}"}"
|
MatchProduct "${if cfg.fakeButtons then "PS/2 Generic Mouse" else "ETPS/2 Elantech TrackPoint|Elantech PS/2 TrackPoint|TPPS/2 IBM TrackPoint|DualPoint Stick|Synaptics Inc. Composite TouchPad / TrackPoint|ThinkPad USB Keyboard with TrackPoint|USB Trackpoint pointing device|Composite TouchPad / TrackPoint|${cfg.device}"}"
|
||||||
MatchDevicePath "/dev/input/event*"
|
MatchDevicePath "/dev/input/event*"
|
||||||
Option "EmulateWheel" "true"
|
Option "EmulateWheel" "true"
|
||||||
|
@ -97,7 +97,8 @@ with lib;
|
||||||
Option "Emulate3Buttons" "false"
|
Option "Emulate3Buttons" "false"
|
||||||
Option "XAxisMapping" "6 7"
|
Option "XAxisMapping" "6 7"
|
||||||
Option "YAxisMapping" "4 5"
|
Option "YAxisMapping" "4 5"
|
||||||
''];
|
''
|
||||||
|
];
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.fakeButtons {
|
(mkIf cfg.fakeButtons {
|
||||||
|
|
|
@ -175,12 +175,6 @@ let
|
||||||
sha256 = "1bxdhxmiy6h4acq26lq43x2mxx6rawmfmlgsh5j7w8kyhkw5af0c";
|
sha256 = "1bxdhxmiy6h4acq26lq43x2mxx6rawmfmlgsh5j7w8kyhkw5af0c";
|
||||||
revert = true;
|
revert = true;
|
||||||
})
|
})
|
||||||
# To fix building from a release tarball (which we do):
|
|
||||||
(githubPatch {
|
|
||||||
# Revert back to generating chromium_git_revision.h via version.py
|
|
||||||
commit = "bd524d08f8465364d12d32a84fd1aa983aecc502";
|
|
||||||
sha256 = "1jsxidg5jzwkrcpx3lylx4gyg56zjyd7sc957kaaqqc853bn83b4";
|
|
||||||
})
|
|
||||||
];
|
];
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
|
|
@ -31,15 +31,15 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dev": {
|
"dev": {
|
||||||
"version": "93.0.4542.2",
|
"version": "93.0.4549.3",
|
||||||
"sha256": "0sfyi52kaxg5mllcvn61285fjnj72vglv9fjf36ri93v6gh34rgw",
|
"sha256": "0bkr67n1d75ayd1d9sa57c99j85r83gadzfs8iw7kwiha9g0mjgp",
|
||||||
"sha256bin64": "0hk31b9nk834gykv977dv7f1hyl7jp527bx5ldxhwcy27333h1hr",
|
"sha256bin64": "1hac6m668nrdzvfqx3vyc74pnx8lf973m1jxnm3cfy83g7wynphz",
|
||||||
"deps": {
|
"deps": {
|
||||||
"gn": {
|
"gn": {
|
||||||
"version": "2021-06-11",
|
"version": "2021-06-18",
|
||||||
"url": "https://gn.googlesource.com/gn",
|
"url": "https://gn.googlesource.com/gn",
|
||||||
"rev": "e0c476ffc83dc10897cb90b45c03ae2539352c5c",
|
"rev": "170c2dba1e0c0299fe8c6a441caf2f2352a42ae0",
|
||||||
"sha256": "01p5w57kksihzg9nb5096a74cw2rp8zzgdjcjm1pgrqvd1mxpjm4"
|
"sha256": "1ylx8a5fxq7aciqs0mx7fld763sqkqn39lb9k951w6gksm15lrn3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -28,7 +28,7 @@ let
|
||||||
else "");
|
else "");
|
||||||
in stdenv.mkDerivation rec {
|
in stdenv.mkDerivation rec {
|
||||||
pname = "signal-desktop";
|
pname = "signal-desktop";
|
||||||
version = "5.5.0"; # Please backport all updates to the stable channel.
|
version = "5.6.1"; # Please backport all updates to the stable channel.
|
||||||
# All releases have a limited lifetime and "expire" 90 days after the release.
|
# All releases have a limited lifetime and "expire" 90 days after the release.
|
||||||
# When releases "expire" the application becomes unusable until an update is
|
# When releases "expire" the application becomes unusable until an update is
|
||||||
# applied. The expiration date for the current release can be extracted with:
|
# applied. The expiration date for the current release can be extracted with:
|
||||||
|
@ -38,7 +38,7 @@ in stdenv.mkDerivation rec {
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://updates.signal.org/desktop/apt/pool/main/s/signal-desktop/signal-desktop_${version}_amd64.deb";
|
url = "https://updates.signal.org/desktop/apt/pool/main/s/signal-desktop/signal-desktop_${version}_amd64.deb";
|
||||||
sha256 = "0l12hwwv0ks2hgp1xc5nmn5rcqzwxdpjqhwysix550m26bz4jczp";
|
sha256 = "00q99r3p49fa5j54h1faxrzxfgz1pkx86b1jg3vi94hddlw3xm9c";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
{ lib
|
{ lib
|
||||||
|
, callPackage
|
||||||
, buildPythonPackage
|
, buildPythonPackage
|
||||||
, fetchPypi
|
, fetchPypi
|
||||||
, installShellFiles
|
, installShellFiles
|
||||||
, ansible-collections
|
|
||||||
, cryptography
|
, cryptography
|
||||||
, jinja2
|
, jinja2
|
||||||
, junit-xml
|
, junit-xml
|
||||||
|
@ -20,13 +20,19 @@
|
||||||
, xmltodict
|
, xmltodict
|
||||||
}:
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
ansible-collections = callPackage ./collections.nix {
|
||||||
|
version = "3.4.0"; # must be < 4.0
|
||||||
|
sha256 = "096rbgz730njk0pg8qnc27mmz110wqrw354ca9gasb7rqg0f4d6a";
|
||||||
|
};
|
||||||
|
in
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "ansible-base";
|
pname = "ansible-base";
|
||||||
version = "2.10.10";
|
version = "2.10.11";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "046ynyk9ldw35jbyw6jp0dmms735cd5i1f046f2lis8xv27bci3p";
|
sha256 = "0jr3cxqiami9k07g2kmvfp54iafbcnd1d66l8fdnaqka5bc19wdw";
|
||||||
};
|
};
|
||||||
|
|
||||||
# ansible_connection is already wrapped, so don't pass it through
|
# ansible_connection is already wrapped, so don't pass it through
|
||||||
|
@ -69,6 +75,10 @@ buildPythonPackage rec {
|
||||||
# internal import errors, missing dependencies
|
# internal import errors, missing dependencies
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
collections = ansible-collections;
|
||||||
|
};
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Radically simple IT automation";
|
description = "Radically simple IT automation";
|
||||||
homepage = "https://www.ansible.com";
|
homepage = "https://www.ansible.com";
|
||||||
|
|
|
@ -14,21 +14,23 @@
|
||||||
, xmltodict
|
, xmltodict
|
||||||
, withJunos ? false
|
, withJunos ? false
|
||||||
, withNetbox ? false
|
, withNetbox ? false
|
||||||
|
|
||||||
|
, version
|
||||||
|
, sha256
|
||||||
}:
|
}:
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "ansible";
|
pname = "ansible";
|
||||||
version = "3.4.0";
|
inherit version;
|
||||||
format = "setuptools";
|
format = "setuptools";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version sha256;
|
||||||
sha256 = "096rbgz730njk0pg8qnc27mmz110wqrw354ca9gasb7rqg0f4d6a";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
# make ansible-base depend on ansible-collection, not the other way around
|
# make ansible-base depend on ansible-collection, not the other way around
|
||||||
sed -i '/ansible-base/d' setup.py
|
sed -Ei '/ansible-(base|core)/d' setup.py
|
||||||
'';
|
'';
|
||||||
|
|
||||||
propagatedBuildInputs = lib.unique ([
|
propagatedBuildInputs = lib.unique ([
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
{ lib
|
{ lib
|
||||||
|
, callPackage
|
||||||
, buildPythonPackage
|
, buildPythonPackage
|
||||||
, fetchPypi
|
, fetchPypi
|
||||||
, installShellFiles
|
, installShellFiles
|
||||||
, ansible-collections
|
|
||||||
, cryptography
|
, cryptography
|
||||||
, jinja2
|
, jinja2
|
||||||
, junit-xml
|
, junit-xml
|
||||||
|
@ -21,13 +21,19 @@
|
||||||
, xmltodict
|
, xmltodict
|
||||||
}:
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
ansible-collections = callPackage ./collections.nix {
|
||||||
|
version = "4.1.0";
|
||||||
|
sha256 = "0rrivq1g0vizah8zmf012lzig2xxfk5x1371k16s3nn4zfkwqqgm";
|
||||||
|
};
|
||||||
|
in
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "ansible-core";
|
pname = "ansible-core";
|
||||||
version = "2.11.1";
|
version = "2.11.2";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "sha256-fnWCepTUfRw+GTDXCPDvY3o6uaIfdXqvVd6rbp9HxoI=";
|
sha256 = "1syadgzn5ww5bhq9s2py4h1hkh11h7aac5b37zi8rw2xfvdc7r2s";
|
||||||
};
|
};
|
||||||
|
|
||||||
# ansible_connection is already wrapped, so don't pass it through
|
# ansible_connection is already wrapped, so don't pass it through
|
||||||
|
@ -74,6 +80,10 @@ buildPythonPackage rec {
|
||||||
# internal import errors, missing dependencies
|
# internal import errors, missing dependencies
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
collections = ansible-collections;
|
||||||
|
};
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Radically simple IT automation";
|
description = "Radically simple IT automation";
|
||||||
homepage = "https://www.ansible.com";
|
homepage = "https://www.ansible.com";
|
||||||
|
|
|
@ -18,13 +18,13 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "ansible";
|
pname = "ansible";
|
||||||
version = "2.9.22";
|
version = "2.9.23";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "ansible";
|
owner = "ansible";
|
||||||
repo = "ansible";
|
repo = "ansible";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0gkv59cfxzs0ahgkxmmx9sqnfb2xqr10q4yh2662nbzajmvqmfgm";
|
sha256 = "0mikykpzyqpmaiczz53f71mcyc4qvahi9ckn7wgfx7sw7s2z3skk";
|
||||||
};
|
};
|
||||||
|
|
||||||
prePatch = ''
|
prePatch = ''
|
||||||
|
|
|
@ -7,13 +7,13 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "resolvelib";
|
pname = "resolvelib";
|
||||||
version = "0.7.0";
|
version = "0.7.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "sarugaku";
|
owner = "sarugaku";
|
||||||
repo = "resolvelib";
|
repo = "resolvelib";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "0r7cxwrfvpqz4kd7pdf8fsynzlmi6c754jd5hzd6vssc1zlyvvhx";
|
sha256 = "1fqz75riagizihvf4j7wc3zjw6kmg1dd8sf49aszyml105kb33n8";
|
||||||
};
|
};
|
||||||
|
|
||||||
checkInputs = [
|
checkInputs = [
|
||||||
|
|
|
@ -2,14 +2,14 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "byacc";
|
pname = "byacc";
|
||||||
version = "20210520";
|
version = "20210619";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
urls = [
|
urls = [
|
||||||
"ftp://ftp.invisible-island.net/byacc/${pname}-${version}.tgz"
|
"ftp://ftp.invisible-island.net/byacc/${pname}-${version}.tgz"
|
||||||
"https://invisible-mirror.net/archives/byacc/${pname}-${version}.tgz"
|
"https://invisible-mirror.net/archives/byacc/${pname}-${version}.tgz"
|
||||||
];
|
];
|
||||||
sha256 = "sha256-19MdrnLLlzSC73+XVgmuQBzMEu4/sWi2emlSbGCv5D4=";
|
sha256 = "sha256-rN1ggNz5NXMqCOyOjEwWHGZs1W2MSQc5xtu2JnpJjA4=";
|
||||||
};
|
};
|
||||||
|
|
||||||
configureFlags = [
|
configureFlags = [
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "atomicparsley";
|
pname = "atomicparsley";
|
||||||
version = "20210124.204813.840499f";
|
version = "20210617.200601.1ac7c08";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "wez";
|
owner = "wez";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "sha256-/bkfgIWlQobaiad2WD7DUUrTwfYurP7YAINaLTwBEcE=";
|
sha256 = "sha256-IhZe0vM41JhO8H79ZrRx4FRA4zfB6X0daC8QoE5MHmU=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake ];
|
nativeBuildInputs = [ cmake ];
|
||||||
|
|
|
@ -441,8 +441,6 @@ in {
|
||||||
|
|
||||||
ansible-base = callPackage ../development/python-modules/ansible/base.nix { };
|
ansible-base = callPackage ../development/python-modules/ansible/base.nix { };
|
||||||
|
|
||||||
ansible-collections = callPackage ../development/python-modules/ansible/collections.nix { };
|
|
||||||
|
|
||||||
ansible-core = callPackage ../development/python-modules/ansible/core.nix { };
|
ansible-core = callPackage ../development/python-modules/ansible/core.nix { };
|
||||||
|
|
||||||
ansible-kernel = callPackage ../development/python-modules/ansible-kernel { };
|
ansible-kernel = callPackage ../development/python-modules/ansible-kernel { };
|
||||||
|
|
Loading…
Reference in a new issue