Merge master into staging-next

This commit is contained in:
github-actions[bot] 2022-03-13 00:02:14 +00:00 committed by GitHub
commit 6f7d104254
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
71 changed files with 6023 additions and 3104 deletions

View File

@ -826,6 +826,58 @@
include serif fonts.
</para>
</listitem>
<listitem>
<para>
<literal>pkgs.epgstation</literal> has been upgraded from v1
to v2, resulting in incompatible changes in the database
scheme and configuration format.
</para>
</listitem>
<listitem>
<para>
Some top-level settings under
<link linkend="opt-services.epgstation.enable">services.epgstation</link>
is now deprecated because it was redudant due to the same
options being present in
<link linkend="opt-services.epgstation.settings">services.epgstation.settings</link>.
</para>
</listitem>
<listitem>
<para>
The option <literal>services.epgstation.basicAuth</literal>
was removed because basic authentication support was dropped
by upstream.
</para>
</listitem>
<listitem>
<para>
The option
<link linkend="opt-services.epgstation.database.passwordFile">services.epgstation.database.passwordFile</link>
no longer has a default value. Make sure to set this option
explicitly before upgrading. Change the database password if
necessary.
</para>
</listitem>
<listitem>
<para>
The
<link linkend="opt-services.epgstation.settings">services.epgstation.settings</link>
option now expects options for <literal>config.yml</literal>
in EPGStation v2.
</para>
</listitem>
<listitem>
<para>
Existing data for the
<link linkend="opt-services.epgstation.enable">services.epgstation</link>
module would have to be backed up prior to the upgrade. To
back up exising data to
<literal>/tmp/epgstation.bak</literal>, run
<literal>sudo -u epgstation epgstation run backup /tmp/epgstation.bak</literal>.
To import that data after to the upgrade, run
<literal>sudo -u epgstation epgstation run v1migrate /tmp/epgstation.bak</literal>
</para>
</listitem>
<listitem>
<para>
<literal>switch-to-configuration</literal> (the script that is

View File

@ -321,6 +321,30 @@ In addition to numerous new and upgraded packages, this release has the followin
`pkgs.noto-fonts-cjk` is currently an alias of `pkgs.noto-fonts-cjk-sans` and
doesn't include serif fonts.
- `pkgs.epgstation` has been upgraded from v1 to v2, resulting in incompatible
changes in the database scheme and configuration format.
- Some top-level settings under [services.epgstation](#opt-services.epgstation.enable)
is now deprecated because it was redudant due to the same options being
present in [services.epgstation.settings](#opt-services.epgstation.settings).
- The option `services.epgstation.basicAuth` was removed because basic
authentication support was dropped by upstream.
- The option [services.epgstation.database.passwordFile](#opt-services.epgstation.database.passwordFile)
no longer has a default value. Make sure to set this option explicitly before
upgrading. Change the database password if necessary.
- The [services.epgstation.settings](#opt-services.epgstation.settings)
option now expects options for `config.yml` in EPGStation v2.
- Existing data for the [services.epgstation](#opt-services.epgstation.enable)
module would have to be backed up prior to the upgrade. To back up exising
data to `/tmp/epgstation.bak`, run
`sudo -u epgstation epgstation run backup /tmp/epgstation.bak`.
To import that data after to the upgrade, run
`sudo -u epgstation epgstation run v1migrate /tmp/epgstation.bak`
- `switch-to-configuration` (the script that is run when running `nixos-rebuild switch` for example) has been reworked
* The interface that allows activation scripts to restart units has been streamlined. Restarting and reloading is now done by a single file `/run/nixos/activation-restart-list` that honors `restartIfChanged` and `reloadIfChanged` of the units.
* Preferring to reload instead of restarting can still be achieved using `/run/nixos/activation-reload-list`.

View File

@ -1,30 +1,40 @@
{ config, lib, options, pkgs, ... }:
with lib;
let
cfg = config.services.epgstation;
opt = options.services.epgstation;
description = "EPGStation: DVR system for Mirakurun-managed TV tuners";
username = config.users.users.epgstation.name;
groupname = config.users.users.epgstation.group;
mirakurun = {
sock = config.services.mirakurun.unixSocket;
option = options.services.mirakurun.unixSocket;
};
settingsFmt = pkgs.formats.json {};
settingsTemplate = settingsFmt.generate "config.json" cfg.settings;
yaml = pkgs.formats.yaml { };
settingsTemplate = yaml.generate "config.yml" cfg.settings;
preStartScript = pkgs.writeScript "epgstation-prestart" ''
#!${pkgs.runtimeShell}
PASSWORD="$(head -n1 "${cfg.basicAuth.passwordFile}")"
DB_PASSWORD="$(head -n1 "${cfg.database.passwordFile}")"
DB_PASSWORD_FILE=${lib.escapeShellArg cfg.database.passwordFile}
if [[ ! -f "$DB_PASSWORD_FILE" ]]; then
printf "[FATAL] File containing the DB password was not found in '%s'. Double check the NixOS option '%s'." \
"$DB_PASSWORD_FILE" ${lib.escapeShellArg opt.database.passwordFile} >&2
exit 1
fi
DB_PASSWORD="$(head -n1 ${lib.escapeShellArg cfg.database.passwordFile})"
# setup configuration
touch /etc/epgstation/config.json
chmod 640 /etc/epgstation/config.json
touch /etc/epgstation/config.yml
chmod 640 /etc/epgstation/config.yml
sed \
-e "s,@password@,$PASSWORD,g" \
-e "s,@dbPassword@,$DB_PASSWORD,g" \
${settingsTemplate} > /etc/epgstation/config.json
chown "${username}:${groupname}" /etc/epgstation/config.json
${settingsTemplate} > /etc/epgstation/config.yml
chown "${username}:${groupname}" /etc/epgstation/config.yml
# NOTE: Use password authentication, since mysqljs does not yet support auth_socket
if [ ! -e /var/lib/epgstation/db-created ]; then
@ -35,7 +45,7 @@ let
'';
streamingConfig = lib.importJSON ./streaming.json;
logConfig = {
logConfig = yaml.generate "logConfig.yml" {
appenders.stdout.type = "stdout";
categories = {
default = { appenders = [ "stdout" ]; level = "info"; };
@ -45,53 +55,51 @@ let
};
};
defaultPassword = "INSECURE_GO_CHECK_CONFIGURATION_NIX\n";
# Deprecate top level options that are redundant.
deprecateTopLevelOption = config:
lib.mkRenamedOptionModule
([ "services" "epgstation" ] ++ config)
([ "services" "epgstation" "settings" ] ++ config);
removeOption = config: instruction:
lib.mkRemovedOptionModule
([ "services" "epgstation" ] ++ config)
instruction;
in
{
options.services.epgstation = {
enable = mkEnableOption "EPGStation: DTV Software in Japan";
meta.maintainers = with lib.maintainers; [ midchildan ];
usePreconfiguredStreaming = mkOption {
type = types.bool;
imports = [
(deprecateTopLevelOption [ "port" ])
(deprecateTopLevelOption [ "socketioPort" ])
(deprecateTopLevelOption [ "clientSocketioPort" ])
(removeOption [ "basicAuth" ]
"Use a TLS-terminated reverse proxy with authentication instead.")
];
options.services.epgstation = {
enable = lib.mkEnableOption description;
package = lib.mkOption {
default = pkgs.epgstation;
type = lib.types.package;
defaultText = lib.literalExpression "pkgs.epgstation";
description = "epgstation package to use";
};
usePreconfiguredStreaming = lib.mkOption {
type = lib.types.bool;
default = true;
description = ''
Use preconfigured default streaming options.
Upstream defaults:
<link xlink:href="https://github.com/l3tnun/EPGStation/blob/master/config/config.sample.json"/>
<link xlink:href="https://github.com/l3tnun/EPGStation/blob/master/config/config.yml.template"/>
'';
};
port = mkOption {
type = types.port;
default = 20772;
description = ''
HTTP port for EPGStation to listen on.
'';
};
socketioPort = mkOption {
type = types.port;
default = cfg.port + 1;
defaultText = literalExpression "config.${opt.port} + 1";
description = ''
Socket.io port for EPGStation to listen on.
'';
};
clientSocketioPort = mkOption {
type = types.port;
default = cfg.socketioPort;
defaultText = literalExpression "config.${opt.socketioPort}";
description = ''
Socket.io port that the web client is going to connect to. This may be
different from <option>socketioPort</option> if EPGStation is hidden
behind a reverse proxy.
'';
};
openFirewall = mkOption {
type = types.bool;
openFirewall = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
Open ports in the firewall for the EPGStation web interface.
@ -106,50 +114,17 @@ in
'';
};
basicAuth = {
user = mkOption {
type = with types; nullOr str;
default = null;
example = "epgstation";
description = ''
Basic auth username for EPGStation. If <literal>null</literal>, basic
auth will be disabled.
<warning>
<para>
Basic authentication has known weaknesses, the most critical being
that it sends passwords over the network in clear text. Use this
feature to control access to EPGStation within your family and
friends, but don't rely on it for security.
</para>
</warning>
'';
};
passwordFile = mkOption {
type = types.path;
default = pkgs.writeText "epgstation-password" defaultPassword;
defaultText = literalDocBook ''a file containing <literal>${defaultPassword}</literal>'';
example = "/run/keys/epgstation-password";
description = ''
A file containing the password for <option>basicAuth.user</option>.
'';
};
};
database = {
name = mkOption {
type = types.str;
database = {
name = lib.mkOption {
type = lib.types.str;
default = "epgstation";
description = ''
Name of the MySQL database that holds EPGStation's data.
'';
};
passwordFile = mkOption {
type = types.path;
default = pkgs.writeText "epgstation-db-password" defaultPassword;
defaultText = literalDocBook ''a file containing <literal>${defaultPassword}</literal>'';
passwordFile = lib.mkOption {
type = lib.types.path;
example = "/run/keys/epgstation-db-password";
description = ''
A file containing the password for the database named
@ -158,69 +133,106 @@ in
};
};
settings = mkOption {
# The defaults for some options come from the upstream template
# configuration, which is the one that users would get if they follow the
# upstream instructions. This is, in some cases, different from the
# application defaults. Some options like encodeProcessNum and
# concurrentEncodeNum doesn't have an optimal default value that works for
# all hardware setups and/or performance requirements. For those kind of
# options, the application default wouldn't always result in the expected
# out-of-the-box behavior because it's the responsibility of the user to
# configure them according to their needs. In these cases, the value in the
# upstream template configuration should serve as a "good enough" default.
settings = lib.mkOption {
description = ''
Options to add to config.json.
Options to add to config.yml.
Documentation:
<link xlink:href="https://github.com/l3tnun/EPGStation/blob/master/doc/conf-manual.md"/>
'';
default = {};
default = { };
example = {
recPriority = 20;
conflictPriority = 10;
};
type = types.submodule {
freeformType = settingsFmt.type;
type = lib.types.submodule {
freeformType = yaml.type;
options.readOnlyOnce = mkOption {
type = types.bool;
default = false;
description = "Don't reload configuration files at runtime.";
options.port = lib.mkOption {
type = lib.types.port;
default = 20772;
description = ''
HTTP port for EPGStation to listen on.
'';
};
options.mirakurunPath = mkOption (let
sockPath = config.services.mirakurun.unixSocket;
in {
type = types.str;
default = "http+unix://${replaceStrings ["/"] ["%2F"] sockPath}";
defaultText = literalExpression ''
"http+unix://''${replaceStrings ["/"] ["%2F"] config.${options.services.mirakurun.unixSocket}}"
options.socketioPort = lib.mkOption {
type = lib.types.port;
default = cfg.settings.port + 1;
defaultText = lib.literalExpression "config.${opt.settings}.port + 1";
description = ''
Socket.io port for EPGStation to listen on. It is valid to share
ports with <option>${opt.settings}.port</option>.
'';
};
options.clientSocketioPort = lib.mkOption {
type = lib.types.port;
default = cfg.settings.socketioPort;
defaultText = lib.literalExpression "config.${opt.settings}.socketioPort";
description = ''
Socket.io port that the web client is going to connect to. This may
be different from <option>${opt.settings}.socketioPort</option> if
EPGStation is hidden behind a reverse proxy.
'';
};
options.mirakurunPath = with mirakurun; lib.mkOption {
type = lib.types.str;
default = "http+unix://${lib.replaceStrings ["/"] ["%2F"] sock}";
defaultText = lib.literalExpression ''
"http+unix://''${lib.replaceStrings ["/"] ["%2F"] config.${option}}"
'';
example = "http://localhost:40772";
description = "URL to connect to Mirakurun.";
});
};
options.encode = mkOption {
type = with types; listOf attrs;
options.encodeProcessNum = lib.mkOption {
type = lib.types.ints.positive;
default = 4;
description = ''
The maximum number of processes that EPGStation would allow to run
at the same time for encoding or streaming videos.
'';
};
options.concurrentEncodeNum = lib.mkOption {
type = lib.types.ints.positive;
default = 1;
description = ''
The maximum number of encoding jobs that EPGStation would run at the
same time.
'';
};
options.encode = lib.mkOption {
type = with lib.types; listOf attrs;
description = "Encoding presets for recorded videos.";
default = [
{
name = "H264";
cmd = "${pkgs.epgstation}/libexec/enc.sh main";
name = "H.264";
cmd = "%NODE% ${cfg.package}/libexec/enc.js";
suffix = ".mp4";
default = true;
}
{
name = "H264-sub";
cmd = "${pkgs.epgstation}/libexec/enc.sh sub";
suffix = "-sub.mp4";
}
];
defaultText = literalExpression ''
defaultText = lib.literalExpression ''
[
{
name = "H264";
cmd = "''${pkgs.epgstation}/libexec/enc.sh main";
name = "H.264";
cmd = "%NODE% config.${opt.package}/libexec/enc.js";
suffix = ".mp4";
default = true;
}
{
name = "H264-sub";
cmd = "''${pkgs.epgstation}/libexec/enc.sh sub";
suffix = "-sub.mp4";
}
]
'';
@ -229,14 +241,25 @@ in
};
};
config = mkIf cfg.enable {
config = lib.mkIf cfg.enable {
assertions = [
{
assertion = !(lib.hasAttr "readOnlyOnce" cfg.settings);
message = ''
The option config.${opt.settings}.readOnlyOnce can no longer be used
since it's been removed. No replacements are available.
'';
}
];
environment.etc = {
"epgstation/operatorLogConfig.json".text = builtins.toJSON logConfig;
"epgstation/serviceLogConfig.json".text = builtins.toJSON logConfig;
"epgstation/epgUpdaterLogConfig.yml".source = logConfig;
"epgstation/operatorLogConfig.yml".source = logConfig;
"epgstation/serviceLogConfig.yml".source = logConfig;
};
networking.firewall = mkIf cfg.openFirewall {
allowedTCPPorts = with cfg; [ port socketioPort ];
networking.firewall = lib.mkIf cfg.openFirewall {
allowedTCPPorts = with cfg.settings; [ port socketioPort ];
};
users.users.epgstation = {
@ -245,13 +268,13 @@ in
isSystemUser = true;
};
users.groups.epgstation = {};
users.groups.epgstation = { };
services.mirakurun.enable = mkDefault true;
services.mirakurun.enable = lib.mkDefault true;
services.mysql = {
enable = mkDefault true;
package = mkDefault pkgs.mariadb;
enable = lib.mkDefault true;
package = lib.mkDefault pkgs.mariadb;
ensureDatabases = [ cfg.database.name ];
# FIXME: enable once mysqljs supports auth_socket
# ensureUsers = [ {
@ -260,39 +283,28 @@ in
# } ];
};
services.epgstation.settings = let
defaultSettings = {
serverPort = cfg.port;
socketioPort = cfg.socketioPort;
clientSocketioPort = cfg.clientSocketioPort;
services.epgstation.settings =
let
defaultSettings = {
dbtype = lib.mkDefault "mysql";
mysql = {
socketPath = lib.mkDefault "/run/mysqld/mysqld.sock";
user = username;
password = lib.mkDefault "@dbPassword@";
database = cfg.database.name;
};
dbType = mkDefault "mysql";
mysql = {
user = username;
database = cfg.database.name;
socketPath = mkDefault "/run/mysqld/mysqld.sock";
password = mkDefault "@dbPassword@";
connectTimeout = mkDefault 1000;
connectionLimit = mkDefault 10;
ffmpeg = lib.mkDefault "${pkgs.ffmpeg-full}/bin/ffmpeg";
ffprobe = lib.mkDefault "${pkgs.ffmpeg-full}/bin/ffprobe";
# for disambiguation with TypeScript files
recordedFileExtension = lib.mkDefault ".m2ts";
};
basicAuth = mkIf (cfg.basicAuth.user != null) {
user = mkDefault cfg.basicAuth.user;
password = mkDefault "@password@";
};
ffmpeg = mkDefault "${pkgs.ffmpeg-full}/bin/ffmpeg";
ffprobe = mkDefault "${pkgs.ffmpeg-full}/bin/ffprobe";
fileExtension = mkDefault ".m2ts";
maxEncode = mkDefault 2;
maxStreaming = mkDefault 2;
};
in
mkMerge [
defaultSettings
(mkIf cfg.usePreconfiguredStreaming streamingConfig)
];
in
lib.mkMerge [
defaultSettings
(lib.mkIf cfg.usePreconfiguredStreaming streamingConfig)
];
systemd.tmpfiles.rules = [
"d '/var/lib/epgstation/streamfiles' - ${username} ${groupname} - -"
@ -301,15 +313,15 @@ in
];
systemd.services.epgstation = {
description = pkgs.epgstation.meta.description;
inherit description;
wantedBy = [ "multi-user.target" ];
after = [
"network.target"
] ++ optional config.services.mirakurun.enable "mirakurun.service"
++ optional config.services.mysql.enable "mysql.service";
after = [ "network.target" ]
++ lib.optional config.services.mirakurun.enable "mirakurun.service"
++ lib.optional config.services.mysql.enable "mysql.service";
serviceConfig = {
ExecStart = "${pkgs.epgstation}/bin/epgstation start";
ExecStart = "${cfg.package}/bin/epgstation start";
ExecStartPre = "+${preStartScript}";
User = username;
Group = groupname;

View File

@ -1,119 +1,140 @@
{
"liveHLS": [
{
"name": "720p",
"cmd": "%FFMPEG% -re -dual_mono_mode main -i pipe:0 -sn -threads 0 -map 0 -ignore_unknown -max_muxing_queue_size 1024 -f hls -hls_time 3 -hls_list_size 17 -hls_allow_cache 1 -hls_segment_filename %streamFileDir%/stream%streamNum%-%09d.ts -c:a aac -ar 48000 -b:a 192k -ac 2 -c:v libx264 -vf yadif,scale=-2:720 -b:v 3000k -preset veryfast -flags +loop-global_header %OUTPUT%"
"urlscheme": {
"m2ts": {
"ios": "vlc-x-callback://x-callback-url/stream?url=PROTOCOL://ADDRESS",
"android": "intent://ADDRESS#Intent;package=org.videolan.vlc;type=video;scheme=PROTOCOL;end"
},
{
"name": "480p",
"cmd": "%FFMPEG% -re -dual_mono_mode main -i pipe:0 -sn -threads 0 -map 0 -ignore_unknown -max_muxing_queue_size 1024 -f hls -hls_time 3 -hls_list_size 17 -hls_allow_cache 1 -hls_segment_filename %streamFileDir%/stream%streamNum%-%09d.ts -c:a aac -ar 48000 -b:a 128k -ac 2 -c:v libx264 -vf yadif,scale=-2:480 -b:v 1500k -preset veryfast -flags +loop-global_header %OUTPUT%"
"video": {
"ios": "infuse://x-callback-url/play?url=PROTOCOL://ADDRESS",
"android": "intent://ADDRESS#Intent;package=com.mxtech.videoplayer.ad;type=video;scheme=PROTOCOL;end"
},
{
"name": "180p",
"cmd": "%FFMPEG% -re -dual_mono_mode main -i pipe:0 -sn -threads 0 -map 0 -ignore_unknown -max_muxing_queue_size 1024 -f hls -hls_time 3 -hls_list_size 17 -hls_allow_cache 1 -hls_segment_filename %streamFileDir%/stream%streamNum%-%09d.ts -c:a aac -ar 48000 -b:a 48k -ac 2 -c:v libx264 -vf yadif,scale=-2:180 -b:v 100k -preset veryfast -maxrate 110k -bufsize 1000k -flags +loop-global_header %OUTPUT%"
"download": {
"ios": "vlc-x-callback://x-callback-url/download?url=PROTOCOL://ADDRESS&filename=FILENAME"
}
],
"liveMP4": [
{
"name": "720p",
"cmd": "%FFMPEG% -re -dual_mono_mode main -i pipe:0 -sn -threads 0 -c:a aac -ar 48000 -b:a 192k -ac 2 -c:v libx264 -vf yadif,scale=-2:720 -b:v 3000k -profile:v baseline -preset veryfast -tune fastdecode,zerolatency -movflags frag_keyframe+empty_moov+faststart+default_base_moof -y -f mp4 pipe:1"
},
{
"name": "480p",
"cmd": "%FFMPEG% -re -dual_mono_mode main -i pipe:0 -sn -threads 0 -c:a aac -ar 48000 -b:a 128k -ac 2 -c:v libx264 -vf yadif,scale=-2:480 -b:v 1500k -profile:v baseline -preset veryfast -tune fastdecode,zerolatency -movflags frag_keyframe+empty_moov+faststart+default_base_moof -y -f mp4 pipe:1"
}
],
"liveWebM": [
{
"name": "720p",
"cmd": "%FFMPEG% -re -dual_mono_mode main -i pipe:0 -sn -threads 3 -c:a libvorbis -ar 48000 -b:a 192k -ac 2 -c:v libvpx-vp9 -vf yadif,scale=-2:720 -b:v 3000k -deadline realtime -speed 4 -cpu-used -8 -y -f webm pipe:1"
},
{
"name": "480p",
"cmd": "%FFMPEG% -re -dual_mono_mode main -i pipe:0 -sn -threads 2 -c:a libvorbis -ar 48000 -b:a 128k -ac 2 -c:v libvpx-vp9 -vf yadif,scale=-2:480 -b:v 1500k -deadline realtime -speed 4 -cpu-used -8 -y -f webm pipe:1"
}
],
"mpegTsStreaming": [
{
"name": "720p",
"cmd": "%FFMPEG% -re -dual_mono_mode main -i pipe:0 -sn -threads 0 -c:a aac -ar 48000 -b:a 192k -ac 2 -c:v libx264 -vf yadif,scale=-2:720 -b:v 3000k -preset veryfast -y -f mpegts pipe:1"
},
{
"name": "480p",
"cmd": "%FFMPEG% -re -dual_mono_mode main -i pipe:0 -sn -threads 0 -c:a aac -ar 48000 -b:a 128k -ac 2 -c:v libx264 -vf yadif,scale=-2:480 -b:v 1500k -preset veryfast -y -f mpegts pipe:1"
},
{
"name": "Original"
}
],
"mpegTsViewer": {
"ios": "vlc-x-callback://x-callback-url/stream?url=http://ADDRESS",
"android": "intent://ADDRESS#Intent;package=com.mxtech.videoplayer.ad;type=video;scheme=http;end"
},
"recordedDownloader": {
"ios": "vlc-x-callback://x-callback-url/download?url=http://ADDRESS&filename=FILENAME",
"android": "intent://ADDRESS#Intent;package=com.dv.adm;type=video;scheme=http;end"
},
"recordedStreaming": {
"webm": [
{
"name": "720p",
"cmd": "%FFMPEG% -dual_mono_mode main %RE% -i pipe:0 -sn -threads 3 -c:a libvorbis -ar 48000 -ac 2 -c:v libvpx-vp9 -vf yadif,scale=-2:720 %VB% %VBUFFER% %AB% %ABUFFER% -deadline realtime -speed 4 -cpu-used -8 -y -f webm pipe:1",
"vb": "3000k",
"ab": "192k"
},
{
"name": "360p",
"cmd": "%FFMPEG% -dual_mono_mode main %RE% -i pipe:0 -sn -threads 2 -c:a libvorbis -ar 48000 -ac 2 -c:v libvpx-vp9 -vf yadif,scale=-2:360 %VB% %VBUFFER% %AB% %ABUFFER% -deadline realtime -speed 4 -cpu-used -8 -y -f webm pipe:1",
"vb": "1500k",
"ab": "128k"
"stream": {
"live": {
"ts": {
"m2ts": [
{
"name": "720p",
"cmd": "%FFMPEG% -re -dual_mono_mode main -i pipe:0 -sn -threads 0 -c:a aac -ar 48000 -b:a 192k -ac 2 -c:v libx264 -vf yadif,scale=-2:720 -b:v 3000k -preset veryfast -y -f mpegts pipe:1"
},
{
"name": "480p",
"cmd": "%FFMPEG% -re -dual_mono_mode main -i pipe:0 -sn -threads 0 -c:a aac -ar 48000 -b:a 128k -ac 2 -c:v libx264 -vf yadif,scale=-2:480 -b:v 1500k -preset veryfast -y -f mpegts pipe:1"
},
{
"name": "無変換"
}
],
"m2tsll": [
{
"name": "720p",
"cmd": "%FFMPEG% -dual_mono_mode main -f mpegts -analyzeduration 500000 -i pipe:0 -map 0 -c:s copy -c:d copy -ignore_unknown -fflags nobuffer -flags low_delay -max_delay 250000 -max_interleave_delta 1 -threads 0 -c:a aac -ar 48000 -b:a 192k -ac 2 -c:v libx264 -flags +cgop -vf yadif,scale=-2:720 -b:v 3000k -preset veryfast -y -f mpegts pipe:1"
},
{
"name": "480p",
"cmd": "%FFMPEG% -dual_mono_mode main -f mpegts -analyzeduration 500000 -i pipe:0 -map 0 -c:s copy -c:d copy -ignore_unknown -fflags nobuffer -flags low_delay -max_delay 250000 -max_interleave_delta 1 -threads 0 -c:a aac -ar 48000 -b:a 128k -ac 2 -c:v libx264 -flags +cgop -vf yadif,scale=-2:480 -b:v 1500k -preset veryfast -y -f mpegts pipe:1"
}
],
"webm": [
{
"name": "720p",
"cmd": "%FFMPEG% -re -dual_mono_mode main -i pipe:0 -sn -threads 3 -c:a libvorbis -ar 48000 -b:a 192k -ac 2 -c:v libvpx-vp9 -vf yadif,scale=-2:720 -b:v 3000k -deadline realtime -speed 4 -cpu-used -8 -y -f webm pipe:1"
},
{
"name": "480p",
"cmd": "%FFMPEG% -re -dual_mono_mode main -i pipe:0 -sn -threads 2 -c:a libvorbis -ar 48000 -b:a 128k -ac 2 -c:v libvpx-vp9 -vf yadif,scale=-2:480 -b:v 1500k -deadline realtime -speed 4 -cpu-used -8 -y -f webm pipe:1"
}
],
"mp4": [
{
"name": "720p",
"cmd": "%FFMPEG% -re -dual_mono_mode main -i pipe:0 -sn -threads 0 -c:a aac -ar 48000 -b:a 192k -ac 2 -c:v libx264 -vf yadif,scale=-2:720 -b:v 3000k -profile:v baseline -preset veryfast -tune fastdecode,zerolatency -movflags frag_keyframe+empty_moov+faststart+default_base_moof -y -f mp4 pipe:1"
},
{
"name": "480p",
"cmd": "%FFMPEG% -re -dual_mono_mode main -i pipe:0 -sn -threads 0 -c:a aac -ar 48000 -b:a 128k -ac 2 -c:v libx264 -vf yadif,scale=-2:480 -b:v 1500k -profile:v baseline -preset veryfast -tune fastdecode,zerolatency -movflags frag_keyframe+empty_moov+faststart+default_base_moof -y -f mp4 pipe:1"
}
],
"hls": [
{
"name": "720p",
"cmd": "%FFMPEG% -re -dual_mono_mode main -i pipe:0 -sn -map 0 -threads 0 -ignore_unknown -max_muxing_queue_size 1024 -f hls -hls_time 3 -hls_list_size 17 -hls_allow_cache 1 -hls_segment_filename %streamFileDir%/stream%streamNum%-%09d.ts -hls_flags delete_segments -c:a aac -ar 48000 -b:a 192k -ac 2 -c:v libx264 -vf yadif,scale=-2:720 -b:v 3000k -preset veryfast -flags +loop-global_header %OUTPUT%"
},
{
"name": "480p",
"cmd": "%FFMPEG% -re -dual_mono_mode main -i pipe:0 -sn -map 0 -threads 0 -ignore_unknown -max_muxing_queue_size 1024 -f hls -hls_time 3 -hls_list_size 17 -hls_allow_cache 1 -hls_segment_filename %streamFileDir%/stream%streamNum%-%09d.ts -hls_flags delete_segments -c:a aac -ar 48000 -b:a 128k -ac 2 -c:v libx264 -vf yadif,scale=-2:480 -b:v 1500k -preset veryfast -flags +loop-global_header %OUTPUT%"
}
]
}
],
"mp4": [
{
"name": "720p",
"cmd": "%FFMPEG% -dual_mono_mode main %RE% -i pipe:0 -sn -threads 0 -c:a aac -ar 48000 -ac 2 -c:v libx264 -vf yadif,scale=-2:720 %VB% %VBUFFER% %AB% %ABUFFER% -profile:v baseline -preset veryfast -tune fastdecode,zerolatency -movflags frag_keyframe+empty_moov+faststart+default_base_moof -y -f mp4 pipe:1",
"vb": "3000k",
"ab": "192k"
},
{
"name": "360p",
"cmd": "%FFMPEG% -dual_mono_mode main %RE% -i pipe:0 -sn -threads 0 -c:a aac -ar 48000 -ac 2 -c:v libx264 -vf yadif,scale=-2:360 %VB% %VBUFFER% %AB% %ABUFFER% -profile:v baseline -preset veryfast -tune fastdecode,zerolatency -movflags frag_keyframe+empty_moov+faststart+default_base_moof -y -f mp4 pipe:1",
"vb": "1500k",
"ab": "128k"
}
],
"mpegTs": [
{
"name": "720p (H.264)",
"cmd": "%FFMPEG% -dual_mono_mode main %RE% -i pipe:0 -sn -threads 0 -c:a aac -ar 48000 -ac 2 -c:v libx264 -vf yadif,scale=-2:720 %VB% %VBUFFER% %AB% %ABUFFER% -profile:v baseline -preset veryfast -tune fastdecode,zerolatency -y -f mpegts pipe:1",
"vb": "3000k",
"ab": "192k"
},
{
"name": "360p (H.264)",
"cmd": "%FFMPEG% -dual_mono_mode main %RE% -i pipe:0 -sn -threads 0 -c:a aac -ar 48000 -ac 2 -c:v libx264 -vf yadif,scale=-2:360 %VB% %VBUFFER% %AB% %ABUFFER% -profile:v baseline -preset veryfast -tune fastdecode,zerolatency -y -f mpegts pipe:1",
"vb": "1500k",
"ab": "128k"
}
]
},
"recordedHLS": [
{
"name": "720p",
"cmd": "%FFMPEG% -dual_mono_mode main -i %INPUT% -sn -threads 0 -map 0 -ignore_unknown -max_muxing_queue_size 1024 -f hls -hls_time 3 -hls_list_size 0 -hls_allow_cache 1 -hls_segment_filename %streamFileDir%/stream%streamNum%-%09d.ts -c:a aac -ar 48000 -b:a 192k -ac 2 -c:v libx264 -vf yadif,scale=-2:720 -b:v 3000k -preset veryfast -flags +loop-global_header %OUTPUT%"
},
{
"name": "480p",
"cmd": "%FFMPEG% -dual_mono_mode main -i %INPUT% -sn -threads 0 -map 0 -ignore_unknown -max_muxing_queue_size 1024 -f hls -hls_time 3 -hls_list_size 0 -hls_allow_cache 1 -hls_segment_filename %streamFileDir%/stream%streamNum%-%09d.ts -c:a aac -ar 48000 -b:a 128k -ac 2 -c:v libx264 -vf yadif,scale=-2:480 -b:v 1500k -preset veryfast -flags +loop-global_header %OUTPUT%"
},
{
"name": "480p(h265)",
"cmd": "%FFMPEG% -dual_mono_mode main -i %INPUT% -sn -map 0 -ignore_unknown -max_muxing_queue_size 1024 -f hls -hls_time 3 -hls_list_size 0 -hls_allow_cache 1 -hls_segment_type fmp4 -hls_fmp4_init_filename stream%streamNum%-init.mp4 -hls_segment_filename stream%streamNum%-%09d.m4s -c:a aac -ar 48000 -b:a 128k -ac 2 -c:v libx265 -vf yadif,scale=-2:480 -b:v 350k -preset veryfast -tag:v hvc1 %OUTPUT%"
"recorded": {
"ts": {
"webm": [
{
"name": "720p",
"cmd": "%FFMPEG% -dual_mono_mode main -i pipe:0 -sn -threads 3 -c:a libvorbis -ar 48000 -b:a 192k -ac 2 -c:v libvpx-vp9 -vf yadif,scale=-2:720 -b:v 3000k -deadline realtime -speed 4 -cpu-used -8 -y -f webm pipe:1"
},
{
"name": "480p",
"cmd": "%FFMPEG% -dual_mono_mode main -i pipe:0 -sn -threads 3 -c:a libvorbis -ar 48000 -b:a 128k -ac 2 -c:v libvpx-vp9 -vf yadif,scale=-2:480 -b:v 1500k -deadline realtime -speed 4 -cpu-used -8 -y -f webm pipe:1"
}
],
"mp4": [
{
"name": "720p",
"cmd": "%FFMPEG% -dual_mono_mode main -i pipe:0 -sn -threads 0 -c:a aac -ar 48000 -b:a 192k -ac 2 -c:v libx264 -vf yadif,scale=-2:720 -b:v 3000k -profile:v baseline -preset veryfast -tune fastdecode,zerolatency -movflags frag_keyframe+empty_moov+faststart+default_base_moof -y -f mp4 pipe:1"
},
{
"name": "480p",
"cmd": "%FFMPEG% -dual_mono_mode main -i pipe:0 -sn -threads 0 -c:a aac -ar 48000 -b:a 128k -ac 2 -c:v libx264 -vf yadif,scale=-2:480 -b:v 1500k -profile:v baseline -preset veryfast -tune fastdecode,zerolatency -movflags frag_keyframe+empty_moov+faststart+default_base_moof -y -f mp4 pipe:1"
}
],
"hls": [
{
"name": "720p",
"cmd": "%FFMPEG% -dual_mono_mode main -i pipe:0 -sn -map 0 -threads 0 -ignore_unknown -max_muxing_queue_size 1024 -f hls -hls_time 3 -hls_list_size 0 -hls_allow_cache 1 -hls_segment_filename %streamFileDir%/stream%streamNum%-%09d.ts -hls_flags delete_segments -c:a aac -ar 48000 -b:a 192k -ac 2 -c:v libx264 -vf yadif,scale=-2:720 -b:v 3000k -preset veryfast -flags +loop-global_header %OUTPUT%"
},
{
"name": "480p",
"cmd": "%FFMPEG% -dual_mono_mode main -i pipe:0 -sn -map 0 -threads 0 -ignore_unknown -max_muxing_queue_size 1024 -f hls -hls_time 3 -hls_list_size 0 -hls_allow_cache 1 -hls_segment_filename %streamFileDir%/stream%streamNum%-%09d.ts -hls_flags delete_segments -c:a aac -ar 48000 -b:a 128k -ac 2 -c:v libx264 -vf yadif,scale=-2:480 -b:v 1500k -preset veryfast -flags +loop-global_header %OUTPUT%"
}
]
},
"encoded": {
"webm": [
{
"name": "720p",
"cmd": "%FFMPEG% -dual_mono_mode main -ss %SS% -i %INPUT% -sn -threads 3 -c:a libvorbis -ar 48000 -b:a 192k -ac 2 -c:v libvpx-vp9 -vf scale=-2:720 -b:v 3000k -deadline realtime -speed 4 -cpu-used -8 -y -f webm pipe:1"
},
{
"name": "480p",
"cmd": "%FFMPEG% -dual_mono_mode main -ss %SS% -i %INPUT% -sn -threads 3 -c:a libvorbis -ar 48000 -b:a 128k -ac 2 -c:v libvpx-vp9 -vf scale=-2:480 -b:v 1500k -deadline realtime -speed 4 -cpu-used -8 -y -f webm pipe:1"
}
],
"mp4": [
{
"name": "720p",
"cmd": "%FFMPEG% -dual_mono_mode main -ss %SS% -i %INPUT% -sn -threads 0 -c:a aac -ar 48000 -b:a 192k -ac 2 -c:v libx264 -vf scale=-2:720 -b:v 3000k -profile:v baseline -preset veryfast -tune fastdecode,zerolatency -movflags frag_keyframe+empty_moov+faststart+default_base_moof -y -f mp4 pipe:1"
},
{
"name": "480p",
"cmd": "%FFMPEG% -dual_mono_mode main -ss %SS% -i %INPUT% -sn -threads 0 -c:a aac -ar 48000 -b:a 128k -ac 2 -c:v libx264 -vf scale=-2:480 -b:v 1500k -profile:v baseline -preset veryfast -tune fastdecode,zerolatency -movflags frag_keyframe+empty_moov+faststart+default_base_moof -y -f mp4 pipe:1"
}
],
"hls": [
{
"name": "720p",
"cmd": "%FFMPEG% -dual_mono_mode main -ss %SS% -i %INPUT% -sn -threads 0 -ignore_unknown -max_muxing_queue_size 1024 -f hls -hls_time 3 -hls_list_size 0 -hls_allow_cache 1 -hls_segment_filename %streamFileDir%/stream%streamNum%-%09d.ts -hls_flags delete_segments -c:a aac -ar 48000 -b:a 192k -ac 2 -c:v libx264 -vf scale=-2:720 -b:v 3000k -preset veryfast -flags +loop-global_header %OUTPUT%"
},
{
"name": "480p",
"cmd": "%FFMPEG% -dual_mono_mode main -ss %SS% -i %INPUT% -sn -threads 0 -ignore_unknown -max_muxing_queue_size 1024 -f hls -hls_time 3 -hls_list_size 0 -hls_allow_cache 1 -hls_segment_filename %streamFileDir%/stream%streamNum%-%09d.ts -hls_flags delete_segments -c:a aac -ar 48000 -b:a 128k -ac 2 -c:v libx264 -vf scale=-2:480 -b:v 3000k -preset veryfast -flags +loop-global_header %OUTPUT%"
}
]
}
}
],
"recordedViewer": {
"ios": "infuse://x-callback-url/play?url=http://ADDRESS",
"android": "intent://ADDRESS#Intent;package=com.mxtech.videoplayer.ad;type=video;scheme=http;end"
}
}

View File

@ -6,11 +6,11 @@
stdenv.mkDerivation rec {
pname = "bitwig-studio";
version = "4.1.6";
version = "4.2";
src = fetchurl {
url = "https://downloads.bitwig.com/stable/${version}/${pname}-${version}.deb";
sha256 = "sha256-Q4YYdMUd/T8tGGcakhoLdHvWsHwOq7LgIb77sr2OWuQ=";
sha256 = "sha256-hIIEVj5sM/NdhBiwerFvyIXqj0R8EvcxwM6UZ0CE428=";
};
nativeBuildInputs = [ dpkg makeWrapper wrapGAppsHook ];

View File

@ -13,10 +13,10 @@ let
archive_fmt = if system == "x86_64-darwin" then "zip" else "tar.gz";
sha256 = {
x86_64-linux = "09zpc8c2il6x88h65kbm6z8vfnx0byzpcqqy9a1za5ilqr3dhk43";
x86_64-darwin = "09m2ij0phf5ni5m110z2bnmd9z50lz1qsh7w7cfawycjhwsl602z";
aarch64-linux = "1nsdn9mc4ahrz392w2z071sfxc5jmwhamlaid2qy899cc7sk8nqr";
armv7l-linux = "1ii6li6l09ccxf0gyjy3f5752kr4a8pga5w0a0ndgfa73mhlamin";
x86_64-linux = "1sh2f7hwhilwmlgy11kl0s2n3phpcir15wyl2fkyhsr2kdj4jz9r";
x86_64-darwin = "1s04d91f08982wi8hb4dw0j57d6zqrdgns16ihrgsvahrzksgq4b";
aarch64-linux = "1a97lk1qz2lz0lk5lpja32zy07iwdbskp6baf429iz7fz232rshm";
armv7l-linux = "0vjqxqcr7fq3ncx1nl6ny7qcqm4vlsn33c074hhcg5292blg2a0p";
}.${system};
sourceRoot = {
@ -31,7 +31,7 @@ in
# Please backport all compatible updates to the stable release.
# This is important for the extension ecosystem.
version = "1.65.1";
version = "1.65.2";
pname = "vscodium";
executableName = "codium";

View File

@ -9,10 +9,10 @@
let
# Keep these separate so the update script can regex them
rpcs3GitVersion = "13222-8c2fd5095";
rpcs3Version = "0.0.20-13222-8c2fd5095";
rpcs3Revision = "8c2fd50957be3af05c04a9bb782dce8505fb6400";
rpcs3Sha256 = "1cf62vpqdc9i4masgv9zz24h7zdc7gcymx6n1hbh7wp5gg1dw4qi";
rpcs3GitVersion = "13327-6c096b72b";
rpcs3Version = "0.0.21-13327-6c096b72b";
rpcs3Revision = "6c096b72b5294758067a002f981563bbd618d30d";
rpcs3Sha256 = "0xmdhjskqbv02jvl43bvw0clsgh9gnahl50fr3q8lmpwpy13ldr4";
ittapi = fetchFromGitHub {
owner = "intel";

View File

@ -6,7 +6,7 @@
}:
let
version = "5.9.1";
version = "5.10.0";
docFiles = [
(fetchurl {
@ -35,7 +35,7 @@ in mkDerivation rec {
owner = "paraview";
repo = "paraview";
rev = "v${version}";
sha256 = "0pzic95br0vr785jnpxqmfxcljw3wk7bhm2xy0jfmwm1dh2b7xac";
sha256 = "0ipx6zq44hpic7gvv0s2jvjncak6vlmrz5sp9ypc15b15bna0gs2";
fetchSubmodules = true;
};

View File

@ -5,16 +5,16 @@
buildGoModule rec {
pname = "dasel";
version = "1.22.1";
version = "1.23.0";
src = fetchFromGitHub {
owner = "TomWright";
repo = "dasel";
rev = "v${version}";
sha256 = "091s3hyz9p892garanm9zmkbsn6hn3bnnrz7h3dqsyi58806d5yr";
sha256 = "sha256-MUF57begai6yMYLPC5dnyO9S39uHogB+Ie3qDA46Cn8=";
};
vendorSha256 = "1y0k03lg9dh3bpi10xzv03h7gq7h0hgggs304p78p3jkr8pmkqss";
vendorSha256 = "sha256-NP+Is7Dxz4LGzx5vpv8pJOJhodAYHia1JXYfhJD54as=";
ldflags = [
"-s" "-w" "-X github.com/tomwright/dasel/internal.Version=${version}"

View File

@ -2,12 +2,12 @@
stdenvNoCC.mkDerivation rec {
pname = "fluidd";
version = "1.16.2";
version = "1.17.1";
src = fetchurl {
name = "fluidd-v${version}.zip";
url = "https://github.com/cadriel/fluidd/releases/download/v${version}/fluidd.zip";
sha256 = "1qwj25xvvxvm1fxx216nn2gp7js4d682mm3l4s7ns90fc5ygvc8i";
sha256 = "sha256-F4hAFLsZmRg/zeTHo9eYoT0BasorynGaSzNSbKr2/JE=";
};
nativeBuildInputs = [ unzip ];

View File

@ -4,9 +4,9 @@
, curl, writeShellScript, common-updater-scripts }:
let
url = "https://hubstaff-production.s3.amazonaws.com/downloads/HubstaffClient/Builds/Release/1.6.4-6681f81d/Hubstaff-1.6.4-6681f81d.sh";
version = "1.6.4-6681f81d";
sha256 = "1j0rzyqm9zm2w44zwxq61fy19m27ghlv11mbfl7yzh2ccmxljxjm";
url = "https://hubstaff-production.s3.amazonaws.com/downloads/HubstaffClient/Builds/Release/1.6.5-31be26f1/Hubstaff-1.6.5-31be26f1.sh";
version = "1.6.5-31be26f1";
sha256 = "1z1binnqppyxavmjg0l1cvy64ylzy2v454sws2x1am2qhhbnycjm";
rpath = lib.makeLibraryPath
[ libX11 zlib libSM libICE libXext freetype libXrender fontconfig libXft

View File

@ -1,12 +1,12 @@
{ lib, stdenv, fetchurl, appimageTools, makeWrapper, electron }:
{ lib, stdenv, fetchurl, appimageTools, makeWrapper, autoPatchelfHook, electron, curl, expat, gcc, openssl, zlib }:
stdenv.mkDerivation rec {
pname = "logseq";
version = "0.6.1";
version = "0.6.3";
src = fetchurl {
url = "https://github.com/logseq/logseq/releases/download/${version}/logseq-linux-x64-${version}.AppImage";
sha256 = "ccLqOKH10hmROnxlnNxuD5/AqAcFIILIoW/9yZLEep0=";
sha256 = "o3tBHk7bauNczz6lPS3lV0mpYEaBa0lh/mAJKJM2eWU=";
name = "${pname}-${version}.AppImage";
};
@ -19,7 +19,8 @@ stdenv.mkDerivation rec {
dontConfigure = true;
dontBuild = true;
nativeBuildInputs = [ makeWrapper ];
nativeBuildInputs = [ makeWrapper autoPatchelfHook ];
buildInputs = [ stdenv.cc.cc curl expat openssl zlib ];
installPhase = ''
runHook preInstall

View File

@ -18,7 +18,7 @@
python3.pkgs.buildPythonApplication rec {
pname = "metadata-cleaner";
version = "2.1.4";
version = "2.1.5";
format = "other";
@ -26,7 +26,7 @@ python3.pkgs.buildPythonApplication rec {
owner = "rmnvgr";
repo = "metadata-cleaner";
rev = "v${version}";
hash = "sha256-46J0iLXzZX5tww4CK8WhrADql023rauO0fpW7Asn5ZY=";
hash = "sha256-G7Azeh8+OQILoYEmlIeacoDzN0NRt5NTGavYM9CH8WA=";
};
nativeBuildInputs = [

View File

@ -13,11 +13,11 @@ let
in
stdenv.mkDerivation rec {
pname = "splitter";
version = "645";
version = "647";
src = fetchurl {
url = "https://www.mkgmap.org.uk/download/splitter-r${version}-src.tar.gz";
sha256 = "Y9feRNDjmwUbSOwxfMIaYIycCvOBMihq5LkuKbALVDY=";
sha256 = "j9TJ+9WuItueztWjYoD9s9x8wfsga2QCIY5X2+s3Z1c=";
};
patches = [

View File

@ -19,9 +19,9 @@
}
},
"beta": {
"version": "100.0.4896.20",
"sha256": "0g16xzimp39vk5b27bj12rh14520wihj4m4mwxf387rv0yp03cnr",
"sha256bin64": "1qkz32xvgbnd7xck0hm2mcrgdawn6xilldjgfckaaavvj4zinnk9",
"version": "100.0.4896.30",
"sha256": "06zfx9f6wv4j4fz7ss8pjlxfcsrwrvwqkmdk5bin7slxg4sq31fl",
"sha256bin64": "06s2p81grqrxl3p9ksy9q7s3s42ijmcw316nb51f7zx4ijk5hzya",
"deps": {
"gn": {
"version": "2022-01-21",
@ -32,9 +32,9 @@
}
},
"dev": {
"version": "101.0.4919.0",
"sha256": "01dp3pkpf2m6r6vfyqgcg99xcii0qi3qm0g69r3nnj2hrs7ziqv2",
"sha256bin64": "1x7bfcnhrbakcbdyp1sc79jx6qysnnyj1by6qnl7gyffh8xyb95g",
"version": "101.0.4929.5",
"sha256": "0330vs0np23x390lfnc5gzmbnkdak590rzqpa7abpfx1gzj1rd3s",
"sha256bin64": "0670z86sz2wxpfxda32cirara7yg87g67cymh8ik3w99g5q7cb1d",
"deps": {
"gn": {
"version": "2022-03-01",

View File

@ -147,7 +147,7 @@ in stdenv.mkDerivation rec {
homepage = "https://signal.org/";
changelog = "https://github.com/signalapp/Signal-Desktop/releases/tag/v${version}";
license = lib.licenses.agpl3Only;
maintainers = with lib.maintainers; [ ixmatus primeos equirosa ];
maintainers = with lib.maintainers; [ mic92 equirosa ];
platforms = [ "x86_64-linux" ];
};
}

View File

@ -3,7 +3,6 @@
, autoconf
, automake
, fetchFromGitHub
, fetchpatch
, libpcap
, ncurses
, openssl
@ -12,25 +11,15 @@
stdenv.mkDerivation rec {
pname = "sngrep";
version = "1.4.9";
version = "1.4.10";
src = fetchFromGitHub {
owner = "irontec";
repo = pname;
rev = "v${version}";
sha256 = "sha256-92wPRDFSoIOYFv3XKdsuYH8j3D8kXyg++q6VpIIMGDg=";
sha256 = "sha256-P618QLk85W0oPisAGiRfpCgHCddKutUkGjwdfgsV4Es=";
};
patches = [
# Pull fix pending upstream inclusion for ncurses-6.3 support:
# https://github.com/irontec/sngrep/pull/382
(fetchpatch {
name = "ncurses-6.3.patch";
url = "https://github.com/irontec/sngrep/commit/d09e1c323dbd7fc899e8985899baec568f045601.patch";
sha256 = "sha256-nY5i3WQh/oKboEAh4wvxF5Imf2BHYEKdFj+WF1M3SSA=";
})
];
nativeBuildInputs = [
autoconf
automake

View File

@ -0,0 +1,34 @@
{ stdenv
, fetchurl
, lib
, gtk3
, pkg-config
}:
stdenv.mkDerivation rec {
pname = "gaw";
version = "20200922";
src = fetchurl {
url = "https://download.tuxfamily.org/gaw/download/gaw3-${version}.tar.gz";
sha256 = "0qmap11v470a1yj4ypfvdq6wkfni77ijqpknka8b4fndi62sl4wa";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [ gtk3 ];
meta = with lib; {
description = "Gtk Analog Wave viewer";
longDescription = ''
Gaw is a software tool for displaying analog waveforms from
sampled datas, for example from the output of simulators or
input from sound cards. Data can be imported to gaw using files,
direct tcp/ip connection or directly from the sound card.
'';
homepage = "http://gaw.tuxfamily.org";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ fbeffa ];
platforms = platforms.all;
};
}

View File

@ -0,0 +1,46 @@
{ stdenv
, fetchFromGitHub
, lib
, bison
, cairo
, flex
, libX11
, libXpm
, pkg-config
, tcl
, tk
}:
stdenv.mkDerivation rec {
pname = "xschem";
version = "3.0.0";
src = fetchFromGitHub {
owner = "StefanSchippers";
repo = "xschem";
rev = version;
sha256 = "sha256-C57jo8tAbiqQAgf4Xp2lpFGOr6F1knPpFcYxPiqSM4k=";
};
nativeBuildInputs = [ bison flex pkg-config ];
buildInputs = [ cairo libX11 libXpm tcl tk ];
hardeningDisable = [ "format" ];
meta = with lib; {
description = "Schematic capture and netlisting EDA tool";
longDescription = ''
Xschem is a schematic capture program, it allows creation of
hierarchical representation of circuits with a top down approach.
By focusing on interfaces, hierarchy and instance properties a
complex system can be described in terms of simpler building
blocks. A VHDL or Verilog or Spice netlist can be generated from
the drawn schematic, allowing the simulation of the circuit.
'';
homepage = "https://xschem.sourceforge.io/stefan/";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ fbeffa ];
platforms = platforms.all;
};
}

View File

@ -2,7 +2,7 @@
stdenv.mkDerivation rec {
pname = "lean";
version = "3.39.2";
version = "3.41.0";
src = fetchFromGitHub {
owner = "leanprover-community";
@ -11,8 +11,8 @@ stdenv.mkDerivation rec {
# from. this is then used to check whether an olean file should be
# rebuilt. don't use a tag as rev because this will get replaced into
# src/githash.h.in in preConfigure.
rev = "402f41cdedbd46a368fb7807bebe83550d887631";
sha256 = "0jddakr07ixspw19xblpj1882vxxaljg3fflhn4myvigwzkav334";
rev = "154ac72f4ff674bc4486ac611f926a3d6b999f9f";
sha256 = "0mpxlfjq460x1vi3v6qzgjv74asg0qlhykd51pj347795x5b1hf1";
};
nativeBuildInputs = [ cmake ];

View File

@ -6,13 +6,13 @@
stdenv.mkDerivation rec {
pname = "opensmt";
version = "2.2.0";
version = "2.3.0";
src = fetchFromGitHub {
owner = "usi-verification-and-security";
repo = "opensmt";
rev = "v${version}";
sha256 = "sha256-6VkBGDzqG3mplpvFh5DIR0I1I2/J0Pi7xYk/yVn04Kg=";
sha256 = "sha256-5Gw9+J+3LHNUNbcHxsQR/ivWndL2P7yBt/Q35fBMg58=";
};
nativeBuildInputs = [ cmake bison flex ];

View File

@ -0,0 +1,57 @@
{
"name": "epgstation-client",
"version": "2.6.20",
"private": true,
"scripts": {
"build": "vue-cli-service build",
"lint": "vue-cli-service lint",
"watch": "vue-cli-service build --watch --mode development"
},
"dependencies": {
"@mdi/font": "6.5.95",
"aribb24.js": "1.8.8",
"axios": "0.24.0",
"eventemitter2": "6.4.5",
"hls.js": "1.1.2",
"inversify": "6.0.1",
"json-stable-stringify": "1.0.1",
"lodash": "4.17.21",
"material-design-icons-iconfont": "6.1.1",
"mpegts.js": "1.6.10",
"reflect-metadata": "0.1.13",
"resize-observer-polyfill": "1.5.1",
"roboto-fontface": "*",
"smoothscroll-polyfill": "0.4.4",
"socket.io-client": "4.3.2",
"typeface-roboto": "1.1.13",
"vue": "2.6.14",
"vue-class-component": "7.2.6",
"vue-property-decorator": "9.1.2",
"vue-router": "3.5.3",
"vuetify": "2.5.10",
"vuetify-datetime-picker": "2.1.1",
"@types/hls.js": "0.13.3",
"@types/json-stable-stringify": "1.0.33",
"@types/lodash": "4.14.178",
"@types/smoothscroll-polyfill": "0.3.1",
"@types/socket.io-client": "1.4.36",
"@typescript-eslint/eslint-plugin": "4.33.0",
"@typescript-eslint/parser": "4.33.0",
"@vue/cli-plugin-eslint": "4.5.12",
"@vue/cli-plugin-typescript": "4.5.13",
"@vue/cli-plugin-vuex": "4.5.13",
"@vue/cli-service": "4.5.13",
"@vue/eslint-config-prettier": "6.0.0",
"@vue/eslint-config-typescript": "7.0.0",
"eslint": "7.32.0",
"eslint-plugin-prettier": "3.4.1",
"eslint-plugin-vue": "7.20.0",
"prettier": "2.4.1",
"sass": "1.32.12",
"sass-loader": "10.2.0",
"typescript": "4.4.4",
"vue-cli-plugin-vuetify": "2.4.3",
"vue-template-compiler": "2.6.14",
"vuetify-loader": "1.7.3"
}
}

View File

@ -10,17 +10,18 @@
, nodePackages
, gzip
, jq
, yq
}:
let
# NOTE: use updateScript to bump the package version
pname = "EPGStation";
version = "1.7.5";
version = "2.6.20";
src = fetchFromGitHub {
owner = "l3tnun";
repo = "EPGStation";
rev = "v${version}";
sha256 = "06yaf5yb5rp3q0kdhw33df7px7vyfby885ckb6bdzw3wnams5d8m";
sha256 = "K1cAvmqWEfS6EY4MKAtjXb388XLYHtouxNM70PWgFig=";
};
workaround-opencollective-buildfailures = stdenv.mkDerivation {
@ -35,19 +36,44 @@ let
'';
};
pkg = nodePackages.epgstation.override (drv: {
client = nodePackages.epgstation-client.override (drv: {
# FIXME: remove this option if possible
#
# Unsetting this option resulted NPM attempting to re-download packages.
dontNpmInstall = true;
meta = drv.meta // {
inherit (nodejs.meta) platforms;
};
});
server = nodePackages.epgstation.override (drv: {
inherit src;
bypassCache = false;
# This is set to false to keep devDependencies at build time. Build time
# dependencies are pruned afterwards.
production = false;
buildInputs = [ bash ];
nativeBuildInputs = [
nodejs
workaround-opencollective-buildfailures
makeWrapper
nodePackages.node-pre-gyp
];
] ++ (with nodePackages; [
node-pre-gyp
node-gyp-build
]);
preRebuild = ''
# Fix for not being able to connect to mysql using domain sockets.
patch -p1 ${./use-mysql-over-domain-socket.patch}
patch -p1 < ${./use-mysql-over-domain-socket.patch}
# Workaround for https://github.com/svanderburg/node2nix/issues/275
sed -i -e "s|#!/usr/bin/env node|#! ${nodejs}/bin/node|" node_modules/node-gyp-build/bin.js
find . -name package-lock.json -delete
'';
postInstall = let
@ -56,12 +82,19 @@ let
''
mkdir -p $out/{bin,libexec,share/doc/epgstation,share/man/man1}
pushd $out/lib/node_modules/EPGStation
pushd $out/lib/node_modules/epgstation
cp -r ${client}/lib/node_modules/epgstation-client/node_modules client/node_modules
chmod -R u+w client/node_modules
npm run build
npm prune --production
mv config/{enc.sh,enc.js} $out/libexec
npm prune --production
pushd client
npm prune --production
popd
mv config/enc.js.template $out/libexec/enc.js
mv LICENSE Readme.md $out/share/doc/epgstation
mv doc/* $out/share/doc/epgstation
sed 's/@DESCRIPTION@/${drv.meta.description}/g' ${./epgstation.1} \
@ -82,8 +115,9 @@ let
ln -sfT /var/lib/epgstation/thumbnail thumbnail
makeWrapper ${nodejs}/bin/npm $out/bin/epgstation \
--run "cd $out/lib/node_modules/EPGStation" \
--prefix PATH : ${lib.makeBinPath runtimeDeps}
--run "cd $out/lib/node_modules/epgstation" \
--prefix PATH : ${lib.makeBinPath runtimeDeps} \
--set APP_ROOT_PATH "$out/lib/node_modules/epgstation"
popd
'';
@ -99,22 +133,25 @@ let
common-updater-scripts
genericUpdater
writers
jq;
jq
yq;
};
# nodePackages.epgstation is a stub package to fetch npm dependencies and
# is marked as broken to prevent users from installing it directly. This
# technique ensures epgstation can share npm packages with the rest of
# nixpkgs while still allowing us to heavily customize the build. It also
# allows us to provide devDependencies for the epgstation build process
# without doing the same for all the other node packages.
meta = drv.meta // { broken = false; };
# its meta.platforms is made empty to prevent users from installing it
# directly. This technique ensures epgstation can share npm packages with
# the rest of nixpkgs while still allowing us to heavily customize the
# build. It also allows us to provide devDependencies for the epgstation
# build process without doing the same for all the other node packages.
meta = drv.meta // {
inherit (nodejs.meta) platforms;
};
});
in
pkg // {
server // {
name = "${pname}-${version}";
meta = with lib; pkg.meta // {
meta = with lib; server.meta // {
maintainers = with maintainers; [ midchildan ];
# NOTE: updateScript relies on this being correct

View File

@ -27,7 +27,7 @@ platforms, run
to start EPGStation.
.Sh FILES
.Bl -tag -width Ds -compact
.It Pa /etc/epgstation/config.json
.It Pa /etc/epgstation/config.yml
.Nm
configuration file.
.El
@ -48,5 +48,9 @@ Restore the EPGstation database.
.Pp
.Dl $ epgstation run restore /path/to/src
.Pp
Restore the EPGstation database from the prior v1 release.
.Pp
.Dl $ epgstation run v1migrate /path/to/src
.Pp
.Sh SEE ALSO
.Xr npm 1

View File

@ -1,85 +1,72 @@
{
"name": "EPGStation",
"version": "1.7.5",
"name": "epgstation",
"version": "2.6.20",
"description": "DTV Software in Japan.",
"repository": {
"type": "git",
"url": "https://github.com/l3tnun/EPGStation.git"
"url": "git+https://github.com/l3tnun/EPGStation-V2.git"
},
"author": "l3tnun",
"license": "MIT",
"bugs": {
"url": "https://github.com/l3tnun/EPGStation/issues"
},
"homepage": "https://github.com/l3tnun/EPGStation#readme",
"engines": {
"node": "^10.x.x < 11 || ^12.14.0 < 13 || ^14.5.0 < 15"
"url": "https://github.com/l3tnun/EPGStation-V2/issues"
},
"homepage": "https://github.com/l3tnun/EPGStation-V2#readme",
"dependencies": {
"aribts": "^2.1.12",
"b24.js": "1.0.3",
"basic-auth": "2.0.1",
"arib-subtitle-timedmetadater": "4.0.9",
"aribts": "2.1.12",
"axios": "0.24.0",
"body-parser": "1.19.0",
"chart.js": "2.9.3",
"css-ripple-effect": "1.0.5",
"diskusage": "1.1.3",
"cors": "2.8.5",
"diskusage-ng": "1.0.2",
"express": "4.17.1",
"express-openapi": "7.0.1",
"fs-extra": "9.0.1",
"hls-b24.js": "0.12.3",
"js-yaml": "3.14.0",
"lodash": "4.17.20",
"express-openapi": "9.3.0",
"file-type": "16.5.3",
"inversify": "5.1.1",
"js-yaml": "4.1.0",
"lodash": "4.17.21",
"log4js": "6.3.0",
"material-design-icons": "3.0.1",
"material-design-lite": "1.3.0",
"minimist": "1.2.5",
"mirakurun": "3.3.1",
"mithril": "2.0.4",
"mirakurun": "3.9.0-beta.26",
"mkdirp": "1.0.4",
"multer": "1.4.2",
"multer": "1.4.3",
"mysql": "2.18.1",
"openapi-types": "7.0.1",
"pg": "8.3.3",
"request": "2.88.2",
"socket.io": "2.3.0",
"socket.io-client": "2.3.0",
"sqlite3": "5.0.0",
"swagger-ui-dist": "3.34.0",
"openapi-types": "9.3.0",
"reflect-metadata": "0.1.13",
"socket.io": "4.3.1",
"source-map-support": "0.5.20",
"sqlite3": "5.0.2",
"swagger-ui-dist": "3.52.5",
"typeorm": "0.2.38",
"url-join": "4.0.1",
"@types/basic-auth": "1.1.3",
"@types/body-parser": "1.19.0",
"@types/chart.js": "2.9.24",
"@types/express": "4.17.8",
"@types/hls.js": "0.13.1",
"@types/js-yaml": "3.12.5",
"@types/lodash": "4.14.161",
"@types/material-design-lite": "1.1.16",
"@types/minimist": "1.2.0",
"@types/mithril": "2.0.3",
"@types/mkdirp": "1.0.1",
"@types/multer": "1.4.4",
"@types/mysql": "2.15.15",
"@types/node": "14.11.1",
"@types/pg": "7.14.5",
"@types/request": "2.48.5",
"@types/socket.io": "2.1.11",
"@types/socket.io-client": "1.4.33",
"@types/sqlite3": "3.1.6",
"@types/url-join": "4.0.0",
"del": "5.1.0",
"@types/body-parser": "1.19.1",
"@types/express": "4.17.13",
"@types/file-type": "10.9.1",
"@types/js-yaml": "4.0.4",
"@types/lodash": "4.14.176",
"@types/minimist": "1.2.2",
"@types/mkdirp": "1.0.2",
"@types/mongodb": "4.0.6",
"@types/multer": "1.4.7",
"@types/node": "16.11.6",
"@types/socket.io": "3.0.1",
"@types/source-map-support": "0.5.4",
"@types/sqlite3": "3.1.7",
"@types/url-join": "4.0.1",
"@typescript-eslint/eslint-plugin": "4.33.0",
"@typescript-eslint/parser": "4.33.0",
"del": "6.0.0",
"eslint": "7.32.0",
"eslint-config-prettier": "8.3.0",
"eslint-plugin-prettier": "3.4.1",
"gulp": "4.0.2",
"gulp-clean-css": "4.3.0",
"gulp-concat": "2.6.1",
"gulp-dart-sass": "1.0.2",
"gulp-eslint": "6.0.0",
"gulp-plumber": "1.2.1",
"gulp-sourcemaps": "2.6.5",
"gulp-tslint": "8.1.4",
"gulp-sourcemaps": "3.0.0",
"gulp-typescript": "5.0.1",
"terser-webpack-plugin": "4.2.2",
"ts-loader": "8.0.4",
"tslint": "6.1.3",
"typescript": "4.0.3",
"webpack": "4.44.2",
"webpack-stream": "6.1.0"
"prettier": "2.4.1",
"ts-loader": "9.2.6",
"ts-node": "10.4.0",
"typescript": "4.4.4"
}
}

View File

@ -6,6 +6,7 @@
, genericUpdater
, writers
, jq
, yq
}:
let
@ -40,6 +41,11 @@ in writers.writeBash "update-epgstation" ''
} | del(.devDependencies, .main, .scripts)' \
"$SRC/package.json" \
> package.json
${jq}/bin/jq '. + {
dependencies: (.dependencies + .devDependencies),
} | del(.devDependencies, .main, .scripts)' \
"$SRC/client/package.json" \
> client/package.json
# Regenerate node packages to update the pre-overriden epgstation derivation.
# This must come *after* package.json has been regenerated.
@ -49,18 +55,11 @@ in writers.writeBash "update-epgstation" ''
# Generate default streaming settings for the nixos module.
pushd ../../../../nixos/modules/services/video/epgstation
${jq}/bin/jq '
{ liveHLS
, liveMP4
, liveWebM
, mpegTsStreaming
, mpegTsViewer
, recordedDownloader
, recordedStreaming
, recordedHLS
, recordedViewer
}' \
"$SRC/config/config.sample.json" \
${yq}/bin/yq -j '{ urlscheme , stream }' \
"$SRC/config/config.yml.template" \
> streaming.json
# Fix generated output for EditorConfig compliance
printf '\n' >> streaming.json # rule: insert_final_newline
popd
''

View File

@ -1,17 +1,46 @@
diff --git a/src/server/ConfigInterface.ts b/src/server/ConfigInterface.ts
index d23badd..1dd2b98 100644
--- a/src/server/ConfigInterface.ts
+++ b/src/server/ConfigInterface.ts
@@ -11,9 +11,10 @@ interface ConfigInterface {
dbPath: string;
dbInfoPath: string;
mysql: {
diff --git a/ormconfig.js b/ormconfig.js
index 5591853b..838c06cb 100644
--- a/ormconfig.js
+++ b/ormconfig.js
@@ -38,8 +38,6 @@ switch (config.dbtype) {
case 'mysql':
ormConfig.type = 'mysql';
- ormConfig.host = config.mysql.host;
- ormConfig.port = config.mysql.port;
ormConfig.username = config.mysql.user;
ormConfig.password = config.mysql.password;
ormConfig.database = config.mysql.database;
@@ -49,6 +47,12 @@ switch (config.dbtype) {
} else {
ormConfig.charset = config.mysql.charset;
}
+ if (config.mysql.socketPath) {
+ ormConfig.socketPath = config.mysql.socketPath;
+ } else {
+ ormConfig.host = config.mysql.host;
+ ormConfig.port = config.mysql.port;
+ }
break;
case 'postgres':
diff --git a/src/model/IConfigFile.ts b/src/model/IConfigFile.ts
index 6a502e83..ba84a423 100644
--- a/src/model/IConfigFile.ts
+++ b/src/model/IConfigFile.ts
@@ -61,12 +61,13 @@ export default interface IConfigFile {
regexp?: boolean;
};
mysql?: {
- host: string;
+ host?: string;
+ socketPath?: string;
user: string;
- password: string;
+ password?: string;
- port: number;
+ port?: number;
password: string;
database: string;
connectTimeout: number;
connectionLimit: number;
charset?: string;
+ socketPath?: string;
};
postgres?: {
host: string;

View File

@ -2,13 +2,13 @@
buildGoModule rec {
pname = "docker-buildx";
version = "0.7.1";
version = "0.8.0";
src = fetchFromGitHub {
owner = "docker";
repo = "buildx";
rev = "v${version}";
sha256 = "sha256-5EV0Rw1+ufxQ1wmQ0EJXQ7HVtXVbB4do/tet0QFRi08=";
sha256 = "sha256-PSqVe4m2na6BjNxIKKZG1ja6zEzwI2AwgJlaMfaW2EM=";
};
vendorSha256 = null;

View File

@ -49,8 +49,7 @@ python3.pkgs.buildPythonApplication rec {
dontWrapGApps = true;
preFixup = ''
mkdir -p $out/share/glib-2.0/schemas
cp $src/data/*.gschema.xml $out/share/glib-2.0/schemas/
glib-compile-schemas $out/share/gsettings-schemas/${pname}-${version}/glib-2.0/schemas
gappsWrapperArgs+=(--set PYTHONPATH "$PYTHONPATH")
# these are called from virt-install in initrdinject.py
@ -62,11 +61,9 @@ python3.pkgs.buildPythonApplication rec {
checkInputs = with python3.pkgs; [ cpio cdrtools pytestCheckHook ];
disabledTestPaths = [
"tests/test_cli.py"
"tests/test_disk.py"
"tests/test_checkprops.py"
"tests/test_storage.py"
]; # Error logs: https://gist.github.com/superherointj/fee040872beaafaaa19b8bf8f3ff0be5
"tests/test_misc.py"
"tests/test_xmlparse.py"
];
preCheck = ''
export HOME=.

View File

@ -268,10 +268,10 @@ in {
};
ruby_3_1 = generic {
version = rubyVersion "3" "1" "0" "";
version = rubyVersion "3" "1" "1" "";
sha256 = {
src = "sha256-UKBQTG7ctNYc5rjP292qlXBxlfqw7Ne16SZUsqlBKFQ=";
git = "sha256-TcsoWY+zVZeue1/ypV1L0WERp1UVK35WtVtYPYiJh4c=";
src = "sha256-/m5Hgt6XRDl43bqLpL440iKqJNw+PwKmqOdwHA7rYZ0=";
git = "sha256-76t/tGyK5nz7nvcRdHJTjjckU+Kv+/kbTMiNWJ93jU8=";
};
};
}

View File

@ -10,6 +10,6 @@
"${patchSet}/patches/ruby/3.0/head/railsexpress/01-improve-gc-stats.patch"
"${patchSet}/patches/ruby/3.0/head/railsexpress/02-malloc-trim.patch"
];
"3.1.0" = ops useRailsExpress [ # no patches yet (2021-12-25)
"3.1.1" = ops useRailsExpress [ # no patches yet (2021-12-25)
];
}

View File

@ -20,11 +20,11 @@
stdenv.mkDerivation rec {
pname = "spidermonkey";
version = "91.6.0";
version = "91.7.0";
src = fetchurl {
url = "mirror://mozilla/firefox/releases/${version}esr/source/firefox-${version}esr.source.tar.xz";
sha512 = "3dd1929f93cdd087a93fc3597f32d9005c986b59832954e01a8c2472b179c92ad611eaa73d3fc000a08b838a0b70da73ff5ba82d6009160655ba6894cf04520e";
sha512 = "925811989d8a91d826ba356bd46ac54be8153288ec0319c28d2bfbe89191e62e107691159dd7ca247253e2a4952eb59a5b9613e3feea3f5351238d4822e26301";
};
outputs = [ "out" "dev" ];

View File

@ -6,11 +6,11 @@
stdenv.mkDerivation rec {
pname = "libhdhomerun";
version = "20210624";
version = "20220303";
src = fetchurl {
url = "https://download.silicondust.com/hdhomerun/libhdhomerun_${version}.tgz";
sha256 = "sha256-3q9GO7zD7vpy+XGZ77YhP3sOLI6R8bPSy/UgVqhxXRU=";
sha256 = "sha256-HlT/78LUiTkRUB2jHmYrnQY+bBiv4stcZlMyUnelSpc=";
};
patchPhase = lib.optionalString stdenv.isDarwin ''

View File

@ -127,7 +127,15 @@ let
# ../../applications/video/epgstation
epgstation = super."epgstation-../../applications/video/epgstation".override (drv: {
meta = drv.meta // {
broken = true; # not really broken, see the comment above
platforms = pkgs.lib.platforms.none;
};
});
# NOTE: this is a stub package to fetch npm dependencies for
# ../../applications/video/epgstation/client
epgstation-client = super."epgstation-client-../../applications/video/epgstation/client".override (drv: {
meta = drv.meta // {
platforms = pkgs.lib.platforms.none;
};
});
@ -270,6 +278,14 @@ let
url = "https://github.com/svanderburg/node2nix/commit/e4c951971df6c9f9584c7252971c13b55c369916.patch";
sha256 = "0w8fcyr12g2340rn06isv40jkmz2khmak81c95zpkjgipzx7hp7w";
})
# handle package alias in dependencies
# https://github.com/svanderburg/node2nix/pull/240
#
# TODO: remove after node2nix 1.10.0
(fetchpatch {
url = "https://github.com/svanderburg/node2nix/commit/644e90c0304038a446ed53efc97e9eb1e2831e71.patch";
sha256 = "sha256-sQgVf80H1ouUjzHq+2d9RO4a+o++kh+l+FOTNXfPBH0=";
})
];
};
postInstall = ''

View File

@ -114,6 +114,7 @@
, "emoj"
, "emojione"
, {"epgstation": "../../applications/video/epgstation"}
, {"epgstation-client": "../../applications/video/epgstation/client"}
, "escape-string-regexp"
, "eslint"
, "eslint_d"

File diff suppressed because it is too large Load Diff

View File

@ -6,7 +6,7 @@
buildPythonPackage rec {
pname = "AWSIoTPythonSDK";
version = "1.5.0";
version = "1.5.1";
format = "setuptools";
disabled = pythonOlder "3.7";
@ -15,7 +15,7 @@ buildPythonPackage rec {
owner = "aws";
repo = "aws-iot-device-sdk-python";
rev = "v${version}";
sha256 = "0bmvwv471mvlwj2rfz08j9qvzsp4vyjz67cbzkvsy6kmihx3wfqh";
sha256 = "sha256-UpfgoCVbweOpWbgaqNebAAkWmhjkZu3txVoTZ/qhl3g=";
};
# Module has no tests

View File

@ -11,11 +11,11 @@
buildPythonPackage rec {
pname = "google-cloud-texttospeech";
version = "2.10.2";
version = "2.11.0";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-EykIDxoO8ePp4hLtINTz/RahfS4KU7GhwS4gkMBA32w=";
sha256 = "sha256-UJSP3a9G6k1arMpoh4/rWrnR4gYtPW6d6LGwWuk5WGg=";
};
propagatedBuildInputs = [ libcst google-api-core proto-plus ];

View File

@ -7,15 +7,17 @@
buildPythonPackage rec {
pname = "imap-tools";
version = "0.51.1";
version = "0.52.0";
disabled = isPy27;
format = "setuptools";
src = fetchFromGitHub {
owner = "ikvk";
repo = "imap_tools";
rev = "v${version}";
hash = "sha256-ppxQtFK7U006z7qonm3B5gN99CHB9mEX3l0XjrhZQo8=";
hash = "sha256-la2+cpTnHZQn/FXtySp+3zDCBTONiLC16Tm+hDiIERc=";
};
checkInputs = [

View File

@ -0,0 +1,35 @@
diff --git a/libmat2/bubblewrap.py b/libmat2/bubblewrap.py
index 970d5dd..5d3c0b7 100644
--- a/libmat2/bubblewrap.py
+++ b/libmat2/bubblewrap.py
@@ -22,11 +22,7 @@ CalledProcessError = subprocess.CalledProcessError
def _get_bwrap_path() -> str:
- which_path = shutil.which('bwrap')
- if which_path:
- return which_path
-
- raise RuntimeError("Unable to find bwrap") # pragma: no cover
+ return '@bwrap@'
def _get_bwrap_args(tempdir: str,
@@ -37,16 +33,11 @@ def _get_bwrap_args(tempdir: str,
# XXX: use --ro-bind-try once all supported platforms
# have a bubblewrap recent enough to support it.
- ro_bind_dirs = ['/usr', '/lib', '/lib64', '/bin', '/sbin', '/etc/alternatives', cwd]
+ ro_bind_dirs = ['/nix/store', cwd]
for bind_dir in ro_bind_dirs:
if os.path.isdir(bind_dir): # pragma: no cover
ro_bind_args.extend(['--ro-bind', bind_dir, bind_dir])
- ro_bind_files = ['/etc/ld.so.cache']
- for bind_file in ro_bind_files:
- if os.path.isfile(bind_file): # pragma: no cover
- ro_bind_args.extend(['--ro-bind', bind_file, bind_file])
-
args = ro_bind_args + \
['--dev', '/dev',
'--proc', '/proc',

View File

@ -1,4 +1,5 @@
{ lib
, stdenv
, buildPythonPackage
, python
, pythonOlder
@ -37,7 +38,6 @@ buildPythonPackage rec {
# hardcode paths to some binaries
(substituteAll ({
src = ./paths.patch;
bwrap = "${bubblewrap}/bin/bwrap";
exiftool = "${exiftool}/bin/exiftool";
ffmpeg = "${ffmpeg}/bin/ffmpeg";
} // lib.optionalAttrs dolphinIntegration {
@ -52,6 +52,11 @@ buildPythonPackage rec {
src = ./fix_poppler.patch;
poppler_path = "${poppler_gi}/lib/girepository-1.0";
})
] ++ lib.optionals (stdenv.hostPlatform.isLinux) [
(substituteAll {
src = ./bubblewrap-path.patch;
bwrap = "${bubblewrap}/bin/bwrap";
})
];
postPatch = ''

View File

@ -12,41 +12,6 @@ index 41c8de4..11df258 100644
+Icon=@mat2svg@
+Exec=@kdialog@ --yesno "$( @mat2@ -s %F )" --title "Clean Metadata?" && @mat2@ %U
+Exec[de]=@kdialog@ --yesno "$( @mat2@ -s %F )" --title "Metadaten löschen?" && @mat2@ %U
diff --git a/libmat2/bubblewrap.py b/libmat2/bubblewrap.py
index 970d5dd..5d3c0b7 100644
--- a/libmat2/bubblewrap.py
+++ b/libmat2/bubblewrap.py
@@ -22,11 +22,7 @@ CalledProcessError = subprocess.CalledProcessError
def _get_bwrap_path() -> str:
- which_path = shutil.which('bwrap')
- if which_path:
- return which_path
-
- raise RuntimeError("Unable to find bwrap") # pragma: no cover
+ return '@bwrap@'
def _get_bwrap_args(tempdir: str,
@@ -37,16 +33,11 @@ def _get_bwrap_args(tempdir: str,
# XXX: use --ro-bind-try once all supported platforms
# have a bubblewrap recent enough to support it.
- ro_bind_dirs = ['/usr', '/lib', '/lib64', '/bin', '/sbin', '/etc/alternatives', cwd]
+ ro_bind_dirs = ['/nix/store', cwd]
for bind_dir in ro_bind_dirs:
if os.path.isdir(bind_dir): # pragma: no cover
ro_bind_args.extend(['--ro-bind', bind_dir, bind_dir])
- ro_bind_files = ['/etc/ld.so.cache']
- for bind_file in ro_bind_files:
- if os.path.isfile(bind_file): # pragma: no cover
- ro_bind_args.extend(['--ro-bind', bind_file, bind_file])
-
args = ro_bind_args + \
['--dev', '/dev',
'--proc', '/proc',
diff --git a/libmat2/exiftool.py b/libmat2/exiftool.py
index eb65b2a..51a0fa1 100644
--- a/libmat2/exiftool.py

View File

@ -13,7 +13,7 @@
buildPythonPackage rec {
pname = "oci";
version = "2.56.0";
version = "2.60.0";
format = "setuptools";
disabled = pythonOlder "3.6";
@ -22,7 +22,7 @@ buildPythonPackage rec {
owner = "oracle";
repo = "oci-python-sdk";
rev = "v${version}";
hash = "sha256-olrWv4c2DoZ7ddm58Wpb5jZntw8WEKJ6IzAND11tdjk=";
hash = "sha256-fXeea4MftVSJWzanHeAuERRiQLBp8l1l1Cw2lG3uz24=";
};
propagatedBuildInputs = [

View File

@ -14,12 +14,12 @@
buildPythonPackage rec {
pname = "sqlite-utils";
version = "3.25";
version = "3.25.1";
disabled = pythonOlder "3.6";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-OKlwuXwXGU2WBauE33SYAuHzvPBhNdwYB3nQo5V2sUI=";
sha256 = "sha256-32lfUJoTbkflztLU/BDhbHbuOkW66OGpHLuiyAKFy8k=";
};
propagatedBuildInputs = [

View File

@ -5,7 +5,6 @@
, setuptools
, geopy
, docopt
, pyyaml
, certifi
, amqtt
, websockets
@ -17,7 +16,7 @@
buildPythonPackage rec {
pname = "volvooncall";
version = "0.9.2";
version = "0.10.0";
disabled = pythonOlder "3.8";
@ -27,24 +26,30 @@ buildPythonPackage rec {
owner = "molobrakos";
repo = "volvooncall";
rev = "v${version}";
hash = "sha256-OTs282z7qzILl/xxM3whaxiQr8FZOfgceO2EY3NJKbA=";
hash = "sha256-HLSanXJs1yPSgYo4oX0zJtrV5sKkxV2yLPhc2dVRHY8=";
};
propagatedBuildInputs = [
geopy
docopt
pyyaml
certifi
amqtt
websockets
aiohttp
];
passthru.extras-require = {
console = [
certifi
docopt
geopy
];
mqtt = [
amqtt
certifi
];
};
checkInputs = [
pytestCheckHook
asynctest
pytest-asyncio
];
pytestCheckHook
] ++ passthru.extras-require.mqtt;
pythonImportsCheck = [ "volvooncall" ];

View File

@ -32,13 +32,13 @@ with py.pkgs;
buildPythonApplication rec {
pname = "checkov";
version = "2.0.936";
version = "2.0.938";
src = fetchFromGitHub {
owner = "bridgecrewio";
repo = pname;
rev = version;
hash = "sha256-erpVJTnWUfoY4Ymdf7fZyri2NGAYs0NF+r3DMFFYURM=";
hash = "sha256-N8jEEtO2fRFtNS3lInEa/9IwtqBb9yDkg7hHp7bhH+s=";
};
nativeBuildInputs = with py.pkgs; [

View File

@ -2,11 +2,11 @@
buildGraalvmNativeImage rec {
pname = "clj-kondo";
version = "2022.03.04";
version = "2022.03.09";
src = fetchurl {
url = "https://github.com/clj-kondo/${pname}/releases/download/v${version}/${pname}-${version}-standalone.jar";
sha256 = "sha256-x/mDyWYxWR5H894n+BCBaxgRLQLPgVCip59nOUbavpk=";
sha256 = "sha256-gPn3wORb30I/zTXUdxUxMesKFJx6ES7jEjUYuC/DAVI=";
};
extraNativeImageBuildArgs = [

View File

@ -2,16 +2,16 @@
buildGoModule rec {
pname = "fly";
version = "7.6.0";
version = "7.7.0";
src = fetchFromGitHub {
owner = "concourse";
repo = "concourse";
rev = "v${version}";
sha256 = "sha256-Zi+gyO+2AKDgcfgYrzLskJYZ6hQKOVlOL7Y9nxH/pGg=";
sha256 = "sha256-BKEUKQQxZ+Maq2JSHeWuQ7Lhgfc33pSiVS6VfAlMu/g=";
};
vendorSha256 = "sha256-OF3parnlTPmcr7tVcc6495sUMRApSpBHHjSE/4EFIxE=";
vendorSha256 = "sha256-G9HdhPi4iezUR6SIVYnjL0fznOfiusY4T9ClLPr1w5c=";
doCheck = false;

View File

@ -4,11 +4,11 @@
stdenv.mkDerivation rec {
pname = "jenkins";
version = "2.319.3";
version = "2.332.1";
src = fetchurl {
url = "http://get.jenkins.io/war-stable/${version}/jenkins.war";
sha256 = "sha256-c92Rs5W89i/iXm0wdHZfFRDJ5YTswen69EBRBkGBtDQ=";
sha256 = "0xrrqdwfz19mr4wl4sdzk0qnq9rjdh65vd1386qsn6a4axwv652s";
};
nativeBuildInputs = [ makeWrapper ];

View File

@ -2,13 +2,13 @@
buildGoModule rec {
pname = "efm-langserver";
version = "0.0.40";
version = "0.0.41";
src = fetchFromGitHub {
owner = "mattn";
repo = "efm-langserver";
rev = "v${version}";
sha256 = "sha256-0C7iSWO7zzOhPgzxj9k2MK6poi4XaCbMjTGah3ohVJg=";
sha256 = "sha256-0s6GmMbjtXGUcChzc8Pkqvmt3iU5uDUqe76OUDngboU=";
};
vendorSha256 = "sha256-tca+1SRrFyvU8ttHmfMFiGXd1A8rQSEWm1Mc2qp0EfI=";

View File

@ -1,17 +1,25 @@
{ lib, fetchFromGitHub, stdenv, rustPlatform, coreutils, bash, installShellFiles, libiconv }:
{ lib
, stdenv
, fetchFromGitHub
, rustPlatform
, coreutils
, bash
, installShellFiles
, libiconv
}:
rustPlatform.buildRustPackage rec {
pname = "just";
version = "1.0.1";
version = "1.1.0";
src = fetchFromGitHub {
owner = "casey";
repo = pname;
rev = version;
sha256 = "sha256-ssc6djhSk0xV4jdlTmehWX6UMBPAuebtYlzWRZ/32mM=";
sha256 = "sha256-hbBAbk0n80BbbIx81427bRz4x6enBsxJ0bHJKww44oc=";
};
cargoSha256 = "sha256-ynYK37nCfIiy1CHBEQ/vMHOAPY/pp/lF/tSl9MJD7fY=";
cargoSha256 = "sha256-lZyFoOCWUE2ahU/lS+bIdrZXNm/sFEfLsQm1BxREg5w=";
nativeBuildInputs = [ installShellFiles ];
buildInputs = lib.optionals stdenv.isDarwin [ libiconv ];

View File

@ -3,14 +3,14 @@
rustPlatform.buildRustPackage rec {
pname = "probe-run";
version = "0.3.1";
version = "0.3.2";
src = fetchCrate {
inherit pname version;
sha256 = "1nfbpdx378p988q75hka9r8zp3xb9zy3dnagcxmha6dca5dhgsdm";
sha256 = "sha256-SXA77LXM1SuBJ8BH+ahwJl/3gWsCbdLXBiHZdJySWq0=";
};
cargoSha256 = "05p3vmar00215x4mwsvs5knf4wrwmpq52rmbbi6b4qaqs3gqaghy";
cargoSha256 = "sha256-e9POSuA/I7IUKUOxMTfCWxNn0AicojpGQpxamzmHa7g=";
nativeBuildInputs = [ pkg-config ];
buildInputs = [ libusb1 ]
@ -21,6 +21,6 @@ rustPlatform.buildRustPackage rec {
homepage = "https://github.com/knurling-rs/probe-run";
changelog = "https://github.com/knurling-rs/probe-run/blob/v${version}/CHANGELOG.md";
license = with licenses; [ asl20 /* or */ mit ];
maintainers = with maintainers; [ hoverbear ];
maintainers = with maintainers; [ hoverbear newam ];
};
}

View File

@ -17,15 +17,15 @@
rustPlatform.buildRustPackage rec {
pname = "deno";
version = "1.19.1";
version = "1.19.3";
src = fetchFromGitHub {
owner = "denoland";
repo = pname;
rev = "v${version}";
sha256 = "sha256-BqwiconG5hn5RPV+hlKu6e6+GjZA4Im/dD+no3IduYw=";
sha256 = "sha256-mm4hCRjQitFvSA3ow/p/N+UgG3P7FC440Obfqz3KVbQ=";
};
cargoSha256 = "sha256-q/5AezLQgN7WdGsbHoxX5riJMlxw3cTFhVs5OvCeI5U=";
cargoSha256 = "sha256-tSIYs52pZk/h2hVJLHUbwlsl2gdu2Mszs9OBR52EQKQ=";
# Install completions post-install
nativeBuildInputs = [ installShellFiles ];

View File

@ -11,11 +11,11 @@ let
};
in
fetch_librusty_v8 {
version = "0.40.0";
version = "0.40.2";
shas = {
x86_64-linux = "sha256-VHkopvK6f5lxdFLBywHe0Z+su2g5hgBsLcTxrwFgq0Y=";
aarch64-linux = "sha256-awWjziqqUDAl9fcLADUjytLFds1y93y5gZoOtvReL9w=";
x86_64-darwin = "sha256-WlRnGiJK3iFgTjNzr25rvmmiPAICPRLaD5hbys7MoJA=";
aarch64-darwin = "sha256-zblcAQVwnLQWh85wajg8CalqxycSR+4WGoSC2dnX7jA=";
x86_64-linux = "sha256-RtEKNDQdL0orI0B4953RaT18KeWPZJIdhPnYbJGj2eM=";
aarch64-linux = "sha256-TL5boy1X/OgOt17H6PYEA5D3MJbChCULrB38ykC5Ghk=";
x86_64-darwin = "sha256-ABnHMABtggrHoTjeFB8YVH6PV2HvVlPZTQWaeRnRZaE=";
aarch64-darwin = "sha256-PGrRmNJxS49K9jviQTxRJlTq1SAn+8epXXNJaexTAWU=";
};
}

View File

@ -5,15 +5,15 @@
, git, nix, nixfmt, jq, coreutils, gnused, curl, cacert }:
stdenv.mkDerivation rec {
version = "2022-01-18";
version = "2022-03-10";
pname = "oh-my-zsh";
rev = "22c11da108764336d92d03d3113c1f486cdb5911";
rev = "c10241f3d1d7bf77d483e11869a6a00f1d2e5e88";
src = fetchFromGitHub {
inherit rev;
owner = "ohmyzsh";
repo = "ohmyzsh";
sha256 = "Tnwy+3lCWjzDhjXtgLIiX3SxpJG6shxmmPFyeWkO2R0=";
sha256 = "HVV3zhEZ4NU4Dk7zHv+NeatTJUbzxqOvM4cYNzjuTfo=";
};
installPhase = ''

View File

@ -1,21 +1,54 @@
{ lib, stdenv, fetchurl, libxslt, docbook_xsl, libcap }:
{ lib
, stdenv
, fetchFromGitHub
, docbook_xsl
, libxslt
, meson
, ninja
, pkg-config
, bash-completion
, libcap
, libselinux
}:
stdenv.mkDerivation rec {
pname = "bubblewrap";
version = "0.5.0";
version = "0.6.1";
src = fetchurl {
url = "https://github.com/containers/bubblewrap/releases/download/v${version}/${pname}-${version}.tar.xz";
sha256 = "sha256-Fv2vM3mdYxBONH4BM/kJGW/pDQxQUV0BC8tCLrWgCBg=";
src = fetchFromGitHub {
owner = "containers";
repo = "bubblewrap";
rev = "v${version}";
sha256 = "sha256-YmK/Tq9/JTJr5gLNKEH5t6TvvXlNSTDz5Ui7d3ewv2s=";
};
nativeBuildInputs = [ libxslt docbook_xsl ];
buildInputs = [ libcap ];
postPatch = ''
substituteInPlace tests/libtest.sh \
--replace "/var/tmp" "$TMPDIR"
'';
nativeBuildInputs = [
docbook_xsl
libxslt
meson
ninja
pkg-config
];
buildInputs = [
bash-completion
libcap
libselinux
];
# incompatible with Nix sandbox
doCheck = false;
meta = with lib; {
description = "Unprivileged sandboxing tool";
homepage = "https://github.com/containers/bubblewrap";
license = licenses.lgpl2Plus;
maintainers = with maintainers; [ ];
maintainers = with maintainers; [ dotlambda ];
platforms = platforms.linux;
};
}

View File

@ -2,16 +2,16 @@
buildGoModule rec {
pname = "eksctl";
version = "0.86.0";
version = "0.87.0";
src = fetchFromGitHub {
owner = "weaveworks";
repo = pname;
rev = version;
sha256 = "sha256-AvBfj3/dPq/iokuRBDQRh2b3g5KBH/oFBDEDaVwQ51A=";
sha256 = "sha256-909cInKo6X8yzpXlumDYIi8yCYLqr1CVcsGgYSd2pnQ=";
};
vendorSha256 = "sha256-bqyT6RXPBDPZt9ogS97G0jHJs7VdvVlHCXMaqJjnU2s=";
vendorSha256 = "sha256-3pEKG5YW83YMSkAjiJQDW1eQbMl6SkokHTXn+kJ/3l4=";
doCheck = false;

View File

@ -2,16 +2,16 @@
buildGoModule rec {
pname = "fioctl";
version = "0.23";
version = "0.24";
src = fetchFromGitHub {
owner = "foundriesio";
repo = "fioctl";
rev = "v${version}";
sha256 = "sha256-00HWby1LwKEz4BgwD3yv0IMW9mzkTj4FMFgYAn7kLac=";
sha256 = "sha256-nlSJ6JxC5MTS/ltSB9qnhtoRjDL1A5NlXWM/2A4duGU=";
};
vendorSha256 = "sha256-oA8/9LjMRM1RXKKDWhcbt2qr/4T7YgOq92U2mF9E+sw=";
vendorSha256 = "sha256-Cr9etq9E16vj2AL9OkIQom/gATjj9QT9+keUR1WQJR0=";
ldflags = [
"-s" "-w" "-X github.com/foundriesio/fioctl/subcommands/version.Commit=${src.rev}"

View File

@ -3,42 +3,18 @@
, fetchFromGitHub
}:
let
py = python3.override {
packageOverrides = self: super: {
# until https://github.com/ags-slc/localzone/issues/1 gets resolved
dnspython = super.dnspython.overridePythonAttrs(oldAttrs: rec {
pname = "dnspython";
version = "1.16.0";
# since name is defined from the previous derivation, need to override
# name explicity for correct version to show in drvName
name = "${pname}-${version}";
src = super.fetchPypi {
inherit pname version;
extension = "zip";
sha256 = "00cfamn97w2vhq3id87f10mjna8ag5yz5dw0cy5s0sa3ipiyii9n";
};
});
localzone = super.localzone.overridePythonAttrs(oldAttrs: rec {
meta = oldAttrs.meta // { broken = false; };
});
};
};
in
with py.pkgs;
with python3.pkgs;
buildPythonApplication rec {
pname = "lexicon";
version = "3.9.0";
version = "3.9.4";
format = "pyproject";
src = fetchFromGitHub {
owner = "AnalogJ";
repo = pname;
rev = "v${version}";
hash = "sha256-qJFHwFzFjZVdQv4YfrlR2cMQHsEtpQbvg/DMo6C5/z0=";
hash = "sha256-TySgIxBEl2RolndAkEN4vCIDKaI48vrh2ocd+CTn7Ow=";
};
nativeBuildInputs = [

View File

@ -23,14 +23,14 @@ with py.pkgs;
buildPythonApplication rec {
pname = "oci-cli";
version = "3.5.0";
version = "3.6.0";
format = "setuptools";
src = fetchFromGitHub {
owner = "oracle";
repo = "oci-cli";
rev = "v${version}";
hash = "sha256-udvYfYFUulGfnc1gzjG3UxOc68JuecpPJ1/s57qvX0k=";
hash = "sha256-ADjHPRG3QzSWR7FvcTIJdcBYmzZK+SWipdY1giNtaME=";
};
propagatedBuildInputs = [

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
pname = "unrar";
version = "6.1.5";
version = "6.1.6";
src = fetchurl {
url = "https://www.rarlab.com/rar/unrarsrc-${version}.tar.gz";
sha256 = "sha256-TlZxfYZ83/egAIt/Haaqeax6j5dM8TTUmowWtXe87Uo=";
sha256 = "sha256-Z/SriRwGIhjCut+qycjKtci/1eltq/ylbI+qPSCagB0=";
};
postPatch = ''

View File

@ -2,13 +2,13 @@
buildGoModule rec {
pname = "autorestic";
version = "1.5.5";
version = "1.5.6";
src = fetchFromGitHub {
owner = "cupcakearmy";
repo = pname;
rev = "v${version}";
sha256 = "sha256-JOiFsH9r92Gac7DH7h/4Q6hwXBtqLwHNQpW3gKBybHo=";
sha256 = "sha256-NhKAxybPLBR1Kaw2d4xI8WKS4cG0yAMHbUBDWgr5T0A=";
};
vendorSha256 = "sha256-WzmgV0wUsGfMVeho6M8wXJKD9adaAKRYmaJYaAcXwFc=";

View File

@ -2,16 +2,16 @@
rustPlatform.buildRustPackage rec {
pname = "boringtun";
version = "0.3.0";
version = "0.4.0";
src = fetchFromGitHub {
owner = "cloudflare";
repo = pname;
rev = "v${version}";
sha256 = "0b57c7z87xwrirmq9aa9jswqyj5bavkifmq7a9hgfphcmwcskmdb";
sha256 = "sha256-fZchh02CsVC5sdnR3blojslsKi7OxFcblHMuyuHsH/4=";
};
cargoSha256 = "1xn6scc8nrb9xk89hsp9v67jvyww23rjaq5fcagpbqdwf5dvg4ja";
cargoSha256 = "sha256-iJbzvhRPVDHXqianQ6UbmYEfmZCS/obxFZV/PsJMhD0=";
buildInputs = lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.Security;

View File

@ -2,13 +2,13 @@
buildGoModule rec {
pname = "dnsproxy";
version = "0.41.3";
version = "0.41.4";
src = fetchFromGitHub {
owner = "AdguardTeam";
repo = pname;
rev = "v${version}";
sha256 = "sha256-p5kfpqqTg1wXPYTBScjUGClSKT6yb7ZSnzia2xTQwfo=";
sha256 = "sha256-aVYjYEAEANAMGv7frZWfYWLzX7rcI8phpjvrENK8cc4=";
};
vendorSha256 = null;

View File

@ -6,13 +6,13 @@
buildGoModule rec {
pname = "qrcp";
version = "0.8.6";
version = "0.9.0";
src = fetchFromGitHub {
owner = "claudiodangelis";
repo = "qrcp";
rev = version;
sha256 = "sha256-5HW0OtDlqUvsKMTjxmIDpmlKdo0GFj7b+6jh9TlLllI=";
sha256 = "sha256-vem9aXyRIV/2O3sfZ5zpcxs9GSc+uqUgFedyY1O4hWw=";
};
vendorSha256 = "1hn8c72fvih6ws1y2c4963pww3ld64m0yh3pmx62hwcy83bhb0v4";
@ -24,9 +24,10 @@ buildGoModule rec {
];
postInstall = ''
installShellCompletion --bash --cmd qrcp <($out/bin/qrcp completion bash)
installShellCompletion --fish --cmd qrcp <($out/bin/qrcp completion fish)
installShellCompletion --zsh --cmd qrcp <($out/bin/qrcp completion zsh)
installShellCompletion --cmd qrcp \
--bash <($out/bin/qrcp completion bash) \
--fish <($out/bin/qrcp completion fish) \
--zsh <($out/bin/qrcp completion zsh)
'';
meta = with lib; {

View File

@ -3,13 +3,13 @@
stdenv.mkDerivation rec {
pname = "libdnf";
version = "0.65.0";
version = "0.66.0";
src = fetchFromGitHub {
owner = "rpm-software-management";
repo = pname;
rev = version;
sha256 = "sha256-vGXK4pOkff4yGaRZE+FFFIqEizUeCID+lxiE/TWt0Bs=";
sha256 = "sha256-fQyNm51roz6wn9QAE8/ZIrutyWP45xiKVHzn8n0LcwE=";
};
nativeBuildInputs = [

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pname = "microdnf";
version = "3.8.0";
version = "3.8.1";
src = fetchFromGitHub {
owner = "rpm-software-management";
repo = pname;
rev = version;
sha256 = "sha256-Ip1XcE8fPXhdgVaR4VPH+ElP6JbnK4JekZuWyT5ot/M=";
sha256 = "sha256-yKIhXjeiCOq5JsAquaPnYAJZk53FioOKGIAT2xYfLO8=";
};
nativeBuildInputs = [ pkg-config cmake gettext help2man ];

View File

@ -26,7 +26,7 @@ buildPythonApplication rec {
owner = "expliot_framework";
repo = pname;
rev = version;
sha256 = "sha256-7Cuj3YKKwDxP2KKueJR9ZO5Bduv+lw0Y87Rw4b0jbGY=";
hash = "sha256-7Cuj3YKKwDxP2KKueJR9ZO5Bduv+lw0Y87Rw4b0jbGY=";
};
propagatedBuildInputs = [
@ -51,7 +51,10 @@ buildPythonApplication rec {
postPatch = ''
# https://gitlab.com/expliot_framework/expliot/-/merge_requests/113
substituteInPlace setup.py \
--replace "pynetdicom>=1.5.1,<2" "pynetdicom>=2,<3"
--replace "pynetdicom>=1.5.1,<2" "pynetdicom>=2,<3" \
--replace "cryptography>=3.0,<4" "cryptography>=35,<40" \
--replace "python-can>=3.3.3,<4" "python-can>=3.3.3,<5" \
--replace "pyparsing>=2.4.7,<3" "pyparsing>=2.4.7,<4"
'';
# Project has no tests

View File

@ -0,0 +1,25 @@
{ lib
, buildGoModule
, fetchFromGitHub
}:
buildGoModule rec {
pname = "sdlookup";
version = "unstable-2022-03-10";
src = fetchFromGitHub {
owner = "j3ssie";
repo = pname;
rev = "8554bfa27284c4764401dbd8da23800d4ae968a2";
hash = "sha256-c6xAgOxle51waiFsSWvwO9eyt1KXuM0dEeepVsRQHkk=";
};
vendorSha256 = "sha256-j0UzucZ6kDwM+6U0ZyIW9u8XG/Bn+VUCO2vV1BbnQo0=";
meta = with lib; {
description = "IP lookups for open ports and vulnerabilities from internetdb.shodan.io";
homepage = "https://github.com/j3ssie/sdlookup";
license = with licenses; [ mit ];
maintainers = with maintainers; [ fab ];
};
}

View File

@ -5,16 +5,16 @@
buildGoModule rec {
pname = "natscli";
version = "0.0.29";
version = "0.0.30";
src = fetchFromGitHub {
owner = "nats-io";
repo = pname;
rev = "v${version}";
sha256 = "sha256-q1T+bDOOPs4eLnRWkYG6VY0AwfG/W2boSY5DZhMv+ZI=";
sha256 = "sha256-+WvJWHRQr5wYV9TG5e379trBO2Gwy0/4bAEJNwDun7s=";
};
vendorSha256 = "sha256-YTvgofZoWGDZL/ujjZ9RqAgv6UH2caZBrV9/uav3KVw=";
vendorSha256 = "sha256-IHDJp+cjukX916dvffpv4Wit9kmuY101fasN+ChMxWQ=";
meta = with lib; {
description = "NATS Command Line Interface";

View File

@ -1105,6 +1105,8 @@ with pkgs;
redfang = callPackage ../tools/networking/redfang { };
sdlookup = callPackage ../tools/security/sdlookup { };
sx-go = callPackage ../tools/security/sx-go { };
tauon = callPackage ../applications/audio/tauon { };
@ -14823,10 +14825,7 @@ with pkgs;
# This is for e.g. LLVM libraries on linux.
gccForLibs =
# with gcc-7: undefined reference to `__divmoddi4'
if stdenv.targetPlatform.isi686
then gcc6.cc
else if stdenv.targetPlatform == stdenv.hostPlatform && targetPackages.stdenv.cc.isGNU
if stdenv.targetPlatform == stdenv.hostPlatform && targetPackages.stdenv.cc.isGNU
# Can only do this is in the native case, otherwise we might get infinite
# recursion if `targetPackages.stdenv.cc.cc` itself uses `gccForLibs`.
then targetPackages.stdenv.cc.cc
@ -32710,6 +32709,8 @@ with pkgs;
fped = callPackage ../applications/science/electronics/fped { };
gaw = callPackage ../applications/science/electronics/gaw {};
horizon-eda = callPackage ../applications/science/electronics/horizon-eda {};
# this is a wrapper for kicad.base and kicad.libraries
@ -32743,6 +32744,8 @@ with pkgs;
xoscope = callPackage ../applications/science/electronics/xoscope { };
xschem = callPackage ../applications/science/electronics/xschem { };
xyce = callPackage ../applications/science/electronics/xyce { };
xyce-parallel = callPackage ../applications/science/electronics/xyce {