Merge master into haskell-updates

This commit is contained in:
github-actions[bot] 2023-05-28 00:14:04 +00:00 committed by GitHub
commit 53e76520b9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
165 changed files with 1595 additions and 585 deletions

View file

@ -19,7 +19,7 @@ In the following is an example expression using `buildGoModule`, the following a
To avoid updating this field when dependencies change, run `go mod vendor` in your source repo and set `vendorHash = null;` To avoid updating this field when dependencies change, run `go mod vendor` in your source repo and set `vendorHash = null;`
To obtain the actual hash, set `vendorHash = lib.fakeSha256;` and run the build ([more details here](#sec-source-hashes)). To obtain the actual hash, set `vendorHash = lib.fakeSha256;` and run the build ([more details here](#sec-source-hashes)).
- `proxyVendor`: Fetches (go mod download) and proxies the vendor directory. This is useful if your code depends on c code and go mod tidy does not include the needed sources to build or if any dependency has case-insensitive conflicts which will produce platform dependant `vendorHash` checksums. - `proxyVendor`: Fetches (go mod download) and proxies the vendor directory. This is useful if your code depends on c code and go mod tidy does not include the needed sources to build or if any dependency has case-insensitive conflicts which will produce platform-dependent `vendorHash` checksums.
- `modPostBuild`: Shell commands to run after the build of the go-modules executes `go mod vendor`, and before calculating fixed output derivation's `vendorHash` (or `vendorSha256`). Note that if you change this attribute, you need to update `vendorHash` (or `vendorSha256`) attribute. - `modPostBuild`: Shell commands to run after the build of the go-modules executes `go mod vendor`, and before calculating fixed output derivation's `vendorHash` (or `vendorSha256`). Note that if you change this attribute, you need to update `vendorHash` (or `vendorSha256`) attribute.
```nix ```nix

View file

@ -9670,6 +9670,12 @@
githubId = 346094; githubId = 346094;
name = "Michael Alyn Miller"; name = "Michael Alyn Miller";
}; };
mangoiv = {
email = "contact@mangoiv.com";
github = "mangoiv";
githubId = 40720523;
name = "MangoIV";
};
manojkarthick = { manojkarthick = {
email = "smanojkarthick@gmail.com"; email = "smanojkarthick@gmail.com";
github = "manojkarthick"; github = "manojkarthick";
@ -11044,6 +11050,11 @@
githubId = 1009523; githubId = 1009523;
name = "Ashijit Pramanik"; name = "Ashijit Pramanik";
}; };
name-snrl = {
github = "name-snrl";
githubId = 72071763;
name = "Yusup Urazaev";
};
namore = { namore = {
email = "namor@hemio.de"; email = "namor@hemio.de";
github = "namore"; github = "namore";

View file

@ -10,10 +10,16 @@
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. --> <!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
- [river](https://github.com/riverwm/river), A dynamic tiling wayland compositor. Available as [programs.river](#opt-programs.river.enable).
## Backward Incompatibilities {#sec-release-23.11-incompatibilities} ## Backward Incompatibilities {#sec-release-23.11-incompatibilities}
- The latest version of `clonehero` now stores custom content in `~/.clonehero`. See the [migration instructions](https://clonehero.net/2022/11/29/v23-to-v1-migration-instructions.html). Typically, these content files would exist along side the binary, but the previous build used a wrapper script that would store them in `~/.config/unity3d/srylain Inc_/Clone Hero`. - The latest version of `clonehero` now stores custom content in `~/.clonehero`. See the [migration instructions](https://clonehero.net/2022/11/29/v23-to-v1-migration-instructions.html). Typically, these content files would exist along side the binary, but the previous build used a wrapper script that would store them in `~/.config/unity3d/srylain Inc_/Clone Hero`.
- `etcd` has been updated to 3.5, you will want to read the [3.3 to 3.4](https://etcd.io/docs/v3.5/upgrades/upgrade_3_4/) and [3.4 to 3.5](https://etcd.io/docs/v3.5/upgrades/upgrade_3_5/) upgrade guides
## Other Notable Changes {#sec-release-23.11-notable-changes} ## Other Notable Changes {#sec-release-23.11-notable-changes}
- A new option was added to the virtualisation module that enables specifying explicitly named network interfaces in QEMU VMs. The existing `virtualisation.vlans` is still supported for cases where the name of the network interface is irrelevant. - A new option was added to the virtualisation module that enables specifying explicitly named network interfaces in QEMU VMs. The existing `virtualisation.vlans` is still supported for cases where the name of the network interface is irrelevant.
- `services.nginx` gained a `defaultListen` option at server-level with support for PROXY protocol listeners, also `proxyProtocol` is now exposed in `services.nginx.virtualHosts.<name>.listen` option. It is now possible to run PROXY listeners and non-PROXY listeners at a server-level, see [#213510](https://github.com/NixOS/nixpkgs/pull/213510/) for more details.

View file

@ -163,11 +163,6 @@ class Driver:
machine.wait_for_shutdown() machine.wait_for_shutdown()
def create_machine(self, args: Dict[str, Any]) -> Machine: def create_machine(self, args: Dict[str, Any]) -> Machine:
rootlog.warning(
"Using legacy create_machine(), please instantiate the"
"Machine class directly, instead"
)
tmp_dir = get_tmp_dir() tmp_dir = get_tmp_dir()
if args.get("startCommand"): if args.get("startCommand"):

View file

@ -369,8 +369,8 @@ class Machine:
@staticmethod @staticmethod
def create_startcommand(args: Dict[str, str]) -> StartCommand: def create_startcommand(args: Dict[str, str]) -> StartCommand:
rootlog.warning( rootlog.warning(
"Using legacy create_startcommand()," "Using legacy create_startcommand(), "
"please use proper nix test vm instrumentation, instead" "please use proper nix test vm instrumentation, instead "
"to generate the appropriate nixos test vm qemu startup script" "to generate the appropriate nixos test vm qemu startup script"
) )
hda = None hda = None

View file

@ -241,7 +241,6 @@
./programs/starship.nix ./programs/starship.nix
./programs/steam.nix ./programs/steam.nix
./programs/streamdeck-ui.nix ./programs/streamdeck-ui.nix
./programs/sway.nix
./programs/sysdig.nix ./programs/sysdig.nix
./programs/system-config-printer.nix ./programs/system-config-printer.nix
./programs/systemtap.nix ./programs/systemtap.nix
@ -256,7 +255,9 @@
./programs/usbtop.nix ./programs/usbtop.nix
./programs/vim.nix ./programs/vim.nix
./programs/wavemon.nix ./programs/wavemon.nix
./programs/waybar.nix ./programs/wayland/river.nix
./programs/wayland/sway.nix
./programs/wayland/waybar.nix
./programs/weylus.nix ./programs/weylus.nix
./programs/wireshark.nix ./programs/wireshark.nix
./programs/xastir.nix ./programs/xastir.nix
@ -911,6 +912,7 @@
./services/networking/knot.nix ./services/networking/knot.nix
./services/networking/kresd.nix ./services/networking/kresd.nix
./services/networking/lambdabot.nix ./services/networking/lambdabot.nix
./services/networking/legit.nix
./services/networking/libreswan.nix ./services/networking/libreswan.nix
./services/networking/lldpd.nix ./services/networking/lldpd.nix
./services/networking/logmein-hamachi.nix ./services/networking/logmein-hamachi.nix
@ -1309,7 +1311,6 @@
./services/x11/window-managers/default.nix ./services/x11/window-managers/default.nix
./services/x11/window-managers/fluxbox.nix ./services/x11/window-managers/fluxbox.nix
./services/x11/window-managers/icewm.nix ./services/x11/window-managers/icewm.nix
./services/x11/window-managers/bspwm.nix
./services/x11/window-managers/katriawm.nix ./services/x11/window-managers/katriawm.nix
./services/x11/window-managers/metacity.nix ./services/x11/window-managers/metacity.nix
./services/x11/window-managers/nimdow.nix ./services/x11/window-managers/nimdow.nix

View file

@ -0,0 +1,59 @@
{
config,
pkgs,
lib,
...
}:
with lib; let
cfg = config.programs.river;
in {
options.programs.river = {
enable = mkEnableOption (lib.mdDoc "river, a dynamic tiling Wayland compositor");
package = mkOption {
type = with types; nullOr package;
default = pkgs.river;
defaultText = literalExpression "pkgs.river";
description = lib.mdDoc ''
River package to use.
Set to `null` to not add any River package to your path.
This should be done if you want to use the Home Manager River module to install River.
'';
};
extraPackages = mkOption {
type = with types; listOf package;
default = with pkgs; [
swaylock
foot
dmenu
];
defaultText = literalExpression ''
with pkgs; [ swaylock foot dmenu ];
'';
example = literalExpression ''
with pkgs; [
termite rofi light
]
'';
description = lib.mdDoc ''
Extra packages to be installed system wide. See
[Common X11 apps used on i3 with Wayland alternatives](https://github.com/swaywm/sway/wiki/i3-Migration-Guide#common-x11-apps-used-on-i3-with-wayland-alternatives)
for a list of useful software.
'';
};
};
config =
mkIf cfg.enable (mkMerge [
{
environment.systemPackages = optional (cfg.package != null) cfg.package ++ cfg.extraPackages;
# To make a river session available if a display manager like SDDM is enabled:
programs.xwayland.enable = mkDefault true;
}
(import ./wayland-session.nix { inherit lib pkgs; })
]);
meta.maintainers = with lib.maintainers; [ GaetanLepage ];
}

View file

@ -123,41 +123,36 @@ in {
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable
assertions = [ (mkMerge [
{ {
assertion = cfg.extraSessionCommands != "" -> cfg.wrapperFeatures.base; assertions = [
message = '' {
The extraSessionCommands for Sway will not be run if assertion = cfg.extraSessionCommands != "" -> cfg.wrapperFeatures.base;
wrapperFeatures.base is disabled. message = ''
''; The extraSessionCommands for Sway will not be run if
} wrapperFeatures.base is disabled.
]; '';
environment = { }
systemPackages = optional (cfg.package != null) cfg.package ++ cfg.extraPackages; ];
# Needed for the default wallpaper: environment = {
pathsToLink = optionals (cfg.package != null) [ "/share/backgrounds/sway" ]; systemPackages = optional (cfg.package != null) cfg.package ++ cfg.extraPackages;
etc = { # Needed for the default wallpaper:
"sway/config.d/nixos.conf".source = pkgs.writeText "nixos.conf" '' pathsToLink = optionals (cfg.package != null) [ "/share/backgrounds/sway" ];
# Import the most important environment variables into the D-Bus and systemd etc = {
# user environments (e.g. required for screen sharing and Pinentry prompts): "sway/config.d/nixos.conf".source = pkgs.writeText "nixos.conf" ''
exec dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP # Import the most important environment variables into the D-Bus and systemd
''; # user environments (e.g. required for screen sharing and Pinentry prompts):
} // optionalAttrs (cfg.package != null) { exec dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP
"sway/config".source = mkOptionDefault "${cfg.package}/etc/sway/config"; '';
}; } // optionalAttrs (cfg.package != null) {
}; "sway/config".source = mkOptionDefault "${cfg.package}/etc/sway/config";
security.polkit.enable = true; };
security.pam.services.swaylock = {}; };
hardware.opengl.enable = mkDefault true; # To make a Sway session available if a display manager like SDDM is enabled:
fonts.enableDefaultFonts = mkDefault true; services.xserver.displayManager.sessionPackages = optionals (cfg.package != null) [ cfg.package ]; }
programs.dconf.enable = mkDefault true; (import ./wayland-session.nix { inherit lib pkgs; })
# To make a Sway session available if a display manager like SDDM is enabled: ]);
services.xserver.displayManager.sessionPackages = optionals (cfg.package != null) [ cfg.package ];
programs.xwayland.enable = mkDefault true;
# For screen sharing (this option only has an effect with xdg.portal.enable):
xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-wlr ];
};
meta.maintainers = with lib.maintainers; [ primeos colemickens ]; meta.maintainers = with lib.maintainers; [ primeos colemickens ];
} }

View file

@ -0,0 +1,23 @@
{ lib, pkgs, ... }: with lib; {
security = {
polkit.enable = true;
pam.services.swaylock = {};
};
hardware.opengl.enable = mkDefault true;
fonts.enableDefaultFonts = mkDefault true;
programs = {
dconf.enable = mkDefault true;
xwayland.enable = mkDefault true;
};
xdg.portal = {
enable = mkDefault true;
extraPortals = [
# For screen sharing
pkgs.xdg-desktop-portal-wlr
];
};
}

View file

@ -29,6 +29,7 @@ in {
}; };
appservice = rec { appservice = rec {
id = "facebook";
address = "http://${hostname}:${toString port}"; address = "http://${hostname}:${toString port}";
hostname = "localhost"; hostname = "localhost";
port = 29319; port = 29319;
@ -171,7 +172,7 @@ in {
services.mautrix-facebook = { services.mautrix-facebook = {
registrationData = { registrationData = {
id = "mautrix-facebook"; id = cfg.settings.appservice.id;
namespaces = { namespaces = {
users = [ users = [

View file

@ -15,6 +15,8 @@ in {
type = types.bool; type = types.bool;
}; };
package = mkPackageOptionMD pkgs "etcd" { };
name = mkOption { name = mkOption {
description = lib.mdDoc "Etcd unique node name."; description = lib.mdDoc "Etcd unique node name.";
default = config.networking.hostName; default = config.networking.hostName;
@ -187,13 +189,13 @@ in {
serviceConfig = { serviceConfig = {
Type = "notify"; Type = "notify";
ExecStart = "${pkgs.etcd}/bin/etcd"; ExecStart = "${cfg.package}/bin/etcd";
User = "etcd"; User = "etcd";
LimitNOFILE = 40000; LimitNOFILE = 40000;
}; };
}; };
environment.systemPackages = [ pkgs.etcd ]; environment.systemPackages = [ cfg.package ];
users.users.etcd = { users.users.etcd = {
isSystemUser = true; isSystemUser = true;

View file

@ -0,0 +1,182 @@
{ config, lib, pkgs, ... }:
let
inherit (lib)
literalExpression
mkEnableOption
mdDoc
mkIf
mkOption
mkPackageOptionMD
optionalAttrs
optional
types;
cfg = config.services.legit;
yaml = pkgs.formats.yaml { };
configFile = yaml.generate "legit.yaml" cfg.settings;
defaultStateDir = "/var/lib/legit";
defaultStaticDir = "${cfg.settings.repo.scanPath}/static";
defaultTemplatesDir = "${cfg.settings.repo.scanPath}/templates";
in
{
options.services.legit = {
enable = mkEnableOption (mdDoc "legit git web frontend");
package = mkPackageOptionMD pkgs "legit-web" { };
user = mkOption {
type = types.str;
default = "legit";
description = mdDoc "User account under which legit runs.";
};
group = mkOption {
type = types.str;
default = "legit";
description = mdDoc "Group account under which legit runs.";
};
settings = mkOption {
default = { };
description = mdDoc ''
The primary legit configuration. See the
[sample configuration](https://github.com/icyphox/legit/blob/master/config.yaml)
for possible values.
'';
type = types.submodule {
options.repo = {
scanPath = mkOption {
type = types.path;
default = defaultStateDir;
description = mdDoc "Directory where legit will scan for repositories.";
};
readme = mkOption {
type = types.listOf types.str;
default = [ ];
description = mdDoc "Readme files to look for.";
};
mainBranch = mkOption {
type = types.listOf types.str;
default = [ "main" "master" ];
description = mdDoc "Main branch to look for.";
};
ignore = mkOption {
type = types.listOf types.str;
default = [ ];
description = mdDoc "Repositories to ignore.";
};
};
options.dirs = {
templates = mkOption {
type = types.path;
default = "${pkgs.legit-web}/lib/legit/templates";
defaultText = literalExpression ''"''${pkgs.legit-web}/lib/legit/templates"'';
description = mdDoc "Directories where template files are located.";
};
static = mkOption {
type = types.path;
default = "${pkgs.legit-web}/lib/legit/static";
defaultText = literalExpression ''"''${pkgs.legit-web}/lib/legit/static"'';
description = mdDoc "Directories where static files are located.";
};
};
options.meta = {
title = mkOption {
type = types.str;
default = "legit";
description = mdDoc "Website title.";
};
description = mkOption {
type = types.str;
default = "git frontend";
description = mdDoc "Website description.";
};
};
options.server = {
name = mkOption {
type = types.str;
default = "localhost";
description = mdDoc "Server name.";
};
host = mkOption {
type = types.str;
default = "127.0.0.1";
description = mdDoc "Host address.";
};
port = mkOption {
type = types.port;
default = 5555;
description = mdDoc "Legit port.";
};
};
};
};
};
config = mkIf cfg.enable {
users.groups = optionalAttrs (cfg.group == "legit") {
"${cfg.group}" = { };
};
users.users = optionalAttrs (cfg.user == "legit") {
"${cfg.user}" = {
group = cfg.group;
isSystemUser = true;
};
};
systemd.services.legit = {
description = "legit git frontend";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
restartTriggers = [ configFile ];
serviceConfig = {
Type = "simple";
User = cfg.user;
Group = cfg.group;
ExecStart = "${cfg.package}/bin/legit -config ${configFile}";
Restart = "always";
WorkingDirectory = cfg.settings.repo.scanPath;
StateDirectory = [ ] ++
optional (cfg.settings.repo.scanPath == defaultStateDir) "legit" ++
optional (cfg.settings.dirs.static == defaultStaticDir) "legit/static" ++
optional (cfg.settings.dirs.templates == defaultTemplatesDir) "legit/templates";
# Hardening
CapabilityBoundingSet = [ "" ];
DeviceAllow = [ "" ];
LockPersonality = true;
MemoryDenyWriteExecute = true;
NoNewPrivileges = true;
PrivateDevices = true;
PrivateTmp = true;
PrivateUsers = true;
ProcSubset = "pid";
ProtectClock = true;
ProtectControlGroups = true;
ProtectHome = true;
ProtectHostname = true;
ProtectKernelLogs = true;
ProtectKernelModules = true;
ProtectKernelTunables = true;
ProtectProc = "invisible";
ProtectSystem = "strict";
ReadWritePaths = cfg.settings.repo.scanPath;
RemoveIPC = true;
RestrictAddressFamilies = [ "AF_INET" "AF_INET6" ];
RestrictNamespaces = true;
RestrictRealtime = true;
RestrictSUIDSGID = true;
SystemCallArchitectures = "native";
SystemCallFilter = [ "@system-service" "~@privileged" ];
UMask = "0077";
};
};
};
}

View file

@ -309,36 +309,54 @@ let
onlySSL = vhost.onlySSL || vhost.enableSSL; onlySSL = vhost.onlySSL || vhost.enableSSL;
hasSSL = onlySSL || vhost.addSSL || vhost.forceSSL; hasSSL = onlySSL || vhost.addSSL || vhost.forceSSL;
# First evaluation of defaultListen based on a set of listen lines.
mkDefaultListenVhost = listenLines:
# If this vhost has SSL or is a SSL rejection host.
# We enable a TLS variant for lines without explicit ssl or ssl = true.
optionals (hasSSL || vhost.rejectSSL)
(map (listen: { port = cfg.defaultSSLListenPort; ssl = true; } // listen)
(filter (listen: !(listen ? ssl) || listen.ssl) listenLines))
# If this vhost is supposed to serve HTTP
# We provide listen lines for those without explicit ssl or ssl = false.
++ optionals (!onlySSL)
(map (listen: { port = cfg.defaultHTTPListenPort; ssl = false; } // listen)
(filter (listen: !(listen ? ssl) || !listen.ssl) listenLines));
defaultListen = defaultListen =
if vhost.listen != [] then vhost.listen if vhost.listen != [] then vhost.listen
else
if cfg.defaultListen != [] then mkDefaultListenVhost
# Cleanup nulls which will mess up with //.
# TODO: is there a better way to achieve this? i.e. mergeButIgnoreNullPlease?
(map (listenLine: filterAttrs (_: v: (v != null)) listenLine) cfg.defaultListen)
else else
let addrs = if vhost.listenAddresses != [] then vhost.listenAddresses else cfg.defaultListenAddresses; let addrs = if vhost.listenAddresses != [] then vhost.listenAddresses else cfg.defaultListenAddresses;
in optionals (hasSSL || vhost.rejectSSL) (map (addr: { inherit addr; port = cfg.defaultSSLListenPort; ssl = true; }) addrs) in mkDefaultListenVhost (map (addr: { inherit addr; }) addrs);
++ optionals (!onlySSL) (map (addr: { inherit addr; port = cfg.defaultHTTPListenPort; ssl = false; }) addrs);
hostListen = hostListen =
if vhost.forceSSL if vhost.forceSSL
then filter (x: x.ssl) defaultListen then filter (x: x.ssl) defaultListen
else defaultListen; else defaultListen;
listenString = { addr, port, ssl, extraParameters ? [], ... }: listenString = { addr, port, ssl, proxyProtocol ? false, extraParameters ? [], ... }:
# UDP listener for QUIC transport protocol. # UDP listener for QUIC transport protocol.
(optionalString (ssl && vhost.quic) (" (optionalString (ssl && vhost.quic) ("
listen ${addr}:${toString port} quic " listen ${addr}:${toString port} quic "
+ optionalString vhost.default "default_server " + optionalString vhost.default "default_server "
+ optionalString vhost.reuseport "reuseport " + optionalString vhost.reuseport "reuseport "
+ optionalString (extraParameters != []) (concatStringsSep " " ( + optionalString (extraParameters != []) (concatStringsSep " "
let inCompatibleParameters = [ "ssl" "proxy_protocol" "http2" ]; (let inCompatibleParameters = [ "ssl" "proxy_protocol" "http2" ];
isCompatibleParameter = param: !(any (p: p == param) inCompatibleParameters); isCompatibleParameter = param: !(any (p: p == param) inCompatibleParameters);
in filter isCompatibleParameter extraParameters)) in filter isCompatibleParameter extraParameters))
+ ";")) + ";"))
+ " + "
listen ${addr}:${toString port} " listen ${addr}:${toString port} "
+ optionalString (ssl && vhost.http2) "http2 " + optionalString (ssl && vhost.http2) "http2 "
+ optionalString ssl "ssl " + optionalString ssl "ssl "
+ optionalString vhost.default "default_server " + optionalString vhost.default "default_server "
+ optionalString vhost.reuseport "reuseport " + optionalString vhost.reuseport "reuseport "
+ optionalString proxyProtocol "proxy_protocol "
+ optionalString (extraParameters != []) (concatStringsSep " " extraParameters) + optionalString (extraParameters != []) (concatStringsSep " " extraParameters)
+ ";"; + ";";
@ -539,6 +557,49 @@ in
''; '';
}; };
defaultListen = mkOption {
type = with types; listOf (submodule {
options = {
addr = mkOption {
type = str;
description = lib.mdDoc "IP address.";
};
port = mkOption {
type = nullOr port;
description = lib.mdDoc "Port number.";
default = null;
};
ssl = mkOption {
type = nullOr bool;
default = null;
description = lib.mdDoc "Enable SSL.";
};
proxyProtocol = mkOption {
type = bool;
description = lib.mdDoc "Enable PROXY protocol.";
default = false;
};
extraParameters = mkOption {
type = listOf str;
description = lib.mdDoc "Extra parameters of this listen directive.";
default = [ ];
example = [ "backlog=1024" "deferred" ];
};
};
});
default = [];
example = literalExpression ''[
{ addr = "10.0.0.12"; proxyProtocol = true; ssl = true; }
{ addr = "0.0.0.0"; }
{ addr = "[::0]"; }
]'';
description = lib.mdDoc ''
If vhosts do not specify listen, use these addresses by default.
This option takes precedence over {option}`defaultListenAddresses` and
other listen-related defaults options.
'';
};
defaultListenAddresses = mkOption { defaultListenAddresses = mkOption {
type = types.listOf types.str; type = types.listOf types.str;
default = [ "0.0.0.0" ] ++ optional enableIPv6 "[::0]"; default = [ "0.0.0.0" ] ++ optional enableIPv6 "[::0]";
@ -546,6 +607,7 @@ in
example = literalExpression ''[ "10.0.0.12" "[2002:a00:1::]" ]''; example = literalExpression ''[ "10.0.0.12" "[2002:a00:1::]" ]'';
description = lib.mdDoc '' description = lib.mdDoc ''
If vhosts do not specify listenAddresses, use these addresses by default. If vhosts do not specify listenAddresses, use these addresses by default.
This is akin to writing `defaultListen = [ { addr = "0.0.0.0" } ]`.
''; '';
}; };
@ -1078,6 +1140,32 @@ in
which can be achieved by setting `services.nginx.package = pkgs.nginxQuic;`. which can be achieved by setting `services.nginx.package = pkgs.nginxQuic;`.
''; '';
} }
{
# The idea is to understand whether there is a virtual host with a listen configuration
# that requires ACME configuration but has no HTTP listener which will make deterministically fail
# this operation.
# Options' priorities are the following at the moment:
# listen (vhost) > defaultListen (server) > listenAddresses (vhost) > defaultListenAddresses (server)
assertion =
let
hasAtLeastHttpListener = listenOptions: any (listenLine: if listenLine ? proxyProtocol then !listenLine.proxyProtocol else true) listenOptions;
hasAtLeastDefaultHttpListener = if cfg.defaultListen != [] then hasAtLeastHttpListener cfg.defaultListen else (cfg.defaultListenAddresses != []);
in
all (host:
let
hasAtLeastVhostHttpListener = if host.listen != [] then hasAtLeastHttpListener host.listen else (host.listenAddresses != []);
vhostAuthority = host.listen != [] || (cfg.defaultListen == [] && host.listenAddresses != []);
in
# Either vhost has precedence and we need a vhost specific http listener
# Either vhost set nothing and inherit from server settings
host.enableACME -> ((vhostAuthority && hasAtLeastVhostHttpListener) || (!vhostAuthority && hasAtLeastDefaultHttpListener))
) (attrValues virtualHosts);
message = ''
services.nginx.virtualHosts.<name>.enableACME requires a HTTP listener
to answer to ACME requests.
'';
}
] ++ map (name: mkCertOwnershipAssertion { ] ++ map (name: mkCertOwnershipAssertion {
inherit (cfg) group user; inherit (cfg) group user;
cert = config.security.acme.certs.${name}; cert = config.security.acme.certs.${name};

View file

@ -27,12 +27,35 @@ with lib;
}; };
listen = mkOption { listen = mkOption {
type = with types; listOf (submodule { options = { type = with types; listOf (submodule {
addr = mkOption { type = str; description = lib.mdDoc "IP address."; }; options = {
port = mkOption { type = port; description = lib.mdDoc "Port number."; default = 80; }; addr = mkOption {
ssl = mkOption { type = bool; description = lib.mdDoc "Enable SSL."; default = false; }; type = str;
extraParameters = mkOption { type = listOf str; description = lib.mdDoc "Extra parameters of this listen directive."; default = []; example = [ "backlog=1024" "deferred" ]; }; description = lib.mdDoc "IP address.";
}; }); };
port = mkOption {
type = port;
description = lib.mdDoc "Port number.";
default = 80;
};
ssl = mkOption {
type = bool;
description = lib.mdDoc "Enable SSL.";
default = false;
};
proxyProtocol = mkOption {
type = bool;
description = lib.mdDoc "Enable PROXY protocol.";
default = false;
};
extraParameters = mkOption {
type = listOf str;
description = lib.mdDoc "Extra parameters of this listen directive.";
default = [ ];
example = [ "backlog=1024" "deferred" ];
};
};
});
default = []; default = [];
example = [ example = [
{ addr = "195.154.1.1"; port = 443; ssl = true; } { addr = "195.154.1.1"; port = 443; ssl = true; }
@ -45,7 +68,7 @@ with lib;
and `onlySSL`. and `onlySSL`.
If you only want to set the addresses manually and not If you only want to set the addresses manually and not
the ports, take a look at `listenAddresses` the ports, take a look at `listenAddresses`.
''; '';
}; };

View file

@ -25,9 +25,11 @@ let
sectionDHCPv4 = checkUnitConfig "DHCPv4" [ sectionDHCPv4 = checkUnitConfig "DHCPv4" [
(assertOnlyFields [ (assertOnlyFields [
"ClientIdentifier"
"DUIDType" "DUIDType"
"DUIDRawData" "DUIDRawData"
]) ])
(assertValueOneOf "ClientIdentifier" ["mac" "duid" "duid-only"])
]; ];
sectionDHCPv6 = checkUnitConfig "DHCPv6" [ sectionDHCPv6 = checkUnitConfig "DHCPv6" [

View file

@ -893,7 +893,13 @@ in
The address must be in the default VLAN (10.0.2.0/24). The address must be in the default VLAN (10.0.2.0/24).
''; '';
} }
])); ])) ++ [
{ assertion = pkgs.stdenv.hostPlatform.is32bit -> cfg.memorySize < 2047;
message = ''
virtualisation.memorySize is above 2047, but qemu is only able to allocate 2047MB RAM on 32bit max.
'';
}
];
warnings = warnings =
optional ( optional (

View file

@ -278,6 +278,7 @@ in {
fsck = handleTest ./fsck.nix {}; fsck = handleTest ./fsck.nix {};
fsck-systemd-stage-1 = handleTest ./fsck.nix { systemdStage1 = true; }; fsck-systemd-stage-1 = handleTest ./fsck.nix { systemdStage1 = true; };
ft2-clone = handleTest ./ft2-clone.nix {}; ft2-clone = handleTest ./ft2-clone.nix {};
legit = handleTest ./legit.nix {};
mimir = handleTest ./mimir.nix {}; mimir = handleTest ./mimir.nix {};
garage = handleTest ./garage {}; garage = handleTest ./garage {};
gemstash = handleTest ./gemstash.nix {}; gemstash = handleTest ./gemstash.nix {};
@ -521,6 +522,7 @@ in {
nginx-sandbox = handleTestOn ["x86_64-linux"] ./nginx-sandbox.nix {}; nginx-sandbox = handleTestOn ["x86_64-linux"] ./nginx-sandbox.nix {};
nginx-sso = handleTest ./nginx-sso.nix {}; nginx-sso = handleTest ./nginx-sso.nix {};
nginx-variants = handleTest ./nginx-variants.nix {}; nginx-variants = handleTest ./nginx-variants.nix {};
nginx-proxyprotocol = handleTest ./nginx-proxyprotocol {};
nifi = handleTestOn ["x86_64-linux"] ./web-apps/nifi.nix {}; nifi = handleTestOn ["x86_64-linux"] ./web-apps/nifi.nix {};
nitter = handleTest ./nitter.nix {}; nitter = handleTest ./nitter.nix {};
nix-ld = handleTest ./nix-ld.nix {}; nix-ld = handleTest ./nix-ld.nix {};

View file

@ -53,7 +53,7 @@ import ./make-test-python.nix ({ pkgs, ... } : let
[ v3_req ] [ v3_req ]
basicConstraints = CA:FALSE basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth extendedKeyUsage = serverAuth, clientAuth
subjectAltName = @alt_names subjectAltName = @alt_names
[alt_names] [alt_names]
DNS.1 = node1 DNS.1 = node1
@ -86,10 +86,13 @@ import ./make-test-python.nix ({ pkgs, ... } : let
}; };
environment.variables = { environment.variables = {
ETCDCTL_CERT_FILE = "${etcd_client_cert}"; ETCD_CERT_FILE = "${etcd_client_cert}";
ETCDCTL_KEY_FILE = "${etcd_client_key}"; ETCD_KEY_FILE = "${etcd_client_key}";
ETCDCTL_CA_FILE = "${ca_pem}"; ETCD_CA_FILE = "${ca_pem}";
ETCDCTL_PEERS = "https://127.0.0.1:2379"; ETCDCTL_ENDPOINTS = "https://127.0.0.1:2379";
ETCDCTL_CACERT = "${ca_pem}";
ETCDCTL_CERT = "${etcd_cert}";
ETCDCTL_KEY = "${etcd_key}";
}; };
networking.firewall.allowedTCPPorts = [ 2380 ]; networking.firewall.allowedTCPPorts = [ 2380 ];
@ -134,21 +137,21 @@ in {
node2.start() node2.start()
node1.wait_for_unit("etcd.service") node1.wait_for_unit("etcd.service")
node2.wait_for_unit("etcd.service") node2.wait_for_unit("etcd.service")
node2.wait_until_succeeds("etcdctl cluster-health") node2.wait_until_succeeds("etcdctl endpoint status")
node1.succeed("etcdctl set /foo/bar 'Hello world'") node1.succeed("etcdctl put /foo/bar 'Hello world'")
node2.succeed("etcdctl get /foo/bar | grep 'Hello world'") node2.succeed("etcdctl get /foo/bar | grep 'Hello world'")
with subtest("should add another member"): with subtest("should add another member"):
node1.wait_until_succeeds("etcdctl member add node3 https://node3:2380") node1.wait_until_succeeds("etcdctl member add node3 --peer-urls=https://node3:2380")
node3.start() node3.start()
node3.wait_for_unit("etcd.service") node3.wait_for_unit("etcd.service")
node3.wait_until_succeeds("etcdctl member list | grep 'node3'") node3.wait_until_succeeds("etcdctl member list | grep 'node3'")
node3.succeed("etcdctl cluster-health") node3.succeed("etcdctl endpoint status")
with subtest("should survive member crash"): with subtest("should survive member crash"):
node3.crash() node3.crash()
node1.succeed("etcdctl cluster-health") node1.succeed("etcdctl endpoint status")
node1.succeed("etcdctl set /foo/bar 'Hello degraded world'") node1.succeed("etcdctl put /foo/bar 'Hello degraded world'")
node1.succeed("etcdctl get /foo/bar | grep 'Hello degraded world'") node1.succeed("etcdctl get /foo/bar | grep 'Hello degraded world'")
''; '';
}) })

View file

@ -19,7 +19,7 @@ import ./make-test-python.nix ({ pkgs, ... } : {
node.wait_for_unit("etcd.service") node.wait_for_unit("etcd.service")
with subtest("should write and read some values to etcd"): with subtest("should write and read some values to etcd"):
node.succeed("etcdctl set /foo/bar 'Hello world'") node.succeed("etcdctl put /foo/bar 'Hello world'")
node.succeed("etcdctl get /foo/bar | grep 'Hello world'") node.succeed("etcdctl get /foo/bar | grep 'Hello world'")
''; '';
}) })

54
nixos/tests/legit.nix Normal file
View file

@ -0,0 +1,54 @@
import ./make-test-python.nix ({ lib, pkgs, ... }:
let
port = 5000;
scanPath = "/var/lib/legit";
in
{
name = "legit-web";
meta.maintainers = [ lib.maintainers.ratsclub ];
nodes = {
server = { config, pkgs }: {
services.legit = {
enable = true;
settings = {
server.port = 5000;
repo = { inherit scanPath; };
};
};
environment.systemPackages = [ pkgs.git ];
};
};
testScript = { nodes, ... }:
let
strPort = builtins.toString port;
in
''
start_all()
server.wait_for_unit("network.target")
server.wait_for_unit("legit.service")
server.wait_until_succeeds(
"curl -f http://localhost:${strPort}"
)
server.succeed("${pkgs.writeShellScript "setup-legit-test-repo" ''
set -e
git init --bare -b master ${scanPath}/some-repo
git init -b master reference
cd reference
git remote add origin ${scanPath}/some-repo
date > date.txt
git add date.txt
git -c user.name=test -c user.email=test@localhost commit -m 'add date'
git push -u origin master
''}")
server.wait_until_succeeds(
"curl -f http://localhost:${strPort}/some-repo"
)
'';
})

View file

@ -0,0 +1,20 @@
-----BEGIN CERTIFICATE-----
MIIDLjCCAhagAwIBAgIIP2+4GFxOYMgwDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UE
AxMVbWluaWNhIHJvb3QgY2EgNGU3NTJiMB4XDTIzMDEzMDAzNDExOFoXDTQzMDEz
MDAzNDExOFowFTETMBEGA1UEAwwKKi50ZXN0Lm5peDCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBAMarJSCzelnzTMT5GMoIKA/MXBNk5j277uI2Gq2MCky/
DlBpx+tjSsKsz6QLBduKMF8OH5AgjrVAKQAtsVPDseY0Qcyx/5dgJjkdO4on+DFb
V0SJ3ZhYPKACrqQ1SaoG+Xup37puw7sVR13J7oNvP6fAYRcjYqCiFC7VMjJNG4dR
251jvWWidSc7v5CYw2AxrngtBgHeQuyG9QCJ1DRH8h6ioV7IeonwReN7noYtTWh8
NDjGnw9HH2nYMcL91E+DWCxWVmbC9/orvYOT7u0Orho0t1w9BB0/zzcdojwQpMCv
HahEmFQmdGbWTuI4caBeaDBJVsSwKlTcxLSS4MAZ0c8CAwEAAaN3MHUwDgYDVR0P
AQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMB
Af8EAjAAMB8GA1UdIwQYMBaAFGyXySYI3gL88d7GHnGMU6wpiBf2MBUGA1UdEQQO
MAyCCioudGVzdC5uaXgwDQYJKoZIhvcNAQELBQADggEBAJ/DpwiLVBgWyozsn++f
kR4m0dUjnuCgpHo2EMoMZh+9og+OC0vq6WITXHaJytB3aBMxFOUTim3vwxPyWPXX
/vy+q6jJ6QMLx1J3VIWZdmXsT+qLGbVzL/4gNoaRsLPGO06p3yVjhas+OBFx1Fee
6kTHb82S/dzBojOJLRRo18CU9yw0FUXOPqN7HF7k2y+Twe6+iwCuCKGSFcvmRjxe
bWy11C921bTienW0Rmq6ppFWDaUNYP8kKpMN2ViAvc0tyF6wwk5lyOiqCR+pQHJR
H/J4qSeKDchYLKECuzd6SySz8FW/xPKogQ28zba+DBD86hpqiEJOBzxbrcN3cjUn
7N4=
-----END CERTIFICATE-----

View file

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAxqslILN6WfNMxPkYyggoD8xcE2TmPbvu4jYarYwKTL8OUGnH
62NKwqzPpAsF24owXw4fkCCOtUApAC2xU8Ox5jRBzLH/l2AmOR07iif4MVtXRInd
mFg8oAKupDVJqgb5e6nfum7DuxVHXcnug28/p8BhFyNioKIULtUyMk0bh1HbnWO9
ZaJ1Jzu/kJjDYDGueC0GAd5C7Ib1AInUNEfyHqKhXsh6ifBF43uehi1NaHw0OMaf
D0cfadgxwv3UT4NYLFZWZsL3+iu9g5Pu7Q6uGjS3XD0EHT/PNx2iPBCkwK8dqESY
VCZ0ZtZO4jhxoF5oMElWxLAqVNzEtJLgwBnRzwIDAQABAoIBAFuNGOH184cqKJGI
3RSVJ6kIGtJRKA0A4vfZyPd61nBBhx4lcRyXOCd4LYPCFKP0DZBwWLk5V6pM89gC
NnqMbxnPsRbcXBVtGJAvWXW0L5rHJfMOuVBwMRfnxIUljVnONv/264PlcUtwZd/h
o4lsJeBvNg7MnrG5nyVp1+T4RZxYm1P86HLp5zyT+fdj4Cr82b9j6QpxGXEfm1jV
QA1xr1ZkrV8fgETyaE0TBIKcdt6xNfv1mpI1RE5gaP/YzcCs/mL+G0kMar4l7pO/
6OHXTvHz+W3G6Xlha7Wq1ADoqYz2K7VoL/OgSQhIxRNujyWR6lir7eladVrKkCzu
uzFi/HECgYEA0vSNCIK3useSypMPHhYUVNbZ4hbK0WgqSAxfJQtL3nC7KviVMAXj
IKVR90xuzJB+ih88KCJpH84JH90paMpW0Gq1yEae90bnWa8Nj7ULLS/Zuj0WrelU
+DEGbx47IUPOtiLBxooxFKyIVhX3hWRwZ0pokSQzbgb5zYnlM6tqZ3cCgYEA8Rb2
wtt0XmqEQedFacs4fobJoVWMcETjpuxYp0m5Kje/4QkptZIbspXGBgNtPBBRGg51
AYSu8wYkGEueI77KiFDgY8AAkpOk2MrMVPszjOhUiO1oEfbT6ynOY5RDOuXcY6jo
8RpSk46VkfVxt6LVmappqcVFtVWcAjdGfXeSLmkCgYAWP7SgMSkvidzxgJEXmzyJ
th9EuSKq81GCR8vBHG/kBf+3iIAzkGtkBgufCXCmIpc1+hVeJkLwF8rekXTMmIqP
cLG7bbdWXSQJUW0cuvtyyJkuC0NZFELh6knDbmzOFVi33PKS/gAvLgMzER4J843n
VvGwXSEPeazfAKwrxuhyAQKBgQCOm5TPYlyNVNhy20h18d2zCivOoPn3luhKXtd5
7OP4kw2PIYpoesqjcnC2MeS1eLlgfli70y5hVqqXLHOYlUzcIWr51iMAkREbo6oG
QqkVmoAWlsfOiICGRC5vPM4f0sPwt4NCyt05p0fWFKd1hn5u7Ryfba90OfWUYfny
UX5IsQKBgQCswer4Qc3UepkiYxGwSTxgIh4kYlmamU2I00Kar4uFAr9JsCbk98f0
kaCUNZjrrvTwgRmdhwcpMDiMW/F4QkNk0I2unHcoAvzNop6c22VhHJU2XJhrQ57h
n1iPiw0NLXiA4RQwMUMjtt3nqlpLOTXGtsF8TmpWPcAN2QcTxOutzw==
-----END RSA PRIVATE KEY-----

View file

@ -0,0 +1,20 @@
-----BEGIN CERTIFICATE-----
MIIDSzCCAjOgAwIBAgIITnUr3xFw4oEwDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UE
AxMVbWluaWNhIHJvb3QgY2EgNGU3NTJiMCAXDTIzMDEzMDAzNDExOFoYDzIxMjMw
MTMwMDM0MTE4WjAgMR4wHAYDVQQDExVtaW5pY2Egcm9vdCBjYSA0ZTc1MmIwggEi
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC1SrJT9k3zXIXApEyL5UDlw7F6
MMOqE5d+8ZwMccHbEKLu0ssNRY+j31tnNYQ/r5iCNeNgUZccKBgzdU0ysyw5n4tw
0y+MTD9fCfUXYcc8pJRPRolo6zxYO9W7WJr0nfJZ+p7zFRAjRCmzXdnZjKz0EGcg
x9mHwn//3SuLt1ItK1n3aZ6im9NlcVtunDe3lCSL0tRgy7wDGNvWDZMO49jk4AFU
BlMqScuiNpUzYgCxNaaGMuH3M0f0YyRAxSs6FWewLtqTIaVql7HL+3PcGAhvlKEZ
fvfaf80F9aWI88sbEddTA0s5837zEoDwGpZl3K5sPU/O3MVEHIhAY5ICG0IBAgMB
AAGjgYYwgYMwDgYDVR0PAQH/BAQDAgKEMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggr
BgEFBQcDAjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBRsl8kmCN4C/PHe
xh5xjFOsKYgX9jAfBgNVHSMEGDAWgBRsl8kmCN4C/PHexh5xjFOsKYgX9jANBgkq
hkiG9w0BAQsFAAOCAQEAmvgpU+q+TBbz+9Y2rdiIeTfeDXtMNPf+nKI3zxYztRGC
MoKP6jCQaFSQra4BVumFLV38DoqR1pOV1ojkiyO5c/9Iym/1Wmm8LeqgsHNqSgyS
C7wvBcb/N9PzIBQFq/RiboDoC7bqK/0zQguCmBtGceH+AVpQyfXM+P78B1EkHozu
67igP8GfouPp2s4Vd5P2XGkA6vMgYCtFEnCbtmmo7C8B+ymhD/D9axpMKQ1OaBg9
jfqLOlk+Rc2nYZuaDjnUmlTkYjC6EwCNe9weYkSJgQ9QzoGJLIRARsdQdsp3C2fZ
l2UZKkDJ2GPrrc+TdaGXZTYi0uMmvQsEKZXtqAzorQ==
-----END CERTIFICATE-----

View file

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAtUqyU/ZN81yFwKRMi+VA5cOxejDDqhOXfvGcDHHB2xCi7tLL
DUWPo99bZzWEP6+YgjXjYFGXHCgYM3VNMrMsOZ+LcNMvjEw/Xwn1F2HHPKSUT0aJ
aOs8WDvVu1ia9J3yWfqe8xUQI0Qps13Z2Yys9BBnIMfZh8J//90ri7dSLStZ92me
opvTZXFbbpw3t5Qki9LUYMu8Axjb1g2TDuPY5OABVAZTKknLojaVM2IAsTWmhjLh
9zNH9GMkQMUrOhVnsC7akyGlapexy/tz3BgIb5ShGX732n/NBfWliPPLGxHXUwNL
OfN+8xKA8BqWZdyubD1PztzFRByIQGOSAhtCAQIDAQABAoIBAQCLeAWs1kWtvTYg
t8UzspC0slItAKrmgt//hvxYDoPmdewC8yPG+AbDOSfmRKOTIxGeyro79UjdHnNP
0yQqpvCU/AqYJ7/inR37jXuCG3TdUHfQbSF1F9N6xb1tvYKoQYKaelYiB8g8eUnj
dYYM+U5tDNlpvJW6/YTfYFUJzWRo3i8jj5lhbkjcJDvdOhVxMXNXJgJAymu1KysE
N1da2l4fzmuoN82wFE9KMyYSn+LOLWBReQQmXHZPP+2LjRIVrWoFoV49k2Ylp9tH
yeaFx1Ya/wVx3PRnSW+zebWDcc0bAua9XU3Fi42yRq5iXOyoXHyefDfJoId7+GAO
IF2qRw9hAoGBAM1O1l4ceOEDsEBh7HWTvmfwVfkXgT6VHeI6LGEjb88FApXgT+wT
1s1IWVVOigLl9OKQbrjqlg9xgzrPDHYRwu5/Oz3X2WaH6wlF+d+okoqls6sCEAeo
GfzF3sKOHQyIYjttCXE5G38uhIgVFFFfK97AbUiY8egYBr0zjVXK7xINAoGBAOIN
1pDBFBQIoKj64opm/G9lJBLUpWLBFdWXhXS6q2jNsdY1mLMRmu/RBaKSfGz7W1a/
a2WBedjcnTWJ/84tBsn4Qj5tLl8xkcXiN/pslWzg724ZnVsbyxM9KvAdXAma3F0g
2EsYq8mhvbAEkpE+aoM6jwOJBnMhTRZrNMKN2lbFAoGAHmZWB4lfvLG3H1FgmehO
gUVs9X0tff7GdgD3IUsF+zlasKaOLv6hB7R2xdLjTJqQMBwCyQ6zOYYtUD/oMHNg
0b+1HesgHbZybuUVorBrQmxWtjOP/BJABtWlrlkso/Zt1S7H/yPdlm9k4GF+qK3W
6RzFEcLTzvH/zXQcsV9jFuECgYEAhaX+1KiC0XFkY2OpaoCHAOlAUa3NdjyIRzcF
XUU8MINkgCxB8qUXAHCJL1wCGoDluL0FpwbM3m1YuR200tYGLIUNzVDJ2Ng6wk8E
H5fxJGU8ydB1Gzescdx5NWt2Tet0G89ecc/NSTHKL3YUnbDUUm/dvA5YdNscc4PA
tsIdc60CgYEArvU1MwqGQUTDKUmaM2t3qm70fbwmOViHfyTWpn4aAQR3sK16iJMm
V+dka62L/VYs5CIbzXvCioyugUMZGJi/zIwrViRzqJQbNnPADAW4lG88UxXqHHAH
q33ivjgd9omGFb37saKOmR44KmjUIDvSIZF4W3EPwAMEyl5mM31Ryns=
-----END RSA PRIVATE KEY-----

View file

@ -0,0 +1,144 @@
let
certs = import ./snakeoil-certs.nix;
in
import ../make-test-python.nix ({ pkgs, ... }: {
name = "nginx-proxyprotocol";
nodes = {
webserver = { pkgs, lib, ... }: {
environment.systemPackages = [ pkgs.netcat ];
security.pki.certificateFiles = [
certs.ca.cert
];
networking.extraHosts = ''
127.0.0.5 proxy.test.nix
127.0.0.5 noproxy.test.nix
127.0.0.3 direct-nossl.test.nix
127.0.0.4 unsecure-nossl.test.nix
127.0.0.2 direct-noproxy.test.nix
127.0.0.1 direct-proxy.test.nix
'';
services.nginx = {
enable = true;
defaultListen = [
{ addr = "127.0.0.1"; proxyProtocol = true; ssl = true; }
{ addr = "127.0.0.2"; }
{ addr = "127.0.0.3"; ssl = false; }
{ addr = "127.0.0.4"; ssl = false; proxyProtocol = true; }
];
commonHttpConfig = ''
log_format pcombined '(proxy_protocol=$proxy_protocol_addr) - (remote_addr=$remote_addr) - (realip=$realip_remote_addr) - (upstream=) - (remote_user=$remote_user) [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
access_log /var/log/nginx/access.log pcombined;
error_log /var/log/nginx/error.log;
'';
virtualHosts =
let
commonConfig = {
locations."/".return = "200 '$remote_addr'";
extraConfig = ''
set_real_ip_from 127.0.0.5/32;
real_ip_header proxy_protocol;
'';
};
in
{
"*.test.nix" = commonConfig // {
sslCertificate = certs."*.test.nix".cert;
sslCertificateKey = certs."*.test.nix".key;
forceSSL = true;
};
"direct-nossl.test.nix" = commonConfig;
"unsecure-nossl.test.nix" = commonConfig // {
extraConfig = ''
real_ip_header proxy_protocol;
'';
};
};
};
services.sniproxy = {
enable = true;
config = ''
error_log {
syslog daemon
}
access_log {
syslog daemon
}
listener 127.0.0.5:443 {
protocol tls
source 127.0.0.5
}
table {
^proxy\.test\.nix$ 127.0.0.1 proxy_protocol
^noproxy\.test\.nix$ 127.0.0.2
}
'';
};
};
};
testScript = ''
def check_origin_ip(src_ip: str, dst_url: str, failure: bool = False, proxy_protocol: bool = False, expected_ip: str | None = None):
check = webserver.fail if failure else webserver.succeed
if expected_ip is None:
expected_ip = src_ip
return check(f"curl {'--haproxy-protocol' if proxy_protocol else '''} --interface {src_ip} --fail -L {dst_url} | grep '{expected_ip}'")
webserver.wait_for_unit("nginx")
webserver.wait_for_unit("sniproxy")
# This should be closed by virtue of ssl = true;
webserver.wait_for_closed_port(80, "127.0.0.1")
# This should be open by virtue of no explicit ssl
webserver.wait_for_open_port(80, "127.0.0.2")
# This should be open by virtue of ssl = true;
webserver.wait_for_open_port(443, "127.0.0.1")
# This should be open by virtue of no explicit ssl
webserver.wait_for_open_port(443, "127.0.0.2")
# This should be open by sniproxy
webserver.wait_for_open_port(443, "127.0.0.5")
# This should be closed by sniproxy
webserver.wait_for_closed_port(80, "127.0.0.5")
# Sanity checks for the NGINX module
# direct-HTTP connection to NGINX without TLS, this checks that ssl = false; works well.
check_origin_ip("127.0.0.10", "http://direct-nossl.test.nix/")
# webserver.execute("openssl s_client -showcerts -connect direct-noproxy.test.nix:443")
# direct-HTTP connection to NGINX with TLS
check_origin_ip("127.0.0.10", "http://direct-noproxy.test.nix/")
check_origin_ip("127.0.0.10", "https://direct-noproxy.test.nix/")
# Well, sniproxy is not listening on 80 and cannot redirect
check_origin_ip("127.0.0.10", "http://proxy.test.nix/", failure=True)
check_origin_ip("127.0.0.10", "http://noproxy.test.nix/", failure=True)
# Actual PROXY protocol related tests
# Connecting through sniproxy should passthrough the originating IP address.
check_origin_ip("127.0.0.10", "https://proxy.test.nix/")
# Connecting through sniproxy to a non-PROXY protocol enabled listener should not pass the originating IP address.
check_origin_ip("127.0.0.10", "https://noproxy.test.nix/", expected_ip="127.0.0.5")
# Attack tests against spoofing
# Let's try to spoof our IP address by connecting direct-y to the PROXY protocol listener.
# FIXME(RaitoBezarius): rewrite it using Python + (Scapy|something else) as this is too much broken unfortunately.
# Or wait for upstream curl patch.
# def generate_attacker_request(original_ip: str, target_ip: str, dst_url: str):
# return f"""PROXY TCP4 {original_ip} {target_ip} 80 80
# GET / HTTP/1.1
# Host: {dst_url}
# """
# def spoof(original_ip: str, target_ip: str, dst_url: str, tls: bool = False, expect_failure: bool = True):
# method = webserver.fail if expect_failure else webserver.succeed
# port = 443 if tls else 80
# print(webserver.execute(f"cat <<EOF | nc {target_ip} {port}\n{generate_attacker_request(original_ip, target_ip, dst_url)}\nEOF"))
# return method(f"cat <<EOF | nc {target_ip} {port} | grep {original_ip}\n{generate_attacker_request(original_ip, target_ip, dst_url)}\nEOF")
# check_origin_ip("127.0.0.10", "http://unsecure-nossl.test.nix", proxy_protocol=True)
# spoof("1.1.1.1", "127.0.0.4", "direct-nossl.test.nix")
# spoof("1.1.1.1", "127.0.0.4", "unsecure-nossl.test.nix", expect_failure=False)
'';
})

View file

@ -0,0 +1,30 @@
# Minica can provide a CA key and cert, plus a key
# and cert for our fake CA server's Web Front End (WFE).
{
pkgs ? import <nixpkgs> {},
minica ? pkgs.minica,
runCommandCC ? pkgs.runCommandCC,
}:
let
conf = import ./snakeoil-certs.nix;
domain = conf.domain;
domainSanitized = pkgs.lib.replaceStrings ["*"] ["_"] domain;
in
runCommandCC "generate-tests-certs" {
buildInputs = [ (minica.overrideAttrs (old: {
postPatch = ''
sed -i 's_NotAfter: time.Now().AddDate(2, 0, 30),_NotAfter: time.Now().AddDate(20, 0, 0),_' main.go
'';
})) ];
} ''
minica \
--ca-key ca.key.pem \
--ca-cert ca.cert.pem \
--domains "${domain}"
mkdir -p $out
mv ca.*.pem $out/
mv ${domainSanitized}/key.pem $out/${domainSanitized}.key.pem
mv ${domainSanitized}/cert.pem $out/${domainSanitized}.cert.pem
''

View file

@ -0,0 +1,14 @@
let
domain = "*.test.nix";
domainSanitized = "_.test.nix";
in {
inherit domain;
ca = {
cert = ./ca.cert.pem;
key = ./ca.key.pem;
};
"${domain}" = {
cert = ./. + "/${domainSanitized}.cert.pem";
key = ./. + "/${domainSanitized}.key.pem";
};
}

View file

@ -9,18 +9,18 @@
buildGoModule rec { buildGoModule rec {
pname = "go-musicfox"; pname = "go-musicfox";
version = "4.0.6"; version = "4.1.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "go-musicfox"; owner = "go-musicfox";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
hash = "sha256-ZqB3NL/pLIY1lHl3qMIOciqsOW9jNwjVQAq1j/ydDWs="; hash = "sha256-A1+JDMT4mHUi10GE4/qV5IMuwNsm4EdBt9VC2ZvJzuU=";
}; };
deleteVendor = true; deleteVendor = true;
vendorHash = "sha256-rJlyrPQS9UKinxIwGGo3EHlmWrzTKIm1jM1UDqnmVyg="; vendorHash = "sha256-xzLUWqzDVT+Htw/BHygOJM16uQvWXopyxxHBZQKcOQ8=";
subPackages = [ "cmd/musicfox.go" ]; subPackages = [ "cmd/musicfox.go" ];

View file

@ -1,6 +1,6 @@
{ stdenv, lib, makeDesktopItem, makeWrapper, patchelf, writeText { stdenv, lib, makeDesktopItem, makeWrapper, patchelf, writeText
, coreutils, gnugrep, which, git, unzip, libsecret, libnotify, e2fsprogs , coreutils, gnugrep, which, git, unzip, libsecret, libnotify, e2fsprogs
, vmopts ? null , python3, vmopts ? null
}: }:
{ pname, product, productShort ? product, version, src, wmClass, jdk, meta, extraLdPath ? [], extraWrapperArgs ? [] }@args: { pname, product, productShort ? product, version, src, wmClass, jdk, meta, extraLdPath ? [], extraWrapperArgs ? [] }@args:
@ -71,7 +71,7 @@ with stdenv; lib.makeOverridable mkDerivation (rec {
item=${desktopItem} item=${desktopItem}
makeWrapper "$out/$pname/bin/${loName}.sh" "$out/bin/${pname}" \ makeWrapper "$out/$pname/bin/${loName}.sh" "$out/bin/${pname}" \
--prefix PATH : "$out/libexec/${pname}:${lib.makeBinPath [ jdk coreutils gnugrep which git ]}" \ --prefix PATH : "$out/libexec/${pname}:${lib.makeBinPath [ jdk coreutils gnugrep which git python3 ]}" \
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath ([ --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath ([
# Some internals want libstdc++.so.6 # Some internals want libstdc++.so.6
stdenv.cc.cc.lib libsecret e2fsprogs stdenv.cc.cc.lib libsecret e2fsprogs

View file

@ -4,13 +4,13 @@
buildGoModule rec { buildGoModule rec {
pname = "orbiton"; pname = "orbiton";
version = "2.61.0"; version = "2.62.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "xyproto"; owner = "xyproto";
repo = "orbiton"; repo = "orbiton";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-GknQXHwpdIRzSjIc1ITsoiaks4Vi5KmVqL7sHzmfnmQ="; hash = "sha256-DmS0rn1v9zksSzO7FVl5YsIIXvhQ3zhSBC/i7tosdag=";
}; };
vendorHash = null; vendorHash = null;

View file

@ -1,7 +1,6 @@
{ lib { lib
, clangStdenv , clangStdenv
, fetchFromGitLab , fetchFromGitLab
, libclang
, rustPlatform , rustPlatform
, cargo , cargo
, meson , meson
@ -50,6 +49,7 @@ clangStdenv.mkDerivation rec {
desktop-file-utils desktop-file-utils
cargo cargo
rustc rustc
rustPlatform.bindgenHook
rustPlatform.cargoSetupHook rustPlatform.cargoSetupHook
]; ];
@ -66,8 +66,6 @@ clangStdenv.mkDerivation rec {
gst-plugins-bad gst-plugins-bad
]; ];
LIBCLANG_PATH = "${libclang.lib}/lib";
meta = with lib; { meta = with lib; {
description = "Scan and Generate QR Codes"; description = "Scan and Generate QR Codes";
homepage = "https://gitlab.gnome.org/World/decoder"; homepage = "https://gitlab.gnome.org/World/decoder";

View file

@ -9,13 +9,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "cubiomes-viewer"; pname = "cubiomes-viewer";
version = "3.2.1"; version = "3.3.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Cubitect"; owner = "Cubitect";
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "sha256-67augXXZsriXdndrCFUFWZbL+rVKgTPAyqlbZua2Ul4="; sha256 = "sha256-V6zPbL1/tP2B38wo4a05+vXCSjPE1YKpMR3zl/BbnY8=";
fetchSubmodules = true; fetchSubmodules = true;
}; };

View file

@ -2,13 +2,13 @@
buildPythonApplication rec { buildPythonApplication rec {
pname = "gallery-dl"; pname = "gallery-dl";
version = "1.25.4"; version = "1.25.5";
format = "setuptools"; format = "setuptools";
src = fetchPypi { src = fetchPypi {
inherit version; inherit version;
pname = "gallery_dl"; pname = "gallery_dl";
sha256 = "sha256-4x0XjXriEAJWSmbGjBWxZ5WJW9ruGE9wVrdZYTe6wE4="; sha256 = "sha256-IFzKVHIuZZ2WLk23ZqyxvwxXF45f2O/VAqQ/j98x4ag=";
}; };
propagatedBuildInputs = [ propagatedBuildInputs = [

View file

@ -1,4 +1,4 @@
{ lib, stdenv, fetchFromGitHub, which, zstd, pbzip2 }: { lib, stdenv, fetchFromGitHub, which, zstd, pbzip2, installShellFiles }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "2.4.5"; version = "2.4.5";
@ -12,6 +12,8 @@ stdenv.mkDerivation rec {
sha256 = "sha256-15lUtErGsbXF2Gn0f0rvA18mMuVMmkKrGO2poeYZU9g="; sha256 = "sha256-15lUtErGsbXF2Gn0f0rvA18mMuVMmkKrGO2poeYZU9g=";
}; };
nativeBuildInputs = [ installShellFiles ];
postPatch = "patchShebangs test"; postPatch = "patchShebangs test";
# Issue #110149: our default /bin/sh apparently has 32-bit math only # Issue #110149: our default /bin/sh apparently has 32-bit math only
@ -22,11 +24,11 @@ stdenv.mkDerivation rec {
nativeCheckInputs = [ which zstd pbzip2 ]; nativeCheckInputs = [ which zstd pbzip2 ];
installPhase = '' installPhase = ''
mkdir -p $out/{bin,share/{${pname}-${version},man/man1}} runHook preInstall
cp makeself.lsm README.md $out/share/${pname}-${version} installManPage makeself.1
cp makeself.sh $out/bin/makeself install -Dm555 makeself.sh $out/bin/makeself
cp makeself.1 $out/share/man/man1/ install -Dm444 -t $out/share/${pname}/ makeself.lsm README.md makeself-header.sh
cp makeself-header.sh $out/share/${pname}-${version} runHook postInstall
''; '';
fixupPhase = '' fixupPhase = ''

View file

@ -4,6 +4,8 @@
, dbus , dbus
, signal-cli , signal-cli
, xclip , xclip
, testers
, scli
}: }:
python3.pkgs.buildPythonApplication rec { python3.pkgs.buildPythonApplication rec {
@ -26,24 +28,27 @@ python3.pkgs.buildPythonApplication rec {
dontBuild = true; dontBuild = true;
checkPhase = ''
# scli attempts to write to these directories, make sure they're writeable
export XDG_DATA_HOME=$(mktemp -d)
export XDG_CONFIG_HOME=$(mktemp -d)
./scli --help > /dev/null # don't spam nix-build log
test $? == 0
'';
installPhase = '' installPhase = ''
mkdir -p $out/bin runHook preInstall
patchShebangs scli patchShebangs scli
install -m755 -D scli $out/bin/scli install -Dm555 scli -t $out/bin
echo "v$version" > $out/bin/VERSION
runHook postInstall
''; '';
makeWrapperArgs = [ makeWrapperArgs = [
"--prefix" "PATH" ":" (lib.makeBinPath [ dbus signal-cli xclip ]) "--prefix" "PATH" ":" (lib.makeBinPath [ dbus signal-cli xclip ])
]; ];
passthru.tests = {
version = testers.testVersion {
package = scli;
command = "HOME=$(mktemp -d) scli --version";
};
};
meta = with lib; { meta = with lib; {
description = "Simple terminal user interface for Signal"; description = "Simple terminal user interface for Signal";
homepage = "https://github.com/isamert/scli"; homepage = "https://github.com/isamert/scli";

View file

@ -8,11 +8,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "snapmaker-luban"; pname = "snapmaker-luban";
version = "4.7.3"; version = "4.8.0";
src = fetchurl { src = fetchurl {
url = "https://github.com/Snapmaker/Luban/releases/download/v${version}/snapmaker-luban-${version}-linux-x64.tar.gz"; url = "https://github.com/Snapmaker/Luban/releases/download/v${version}/snapmaker-luban-${version}-linux-x64.tar.gz";
sha256 = "sha256-CPeTTnwykaa58tpA7Aznrvrs0DqxOKjspZjHrT+e9tw="; sha256 = "sha256-uY8MlLIZrbds5/QdYZFTLSSis0BwRU19XfLiBX+2VCY=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -6,13 +6,13 @@
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "system76-keyboard-configurator"; pname = "system76-keyboard-configurator";
version = "1.3.2"; version = "1.3.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "pop-os"; owner = "pop-os";
repo = "keyboard-configurator"; repo = "keyboard-configurator";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-21cn43qyKg8jL6FF8D9H7dgcgSKggqaxb4cJVc0ljl0="; sha256 = "sha256-8Mb07OlmYl/dNxCdBrAq7mgXZvi0oqtt76UX8TMWUPY=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [
@ -28,7 +28,7 @@ rustPlatform.buildRustPackage rec {
udev udev
]; ];
cargoHash = "sha256-9VjrDE/1VAgNrRmSYxCYKPrnilPQF+OXAYpFkF2lpAE="; cargoHash = "sha256-3IAljoL4cabZ9rpgqPrgG7ofwETHS/9OlBKjxTwCDTU=";
meta = with lib; { meta = with lib; {
description = "Keyboard configuration application for System76 keyboards and laptops"; description = "Keyboard configuration application for System76 keyboards and laptops";

View file

@ -2,13 +2,13 @@
buildGoModule rec { buildGoModule rec {
pname = "argo-rollouts"; pname = "argo-rollouts";
version = "1.5.0"; version = "1.5.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "argoproj"; owner = "argoproj";
repo = "argo-rollouts"; repo = "argo-rollouts";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-bOGC4RAeydPCvqyQZE+K0N01xRIGsoiwKJ4lMwVVgGk="; sha256 = "sha256-ODcT7dc4xBHOKYTP2pUTq2z3GMUEpZ9OUKKxlbd+Vvk=";
}; };
vendorHash = "sha256-IxSLlRsOz/Xamguxm+7jy8qAAEZZFm/NHDIBjm5tnCs="; vendorHash = "sha256-IxSLlRsOz/Xamguxm+7jy8qAAEZZFm/NHDIBjm5tnCs=";

View file

@ -9,13 +9,13 @@
buildGoModule rec { buildGoModule rec {
pname = "kaniko"; pname = "kaniko";
version = "1.9.2"; version = "1.10.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "GoogleContainerTools"; owner = "GoogleContainerTools";
repo = "kaniko"; repo = "kaniko";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-dXQ0/o1qISv+sjNVIpfF85bkbM9sGOGwqVbWZpMWfMY="; hash = "sha256-SPHayFfYFpg1AOoe003xh7NGQLpvhd1C2k4IilgMqSw=";
}; };
vendorHash = null; vendorHash = null;

View file

@ -2,13 +2,13 @@
buildGoModule rec { buildGoModule rec {
pname = "kubeshark"; pname = "kubeshark";
version = "40.2"; version = "40.5";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "kubeshark"; owner = "kubeshark";
repo = "kubeshark"; repo = "kubeshark";
rev = version; rev = version;
sha256 = "sha256-E39Hr39fPiRKElploh2EEE35x0vnyAf2eWHr8Ifx0l0="; sha256 = "sha256-Xm8Tx1m3k+Vz5GlSIGJw8W2PVkZav9U5A52X9HUJFno=";
}; };
vendorHash = "sha256-ckIjmrXkn1AVBQRwM6+wdRwwYHytxKm3rKEe+csORdU="; vendorHash = "sha256-ckIjmrXkn1AVBQRwM6+wdRwwYHytxKm3rKEe+csORdU=";

View file

@ -19,8 +19,8 @@ let
, rev , rev
, spdx ? "UNSET" , spdx ? "UNSET"
, version ? lib.removePrefix "v" rev , version ? lib.removePrefix "v" rev
, hash ? throw "use hash instead of sha256" # added 2202/09 , hash
, vendorHash ? throw "use vendorHash instead of vendorSha256" # added 2202/09 , vendorHash
, deleteVendor ? false , deleteVendor ? false
, proxyVendor ? false , proxyVendor ? false
, mkProviderFetcher ? fetchFromGitHub , mkProviderFetcher ? fetchFromGitHub
@ -88,22 +88,10 @@ let
removed-providers = removed-providers =
let let
archived = name: date: throw "the ${name} terraform provider has been archived by upstream on ${date}"; archived = name: date: throw "the ${name} terraform provider has been archived by upstream on ${date}";
license = name: date: throw "the ${name} terraform provider removed from nixpkgs on ${date} because of unclear licensing";
removed = name: date: throw "the ${name} terraform provider removed from nixpkgs on ${date}"; removed = name: date: throw "the ${name} terraform provider removed from nixpkgs on ${date}";
in in
lib.optionalAttrs config.allowAliases { lib.optionalAttrs config.allowAliases {
b2 = removed "b2" "2022/06";
checkpoint = removed "checkpoint" "2022/11";
dome9 = removed "dome9" "2022/08";
ksyun = removed "ksyun" "2023/04"; ksyun = removed "ksyun" "2023/04";
logicmonitor = license "logicmonitor" "2022/11";
ncloud = removed "ncloud" "2022/08";
nsxt = license "nsxt" "2022/11";
opc = archived "opc" "2022/05";
oraclepaas = archived "oraclepaas" "2022/05";
panos = removed "panos" "2022/05";
template = archived "template" "2022/05";
vercel = license "vercel" "2022/11";
}; };
# excluding aliases, used by terraform-full # excluding aliases, used by terraform-full

View file

@ -110,11 +110,11 @@
"vendorHash": null "vendorHash": null
}, },
"aws": { "aws": {
"hash": "sha256-I0iGgrvgjdqjeoiRMzItg2FELC/X2ACP5qLW5HguP78=", "hash": "sha256-eHU3dsu/aJ72BTwe4CAWhf29ZueUhyg10Ncs9yUxi80=",
"homepage": "https://registry.terraform.io/providers/hashicorp/aws", "homepage": "https://registry.terraform.io/providers/hashicorp/aws",
"owner": "hashicorp", "owner": "hashicorp",
"repo": "terraform-provider-aws", "repo": "terraform-provider-aws",
"rev": "v5.0.0", "rev": "v5.0.1",
"spdx": "MPL-2.0", "spdx": "MPL-2.0",
"vendorHash": "sha256-53BHSeRBgnT5LuSuTUA5R/bbeozd2gOxsXd/2tlrbYU=" "vendorHash": "sha256-53BHSeRBgnT5LuSuTUA5R/bbeozd2gOxsXd/2tlrbYU="
}, },
@ -128,11 +128,11 @@
"vendorHash": null "vendorHash": null
}, },
"azurerm": { "azurerm": {
"hash": "sha256-4gNXamhda8EyEyOQXnxYNy+S5SyGqtYaxRk/fAG7vvA=", "hash": "sha256-GVxIr57y5tlOrZYtu09FI0IYG2cLkHkYMMofdqdCans=",
"homepage": "https://registry.terraform.io/providers/hashicorp/azurerm", "homepage": "https://registry.terraform.io/providers/hashicorp/azurerm",
"owner": "hashicorp", "owner": "hashicorp",
"repo": "terraform-provider-azurerm", "repo": "terraform-provider-azurerm",
"rev": "v3.57.0", "rev": "v3.58.0",
"spdx": "MPL-2.0", "spdx": "MPL-2.0",
"vendorHash": null "vendorHash": null
}, },
@ -665,13 +665,13 @@
"vendorHash": "sha256-4jAJf2FC83NdH4t1l7EA26yQ0pqteWmTIyrZDJdi7fg=" "vendorHash": "sha256-4jAJf2FC83NdH4t1l7EA26yQ0pqteWmTIyrZDJdi7fg="
}, },
"linode": { "linode": {
"hash": "sha256-4cUmKscy0KrhG3CbQo/Uz0BI3tq/MUyDtzNqeXwUtxg=", "hash": "sha256-dVoITwVwvWX6gXNgNv8fpCT2d19nYN893L8CL/TvcPc=",
"homepage": "https://registry.terraform.io/providers/linode/linode", "homepage": "https://registry.terraform.io/providers/linode/linode",
"owner": "linode", "owner": "linode",
"repo": "terraform-provider-linode", "repo": "terraform-provider-linode",
"rev": "v2.2.0", "rev": "v2.3.0",
"spdx": "MPL-2.0", "spdx": "MPL-2.0",
"vendorHash": "sha256-MsVYFt8u9czVs1vGCqBrw3BZ5C4OFNrEuZZ57GEVBqE=" "vendorHash": "sha256-a8IjMAojj15yl1sh/6r5WJsuqzWqHeDZLEqib7xOCw0="
}, },
"linuxbox": { "linuxbox": {
"hash": "sha256-MzasMVtXO7ZeZ+qEx2Z+7881fOIA0SFzSvXVHeEROtg=", "hash": "sha256-MzasMVtXO7ZeZ+qEx2Z+7881fOIA0SFzSvXVHeEROtg=",
@ -801,11 +801,11 @@
}, },
"nutanix": { "nutanix": {
"deleteVendor": true, "deleteVendor": true,
"hash": "sha256-szqvEU1cxEIBKIeHmeqT6YAEsXZDvINxfDyp76qswzw=", "hash": "sha256-kxLsQeseSncGRJCeh/1yD7oouS5OYwo5N5YorzwQdBs=",
"homepage": "https://registry.terraform.io/providers/nutanix/nutanix", "homepage": "https://registry.terraform.io/providers/nutanix/nutanix",
"owner": "nutanix", "owner": "nutanix",
"repo": "terraform-provider-nutanix", "repo": "terraform-provider-nutanix",
"rev": "v1.8.1", "rev": "v1.9.0",
"spdx": "MPL-2.0", "spdx": "MPL-2.0",
"vendorHash": "sha256-LRIfxQGwG988HE5fftGl6JmBG7tTknvmgpm4Fu1NbWI=" "vendorHash": "sha256-LRIfxQGwG988HE5fftGl6JmBG7tTknvmgpm4Fu1NbWI="
}, },
@ -864,11 +864,11 @@
"vendorHash": "sha256-2EuGZxHrpPwDicSrIf/Jx/c4LhOtE5HvTz9LkJ4xCSY=" "vendorHash": "sha256-2EuGZxHrpPwDicSrIf/Jx/c4LhOtE5HvTz9LkJ4xCSY="
}, },
"opsgenie": { "opsgenie": {
"hash": "sha256-vwHymj6kNTfxpqLEJixB55SeET1wtlkoN8RH8Uw0iPA=", "hash": "sha256-fcQChRIwxAeAdYPTYC9rPSdbrmXaBIOotF7vQhO9Sl0=",
"homepage": "https://registry.terraform.io/providers/opsgenie/opsgenie", "homepage": "https://registry.terraform.io/providers/opsgenie/opsgenie",
"owner": "opsgenie", "owner": "opsgenie",
"repo": "terraform-provider-opsgenie", "repo": "terraform-provider-opsgenie",
"rev": "v0.6.22", "rev": "v0.6.23",
"spdx": "MPL-2.0", "spdx": "MPL-2.0",
"vendorHash": null "vendorHash": null
}, },
@ -1044,13 +1044,13 @@
"vendorHash": "sha256-NO1r/EWLgH1Gogru+qPeZ4sW7FuDENxzNnpLSKstnE8=" "vendorHash": "sha256-NO1r/EWLgH1Gogru+qPeZ4sW7FuDENxzNnpLSKstnE8="
}, },
"spotinst": { "spotinst": {
"hash": "sha256-fNJhshwaMX0w5SuL/B8MDMrUN/que8H8UXqiPfKuIVg=", "hash": "sha256-VzIQqxEZl3+cRk19vxJGF0DbzutrfOWeP27TMat//Es=",
"homepage": "https://registry.terraform.io/providers/spotinst/spotinst", "homepage": "https://registry.terraform.io/providers/spotinst/spotinst",
"owner": "spotinst", "owner": "spotinst",
"repo": "terraform-provider-spotinst", "repo": "terraform-provider-spotinst",
"rev": "v1.119.1", "rev": "v1.120.0",
"spdx": "MPL-2.0", "spdx": "MPL-2.0",
"vendorHash": "sha256-VZlTrUcfE7ZoAU3wWrM31pZbKSsUc1Oph7b8wb6k8cY=" "vendorHash": "sha256-/sXd/qAChMpVTY/JN45fb2XFG0nsqc1ytC2FjXpva3c="
}, },
"stackpath": { "stackpath": {
"hash": "sha256-7KQUddq+M35WYyAIAL8sxBjAaXFcsczBRO1R5HURUZg=", "hash": "sha256-7KQUddq+M35WYyAIAL8sxBjAaXFcsczBRO1R5HURUZg=",
@ -1098,11 +1098,11 @@
"vendorHash": "sha256-GNSKSlaFBj2P+z40U+0uwPSOuQBy+9vOVFfPe8p0A24=" "vendorHash": "sha256-GNSKSlaFBj2P+z40U+0uwPSOuQBy+9vOVFfPe8p0A24="
}, },
"tencentcloud": { "tencentcloud": {
"hash": "sha256-fHcEVQZLLmtaKsAaeFcnRxzPBcGv/UUZOpNHsB9VGXA=", "hash": "sha256-2xyJ6rrgQKIhdtGNSnSYbL+fQhaqlEsWfGA2vYZeQBQ=",
"homepage": "https://registry.terraform.io/providers/tencentcloudstack/tencentcloud", "homepage": "https://registry.terraform.io/providers/tencentcloudstack/tencentcloud",
"owner": "tencentcloudstack", "owner": "tencentcloudstack",
"repo": "terraform-provider-tencentcloud", "repo": "terraform-provider-tencentcloud",
"rev": "v1.81.1", "rev": "v1.81.2",
"spdx": "MPL-2.0", "spdx": "MPL-2.0",
"vendorHash": null "vendorHash": null
}, },

View file

@ -10,16 +10,16 @@
buildGoModule rec { buildGoModule rec {
pname = "werf"; pname = "werf";
version = "1.2.235"; version = "1.2.238";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "werf"; owner = "werf";
repo = "werf"; repo = "werf";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-fEo/hHVV+xv60VNe9AqjrP4JGzGXcM8yr/KjhRfOAhk="; hash = "sha256-cMjekqIZnZMcDEEdeBs/jkPh/mqgox4gV+LkqP3IR5g=";
}; };
vendorHash = "sha256-1r32uT98I/pd6lxCb3bKy6uxJJodsaslwy9wynE4Pmg="; vendorHash = "sha256-67J7AaS0kUu42BqFWMsC+ZXL2DnrBWwhz/oGmyMvpyo=";
proxyVendor = true; proxyVendor = true;

View file

@ -6,13 +6,13 @@
buildGoModule rec { buildGoModule rec {
pname = "coreth"; pname = "coreth";
version = "0.12.1"; version = "0.12.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ava-labs"; owner = "ava-labs";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
hash = "sha256-Wf4abvBOX98A2IjALkMMOAqDvEtXtLddxhrV2LQM1dU="; hash = "sha256-WkSZ+7ygg2dkotv3vwTrWaVsSQvgmPJ0xhPCqZdQit8=";
}; };
# go mod vendor has a bug, see: golang/go#57529 # go mod vendor has a bug, see: golang/go#57529

View file

@ -4,23 +4,9 @@
, fetchFromGitHub , fetchFromGitHub
}: }:
let python3.pkgs.buildPythonApplication rec {
python = python3.override {
packageOverrides = self: super: {
sqlalchemy = super.sqlalchemy.overridePythonAttrs (old: rec {
version = "1.4.48";
src = fetchPypi {
pname = "SQLAlchemy";
inherit version;
hash = "sha256-tHvChwltmJoIOM6W99jpZpFKJNqHftQadTHUS1XNuN8=";
};
});
};
};
in
python.pkgs.buildPythonApplication rec {
pname = "flexget"; pname = "flexget";
version = "3.7.0"; version = "3.7.2";
format = "pyproject"; format = "pyproject";
# Fetch from GitHub in order to use `requirements.in` # Fetch from GitHub in order to use `requirements.in`
@ -28,22 +14,18 @@ python.pkgs.buildPythonApplication rec {
owner = "Flexget"; owner = "Flexget";
repo = "Flexget"; repo = "Flexget";
rev = "refs/tags/v${version}"; rev = "refs/tags/v${version}";
hash = "sha256-H+R2NPHJbpQToKI1Op+DqPt82+w2xHxHC9NPpiF3aF0="; hash = "sha256-K71nawQhFYLPRg79rcZKJ+US+3M5JAU0eg+ZiFwB6n8=";
}; };
postPatch = '' postPatch = ''
# remove dependency constraints but keep environment constraints # remove dependency constraints but keep environment constraints
sed 's/[~<>=][^;]*//' -i requirements.txt sed 's/[~<>=][^;]*//' -i requirements.txt
# "zxcvbn-python" was renamed to "zxcvbn", and we don't have the former in
# nixpkgs. See: https://github.com/NixOS/nixpkgs/issues/62110
substituteInPlace requirements.txt --replace "zxcvbn-python" "zxcvbn"
''; '';
# ~400 failures # ~400 failures
doCheck = false; doCheck = false;
propagatedBuildInputs = with python.pkgs; [ propagatedBuildInputs = with python3.pkgs; [
# See https://github.com/Flexget/Flexget/blob/master/requirements.txt # See https://github.com/Flexget/Flexget/blob/master/requirements.txt
apscheduler apscheduler
beautifulsoup4 beautifulsoup4

View file

@ -2,12 +2,12 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "signal-cli"; pname = "signal-cli";
version = "0.11.10"; version = "0.11.11";
# Building from source would be preferred, but is much more involved. # Building from source would be preferred, but is much more involved.
src = fetchurl { src = fetchurl {
url = "https://github.com/AsamK/signal-cli/releases/download/v${version}/signal-cli-${version}-Linux.tar.gz"; url = "https://github.com/AsamK/signal-cli/releases/download/v${version}/signal-cli-${version}-Linux.tar.gz";
hash = "sha256-8iWUhneAialoEn3igxxTGJBmopbZHHqkvtJPZEESWM0="; hash = "sha256-IKKWJBe6A3TVWIRTDyWbfRYMwgRNhSqSJK0ZRZNCVkA=";
}; };
buildInputs = lib.optionals stdenv.isLinux [ libmatthew_java dbus dbus_java ]; buildInputs = lib.optionals stdenv.isLinux [ libmatthew_java dbus dbus_java ];

View file

@ -10,16 +10,16 @@
buildGoModule rec { buildGoModule rec {
pname = "netmaker"; pname = "netmaker";
version = "0.19.0"; version = "0.20.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "gravitl"; owner = "gravitl";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
hash = "sha256-wiexultPliYD3WrLVtWUdLs762OzLAmoH66phwjOuUw="; hash = "sha256-pzU9MiUL5M7EkGIXjZ0VqJmk4qOlbgCLCg84iPIXG70=";
}; };
vendorHash = "sha256-Msvonap1soJExzBymouY8kZJnHT4SIwpfJjBgpkO2Rw="; vendorHash = "sha256-euqQztEUEejCWy7WqtzMEIZrBDZpD/6dqnFsYhXajdE=";
inherit subPackages; inherit subPackages;

View file

@ -20,7 +20,6 @@
, libyuv , libyuv
, libopus , libopus
, libsciter , libsciter
, llvmPackages
, wrapGAppsHook , wrapGAppsHook
, writeText , writeText
}: }:
@ -41,8 +40,6 @@ rustPlatform.buildRustPackage rec {
./fix-for-rust-1.65.diff ./fix-for-rust-1.65.diff
]; ];
LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib";
cargoLock = { cargoLock = {
lockFile = ./Cargo.lock; lockFile = ./Cargo.lock;
outputHashes = { outputHashes = {
@ -98,7 +95,7 @@ rustPlatform.buildRustPackage rec {
ln -s ${libyuv.out}/lib/* $VCPKG_ROOT/installed/${vcpkg_target}/lib/ ln -s ${libyuv.out}/lib/* $VCPKG_ROOT/installed/${vcpkg_target}/lib/
''; '';
nativeBuildInputs = [ pkg-config cmake makeWrapper copyDesktopItems yasm nasm clang wrapGAppsHook ]; nativeBuildInputs = [ pkg-config cmake makeWrapper copyDesktopItems yasm nasm clang wrapGAppsHook rustPlatform.bindgenHook ];
buildInputs = [ alsa-lib pulseaudio libXfixes libxcb xdotool gtk3 libvpx libopus libXtst libyuv ]; buildInputs = [ alsa-lib pulseaudio libXfixes libxcb xdotool gtk3 libvpx libopus libXtst libyuv ];
# Checks require an active X display. # Checks require an active X display.

View file

@ -0,0 +1,83 @@
{ lib
, stdenv
, fetchFromGitHub
, fetchzip
, cmake
, gmp
, mpfr
}:
let
satlib-bmc = fetchzip {
url = "https://www.cs.ubc.ca/~hoos/SATLIB/Benchmarks/SAT/BMC/bmc.tar.gz";
stripRoot = false;
sha256 = "sha256-F1Jfrj4iMMf/3LFCShIDMs4JfLkJ51Z4wkL1FDT9b/A=";
};
# needed for mpfr 4.2.0+ support
mpreal = fetchFromGitHub {
owner = "advanpix";
repo = "mpreal";
rev = "mpfrc++-3.6.9";
sha256 = "sha256-l61SKEx4pBocADrEGPVacQ6F2ep9IuvNZ8W08dKeZKg=";
};
in stdenv.mkDerivation rec {
pname = "sharpsat-td";
version = "unstable-2021-09-05";
src = fetchFromGitHub {
owner = "Laakeri";
repo = pname;
rev = "b9bb015305ea5d4e1ac7141691d0fe55ca983d31";
sha256 = "sha256-FE+DUd58eRr5w9RFw0fMHfjIiNDWIcG7XbyWJ/pI28U=";
};
postPatch = ''
# just say no to bundled binaries
rm bin/*
# ensure resultant build calls its own binaries
substituteInPlace src/decomposition.cpp \
--replace '"../../../flow-cutter-pace17/flow_cutter_pace17"' '"'"$out"'/bin/flow_cutter_pace17"'
substituteInPlace src/preprocessor/treewidth.cpp \
--replace '"./flow_cutter_pace17"' '"'"$out"'/bin/flow_cutter_pace17"'
# replace bundled version of mpreal/mpfrc++
rm -r src/mpfr
cp -r ${mpreal} src/mpfr
'';
nativeBuildInputs = [ cmake ];
buildInputs = [ gmp mpfr ];
installPhase = ''
runHook preInstall
mkdir -p $out/bin
install -Dm755 sharpSAT $out/bin/sharpSAT-td
install -Dm755 flow_cutter_pace17 $out/bin/flow_cutter_pace17
runHook postInstall
'';
doInstallCheck = true;
installCheckPhase = ''
runHook preInstallCheck
# "correct" answer from https://sites.google.com/site/marcthurley/sharpsat/benchmarks/collected-model-counts
$out/bin/sharpSAT-td -decot 1 -decow 100 -cs 3500 -tmpdir "$TMPDIR" \
${satlib-bmc}/bmc-ibm-1.cnf | grep -F 'c s exact arb int 7333984412904350856728851870196181665291102236046537207120878033973328441091390427157620940515935993557837912658856672133150412904529478729364681871717139154252602322050981277183916105207406949425074710972297902317183503443350157267211568852295978718386711142950559533715161449971311118966214098944000'
runHook postInstallCheck
'';
meta = {
description = "A fast solver for the #SAT model counting problem";
homepage = "https://github.com/Laakeri/sharpsat-td";
license = with lib.licenses; [ mit asl20 ];
maintainers = with lib.maintainers; [ ris ];
# uses clhash, which is non-portable
platforms = [ "x86_64-linux" "x86_64-darwin" ];
};
}

View file

@ -0,0 +1,33 @@
{ lib
, buildGoModule
, fetchFromGitHub
}:
buildGoModule rec {
pname = "legit";
version = "0.2.1";
src = fetchFromGitHub {
repo = "legit";
owner = "icyphox";
rev = "v${version}";
hash = "sha256-Y0lfbe4xBCj80z07mLFIiX+shvntYAHiW2Uw7h94jrE=";
};
vendorHash = "sha256-RAUSYCtP4rcJ2zIBXfPAEZWD1VSfr3d4MrmUMiPpjK8=";
postInstall = ''
mkdir -p $out/lib/legit/templates
mkdir -p $out/lib/legit/static
cp -r $src/templates/* $out/lib/legit/templates
cp -r $src/static/* $out/lib/legit/static
'';
meta = {
description = "Web frontend for git";
homepage = "https://github.com/icyphox/legit";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.ratsclub ];
};
}

View file

@ -10,16 +10,16 @@
buildGoModule rec{ buildGoModule rec{
pname = "flintlock"; pname = "flintlock";
version = "0.4.0"; version = "0.6.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "weaveworks"; owner = "weaveworks";
repo = "flintlock"; repo = "flintlock";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-kHrVpQ4E8b1YV+ofZwd4iGJ9ucVUUam6rxdpOGmvRR4="; sha256 = "sha256-jZi58mewQ2hlH/9H4iAF4Mvf9UK4F7sUR0xcCEaLzX0=";
}; };
vendorSha256 = "sha256-A3LrikB2KrnSI+OREiLmlkTFpRKQWRB8w4OJ6ApX7oY="; vendorHash = "sha256-IGfNMe1fQfAGAOVsxmn/oxleHfniqL1TJKllCwpuWOU=";
subPackages = [ "cmd/flintlock-metrics" "cmd/flintlockd" ]; subPackages = [ "cmd/flintlock-metrics" "cmd/flintlockd" ];

View file

@ -1,47 +1,58 @@
{ lib, stdenv, fetchurl { lib, stdenv, fetchurl
, meson, ninja, pkg-config, python3, wayland-scanner , meson, ninja, pkg-config, python3, wayland-scanner
, cairo, colord, dbus, lcms2, libGL, libXcursor, libdrm, libevdev, libinput , cairo, dbus, lcms2, libdrm, libevdev, libinput, libjpeg, libxkbcommon, mesa
, libjpeg, seatd, libxcb, libxkbcommon, mesa, mtdev, pam, udev, wayland , seatd, wayland, wayland-protocols, xcbutilcursor
, wayland-protocols
, pipewire ? null, pango ? null, libunwind ? null, freerdp ? null, vaapi ? null , demoSupport ? true
, libva ? null, libwebp ? null, xwayland ? null , hdrSupport ? true, libdisplay-info
# beware of null defaults, as the parameters *are* supplied by callPackage by default , pangoSupport ? true, pango
, buildDemo ? true , pipewireSupport ? true, pipewire
, buildRemoting ? true, gst_all_1 , rdpSupport ? true, freerdp
, remotingSupport ? true, gst_all_1
, vaapiSupport ? true, libva
, vncSupport ? true, aml, neatvnc, pam
, webpSupport ? true, libwebp
, xwaylandSupport ? true, libXcursor, xwayland
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "weston"; pname = "weston";
version = "11.0.2"; version = "12.0.1";
src = fetchurl { src = fetchurl {
url = "https://gitlab.freedesktop.org/wayland/weston/-/releases/${version}/downloads/weston-${version}.tar.xz"; url = "https://gitlab.freedesktop.org/wayland/weston/-/releases/${version}/downloads/weston-${version}.tar.xz";
hash = "sha256-ckB1LO8LfeYiuvi9U0jmP8axnwLvgklhsq3Rd9llKVI="; hash = "sha256-sYWR6rJ4vBkXIPbAkVgEC3lecRivHV3cpqzZqOIDlTU=";
}; };
depsBuildBuild = [ pkg-config ]; depsBuildBuild = [ pkg-config ];
nativeBuildInputs = [ meson ninja pkg-config python3 wayland-scanner ]; nativeBuildInputs = [ meson ninja pkg-config python3 wayland-scanner ];
buildInputs = [ buildInputs = [
cairo colord dbus freerdp lcms2 libGL libXcursor libdrm libevdev libinput cairo lcms2 libdrm libevdev libinput libjpeg libxkbcommon mesa seatd
libjpeg seatd libunwind libva libwebp libxcb libxkbcommon mesa mtdev pam wayland wayland-protocols
pango pipewire udev vaapi wayland wayland-protocols ] ++ lib.optional hdrSupport libdisplay-info
] ++ lib.optionals buildRemoting [ ++ lib.optional pangoSupport pango
gst_all_1.gstreamer ++ lib.optional pipewireSupport pipewire
gst_all_1.gst-plugins-base ++ lib.optional rdpSupport freerdp
]; ++ lib.optionals remotingSupport [ gst_all_1.gstreamer gst_all_1.gst-plugins-base ]
++ lib.optional vaapiSupport libva
++ lib.optionals vncSupport [ aml neatvnc pam ]
++ lib.optional webpSupport libwebp
++ lib.optionals xwaylandSupport [ libXcursor xcbutilcursor xwayland ];
mesonFlags= [ mesonFlags= [
"-Dbackend-drm-screencast-vaapi=${lib.boolToString (vaapi != null)}" (lib.mesonBool "backend-drm-screencast-vaapi" vaapiSupport)
"-Dbackend-rdp=${lib.boolToString (freerdp != null)}" (lib.mesonBool "backend-pipewire" pipewireSupport)
"-Dxwayland=${lib.boolToString (xwayland != null)}" # Default is true! (lib.mesonBool "backend-rdp" rdpSupport)
(lib.mesonBool "remoting" buildRemoting) (lib.mesonBool "backend-vnc" vncSupport)
"-Dpipewire=${lib.boolToString (pipewire != null)}" (lib.mesonBool "demo-clients" demoSupport)
"-Dimage-webp=${lib.boolToString (libwebp != null)}" (lib.mesonBool "image-webp" webpSupport)
(lib.mesonBool "demo-clients" buildDemo) (lib.mesonBool "pipewire" pipewireSupport)
"-Dsimple-clients=" (lib.mesonBool "remoting" remotingSupport)
"-Dtest-junit-xml=false" (lib.mesonOption "simple-clients" "")
] ++ lib.optionals (xwayland != null) [ (lib.mesonBool "test-junit-xml" false)
"-Dxwayland-path=${xwayland.out}/bin/Xwayland" (lib.mesonBool "xwayland" xwaylandSupport)
] ++ lib.optionals xwaylandSupport [
(lib.mesonOption "xwayland-path" (lib.getExe xwayland))
]; ];
passthru.providedSessions = [ "weston" ]; passthru.providedSessions = [ "weston" ];
@ -61,6 +72,6 @@ stdenv.mkDerivation rec {
homepage = "https://gitlab.freedesktop.org/wayland/weston"; homepage = "https://gitlab.freedesktop.org/wayland/weston";
license = licenses.mit; # Expat version license = licenses.mit; # Expat version
platforms = platforms.linux; platforms = platforms.linux;
maintainers = with maintainers; [ primeos ]; maintainers = with maintainers; [ primeos qyliss ];
}; };
} }

View file

@ -54,7 +54,8 @@ assert (args' ? vendorHash && args' ? vendorSha256) -> throw "both `vendorHash`
let let
args = removeAttrs args' [ "overrideModAttrs" "vendorSha256" "vendorHash" ]; args = removeAttrs args' [ "overrideModAttrs" "vendorSha256" "vendorHash" ];
go-modules = if (vendorHash != null) then stdenv.mkDerivation (let modArgs = { go-modules = if (vendorHash == null) then "" else
(stdenv.mkDerivation {
name = "${name}-go-modules"; name = "${name}-go-modules";
@ -138,13 +139,11 @@ let
''; '';
dontFixup = true; dontFixup = true;
}; in modArgs // (
{ outputHashMode = "recursive";
outputHashMode = "recursive"; outputHash = vendorHash;
outputHash = vendorHash; outputHashAlgo = if args' ? vendorSha256 || vendorHash == "" then "sha256" else null;
outputHashAlgo = if args' ? vendorSha256 || vendorHash == "" then "sha256" else null; }).overrideAttrs overrideModAttrs;
}
) // overrideModAttrs modArgs) else "";
package = stdenv.mkDerivation (args // { package = stdenv.mkDerivation (args // {
nativeBuildInputs = [ go ] ++ nativeBuildInputs; nativeBuildInputs = [ go ] ++ nativeBuildInputs;

View file

@ -26,13 +26,13 @@ lib.checkListOfEnum "${pname}: theme tweaks" validTweaks tweaks
stdenvNoCC.mkDerivation stdenvNoCC.mkDerivation
rec { rec {
inherit pname; inherit pname;
version = "2023-04-08"; version = "2023-05-27";
src = fetchFromGitHub { src = fetchFromGitHub {
repo = "Orchis-theme"; repo = "Orchis-theme";
owner = "vinceliuice"; owner = "vinceliuice";
rev = version; rev = version;
hash = "sha256-/X4Hr2M/7pf6JxTUvPoG5VkQd+rweEPeTNe9glSLh78="; hash = "sha256-I1a8y9dAJqFgnhyMqfupSdGvbbScf6tSYKlAhAzY4Dk=";
}; };
nativeBuildInputs = [ gtk3 sassc ]; nativeBuildInputs = [ gtk3 sassc ];

View file

@ -74,7 +74,7 @@ stdenv.mkDerivation (finalAttrs: {
"-Dinstalled_tests=false" # TODO: enable these "-Dinstalled_tests=false" # TODO: enable these
"-Dwayland_eglstream=true" "-Dwayland_eglstream=true"
"-Dprofiler=true" "-Dprofiler=true"
"-Dxwayland_path=${xwayland}/bin/Xwayland" "-Dxwayland_path=${lib.getExe xwayland}"
# This should be auto detected, but it looks like it manages a false # This should be auto detected, but it looks like it manages a false
# positive. # positive.
"-Dxwayland_initfd=disabled" "-Dxwayland_initfd=disabled"

View file

@ -81,7 +81,7 @@ stdenv.mkDerivation (finalAttrs: {
"-Dtests=false" "-Dtests=false"
"-Dwayland_eglstream=true" "-Dwayland_eglstream=true"
"-Dprofiler=true" "-Dprofiler=true"
"-Dxwayland_path=${xwayland}/bin/Xwayland" "-Dxwayland_path=${lib.getExe xwayland}"
# This should be auto detected, but it looks like it manages a false # This should be auto detected, but it looks like it manages a false
# positive. # positive.
"-Dxwayland_initfd=disabled" "-Dxwayland_initfd=disabled"

View file

@ -144,7 +144,7 @@ mkDerivation {
]; ];
CXXFLAGS = [ CXXFLAGS = [
''-DNIXPKGS_XWAYLAND=\"${lib.getBin xwayland}/bin/Xwayland\"'' ''-DNIXPKGS_XWAYLAND=\"${lib.getExe xwayland}\"''
]; ];
postInstall = '' postInstall = ''

View file

@ -47,23 +47,23 @@
}; };
sdk_7_0 = buildNetSdk { sdk_7_0 = buildNetSdk {
version = "7.0.203"; version = "7.0.302";
srcs = { srcs = {
x86_64-linux = { x86_64-linux = {
url = "https://download.visualstudio.microsoft.com/download/pr/ebfd0bf8-79bd-480a-9e81-0b217463738d/9adc6bf0614ce02670101e278a2d8555/dotnet-sdk-7.0.203-linux-x64.tar.gz"; url = "https://download.visualstudio.microsoft.com/download/pr/351400ef-f2e6-4ee7-9d1b-4c246231a065/9f7826270fb36ada1bdb9e14bc8b5123/dotnet-sdk-7.0.302-linux-x64.tar.gz";
sha512 = "ed1ae7cd88591ec52e1515c4a25d9a832eca29e8a0889549fea35a320e6e356e3806a17289f71fc0b04c36b006ae74446c53771d976c170fcbe5977ac7db1cb6"; sha512 = "9387bd804ed980ba1bc33093598ddbafa3a761e07d28916c94442cc329533d78a03bfc59d3066a1a861244302414e7e658b4e721b5bc825f623f8f908e748b7e";
}; };
aarch64-linux = { aarch64-linux = {
url = "https://download.visualstudio.microsoft.com/download/pr/6cd2eaa7-4c06-4168-b90b-ee2d6bb40b10/4a8387eb07e17d262bfb9965f6d34462/dotnet-sdk-7.0.203-linux-arm64.tar.gz"; url = "https://download.visualstudio.microsoft.com/download/pr/142603ad-0df5-4aef-bdc2-87b6140c90ed/2cce467e6c954d01024942b8370aaf70/dotnet-sdk-7.0.302-linux-arm64.tar.gz";
sha512 = "f5e1b5a63b51af664b852435fc5631ff3fbeafbfac9f34c025da016218b0e6fb9a24e816035a44f4b4a16f28bc696821b1aa6f181966754318bc45cde7f439bf"; sha512 = "7f6372faa348c84560e3f1139605dc08d888b14b98c400724f628b52156fe31c20a50dc2a2f8673e29239d04ef06744e16c6f8bd8eb1756f99274c73eda74621";
}; };
x86_64-darwin = { x86_64-darwin = {
url = "https://download.visualstudio.microsoft.com/download/pr/de3e24bd-f677-4d9e-9717-859ce6659b5d/80c21bb06ca64d9408d11a32f858c7c6/dotnet-sdk-7.0.203-osx-x64.tar.gz"; url = "https://download.visualstudio.microsoft.com/download/pr/34ce4803-1444-48a2-9955-e2a9b9061b03/e18c978b55226240ca037cf8b1770064/dotnet-sdk-7.0.302-osx-x64.tar.gz";
sha512 = "a69ec597bc5b0a59ccfc9cc63c4883037eb9293600e98ea420c879242ec6c3fae6a81a3a08bf7d5d2ab93f750debffb224ad5628c9abd53bc44cfcb02ca77136"; sha512 = "cafb8e2839a8c91f58e8bda519d27f622a7a4062aea9247d743d64a3de3acad6ddd4f80d011fd416a3e3622f0ece8cd2e70e65f48331ae321b5ff23d282787b3";
}; };
aarch64-darwin = { aarch64-darwin = {
url = "https://download.visualstudio.microsoft.com/download/pr/ad0ad533-6970-4099-a0c6-ee1d089a381d/2d7ea966c6d032111389b7686ccc0d9a/dotnet-sdk-7.0.203-osx-arm64.tar.gz"; url = "https://download.visualstudio.microsoft.com/download/pr/fc7ed56d-3afe-4aa6-81bb-b4b0f5df56b5/d199f43f7421c6677ba25544b442b6b7/dotnet-sdk-7.0.302-osx-arm64.tar.gz";
sha512 = "e41de76f6be00de587cedaed2b0c6e2c2871b2ebf03c89375b4c69cd3fdd14df0dc49b5fe83970868a25d14aa19deafbfe66ee6790383b77f7da3d8dea939664"; sha512 = "28cc5fcc9651fc75f9b2f864672e5fdaead28feb262696c305d00a71c828004e46f0b9b4a6bb6b21b9ea475b1c601e1724df302eea4d63f604e4fcdc9c97dd63";
}; };
}; };
packages = { fetchNuGet }: [ packages = { fetchNuGet }: [

View file

@ -0,0 +1,25 @@
{ lib
, stdenv
, fetchurl
}:
stdenv.mkDerivation (finalAttrs: {
pname = "fleng";
version = "14";
src = fetchurl {
url = "http://www.call-with-current-continuation.org/fleng/fleng-${finalAttrs.version}.tgz";
hash = "sha256-Js9bllX/399t9oeiRrqJNUFyYJwJVb/xSzwrcMrdi08=";
};
doCheck = true;
meta = {
homepage = "http://www.call-with-current-continuation.org/fleng/fleng.html";
description = "A low level concurrent logic programming language descended from Prolog";
license = lib.licenses.publicDomain;
maintainers = with lib.maintainers; [ AndersonTorres ];
platforms = lib.platforms.unix;
};
})
# TODO: bootstrap

View file

@ -1,9 +1,7 @@
{ lib, stdenv, fetchFromGitHub, cmake, bison, flex, libusb-compat-0_1, libelf, libftdi1, readline { lib, stdenv, fetchFromGitHub, cmake, bison, flex, libusb-compat-0_1, libelf
# docSupport is a big dependency, disabled by default , libftdi1, readline
, docSupport ? false, texLive ? null, texinfo ? null, texi2html ? null # documentation building is broken on darwin
}: , docSupport ? (!stdenv.isDarwin), texlive, texinfo, texi2html, unixtools }:
assert docSupport -> texLive != null && texinfo != null && texi2html != null;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "avrdude"; pname = "avrdude";
@ -16,10 +14,14 @@ stdenv.mkDerivation rec {
sha256 = "sha256-pGjOefWnf11kG/zFGwYGet1OjAhKsULNGgh6vqvIQ7c="; sha256 = "sha256-pGjOefWnf11kG/zFGwYGet1OjAhKsULNGgh6vqvIQ7c=";
}; };
nativeBuildInputs = [ cmake bison flex ]; nativeBuildInputs = [ cmake bison flex ] ++ lib.optionals docSupport [
unixtools.more
texlive.combined.scheme-medium
texinfo
texi2html
];
buildInputs = [ libusb-compat-0_1 libelf libftdi1 readline ] buildInputs = [ libusb-compat-0_1 libelf libftdi1 readline ];
++ lib.optionals docSupport [ texLive texinfo texi2html ];
cmakeFlags = lib.optionals docSupport [ cmakeFlags = lib.optionals docSupport [
"-DBUILD_DOC=ON" "-DBUILD_DOC=ON"

View file

@ -9,11 +9,11 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "stm32cubemx"; pname = "stm32cubemx";
version = "6.8.0"; version = "6.8.1";
src = fetchzip { src = fetchzip {
url = "https://sw-center.st.com/packs/resource/library/stm32cube_mx_v${builtins.replaceStrings ["."] [""] version}-lin.zip"; url = "https://sw-center.st.com/packs/resource/library/stm32cube_mx_v${builtins.replaceStrings ["."] [""] version}-lin.zip";
sha256 = "sha256-jJeJTg2cCO6fqQ4vFq2dXsfsWmlN5ncZJWMoekJXkLQ="; sha256 = "sha256-0WzdyRP09rRZzVZhwMOxA/SwHrQOYGBnv8UwvjMT22Q=";
stripRoot = false; stripRoot = false;
}; };

View file

@ -2,17 +2,17 @@
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "wasmtime"; pname = "wasmtime";
version = "9.0.1"; version = "9.0.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "bytecodealliance"; owner = "bytecodealliance";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
hash = "sha256-6pZZawygFxE5rWkdJUaJLxTd5pZiC0o1Rvc5Zl6YJpw="; hash = "sha256-Fnc3iepxHr7WjorFoabHE6ZM/zK1T5W/gkxL+AEcVgU=";
fetchSubmodules = true; fetchSubmodules = true;
}; };
cargoHash = "sha256-GUYd5/1pekOHG1e0WBxjOe3/foZ5YdU2ovF0btZ6+ec="; cargoHash = "sha256-7Q5aJU0sYzRLgjiSNLIrydYRJ3ozABjDo4VtmexS3po=";
cargoBuildFlags = [ "--package" "wasmtime-cli" "--package" "wasmtime-c-api" ]; cargoBuildFlags = [ "--package" "wasmtime-cli" "--package" "wasmtime-c-api" ];

View file

@ -19,6 +19,17 @@ stdenv.mkDerivation rec {
url = "https://github.com/libb64/libb64/commit/4fe47c052e9123da8f751545deb48be08c3411f6.patch"; url = "https://github.com/libb64/libb64/commit/4fe47c052e9123da8f751545deb48be08c3411f6.patch";
sha256 = "18b3np3gpyzimqmk6001riqv5n70wfbclky6zzsrvj5zl1dj4ljf"; sha256 = "18b3np3gpyzimqmk6001riqv5n70wfbclky6zzsrvj5zl1dj4ljf";
}) })
# Fix i686-linux build failure.
(fetchpatch {
name = "elif.patch";
url = "https://github.com/libb64/libb64/commit/819e43c8b34261ea3ee694bdc27865a033966083.patch";
hash = "sha256-r2jI6Q3rWDtArLlkAuyy7vcjsuRvX+2fBd5yk8XOMcc";
})
(fetchpatch {
name = "size_t.patch";
url = "https://github.com/libb64/libb64/commit/b5edeafc89853c48fa41a4c16393a1fdc8638ab6.patch";
hash = "sha256-+bqfOOlT/t0FLQEMHuxW1BxJcx9rk0yYM3wD43mcymo";
})
] ++ lib.optional (stdenv.buildPlatform != stdenv.hostPlatform) (fetchpatch { ] ++ lib.optional (stdenv.buildPlatform != stdenv.hostPlatform) (fetchpatch {
name = "0001-example-Do-not-run-the-tests.patch"; name = "0001-example-Do-not-run-the-tests.patch";
url = "https://cgit.openembedded.org/meta-openembedded/plain/meta-oe/recipes-support/libb64/libb64/0001-example-Do-not-run-the-tests.patch?id=484e0de1e4ee107f21ae2a5c5f976ed987978baf"; url = "https://cgit.openembedded.org/meta-openembedded/plain/meta-oe/recipes-support/libb64/libb64/0001-example-Do-not-run-the-tests.patch?id=484e0de1e4ee107f21ae2a5c5f976ed987978baf";

View file

@ -1,6 +1,6 @@
{ lib, stdenv, fetchFromGitHub, cmake, curl }: { lib, stdenv, fetchFromGitHub, cmake, curl }:
let version = "1.10.3"; in let version = "1.10.4"; in
stdenv.mkDerivation { stdenv.mkDerivation {
pname = "libcpr"; pname = "libcpr";
inherit version; inherit version;
@ -11,7 +11,7 @@ stdenv.mkDerivation {
owner = "libcpr"; owner = "libcpr";
repo = "cpr"; repo = "cpr";
rev = version; rev = version;
hash = "sha256-NueZPBiICrh8GXXdCqNtVaB7PfqwtQ0WolvRij8SYbE="; hash = "sha256-8qRNlZgBB71t/FSFPnxFhr02OuD2erLVeoc6wAx3LKk=";
}; };
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];

View file

@ -41,7 +41,7 @@ stdenv.mkDerivation rec {
libgudev libgudev
]; ];
doCheck = stdenv.hostPlatform == stdenv.buildPlatform; doCheck = stdenv.hostPlatform == stdenv.buildPlatform && lib.meta.availableOn stdenv.hostPlatform valgrind;
mesonFlags = [ mesonFlags = [
"-Dtests=${if doCheck then "enabled" else "disabled"}" "-Dtests=${if doCheck then "enabled" else "disabled"}"

View file

@ -0,0 +1,36 @@
{ lib
, buildGoModule
, fetchFromGitHub
, android-tools
}:
buildGoModule rec {
pname = "fdroidcl";
version = "0.7.0";
src = fetchFromGitHub {
owner = "mvdan";
repo = "fdroidcl";
rev = "v${version}";
hash = "sha256-tqhs3b/DHfnGOm9qcM56NSzt1GJflJfbemkp7+nXbug=";
};
patches = [ ./go_mod_version_update.patch ];
vendorHash = "sha256-BWbwhHjfmMjiRurrZfW/YgIzJUH/hn+7qonD0BcTLxs=";
postPatch = ''
substituteInPlace adb/{server,device}.go \
--replace 'exec.Command("adb"' 'exec.Command("${android-tools}/bin/adb"'
'';
# TestScript/search attempts to connect to fdroid
doCheck = false;
meta = with lib; {
description = "F-Droid command line interface written in Go";
homepage = "https://github.com/mvdan/fdroidcl";
license = licenses.bsd3;
maintainers = with maintainers; [ aleksana ];
};
}

View file

@ -0,0 +1,47 @@
diff --git a/go.mod b/go.mod
index a482585..5c836dd 100644
--- a/go.mod
+++ b/go.mod
@@ -1,10 +1,19 @@
module mvdan.cc/fdroidcl
-go 1.16
+go 1.18
require (
github.com/kr/pretty v0.3.0
github.com/rogpeppe/go-internal v1.9.0
github.com/schollz/progressbar/v3 v3.13.0
- gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
+)
+
+require (
+ github.com/kr/text v0.2.0 // indirect
+ github.com/mattn/go-runewidth v0.0.14 // indirect
+ github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect
+ github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e // indirect
+ github.com/rivo/uniseg v0.4.3 // indirect
+ golang.org/x/sys v0.4.0 // indirect
+ golang.org/x/term v0.4.0 // indirect
)
diff --git a/go.sum b/go.sum
index 7befc16..d8523cb 100644
--- a/go.sum
+++ b/go.sum
@@ -23,8 +23,6 @@ github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJ
github.com/rivo/uniseg v0.4.3 h1:utMvzDsuh3suAEnhH0RdHmoPbU648o6CvXxTx4SBMOw=
github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
-github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg=
-github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o=
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
github.com/schollz/progressbar/v3 v3.13.0 h1:9TeeWRcjW2qd05I8Kf9knPkW4vLM/hYoa6z9ABvxje8=
@@ -38,7 +36,4 @@ golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.4.0 h1:O7UWfv5+A2qiuulQk30kVinPoMtoIPeVaKLEgLpVkvg=
golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
-gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/errgo.v2 v2.1.0 h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=

View file

@ -17,7 +17,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "acquire"; pname = "acquire";
version = "3.5"; version = "3.6";
format = "pyproject"; format = "pyproject";
disabled = pythonOlder "3.7"; disabled = pythonOlder "3.7";
@ -26,7 +26,7 @@ buildPythonPackage rec {
owner = "fox-it"; owner = "fox-it";
repo = "acquire"; repo = "acquire";
rev = "refs/tags/${version}"; rev = "refs/tags/${version}";
hash = "sha256-F0kKydFDL2XafK7A66qn3Ad/mGZU8x3UKtXtKpxHZqU="; hash = "sha256-oH+uxu61+d6qEQmT7joxwlyfpv7mF8ug6OzHmyUa95Y=";
}; };
SETUPTOOLS_SCM_PRETEND_VERSION = version; SETUPTOOLS_SCM_PRETEND_VERSION = version;

View file

@ -7,15 +7,15 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "adafruit-pureio"; pname = "adafruit-pureio";
version = "1.1.10"; version = "1.1.11";
format = "setuptools"; format = "pyproject";
disabled = pythonOlder "3.7"; disabled = pythonOlder "3.7";
src = fetchPypi { src = fetchPypi {
pname = "Adafruit_PureIO"; pname = "Adafruit_PureIO";
inherit version; inherit version;
hash = "sha256-EgaIN1PAlmMJ5tAtqXBnbpvHtQO7Sib3NuAXOfVqZLk="; hash = "sha256-xM+7NlcxlC0fEJKhFvR9/a4K7xjFsn8QcrWCStXqjHw=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -7,14 +7,14 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "aliyun-python-sdk-config"; pname = "aliyun-python-sdk-config";
version = "2.2.8"; version = "2.2.9";
format = "setuptools"; format = "setuptools";
disabled = pythonOlder "3.7"; disabled = pythonOlder "3.7";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
hash = "sha256-0rGI2YMT78gstfHmQD63hdvICQ3WlKgkx8unsDegaXw="; hash = "sha256-5uRiOJAxq1zcJX+CyDnTG5BG1eFcJ43HdfpWUoZ5FSM=";
}; };
propagatedBuildInputs = [ propagatedBuildInputs = [

View file

@ -7,14 +7,14 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "dominate"; pname = "dominate";
version = "2.7.0"; version = "2.8.0";
format = "setuptools"; format = "setuptools";
disabled = pythonOlder "3.7"; disabled = pythonOlder "3.7";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
hash = "sha256-UgEBNgiS6/nQVT9n0341n/kkA9ih4zgUAwUDCIoF2kk="; hash = "sha256-TJDDvvr4jmErcfSzmve8vviXes+oVc7JVyJaj79QQAc=";
}; };
nativeCheckInputs = [ nativeCheckInputs = [

View file

@ -6,6 +6,7 @@
, fetchFromGitHub , fetchFromGitHub
, html2text , html2text
, lxml , lxml
, markdown
, pytestCheckHook , pytestCheckHook
, python-dateutil , python-dateutil
, pythonOlder , pythonOlder
@ -17,7 +18,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "faraday-plugins"; pname = "faraday-plugins";
version = "1.11.0"; version = "1.12.0";
format = "setuptools"; format = "setuptools";
disabled = pythonOlder "3.7"; disabled = pythonOlder "3.7";
@ -26,7 +27,7 @@ buildPythonPackage rec {
owner = "infobyte"; owner = "infobyte";
repo = "faraday_plugins"; repo = "faraday_plugins";
rev = "refs/tags/${version}"; rev = "refs/tags/${version}";
hash = "sha256-rbmD+UeMzsccYq7AzANziUZCgKtShRe/fJersODMrF8="; hash = "sha256-dtSGNLQUG4Co+p/sPBgKxMhB7drZAMxUas+eH6g/cS8=";
}; };
postPatch = '' postPatch = ''
@ -40,6 +41,7 @@ buildPythonPackage rec {
colorama colorama
html2text html2text
lxml lxml
markdown
python-dateutil python-dateutil
pytz pytz
requests requests

View file

@ -73,6 +73,12 @@ let
rm test/unit/test_quadrature.py rm test/unit/test_quadrature.py
rm test/unit/test_reference_element.py rm test/unit/test_reference_element.py
rm test/unit/test_fiat.py rm test/unit/test_fiat.py
# Fix `np.float` deprecation in Numpy 1.20
grep -lr 'np.float(' test/ | while read -r fn; do
substituteInPlace "$fn" \
--replace "np.float(" "np.float64("
done
''; '';
checkPhase = '' checkPhase = ''
runHook preCheck runHook preCheck

View file

@ -3,7 +3,6 @@
, fetchFromGitHub , fetchFromGitHub
, buildPythonPackage , buildPythonPackage
, rustPlatform , rustPlatform
, llvmPackages
, pkg-config , pkg-config
, pcsclite , pcsclite
, nettle , nettle
@ -35,16 +34,14 @@ buildPythonPackage rec {
format = "pyproject"; format = "pyproject";
LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib";
propagatedBuildInputs = [ propagatedBuildInputs = [
httpx httpx
]; ];
nativeBuildInputs = [ nativeBuildInputs = [
llvmPackages.clang
pkg-config pkg-config
] ++ (with rustPlatform; [ ] ++ (with rustPlatform; [
bindgenHook
cargoSetupHook cargoSetupHook
maturinBuildHook maturinBuildHook
]); ]);

View file

@ -12,7 +12,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "miniaudio"; pname = "miniaudio";
version = "1.57"; version = "1.58";
disabled = pythonOlder "3.6"; disabled = pythonOlder "3.6";
@ -22,7 +22,7 @@ buildPythonPackage rec {
owner = "irmen"; owner = "irmen";
repo = "pyminiaudio"; repo = "pyminiaudio";
rev = "refs/tags/v${version}"; rev = "refs/tags/v${version}";
hash = "sha256-jAGJEXNDclcGHnoDYMjQXz5ZS9U9pmIWEHzgYKp49/o="; hash = "sha256-uIjQerxMU4hMCJtpqYPt2kicql3s7jyho9r6/kRHTbk=";
}; };
postPatch = '' postPatch = ''

View file

@ -12,14 +12,14 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "nbsphinx"; pname = "nbsphinx";
version = "0.9.1"; version = "0.9.2";
format = "setuptools"; format = "setuptools";
disabled = pythonOlder "3.7"; disabled = pythonOlder "3.7";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
hash = "sha256-Wbv7e8Z2pmR4Bfs8qDSQM4rn+WwWdKnl5wfwVcJyxZ0="; hash = "sha256-VA239AZjR/I9BlDEro59hTNMaa33SeAwr2TBLplv+I4=";
}; };
propagatedBuildInputs = [ propagatedBuildInputs = [

View file

@ -9,14 +9,14 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "onvif-zeep-async"; pname = "onvif-zeep-async";
version = "3.1.7"; version = "3.1.8";
format = "setuptools"; format = "setuptools";
disabled = pythonOlder "3.7"; disabled = pythonOlder "3.7";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
hash = "sha256-ra/1qKKmuWWvJCrr1uTCU5Awv5+GShgDHlHw0igLc4c="; hash = "sha256-UiONj4ANsB5l2/ypWWfUK5ELoLsnUuyrFeldgITwIo4=";
}; };
propagatedBuildInputs = [ propagatedBuildInputs = [

View file

@ -23,7 +23,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "pyatv"; pname = "pyatv";
version = "0.11.0"; version = "0.12.0";
format = "setuptools"; format = "setuptools";
disabled = pythonOlder "3.7"; disabled = pythonOlder "3.7";
@ -31,8 +31,8 @@ buildPythonPackage rec {
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "postlund"; owner = "postlund";
repo = pname; repo = pname;
rev = "v${version}"; rev = "refs/tags/v${version}";
hash = "sha256-HWr+Pu/tMuCDFC2mV3R/Wqe0PfVw/DDgEIYBRnfYx/I="; hash = "sha256-t7H4ut4atc2XDnpBzV03Q/OrCHMVmZk38r/iWcLKL7Q=";
}; };
postPatch = '' postPatch = ''

View file

@ -11,7 +11,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "pydeps"; pname = "pydeps";
version = "1.12.7"; version = "1.12.8";
format = "setuptools"; format = "setuptools";
disabled = pythonOlder "3.7"; disabled = pythonOlder "3.7";
@ -20,7 +20,7 @@ buildPythonPackage rec {
owner = "thebjorn"; owner = "thebjorn";
repo = pname; repo = pname;
rev = "refs/tags/v${version}"; rev = "refs/tags/v${version}";
hash = "sha256-D57IO+1KS/budIjScEjVKP/5IbEx9KSDS46URuymC4s="; hash = "sha256-6NxI67K1gw6VRO10T2o+5pwMsvCqIgMnHueLbg88XSQ=";
}; };
buildInputs = [ buildInputs = [

View file

@ -10,7 +10,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "pysigma-backend-insightidr"; pname = "pysigma-backend-insightidr";
version = "0.1.8"; version = "0.1.9";
format = "pyproject"; format = "pyproject";
disabled = pythonOlder "3.8"; disabled = pythonOlder "3.8";
@ -19,7 +19,7 @@ buildPythonPackage rec {
owner = "SigmaHQ"; owner = "SigmaHQ";
repo = "pySigma-backend-insightidr"; repo = "pySigma-backend-insightidr";
rev = "refs/tags/v${version}"; rev = "refs/tags/v${version}";
hash = "sha256-3Tr6WvYuHddc0vGb8li6hZLk2GgfXr67/T2AnYQ7qeo="; hash = "sha256-/oHwWe8EcE1CS/hOmzJm9smfRLS/wShfbSGqOuvp8rU=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -12,7 +12,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "python-otbr-api"; pname = "python-otbr-api";
version = "1.1.0"; version = "1.2.0";
format = "pyproject"; format = "pyproject";
disabled = pythonOlder "3.9"; disabled = pythonOlder "3.9";
@ -21,7 +21,7 @@ buildPythonPackage rec {
owner = "home-assistant-libs"; owner = "home-assistant-libs";
repo = pname; repo = pname;
rev = "refs/tags/${version}"; rev = "refs/tags/${version}";
hash = "sha256-0JPniehl4cnoTWgqmq1fMZwU8FFl2Zx4CF81az6iaxQ="; hash = "sha256-IPglUB+Xla+IjWzHhfG+SDHY/jucg46ppnhHBHKTEiE=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -11,7 +11,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "reolink-aio"; pname = "reolink-aio";
version = "0.5.15"; version = "0.5.16";
format = "setuptools"; format = "setuptools";
disabled = pythonOlder "3.9"; disabled = pythonOlder "3.9";
@ -20,7 +20,7 @@ buildPythonPackage rec {
owner = "starkillerOG"; owner = "starkillerOG";
repo = "reolink_aio"; repo = "reolink_aio";
rev = "refs/tags/${version}"; rev = "refs/tags/${version}";
hash = "sha256-YTBx0tMWSyy6A1OuTBmfEpRnZE4gHLIY5qFH9YL+YEo="; hash = "sha256-FyrTZqp4h4GOCxld+y3wDEfLOl6a6dCgs/LJetjmr8I=";
}; };
postPatch = '' postPatch = ''

View file

@ -11,7 +11,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "subarulink"; pname = "subarulink";
version = "0.7.6"; version = "0.7.6-1";
format = "setuptools"; format = "setuptools";
disabled = pythonOlder "3.7"; disabled = pythonOlder "3.7";
@ -20,7 +20,7 @@ buildPythonPackage rec {
owner = "G-Two"; owner = "G-Two";
repo = pname; repo = pname;
rev = "refs/tags/v${version}"; rev = "refs/tags/v${version}";
hash = "sha256-D2nwzj7uYL/v5Ew2+LfJBLH904Htam4Fa3Gs6t8Hbyo="; hash = "sha256-/VaGiOnPyTHSwkxlQtwyIZohD3QK897kapmM3S8bHtM=";
}; };
propagatedBuildInputs = [ propagatedBuildInputs = [

View file

@ -22,7 +22,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "textual"; pname = "textual";
version = "0.24.1"; version = "0.26.0";
format = "pyproject"; format = "pyproject";
disabled = pythonOlder "3.7"; disabled = pythonOlder "3.7";
@ -31,7 +31,7 @@ buildPythonPackage rec {
owner = "Textualize"; owner = "Textualize";
repo = pname; repo = pname;
rev = "refs/tags/v${version}"; rev = "refs/tags/v${version}";
hash = "sha256-nFio45LxoVQK/IzVo2ZHGYzG6bHHr3yvA7P3kMZOUso="; hash = "sha256-l4zSSROeI55hFnf0C64bbAB+1cATUkS59Uybf7ZmSfs=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -0,0 +1,21 @@
{ buildPythonPackage, lib, fetchFromGitHub }:
buildPythonPackage rec {
pname = "torrent_parser";
version = "0.4.1";
# No tarballs on Pypi
src = fetchFromGitHub {
owner = "7sDream";
repo = "torrent_parser";
rev = "v${version}";
sha256 = "sha256-zM738r3o9dGZYoWLN7fM4E06m6YPcAODEkgDS6wU/Sc=";
};
meta = {
description = "A .torrent file parser and creator for both Python 2 and 3";
homepage = "https://github.com/7sDream/torrent_parser";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ ];
};
}

View file

@ -7,15 +7,15 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "uptime-kuma-api"; pname = "uptime-kuma-api";
version = "0.13.0"; version = "1.0.1";
format = "setuptools"; format = "setuptools";
disabled = pythonOlder "3.6"; disabled = pythonOlder "3.7";
src = fetchPypi { src = fetchPypi {
pname = "uptime_kuma_api"; pname = "uptime_kuma_api";
inherit version; inherit version;
hash = "sha256-MoHE6Y7x1F1l70tuCHNIPt+vpqfJ00EUIMHnE4476Co="; hash = "sha256-6Cwo71pgwBk5B6MaFFs9XlbocJLL/s4+7m7Gi13ddlM=";
}; };
propagatedBuildInputs = [ propagatedBuildInputs = [

View file

@ -3,7 +3,7 @@
writeScript, common-updater-scripts, coreutils, git, gnused, nix, rebar3-nix }: writeScript, common-updater-scripts, coreutils, git, gnused, nix, rebar3-nix }:
let let
version = "3.21.0"; version = "3.22.0";
owner = "erlang"; owner = "erlang";
deps = import ./rebar-deps.nix { inherit fetchFromGitHub fetchgit fetchHex; }; deps = import ./rebar-deps.nix { inherit fetchFromGitHub fetchgit fetchHex; };
rebar3 = stdenv.mkDerivation rec { rebar3 = stdenv.mkDerivation rec {
@ -16,7 +16,7 @@ let
inherit owner; inherit owner;
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "QRQlqzYxRD4W63CawXBQ9ysPHzHQ5JrfjPqAivFyJAM="; sha256 = "OCd9wGwnwOuv/Ojf1S4ALLn73AGKuXlRtukIiTSE2rs=";
}; };
buildInputs = [ erlang ]; buildInputs = [ erlang ];

View file

@ -4,7 +4,7 @@
}: }:
let let
version = "0.7.0"; version = "0.8.0";
in in
buildGoModule { buildGoModule {
@ -15,12 +15,13 @@ buildGoModule {
owner = "agola-io"; owner = "agola-io";
repo = "agola"; repo = "agola";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-AiD7mVogWk/TOYy7Ed1aT31h1kbrRwseue5qc3wLOCI="; hash = "sha256-nU04MVkUC+m6Ga4qDUH9KrA0zbYmttAicpvdxbaBG0Y=";
}; };
vendorSha256 = "sha256-Y3ck7Qdo9uq3YuLzZUe+RZkKQqWpSko3q+f4bfkSz6g="; vendorHash = "sha256-k3Sip9CqTGRTWxr3RzZf0jCrm4AfUrpY/wSTmHy+yik=";
ldflags = [ ldflags = [
"-s"
"-w" "-w"
"-X agola.io/agola/cmd.Version=${version}" "-X agola.io/agola/cmd.Version=${version}"
]; ];

View file

@ -24,13 +24,6 @@ rustPlatform.buildRustPackage rec {
cargoSha256 = "sha256-1+cvOhDeH9vx/8J1RwKLPdkBmqBKFmbNXv3H44pZfj0="; cargoSha256 = "sha256-1+cvOhDeH9vx/8J1RwKLPdkBmqBKFmbNXv3H44pZfj0=";
# nativeBuildInputs = [
# pkg-config
# # needed on top of LIBCLANG_PATH to compile rquickjs
# llvmPackages.clang
# ];
buildInputs = [ ] buildInputs = [ ]
++ lib.optionals stdenv.isDarwin [ Security ]; ++ lib.optionals stdenv.isDarwin [ Security ];

View file

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "dtools"; pname = "dtools";
version = "2.095.1"; version = "2.103.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "dlang"; owner = "dlang";
repo = "tools"; repo = "tools";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256:0rdfk3mh3fjrb0h8pr8skwlq6ac9hdl1fkrkdl7n1fa2806b740b"; sha256 = "sha256-XM4gUxcarQCOBR8W/o0iWAI54PyLDkH6CsDce22Cnu4=";
name = "dtools"; name = "dtools";
}; };

View file

@ -2,18 +2,18 @@
buildGoModule rec { buildGoModule rec {
pname = "frugal"; pname = "frugal";
version = "3.16.19"; version = "3.16.21";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Workiva"; owner = "Workiva";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-PEWjZeFIEfnAGVsv+oyF4R08FI+LzKBWlrlBmiXhJCQ="; sha256 = "sha256-iNj3E5JtvOHAiEC+81KnAb32TWi+Zq8Av24oLm01ty4=";
}; };
subPackages = [ "." ]; subPackages = [ "." ];
vendorHash = "sha256-OnPQZk+VpOx97mSNRx9lGtC03OXGGz9JwUSZYX0Ofkc="; vendorHash = "sha256-29LwvekhevOn/1zrtQEZWqeQMEAN2xPxSRzas/5EhVM=";
meta = with lib; { meta = with lib; {
description = "Thrift improved"; description = "Thrift improved";

View file

@ -2,15 +2,15 @@
buildGoModule rec { buildGoModule rec {
pname = "ginkgo"; pname = "ginkgo";
version = "2.9.4"; version = "2.9.5";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "onsi"; owner = "onsi";
repo = "ginkgo"; repo = "ginkgo";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-groih0LxtmB8k4/vfw2Ivtzm+SOyQqK1o7XASNplFvQ="; sha256 = "sha256-1Hb8pCvPs/L5UU280XwwEOnQ1CjJjgw0+GdCbtLkIpg=";
}; };
vendorHash = "sha256-Rm5fpiTZMo/B9+yIpmEniJVRfKgHjpFIagELEjgFYwc="; vendorHash = "sha256-IxyPRUS7aqkfZ+hjtuopCd95dgiTgVdg1thSiTBZArg=";
# integration tests expect more file changes # integration tests expect more file changes
# types tests are missing CodeLocation # types tests are missing CodeLocation

View file

@ -2,16 +2,16 @@
buildGoModule rec { buildGoModule rec {
pname = "go-toml"; pname = "go-toml";
version = "2.0.7"; version = "2.0.8";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "pelletier"; owner = "pelletier";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-bGLJSzSwcoKRMRwLSmGEWoQaC9NVwcKyFKpcEw+/Nag="; sha256 = "sha256-pMy/cYyB9ncOuYysX0a9PmTuJdIrMcKL///57bniixI=";
}; };
vendorHash = "sha256-MMCyFKqsL9aSQqK9VtPzUbgfLTFpzD5g8QYx8qIwktg="; vendorHash = "sha256-44mxDswHIfVfAyvtyDHS4MnHCTPRlUvdhzHALICUJR4=";
excludedPackages = [ "cmd/gotoml-test-decoder" "cmd/tomltestgen" ]; excludedPackages = [ "cmd/gotoml-test-decoder" "cmd/tomltestgen" ];

View file

@ -53,13 +53,13 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "godot"; pname = "godot";
version = "4.0.2-stable"; version = "4.0.3-stable";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "godotengine"; owner = "godotengine";
repo = "godot"; repo = "godot";
rev = version; rev = version;
hash = "sha256-kFIpY8kHa8ds/JgYWcUMB4RhwcJDebfeWFnI3BkFWiI="; hash = "sha256-g9+CV3HsiJqiSJpZvK0N7BqKzp2Pvi6otjRLsFdmWGk=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -2,16 +2,16 @@
buildGoModule rec { buildGoModule rec {
pname = "ls-lint"; pname = "ls-lint";
version = "1.11.2"; version = "2.0.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "loeffel-io"; owner = "loeffel-io";
repo = "ls-lint"; repo = "ls-lint";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-mt1SvRHtAA0lChZ//8XIQGDPg1l1EOMkPIAe8YKhMSs="; sha256 = "sha256-eEP/l3vdObdxUYIp8eSSCn3W0ypcmykbwQTDP083MVE=";
}; };
vendorSha256 = "sha256-OEwN9kj1npI+H7DY+e3tl5TIY/qr4y2CgAV5fwNA9l4="; vendorHash = "sha256-nSHhU6z3ItCKBZy8ENBcAkXqSVo3DU6hAyezQczKShM=";
meta = with lib; { meta = with lib; {
description = "An extremely fast file and directory name linter"; description = "An extremely fast file and directory name linter";

View file

@ -2,16 +2,16 @@
buildGoModule rec { buildGoModule rec {
pname = "terracognita"; pname = "terracognita";
version = "0.8.3"; version = "0.8.4";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "cycloidio"; owner = "cycloidio";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
hash = "sha256-ipPJMh88R9Ddo1QzN+No9H2bBsLSPARUI2HRaYvK6jc="; hash = "sha256-pPY8y+pQdk9/F7dnUBz/y4lvcR1k/EClywcZATArZVA=";
}; };
vendorHash = "sha256-7fGqChud9dcgA9BXyJysUgvvG7zI+ByA0oFlSMd+rps="; vendorHash = "sha256-ApnJH0uIClXbfXK+k4t9Tcayc2mfndoG9iMqZY3iWys=";
doCheck = false; doCheck = false;

View file

@ -71,13 +71,13 @@ let
sha256 = "0jnqsv6pqp5b5g7lcjwgd75zqqvcwcl5a32zi03zg1kvj79p5gxs"; sha256 = "0jnqsv6pqp5b5g7lcjwgd75zqqvcwcl5a32zi03zg1kvj79p5gxs";
}; };
opam = fetchurl { opam = fetchurl {
url = "https://github.com/ocaml/opam/archive/2.1.4.zip"; url = "https://github.com/ocaml/opam/archive/2.1.5.zip";
sha256 = "0zp8sb75pw1kyqlm7bsiagfwq46mv41mxh5q2prn2cwg6xri2wrg"; sha256 = "0s8r5gfs2zsyfn3jzqnvns3g0rkik3pw628n0dik55fwq3zjgg4a";
}; };
}; };
in stdenv.mkDerivation { in stdenv.mkDerivation {
pname = "opam"; pname = "opam";
version = "2.1.4"; version = "2.1.5";
strictDeps = true; strictDeps = true;
@ -144,4 +144,4 @@ in stdenv.mkDerivation {
platforms = platforms.all; platforms = platforms.all;
}; };
} }
# Generated by: ./opam.nix.pl -v 2.1.4 -p opam-shebangs.patch # Generated by: ./opam.nix.pl -v 2.1.5 -p opam-shebangs.patch

View file

@ -2,13 +2,13 @@
buildGoModule rec { buildGoModule rec {
pname = "okteto"; pname = "okteto";
version = "2.15.2"; version = "2.15.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "okteto"; owner = "okteto";
repo = "okteto"; repo = "okteto";
rev = version; rev = version;
hash = "sha256-PxCVBi/GMzyTs9GfIAAPHNbinexw4guSO8ZsyZIOmr4="; hash = "sha256-BzyKmM5Yp9zdNonkDZoJBAmy8jSDwt85Wr9/1nbD7V8=";
}; };
vendorHash = "sha256-dZ6gzW5R5na5qcHFQqQvKfYb0Bu0kVvVMOaRdtTgkhE="; vendorHash = "sha256-dZ6gzW5R5na5qcHFQqQvKfYb0Bu0kVvVMOaRdtTgkhE=";

View file

@ -13,9 +13,7 @@ rustPlatform.buildRustPackage rec {
cargoSha256 = "1lam4gwzcj6w0pyxf61l2cpbvvf5gmj2gwi8dangnhd60qhlnvrx"; cargoSha256 = "1lam4gwzcj6w0pyxf61l2cpbvvf5gmj2gwi8dangnhd60qhlnvrx";
nativeBuildInputs = [ llvmPackages.clang ]; nativeBuildInputs = [ llvmPackages.clang rustPlatform.bindgenHook ];
buildInputs = [ llvmPackages.libclang ];
LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib";
postInstall = '' postInstall = ''
mkdir -p $out/share/kak/autoload/plugins mkdir -p $out/share/kak/autoload/plugins

Some files were not shown because too many files have changed in this diff Show more