Merge staging-next into staging
This commit is contained in:
commit
8c03075f07
@ -603,6 +603,11 @@ lib.mapAttrs (n: v: v // { shortName = n; }) ({
|
||||
free = false;
|
||||
};
|
||||
|
||||
odbl = spdx {
|
||||
spdxId = "ODbL-1.0";
|
||||
fullName = "Open Data Commons Open Database License v1.0";
|
||||
};
|
||||
|
||||
ofl = spdx {
|
||||
spdxId = "OFL-1.1";
|
||||
fullName = "SIL Open Font License 1.1";
|
||||
|
@ -1859,6 +1859,12 @@
|
||||
fingerprint = "68B8 0D57 B2E5 4AC3 EC1F 49B0 B37E 0F23 7101 6A4C";
|
||||
}];
|
||||
};
|
||||
collares = {
|
||||
email = "mauricio@collares.org";
|
||||
github = "collares";
|
||||
githubId = 244239;
|
||||
name = "Mauricio Collares";
|
||||
};
|
||||
copumpkin = {
|
||||
email = "pumpkingod@gmail.com";
|
||||
github = "copumpkin";
|
||||
@ -2889,6 +2895,12 @@
|
||||
githubId = 3787281;
|
||||
name = "Erik Rybakken";
|
||||
};
|
||||
erin = {
|
||||
name = "Erin van der Veen";
|
||||
email = "erin@erinvanderveen.nl";
|
||||
github = "ErinvanderVeen";
|
||||
githubId = 10973664;
|
||||
};
|
||||
erosennin = {
|
||||
email = "ag@sologoc.com";
|
||||
github = "erosennin";
|
||||
@ -4153,6 +4165,12 @@
|
||||
github = "j0hax";
|
||||
githubId = 3802620;
|
||||
};
|
||||
j4m3s = {
|
||||
name = "James Landrein";
|
||||
email = "github@j4m3s.eu";
|
||||
github = "j4m3s-s";
|
||||
githubId = 9413812;
|
||||
};
|
||||
jacg = {
|
||||
name = "Jacek Generowicz";
|
||||
email = "jacg@my-post-office.net";
|
||||
@ -6987,6 +7005,12 @@
|
||||
githubId = 3359345;
|
||||
name = "obadz";
|
||||
};
|
||||
obsidian-systems-maintenance = {
|
||||
name = "Obsidian Systems Maintenance";
|
||||
email = "maintainer@obsidian.systems";
|
||||
github = "obsidian-systems-maintenance";
|
||||
githubId = 80847921;
|
||||
};
|
||||
odi = {
|
||||
email = "oliver.dunkl@gmail.com";
|
||||
github = "odi";
|
||||
|
@ -514,7 +514,7 @@ def update_plugins(editor: Editor):
|
||||
)
|
||||
|
||||
for plugin_line in args.add_plugins:
|
||||
rewrite_input(args.input_fil, editor.deprecated, append=(plugin_line + "\n",))
|
||||
rewrite_input(args.input_file, editor.deprecated, append=(plugin_line + "\n",))
|
||||
update()
|
||||
plugin = fetch_plugin_from_pluginline(plugin_line)
|
||||
commit(
|
||||
|
@ -134,6 +134,7 @@ with lib.maintainers; {
|
||||
timokau
|
||||
omasanori
|
||||
raskin
|
||||
collares
|
||||
];
|
||||
scope = "Maintain SageMath and the dependencies that are likely to break it.";
|
||||
};
|
||||
|
@ -288,7 +288,7 @@ foreach my $u (values %usersOut) {
|
||||
push @shadowNew, join(":", $u->{name}, $hashedPassword, "1::::::") . "\n";
|
||||
}
|
||||
|
||||
updateFile("/etc/shadow", \@shadowNew, 0600);
|
||||
updateFile("/etc/shadow", \@shadowNew, 0640);
|
||||
{
|
||||
my $uid = getpwnam "root";
|
||||
my $gid = getgrnam "shadow";
|
||||
|
@ -177,6 +177,7 @@
|
||||
./programs/tmux.nix
|
||||
./programs/traceroute.nix
|
||||
./programs/tsm-client.nix
|
||||
./programs/turbovnc.nix
|
||||
./programs/udevil.nix
|
||||
./programs/usbtop.nix
|
||||
./programs/vim.nix
|
||||
@ -882,6 +883,7 @@
|
||||
./services/web-apps/atlassian/confluence.nix
|
||||
./services/web-apps/atlassian/crowd.nix
|
||||
./services/web-apps/atlassian/jira.nix
|
||||
./services/web-apps/bookstack.nix
|
||||
./services/web-apps/convos.nix
|
||||
./services/web-apps/cryptpad.nix
|
||||
./services/web-apps/documize.nix
|
||||
|
@ -90,7 +90,7 @@ in {
|
||||
rxvt-unicode # For backward compatibility (old default terminal)
|
||||
];
|
||||
defaultText = literalExample ''
|
||||
with pkgs; [ swaylock swayidle xwayland rxvt-unicode dmenu ];
|
||||
with pkgs; [ swaylock swayidle rxvt-unicode alacritty dmenu ];
|
||||
'';
|
||||
example = literalExample ''
|
||||
with pkgs; [
|
||||
|
54
nixos/modules/programs/turbovnc.nix
Normal file
54
nixos/modules/programs/turbovnc.nix
Normal file
@ -0,0 +1,54 @@
|
||||
# Global configuration for the SSH client.
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.programs.turbovnc;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
|
||||
programs.turbovnc = {
|
||||
|
||||
ensureHeadlessSoftwareOpenGL = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to set up NixOS such that TurboVNC's built-in software OpenGL
|
||||
implementation works.
|
||||
|
||||
This will enable <option>hardware.opengl.enable</option> so that OpenGL
|
||||
programs can find Mesa's llvmpipe drivers.
|
||||
|
||||
Setting this option to <code>false</code> does not mean that software
|
||||
OpenGL won't work; it may still work depending on your system
|
||||
configuration.
|
||||
|
||||
This option is also intended to generate warnings if you are using some
|
||||
configuration that's incompatible with using headless software OpenGL
|
||||
in TurboVNC.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = mkIf cfg.ensureHeadlessSoftwareOpenGL {
|
||||
|
||||
# TurboVNC has builtin support for Mesa llvmpipe's `swrast`
|
||||
# software rendering to implemnt GLX (OpenGL on Xorg).
|
||||
# However, just building TurboVNC with support for that is not enough
|
||||
# (it only takes care of the X server side part of OpenGL);
|
||||
# the indiviudual applications (e.g. `glxgears`) also need to directly load
|
||||
# the OpenGL libs.
|
||||
# Thus, this creates `/run/opengl-driver` populated by Mesa so that the applications
|
||||
# can find the llvmpipe `swrast.so` software rendering DRI lib via `libglvnd`.
|
||||
# This comment exists to explain why `hardware.` is involved,
|
||||
# even though 100% software rendering is used.
|
||||
hardware.opengl.enable = true;
|
||||
|
||||
};
|
||||
}
|
@ -274,6 +274,15 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
etcSlurm = mkOption {
|
||||
type = types.path;
|
||||
internal = true;
|
||||
default = etcSlurm;
|
||||
description = ''
|
||||
Path to directory with slurm config files. This option is set by default from the
|
||||
Slurm module and is meant to make the Slurm config file available to other modules.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
@ -308,7 +317,7 @@ in
|
||||
#!/bin/sh
|
||||
if [ -z "$SLURM_CONF" ]
|
||||
then
|
||||
SLURM_CONF="${etcSlurm}/slurm.conf" "$EXE" "\$@"
|
||||
SLURM_CONF="${cfg.etcSlurm}/slurm.conf" "$EXE" "\$@"
|
||||
else
|
||||
"$EXE" "\$0"
|
||||
fi
|
||||
|
@ -30,12 +30,49 @@ in
|
||||
Whether to run the exporter as the local 'postgres' super user.
|
||||
'';
|
||||
};
|
||||
|
||||
# TODO perhaps LoadCredential would be more appropriate
|
||||
environmentFile = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
example = "/root/prometheus-postgres-exporter.env";
|
||||
description = ''
|
||||
Environment file as defined in <citerefentry>
|
||||
<refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum>
|
||||
</citerefentry>.
|
||||
|
||||
Secrets may be passed to the service without adding them to the
|
||||
world-readable Nix store, by specifying placeholder variables as
|
||||
the option value in Nix and setting these variables accordingly in the
|
||||
environment file.
|
||||
|
||||
Environment variables from this file will be interpolated into the
|
||||
config file using envsubst with this syntax:
|
||||
<literal>$ENVIRONMENT ''${VARIABLE}</literal>
|
||||
|
||||
The main use is to set the DATA_SOURCE_NAME that contains the
|
||||
postgres password
|
||||
|
||||
note that contents from this file will override dataSourceName
|
||||
if you have set it from nix.
|
||||
|
||||
<programlisting>
|
||||
# Content of the environment file
|
||||
DATA_SOURCE_NAME=postgresql://username:password@localhost:5432/postgres?sslmode=disable
|
||||
</programlisting>
|
||||
|
||||
Note that this file needs to be available on the host on which
|
||||
this exporter is running.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
serviceOpts = {
|
||||
environment.DATA_SOURCE_NAME = cfg.dataSourceName;
|
||||
serviceConfig = {
|
||||
DynamicUser = false;
|
||||
User = mkIf cfg.runAsLocalSuperUser (mkForce "postgres");
|
||||
EnvironmentFile = mkIf (cfg.environmentFile != null) [ cfg.environmentFile ];
|
||||
ExecStart = ''
|
||||
${pkgs.prometheus-postgres-exporter}/bin/postgres_exporter \
|
||||
--web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
|
||||
|
365
nixos/modules/services/web-apps/bookstack.nix
Normal file
365
nixos/modules/services/web-apps/bookstack.nix
Normal file
@ -0,0 +1,365 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.bookstack;
|
||||
bookstack = pkgs.bookstack.override {
|
||||
dataDir = cfg.dataDir;
|
||||
};
|
||||
db = cfg.database;
|
||||
mail = cfg.mail;
|
||||
|
||||
user = cfg.user;
|
||||
group = cfg.group;
|
||||
|
||||
# shell script for local administration
|
||||
artisan = pkgs.writeScriptBin "bookstack" ''
|
||||
#! ${pkgs.runtimeShell}
|
||||
cd ${bookstack}
|
||||
sudo=exec
|
||||
if [[ "$USER" != ${user} ]]; then
|
||||
sudo='exec /run/wrappers/bin/sudo -u ${user}'
|
||||
fi
|
||||
$sudo ${pkgs.php}/bin/php artisan $*
|
||||
'';
|
||||
|
||||
|
||||
in {
|
||||
options.services.bookstack = {
|
||||
|
||||
enable = mkEnableOption "BookStack";
|
||||
|
||||
user = mkOption {
|
||||
default = "bookstack";
|
||||
description = "User bookstack runs as.";
|
||||
type = types.str;
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
default = "bookstack";
|
||||
description = "Group bookstack runs as.";
|
||||
type = types.str;
|
||||
};
|
||||
|
||||
appKeyFile = mkOption {
|
||||
description = ''
|
||||
A file containing the AppKey.
|
||||
Used for encryption where needed. Can be generated with <code>head -c 32 /dev/urandom| base64</code> and must be prefixed with <literal>base64:</literal>.
|
||||
'';
|
||||
example = "/run/keys/bookstack-appkey";
|
||||
type = types.path;
|
||||
};
|
||||
|
||||
appURL = mkOption {
|
||||
description = ''
|
||||
The root URL that you want to host BookStack on. All URLs in BookStack will be generated using this value.
|
||||
If you change this in the future you may need to run a command to update stored URLs in the database. Command example: <code>php artisan bookstack:update-url https://old.example.com https://new.example.com</code>
|
||||
'';
|
||||
example = "https://example.com";
|
||||
type = types.str;
|
||||
};
|
||||
|
||||
cacheDir = mkOption {
|
||||
description = "BookStack cache directory";
|
||||
default = "/var/cache/bookstack";
|
||||
type = types.path;
|
||||
};
|
||||
|
||||
dataDir = mkOption {
|
||||
description = "BookStack data directory";
|
||||
default = "/var/lib/bookstack";
|
||||
type = types.path;
|
||||
};
|
||||
|
||||
database = {
|
||||
host = mkOption {
|
||||
type = types.str;
|
||||
default = "localhost";
|
||||
description = "Database host address.";
|
||||
};
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 3306;
|
||||
description = "Database host port.";
|
||||
};
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
default = "bookstack";
|
||||
description = "Database name.";
|
||||
};
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = user;
|
||||
defaultText = "\${user}";
|
||||
description = "Database username.";
|
||||
};
|
||||
passwordFile = mkOption {
|
||||
type = with types; nullOr path;
|
||||
default = null;
|
||||
example = "/run/keys/bookstack-dbpassword";
|
||||
description = ''
|
||||
A file containing the password corresponding to
|
||||
<option>database.user</option>.
|
||||
'';
|
||||
};
|
||||
createLocally = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Create the database and database user locally.";
|
||||
};
|
||||
};
|
||||
|
||||
mail = {
|
||||
driver = mkOption {
|
||||
type = types.enum [ "smtp" "sendmail" ];
|
||||
default = "smtp";
|
||||
description = "Mail driver to use.";
|
||||
};
|
||||
host = mkOption {
|
||||
type = types.str;
|
||||
default = "localhost";
|
||||
description = "Mail host address.";
|
||||
};
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 1025;
|
||||
description = "Mail host port.";
|
||||
};
|
||||
fromName = mkOption {
|
||||
type = types.str;
|
||||
default = "BookStack";
|
||||
description = "Mail \"from\" name.";
|
||||
};
|
||||
from = mkOption {
|
||||
type = types.str;
|
||||
default = "mail@bookstackapp.com";
|
||||
description = "Mail \"from\" email.";
|
||||
};
|
||||
user = mkOption {
|
||||
type = with types; nullOr str;
|
||||
default = null;
|
||||
example = "bookstack";
|
||||
description = "Mail username.";
|
||||
};
|
||||
passwordFile = mkOption {
|
||||
type = with types; nullOr path;
|
||||
default = null;
|
||||
example = "/run/keys/bookstack-mailpassword";
|
||||
description = ''
|
||||
A file containing the password corresponding to
|
||||
<option>mail.user</option>.
|
||||
'';
|
||||
};
|
||||
encryption = mkOption {
|
||||
type = with types; nullOr (enum [ "tls" ]);
|
||||
default = null;
|
||||
description = "SMTP encryption mechanism to use.";
|
||||
};
|
||||
};
|
||||
|
||||
maxUploadSize = mkOption {
|
||||
type = types.str;
|
||||
default = "18M";
|
||||
example = "1G";
|
||||
description = "The maximum size for uploads (e.g. images).";
|
||||
};
|
||||
|
||||
poolConfig = mkOption {
|
||||
type = with types; attrsOf (oneOf [ str int bool ]);
|
||||
default = {
|
||||
"pm" = "dynamic";
|
||||
"pm.max_children" = 32;
|
||||
"pm.start_servers" = 2;
|
||||
"pm.min_spare_servers" = 2;
|
||||
"pm.max_spare_servers" = 4;
|
||||
"pm.max_requests" = 500;
|
||||
};
|
||||
description = ''
|
||||
Options for the bookstack PHP pool. See the documentation on <literal>php-fpm.conf</literal>
|
||||
for details on configuration directives.
|
||||
'';
|
||||
};
|
||||
|
||||
nginx = mkOption {
|
||||
type = types.submodule (
|
||||
recursiveUpdate
|
||||
(import ../web-servers/nginx/vhost-options.nix { inherit config lib; }) {}
|
||||
);
|
||||
default = {};
|
||||
example = {
|
||||
serverAliases = [
|
||||
"bookstack.\${config.networking.domain}"
|
||||
];
|
||||
# To enable encryption and let let's encrypt take care of certificate
|
||||
forceSSL = true;
|
||||
enableACME = true;
|
||||
};
|
||||
description = ''
|
||||
With this option, you can customize the nginx virtualHost settings.
|
||||
'';
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
type = types.nullOr types.lines;
|
||||
default = null;
|
||||
example = ''
|
||||
ALLOWED_IFRAME_HOSTS="https://example.com"
|
||||
WKHTMLTOPDF=/home/user/bins/wkhtmltopdf
|
||||
'';
|
||||
description = ''
|
||||
Lines to be appended verbatim to the BookStack configuration.
|
||||
Refer to <link xlink:href="https://www.bookstackapp.com/docs/"/> for details on supported values.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
assertions = [
|
||||
{ assertion = db.createLocally -> db.user == user;
|
||||
message = "services.bookstack.database.user must be set to ${user} if services.mediawiki.database.createLocally is set true.";
|
||||
}
|
||||
{ assertion = db.createLocally -> db.passwordFile == null;
|
||||
message = "services.bookstack.database.passwordFile cannot be specified if services.bookstack.database.createLocally is set to true.";
|
||||
}
|
||||
];
|
||||
|
||||
environment.systemPackages = [ artisan ];
|
||||
|
||||
services.mysql = mkIf db.createLocally {
|
||||
enable = true;
|
||||
package = mkDefault pkgs.mariadb;
|
||||
ensureDatabases = [ db.name ];
|
||||
ensureUsers = [
|
||||
{ name = db.user;
|
||||
ensurePermissions = { "${db.name}.*" = "ALL PRIVILEGES"; };
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
services.phpfpm.pools.bookstack = {
|
||||
inherit user;
|
||||
inherit group;
|
||||
phpOptions = ''
|
||||
log_errors = on
|
||||
post_max_size = ${cfg.maxUploadSize}
|
||||
upload_max_filesize = ${cfg.maxUploadSize}
|
||||
'';
|
||||
settings = {
|
||||
"listen.mode" = "0660";
|
||||
"listen.owner" = user;
|
||||
"listen.group" = group;
|
||||
} // cfg.poolConfig;
|
||||
};
|
||||
|
||||
services.nginx = {
|
||||
enable = mkDefault true;
|
||||
virtualHosts.bookstack = mkMerge [ cfg.nginx {
|
||||
root = mkForce "${bookstack}/public";
|
||||
extraConfig = optionalString (cfg.nginx.addSSL || cfg.nginx.forceSSL || cfg.nginx.onlySSL || cfg.nginx.enableACME) "fastcgi_param HTTPS on;";
|
||||
locations = {
|
||||
"/" = {
|
||||
index = "index.php";
|
||||
extraConfig = ''try_files $uri $uri/ /index.php?$query_string;'';
|
||||
};
|
||||
"~ \.php$" = {
|
||||
extraConfig = ''
|
||||
try_files $uri $uri/ /index.php?$query_string;
|
||||
include ${pkgs.nginx}/conf/fastcgi_params;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
fastcgi_param REDIRECT_STATUS 200;
|
||||
fastcgi_pass unix:${config.services.phpfpm.pools."bookstack".socket};
|
||||
${optionalString (cfg.nginx.addSSL || cfg.nginx.forceSSL || cfg.nginx.onlySSL || cfg.nginx.enableACME) "fastcgi_param HTTPS on;"}
|
||||
'';
|
||||
};
|
||||
"~ \.(js|css|gif|png|ico|jpg|jpeg)$" = {
|
||||
extraConfig = "expires 365d;";
|
||||
};
|
||||
};
|
||||
}];
|
||||
};
|
||||
|
||||
systemd.services.bookstack-setup = {
|
||||
description = "Preperation tasks for BookStack";
|
||||
before = [ "phpfpm-bookstack.service" ];
|
||||
after = optional db.createLocally "mysql.service";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
User = user;
|
||||
WorkingDirectory = "${bookstack}";
|
||||
};
|
||||
script = ''
|
||||
# create .env file
|
||||
echo "
|
||||
APP_KEY=base64:$(head -n1 ${cfg.appKeyFile})
|
||||
APP_URL=${cfg.appURL}
|
||||
DB_HOST=${db.host}
|
||||
DB_PORT=${toString db.port}
|
||||
DB_DATABASE=${db.name}
|
||||
DB_USERNAME=${db.user}
|
||||
MAIL_DRIVER=${mail.driver}
|
||||
MAIL_FROM_NAME=\"${mail.fromName}\"
|
||||
MAIL_FROM=${mail.from}
|
||||
MAIL_HOST=${mail.host}
|
||||
MAIL_PORT=${toString mail.port}
|
||||
${optionalString (mail.user != null) "MAIL_USERNAME=${mail.user};"}
|
||||
${optionalString (mail.encryption != null) "MAIL_ENCRYPTION=${mail.encryption};"}
|
||||
${optionalString (db.passwordFile != null) "DB_PASSWORD=$(head -n1 ${db.passwordFile})"}
|
||||
${optionalString (mail.passwordFile != null) "MAIL_PASSWORD=$(head -n1 ${mail.passwordFile})"}
|
||||
APP_SERVICES_CACHE=${cfg.cacheDir}/services.php
|
||||
APP_PACKAGES_CACHE=${cfg.cacheDir}/packages.php
|
||||
APP_CONFIG_CACHE=${cfg.cacheDir}/config.php
|
||||
APP_ROUTES_CACHE=${cfg.cacheDir}/routes-v7.php
|
||||
APP_EVENTS_CACHE=${cfg.cacheDir}/events.php
|
||||
${optionalString (cfg.nginx.addSSL || cfg.nginx.forceSSL || cfg.nginx.onlySSL || cfg.nginx.enableACME) "SESSION_SECURE_COOKIE=true"}
|
||||
${toString cfg.extraConfig}
|
||||
" > "${cfg.dataDir}/.env"
|
||||
# set permissions
|
||||
chmod 700 "${cfg.dataDir}/.env"
|
||||
|
||||
# migrate db
|
||||
${pkgs.php}/bin/php artisan migrate --force
|
||||
|
||||
# create caches
|
||||
${pkgs.php}/bin/php artisan config:cache
|
||||
${pkgs.php}/bin/php artisan route:cache
|
||||
${pkgs.php}/bin/php artisan view:cache
|
||||
'';
|
||||
};
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d ${cfg.cacheDir} 0700 ${user} ${group} - -"
|
||||
"d ${cfg.dataDir} 0710 ${user} ${group} - -"
|
||||
"d ${cfg.dataDir}/public 0750 ${user} ${group} - -"
|
||||
"d ${cfg.dataDir}/public/uploads 0750 ${user} ${group} - -"
|
||||
"d ${cfg.dataDir}/storage 0700 ${user} ${group} - -"
|
||||
"d ${cfg.dataDir}/storage/app 0700 ${user} ${group} - -"
|
||||
"d ${cfg.dataDir}/storage/fonts 0700 ${user} ${group} - -"
|
||||
"d ${cfg.dataDir}/storage/framework 0700 ${user} ${group} - -"
|
||||
"d ${cfg.dataDir}/storage/framework/cache 0700 ${user} ${group} - -"
|
||||
"d ${cfg.dataDir}/storage/framework/sessions 0700 ${user} ${group} - -"
|
||||
"d ${cfg.dataDir}/storage/framework/views 0700 ${user} ${group} - -"
|
||||
"d ${cfg.dataDir}/storage/logs 0700 ${user} ${group} - -"
|
||||
"d ${cfg.dataDir}/storage/uploads 0700 ${user} ${group} - -"
|
||||
];
|
||||
|
||||
users = {
|
||||
users = mkIf (user == "bookstack") {
|
||||
bookstack = {
|
||||
inherit group;
|
||||
isSystemUser = true;
|
||||
};
|
||||
"${config.services.nginx.user}".extraGroups = [ group ];
|
||||
};
|
||||
groups = mkIf (group == "bookstack") {
|
||||
bookstack = {};
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
meta.maintainers = with maintainers; [ ymarkus ];
|
||||
}
|
@ -182,7 +182,18 @@ in rec {
|
||||
# upstream unit.
|
||||
for i in ${toString (mapAttrsToList (n: v: v.unit) units)}; do
|
||||
fn=$(basename $i/*)
|
||||
if [ -e $out/$fn ]; then
|
||||
|
||||
case $fn in
|
||||
# if file name is a template specialization, use the template's name
|
||||
*@?*.service)
|
||||
# remove @foo.service and replace it with @.service
|
||||
ofn="''${fn%@*.service}@.service"
|
||||
;;
|
||||
*)
|
||||
ofn="$fn"
|
||||
esac
|
||||
|
||||
if [ -e $out/$ofn ]; then
|
||||
if [ "$(readlink -f $i/$fn)" = /dev/null ]; then
|
||||
ln -sfn /dev/null $out/$fn
|
||||
else
|
||||
|
@ -408,6 +408,7 @@ in
|
||||
trickster = handleTest ./trickster.nix {};
|
||||
trilium-server = handleTestOn ["x86_64-linux"] ./trilium-server.nix {};
|
||||
tuptime = handleTest ./tuptime.nix {};
|
||||
turbovnc-headless-server = handleTest ./turbovnc-headless-server.nix {};
|
||||
ucg = handleTest ./ucg.nix {};
|
||||
udisks2 = handleTest ./udisks2.nix {};
|
||||
unbound = handleTest ./unbound.nix {};
|
||||
|
41
nixos/tests/systemd-template-override.nix
Normal file
41
nixos/tests/systemd-template-override.nix
Normal file
@ -0,0 +1,41 @@
|
||||
import ./make-test-python.nix {
|
||||
name = "systemd-template-override";
|
||||
|
||||
machine = { pkgs, lib, ... }: let
|
||||
touchTmp = pkgs.writeTextFile {
|
||||
name = "touch-tmp@.service";
|
||||
text = ''
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=${pkgs.coreutils}/bin/touch /tmp/%I
|
||||
'';
|
||||
destination = "/etc/systemd/system/touch-tmp@.service";
|
||||
};
|
||||
in {
|
||||
systemd.packages = [ touchTmp ];
|
||||
|
||||
systemd.services."touch-tmp@forbidden" = {
|
||||
serviceConfig.ExecStart = [ "" ''
|
||||
${pkgs.coreutils}/bin/true
|
||||
''];
|
||||
};
|
||||
|
||||
systemd.services."touch-tmp@intercept" = {
|
||||
serviceConfig.ExecStart = [ "" ''
|
||||
${pkgs.coreutils}/bin/touch /tmp/renamed
|
||||
''];
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
machine.wait_for_unit("default.target")
|
||||
|
||||
machine.succeed("systemctl start touch-tmp@normal")
|
||||
machine.succeed("systemctl start touch-tmp@forbbidden")
|
||||
machine.succeed("systemctl start touch-tmp@intercept")
|
||||
|
||||
machine.succeed("[ -e /tmp/normal ]")
|
||||
machine.succeed("[ ! -e /tmp/forbidden ]")
|
||||
machine.succeed("[ -e /tmp/renamed ]")
|
||||
'';
|
||||
}
|
171
nixos/tests/turbovnc-headless-server.nix
Normal file
171
nixos/tests/turbovnc-headless-server.nix
Normal file
@ -0,0 +1,171 @@
|
||||
import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||
name = "turbovnc-headless-server";
|
||||
meta = {
|
||||
maintainers = with lib.maintainers; [ nh2 ];
|
||||
};
|
||||
|
||||
machine = { pkgs, ... }: {
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
glxinfo
|
||||
procps # for `pkill`, `pidof` in the test
|
||||
scrot # for screenshotting Xorg
|
||||
turbovnc
|
||||
];
|
||||
|
||||
programs.turbovnc.ensureHeadlessSoftwareOpenGL = true;
|
||||
|
||||
networking.firewall = {
|
||||
# Reject instead of drop, for failures instead of hangs.
|
||||
rejectPackets = true;
|
||||
allowedTCPPorts = [
|
||||
5900 # VNC :0, for seeing what's going on in the server
|
||||
];
|
||||
};
|
||||
|
||||
# So that we can ssh into the VM, see e.g.
|
||||
# http://blog.patapon.info/nixos-local-vm/#accessing-the-vm-with-ssh
|
||||
services.openssh.enable = true;
|
||||
services.openssh.permitRootLogin = "yes";
|
||||
users.extraUsers.root.password = "";
|
||||
users.mutableUsers = false;
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
def wait_until_terminated_or_succeeds(
|
||||
termination_check_shell_command,
|
||||
success_check_shell_command,
|
||||
get_detail_message_fn,
|
||||
retries=60,
|
||||
retry_sleep=0.5,
|
||||
):
|
||||
def check_success():
|
||||
command_exit_code, _output = machine.execute(success_check_shell_command)
|
||||
return command_exit_code == 0
|
||||
|
||||
for _ in range(retries):
|
||||
exit_check_exit_code, _output = machine.execute(termination_check_shell_command)
|
||||
is_terminated = exit_check_exit_code != 0
|
||||
if is_terminated:
|
||||
if check_success():
|
||||
return
|
||||
else:
|
||||
details = get_detail_message_fn()
|
||||
raise Exception(
|
||||
f"termination check ({termination_check_shell_command}) triggered without command succeeding ({success_check_shell_command}); details: {details}"
|
||||
)
|
||||
else:
|
||||
if check_success():
|
||||
return
|
||||
time.sleep(retry_sleep)
|
||||
|
||||
if not check_success():
|
||||
details = get_detail_message_fn()
|
||||
raise Exception(
|
||||
f"action timed out ({success_check_shell_command}); details: {details}"
|
||||
)
|
||||
|
||||
|
||||
# Below we use the pattern:
|
||||
# (cmd | tee stdout.log) 3>&1 1>&2 2>&3 | tee stderr.log
|
||||
# to capture both stderr and stdout while also teeing them, see:
|
||||
# https://unix.stackexchange.com/questions/6430/how-to-redirect-stderr-and-stdout-to-different-files-and-also-display-in-termina/6431#6431
|
||||
|
||||
|
||||
# Starts headless VNC server, backgrounding it.
|
||||
def start_xvnc():
|
||||
xvnc_command = " ".join(
|
||||
[
|
||||
"Xvnc",
|
||||
":0",
|
||||
"-iglx",
|
||||
"-auth /root/.Xauthority",
|
||||
"-geometry 1240x900",
|
||||
"-depth 24",
|
||||
"-rfbwait 5000",
|
||||
"-deferupdate 1",
|
||||
"-verbose",
|
||||
"-securitytypes none",
|
||||
# We don't enforce localhost listening such that we
|
||||
# can connect from outside the VM using
|
||||
# env QEMU_NET_OPTS=hostfwd=tcp::5900-:5900 $(nix-build nixos/tests/turbovnc-headless-server.nix -A driver)/bin/nixos-test-driver
|
||||
# for testing purposes, and so that we can in the future
|
||||
# add another test case that connects the TurboVNC client.
|
||||
# "-localhost",
|
||||
]
|
||||
)
|
||||
machine.execute(
|
||||
# Note trailing & for backgrounding.
|
||||
f"({xvnc_command} | tee /tmp/Xvnc.stdout) 3>&1 1>&2 2>&3 | tee /tmp/Xvnc.stderr &",
|
||||
)
|
||||
|
||||
|
||||
# Waits until the server log message that tells us that GLX is ready
|
||||
# (requires `-verbose` above), avoiding screenshoting racing below.
|
||||
def wait_until_xvnc_glx_ready():
|
||||
machine.wait_until_succeeds("test -f /tmp/Xvnc.stderr")
|
||||
wait_until_terminated_or_succeeds(
|
||||
termination_check_shell_command="pidof Xvnc",
|
||||
success_check_shell_command="grep 'GLX: Initialized DRISWRAST' /tmp/Xvnc.stderr",
|
||||
get_detail_message_fn=lambda: "Contents of /tmp/Xvnc.stderr:\n"
|
||||
+ machine.succeed("cat /tmp/Xvnc.stderr"),
|
||||
)
|
||||
|
||||
|
||||
# Checks that we detect glxgears failing when
|
||||
# `LIBGL_DRIVERS_PATH=/nonexistent` is set
|
||||
# (in which case software rendering should not work).
|
||||
def test_glxgears_failing_with_bad_driver_path():
|
||||
machine.execute(
|
||||
# Note trailing & for backgrounding.
|
||||
"(env DISPLAY=:0 LIBGL_DRIVERS_PATH=/nonexistent glxgears -info | tee /tmp/glxgears-should-fail.stdout) 3>&1 1>&2 2>&3 | tee /tmp/glxgears-should-fail.stderr &"
|
||||
)
|
||||
machine.wait_until_succeeds("test -f /tmp/glxgears-should-fail.stderr")
|
||||
wait_until_terminated_or_succeeds(
|
||||
termination_check_shell_command="pidof glxgears",
|
||||
success_check_shell_command="grep 'libGL error: failed to load driver: swrast' /tmp/glxgears-should-fail.stderr",
|
||||
get_detail_message_fn=lambda: "Contents of /tmp/glxgears-should-fail.stderr:\n"
|
||||
+ machine.succeed("cat /tmp/glxgears-should-fail.stderr"),
|
||||
)
|
||||
machine.wait_until_fails("pidof glxgears")
|
||||
|
||||
|
||||
# Starts glxgears, backgrounding it. Waits until it prints the `GL_RENDERER`.
|
||||
# Does not quit glxgears.
|
||||
def test_glxgears_prints_renderer():
|
||||
machine.execute(
|
||||
# Note trailing & for backgrounding.
|
||||
"(env DISPLAY=:0 glxgears -info | tee /tmp/glxgears.stdout) 3>&1 1>&2 2>&3 | tee /tmp/glxgears.stderr &"
|
||||
)
|
||||
machine.wait_until_succeeds("test -f /tmp/glxgears.stderr")
|
||||
wait_until_terminated_or_succeeds(
|
||||
termination_check_shell_command="pidof glxgears",
|
||||
success_check_shell_command="grep 'GL_RENDERER' /tmp/glxgears.stdout",
|
||||
get_detail_message_fn=lambda: "Contents of /tmp/glxgears.stderr:\n"
|
||||
+ machine.succeed("cat /tmp/glxgears.stderr"),
|
||||
)
|
||||
|
||||
|
||||
with subtest("Start Xvnc"):
|
||||
start_xvnc()
|
||||
wait_until_xvnc_glx_ready()
|
||||
|
||||
with subtest("Ensure bad driver path makes glxgears fail"):
|
||||
test_glxgears_failing_with_bad_driver_path()
|
||||
|
||||
with subtest("Run 3D application (glxgears)"):
|
||||
test_glxgears_prints_renderer()
|
||||
|
||||
# Take screenshot; should display the glxgears.
|
||||
machine.succeed("scrot --display :0 /tmp/glxgears.png")
|
||||
|
||||
# Copy files down.
|
||||
machine.copy_from_vm("/tmp/glxgears.png")
|
||||
machine.copy_from_vm("/tmp/glxgears.stdout")
|
||||
machine.copy_from_vm("/tmp/glxgears-should-fail.stdout")
|
||||
machine.copy_from_vm("/tmp/glxgears-should-fail.stderr")
|
||||
machine.copy_from_vm("/tmp/Xvnc.stdout")
|
||||
machine.copy_from_vm("/tmp/Xvnc.stderr")
|
||||
'';
|
||||
|
||||
})
|
@ -8,7 +8,6 @@
|
||||
, doxygen
|
||||
, fftwSinglePrec
|
||||
, flac
|
||||
, glibc
|
||||
, glibmm
|
||||
, graphviz
|
||||
, gtkmm2
|
||||
|
@ -11,14 +11,14 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "callaudiod";
|
||||
version = "0.0.4";
|
||||
version = "0.1.0";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "gitlab.com";
|
||||
owner = "mobian1";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "07k7xp5a9c4d4lq7amaj6cg6b3gsd77x9wvf7nzcf4vpaph4yiyj";
|
||||
sha256 = "087589z45xvldn2m1g79y0xbwzylwkjmfk83s5xjixyq0wqmfppd";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -8,13 +8,13 @@
|
||||
}:
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "cheesecutter";
|
||||
version = "unstable-2020-04-03";
|
||||
version = "unstable-2021-02-27";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "theyamo";
|
||||
repo = "CheeseCutter";
|
||||
rev = "68d6518f0e6249a2a5d122fc80201578337c1277";
|
||||
sha256 = "0xspzjhc6cp3m0yd0mwxncg8n1wklizamxvidrnn21jgj3mnaq2q";
|
||||
rev = "84450d3614b8fb2cabda87033baab7bedd5a5c98";
|
||||
sha256 = "sha256:0q4a791nayya6n01l0f4kk497rdq6kiq0n72fqdpwqy138pfwydn";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
@ -75,5 +75,7 @@ stdenv.mkDerivation rec {
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = teams.gnome.members;
|
||||
platforms = platforms.unix;
|
||||
# couldn't read /build/source/build/podcasts-gtk/resources/resources.gresource: No such file or directory (os error 2)
|
||||
broken = true;
|
||||
};
|
||||
}
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
let
|
||||
pname = "plexamp";
|
||||
version = "3.4.3";
|
||||
version = "3.4.4";
|
||||
name = "${pname}-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://plexamp.plex.tv/plexamp.plex.tv/desktop/Plexamp-${version}.AppImage";
|
||||
name="${pname}-${version}.AppImage";
|
||||
sha256 = "1rzhrc5yr5f6bxydgmcjwrg85vkbkn6lqj72512lyhq5gg7zmm1w";
|
||||
sha256 = "1iz6qi12ljafb49l73rba5rwi5sdbd8ck5h2r6jiy260lgr2iiyk";
|
||||
};
|
||||
|
||||
appimageContents = appimageTools.extractType2 {
|
||||
@ -32,7 +32,7 @@ in appimageTools.wrapType2 {
|
||||
meta = with lib; {
|
||||
description = "A beautiful Plex music player for audiophiles, curators, and hipsters";
|
||||
homepage = "https://plexamp.com/";
|
||||
changelog = "https://forums.plex.tv/t/plexamp-release-notes/221280/25";
|
||||
changelog = "https://forums.plex.tv/t/plexamp-release-notes/221280/26";
|
||||
license = licenses.unfree;
|
||||
maintainers = with maintainers; [ killercup synthetica ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
|
@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
|
||||
}
|
||||
else
|
||||
releasePath
|
||||
else throw "Platform is not supported by Renoise";
|
||||
else throw "Platform is not supported. Use instalation native to your platform https://www.renoise.com/";
|
||||
|
||||
buildInputs = [ alsaLib libjack2 libX11 libXcursor libXext libXrandr ];
|
||||
|
||||
@ -47,6 +47,16 @@ stdenv.mkDerivation rec {
|
||||
|
||||
mkdir $out/bin
|
||||
ln -s $out/renoise $out/bin/renoise
|
||||
|
||||
# Desktop item
|
||||
mkdir -p $out/share/applications
|
||||
cp -r Installer/renoise.desktop $out/share/applications/renoise.desktop
|
||||
|
||||
# Desktop item icons
|
||||
mkdir -p $out/share/icons/hicolor/{48x48,64x64,128x128}/apps
|
||||
cp Installer/renoise-48.png $out/share/icons/hicolor/48x48/apps/renoise.png
|
||||
cp Installer/renoise-64.png $out/share/icons/hicolor/64x64/apps/renoise.png
|
||||
cp Installer/renoise-128.png $out/share/icons/hicolor/128x128/apps/renoise.png
|
||||
'';
|
||||
|
||||
postFixup = ''
|
||||
@ -61,6 +71,9 @@ stdenv.mkDerivation rec {
|
||||
--set-rpath $out/lib \
|
||||
$path
|
||||
done
|
||||
|
||||
substituteInPlace $out/share/applications/renoise.desktop \
|
||||
--replace Exec=renoise Exec=$out/bin/renoise
|
||||
'';
|
||||
|
||||
meta = {
|
||||
|
@ -35,13 +35,13 @@
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "strawberry";
|
||||
version = "0.8.5";
|
||||
version = "0.9.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jonaski";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-+ZQ80J94Teqt4Gy6fw/pS7FwILK/TPehtJDy72Bdy1E=";
|
||||
sha256 = "sha256-1aXHMvjLK5WiE0mut/a3ynuMfNHgPbUzAZdmaVJBDXQ=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
@ -44,5 +44,7 @@ stdenv.mkDerivation rec {
|
||||
homepage = "http://www.warmplace.ru/soft/sunvox/";
|
||||
maintainers = with maintainers; [ puffnfresh ];
|
||||
platforms = [ "i686-linux" "x86_64-linux" ];
|
||||
# hash mismatch
|
||||
broken = true;
|
||||
};
|
||||
}
|
||||
|
@ -4,13 +4,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "surge";
|
||||
version = "1.7.1";
|
||||
version = "1.8.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "surge-synthesizer";
|
||||
repo = pname;
|
||||
rev = "release_${version}";
|
||||
sha256 = "1b3ccc78vrpzy18w7070zfa250dnd1bww147xxcnj457vd6n065s";
|
||||
sha256 = "0lla860g7zgn9n1zgy14g4j72d5n5y7isyxz2w5xy2fzdpdg24ql";
|
||||
leaveDotGit = true; # for SURGE_VERSION
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
@ -20,9 +20,10 @@ stdenv.mkDerivation rec {
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace src/common/SurgeStorage.cpp --replace "/usr/share/Surge" "$out/share/surge"
|
||||
substituteInPlace src/common/gui/PopupEditorDialog.cpp --replace '"zenity' '"${zenity}/bin/zenity'
|
||||
substituteInPlace src/linux/UserInteractionsLinux.cpp --replace '"zenity' '"${zenity}/bin/zenity'
|
||||
substituteInPlace vstgui.surge/vstgui/lib/platform/linux/x11fileselector.cpp --replace /usr/bin/zenity ${zenity}/bin/zenity
|
||||
patchShebangs scripts/linux/emit-vector-piggy
|
||||
patchShebangs scripts/linux/generate-lv2-ttl
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
|
@ -2,12 +2,12 @@
|
||||
|
||||
let
|
||||
pname = "ledger-live-desktop";
|
||||
version = "2.23.0";
|
||||
version = "2.24.0";
|
||||
name = "${pname}-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/LedgerHQ/${pname}/releases/download/v${version}/${pname}-${version}-linux-x86_64.AppImage";
|
||||
sha256 = "0id9zbpfq3knv8qwkhplbl9pwrvdkn212pafwh4vpjbbp4yimhq5";
|
||||
sha256 = "1xdqj825vwh3kg35v7568zr1jhvldb4wcazzgzcaawkr4qzfdb2n";
|
||||
};
|
||||
|
||||
appimageContents = appimageTools.extractType2 {
|
||||
|
@ -10,15 +10,13 @@
|
||||
, randomx, zeromq, libgcrypt, libgpgerror
|
||||
, hidapi, rapidjson, quirc
|
||||
, trezorSupport ? true
|
||||
, libusb1 ? null
|
||||
, protobuf ? null
|
||||
, python3 ? null
|
||||
, libusb1
|
||||
, protobuf
|
||||
, python3
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
assert trezorSupport -> all (x: x!=null) [ libusb1 protobuf python3 ];
|
||||
|
||||
let
|
||||
arch = if stdenv.isx86_64 then "x86-64"
|
||||
else if stdenv.isi686 then "i686"
|
||||
|
@ -2,39 +2,39 @@
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "edit-nightly";
|
||||
version = "20160425";
|
||||
version = "20180228";
|
||||
|
||||
src = fetchgit {
|
||||
url = "git://c9x.me/ed.git";
|
||||
rev = "323d49b68c5e804ed3b8cada0e2274f1589b3484";
|
||||
sha256 = "0wv8i3ii7cd9bqhjpahwp2g5fcmyk365nc7ncmvl79cxbz3f7y8v";
|
||||
rev = "77d96145b163d79186c722a7ffccfff57601157c";
|
||||
sha256 = "0rsmp7ydmrq3xx5q19566is9a2v2w5yfsphivfc7j4ljp32jlyyy";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ unzip ];
|
||||
buildInputs = [
|
||||
pkg-config
|
||||
ncurses
|
||||
libX11
|
||||
libXft
|
||||
cwebbin
|
||||
nativeBuildInputs = [
|
||||
unzip
|
||||
pkg-config
|
||||
cwebbin
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
buildInputs = [
|
||||
ncurses
|
||||
libX11
|
||||
libXft
|
||||
];
|
||||
|
||||
preBuild = ''
|
||||
ctangle *.w
|
||||
make
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin/
|
||||
cp obj/edit $out/bin/edit
|
||||
install -Dm755 obj/edit -t $out/bin
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "A relaxing mix of Vi and ACME";
|
||||
homepage = "http://c9x.me/edit";
|
||||
homepage = "https://c9x.me/edit";
|
||||
license = licenses.publicDomain;
|
||||
maintainers = [ maintainers.vrthra ];
|
||||
platforms = platforms.linux;
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -337,7 +337,7 @@ in
|
||||
name = "mps-${version}";
|
||||
version = "2020.3.1"; /* updated by script */
|
||||
description = "Create your own domain-specific language";
|
||||
license = lib.licenses.unfree;
|
||||
license = lib.licenses.asl20;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/mps/2020.3/MPS-${version}.tar.gz";
|
||||
sha256 = "0qvl724mm53rxfhafl6561rhpwppcadmwr9sh0hpsfgsprh2xznv"; /* updated by script */
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i perl -p perl perlPackages.LWPProtocolhttps perlPackages.FileSlurp
|
||||
#!nix-shell -i perl -p perl perlPackages.LWPProtocolHttps perlPackages.FileSlurp
|
||||
|
||||
use strict;
|
||||
use List::Util qw(reduce);
|
||||
|
@ -1,5 +1,5 @@
|
||||
{ stdenv, lib, makeDesktopItem
|
||||
, unzip, libsecret, libXScrnSaver, wrapGAppsHook
|
||||
, unzip, libsecret, libXScrnSaver, libxshmfence, wrapGAppsHook
|
||||
, gtk2, atomEnv, at-spi2-atk, autoPatchelfHook
|
||||
, systemd, fontconfig, libdbusmenu
|
||||
|
||||
@ -60,7 +60,7 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
buildInputs = [ libsecret libXScrnSaver ]
|
||||
buildInputs = [ libsecret libXScrnSaver libxshmfence ]
|
||||
++ lib.optionals (!stdenv.isDarwin) ([ gtk2 at-spi2-atk wrapGAppsHook ] ++ atomEnv.packages);
|
||||
|
||||
runtimeDependencies = lib.optional (stdenv.isLinux) [ (lib.getLib systemd) fontconfig.lib libdbusmenu ];
|
||||
|
@ -21,13 +21,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "fondo";
|
||||
version = "1.5.1";
|
||||
version = "1.5.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "calo001";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-eGHgZm9Q6JnY6OQNAyrFvRsuyuFnruMJNckOCCiO4Ug=";
|
||||
sha256 = "sha256-EATZRmYSGUzWYaPqFT4mLTGGvwUp+Mn93yMF2JsPaYo=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -1,48 +1,113 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, fetchpatch, cmake, ninja, coin3d,
|
||||
xercesc, ode, eigen, qtbase, qttools, qtwebengine, qtxmlpatterns, wrapQtAppsHook,
|
||||
opencascade-occt, gts, hdf5, vtk, medfile, zlib, python3Packages, swig,
|
||||
gfortran, libXmu, soqt, libf2c, libGLU, makeWrapper, pkg-config, mpi,
|
||||
spaceNavSupport ? true, libspnav, qtx11extras }:
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, fetchpatch
|
||||
, cmake
|
||||
, ninja
|
||||
, GitPython
|
||||
, boost
|
||||
, coin3d
|
||||
, eigen
|
||||
, gfortran
|
||||
, gts
|
||||
, hdf5
|
||||
, libGLU
|
||||
, libXmu
|
||||
, libf2c
|
||||
, libspnav
|
||||
, matplotlib
|
||||
, medfile
|
||||
, mpi
|
||||
, ode
|
||||
, opencascade-occt
|
||||
, pivy
|
||||
, pkg-config
|
||||
, pycollada
|
||||
, pyside2
|
||||
, pyside2-tools
|
||||
, python
|
||||
, pyyaml
|
||||
, qtbase
|
||||
, qttools
|
||||
, qtwebengine
|
||||
, qtx11extras
|
||||
, qtxmlpatterns
|
||||
, scipy
|
||||
, shiboken2
|
||||
, soqt
|
||||
, spaceNavSupport ? true
|
||||
, swig
|
||||
, vtk
|
||||
, wrapQtAppsHook
|
||||
, xercesc
|
||||
, zlib
|
||||
}:
|
||||
|
||||
let
|
||||
pythonPackages = python3Packages;
|
||||
in mkDerivation rec {
|
||||
pname = "freecad-unstable";
|
||||
version = "2020-12-08";
|
||||
mkDerivation rec {
|
||||
pname = "freecad";
|
||||
version = "0.19.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "FreeCAD";
|
||||
repo = "FreeCAD";
|
||||
rev = "daea30341ea2d5eaf2bfb65614128a5fa2abc8b7";
|
||||
sha256 = "1fza64lygqq35v7kzgqmiq5dvl5rpgkhlzv06f9dszdz44hznina";
|
||||
rev = version;
|
||||
hash = "sha256-itIrO+/mKXOPNs+2POKT8u4YZuqx/QAwVBWrHgKP1qQ=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
ninja
|
||||
pkg-config
|
||||
pythonPackages.pyside2-tools
|
||||
pyside2-tools
|
||||
wrapQtAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
coin3d xercesc ode eigen opencascade-occt gts
|
||||
zlib swig gfortran soqt libf2c makeWrapper mpi vtk hdf5 medfile
|
||||
libGLU libXmu qtbase qttools qtwebengine qtxmlpatterns
|
||||
] ++ (with pythonPackages; [
|
||||
matplotlib pycollada shiboken2 pyside2 pyside2-tools pivy python boost
|
||||
GitPython # for addon manager
|
||||
scipy pyyaml # (at least for) PyrateWorkbench
|
||||
]) ++ lib.optionals spaceNavSupport [ libspnav qtx11extras ];
|
||||
boost
|
||||
coin3d
|
||||
eigen
|
||||
gfortran
|
||||
gts
|
||||
hdf5
|
||||
libGLU
|
||||
libXmu
|
||||
libf2c
|
||||
matplotlib
|
||||
medfile
|
||||
mpi
|
||||
ode
|
||||
opencascade-occt
|
||||
pivy
|
||||
pycollada
|
||||
pyside2
|
||||
pyside2-tools
|
||||
python
|
||||
pyyaml # (at least for) PyrateWorkbench
|
||||
qtbase
|
||||
qttools
|
||||
qtwebengine
|
||||
qtxmlpatterns
|
||||
scipy
|
||||
shiboken2
|
||||
soqt
|
||||
swig
|
||||
vtk
|
||||
xercesc
|
||||
zlib
|
||||
] ++ lib.optionals spaceNavSupport [
|
||||
libspnav
|
||||
qtx11extras
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DBUILD_QT5=ON"
|
||||
"-DSHIBOKEN_INCLUDE_DIR=${pythonPackages.shiboken2}/include"
|
||||
"-DSHIBOKEN_INCLUDE_DIR=${shiboken2}/include"
|
||||
"-DSHIBOKEN_LIBRARY=Shiboken2::libshiboken"
|
||||
("-DPYSIDE_INCLUDE_DIR=${pythonPackages.pyside2}/include"
|
||||
+ ";${pythonPackages.pyside2}/include/PySide2/QtCore"
|
||||
+ ";${pythonPackages.pyside2}/include/PySide2/QtWidgets"
|
||||
+ ";${pythonPackages.pyside2}/include/PySide2/QtGui"
|
||||
("-DPYSIDE_INCLUDE_DIR=${pyside2}/include"
|
||||
+ ";${pyside2}/include/PySide2/QtCore"
|
||||
+ ";${pyside2}/include/PySide2/QtWidgets"
|
||||
+ ";${pyside2}/include/PySide2/QtGui"
|
||||
)
|
||||
"-DPYSIDE_LIBRARY=PySide2::pyside2"
|
||||
];
|
||||
@ -65,13 +130,31 @@ in mkDerivation rec {
|
||||
|
||||
postFixup = ''
|
||||
mv $out/share/doc $out
|
||||
ln -s $out/bin/FreeCAD $out/bin/freecad
|
||||
ln -s $out/bin/FreeCADCmd $out/bin/freecadcmd
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "General purpose Open Source 3D CAD/MCAD/CAx/CAE/PLM modeler";
|
||||
homepage = "https://www.freecadweb.org/";
|
||||
description = "General purpose Open Source 3D CAD/MCAD/CAx/CAE/PLM modeler";
|
||||
longDescription = ''
|
||||
FreeCAD is an open-source parametric 3D modeler made primarily to design
|
||||
real-life objects of any size. Parametric modeling allows you to easily
|
||||
modify your design by going back into your model history and changing its
|
||||
parameters.
|
||||
|
||||
FreeCAD allows you to sketch geometry constrained 2D shapes and use them
|
||||
as a base to build other objects. It contains many components to adjust
|
||||
dimensions or extract design details from 3D models to create high quality
|
||||
production ready drawings.
|
||||
|
||||
FreeCAD is designed to fit a wide range of uses including product design,
|
||||
mechanical engineering and architecture. Whether you are a hobbyist, a
|
||||
programmer, an experienced CAD user, a student or a teacher, you will feel
|
||||
right at home with FreeCAD.
|
||||
'';
|
||||
license = licenses.lgpl2Plus;
|
||||
maintainers = with maintainers; [ viric gebner ];
|
||||
maintainers = with maintainers; [ viric gebner AndersonTorres ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, fetchurl
|
||||
, fetchpatch
|
||||
, substituteAll
|
||||
, autoreconfHook
|
||||
, pkg-config
|
||||
@ -72,6 +73,12 @@ in stdenv.mkDerivation rec {
|
||||
# Use absolute paths instead of relying on PATH
|
||||
# to make sure plug-ins are loaded by the correct interpreter.
|
||||
./hardcode-plugin-interpreters.patch
|
||||
|
||||
# Fix crash without dot.
|
||||
(fetchpatch {
|
||||
url = "https://gitlab.gnome.org/GNOME/gimp/-/commit/f83fd22c4b8701ffc4ce14383e5e22756a4bce04.patch";
|
||||
sha256 = "POuvBhOSStO7hBGp4HgNx5F9pElFRoqN3W+i3u4zOnk=";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -1,31 +1,53 @@
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, fetchurl
|
||||
, qmake
|
||||
, qttools
|
||||
, zlib
|
||||
}:
|
||||
|
||||
/*
|
||||
To use aditional parts libraries
|
||||
set the variable LEOCAD_LIB=/path/to/libs/ or use option -l /path/to/libs/
|
||||
*/
|
||||
|
||||
{ lib, stdenv, fetchFromGitHub, qt4, qmake4Hook, zlib }:
|
||||
let
|
||||
parts = fetchurl {
|
||||
url = "https://web.archive.org/web/20190715142541/https://www.ldraw.org/library/updates/complete.zip";
|
||||
sha256 = "sha256-PW3XCbFwRaNkx4EgCnl2rXH7QgmpNgjTi17kZ5bladA=";
|
||||
};
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
in
|
||||
mkDerivation rec {
|
||||
pname = "leocad";
|
||||
version = "19.07.1";
|
||||
version = "21.03";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "leozide";
|
||||
repo = "leocad";
|
||||
rev = "v${version}";
|
||||
sha256 = "02kv1m18g6s4dady9jv4sjivfkrp192bmdw2a3d9lzlp60zks0p2";
|
||||
sha256 = "sha256-69Ocfk5dBXwcRqAZWEP9Xg41o/tAQo76dIOk9oYhCUE=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ qmake4Hook ];
|
||||
buildInputs = [ qt4 zlib ];
|
||||
postPatch = ''
|
||||
export qmakeFlags="$qmakeFlags INSTALL_PREFIX=$out"
|
||||
'';
|
||||
nativeBuildInputs = [ qmake qttools ];
|
||||
|
||||
buildInputs = [ zlib ];
|
||||
|
||||
qmakeFlags = [
|
||||
"INSTALL_PREFIX=${placeholder "out"}"
|
||||
"DISABLE_UPDATE_CHECK=1"
|
||||
];
|
||||
|
||||
qtWrapperArgs = [
|
||||
"--set-default LEOCAD_LIB ${parts}"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "CAD program for creating virtual LEGO models";
|
||||
homepage = "https://www.leocad.org/";
|
||||
license = licenses.gpl2;
|
||||
license = licenses.gpl2Only;
|
||||
maintainers = with maintainers; [ peterhoeg ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
|
@ -2,12 +2,12 @@
|
||||
, pango, fribidi, harfbuzz, pcre, pkg-config
|
||||
, ncursesSupport ? true, ncurses ? null
|
||||
, waylandSupport ? true, wayland ? null, wayland-protocols ? null
|
||||
, x11Support ? true, xlibs ? null, xorg ? null
|
||||
, x11Support ? true, xorg ? null
|
||||
}:
|
||||
|
||||
assert ncursesSupport -> ncurses != null;
|
||||
assert waylandSupport -> ! lib.elem null [wayland wayland-protocols];
|
||||
assert x11Support -> xlibs != null && xorg != null;
|
||||
assert x11Support -> xorg != null;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "bemenu";
|
||||
@ -38,7 +38,7 @@ stdenv.mkDerivation rec {
|
||||
] ++ optional ncursesSupport ncurses
|
||||
++ optionals waylandSupport [ wayland wayland-protocols ]
|
||||
++ optionals x11Support [
|
||||
xlibs.libX11 xlibs.libXinerama xlibs.libXft
|
||||
xorg.libX11 xorg.libXinerama xorg.libXft
|
||||
xorg.libXdmcp xorg.libpthreadstubs xorg.libxcb
|
||||
];
|
||||
|
||||
|
@ -36,11 +36,15 @@ mkDerivation rec {
|
||||
--subst-var-by qttranslations ${qttranslations}
|
||||
'';
|
||||
|
||||
# Wayland support is broken.
|
||||
# https://github.com/gyunaev/birdtray/issues/113#issuecomment-621742315
|
||||
qtWrapperArgs = [ "--set QT_QPA_PLATFORM xcb" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Mail system tray notification icon for Thunderbird";
|
||||
homepage = "https://github.com/gyunaev/birdtray";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ Flakebi ];
|
||||
maintainers = with maintainers; [ Flakebi oxalica ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
let
|
||||
perlDeps =
|
||||
[ perlPackages.MIMEtools perlPackages.HTMLParser ]
|
||||
[ perlPackages.MIMETools perlPackages.HTMLParser ]
|
||||
++ lib.optional cursesSupport perlPackages.CursesUI
|
||||
++ lib.optional uriFindSupport perlPackages.URIFind;
|
||||
|
||||
|
@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
|
||||
JSON
|
||||
ImageExifTool
|
||||
librelative
|
||||
LWPUserAgent
|
||||
LWP
|
||||
LWPProtocolHttps
|
||||
MP3Info
|
||||
MP3Tag
|
||||
|
@ -18,14 +18,14 @@
|
||||
|
||||
buildPythonApplication rec {
|
||||
pname = "jrnl";
|
||||
version = "2.7";
|
||||
version = "2.7.1";
|
||||
format = "pyproject";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jrnl-org";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "1hyjjw9mxy73n3pkliaaif135h2sd4iy43pw9d5zynid5abnr3yz";
|
||||
sha256 = "1m1shgnvwzzs0g6ph7rprwxd7w8zj0x4sbgiqsv9z41k6li7xj4r";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ poetry ];
|
||||
|
@ -25,7 +25,7 @@ appimageTools.wrapType2 rec {
|
||||
multiPkgs = null; # no 32bit needed
|
||||
extraPkgs = p: (appimageTools.defaultFhsEnvArgs.multiPkgs p) ++ [
|
||||
p.libsecret
|
||||
p.xlibs.libxkbfile
|
||||
p.xorg.libxkbfile
|
||||
];
|
||||
|
||||
# Strip version from binary name.
|
||||
|
61
pkgs/applications/misc/metadata-cleaner/default.nix
Normal file
61
pkgs/applications/misc/metadata-cleaner/default.nix
Normal file
@ -0,0 +1,61 @@
|
||||
{ lib
|
||||
, python3
|
||||
, fetchFromGitLab
|
||||
, appstream
|
||||
, desktop-file-utils
|
||||
, glib
|
||||
, gobject-introspection
|
||||
, gtk3
|
||||
, libhandy
|
||||
, librsvg
|
||||
, meson
|
||||
, ninja
|
||||
, pkg-config
|
||||
, poppler_gi
|
||||
, wrapGAppsHook
|
||||
}:
|
||||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "metadata-cleaner";
|
||||
version = "1.0.3";
|
||||
|
||||
format = "other";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "rmnvgr";
|
||||
repo = "metadata-cleaner";
|
||||
rev = "v${version}";
|
||||
sha256 = "06dzfcnjb1xd8lk0r7bi4i784gfj8r7habbjbk2c4vn2847v71lf";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
appstream
|
||||
desktop-file-utils
|
||||
glib
|
||||
gtk3
|
||||
meson
|
||||
ninja
|
||||
pkg-config
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
gobject-introspection
|
||||
gtk3
|
||||
libhandy
|
||||
librsvg
|
||||
poppler_gi
|
||||
];
|
||||
|
||||
propagatedBuildInputs = with python3.pkgs; [
|
||||
mat2
|
||||
pygobject3
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Python GTK application to view and clean metadata in files, using mat2";
|
||||
homepage = "https://gitlab.com/rmnvgr/metadata-cleaner";
|
||||
license = with licenses; [ gpl3Plus cc-by-sa-40 ];
|
||||
maintainers = with maintainers; [ dotlambda ];
|
||||
};
|
||||
}
|
@ -15,16 +15,17 @@
|
||||
|
||||
mkDerivationWith stdenv.mkDerivation rec {
|
||||
pname = "qcad";
|
||||
version = "3.25.2.0";
|
||||
version = "3.26.0.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "qcad";
|
||||
repo = "qcad";
|
||||
rev = "v${version}";
|
||||
sha256 = "1lz6q9n2p0l7k8rwqsdj6av9p3426423g5avc4y6s7nbk36280mz";
|
||||
sha256 = "sha256-V+QlwM8BWmcarwZtqJfc+MYHOZgIH1W5R8m2EHhNJls=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Patch directory lookup, remove __DATE__ and executable name
|
||||
./application-dir.patch
|
||||
];
|
||||
|
||||
@ -90,12 +91,10 @@ mkDerivationWith stdenv.mkDerivation rec {
|
||||
qttools
|
||||
];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "2D CAD package based on Qt";
|
||||
homepage = "https://qcad.org";
|
||||
license = licenses.gpl3;
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ yvesf ];
|
||||
platforms = qtbase.meta.platforms;
|
||||
};
|
||||
|
@ -6,7 +6,7 @@
|
||||
, pkg-config
|
||||
, glib
|
||||
, gtk3
|
||||
, gnome3
|
||||
, libgee
|
||||
, meson
|
||||
, ninja
|
||||
, gobject-introspection
|
||||
@ -40,7 +40,7 @@ stdenv.mkDerivation rec {
|
||||
pantheon.elementary-icon-theme
|
||||
pantheon.granite
|
||||
glib
|
||||
gnome3.libgee
|
||||
libgee
|
||||
gsettings-desktop-schemas
|
||||
gtk3
|
||||
];
|
||||
|
@ -2,16 +2,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "tickrs";
|
||||
version = "0.14.2";
|
||||
version = "0.14.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "tarkah";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-8m4mIXTqc6rDMIjODbHJL7ipH5Y4WwgsWcSmw/SaiIo=";
|
||||
sha256 = "sha256-mHMBhYI9pJkuK/6tCg1fXPjTfGFe0gkMzplesuFvl5M=";
|
||||
};
|
||||
|
||||
cargoSha256 = "sha256-ZcRFQT2CxqpO35UqK79g2Jq5SPOLZ88WiG36issC5kY=";
|
||||
cargoSha256 = "sha256-XmLobbVTYO8dA8YVtI/ntlD1RB9sO3poP6NBdDOPIlE=";
|
||||
|
||||
nativeBuildInputs = [ perl ];
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
, jbig2dec
|
||||
, libjpeg
|
||||
, mupdf
|
||||
, openjpeg_2
|
||||
, openjpeg
|
||||
, pkg-config
|
||||
, zathura_core
|
||||
}:
|
||||
@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
|
||||
jbig2dec
|
||||
libjpeg
|
||||
mupdf
|
||||
openjpeg_2
|
||||
openjpeg
|
||||
zathura_core
|
||||
] ++ lib.optional stdenv.isDarwin gtk-mac-integration;
|
||||
|
||||
|
@ -90,11 +90,11 @@ in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "brave";
|
||||
version = "1.21.76";
|
||||
version = "1.21.77";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb";
|
||||
sha256 = "JFZaPS9NmwZeyEdDqOrKG9VEQP7wIyqkR/Sk44GVxps=";
|
||||
sha256 = "Q7paeGAvdmc4+FP28ASLlJhN1ui7M5fDpxnrh+gbEm4=";
|
||||
};
|
||||
|
||||
dontConfigure = true;
|
||||
|
@ -89,5 +89,6 @@ mkChromiumDerivation (base: rec {
|
||||
then ["aarch64-linux" "x86_64-linux"]
|
||||
else [];
|
||||
timeout = 172800; # 48 hours (increased from the Hydra default of 10h)
|
||||
broken = elem channel [ "beta" "dev" ]; # Build requires LLVM 12
|
||||
};
|
||||
})
|
||||
|
@ -18,9 +18,9 @@
|
||||
}
|
||||
},
|
||||
"beta": {
|
||||
"version": "90.0.4430.19",
|
||||
"sha256": "174isyx4g62d8ggn9imp41dfklcbxi3y5nfprm4jbjmn5cb7v8xa",
|
||||
"sha256bin64": "0z665iykdsmjrjbijsrcq80y2anvcfykasznf8w4brg9l9k59wv8",
|
||||
"version": "90.0.4430.30",
|
||||
"sha256": "01b6naziii72pvw35wphfqz3inih75is038yf1mdp1847jbvxpwp",
|
||||
"sha256bin64": "0k48mfzmyjb0w75fkm2j7ll340qgmzvmskz12awc2l19hgnw1s8p",
|
||||
"deps": {
|
||||
"gn": {
|
||||
"version": "2021-02-09",
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -3,7 +3,6 @@
|
||||
, fetchFromGitLab
|
||||
, meson
|
||||
, ninja
|
||||
, cmake
|
||||
, pkg-config
|
||||
, libhandy
|
||||
, modemmanager
|
||||
@ -13,35 +12,46 @@
|
||||
, feedbackd
|
||||
, callaudiod
|
||||
, evolution-data-server
|
||||
, glib
|
||||
, folks
|
||||
, desktop-file-utils
|
||||
, appstream-glib
|
||||
, libpeas
|
||||
, dbus
|
||||
, vala
|
||||
, wrapGAppsHook
|
||||
, xvfb_run
|
||||
, gtk-doc
|
||||
, docbook-xsl-nons
|
||||
, docbook_xml_dtd_43
|
||||
, gobject-introspection
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "calls";
|
||||
version = "0.2.0";
|
||||
version = "0.3.1";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "source.puri.sm";
|
||||
owner = "Librem5";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "1qmjdhnr95dawccw1ss8hc3lk0cypj86xg2amjq7avzn86ryd76l";
|
||||
sha256 = "0igap5ynq269xqaky6fqhdg2dpsvxa008z953ywa4s5b5g5dk3dd";
|
||||
};
|
||||
|
||||
outputs = [ "out" "devdoc" ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
meson
|
||||
ninja
|
||||
pkg-config
|
||||
desktop-file-utils
|
||||
appstream-glib
|
||||
vala
|
||||
cmake
|
||||
wrapGAppsHook
|
||||
gtk-doc
|
||||
docbook-xsl-nons
|
||||
docbook_xml_dtd_43
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
@ -62,10 +72,10 @@ stdenv.mkDerivation rec {
|
||||
xvfb_run
|
||||
];
|
||||
|
||||
NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
|
||||
|
||||
mesonFlags = [
|
||||
# docs fail to build
|
||||
# https://source.puri.sm/Librem5/calls/issues/99
|
||||
"-Dgtk_doc=false"
|
||||
"-Dgtk_doc=true"
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
@ -73,6 +83,7 @@ stdenv.mkDerivation rec {
|
||||
checkPhase = ''
|
||||
runHook preCheck
|
||||
NO_AT_BRIDGE=1 \
|
||||
XDG_DATA_DIRS=${folks}/share/gsettings-schemas/${folks.name} \
|
||||
xvfb-run -s '-screen 0 800x600x24' dbus-run-session \
|
||||
--config-file=${dbus.daemon}/share/dbus-1/session.conf \
|
||||
meson test --print-errorlogs
|
||||
|
@ -2,16 +2,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "fluxctl";
|
||||
version = "1.21.2";
|
||||
version = "1.22.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "weaveworks";
|
||||
repo = "flux";
|
||||
rev = version;
|
||||
sha256 = "sha256-pI/LGAjTWFXiDKSV+dZl0wXK/TZmN9DuWf5Nu8EYNYc=";
|
||||
sha256 = "sha256-7uS8704YZ7lQTSSnbVvc6T5iadl02TeVpwVPf2uS9L4=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-Q8gIhJSZqdjBXrIcJfCd25BniDScwVzUwZ9Vc8p/z3c=";
|
||||
vendorSha256 = "sha256-oqfJaQA8ybh0UNWYJ2ukoWkwdgORwvXzRCquGstwA4M=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
@ -2,12 +2,12 @@
|
||||
|
||||
let
|
||||
pname = "lens";
|
||||
version = "3.6.7";
|
||||
version = "4.1.4";
|
||||
name = "${pname}-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/lensapp/lens/releases/download/v${version}/Lens-${version}.AppImage";
|
||||
sha256 = "0var7d31ab6lq2vq6brk2dnhlnhqjp2gdqhygif567cdmcpn4vz8";
|
||||
url = "https://github.com/lensapp/lens/releases/download/v${version}/Lens-${version}.x86_64.AppImage";
|
||||
sha256 = "0g7k3sld6m31qi0zc9z5gydi60waw7ykwz48qnyg77xz1cpm6z5x";
|
||||
name="${pname}.AppImage";
|
||||
};
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
pkgs.mkShell {
|
||||
buildInputs = [
|
||||
pkgs.poetry2nix.cli
|
||||
pkgs.pkgconfig
|
||||
pkgs.pkg-config
|
||||
pkgs.libvirt
|
||||
pkgs.poetry
|
||||
];
|
||||
|
@ -2,16 +2,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "terragrunt";
|
||||
version = "0.28.12";
|
||||
version = "0.28.15";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "gruntwork-io";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-oHujPgnS76FYihzZV5ZzPP+4+77zNtYozH9jhqJJyVI=";
|
||||
sha256 = "sha256-PhTFgYoSaGv54uak8QB7p963OBSgo9s1UM9/XBmYC8g=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-SVrDBDGK809O+RaE3gOa9U1agY6hSGI/k3FUCgm+5PA=";
|
||||
vendorSha256 = "sha256-vHKqowc3euQQyvgfaTbIgSXOhPcf2nSoteQK0a574Kc=";
|
||||
|
||||
doCheck = false;
|
||||
|
||||
|
@ -2,17 +2,17 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "waypoint";
|
||||
version = "0.2.3";
|
||||
version = "0.2.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "hashicorp";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-FTBBDKFUoyC+Xdm3+2QWXK57fLwitYrFP89OvAyHHVY=";
|
||||
sha256 = "sha256-6sV2e/m0qVSRWgdvVZ9VxEL/J57nTcTClxHF5X8/8PQ=";
|
||||
};
|
||||
|
||||
deleteVendor = true;
|
||||
vendorSha256 = "sha256-ihelAumTRgLALevJdVq3V3SISitiRPCQZUh2h5/eczA=";
|
||||
vendorSha256 = "sha256-NPE3YHulqllWDGrxQgPmy/KKE7xFPOUorLQNIU8cP50=";
|
||||
|
||||
nativeBuildInputs = [ go-bindata ];
|
||||
|
||||
|
@ -17,11 +17,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "filezilla";
|
||||
version = "3.51.0";
|
||||
version = "3.52.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://download.filezilla-project.org/client/FileZilla_${version}_src.tar.bz2";
|
||||
sha256 = "0k3c7gm16snc6dr9a3xgq14ajyqj4hxcrd6hk6jk5fsi9x51rgl2";
|
||||
sha256 = "sha256-wHiIFpKKJuiGPH3CaxWGROcb7ylAbffS7aN9xIENbN8=";
|
||||
};
|
||||
|
||||
# https://www.linuxquestions.org/questions/slackware-14/trouble-building-filezilla-3-47-2-1-current-4175671182/#post6099769
|
||||
|
@ -2,7 +2,7 @@
|
||||
"name": "element-desktop",
|
||||
"productName": "Element",
|
||||
"main": "src/electron-main.js",
|
||||
"version": "1.7.22",
|
||||
"version": "1.7.23",
|
||||
"description": "A feature-rich client for Matrix.org",
|
||||
"author": "Element",
|
||||
"repository": {
|
||||
|
@ -8,12 +8,12 @@
|
||||
|
||||
let
|
||||
executableName = "element-desktop";
|
||||
version = "1.7.22";
|
||||
version = "1.7.23";
|
||||
src = fetchFromGitHub {
|
||||
owner = "vector-im";
|
||||
repo = "element-desktop";
|
||||
rev = "v${version}";
|
||||
sha256 = "152ggkkk997pg3xdcdzn3samv3vsb6qifgkyl82bnwchy8y3611d";
|
||||
sha256 = "0vvjbh81h6sg6dbm9d6ffav0dim9sadvs67jcm702677qgigkc53";
|
||||
};
|
||||
in mkYarnPackage rec {
|
||||
name = "element-desktop-${version}";
|
||||
|
@ -12,11 +12,11 @@ let
|
||||
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "element-web";
|
||||
version = "1.7.22";
|
||||
version = "1.7.23";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/vector-im/element-web/releases/download/v${version}/element-v${version}.tar.gz";
|
||||
sha256 = "1aaa986h38kkrnyhb1y65d73idsxmkmi201511az9zlz9210ih59";
|
||||
sha256 = "10n899gc3qcjy2cskk0whwz60pnvh500x1b57kn22l9bhkg9xkvp";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
|
@ -87,8 +87,9 @@ stdenv.mkDerivation rec {
|
||||
meta = with lib; {
|
||||
description = "Matrix group messaging app";
|
||||
homepage = "https://gitlab.gnome.org/GNOME/fractal";
|
||||
license = licenses.gpl3Plus;
|
||||
broken = stdenv.isDarwin;
|
||||
license = licenses.gpl3;
|
||||
# couldn't read /build/source/build/podcasts-gtk/resources/resources.gresource: No such file or directory (os error 2)
|
||||
broken = true;
|
||||
maintainers = with maintainers; [ dtzWill worldofpeace ];
|
||||
};
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
, autoAwaySupport ? true, libXScrnSaver ? null, libX11 ? null
|
||||
, notifySupport ? true, libnotify ? null, gdk-pixbuf ? null
|
||||
, traySupport ? true, gnome2 ? null
|
||||
, traySupport ? true, gtk2 ? null
|
||||
, pgpSupport ? true, gpgme ? null
|
||||
, pythonPluginSupport ? true, python ? null
|
||||
, omemoSupport ? true, libsignal-protocol-c ? null, libgcrypt ? null
|
||||
@ -12,7 +12,7 @@
|
||||
|
||||
assert autoAwaySupport -> libXScrnSaver != null && libX11 != null;
|
||||
assert notifySupport -> libnotify != null && gdk-pixbuf != null;
|
||||
assert traySupport -> gnome2 != null;
|
||||
assert traySupport -> gtk2 != null;
|
||||
assert pgpSupport -> gpgme != null;
|
||||
assert pythonPluginSupport -> python != null;
|
||||
assert omemoSupport -> libsignal-protocol-c != null && libgcrypt != null;
|
||||
@ -45,7 +45,7 @@ stdenv.mkDerivation rec {
|
||||
curl libmesode cmocka libmicrohttpd sqlite
|
||||
] ++ optionals autoAwaySupport [ libXScrnSaver libX11 ]
|
||||
++ optionals notifySupport [ libnotify gdk-pixbuf ]
|
||||
++ optionals traySupport [ gnome2.gtk ]
|
||||
++ optionals traySupport [ gtk2 ]
|
||||
++ optionals pgpSupport [ gpgme ]
|
||||
++ optionals pythonPluginSupport [ python ]
|
||||
++ optionals omemoSupport [ libsignal-protocol-c libgcrypt ];
|
||||
|
@ -1,5 +1,5 @@
|
||||
{ lib, stdenv, fetchurl, dpkg, alsaLib, atk, cairo, cups, dbus, expat, fontconfig
|
||||
, freetype, gdk-pixbuf, glib, gnome2, nspr, nss, pango, udev, xorg }:
|
||||
, freetype, gdk-pixbuf, glib, gnome2, gtk2, nspr, nss, pango, udev, xorg }:
|
||||
let
|
||||
fullPath = lib.makeLibraryPath [
|
||||
alsaLib
|
||||
@ -13,7 +13,7 @@ let
|
||||
gdk-pixbuf
|
||||
glib
|
||||
gnome2.GConf
|
||||
gnome2.gtk
|
||||
gtk2
|
||||
nspr
|
||||
nss
|
||||
pango
|
||||
|
@ -82,6 +82,11 @@ stdenv.mkDerivation rec {
|
||||
echo "Adding runtime dependencies to RPATH of Node module $mod"
|
||||
patchelf --set-rpath "$runtime_rpath:$mod_rpath" "$mod"
|
||||
done;
|
||||
|
||||
# fix for https://docs.microsoft.com/en-us/answers/questions/298724/open-teams-meeting-link-on-linux-doens39t-work.html?childToView=309406#comment-309406
|
||||
# while we create the wrapper ourselves, gappsWrapperArgs leads to the same issue
|
||||
# another option would be to introduce gappsWrapperAppendedArgs, to allow control of positioning
|
||||
substituteInPlace "$out/bin/teams" --replace '.teams-wrapped" --disable-namespace-sandbox --disable-setuid-sandbox "$@"' '.teams-wrapped" "$@" --disable-namespace-sandbox --disable-setuid-sandbox'
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
|
@ -22,13 +22,13 @@ let
|
||||
pname = "wire-desktop";
|
||||
|
||||
version = {
|
||||
x86_64-darwin = "3.21.3959";
|
||||
x86_64-linux = "3.22.2937";
|
||||
x86_64-darwin = "3.23.4046";
|
||||
x86_64-linux = "3.23.2938";
|
||||
}.${system} or throwSystem;
|
||||
|
||||
sha256 = {
|
||||
x86_64-darwin = "0fgzzqf1wnkjbcr0j0vjn6sggkz0z1kx6w4gi7gk4c4markdicm1";
|
||||
x86_64-linux = "1pl2dsrgckkd8mm0cpxrz8i8rn4jfx7b9lvdyc8392sbq4chjcb7";
|
||||
x86_64-darwin = "19k8102chh4yphk89kiz83yarawnzdnsq0hbsqpjdhbmarqjcd9s";
|
||||
x86_64-linux = "1cx5azl5dvya1hf0gayafm4rg6ccmmq978xsgm6lf0rlb4kirj65";
|
||||
}.${system} or throwSystem;
|
||||
|
||||
meta = with lib; {
|
||||
|
@ -28,7 +28,7 @@ perlPackages.buildPerlPackage rec {
|
||||
|
||||
propagatedBuildInputs = [ openssl ];
|
||||
|
||||
checkInputs = with perlPackages; [ TestDeep TestMore ];
|
||||
checkInputs = with perlPackages; [ TestDeep ];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs script/convos
|
||||
|
@ -9,11 +9,11 @@ let
|
||||
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "msmtp";
|
||||
version = "1.8.14";
|
||||
version = "1.8.15";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://marlam.de/${pname}/releases/${pname}-${version}.tar.xz";
|
||||
sha256 = "1W8GXXEUhunCNGGFFaAqSKSNq0BRs08+EI++y2+3c7Q=";
|
||||
sha256 = "sha256-ImXcY56/Lt8waf/+CjvXZ0n4tY9AAdXN6uGYc5SQmc4=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
@ -1,5 +1,5 @@
|
||||
{ stdenv, fetchurl
|
||||
, gnome3
|
||||
, glade
|
||||
, gnunet
|
||||
, gnutls
|
||||
, gtk3
|
||||
@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
gnome3.glade
|
||||
glade
|
||||
gnunet
|
||||
gnutls
|
||||
gtk3
|
||||
@ -39,5 +39,7 @@ stdenv.mkDerivation rec {
|
||||
meta = gnunet.meta // {
|
||||
description = "GNUnet GTK User Interface";
|
||||
homepage = "https://git.gnunet.org/gnunet-gtk.git";
|
||||
# configure: error: compiling gnunet-gtk requires GNUnet core headers
|
||||
broken = true;
|
||||
};
|
||||
}
|
||||
|
@ -12,7 +12,7 @@
|
||||
, pcre
|
||||
# Build options
|
||||
, enableGTK3 ? false
|
||||
, gnome3
|
||||
, gtk3
|
||||
, xorg
|
||||
, wrapGAppsHook
|
||||
, enableQt ? false
|
||||
@ -65,7 +65,7 @@ in stdenv.mkDerivation {
|
||||
pcre
|
||||
]
|
||||
++ lib.optionals enableQt [ qt5.qttools qt5.qtbase ]
|
||||
++ lib.optionals enableGTK3 [ gnome3.gtk xorg.libpthreadstubs ]
|
||||
++ lib.optionals enableGTK3 [ gtk3 xorg.libpthreadstubs ]
|
||||
++ lib.optionals enableSystemd [ systemd ]
|
||||
++ lib.optionals stdenv.isLinux [ inotify-tools ]
|
||||
;
|
||||
|
@ -85,5 +85,6 @@ stdenv.mkDerivation rec {
|
||||
description = "A completely decentralised P2P filesharing client based on the Bittorrent protocol";
|
||||
license = licenses.lgpl21;
|
||||
platforms = platforms.linux;
|
||||
broken = true; # 2021-03-17 see https://github.com/NixOS/nixpkgs/issues/93053
|
||||
};
|
||||
}
|
||||
|
@ -21,7 +21,7 @@
|
||||
# Runtime dependencies;
|
||||
# A few additional ones (e.g. Node) are already shipped together with the
|
||||
# AppImage, so we don't have to duplicate them here.
|
||||
alsaLib, dbus-glib, fuse, gnome3, libdbusmenu-gtk2, udev, nss
|
||||
alsaLib, dbus-glib, fuse, gnome3, gtk3, libdbusmenu-gtk2, udev, nss
|
||||
}:
|
||||
|
||||
let
|
||||
@ -56,7 +56,7 @@ in stdenv.mkDerivation {
|
||||
alsaLib
|
||||
dbus-glib
|
||||
fuse
|
||||
gnome3.gtk
|
||||
gtk3
|
||||
libdbusmenu-gtk2
|
||||
nss
|
||||
udev
|
||||
@ -92,7 +92,7 @@ in stdenv.mkDerivation {
|
||||
|
||||
# This is required for the file picker dialog - otherwise pcloud just
|
||||
# crashes
|
||||
export XDG_DATA_DIRS="${gnome3.gsettings-desktop-schemas}/share/gsettings-schemas/${gnome3.gsettings-desktop-schemas.name}:${gnome3.gtk}/share/gsettings-schemas/${gnome3.gtk.name}:$XDG_DATA_DIRS"
|
||||
export XDG_DATA_DIRS="${gnome3.gsettings-desktop-schemas}/share/gsettings-schemas/${gnome3.gsettings-desktop-schemas.name}:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_DATA_DIRS"
|
||||
|
||||
exec "$out/app/pcloud"
|
||||
EOF
|
||||
|
@ -18,13 +18,13 @@ let
|
||||
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "freerdp";
|
||||
version = "2.3.1";
|
||||
version = "2.3.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "FreeRDP";
|
||||
repo = "FreeRDP";
|
||||
rev = version;
|
||||
sha256 = "sha256-qKvzxIFUiRoX/fCTDoGOGFMfzMTCRq+A5b9K2J2Wnwk=";
|
||||
sha256 = "sha256-qqpdMBDcVfXm/KB54zv23O8raGqBhAKqXo6Kj2VaI8w=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
@ -4,13 +4,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "onedrive";
|
||||
version = "2.4.7";
|
||||
version = "2.4.10";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "abraunegg";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "12g2z6c4f65y8cc7vyhk9nlg1mpbsmlsj7ghlny452qhr13m7qpn";
|
||||
sha256 = "sha256:0dvxjkni66g82j9wr6yy07sn7d7yr7bbc0py89pxybvsbid88l65";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook ldc installShellFiles pkg-config ];
|
||||
|
@ -15,7 +15,7 @@
|
||||
, gdk-pixbuf
|
||||
, glib
|
||||
, glibc
|
||||
, gnome3
|
||||
, gsettings-desktop-schemas
|
||||
, gst_all_1
|
||||
, gtk2
|
||||
, gtk3
|
||||
@ -95,7 +95,7 @@ in stdenv.mkDerivation rec {
|
||||
fontconfig
|
||||
gdk-pixbuf
|
||||
glib
|
||||
gnome3.gsettings_desktop_schemas
|
||||
gsettings-desktop-schemas
|
||||
gst_all_1.gst-plugins-base
|
||||
gst_all_1.gstreamer
|
||||
gtk2
|
||||
|
@ -24,11 +24,11 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "PortfolioPerformance";
|
||||
version = "0.51.1";
|
||||
version = "0.51.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/buchen/portfolio/releases/download/${version}/PortfolioPerformance-${version}-linux.gtk.x86_64.tar.gz";
|
||||
sha256 = "sha256-sQisFv+MVGod/gmF0/EWNDvYzkpF3qbDuL5eDr7w0Bs=";
|
||||
sha256 = "sha256-5wBzGj4DkTOqtN7X8/EBDoiBtbYB6vGJJ5IkuME7a9A=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -1,5 +1,5 @@
|
||||
{ lib, stdenv, fetchFromGitHub, cmake, pkg-config
|
||||
, mpg123, SDL2, gnome3, faad2, pcre
|
||||
, mpg123, SDL2, gtkmm3, faad2, pcre
|
||||
} :
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
nativeBuildInputs = [ cmake pkg-config ];
|
||||
|
||||
buildInputs = [ faad2 mpg123 SDL2 gnome3.gtkmm pcre ];
|
||||
buildInputs = [ faad2 mpg123 SDL2 gtkmm3 pcre ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Play DAB/DAB+ from ETI-NI aligned stream";
|
||||
|
@ -1,18 +1,18 @@
|
||||
{ lib, stdenv, fetchFromGitHub, python3, which, dmd, ldc, zlib }:
|
||||
{ lib, stdenv, fetchFromGitHub, python3, which, ldc, zlib }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "sambamba";
|
||||
version = "0.7.1";
|
||||
version = "0.8.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "biod";
|
||||
repo = "sambamba";
|
||||
rev = "v${version}";
|
||||
sha256 = "0k5wy06zrbsc40x6answgz7rz2phadyqwlhi9nqxbfqanbg9kq20";
|
||||
sha256 = "sha256:0kx5a0fmvv9ldz2hnh7qavgf7711kqc73zxf51k4cca4hr58zxr9";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ which python3 dmd ldc ];
|
||||
nativeBuildInputs = [ which python3 ldc ];
|
||||
buildInputs = [ zlib ];
|
||||
|
||||
# Upstream's install target is broken; copy manually
|
||||
|
@ -6,7 +6,7 @@
|
||||
, epoxy
|
||||
, fetchFromGitHub
|
||||
, glm
|
||||
, gnome3
|
||||
, gtkmm3
|
||||
, lib
|
||||
, libgit2
|
||||
, librsvg
|
||||
@ -37,7 +37,7 @@ stdenv.mkDerivation rec {
|
||||
curl
|
||||
epoxy
|
||||
glm
|
||||
gnome3.gtkmm
|
||||
gtkmm3
|
||||
libgit2
|
||||
librsvg
|
||||
libuuid
|
||||
|
@ -1,6 +1,7 @@
|
||||
{ lib, stdenv
|
||||
, fetchFromGitLab
|
||||
, gnome3
|
||||
, dconf
|
||||
, wxGTK30
|
||||
, wxGTK31
|
||||
, makeWrapper
|
||||
@ -186,12 +187,12 @@ stdenv.mkDerivation rec {
|
||||
makeWrapperArgs = with passthru.libraries; [
|
||||
"--prefix XDG_DATA_DIRS : ${base}/share"
|
||||
"--prefix XDG_DATA_DIRS : ${hicolor-icon-theme}/share"
|
||||
"--prefix XDG_DATA_DIRS : ${gnome3.defaultIconTheme}/share"
|
||||
"--prefix XDG_DATA_DIRS : ${gnome3.adwaita-icon-theme}/share"
|
||||
"--prefix XDG_DATA_DIRS : ${wxGTK.gtk}/share/gsettings-schemas/${wxGTK.gtk.name}"
|
||||
"--prefix XDG_DATA_DIRS : ${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}"
|
||||
# wrapGAppsHook did these two as well, no idea if it matters...
|
||||
"--prefix XDG_DATA_DIRS : ${cups}/share"
|
||||
"--prefix GIO_EXTRA_MODULES : ${gnome3.dconf}/lib/gio/modules"
|
||||
"--prefix GIO_EXTRA_MODULES : ${dconf}/lib/gio/modules"
|
||||
|
||||
"--set-default KISYSMOD ${footprints}/share/kicad/modules"
|
||||
"--set-default KICAD_SYMBOL_DIR ${symbols}/share/kicad/library"
|
||||
|
@ -127,7 +127,7 @@ self = stdenv.mkDerivation {
|
||||
buildInputs = [ ncurses ] ++ ocamlBuildInputs
|
||||
++ optionals buildIde
|
||||
(if versionAtLeast "8.10"
|
||||
then [ ocamlPackages.lablgtk3-sourceview3 glib gnome3.defaultIconTheme wrapGAppsHook ]
|
||||
then [ ocamlPackages.lablgtk3-sourceview3 glib gnome3.adwaita-icon-theme wrapGAppsHook ]
|
||||
else [ ocamlPackages.lablgtk ]);
|
||||
|
||||
postPatch = ''
|
||||
|
@ -5,6 +5,7 @@
|
||||
, pkg-config
|
||||
, autoreconfHook
|
||||
, gnome2
|
||||
, gtk2
|
||||
, glib
|
||||
, libtifiles2
|
||||
, libticables2
|
||||
@ -32,7 +33,7 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
gnome2.gtk
|
||||
gtk2
|
||||
gnome2.libglade
|
||||
glib
|
||||
libtifiles2
|
||||
|
@ -32,7 +32,6 @@
|
||||
, ntl
|
||||
, numpy
|
||||
, pari
|
||||
, pkgconfig
|
||||
, pkg-config
|
||||
, planarity
|
||||
, ppl
|
||||
@ -86,7 +85,6 @@ buildPythonPackage rec {
|
||||
cypari2
|
||||
jinja2
|
||||
numpy
|
||||
pkgconfig
|
||||
boost
|
||||
arb
|
||||
brial
|
||||
|
@ -7,6 +7,7 @@
|
||||
, intltool
|
||||
, glib
|
||||
, gnome2
|
||||
, gtk2
|
||||
, gfm
|
||||
, libticables2
|
||||
, libticalcs2
|
||||
@ -36,7 +37,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
buildInputs = [
|
||||
glib
|
||||
gnome2.gtk
|
||||
gtk2
|
||||
gnome2.libglade
|
||||
gfm
|
||||
libticables2
|
||||
|
@ -1,5 +1,5 @@
|
||||
{ lib, stdenv, fetchgit, makeWrapper, pkg-config,
|
||||
gnome2, glib, pango, cairo, gdk-pixbuf, atk, freetype, xorg,
|
||||
gnome2, gtk2, glib, pango, cairo, gdk-pixbuf, atk, freetype, xorg,
|
||||
configH ? ""
|
||||
}:
|
||||
|
||||
@ -14,7 +14,7 @@ stdenv.mkDerivation {
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
gnome2.vte glib pango gnome2.gtk cairo gdk-pixbuf atk freetype xorg.libX11
|
||||
gnome2.vte glib pango gtk2 cairo gdk-pixbuf atk freetype xorg.libX11
|
||||
xorg.xorgproto xorg.libXext makeWrapper pkg-config
|
||||
];
|
||||
|
||||
|
@ -4,6 +4,7 @@
|
||||
, fetchFromGitLab
|
||||
, gettext
|
||||
, gnome3
|
||||
, libgtop
|
||||
, gtk3
|
||||
, libhandy
|
||||
, pcre2
|
||||
@ -33,7 +34,7 @@ stdenv.mkDerivation {
|
||||
|
||||
buildInputs = [
|
||||
gettext
|
||||
gnome3.libgtop
|
||||
libgtop
|
||||
gnome3.nautilus
|
||||
gtk3
|
||||
libhandy
|
||||
|
@ -5,7 +5,7 @@
|
||||
, ninja
|
||||
, python3
|
||||
, pkg-config
|
||||
, dmd
|
||||
, ldc
|
||||
, dconf
|
||||
, dbus
|
||||
, gsettings-desktop-schemas
|
||||
@ -16,17 +16,18 @@
|
||||
, glib
|
||||
, wrapGAppsHook
|
||||
, libunwind
|
||||
, appstream
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "tilix";
|
||||
version = "unstable-2019-10-02";
|
||||
version = "1.9.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "gnunn1";
|
||||
repo = "tilix";
|
||||
rev = "ffcd31e3c0e1a560ce89468152d8726065e8fb1f";
|
||||
sha256 = "1bzv7xiqhyblz1rw8ln4zpspmml49vnshn1zsv9di5q7kfgpqrgq";
|
||||
rev = "${version}";
|
||||
sha256 = "sha256:020gr4q7kmqq8vnsh8rw97gf1p2n1yq4d7ncyjjh9l13zkaxqqv9";
|
||||
};
|
||||
|
||||
# Default upstream else LDC fails to link
|
||||
@ -36,12 +37,13 @@ stdenv.mkDerivation {
|
||||
|
||||
nativeBuildInputs = [
|
||||
desktop-file-utils
|
||||
dmd
|
||||
ldc
|
||||
meson
|
||||
ninja
|
||||
pkg-config
|
||||
python3
|
||||
wrapGAppsHook
|
||||
appstream
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
|
@ -2,18 +2,18 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "lab";
|
||||
version = "0.20.0";
|
||||
version = "0.21.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "zaquestion";
|
||||
repo = "lab";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-EQqbWM/4CInFNndfD+k7embPUFLXgxRT44e/+Ik2TDs=";
|
||||
sha256 = "sha256-mkhJmrKpIISd0m0m8fQ9vKuEr6h23BBxK6yo5fB+xcA=";
|
||||
};
|
||||
|
||||
subPackages = [ "." ];
|
||||
|
||||
vendorSha256 = "sha256-T6kGhje3K2HnR8xRuio6AsYbSwIdbWvAk3ZSnbm1NsA=";
|
||||
vendorSha256 = "sha256-cf+DVnGjSNV2eZ8S/Vk+VPlykoSjngrQuPeA9IshBUg=";
|
||||
|
||||
doCheck = false;
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
{
|
||||
"version": "13.8.5",
|
||||
"repo_hash": "0dpyqynd6rscg07s58y0cjn7vfj2h21h51ja0fm6ll76wb02sbm6",
|
||||
"version": "13.8.6",
|
||||
"repo_hash": "0izzvr4bw86nbrqkf44gkcf63ham10cw4vp5yk0ylgm7w0kimv8v",
|
||||
"owner": "gitlab-org",
|
||||
"repo": "gitlab",
|
||||
"rev": "v13.8.5-ee",
|
||||
"rev": "v13.8.6-ee",
|
||||
"passthru": {
|
||||
"GITALY_SERVER_VERSION": "13.8.5",
|
||||
"GITALY_SERVER_VERSION": "13.8.6",
|
||||
"GITLAB_PAGES_VERSION": "1.34.0",
|
||||
"GITLAB_SHELL_VERSION": "13.15.1",
|
||||
"GITLAB_WORKHORSE_VERSION": "8.59.2"
|
||||
|
@ -33,14 +33,14 @@ let
|
||||
};
|
||||
};
|
||||
in buildGoModule rec {
|
||||
version = "13.8.5";
|
||||
version = "13.8.6";
|
||||
pname = "gitaly";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "gitlab-org";
|
||||
repo = "gitaly";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-hKIjKltPPmz50Ru7elpHdeoyGAqgp+txR3fKleqY7hM=";
|
||||
sha256 = "sha256-6ocP4SMafvLI2jfvcB8jk1AemAI/TiBQ1iaVxK7I54A=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-oVw6vXI3CyOn4l02PkYx3HVpZfzQPi3yBuf9tRvoWoM=";
|
||||
|
@ -2,8 +2,6 @@
|
||||
, yacc, libtool, fontconfig, pango, gd, libwebp
|
||||
}:
|
||||
|
||||
assert libpng != null && libjpeg != null && expat != null;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "graphviz-2.0";
|
||||
|
||||
|
@ -0,0 +1,23 @@
|
||||
{ writeShellScript
|
||||
, nix
|
||||
, curl
|
||||
, gzip
|
||||
, xmlstarlet
|
||||
, common-updater-scripts
|
||||
}:
|
||||
|
||||
{ attrPath }:
|
||||
|
||||
let
|
||||
url = "http://mirrors.kodi.tv/addons/matrix/addons.xml.gz";
|
||||
updateScript = writeShellScript "update.sh" ''
|
||||
set -ex
|
||||
|
||||
attrPath=$1
|
||||
namespace=$(${nix}/bin/nix-instantiate $systemArg --eval -E "with import ./. {}; $attrPath.namespace" | tr -d '"')
|
||||
version=$(${curl}/bin/curl -s -L ${url} | ${gzip}/bin/gunzip -c | ${xmlstarlet}/bin/xml select -T -t -m "//addons/addon[@id='$namespace']" -v @version)
|
||||
|
||||
${common-updater-scripts}/bin/update-source-version "$attrPath" "$version"
|
||||
'';
|
||||
in
|
||||
[ updateScript attrPath ]
|
21
pkgs/applications/video/kodi-packages/certifi/default.nix
Normal file
21
pkgs/applications/video/kodi-packages/certifi/default.nix
Normal file
@ -0,0 +1,21 @@
|
||||
{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
|
||||
buildKodiAddon rec {
|
||||
pname = "certifi";
|
||||
namespace = "script.module.certifi";
|
||||
version = "2019.11.28+matrix.1";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
|
||||
sha256 = "0vsd68izv1ix0hb1gm74qq3zff0sxmhfhjyh7y9005zzp2gpi62v";
|
||||
};
|
||||
|
||||
passthru.updateScript = addonUpdateScript {
|
||||
attrPath = "kodi.packages.certifi";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://certifi.io";
|
||||
description = "Python package for providing Mozilla's CA Bundle";
|
||||
license = licenses.mpl20;
|
||||
};
|
||||
}
|
21
pkgs/applications/video/kodi-packages/chardet/default.nix
Normal file
21
pkgs/applications/video/kodi-packages/chardet/default.nix
Normal file
@ -0,0 +1,21 @@
|
||||
{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
|
||||
buildKodiAddon rec {
|
||||
pname = "chardet";
|
||||
namespace = "script.module.chardet";
|
||||
version = "3.0.4+matrix.3";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
|
||||
sha256 = "05928dj4fsj2zg8ajdial3sdf8izddq64sr0al3zy1gqw91jp80f";
|
||||
};
|
||||
|
||||
passthru.updateScript = addonUpdateScript {
|
||||
attrPath = "kodi.packages.chardet";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/Freso/script.module.chardet";
|
||||
description = "Universal encoding detector";
|
||||
license = licenses.lgpl2Only;
|
||||
};
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
{ lib, buildKodiAddon, fetchFromGitHub, controller }:
|
||||
buildKodiAddon rec {
|
||||
pname = "game-controller-${controller}";
|
||||
namespace = "game.controller.${controller}";
|
||||
version = "1.0.3";
|
||||
|
||||
sourceDir = "addons/" + namespace;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kodi-game";
|
||||
repo = "kodi-game-controllers";
|
||||
rev = "01acb5b6e8b85392b3cb298b034aadb1b24ccf18";
|
||||
sha256 = "0sbc0w0fwbp7rbmbgb6a1kglhnn5g85hijcbbvf5x6jdq9v3f1qb";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Add support for different gaming controllers.";
|
||||
platforms = platforms.all;
|
||||
maintainers = with maintainers; [ edwtjo ];
|
||||
};
|
||||
}
|
21
pkgs/applications/video/kodi-packages/idna/default.nix
Normal file
21
pkgs/applications/video/kodi-packages/idna/default.nix
Normal file
@ -0,0 +1,21 @@
|
||||
{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
|
||||
buildKodiAddon rec {
|
||||
pname = "idna";
|
||||
namespace = "script.module.idna";
|
||||
version = "2.8.1+matrix.1";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
|
||||
sha256 = "02s75fhfmbs3a38wvxba51aj3lv5bidshjdkl6yjfji6waxpr9xh";
|
||||
};
|
||||
|
||||
passthru.updateScript = addonUpdateScript {
|
||||
attrPath = "kodi.packages.idna";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/Freso/script.module.idna";
|
||||
description = "Internationalized Domain Names for Python";
|
||||
license = licenses.bsd3;
|
||||
};
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
{ stdenv, lib, rel, addonDir, buildKodiBinaryAddon, fetchFromGitHub, expat, glib, nspr, nss }:
|
||||
buildKodiBinaryAddon rec {
|
||||
pname = "inputstream-adaptive";
|
||||
namespace = "inputstream.adaptive";
|
||||
version = "2.6.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "peak3d";
|
||||
repo = "inputstream.adaptive";
|
||||
rev = "${version}-${rel}";
|
||||
sha256 = "1pwqmbr78wp12jn6rwv63npdfc456adwz0amlxf6gvgg43li6p7s";
|
||||
};
|
||||
|
||||
extraBuildInputs = [ expat ];
|
||||
|
||||
extraRuntimeDependencies = [ glib nspr nss stdenv.cc.cc.lib ];
|
||||
|
||||
extraInstallPhase = let n = namespace; in ''
|
||||
ln -s $out/lib/addons/${n}/libssd_wv.so $out/${addonDir}/${n}/libssd_wv.so
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/peak3d/inputstream.adaptive";
|
||||
description = "Kodi inputstream addon for several manifest types";
|
||||
platforms = platforms.all;
|
||||
maintainers = with maintainers; [ sephalon ];
|
||||
};
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
|
||||
buildKodiAddon rec {
|
||||
pname = "inputstreamhelper";
|
||||
namespace = "script.module.inputstreamhelper";
|
||||
version = "0.5.2+matrix.1";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
|
||||
sha256 = "18lkksljfa57w69yklbldf7dgyykrm84pd10mdjdqdm88fdiiijk";
|
||||
};
|
||||
|
||||
passthru.updateScript = addonUpdateScript {
|
||||
attrPath = "kodi.packages.inputstreamhelper";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/emilsvennesson/script.module.inputstreamhelper";
|
||||
description = "A simple Kodi module that makes life easier for add-on developers relying on InputStream based add-ons and DRM playback";
|
||||
license = licenses.mit;
|
||||
};
|
||||
}
|
21
pkgs/applications/video/kodi-packages/joystick/default.nix
Normal file
21
pkgs/applications/video/kodi-packages/joystick/default.nix
Normal file
@ -0,0 +1,21 @@
|
||||
{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub, tinyxml, udev }:
|
||||
buildKodiBinaryAddon rec {
|
||||
pname = namespace;
|
||||
namespace = "peripheral.joystick";
|
||||
version = "1.7.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "xbmc";
|
||||
repo = namespace;
|
||||
rev = "${version}-${rel}";
|
||||
sha256 = "1dhj4afr9kj938xx70fq5r409mz6lbw4n581ljvdjj9lq7akc914";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Binary addon for raw joystick input.";
|
||||
platforms = platforms.all;
|
||||
maintainers = with maintainers; [ edwtjo ];
|
||||
};
|
||||
|
||||
extraBuildInputs = [ tinyxml udev ];
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
{ stdenv, fetchFromGitHub, cmake, kodi, libcec_platform, tinyxml }:
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "kodi-platform";
|
||||
version = "17.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "xbmc";
|
||||
repo = pname;
|
||||
rev = "c8188d82678fec6b784597db69a68e74ff4986b5";
|
||||
sha256 = "1r3gs3c6zczmm66qcxh9mr306clwb3p7ykzb70r3jv5jqggiz199";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
buildInputs = [ kodi libcec_platform tinyxml ];
|
||||
}
|
21
pkgs/applications/video/kodi-packages/myconnpy/default.nix
Normal file
21
pkgs/applications/video/kodi-packages/myconnpy/default.nix
Normal file
@ -0,0 +1,21 @@
|
||||
{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
|
||||
buildKodiAddon rec {
|
||||
pname = "myconnpy";
|
||||
namespace = "script.module.myconnpy";
|
||||
version = "8.0.18+matrix.1";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
|
||||
sha256 = "1cx3qdzw9lkkmbyvyrmc2i193is20fihn2sfl7kmv43f708vam0k";
|
||||
};
|
||||
|
||||
passthru.updateScript = addonUpdateScript {
|
||||
attrPath = "kodi.packages.myconnpy";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "http://dev.mysql.com/doc/connector-python/en/index.html";
|
||||
description = "MySQL Connector/Python";
|
||||
license = licenses.gpl2Only;
|
||||
};
|
||||
}
|
26
pkgs/applications/video/kodi-packages/netflix/default.nix
Normal file
26
pkgs/applications/video/kodi-packages/netflix/default.nix
Normal file
@ -0,0 +1,26 @@
|
||||
{ lib, buildKodiAddon, fetchFromGitHub, signals, inputstreamhelper, requests, myconnpy }:
|
||||
buildKodiAddon rec {
|
||||
pname = "netflix";
|
||||
namespace = "plugin.video.netflix";
|
||||
version = "1.14.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "CastagnaIT";
|
||||
repo = namespace;
|
||||
rev = "v${version}";
|
||||
sha256 = "0vv3234gg4brp0gvrsl4vdskmpfbyk4z7cjmmj31zn4m8j33japn";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
signals
|
||||
inputstreamhelper
|
||||
requests
|
||||
myconnpy
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/CastagnaIT/plugin.video.netflix";
|
||||
description = "Netflix VOD Services Add-on";
|
||||
license = licenses.mit;
|
||||
};
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user