Merge branch 'master' into staging

This commit is contained in:
Vladimír Čunát 2017-02-20 21:24:35 +01:00
commit 5a38ab8add
No known key found for this signature in database
GPG Key ID: E747DF1F9575A3AA
236 changed files with 4238 additions and 2752 deletions

View File

@ -20,6 +20,7 @@
adolfogc = "Adolfo E. García Castro <adolfo.garcia.cr@gmail.com>";
aespinosa = "Allan Espinosa <allan.espinosa@outlook.com>";
aflatter = "Alexander Flatter <flatter@fastmail.fm>";
afldcr = "James Alexander Feldman-Crough <alex@fldcr.com>";
aforemny = "Alexander Foremny <alexanderforemny@googlemail.com>";
afranchuk = "Alex Franchuk <alex.franchuk@gmail.com>";
aherrmann = "Andreas Herrmann <andreash87@gmx.ch>";
@ -276,6 +277,7 @@
luispedro = "Luis Pedro Coelho <luis@luispedro.org>";
lukego = "Luke Gorrie <luke@snabb.co>";
lw = "Sergey Sofeychuk <lw@fmap.me>";
ma27 = "Maximilian Bosch <maximilian@mbosch.me>";
madjar = "Georges Dubus <georges.dubus@compiletoi.net>";
magnetophon = "Bart Brouns <bart@magnetophon.nl>";
mahe = "Matthias Herrmann <matthias.mh.herrmann@gmail.com>";
@ -303,7 +305,7 @@
meisternu = "Matt Miemiec <meister@krutt.org>";
metabar = "Celine Mercier <softs@metabarcoding.org>";
mguentner = "Maximilian Güntner <code@klandest.in>";
mic92 = "Jörg Thalheim <joerg@higgsboson.tk>";
mic92 = "Jörg Thalheim <joerg@thalheim.io>";
michaelpj = "Michael Peyton Jones <michaelpj@gmail.com>";
michalrus = "Michal Rus <m@michalrus.com>";
michelk = "Michel Kuhlmann <michel@kuhlmanns.info>";
@ -427,6 +429,7 @@
rongcuid = "Rongcui Dong <rongcuid@outlook.com>";
ronny = "Ronny Pfannschmidt <nixos@ronnypfannschmidt.de>";
rszibele = "Richard Szibele <richard_szibele@hotmail.com>";
rtreffer = "Rene Treffer <treffer+nixos@measite.de>";
rushmorem = "Rushmore Mushambi <rushmore@webenchanter.com>";
rvl = "Rodney Lorrimar <dev+nix@rodney.id.au>";
rvlander = "Gaëtan André <rvlander@gaetanandre.eu>";

View File

@ -26,6 +26,12 @@ rec {
cleanSource = builtins.filterSource cleanSourceFilter;
# Filter sources by a list of regular expressions.
#
# E.g. `src = sourceByRegex ./my-subproject [".*\.py$" "^database.sql$"]`
sourceByRegex = src: regexes: builtins.filterSource (path: type:
let relPath = lib.removePrefix (toString src + "/") (toString path);
in lib.any (re: builtins.match re relPath != null) regexes) src;
# Get all files ending with the specified suffices from the given
# directory or its descendants. E.g. `sourceFilesBySuffices ./dir

View File

@ -7,7 +7,7 @@
<para>The file <filename>/etc/nixos/configuration.nix</filename>
contains the current configuration of your machine. Whenever youve
changed something to that file, you should do
<link linkend="ch-configuration">changed something</link> in that file, you should do
<screen>
# nixos-rebuild switch</screen>

View File

@ -607,7 +607,8 @@ sub waitForWindow {
sub copyFileFromHost {
my ($self, $from, $to) = @_;
my $s = `cat $from` or die;
$self->mustSucceed("echo '$s' > $to"); # !!! escaping
$s =~ s/'/'\\''/g;
$self->mustSucceed("echo '$s' > $to");
}

View File

@ -19,7 +19,7 @@ rm -f ec2-amis.nix
types="hvm pv"
stores="ebs s3"
regions="eu-west-1 eu-west-2 eu-central-1 us-east-1 us-east-2 us-west-1 us-west-2 ap-southeast-1 ap-southeast-2 ap-northeast-1 ap-northeast-2 sa-east-1 ap-south-1"
regions="eu-west-1 eu-west-2 eu-central-1 us-east-1 us-east-2 us-west-1 us-west-2 ca-central-1 ap-southeast-1 ap-southeast-2 ap-northeast-1 ap-northeast-2 sa-east-1 ap-south-1"
for type in $types; do
link=$stateDir/$type

View File

@ -13,7 +13,7 @@ let
useDisplayDevice = cfg.connectDisplay;
};
useBbswitch = cfg.pmMethod == "bbswitch";
useBbswitch = cfg.pmMethod == "bbswitch" || cfg.pmMethod == "auto" && useNvidia;
primus = pkgs.primus.override {
inherit useNvidia;
@ -65,7 +65,7 @@ in
pmMethod = mkOption {
default = "auto";
type = types.enum [ "auto" "bbswitch" "nouveau" "switcheroo" "none" ];
type = types.enum [ "auto" "bbswitch" "switcheroo" "none" ];
description = ''
Set preferred power management method for unused card.
'';

View File

@ -0,0 +1,61 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.hardware.mwProCapture;
kernelPackages = config.boot.kernelPackages;
in
{
options.hardware.mwProCapture.enable = mkEnableOption "Magewell Pro Capture family kernel module";
config = mkIf cfg.enable {
assertions = singleton {
assertion = versionAtLeast kernelPackages.kernel.version "3.2";
message = "Magewell Pro Capture family module is not supported for kernels older than 3.2";
};
boot.kernelModules = [ "ProCapture" ];
environment.systemPackages = [ kernelPackages.mwprocapture ];
boot.extraModulePackages = [ kernelPackages.mwprocapture ];
boot.extraModprobeConfig = ''
# Set the png picture to be displayed when no input signal is detected.
options ProCapture nosignal_file=${kernelPackages.mwprocapture}/res/NoSignal.png
# Set the png picture to be displayed when an unsupported input signal is detected.
options ProCapture unsupported_file=${kernelPackages.mwprocapture}/res/Unsupported.png
# Set the png picture to be displayed when an loking input signal is detected.
options ProCapture locking_file=${kernelPackages.mwprocapture}/res/Locking.png
# Message signaled interrupts switch
#options ProCapture disable_msi=0
# Set the debug level
#options ProCapture debug_level=0
# Force init switch eeprom
#options ProCapture init_switch_eeprom=0
# Min frame interval for VIDIOC_ENUM_FRAMEINTERVALS (default: 166666(100ns))
#options ProCapture enum_frameinterval_min=166666
# VIDIOC_ENUM_FRAMESIZES type (1: DISCRETE; 2: STEPWISE; otherwise: CONTINUOUS )
#options ProCapture enum_framesizes_type=0
# Parameters for internal usage
#options ProCapture internal_params=""
'';
};
}

View File

@ -49,6 +49,10 @@ in
Option "RandRRotation" "on"
'';
environment.etc."nvidia/nvidia-application-profiles-rc" = mkIf nvidia_x11.useProfiles {
source = "${nvidia_x11.bin}/share/nvidia/nvidia-application-profiles-rc";
};
hardware.opengl.package = nvidiaPackage nvidia_x11 pkgs;
hardware.opengl.package32 = nvidiaPackage nvidia_libs32 pkgs_i686;

View File

@ -1,4 +1,4 @@
# List all devices which are detected by nixos-hardware-scan.
# List all devices which are detected by nixos-generate-config.
# Common devices are enabled by default.
{ config, lib, pkgs, ... }:

View File

@ -1,4 +1,4 @@
# List all devices which are _not_ detected by nixos-hardware-scan.
# List all devices which are _not_ detected by nixos-generate-config.
# Common devices are enabled by default.
{ config, lib, pkgs, ... }:

View File

@ -41,6 +41,7 @@
./hardware/video/amdgpu.nix
./hardware/video/amdgpu-pro.nix
./hardware/video/ati.nix
./hardware/video/capture/mwprocapture.nix
./hardware/video/bumblebee.nix
./hardware/video/displaylink.nix
./hardware/video/nvidia.nix
@ -80,6 +81,7 @@
./programs/light.nix
./programs/man.nix
./programs/mosh.nix
./programs/mtr.nix
./programs/nano.nix
./programs/oblogout.nix
./programs/screen.nix
@ -91,6 +93,7 @@
./programs/tmux.nix
./programs/venus.nix
./programs/vim.nix
./programs/wireshark.nix
./programs/wvdial.nix
./programs/xfs_quota.nix
./programs/xonsh.nix

View File

@ -0,0 +1,27 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.programs.mtr;
in {
options = {
programs.mtr = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Whether to add mtr to the global environment and configure a
setcap wrapper for it.
'';
};
};
};
config = mkIf cfg.enable {
security.wrappers.mtr = {
source = "${pkgs.mtr}/bin/mtr";
capabilities = "cap_net_raw+p";
};
};
}

View File

@ -0,0 +1,42 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.programs.wireshark;
wireshark = cfg.package;
in {
options = {
programs.wireshark = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Whether to add Wireshark to the global environment and configure a
setcap wrapper for 'dumpcap' for users in the 'wireshark' group.
'';
};
package = mkOption {
type = types.package;
default = pkgs.wireshark-cli;
defaultText = "pkgs.wireshark-cli";
description = ''
Which Wireshark package to install in the global environment.
'';
};
};
};
config = mkIf cfg.enable {
environment.systemPackages = [ wireshark ];
users.extraGroups.wireshark = {};
security.wrappers.dumpcap = {
source = "${wireshark}/bin/dumpcap";
capabilities = "cap_net_raw+p";
owner = "root";
group = "wireshark";
permissions = "u+rx,g+x";
};
};
}

View File

@ -129,7 +129,7 @@ in
certs = mkOption {
default = { };
type = with types; loaOf (submodule certOpts);
type = with types; attrsOf (submodule certOpts);
description = ''
Attribute set of certificates to get signed and renewed.
'';

View File

@ -28,6 +28,7 @@ let
, source
, owner ? "nobody"
, group ? "nogroup"
, permissions ? "u+rx,g+x,o+x"
, ...
}:
assert (lib.versionAtLeast (lib.getVersion config.boot.kernelPackages.kernel) "4.3");
@ -45,7 +46,7 @@ let
${pkgs.libcap.out}/bin/setcap "cap_setpcap,${capabilities}" $wrapperDir/${program}
# Set the executable bit
chmod u+rx,g+x,o+x $wrapperDir/${program}
chmod ${permissions} $wrapperDir/${program}
'';
###### Activation script for the setuid wrappers

View File

@ -4,6 +4,8 @@ with lib;
let
name = "mpd";
uid = config.ids.uids.mpd;
gid = config.ids.gids.mpd;
cfg = config.services.mpd;
@ -54,13 +56,14 @@ in {
description = ''
Extra directives added to to the end of MPD's configuration file,
mpd.conf. Basic configuration like file location and uid/gid
is added automatically to the beginning of the file.
is added automatically to the beginning of the file. For available
options see <literal>man 5 mpd.conf</literal>'.
'';
};
dataDir = mkOption {
type = types.path;
default = "/var/lib/mpd";
default = "/var/lib/${name}";
description = ''
The directory where MPD stores its state, tag cache,
playlists etc.
@ -69,13 +72,13 @@ in {
user = mkOption {
type = types.str;
default = "mpd";
default = name;
description = "User account under which MPD runs.";
};
group = mkOption {
type = types.str;
default = "mpd";
default = name;
description = "Group account under which MPD runs.";
};
@ -131,17 +134,17 @@ in {
};
};
users.extraUsers = optionalAttrs (cfg.user == "mpd") (singleton {
users.extraUsers = optionalAttrs (cfg.user == name) (singleton {
inherit uid;
name = "mpd";
inherit name;
group = cfg.group;
extraGroups = [ "audio" ];
description = "Music Player Daemon user";
home = "${cfg.dataDir}";
});
users.extraGroups = optionalAttrs (cfg.group == "mpd") (singleton {
name = "mpd";
users.extraGroups = optionalAttrs (cfg.group == name) (singleton {
inherit name;
gid = gid;
});
};

View File

@ -76,14 +76,6 @@ in
'';
};
stanchionSsl = mkOption {
type = types.bool;
default = true;
description = ''
Tell stanchion to use SSL.
'';
};
distributedCookie = mkOption {
type = types.str;
default = "riak";
@ -148,8 +140,6 @@ in
distributed_cookie = ${cfg.distributedCookie}
stanchion_ssl=${if cfg.stanchionSsl then "on" else "off"}
${cfg.extraConfig}
'';

View File

@ -1,8 +1,11 @@
{ config, lib, pkgs, ... }:
with lib;
let
bluez-bluetooth = pkgs.bluez;
cfg = config.hardware.bluetooth;
in
{
@ -11,33 +14,53 @@ in
options = {
hardware.bluetooth.enable = mkOption {
type = types.bool;
default = false;
description = "Whether to enable support for Bluetooth.";
hardware.bluetooth.enable = mkEnableOption "support for Bluetooth.";
hardware.bluetooth.powerOnBoot = mkOption {
type = types.bool;
default = true;
description = "Whether to power up the default Bluetooth controller on boot.";
};
};
###### implementation
config = mkIf config.hardware.bluetooth.enable {
config = mkIf cfg.enable {
environment.systemPackages = [ bluez-bluetooth pkgs.openobex pkgs.obexftp ];
services.udev.packages = [ bluez-bluetooth ];
services.dbus.packages = [ bluez-bluetooth ];
systemd.packages = [ bluez-bluetooth ];
systemd.packages = [ bluez-bluetooth ];
services.udev.extraRules = optionalString cfg.powerOnBoot ''
ACTION=="add", KERNEL=="hci[0-9]*", ENV{SYSTEMD_WANTS}="bluetooth-power@%k.service"
'';
systemd.services = {
bluetooth = {
wantedBy = [ "bluetooth.target" ];
aliases = [ "dbus-org.bluez.service" ];
};
"bluetooth-power@" = mkIf cfg.powerOnBoot {
description = "Power up bluetooth controller";
after = [
"bluetooth.service"
"suspend.target"
"sys-subsystem-bluetooth-devices-%i.device"
];
wantedBy = [ "suspend.target" ];
serviceConfig.Type = "oneshot";
serviceConfig.ExecStart = "${pkgs.bluez.out}/bin/hciconfig %i up";
};
systemd.services.bluetooth = {
wantedBy = [ "bluetooth.target" ];
aliases = [ "dbus-org.bluez.service" ];
};
systemd.user.services.obex = {
aliases = [ "dbus-org.bluez.obex.service" ];
systemd.user.services = {
obex.aliases = [ "dbus-org.bluez.obex.service" ];
};
};

View File

@ -184,7 +184,7 @@ in
description = ''
This option defines extra ignore rules.
'';
type = with types; loaOf (submodule ignoreOptions);
type = with types; attrsOf (submodule ignoreOptions);
};
ignoreCron = mkOption {
@ -192,7 +192,7 @@ in
description = ''
This option defines extra ignore rules for cronjobs.
'';
type = with types; loaOf (submodule ignoreCronOptions);
type = with types; attrsOf (submodule ignoreCronOptions);
};
extraGroups = mkOption {

View File

@ -94,44 +94,6 @@ let
in flatten (mapAttrsToList mkSublist attrs);
in all isNull (findPkiDefinitions [] manualPkiOptions);
configFile = pkgs.writeText "taskdrc" (''
# systemd related
daemon = false
log = -
# logging
${mkConfLine "debug" cfg.debug}
${mkConfLine "ip.log" cfg.ipLog}
# general
${mkConfLine "ciphers" cfg.ciphers}
${mkConfLine "confirmation" cfg.confirmation}
${mkConfLine "extensions" cfg.extensions}
${mkConfLine "queue.size" cfg.queueSize}
${mkConfLine "request.limit" cfg.requestLimit}
# client
${mkConfLine "client.allow" cfg.allowedClientIDs}
${mkConfLine "client.deny" cfg.disallowedClientIDs}
# server
server = ${cfg.listenHost}:${toString cfg.listenPort}
${mkConfLine "trust" cfg.trust}
# PKI options
${if needToCreateCA then ''
ca.cert = ${cfg.dataDir}/keys/ca.cert
server.cert = ${cfg.dataDir}/keys/server.cert
server.key = ${cfg.dataDir}/keys/server.key
server.crl = ${cfg.dataDir}/keys/server.crl
'' else ''
ca.cert = ${cfg.pki.manual.ca.cert}
server.cert = ${cfg.pki.manual.server.cert}
server.key = ${cfg.pki.manual.server.key}
server.crl = ${cfg.pki.manual.server.crl}
''}
'' + cfg.extraConfig);
orgOptions = { name, ... }: {
options.users = mkOption {
type = types.uniq (types.listOf types.str);
@ -154,9 +116,8 @@ let
certtool = "${pkgs.gnutls.bin}/bin/certtool";
nixos-taskserver = pkgs.pythonPackages.buildPythonPackage {
nixos-taskserver = pkgs.pythonPackages.buildPythonApplication {
name = "nixos-taskserver";
namePrefix = "";
src = pkgs.runCommand "nixos-taskserver-src" {} ''
mkdir -p "$out"
@ -167,6 +128,7 @@ let
certBits = cfg.pki.auto.bits;
clientExpiration = cfg.pki.auto.expiration.client;
crlExpiration = cfg.pki.auto.expiration.crl;
isAutoConfig = if needToCreateCA then "True" else "False";
}}" > "$out/main.py"
cat > "$out/setup.py" <<EOF
from setuptools import setup
@ -365,20 +327,57 @@ in {
pki.manual = manualPkiOptions;
pki.auto = autoPkiOptions;
extraConfig = mkOption {
type = types.lines;
default = "";
example = "client.cert = /tmp/debugging.cert";
config = mkOption {
type = types.attrs;
example.client.cert = "/tmp/debugging.cert";
description = ''
Extra lines to append to the taskdrc configuration file.
Configuration options to pass to Taskserver.
The options here are the same as described in <citerefentry>
<refentrytitle>taskdrc</refentrytitle>
<manvolnum>5</manvolnum>
</citerefentry>, but with one difference:
The <literal>server</literal> option is
<literal>server.listen</literal> here, because the
<literal>server</literal> option would collide with other options
like <literal>server.cert</literal> and we would run in a type error
(attribute set versus string).
Nix types like integers or booleans are automatically converted to
the right values Taskserver would expect.
'';
apply = let
mkKey = path: if path == ["server" "listen"] then "server"
else concatStringsSep "." path;
recurse = path: attrs: let
mapper = name: val: let
newPath = path ++ [ name ];
scalar = if val == true then "true"
else if val == false then "false"
else toString val;
in if isAttrs val then recurse newPath val
else [ "${mkKey newPath}=${scalar}" ];
in concatLists (mapAttrsToList mapper attrs);
in recurse [];
};
};
};
imports = [
(mkRemovedOptionModule ["services" "taskserver" "extraConfig"] ''
This option was removed in favor of `services.taskserver.config` with
different semantics (it's now a list of attributes instead of lines).
Please look up the documentation of `services.taskserver.config' to get
more information about the new way to pass additional configuration
options.
'')
];
config = mkMerge [
(mkIf cfg.enable {
environment.systemPackages = [ pkgs.taskserver nixos-taskserver ];
environment.systemPackages = [ nixos-taskserver ];
users.users = optional (cfg.user == "taskd") {
name = "taskd";
@ -392,6 +391,44 @@ in {
gid = config.ids.gids.taskd;
};
services.taskserver.config = {
# systemd related
daemon = false;
log = "-";
# logging
debug = cfg.debug;
ip.log = cfg.ipLog;
# general
ciphers = cfg.ciphers;
confirmation = cfg.confirmation;
extensions = cfg.extensions;
queue.size = cfg.queueSize;
request.limit = cfg.requestLimit;
# client
client.allow = cfg.allowedClientIDs;
client.deny = cfg.disallowedClientIDs;
# server
trust = cfg.trust;
server = {
listen = "${cfg.listenHost}:${toString cfg.listenPort}";
} // (if needToCreateCA then {
cert = "${cfg.dataDir}/keys/server.cert";
key = "${cfg.dataDir}/keys/server.key";
crl = "${cfg.dataDir}/keys/server.crl";
} else {
cert = "${cfg.pki.manual.server.cert}";
key = "${cfg.pki.manual.server.key}";
crl = "${cfg.pki.manual.server.crl}";
});
ca.cert = if needToCreateCA then "${cfg.dataDir}/keys/ca.cert"
else "${cfg.pki.manual.ca.cert}";
};
systemd.services.taskserver-init = {
wantedBy = [ "taskserver.service" ];
before = [ "taskserver.service" ];
@ -404,7 +441,6 @@ in {
script = ''
${taskd} init
echo "include ${configFile}" > "${cfg.dataDir}/config"
touch "${cfg.dataDir}/.is_initialized"
'';
@ -436,7 +472,10 @@ in {
in "${helperTool} process-json '${jsonFile}'";
serviceConfig = {
ExecStart = "@${taskd} taskd server";
ExecStart = let
mkCfgFlag = flag: escapeShellArg "--${flag}";
cfgFlags = concatMapStringsSep " " mkCfgFlag cfg.config;
in "@${taskd} taskd server ${cfgFlags}";
ExecReload = "${pkgs.coreutils}/bin/kill -USR1 $MAINPID";
Restart = "on-failure";
PermissionsStartOnly = true;

View File

@ -136,9 +136,9 @@ $ ssh server nixos-taskserver user export my-company alice | sh
<para>
If you set any options within
<option>service.taskserver.pki.manual.*</option>, the automatic user and
CA management by the <command>nixos-taskserver</command> is disabled and
you need to create certificates and keys by yourself.
<option>service.taskserver.pki.manual.*</option>,
<command>nixos-taskserver</command> won't issue certificates, but you can
still use it for adding or removing user accounts.
</para>
</section>
</chapter>

View File

@ -13,6 +13,7 @@ from tempfile import NamedTemporaryFile
import click
IS_AUTO_CONFIG = @isAutoConfig@ # NOQA
CERTTOOL_COMMAND = "@certtool@"
CERT_BITS = "@certBits@"
CLIENT_EXPIRATION = "@clientExpiration@"
@ -149,6 +150,12 @@ def create_template(contents):
def generate_key(org, user):
if not IS_AUTO_CONFIG:
msg = "Automatic PKI handling is disabled, you need to " \
"manually issue a client certificate for user {}.\n"
sys.stderr.write(msg.format(user))
return
basedir = os.path.join(TASKD_DATA_DIR, "keys", org, user)
if os.path.exists(basedir):
raise OSError("Keyfile directory for {} already exists.".format(user))
@ -243,26 +250,32 @@ class User(object):
self.key = key
def export(self):
pubcert = getkey(self.__org, self.name, "public.cert")
privkey = getkey(self.__org, self.name, "private.key")
cacert = getkey("ca.cert")
keydir = "${TASKDATA:-$HOME/.task}/keys"
credentials = '/'.join([self.__org, self.name, self.key])
allow_unquoted = string.ascii_letters + string.digits + "/-_."
if not all((c in allow_unquoted) for c in credentials):
credentials = "'" + credentials.replace("'", r"'\''") + "'"
script = [
"umask 0077",
'mkdir -p "{}"'.format(keydir),
mktaskkey("certificate", os.path.join(keydir, "public.cert"),
pubcert),
mktaskkey("key", os.path.join(keydir, "private.key"), privkey),
mktaskkey("ca", os.path.join(keydir, "ca.cert"), cacert),
script = []
if IS_AUTO_CONFIG:
pubcert = getkey(self.__org, self.name, "public.cert")
privkey = getkey(self.__org, self.name, "private.key")
cacert = getkey("ca.cert")
keydir = "${TASKDATA:-$HOME/.task}/keys"
script += [
"umask 0077",
'mkdir -p "{}"'.format(keydir),
mktaskkey("certificate", os.path.join(keydir, "public.cert"),
pubcert),
mktaskkey("key", os.path.join(keydir, "private.key"), privkey),
mktaskkey("ca", os.path.join(keydir, "ca.cert"), cacert)
]
script.append(
"task config taskd.credentials -- {}".format(credentials)
]
)
return "\n".join(script) + "\n"
@ -526,7 +539,7 @@ def export_user(organisation, user):
userobj = organisation.get_user(user)
if userobj is None:
msg = "User {} doesn't exist in organisation {}."
sys.exit(msg.format(userobj.name, organisation.name))
sys.exit(msg.format(user, organisation.name))
sys.stdout.write(userobj.export())

View File

@ -76,6 +76,7 @@ let
# wrapped plugins by makeWrapper being with dots
ignore_file ^\.
allow ^::1$
allow ^127\.0\.0\.1$
${nodeCfg.extraConfig}

View File

@ -91,6 +91,26 @@ in
'';
};
enableNmbd = mkOption {
type = types.bool;
default = true;
description = ''
Whether to enable Samba's nmbd, which replies to NetBIOS over IP name
service requests. It also participates in the browsing protocols
which make up the Windows "Network Neighborhood" view.
'';
};
enableWinbindd = mkOption {
type = types.bool;
default = true;
description = ''
Whether to enable Samba's winbindd, which provides a number of services
to the Name Service Switch capability found in most modern C libraries,
to arbitrary applications via PAM and ntlm_auth and to Samba itself.
'';
};
package = mkOption {
type = types.package;
default = pkgs.samba;
@ -185,7 +205,12 @@ in
###### implementation
config = mkMerge
[ { # Always provide a smb.conf to shut up programs like smbclient and smbspool.
[ { assertions =
[ { assertion = cfg.nsswins -> cfg.enableWinbindd;
message = "If samba.nsswins is enabled, then samba.enableWinbindd must also be enabled";
}
];
# Always provide a smb.conf to shut up programs like smbclient and smbspool.
environment.etc = singleton
{ source =
if cfg.enable then configFile
@ -194,7 +219,7 @@ in
};
}
(mkIf config.services.samba.enable {
(mkIf cfg.enable {
system.nssModules = optional cfg.nsswins samba;
@ -207,9 +232,9 @@ in
};
services = {
"samba-nmbd" = daemonService "nmbd" "-F";
"samba-smbd" = daemonService "smbd" "-F";
"samba-winbindd" = daemonService "winbindd" "-F";
"samba-nmbd" = mkIf cfg.enableNmbd (daemonService "nmbd" "-F");
"samba-winbindd" = mkIf cfg.enableWinbindd (daemonService "winbindd" "-F");
"samba-setup" = {
description = "Samba Setup Task";
script = setupScript;

View File

@ -8,7 +8,7 @@ in
options.services.tahoe = {
introducers = mkOption {
default = {};
type = with types; loaOf (submodule {
type = with types; attrsOf (submodule {
options = {
nickname = mkOption {
type = types.str;
@ -49,7 +49,7 @@ in
};
nodes = mkOption {
default = {};
type = with types; loaOf (submodule {
type = with types; attrsOf (submodule {
options = {
nickname = mkOption {
type = types.str;

View File

@ -18,7 +18,7 @@ in
networks = mkOption {
default = { };
type = with types; loaOf (submodule {
type = with types; attrsOf (submodule {
options = {
extraConfig = mkOption {
@ -59,7 +59,7 @@ in
hosts = mkOption {
default = { };
type = types.loaOf types.lines;
type = types.attrsOf types.lines;
description = ''
The name of the host in the network as well as the configuration for that host.
This name should only contain alphanumerics and underscores.

View File

@ -208,7 +208,7 @@ in
networks = mkOption {
default = { };
type = with types; loaOf (submodule networkOpts);
type = with types; attrsOf (submodule networkOpts);
description = ''
IRC networks to connect the user to.
'';

View File

@ -202,6 +202,7 @@ in
ExecStart = "${pkgs.mattermost}/bin/mattermost-platform";
WorkingDirectory = "${cfg.statePath}";
PrivateTmp = true;
JoinsNamespaceOf = mkIf cfg.localDatabaseCreate "postgresql.service";
Restart = "always";
RestartSec = "10";
LimitNOFILE = "49152";

View File

@ -16,20 +16,7 @@ let
) cfg.virtualHosts;
enableIPv6 = config.networking.enableIPv6;
configFile = pkgs.runCommand "nginx.conf" {
inherit configFileUnformatted;
passAsFile = [ "configFileUnformatted" ];
# configFileUnformatted is created locally, therefore so should this be.
preferLocalBuild = true;
allowSubstitutes = false;
} ''
cp ${configFileUnformatted} nginx.conf
chmod u+w nginx.conf
${pkgs.nginx-config-formatter}/bin/nginxfmt nginx.conf
cp nginx.conf $out
'';
configFileUnformatted = pkgs.writeText "nginx.unformatted.conf" ''
configFile = pkgs.writeText "nginx.conf" ''
user ${cfg.user} ${cfg.group};
error_log stderr;
daemon off;

View File

@ -74,7 +74,7 @@ in
services.zope2.instances = mkOption {
default = {};
type = with types; loaOf (submodule zope2Opts);
type = with types; attrsOf (submodule zope2Opts);
example = literalExample ''
{
plone01 = {

View File

@ -41,6 +41,12 @@ in
Shell commands executed just before XFCE is started.
'';
};
enableXfwm = mkOption {
type = types.bool;
default = true;
description = "Enable the XFWM (default) window manager.";
};
};
};
@ -87,7 +93,6 @@ in
pkgs.xfce.xfce4volumed
pkgs.xfce.xfce4-screenshooter
pkgs.xfce.xfconf
pkgs.xfce.xfwm4
# This supplies some "abstract" icons such as
# "utilities-terminal" and "accessories-text-editor".
pkgs.gnome3.defaultIconTheme
@ -99,6 +104,7 @@ in
pkgs.xfce.xfce4_appfinder
pkgs.xfce.tumbler # found via dbus
]
++ optional cfg.enableXfwm pkgs.xfce.xfwm4
++ optional config.powerManagement.enable pkgs.xfce.xfce4_power_manager
++ optional config.networking.networkmanager.enable pkgs.networkmanagerapplet
++ optionals (!cfg.noDesktop)

View File

@ -19,6 +19,7 @@ let
glibc # needed for getent
shadow
nettools # needed for hostname
utillinux # needed for mount and mountpoint
];
in
@ -168,12 +169,12 @@ in
local options="$3"
local fsType="$4"
if ${pkgs.utillinux}/bin/mountpoint -q "$mountPoint"; then
if mountpoint -q "$mountPoint"; then
local options="remount,$options"
else
mkdir -m 0755 -p "$mountPoint"
fi
${pkgs.utillinux}/bin/mount -t "$fsType" -o "$options" "$device" "$mountPoint"
mount -t "$fsType" -o "$options" "$device" "$mountPoint"
}
source ${config.system.build.earlyMountScript}
'';

View File

@ -176,7 +176,7 @@ in
boot.initrd.availableKernelModules =
[ # Note: most of these (especially the SATA/PATA modules)
# shouldn't be included by default since nixos-hardware-scan
# shouldn't be included by default since nixos-generate-config
# detects them, but I'm keeping them for now for backwards
# compatibility.

View File

@ -54,7 +54,7 @@ let
inherit (efi) canTouchEfiVariables;
inherit (cfg)
version extraConfig extraPerEntryConfig extraEntries forceInstall useOSProber
extraEntriesBeforeNixOS extraPrepareConfig configurationLimit copyKernels
extraEntriesBeforeNixOS extraPrepareConfig extraInitrd configurationLimit copyKernels
default fsIdentifier efiSupport efiInstallAsRemovable gfxmodeEfi gfxmodeBios;
path = (makeBinPath ([
pkgs.coreutils pkgs.gnused pkgs.gnugrep pkgs.findutils pkgs.diffutils pkgs.btrfs-progs
@ -267,6 +267,19 @@ in
'';
};
extraInitrd = mkOption {
type = types.nullOr types.path;
default = null;
example = "/boot/extra_initrafms.gz";
description = ''
The path to a second initramfs to be supplied to the kernel.
This ramfs will not be copied to the store, so that it can
contain secrets such as LUKS keyfiles or ssh keys.
This implies that rolling back to a previous configuration
won't rollback the state of this file.
'';
};
useOSProber = mkOption {
default = false;
type = types.bool;

View File

@ -49,6 +49,7 @@ my $extraPrepareConfig = get("extraPrepareConfig");
my $extraPerEntryConfig = get("extraPerEntryConfig");
my $extraEntries = get("extraEntries");
my $extraEntriesBeforeNixOS = get("extraEntriesBeforeNixOS") eq "true";
my $extraInitrd = get("extraInitrd");
my $splashImage = get("splashImage");
my $configurationLimit = int(get("configurationLimit"));
my $copyKernels = get("copyKernels") eq "true";
@ -226,6 +227,13 @@ my $grubStore;
if ($copyKernels == 0) {
$grubStore = GrubFs($storePath);
}
my $extraInitrdPath;
if ($extraInitrd) {
if (! -f $extraInitrd) {
print STDERR "Warning: the specified extraInitrd " . $extraInitrd . " doesn't exist. Your system won't boot without it.\n";
}
$extraInitrdPath = GrubFs($extraInitrd);
}
# Generate the header.
my $conf .= "# Automatically generated. DO NOT EDIT THIS FILE!\n";
@ -336,6 +344,9 @@ sub addEntry {
my $kernel = copyToKernelsDir(Cwd::abs_path("$path/kernel"));
my $initrd = copyToKernelsDir(Cwd::abs_path("$path/initrd"));
if ($extraInitrd) {
$initrd .= " " .$extraInitrdPath->path;
}
my $xen = -e "$path/xen.gz" ? copyToKernelsDir(Cwd::abs_path("$path/xen.gz")) : undef;
# FIXME: $confName
@ -358,6 +369,9 @@ sub addEntry {
if ($copyKernels == 0) {
$conf .= $grubStore->search . "\n";
}
if ($extraInitrd) {
$conf .= $extraInitrdPath->search . "\n";
}
$conf .= " $extraPerEntryConfig\n" if $extraPerEntryConfig;
$conf .= " multiboot $xen $xenParams\n" if $xen;
$conf .= " " . ($xen ? "module" : "linux") . " $kernel $kernelParams\n";

View File

@ -101,11 +101,27 @@ def main():
parser.add_argument('default_config', metavar='DEFAULT-CONFIG', help='The default NixOS config to boot')
args = parser.parse_args()
try:
with open("/etc/machine-id") as machine_file:
machine_id = machine_file.readlines()[0]
except IOError as e:
if e.errno != errno.ENOENT:
raise
# Since systemd version 232 a machine ID is required and it might not
# be there on newly installed systems, so let's generate one so that
# bootctl can find it and we can also pass it to write_entry() later.
cmd = ["@systemd@/bin/systemd-machine-id-setup", "--print"]
machine_id = subprocess.check_output(cmd).rstrip()
if os.getenv("NIXOS_INSTALL_GRUB") == "1":
warnings.warn("NIXOS_INSTALL_GRUB env var deprecated, use NIXOS_INSTALL_BOOTLOADER", DeprecationWarning)
os.environ["NIXOS_INSTALL_BOOTLOADER"] = "1"
if os.getenv("NIXOS_INSTALL_BOOTLOADER") == "1":
# bootctl uses fopen() with modes "wxe" and fails if the file exists.
if os.path.exists("@efiSysMountPoint@/loader/loader.conf"):
os.unlink("@efiSysMountPoint@/loader/loader.conf")
if "@canTouchEfiVariables@" == "1":
subprocess.check_call(["@systemd@/bin/bootctl", "--path=@efiSysMountPoint@", "install"])
else:
@ -113,13 +129,6 @@ def main():
mkdir_p("@efiSysMountPoint@/efi/nixos")
mkdir_p("@efiSysMountPoint@/loader/entries")
try:
with open("/etc/machine-id") as machine_file:
machine_id = machine_file.readlines()[0]
except IOError as e:
if e.errno != errno.ENOENT:
raise
machine_id = None
gens = get_generations("system")
remove_old_entries(gens)

View File

@ -79,7 +79,7 @@ let
checkBond = checkUnitConfig "Bond" [
(assertOnlyFields [
"Mode" "TransmitHashPolicy" "LACPTransmitRate" "MIIMonitorSec"
"UpDelaySec" "DownDelaySec"
"UpDelaySec" "DownDelaySec" "GratuitousARP"
])
(assertValueOneOf "Mode" [
"balance-rr" "active-backup" "balance-xor"

View File

@ -37,31 +37,41 @@ let
ip link del "${i}" 2>/dev/null || true
'';
in
# warn that these attributes are deprecated (2017-2-2)
# Should be removed in the release after next
bondDeprecation = rec {
deprecated = [ "lacp_rate" "miimon" "mode" "xmit_hash_policy" ];
filterDeprecated = bond: (filterAttrs (attrName: attr:
elem attrName deprecated && attr != null) bond);
};
{
bondWarnings =
let oneBondWarnings = bondName: bond:
mapAttrsToList (bondText bondName) (bondDeprecation.filterDeprecated bond);
bondText = bondName: optName: _:
"${bondName}.${optName} is deprecated, use ${bondName}.driverOptions";
in {
warnings = flatten (mapAttrsToList oneBondWarnings cfg.bonds);
};
config = mkIf (!cfg.useNetworkd) {
normalConfig = {
systemd.services =
let
deviceDependency = dev:
if (config.boot.isContainer == false)
then
# Trust udev when not in the container
optional (dev != null) (subsystemDevice dev)
else
# When in the container, check whether the interface is built from other definitions
if (hasAttr dev cfg.bridges) ||
(hasAttr dev cfg.bonds) ||
(hasAttr dev cfg.macvlans) ||
(hasAttr dev cfg.sits) ||
(hasAttr dev cfg.vlans) ||
(hasAttr dev cfg.vswitches) ||
(hasAttr dev cfg.wlanInterfaces)
then [ "${dev}-netdev.service" ]
else [];
# Use systemd service if we manage device creation, else
# trust udev when not in a container
if (hasAttr dev (filterAttrs (k: v: v.virtual) cfg.interfaces)) ||
(hasAttr dev cfg.bridges) ||
(hasAttr dev cfg.bonds) ||
(hasAttr dev cfg.macvlans) ||
(hasAttr dev cfg.sits) ||
(hasAttr dev cfg.vlans) ||
(hasAttr dev cfg.vswitches) ||
(hasAttr dev cfg.wlanInterfaces)
then [ "${dev}-netdev.service" ]
else optional (dev != null && !config.boot.isContainer) (subsystemDevice dev);
networkLocalCommands = {
after = [ "network-setup.service" ];
@ -198,7 +208,7 @@ in
user "${i.virtualOwner}"
'';
postStop = ''
ip link del ${i.name}
ip link del ${i.name} || true
'';
};
@ -296,10 +306,11 @@ in
echo "Creating new bond ${n}..."
ip link add name "${n}" type bond \
${optionalString (v.mode != null) "mode ${toString v.mode}"} \
${optionalString (v.miimon != null) "miimon ${toString v.miimon}"} \
${optionalString (v.xmit_hash_policy != null) "xmit_hash_policy ${toString v.xmit_hash_policy}"} \
${optionalString (v.lacp_rate != null) "lacp_rate ${toString v.lacp_rate}"}
${let opts = (mapAttrs (const toString)
(bondDeprecation.filterDeprecated v))
// v.driverOptions;
in concatStringsSep "\n"
(mapAttrsToList (set: val: " ${set} ${val} \\") opts)}
# !!! There must be a better way to wait for the interface
while [ ! -d "/sys/class/net/${n}" ]; do sleep 0.1; done;
@ -335,7 +346,7 @@ in
ip link set "${n}" up
'';
postStop = ''
ip link delete "${n}"
ip link delete "${n}" || true
'';
});
@ -363,7 +374,7 @@ in
ip link set "${n}" up
'';
postStop = ''
ip link delete "${n}"
ip link delete "${n}" || true
'';
});
@ -387,7 +398,7 @@ in
ip link set "${n}" up
'';
postStop = ''
ip link delete "${n}"
ip link delete "${n}" || true
'';
});
@ -410,6 +421,14 @@ in
KERNEL=="tun", TAG+="systemd"
'';
};
in
{
config = mkMerge [
bondWarnings
(mkIf (!cfg.useNetworkd) normalConfig)
];
}

View File

@ -115,17 +115,65 @@ in
Name = name;
Kind = "bond";
};
bondConfig =
(optionalAttrs (bond.lacp_rate != null) {
LACPTransmitRate = bond.lacp_rate;
}) // (optionalAttrs (bond.miimon != null) {
MIIMonitorSec = bond.miimon;
}) // (optionalAttrs (bond.mode != null) {
Mode = bond.mode;
}) // (optionalAttrs (bond.xmit_hash_policy != null) {
TransmitHashPolicy = bond.xmit_hash_policy;
});
bondConfig = let
# manual mapping as of 2017-02-03
# man 5 systemd.netdev [BOND]
# to https://www.kernel.org/doc/Documentation/networking/bonding.txt
# driver options.
driverOptionMapping = let
trans = f: optName: { valTransform = f; optNames = [optName]; };
simp = trans id;
ms = trans (v: v + "ms");
in {
Mode = simp "mode";
TransmitHashPolicy = simp "xmit_hash_policy";
LACPTransmitRate = simp "lacp_rate";
MIIMonitorSec = ms "miimon";
UpDelaySec = ms "updelay";
DownDelaySec = ms "downdelay";
LearnPacketIntervalSec = simp "lp_interval";
AdSelect = simp "ad_select";
FailOverMACPolicy = simp "fail_over_mac";
ARPValidate = simp "arp_validate";
# apparently in ms for this value?! Upstream bug?
ARPIntervalSec = simp "arp_interval";
ARPIPTargets = simp "arp_ip_target";
ARPAllTargets = simp "arp_all_targets";
PrimaryReselectPolicy = simp "primary_reselect";
ResendIGMP = simp "resend_igmp";
PacketsPerSlave = simp "packets_per_slave";
GratuitousARP = { valTransform = id;
optNames = [ "num_grat_arp" "num_unsol_na" ]; };
AllSlavesActive = simp "all_slaves_active";
MinLinks = simp "min_links";
};
do = bond.driverOptions;
assertNoUnknownOption = let
knownOptions = flatten (mapAttrsToList (_: kOpts: kOpts.optNames)
driverOptionMapping);
# options that apparently dont exist in the networkd config
unknownOptions = [ "primary" ];
assertTrace = bool: msg: if bool then true else builtins.trace msg false;
in assert all (driverOpt: assertTrace
(elem driverOpt (knownOptions ++ unknownOptions))
"The bond.driverOption `${driverOpt}` cannot be mapped to the list of known networkd bond options. Please add it to the mapping above the assert or to `unknownOptions` should it not exist in networkd.")
(mapAttrsToList (k: _: k) do); "";
# get those driverOptions that have been set
filterSystemdOptions = filterAttrs (sysDOpt: kOpts:
any (kOpt: do ? "${kOpt}") kOpts.optNames);
# build final set of systemd options to bond values
buildOptionSet = mapAttrs (_: kOpts: with kOpts;
# we simply take the first set kernel bond option
# (one option has multiple names, which is silly)
head (map (optN: valTransform (do."${optN}"))
# only map those that exist
(filter (o: do ? "${o}") optNames)));
in seq assertNoUnknownOption
(buildOptionSet (filterSystemdOptions driverOptionMapping));
};
networks = listToAttrs (flip map bond.interfaces (bi:
nameValuePair "40-${bi}" (mkMerge [ (genericNetwork (mkOverride 999)) {
DHCP = mkOverride 0 (dhcpStr false);

View File

@ -587,11 +587,28 @@ in
description = "The interfaces to bond together";
};
driverOptions = mkOption {
type = types.attrsOf types.str;
default = {};
example = literalExample {
interfaces = [ "eth0" "wlan0" ];
miimon = 100;
mode = "active-backup";
};
description = ''
Options for the bonding driver.
Documentation can be found in
<link xlink:href="https://www.kernel.org/doc/Documentation/networking/bonding.txt" />
'';
};
lacp_rate = mkOption {
default = null;
example = "fast";
type = types.nullOr types.str;
description = ''
DEPRECATED, use `driverOptions`.
Option specifying the rate in which we'll ask our link partner
to transmit LACPDU packets in 802.3ad mode.
'';
@ -602,6 +619,7 @@ in
example = 100;
type = types.nullOr types.int;
description = ''
DEPRECATED, use `driverOptions`.
Miimon is the number of millisecond in between each round of polling
by the device driver for failed links. By default polling is not
enabled and the driver is trusted to properly detect and handle
@ -614,6 +632,7 @@ in
example = "active-backup";
type = types.nullOr types.str;
description = ''
DEPRECATED, use `driverOptions`.
The mode which the bond will be running. The default mode for
the bonding driver is balance-rr, optimizing for throughput.
More information about valid modes can be found at
@ -626,6 +645,7 @@ in
example = "layer2+3";
type = types.nullOr types.str;
description = ''
DEPRECATED, use `driverOptions`.
Selects the transmit hash policy to use for slave selection in
balance-xor, 802.3ad, and tlb modes.
'';

View File

@ -156,6 +156,10 @@ let self = {
"16.09".ap-southeast-2.hvm-s3 = "ami-87f4f0e4";
"16.09".ap-southeast-2.pv-ebs = "ami-d8ede9bb";
"16.09".ap-southeast-2.pv-s3 = "ami-a6ebefc5";
"16.09".ca-central-1.hvm-ebs = "ami-9f863bfb";
"16.09".ca-central-1.hvm-s3 = "ami-ea85388e";
"16.09".ca-central-1.pv-ebs = "ami-ce8a37aa";
"16.09".ca-central-1.pv-s3 = "ami-448a3720";
"16.09".eu-central-1.hvm-ebs = "ami-1b884774";
"16.09".eu-central-1.hvm-s3 = "ami-b08c43df";
"16.09".eu-central-1.pv-ebs = "ami-888946e7";

View File

@ -236,8 +236,8 @@ let
firewall.allowPing = true;
useDHCP = false;
bonds.bond = {
mode = "balance-rr";
interfaces = [ "eth1" "eth2" ];
driverOptions.mode = "balance-rr";
};
interfaces.eth1.ip4 = mkOverride 0 [ ];
interfaces.eth2.ip4 = mkOverride 0 [ ];

View File

@ -1,4 +1,62 @@
import ./make-test.nix {
import ./make-test.nix ({ pkgs, ... }: let
snakeOil = pkgs.runCommand "snakeoil-certs" {
outputs = [ "out" "cacert" "cert" "key" "crl" ];
buildInputs = [ pkgs.gnutls.bin ];
caTemplate = pkgs.writeText "snakeoil-ca.template" ''
cn = server
expiration_days = -1
cert_signing_key
ca
'';
certTemplate = pkgs.writeText "snakeoil-cert.template" ''
cn = server
expiration_days = -1
tls_www_server
encryption_key
signing_key
'';
crlTemplate = pkgs.writeText "snakeoil-crl.template" ''
expiration_days = -1
'';
userCertTemplace = pkgs.writeText "snakoil-user-cert.template" ''
organization = snakeoil
cn = server
expiration_days = -1
tls_www_client
encryption_key
signing_key
'';
} ''
certtool -p --bits 4096 --outfile ca.key
certtool -s --template "$caTemplate" --load-privkey ca.key \
--outfile "$cacert"
certtool -p --bits 4096 --outfile "$key"
certtool -c --template "$certTemplate" \
--load-ca-privkey ca.key \
--load-ca-certificate "$cacert" \
--load-privkey "$key" \
--outfile "$cert"
certtool --generate-crl --template "$crlTemplate" \
--load-ca-privkey ca.key \
--load-ca-certificate "$cacert" \
--outfile "$crl"
mkdir "$out"
# Stripping key information before the actual PEM-encoded values is solely
# to make test output a bit less verbose when copying the client key to the
# actual client.
certtool -p --bits 4096 | sed -n \
-e '/^----* *BEGIN/,/^----* *END/p' > "$out/alice.key"
certtool -c --template "$userCertTemplace" \
--load-privkey "$out/alice.key" \
--load-ca-privkey ca.key \
--load-ca-certificate "$cacert" \
--outfile "$out/alice.cert"
'';
in {
name = "taskserver";
nodes = rec {
@ -12,6 +70,23 @@ import ./make-test.nix {
};
};
# New generation of the server with manual config
newServer = { lib, nodes, ... }: {
imports = [ server ];
services.taskserver.pki.manual = {
ca.cert = snakeOil.cacert;
server.cert = snakeOil.cert;
server.key = snakeOil.key;
server.crl = snakeOil.crl;
};
# This is to avoid assigning a different network address to the new
# generation.
networking = lib.mapAttrs (lib.const lib.mkForce) {
inherit (nodes.server.config.networking)
hostName interfaces primaryIPAddress extraHosts;
};
};
client1 = { pkgs, ... }: {
environment.systemPackages = [ pkgs.taskwarrior pkgs.gnutls ];
users.users.alice.isNormalUser = true;
@ -26,6 +101,8 @@ import ./make-test.nix {
testScript = { nodes, ... }: let
cfg = nodes.server.config.services.taskserver;
portStr = toString cfg.listenPort;
newServerSystem = nodes.newServer.config.system.build.toplevel;
switchToNewServer = "${newServerSystem}/bin/switch-to-configuration test";
in ''
sub su ($$) {
my ($user, $cmd) = @_;
@ -33,8 +110,8 @@ import ./make-test.nix {
return "su - $user -c '$esc'";
}
sub setupClientsFor ($$) {
my ($org, $user) = @_;
sub setupClientsFor ($$;$) {
my ($org, $user, $extraInit) = @_;
for my $client ($client1, $client2) {
$client->nest("initialize client for user $user", sub {
@ -58,6 +135,8 @@ import ./make-test.nix {
}
});
eval { &$extraInit($client, $org, $user) };
$client->succeed(su $user,
"task config taskd.server server:${portStr} >&2"
);
@ -104,7 +183,10 @@ import ./make-test.nix {
return su $user, $cmd;
}
startAll;
# Explicitly start the VMs so that we don't accidentally start newServer
$server->start;
$client1->start;
$client2->start;
$server->waitForUnit("taskserver.service");
@ -162,5 +244,42 @@ import ./make-test.nix {
restartServer;
testSync "bar";
};
subtest "check manual configuration", sub {
$server->succeed('${switchToNewServer} >&2');
$server->waitForUnit("taskserver.service");
$server->waitForOpenPort(${portStr});
$server->succeed(
"nixos-taskserver org add manualOrg",
"nixos-taskserver user add manualOrg alice"
);
setupClientsFor "manualOrg", "alice", sub {
my ($client, $org, $user) = @_;
my $cfgpath = "/home/$user/.task";
$client->copyFileFromHost("${snakeOil.cacert}", "$cfgpath/ca.cert");
for my $file ('alice.key', 'alice.cert') {
$client->copyFileFromHost("${snakeOil}/$file", "$cfgpath/$file");
}
for my $file ("$user.key", "$user.cert") {
$client->copyFileFromHost(
"${snakeOil}/$file", "$cfgpath/$file"
);
}
$client->copyFileFromHost(
"${snakeOil.cacert}", "$cfgpath/ca.cert"
);
$client->succeed(
(su "alice", "task config taskd.ca $cfgpath/ca.cert"),
(su "alice", "task config taskd.key $cfgpath/$user.key"),
(su $user, "task config taskd.certificate $cfgpath/$user.cert")
);
};
testSync "alice";
};
'';
}
})

View File

@ -1,4 +1,5 @@
{ stdenv, fetchFromGitHub, ncurses, pkgconfig
{ stdenv, fetchFromGitHub, runCommand, ncurses, pkgconfig
, libiconv, CoreAudio
, alsaSupport ? stdenv.isLinux, alsaLib ? null
# simple fallback for everyone else
@ -18,7 +19,7 @@
, cddbSupport ? true, libcddb ? null
, cdioSupport ? true, libcdio ? null
, cueSupport ? true, libcue ? null
, discidSupport ? true, libdiscid ? null
, discidSupport ? (!stdenv.isDarwin), libdiscid ? null
, ffmpegSupport ? true, ffmpeg ? null
, flacSupport ? true, flac ? null
, madSupport ? true, libmad ? null
@ -89,6 +90,13 @@ let
#(mkFlag vtxSupport "CONFIG_VTX=y" libayemu)
];
clangGCC = runCommand "clang-gcc" {} ''
#! ${stdenv.shell}
mkdir -p $out/bin
ln -s ${stdenv.cc}/bin/clang $out/bin/gcc
ln -s ${stdenv.cc}/bin/clang++ $out/bin/g++
'';
in
stdenv.mkDerivation rec {
@ -109,13 +117,16 @@ stdenv.mkDerivation rec {
"CONFIG_WAV=y"
] ++ concatMap (a: a.flags) opts);
buildInputs = [ ncurses pkgconfig ] ++ concatMap (a: a.deps) opts;
buildInputs = [ ncurses pkgconfig ]
++ stdenv.lib.optional stdenv.cc.isClang clangGCC
++ stdenv.lib.optionals stdenv.isDarwin [ libiconv CoreAudio ]
++ concatMap (a: a.deps) opts;
meta = {
meta = with stdenv.lib; {
description = "Small, fast and powerful console music player for Linux and *BSD";
homepage = https://cmus.github.io/;
license = stdenv.lib.licenses.gpl2;
maintainers = [ stdenv.lib.maintainers.oxij ];
platforms = stdenv.lib.platforms.linux;
license = licenses.gpl2;
maintainers = [ maintainers.oxij ];
platforms = platforms.linux ++ platforms.darwin;
};
}

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "atom-${version}";
version = "1.14.1";
version = "1.14.3";
src = fetchurl {
url = "https://github.com/atom/atom/releases/download/v${version}/atom-amd64.deb";
sha256 = "0dmzqz1j2nfcm459zgfzqym26kmbspdn9lipf77aawbbn2y36xqp";
sha256 = "16zc1bbvxs9fpd9y3mzgbl789djp3p1664a8b2nn9ann1mbkdgsk";
name = "${name}.deb";
};

View File

@ -304,12 +304,12 @@ in
webstorm = buildWebStorm rec {
name = "webstorm-${version}";
version = "2016.3.2";
version = "2016.3.3";
description = "Professional IDE for Web and JavaScript development";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/webstorm/WebStorm-${version}.tar.gz";
sha256 = "1h3kjvd10j48n9ch2ldqjsizq5n8gkm0vrrvznayc1bz2kjvhavn";
sha256 = "08f266afi8ia5jvvgk2lncra2n3i0l5c3h7c8fwxz6y8fhhlas4y";
};
wmClass = "jetbrains-webstorm";
};

View File

@ -24,12 +24,12 @@ let
unwrapped =
kdeDerivation rec {
name = "kile-${version}";
version = "2016-10-24";
version = "2017-02-09";
src = fetchgit {
url = git://anongit.kde.org/kile.git;
rev = "e005e2ac140881aa7610bd363d181cf306f91f80";
sha256 = "1labv8jagsfk0k7nvxh90in9464avzdabgs215y1h658zjh1wpy4";
rev = "f77f6e627487c152f111e307ad6dc71699ade746";
sha256 = "0wpqaix9ssa28cm7qqjj0zfrscjgk8s3kmi5b4kk8h583gsrikib";
};

View File

@ -8,11 +8,12 @@
stdenv.mkDerivation rec {
name = "krita-${version}";
version = "3.1.1";
ver_min = "3.1.2";
version = "${ver_min}.1";
src = fetchurl {
url = "http://download.kde.org/stable/krita/${version}/${name}.tar.gz";
sha256 = "13qff9kdd38x81rq6yfmkm3083l8s0yn9h3d5qg3qmhrkd5jrvv2";
url = "http://download.kde.org/stable/krita/${ver_min}/${name}.tar.gz";
sha256 = "934ed82c3f4e55e7819b327c838ea2f307d3bf3d040722501378b01d76a3992d";
};
nativeBuildInputs = [ cmake extra-cmake-modules makeQtWrapper ];

View File

@ -1,78 +1,70 @@
{ withKDE ? true
, stdenv, fetchurl, gettext, poppler_qt4, qt4
# Qt only (no KDE):
, pkgconfig
# With KDE
, cmake, automoc4, kdelibs
}:
{ stdenv, fetchFromGitHub, gettext, poppler_qt5, qt5 , pkgconfig }:
# Warning: You will also need a working pdflatex installation containing (at
# least) auctex and pgf.
# Warning: You will also need a working pdflatex installation containing
# at least auctex and pgf.
assert withKDE -> kdelibs != null;
# This package only builds ktikz without KDE integration because KDE4 is
# deprecated and upstream does not (yet ?) support KDE5.
# See historical versions of this file for building ktikz with KDE4.
let
version = "0.10";
stdenv.mkDerivation rec {
version = "unstable-20161122";
name = "qtikz-${version}";
qtikz = {
name = "qtikz-${version}";
src = fetchFromGitHub {
owner = "fhackenberger";
repo = "ktikz";
rev = "be66c8b1ff7e6b791b65af65e83c4926f307cf5a";
sha256 = "15jx53sjlnky4yg3ry1i1c29g28v1jbbvhbz66h7a49pfxa40fj3";
};
conf = ''
# installation prefix:
#PREFIX = ""
meta = with stdenv.lib; {
description = "Editor for the TikZ language";
license = licenses.gpl2;
platforms = platforms.linux;
maintainers = [ maintainers.layus ];
};
# install desktop file here (*nix only):
DESKTOPDIR = ''$''${PREFIX}/share/applications
conf = ''
# installation prefix:
PREFIX = @out@
# install mimetype here:
MIMEDIR = ''$''${PREFIX}/share/mime/packages
# install desktop file here (*nix only):
DESKTOP_INSTALL_DIR = @out@/share/applications
CONFIG -= debug
CONFIG += release
# install mimetype here:
MIME_INSTALL_DIR = @out@/share/mime/packages
# qmake command:
QMAKECOMMAND = qmake
# lrelease command:
LRELEASECOMMAND = lrelease
# qcollectiongenerator command:
#QCOLLECTIONGENERATORCOMMAND = qcollectiongenerator
# install doc here:
MAN_INSTALL_DIR = @out@/share/man
# TikZ documentation default file path:
TIKZ_DOCUMENTATION_DEFAULT = ''$''${PREFIX}/share/doc/texmf/pgf/pgfmanual.pdf.gz
'';
CONFIG -= debug
CONFIG += release
patchPhase = ''
echo "$conf" > conf.pri
'';
# qmake command:
QMAKECOMMAND = qmake
# lrelease command:
LRELEASECOMMAND = lrelease
# qcollectiongenerator command:
#QCOLLECTIONGENERATORCOMMAND = qcollectiongenerator
configurePhase = ''
# TikZ documentation default file path:
TIKZ_DOCUMENTATION_DEFAULT = @out@/share/doc/texmf/pgf/pgfmanual.pdf.gz
'';
# 1. Configuration is done by overwriting qtikzconfig.pri
# 2. Recent Qt removed QString::fromAscii in favor of QString::fromLatin1
patchPhase = ''
echo "$conf" | sed "s!@out@!$out!g" > qmake/qtikzconfig.pri
find -name "*.cpp" -exec sed -i s/fromAscii/fromLatin1/g "{}" \;
'';
configurePhase = ''
qmake PREFIX="$out" ./qtikz.pro
'';
'';
buildInputs = [ gettext qt4 poppler_qt4 pkgconfig ];
};
buildInputs = [ gettext qt5.full poppler_qt5 pkgconfig ];
ktikz = {
name = "ktikz-${version}";
buildInputs = [ kdelibs cmake qt4 automoc4 gettext poppler_qt4 ];
};
common = {
inherit version;
src = fetchurl {
url = "http://www.hackenberger.at/ktikz/ktikz_${version}.tar.gz";
sha256 = "19jl49r7dw3vb3hg52man8p2lszh71pvnx7d0xawyyi0x6r8ml9i";
};
enableParallelBuilding = true;
meta = with stdenv.lib; {
description = "Editor for the TikZ language";
license = licenses.gpl2;
platforms = platforms.linux;
maintainers = [ maintainers.layus ];
};
};
in stdenv.mkDerivation (common // (if withKDE then ktikz else qtikz))
enableParallelBuilding = true;
}

View File

@ -0,0 +1,21 @@
{ stdenv, fetchFromGitHub, pythonPackages }:
pythonPackages.buildPythonApplication rec {
name = "antfs-cli-unstable-2017-02-11";
meta = with stdenv.lib; {
homepage = "https://github.com/Tigge/antfs-cli";
description = "Extracts FIT files from ANT-FS based sport watches";
license = licenses.mit;
platforms = platforms.linux;
};
src = fetchFromGitHub {
owner = "Tigge";
repo = "antfs-cli";
rev = "85a6cc6fe6fc0ec38399f5aa30fb39177c565b52";
sha256 = "0v8y64kldfbs809j1g9d75dd1vxq7mfxnp4b45pz8anpxhjf64fy";
};
propagatedBuildInputs = [ pythonPackages.openant ];
}

View File

@ -2,14 +2,14 @@
}:
with pythonPackages; buildPythonApplication rec {
version = "2.7";
version = "2.8";
name = "buku-${version}";
src = fetchFromGitHub {
owner = "jarun";
repo = "buku";
rev = "v${version}";
sha256 = "1hb5283xaz1ll3iv5542i6f9qshrdgg33dg7gvghz0fwdh8i0jbk";
sha256 = "1gazvij0072lca0jh84i8mhnaxiwg56hcxmrmk2clxd2x213zyjm";
};
buildInputs = [

View File

@ -5,12 +5,12 @@
}:
stdenv.mkDerivation rec {
version = "2.76.0";
version = "2.79.1";
name = "calibre-${version}";
src = fetchurl {
url = "https://download.calibre-ebook.com/${version}/${name}.tar.xz";
sha256 = "1xfm586n6gm44mkyn25mbiyhj6w9ji9yl6fvmnr4zk1q6qcga3v8";
sha256 = "0slk3cili50a8kwwsk6syqqrcz0yx8yjvhm8gyggn2k2kpqjax15";
};
patches = [

View File

@ -1,13 +1,8 @@
Author: Dmitry Shachnev <mitya57@gmail.com>
Description: do not build unrar extension as we strip unrar from the tarball
Forwarded: not-needed
Last-Update: 2013-04-04
Index: calibre/setup/extensions.json
===================================================================
--- calibre.orig/setup/extensions.json
+++ calibre/setup/extensions.json
@@ -211,14 +211,5 @@
diff --git a/setup/extensions.json b/setup/extensions.json
index 1f6d1fb..1273904 100644
--- a/setup/extensions.json
+++ b/setup/extensions.json
@@ -211,16 +211,5 @@
"sources": "calibre/devices/mtp/unix/devices.c calibre/devices/mtp/unix/libmtp.c",
"headers": "calibre/devices/mtp/unix/devices.h calibre/devices/mtp/unix/upstream/music-players.h calibre/devices/mtp/unix/upstream/device-flags.h",
"libraries": "mtp"
@ -18,15 +13,17 @@ Index: calibre/setup/extensions.json
- "inc_dirs": "unrar",
- "defines": "SILENT RARDLL UNRAR _FILE_OFFSET_BITS=64 _LARGEFILE_SOURCE",
- "windows_defines": "SILENT RARDLL UNRAR",
- "haiku_defines": "LITTLE_ENDIAN SILENT RARDLL UNRAR _FILE_OFFSET_BITS=64 _LARGEFILE_SOURCE _BSD_SOURCE",
- "haiku_libraries": "bsd",
- "optimize_level": 2,
- "windows_libraries": "User32 Advapi32 kernel32 Shell32"
}
]
Index: calibre/src/calibre/ebooks/metadata/archive.py
===================================================================
--- calibre.orig/src/calibre/ebooks/metadata/archive.py 2014-02-02 10:42:14.510954007 +0100
+++ calibre/src/calibre/ebooks/metadata/archive.py 2014-02-02 10:42:14.502954007 +0100
@@ -42,7 +42,7 @@
diff --git a/src/calibre/ebooks/metadata/archive.py b/src/calibre/ebooks/metadata/archive.py
index 938ab24..1e095f8 100644
--- a/src/calibre/ebooks/metadata/archive.py
+++ b/src/calibre/ebooks/metadata/archive.py
@@ -44,7 +44,7 @@ class ArchiveExtract(FileTypePlugin):
description = _('Extract common e-book formats from archives '
'(zip/rar) files. Also try to autodetect if they are actually '
'cbz/cbr files.')

View File

@ -1,7 +1,7 @@
{ stdenv, fetchurl, readline, ncurses }:
let
version = "1.19";
version = "1.22";
in
stdenv.mkDerivation rec {
@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
src = fetchurl {
url = "https://github.com/dvorka/hstr/releases/download/${version}/hh-${version}-src.tgz";
sha256 = "0ix6550l9si29j8vz375vzjmp22i19ik5dq2nh7zsj2ra7ibaz5n";
sha256 = "09rh510x8qc5jbpnfzazbv9wc3bqmf5asydcl2wijpqm5bi21iqp";
};
buildInputs = [ readline ncurses ];

View File

@ -16,11 +16,11 @@
stdenv.mkDerivation rec {
name = "kdeconnect-${version}";
version = "1.0";
version = "1.0.3";
src = fetchurl {
url = http://download.kde.org/stable/kdeconnect/1.0/src/kdeconnect-kde-1.0.tar.xz;
sha256 = "0pd8qw0w6akc7yzmsr0sjkfj3nw6rgm5xvq41g61ak8pp05syzr0";
url = "http://download.kde.org/stable/kdeconnect/${version}/src/kdeconnect-kde-${version}.tar.xz";
sha256 = "0b40402adw7cqz19fh8zw70f6l7b5p400mw668n3wic4favn27r2";
};
buildInputs = [

View File

@ -8,11 +8,11 @@
# plugin derivations in the Nix store and nowhere else.
with builtins; buildDotnetPackage rec {
baseName = "keepass";
version = "2.34";
version = "2.35";
src = fetchurl {
url = "mirror://sourceforge/keepass/KeePass-${version}-Source.zip";
sha256 = "e3f184e4deddd1aa5ee2b52e2373c772d3f3975e5eddb2fd729eb27b437011aa";
sha256 = "1pv3x1lr2kymjpm6z26fqx997jivzy0diqsysq4diygj38wdkajz";
};
sourceRoot = ".";

View File

@ -3,13 +3,12 @@
with python3Packages;
buildPythonApplication rec {
# Reenable tests for 0.9.0, they are broken at the moment: #15981
version = "0.8.4";
version = "0.9.2";
name = "khal-${version}";
src = fetchurl {
url = "mirror://pypi/k/khal/khal-${version}.tar.gz";
sha256 = "03vy4dp9n43w51mwqjjy08dr5nj7wxqnb085visz3j43vzm42p1f";
sha256 = "1ryh5c7408w8gpql5s9mkxkvz1ngnds3xm43p7r96ynx8prr9swp";
};
LC_ALL = "en_US.UTF-8";

View File

@ -1,13 +1,13 @@
{ stdenv, fetchurl, glibcLocales, python3Packages }:
{ stdenv, fetchurl, fetchFromGitHub, glibcLocales, python3Packages }:
python3Packages.buildPythonApplication rec {
version = "0.11.1";
version = "0.11.4";
name = "khard-${version}";
namePrefix = "";
src = fetchurl {
url = "https://github.com/scheibler/khard/archive/v${version}.tar.gz";
sha256 = "0055xx9icmsr6l7v0iqrndmygygdpdv10550w6pyrb96svzhry27";
sha256 = "1hngg3z5cdjny7wdf2mf9wv35ffx7ivpq6mx7kgqf40fr5905l0r";
};
# setup.py reads the UTF-8 encoded readme.

View File

@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
sha256 = "0v9xgpcf186ni55rkmx008msyszw0ypd6rd98hgwpih8yv3pymfy";
};
buildInputs = [ ncurses gsl ] ++ (with ocamlPackages; [ ocaml ]);
buildInputs = [ ncurses gsl ] ++ (with ocamlPackages; [ ocaml camlp4 ]);
meta = {
homepage = http://pessimization.com/software/orpie/;

View File

@ -0,0 +1,60 @@
{ cairo, cmake, fetchgit, libXdmcp, libpthreadstubs, libxcb, pcre, pkgconfig
, python2 , stdenv, xcbproto, xcbutil, xcbutilimage, xcbutilrenderutil
, xcbutilwm, xcbutilxrm
# optional packages-- override the variables ending in 'Support' to enable or
# disable modules
, alsaSupport ? true, alsaLib ? null
, iwSupport ? true, wirelesstools ? null
, githubSupport ? false, curl ? null
, mpdSupport ? false, mpd_clientlib ? null
, i3Support ? false, i3GapsSupport ? false, i3 ? null, i3-gaps ? null, jsoncpp ? null
}:
assert alsaSupport -> alsaLib != null;
assert githubSupport -> curl != null;
assert iwSupport -> wirelesstools != null;
assert mpdSupport -> mpd_clientlib != null;
assert i3Support -> ! i3GapsSupport && jsoncpp != null && i3 != null;
assert i3GapsSupport -> ! i3Support && jsoncpp != null && i3-gaps != null;
stdenv.mkDerivation rec {
name = "polybar-${version}";
version = "3.0.4";
src = fetchgit {
url = "https://github.com/jaagr/polybar";
rev = "1f31870d43f5cd87a5529a55b1d2d3e64105e0af";
sha256 = "1nhj4npqhs6zy161931sbdi52gz6163lik0wri9wr122sjf90jas";
};
meta = with stdenv.lib; {
description = "A fast and easy-to-use tool for creatin status bars.";
longDescription = ''
Polybar aims to help users build beautiful and highly customizable
status bars for their desktop environment, without the need of
having a black belt in shell scripting.
'';
license = licenses.mit;
maintainers = [ maintainers.afldcr ];
platforms = platforms.unix;
};
buildInputs = [
cairo libXdmcp libpthreadstubs libxcb pcre python2 xcbproto xcbutil
xcbutilimage xcbutilrenderutil xcbutilwm xcbutilxrm
(if alsaSupport then alsaLib else null)
(if githubSupport then curl else null)
(if iwSupport then wirelesstools else null)
(if mpdSupport then mpd_clientlib else null)
(if i3Support || i3GapsSupport then jsoncpp else null)
(if i3Support then i3 else null)
(if i3GapsSupport then i3-gaps else null)
];
nativeBuildInputs = [
cmake pkgconfig
];
}

View File

@ -1,5 +1,5 @@
{ lib, stdenv, fetchurl, fetchcvs, makeWrapper, makeDesktopItem, jdk, jre, ant
, gtk3, gsettings_desktop_schemas, p7zip }:
, gtk3, gsettings_desktop_schemas, p7zip, libXxf86vm }:
let
@ -29,6 +29,13 @@ let
categories = "Application;Graphics;2DGraphics;3DGraphics;";
};
patchPhase = ''
patchelf --set-rpath ${libXxf86vm}/lib lib/java3d-1.6/linux/amd64/libnativewindow_awt.so
patchelf --set-rpath ${libXxf86vm}/lib lib/java3d-1.6/linux/amd64/libnativewindow_x11.so
patchelf --set-rpath ${libXxf86vm}/lib lib/java3d-1.6/linux/i586/libnativewindow_awt.so
patchelf --set-rpath ${libXxf86vm}/lib lib/java3d-1.6/linux/i586/libnativewindow_x11.so
'';
buildInputs = [ ant jdk jre makeWrapper p7zip gtk3 gsettings_desktop_schemas ];
buildPhase = ''

View File

@ -1,18 +1,18 @@
{pkgs, stdenv, xorg, fetchurl }:
{ stdenv, libX11, fetchurl }:
stdenv.mkDerivation rec {
name = "worker";
name = "worker-${version}";
version = "3.8.5";
src = fetchurl {
url = "http://www.boomerangsworld.de/cms/worker/downloads/${name}-${version}.tar.gz";
url = "http://www.boomerangsworld.de/cms/worker/downloads/${name}.tar.gz";
sha256 = "1xy02jdf60wg2jycinl6682xg4zvphdj80f8xgs26ip45iqgkmvw";
};
buildInputs = with pkgs; [ xorg.libX11 ];
buildInputs = [ libX11 ];
meta = with stdenv.lib; {
description = "a two-pane file manager with advanced file manipulation features";
description = "A two-pane file manager with advanced file manipulation features";
homepage = "http://www.boomerangsworld.de/cms/worker/index.html";
license = licenses.gpl2;
maintainers = [ maintainers.ndowens ];

View File

@ -1,4 +1,4 @@
{ stdenv, gn, ninja, which
{ stdenv, ninja, which
# default dependencies
, bzip2, flac, speex, libopus
@ -20,7 +20,6 @@
, libexif ? null # only needed for Chromium before version 51
# package customization
, enableSELinux ? false, libselinux ? null
, enableNaCl ? false
, enableHotwording ? false
, enableWideVine ? false
@ -86,7 +85,10 @@ let
src = upstream-info.main;
nativeBuildInputs = [ gn which python2Packages.python perl pkgconfig ];
nativeBuildInputs = [
ninja which python2Packages.python perl pkgconfig
python2Packages.ply python2Packages.jinja2
];
buildInputs = defaultDependencies ++ [
nspr nss systemd
@ -95,18 +97,16 @@ let
glib gtk2 dbus_glib
libXScrnSaver libXcursor libXtst mesa
pciutils protobuf speechd libXdamage
python2Packages.ply python2Packages.jinja2
] ++ optional gnomeKeyringSupport libgnome_keyring3
++ optionals gnomeSupport [ gnome.GConf libgcrypt ]
++ optional enableSELinux libselinux
++ optionals cupsSupport [ libgcrypt cups ]
++ optional pulseSupport libpulseaudio
++ optional (versionAtLeast version "56.0.0.0") gtk3;
patches = [
./patches/glibc-2.24.patch
./patches/nix_plugin_paths_52.patch
] ++ optional enableWideVine ./patches/widevine.patch;
] ++ optional (versionOlder version "57.0") ./patches/glibc-2.24.patch
++ optional enableWideVine ./patches/widevine.patch;
postPatch = ''
# We want to be able to specify where the sandbox is via CHROME_DEVEL_SANDBOX
@ -137,8 +137,8 @@ let
gnFlags = mkGnFlags ({
linux_use_bundled_binutils = false;
linux_use_bundled_gold = false;
linux_use_gold_flags = true;
use_gold = true;
gold_path = "${stdenv.cc}/bin";
is_debug = false;
proprietary_codecs = false;
@ -149,7 +149,6 @@ let
enable_nacl = enableNaCl;
enable_hotwording = enableHotwording;
enable_widevine = enableWideVine;
selinux = enableSELinux;
use_cups = cupsSupport;
} // {
treat_warnings_as_errors = false;
@ -173,16 +172,24 @@ let
} // (extraAttrs.gnFlags or {}));
configurePhase = ''
runHook preConfigure
# Build gn
python tools/gn/bootstrap/bootstrap.py -v -s --no-clean
PATH="$PWD/out/Release:$PATH"
# This is to ensure expansion of $out.
libExecPath="${libExecPath}"
python build/linux/unbundle/replace_gn_files.py \
--system-libraries ${toString gnSystemLibraries}
gn gen --args=${escapeShellArg gnFlags} out/Release
runHook postConfigure
'';
buildPhase = let
buildCommand = target: ''
"${ninja}/bin/ninja" -C "${buildPath}" \
ninja -C "${buildPath}" \
-j$NIX_BUILD_CORES -l$NIX_BUILD_CORES \
"${target}"
'' + optionalString (target == "mksnapshot" || target == "chrome") ''

View File

@ -2,7 +2,6 @@
# package customization
, channel ? "stable"
, enableSELinux ? false
, enableNaCl ? false
, enableHotwording ? false
, gnomeSupport ? false, gnome ? null
@ -22,7 +21,7 @@ let
upstream-info = (callPackage ./update.nix {}).getChannel channel;
mkChromiumDerivation = callPackage ./common.nix {
inherit enableSELinux enableNaCl enableHotwording gnomeSupport gnome
inherit enableNaCl enableHotwording gnomeSupport gnome
gnomeKeyringSupport proprietaryCodecs cupsSupport pulseSupport
enableWideVine;
};
@ -108,7 +107,7 @@ in stdenv.mkDerivation {
cp -v "${desktopItem}/share/applications/"* "$out/share/applications"
'';
inherit (chromium.browser) meta packageName;
inherit (chromium.browser) meta packageName version;
passthru = {
inherit (chromium) upstream-info browser;

View File

@ -1,14 +1,14 @@
# This file is autogenerated from update.sh in the same directory.
{
beta = {
sha256 = "0f1w9cba99s9hy6fdqkr39yhkay4kid72vdrgs4as5lwdci8xc6g";
sha256bin64 = "13hfkkgqywjapz01q3cy0i3ick1s24qhpl40by21c38nwbqplivw";
version = "56.0.2924.76";
sha256 = "0mwwscybips1kazl0rva3jdswfzfb7yp90ggqgk27z2ndp0qj8b3";
sha256bin64 = "17n0jcysxi99v8hwlg7f69nrs2y5z87644145a8r53l809hkvkrk";
version = "57.0.2987.21";
};
dev = {
sha256 = "0vw9l66412b9zd8v5l0i518mvfwf313gvh1ywxkf48lpjpi03qwh";
sha256bin64 = "1iagza9qjlr61149g6cmiak82898xrrhvk516xrssap2qkb6kyzp";
version = "57.0.2987.19";
sha256 = "18gsj415cdlllp95q8pv1s3hhjg8cmjb6kwrvbr5mjdvsvj0ianf";
sha256bin64 = "0z58rwz00bq61d24h8jynhzxanbh0m9wi04jbczci3681b4zyiyh";
version = "58.0.3000.4";
};
stable = {
sha256 = "1q2kg85pd6lv036w7lsss5mhiiva9rx4f0410sbn9bnazhghib4s";

View File

@ -43,6 +43,7 @@
, coreutils
, gnused
, gnugrep
, gnupg
}:
assert stdenv.isLinux;
@ -173,7 +174,7 @@ stdenv.mkDerivation {
passthru.ffmpegSupport = true;
passthru.updateScript = import ./update.nix {
inherit name writeScript xidel coreutils gnused gnugrep curl;
inherit name writeScript xidel coreutils gnused gnugrep gnupg curl;
};
meta = with stdenv.lib; {
description = "Mozilla Firefox, free web browser (binary package)";

View File

@ -0,0 +1,63 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
mQINBFWpQAQBEAC+9wVlwGLy8ILCybLesuB3KkHHK+Yt1F1PJaI30X448ttGzxCz
PQpH6BoA73uzcTReVjfCFGvM4ij6qVV2SNaTxmNBrL1uVeEUsCuGduDUQMQYRGxR
tWq5rCH48LnltKPamPiEBzrgFL3i5bYEUHO7M0lATEknG7Iaz697K/ssHREZfuuc
B4GNxXMgswZ7GTZO3VBDVEw5GwU3sUvww93TwMC29lIPCux445AxZPKr5sOVEsEn
dUB2oDMsSAoS/dZcl8F4otqfR1pXg618cU06omvq5yguWLDRV327BLmezYK0prD3
P+7qwEp8MTVmxlbkrClS5j5pR47FrJGdyupNKqLzK+7hok5kBxhsdMsdTZLd4tVR
jXf04isVO3iFFf/GKuwscOi1+ZYeB3l3sAqgFUWnjbpbHxfslTmo7BgvmjZvAH5Z
asaewF3wA06biCDJdcSkC9GmFPmN5DS5/Dkjwfj8+dZAttuSKfmQQnypUPaJ2sBu
blnJ6INpvYgsEZjV6CFG1EiDJDPu2Zxap8ep0iRMbBBZnpfZTn7SKAcurDJptxin
CRclTcdOdi1iSZ35LZW0R2FKNnGL33u1IhxU9HRLw3XuljXCOZ84RLn6M+PBc1eZ
suv1TA+Mn111yD3uDv/u/edZ/xeJccF6bYcMvUgRRZh0sgZ0ZT4b0Q6YcQARAQAB
tC9Nb3ppbGxhIFNvZnR3YXJlIFJlbGVhc2VzIDxyZWxlYXNlQG1vemlsbGEuY29t
PokCOAQTAQIAIgUCValABAIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQ
Ybe1JtmPA1NQqg//Rr6/V7uLqrIwx0UFknyNJasRJZhUkYxdGsLD18zO0Na8Ve3Q
sYpOC3ojpqaFUzpqm6KNv8eXfd/Ku7j3WGr9kPkbjZNghvy6V5Lva4JkxO6LMxKk
JYqiqF2o1Gfda8NfcK08GFy4C0L8zNwlADvmdMo4382tmHNGbTTft7BeVaRrE9xW
9eGmGQ2jYOsjxb5MsadAdZUuK8IC95ZHlUDR3gH9KqhfbQWp5Bo924Kiv+f2JUzN
rrG98eOm1Qb8F9rePzZ2DOYRJyOe4p8Gpl+kojCXNntkJgcwJ1a1yRE6wy9RzpeB
lCeoQuLS92MNne+deQZUskTZFoYXUadf6vbdfqL0nuPCKdl9lhef1QNwE30IRymt
6fhJCFffFQjGdeMfSiCHgcI8ichQbrzhBCGGR3bAHan9c2EbQ+puqG3Aa0YjX6Db
GJjWOI6A61bqSPepLCMVaXqV2mZEIaZWdZkOHjnRrU6CJdXG/+D4m1YBZwYM60eJ
kNu4eMMwMFnRsHiWf7bhqKptwuk8HyIGp2o4j8iqrFRVJEbK/ctdhA3H1AlKug9f
NrfwCfqhNCSBju97V03U26j04JMn9nrZ2UEGbpty+8ONTb38WX5/oC61BgwV8Ki4
6Lwyb7fImUzz8jE83pjh7s3+NCKvvbH+VfT12f+V/fsphN3EwGwJPTC3fX25Ag0E
ValA9AEQAK/z677fpoVUj4zQz0g60wVWf+1y2lGb8iFYICmvrJyaEra5SRkyihYA
1WmEzhN4T//tHw3UIfe646+GkY3eIQW2jY9DM2XaElmMN8k/v54nbn5oD7rNEyCT
FTvCOq5d74HH1vw96Lzay1vy45E7jPWvqfg9Se8KAnzElohTJjizyhU+0QbmPHnQ
lY8gOkT/SvRo9bFEUnqjWh0fRq+K1tdLPhcFB1scc25iFqh9IAKUGDur8jQ+SDHC
jgQlkFOg3rbqtaUOnVHPohfrBM90ZNwuneFgQY7ZFSUidCimp/EN4CXnzgjDYXUU
A42S8G86+G4KAJC22gRQo4mcVmehwHTH0glfLmUK7TEu29A1KWNL3R/R7Zdyajjp
CvUaK2A0Abj3ZE2BSDbJrVlbBVfy5kfPdZjhd3wUWqFaDHiVcImcjZRWPncllhcy
6fhqEy3ELZrkezpJjnARsVkij3GXz6oX+HVULne2w0dkTXydR6muZI/GeNtrLHmA
8B3/0/TllmLy8ChmYZVIKZ8zt1ghq3f+hFTXgtZil7eBewZgA6L+EXXK6dZj14lb
e6CMS2kungTX9stU1s42I+WRbiqiLpAxCX6qcLBOWrJwsOep2nvu5bhrPHptSfRh
F4Vs1xteVFckCWhcLgdYi/Je1XBEM+AAVa0k1FiywCg7MqlG6toLABEBAAGJBEQE
GAECAA8FAlWpQPQCGwIFCQPCZwACKQkQYbe1JtmPA1PBXSAEGQECAAYFAlWpQPQA
CgkQHGnE5V6ZBdsvxQ/6A62ZteN0b/TVfSJ51SdG66amwe2rpRX4UdSw7ifxo3qh
gEICQmXR5c09qXwl17MFJWM3FhGrbxnA5KGgeWGtqrPup4QZPKU+l2Ea2QLSJSiB
q5QqqEgZvR14Lhr/hCGhBAq9s/xbp8fbKNJj/uWiZ+uTPbt5T5rgKJ4+g3B6DNO1
rH7F70OLrd32mxZs4pSxngHRAyiMPB59yQVDsVMha0JTqC+P96itUzvnInc/9mwE
0EMiBtpDTkoBwbJVPnuv+7FjkOLn5s5u3RLH9fe8z1xnV0fPC0/ndrlNiuBpAn3z
VCsWasvW18Vz8K+CQY8Sw0Jw75edBgFoz2QMFxHfDpMJefvMadB7mdte1lKk/Im9
KFFH8Idh9b6zD0a/+Ooujukx6QpFfAVhe2sT2CIm2nmMAuAZI2cCt7SC+REn9n9M
SuIWxN8YTE3qgAUB6F3ea0O0hGlLl+z5UOfX0bNAs+ebx/P6PczJtDzeqpmRb0QX
qo55JWXLvmXT/fgjF7fNTTLsyCtV+xH6ZFKGpvGJGJMHApEbz2a0hy12RZH58eI1
ueN3Tzn8nI57+oYSsqFw/QgcdGXDonLGJsPVzIpQRg92/GXSukWF+MsCjVOilHRS
Y1wfPPmJ7+kMQ4rdXpjAhwNYJc1ff5N+omCxCKoFgYsCXlFCHFKs4JwRbTdd3Mku
qBAAlBlIjym8NyJIBltfWckuhQTX4BiBltGPNga9CpQsml519EePuLtoe5H0fTUp
4UYbL0ZzyJImQE2uw/hMNZ36bA057YtHOoP4FcPUwv6wsl5JC87UR1XFhAXb5xSU
0qdi3hWh0hm772X6CBlM8lM6GtT/fDZkSGNXMQaIs1X/O9vf8wGg+HwLJcaCvybI
4w7w1K0R7WjWZlJXutCZf8hRc0d88W/qSZYooKD9q2S7foqaJhySIaF11sH5ETvV
P3oCfGVIVhKWb0Tp2jXPXlXLeRAQA8S+4B1o5XHiM+J3SNXhPQHRGQ3VGcDn45it
g3F4xQX2Qvo4SV42NMYd6TykM/dIfQyJDOVg3CT3+nqfjCknf94SNvyZprHEPmpc
DeseoPMw8kjKNwDwPXFLxBRntPgnqVXDcNN41OH2kqx4jF7FLlRmwNpB2mFVH8xe
VuRm7h2WZRsaEoqvivhzRtESVA2um5Eg763CVTcNYlK6MD/iy8JzbMuZBrlOHr58
HKDdcOy1W0z2quESGoqrwA995IgPav/1DSpyuJPNc/oUTWlhpYshqYKoflezAyKj
30+UzC3R/mY03ri6zUvCgXHNgZlKUsM3VEXk6h5oDuaXniHLLzuxjTBVrILnGYgH
SFRP80L/knz+o4Uvq4wj7NHnruc5fP1foFxRNsMt40yRJfU=
=D+jC
-----END PGP PUBLIC KEY BLOCK-----

View File

@ -5,8 +5,9 @@
, gnused
, gnugrep
, curl
, gnupg
, baseName ? "firefox"
, basePath ? "pkgs/applications/networking/browsers/firefox-bin"
, basePath ? "pkgs/applications/networking/browsers/firefox-bin"
, baseUrl ? "http://archive.mozilla.org/pub/firefox/releases/"
}:
@ -14,10 +15,13 @@ let
version = (builtins.parseDrvName name).version;
isBeta = builtins.stringLength version + 1 == builtins.stringLength (builtins.replaceStrings ["b"] ["bb"] version);
in writeScript "update-${baseName}-bin" ''
PATH=${coreutils}/bin:${gnused}/bin:${gnugrep}/bin:${xidel}/bin:${curl}/bin
PATH=${coreutils}/bin:${gnused}/bin:${gnugrep}/bin:${xidel}/bin:${curl}/bin:${gnupg}/bin
set -eux
pushd ${basePath}
HOME=`mktemp -d`
cat ${./firefox.key} | gpg2 --import
tmpfile=`mktemp`
url=${baseUrl}
@ -39,8 +43,12 @@ in writeScript "update-${baseName}-bin" ''
grep -e "${if isBeta then "b" else ""}\([[:digit:]]\|[[:digit:]][[:digit:]]\)$" | ${if isBeta then "" else "grep -v \"b\" |"} \
tail -1`
curl --silent -o $HOME/shasums "$url$version/SHA512SUMS"
curl --silent -o $HOME/shasums.asc "$url$version/SHA512SUMS.asc"
gpgv2 --keyring=$HOME/.gnupg/pubring.kbx $HOME/shasums.asc $HOME/shasums
# this is a list of sha512 and tarballs for both arches
shasums=`curl --silent $url$version/SHA512SUMS`
shasums=`cat $HOME/shasums`
cat > $tmpfile <<EOF
{

View File

@ -5,7 +5,7 @@
, hunspell, libevent, libstartup_notification, libvpx
, cairo, gstreamer, gst_plugins_base, icu, libpng, jemalloc, libpulseaudio
, autoconf213, which
, writeScript, xidel, coreutils, gnused, gnugrep, curl, ed
, writeScript, xidel, common-updater-scripts, coreutils, gnused, gnugrep, curl
, enableGTK3 ? false
, debugBuild ? false
, # If you want the resulting program to call itself "Firefox" instead
@ -151,8 +151,8 @@ in {
version = "51.0.1";
sha512 = "556e31b717c0640ef5e181e00b9d2a6ea0ace7c16ae04333d0f2e9e120d0ab9efe82a4ca314ef43594c080523edf37953e65dbf694c7428be0a024f3719d8312";
updateScript = import ./update.nix {
name = "firefox";
inherit writeScript xidel coreutils gnused gnugrep curl ed;
attrPath = "firefox-unwrapped";
inherit writeScript lib common-updater-scripts xidel coreutils gnused gnugrep curl;
};
};
@ -161,9 +161,9 @@ in {
version = "45.7.0esr";
sha512 = "6424101b6958191ce654d0619950dfbf98d4aa6bdd979306a2df8d6d30d3fecf1ab44638061a2b4fb1af85fe972f5ff49400e8eeda30cdcb9087c4b110b97a7d";
updateScript = import ./update.nix {
name = "firefox-esr";
versionSuffix = "esr";
inherit writeScript xidel coreutils gnused gnugrep curl ed;
attrPath = "firefox-esr-unwrapped";
versionSuffix = "esr";
inherit writeScript lib common-updater-scripts xidel coreutils gnused gnugrep curl;
};
};

View File

@ -1,23 +1,18 @@
{ name
, writeScript
{ writeScript
, lib
, xidel
, common-updater-scripts
, coreutils
, gnused
, gnugrep
, curl
, ed
, sourceSectionRegex ? "${name}-unwrapped = common"
, basePath ? "pkgs/applications/networking/browsers/firefox"
, attrPath
, baseUrl ? "http://archive.mozilla.org/pub/firefox/releases/"
, versionSuffix ? ""
}:
let
version = (builtins.parseDrvName name).version;
in writeScript "update-${name}" ''
PATH=${coreutils}/bin:${gnused}/bin:${gnugrep}/bin:${xidel}/bin:${curl}/bin:${ed}/bin
pushd ${basePath}
writeScript "update-${attrPath}" ''
PATH=${lib.makeBinPath [ common-updater-scripts coreutils curl gnugrep gnused xidel ]}
url=${baseUrl}
@ -35,20 +30,5 @@ in writeScript "update-${name}" ''
shasum=`curl --silent $url$version/SHA512SUMS | grep 'source\.tar\.xz' | cut -d ' ' -f 1`
ed default.nix <<COMMANDS
# search line
/${sourceSectionRegex}/
# search version number line
/version/
# update the version
s/".*"/"$version"/
# search hash line
/sha512/
# update the hash
s/".*"/"$shasum"/
# write then quit
wq
COMMANDS
popd
update-source-version ${attrPath} "$version" "$shasum"
''

View File

@ -2,12 +2,12 @@
, ocaml, ocamlfuse, findlib, gapi_ocaml, ocaml_sqlite3, camlidl }:
stdenv.mkDerivation rec {
name = "google-drive-ocamlfuse-${version}";
version = "0.5.22";
name = "google-drive-ocamlfuse-${version}";
version = "0.6.17";
src = fetchurl {
url = "https://forge.ocamlcore.org/frs/download.php/1587/${name}.tar.gz";
sha256 = "1hjm6hyva9sl6lddb0372wsy7f76105iaxh976yyzfn3b4ran6ab";
url = "https://forge.ocamlcore.org/frs/download.php/1674/${name}.tar.gz";
sha256 = "1ldja7080pnjaibrbdvfqwakp4mac8yw1lkb95f7lgldmy96lxas";
};
buildInputs = [ zlib ocaml ocamlfuse findlib gapi_ocaml ocaml_sqlite3 camlidl];

View File

@ -1,4 +1,4 @@
{ stdenv, fetchurl, openssl, ncurses, libiconv, tcl }:
{ stdenv, fetchurl, openssl, ncurses, libiconv, tcl, coreutils }:
stdenv.mkDerivation rec {
name = "epic5-${version}";
@ -17,14 +17,14 @@ stdenv.mkDerivation rec {
postConfigure = ''
substituteInPlace bsdinstall \
--replace /bin/cp cp \
--replace /bin/rm rm \
--replace /bin/chmod chmod
--replace /bin/cp ${coreutils}/bin/cp \
--replace /bin/rm ${coreutils}/bin/rm \
--replace /bin/chmod ${coreutils}/bin/chmod \
'';
meta = with stdenv.lib; {
homepage = "http://epicsol.org/";
description = "a IRC client that offers a great ircII interface";
homepage = "http://epicsol.org";
description = "A IRC client that offers a great ircII interface";
license = licenses.bsd3;
maintainers = [ maintainers.ndowens ];
};

View File

@ -0,0 +1,48 @@
{ stdenv, fetchurl, pkgconfig, lua5_2, file, ncurses, gmime, pcre-cpp
, perl, perlPackages }:
let
version = "2.9";
in
stdenv.mkDerivation {
name = "lumail-${version}";
src = fetchurl {
url = "https://lumail.org/download/lumail-${version}.tar.gz";
sha256 = "1rni5lbic36v4cd1r0l28542x0hlmfqkl6nac79gln491in2l2sc";
};
buildInputs = [
pkgconfig lua5_2 file ncurses gmime pcre-cpp
perl perlPackages.JSON perlPackages.NetIMAPClient
];
preConfigure = ''
sed -e 's|"/etc/lumail2|LUMAIL_LUAPATH"/..|' -i src/lumail2.cc src/imap_proxy.cc
perlFlags=
for i in $(IFS=:; echo $PERL5LIB); do
perlFlags="$perlFlags -I$i"
done
sed -e "s|^#\!\(.*/perl.*\)$|#\!\1$perlFlags|" -i perl.d/imap-proxy
'';
makeFlags = [
"LVER=lua"
"PREFIX=$(out)"
"SYSCONFDIR=$(out)/etc"
];
postInstall = ''
cp lumail2.user.lua $out/etc/lumail2/
'';
meta = with stdenv.lib; {
description = "Console-based email client";
homepage = https://lumail.org/;
license = licenses.gpl2;
platforms = platforms.linux;
maintainers = with maintainers; [orivej];
};
}

View File

@ -1,10 +1,10 @@
{ stdenv, fetchurl, pkgconfig, which, m4, gtk2, pango, perl, python2, zip, libIDL
{ stdenv, lib, fetchurl, pkgconfig, which, m4, gtk2, pango, perl, python2, zip, libIDL
, libjpeg, libpng, zlib, dbus, dbus_glib, bzip2, xorg
, freetype, fontconfig, file, alsaLib, nspr, nss, libnotify
, yasm, mesa, sqlite, unzip, makeWrapper
, hunspell, libevent, libstartup_notification, libvpx
, cairo, gstreamer, gst_plugins_base, icu
, writeScript, xidel, coreutils, gnused, gnugrep, curl, ed
, writeScript, xidel, common-updater-scripts, coreutils, gnused, gnugrep, curl
, debugBuild ? false
, # If you want the resulting program to call itself "Thunderbird"
# instead of "Earlybird", enable this option. However, those
@ -140,10 +140,8 @@ stdenv.mkDerivation rec {
};
passthru.updateScript = import ./../../browsers/firefox/update.nix {
name = "thunderbird";
sourceSectionRegex = ".";
basePath = "pkgs/applications/networking/mailreaders/thunderbird";
attrPath = "thunderbird";
baseUrl = "http://archive.mozilla.org/pub/thunderbird/releases/";
inherit writeScript xidel coreutils gnused gnugrep curl ed;
inherit writeScript lib common-updater-scripts xidel coreutils gnused gnugrep curl;
};
}

View File

@ -10,11 +10,11 @@ assert guiSupport -> (dbus_libs != null);
with stdenv.lib;
stdenv.mkDerivation rec {
name = "qbittorrent-${version}";
version = "3.3.7";
version = "3.3.10";
src = fetchurl {
url = "mirror://sourceforge/qbittorrent/${name}.tar.xz";
sha256 = "0h2ccqmjnm0x0qjvd0vz5hk7dy9qbqhiqvxywqjhip7sj1585p3j";
sha256 = "1lm8y5k9363gajbw0k9jb1cb7zg0lz5rw2ja0kd36h68rpm7qr9c";
};
nativeBuildInputs = [ pkgconfig which ];
@ -43,7 +43,7 @@ stdenv.mkDerivation rec {
description = "Free Software alternative to µtorrent";
homepage = http://www.qbittorrent.org/;
license = licenses.gpl2;
maintainers = with maintainers; [ viric ];
platforms = platforms.linux;
maintainers = with maintainers; [ viric ];
};
}

View File

@ -1,13 +1,13 @@
{ stdenv, fetchFromGitHub, python3Packages }:
stdenv.mkDerivation rec {
name = "bean-add-2016-12-02";
name = "bean-add-2017-01-20";
src = fetchFromGitHub {
owner = "simon-v";
repo = "bean-add";
rev = "8038dabf5838c880c8e750c0e65cf0da4faf40b9";
sha256 = "016ybq570xicj90x4kxrbxhzdvkjh0d6v3r6s3k3qfzz2c5vwh09";
rev = "752674259fb9512e076ef2048927fb791ad21507";
sha256 = "1ja26dgl2j25873s5nav57pjaqb9rr3mdbmkawajz2gdkk9r7n61";
};
propagatedBuildInputs = with python3Packages; [ python ];

View File

@ -266,6 +266,5 @@ in stdenv.mkDerivation rec {
license = licenses.lgpl3;
maintainers = with maintainers; [ viric raskin ];
platforms = platforms.linux;
hydraPlatforms = [];
};
}

View File

@ -31,7 +31,7 @@ python3Packages.buildPythonApplication rec {
}' src/paperwork/frontend/util/__init__.py
sed -i -e '/^LOCALE_PATHS = \[/,/^\]$/ {
c LOCALE_PATHS = ["'"$out/share/locale"'"]
c LOCALE_PATHS = ["'"$out/share"'"]
}' src/paperwork/paperwork.py
sed -i -e 's/"icon"/"icon-name"/g' \

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
name = "geogebra-${version}";
version = "5-0-328-0";
version = "5-0-331-0";
preferLocalBuild = true;
src = fetchurl {
url = "http://download.geogebra.org/installers/5.0/GeoGebra-Linux-Portable-${version}.tar.bz2";
sha256 = "1bzmnw5410fv9s29ji8f4naa6m6ykvv8h88mmxhiygr3rfsc7050";
sha256 = "135g2xqafgs1gv98vqq2jpfwyi1aflyiynx1gmsgs23jxbr218v2";
};
srcIcon = fetchurl {
@ -51,6 +51,7 @@ stdenv.mkDerivation rec {
calculus in one easy-to-use package.
'';
homepage = https://www.geogebra.org/;
maintainers = with maintainers; [ ma27 ];
license = with licenses; [ gpl3 cc-by-nc-sa-30 geogebra ];
platforms = platforms.all;
hydraPlatforms = [];

View File

@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
version = "1.0.2";
name = "monotone-viz-${version}";
buildInputs = [ocaml lablgtk libgnomecanvas glib pkgconfig graphviz_2_0 makeWrapper];
buildInputs = [ocaml lablgtk libgnomecanvas glib pkgconfig graphviz_2_0 makeWrapper camlp4];
src = fetchurl {
url = "http://oandrieu.nerim.net/monotone-viz/${name}-nolablgtk.tar.gz";
sha256 = "1l5x4xqz5g1aaqbc1x80mg0yzkiah9ma9k9mivmn08alkjlakkdk";

View File

@ -4,29 +4,17 @@
, compton, procps, iproute, coreutils, curl, alsaUtils, findutils, xterm
, which, dbus, nettools, git, asciidoc, doxygen
, xmlto, docbook_xml_dtd_45, docbook_xsl, findXMLCatalogs
, libxkbcommon, xcbutilxrm
, libxkbcommon, xcbutilxrm, hicolor_icon_theme
}:
let
version = "4.0";
in with luaPackages;
stdenv.mkDerivation rec {
with luaPackages; stdenv.mkDerivation rec {
name = "awesome-${version}";
version = "4.0";
src = fetchurl {
url = "http://github.com/awesomeWM/awesome-releases/raw/master/${name}.tar.xz";
sha256 = "0czkcz67sab63gf5m2p2pgg05yinjx60hfb9rfyzdkkg28q9f02w";
};
meta = with stdenv.lib; {
description = "Highly configurable, dynamic window manager for X";
homepage = https://awesomewm.org/;
license = licenses.gpl2Plus;
maintainers = with maintainers; [ lovek323 rasendubi ];
platforms = platforms.linux;
};
nativeBuildInputs = [
asciidoc
cmake
@ -36,33 +24,14 @@ stdenv.mkDerivation rec {
pkgconfig
xmlto docbook_xml_dtd_45 docbook_xsl findXMLCatalogs
];
buildInputs = [
cairo
dbus
gdk_pixbuf
gobjectIntrospection
git
lgi
libpthreadstubs
libstartup_notification
libxdg_basedir
lua
nettools
pango
xcb-util-cursor
xorg.libXau
xorg.libXdmcp
xorg.libxcb
xorg.libxshmfence
xorg.xcbutil
xorg.xcbutilimage
xorg.xcbutilkeysyms
xorg.xcbutilrenderutil
xorg.xcbutilwm
libxkbcommon
xcbutilxrm
];
propagatedUserEnvPkgs = [ hicolor_icon_theme ];
buildInputs = [ cairo dbus gdk_pixbuf gobjectIntrospection
git lgi libpthreadstubs libstartup_notification
libxdg_basedir lua nettools pango xcb-util-cursor
xorg.libXau xorg.libXdmcp xorg.libxcb xorg.libxshmfence
xorg.xcbutil xorg.xcbutilimage xorg.xcbutilkeysyms
xorg.xcbutilrenderutil xorg.xcbutilwm libxkbcommon
xcbutilxrm ];
#cmakeFlags = "-DGENERATE_MANPAGES=ON";
@ -86,4 +55,12 @@ stdenv.mkDerivation rec {
passthru = {
inherit lua;
};
meta = with stdenv.lib; {
description = "Highly configurable, dynamic window manager for X";
homepage = https://awesomewm.org/;
license = licenses.gpl2Plus;
maintainers = with maintainers; [ lovek323 rasendubi ndowens ];
platforms = platforms.linux;
};
}

View File

@ -11,8 +11,11 @@ fetchCargoDeps() {
echo "Using rust registry from $rustRegistry"
cat <<EOF > $out/config
[registry]
index = "file://$rustRegistry"
[source.nix-store-rust-registry]
registry = "file://$rustRegistry"
[source.crates-io]
replace-with = "nix-store-rust-registry"
EOF
export CARGO_HOME=$out

View File

@ -0,0 +1,18 @@
{ stdenv, makeWrapper, coreutils, gawk, gnused, nix }:
stdenv.mkDerivation {
name = "common-updater-scripts";
buildInputs = [ makeWrapper ];
unpackPhase = "true";
installPhase = ''
mkdir -p $out/bin
cp ${./scripts}/* $out/bin
for f in $out/bin/*; do
wrapProgram $f --prefix PATH : ${stdenv.lib.makeBinPath [ coreutils gawk gnused nix ]}
done
'';
}

View File

@ -0,0 +1,91 @@
#!/usr/bin/env bash
set -e
die() {
echo "$0: error: $1" >&2
exit 1
}
# Usage: update-source-hash <attr> <version> [<new-source-hash>]
attr=$1
newVersion=$2
newHash=$3
nixFile=$(nix-instantiate --eval --strict -A "$attr.meta.position" | sed -re 's/^"(.*):[0-9]+"$/\1/')
if [ ! -f "$nixFile" ]; then
die "Couldn't evaluate '$attr.meta.position' to locate the .nix file!"
fi
oldHashAlgo=$(nix-instantiate --eval --strict -A "$attr.src.drvAttrs.outputHashAlgo" | tr -d '"')
oldHash=$(nix-instantiate --eval --strict -A "$attr.src.drvAttrs.outputHash" | tr -d '"')
if [ -z "$oldHashAlgo" -o -z "$oldHash" ]; then
die "Couldn't evaluate old source hash from '$attr.src'!"
fi
if [ $(grep -c "$oldHash" "$nixFile") != 1 ]; then
die "Couldn't locate old source hash '$oldHash' (or it appeared more than once) in '$nixFile'!"
fi
drvName=$(nix-instantiate --eval -E "with import ./. {}; (builtins.parseDrvName $attr.name).name" | tr -d '"')
oldVersion=$(nix-instantiate --eval -E "with import ./. {}; $attr.version or (builtins.parseDrvName $attr.name).version" | tr -d '"')
if [ -z "$drvName" -o -z "$oldVersion" ]; then
die "Couldn't evaluate name and version from '$attr.name'!"
fi
if [ "$oldVersion" = "$newVersion" ]; then
echo "$0: New version same as old version, nothing to do." >&2
exit 0
fi
# Escape dots, there should not be any other regex characters allowed in store path names
oldVersion=$(echo "$oldVersion" | sed -re 's|\.|\\.|g')
if [ $(grep -c -E "^\s*(let\b)?\s*version\s+=\s+\"$oldVersion\"" "$nixFile") = 1 ]; then
pattern="/\bversion\b\s*=/ s|\"$oldVersion\"|\"$newVersion\"|"
elif [ $(grep -c -E "^\s*(let\b)?\s*name\s+=\s+\"$drvName-$oldVersion\"" "$nixFile") = 1 ]; then
pattern="/\bname\b\s*=/ s|\"$drvName-$oldVersion\"|\"$drvName-$newVersion\"|"
else
die "Couldn't figure out where out where to patch in new version in '$attr'!"
fi
# Replace new version
sed -i.bak "$nixFile" -re "$pattern"
if cmp -s "$nixFile" "$nixFile.bak"; then
die "Failed to replace version '$oldVersion' to '$newVersion' in '$attr'!"
fi
case "$oldHashAlgo" in
sha256) hashLength=64 ;;
sha512) hashLength=128 ;;
*) die "Unhandled hash algorithm '$oldHashAlgo' in '$attr'!" ;;
esac
# Make a temporary all-zeroes hash of $hashLength characters
tempHash=$(printf '%0*d' "$hashLength" 0)
sed -i "$nixFile" -re "s|\"$oldHash\"|\"$tempHash\"|"
if cmp -s "$nixFile" "$nixFile.bak"; then
die "Failed to replace source hash of '$attr' to a temporary hash!"
fi
# If new hash not given on the command line, recalculate it ourselves.
if [ -z "$newHash" ]; then
nix-build --no-out-link -A "$attr.src" 2>"$attr.fetchlog" >/dev/null || true
# FIXME: use nix-build --hash here once https://github.com/NixOS/nix/issues/1172 is fixed
newHash=$(tail -n2 "$attr.fetchlog" | grep "output path .* has .* hash .* when .* was expected" | head -n1 | tr -dc '\040-\177' | awk '{ print $(NF-4) }')
fi
if [ -z "$newHash" ]; then
cat "$attr.fetchlog" >&2
die "Couldn't figure out new hash of '$attr.src'!"
fi
sed -i "$nixFile" -re "s|\"$tempHash\"|\"$newHash\"|"
if cmp -s "$nixFile" "$nixFile.bak"; then
die "Failed to replace temporary source hash of '$attr' to the final source hash!"
fi
rm -f "$nixFile.bak"
rm -f "$attr.fetchlog"

View File

@ -1,11 +1,27 @@
/*
# New packages
READ THIS FIRST
This module is for official packages in the KDE Applications Bundle. All
available packages are listed in `./srcs.nix`, although some are not yet
packaged in Nixpkgs (see below).
IF YOUR PACKAGE IS NOT LISTED IN `./srcs.nix`, IT DOES NOT GO HERE.
Many of the packages released upstream are not yet built in Nixpkgs due to lack
of demand. To add a Nixpkgs build for an upstream package, copy one of the
existing packages here and modify it as necessary. A simple example package that
still shows most of the available features is in `./gwenview.nix`.
# Updates
1. Update the URL in `maintainers/scripts/generate-kde-applications.sh` and
run that script from the top of the Nixpkgs tree.
2. Check that the new packages build correctly.
3. Commit the changes and open a pull request.
1. Update the URL in `./fetch.sh`.
2. Run `./maintainers/scripts/fetch-kde-qt.sh pkgs/desktops/kde-5/applications`
from the top of the Nixpkgs tree.
3. Invoke `nix-build -A kde5` and ensure that everything builds.
4. Commit the changes and open a pull request.
*/
@ -71,11 +87,6 @@ let
spectacle = callPackage ./spectacle.nix {};
l10n = pkgs.recurseIntoAttrs (import ./l10n.nix { inherit callPackage lib pkgs; });
# External packages
kipi-plugins = callPackage ../../../applications/graphics/kipi-plugins/5.x.nix {};
ktorrent = callPackage ../../../applications/networking/p2p/ktorrent/5.nix { };
libktorrent = callPackage ../../../development/libraries/libktorrent/5.nix { };
};
in packages

View File

@ -1,11 +1,26 @@
/*
# New packages
READ THIS FIRST
This module is for official packages in KDE Plasma 5. All available packages are
listed in `./srcs.nix`, although a few are not yet packaged in Nixpkgs (see
below).
IF YOUR PACKAGE IS NOT LISTED IN `./srcs.nix`, IT DOES NOT GO HERE.
Many of the packages released upstream are not yet built in Nixpkgs due to lack
of demand. To add a Nixpkgs build for an upstream package, copy one of the
existing packages here and modify it as necessary.
# Updates
1. Update the URL in `maintainers/scripts/generate-kde-plasma.sh` and run
that script from the top of the Nixpkgs tree.
2. Check that the new packages build correctly.
3. Commit the changes and open a pull request.
1. Update the URL in `./fetch.sh`.
2. Run `./maintainers/scripts/fetch-kde-qt.sh pkgs/desktops/kde-5/plasma`
from the top of the Nixpkgs tree.
3. Invoke `nix-build -A kde5` and ensure that everything builds.
4. Commit the changes and open a pull request.
*/

View File

@ -3,17 +3,18 @@
stdenv.mkDerivation rec {
name = "${pname}-${version}";
pname = "liblxqt";
version = "0.11.0";
version = "0.11.1";
src = fetchFromGitHub {
owner = "lxde";
repo = pname;
rev = version;
sha256 = "12gla3pdg0n28w15qrmha83xm3021xdby8ydwp1qzcips5pa5zac";
sha256 = "0dcsgj0qr4589wsibs6fdza4ncqavrhykd05d25rs78pa94lvvh5";
};
nativeBuildInputs = [
cmake
lxqt.lxqt-build-tools
];
buildInputs = [
@ -38,7 +39,7 @@ stdenv.mkDerivation rec {
description = "Core utility library for all LXQt components";
homepage = https://github.com/lxde/liblxqt;
license = licenses.lgpl21Plus;
maintainers = with maintainers; [ romildo ];
platforms = with platforms; unix;
maintainers = with maintainers; [ romildo ];
};
}

View File

@ -1,17 +1,17 @@
{ stdenv, fetchFromGitHub, cmake, qt5 }:
{ stdenv, fetchFromGitHub, cmake, qt5, lxqt }:
stdenv.mkDerivation rec {
name = "libsysstat-${version}";
version = "0.3.2";
version = "0.3.3";
src = fetchFromGitHub {
owner = "lxde";
repo = "libsysstat";
rev = version;
sha256 = "1swpnz37daj3njkbqddmhaiipfl335c3g675y9afhabg7l4anf1n";
sha256 = "1rkbh6jj69wsf8a7w7cq8psqw08vqf9rq5pdnv4xxqb036r4bi31";
};
nativeBuildInputs = [ cmake ];
nativeBuildInputs = [ cmake lxqt.lxqt-build-tools ];
buildInputs = [ qt5.qtbase ];
@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
description = "Library used to query system info and statistics";
homepage = https://github.com/lxde/libsysstat;
license = licenses.lgpl21Plus;
maintainers = with maintainers; [ romildo ];
platforms = with platforms; unix;
maintainers = with maintainers; [ romildo ];
};
}

View File

@ -0,0 +1,23 @@
{ stdenv, fetchFromGitHub, cmake, qt5 }:
stdenv.mkDerivation rec {
name = "lxqt-build-tools-${version}";
version = "0.3.2";
src = fetchFromGitHub {
owner = "lxde";
repo = "lxqt-build-tools";
rev = version;
sha256 = "1awd70ifbbi67pklhldjw968c1fw1lcif9nh4qbrjqmlg1gn3kmv";
};
nativeBuildInputs = [ cmake qt5.qtbase ];
meta = with stdenv.lib; {
description = "Various packaging tools and scripts for LXQt applications";
homepage = https://github.com/lxde/lxqt-build-tools;
license = licenses.lgpl21;
platforms = with platforms; unix;
maintainers = with maintainers; [ romildo ];
};
}

View File

@ -4,29 +4,24 @@ libfm, menu-cache }:
stdenv.mkDerivation rec {
name = "${pname}-${version}";
pname = "libfm-qt";
version = "0.11.1";
version = "0.11.2";
src = fetchFromGitHub {
owner = "lxde";
repo = pname;
rev = version;
sha256 = "1kgvzjsa4ihlj2clz6y6s95nq0lhg66d1dhkgw3mdqaak7d0pdiz";
sha256 = "0k2g6bkz7bvawqkjzykbxi18wqsnhbxklqy6aqqkclpzcw45vk5v";
};
nativeBuildInputs = [
cmake
pkgconfig
lxqt.liblxqt
lxqt.libqtxdg
lxqt.lxqt-build-tools
];
buildInputs = [
qt5.qtx11extras
qt5.qttools
qt5.qtsvg
kde5.kwindowsystem
xorg.libpthreadstubs
xorg.libXdmcp
libfm
menu-cache
];
@ -37,7 +32,7 @@ stdenv.mkDerivation rec {
description = "Core library of PCManFM-Qt (Qt binding for libfm)";
homepage = https://github.com/lxde/libfm-qt;
license = licenses.lgpl21;
maintainers = with maintainers; [ romildo ];
platforms = with platforms; unix;
maintainers = with maintainers; [ romildo ];
};
}

View File

@ -1,18 +1,21 @@
{ stdenv, fetchFromGitHub, cmake, qt5, kde5, lxqt, xorg }:
{ stdenv, fetchFromGitHub, cmake, qt5, kde5, lxqt }:
stdenv.mkDerivation rec {
name = "${pname}-${version}";
pname = "lxqt-about";
version = "0.11.0";
version = "0.11.1";
srcs = fetchFromGitHub {
owner = "lxde";
repo = pname;
rev = version;
sha256 = "0739gp3af68cvf8fxqvd203xqzncglmxpklq8mryrs5f1xnqp6gc";
sha256 = "1pa68pr0iwvh34lippagc8kxdfd0l2071m0vh7dnvfqbnwly29dk";
};
nativeBuildInputs = [ cmake ];
nativeBuildInputs = [
cmake
lxqt.lxqt-build-tools
];
buildInputs = [
qt5.qtx11extras
@ -31,7 +34,7 @@ stdenv.mkDerivation rec {
description = "Dialogue window providing information about LXQt and the system it's running on";
homepage = https://github.com/lxde/lxqt-about;
license = licenses.lgpl21;
maintainers = with maintainers; [ romildo ];
platforms = with platforms; unix;
maintainers = with maintainers; [ romildo ];
};
}

View File

@ -1,19 +1,20 @@
{ stdenv, fetchFromGitHub, cmake, qt5, kde5, lxqt, xorg, polkit }:
{ stdenv, fetchFromGitHub, cmake, qt5, kde5, lxqt, polkit }:
stdenv.mkDerivation rec {
name = "${pname}-${version}";
pname = "lxqt-admin";
version = "0.11.0";
version = "0.11.1";
srcs = fetchFromGitHub {
owner = "lxde";
repo = pname;
rev = version;
sha256 = "17g9v6dyqy5pgpqragpf0sgnfxz2ip2g7xix7kmkna3qyym44b23";
sha256 = "12c1wdciqgiifsk5aslw3990pk9ylk9jhgwnrxvh798rr48hhflr";
};
nativeBuildInputs = [
cmake
lxqt.lxqt-build-tools
];
buildInputs = [
@ -34,7 +35,7 @@ stdenv.mkDerivation rec {
description = "LXQt system administration tool";
homepage = https://github.com/lxde/lxqt-admin;
license = licenses.lgpl21;
maintainers = with maintainers; [ romildo ];
platforms = with platforms; unix;
maintainers = with maintainers; [ romildo ];
};
}

View File

@ -1,26 +1,24 @@
{ stdenv, fetchFromGitHub, cmake, qt5, kde5, lxqt, xorg, hicolor_icon_theme, xmessage }:
{ stdenv, fetchFromGitHub, cmake, qt5, lxqt, hicolor_icon_theme, xmessage }:
stdenv.mkDerivation rec {
name = "${pname}-${version}";
pname = "lxqt-common";
version = "0.11.0";
version = "0.11.2";
src = fetchFromGitHub {
owner = "lxde";
repo = pname;
rev = version;
sha256 = "14nx3zcknwsn713wdnmb2xl15vf21vh13kxscdwmfnd48m5j4m3b";
sha256 = "07ih2w9ksbxqwy36xvgb9b31740nhkm7ap70wvv8q6x0wyhn71gn";
};
nativeBuildInputs = [ cmake ];
nativeBuildInputs = [
cmake
lxqt.lxqt-build-tools
];
buildInputs = [
qt5.qtx11extras
qt5.qttools
qt5.qtsvg
kde5.kwindowsystem
lxqt.liblxqt
lxqt.libqtxdg
hicolor_icon_theme
xmessage
];
@ -36,7 +34,7 @@ stdenv.mkDerivation rec {
description = "Common files for LXQt";
homepage = https://github.com/lxde/lxqt-common;
license = licenses.lgpl21;
maintainers = with maintainers; [ romildo ];
platforms = with platforms; unix;
maintainers = with maintainers; [ romildo ];
};
}

View File

@ -3,19 +3,20 @@
stdenv.mkDerivation rec {
name = "${pname}-${version}";
pname = "lxqt-config";
version = "0.11.0";
version = "0.11.1";
srcs = fetchFromGitHub {
owner = "lxde";
repo = pname;
rev = version;
sha256 = "187x19s0jw20an37v7svkry6p021ply4i3ngh5w2nx5rlqkf63qw";
sha256 = "0mqvv93djsw49n0gxpws3hrwimnyf9kzvc2vhjkzrjfxpabk2axx";
};
nativeBuildInputs = [
cmake
pkgconfig
];
lxqt.lxqt-build-tools
];
buildInputs = [
qt5.qtbase
@ -41,7 +42,7 @@ stdenv.mkDerivation rec {
description = "Tools to configure LXQt and the underlying operating system";
homepage = https://github.com/lxde/lxqt-config;
license = licenses.lgpl21;
maintainers = with maintainers; [ romildo ];
platforms = with platforms; unix;
maintainers = with maintainers; [ romildo ];
};
}

View File

@ -3,16 +3,19 @@
stdenv.mkDerivation rec {
name = "${pname}-${version}";
pname = "lxqt-globalkeys";
version = "0.11.0";
version = "0.11.1";
srcs = fetchFromGitHub {
owner = "lxde";
repo = pname;
rev = version;
sha256 = "05kcq21fyz7vnhh9k4nzhskgbghp1slsz14gh9anhya4a567xx0y";
sha256 = "1kwibll2azi4pafk7crfgibk5a54rnsia3c4cz680iny7xz1wy6h";
};
nativeBuildInputs = [ cmake ];
nativeBuildInputs = [
cmake
lxqt.lxqt-build-tools
];
buildInputs = [
qt5.qtbase
@ -32,7 +35,7 @@ stdenv.mkDerivation rec {
description = "Daemon used to register global keyboard shortcuts";
homepage = https://github.com/lxde/lxqt-globalkeys;
license = licenses.lgpl21;
maintainers = with maintainers; [ romildo ];
platforms = with platforms; unix;
maintainers = with maintainers; [ romildo ];
};
}

View File

@ -1,25 +1,20 @@
{ stdenv, fetchFromGitHub, cmake, qt5, kde5, lxqt }:
{ stdenv, fetchFromGitHub, cmake, qt5, lxqt }:
stdenv.mkDerivation rec {
name = "lxqt-l10n-${version}";
version = "0.11.0";
version = "0.11.2";
src = fetchFromGitHub {
owner = "lxde";
repo = "lxqt-l10n";
rev = version;
sha256 = "1gwismyjfdd7lwlgfl5jvbxmkbq9v9ia0shm4f7hkkvlpc2y24gk";
sha256 = "1vk4q98kraq0lba50n9z6jwiapc7nz2b143b4ldlmrz4wscd867h";
};
nativeBuildInputs = [
cmake
qt5.qtbase
qt5.qtx11extras
qt5.qttools
qt5.qtsvg
kde5.kwindowsystem
lxqt.liblxqt
lxqt.libqtxdg
lxqt.lxqt-build-tools
];
postPatch = ''
@ -31,7 +26,7 @@ stdenv.mkDerivation rec {
description = "Translations of LXQt";
homepage = https://github.com/lxde/lxqt-l10n;
license = licenses.lgpl21Plus;
maintainers = with maintainers; [ romildo ];
platforms = with platforms; unix;
maintainers = with maintainers; [ romildo ];
};
}

View File

@ -3,16 +3,19 @@
stdenv.mkDerivation rec {
name = "${pname}-${version}";
pname = "lxqt-notificationd";
version = "0.11.0";
version = "0.11.1";
srcs = fetchFromGitHub {
owner = "lxde";
repo = pname;
rev = version;
sha256 = "001xcvmg7ap5pbssc9pqp4jshgq2h4zxk9rra76xnrby6k8n6p3x";
sha256 = "1n39zjczzhqn73vfyjngybmk9w8j1z3vjkaq80rf2hk89vwsm0wc";
};
nativeBuildInputs = [ cmake ];
nativeBuildInputs = [
cmake
lxqt.lxqt-build-tools
];
buildInputs = [
qt5.qtbase
@ -21,6 +24,7 @@ stdenv.mkDerivation rec {
kde5.kwindowsystem
lxqt.liblxqt
lxqt.libqtxdg
lxqt.lxqt-common
];
cmakeFlags = [ "-DPULL_TRANSLATIONS=NO" ];
@ -29,7 +33,7 @@ stdenv.mkDerivation rec {
description = "The LXQt notification daemon";
homepage = https://github.com/lxde/lxqt-notificationd;
license = licenses.lgpl21;
maintainers = with maintainers; [ romildo ];
platforms = with platforms; unix;
maintainers = with maintainers; [ romildo ];
};
}

View File

@ -3,16 +3,19 @@
stdenv.mkDerivation rec {
name = "${pname}-${version}";
pname = "lxqt-openssh-askpass";
version = "0.11.0";
version = "0.11.1";
srcs = fetchFromGitHub {
owner = "lxde";
repo = pname;
rev = version;
sha256 = "0nz8sv3yrqbzgmd6jahaqaa71axy5x06k091splp9cmab0vzng7c";
sha256 = "030pzys86s7rpgl35kl4b3y7gmv9982j3blmg8927nq4pw61gfj9";
};
nativeBuildInputs = [ cmake ];
nativeBuildInputs = [
cmake
lxqt.lxqt-build-tools
];
buildInputs = [
qt5.qtbase
@ -30,7 +33,7 @@ stdenv.mkDerivation rec {
description = "GUI to query passwords on behalf of SSH agents";
homepage = https://github.com/lxde/lxqt-openssh-askpass;
license = licenses.lgpl21;
maintainers = with maintainers; [ romildo ];
platforms = with platforms; unix;
maintainers = with maintainers; [ romildo ];
};
}

View File

@ -5,16 +5,20 @@ lxmenu-data }:
stdenv.mkDerivation rec {
name = "${pname}-${version}";
pname = "lxqt-panel";
version = "0.11.0";
version = "0.11.1";
srcs = fetchFromGitHub {
owner = "lxde";
repo = pname;
rev = version;
sha256 = "0lwgz6nir4cd50xbmc3arngnw38rb5kqgcsgp3dlq6gpncg45hdq";
sha256 = "097rivly61i99v0w9a3dgbwbc4c5x9nh3jl0n94dix1qgd4w983y";
};
nativeBuildInputs = [ cmake pkgconfig ];
nativeBuildInputs = [
cmake
pkgconfig
lxqt.lxqt-build-tools
];
buildInputs = [
qt5.qtbase
@ -27,6 +31,7 @@ stdenv.mkDerivation rec {
kde5.kguiaddons
lxqt.liblxqt
lxqt.libqtxdg
lxqt.lxqt-common
lxqt.lxqt-globalkeys
lxqt.libsysstat
xorg.libpthreadstubs
@ -47,7 +52,7 @@ stdenv.mkDerivation rec {
description = "The LXQt desktop panel";
homepage = https://github.com/lxde/lxqt-panel;
license = licenses.lgpl21;
maintainers = with maintainers; [ romildo ];
platforms = with platforms; unix;
maintainers = with maintainers; [ romildo ];
};
}

View File

@ -3,16 +3,20 @@
stdenv.mkDerivation rec {
name = "${pname}-${version}";
pname = "lxqt-policykit";
version = "0.11.0";
version = "0.11.1";
srcs = fetchFromGitHub {
owner = "lxde";
repo = pname;
rev = version;
sha256 = "0rbqzh8r259cc44f1cb236p9c3lp195zjdsw3w1nz7j7gzv9yjnd";
sha256 = "0sf8wj152z1xid1i2x5g1zpgh7lwq8f0rbrk3r9shyksxqcj2d8p";
};
nativeBuildInputs = [ cmake pkgconfig ];
nativeBuildInputs = [
cmake
pkgconfig
lxqt.lxqt-build-tools
];
buildInputs = [
qt5.qtbase
@ -31,7 +35,7 @@ stdenv.mkDerivation rec {
description = "The LXQt PolicyKit agent";
homepage = https://github.com/lxde/lxqt-policykit;
license = licenses.lgpl21;
maintainers = with maintainers; [ romildo ];
platforms = with platforms; unix;
maintainers = with maintainers; [ romildo ];
};
}

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