Merge staging-next into staging

This commit is contained in:
Frederik Rietdijk 2019-02-13 13:27:42 +01:00
commit 8b05b829be
235 changed files with 4490 additions and 3490 deletions

View file

@ -21,7 +21,7 @@ fix-misc-xml:
.PHONY: clean .PHONY: clean
clean: clean:
rm -f ${MD_TARGETS} .version manual-full.xml functions/library/locations.xml rm -f ${MD_TARGETS} .version manual-full.xml functions/library/locations.xml functions/library/generated
rm -rf ./out/ ./highlightjs rm -rf ./out/ ./highlightjs
.PHONY: validate .PHONY: validate
@ -71,16 +71,22 @@ highlightjs:
cp -r "$$HIGHLIGHTJS/loader.js" highlightjs/ cp -r "$$HIGHLIGHTJS/loader.js" highlightjs/
manual-full.xml: ${MD_TARGETS} .version functions/library/locations.xml *.xml **/*.xml **/**/*.xml manual-full.xml: ${MD_TARGETS} .version functions/library/locations.xml functions/library/generated *.xml **/*.xml **/**/*.xml
xmllint --nonet --xinclude --noxincludenode manual.xml --output manual-full.xml xmllint --nonet --xinclude --noxincludenode manual.xml --output manual-full.xml
.version: .version:
nix-instantiate --eval \ nix-instantiate --eval \
-E '(import ../lib).version' > .version -E '(import ../lib).version' > .version
function_locations := $(shell nix-build --no-out-link ./lib-function-locations.nix)
functions/library/locations.xml: functions/library/locations.xml:
nix-build ./lib-function-locations.nix \ ln -s $(function_locations) ./functions/library/locations.xml
--out-link ./functions/library/locations.xml
functions/library/generated:
nix-build ./lib-function-docs.nix \
--arg locationsXml $(function_locations)\
--out-link ./functions/library/generated
%.section.xml: %.section.md %.section.xml: %.section.md
pandoc $^ -w docbook+smart \ pandoc $^ -w docbook+smart \

View file

@ -1962,6 +1962,11 @@
github = "ikervagyok"; github = "ikervagyok";
name = "Balázs Lengyel"; name = "Balázs Lengyel";
}; };
ilikeavocadoes = {
email = "ilikeavocadoes@hush.com";
github = "ilikeavocadoes";
name = "Lassi Haasio";
};
illegalprime = { illegalprime = {
email = "themichaeleden@gmail.com"; email = "themichaeleden@gmail.com";
github = "illegalprime"; github = "illegalprime";
@ -4668,7 +4673,7 @@
name = "Thomas Bereknyei"; name = "Thomas Bereknyei";
}; };
tomsmeets = { tomsmeets = {
email = "tom@tsmeets.nl"; email = "tom.tsmeets@gmail.com";
github = "tomsmeets"; github = "tomsmeets";
name = "Tom Smeets"; name = "Tom Smeets";
}; };

View file

@ -1,7 +1,12 @@
ansicolors, ansicolors,
argparse, argparse,
basexx,
cqueues
dkjson dkjson
fifo
inspect inspect
lgi
lpeg_patterns
lrexlib-gnu, lrexlib-gnu,
lrexlib-posix, lrexlib-posix,
ltermbox, ltermbox,

1 ansicolors,
2 argparse,
3 basexx,
4 cqueues
5 dkjson
6 fifo
7 inspect
8 lgi
9 lpeg_patterns
10 lrexlib-gnu,
11 lrexlib-posix,
12 ltermbox,

View file

@ -1,26 +0,0 @@
# nix-build '<nixpkgs/nixos>' -A config.system.build.novaImage --arg configuration "{ imports = [ ./nixos/maintainers/scripts/openstack/nova-image.nix ]; }"
{ config, lib, pkgs, ... }:
with lib;
{
imports =
[ ../../../modules/installer/cd-dvd/channel.nix
../../../modules/virtualisation/nova-config.nix
];
system.build.novaImage = import ../../../lib/make-disk-image.nix {
inherit lib config;
pkgs = import ../../../.. { inherit (pkgs) system; }; # ensure we use the regular qemu-kvm package
diskSize = 8192;
format = "qcow2";
configFile = pkgs.writeText "configuration.nix"
''
{
imports = [ <nixpkgs/nixos/modules/virtualisation/nova-config.nix> ];
}
'';
};
}

View file

@ -0,0 +1,26 @@
# nix-build '<nixpkgs/nixos>' -A config.system.build.openstackImage --arg configuration "{ imports = [ ./nixos/maintainers/scripts/openstack/openstack-image.nix ]; }"
{ config, lib, pkgs, ... }:
with lib;
{
imports =
[ ../../../modules/installer/cd-dvd/channel.nix
../../../modules/virtualisation/openstack-config.nix
];
system.build.openstackImage = import ../../../lib/make-disk-image.nix {
inherit lib config;
pkgs = import ../../../.. { inherit (pkgs) system; }; # ensure we use the regular qemu-kvm package
diskSize = 8192;
format = "qcow2";
configFile = pkgs.writeText "configuration.nix"
''
{
imports = [ <nixpkgs/nixos/modules/virtualisation/openstack-config.nix> ];
}
'';
};
}

View file

@ -641,7 +641,6 @@ $bootLoaderConfig
# Define a user account. Don't forget to set a password with passwd. # Define a user account. Don't forget to set a password with passwd.
# users.users.jane = { # users.users.jane = {
# isNormalUser = true; # isNormalUser = true;
# uid = 1000;
# extraGroups = [ "wheel" ]; # Enable sudo for the user. # extraGroups = [ "wheel" ]; # Enable sudo for the user.
# }; # };

View file

@ -25,6 +25,14 @@ in {
''; '';
}; };
virtualHost = mkOption {
type = types.nullOr types.str;
default = null;
description = ''
Name of the nginx virtualhost to use and setup. If null, do not setup any virtualhost.
'';
};
listenAddress = mkOption { listenAddress = mkOption {
type = types.string; type = types.string;
default = "127.0.0.1"; default = "127.0.0.1";
@ -116,6 +124,8 @@ in {
-Dserver.port=${toString cfg.port} \ -Dserver.port=${toString cfg.port} \
-Dairsonic.contextPath=${cfg.contextPath} \ -Dairsonic.contextPath=${cfg.contextPath} \
-Djava.awt.headless=true \ -Djava.awt.headless=true \
${optionalString (cfg.virtualHost != null)
"-Dserver.use-forward-headers=true"} \
${toString cfg.jvmOptions} \ ${toString cfg.jvmOptions} \
-verbose:gc \ -verbose:gc \
-jar ${pkgs.airsonic}/webapps/airsonic.war -jar ${pkgs.airsonic}/webapps/airsonic.war
@ -126,6 +136,13 @@ in {
}; };
}; };
services.nginx = mkIf (cfg.virtualHost != null) {
enable = true;
virtualHosts."${cfg.virtualHost}" = {
locations."${cfg.contextPath}".proxyPass = "http://${cfg.listenAddress}:${toString cfg.port}";
};
};
users.users.airsonic = { users.users.airsonic = {
description = "Airsonic service user"; description = "Airsonic service user";
name = cfg.user; name = cfg.user;

View file

@ -145,6 +145,7 @@ in
PLEX_MEDIA_SERVER_HOME="${cfg.package}/usr/lib/plexmediaserver"; PLEX_MEDIA_SERVER_HOME="${cfg.package}/usr/lib/plexmediaserver";
PLEX_MEDIA_SERVER_MAX_PLUGIN_PROCS="6"; PLEX_MEDIA_SERVER_MAX_PLUGIN_PROCS="6";
PLEX_MEDIA_SERVER_TMPDIR="/tmp"; PLEX_MEDIA_SERVER_TMPDIR="/tmp";
PLEX_MEDIA_SERVER_USE_SYSLOG="true";
LD_LIBRARY_PATH="/run/opengl-driver/lib:${cfg.package}/usr/lib/plexmediaserver"; LD_LIBRARY_PATH="/run/opengl-driver/lib:${cfg.package}/usr/lib/plexmediaserver";
LC_ALL="en_US.UTF-8"; LC_ALL="en_US.UTF-8";
LANG="en_US.UTF-8"; LANG="en_US.UTF-8";

View file

@ -41,8 +41,9 @@ in
}; };
voiceIP = mkOption { voiceIP = mkOption {
type = types.str; type = types.nullOr types.str;
default = "0.0.0.0"; default = null;
example = "0.0.0.0";
description = '' description = ''
IP on which the server instance will listen for incoming voice connections. Defaults to any IP. IP on which the server instance will listen for incoming voice connections. Defaults to any IP.
''; '';
@ -57,8 +58,9 @@ in
}; };
fileTransferIP = mkOption { fileTransferIP = mkOption {
type = types.str; type = types.nullOr types.str;
default = "0.0.0.0"; default = null;
example = "0.0.0.0";
description = '' description = ''
IP on which the server instance will listen for incoming file transfer connections. Defaults to any IP. IP on which the server instance will listen for incoming file transfer connections. Defaults to any IP.
''; '';
@ -73,8 +75,9 @@ in
}; };
queryIP = mkOption { queryIP = mkOption {
type = types.str; type = types.nullOr types.str;
default = "0.0.0.0"; default = null;
example = "0.0.0.0";
description = '' description = ''
IP on which the server instance will listen for incoming ServerQuery connections. Defaults to any IP. IP on which the server instance will listen for incoming ServerQuery connections. Defaults to any IP.
''; '';
@ -122,9 +125,12 @@ in
ExecStart = '' ExecStart = ''
${ts3}/bin/ts3server \ ${ts3}/bin/ts3server \
dbsqlpath=${ts3}/lib/teamspeak/sql/ logpath=${cfg.logPath} \ dbsqlpath=${ts3}/lib/teamspeak/sql/ logpath=${cfg.logPath} \
voice_ip=${cfg.voiceIP} default_voice_port=${toString cfg.defaultVoicePort} \ ${optionalString (cfg.voiceIP != null) "voice_ip=${cfg.voiceIP}"} \
filetransfer_ip=${cfg.fileTransferIP} filetransfer_port=${toString cfg.fileTransferPort} \ default_voice_port=${toString cfg.defaultVoicePort} \
query_ip=${cfg.queryIP} query_port=${toString cfg.queryPort} license_accepted=1 ${optionalString (cfg.fileTransferIP != null) "filetransfer_ip=${cfg.fileTransferIP}"} \
filetransfer_port=${toString cfg.fileTransferPort} \
${optionalString (cfg.queryIP != null) "query_ip=${cfg.queryIP}"} \
query_port=${toString cfg.queryPort} license_accepted=1
''; '';
WorkingDirectory = cfg.dataDir; WorkingDirectory = cfg.dataDir;
User = user; User = user;

View file

@ -6,7 +6,7 @@ let
cfg = config.services.confluence; cfg = config.services.confluence;
pkg = pkgs.atlassian-confluence.override (optionalAttrs cfg.sso.enable { pkg = cfg.package.override (optionalAttrs cfg.sso.enable {
enableSSO = cfg.sso.enable; enableSSO = cfg.sso.enable;
crowdProperties = '' crowdProperties = ''
application.name ${cfg.sso.applicationName} application.name ${cfg.sso.applicationName}
@ -125,7 +125,12 @@ in
}; };
}; };
package = mkOption {
type = types.package;
default = pkgs.atlassian-confluence;
defaultText = "pkgs.atlassian-confluence";
description = "Atlassian Confluence package to use.";
};
jrePackage = mkOption { jrePackage = mkOption {
type = types.package; type = types.package;

View file

@ -6,7 +6,7 @@ let
cfg = config.services.crowd; cfg = config.services.crowd;
pkg = pkgs.atlassian-crowd.override { pkg = cfg.package.override {
home = cfg.home; home = cfg.home;
port = cfg.listenPort; port = cfg.listenPort;
openidPassword = cfg.openidPassword; openidPassword = cfg.openidPassword;
@ -93,6 +93,13 @@ in
}; };
}; };
package = mkOption {
type = types.package;
default = pkgs.atlassian-crowd;
defaultText = "pkgs.atlassian-crowd";
description = "Atlassian Crowd package to use.";
};
jrePackage = mkOption { jrePackage = mkOption {
type = types.package; type = types.package;
default = pkgs.oraclejre8; default = pkgs.oraclejre8;

View file

@ -6,7 +6,7 @@ let
cfg = config.services.jira; cfg = config.services.jira;
pkg = pkgs.atlassian-jira.override (optionalAttrs cfg.sso.enable { pkg = cfg.package.override (optionalAttrs cfg.sso.enable {
enableSSO = cfg.sso.enable; enableSSO = cfg.sso.enable;
crowdProperties = '' crowdProperties = ''
application.name ${cfg.sso.applicationName} application.name ${cfg.sso.applicationName}
@ -131,6 +131,13 @@ in
}; };
}; };
package = mkOption {
type = types.package;
default = pkgs.atlassian-jira;
defaultText = "pkgs.atlassian-jira";
description = "Atlassian JIRA package to use.";
};
jrePackage = mkOption { jrePackage = mkOption {
type = types.package; type = types.package;
default = pkgs.oraclejre8; default = pkgs.oraclejre8;

View file

@ -34,7 +34,14 @@ let
define('DB_HOST', '${optionalString (cfg.database.host != null) cfg.database.host}'); define('DB_HOST', '${optionalString (cfg.database.host != null) cfg.database.host}');
define('DB_USER', '${cfg.database.user}'); define('DB_USER', '${cfg.database.user}');
define('DB_NAME', '${cfg.database.name}'); define('DB_NAME', '${cfg.database.name}');
define('DB_PASS', '${optionalString (cfg.database.password != null) (escape ["'" "\\"] cfg.database.password)}'); define('DB_PASS', ${
if (cfg.database.password != null) then
"'${(escape ["'" "\\"] cfg.database.password)}'"
else if (cfg.database.passwordFile != null) then
"file_get_contents('${cfg.database.passwordFile}')"
else
""
});
define('DB_PORT', '${toString dbPort}'); define('DB_PORT', '${toString dbPort}');
define('AUTH_AUTO_CREATE', ${boolToString cfg.auth.autoCreate}); define('AUTH_AUTO_CREATE', ${boolToString cfg.auth.autoCreate});
@ -168,6 +175,14 @@ let
''; '';
}; };
passwordFile = mkOption {
type = types.nullOr types.str;
default = null;
description = ''
The database user's password.
'';
};
port = mkOption { port = mkOption {
type = types.nullOr types.int; type = types.nullOr types.int;
default = null; default = null;
@ -479,21 +494,30 @@ let
config = mkIf cfg.enable { config = mkIf cfg.enable {
services.phpfpm.poolConfigs = mkIf (cfg.pool == "${poolName}") { assertions = [
"${poolName}" = '' {
listen = "${phpfpmSocketName}"; assertion = cfg.database.password != null -> cfg.database.passwordFile == null;
listen.owner = nginx message = "Cannot set both password and passwordFile";
listen.group = nginx }
listen.mode = 0600 ];
user = ${cfg.user}
pm = dynamic services.phpfpm.pools = mkIf (cfg.pool == "${poolName}") {
pm.max_children = 75 "${poolName}" = {
pm.start_servers = 10 listen = "/var/run/phpfpm/${poolName}.sock";
pm.min_spare_servers = 5 extraConfig = ''
pm.max_spare_servers = 20 listen.owner = nginx
pm.max_requests = 500 listen.group = nginx
catch_workers_output = 1 listen.mode = 0600
''; user = ${cfg.user}
pm = dynamic
pm.max_children = 75
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500
catch_workers_output = 1
'';
};
}; };
# NOTE: No configuration is done if not using virtual host # NOTE: No configuration is done if not using virtual host
@ -510,7 +534,7 @@ let
locations."~ \.php$" = { locations."~ \.php$" = {
extraConfig = '' extraConfig = ''
fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:${phpfpmSocketName}; fastcgi_pass unix:${config.services.phpfpm.pools.${cfg.pool}.listen};
fastcgi_index index.php; fastcgi_index index.php;
''; '';
}; };
@ -528,6 +552,7 @@ let
callSql = e: callSql = e:
if cfg.database.type == "pgsql" then '' if cfg.database.type == "pgsql" then ''
${optionalString (cfg.database.password != null) "PGPASSWORD=${cfg.database.password}"} \ ${optionalString (cfg.database.password != null) "PGPASSWORD=${cfg.database.password}"} \
${optionalString (cfg.database.passwordFile != null) "PGPASSWORD=$(cat ${cfg.database.passwordFile}"}) \
${pkgs.sudo}/bin/sudo -u ${cfg.user} ${config.services.postgresql.package}/bin/psql \ ${pkgs.sudo}/bin/sudo -u ${cfg.user} ${config.services.postgresql.package}/bin/psql \
-U ${cfg.database.user} \ -U ${cfg.database.user} \
${optionalString (cfg.database.host != null) "-h ${cfg.database.host} --port ${toString dbPort}"} \ ${optionalString (cfg.database.host != null) "-h ${cfg.database.host} --port ${toString dbPort}"} \

View file

@ -21,7 +21,7 @@ in
type = types.int; type = types.int;
description = '' description = ''
Idle time to wait until xautolock locks the computer. Idle time (in minutes) to wait until xautolock locks the computer.
''; '';
}; };

View file

@ -321,7 +321,9 @@ let
in concatMapStrings (n: in concatMapStrings (n:
let s = optionalString (env."${n}" != null) let s = optionalString (env."${n}" != null)
"Environment=${builtins.toJSON "${n}=${env.${n}}"}\n"; "Environment=${builtins.toJSON "${n}=${env.${n}}"}\n";
in if stringLength s >= 2048 then throw "The value of the environment variable ${n} in systemd service ${name}.service is too long." else s) (attrNames env)} # systemd max line length is now 1MiB
# https://github.com/systemd/systemd/commit/e6dde451a51dc5aaa7f4d98d39b8fe735f73d2af
in if stringLength s >= 1048576 then throw "The value of the environment variable ${n} in systemd service ${name}.service is too long." else s) (attrNames env)}
${if def.reloadIfChanged then '' ${if def.reloadIfChanged then ''
X-ReloadIfChanged=true X-ReloadIfChanged=true
'' else if !def.restartIfChanged then '' '' else if !def.restartIfChanged then ''

View file

@ -8,7 +8,13 @@
with lib; with lib;
let cfg = config.ec2; in let
cfg = config.ec2;
metadataFetcher = import ./ec2-metadata-fetcher.nix {
targetRoot = "$targetRoot/";
wgetExtraOptions = "-q";
};
in
{ {
imports = [ ../profiles/headless.nix ./ec2-data.nix ./amazon-init.nix ]; imports = [ ../profiles/headless.nix ./ec2-data.nix ./amazon-init.nix ];
@ -61,26 +67,7 @@ let cfg = config.ec2; in
# Nix operations. # Nix operations.
boot.initrd.postMountCommands = boot.initrd.postMountCommands =
'' ''
metaDir=$targetRoot/etc/ec2-metadata ${metadataFetcher}
mkdir -m 0755 -p "$metaDir"
echo "getting EC2 instance metadata..."
if ! [ -e "$metaDir/ami-manifest-path" ]; then
wget -q -O "$metaDir/ami-manifest-path" http://169.254.169.254/1.0/meta-data/ami-manifest-path
fi
if ! [ -e "$metaDir/user-data" ]; then
wget -q -O "$metaDir/user-data" http://169.254.169.254/1.0/user-data && chmod 600 "$metaDir/user-data"
fi
if ! [ -e "$metaDir/hostname" ]; then
wget -q -O "$metaDir/hostname" http://169.254.169.254/1.0/meta-data/hostname
fi
if ! [ -e "$metaDir/public-keys-0-openssh-key" ]; then
wget -q -O "$metaDir/public-keys-0-openssh-key" http://169.254.169.254/1.0/meta-data/public-keys/0/openssh-key
fi
diskNr=0 diskNr=0
diskForUnionfs= diskForUnionfs=

View file

@ -78,12 +78,11 @@ in
}; };
}; };
config = { config = mkIf (cfg.dockerPreloader.images != []) {
assertions = [{ assertions = [{
# If docker.storageDriver is null, Docker choose the storage # If docker.storageDriver is null, Docker choose the storage
# driver. So, in this case, we cannot be sure overlay2 is used. # driver. So, in this case, we cannot be sure overlay2 is used.
assertion = cfg.dockerPreloader.images == [] assertion = cfg.docker.storageDriver == "overlay2"
|| cfg.docker.storageDriver == "overlay2"
|| cfg.docker.storageDriver == "overlay" || cfg.docker.storageDriver == "overlay"
|| cfg.docker.storageDriver == null; || cfg.docker.storageDriver == null;
message = "The Docker image Preloader only works with overlay2 storage driver!"; message = "The Docker image Preloader only works with overlay2 storage driver!";

View file

@ -0,0 +1,23 @@
{ targetRoot, wgetExtraOptions }:
''
metaDir=${targetRoot}etc/ec2-metadata
mkdir -m 0755 -p "$metaDir"
echo "getting EC2 instance metadata..."
if ! [ -e "$metaDir/ami-manifest-path" ]; then
wget ${wgetExtraOptions} -O "$metaDir/ami-manifest-path" http://169.254.169.254/1.0/meta-data/ami-manifest-path
fi
if ! [ -e "$metaDir/user-data" ]; then
wget ${wgetExtraOptions} -O "$metaDir/user-data" http://169.254.169.254/1.0/user-data && chmod 600 "$metaDir/user-data"
fi
if ! [ -e "$metaDir/hostname" ]; then
wget ${wgetExtraOptions} -O "$metaDir/hostname" http://169.254.169.254/1.0/meta-data/hostname
fi
if ! [ -e "$metaDir/public-keys-0-openssh-key" ]; then
wget ${wgetExtraOptions} -O "$metaDir/public-keys-0-openssh-key" http://169.254.169.254/1.0/meta-data/public-keys/0/openssh-key
fi
''

View file

@ -1,60 +0,0 @@
{ lib, ... }:
with lib;
{
imports = [
../profiles/qemu-guest.nix
../profiles/headless.nix
];
config = {
fileSystems."/" = {
device = "/dev/disk/by-label/nixos";
autoResize = true;
};
boot.growPartition = true;
boot.kernelParams = [ "console=ttyS0" ];
boot.loader.grub.device = "/dev/vda";
boot.loader.timeout = 0;
# Allow root logins
services.openssh = {
enable = true;
permitRootLogin = "prohibit-password";
passwordAuthentication = mkDefault false;
};
services.cloud-init.enable = true;
# Put /tmp and /var on /ephemeral0, which has a lot more space.
# Unfortunately we can't do this with the `fileSystems' option
# because it has no support for creating the source of a bind
# mount. Also, "move" /nix to /ephemeral0 by layering a unionfs-fuse
# mount on top of it so we have a lot more space for Nix operations.
/*
boot.initrd.postMountCommands =
''
mkdir -m 1777 -p $targetRoot/ephemeral0/tmp
mkdir -m 1777 -p $targetRoot/tmp
mount --bind $targetRoot/ephemeral0/tmp $targetRoot/tmp
mkdir -m 755 -p $targetRoot/ephemeral0/var
mkdir -m 755 -p $targetRoot/var
mount --bind $targetRoot/ephemeral0/var $targetRoot/var
mkdir -p /unionfs-chroot/ro-nix
mount --rbind $targetRoot/nix /unionfs-chroot/ro-nix
mkdir -p /unionfs-chroot/rw-nix
mkdir -m 755 -p $targetRoot/ephemeral0/nix
mount --rbind $targetRoot/ephemeral0/nix /unionfs-chroot/rw-nix
unionfs -o allow_other,cow,nonempty,chroot=/unionfs-chroot,max_files=32768 /rw-nix=RW:/ro-nix=RO $targetRoot/nix
'';
boot.initrd.supportedFilesystems = [ "unionfs-fuse" ];
*/
};
}

View file

@ -0,0 +1,57 @@
{ pkgs, lib, ... }:
with lib;
let
metadataFetcher = import ./ec2-metadata-fetcher.nix {
targetRoot = "/";
wgetExtraOptions = "--retry-connrefused";
};
in
{
imports = [
../profiles/qemu-guest.nix
../profiles/headless.nix
# The Openstack Metadata service exposes data on an EC2 API also.
./ec2-data.nix
./amazon-init.nix
];
config = {
fileSystems."/" = {
device = "/dev/disk/by-label/nixos";
autoResize = true;
};
boot.growPartition = true;
boot.kernelParams = [ "console=ttyS0" ];
boot.loader.grub.device = "/dev/vda";
boot.loader.timeout = 0;
# Allow root logins
services.openssh = {
enable = true;
permitRootLogin = "prohibit-password";
passwordAuthentication = mkDefault false;
};
# Force getting the hostname from Openstack metadata.
networking.hostName = mkDefault "";
systemd.services.openstack-init = {
path = [ pkgs.wget ];
description = "Fetch Metadata on startup";
wantedBy = [ "multi-user.target" ];
before = [ "apply-ec2-data.service" "amazon-init.service"];
wants = [ "network-online.target" ];
after = [ "network-online.target" ];
script = metadataFetcher;
restartIfChanged = false;
unitConfig.X-StopOnRemoval = false;
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
};
};
};
}

View file

@ -163,6 +163,9 @@ in
openldap = handleTest ./openldap.nix {}; openldap = handleTest ./openldap.nix {};
opensmtpd = handleTest ./opensmtpd.nix {}; opensmtpd = handleTest ./opensmtpd.nix {};
openssh = handleTest ./openssh.nix {}; openssh = handleTest ./openssh.nix {};
# openstack-image-userdata doesn't work in a sandbox as the simulated openstack instance needs network access
#openstack-image-userdata = (handleTestOn ["x86_64-linux"] ./openstack-image.nix {}).userdata or {};
openstack-image-metadata = (handleTestOn ["x86_64-linux"] ./openstack-image.nix {}).metadata or {};
osquery = handleTest ./osquery.nix {}; osquery = handleTest ./osquery.nix {};
osrm-backend = handleTest ./osrm-backend.nix {}; osrm-backend = handleTest ./osrm-backend.nix {};
ostree = handleTest ./ostree.nix {}; ostree = handleTest ./ostree.nix {};

View file

@ -0,0 +1,49 @@
{ pkgs, makeTest }:
with pkgs.lib;
{
makeEc2Test = { name, image, userData, script, hostname ? "ec2-instance", sshPublicKey ? null }:
let
metaData = pkgs.stdenv.mkDerivation {
name = "metadata";
buildCommand = ''
mkdir -p $out/1.0/meta-data
ln -s ${pkgs.writeText "userData" userData} $out/1.0/user-data
echo "${hostname}" > $out/1.0/meta-data/hostname
echo "(unknown)" > $out/1.0/meta-data/ami-manifest-path
'' + optionalString (sshPublicKey != null) ''
mkdir -p $out/1.0/meta-data/public-keys/0
ln -s ${pkgs.writeText "sshPublicKey" sshPublicKey} $out/1.0/meta-data/public-keys/0/openssh-key
'';
};
in makeTest {
name = "ec2-" + name;
nodes = {};
testScript =
''
my $imageDir = ($ENV{'TMPDIR'} // "/tmp") . "/vm-state-machine";
mkdir $imageDir, 0700;
my $diskImage = "$imageDir/machine.qcow2";
system("qemu-img create -f qcow2 -o backing_file=${image}/nixos.qcow2 $diskImage") == 0 or die;
system("qemu-img resize $diskImage 10G") == 0 or die;
# Note: we use net=169.0.0.0/8 rather than
# net=169.254.0.0/16 to prevent dhcpcd from getting horribly
# confused. (It would get a DHCP lease in the 169.254.*
# range, which it would then configure and prompty delete
# again when it deletes link-local addresses.) Ideally we'd
# turn off the DHCP server, but qemu does not have an option
# to do that.
my $startCommand = "qemu-kvm -m 768";
$startCommand .= " -device virtio-net-pci,netdev=vlan0";
$startCommand .= " -netdev 'user,id=vlan0,net=169.0.0.0/8,guestfwd=tcp:169.254.169.254:80-cmd:${pkgs.micro-httpd}/bin/micro_httpd ${metaData}'";
$startCommand .= " -drive file=$diskImage,if=virtio,werror=report";
$startCommand .= " \$QEMU_OPTS";
my $machine = createMachine({ startCommand => $startCommand });
${script}
'';
};
}

View file

@ -6,6 +6,8 @@
with import ../lib/testing.nix { inherit system pkgs; }; with import ../lib/testing.nix { inherit system pkgs; };
with pkgs.lib; with pkgs.lib;
with import common/ec2.nix { inherit makeTest pkgs; };
let let
image = image =
(import ../lib/eval-config.nix { (import ../lib/eval-config.nix {
@ -39,65 +41,14 @@ let
]; ];
}).config.system.build.amazonImage; }).config.system.build.amazonImage;
makeEc2Test = { name, userData, script, hostname ? "ec2-instance", sshPublicKey ? null }: sshKeys = import ./ssh-keys.nix pkgs;
let snakeOilPrivateKey = sshKeys.snakeOilPrivateKey.text;
metaData = pkgs.stdenv.mkDerivation { snakeOilPublicKey = sshKeys.snakeOilPublicKey;
name = "metadata";
buildCommand = ''
mkdir -p $out/1.0/meta-data
ln -s ${pkgs.writeText "userData" userData} $out/1.0/user-data
echo "${hostname}" > $out/1.0/meta-data/hostname
echo "(unknown)" > $out/1.0/meta-data/ami-manifest-path
'' + optionalString (sshPublicKey != null) ''
mkdir -p $out/1.0/meta-data/public-keys/0
ln -s ${pkgs.writeText "sshPublicKey" sshPublicKey} $out/1.0/meta-data/public-keys/0/openssh-key
'';
};
in makeTest {
name = "ec2-" + name;
nodes = {};
testScript =
''
my $imageDir = ($ENV{'TMPDIR'} // "/tmp") . "/vm-state-machine";
mkdir $imageDir, 0700;
my $diskImage = "$imageDir/machine.qcow2";
system("qemu-img create -f qcow2 -o backing_file=${image}/nixos.qcow2 $diskImage") == 0 or die;
system("qemu-img resize $diskImage 10G") == 0 or die;
# Note: we use net=169.0.0.0/8 rather than
# net=169.254.0.0/16 to prevent dhcpcd from getting horribly
# confused. (It would get a DHCP lease in the 169.254.*
# range, which it would then configure and prompty delete
# again when it deletes link-local addresses.) Ideally we'd
# turn off the DHCP server, but qemu does not have an option
# to do that.
my $startCommand = "qemu-kvm -m 768";
$startCommand .= " -device virtio-net-pci,netdev=vlan0";
$startCommand .= " -netdev 'user,id=vlan0,net=169.0.0.0/8,guestfwd=tcp:169.254.169.254:80-cmd:${pkgs.micro-httpd}/bin/micro_httpd ${metaData}'";
$startCommand .= " -drive file=$diskImage,if=virtio,werror=report";
$startCommand .= " \$QEMU_OPTS";
my $machine = createMachine({ startCommand => $startCommand });
${script}
'';
};
snakeOilPrivateKey = ''
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACDEPmwZv5dDPrMUaq0dDP+6eBTTe+QNrz14KBEIdhHd1QAAAJDufJ4S7nye
EgAAAAtzc2gtZWQyNTUxOQAAACDEPmwZv5dDPrMUaq0dDP+6eBTTe+QNrz14KBEIdhHd1Q
AAAECgwbDlYATM5/jypuptb0GF/+zWZcJfoVIFBG3LQeRyGsQ+bBm/l0M+sxRqrR0M/7p4
FNN75A2vPXgoEQh2Ed3VAAAADEVDMiB0ZXN0IGtleQE=
-----END OPENSSH PRIVATE KEY-----
'';
snakeOilPublicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMQ+bBm/l0M+sxRqrR0M/7p4FNN75A2vPXgoEQh2Ed3V EC2 test key";
in { in {
boot-ec2-nixops = makeEc2Test { boot-ec2-nixops = makeEc2Test {
name = "nixops-userdata"; name = "nixops-userdata";
inherit image;
sshPublicKey = snakeOilPublicKey; # That's right folks! My user's key is also the host key! sshPublicKey = snakeOilPublicKey; # That's right folks! My user's key is also the host key!
userData = '' userData = ''
@ -142,6 +93,7 @@ in {
boot-ec2-config = makeEc2Test { boot-ec2-config = makeEc2Test {
name = "config-userdata"; name = "config-userdata";
inherit image;
sshPublicKey = snakeOilPublicKey; sshPublicKey = snakeOilPublicKey;
# ### http://nixos.org/channels/nixos-unstable nixos # ### http://nixos.org/channels/nixos-unstable nixos

View file

@ -0,0 +1,88 @@
{ system ? builtins.currentSystem,
config ? {},
pkgs ? import ../.. { inherit system config; }
}:
with import ../lib/testing.nix { inherit system pkgs; };
with pkgs.lib;
with import common/ec2.nix { inherit makeTest pkgs; };
let
image =
(import ../lib/eval-config.nix {
inherit system;
modules = [
../maintainers/scripts/openstack/openstack-image.nix
../modules/testing/test-instrumentation.nix
../modules/profiles/qemu-guest.nix
];
}).config.system.build.openstackImage;
sshKeys = import ./ssh-keys.nix pkgs;
snakeOilPrivateKey = sshKeys.snakeOilPrivateKey.text;
snakeOilPublicKey = sshKeys.snakeOilPublicKey;
in {
metadata = makeEc2Test {
name = "openstack-ec2-metadata";
inherit image;
sshPublicKey = snakeOilPublicKey;
userData = ''
SSH_HOST_ED25519_KEY_PUB:${snakeOilPublicKey}
SSH_HOST_ED25519_KEY:${replaceStrings ["\n"] ["|"] snakeOilPrivateKey}
'';
script = ''
$machine->start;
$machine->waitForFile("/etc/ec2-metadata/user-data");
$machine->waitForUnit("sshd.service");
$machine->succeed("grep unknown /etc/ec2-metadata/ami-manifest-path");
# We have no keys configured on the client side yet, so this should fail
$machine->fail("ssh -o BatchMode=yes localhost exit");
# Let's install our client private key
$machine->succeed("mkdir -p ~/.ssh");
$machine->succeed("echo '${snakeOilPrivateKey}' > ~/.ssh/id_ed25519");
$machine->succeed("chmod 600 ~/.ssh/id_ed25519");
# We haven't configured the host key yet, so this should still fail
$machine->fail("ssh -o BatchMode=yes localhost exit");
# Add the host key; ssh should finally succeed
$machine->succeed("echo localhost,127.0.0.1 ${snakeOilPublicKey} > ~/.ssh/known_hosts");
$machine->succeed("ssh -o BatchMode=yes localhost exit");
# Just to make sure resizing is idempotent.
$machine->shutdown;
$machine->start;
$machine->waitForFile("/etc/ec2-metadata/user-data");
'';
};
userdata = makeEc2Test {
name = "openstack-ec2-metadata";
inherit image;
sshPublicKey = snakeOilPublicKey;
userData = ''
{ pkgs, ... }:
{
imports = [
<nixpkgs/nixos/modules/virtualisation/openstack-config.nix>
<nixpkgs/nixos/modules/testing/test-instrumentation.nix>
<nixpkgs/nixos/modules/profiles/qemu-guest.nix>
];
environment.etc.testFile = {
text = "whoa";
};
}
'';
script = ''
$machine->start;
$machine->waitForFile("/etc/testFile");
$machine->succeed("cat /etc/testFile | grep -q 'whoa'");
'';
};
}

View file

@ -0,0 +1,33 @@
{ stdenv, fetchFromGitHub, cmake, pkgconfig, libjack2, alsaLib
, freetype, libX11, libXrandr, libXinerama, libXext, libXcursor
, adlplugChip ? "-DADLplug_CHIP=OPL3"
, pname ? "ADLplug" }:
stdenv.mkDerivation rec {
name = "${pname}-${version}";
version = "v1.0.0-beta.5";
src = fetchFromGitHub {
owner = "jpcima";
repo = "ADLplug";
rev = version;
sha256 = "1f8v61nv33xwpzmmk38dkr3fvm2j2xf0a74agxnl9p1yvy3a9w3s";
fetchSubmodules = true;
};
cmakeFlags = [ adlplugChip ];
buildInputs = [
libjack2 alsaLib freetype libX11 libXrandr libXinerama libXext
libXcursor
];
nativeBuildInputs = [ cmake pkgconfig ];
meta = with stdenv.lib; {
description = "Synthesizer plugin for ADLMIDI and OPNMIDI (VST/LV2)";
homepage = src.meta.homepage;
license = licenses.boost;
platforms = platforms.linux;
maintainers = with maintainers; [ gnidorah ];
};
}

View file

@ -14,6 +14,8 @@ stdenv.mkDerivation {
buildInputs = [ fftwFloat gtk2 ladspaPlugins libjack2 liblo libxml2 makeWrapper ] buildInputs = [ fftwFloat gtk2 ladspaPlugins libjack2 liblo libxml2 makeWrapper ]
++ (with perlPackages; [ perl XMLParser ]); ++ (with perlPackages; [ perl XMLParser ]);
NIX_LDFLAGS = [ "-ldl" ];
postInstall = '' postInstall = ''
wrapProgram $out/bin/jamin --set LADSPA_PATH ${ladspaPlugins}/lib/ladspa wrapProgram $out/bin/jamin --set LADSPA_PATH ${ladspaPlugins}/lib/ladspa
''; '';

View file

@ -16,6 +16,6 @@ stdenv.mkDerivation rec {
homepage = http://bvi.sourceforge.net/download.html; homepage = http://bvi.sourceforge.net/download.html;
license = licenses.gpl2; license = licenses.gpl2;
maintainers = with maintainers; [ pSub ]; maintainers = with maintainers; [ pSub ];
platforms = platforms.linux; platforms = with platforms; linux ++ darwin;
}; };
} }

View file

@ -2,7 +2,7 @@
with stdenv.lib; with stdenv.lib;
pythonPackages.buildPythonPackage rec { pythonPackages.buildPythonApplication rec {
pname = "neovim-remote"; pname = "neovim-remote";
version = "2.1.4"; version = "2.1.4";
disabled = !pythonPackages.isPy3k; disabled = !pythonPackages.isPy3k;

View file

@ -31,6 +31,6 @@ stdenv.mkDerivation rec {
homepage = http://www.xm1math.net/texmaker/; homepage = http://www.xm1math.net/texmaker/;
license = licenses.gpl2Plus; license = licenses.gpl2Plus;
platforms = platforms.linux; platforms = platforms.linux;
maintainers = with maintainers; [ cfouche ]; maintainers = with maintainers; [ cfouche markuskowa ];
}; };
} }

View file

@ -1,139 +1,29 @@
{ stdenv, fetchhg, fetchurl, fetchzip, gtk2, glib, pkgconfig, unzip, ncurses, zip }: { lib, stdenv, fetchhg, fetchurl, gtk2, glib, pkgconfig, unzip, ncurses, zip }:
let
# Textadept requires a whole bunch of external dependencies.
# The build system expects to be able to download them with wget.
# This expression gets Nix to fetch them instead.
cached_url = url: sha256: fetchurl {
inherit sha256 url;
};
get_url = url: sha256: let
store_path = cached_url url sha256;
in ''
local_path=$(basename ${store_path} | sed -e 's@^[0-9a-z]\+-@@')
# Copy the file from the Nix store and remove the hash part.
cp ${store_path} $local_path
# Update its access and modified times.
touch $local_path
'';
cached_url_zip = url: sha256: fetchzip {
inherit sha256 url;
};
get_url_zip = url: sha256: let
store_path = cached_url_zip url sha256;
in ''
(
build_dir=$PWD
cd $TMPDIR
local_path=$(basename ${url} .zip)
cp -r ${store_path} $local_path
chmod u+rwX -R $local_path
zip -r $build_dir/$local_path.zip $local_path
touch $local_path
)
'';
# These lists are taken from the Makefile.
scintilla_tgz = "scintilla373.tgz";
tre_zip = "cdce45e8dd7a3b36954022b4a4d3570e1ac5a4f8.zip";
scinterm_zip = "scinterm_1.8.zip";
scintillua_zip = "33298b6cbce3.zip";
lua_tgz = "lua-5.3.4.tar.gz";
lpeg_tgz = "lpeg-1.0.0.tar.gz";
lfs_zip = "v_1_6_3.zip";
lspawn_zip = "lspawn_1.5.zip";
luajit_tgz = "LuaJIT-2.0.3.tar.gz";
libluajit_tgz = "libluajit_2.0.3.x86_64.tgz";
gtdialog_zip = "gtdialog_1.3.zip";
cdk_tgz = "cdk-5.0-20150928.tgz";
termkey_tgz = "libtermkey-0.17.tar.gz";
scinterm_url = "http://foicica.com/scinterm/download/" + scinterm_zip;
tre_url = "https://github.com/laurikari/tre/archive/" + tre_zip;
#scintillua_url = "http://foicica.com/scintillua/download/" + scintillua_zip;
scintillua_url = "http://foicica.com/hg/scintillua/archive/" + scintillua_zip;
gtdialog_url = "http://foicica.com/gtdialog/download/" + gtdialog_zip;
lspawn_url = "http://foicica.com/lspawn/download/" + lspawn_zip;
scintilla_url = "mirror://sourceforge/scintilla/" + scintilla_tgz;
lua_url = "http://www.lua.org/ftp/" + lua_tgz;
lpeg_url = "http://www.inf.puc-rio.br/~roberto/lpeg/" + lpeg_tgz;
lfs_url = "https://github.com/keplerproject/luafilesystem/archive/" + lfs_zip;
luajit_url = "http://luajit.org/download/" + luajit_tgz;
libluajit_url = "http://foicica.com/textadept/download/" + libluajit_tgz;
cdk_url = "http://invisible-mirror.net/archives/cdk/" + cdk_tgz;
bombay_url = "http://foicica.com/hg/bombay/archive/tip.zip";
termkey_url = "http://www.leonerd.org.uk/code/libtermkey/" + termkey_tgz;
get_scintilla = get_url scintilla_url "0rkczxzj6bqxks4jcbxbyrarjhfjh95nwxxiqprfid1kaamgkfm2";
get_tre = get_url tre_url "0mw8npwk5nnhc33352j4akannhpx77kqvfam8jdq1n4yf8js1gi7";
get_scinterm = get_url scinterm_url "02ax6cjpxylfz7iqp1cjmsl323in066a38yklmsyzdl3w7761nxi";
get_scintillua = get_url scintillua_url "1kx113dpjby1p9jcsqlnlzwj01z94f9szw4b38077qav3bj4lk6g";
get_lua = get_url lua_url "0320a8dg3aci4hxla380dx1ifkw8gj4gbw5c4dz41g1kh98sm0gn";
get_lpeg = get_url lpeg_url "13mz18s359wlkwm9d9iqlyyrrwjc6iqfpa99ai0icam2b3khl68h";
get_lfs = get_url_zip lfs_url "1hxcnqj53540ysyw8fzax7f09pl98b8f55s712gsglcdxp2g2pri";
get_lspawn = get_url lspawn_url "09c6v9irblay2kv1n7i59pyj9g4xb43c6rfa7ba5m353lymcwwqi";
get_luajit = get_url luajit_url "0ydxpqkmsn2c341j4r2v6r5r0ig3kbwv3i9jran3iv81s6r6rgjm";
get_libluajit = get_url libluajit_url "1nhvcdjpqrhd5qbihdm3bxpw84irfvnw2vmfqnsy253ay3dxzrgy";
get_gtdialog = get_url gtdialog_url "0nvcldyhj8abr8jny9pbyfjwg8qfp9f2h508vjmrvr5c5fqdbbm0";
get_cdk = get_url cdk_url "0j74l874y33i26y5kjg3pf1vswyjif8k93pqhi0iqykpbxfsg382";
get_bombay = get_url_zip bombay_url "0illabngrrxidkprgz268wgjqknrds34nhm6hav95xc1nmsdr6jj"
+ "mv tip.zip bombay.zip\n";
get_termkey = get_url termkey_url "12gkrv1ldwk945qbpprnyawh0jz7rmqh18fyndbxiajyxmj97538";
get_deps = get_scintilla
+ get_tre
+ get_scinterm
+ get_scintillua
+ get_lua
+ get_lpeg
+ get_lfs
+ get_lspawn
+ get_luajit
+ get_libluajit
+ get_gtdialog
+ get_cdk
+ get_bombay
+ get_termkey;
in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "9.3"; version = "10.2";
name = "textadept-${version}"; name = "textadept-${version}";
nativeBuildInputs = [ pkgconfig ]; nativeBuildInputs = [ pkgconfig ];
buildInputs = [ buildInputs = [
gtk2 glib unzip ncurses zip gtk2 ncurses glib unzip zip
]; ];
src = fetchhg { src = fetchhg {
url = http://foicica.com/hg/textadept; url = http://foicica.com/hg/textadept;
rev = "textadept_${version}"; rev = "textadept_${version}";
sha256 = "18x79pazm86agn1khdxfnf87la6kli3xasi7dcjx7l6yyz19y14d"; sha256 = "0fai8xqddkkprmbf0cf8wwgv7ccfdb1iyim30nppm2m16whkc8fl";
}; };
preConfigure = '' preConfigure =
lib.concatStringsSep "\n" (lib.mapAttrsToList (name: params:
"ln -s ${fetchurl params} $PWD/src/${name}"
) (import ./deps.nix)) + ''
# work around trying to download stuff in `make deps`
function wget() { true; }
export -f wget
cd src cd src
# Make a dummy wget.
mkdir wget
echo '#! ${stdenv.shell}' > wget/wget
chmod a+x wget/wget
export PATH="$PATH:$PWD/wget"
${get_deps}
# Let the build system do whatever setup it needs to do with these files.
make deps make deps
''; '';

View file

@ -0,0 +1,42 @@
{
"542782a4df7d.zip" = {
url = "http://foicica.com/hg/scintilla/archive/542782a4df7d.zip";
sha256 = "1qwxxcj86z9y7ij05j60lcp1awy2c9ck0vnn9z6c732sqjza0zx5";
};
"lua-5.3.5.tar.gz" = {
url = "http://www.lua.org/ftp/lua-5.3.5.tar.gz";
sha256 = "1b2qn2rv96nmbm6zab4l877bd4zq7wpwm8drwjiy2ih4jqzysbhc";
};
"lpeg-1.0.0.tar.gz" = {
url = "http://www.inf.puc-rio.br/~roberto/lpeg/lpeg-1.0.0.tar.gz";
sha256 = "13mz18s359wlkwm9d9iqlyyrrwjc6iqfpa99ai0icam2b3khl68h";
};
"v_1_6_3.zip" = {
url = "https://github.com/keplerproject/luafilesystem/archive/v_1_6_3.zip";
sha256 = "044s125im2irb4i42nnc5shvjj25fp4vsdbzd6b0va5igj0f6h4y";
};
"6435a42450c7.zip" = {
url = "http://foicica.com/hg/gtdialog/archive/6435a42450c7.zip";
sha256 = "1vxn89sif3qccksb6x5iprysqhjg69g7nyxlgrg31q397dmsg1ym";
};
"cdk-5.0-20150928.tgz" = {
url = "http://invisible-mirror.net/archives/cdk/cdk-5.0-20150928.tgz";
sha256 = "0j74l874y33i26y5kjg3pf1vswyjif8k93pqhi0iqykpbxfsg382";
};
"libtermkey-0.20.tar.gz" = {
url = "http://www.leonerd.org.uk/code/libtermkey/libtermkey-0.20.tar.gz";
sha256 = "1xfj6lchhfljmbcl6dz8dpakppyy13nbl4ykxiv5x4dr9b4qf3bc";
};
"pdcurs36.zip" = {
url = "http://prdownloads.sourceforge.net/pdcurses/pdcurs36.zip";
sha256 = "0y91zpygrxms7d1l5ksrz42bkvq8jd2xqlj5j7wgyxcl58chcw9b";
};
"bombay.zip" = {
url = "http://foicica.com/hg/bombay/archive/b25520cc76bb.zip";
sha256 = "07spq7jmkfyq20gv67yffara3ln3ns2xi0k02m2mxdms3xm1q36h";
};
"cloc-1.60.pl" = {
url = "http://prdownloads.sourceforge.net/cloc/cloc-1.60.pl";
sha256 = "0p504bi19va3dh274v7lb7giqrydwa5yyry60f7jpz84y6z71a2a";
};
}

View file

@ -1,39 +1,33 @@
{ stdenv, lib, fetchurl, unzip, atomEnv, makeDesktopItem, { stdenv, lib, fetchurl, makeDesktopItem
gtk2, wrapGAppsHook, libXScrnSaver, libxkbfile, libsecret, , unzip, libsecret, libXScrnSaver, wrapGAppsHook
isInsiders ? false }: , gtk2, atomEnv, at-spi2-atk, autoPatchelfHook
, systemd, fontconfig
, isInsiders ? false }:
let let
executableName = "code" + lib.optionalString isInsiders "-insiders"; executableName = "code" + lib.optionalString isInsiders "-insiders";
longName = "Visual Studio Code" + lib.optionalString isInsiders " - Insiders"; longName = "Visual Studio Code" + lib.optionalString isInsiders " - Insiders";
shortName = "Code" + lib.optionalString isInsiders " - Insiders"; shortName = "Code" + lib.optionalString isInsiders " - Insiders";
inherit (stdenv.hostPlatform) system;
plat = { plat = {
"i686-linux" = "linux-ia32"; "i686-linux" = "linux-ia32";
"x86_64-linux" = "linux-x64"; "x86_64-linux" = "linux-x64";
"x86_64-darwin" = "darwin"; "x86_64-darwin" = "darwin";
}.${stdenv.hostPlatform.system}; }.${system};
sha256 = { sha256 = {
"i686-linux" = "1g73fay6fxlqhalkqq5m6rjbp68k9npk0rrxrkhdj8mw0cz74dpm"; "i686-linux" = "09mgvff27iljj9z7h0xxmr6152hcxh7qqxl3i7wdc55ra1rsjq1n";
"x86_64-linux" = "0mil8n5i2ajdyrgq862wq59ajy2122rvvn7m7mxq4ab92sk26rix"; "x86_64-linux" = "1gvlvg3cjsscx6khy5gxd4wnb069kska00qdfwcq4kn7x1z04xnz";
"x86_64-darwin" = "07r52scs1sgafzxqal39r8vf9p9qqvwwx8f6z09gqcf6clr6k48q"; "x86_64-darwin" = "1mf9nyjnxgmzai7rfd1rkwk0wvil0ripg3mh8icg4mld2jjz8rsy";
}.${stdenv.hostPlatform.system}; }.${system};
archive_fmt = if stdenv.hostPlatform.system == "x86_64-darwin" then "zip" else "tar.gz";
rpath = lib.concatStringsSep ":" [
atomEnv.libPath
"${lib.makeLibraryPath [gtk2]}"
"${lib.makeLibraryPath [libsecret]}/libsecret-1.so.0"
"${lib.makeLibraryPath [libXScrnSaver]}/libXss.so.1"
"${lib.makeLibraryPath [libxkbfile]}/libxkbfile.so.1"
"$out/lib/vscode"
];
archive_fmt = if system == "x86_64-darwin" then "zip" else "tar.gz";
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "vscode-${version}"; name = "vscode-${version}";
version = "1.30.2"; version = "1.31.0";
src = fetchurl { src = fetchurl {
name = "VSCode_${version}_${plat}.${archive_fmt}"; name = "VSCode_${version}_${plat}.${archive_fmt}";
@ -83,12 +77,18 @@ in
''; '';
}; };
buildInputs = if stdenv.hostPlatform.system == "x86_64-darwin" buildInputs = (if stdenv.isDarwin
then [ unzip libXScrnSaver libsecret ] then [ unzip ]
else [ wrapGAppsHook libXScrnSaver libxkbfile libsecret ]; else [ gtk2 at-spi2-atk wrapGAppsHook ] ++ atomEnv.packages)
++ [ libsecret libXScrnSaver ];
nativeBuildInputs = lib.optional (!stdenv.isDarwin) autoPatchelfHook;
dontBuild = true;
dontConfigure = true;
installPhase = installPhase =
if stdenv.hostPlatform.system == "x86_64-darwin" then '' if system == "x86_64-darwin" then ''
mkdir -p $out/lib/vscode $out/bin mkdir -p $out/lib/vscode $out/bin
cp -r ./* $out/lib/vscode cp -r ./* $out/lib/vscode
ln -s $out/lib/vscode/Contents/Resources/app/bin/${executableName} $out/bin ln -s $out/lib/vscode/Contents/Resources/app/bin/${executableName} $out/bin
@ -110,22 +110,8 @@ in
cp $out/lib/vscode/resources/app/resources/linux/code.png $out/share/pixmaps/code.png cp $out/lib/vscode/resources/app/resources/linux/code.png $out/share/pixmaps/code.png
''; '';
postFixup = lib.optionalString (stdenv.hostPlatform.system == "i686-linux" || stdenv.hostPlatform.system == "x86_64-linux") '' preFixup = lib.optionalString (system == "i686-linux" || system == "x86_64-linux") ''
patchelf \ gappsWrapperArgs+=(--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ systemd fontconfig ]})
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath "${rpath}" \
$out/lib/vscode/${executableName}
patchelf \
--set-rpath "${rpath}" \
$out/lib/vscode/resources/app/node_modules.asar.unpacked/keytar/build/Release/keytar.node
patchelf \
--set-rpath "${rpath}" \
"$out/lib/vscode/resources/app/node_modules.asar.unpacked/native-keymap/build/Release/\
keymapping.node"
ln -s ${lib.makeLibraryPath [libsecret]}/libsecret-1.so.0 $out/lib/vscode/libsecret-1.so.0
''; '';
meta = with stdenv.lib; { meta = with stdenv.lib; {
@ -143,6 +129,7 @@ in
homepage = http://code.visualstudio.com/; homepage = http://code.visualstudio.com/;
downloadPage = https://code.visualstudio.com/Updates; downloadPage = https://code.visualstudio.com/Updates;
license = licenses.unfree; license = licenses.unfree;
maintainers = with maintainers; [ eadwu ];
platforms = [ "i686-linux" "x86_64-linux" "x86_64-darwin" ]; platforms = [ "i686-linux" "x86_64-linux" "x86_64-darwin" ];
}; };
} }

View file

@ -3,26 +3,16 @@
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "ipe-7.2.9"; name = "ipe-7.2.10";
src = fetchurl { src = fetchurl {
url = "https://dl.bintray.com/otfried/generic/ipe/7.2/${name}-src.tar.gz"; url = "https://dl.bintray.com/otfried/generic/ipe/7.2/${name}-src.tar.gz";
sha256 = "1i0h0q32xvbb0d3y2ff76jxnaw05hjf2z5gzww886z8arxwar1xn"; sha256 = "0rm31kvyg30452bz12yi49bkhdmi4bjdx6zann5cdlbi0pvmx7xh";
}; };
# changes taken from Gentoo portage sourceRoot = "${name}/src";
preConfigure = ''
cd src
sed -i \
-e 's/fpic/fPIC/' \
-e 's/moc-qt4/moc/' \
config.mak || die
sed -i -e 's/install -s/install/' common.mak || die
'';
NIX_CFLAGS_COMPILE = [ "-std=c++11" ]; # build with Qt 5.7 IPEPREFIX="${placeholder "out"}";
IPEPREFIX="$$out";
URWFONTDIR="${texlive}/texmf-dist/fonts/type1/urw/"; URWFONTDIR="${texlive}/texmf-dist/fonts/type1/urw/";
LUA_PACKAGE = "lua"; LUA_PACKAGE = "lua";
@ -38,6 +28,8 @@ stdenv.mkDerivation rec {
done done
''; '';
enableParallelBuilding = true;
#TODO: make .desktop entry #TODO: make .desktop entry
meta = { meta = {

View file

@ -43,16 +43,16 @@ let
]; ];
in buildRustPackage rec { in buildRustPackage rec {
name = "alacritty-${version}"; name = "alacritty-${version}";
version = "0.2.6"; version = "0.2.9";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "jwilm"; owner = "jwilm";
repo = "alacritty"; repo = "alacritty";
rev = "v${version}"; rev = "v${version}";
sha256 = "1yjmlvxs5vwqhgjlb83a4hq2b12zzhr4pp209djprgdi0cf2bbqw"; sha256 = "01wzkpbz6jjmpmnkqswilnn069ir3cx3jvd3j7zsvqdxqpwncz39";
}; };
cargoSha256 = "11n5xl43l07zycdg0icv4i7mh6zy4ia6aw48i0wm59xqdl7xqn9f"; cargoSha256 = "0h9wczgpjh52lhrqg0r2dkrh5svmyvrvh4yj7p0nz45skgrnl8w9";
nativeBuildInputs = [ nativeBuildInputs = [
cmake cmake

View file

@ -7,16 +7,14 @@
, speechd, brltty, setproctitle, gst_all_1, gst-python , speechd, brltty, setproctitle, gst_all_1, gst-python
}: }:
let buildPythonApplication rec {
pname = "orca"; pname = "orca";
version = "3.30.2"; version = "3.30.2";
in buildPythonApplication rec {
name = "${pname}-${version}";
format = "other"; format = "other";
src = fetchurl { src = fetchurl {
url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "17asibc46i5gr2fw04jvvdi85zzmxwlnhyq7r6cr3m5prrdr8a53"; sha256 = "17asibc46i5gr2fw04jvvdi85zzmxwlnhyq7r6cr3m5prrdr8a53";
}; };

View file

@ -0,0 +1,24 @@
{ lib, buildGoPackage, fetchFromGitHub }:
buildGoPackage rec {
name = "todoist-${version}";
version = "0.13.1";
goPackagePath = "github.com/sachaos/todoist";
src = fetchFromGitHub {
owner = "sachaos";
repo = "todoist";
rev = "v${version}";
sha256 = "1kwvlsjr2a7wdhlwpxxpdh87wz8k9yjwl59vl2g7ya6m0rvhd3mc";
};
goDeps = ./deps.nix;
meta = {
homepage = https://github.com/sachaos/todoist;
description = "Todoist CLI Client";
license = lib.licenses.mit;
platforms = lib.platforms.unix;
};
}

237
pkgs/applications/misc/todoist/deps.nix generated Normal file
View file

@ -0,0 +1,237 @@
# file generated from go.mod using vgo2nix (https://github.com/adisbladis/vgo2nix)
[
{
goPackagePath = "github.com/BurntSushi/toml";
fetch = {
type = "git";
url = "https://github.com/BurntSushi/toml";
rev = "v0.3.1";
sha256 = "1fjdwwfzyzllgiwydknf1pwjvy49qxfsczqx5gz3y0izs7as99j6";
};
}
{
goPackagePath = "github.com/davecgh/go-spew";
fetch = {
type = "git";
url = "https://github.com/davecgh/go-spew";
rev = "v1.1.1";
sha256 = "0hka6hmyvp701adzag2g26cxdj47g21x6jz4sc6jjz1mn59d474y";
};
}
{
goPackagePath = "github.com/fatih/color";
fetch = {
type = "git";
url = "https://github.com/fatih/color";
rev = "v1.7.0";
sha256 = "0v8msvg38r8d1iiq2i5r4xyfx0invhc941kjrsg5gzwvagv55inv";
};
}
{
goPackagePath = "github.com/fsnotify/fsnotify";
fetch = {
type = "git";
url = "https://github.com/fsnotify/fsnotify";
rev = "v1.4.7";
sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g";
};
}
{
goPackagePath = "github.com/gofrs/uuid";
fetch = {
type = "git";
url = "https://github.com/gofrs/uuid";
rev = "v3.2.0";
sha256 = "1q63mp7bznhfgyw133c0wc0hpcj1cq9bcf7w1f8r6inkcrils1fz";
};
}
{
goPackagePath = "github.com/hashicorp/hcl";
fetch = {
type = "git";
url = "https://github.com/hashicorp/hcl";
rev = "v1.0.0";
sha256 = "0q6ml0qqs0yil76mpn4mdx4lp94id8vbv575qm60jzl1ijcl5i66";
};
}
{
goPackagePath = "github.com/magiconair/properties";
fetch = {
type = "git";
url = "https://github.com/magiconair/properties";
rev = "v1.8.0";
sha256 = "1a10362wv8a8qwb818wygn2z48lgzch940hvpv81hv8gc747ajxn";
};
}
{
goPackagePath = "github.com/mattn/go-colorable";
fetch = {
type = "git";
url = "https://github.com/mattn/go-colorable";
rev = "v0.0.9";
sha256 = "1nwjmsppsjicr7anq8na6md7b1z84l9ppnlr045hhxjvbkqwalvx";
};
}
{
goPackagePath = "github.com/mattn/go-isatty";
fetch = {
type = "git";
url = "https://github.com/mattn/go-isatty";
rev = "v0.0.4";
sha256 = "0zs92j2cqaw9j8qx1sdxpv3ap0rgbs0vrvi72m40mg8aa36gd39w";
};
}
{
goPackagePath = "github.com/mitchellh/go-homedir";
fetch = {
type = "git";
url = "https://github.com/mitchellh/go-homedir";
rev = "v1.0.0";
sha256 = "0f0z0aa4wivk4z1y503dmnw0k0g0g403dly8i4q263gfshs82sbq";
};
}
{
goPackagePath = "github.com/mitchellh/mapstructure";
fetch = {
type = "git";
url = "https://github.com/mitchellh/mapstructure";
rev = "v1.0.0";
sha256 = "0f06q4fpzg0c370cvmpsl0iq2apl5nkbz5cd3nba5x5ysmshv1lm";
};
}
{
goPackagePath = "github.com/pelletier/go-toml";
fetch = {
type = "git";
url = "https://github.com/pelletier/go-toml";
rev = "v1.2.0";
sha256 = "1fjzpcjng60mc3a4b2ql5a00d5gah84wj740dabv9kq67mpg8fxy";
};
}
{
goPackagePath = "github.com/pkg/browser";
fetch = {
type = "git";
url = "https://github.com/pkg/browser";
rev = "0a3d74bf9ce4";
sha256 = "0lv6kwvm31n79mh14a63zslaf4l9bspi2q0i8i9im4njfl42iv1c";
};
}
{
goPackagePath = "github.com/pmezard/go-difflib";
fetch = {
type = "git";
url = "https://github.com/pmezard/go-difflib";
rev = "v1.0.0";
sha256 = "0c1cn55m4rypmscgf0rrb88pn58j3ysvc2d0432dp3c6fqg6cnzw";
};
}
{
goPackagePath = "github.com/spf13/afero";
fetch = {
type = "git";
url = "https://github.com/spf13/afero";
rev = "v1.1.2";
sha256 = "0miv4faf5ihjfifb1zv6aia6f6ik7h1s4954kcb8n6ixzhx9ck6k";
};
}
{
goPackagePath = "github.com/spf13/cast";
fetch = {
type = "git";
url = "https://github.com/spf13/cast";
rev = "v1.2.0";
sha256 = "177bk7lq40jbgv9p9r80aydpaccfk8ja3a7jjhfwiwk9r1pa4rr2";
};
}
{
goPackagePath = "github.com/spf13/jwalterweatherman";
fetch = {
type = "git";
url = "https://github.com/spf13/jwalterweatherman";
rev = "v1.0.0";
sha256 = "093fmmvavv84pv4q84hav7ph3fmrq87bvspjj899q0qsx37yvdr8";
};
}
{
goPackagePath = "github.com/spf13/pflag";
fetch = {
type = "git";
url = "https://github.com/spf13/pflag";
rev = "v1.0.2";
sha256 = "005598piihl3l83a71ahj10cpq9pbhjck4xishx1b4dzc02r9xr2";
};
}
{
goPackagePath = "github.com/spf13/viper";
fetch = {
type = "git";
url = "https://github.com/spf13/viper";
rev = "v1.2.1";
sha256 = "0y7czxki8zhjhanh5ydnx4sf2darw70z2i5dskgarbk4gjmagx6k";
};
}
{
goPackagePath = "github.com/stretchr/testify";
fetch = {
type = "git";
url = "https://github.com/stretchr/testify";
rev = "v1.2.2";
sha256 = "0dlszlshlxbmmfxj5hlwgv3r22x0y1af45gn1vd198nvvs3pnvfs";
};
}
{
goPackagePath = "github.com/urfave/cli";
fetch = {
type = "git";
url = "https://github.com/urfave/cli";
rev = "v1.20.0";
sha256 = "0y6f4sbzkiiwrxbl15biivj8c7qwxnvm3zl2dd3mw4wzg4x10ygj";
};
}
{
goPackagePath = "golang.org/x/sys";
fetch = {
type = "git";
url = "https://go.googlesource.com/sys";
rev = "8cf3aee42992";
sha256 = "1l2hyd5z91jzml5isn1i0g882pxbxk0x6ry5vdwghrprcx06syag";
};
}
{
goPackagePath = "golang.org/x/text";
fetch = {
type = "git";
url = "https://go.googlesource.com/text";
rev = "v0.3.0";
sha256 = "0r6x6zjzhr8ksqlpiwm5gdd7s209kwk5p4lw54xjvz10cs3qlq19";
};
}
{
goPackagePath = "golang.org/x/tools";
fetch = {
type = "git";
url = "https://go.googlesource.com/tools";
rev = "77439c55185e";
sha256 = "15f7yghpw9yn00s1k8czld8cm3kvjx5rzda2gfm8pq5542i8w9rs";
};
}
{
goPackagePath = "gopkg.in/check.v1";
fetch = {
type = "git";
url = "https://gopkg.in/check.v1";
rev = "20d25e280405";
sha256 = "0k1m83ji9l1a7ng8a7v40psbymxasmssbrrhpdv2wl4rhs0nc3np";
};
}
{
goPackagePath = "gopkg.in/yaml.v2";
fetch = {
type = "git";
url = "https://gopkg.in/yaml.v2";
rev = "v2.2.1";
sha256 = "0dwjrs2lp2gdlscs7bsrmyc5yf6mm4fvgw71bzr9mv2qrd2q73s1";
};
}
]

View file

@ -4,20 +4,22 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "xmrig-${version}"; name = "xmrig-${version}";
version = "2.10.0"; version = "2.11.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "xmrig"; owner = "xmrig";
repo = "xmrig"; repo = "xmrig";
rev = "v${version}"; rev = "v${version}";
sha256 = "10nqwxj8j2ciw2h178g2z5lrzv48xsi2a4v6s0ha93hfbjzvag5a"; sha256 = "0k897lx60gjf464j2ndindxhr6x3l90fv81bcqyglsv47danivlc";
}; };
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];
buildInputs = [ libuv libmicrohttpd openssl ]; buildInputs = [ libuv libmicrohttpd openssl ];
postPatch = '' postPatch = ''
substituteInPlace src/donate.h --replace "kDonateLevel = 5;" "kDonateLevel = ${toString donateLevel};" substituteInPlace src/donate.h \
--replace "kDefaultDonateLevel = 5;" "kDefaultDonateLevel = ${toString donateLevel};" \
--replace "kMinimumDonateLevel = 1;" "kMinimumDonateLevel = ${toString donateLevel};"
''; '';
installPhase = '' installPhase = ''

View file

@ -1,24 +1,28 @@
{ stdenv, lib, fetchFromGitHub, cmake, libuv, libmicrohttpd, libuuid { stdenv, lib, fetchFromGitHub, cmake, libuv, libmicrohttpd, libuuid, openssl
, donateLevel ? 0 , donateLevel ? 0
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "xmrig-proxy-${version}"; name = "xmrig-proxy-${version}";
version = "2.6.4"; version = "2.11.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "xmrig"; owner = "xmrig";
repo = "xmrig-proxy"; repo = "xmrig-proxy";
rev = "v${version}"; rev = "v${version}";
sha256 = "0h6ihrrkgwi8k642iqq13qx3zlxl9r8q7wm417hb7j35rnmwn8lq"; sha256 = "1jjcgnpkxdafsdsxndsvzd84i6mwk7ix4vvgs3k1dla9ll9nwq5j";
}; };
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];
buildInputs = [ libuv libmicrohttpd libuuid ]; buildInputs = [ libuv libmicrohttpd libuuid openssl ];
# Set default donation level to 0%. Can be increased at runtime via --donate-level option.
postPatch = '' postPatch = ''
substituteInPlace src/donate.h --replace "kDonateLevel = 2;" "kDonateLevel = ${toString donateLevel};" # Set default donation level to 0%. Can be increased at runtime via --donate-level option.
substituteInPlace src/donate.h \
--replace "kDefaultDonateLevel = 2;" "kDefaultDonateLevel = ${toString donateLevel};"
# Link dynamically against libuuid instead of statically
substituteInPlace CMakeLists.txt --replace uuid.a uuid
''; '';
installPhase = '' installPhase = ''

View file

@ -100,11 +100,11 @@ let
flash = stdenv.mkDerivation rec { flash = stdenv.mkDerivation rec {
name = "flashplayer-ppapi-${version}"; name = "flashplayer-ppapi-${version}";
version = "32.0.0.114"; version = "32.0.0.142";
src = fetchzip { src = fetchzip {
url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/${version}/flash_player_ppapi_linux.x86_64.tar.gz"; url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/${version}/flash_player_ppapi_linux.x86_64.tar.gz";
sha256 = "11b47w14hgvp7lpis39a9vkncla7lvqrgc717v4mwj6p741z7v78"; sha256 = "1mifgrfcvz1mc5w9s0df498z2dma50yq3vqw3pz82wxynmk28gq9";
stripRoot = false; stripRoot = false;
}; };

View file

@ -1,18 +1,18 @@
# This file is autogenerated from update.sh in the same directory. # This file is autogenerated from update.sh in the same directory.
{ {
beta = { beta = {
sha256 = "01l0vlvcckpag376mjld7qprv63l0z8li689k0h6v3h0i7irzs6z"; sha256 = "1kbcn8yzgrn41d12806bsycnw6xyjbgv4d8nk0y4x2hymg34vc2k";
sha256bin64 = "1dwxys43hn72inxja27jqq3mkiri6nf7ysrfwnnlvyg2iqz83avx"; sha256bin64 = "0irafrmz9c3s8bdkqkwhj96v090ynvvbs50qzcdmidw8iqh2x1f8";
version = "72.0.3626.81"; version = "73.0.3683.27";
}; };
dev = { dev = {
sha256 = "1mdna7k715bxxd6cli4zryclp2p5l6i2dvfgzsfifgvgf2915hiz"; sha256 = "0gyzil473kn7mqpa1dp3pai0x7vk8rw2bkqr3z0p33fx2g7b7y5s";
sha256bin64 = "01w05dpmc7h0pwh0rjslr3iqaxhmnb12nmj4rs7w1yq9c58zf1qr"; sha256bin64 = "1clr6xr08mmzmi71jy5ri4b2cp4qaf5apynbd9gnrp6qiy04rmn2";
version = "73.0.3679.0"; version = "73.0.3683.20";
}; };
stable = { stable = {
sha256 = "01l0vlvcckpag376mjld7qprv63l0z8li689k0h6v3h0i7irzs6z"; sha256 = "0fxavi4nwfiyb15lqm02vlq6kb8i4ipxnd7hp45bm7jdmhmgbnmj";
sha256bin64 = "09fsj90sjw3srkrq12l2bh39r172s783riyzi5y2g0wlyhxalpql"; sha256bin64 = "1gz1ga8d3a4q1n6bdb79wv8ldlksvj0mlnrs5k1safwzlv11prsx";
version = "72.0.3626.81"; version = "72.0.3626.96";
}; };
} }

View file

@ -22,6 +22,7 @@
, pulseaudioSupport ? stdenv.isLinux, libpulseaudio , pulseaudioSupport ? stdenv.isLinux, libpulseaudio
, ffmpegSupport ? true , ffmpegSupport ? true
, gtk3Support ? true, gtk2, gtk3, wrapGAppsHook , gtk3Support ? true, gtk2, gtk3, wrapGAppsHook
, waylandSupport ? true, libxkbcommon
, gssSupport ? true, kerberos , gssSupport ? true, kerberos
## privacy-related options ## privacy-related options
@ -74,7 +75,7 @@ let
flag = tf: x: [(if tf then "--enable-${x}" else "--disable-${x}")]; flag = tf: x: [(if tf then "--enable-${x}" else "--disable-${x}")];
default-toolkit = if stdenv.isDarwin then "cairo-cocoa" default-toolkit = if stdenv.isDarwin then "cairo-cocoa"
else "cairo-gtk${if gtk3Support then "3" else "2"}"; else "cairo-gtk${if gtk3Support then "3${lib.optionalString waylandSupport "-wayland"}" else "2"}";
binaryName = if isIceCatLike then "icecat" else "firefox"; binaryName = if isIceCatLike then "icecat" else "firefox";
binaryNameCapitalized = lib.toUpper (lib.substring 0 1 binaryName) + lib.substring 1 (-1) binaryName; binaryNameCapitalized = lib.toUpper (lib.substring 0 1 binaryName) + lib.substring 1 (-1) binaryName;
@ -124,6 +125,7 @@ stdenv.mkDerivation rec {
++ lib.optional pulseaudioSupport libpulseaudio # only headers are needed ++ lib.optional pulseaudioSupport libpulseaudio # only headers are needed
++ lib.optional gtk3Support gtk3 ++ lib.optional gtk3Support gtk3
++ lib.optional gssSupport kerberos ++ lib.optional gssSupport kerberos
++ lib.optional waylandSupport libxkbcommon
++ lib.optionals stdenv.isDarwin [ CoreMedia ExceptionHandling Kerberos ++ lib.optionals stdenv.isDarwin [ CoreMedia ExceptionHandling Kerberos
AVFoundation MediaToolbox CoreLocation AVFoundation MediaToolbox CoreLocation
Foundation libobjc AddressBook cups ]; Foundation libobjc AddressBook cups ];

View file

@ -26,8 +26,11 @@ let
, icon ? browserName , icon ? browserName
, extraPlugins ? [] , extraPlugins ? []
, extraNativeMessagingHosts ? [] , extraNativeMessagingHosts ? []
, gdkWayland ? false
}: }:
assert gdkWayland -> (browser ? gtk3); # Can only use the wayland backend if gtk3 is being used
let let
cfg = config.${browserName} or {}; cfg = config.${browserName} or {};
enableAdobeFlash = cfg.enableAdobeFlash or false; enableAdobeFlash = cfg.enableAdobeFlash or false;
@ -86,7 +89,7 @@ let
exec = "${browserName}${nameSuffix} %U"; exec = "${browserName}${nameSuffix} %U";
inherit icon; inherit icon;
comment = ""; comment = "";
desktopName = "${desktopName}${nameSuffix}"; desktopName = "${desktopName}${nameSuffix}${lib.optionalString gdkWayland " (Wayland)"}";
genericName = "Web Browser"; genericName = "Web Browser";
categories = "Application;Network;WebBrowser;"; categories = "Application;Network;WebBrowser;";
mimeType = stdenv.lib.concatStringsSep ";" [ mimeType = stdenv.lib.concatStringsSep ";" [
@ -124,7 +127,9 @@ let
--suffix PATH ':' "$out${browser.execdir or "/bin"}" \ --suffix PATH ':' "$out${browser.execdir or "/bin"}" \
--set MOZ_APP_LAUNCHER "${browserName}${nameSuffix}" \ --set MOZ_APP_LAUNCHER "${browserName}${nameSuffix}" \
--set MOZ_SYSTEM_DIR "$out/lib/mozilla" \ --set MOZ_SYSTEM_DIR "$out/lib/mozilla" \
${lib.optionalString (browser ? gtk3) ${lib.optionalString gdkWayland ''
--set GDK_BACKEND "wayland" \
''}${lib.optionalString (browser ? gtk3)
''--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" \ ''--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" \
--suffix XDG_DATA_DIRS : '${gnome3.defaultIconTheme}/share' --suffix XDG_DATA_DIRS : '${gnome3.defaultIconTheme}/share'
'' ''

View file

@ -74,7 +74,7 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "flashplayer-${version}"; name = "flashplayer-${version}";
version = "32.0.0.114"; version = "32.0.0.142";
src = fetchurl { src = fetchurl {
url = url =
@ -85,14 +85,14 @@ stdenv.mkDerivation rec {
sha256 = sha256 =
if debug then if debug then
if arch == "x86_64" then if arch == "x86_64" then
"199dd2fkjfcavfzfd2d38y21155yxvj9yl838i8y63v9i5j5nhfj" "1g3c0hzpf6lwfvlh8h3fl1vwfxc909nkpvrymwlc3vi3zpqwv4r7"
else else
"1b7g92ywwxrzfdj8acqx2r8k19y84ci2nhwwghjc7276q95gpzj8" "14pyhynmjb88n5r9ds7v59vsrlzxfkr8zqnzgf6bj0h0x9grzhdv"
else else
if arch == "x86_64" then if arch == "x86_64" then
"17nzchmacyqnb184d23caz52w7sy5sr7d081iwc46wic0px78m3m" "102ixxh2sq7bmasnifm9arvlqqvmmm4bazzdppib3pz2yh4yy7m2"
else else
"16slvhyqq0i7rlh2s5kpy78whkh57r129kva14wradx9yv8bqr7h"; "1hg03fb4xc7h7lbx57wn1xvkhq096aijaxkb4b60wna04p62bdim";
}; };
nativeBuildInputs = [ unzip ]; nativeBuildInputs = [ unzip ];

View file

@ -50,7 +50,7 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "flashplayer-standalone-${version}"; name = "flashplayer-standalone-${version}";
version = "32.0.0.114"; version = "32.0.0.142";
src = fetchurl { src = fetchurl {
url = url =
@ -60,9 +60,9 @@ stdenv.mkDerivation rec {
"https://fpdownload.macromedia.com/pub/flashplayer/updaters/32/flash_player_sa_linux.x86_64.tar.gz"; "https://fpdownload.macromedia.com/pub/flashplayer/updaters/32/flash_player_sa_linux.x86_64.tar.gz";
sha256 = sha256 =
if debug then if debug then
"0wlzqdnl8lhbc428gcahld842bhia4aygy1k5vyyg27fwmskxhy7" "1vp1nfys9pjmh3fmyp95yymmyvwrbmwjsmjhl5rnpwv5a0xn9nc6"
else else
"01a1dwrgw7lc098vp4ifkf5bj2qvv0pmdyibjhzzrx3387d1pd2l"; "05r1z87zpllyb2hvj0fbps39hvkx5jzsqafyg62am8qm9khzs2qh";
}; };
nativeBuildInputs = [ unzip ]; nativeBuildInputs = [ unzip ];

View file

@ -20,13 +20,13 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "nheko-${version}"; name = "nheko-${version}";
version = "0.6.2"; version = "0.6.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "mujx"; owner = "Nheko-Reborn";
repo = "nheko"; repo = "nheko";
rev = "v${version}"; rev = "v${version}";
sha256 = "014k68mmw3ys7ldgj96kkr1i1lyv2nk89wndkqznsizcr3097fn5"; sha256 = "1h95lixciiq904dnfpwxhyf545yfsrphhwqyvs4yrzdfr9k0cf98";
}; };
# If, on Darwin, you encounter the error # If, on Darwin, you encounter the error
@ -67,9 +67,9 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "Desktop client for the Matrix protocol"; description = "Desktop client for the Matrix protocol";
homepage = https://github.com/Nheko-Reborn/nheko;
maintainers = with maintainers; [ ekleog fpletz ]; maintainers = with maintainers; [ ekleog fpletz ];
platforms = platforms.unix; platforms = platforms.unix;
license = licenses.gpl3Plus; license = licenses.gpl3Plus;
knownVulnerabilities = [ "No longer maintained" ];
}; };
} }

View file

@ -56,11 +56,11 @@ let
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
name = "signal-desktop-${version}"; name = "signal-desktop-${version}";
version = "1.21.1"; version = "1.21.2";
src = fetchurl { src = fetchurl {
url = "https://updates.signal.org/desktop/apt/pool/main/s/signal-desktop/signal-desktop_${version}_amd64.deb"; url = "https://updates.signal.org/desktop/apt/pool/main/s/signal-desktop/signal-desktop_${version}_amd64.deb";
sha256 = "1vs42kvaacsx8smaqpn1q9i0pb5wcca22a9s4467286b5n0lfc4r"; sha256 = "0nr9d4z9c451nbzhjz3a1szx490rw1r01qf84xw72z7d7awn25ci";
}; };
phases = [ "unpackPhase" "installPhase" ]; phases = [ "unpackPhase" "installPhase" ];

View file

@ -4,8 +4,8 @@ let
mkTelegram = args: qt5.callPackage (import ./generic.nix args) { }; mkTelegram = args: qt5.callPackage (import ./generic.nix args) { };
stableVersion = { stableVersion = {
stable = true; stable = true;
version = "1.5.11"; version = "1.5.15";
sha256Hash = "09blyzs6mrmrrmjcfia9pa35mfv4zfc9mrqc36hqqcchmg54kx6w"; sha256Hash = "09m9pcm0yd9x3vz22c7zn2xzcnqc7mkbml8xg1z608nnsd702c51";
# svn log svn://svn.archlinux.org/community/telegram-desktop/trunk # svn log svn://svn.archlinux.org/community/telegram-desktop/trunk
archPatchesRevision = "429149"; archPatchesRevision = "429149";
archPatchesHash = "1ylpi9kb6hk27x9wmna4ing8vzn9b7247iya91pyxxrpxrcrhpli"; archPatchesHash = "1ylpi9kb6hk27x9wmna4ing8vzn9b7247iya91pyxxrpxrcrhpli";

View file

@ -41,9 +41,6 @@ in stdenv.mkDerivation {
runtimeDependencies = optional pulseaudioSupport libpulseaudio; runtimeDependencies = optional pulseaudioSupport libpulseaudio;
# Don't remove runtimeDependencies from RPATH via patchelf --shrink-rpath
dontPatchELF = true;
installPhase = installPhase =
let let
files = concatStringsSep " " [ files = concatStringsSep " " [

View file

@ -3,14 +3,14 @@
let let
common = { stname, target, postInstall ? "" }: common = { stname, target, postInstall ? "" }:
buildGoPackage rec { buildGoPackage rec {
version = "1.0.0"; version = "1.0.1";
name = "${stname}-${version}"; name = "${stname}-${version}";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "syncthing"; owner = "syncthing";
repo = "syncthing"; repo = "syncthing";
rev = "v${version}"; rev = "v${version}";
sha256 = "1qkjnij9jw3d4pjkdr6npz5ps604qg6g36jnsng0k1r2qnrydnwh"; sha256 = "09qrdh6rvphh6sjyzh3jjil1fkrp9jp8mzrbz9ncqhvqra70f6sw";
}; };
goPackagePath = "github.com/syncthing/syncthing"; goPackagePath = "github.com/syncthing/syncthing";

View file

@ -13,11 +13,11 @@ let
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
name = "trilium-${version}"; name = "trilium-${version}";
version = "0.28.3"; version = "0.29.1";
src = fetchurl { src = fetchurl {
url = "https://github.com/zadam/trilium/releases/download/v${version}/trilium-linux-x64-${version}.tar.xz"; url = "https://github.com/zadam/trilium/releases/download/v${version}/trilium-linux-x64-${version}.tar.xz";
sha256 = "0bg7fzb0drw6692hcskiwwd4d9s9547cqp3m1s4qj0y7ca3wrx8r"; sha256 = "1yyd650l628x3kvyn73d5b35sj7ixmdlqkb6h1swdjp0z2n00w4w";
}; };
# Fetch from source repo, no longer included in release. # Fetch from source repo, no longer included in release.

View file

@ -0,0 +1,21 @@
{ stdenv, fetchurl, libao }:
stdenv.mkDerivation rec {
pname = "aldo";
version = "0.7.7";
src = fetchurl {
url = "mirror://savannah/${pname}/${pname}-${version}.tar.bz2";
sha256 = "14lzgldqzbbzydsy1cai3wln3hpyj1yhj8ji3wygyzr616fq9f7i";
};
buildInputs = [ libao ];
meta = with stdenv.lib; {
description = "Morse code training program";
homepage = http://aldo.nongnu.org/;
license = licenses.gpl3Plus;
maintainers = with maintainers; [ etu ];
platforms = platforms.linux;
};
}

View file

@ -4,7 +4,7 @@
} : } :
let let
version = "18.10.0"; version = "19.01.0";
in stdenv.mkDerivation { in stdenv.mkDerivation {
name = "limesuite-${version}"; name = "limesuite-${version}";
@ -13,7 +13,7 @@ in stdenv.mkDerivation {
owner = "myriadrf"; owner = "myriadrf";
repo = "LimeSuite"; repo = "LimeSuite";
rev = "v${version}"; rev = "v${version}";
sha256 = "0nbyvcdwvfvln1wic9qwb7y221v3jv454gp5v6ms9112a41zj46h"; sha256 = "1r03kc1pvlhkvp19qbw7f5qzxx48z2v638f0xpawf6d1nwfky1n3";
}; };
enableParallelBuilding = true; enableParallelBuilding = true;

View file

@ -3,7 +3,7 @@
} : } :
let let
version = "0.4.0"; version = "0.4.1";
in stdenv.mkDerivation { in stdenv.mkDerivation {
name = "soapybladerf-${version}"; name = "soapybladerf-${version}";
@ -12,7 +12,7 @@ in stdenv.mkDerivation {
owner = "pothosware"; owner = "pothosware";
repo = "SoapyBladeRF"; repo = "SoapyBladeRF";
rev = "soapy-bladerf-${version}"; rev = "soapy-bladerf-${version}";
sha256 = "1gf1azfydw033nlg2bgs9cbsbp9npjdrgjwlsffn0d9x0qbgxjqp"; sha256 = "02wh09850vinqg248fw4lxmx7y857cqmnnb8jm9zhyrsggal0hki";
}; };
nativeBuildInputs = [ cmake pkgconfig ]; nativeBuildInputs = [ cmake pkgconfig ];

View file

@ -1,7 +1,7 @@
{ stdenv, fetchFromGitHub, cmake, soapysdr, avahi }: { stdenv, fetchFromGitHub, cmake, soapysdr, avahi }:
let let
version = "0.5.0"; version = "0.5.1";
in stdenv.mkDerivation { in stdenv.mkDerivation {
name = "soapyremote-${version}"; name = "soapyremote-${version}";
@ -10,7 +10,7 @@ in stdenv.mkDerivation {
owner = "pothosware"; owner = "pothosware";
repo = "SoapyRemote"; repo = "SoapyRemote";
rev = "soapy-remote-${version}"; rev = "soapy-remote-${version}";
sha256 = "1lyjhf934zap61ky7rbk46bp8s8sjk8sgdyszhryfyf571jv9b2i"; sha256 = "1qlpjg8mh564q26mni8g6bb8w9nj7hgcq86278fszxpwpnk3jsvk";
}; };
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];

View file

@ -3,7 +3,7 @@
} : } :
let let
version = "0.3.4"; version = "0.3.5";
in stdenv.mkDerivation { in stdenv.mkDerivation {
name = "soapyuhd-${version}"; name = "soapyuhd-${version}";
@ -12,7 +12,7 @@ in stdenv.mkDerivation {
owner = "pothosware"; owner = "pothosware";
repo = "SoapyUHD"; repo = "SoapyUHD";
rev = "soapy-uhd-${version}"; rev = "soapy-uhd-${version}";
sha256 = "1da7cjcvfdqhgznm7x14s1h7lwz5lan1b48akw445ah1vxwvh4hl"; sha256 = "07cr4zk42d0l5g03wm7dzl5lmqr104hmzp1fdjqa1z7xq4v9c9b1";
}; };
nativeBuildInputs = [ cmake pkgconfig ]; nativeBuildInputs = [ cmake pkgconfig ];

View file

@ -0,0 +1,42 @@
{ stdenv, fetchFromGitHub, autoreconfHook, autoconf, automake, pkgconfig, glib
, perl, ncurses, hamlib, xmlrpc_c }:
stdenv.mkDerivation rec {
pname = "tlf";
version = "1.3.2";
src = fetchFromGitHub {
owner = pname;
repo = pname;
rev = "${pname}-${version}";
sha256 = "0gniysjm8aq5anq0a0az31vd6h1vyg56bifc7rpf53lsh9hkzmgc";
};
nativeBuildInputs = [ autoreconfHook autoconf automake pkgconfig perl ];
buildInputs = [ glib ncurses hamlib xmlrpc_c ];
configureFlags = [ "--enable-hamlib" "--enable-fldigi-xmlrpc" ];
postInstall = ''
mkdir -p $out/lib
# Hack around lack of libtinfo in NixOS
ln -s ${ncurses.out}/lib/libncursesw.so.6 $out/lib/libtinfo.so.5
'';
meta = with stdenv.lib; {
description = "Advanced ham radio logging and contest program";
longDescription = ''
TLF is a curses based console mode general logging and contest program for
amateur radio.
It supports the CQWW, the WPX, the ARRL-DX, the ARRL-FD, the PACC and the
EU SPRINT shortwave contests (single operator) as well as a LOT MORE basic
contests, general QSO and DXpedition mode.
'';
homepage = https://tlf.github.io/;
license = licenses.gpl2;
maintainers = with maintainers; [ etu ];
platforms = platforms.linux;
};
}

View file

@ -40,7 +40,7 @@ in stdenv.mkDerivation {
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "A DAB/DAB+ Software Radio"; description = "A DAB/DAB+ Software Radio";
homepage = https://www.welle.io/; homepage = https://www.welle.io/;
maintainers = with maintainers; [ ck3d ]; maintainers = with maintainers; [ ck3d markuskowa ];
license = licenses.gpl2; license = licenses.gpl2;
platforms = with platforms; [ "x86_64-linux" "i686-linux" ] ++ darwin; platforms = with platforms; [ "x86_64-linux" "i686-linux" ] ++ darwin;
}; };

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