Merge master into staging-next
This commit is contained in:
+1
-1
@@ -90,7 +90,7 @@ indent_style = unset
|
||||
insert_final_newline = unset
|
||||
trim_trailing_whitespace = unset
|
||||
|
||||
[pkgs/development/compilers/elm/registry.dat]
|
||||
[registry.dat]
|
||||
end_of_line = unset
|
||||
insert_final_newline = unset
|
||||
|
||||
|
||||
@@ -2375,6 +2375,12 @@
|
||||
githubId = 97070581;
|
||||
name = "averagebit";
|
||||
};
|
||||
averdow = {
|
||||
email = "aaron@verdow.com";
|
||||
github = "AaronVerDow";
|
||||
githubId = 2530548;
|
||||
name = "Aaron VerDow";
|
||||
};
|
||||
averelld = {
|
||||
email = "averell+nixos@rxd4.com";
|
||||
github = "averelld";
|
||||
@@ -10823,6 +10829,13 @@
|
||||
githubId = 42114389;
|
||||
name = "Jerry Starke";
|
||||
};
|
||||
jervw = {
|
||||
email = "jervw@pm.me";
|
||||
github = "jervw";
|
||||
githubId = 53620688;
|
||||
name = "Jere Vuola";
|
||||
keys = [ { fingerprint = "56C2 5B5B 2075 6352 B4B0 E17E F188 3717 47DA 5895"; } ];
|
||||
};
|
||||
jeschli = {
|
||||
email = "jeschli@gmail.com";
|
||||
github = "0mbi";
|
||||
|
||||
@@ -1608,6 +1608,7 @@
|
||||
./services/web-servers/darkhttpd.nix
|
||||
./services/web-servers/fcgiwrap.nix
|
||||
./services/web-servers/garage.nix
|
||||
./services/web-servers/h2o/default.nix
|
||||
./services/web-servers/hitch/default.nix
|
||||
./services/web-servers/jboss/default.nix
|
||||
./services/web-servers/keter
|
||||
|
||||
@@ -855,12 +855,16 @@ in
|
||||
User = "kanidm";
|
||||
Group = "kanidm";
|
||||
|
||||
BindPaths = [
|
||||
# To create the socket
|
||||
"/run/kanidmd:/run/kanidmd"
|
||||
# To store backups
|
||||
cfg.serverSettings.online_backup.path
|
||||
];
|
||||
BindPaths =
|
||||
[
|
||||
# To create the socket
|
||||
"/run/kanidmd:/run/kanidmd"
|
||||
# To store backups
|
||||
cfg.serverSettings.online_backup.path
|
||||
]
|
||||
++ optional (
|
||||
cfg.enablePam && cfg.unixSettings ? home_mount_prefix
|
||||
) cfg.unixSettings.home_mount_prefix;
|
||||
|
||||
AmbientCapabilities = [ "CAP_NET_BIND_SERVICE" ];
|
||||
CapabilityBoundingSet = [ "CAP_NET_BIND_SERVICE" ];
|
||||
|
||||
@@ -5,9 +5,17 @@
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
mkEnableOption
|
||||
mkPackageOption
|
||||
mkOption
|
||||
mkDefault
|
||||
mkIf
|
||||
types
|
||||
literalExpression
|
||||
;
|
||||
|
||||
cfg = config.services.mobilizon;
|
||||
|
||||
user = "mobilizon";
|
||||
@@ -20,34 +28,29 @@ let
|
||||
# Make a package containing launchers with the correct envirenment, instead of
|
||||
# setting it with systemd services, so that the user can also use them without
|
||||
# troubles
|
||||
launchers = pkgs.stdenv.mkDerivation rec {
|
||||
pname = "${cfg.package.pname}-launchers";
|
||||
inherit (cfg.package) version;
|
||||
launchers =
|
||||
pkgs.runCommand "${cfg.package.pname}-launchers-${cfg.package.version}"
|
||||
{
|
||||
src = cfg.package;
|
||||
nativeBuildInputs = with pkgs; [ makeWrapper ];
|
||||
}
|
||||
''
|
||||
mkdir -p $out/bin
|
||||
|
||||
src = cfg.package;
|
||||
makeWrapper \
|
||||
$src/bin/mobilizon \
|
||||
$out/bin/mobilizon \
|
||||
--run '. ${secretEnvFile}' \
|
||||
--set MOBILIZON_CONFIG_PATH "${configFile}" \
|
||||
--set-default RELEASE_TMP "/tmp"
|
||||
|
||||
nativeBuildInputs = with pkgs; [ makeWrapper ];
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
|
||||
makeWrapper \
|
||||
$src/bin/mobilizon \
|
||||
$out/bin/mobilizon \
|
||||
--run '. ${secretEnvFile}' \
|
||||
--set MOBILIZON_CONFIG_PATH "${configFile}" \
|
||||
--set-default RELEASE_TMP "/tmp"
|
||||
|
||||
makeWrapper \
|
||||
$src/bin/mobilizon_ctl \
|
||||
$out/bin/mobilizon_ctl \
|
||||
--run '. ${secretEnvFile}' \
|
||||
--set MOBILIZON_CONFIG_PATH "${configFile}" \
|
||||
--set-default RELEASE_TMP "/tmp"
|
||||
'';
|
||||
};
|
||||
makeWrapper \
|
||||
$src/bin/mobilizon_ctl \
|
||||
$out/bin/mobilizon_ctl \
|
||||
--run '. ${secretEnvFile}' \
|
||||
--set MOBILIZON_CONFIG_PATH "${configFile}" \
|
||||
--set-default RELEASE_TMP "/tmp"
|
||||
'';
|
||||
|
||||
repoSettings = cfg.settings.":mobilizon"."Mobilizon.Storage.Repo";
|
||||
instanceSettings = cfg.settings.":mobilizon".":instance";
|
||||
@@ -424,32 +427,32 @@ in
|
||||
virtualHosts."${hostname}" = {
|
||||
enableACME = lib.mkDefault true;
|
||||
forceSSL = lib.mkDefault true;
|
||||
extraConfig = ''
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
'';
|
||||
locations."/" = {
|
||||
inherit proxyPass;
|
||||
proxyWebsockets = true;
|
||||
recommendedProxySettings = lib.mkDefault true;
|
||||
extraConfig = ''
|
||||
expires off;
|
||||
add_header Cache-Control "public, max-age=0, s-maxage=0, must-revalidate" always;
|
||||
'';
|
||||
};
|
||||
locations."~ ^/(js|css|img)" = {
|
||||
locations."~ ^/(assets|img)" = {
|
||||
root = "${cfg.package}/lib/mobilizon-${cfg.package.version}/priv/static";
|
||||
extraConfig = ''
|
||||
etag off;
|
||||
access_log off;
|
||||
add_header Cache-Control "public, max-age=31536000, immutable";
|
||||
add_header Cache-Control "public, max-age=31536000, s-maxage=31536000, immutable";
|
||||
'';
|
||||
};
|
||||
locations."~ ^/(media|proxy)" = {
|
||||
inherit proxyPass;
|
||||
recommendedProxySettings = lib.mkDefault true;
|
||||
# Combination of HTTP/1.1 and disabled request buffering is
|
||||
# needed to directly forward chunked responses
|
||||
extraConfig = ''
|
||||
etag off;
|
||||
proxy_http_version 1.1;
|
||||
proxy_request_buffering off;
|
||||
access_log off;
|
||||
add_header Cache-Control "public, max-age=31536000, immutable";
|
||||
add_header Cache-Control "public, max-age=31536000, s-maxage=31536000, immutable";
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
@@ -0,0 +1,263 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
# TODO: ACME
|
||||
# TODO: Gems includes for Mruby
|
||||
# TODO: Recommended options
|
||||
let
|
||||
cfg = config.services.h2o;
|
||||
|
||||
inherit (lib)
|
||||
literalExpression
|
||||
mkDefault
|
||||
mkEnableOption
|
||||
mkIf
|
||||
mkOption
|
||||
types
|
||||
;
|
||||
|
||||
settingsFormat = pkgs.formats.yaml { };
|
||||
|
||||
hostsConfig = lib.concatMapAttrs (
|
||||
name: value:
|
||||
let
|
||||
port = {
|
||||
HTTP = lib.attrByPath [ "http" "port" ] cfg.defaultHTTPListenPort value;
|
||||
TLS = lib.attrByPath [ "tls" "port" ] cfg.defaultTLSListenPort value;
|
||||
};
|
||||
serverName = if value.serverName != null then value.serverName else name;
|
||||
in
|
||||
# HTTP settings
|
||||
lib.optionalAttrs (value.tls == null || value.tls.policy == "add") {
|
||||
"${serverName}:${builtins.toString port.HTTP}" = value.settings // {
|
||||
listen.port = port.HTTP;
|
||||
};
|
||||
}
|
||||
# Redirect settings
|
||||
// lib.optionalAttrs (value.tls != null && value.tls.policy == "force") {
|
||||
"${serverName}:${builtins.toString port.HTTP}" = {
|
||||
listen.port = port.HTTP;
|
||||
paths."/" = {
|
||||
redirect = {
|
||||
status = value.tls.redirectCode;
|
||||
url = "https://${serverName}:${builtins.toString port.TLS}";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
# TLS settings
|
||||
//
|
||||
lib.optionalAttrs
|
||||
(
|
||||
value.tls != null
|
||||
&& builtins.elem value.tls.policy [
|
||||
"add"
|
||||
"only"
|
||||
"force"
|
||||
]
|
||||
)
|
||||
{
|
||||
"${serverName}:${builtins.toString port.TLS}" = value.settings // {
|
||||
listen =
|
||||
let
|
||||
identity = value.tls.identity;
|
||||
in
|
||||
{
|
||||
port = port.TLS;
|
||||
ssl = value.tls.extraSettings or { } // {
|
||||
inherit identity;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
) cfg.hosts;
|
||||
|
||||
h2oConfig = settingsFormat.generate "h2o.yaml" (
|
||||
lib.recursiveUpdate { hosts = hostsConfig; } cfg.settings
|
||||
);
|
||||
in
|
||||
{
|
||||
options = {
|
||||
services.h2o = {
|
||||
enable = mkEnableOption "H2O web server";
|
||||
|
||||
user = mkOption {
|
||||
type = types.nonEmptyStr;
|
||||
default = "h2o";
|
||||
description = "User running H2O service";
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.nonEmptyStr;
|
||||
default = "h2o";
|
||||
description = "Group running H2O services";
|
||||
};
|
||||
|
||||
package = lib.mkPackageOption pkgs "h2o" {
|
||||
example = ''
|
||||
pkgs.h2o.override {
|
||||
withMruby = true;
|
||||
};
|
||||
'';
|
||||
};
|
||||
|
||||
defaultHTTPListenPort = mkOption {
|
||||
type = types.port;
|
||||
default = 80;
|
||||
description = ''
|
||||
If hosts do not specify listen.port, use these ports for HTTP by default.
|
||||
'';
|
||||
example = 8080;
|
||||
};
|
||||
|
||||
defaultTLSListenPort = mkOption {
|
||||
type = types.port;
|
||||
default = 443;
|
||||
description = ''
|
||||
If hosts do not specify listen.port, use these ports for SSL by default.
|
||||
'';
|
||||
example = 8443;
|
||||
};
|
||||
|
||||
mode = mkOption {
|
||||
type =
|
||||
with types;
|
||||
nullOr (enum [
|
||||
"daemon"
|
||||
"master"
|
||||
"worker"
|
||||
"test"
|
||||
]);
|
||||
default = "master";
|
||||
description = "Operating mode of H2O";
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
type = settingsFormat.type;
|
||||
description = "Configuration for H2O (see <https://h2o.examp1e.net/configure.html>)";
|
||||
};
|
||||
|
||||
hosts = mkOption {
|
||||
type = types.attrsOf (
|
||||
types.submodule (
|
||||
import ./vhost-options.nix {
|
||||
inherit config lib;
|
||||
}
|
||||
)
|
||||
);
|
||||
default = { };
|
||||
description = ''
|
||||
The `hosts` config to be merged with the settings.
|
||||
|
||||
Note that unlike YAML used for H2O, Nix will not support duplicate
|
||||
keys to, for instance, have multiple listens in a host block; use the
|
||||
virtual host options in like `http` & `tls` or use `$HOST:$PORT`
|
||||
keys if manually specifying config.
|
||||
'';
|
||||
example =
|
||||
literalExpression
|
||||
# nix
|
||||
''
|
||||
{
|
||||
"hydra.example.com" = {
|
||||
tls = {
|
||||
policy = "force";
|
||||
indentity = [
|
||||
{
|
||||
key-file = "/path/to/key";
|
||||
certificate-file = "/path/to/cert";
|
||||
};
|
||||
];
|
||||
extraSettings = {
|
||||
minimum-version = "TLSv1.3";
|
||||
};
|
||||
};
|
||||
settings = {
|
||||
paths."/" = {
|
||||
"file:dir" = "/var/www/default";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
users = {
|
||||
users.${cfg.user} =
|
||||
{
|
||||
group = cfg.group;
|
||||
}
|
||||
// lib.optionalAttrs (cfg.user == "h2o") {
|
||||
isSystemUser = true;
|
||||
};
|
||||
groups.${cfg.group} = { };
|
||||
};
|
||||
|
||||
systemd.services.h2o = {
|
||||
description = "H2O web server service";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network.target" ];
|
||||
|
||||
serviceConfig = {
|
||||
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||
ExecStop = "${pkgs.coreutils}/bin/kill -s QUIT $MAINPID";
|
||||
User = cfg.user;
|
||||
Restart = "always";
|
||||
RestartSec = "10s";
|
||||
RuntimeDirectory = "h2o";
|
||||
RuntimeDirectoryMode = "0750";
|
||||
CacheDirectory = "h2o";
|
||||
CacheDirectoryMode = "0750";
|
||||
LogsDirectory = "h2o";
|
||||
LogsDirectoryMode = "0750";
|
||||
ProtectSystem = "strict";
|
||||
ProtectHome = mkDefault true;
|
||||
PrivateTmp = true;
|
||||
PrivateDevices = true;
|
||||
ProtectHostname = true;
|
||||
ProtectClock = true;
|
||||
ProtectKernelTunables = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectKernelLogs = true;
|
||||
ProtectControlGroups = true;
|
||||
RestrictAddressFamilies = [
|
||||
"AF_UNIX"
|
||||
"AF_INET"
|
||||
"AF_INET6"
|
||||
];
|
||||
RestrictNamespaces = true;
|
||||
LockPersonality = true;
|
||||
RestrictRealtime = true;
|
||||
RestrictSUIDSGID = true;
|
||||
RemoveIPC = true;
|
||||
PrivateMounts = true;
|
||||
AmbientCapabilities = [ "CAP_NET_BIND_SERVICE" ];
|
||||
CapabilitiesBoundingSet = [ "CAP_NET_BIND_SERVICE" ];
|
||||
};
|
||||
|
||||
script =
|
||||
let
|
||||
args =
|
||||
[
|
||||
"--conf"
|
||||
"${h2oConfig}"
|
||||
]
|
||||
++ lib.optionals (cfg.mode != null) [
|
||||
"--mode"
|
||||
cfg.mode
|
||||
];
|
||||
in
|
||||
''
|
||||
${lib.getExe cfg.package} ${lib.strings.escapeShellArgs args}
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
@@ -0,0 +1,151 @@
|
||||
{ config, lib, ... }:
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
literalExpression
|
||||
mkOption
|
||||
types
|
||||
;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
serverName = mkOption {
|
||||
type = types.nullOr types.nonEmptyStr;
|
||||
default = null;
|
||||
description = ''
|
||||
Server name to be used for this virtual host. Defaults to attribute
|
||||
name in hosts.
|
||||
'';
|
||||
example = "example.org";
|
||||
};
|
||||
|
||||
http = mkOption {
|
||||
type = types.nullOr (
|
||||
types.submodule {
|
||||
options = {
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = config.services.h2o.defaultHTTPListenPort;
|
||||
defaultText = literalExpression ''
|
||||
config.services.h2o.defaultHTTPListenPort
|
||||
'';
|
||||
description = ''
|
||||
Override the default HTTP port for this virtual host.
|
||||
'';
|
||||
example = literalExpression "8080";
|
||||
};
|
||||
};
|
||||
}
|
||||
);
|
||||
default = null;
|
||||
description = "HTTP options for virtual host";
|
||||
};
|
||||
|
||||
tls = mkOption {
|
||||
type = types.nullOr (
|
||||
types.submodule {
|
||||
options = {
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = config.services.h2o.defaultTLSListenPort;
|
||||
defaultText = literalExpression ''
|
||||
config.services.h2o.defaultTLSListenPort
|
||||
'';
|
||||
description = ''
|
||||
Override the default TLS port for this virtual host.";
|
||||
'';
|
||||
example = 8443;
|
||||
};
|
||||
policy = mkOption {
|
||||
type = types.enum [
|
||||
"add"
|
||||
"only"
|
||||
"force"
|
||||
];
|
||||
description = ''
|
||||
`add` will additionally listen for TLS connections. `only` will
|
||||
disable TLS connections. `force` will redirect non-TLS traffic
|
||||
to the TLS connection.
|
||||
'';
|
||||
example = "force";
|
||||
};
|
||||
redirectCode = mkOption {
|
||||
type = types.ints.between 300 399;
|
||||
default = 301;
|
||||
example = 308;
|
||||
description = ''
|
||||
HTTP status used by `globalRedirect` & `forceSSL`. Possible
|
||||
usecases include temporary (302, 307) redirects, keeping the
|
||||
request method & body (307, 308), or explicitly resetting the
|
||||
method to GET (303). See
|
||||
<https://developer.mozilla.org/en-US/docs/Web/HTTP/Redirections>.
|
||||
'';
|
||||
};
|
||||
identity = mkOption {
|
||||
type = types.nonEmptyListOf (
|
||||
types.submodule {
|
||||
options = {
|
||||
key-file = mkOption {
|
||||
type = types.path;
|
||||
description = "Path to key file";
|
||||
};
|
||||
certificate-file = mkOption {
|
||||
type = types.path;
|
||||
description = "Path to certificate file";
|
||||
};
|
||||
};
|
||||
}
|
||||
);
|
||||
default = null;
|
||||
description = ''
|
||||
Key / certificate pairs for the virtual host.
|
||||
'';
|
||||
example =
|
||||
literalExpression
|
||||
# nix
|
||||
''
|
||||
{
|
||||
indentities = [
|
||||
{
|
||||
key-file = "/path/to/rsa.key";
|
||||
certificate-file = "/path/to/rsa.crt";
|
||||
}
|
||||
{
|
||||
key-file = "/path/to/ecdsa.key";
|
||||
certificate-file = "/path/to/ecdsa.crt";
|
||||
}
|
||||
];
|
||||
}
|
||||
'';
|
||||
};
|
||||
extraSettings = mkOption {
|
||||
type = types.nullOr types.attrs;
|
||||
default = null;
|
||||
description = ''
|
||||
Additional TLS/SSL-related configuration options.
|
||||
'';
|
||||
example =
|
||||
literalExpression
|
||||
# nix
|
||||
''
|
||||
{
|
||||
minimum-version = "TLSv1.3";
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
);
|
||||
default = null;
|
||||
description = "TLS options for virtual host";
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
type = types.attrs;
|
||||
description = ''
|
||||
Attrset to be transformed into YAML for host config. Note that the HTTP
|
||||
/ TLS configurations will override these config values.
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -420,6 +420,7 @@ in {
|
||||
guacamole-server = handleTest ./guacamole-server.nix {};
|
||||
guix = handleTest ./guix {};
|
||||
gvisor = handleTest ./gvisor.nix {};
|
||||
h2o = discoverTests (import ./web-servers/h2o { inherit handleTestOn; });
|
||||
hadoop = import ./hadoop { inherit handleTestOn; package=pkgs.hadoop; };
|
||||
hadoop_3_3 = import ./hadoop { inherit handleTestOn; package=pkgs.hadoop_3_3; };
|
||||
hadoop2 = import ./hadoop { inherit handleTestOn; package=pkgs.hadoop2; };
|
||||
@@ -621,7 +622,7 @@ in {
|
||||
misc = handleTest ./misc.nix {};
|
||||
misskey = handleTest ./misskey.nix {};
|
||||
mjolnir = handleTest ./matrix/mjolnir.nix {};
|
||||
mobilizon = handleTest ./mobilizon.nix {};
|
||||
mobilizon = runTest ./mobilizon.nix;
|
||||
mod_perl = handleTest ./mod_perl.nix {};
|
||||
molly-brown = handleTest ./molly-brown.nix {};
|
||||
mollysocket = handleTest ./mollysocket.nix { };
|
||||
|
||||
+40
-42
@@ -1,49 +1,47 @@
|
||||
import ./make-test-python.nix (
|
||||
{ lib, ... }:
|
||||
let
|
||||
certs = import ./common/acme/server/snakeoil-certs.nix;
|
||||
mobilizonDomain = certs.domain;
|
||||
port = 41395;
|
||||
in
|
||||
{ lib, ... }:
|
||||
let
|
||||
certs = import ./common/acme/server/snakeoil-certs.nix;
|
||||
mobilizonDomain = certs.domain;
|
||||
port = 41395;
|
||||
in
|
||||
|
||||
{
|
||||
name = "mobilizon";
|
||||
meta.maintainers = with lib.maintainers; [
|
||||
minijackson
|
||||
erictapen
|
||||
];
|
||||
{
|
||||
name = "mobilizon";
|
||||
meta.maintainers = with lib.maintainers; [
|
||||
minijackson
|
||||
erictapen
|
||||
];
|
||||
|
||||
nodes.server =
|
||||
{ ... }:
|
||||
{
|
||||
services.mobilizon = {
|
||||
enable = true;
|
||||
settings = {
|
||||
":mobilizon" = {
|
||||
":instance" = {
|
||||
name = "Test Mobilizon";
|
||||
hostname = mobilizonDomain;
|
||||
};
|
||||
"Mobilizon.Web.Endpoint".http.port = port;
|
||||
nodes.server =
|
||||
{ ... }:
|
||||
{
|
||||
services.mobilizon = {
|
||||
enable = true;
|
||||
settings = {
|
||||
":mobilizon" = {
|
||||
":instance" = {
|
||||
name = "Test Mobilizon";
|
||||
hostname = mobilizonDomain;
|
||||
};
|
||||
"Mobilizon.Web.Endpoint".http.port = port;
|
||||
};
|
||||
};
|
||||
|
||||
security.pki.certificateFiles = [ certs.ca.cert ];
|
||||
|
||||
services.nginx.virtualHosts."${mobilizonDomain}" = {
|
||||
enableACME = lib.mkForce false;
|
||||
sslCertificate = certs.${mobilizonDomain}.cert;
|
||||
sslCertificateKey = certs.${mobilizonDomain}.key;
|
||||
};
|
||||
|
||||
networking.hosts."::1" = [ mobilizonDomain ];
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
server.wait_for_unit("mobilizon.service")
|
||||
server.wait_for_open_port(${toString port})
|
||||
server.succeed("curl --fail https://${mobilizonDomain}/")
|
||||
'';
|
||||
}
|
||||
)
|
||||
security.pki.certificateFiles = [ certs.ca.cert ];
|
||||
|
||||
services.nginx.virtualHosts."${mobilizonDomain}" = {
|
||||
enableACME = lib.mkForce false;
|
||||
sslCertificate = certs.${mobilizonDomain}.cert;
|
||||
sslCertificateKey = certs.${mobilizonDomain}.key;
|
||||
};
|
||||
|
||||
networking.hosts."::1" = [ mobilizonDomain ];
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
server.wait_for_unit("mobilizon.service")
|
||||
server.wait_for_open_port(${toString port})
|
||||
server.succeed("curl --fail https://${mobilizonDomain}/")
|
||||
'';
|
||||
}
|
||||
|
||||
@@ -0,0 +1,138 @@
|
||||
import ../../make-test-python.nix (
|
||||
{ lib, pkgs, ... }:
|
||||
|
||||
# Tests basics such as TLS, creating a mime-type & serving Unicode characters.
|
||||
|
||||
let
|
||||
domain = {
|
||||
HTTP = "h2o.local";
|
||||
TLS = "acme.test";
|
||||
};
|
||||
|
||||
port = {
|
||||
HTTP = 8080;
|
||||
TLS = 8443;
|
||||
};
|
||||
|
||||
sawatdi_chao_lok = "สวัสดีชาวโลก";
|
||||
|
||||
hello_world_txt = pkgs.writeTextFile {
|
||||
name = "/hello_world.txt";
|
||||
text = sawatdi_chao_lok;
|
||||
};
|
||||
|
||||
hello_world_rst = pkgs.writeTextFile {
|
||||
name = "/hello_world.rst";
|
||||
text = # rst
|
||||
''
|
||||
====================
|
||||
Thaiger Sprint 2025‼
|
||||
====================
|
||||
|
||||
${sawatdi_chao_lok}
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
name = "h2o-basic";
|
||||
|
||||
meta = {
|
||||
maintainers = with lib.maintainers; [ toastal ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
server =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
services.h2o = {
|
||||
enable = true;
|
||||
defaultHTTPListenPort = port.HTTP;
|
||||
defaultTLSListenPort = port.TLS;
|
||||
hosts = {
|
||||
"${domain.HTTP}" = {
|
||||
settings = {
|
||||
paths = {
|
||||
"/hello_world.txt" = {
|
||||
"file.file" = "${hello_world_txt}";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
"${domain.TLS}" = {
|
||||
tls = {
|
||||
policy = "force";
|
||||
identity = [
|
||||
{
|
||||
key-file = ../../common/acme/server/acme.test.key.pem;
|
||||
certificate-file = ../../common/acme/server/acme.test.cert.pem;
|
||||
}
|
||||
];
|
||||
extraSettings = {
|
||||
minimum-version = "TLSv1.3";
|
||||
};
|
||||
};
|
||||
settings = {
|
||||
paths = {
|
||||
"/hello_world.rst" = {
|
||||
"file.file" = "${hello_world_rst}";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
settings = {
|
||||
compress = "ON";
|
||||
compress-minimum-size = 32;
|
||||
"file.mime.addtypes" = {
|
||||
"text/x-rst" = {
|
||||
extensions = [ ".rst" ];
|
||||
is_compressible = "YES";
|
||||
};
|
||||
};
|
||||
ssl-offload = "kernel";
|
||||
};
|
||||
};
|
||||
|
||||
security.pki.certificates = [
|
||||
(builtins.readFile ../../common/acme/server/ca.cert.pem)
|
||||
];
|
||||
|
||||
networking = {
|
||||
firewall.allowedTCPPorts = with port; [
|
||||
HTTP
|
||||
TLS
|
||||
];
|
||||
extraHosts = ''
|
||||
127.0.0.1 ${domain.HTTP}
|
||||
127.0.0.1 ${domain.TLS}
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript = # python
|
||||
''
|
||||
server.wait_for_unit("h2o.service")
|
||||
|
||||
http_hello_world_body = server.succeed("curl --fail-with-body 'http://${domain.HTTP}:${builtins.toString port.HTTP}/hello_world.txt'")
|
||||
assert "${sawatdi_chao_lok}" in http_hello_world_body
|
||||
|
||||
tls_hello_world_head = server.succeed("curl -v --head --compressed --http2 --tlsv1.3 --fail-with-body 'https://${domain.TLS}:${builtins.toString port.TLS}/hello_world.rst'").lower()
|
||||
print(tls_hello_world_head)
|
||||
assert "http/2 200" in tls_hello_world_head
|
||||
assert "server: h2o" in tls_hello_world_head
|
||||
assert "content-type: text/x-rst" in tls_hello_world_head
|
||||
|
||||
tls_hello_world_body = server.succeed("curl -v --http2 --tlsv1.3 --compressed --fail-with-body 'https://${domain.TLS}:${builtins.toString port.TLS}/hello_world.rst'")
|
||||
assert "${sawatdi_chao_lok}" in tls_hello_world_body
|
||||
|
||||
tls_hello_world_head_redirected = server.succeed("curl -v --head --fail-with-body 'http://${domain.TLS}:${builtins.toString port.HTTP}/hello_world.rst'").lower()
|
||||
assert "redirected" in tls_hello_world_head_redirected
|
||||
|
||||
server.fail("curl --location --max-redirs 0 'http://${domain.TLS}:${builtins.toString port.HTTP}/hello_world.rst'")
|
||||
|
||||
tls_hello_world_body_redirected = server.succeed("curl -v --location --fail-with-body 'http://${domain.TLS}:${builtins.toString port.HTTP}/hello_world.rst'")
|
||||
assert "${sawatdi_chao_lok}" in tls_hello_world_body_redirected
|
||||
'';
|
||||
}
|
||||
)
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
system ? builtins.currentSystem,
|
||||
handleTestOn,
|
||||
}:
|
||||
|
||||
let
|
||||
supportedSystems = [
|
||||
"x86_64-linux"
|
||||
"i686-linux"
|
||||
"aarch64-linux"
|
||||
];
|
||||
in
|
||||
{
|
||||
basic = handleTestOn supportedSystems ./basic.nix { inherit system; };
|
||||
mruby = handleTestOn supportedSystems ./mruby.nix { inherit system; };
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
Proc.new do |env|
|
||||
[200, {'content-type' => 'text/plain'}, ["FILE_HANDLER"]]
|
||||
end
|
||||
@@ -0,0 +1,64 @@
|
||||
import ../../make-test-python.nix (
|
||||
{ lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
domain = "h2o.local";
|
||||
|
||||
port = 8080;
|
||||
|
||||
sawatdi_chao_lok = "สวัสดีชาวโลก";
|
||||
in
|
||||
{
|
||||
name = "h2o-mruby";
|
||||
|
||||
meta = {
|
||||
maintainers = with lib.maintainers; [ toastal ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
server =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
services.h2o = {
|
||||
enable = true;
|
||||
package = pkgs.h2o.override { withMruby = true; };
|
||||
settings = {
|
||||
listen = port;
|
||||
hosts = {
|
||||
"${domain}" = {
|
||||
paths = {
|
||||
"/hello_world" = {
|
||||
"mruby.handler" = # ruby
|
||||
''
|
||||
Proc.new do |env|
|
||||
[200, {'content-type' => 'text/plain'}, ["${sawatdi_chao_lok}"]]
|
||||
end
|
||||
'';
|
||||
};
|
||||
"/file_handler" = {
|
||||
"mruby.handler-file" = ./file_handler.rb;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
networking.extraHosts = ''
|
||||
127.0.0.1 ${domain}
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
testScript = # python
|
||||
''
|
||||
server.wait_for_unit("h2o.service")
|
||||
|
||||
hello_world = server.succeed("curl --fail-with-body http://${domain}:${builtins.toString port}/hello_world")
|
||||
assert "${sawatdi_chao_lok}" in hello_world
|
||||
|
||||
file_handler = server.succeed("curl --fail-with-body http://${domain}:${builtins.toString port}/file_handler")
|
||||
assert "FILE_HANDLER" in file_handler
|
||||
'';
|
||||
}
|
||||
)
|
||||
@@ -4496,6 +4496,19 @@ final: prev:
|
||||
meta.hydraPlatforms = [ ];
|
||||
};
|
||||
|
||||
faust-nvim = buildVimPlugin {
|
||||
pname = "faust-nvim";
|
||||
version = "2022-06-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "madskjeldgaard";
|
||||
repo = "faust-nvim";
|
||||
rev = "d6e8b1658233df74ac8dc1dc84a3f7568dc00586";
|
||||
sha256 = "0zf8zfc6baxd93w5iyhldcda5izb5ldrxb0wkcxqkp95azsc871w";
|
||||
};
|
||||
meta.homepage = "https://github.com/madskjeldgaard/faust-nvim/";
|
||||
meta.hydraPlatforms = [ ];
|
||||
};
|
||||
|
||||
fcitx-vim = buildVimPlugin {
|
||||
pname = "fcitx.vim";
|
||||
version = "2024-04-21";
|
||||
@@ -5057,6 +5070,19 @@ final: prev:
|
||||
meta.hydraPlatforms = [ ];
|
||||
};
|
||||
|
||||
github-nvim-theme = buildVimPlugin {
|
||||
pname = "github-nvim-theme";
|
||||
version = "2024-12-31";
|
||||
src = fetchFromGitHub {
|
||||
owner = "projekt0n";
|
||||
repo = "github-nvim-theme";
|
||||
rev = "c106c9472154d6b2c74b74565616b877ae8ed31d";
|
||||
sha256 = "1w7lz4bgfm8hq1mir4hcr8ik585d4l4w7bjl8yl3g3zklj8223pw";
|
||||
};
|
||||
meta.homepage = "https://github.com/projekt0n/github-nvim-theme/";
|
||||
meta.hydraPlatforms = [ ];
|
||||
};
|
||||
|
||||
gitignore-nvim = buildVimPlugin {
|
||||
pname = "gitignore.nvim";
|
||||
version = "2024-03-25";
|
||||
|
||||
@@ -1099,6 +1099,17 @@ in
|
||||
dependencies = [ self.nui-nvim ];
|
||||
};
|
||||
|
||||
faust-nvim = super.faust-nvim.overrideAttrs {
|
||||
dependencies = with self; [
|
||||
luasnip
|
||||
nvim-fzf
|
||||
];
|
||||
nvimSkipModule = [
|
||||
# E5108: Error executing lua vim/_init_packages.lua:0: ...in-faust-nvim-2022-06-01/lua/faust-nvim/autosnippets.lua:3: '=' expected near 'wd'
|
||||
"faust-nvim.autosnippets"
|
||||
];
|
||||
};
|
||||
|
||||
fcitx-vim = super.fcitx-vim.overrideAttrs {
|
||||
passthru.python3Dependencies = ps: with ps; [ dbus-python ];
|
||||
meta = {
|
||||
|
||||
@@ -344,6 +344,7 @@ https://github.com/brooth/far.vim/,,
|
||||
https://github.com/Chaitanyabsprip/fastaction.nvim/,HEAD,
|
||||
https://github.com/pteroctopus/faster.nvim/,HEAD,
|
||||
https://github.com/konfekt/fastfold/,,
|
||||
https://github.com/madskjeldgaard/faust-nvim/,HEAD,
|
||||
https://github.com/lilydjwg/fcitx.vim/,fcitx5,
|
||||
https://github.com/bakpakin/fennel.vim/,,
|
||||
https://github.com/wincent/ferret/,,
|
||||
@@ -387,6 +388,7 @@ https://github.com/akinsho/git-conflict.nvim/,HEAD,
|
||||
https://github.com/rhysd/git-messenger.vim/,,
|
||||
https://github.com/mikesmithgh/git-prompt-string-lualine.nvim/,HEAD,
|
||||
https://github.com/ThePrimeagen/git-worktree.nvim/,,
|
||||
https://github.com/projekt0n/github-nvim-theme/,HEAD,
|
||||
https://github.com/wintermute-cell/gitignore.nvim/,HEAD,
|
||||
https://github.com/vim-scripts/gitignore.vim/,,
|
||||
https://github.com/ruifm/gitlinker.nvim/,,
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -9,10 +9,10 @@
|
||||
|
||||
buildMozillaMach rec {
|
||||
pname = "firefox";
|
||||
version = "135.0";
|
||||
version = "135.0.1";
|
||||
src = fetchurl {
|
||||
url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
|
||||
sha512 = "7d283bcefe1e328901f15a88f5ff3da566bb0495ce5b9e3895e7a156020126a5743b6bffd69d94d9eb812e1868195ae92db162d29a5d98ee118fdb238469c089";
|
||||
sha512 = "9ff7c2ab6bc1660e339cdcd7745f8bdac5be25d3a79b9f0393385935270d7ef488599856bc38c22ae0b067389fa71a6999703b74804a6e0ea8265eb99788cea9";
|
||||
};
|
||||
|
||||
meta = {
|
||||
|
||||
@@ -6,15 +6,15 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "cargo-chef";
|
||||
version = "0.1.69";
|
||||
version = "0.1.71";
|
||||
|
||||
src = fetchCrate {
|
||||
inherit pname version;
|
||||
hash = "sha256-zDVolVllWl0DM0AByglKhU8JQpkdcmyVGe1vYo+eamk=";
|
||||
hash = "sha256-ZbbRo+AAlh7sW1HROxHfmnDxchJRWUId3oh5wgPauuQ=";
|
||||
};
|
||||
|
||||
useFetchCargoVendor = true;
|
||||
cargoHash = "sha256-3bjnAQLIO0hHjkRDym2oUzmiMd2gp5gN+iK8NxBC22Q=";
|
||||
cargoHash = "sha256-/VqFs5wzKbnfZRfKERUGjuCj/H+o1iI/ioMPq/FugDo=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "Cargo-subcommand to speed up Rust Docker builds using Docker layer caching";
|
||||
|
||||
@@ -6,17 +6,17 @@
|
||||
}:
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "cargo-modules";
|
||||
version = "0.21.2";
|
||||
version = "0.22.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "regexident";
|
||||
repo = "cargo-modules";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-mrl1I1dmf2WqtUbBsUq3kgqPwc4S/EaYRc/B9hpEo90=";
|
||||
hash = "sha256-dtL4vcNPtZc1FQ6LnlovXX0bQkyzkfhPDaJvf/SVmaU=";
|
||||
};
|
||||
|
||||
useFetchCargoVendor = true;
|
||||
cargoHash = "sha256-fg9w7jDoXJjdho8dHBItDp6O/6eU89eQMASYqTrUB2I=";
|
||||
cargoHash = "sha256-Mc+fAb46JiS2wH1Ybksj75qHf6JU26NFrHUv/drca5k=";
|
||||
|
||||
checkFlags = [
|
||||
"--skip=cfg_test::with_tests::smoke"
|
||||
|
||||
@@ -2,17 +2,17 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "cargo-nextest";
|
||||
version = "0.9.87";
|
||||
version = "0.9.91";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nextest-rs";
|
||||
repo = "nextest";
|
||||
rev = "cargo-nextest-${version}";
|
||||
hash = "sha256-J+84FZfrbv6jp2T9cYgodLZ+TgIAht+uJSVi5ULDGBU=";
|
||||
hash = "sha256-jLC90TewhtXiYmbOtgdyzPtS7VlCBMCXWRJlM1DUCI8=";
|
||||
};
|
||||
|
||||
useFetchCargoVendor = true;
|
||||
cargoHash = "sha256-qyqhhAitl0u69JYX+qjN8OnTyF17VdjjkbioFyA/W8s=";
|
||||
cargoHash = "sha256-Gjf54oc3Z/Ehc4Vg8wi/TfwMOZnPSR4ck4HCS57SNIc=";
|
||||
|
||||
cargoBuildFlags = [ "-p" "cargo-nextest" ];
|
||||
cargoTestFlags = [ "-p" "cargo-nextest" ];
|
||||
|
||||
@@ -8,15 +8,15 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "cargo-tally";
|
||||
version = "1.0.57";
|
||||
version = "1.0.58";
|
||||
|
||||
src = fetchCrate {
|
||||
inherit pname version;
|
||||
hash = "sha256-0f+23kQZzmUeAjettZ3iRTATiv73sGpI13TzZFTU150=";
|
||||
hash = "sha256-a9Mgsxe3vNtvuqMJIm7nRL2aiYYzpArz7R5XQcZAUxc=";
|
||||
};
|
||||
|
||||
useFetchCargoVendor = true;
|
||||
cargoHash = "sha256-6wMkRLF3Hn6zu8UM629RoUY83wmSEYaYX5EMb9xBveQ=";
|
||||
cargoHash = "sha256-3ZlF3FyWzcVL/ZMqId3wY//UzV7LeoJJdftb0IIC7Vk=";
|
||||
|
||||
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin (
|
||||
with darwin.apple_sdk_11_0.frameworks;
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "cowsql";
|
||||
version = "1.15.6";
|
||||
version = "1.15.8";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cowsql";
|
||||
repo = "cowsql";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-cr6AT/n2/6DuGK53JvGLwCkMi4+fS128qxj3X9SJYuw=";
|
||||
hash = "sha256-rwTa9owtnkyI9OpUKLk6V7WbAkqlYucpGzPnHHvKW/A=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
{
|
||||
|
||||
"elm/browser" = {
|
||||
sha256 = "0nagb9ajacxbbg985r4k9h0jadqpp0gp84nm94kcgbr5sf8i9x13";
|
||||
version = "1.0.2";
|
||||
};
|
||||
|
||||
"elm/core" = {
|
||||
sha256 = "19w0iisdd66ywjayyga4kv2p1v9rxzqjaxhckp8ni6n8i0fb2dvf";
|
||||
version = "1.0.5";
|
||||
};
|
||||
|
||||
"elm/html" = {
|
||||
sha256 = "1n3gpzmpqqdsldys4ipgyl1zacn0kbpc3g4v3hdpiyfjlgh8bf3k";
|
||||
version = "1.0.0";
|
||||
};
|
||||
|
||||
"elm/json" = {
|
||||
sha256 = "0kjwrz195z84kwywaxhhlnpl3p251qlbm5iz6byd6jky2crmyqyh";
|
||||
version = "1.1.3";
|
||||
};
|
||||
|
||||
"stil4m/elm-syntax" = {
|
||||
sha256 = "1dlk7gslh9la6y7y3d56a37lsymmz32rlspbywcfmq40mq9hiify";
|
||||
version = "7.2.9";
|
||||
};
|
||||
|
||||
"elm-community/list-extra" = {
|
||||
sha256 = "043iwpdwyrfb1jndxh7kf7xlkgq1v6pjczv1r1b19p2wky6nmy8z";
|
||||
version = "8.5.2";
|
||||
};
|
||||
|
||||
"elm/parser" = {
|
||||
sha256 = "0a3cxrvbm7mwg9ykynhp7vjid58zsw03r63qxipxp3z09qks7512";
|
||||
version = "1.1.0";
|
||||
};
|
||||
|
||||
"elm/time" = {
|
||||
sha256 = "0vch7i86vn0x8b850w1p69vplll1bnbkp8s383z7pinyg94cm2z1";
|
||||
version = "1.0.0";
|
||||
};
|
||||
|
||||
"elm/url" = {
|
||||
sha256 = "0av8x5syid40sgpl5vd7pry2rq0q4pga28b4yykn9gd9v12rs3l4";
|
||||
version = "1.0.0";
|
||||
};
|
||||
|
||||
"elm/virtual-dom" = {
|
||||
sha256 = "1yvb8px2z62xd578ag2q0r5hd1vkz9y7dfkx05355iiy1d7jwq4v";
|
||||
version = "1.0.3";
|
||||
};
|
||||
|
||||
"miniBill/elm-unicode" = {
|
||||
sha256 = "18w246bvra93amvqq3r2kqdv5ad8iavnhvcsbfdxw6747pi6pg2f";
|
||||
version = "1.0.2";
|
||||
};
|
||||
|
||||
"rtfeldman/elm-hex" = {
|
||||
sha256 = "1y0aa16asvwdqmgbskh5iba6psp43lkcjjw9mgzj3gsrg33lp00d";
|
||||
version = "1.0.0";
|
||||
};
|
||||
|
||||
"stil4m/structured-writer" = {
|
||||
sha256 = "02k32yaw275bivab90wy8qkbys3gg4fw53f798dzf1j9wharhg12";
|
||||
version = "1.0.3";
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
{
|
||||
lib,
|
||||
buildNpmPackage,
|
||||
fetchFromGitHub,
|
||||
elmPackages,
|
||||
versionCheckHook,
|
||||
writeShellScript,
|
||||
nix-update,
|
||||
elm2nix,
|
||||
nixfmt-rfc-style,
|
||||
}:
|
||||
|
||||
buildNpmPackage rec {
|
||||
pname = "elm-land";
|
||||
version = "0.20.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "elm-land";
|
||||
repo = "elm-land";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-PFyiVTH2Cek377YZwaCmvDToQCaxWQvJrQkRhyNI2Wg=";
|
||||
};
|
||||
|
||||
sourceRoot = "${src.name}/projects/cli";
|
||||
|
||||
npmDepsHash = "sha256-Bg16s0tqEaUT+BbFMKuEtx32rmbZLIILp8Ra/dQGmUg=";
|
||||
|
||||
npmRebuildFlags = [ "--ignore-scripts" ];
|
||||
|
||||
postConfigure =
|
||||
(elmPackages.fetchElmDeps {
|
||||
elmPackages = import ./elm-srcs.nix;
|
||||
elmVersion = elmPackages.elm.version;
|
||||
registryDat = ./registry.dat;
|
||||
})
|
||||
+ ''
|
||||
ln -sf ${lib.getExe elmPackages.elm} node_modules/.bin/elm
|
||||
'';
|
||||
|
||||
nativeInstallCheckInputs = [
|
||||
versionCheckHook
|
||||
];
|
||||
versionCheckProgramArg = [ "--version" ];
|
||||
doInstallCheck = true;
|
||||
|
||||
passthru.updateScript = writeShellScript "update-elm-land" ''
|
||||
set -eu -o pipefail
|
||||
|
||||
# Update version, src and npm deps
|
||||
${lib.getExe nix-update} "$UPDATE_NIX_ATTR_PATH"
|
||||
|
||||
# Update elm deps
|
||||
cp "$(nix-build -A "$UPDATE_NIX_ATTR_PATH".src)/projects/cli/src/codegen/elm.json" elm.json
|
||||
trap 'rm -rf elm.json registry.dat &> /dev/null' EXIT
|
||||
${lib.getExe elm2nix} convert > pkgs/by-name/el/elm-land/elm-srcs.nix
|
||||
${lib.getExe nixfmt-rfc-style} pkgs/by-name/el/elm-land/elm-srcs.nix
|
||||
${lib.getExe elm2nix} snapshot
|
||||
cp registry.dat pkgs/by-name/el/elm-land/registry.dat
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "A production-ready framework for building Elm applications";
|
||||
homepage = "https://github.com/elm-land/elm-land";
|
||||
license = lib.licenses.bsd3;
|
||||
maintainers = with lib.maintainers; [
|
||||
domenkozar
|
||||
zupo
|
||||
];
|
||||
mainProgram = "elm-land";
|
||||
};
|
||||
}
|
||||
Binary file not shown.
@@ -0,0 +1,28 @@
|
||||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
rustPlatform,
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "flamelens";
|
||||
version = "0.3.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "YS-L";
|
||||
repo = "flamelens";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-cvsBeV9pdgr8V+82Fw/XZS1Ljq/7ff4JYMHnNxqNvOM=";
|
||||
};
|
||||
|
||||
useFetchCargoVendor = true;
|
||||
cargoHash = "sha256-FIIt8RwPaPrVG3D9FoMjR4L81NzUrKZsAeW2AJkBG1o=";
|
||||
|
||||
meta = {
|
||||
description = "Interactive flamegraph viewer in the terminal";
|
||||
homepage = "https://github.com/YS-L/flamelens";
|
||||
changelog = "https://github.com/YS-L/flamelens/releases/tag/v${version}/CHANGELOG.md";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [ lib.maintainers.averdow ];
|
||||
};
|
||||
}
|
||||
@@ -66,7 +66,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
EXES="$(find "$out/share/h2o" -type f -executable)"
|
||||
for exe in $EXES; do
|
||||
wrapProgram "$exe" \
|
||||
--set "H2O_PERL" "${lib.getExe perl}"
|
||||
--set "H2O_PERL" "${lib.getExe perl}" \
|
||||
--prefix "PATH" : "${lib.getBin openssl}/bin"
|
||||
done
|
||||
'';
|
||||
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
diff --git a/mealie/services/openai/openai.py b/mealie/services/openai/openai.py
|
||||
index 09c391d5..5d74d930 100644
|
||||
--- a/mealie/services/openai/openai.py
|
||||
+++ b/mealie/services/openai/openai.py
|
||||
@@ -7,7 +7,7 @@ from pathlib import Path
|
||||
from textwrap import dedent
|
||||
|
||||
from openai import NOT_GIVEN, AsyncOpenAI
|
||||
-from openai.resources.chat.completions import ChatCompletion
|
||||
+from openai.types.chat import ChatCompletion
|
||||
from pydantic import BaseModel, field_validator
|
||||
|
||||
from mealie.core.config import get_app_settings
|
||||
@@ -1,20 +1,21 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, callPackage
|
||||
, fetchFromGitHub
|
||||
, makeWrapper
|
||||
, nixosTests
|
||||
, python3Packages
|
||||
, writeShellScript
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
callPackage,
|
||||
fetchFromGitHub,
|
||||
makeWrapper,
|
||||
nixosTests,
|
||||
python3Packages,
|
||||
writeShellScript,
|
||||
}:
|
||||
|
||||
let
|
||||
version = "2.3.0";
|
||||
version = "2.6.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "mealie-recipes";
|
||||
repo = "mealie";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-GN+uXyZCvDuFmQnXhn0mFans3bvvEw7Uq6V0OeCPEbE=";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-txkHCQ/xTakPXXFki161jNOKwAH9p9z1hCNEEkbqQtM=";
|
||||
};
|
||||
|
||||
frontend = callPackage (import ./mealie-frontend.nix src version) { };
|
||||
@@ -54,6 +55,11 @@ pythonpkgs.buildPythonApplication rec {
|
||||
|
||||
pythonRelaxDeps = true;
|
||||
|
||||
patches = [
|
||||
# compatiblity with openai 1.63.0
|
||||
./0000_openai_1.63.0.patch
|
||||
];
|
||||
|
||||
dependencies = with pythonpkgs; [
|
||||
aiofiles
|
||||
alembic
|
||||
@@ -96,42 +102,32 @@ pythonpkgs.buildPythonApplication rec {
|
||||
|
||||
substituteInPlace mealie/__init__.py \
|
||||
--replace-fail '__version__ = ' '__version__ = "v${version}" #'
|
||||
|
||||
substituteInPlace mealie/services/backups_v2/alchemy_exporter.py \
|
||||
--replace-fail 'PROJECT_DIR = ' "PROJECT_DIR = Path('$out') #"
|
||||
|
||||
substituteInPlace mealie/db/init_db.py \
|
||||
--replace-fail 'PROJECT_DIR = ' "PROJECT_DIR = Path('$out') #"
|
||||
|
||||
substituteInPlace mealie/services/backups_v2/alchemy_exporter.py \
|
||||
--replace-fail '"script_location", path.join(PROJECT_DIR, "alembic")' '"script_location", "${src}/alembic"'
|
||||
'';
|
||||
|
||||
postInstall = let
|
||||
start_script = writeShellScript "start-mealie" ''
|
||||
${lib.getExe pythonpkgs.gunicorn} "$@" -k uvicorn.workers.UvicornWorker mealie.app:app;
|
||||
postInstall =
|
||||
let
|
||||
start_script = writeShellScript "start-mealie" ''
|
||||
${lib.getExe pythonpkgs.gunicorn} "$@" -k uvicorn.workers.UvicornWorker mealie.app:app;
|
||||
'';
|
||||
init_db = writeShellScript "init-mealie-db" ''
|
||||
${python.interpreter} $OUT/${python.sitePackages}/mealie/scripts/install_model.py
|
||||
${python.interpreter} $OUT/${python.sitePackages}/mealie/db/init_db.py
|
||||
'';
|
||||
in
|
||||
''
|
||||
mkdir -p $out/bin $out/libexec
|
||||
rm -f $out/bin/*
|
||||
|
||||
makeWrapper ${start_script} $out/bin/mealie \
|
||||
--set PYTHONPATH "$out/${python.sitePackages}:${pythonpkgs.makePythonPath dependencies}" \
|
||||
--set LD_LIBRARY_PATH "${crfpp}/lib" \
|
||||
--set STATIC_FILES "${frontend}" \
|
||||
--set PATH "${lib.makeBinPath [ crfpp ]}"
|
||||
|
||||
makeWrapper ${init_db} $out/libexec/init_db \
|
||||
--set PYTHONPATH "$out/${python.sitePackages}:${pythonpkgs.makePythonPath dependencies}" \
|
||||
--set OUT "$out"
|
||||
'';
|
||||
init_db = writeShellScript "init-mealie-db" ''
|
||||
${python.interpreter} $OUT/${python.sitePackages}/mealie/scripts/install_model.py
|
||||
${python.interpreter} $OUT/${python.sitePackages}/mealie/db/init_db.py
|
||||
'';
|
||||
in ''
|
||||
mkdir -p $out/bin $out/libexec
|
||||
rm -f $out/bin/*
|
||||
|
||||
substitute ${src}/alembic.ini $out/alembic.ini \
|
||||
--replace-fail 'script_location = alembic' 'script_location = ${src}/alembic'
|
||||
|
||||
makeWrapper ${start_script} $out/bin/mealie \
|
||||
--set PYTHONPATH "$out/${python.sitePackages}:${pythonpkgs.makePythonPath dependencies}" \
|
||||
--set LD_LIBRARY_PATH "${crfpp}/lib" \
|
||||
--set STATIC_FILES "${frontend}" \
|
||||
--set PATH "${lib.makeBinPath [ crfpp ]}"
|
||||
|
||||
makeWrapper ${init_db} $out/libexec/init_db \
|
||||
--set PYTHONPATH "$out/${python.sitePackages}:${pythonpkgs.makePythonPath dependencies}" \
|
||||
--set OUT "$out"
|
||||
'';
|
||||
|
||||
nativeCheckInputs = with pythonpkgs; [ pytestCheckHook ];
|
||||
|
||||
@@ -160,7 +156,10 @@ pythonpkgs.buildPythonApplication rec {
|
||||
homepage = "https://mealie.io";
|
||||
changelog = "https://github.com/mealie-recipes/mealie/releases/tag/${src.rev}";
|
||||
license = licenses.agpl3Only;
|
||||
maintainers = with maintainers; [ litchipi anoa ];
|
||||
maintainers = with maintainers; [
|
||||
litchipi
|
||||
anoa
|
||||
];
|
||||
mainProgram = "mealie";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
{
|
||||
lib,
|
||||
buildGoModule,
|
||||
fetchFromGitHub,
|
||||
nix-update-script,
|
||||
versionCheckHook,
|
||||
}:
|
||||
buildGoModule rec {
|
||||
pname = "mpls";
|
||||
version = "0.12.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mhersson";
|
||||
repo = "mpls";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-2NOP5k3N2T2T8zg/6SlKDRJsWt+LcjAOmYe/tMrjCnc=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-6iXZWLCF0LfchcGSFrCtILLeR1Yx7oxD/7JIYyrrkHM=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
"-w"
|
||||
"-X github.com/mhersson/mpls/cmd.Version=${version}"
|
||||
"-X github.com/mhersson/mpls/internal/mpls.Version=${version}"
|
||||
];
|
||||
|
||||
nativeInstallCheckInputs = [ versionCheckHook ];
|
||||
versionCheckProgramArg = "--version";
|
||||
doInstallCheck = true;
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
description = "Live preview of markdown using Language Server Protocol";
|
||||
homepage = "https://github.com/mhersson/mpls";
|
||||
changelog = "https://github.com/mhersson/mpls/releases/tag/${src.tag}";
|
||||
license = lib.licenses.asl20;
|
||||
maintainers = with lib.maintainers; [ jervw ];
|
||||
mainProgram = "mpls";
|
||||
};
|
||||
}
|
||||
@@ -102,7 +102,14 @@ stdenv.mkDerivation rec {
|
||||
cp -r $src/docs/images ./docs
|
||||
'';
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
passthru.updateScript = nix-update-script {
|
||||
# even patch numbers are pre-releases
|
||||
# see https://github.com/mydumper/mydumper/tree/afe0eb9317f1e9cdde45f7b0e463029912c6c981?tab=readme-ov-file#versioning
|
||||
extraArgs = [
|
||||
"--version-regex"
|
||||
"v(\\d+\\.\\d+\\.\\d*[13579]-\\d+)"
|
||||
];
|
||||
};
|
||||
|
||||
# mydumper --version is checked in `versionCheckHook`
|
||||
passthru.tests = testers.testVersion {
|
||||
|
||||
@@ -1,24 +1,27 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, autoreconfHook
|
||||
, pkg-config
|
||||
, openssl
|
||||
, ppp
|
||||
, systemd
|
||||
, withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd
|
||||
, withPpp ? stdenv.hostPlatform.isLinux
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
autoreconfHook,
|
||||
pkg-config,
|
||||
openssl,
|
||||
ppp,
|
||||
systemd,
|
||||
withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd,
|
||||
withPpp ? stdenv.hostPlatform.isLinux,
|
||||
versionCheckHook,
|
||||
nix-update-script,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "openfortivpn";
|
||||
version = "1.22.1";
|
||||
version = "1.23.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "adrienverge";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-FhS4q8p1Q2Lu7xj2ZkUbJcMWvRSn+lqFdYqBNYB3V1E=";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-Pv9v7e5xPTIrgqldBDtTFxW+aIjbxSeu0sQ9n6HjO9w=";
|
||||
};
|
||||
|
||||
# we cannot write the config file to /etc and as we don't need the file, so drop it
|
||||
@@ -27,30 +30,45 @@ stdenv.mkDerivation rec {
|
||||
--replace '$(DESTDIR)$(confdir)' /tmp
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook pkg-config ];
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
openssl
|
||||
]
|
||||
++ lib.optional withSystemd systemd
|
||||
++ lib.optional withPpp ppp;
|
||||
buildInputs =
|
||||
[
|
||||
openssl
|
||||
]
|
||||
++ lib.optional withSystemd systemd
|
||||
++ lib.optional withPpp ppp;
|
||||
|
||||
configureFlags = [
|
||||
"--sysconfdir=/etc"
|
||||
]
|
||||
++ lib.optional withSystemd "--with-systemdsystemunitdir=${placeholder "out"}/lib/systemd/system"
|
||||
++ lib.optional withPpp "--with-pppd=${ppp}/bin/pppd"
|
||||
# configure: error: cannot check for file existence when cross compiling
|
||||
++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) "--disable-proc";
|
||||
configureFlags =
|
||||
[
|
||||
"--sysconfdir=/etc"
|
||||
]
|
||||
++ lib.optional withSystemd "--with-systemdsystemunitdir=${placeholder "out"}/lib/systemd/system"
|
||||
++ lib.optional withPpp "--with-pppd=${ppp}/bin/pppd"
|
||||
# configure: error: cannot check for file existence when cross compiling
|
||||
++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) "--disable-proc";
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
meta = with lib; {
|
||||
nativeInstallCheckInputs = [
|
||||
versionCheckHook
|
||||
];
|
||||
versionCheckProgramArg = [ "--version" ];
|
||||
doInstallCheck = true;
|
||||
|
||||
passthru = {
|
||||
updateScript = nix-update-script { };
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Client for PPP+SSL VPN tunnel services";
|
||||
homepage = "https://github.com/adrienverge/openfortivpn";
|
||||
license = licenses.gpl3;
|
||||
maintainers = with maintainers; [ madjar ];
|
||||
platforms = with platforms; linux ++ darwin;
|
||||
license = lib.licenses.gpl3;
|
||||
maintainers = with lib.maintainers; [ madjar ];
|
||||
platforms = with lib.platforms; linux ++ darwin;
|
||||
mainProgram = "openfortivpn";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
_7zz,
|
||||
alsa-lib,
|
||||
systemd,
|
||||
wrapGAppsHook4,
|
||||
autoPatchelfHook,
|
||||
blas,
|
||||
dpkg,
|
||||
@@ -21,7 +22,7 @@
|
||||
}:
|
||||
let
|
||||
pname = "positron-bin";
|
||||
version = "2024.11.0-116";
|
||||
version = "2025.02.0-171";
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
inherit version pname;
|
||||
@@ -30,12 +31,12 @@ stdenv.mkDerivation {
|
||||
if stdenv.hostPlatform.isDarwin then
|
||||
fetchurl {
|
||||
url = "https://github.com/posit-dev/positron/releases/download/${version}/Positron-${version}.dmg";
|
||||
hash = "sha256-5Ym42InDgFLGdZk0LYV1H0eC5WzmsYToG1KLdiGgTto=";
|
||||
hash = "sha256-b5o1+UXt5JAuHkm1K1jrMLV+7PHfKJTOff4aTk8xm2I=";
|
||||
}
|
||||
else
|
||||
fetchurl {
|
||||
url = "https://github.com/posit-dev/positron/releases/download/${version}/Positron-${version}.deb";
|
||||
hash = "sha256-pE25XVYFW8WwyQ7zmox2mmXy6ZCSaXk2gSnPimg7xtU=";
|
||||
url = "https://github.com/posit-dev/positron/releases/download/${version}/Positron-${version}-x64.deb";
|
||||
hash = "sha256-TjQc/Y4Sa2MlLslbygYVFbIk3raArMvYstSiSEYzfo0=";
|
||||
};
|
||||
|
||||
buildInputs =
|
||||
@@ -64,6 +65,7 @@ stdenv.mkDerivation {
|
||||
lib.optionals stdenv.hostPlatform.isLinux [
|
||||
autoPatchelfHook
|
||||
dpkg
|
||||
wrapGAppsHook4
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
_7zz
|
||||
@@ -99,8 +101,8 @@ stdenv.mkDerivation {
|
||||
install -m 444 -D usr/share/applications/positron.desktop "$out/share/applications/positron.desktop"
|
||||
substituteInPlace "$out/share/applications/positron.desktop" \
|
||||
--replace-fail \
|
||||
"Icon=com.visualstudio.code.oss" \
|
||||
"Icon=$out/share/pixmaps/com.visualstudio.code.oss.png" \
|
||||
"Icon=co.posit.positron" \
|
||||
"Icon=$out/share/pixmaps/co.posit.positron.png" \
|
||||
--replace-fail \
|
||||
"Exec=/usr/share/positron/positron %F" \
|
||||
"Exec=$out/share/positron/.positron-wrapped %F" \
|
||||
|
||||
@@ -29,11 +29,11 @@ sed -i "s|$current_hash|$new_hash|g" $positron_nix
|
||||
|
||||
# Update Linux hash.
|
||||
current_hash=$(nix store prefetch-file --json --hash-type sha256 \
|
||||
"https://github.com/posit-dev/positron/releases/download/${current_version}/Positron-${current_version}.deb" \
|
||||
"https://github.com/posit-dev/positron/releases/download/${current_version}/Positron-${current_version}-x64.deb" \
|
||||
| jq -r .hash)
|
||||
|
||||
new_hash=$(nix store prefetch-file --json --hash-type sha256 \
|
||||
"https://github.com/posit-dev/positron/releases/download/${new_version}/Positron-${new_version}.deb" \
|
||||
"https://github.com/posit-dev/positron/releases/download/${new_version}/Positron-${new_version}-x64.deb" \
|
||||
| jq -r .hash)
|
||||
|
||||
sed -i "s|$current_hash|$new_hash|g" $positron_nix
|
||||
|
||||
+9
-9
@@ -5,10 +5,10 @@
|
||||
fastjet,
|
||||
fastjet-contrib,
|
||||
ghostscript,
|
||||
graphicsmagick-imagemagick-compat,
|
||||
hdf5,
|
||||
hepmc3,
|
||||
highfive,
|
||||
imagemagick,
|
||||
less,
|
||||
pkg-config,
|
||||
python3,
|
||||
@@ -21,11 +21,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "rivet";
|
||||
version = "4.0.2";
|
||||
version = "4.0.3";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://www.hepforge.org/archive/rivet/Rivet-${version}.tar.bz2";
|
||||
hash = "sha256-ZaOzb0K/94LtJ2eTDmaeCbFAiZYF15cvyPd3hbSogsA=";
|
||||
hash = "sha256-27l7dp0Yd/NMPFAZASe/2nhHvOx5uh3llWH99DzdSGk=";
|
||||
};
|
||||
|
||||
latex = texliveBasic.withPackages (
|
||||
@@ -52,9 +52,9 @@ stdenv.mkDerivation rec {
|
||||
pkg-config
|
||||
];
|
||||
buildInputs = [
|
||||
graphicsmagick-imagemagick-compat
|
||||
hepmc3
|
||||
highfive
|
||||
imagemagick
|
||||
python3
|
||||
latex
|
||||
python3.pkgs.yoda
|
||||
@@ -85,7 +85,7 @@ stdenv.mkDerivation rec {
|
||||
--replace-fail '"ps2pdf"' '"${ghostscript}/bin/ps2pdf"' \
|
||||
--replace-fail '"ps2eps"' '"${ghostscript}/bin/ps2eps"' \
|
||||
--replace-fail '"kpsewhich"' '"'$latex'/bin/kpsewhich"' \
|
||||
--replace-fail '"convert"' '"${imagemagick.out}/bin/convert"'
|
||||
--replace-fail '"convert"' '"${graphicsmagick-imagemagick-compat.out}/bin/convert"'
|
||||
substituteInPlace bin/rivet \
|
||||
--replace-fail '"less"' '"${less}/bin/less"'
|
||||
substituteInPlace bin/rivet-mkhtml-tex \
|
||||
@@ -109,11 +109,11 @@ stdenv.mkDerivation rec {
|
||||
done
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
description = "Framework for comparison of experimental measurements from high-energy particle colliders to theory predictions";
|
||||
license = licenses.gpl3;
|
||||
license = lib.licenses.gpl3;
|
||||
homepage = "https://rivet.hepforge.org";
|
||||
platforms = platforms.unix;
|
||||
maintainers = with maintainers; [ veprbl ];
|
||||
platforms = lib.platforms.unix;
|
||||
maintainers = with lib.maintainers; [ veprbl ];
|
||||
};
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
fetchpatch,
|
||||
meson,
|
||||
ninja,
|
||||
pkg-config,
|
||||
@@ -34,6 +35,15 @@ stdenv.mkDerivation rec {
|
||||
hash = "sha256-wW5lkBQv5WO+UUMSKzu7U/awCn2p2VL2HEf6Jve08Kk=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# simple-scan: Use RDNN app ID
|
||||
# https://gitlab.gnome.org/GNOME/simple-scan/-/issues/390
|
||||
(fetchpatch {
|
||||
url = "https://gitlab.gnome.org/GNOME/simple-scan/-/commit/c09a6def153e52494072a36233c7e7b3307b67bf.patch";
|
||||
hash = "sha256-deyssrsVwPAfT5ru6c0LFwR2pEFnZ0v8wMqoi96tw8s=";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
meson
|
||||
ninja
|
||||
@@ -64,11 +74,6 @@ stdenv.mkDerivation rec {
|
||||
patchShebangs data/meson_compile_gschema.py
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/share/icons/hicolor/scalable/actions/
|
||||
install -m 444 ../data/icons/scalable/actions/* $out/share/icons/hicolor/scalable/actions/
|
||||
'';
|
||||
|
||||
doCheck = true;
|
||||
|
||||
passthru = {
|
||||
|
||||
@@ -8,16 +8,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "svu";
|
||||
version = "2.2.0";
|
||||
version = "3.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "caarlos0";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-C5ATwRsi9hJBO9xFlyMDoxu97rJHwcKNToWhcmx6M6g=";
|
||||
sha256 = "sha256-z+2H49fhi0X7rH1NvgOlkJFCrEftAMk5PA/qUUJIfmY=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-/FSvNoVDWAkQs09gMrqyoA0su52nlk/nSCYRAhQhbwQ=";
|
||||
vendorHash = "sha256-lqE5S13VQ7WLow6tXcFOWcK/dw7LvvEDpgRTQ8aJGeg=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
|
||||
@@ -9,12 +9,12 @@
|
||||
let
|
||||
generator = pkgsBuildBuild.buildGoModule rec {
|
||||
pname = "v2ray-domain-list-community";
|
||||
version = "20250124154827";
|
||||
version = "20250216152937";
|
||||
src = fetchFromGitHub {
|
||||
owner = "v2fly";
|
||||
repo = "domain-list-community";
|
||||
rev = version;
|
||||
hash = "sha256-E69X6ktgZvW3xrZl+jmQMoPwRQlqU+0RW2epJHyFgeQ=";
|
||||
hash = "sha256-VmICKm6G5evY1X9jnFD4Ip9BFuFMGqOB5aoIDYcGqJQ=";
|
||||
};
|
||||
vendorHash = "sha256-NLh14rXRci4hgDkBJVJDIDvobndB7KYRKAX7UjyqSsg=";
|
||||
meta = with lib; {
|
||||
|
||||
@@ -29,14 +29,14 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "wezterm";
|
||||
version = "0-unstable-2025-02-10";
|
||||
version = "0-unstable-2025-02-13";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "wez";
|
||||
repo = "wezterm";
|
||||
rev = "52c1ca749552af4d8a2f18ec10fe8f14b6622519";
|
||||
rev = "ee0c04e735fb94cb5119681f704fb7fa6731e713";
|
||||
fetchSubmodules = true;
|
||||
hash = "sha256-4dIu0WczmjfCfYe2/fZybMWfgYd4XezIHUUPVb3ou28=";
|
||||
hash = "sha256-0jqnSzzfg8ecBaayJI8oP9X0FyijFFT3LA6GKfpAFwI=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
@@ -53,7 +53,7 @@ rustPlatform.buildRustPackage rec {
|
||||
--replace-fail 'hash hostnamectl 2>/dev/null' 'command type -P hostnamectl &>/dev/null'
|
||||
'';
|
||||
|
||||
cargoHash = "sha256-2PJBd3nouxK0iIDOKIS9rrXbbts6zTYdrzxxokSiNwo=";
|
||||
cargoHash = "sha256-WyQYmRNlabJaCTJm7Cn9nkXfOGAcOHwhoD9vmEggrDw=";
|
||||
useFetchCargoVendor = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
@@ -66,13 +66,13 @@ rustPlatform.buildRustPackage rec {
|
||||
buildInputs =
|
||||
[
|
||||
fontconfig
|
||||
openssl
|
||||
zlib
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isLinux [
|
||||
libX11
|
||||
libxcb
|
||||
libxkbcommon
|
||||
openssl
|
||||
wayland
|
||||
xcbutil
|
||||
xcbutilimage
|
||||
|
||||
@@ -30,20 +30,16 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
|
||||
buildInputs =
|
||||
[
|
||||
python3
|
||||
]
|
||||
[ python3 ]
|
||||
++ (with python3.pkgs; [
|
||||
numpy
|
||||
matplotlib
|
||||
])
|
||||
++ lib.optionals withRootSupport [
|
||||
root
|
||||
];
|
||||
++ lib.optionals withRootSupport [ root ];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
zlib
|
||||
];
|
||||
propagatedBuildInputs = [ zlib ];
|
||||
|
||||
env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin "-DWITH_OSX";
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
|
||||
@@ -18,10 +18,10 @@
|
||||
mkXfceDerivation {
|
||||
category = "apps";
|
||||
pname = "xfce4-notifyd";
|
||||
version = "0.9.6";
|
||||
version = "0.9.7";
|
||||
odd-unstable = false;
|
||||
|
||||
sha256 = "sha256-TxVz9fUvuS5bl9eq9isalez3/Pro366TGFMBQ2DfIVI=";
|
||||
sha256 = "sha256-pgdoy3mZOGMOBwK/cYEl8fre4fZo2lfyWzZnrSYlQ64=";
|
||||
|
||||
buildInputs = [
|
||||
dbus
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
{
|
||||
lib,
|
||||
mkXfceDerivation,
|
||||
fetchpatch,
|
||||
exo,
|
||||
gtk3,
|
||||
libxfce4ui,
|
||||
@@ -18,18 +17,9 @@
|
||||
mkXfceDerivation {
|
||||
category = "xfce";
|
||||
pname = "xfdesktop";
|
||||
version = "4.20.0";
|
||||
version = "4.20.1";
|
||||
|
||||
sha256 = "sha256-80g3lk1TkQI0fbYf2nXs36TrPlaGTHgH6k/TGOzRd3w=";
|
||||
|
||||
patches = [
|
||||
# Fix monitor chooser UI resource path
|
||||
# https://gitlab.xfce.org/xfce/xfdesktop/-/merge_requests/181
|
||||
(fetchpatch {
|
||||
url = "https://gitlab.xfce.org/xfce/xfdesktop/-/commit/699e21b062f56bdc0db192bfe036420b2618612e.patch";
|
||||
hash = "sha256-YTtXF+OJMHn6KY2xui1qGZ04np9a60asne+8ZS/dujs=";
|
||||
})
|
||||
];
|
||||
sha256 = "sha256-QBzsHXEdTGj8PlgB+L/TJjxAVksKqf+9KrRN3YaBf44=";
|
||||
|
||||
buildInputs = [
|
||||
exo
|
||||
|
||||
@@ -43,6 +43,8 @@ makeScopeWithSplicing' {
|
||||
|
||||
thunar-media-tags-plugin = callPackage ./thunar-plugins/media-tags { };
|
||||
|
||||
thunar-vcs-plugin = callPackage ./thunar-plugins/vcs { };
|
||||
|
||||
tumbler = callPackage ./core/tumbler { };
|
||||
|
||||
xfce4-panel = callPackage ./core/xfce4-panel { };
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
{
|
||||
lib,
|
||||
mkXfceDerivation,
|
||||
thunar,
|
||||
exo,
|
||||
libxfce4util,
|
||||
gtk3,
|
||||
glib,
|
||||
subversion,
|
||||
apr,
|
||||
aprutil,
|
||||
withSubversion ? false,
|
||||
}:
|
||||
mkXfceDerivation {
|
||||
category = "thunar-plugins";
|
||||
pname = "thunar-vcs-plugin";
|
||||
version = "0.3.0";
|
||||
odd-unstable = false;
|
||||
|
||||
sha256 = "sha256-e9t6lIsvaV/2AAL/7I4Pbcokvy7Lp2+D9sJefTZqB1g=";
|
||||
|
||||
buildInputs =
|
||||
[
|
||||
thunar
|
||||
exo
|
||||
libxfce4util
|
||||
gtk3
|
||||
glib
|
||||
]
|
||||
++ lib.optionals withSubversion [
|
||||
apr
|
||||
aprutil
|
||||
subversion
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "Thunar plugin providing support for Subversion and Git";
|
||||
maintainers = with lib.maintainers; [ lordmzte ] ++ lib.teams.xfce.members;
|
||||
};
|
||||
}
|
||||
@@ -7,19 +7,19 @@ let
|
||||
inherit (pkgs.stdenv.hostPlatform) system;
|
||||
};
|
||||
ESBUILD_BINARY_PATH = lib.getExe (
|
||||
pkgs.esbuild.override {
|
||||
buildGoModule = args: pkgs.buildGoModule (args // rec {
|
||||
version = "0.20.2";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "evanw";
|
||||
repo = "esbuild";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-h/Vqwax4B4nehRP9TaYbdixAZdb1hx373dNxNHvDrtY=";
|
||||
};
|
||||
vendorHash = "sha256-+BfxCyg0KkDQpHt/wycy/8CTG6YBA/VJvJFhhzUnSiQ=";
|
||||
});
|
||||
}
|
||||
);
|
||||
pkgs.esbuild.override {
|
||||
buildGoModule = args: pkgs.buildGoModule (args // rec {
|
||||
version = "0.20.2";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "evanw";
|
||||
repo = "esbuild";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-h/Vqwax4B4nehRP9TaYbdixAZdb1hx373dNxNHvDrtY=";
|
||||
};
|
||||
vendorHash = "sha256-+BfxCyg0KkDQpHt/wycy/8CTG6YBA/VJvJFhhzUnSiQ=";
|
||||
});
|
||||
}
|
||||
);
|
||||
in
|
||||
with self; with elmLib; {
|
||||
inherit (nodePkgs) elm-live elm-upgrade elm-xref elm-analyse elm-git-install;
|
||||
@@ -124,20 +124,7 @@ with self; with elmLib; {
|
||||
|
||||
elm-pages = import ./elm-pages { inherit nodePkgs pkgs lib makeWrapper; };
|
||||
|
||||
elm-land =
|
||||
let
|
||||
patched = patchNpmElm nodePkgs.elm-land;
|
||||
in
|
||||
patched.override (old: {
|
||||
inherit ESBUILD_BINARY_PATH;
|
||||
meta = with lib; nodePkgs."elm-land".meta // {
|
||||
description = "Production-ready framework for building Elm applications";
|
||||
homepage = "https://elm.land/";
|
||||
license = licenses.bsd3;
|
||||
maintainers = [ maintainers.zupo ];
|
||||
};
|
||||
}
|
||||
);
|
||||
elm-land = pkgs.elm-land; # Alias
|
||||
|
||||
elm-doc-preview = nodePkgs."elm-doc-preview".overrideAttrs (old: {
|
||||
nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ old.nodejs.pkgs.node-gyp-build ];
|
||||
|
||||
@@ -19,7 +19,7 @@ let
|
||||
writeShellScript
|
||||
;
|
||||
inherit pkgs nodejs;
|
||||
libtool = if pkgs.stdenv.hostPlatform.isDarwin then pkgs.cctools or pkgs.darwin.cctools else null;
|
||||
libtool = if pkgs.stdenv.isDarwin then pkgs.cctools or pkgs.darwin.cctools else null;
|
||||
};
|
||||
in
|
||||
import ./node-packages.nix {
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
"elm-coverage",
|
||||
"elm-doc-preview",
|
||||
"@elm-tooling/elm-language-server",
|
||||
"elm-land",
|
||||
"elm-live",
|
||||
"elm-spa",
|
||||
"elm-test",
|
||||
|
||||
+2010
-2432
File diff suppressed because it is too large
Load Diff
@@ -3,6 +3,7 @@
|
||||
mkCoqDerivation,
|
||||
which,
|
||||
coq,
|
||||
rocqPackages,
|
||||
stdlib,
|
||||
version ? null,
|
||||
elpi-version ? null,
|
||||
@@ -34,7 +35,7 @@ derivation = mkCoqDerivation {
|
||||
owner = "LPCIC";
|
||||
inherit version;
|
||||
defaultVersion = lib.switch coq.coq-version [
|
||||
{ case = "9.0"; out = "2.4.0"; }
|
||||
{ case = "9.0"; out = "2.5.0"; }
|
||||
{ case = "8.20"; out = "2.2.0"; }
|
||||
{ case = "8.19"; out = "2.0.1"; }
|
||||
{ case = "8.18"; out = "2.0.0"; }
|
||||
@@ -46,6 +47,7 @@ derivation = mkCoqDerivation {
|
||||
{ case = "8.12"; out = "1.8.3_8.12"; }
|
||||
{ case = "8.11"; out = "1.6.3_8.11"; }
|
||||
] null;
|
||||
release."2.5.0".sha256 = "sha256-Z5xjO83X/ZoTQlWnVupGXPH3HuJefr57Kv128I0dltg=";
|
||||
release."2.4.0".sha256 = "sha256-W2+vVGExLLux8e0nSZESSoMVvrLxhL6dmXkb+JuKiqc=";
|
||||
release."2.2.0".sha256 = "sha256-rADEoqTXM7/TyYkUKsmCFfj6fjpWdnZEOK++5oLfC/I=";
|
||||
release."2.0.1".sha256 = "sha256-cuoPsEJ+JRLVc9Golt2rJj4P7lKltTrrmQijjoViooc=";
|
||||
@@ -127,4 +129,23 @@ patched-derivation3 = patched-derivation2.overrideAttrs
|
||||
propagatedBuildInputs = o.propagatedBuildInputs ++ [ stdlib ];
|
||||
}
|
||||
);
|
||||
in patched-derivation3
|
||||
patched-derivation4 = patched-derivation3.overrideAttrs
|
||||
(
|
||||
o:
|
||||
# this is just a wrapper for rocPackages.bignums for Rocq >= 9.0
|
||||
lib.optionalAttrs (coq.version != null && (coq.version == "dev"
|
||||
|| lib.versions.isGe "9.0" coq.version)) {
|
||||
configurePhase = ''
|
||||
echo no configuration
|
||||
'';
|
||||
buildPhase = ''
|
||||
echo building nothing
|
||||
'';
|
||||
installPhase = ''
|
||||
echo installing nothing
|
||||
'';
|
||||
propagatedBuildInputs = o.propagatedBuildInputs
|
||||
++ [ rocqPackages.rocq-elpi ];
|
||||
}
|
||||
);
|
||||
in patched-derivation4
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ lib, mkCoqDerivation, coq, coq-elpi, version ? null }:
|
||||
{ lib, mkCoqDerivation, coq, stdlib, coq-elpi, version ? null }:
|
||||
|
||||
let hb = mkCoqDerivation {
|
||||
pname = "hierarchy-builder";
|
||||
@@ -48,4 +48,7 @@ hb.overrideAttrs (o:
|
||||
{ installFlags = [ "DESTDIR=$(out)" ] ++ o.installFlags; }
|
||||
else
|
||||
{ installFlags = [ "VFILES=structures.v" ] ++ o.installFlags; })
|
||||
//
|
||||
lib.optionalAttrs (lib.versions.isLe "1.8.1" o.version)
|
||||
{ propagatedBuildInputs = o.propagatedBuildInputs ++ [ stdlib ]; }
|
||||
)
|
||||
|
||||
@@ -11,14 +11,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "simsimd";
|
||||
version = "6.3.0";
|
||||
version = "6.3.3";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ashvardanian";
|
||||
repo = "simsimd";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-RQgPjU2uOxOnDacIARMAkKvnUIHLzRsaxLERmTrLj1Q=";
|
||||
hash = "sha256-8D3mMhGrHATqxc79OvfcG92UnDGjU6YDfFjReXdR6cs=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
@@ -41,7 +41,7 @@ buildPythonPackage rec {
|
||||
];
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/ashvardanian/SimSIMD/releases/tag/v${version}";
|
||||
changelog = "https://github.com/ashvardanian/SimSIMD/releases/tag/${src.tag}";
|
||||
description = "Portable mixed-precision BLAS-like vector math library for x86 and ARM";
|
||||
homepage = "https://github.com/ashvardanian/simsimd";
|
||||
license = lib.licenses.asl20;
|
||||
|
||||
@@ -22,14 +22,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "tensordict";
|
||||
version = "0.7.0";
|
||||
version = "0.7.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pytorch";
|
||||
repo = "tensordict";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-KbCNBFewMx4kaWMoV+zREj6XTZiwmR4/I3zpf55wuOQ=";
|
||||
hash = "sha256-tUm1uV9k/IDlR3y/e1aIlU1bjDeh2+zdJdxu8Z9x3es=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
|
||||
@@ -48,14 +48,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "torchrl";
|
||||
version = "0.7.0";
|
||||
version = "0.7.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pytorch";
|
||||
repo = "rl";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-SMVm1XfHHqSkWTDVSqqO3kIxMBgV9A+XrEpJ56AyaBE=";
|
||||
hash = "sha256-+GE84GusipNZ18euV8ag0AbOtUrYfOxUAeXeCgF2OiI=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
{
|
||||
lib,
|
||||
mkRocqDerivation,
|
||||
which,
|
||||
rocq-core,
|
||||
version ? null,
|
||||
elpi-version ? null,
|
||||
}:
|
||||
|
||||
let
|
||||
default-elpi-version = if elpi-version != null then elpi-version else (
|
||||
lib.switch rocq-core.rocq-version [
|
||||
{ case = "9.0"; out = "2.0.7"; }
|
||||
] { }
|
||||
);
|
||||
elpi = rocq-core.ocamlPackages.elpi.override { version = default-elpi-version; };
|
||||
propagatedBuildInputs_wo_elpi = [
|
||||
rocq-core.ocamlPackages.findlib
|
||||
rocq-core.ocamlPackages.ppx_optcomp
|
||||
];
|
||||
derivation = mkRocqDerivation {
|
||||
pname = "elpi";
|
||||
repo = "coq-elpi";
|
||||
owner = "LPCIC";
|
||||
inherit version;
|
||||
defaultVersion = lib.switch rocq-core.rocq-version [
|
||||
{ case = "9.0"; out = "2.5.0"; }
|
||||
] null;
|
||||
release."2.5.0".sha256 = "sha256-Z5xjO83X/ZoTQlWnVupGXPH3HuJefr57Kv128I0dltg=";
|
||||
releaseRev = v: "v${v}";
|
||||
|
||||
mlPlugin = true;
|
||||
useDune = true;
|
||||
|
||||
propagatedBuildInputs = propagatedBuildInputs_wo_elpi ++ [ elpi ];
|
||||
|
||||
configurePhase = ''
|
||||
patchShebangs etc/with-rocq-wrap.sh
|
||||
make dune-files || true
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
etc/with-rocq-wrap.sh dune build -p rocq-elpi @install ''${enableParallelBuilding:+-j $NIX_BUILD_CORES}
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
etc/with-rocq-wrap.sh dune install --root . rocq-elpi --prefix=$out --libdir $OCAMLFIND_DESTDIR
|
||||
mkdir $out/lib/coq/
|
||||
mv $OCAMLFIND_DESTDIR/coq $out/lib/coq/${rocq-core.rocq-version}
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Rocq plugin embedding ELPI";
|
||||
maintainers = [ lib.maintainers.cohencyril ];
|
||||
license = lib.licenses.lgpl21Plus;
|
||||
};
|
||||
};
|
||||
patched-derivation1 = derivation.overrideAttrs
|
||||
(
|
||||
o:
|
||||
lib.optionalAttrs (o ? elpi-version)
|
||||
{
|
||||
propagatedBuildInputs = propagatedBuildInputs_wo_elpi ++ [
|
||||
(rocq-core.ocamlPackages.elpi.override { version = o.elpi-version; })
|
||||
];
|
||||
}
|
||||
);
|
||||
in patched-derivation1
|
||||
@@ -11,13 +11,13 @@
|
||||
buildHomeAssistantComponent rec {
|
||||
owner = "make-all";
|
||||
domain = "tuya_local";
|
||||
version = "2025.1.2";
|
||||
version = "2025.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
inherit owner;
|
||||
repo = "tuya-local";
|
||||
tag = version;
|
||||
hash = "sha256-qgNXY31YPzD1R+mdkw1nb35JU1rZ6kNj5Npjn+qfon4=";
|
||||
hash = "sha256-G/+mAq++bJ2Z41B6gi/izBLvuZwew3Tx/0mGZm4g6TE=";
|
||||
};
|
||||
|
||||
dependencies = [
|
||||
|
||||
@@ -67,11 +67,11 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "postfix";
|
||||
version = "3.9.1";
|
||||
version = "3.9.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://de.postfix.org/ftpmirror/official/postfix-${version}.tar.gz";
|
||||
hash = "sha256-xIiUTrA2JXbRj1+MxLmzKjW8s11xuUfarJdkr0dw9kM=";
|
||||
hash = "sha256-ApB+N9OpZz81eaMmMaimkCWCfqQnnm7gIk2E0fRNhl4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
diff --git a/lib/web/proxy/reverse_proxy.ex b/lib/web/proxy/reverse_proxy.ex
|
||||
index 8a78ef27..788ccc30 100644
|
||||
--- a/lib/web/proxy/reverse_proxy.ex
|
||||
+++ b/lib/web/proxy/reverse_proxy.ex
|
||||
@@ -187,9 +187,13 @@ defmodule Mobilizon.Web.ReverseProxy do
|
||||
@spec response(Plug.Conn.t(), any(), String.t(), pos_integer(), list(tuple()), Keyword.t()) ::
|
||||
Plug.Conn.t()
|
||||
defp response(conn, client, url, status, headers, opts) do
|
||||
+ headers = build_resp_headers(headers, opts)
|
||||
+ # Fix HTTP/1.1 protocol violation: content-length can't be combined with chunked encoding
|
||||
+ headers = Enum.reject(headers, fn {k, _} -> k == "content-length" end)
|
||||
+
|
||||
result =
|
||||
conn
|
||||
- |> put_resp_headers(build_resp_headers(headers, opts))
|
||||
+ |> put_resp_headers(headers)
|
||||
|> send_chunked(status)
|
||||
|> chunk_reply(client, opts)
|
||||
|
||||
@@ -19,10 +19,19 @@ in
|
||||
mixRelease rec {
|
||||
inherit (common) pname version src;
|
||||
|
||||
# Version 5.1.1 failed to bump their internal package version,
|
||||
# which causes issues with static file serving in the NixOS module.
|
||||
# See https://github.com/NixOS/nixpkgs/pull/370277
|
||||
patches = [ ./0001-fix-version.patch ];
|
||||
patches = [
|
||||
# Version 5.1.1 failed to bump their internal package version,
|
||||
# which causes issues with static file serving in the NixOS module.
|
||||
# See https://github.com/NixOS/nixpkgs/pull/370277
|
||||
./0001-fix-version.patch
|
||||
# Mobilizon uses chunked Transfer-Encoding for the media proxy but also
|
||||
# sets the Content-Length header. This is a HTTP/1.1 protocol violation
|
||||
# and results in nginx >=1.24 rejecting the response with this error:
|
||||
# 'upstream sent "Content-Length" and "Transfer-Encoding" headers at the same
|
||||
# time while reading response header from upstream'
|
||||
# Upstream PR: https://framagit.org/framasoft/mobilizon/-/merge_requests/1604
|
||||
./0002-fix-media-proxy.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
git
|
||||
|
||||
@@ -50,10 +50,6 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
patches = [
|
||||
./locale_archive.patch
|
||||
|
||||
(fetchurl {
|
||||
url = "https://git.alpinelinux.org/aports/plain/main/openssh/gss-serv.c.patch?id=a7509603971ce2f3282486a43bb773b1b522af83";
|
||||
sha256 = "sha256-eFFOd4B2nccRZAQWwdBPBoKWjfEdKEVGJvKZAzLu3HU=";
|
||||
})
|
||||
# See discussion in https://github.com/NixOS/nixpkgs/pull/16966
|
||||
./dont_create_privsep_path.patch
|
||||
] ++ extraPatches;
|
||||
|
||||
@@ -11,11 +11,11 @@ in
|
||||
{
|
||||
openssh = common rec {
|
||||
pname = "openssh";
|
||||
version = "9.9p1";
|
||||
version = "9.9p2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://openbsd/OpenSSH/portable/openssh-${version}.tar.gz";
|
||||
hash = "sha256-s0P7zb/4fxWxmG5uFdbU/Jp9NgZr5rf7UHCHuo+WbAI=";
|
||||
hash = "sha256-karbYD4IzChe3fll4RmdAlhfqU2ZTWyuW0Hhch4hVnM=";
|
||||
};
|
||||
|
||||
extraPatches = [ ./ssh-keysign-8.5.patch ];
|
||||
@@ -24,12 +24,12 @@ in
|
||||
|
||||
openssh_hpn = common rec {
|
||||
pname = "openssh-with-hpn";
|
||||
version = "9.9p1";
|
||||
version = "9.9p2";
|
||||
extraDesc = " with high performance networking patches";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://openbsd/OpenSSH/portable/openssh-${version}.tar.gz";
|
||||
hash = "sha256-s0P7zb/4fxWxmG5uFdbU/Jp9NgZr5rf7UHCHuo+WbAI=";
|
||||
hash = "sha256-karbYD4IzChe3fll4RmdAlhfqU2ZTWyuW0Hhch4hVnM=";
|
||||
};
|
||||
|
||||
extraPatches =
|
||||
@@ -67,12 +67,12 @@ in
|
||||
|
||||
openssh_gssapi = common rec {
|
||||
pname = "openssh-with-gssapi";
|
||||
version = "9.9p1";
|
||||
version = "9.9p2";
|
||||
extraDesc = " with GSSAPI support";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://openbsd/OpenSSH/portable/openssh-${version}.tar.gz";
|
||||
hash = "sha256-s0P7zb/4fxWxmG5uFdbU/Jp9NgZr5rf7UHCHuo+WbAI=";
|
||||
hash = "sha256-karbYD4IzChe3fll4RmdAlhfqU2ZTWyuW0Hhch4hVnM=";
|
||||
};
|
||||
|
||||
extraPatches = [
|
||||
@@ -80,8 +80,8 @@ in
|
||||
|
||||
(fetchpatch {
|
||||
name = "openssh-gssapi.patch";
|
||||
url = "https://salsa.debian.org/ssh-team/openssh/raw/debian/1%25${version}-2/debian/patches/gssapi.patch";
|
||||
hash = "sha256-cQF5psMZpLWwVqK9CNi+Q8wHn6w6ffQUJRNI5jKGgD0=";
|
||||
url = "https://salsa.debian.org/ssh-team/openssh/raw/debian/1%25${version}-1/debian/patches/gssapi.patch";
|
||||
hash = "sha256-JyOXA8Al8IFLdndJQ1LO+r4hJqtXjz1NHwOPiSAQkE8=";
|
||||
})
|
||||
];
|
||||
|
||||
|
||||
@@ -17360,10 +17360,6 @@ with pkgs;
|
||||
hepmc = hepmc2;
|
||||
};
|
||||
|
||||
rivet = callPackage ../development/libraries/physics/rivet {
|
||||
imagemagick = graphicsmagick-imagemagick-compat;
|
||||
};
|
||||
|
||||
yoda-with-root = lowPrio (yoda.override {
|
||||
withRootSupport = true;
|
||||
});
|
||||
|
||||
@@ -14,6 +14,7 @@ let
|
||||
mkRocqDerivation = lib.makeOverridable (callPackage ../build-support/rocq {});
|
||||
|
||||
bignums = callPackage ../development/rocq-modules/bignums {};
|
||||
rocq-elpi = callPackage ../development/rocq-modules/rocq-elpi {};
|
||||
stdlib = callPackage ../development/rocq-modules/stdlib {};
|
||||
|
||||
filterPackages = doesFilter: if doesFilter then filterRocqPackages self else self;
|
||||
|
||||
Reference in New Issue
Block a user