Merge staging-next into staging
This commit is contained in:
commit
1d18c5a0fe
5
.github/CODEOWNERS
vendored
5
.github/CODEOWNERS
vendored
@ -167,3 +167,8 @@
|
|||||||
/nixos/modules/services/monitoring/prometheus/exporters.nix @WilliButz
|
/nixos/modules/services/monitoring/prometheus/exporters.nix @WilliButz
|
||||||
/nixos/modules/services/monitoring/prometheus/exporters.xml @WilliButz
|
/nixos/modules/services/monitoring/prometheus/exporters.xml @WilliButz
|
||||||
/nixos/tests/prometheus-exporters.nix @WilliButz
|
/nixos/tests/prometheus-exporters.nix @WilliButz
|
||||||
|
|
||||||
|
# PHP
|
||||||
|
/pkgs/development/interpreters/php @etu
|
||||||
|
/pkgs/top-level/php-packages.nix @etu
|
||||||
|
/pkgs/build-support/build-pecl.nix @etu
|
||||||
|
@ -1780,6 +1780,12 @@
|
|||||||
githubId = 875324;
|
githubId = 875324;
|
||||||
name = "David Johnson";
|
name = "David Johnson";
|
||||||
};
|
};
|
||||||
|
dmrauh = {
|
||||||
|
email = "dmrauh@posteo.de";
|
||||||
|
github = "dmrauh";
|
||||||
|
githubId = 37698547;
|
||||||
|
name = "Dominik Michael Rauh";
|
||||||
|
};
|
||||||
dmvianna = {
|
dmvianna = {
|
||||||
email = "dmlvianna@gmail.com";
|
email = "dmlvianna@gmail.com";
|
||||||
github = "dmvianna";
|
github = "dmvianna";
|
||||||
@ -2515,6 +2521,7 @@
|
|||||||
gazally = {
|
gazally = {
|
||||||
email = "gazally@runbox.com";
|
email = "gazally@runbox.com";
|
||||||
github = "gazally";
|
github = "gazally";
|
||||||
|
githubId = 16470252;
|
||||||
name = "Gemini Lasswell";
|
name = "Gemini Lasswell";
|
||||||
};
|
};
|
||||||
gebner = {
|
gebner = {
|
||||||
@ -3700,6 +3707,18 @@
|
|||||||
githubId = 449813;
|
githubId = 449813;
|
||||||
name = "Roman Kuznetsov";
|
name = "Roman Kuznetsov";
|
||||||
};
|
};
|
||||||
|
kylesferrazza = {
|
||||||
|
name = "Kyle Sferrazza";
|
||||||
|
email = "kyle.sferrazza@gmail.com";
|
||||||
|
|
||||||
|
github = "kylesferrazza";
|
||||||
|
githubId = 6677292;
|
||||||
|
|
||||||
|
keys = [{
|
||||||
|
longkeyid = "rsa4096/81A1540948162372";
|
||||||
|
fingerprint = "5A9A 1C9B 2369 8049 3B48 CF5B 81A1 5409 4816 2372";
|
||||||
|
}];
|
||||||
|
};
|
||||||
kylewlacy = {
|
kylewlacy = {
|
||||||
email = "kylelacy+nix@pm.me";
|
email = "kylelacy+nix@pm.me";
|
||||||
github = "kylewlacy";
|
github = "kylewlacy";
|
||||||
@ -6087,7 +6106,7 @@
|
|||||||
name = "Shahrukh Khan";
|
name = "Shahrukh Khan";
|
||||||
};
|
};
|
||||||
shanemikel = {
|
shanemikel = {
|
||||||
email = "shanemikel1@gmail.com";
|
email = "shanepearlman@pm.me";
|
||||||
github = "shanemikel";
|
github = "shanemikel";
|
||||||
githubId = 6720672;
|
githubId = 6720672;
|
||||||
name = "Shane Pearlman";
|
name = "Shane Pearlman";
|
||||||
|
@ -13,9 +13,7 @@
|
|||||||
<para>
|
<para>
|
||||||
It sets <xref linkend="opt-services.xserver.enable"/>,
|
It sets <xref linkend="opt-services.xserver.enable"/>,
|
||||||
<xref linkend="opt-services.xserver.displayManager.sddm.enable"/>,
|
<xref linkend="opt-services.xserver.displayManager.sddm.enable"/>,
|
||||||
<xref linkend="opt-services.xserver.desktopManager.plasma5.enable"/> (
|
<xref linkend="opt-services.xserver.desktopManager.plasma5.enable"/>, and
|
||||||
<link linkend="opt-services.xserver.desktopManager.plasma5.enableQt4Support">
|
|
||||||
without Qt4 Support</link>), and
|
|
||||||
<xref linkend="opt-services.xserver.libinput.enable"/> to true. It also
|
<xref linkend="opt-services.xserver.libinput.enable"/> to true. It also
|
||||||
includes glxinfo and firefox in the system packages list.
|
includes glxinfo and firefox in the system packages list.
|
||||||
</para>
|
</para>
|
||||||
|
@ -45,12 +45,12 @@
|
|||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
<literal>git tag -a -s -m "Release 17.09-beta" 17.09-beta
|
<literal>git tag -a -s -m "Release 17.09-beta" 17.09-beta
|
||||||
&& git push --tags</literal>
|
&& git push origin 17.09-beta</literal>
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
From the master branch run <literal>git checkout -B
|
From the master branch run <literal>git checkout -b
|
||||||
release-17.09</literal>.
|
release-17.09</literal>.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
@ -157,7 +157,7 @@
|
|||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Release Nix (currently only Eelco Dolstra can do that).
|
Release Nix (currently only Eelco Dolstra can do that).
|
||||||
<link xlink:href="https://github.com/NixOS/nixpkgs/commit/53710c752a85f00658882531bc90a23a3d1287e4">
|
<link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/installer/tools/nix-fallback-paths.nix">
|
||||||
Make sure fallback is updated. </link>
|
Make sure fallback is updated. </link>
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
@ -169,8 +169,8 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Change <literal>stableBranch</literal> to true and wait for channel to
|
Change <literal>stableBranch</literal> to <literal>true</literal> in Hydra and wait for
|
||||||
update.
|
the channel to update.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
@ -193,9 +193,11 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Update http://nixos.org/nixos/download.html and
|
Update the
|
||||||
http://nixos.org/nixos/manual in
|
<link xlink:href="https://github.com/NixOS/nixos-homepage/commit/2a37975d5a617ecdfca94696242b6f32ffcba9f1"><code>NIXOS_SERIES</code></link>
|
||||||
https://github.com/NixOS/nixos-org-configurations
|
in the
|
||||||
|
<link xlink:href="https://github.com/NixOS/nixos-homepage">nixos-homepage</link>
|
||||||
|
repository.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
@ -212,7 +214,8 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Send an email to nix-dev to announce the release with above information.
|
Create a new topic on <link xlink:href="https://discourse.nixos.org/">the
|
||||||
|
Discourse instance</link> to announce the release with the above information.
|
||||||
Best to check how previous email was formulated to see what needs to be
|
Best to check how previous email was formulated to see what needs to be
|
||||||
included.
|
included.
|
||||||
</para>
|
</para>
|
||||||
|
@ -418,11 +418,11 @@
|
|||||||
Do the installation:
|
Do the installation:
|
||||||
<screen>
|
<screen>
|
||||||
<prompt># </prompt>nixos-install</screen>
|
<prompt># </prompt>nixos-install</screen>
|
||||||
Cross fingers. If this fails due to a temporary problem (such as a network
|
This will install your system based on the configuration you provided.
|
||||||
issue while downloading binaries from the NixOS binary cache), you can
|
If anything fails due to a configuration problem or any other issue
|
||||||
just re-run <command>nixos-install</command>. Otherwise, fix your
|
(such as a network outage while downloading binaries from the NixOS
|
||||||
<filename>configuration.nix</filename> and then re-run
|
binary cache), you can re-run <command>nixos-install</command> after
|
||||||
<command>nixos-install</command>.
|
fixing your <filename>configuration.nix</filename>.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
As the last step, <command>nixos-install</command> will ask you to set the
|
As the last step, <command>nixos-install</command> will ask you to set the
|
||||||
|
@ -163,6 +163,19 @@
|
|||||||
time during the releases development (if viable).
|
time during the releases development (if viable).
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
The <link linkend="opt-services.phpfpm.pools">phpfpm</link> module now sets
|
||||||
|
<literal>PrivateTmp=true</literal> in its systemd units for better process isolation.
|
||||||
|
If you rely on <literal>/tmp</literal> being shared with other services, explicitly override this by
|
||||||
|
setting <literal>serviceConfig.PrivateTmp</literal> to <literal>false</literal> for each phpfpm unit.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
KDE’s old multimedia framework Phonon no longer supports Qt 4. For that reason, Plasma desktop also does not have <option>enableQt4Support</option> option any more.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
@ -290,9 +290,14 @@ class Machine:
|
|||||||
|
|
||||||
def wait_for_monitor_prompt(self) -> str:
|
def wait_for_monitor_prompt(self) -> str:
|
||||||
assert self.monitor is not None
|
assert self.monitor is not None
|
||||||
|
answer = ""
|
||||||
while True:
|
while True:
|
||||||
answer = self.monitor.recv(1024).decode()
|
undecoded_answer = self.monitor.recv(1024)
|
||||||
|
if not undecoded_answer:
|
||||||
|
break
|
||||||
|
answer += undecoded_answer.decode()
|
||||||
if answer.endswith("(qemu) "):
|
if answer.endswith("(qemu) "):
|
||||||
|
break
|
||||||
return answer
|
return answer
|
||||||
|
|
||||||
def send_monitor_command(self, command: str) -> str:
|
def send_monitor_command(self, command: str) -> str:
|
||||||
@ -606,12 +611,15 @@ class Machine:
|
|||||||
+ os.environ.get("QEMU_OPTS", "")
|
+ os.environ.get("QEMU_OPTS", "")
|
||||||
)
|
)
|
||||||
|
|
||||||
environment = {
|
environment = dict(os.environ)
|
||||||
"QEMU_OPTS": qemu_options,
|
environment.update(
|
||||||
|
{
|
||||||
|
"TMPDIR": self.state_dir,
|
||||||
"SHARED_DIR": self.shared_dir,
|
"SHARED_DIR": self.shared_dir,
|
||||||
"USE_TMPDIR": "1",
|
"USE_TMPDIR": "1",
|
||||||
|
"QEMU_OPTS": qemu_options,
|
||||||
}
|
}
|
||||||
environment.update(dict(os.environ))
|
)
|
||||||
|
|
||||||
self.process = subprocess.Popen(
|
self.process = subprocess.Popen(
|
||||||
self.script,
|
self.script,
|
||||||
@ -749,7 +757,7 @@ def run_tests() -> None:
|
|||||||
if tests is not None:
|
if tests is not None:
|
||||||
with log.nested("running the VM test script"):
|
with log.nested("running the VM test script"):
|
||||||
try:
|
try:
|
||||||
exec(tests)
|
exec(tests, globals())
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
eprint("error: {}".format(str(e)))
|
eprint("error: {}".format(str(e)))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
@ -211,11 +211,11 @@ upload_image() {
|
|||||||
log "Registering snapshot $snapshot_id as AMI"
|
log "Registering snapshot $snapshot_id as AMI"
|
||||||
|
|
||||||
local block_device_mappings=(
|
local block_device_mappings=(
|
||||||
"DeviceName=/dev/sda1,Ebs={SnapshotId=$snapshot_id,VolumeSize=$image_logical_gigabytes,DeleteOnTermination=true,VolumeType=gp2}"
|
"DeviceName=/dev/xvda,Ebs={SnapshotId=$snapshot_id,VolumeSize=$image_logical_gigabytes,DeleteOnTermination=true,VolumeType=gp2}"
|
||||||
)
|
)
|
||||||
|
|
||||||
local extra_flags=(
|
local extra_flags=(
|
||||||
--root-device-name /dev/sda1
|
--root-device-name /dev/xvda
|
||||||
--sriov-net-support simple
|
--sriov-net-support simple
|
||||||
--ena-support
|
--ena-support
|
||||||
--virtualization-type hvm
|
--virtualization-type hvm
|
||||||
|
@ -10,7 +10,7 @@ let
|
|||||||
isQtStyle = cfg.platformTheme == "gtk2" && cfg.style != "adwaita";
|
isQtStyle = cfg.platformTheme == "gtk2" && cfg.style != "adwaita";
|
||||||
|
|
||||||
packages = if isQGnome then [ pkgs.qgnomeplatform pkgs.adwaita-qt ]
|
packages = if isQGnome then [ pkgs.qgnomeplatform pkgs.adwaita-qt ]
|
||||||
else if isQtStyle then [ pkgs.qtstyleplugins ]
|
else if isQtStyle then [ pkgs.libsForQt5.qtstyleplugins ]
|
||||||
else throw "`qt5.platformTheme` ${cfg.platformTheme} and `qt5.style` ${cfg.style} are not compatible.";
|
else throw "`qt5.platformTheme` ${cfg.platformTheme} and `qt5.style` ${cfg.style} are not compatible.";
|
||||||
|
|
||||||
in
|
in
|
||||||
|
@ -11,7 +11,6 @@ with lib;
|
|||||||
services.xserver = {
|
services.xserver = {
|
||||||
desktopManager.plasma5 = {
|
desktopManager.plasma5 = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableQt4Support = false;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# Automatically login as nixos.
|
# Automatically login as nixos.
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
displayManager.sddm.enable = true;
|
displayManager.sddm.enable = true;
|
||||||
desktopManager.plasma5 = {
|
desktopManager.plasma5 = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableQt4Support = false;
|
|
||||||
};
|
};
|
||||||
libinput.enable = true; # for touchpad support on many laptops
|
libinput.enable = true; # for touchpad support on many laptops
|
||||||
};
|
};
|
||||||
|
@ -23,7 +23,8 @@ with lib;
|
|||||||
###### implementation
|
###### implementation
|
||||||
config = mkIf config.programs.adb.enable {
|
config = mkIf config.programs.adb.enable {
|
||||||
services.udev.packages = [ pkgs.android-udev-rules ];
|
services.udev.packages = [ pkgs.android-udev-rules ];
|
||||||
environment.systemPackages = [ pkgs.androidenv.androidPkgs_9_0.platform-tools ];
|
# Give platform-tools lower priority so mke2fs+friends are taken from other packages first
|
||||||
|
environment.systemPackages = [ (lowPrio pkgs.androidenv.androidPkgs_9_0.platform-tools) ];
|
||||||
users.groups.adbusers = {};
|
users.groups.adbusers = {};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,8 @@ in
|
|||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
DynamicUser = true;
|
DynamicUser = true;
|
||||||
Restart = "always";
|
Restart = "always";
|
||||||
ExecStart = "${pkg}/bin/beanstalkd -l ${cfg.listen.address} -p ${toString cfg.listen.port}";
|
ExecStart = "${pkg}/bin/beanstalkd -l ${cfg.listen.address} -p ${toString cfg.listen.port} -b $STATE_DIRECTORY";
|
||||||
|
StateDirectory = "beanstalkd";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -390,6 +390,7 @@ in {
|
|||||||
in {
|
in {
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
before = [ "phpfpm-nextcloud.service" ];
|
before = [ "phpfpm-nextcloud.service" ];
|
||||||
|
path = [ occ ];
|
||||||
script = ''
|
script = ''
|
||||||
chmod og+x ${cfg.home}
|
chmod og+x ${cfg.home}
|
||||||
ln -sf ${pkgs.nextcloud}/apps ${cfg.home}/
|
ln -sf ${pkgs.nextcloud}/apps ${cfg.home}/
|
||||||
|
@ -262,6 +262,7 @@ in {
|
|||||||
in {
|
in {
|
||||||
Slice = "phpfpm.slice";
|
Slice = "phpfpm.slice";
|
||||||
PrivateDevices = true;
|
PrivateDevices = true;
|
||||||
|
PrivateTmp = true;
|
||||||
ProtectSystem = "full";
|
ProtectSystem = "full";
|
||||||
ProtectHome = true;
|
ProtectHome = true;
|
||||||
# XXX: We need AF_NETLINK to make the sendmail SUID binary from postfix work
|
# XXX: We need AF_NETLINK to make the sendmail SUID binary from postfix work
|
||||||
|
@ -309,7 +309,7 @@ in
|
|||||||
gnome-shell
|
gnome-shell
|
||||||
gnome-shell-extensions
|
gnome-shell-extensions
|
||||||
gnome-themes-extra
|
gnome-themes-extra
|
||||||
gnome-user-docs
|
pkgs.gnome-user-docs
|
||||||
pkgs.orca
|
pkgs.orca
|
||||||
pkgs.glib # for gsettings
|
pkgs.glib # for gsettings
|
||||||
pkgs.gnome-menus
|
pkgs.gnome-menus
|
||||||
|
@ -27,20 +27,13 @@ in
|
|||||||
example = "vlc";
|
example = "vlc";
|
||||||
description = "Phonon audio backend to install.";
|
description = "Phonon audio backend to install.";
|
||||||
};
|
};
|
||||||
|
|
||||||
enableQt4Support = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = true;
|
|
||||||
description = ''
|
|
||||||
Enable support for Qt 4-based applications. Particularly, install a
|
|
||||||
default backend for Phonon.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
(mkRemovedOptionModule [ "services" "xserver" "desktopManager" "plasma5" "enableQt4Support" ] "Phonon no longer supports Qt 4.")
|
||||||
|
];
|
||||||
|
|
||||||
config = mkMerge [
|
config = mkMerge [
|
||||||
(mkIf cfg.enable {
|
(mkIf cfg.enable {
|
||||||
@ -173,9 +166,7 @@ in
|
|||||||
|
|
||||||
# Phonon audio backend
|
# Phonon audio backend
|
||||||
++ lib.optional (cfg.phononBackend == "gstreamer") libsForQt5.phonon-backend-gstreamer
|
++ lib.optional (cfg.phononBackend == "gstreamer") libsForQt5.phonon-backend-gstreamer
|
||||||
++ lib.optional (cfg.phononBackend == "gstreamer" && cfg.enableQt4Support) pkgs.phonon-backend-gstreamer
|
|
||||||
++ lib.optional (cfg.phononBackend == "vlc") libsForQt5.phonon-backend-vlc
|
++ lib.optional (cfg.phononBackend == "vlc") libsForQt5.phonon-backend-vlc
|
||||||
++ lib.optional (cfg.phononBackend == "vlc" && cfg.enableQt4Support) pkgs.phonon-backend-vlc
|
|
||||||
|
|
||||||
# Optional hardware support features
|
# Optional hardware support features
|
||||||
++ lib.optionals config.hardware.bluetooth.enable [ bluedevil bluez-qt ]
|
++ lib.optionals config.hardware.bluetooth.enable [ bluedevil bluez-qt ]
|
||||||
|
@ -31,6 +31,44 @@ let
|
|||||||
load-module module-position-event-sounds
|
load-module module-position-event-sounds
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
dmDefault = config.services.xserver.desktopManager.default;
|
||||||
|
wmDefault = config.services.xserver.windowManager.default;
|
||||||
|
hasDefaultUserSession = dmDefault != "none" || wmDefault != "none";
|
||||||
|
defaultSessionName = dmDefault + optionalString (wmDefault != "none") ("+" + wmDefault);
|
||||||
|
|
||||||
|
setSessionScript = pkgs.python3.pkgs.buildPythonApplication {
|
||||||
|
name = "set-session";
|
||||||
|
|
||||||
|
format = "other";
|
||||||
|
|
||||||
|
src = ./set-session.py;
|
||||||
|
|
||||||
|
dontUnpack = true;
|
||||||
|
|
||||||
|
strictDeps = false;
|
||||||
|
|
||||||
|
nativeBuildInputs = with pkgs; [
|
||||||
|
wrapGAppsHook
|
||||||
|
gobject-introspection
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = with pkgs; [
|
||||||
|
accountsservice
|
||||||
|
glib
|
||||||
|
];
|
||||||
|
|
||||||
|
propagatedBuildInputs = with pkgs.python3.pkgs; [
|
||||||
|
pygobject3
|
||||||
|
ordered-set
|
||||||
|
];
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
cp $src $out/bin/set-session
|
||||||
|
chmod +x $out/bin/set-session
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -156,6 +194,8 @@ in
|
|||||||
cat - > /run/gdm/.config/gnome-initial-setup-done <<- EOF
|
cat - > /run/gdm/.config/gnome-initial-setup-done <<- EOF
|
||||||
yes
|
yes
|
||||||
EOF
|
EOF
|
||||||
|
'' + optionalString hasDefaultUserSession ''
|
||||||
|
${setSessionScript}/bin/set-session ${defaultSessionName}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
86
nixos/modules/services/x11/display-managers/set-session.py
Executable file
86
nixos/modules/services/x11/display-managers/set-session.py
Executable file
@ -0,0 +1,86 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import gi, argparse, os, logging, sys
|
||||||
|
|
||||||
|
gi.require_version("AccountsService", "1.0")
|
||||||
|
from gi.repository import AccountsService, GLib
|
||||||
|
from ordered_set import OrderedSet
|
||||||
|
|
||||||
|
|
||||||
|
def get_session_file(session):
|
||||||
|
system_data_dirs = GLib.get_system_data_dirs()
|
||||||
|
|
||||||
|
session_dirs = OrderedSet(
|
||||||
|
os.path.join(data_dir, session)
|
||||||
|
for data_dir in system_data_dirs
|
||||||
|
for session in {"wayland-sessions", "xsessions"}
|
||||||
|
)
|
||||||
|
|
||||||
|
session_files = OrderedSet(
|
||||||
|
os.path.join(dir, session + ".desktop")
|
||||||
|
for dir in session_dirs
|
||||||
|
if os.path.exists(os.path.join(dir, session + ".desktop"))
|
||||||
|
)
|
||||||
|
|
||||||
|
# Deal with duplicate wayland-sessions and xsessions.
|
||||||
|
# Needed for the situation in gnome-session, where there's
|
||||||
|
# a xsession named the same as a wayland session.
|
||||||
|
if any(map(is_session_wayland, session_files)):
|
||||||
|
session_files = OrderedSet(
|
||||||
|
session for session in session_files if is_session_wayland(session)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
session_files = OrderedSet(
|
||||||
|
session for session in session_files if is_session_xsession(session)
|
||||||
|
)
|
||||||
|
|
||||||
|
if len(session_files) == 0:
|
||||||
|
logging.warning("No session files are found.")
|
||||||
|
sys.exit(0)
|
||||||
|
else:
|
||||||
|
return session_files[0]
|
||||||
|
|
||||||
|
|
||||||
|
def is_session_xsession(session_file):
|
||||||
|
return "/xsessions/" in session_file
|
||||||
|
|
||||||
|
|
||||||
|
def is_session_wayland(session_file):
|
||||||
|
return "/wayland-sessions/" in session_file
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="Set session type for all normal users."
|
||||||
|
)
|
||||||
|
parser.add_argument("session", help="Name of session to set.")
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
session = getattr(args, "session")
|
||||||
|
session_file = get_session_file(session)
|
||||||
|
|
||||||
|
user_manager = AccountsService.UserManager.get_default()
|
||||||
|
users = user_manager.list_users()
|
||||||
|
|
||||||
|
for user in users:
|
||||||
|
if user.is_system_account():
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
if is_session_wayland(session_file):
|
||||||
|
logging.debug(
|
||||||
|
f"Setting session name: {session}, as we found the existing wayland-session: {session_file}"
|
||||||
|
)
|
||||||
|
user.set_session(session)
|
||||||
|
elif is_session_xsession(session_file):
|
||||||
|
logging.debug(
|
||||||
|
f"Setting session name: {session}, as we found the existing xsession: {session_file}"
|
||||||
|
)
|
||||||
|
user.set_x_session(session)
|
||||||
|
else:
|
||||||
|
logging.error(f"Couldn't figure out session type for {session_file}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
@ -201,7 +201,7 @@ let
|
|||||||
(assertValueOneOf "IPv6AcceptRA" boolValues)
|
(assertValueOneOf "IPv6AcceptRA" boolValues)
|
||||||
(assertValueOneOf "IPv4ProxyARP" boolValues)
|
(assertValueOneOf "IPv4ProxyARP" boolValues)
|
||||||
(assertValueOneOf "IPv6ProxyNDP" boolValues)
|
(assertValueOneOf "IPv6ProxyNDP" boolValues)
|
||||||
(assertValueOneOf "IPv6PrefixDelegation" boolValues)
|
(assertValueOneOf "IPv6PrefixDelegation" (boolValues ++ [ "dhcpv6" "static" ]))
|
||||||
(assertValueOneOf "ActiveSlave" boolValues)
|
(assertValueOneOf "ActiveSlave" boolValues)
|
||||||
(assertValueOneOf "PrimarySlave" boolValues)
|
(assertValueOneOf "PrimarySlave" boolValues)
|
||||||
(assertValueOneOf "ConfigureWithoutCarrier" boolValues)
|
(assertValueOneOf "ConfigureWithoutCarrier" boolValues)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import ./make-test.nix ({pkgs, lib, ...}:
|
import ./make-test-python.nix ({pkgs, lib, ...}:
|
||||||
|
|
||||||
let
|
let
|
||||||
cfg = {
|
cfg = {
|
||||||
@ -109,14 +109,14 @@ let
|
|||||||
# For other ways to deploy a ceph cluster, look at the documentation at
|
# For other ways to deploy a ceph cluster, look at the documentation at
|
||||||
# https://docs.ceph.com/docs/master/
|
# https://docs.ceph.com/docs/master/
|
||||||
testscript = { ... }: ''
|
testscript = { ... }: ''
|
||||||
startAll;
|
start_all()
|
||||||
|
|
||||||
$monA->waitForUnit("network.target");
|
monA.wait_for_unit("network.target")
|
||||||
$osd0->waitForUnit("network.target");
|
osd0.wait_for_unit("network.target")
|
||||||
$osd1->waitForUnit("network.target");
|
osd1.wait_for_unit("network.target")
|
||||||
|
|
||||||
# Bootstrap ceph-mon daemon
|
# Bootstrap ceph-mon daemon
|
||||||
$monA->mustSucceed(
|
monA.succeed(
|
||||||
"sudo -u ceph ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'",
|
"sudo -u ceph ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'",
|
||||||
"sudo -u ceph ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'",
|
"sudo -u ceph ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'",
|
||||||
"sudo -u ceph ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring",
|
"sudo -u ceph ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring",
|
||||||
@ -124,90 +124,90 @@ let
|
|||||||
"sudo -u ceph ceph-mon --mkfs -i ${cfg.monA.name} --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring",
|
"sudo -u ceph ceph-mon --mkfs -i ${cfg.monA.name} --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring",
|
||||||
"sudo -u ceph mkdir -p /var/lib/ceph/mgr/ceph-${cfg.monA.name}/",
|
"sudo -u ceph mkdir -p /var/lib/ceph/mgr/ceph-${cfg.monA.name}/",
|
||||||
"sudo -u ceph touch /var/lib/ceph/mon/ceph-${cfg.monA.name}/done",
|
"sudo -u ceph touch /var/lib/ceph/mon/ceph-${cfg.monA.name}/done",
|
||||||
"systemctl start ceph-mon-${cfg.monA.name}"
|
"systemctl start ceph-mon-${cfg.monA.name}",
|
||||||
);
|
)
|
||||||
$monA->waitForUnit("ceph-mon-${cfg.monA.name}");
|
monA.wait_for_unit("ceph-mon-${cfg.monA.name}")
|
||||||
$monA->mustSucceed("ceph mon enable-msgr2");
|
monA.succeed("ceph mon enable-msgr2")
|
||||||
|
|
||||||
# Can't check ceph status until a mon is up
|
# Can't check ceph status until a mon is up
|
||||||
$monA->succeed("ceph -s | grep 'mon: 1 daemons'");
|
monA.succeed("ceph -s | grep 'mon: 1 daemons'")
|
||||||
|
|
||||||
# Start the ceph-mgr daemon, it has no deps and hardly any setup
|
# Start the ceph-mgr daemon, it has no deps and hardly any setup
|
||||||
$monA->mustSucceed(
|
monA.succeed(
|
||||||
"ceph auth get-or-create mgr.${cfg.monA.name} mon 'allow profile mgr' osd 'allow *' mds 'allow *' > /var/lib/ceph/mgr/ceph-${cfg.monA.name}/keyring",
|
"ceph auth get-or-create mgr.${cfg.monA.name} mon 'allow profile mgr' osd 'allow *' mds 'allow *' > /var/lib/ceph/mgr/ceph-${cfg.monA.name}/keyring",
|
||||||
"systemctl start ceph-mgr-${cfg.monA.name}"
|
"systemctl start ceph-mgr-${cfg.monA.name}",
|
||||||
);
|
)
|
||||||
$monA->waitForUnit("ceph-mgr-a");
|
monA.wait_for_unit("ceph-mgr-a")
|
||||||
$monA->waitUntilSucceeds("ceph -s | grep 'quorum ${cfg.monA.name}'");
|
monA.wait_until_succeeds("ceph -s | grep 'quorum ${cfg.monA.name}'")
|
||||||
$monA->waitUntilSucceeds("ceph -s | grep 'mgr: ${cfg.monA.name}(active,'");
|
monA.wait_until_succeeds("ceph -s | grep 'mgr: ${cfg.monA.name}(active,'")
|
||||||
|
|
||||||
# Send the admin keyring to the OSD machines
|
# Send the admin keyring to the OSD machines
|
||||||
$monA->mustSucceed("cp /etc/ceph/ceph.client.admin.keyring /tmp/shared");
|
monA.succeed("cp /etc/ceph/ceph.client.admin.keyring /tmp/shared")
|
||||||
$osd0->mustSucceed("cp /tmp/shared/ceph.client.admin.keyring /etc/ceph");
|
osd0.succeed("cp /tmp/shared/ceph.client.admin.keyring /etc/ceph")
|
||||||
$osd1->mustSucceed("cp /tmp/shared/ceph.client.admin.keyring /etc/ceph");
|
osd1.succeed("cp /tmp/shared/ceph.client.admin.keyring /etc/ceph")
|
||||||
|
|
||||||
# Bootstrap both OSDs
|
# Bootstrap both OSDs
|
||||||
$osd0->mustSucceed(
|
osd0.succeed(
|
||||||
"mkfs.xfs /dev/vdb",
|
"mkfs.xfs /dev/vdb",
|
||||||
"mkdir -p /var/lib/ceph/osd/ceph-${cfg.osd0.name}",
|
"mkdir -p /var/lib/ceph/osd/ceph-${cfg.osd0.name}",
|
||||||
"mount /dev/vdb /var/lib/ceph/osd/ceph-${cfg.osd0.name}",
|
"mount /dev/vdb /var/lib/ceph/osd/ceph-${cfg.osd0.name}",
|
||||||
"ceph-authtool --create-keyring /var/lib/ceph/osd/ceph-${cfg.osd0.name}/keyring --name osd.${cfg.osd0.name} --add-key ${cfg.osd0.key}",
|
"ceph-authtool --create-keyring /var/lib/ceph/osd/ceph-${cfg.osd0.name}/keyring --name osd.${cfg.osd0.name} --add-key ${cfg.osd0.key}",
|
||||||
"echo '{\"cephx_secret\": \"${cfg.osd0.key}\"}' | ceph osd new ${cfg.osd0.uuid} -i -",
|
'echo \'{"cephx_secret": "${cfg.osd0.key}"}\' | ceph osd new ${cfg.osd0.uuid} -i -',
|
||||||
);
|
)
|
||||||
$osd1->mustSucceed(
|
osd1.succeed(
|
||||||
"mkfs.xfs /dev/vdb",
|
"mkfs.xfs /dev/vdb",
|
||||||
"mkdir -p /var/lib/ceph/osd/ceph-${cfg.osd1.name}",
|
"mkdir -p /var/lib/ceph/osd/ceph-${cfg.osd1.name}",
|
||||||
"mount /dev/vdb /var/lib/ceph/osd/ceph-${cfg.osd1.name}",
|
"mount /dev/vdb /var/lib/ceph/osd/ceph-${cfg.osd1.name}",
|
||||||
"ceph-authtool --create-keyring /var/lib/ceph/osd/ceph-${cfg.osd1.name}/keyring --name osd.${cfg.osd1.name} --add-key ${cfg.osd1.key}",
|
"ceph-authtool --create-keyring /var/lib/ceph/osd/ceph-${cfg.osd1.name}/keyring --name osd.${cfg.osd1.name} --add-key ${cfg.osd1.key}",
|
||||||
"echo '{\"cephx_secret\": \"${cfg.osd1.key}\"}' | ceph osd new ${cfg.osd1.uuid} -i -"
|
'echo \'{"cephx_secret": "${cfg.osd1.key}"}\' | ceph osd new ${cfg.osd1.uuid} -i -',
|
||||||
);
|
)
|
||||||
|
|
||||||
# Initialize the OSDs with regular filestore
|
# Initialize the OSDs with regular filestore
|
||||||
$osd0->mustSucceed(
|
osd0.succeed(
|
||||||
"ceph-osd -i ${cfg.osd0.name} --mkfs --osd-uuid ${cfg.osd0.uuid}",
|
"ceph-osd -i ${cfg.osd0.name} --mkfs --osd-uuid ${cfg.osd0.uuid}",
|
||||||
"chown -R ceph:ceph /var/lib/ceph/osd",
|
"chown -R ceph:ceph /var/lib/ceph/osd",
|
||||||
"systemctl start ceph-osd-${cfg.osd0.name}",
|
"systemctl start ceph-osd-${cfg.osd0.name}",
|
||||||
);
|
)
|
||||||
$osd1->mustSucceed(
|
osd1.succeed(
|
||||||
"ceph-osd -i ${cfg.osd1.name} --mkfs --osd-uuid ${cfg.osd1.uuid}",
|
"ceph-osd -i ${cfg.osd1.name} --mkfs --osd-uuid ${cfg.osd1.uuid}",
|
||||||
"chown -R ceph:ceph /var/lib/ceph/osd",
|
"chown -R ceph:ceph /var/lib/ceph/osd",
|
||||||
"systemctl start ceph-osd-${cfg.osd1.name}"
|
"systemctl start ceph-osd-${cfg.osd1.name}",
|
||||||
);
|
)
|
||||||
$monA->waitUntilSucceeds("ceph osd stat | grep -e '2 osds: 2 up[^,]*, 2 in'");
|
monA.wait_until_succeeds("ceph osd stat | grep -e '2 osds: 2 up[^,]*, 2 in'")
|
||||||
$monA->waitUntilSucceeds("ceph -s | grep 'mgr: ${cfg.monA.name}(active,'");
|
monA.wait_until_succeeds("ceph -s | grep 'mgr: ${cfg.monA.name}(active,'")
|
||||||
$monA->waitUntilSucceeds("ceph -s | grep 'HEALTH_OK'");
|
monA.wait_until_succeeds("ceph -s | grep 'HEALTH_OK'")
|
||||||
|
|
||||||
$monA->mustSucceed(
|
monA.succeed(
|
||||||
"ceph osd pool create multi-node-test 100 100",
|
"ceph osd pool create multi-node-test 100 100",
|
||||||
"ceph osd pool ls | grep 'multi-node-test'",
|
"ceph osd pool ls | grep 'multi-node-test'",
|
||||||
"ceph osd pool rename multi-node-test multi-node-other-test",
|
"ceph osd pool rename multi-node-test multi-node-other-test",
|
||||||
"ceph osd pool ls | grep 'multi-node-other-test'"
|
"ceph osd pool ls | grep 'multi-node-other-test'",
|
||||||
);
|
)
|
||||||
$monA->waitUntilSucceeds("ceph -s | grep '1 pools, 100 pgs'");
|
monA.wait_until_succeeds("ceph -s | grep '1 pools, 100 pgs'")
|
||||||
$monA->mustSucceed("ceph osd pool set multi-node-other-test size 2");
|
monA.succeed("ceph osd pool set multi-node-other-test size 2")
|
||||||
$monA->waitUntilSucceeds("ceph -s | grep 'HEALTH_OK'");
|
monA.wait_until_succeeds("ceph -s | grep 'HEALTH_OK'")
|
||||||
$monA->waitUntilSucceeds("ceph -s | grep '100 active+clean'");
|
monA.wait_until_succeeds("ceph -s | grep '100 active+clean'")
|
||||||
$monA->mustFail(
|
monA.fail(
|
||||||
"ceph osd pool ls | grep 'multi-node-test'",
|
"ceph osd pool ls | grep 'multi-node-test'",
|
||||||
"ceph osd pool delete multi-node-other-test multi-node-other-test --yes-i-really-really-mean-it"
|
"ceph osd pool delete multi-node-other-test multi-node-other-test --yes-i-really-really-mean-it",
|
||||||
);
|
)
|
||||||
|
|
||||||
# Shut down ceph on all machines in a very unpolite way
|
# Shut down ceph on all machines in a very unpolite way
|
||||||
$monA->crash;
|
monA.crash()
|
||||||
$osd0->crash;
|
osd0.crash()
|
||||||
$osd1->crash;
|
osd1.crash()
|
||||||
|
|
||||||
# Start it up
|
# Start it up
|
||||||
$osd0->start;
|
osd0.start()
|
||||||
$osd1->start;
|
osd1.start()
|
||||||
$monA->start;
|
monA.start()
|
||||||
|
|
||||||
# Ensure the cluster comes back up again
|
# Ensure the cluster comes back up again
|
||||||
$monA->succeed("ceph -s | grep 'mon: 1 daemons'");
|
monA.succeed("ceph -s | grep 'mon: 1 daemons'")
|
||||||
$monA->waitUntilSucceeds("ceph -s | grep 'quorum ${cfg.monA.name}'");
|
monA.wait_until_succeeds("ceph -s | grep 'quorum ${cfg.monA.name}'")
|
||||||
$monA->waitUntilSucceeds("ceph osd stat | grep -e '2 osds: 2 up[^,]*, 2 in'");
|
monA.wait_until_succeeds("ceph osd stat | grep -e '2 osds: 2 up[^,]*, 2 in'")
|
||||||
$monA->waitUntilSucceeds("ceph -s | grep 'mgr: ${cfg.monA.name}(active,'");
|
monA.wait_until_succeeds("ceph -s | grep 'mgr: ${cfg.monA.name}(active,'")
|
||||||
$monA->waitUntilSucceeds("ceph -s | grep 'HEALTH_OK'");
|
monA.wait_until_succeeds("ceph -s | grep 'HEALTH_OK'")
|
||||||
'';
|
'';
|
||||||
in {
|
in {
|
||||||
name = "basic-multi-node-ceph-cluster";
|
name = "basic-multi-node-ceph-cluster";
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import ./make-test.nix ({pkgs, lib, ...}:
|
import ./make-test-python.nix ({pkgs, lib, ...}:
|
||||||
|
|
||||||
let
|
let
|
||||||
cfg = {
|
cfg = {
|
||||||
@ -74,38 +74,38 @@ let
|
|||||||
# For other ways to deploy a ceph cluster, look at the documentation at
|
# For other ways to deploy a ceph cluster, look at the documentation at
|
||||||
# https://docs.ceph.com/docs/master/
|
# https://docs.ceph.com/docs/master/
|
||||||
testscript = { ... }: ''
|
testscript = { ... }: ''
|
||||||
startAll;
|
start_all()
|
||||||
|
|
||||||
$monA->waitForUnit("network.target");
|
monA.wait_for_unit("network.target")
|
||||||
|
|
||||||
# Bootstrap ceph-mon daemon
|
# Bootstrap ceph-mon daemon
|
||||||
$monA->mustSucceed(
|
monA.succeed(
|
||||||
"sudo -u ceph ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'",
|
"sudo -u ceph ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'",
|
||||||
"sudo -u ceph ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'",
|
"sudo -u ceph ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'",
|
||||||
"sudo -u ceph ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring",
|
"sudo -u ceph ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring",
|
||||||
"monmaptool --create --add ${cfg.monA.name} ${cfg.monA.ip} --fsid ${cfg.clusterId} /tmp/monmap",
|
"monmaptool --create --add ${cfg.monA.name} ${cfg.monA.ip} --fsid ${cfg.clusterId} /tmp/monmap",
|
||||||
"sudo -u ceph ceph-mon --mkfs -i ${cfg.monA.name} --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring",
|
"sudo -u ceph ceph-mon --mkfs -i ${cfg.monA.name} --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring",
|
||||||
"sudo -u ceph touch /var/lib/ceph/mon/ceph-${cfg.monA.name}/done",
|
"sudo -u ceph touch /var/lib/ceph/mon/ceph-${cfg.monA.name}/done",
|
||||||
"systemctl start ceph-mon-${cfg.monA.name}"
|
"systemctl start ceph-mon-${cfg.monA.name}",
|
||||||
);
|
)
|
||||||
$monA->waitForUnit("ceph-mon-${cfg.monA.name}");
|
monA.wait_for_unit("ceph-mon-${cfg.monA.name}")
|
||||||
$monA->mustSucceed("ceph mon enable-msgr2");
|
monA.succeed("ceph mon enable-msgr2")
|
||||||
|
|
||||||
# Can't check ceph status until a mon is up
|
# Can't check ceph status until a mon is up
|
||||||
$monA->succeed("ceph -s | grep 'mon: 1 daemons'");
|
monA.succeed("ceph -s | grep 'mon: 1 daemons'")
|
||||||
|
|
||||||
# Start the ceph-mgr daemon, after copying in the keyring
|
# Start the ceph-mgr daemon, after copying in the keyring
|
||||||
$monA->mustSucceed(
|
monA.succeed(
|
||||||
"sudo -u ceph mkdir -p /var/lib/ceph/mgr/ceph-${cfg.monA.name}/",
|
"sudo -u ceph mkdir -p /var/lib/ceph/mgr/ceph-${cfg.monA.name}/",
|
||||||
"ceph auth get-or-create mgr.${cfg.monA.name} mon 'allow profile mgr' osd 'allow *' mds 'allow *' > /var/lib/ceph/mgr/ceph-${cfg.monA.name}/keyring",
|
"ceph auth get-or-create mgr.${cfg.monA.name} mon 'allow profile mgr' osd 'allow *' mds 'allow *' > /var/lib/ceph/mgr/ceph-${cfg.monA.name}/keyring",
|
||||||
"systemctl start ceph-mgr-${cfg.monA.name}"
|
"systemctl start ceph-mgr-${cfg.monA.name}",
|
||||||
);
|
)
|
||||||
$monA->waitForUnit("ceph-mgr-a");
|
monA.wait_for_unit("ceph-mgr-a")
|
||||||
$monA->waitUntilSucceeds("ceph -s | grep 'quorum ${cfg.monA.name}'");
|
monA.wait_until_succeeds("ceph -s | grep 'quorum ${cfg.monA.name}'")
|
||||||
$monA->waitUntilSucceeds("ceph -s | grep 'mgr: ${cfg.monA.name}(active,'");
|
monA.wait_until_succeeds("ceph -s | grep 'mgr: ${cfg.monA.name}(active,'")
|
||||||
|
|
||||||
# Bootstrap both OSDs
|
# Bootstrap both OSDs
|
||||||
$monA->mustSucceed(
|
monA.succeed(
|
||||||
"mkfs.xfs /dev/vdb",
|
"mkfs.xfs /dev/vdb",
|
||||||
"mkfs.xfs /dev/vdc",
|
"mkfs.xfs /dev/vdc",
|
||||||
"mkdir -p /var/lib/ceph/osd/ceph-${cfg.osd0.name}",
|
"mkdir -p /var/lib/ceph/osd/ceph-${cfg.osd0.name}",
|
||||||
@ -114,60 +114,60 @@ let
|
|||||||
"mount /dev/vdc /var/lib/ceph/osd/ceph-${cfg.osd1.name}",
|
"mount /dev/vdc /var/lib/ceph/osd/ceph-${cfg.osd1.name}",
|
||||||
"ceph-authtool --create-keyring /var/lib/ceph/osd/ceph-${cfg.osd0.name}/keyring --name osd.${cfg.osd0.name} --add-key ${cfg.osd0.key}",
|
"ceph-authtool --create-keyring /var/lib/ceph/osd/ceph-${cfg.osd0.name}/keyring --name osd.${cfg.osd0.name} --add-key ${cfg.osd0.key}",
|
||||||
"ceph-authtool --create-keyring /var/lib/ceph/osd/ceph-${cfg.osd1.name}/keyring --name osd.${cfg.osd1.name} --add-key ${cfg.osd1.key}",
|
"ceph-authtool --create-keyring /var/lib/ceph/osd/ceph-${cfg.osd1.name}/keyring --name osd.${cfg.osd1.name} --add-key ${cfg.osd1.key}",
|
||||||
"echo '{\"cephx_secret\": \"${cfg.osd0.key}\"}' | ceph osd new ${cfg.osd0.uuid} -i -",
|
'echo \'{"cephx_secret": "${cfg.osd0.key}"}\' | ceph osd new ${cfg.osd0.uuid} -i -',
|
||||||
"echo '{\"cephx_secret\": \"${cfg.osd1.key}\"}' | ceph osd new ${cfg.osd1.uuid} -i -"
|
'echo \'{"cephx_secret": "${cfg.osd1.key}"}\' | ceph osd new ${cfg.osd1.uuid} -i -',
|
||||||
);
|
)
|
||||||
|
|
||||||
# Initialize the OSDs with regular filestore
|
# Initialize the OSDs with regular filestore
|
||||||
$monA->mustSucceed(
|
monA.succeed(
|
||||||
"ceph-osd -i ${cfg.osd0.name} --mkfs --osd-uuid ${cfg.osd0.uuid}",
|
"ceph-osd -i ${cfg.osd0.name} --mkfs --osd-uuid ${cfg.osd0.uuid}",
|
||||||
"ceph-osd -i ${cfg.osd1.name} --mkfs --osd-uuid ${cfg.osd1.uuid}",
|
"ceph-osd -i ${cfg.osd1.name} --mkfs --osd-uuid ${cfg.osd1.uuid}",
|
||||||
"chown -R ceph:ceph /var/lib/ceph/osd",
|
"chown -R ceph:ceph /var/lib/ceph/osd",
|
||||||
"systemctl start ceph-osd-${cfg.osd0.name}",
|
"systemctl start ceph-osd-${cfg.osd0.name}",
|
||||||
"systemctl start ceph-osd-${cfg.osd1.name}"
|
"systemctl start ceph-osd-${cfg.osd1.name}",
|
||||||
);
|
)
|
||||||
$monA->waitUntilSucceeds("ceph osd stat | grep -e '2 osds: 2 up[^,]*, 2 in'");
|
monA.wait_until_succeeds("ceph osd stat | grep -e '2 osds: 2 up[^,]*, 2 in'")
|
||||||
$monA->waitUntilSucceeds("ceph -s | grep 'mgr: ${cfg.monA.name}(active,'");
|
monA.wait_until_succeeds("ceph -s | grep 'mgr: ${cfg.monA.name}(active,'")
|
||||||
$monA->waitUntilSucceeds("ceph -s | grep 'HEALTH_OK'");
|
monA.wait_until_succeeds("ceph -s | grep 'HEALTH_OK'")
|
||||||
|
|
||||||
$monA->mustSucceed(
|
monA.succeed(
|
||||||
"ceph osd pool create single-node-test 100 100",
|
"ceph osd pool create single-node-test 100 100",
|
||||||
"ceph osd pool ls | grep 'single-node-test'",
|
"ceph osd pool ls | grep 'single-node-test'",
|
||||||
"ceph osd pool rename single-node-test single-node-other-test",
|
"ceph osd pool rename single-node-test single-node-other-test",
|
||||||
"ceph osd pool ls | grep 'single-node-other-test'"
|
"ceph osd pool ls | grep 'single-node-other-test'",
|
||||||
);
|
)
|
||||||
$monA->waitUntilSucceeds("ceph -s | grep '1 pools, 100 pgs'");
|
monA.wait_until_succeeds("ceph -s | grep '1 pools, 100 pgs'")
|
||||||
$monA->mustSucceed(
|
monA.succeed(
|
||||||
"ceph osd getcrushmap -o crush",
|
"ceph osd getcrushmap -o crush",
|
||||||
"crushtool -d crush -o decrushed",
|
"crushtool -d crush -o decrushed",
|
||||||
"sed 's/step chooseleaf firstn 0 type host/step chooseleaf firstn 0 type osd/' decrushed > modcrush",
|
"sed 's/step chooseleaf firstn 0 type host/step chooseleaf firstn 0 type osd/' decrushed > modcrush",
|
||||||
"crushtool -c modcrush -o recrushed",
|
"crushtool -c modcrush -o recrushed",
|
||||||
"ceph osd setcrushmap -i recrushed",
|
"ceph osd setcrushmap -i recrushed",
|
||||||
"ceph osd pool set single-node-other-test size 2"
|
"ceph osd pool set single-node-other-test size 2",
|
||||||
);
|
)
|
||||||
$monA->waitUntilSucceeds("ceph -s | grep 'HEALTH_OK'");
|
monA.wait_until_succeeds("ceph -s | grep 'HEALTH_OK'")
|
||||||
$monA->waitUntilSucceeds("ceph -s | grep '100 active+clean'");
|
monA.wait_until_succeeds("ceph -s | grep '100 active+clean'")
|
||||||
$monA->mustFail(
|
monA.fail(
|
||||||
"ceph osd pool ls | grep 'multi-node-test'",
|
"ceph osd pool ls | grep 'multi-node-test'",
|
||||||
"ceph osd pool delete single-node-other-test single-node-other-test --yes-i-really-really-mean-it"
|
"ceph osd pool delete single-node-other-test single-node-other-test --yes-i-really-really-mean-it",
|
||||||
);
|
)
|
||||||
|
|
||||||
# Shut down ceph by stopping ceph.target.
|
# Shut down ceph by stopping ceph.target.
|
||||||
$monA->mustSucceed("systemctl stop ceph.target");
|
monA.succeed("systemctl stop ceph.target")
|
||||||
|
|
||||||
# Start it up
|
# Start it up
|
||||||
$monA->succeed("systemctl start ceph.target");
|
monA.succeed("systemctl start ceph.target")
|
||||||
$monA->waitForUnit("ceph-mon-${cfg.monA.name}");
|
monA.wait_for_unit("ceph-mon-${cfg.monA.name}")
|
||||||
$monA->waitForUnit("ceph-mgr-${cfg.monA.name}");
|
monA.wait_for_unit("ceph-mgr-${cfg.monA.name}")
|
||||||
$monA->waitForUnit("ceph-osd-${cfg.osd0.name}");
|
monA.wait_for_unit("ceph-osd-${cfg.osd0.name}")
|
||||||
$monA->waitForUnit("ceph-osd-${cfg.osd1.name}");
|
monA.wait_for_unit("ceph-osd-${cfg.osd1.name}")
|
||||||
|
|
||||||
# Ensure the cluster comes back up again
|
# Ensure the cluster comes back up again
|
||||||
$monA->succeed("ceph -s | grep 'mon: 1 daemons'");
|
monA.succeed("ceph -s | grep 'mon: 1 daemons'")
|
||||||
$monA->waitUntilSucceeds("ceph -s | grep 'quorum ${cfg.monA.name}'");
|
monA.wait_until_succeeds("ceph -s | grep 'quorum ${cfg.monA.name}'")
|
||||||
$monA->waitUntilSucceeds("ceph osd stat | grep -e '2 osds: 2 up[^,]*, 2 in'");
|
monA.wait_until_succeeds("ceph osd stat | grep -e '2 osds: 2 up[^,]*, 2 in'")
|
||||||
$monA->waitUntilSucceeds("ceph -s | grep 'mgr: ${cfg.monA.name}(active,'");
|
monA.wait_until_succeeds("ceph -s | grep 'mgr: ${cfg.monA.name}(active,'")
|
||||||
$monA->waitUntilSucceeds("ceph -s | grep 'HEALTH_OK'");
|
monA.wait_until_succeeds("ceph -s | grep 'HEALTH_OK'")
|
||||||
'';
|
'';
|
||||||
in {
|
in {
|
||||||
name = "basic-single-node-ceph-cluster";
|
name = "basic-single-node-ceph-cluster";
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import ./make-test.nix ({ pkgs, ... }: {
|
import ./make-test-python.nix ({ pkgs, ... }: {
|
||||||
name = "clickhouse";
|
name = "clickhouse";
|
||||||
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ma27 ];
|
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ma27 ];
|
||||||
|
|
||||||
@ -14,12 +14,18 @@ import ./make-test.nix ({ pkgs, ... }: {
|
|||||||
selectQuery = pkgs.writeText "select.sql" "SELECT * from `demo`";
|
selectQuery = pkgs.writeText "select.sql" "SELECT * from `demo`";
|
||||||
in
|
in
|
||||||
''
|
''
|
||||||
$machine->start();
|
machine.start()
|
||||||
$machine->waitForUnit("clickhouse.service");
|
machine.wait_for_unit("clickhouse.service")
|
||||||
$machine->waitForOpenPort(9000);
|
machine.wait_for_open_port(9000)
|
||||||
|
|
||||||
$machine->succeed("cat ${tableDDL} | clickhouse-client");
|
machine.succeed(
|
||||||
$machine->succeed("cat ${insertQuery} | clickhouse-client");
|
"cat ${tableDDL} | clickhouse-client"
|
||||||
$machine->succeed("cat ${selectQuery} | clickhouse-client | grep foo");
|
)
|
||||||
|
machine.succeed(
|
||||||
|
"cat ${insertQuery} | clickhouse-client"
|
||||||
|
)
|
||||||
|
machine.succeed(
|
||||||
|
"cat ${selectQuery} | clickhouse-client | grep foo"
|
||||||
|
)
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import ./make-test.nix ({ pkgs, ...} : {
|
import ./make-test-python.nix ({ pkgs, ...} : {
|
||||||
name = "deluge";
|
name = "deluge";
|
||||||
meta = with pkgs.stdenv.lib.maintainers; {
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
maintainers = [ flokli ];
|
maintainers = [ flokli ];
|
||||||
@ -45,18 +45,20 @@ import ./make-test.nix ({ pkgs, ...} : {
|
|||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
startAll;
|
start_all()
|
||||||
|
|
||||||
$simple->waitForUnit("deluged");
|
simple.wait_for_unit("deluged")
|
||||||
$simple->waitForUnit("delugeweb");
|
simple.wait_for_unit("delugeweb")
|
||||||
$simple->waitForOpenPort("8112");
|
simple.wait_for_open_port("8112")
|
||||||
$declarative->waitForUnit("network.target");
|
declarative.wait_for_unit("network.target")
|
||||||
$declarative->waitUntilSucceeds("curl --fail http://simple:8112");
|
declarative.wait_until_succeeds("curl --fail http://simple:8112")
|
||||||
|
|
||||||
$declarative->waitForUnit("deluged");
|
declarative.wait_for_unit("deluged")
|
||||||
$declarative->waitForUnit("delugeweb");
|
declarative.wait_for_unit("delugeweb")
|
||||||
$declarative->waitUntilSucceeds("curl --fail http://declarative:3142");
|
declarative.wait_until_succeeds("curl --fail http://declarative:3142")
|
||||||
$declarative->succeed("deluge-console 'help' | grep -q 'rm - Remove a torrent'");
|
declarative.succeed("deluge-console 'help' | grep -q 'rm - Remove a torrent'")
|
||||||
$declarative->succeed("deluge-console 'connect 127.0.0.1:58846 andrew password; help' | grep -q 'rm - Remove a torrent'");
|
declarative.succeed(
|
||||||
|
"deluge-console 'connect 127.0.0.1:58846 andrew password; help' | grep -q 'rm - Remove a torrent'"
|
||||||
|
)
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import ./make-test.nix {
|
import ./make-test-python.nix {
|
||||||
name = "dovecot";
|
name = "dovecot";
|
||||||
|
|
||||||
machine = { pkgs, ... }: {
|
machine = { pkgs, ... }: {
|
||||||
@ -66,12 +66,12 @@ import ./make-test.nix {
|
|||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
$machine->waitForUnit('postfix.service');
|
machine.wait_for_unit("postfix.service")
|
||||||
$machine->waitForUnit('dovecot2.service');
|
machine.wait_for_unit("dovecot2.service")
|
||||||
$machine->succeed('send-testmail');
|
machine.succeed("send-testmail")
|
||||||
$machine->succeed('send-lda');
|
machine.succeed("send-lda")
|
||||||
$machine->waitUntilFails('[ "$(postqueue -p)" != "Mail queue is empty" ]');
|
machine.wait_until_fails('[ "$(postqueue -p)" != "Mail queue is empty" ]')
|
||||||
$machine->succeed('test-imap');
|
machine.succeed("test-imap")
|
||||||
$machine->succeed('test-pop');
|
machine.succeed("test-pop")
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import ./make-test.nix ({ pkgs, ... } : {
|
import ./make-test-python.nix ({ pkgs, ... } : {
|
||||||
name = "fancontrol";
|
name = "fancontrol";
|
||||||
|
|
||||||
machine =
|
machine =
|
||||||
@ -19,7 +19,10 @@ import ./make-test.nix ({ pkgs, ... } : {
|
|||||||
|
|
||||||
# This configuration cannot be valid for the test VM, so it's expected to get an 'outdated' error.
|
# This configuration cannot be valid for the test VM, so it's expected to get an 'outdated' error.
|
||||||
testScript = ''
|
testScript = ''
|
||||||
$machine->waitForUnit("fancontrol.service");
|
start_all()
|
||||||
$machine->waitUntilSucceeds("journalctl -eu fancontrol | grep 'Configuration appears to be outdated'");
|
machine.wait_for_unit("fancontrol.service")
|
||||||
|
machine.wait_until_succeeds(
|
||||||
|
"journalctl -eu fancontrol | grep 'Configuration appears to be outdated'"
|
||||||
|
)
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# Test the firewall module.
|
# Test the firewall module.
|
||||||
|
|
||||||
import ./make-test.nix ( { pkgs, ... } : {
|
import ./make-test-python.nix ( { pkgs, ... } : {
|
||||||
name = "firewall";
|
name = "firewall";
|
||||||
meta = with pkgs.stdenv.lib.maintainers; {
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
maintainers = [ eelco ];
|
maintainers = [ eelco ];
|
||||||
@ -36,30 +36,30 @@ import ./make-test.nix ( { pkgs, ... } : {
|
|||||||
testScript = { nodes, ... }: let
|
testScript = { nodes, ... }: let
|
||||||
newSystem = nodes.walled2.config.system.build.toplevel;
|
newSystem = nodes.walled2.config.system.build.toplevel;
|
||||||
in ''
|
in ''
|
||||||
$walled->start;
|
start_all()
|
||||||
$attacker->start;
|
|
||||||
|
|
||||||
$walled->waitForUnit("firewall");
|
walled.wait_for_unit("firewall")
|
||||||
$walled->waitForUnit("httpd");
|
walled.wait_for_unit("httpd")
|
||||||
$attacker->waitForUnit("network.target");
|
attacker.wait_for_unit("network.target")
|
||||||
|
|
||||||
# Local connections should still work.
|
# Local connections should still work.
|
||||||
$walled->succeed("curl -v http://localhost/ >&2");
|
walled.succeed("curl -v http://localhost/ >&2")
|
||||||
|
|
||||||
# Connections to the firewalled machine should fail, but ping should succeed.
|
# Connections to the firewalled machine should fail, but ping should succeed.
|
||||||
$attacker->fail("curl --fail --connect-timeout 2 http://walled/ >&2");
|
attacker.fail("curl --fail --connect-timeout 2 http://walled/ >&2")
|
||||||
$attacker->succeed("ping -c 1 walled >&2");
|
attacker.succeed("ping -c 1 walled >&2")
|
||||||
|
|
||||||
# Outgoing connections/pings should still work.
|
# Outgoing connections/pings should still work.
|
||||||
$walled->succeed("curl -v http://attacker/ >&2");
|
walled.succeed("curl -v http://attacker/ >&2")
|
||||||
$walled->succeed("ping -c 1 attacker >&2");
|
walled.succeed("ping -c 1 attacker >&2")
|
||||||
|
|
||||||
# If we stop the firewall, then connections should succeed.
|
# If we stop the firewall, then connections should succeed.
|
||||||
$walled->stopJob("firewall");
|
walled.stop_job("firewall")
|
||||||
$attacker->succeed("curl -v http://walled/ >&2");
|
attacker.succeed("curl -v http://walled/ >&2")
|
||||||
|
|
||||||
# Check whether activation of a new configuration reloads the firewall.
|
# Check whether activation of a new configuration reloads the firewall.
|
||||||
$walled->succeed("${newSystem}/bin/switch-to-configuration test 2>&1" .
|
walled.succeed(
|
||||||
" | grep -qF firewall.service");
|
"${newSystem}/bin/switch-to-configuration test 2>&1 | grep -qF firewall.service"
|
||||||
|
)
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import ./make-test.nix ({ pkgs, ... }: {
|
import ./make-test-python.nix ({ pkgs, ... }: {
|
||||||
name = "fish";
|
name = "fish";
|
||||||
|
|
||||||
machine =
|
machine =
|
||||||
@ -14,8 +14,11 @@ import ./make-test.nix ({ pkgs, ... }: {
|
|||||||
|
|
||||||
testScript =
|
testScript =
|
||||||
''
|
''
|
||||||
$machine->waitForFile("/etc/fish/generated_completions/coreutils.fish");
|
start_all()
|
||||||
$machine->waitForFile("/etc/fish/generated_completions/kill.fish");
|
machine.wait_for_file("/etc/fish/generated_completions/coreutils.fish")
|
||||||
$machine->succeed("fish -ic 'echo \$fish_complete_path' | grep -q '/share/fish/completions /etc/fish/generated_completions /root/.local/share/fish/generated_completions\$'");
|
machine.wait_for_file("/etc/fish/generated_completions/kill.fish")
|
||||||
|
machine.succeed(
|
||||||
|
"fish -ic 'echo $fish_complete_path' | grep -q '/share/fish/completions /etc/fish/generated_completions /root/.local/share/fish/generated_completions$'"
|
||||||
|
)
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import ./make-test.nix ({ pkgs, lib, ... }: {
|
import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||||
name = "fluentd";
|
name = "fluentd";
|
||||||
|
|
||||||
machine = { pkgs, ... }: {
|
machine = { pkgs, ... }: {
|
||||||
@ -33,14 +33,17 @@ import ./make-test.nix ({ pkgs, lib, ... }: {
|
|||||||
inherit testMessage;
|
inherit testMessage;
|
||||||
});
|
});
|
||||||
in ''
|
in ''
|
||||||
$machine->start;
|
machine.start()
|
||||||
$machine->waitForUnit('fluentd.service');
|
machine.wait_for_unit("fluentd.service")
|
||||||
$machine->waitForOpenPort(9880);
|
machine.wait_for_open_port(9880)
|
||||||
|
|
||||||
$machine->succeed("curl -fsSL -X POST -H 'Content-type: application/json' -d @${payload} http://localhost:9880/test.tag");
|
machine.succeed(
|
||||||
|
"curl -fsSL -X POST -H 'Content-type: application/json' -d @${payload} http://localhost:9880/test.tag"
|
||||||
|
)
|
||||||
|
|
||||||
$machine->succeed("systemctl stop fluentd"); # blocking flush
|
# blocking flush
|
||||||
|
machine.succeed("systemctl stop fluentd")
|
||||||
|
|
||||||
$machine->succeed("grep '${testMessage}' /tmp/current-log");
|
machine.succeed("grep '${testMessage}' /tmp/current-log")
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
let
|
let
|
||||||
initialRootPassword = "notproduction";
|
initialRootPassword = "notproduction";
|
||||||
in
|
in
|
||||||
import ./make-test.nix ({ pkgs, lib, ...} : with lib; {
|
import ./make-test-python.nix ({ pkgs, lib, ...} : with lib; {
|
||||||
name = "gitlab";
|
name = "gitlab";
|
||||||
meta = with pkgs.stdenv.lib.maintainers; {
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
maintainers = [ globin ];
|
maintainers = [ globin ];
|
||||||
@ -63,21 +63,35 @@ import ./make-test.nix ({ pkgs, lib, ...} : with lib; {
|
|||||||
});
|
});
|
||||||
in
|
in
|
||||||
''
|
''
|
||||||
$gitlab->start();
|
gitlab.start()
|
||||||
$gitlab->waitForUnit("gitaly.service");
|
gitlab.wait_for_unit("gitaly.service")
|
||||||
$gitlab->waitForUnit("gitlab-workhorse.service");
|
gitlab.wait_for_unit("gitlab-workhorse.service")
|
||||||
$gitlab->waitForUnit("gitlab.service");
|
gitlab.wait_for_unit("gitlab.service")
|
||||||
$gitlab->waitForUnit("gitlab-sidekiq.service");
|
gitlab.wait_for_unit("gitlab-sidekiq.service")
|
||||||
$gitlab->waitForFile("/var/gitlab/state/tmp/sockets/gitlab.socket");
|
gitlab.wait_for_file("/var/gitlab/state/tmp/sockets/gitlab.socket")
|
||||||
$gitlab->waitUntilSucceeds("curl -sSf http://gitlab/users/sign_in");
|
gitlab.wait_until_succeeds("curl -sSf http://gitlab/users/sign_in")
|
||||||
$gitlab->succeed("curl -isSf http://gitlab | grep -i location | grep -q http://gitlab/users/sign_in");
|
gitlab.succeed(
|
||||||
$gitlab->succeed("${pkgs.sudo}/bin/sudo -u gitlab -H gitlab-rake gitlab:check 1>&2");
|
"curl -isSf http://gitlab | grep -i location | grep -q http://gitlab/users/sign_in"
|
||||||
$gitlab->succeed("echo \"Authorization: Bearer \$(curl -X POST -H 'Content-Type: application/json' -d @${auth} http://gitlab/oauth/token | ${pkgs.jq}/bin/jq -r '.access_token')\" >/tmp/headers");
|
)
|
||||||
$gitlab->succeed("curl -X POST -H 'Content-Type: application/json' -H @/tmp/headers -d @${createProject} http://gitlab/api/v4/projects");
|
gitlab.succeed(
|
||||||
$gitlab->succeed("curl -X POST -H 'Content-Type: application/json' -H @/tmp/headers -d @${putFile} http://gitlab/api/v4/projects/1/repository/files/some-file.txt");
|
"${pkgs.sudo}/bin/sudo -u gitlab -H gitlab-rake gitlab:check 1>&2"
|
||||||
$gitlab->succeed("curl -H @/tmp/headers http://gitlab/api/v4/projects/1/repository/archive.tar.gz > /tmp/archive.tar.gz");
|
)
|
||||||
$gitlab->succeed("curl -H @/tmp/headers http://gitlab/api/v4/projects/1/repository/archive.tar.bz2 > /tmp/archive.tar.bz2");
|
gitlab.succeed(
|
||||||
$gitlab->succeed("test -s /tmp/archive.tar.gz");
|
"echo \"Authorization: Bearer \$(curl -X POST -H 'Content-Type: application/json' -d @${auth} http://gitlab/oauth/token | ${pkgs.jq}/bin/jq -r '.access_token')\" >/tmp/headers"
|
||||||
$gitlab->succeed("test -s /tmp/archive.tar.bz2");
|
)
|
||||||
|
gitlab.succeed(
|
||||||
|
"curl -X POST -H 'Content-Type: application/json' -H @/tmp/headers -d @${createProject} http://gitlab/api/v4/projects"
|
||||||
|
)
|
||||||
|
gitlab.succeed(
|
||||||
|
"curl -X POST -H 'Content-Type: application/json' -H @/tmp/headers -d @${putFile} http://gitlab/api/v4/projects/1/repository/files/some-file.txt"
|
||||||
|
)
|
||||||
|
gitlab.succeed(
|
||||||
|
"curl -H @/tmp/headers http://gitlab/api/v4/projects/1/repository/archive.tar.gz > /tmp/archive.tar.gz"
|
||||||
|
)
|
||||||
|
gitlab.succeed(
|
||||||
|
"curl -H @/tmp/headers http://gitlab/api/v4/projects/1/repository/archive.tar.bz2 > /tmp/archive.tar.bz2"
|
||||||
|
)
|
||||||
|
gitlab.succeed("test -s /tmp/archive.tar.gz")
|
||||||
|
gitlab.succeed("test -s /tmp/archive.tar.bz2")
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import ./make-test.nix ({ ... } :
|
import ./make-test-python.nix ({pkgs, lib, ...}:
|
||||||
|
|
||||||
let
|
let
|
||||||
client = { pkgs, ... } : {
|
client = { pkgs, ... } : {
|
||||||
@ -39,27 +39,29 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
$server1->waitForUnit("glusterd.service");
|
server1.wait_for_unit("glusterd.service")
|
||||||
$server2->waitForUnit("glusterd.service");
|
server2.wait_for_unit("glusterd.service")
|
||||||
|
|
||||||
|
server1.wait_until_succeeds("gluster peer status")
|
||||||
|
server2.wait_until_succeeds("gluster peer status")
|
||||||
|
|
||||||
# establish initial contact
|
# establish initial contact
|
||||||
$server1->succeed("sleep 2");
|
server1.succeed("gluster peer probe server2")
|
||||||
$server1->succeed("gluster peer probe server2");
|
server1.succeed("gluster peer probe server1")
|
||||||
$server1->succeed("gluster peer probe server1");
|
|
||||||
|
|
||||||
$server1->succeed("gluster peer status | grep Connected");
|
server1.succeed("gluster peer status | grep Connected")
|
||||||
|
|
||||||
# create volumes
|
# create volumes
|
||||||
$server1->succeed("mkdir -p /data/vg0");
|
server1.succeed("mkdir -p /data/vg0")
|
||||||
$server2->succeed("mkdir -p /data/vg0");
|
server2.succeed("mkdir -p /data/vg0")
|
||||||
$server1->succeed("gluster volume create gv0 server1:/data/vg0 server2:/data/vg0");
|
server1.succeed("gluster volume create gv0 server1:/data/vg0 server2:/data/vg0")
|
||||||
$server1->succeed("gluster volume start gv0");
|
server1.succeed("gluster volume start gv0")
|
||||||
|
|
||||||
# test clients
|
# test clients
|
||||||
$client1->waitForUnit("gluster.mount");
|
client1.wait_for_unit("gluster.mount")
|
||||||
$client2->waitForUnit("gluster.mount");
|
client2.wait_for_unit("gluster.mount")
|
||||||
|
|
||||||
$client1->succeed("echo test > /gluster/file1");
|
client1.succeed("echo test > /gluster/file1")
|
||||||
$client2->succeed("grep test /gluster/file1");
|
client2.succeed("grep test /gluster/file1")
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import ./make-test.nix ({ pkgs, ... }:
|
import ./make-test-python.nix ({ pkgs, ... }:
|
||||||
let
|
let
|
||||||
# Download Big Buck Bunny example, licensed under CC Attribution 3.0.
|
# Download Big Buck Bunny example, licensed under CC Attribution 3.0.
|
||||||
testMkv = pkgs.fetchurl {
|
testMkv = pkgs.fetchurl {
|
||||||
@ -19,7 +19,13 @@ in {
|
|||||||
testScript = ''
|
testScript = ''
|
||||||
# Test MP4 and MKV transcoding. Since this is a short clip, transcoding typically
|
# Test MP4 and MKV transcoding. Since this is a short clip, transcoding typically
|
||||||
# only takes a few seconds.
|
# only takes a few seconds.
|
||||||
$machine->succeed("HandBrakeCLI -i ${testMkv} -o test.mp4 -e x264 -q 20 -B 160");
|
start_all()
|
||||||
$machine->succeed("HandBrakeCLI -i ${testMkv} -o test.mkv -e x264 -q 20 -B 160");
|
|
||||||
|
machine.succeed(
|
||||||
|
"HandBrakeCLI -i ${testMkv} -o test.mp4 -e x264 -q 20 -B 160"
|
||||||
|
)
|
||||||
|
machine.succeed(
|
||||||
|
"HandBrakeCLI -i ${testMkv} -o test.mkv -e x264 -q 20 -B 160"
|
||||||
|
)
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# Test whether hibernation from partition works.
|
# Test whether hibernation from partition works.
|
||||||
|
|
||||||
import ./make-test.nix (pkgs: {
|
import ./make-test-python.nix (pkgs: {
|
||||||
name = "hibernate";
|
name = "hibernate";
|
||||||
|
|
||||||
nodes = {
|
nodes = {
|
||||||
@ -28,16 +28,17 @@ import ./make-test.nix (pkgs: {
|
|||||||
|
|
||||||
testScript =
|
testScript =
|
||||||
''
|
''
|
||||||
$machine->waitForUnit("multi-user.target");
|
machine.start()
|
||||||
$machine->succeed("mkswap /dev/vdb");
|
machine.wait_for_unit("multi-user.target")
|
||||||
$machine->succeed("swapon -a");
|
machine.succeed("mkswap /dev/vdb")
|
||||||
$machine->startJob("listener");
|
machine.succeed("swapon -a")
|
||||||
$machine->waitForOpenPort(4444);
|
machine.start_job("listener")
|
||||||
$machine->succeed("systemctl hibernate &");
|
machine.wait_for_open_port(4444)
|
||||||
$machine->waitForShutdown;
|
machine.succeed("systemctl hibernate &")
|
||||||
$probe->waitForUnit("multi-user.target");
|
machine.wait_for_shutdown()
|
||||||
$machine->start;
|
probe.wait_for_unit("multi-user.target")
|
||||||
$probe->waitUntilSucceeds("echo test | nc machine 4444 -N");
|
machine.start()
|
||||||
|
probe.wait_until_succeeds("echo test | nc machine 4444 -N")
|
||||||
'';
|
'';
|
||||||
|
|
||||||
})
|
})
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Test whether `houndd` indexes nixpkgs
|
# Test whether `houndd` indexes nixpkgs
|
||||||
import ./make-test.nix ({ pkgs, ... } : {
|
import ./make-test-python.nix ({ pkgs, ... } : {
|
||||||
name = "hound";
|
name = "hound";
|
||||||
meta = with pkgs.stdenv.lib.maintainers; {
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
maintainers = [ grahamc ];
|
maintainers = [ grahamc ];
|
||||||
@ -46,13 +46,14 @@ import ./make-test.nix ({ pkgs, ... } : {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
testScript =
|
testScript = ''
|
||||||
'' startAll;
|
start_all()
|
||||||
|
|
||||||
$machine->waitForUnit("network.target");
|
|
||||||
$machine->waitForUnit("hound.service");
|
|
||||||
$machine->waitForOpenPort(6080);
|
|
||||||
$machine->waitUntilSucceeds('curl http://127.0.0.1:6080/api/v1/search\?stats\=fosho\&repos\=\*\&rng=%3A20\&q\=hi\&files\=\&i=nope | grep "Filename" | grep "hello"');
|
|
||||||
|
|
||||||
|
machine.wait_for_unit("network.target")
|
||||||
|
machine.wait_for_unit("hound.service")
|
||||||
|
machine.wait_for_open_port(6080)
|
||||||
|
machine.wait_until_succeeds(
|
||||||
|
"curl http://127.0.0.1:6080/api/v1/search\?stats\=fosho\&repos\=\*\&rng=%3A20\&q\=hi\&files\=\&i=nope | grep 'Filename' | grep 'hello'"
|
||||||
|
)
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import ./make-test.nix ({ pkgs, ... }: {
|
import ./make-test-python.nix ({ pkgs, ... }: {
|
||||||
name = "icingaweb2";
|
name = "icingaweb2";
|
||||||
meta = with pkgs.stdenv.lib.maintainers; {
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
maintainers = [ das_j ];
|
maintainers = [ das_j ];
|
||||||
@ -64,8 +64,8 @@ import ./make-test.nix ({ pkgs, ... }: {
|
|||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
startAll();
|
start_all()
|
||||||
$icingaweb2->waitForUnit("multi-user.target");
|
icingaweb2.wait_for_unit("multi-user.target")
|
||||||
$icingaweb2->succeed("curl -sSf http://icingaweb2/authentication/login");
|
icingaweb2.succeed("curl -sSf http://icingaweb2/authentication/login")
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import ./make-test.nix ({ pkgs, lib, ... }:
|
import ./make-test-python.nix ({ pkgs, lib, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "incron";
|
name = "incron";
|
||||||
@ -19,34 +19,34 @@ import ./make-test.nix ({ pkgs, lib, ... }:
|
|||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
startAll;
|
start_all()
|
||||||
|
|
||||||
$machine->waitForUnit("multi-user.target");
|
machine.wait_for_unit("multi-user.target")
|
||||||
$machine->waitForUnit("incron.service");
|
machine.wait_for_unit("incron.service")
|
||||||
|
|
||||||
$machine->succeed("test -d /test");
|
machine.succeed("test -d /test")
|
||||||
# create some activity for incron to monitor
|
# create some activity for incron to monitor
|
||||||
$machine->succeed("touch /test/file");
|
machine.succeed("touch /test/file")
|
||||||
$machine->succeed("echo foo >> /test/file");
|
machine.succeed("echo foo >> /test/file")
|
||||||
$machine->succeed("mv /test/file /root");
|
machine.succeed("mv /test/file /root")
|
||||||
$machine->succeed("mv /root/file /test");
|
machine.succeed("mv /root/file /test")
|
||||||
|
|
||||||
$machine->sleep(1);
|
machine.sleep(1)
|
||||||
|
|
||||||
# touch /test/file
|
# touch /test/file
|
||||||
$machine->succeed("grep '/test/file IN_CREATE' /root/incron.log");
|
machine.succeed("grep '/test/file IN_CREATE' /root/incron.log")
|
||||||
|
|
||||||
# echo foo >> /test/file
|
# echo foo >> /test/file
|
||||||
$machine->succeed("grep '/test/file IN_MODIFY' /root/incron.log");
|
machine.succeed("grep '/test/file IN_MODIFY' /root/incron.log")
|
||||||
$machine->succeed("grep '/test/file IN_CLOSE_WRITE' /root/incron.log");
|
machine.succeed("grep '/test/file IN_CLOSE_WRITE' /root/incron.log")
|
||||||
|
|
||||||
# mv /test/file /root
|
# mv /test/file /root
|
||||||
$machine->succeed("grep '/test/file IN_MOVED_FROM' /root/incron.log");
|
machine.succeed("grep '/test/file IN_MOVED_FROM' /root/incron.log")
|
||||||
|
|
||||||
# mv /root/file /test
|
# mv /root/file /test
|
||||||
$machine->succeed("grep '/test/file IN_MOVED_TO' /root/incron.log");
|
machine.succeed("grep '/test/file IN_MOVED_TO' /root/incron.log")
|
||||||
|
|
||||||
# ensure something unexpected is not present
|
# ensure something unexpected is not present
|
||||||
$machine->fail("grep 'IN_OPEN' /root/incron.log");
|
machine.fail("grep 'IN_OPEN' /root/incron.log")
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import ./make-test.nix ({ lib, ... }:
|
import ./make-test-python.nix ({ lib, ... }:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
|
|
||||||
@ -11,8 +11,9 @@ with lib;
|
|||||||
{ services.jackett.enable = true; };
|
{ services.jackett.enable = true; };
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
$machine->waitForUnit('jackett.service');
|
machine.start()
|
||||||
$machine->waitForOpenPort('9117');
|
machine.wait_for_unit("jackett.service")
|
||||||
$machine->succeed("curl --fail http://localhost:9117/");
|
machine.wait_for_open_port(9117)
|
||||||
|
machine.succeed("curl --fail http://localhost:9117/")
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import ../make-test.nix ({pkgs, ...}: {
|
import ../make-test-python.nix ({pkgs, ...}: {
|
||||||
name = "kerberos_server-heimdal";
|
name = "kerberos_server-heimdal";
|
||||||
machine = { config, libs, pkgs, ...}:
|
machine = { config, libs, pkgs, ...}:
|
||||||
{ services.kerberos_server =
|
{ services.kerberos_server =
|
||||||
@ -23,31 +23,20 @@ import ../make-test.nix ({pkgs, ...}: {
|
|||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
$machine->start;
|
machine.succeed(
|
||||||
|
"kadmin -l init --realm-max-ticket-life='8 day' --realm-max-renewable-life='10 day' FOO.BAR",
|
||||||
|
"systemctl restart kadmind.service kdc.service",
|
||||||
|
)
|
||||||
|
|
||||||
$machine->succeed(
|
for unit in ["kadmind", "kdc", "kpasswdd"]:
|
||||||
"kadmin -l init --realm-max-ticket-life='8 day' \\
|
machine.wait_for_unit(f"{unit}.service")
|
||||||
--realm-max-renewable-life='10 day' FOO.BAR"
|
|
||||||
);
|
|
||||||
|
|
||||||
$machine->succeed("systemctl restart kadmind.service kdc.service");
|
machine.succeed(
|
||||||
$machine->waitForUnit("kadmind.service");
|
"kadmin -l add --password=admin_pw --use-defaults admin",
|
||||||
$machine->waitForUnit("kdc.service");
|
"kadmin -l ext_keytab --keytab=admin.keytab admin",
|
||||||
$machine->waitForUnit("kpasswdd.service");
|
"kadmin -p admin -K admin.keytab add --password=alice_pw --use-defaults alice",
|
||||||
|
"kadmin -l ext_keytab --keytab=alice.keytab alice",
|
||||||
$machine->succeed(
|
"kinit -kt alice.keytab alice",
|
||||||
"kadmin -l add --password=admin_pw --use-defaults admin"
|
)
|
||||||
);
|
|
||||||
$machine->succeed(
|
|
||||||
"kadmin -l ext_keytab --keytab=admin.keytab admin"
|
|
||||||
);
|
|
||||||
$machine->succeed(
|
|
||||||
"kadmin -p admin -K admin.keytab add --password=alice_pw --use-defaults \\
|
|
||||||
alice"
|
|
||||||
);
|
|
||||||
$machine->succeed(
|
|
||||||
"kadmin -l ext_keytab --keytab=alice.keytab alice"
|
|
||||||
);
|
|
||||||
$machine->succeed("kinit -kt alice.keytab alice");
|
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import ../make-test.nix ({pkgs, ...}: {
|
import ../make-test-python.nix ({pkgs, ...}: {
|
||||||
name = "kerberos_server-mit";
|
name = "kerberos_server-mit";
|
||||||
machine = { config, libs, pkgs, ...}:
|
machine = { config, libs, pkgs, ...}:
|
||||||
{ services.kerberos_server =
|
{ services.kerberos_server =
|
||||||
@ -24,22 +24,18 @@ import ../make-test.nix ({pkgs, ...}: {
|
|||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
$machine->start;
|
machine.succeed(
|
||||||
|
"kdb5_util create -s -r FOO.BAR -P master_key",
|
||||||
|
"systemctl restart kadmind.service kdc.service",
|
||||||
|
)
|
||||||
|
|
||||||
$machine->succeed(
|
for unit in ["kadmind", "kdc"]:
|
||||||
"kdb5_util create -s -r FOO.BAR -P master_key"
|
machine.wait_for_unit(f"{unit}.service")
|
||||||
);
|
|
||||||
|
|
||||||
$machine->succeed("systemctl restart kadmind.service kdc.service");
|
machine.succeed(
|
||||||
$machine->waitForUnit("kadmind.service");
|
"kadmin.local add_principal -pw admin_pw admin",
|
||||||
$machine->waitForUnit("kdc.service");
|
"kadmin -p admin -w admin_pw addprinc -pw alice_pw alice",
|
||||||
|
"echo alice_pw | sudo -u alice kinit",
|
||||||
$machine->succeed(
|
)
|
||||||
"kadmin.local add_principal -pw admin_pw admin"
|
|
||||||
);
|
|
||||||
$machine->succeed(
|
|
||||||
"kadmin -p admin -w admin_pw addprinc -pw alice_pw alice"
|
|
||||||
);
|
|
||||||
$machine->succeed("echo alice_pw | sudo -u alice kinit");
|
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import ./make-test.nix ({ pkgs, ... }: {
|
import ./make-test-python.nix ({ pkgs, ... }: {
|
||||||
name = "minidlna";
|
name = "minidlna";
|
||||||
|
|
||||||
nodes = {
|
nodes = {
|
||||||
@ -29,11 +29,11 @@ import ./make-test.nix ({ pkgs, ... }: {
|
|||||||
|
|
||||||
testScript =
|
testScript =
|
||||||
''
|
''
|
||||||
startAll;
|
start_all()
|
||||||
$server->succeed("mkdir -p /tmp/stuff && chown minidlna: /tmp/stuff");
|
server.succeed("mkdir -p /tmp/stuff && chown minidlna: /tmp/stuff")
|
||||||
$server->waitForUnit("minidlna");
|
server.wait_for_unit("minidlna")
|
||||||
$server->waitForOpenPort("8200");
|
server.wait_for_open_port("8200")
|
||||||
$server->succeed("curl --fail http://localhost:8200/");
|
server.succeed("curl --fail http://localhost:8200/")
|
||||||
$client->succeed("curl --fail http://server:8200/");
|
client.succeed("curl --fail http://server:8200/")
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import ./make-test.nix ({ pkgs, lib, ... }:
|
import ./make-test-python.nix ({ pkgs, lib, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
port = 3142;
|
port = 3142;
|
||||||
@ -37,16 +37,20 @@ with lib;
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
testScript = ''
|
testScript = ''
|
||||||
startAll;
|
start_all()
|
||||||
|
|
||||||
$default->waitForUnit('miniflux.service');
|
default.wait_for_unit("miniflux.service")
|
||||||
$default->waitForOpenPort(${toString defaultPort});
|
default.wait_for_open_port(${toString defaultPort})
|
||||||
$default->succeed("curl --fail 'http://localhost:${toString defaultPort}/healthcheck' | grep -q OK");
|
default.succeed("curl --fail 'http://localhost:${toString defaultPort}/healthcheck' | grep -q OK")
|
||||||
$default->succeed("curl 'http://localhost:${toString defaultPort}/v1/me' -u '${defaultUsername}:${defaultPassword}' -H Content-Type:application/json | grep -q '\"is_admin\":true'");
|
default.succeed(
|
||||||
|
"curl 'http://localhost:${toString defaultPort}/v1/me' -u '${defaultUsername}:${defaultPassword}' -H Content-Type:application/json | grep -q '\"is_admin\":true'"
|
||||||
|
)
|
||||||
|
|
||||||
$customized->waitForUnit('miniflux.service');
|
customized.wait_for_unit("miniflux.service")
|
||||||
$customized->waitForOpenPort(${toString port});
|
customized.wait_for_open_port(${toString port})
|
||||||
$customized->succeed("curl --fail 'http://localhost:${toString port}/healthcheck' | grep -q OK");
|
customized.succeed("curl --fail 'http://localhost:${toString port}/healthcheck' | grep -q OK")
|
||||||
$customized->succeed("curl 'http://localhost:${toString port}/v1/me' -u '${username}:${password}' -H Content-Type:application/json | grep -q '\"is_admin\":true'");
|
customized.succeed(
|
||||||
|
"curl 'http://localhost:${toString port}/v1/me' -u '${username}:${password}' -H Content-Type:application/json | grep -q '\"is_admin\":true'"
|
||||||
|
)
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# This test start mongodb, runs a query using mongo shell
|
# This test start mongodb, runs a query using mongo shell
|
||||||
|
|
||||||
import ./make-test.nix ({ pkgs, ...} : let
|
import ./make-test-python.nix ({ pkgs, ...} : let
|
||||||
testQuery = pkgs.writeScript "nixtest.js" ''
|
testQuery = pkgs.writeScript "nixtest.js" ''
|
||||||
db.greetings.insert({ "greeting": "hello" });
|
db.greetings.insert({ "greeting": "hello" });
|
||||||
print(db.greetings.findOne().greeting);
|
print(db.greetings.findOne().greeting);
|
||||||
@ -33,8 +33,10 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
startAll;
|
start_all()
|
||||||
$one->waitForUnit("mongodb.service");
|
one.wait_for_unit("mongodb.service")
|
||||||
$one->succeed("mongo -u nixtest -p nixtest nixtest ${testQuery}") =~ /hello/ or die;
|
one.succeed(
|
||||||
|
"mongo -u nixtest -p nixtest nixtest ${testQuery} | grep -q hello"
|
||||||
|
)
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -1,21 +1,10 @@
|
|||||||
import ./make-test.nix ({ pkgs, ... }:
|
import ./make-test-python.nix ({ pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
port = 1888;
|
port = 1888;
|
||||||
username = "mqtt";
|
username = "mqtt";
|
||||||
password = "VERY_secret";
|
password = "VERY_secret";
|
||||||
topic = "test/foo";
|
topic = "test/foo";
|
||||||
|
|
||||||
cmd = bin: pkgs.lib.concatStringsSep " " [
|
|
||||||
"${pkgs.mosquitto}/bin/mosquitto_${bin}"
|
|
||||||
"-V mqttv311"
|
|
||||||
"-h server"
|
|
||||||
"-p ${toString port}"
|
|
||||||
"-u ${username}"
|
|
||||||
"-P '${password}'"
|
|
||||||
"-t ${topic}"
|
|
||||||
];
|
|
||||||
|
|
||||||
in {
|
in {
|
||||||
name = "mosquitto";
|
name = "mosquitto";
|
||||||
meta = with pkgs.stdenv.lib; {
|
meta = with pkgs.stdenv.lib; {
|
||||||
@ -49,40 +38,53 @@ in {
|
|||||||
|
|
||||||
testScript = let
|
testScript = let
|
||||||
file = "/tmp/msg";
|
file = "/tmp/msg";
|
||||||
sub = args:
|
|
||||||
"(${cmd "sub"} -C 1 ${args} | tee ${file} &)";
|
|
||||||
in ''
|
in ''
|
||||||
startAll;
|
def mosquitto_cmd(binary):
|
||||||
$server->waitForUnit("mosquitto.service");
|
return (
|
||||||
|
"${pkgs.mosquitto}/bin/mosquitto_{} "
|
||||||
|
"-V mqttv311 "
|
||||||
|
"-h server "
|
||||||
|
"-p ${toString port} "
|
||||||
|
"-u ${username} "
|
||||||
|
"-P '${password}' "
|
||||||
|
"-t ${topic}"
|
||||||
|
).format(binary)
|
||||||
|
|
||||||
$server->fail("test -f ${file}");
|
|
||||||
$client1->fail("test -f ${file}");
|
|
||||||
$client2->fail("test -f ${file}");
|
|
||||||
|
|
||||||
|
def publish(args):
|
||||||
|
return "{} {}".format(mosquitto_cmd("pub"), args)
|
||||||
|
|
||||||
|
|
||||||
|
def subscribe(args):
|
||||||
|
return "({} -C 1 {} | tee ${file} &)".format(mosquitto_cmd("sub"), args)
|
||||||
|
|
||||||
|
|
||||||
|
start_all()
|
||||||
|
server.wait_for_unit("mosquitto.service")
|
||||||
|
|
||||||
|
for machine in server, client1, client2:
|
||||||
|
machine.fail("test -f ${file}")
|
||||||
|
|
||||||
# QoS = 0, so only one subscribers should get it
|
# QoS = 0, so only one subscribers should get it
|
||||||
$server->execute("${sub "-q 0"}");
|
server.execute(subscribe("-q 0"))
|
||||||
|
|
||||||
# we need to give the subscribers some time to connect
|
# we need to give the subscribers some time to connect
|
||||||
$client2->execute("sleep 5");
|
client2.execute("sleep 5")
|
||||||
$client2->succeed("${cmd "pub"} -m FOO -q 0");
|
client2.succeed(publish("-m FOO -q 0"))
|
||||||
|
|
||||||
$server->waitUntilSucceeds("grep -q FOO ${file}");
|
|
||||||
$server->execute("rm ${file}");
|
|
||||||
|
|
||||||
|
server.wait_until_succeeds("grep -q FOO ${file}")
|
||||||
|
server.execute("rm ${file}")
|
||||||
|
|
||||||
# QoS = 1, so both subscribers should get it
|
# QoS = 1, so both subscribers should get it
|
||||||
$server->execute("${sub "-q 1"}");
|
server.execute(subscribe("-q 1"))
|
||||||
$client1->execute("${sub "-q 1"}");
|
client1.execute(subscribe("-q 1"))
|
||||||
|
|
||||||
# we need to give the subscribers some time to connect
|
# we need to give the subscribers some time to connect
|
||||||
$client2->execute("sleep 5");
|
client2.execute("sleep 5")
|
||||||
$client2->succeed("${cmd "pub"} -m BAR -q 1");
|
client2.succeed(publish("-m BAR -q 1"))
|
||||||
|
|
||||||
$server->waitUntilSucceeds("grep -q BAR ${file}");
|
for machine in server, client1:
|
||||||
$server->execute("rm ${file}");
|
machine.wait_until_succeeds("grep -q BAR ${file}")
|
||||||
|
machine.execute("rm ${file}")
|
||||||
$client1->waitUntilSucceeds("grep -q BAR ${file}");
|
|
||||||
$client1->execute("rm ${file}");
|
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import ./make-test.nix ({ pkgs, lib, ... }:
|
import ./make-test-python.nix ({ pkgs, lib, ... }:
|
||||||
let
|
let
|
||||||
track = pkgs.fetchurl {
|
track = pkgs.fetchurl {
|
||||||
# Sourced from http://freemusicarchive.org/music/Blue_Wave_Theory/Surf_Music_Month_Challenge/Skyhawk_Beach_fade_in
|
# Sourced from http://freemusicarchive.org/music/Blue_Wave_Theory/Surf_Music_Month_Challenge/Skyhawk_Beach_fade_in
|
||||||
@ -94,40 +94,39 @@ import ./make-test.nix ({ pkgs, lib, ... }:
|
|||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
my $mpc = "${pkgs.mpc_cli}/bin/mpc --wait";
|
mpc = "${pkgs.mpc_cli}/bin/mpc --wait"
|
||||||
|
|
||||||
# Connects to the given server and attempts to play a tune.
|
# Connects to the given server and attempts to play a tune.
|
||||||
sub play_some_music {
|
def play_some_music(server):
|
||||||
my $server = $_[0];
|
server.wait_for_unit("mpd.service")
|
||||||
|
server.succeed(f"{mpc} update")
|
||||||
|
_, tracks = server.execute(f"{mpc} ls")
|
||||||
|
|
||||||
$server->waitForUnit("mpd.service");
|
for track in tracks.splitlines():
|
||||||
$server->succeed("$mpc update");
|
server.succeed(f"{mpc} add {track}")
|
||||||
my @tracks = $server->execute("$mpc ls");
|
|
||||||
|
|
||||||
for my $track (split(/\n/, $tracks[1])) {
|
_, added_tracks = server.execute(f"{mpc} listall")
|
||||||
$server->succeed("$mpc add $track");
|
|
||||||
};
|
|
||||||
|
|
||||||
my @added_tracks = $server->execute("$mpc listall");
|
# Check we succeeded adding audio tracks to the playlist
|
||||||
(length $added_tracks[1]) > 0 or die "Failed to add audio tracks to the playlist.";
|
assert len(added_tracks.splitlines()) > 0
|
||||||
|
|
||||||
$server->succeed("$mpc play");
|
server.succeed(f"{mpc} play")
|
||||||
|
|
||||||
my @status = $server->execute("$mpc status");
|
_, output = server.execute(f"{mpc} status")
|
||||||
my @output = split(/\n/, $status[1]);
|
# Assure audio track is playing
|
||||||
$output[1] =~ /.*playing.*/ or die "Audio track is not playing, as expected.";
|
assert "playing" in output
|
||||||
|
|
||||||
$server->succeed("$mpc stop");
|
server.succeed(f"{mpc} stop")
|
||||||
};
|
|
||||||
|
|
||||||
play_some_music($serverALSA);
|
|
||||||
play_some_music($serverPulseAudio);
|
|
||||||
|
|
||||||
$client->waitForUnit("multi-user.target");
|
play_some_music(serverALSA)
|
||||||
$client->succeed("$mpc -h serverALSA status");
|
play_some_music(serverPulseAudio)
|
||||||
|
|
||||||
|
client.wait_for_unit("multi-user.target")
|
||||||
|
client.succeed(f"{mpc} -h serverALSA status")
|
||||||
|
|
||||||
# The PulseAudio-based server is configured not to accept external client connections
|
# The PulseAudio-based server is configured not to accept external client connections
|
||||||
# to perform the following test:
|
# to perform the following test:
|
||||||
$client->fail("$mpc -h serverPulseAudio status");
|
client.fail(f"{mpc} -h serverPulseAudio status")
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import ./make-test.nix {
|
import ./make-test-python.nix {
|
||||||
name = "neo4j";
|
name = "neo4j";
|
||||||
|
|
||||||
nodes = {
|
nodes = {
|
||||||
@ -11,10 +11,10 @@ import ./make-test.nix {
|
|||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
startAll;
|
start_all()
|
||||||
|
|
||||||
$master->waitForUnit("neo4j");
|
master.wait_for_unit("neo4j")
|
||||||
$master->sleep(20); # Hopefully this is long enough!!
|
master.wait_for_open_port(7474)
|
||||||
$master->succeed("curl http://localhost:7474/");
|
master.succeed("curl http://localhost:7474/")
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
@ -21,11 +21,10 @@ import ./make-test-python.nix ({ pkgs, ...} : {
|
|||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
$roundcube->start;
|
roundcube.start
|
||||||
$roundcube->waitForUnit("postgresql.service");
|
roundcube.wait_for_unit("postgresql.service")
|
||||||
$roundcube->waitForUnit("roundcube-setup.service");
|
roundcube.wait_for_unit("phpfpm-roundcube.service")
|
||||||
$roundcube->waitForUnit("phpfpm-roundcube.service");
|
roundcube.wait_for_unit("nginx.service")
|
||||||
$roundcube->waitForUnit("nginx.service");
|
roundcube.succeed("curl -sSfL http://roundcube/ | grep 'Keep me logged in'")
|
||||||
$roundcube->succeed("curl -sSfL http://roundcube/ | grep 'Keep me logged in'");
|
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import ./make-test.nix ({ ... } :
|
import ./make-test-python.nix ({ ... } :
|
||||||
|
|
||||||
let
|
let
|
||||||
node = { pkgs, ... } : {
|
node = { pkgs, ... } : {
|
||||||
@ -26,27 +26,21 @@ in {
|
|||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
# Test if rxe interface comes up
|
# Test if rxe interface comes up
|
||||||
$server->waitForUnit("default.target");
|
server.wait_for_unit("default.target")
|
||||||
$server->succeed("systemctl status rxe.service");
|
server.succeed("systemctl status rxe.service")
|
||||||
$server->succeed("ibv_devices | grep rxe0");
|
server.succeed("ibv_devices | grep rxe0")
|
||||||
|
|
||||||
$client->waitForUnit("default.target");
|
client.wait_for_unit("default.target")
|
||||||
|
|
||||||
# ping pong test
|
# ping pong tests
|
||||||
$server->succeed("screen -dmS rc_pingpong ibv_rc_pingpong -p 4800 -g0");
|
for proto in "rc", "uc", "ud", "srq":
|
||||||
$client->succeed("sleep 2; ibv_rc_pingpong -p 4800 -g0 server");
|
server.succeed(
|
||||||
|
"screen -dmS {0}_pingpong ibv_{0}_pingpong -p 4800 -s 1024 -g0".format(proto)
|
||||||
|
)
|
||||||
|
client.succeed("sleep 2; ibv_{}_pingpong -p 4800 -s 1024 -g0 server".format(proto))
|
||||||
|
|
||||||
$server->succeed("screen -dmS uc_pingpong ibv_uc_pingpong -p 4800 -g0");
|
server.succeed("screen -dmS rping rping -s -a server -C 10")
|
||||||
$client->succeed("sleep 2; ibv_uc_pingpong -p 4800 -g0 server");
|
client.succeed("sleep 2; rping -c -a server -C 10")
|
||||||
|
|
||||||
$server->succeed("screen -dmS ud_pingpong ibv_ud_pingpong -p 4800 -s 1024 -g0");
|
|
||||||
$client->succeed("sleep 2; ibv_ud_pingpong -p 4800 -s 1024 -g0 server");
|
|
||||||
|
|
||||||
$server->succeed("screen -dmS srq_pingpong ibv_srq_pingpong -p 4800 -g0");
|
|
||||||
$client->succeed("sleep 2; ibv_srq_pingpong -p 4800 -g0 server");
|
|
||||||
|
|
||||||
$server->succeed("screen -dmS rping rping -s -a server -C 10");
|
|
||||||
$client->succeed("sleep 2; rping -c -a server -C 10");
|
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ let generateNodeConf = { lib, pkgs, config, privkpath, pubk, peerId, nodeId, ...
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in import ./make-test.nix ({pkgs, ... }: {
|
in import ./make-test-python.nix ({pkgs, ... }: {
|
||||||
name = "networkd-wireguard";
|
name = "networkd-wireguard";
|
||||||
meta = with pkgs.stdenv.lib.maintainers; {
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
maintainers = [ ninjatrappeur ];
|
maintainers = [ ninjatrappeur ];
|
||||||
@ -70,12 +70,12 @@ in import ./make-test.nix ({pkgs, ... }: {
|
|||||||
in generateNodeConf (attrs // localConf);
|
in generateNodeConf (attrs // localConf);
|
||||||
};
|
};
|
||||||
testScript = ''
|
testScript = ''
|
||||||
startAll;
|
start_all()
|
||||||
$node1->waitForUnit('systemd-networkd-wait-online.service');
|
node1.wait_for_unit("systemd-networkd-wait-online.service")
|
||||||
$node2->waitForUnit('systemd-networkd-wait-online.service');
|
node2.wait_for_unit("systemd-networkd-wait-online.service")
|
||||||
$node1->succeed('ping -c 5 10.0.0.2');
|
node1.succeed("ping -c 5 10.0.0.2")
|
||||||
$node2->succeed('ping -c 5 10.0.0.1');
|
node2.succeed("ping -c 5 10.0.0.1")
|
||||||
# Is the fwmark set?
|
# Is the fwmark set?
|
||||||
$node2->succeed('wg | grep -q 42');
|
node2.succeed("wg | grep -q 42")
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -19,7 +19,7 @@ let
|
|||||||
SigningPrivateKey = "2a6c21550f3fca0331df50668ffab66b6dce8237bcd5728e571e8033b363e247de111da0ec781e45bf6c63ecb45a78c24d7d4655abfaeea83b26c36eb5c0fd5b";
|
SigningPrivateKey = "2a6c21550f3fca0331df50668ffab66b6dce8237bcd5728e571e8033b363e247de111da0ec781e45bf6c63ecb45a78c24d7d4655abfaeea83b26c36eb5c0fd5b";
|
||||||
};
|
};
|
||||||
|
|
||||||
in import ./make-test.nix ({ pkgs, ...} : {
|
in import ./make-test-python.nix ({ pkgs, ...} : {
|
||||||
name = "yggdrasil";
|
name = "yggdrasil";
|
||||||
meta = with pkgs.stdenv.lib.maintainers; {
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
maintainers = [ gazally ];
|
maintainers = [ gazally ];
|
||||||
@ -91,33 +91,35 @@ in import ./make-test.nix ({ pkgs, ...} : {
|
|||||||
|
|
||||||
testScript =
|
testScript =
|
||||||
''
|
''
|
||||||
|
import re
|
||||||
|
|
||||||
# Give Alice a head start so she is ready when Bob calls.
|
# Give Alice a head start so she is ready when Bob calls.
|
||||||
$alice->start;
|
alice.start()
|
||||||
$alice->waitForUnit("yggdrasil.service");
|
alice.wait_for_unit("yggdrasil.service")
|
||||||
|
|
||||||
$bob->start;
|
bob.start()
|
||||||
$carol->start;
|
carol.start()
|
||||||
$bob->waitForUnit("yggdrasil.service");
|
bob.wait_for_unit("yggdrasil.service")
|
||||||
$carol->waitForUnit("yggdrasil.service");
|
carol.wait_for_unit("yggdrasil.service")
|
||||||
|
|
||||||
$carol->waitUntilSucceeds("[ `ip -o -6 addr show dev ygg0 scope global | grep -v tentative | wc -l` -ge 1 ]");
|
ip_addr_show = "ip -o -6 addr show dev ygg0 scope global"
|
||||||
my $carolIp6 = (split /[ \/]+/, $carol->succeed("ip -o -6 addr show dev ygg0 scope global"))[3];
|
carol.wait_until_succeeds(f"[ `{ip_addr_show} | grep -v tentative | wc -l` -ge 1 ]")
|
||||||
|
carol_ip6 = re.split(" +|/", carol.succeed(ip_addr_show))[3]
|
||||||
|
|
||||||
# If Alice can talk to Carol, then Bob's outbound peering and Carol's
|
# If Alice can talk to Carol, then Bob's outbound peering and Carol's
|
||||||
# local peering have succeeded and everybody is connected.
|
# local peering have succeeded and everybody is connected.
|
||||||
$alice->waitUntilSucceeds("ping -c 1 $carolIp6");
|
alice.wait_until_succeeds(f"ping -c 1 {carol_ip6}")
|
||||||
$alice->succeed("ping -c 1 ${bobIp6}");
|
alice.succeed(f"ping -c 1 ${bobIp6}")
|
||||||
|
|
||||||
$bob->succeed("ping -c 1 ${aliceIp6}");
|
bob.succeed("ping -c 1 ${aliceIp6}")
|
||||||
$bob->succeed("ping -c 1 $carolIp6");
|
bob.succeed(f"ping -c 1 {carol_ip6}")
|
||||||
|
|
||||||
$carol->succeed("ping -c 1 ${aliceIp6}");
|
carol.succeed("ping -c 1 ${aliceIp6}")
|
||||||
$carol->succeed("ping -c 1 ${bobIp6}");
|
carol.succeed("ping -c 1 ${bobIp6}")
|
||||||
|
|
||||||
$carol->fail("journalctl -u dhcpcd | grep ygg0");
|
carol.fail("journalctl -u dhcpcd | grep ygg0")
|
||||||
|
|
||||||
$alice->waitForUnit("httpd.service");
|
|
||||||
$carol->succeed("curl --fail -g http://[${aliceIp6}]");
|
|
||||||
|
|
||||||
|
alice.wait_for_unit("httpd.service")
|
||||||
|
carol.succeed("curl --fail -g http://[${aliceIp6}]")
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -1,45 +1,74 @@
|
|||||||
{ stdenv, fetchurl, fetchpatch, meson, ninja, gettext, cargo, rustc, python3, pkgconfig, gnome3
|
{ stdenv
|
||||||
, glib, libhandy, gtk3, dbus, openssl, sqlite, gst_all_1, wrapGAppsHook }:
|
, rustPlatform
|
||||||
|
, fetchFromGitLab
|
||||||
|
, fetchpatch
|
||||||
|
, meson
|
||||||
|
, ninja
|
||||||
|
, gettext
|
||||||
|
, cargo
|
||||||
|
, rustc
|
||||||
|
, python3
|
||||||
|
, pkgconfig
|
||||||
|
, gnome3
|
||||||
|
, glib
|
||||||
|
, libhandy
|
||||||
|
, gtk3
|
||||||
|
, dbus
|
||||||
|
, openssl
|
||||||
|
, sqlite
|
||||||
|
, gst_all_1
|
||||||
|
, wrapGAppsHook
|
||||||
|
}:
|
||||||
|
|
||||||
# TODO: build from git for easier updates
|
rustPlatform.buildRustPackage rec {
|
||||||
# rustPlatform.buildRustPackage rec {
|
version = "0.4.7";
|
||||||
stdenv.mkDerivation {
|
|
||||||
version = "0.4.6";
|
|
||||||
pname = "gnome-podcasts";
|
pname = "gnome-podcasts";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchFromGitLab {
|
||||||
url = https://gitlab.gnome.org/World/podcasts/uploads/e59ac5d618d7daf4c7f33ba72957c466/gnome-podcasts-0.4.6.tar.xz;
|
domain = "gitlab.gnome.org";
|
||||||
sha256 = "0g2rk3w251fp5jwbxs5ya1adv8nsgdqjy1vmfg8qqab6qyndhbrc";
|
owner = "World";
|
||||||
|
repo = "podcasts";
|
||||||
|
rev = version;
|
||||||
|
sha256 = "0vy5i77bv8c22ldhrnr4z6kx22zqnb1lg3s7y8673bqjgd7dppi0";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [
|
cargoSha256 = "1h0n8zclb8a1b1ri83viiwwzlj3anm38m4cp38aqyf6q40qga35q";
|
||||||
# podcasts-data would fail to build because it errors on warnings
|
|
||||||
(fetchpatch {
|
|
||||||
url = "https://gitlab.gnome.org/World/podcasts/commit/7dc1b25ee7fc59a188312d31b1fa00c3110ae63e.patch";
|
|
||||||
sha256 = "03ibbh1snk1391vnni529agqs14lzg5g0axjgpf3gn8dwwh1yvd5";
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
# src = fetchFromGitLab {
|
|
||||||
# domain = "gitlab.gnome.org";
|
|
||||||
# owner = "World";
|
|
||||||
# repo = "podcasts";
|
|
||||||
# rev = version;
|
|
||||||
# sha256 = "15xj98dhxvys0cnya9488qsfsm0ys1wy69wkc39z8j6hwdm7byq2";
|
|
||||||
# };
|
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
meson ninja pkgconfig gettext cargo rustc python3 wrapGAppsHook
|
meson
|
||||||
];
|
ninja
|
||||||
buildInputs = [
|
pkgconfig
|
||||||
glib gtk3 libhandy dbus openssl sqlite gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-plugins-bad
|
gettext
|
||||||
|
cargo
|
||||||
|
rustc
|
||||||
|
python3
|
||||||
|
wrapGAppsHook
|
||||||
];
|
];
|
||||||
|
|
||||||
# cargoSha256 = "0721b5f700vvvzvmdl8nfjaa6j412q1fjssgrjv8n6rmn9z13d2v";
|
buildInputs = [
|
||||||
|
glib
|
||||||
|
gtk3
|
||||||
|
libhandy
|
||||||
|
dbus
|
||||||
|
openssl
|
||||||
|
sqlite
|
||||||
|
gst_all_1.gstreamer
|
||||||
|
gst_all_1.gst-plugins-base
|
||||||
|
gst_all_1.gst-plugins-bad
|
||||||
|
];
|
||||||
|
|
||||||
|
# use Meson/Ninja phases
|
||||||
|
configurePhase = null;
|
||||||
|
buildPhase = null;
|
||||||
|
checkPhase = null;
|
||||||
|
installPhase = null;
|
||||||
|
|
||||||
|
# tests require network
|
||||||
|
doCheck = false;
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
chmod +x scripts/compile-gschema.py # patchShebangs requires executable file
|
chmod +x scripts/compile-gschema.py # patchShebangs requires executable file
|
||||||
patchShebangs scripts/compile-gschema.py
|
patchShebangs scripts/compile-gschema.py scripts/cargo.sh scripts/test.sh
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
, libpulseaudio ? null
|
, libpulseaudio ? null
|
||||||
, libselinux ? null
|
, libselinux ? null
|
||||||
, libsepol ? null
|
, libsepol ? null
|
||||||
, p11_kit ? null
|
, p11-kit ? null
|
||||||
, utillinux ? null
|
, utillinux ? null
|
||||||
, qtbase
|
, qtbase
|
||||||
, qtx11extras
|
, qtx11extras
|
||||||
@ -66,7 +66,7 @@ mkDerivation rec {
|
|||||||
libpulseaudio
|
libpulseaudio
|
||||||
libselinux
|
libselinux
|
||||||
libsepol
|
libsepol
|
||||||
p11_kit
|
p11-kit
|
||||||
utillinux
|
utillinux
|
||||||
]
|
]
|
||||||
++ lib.optionals withGstreamer (with gst_all_1; [
|
++ lib.optionals withGstreamer (with gst_all_1; [
|
||||||
|
@ -1,20 +1,46 @@
|
|||||||
{ stdenv, fetchFromGitLab, substituteAll, meson, ninja, pkgconfig, vala_0_40, gettext
|
{ stdenv
|
||||||
, gnome3, libnotify, itstool, glib, gtk3, libxml2, gnome-online-accounts
|
, fetchFromGitLab
|
||||||
, coreutils, libpeas, libsecret, pcre, libxkbcommon, wrapGAppsHook
|
, substituteAll
|
||||||
, libpthreadstubs, libXdmcp, epoxy, at-spi2-core, dbus, libgpgerror
|
, meson
|
||||||
, appstream-glib, desktop-file-utils, duplicity
|
, ninja
|
||||||
|
, pkgconfig
|
||||||
|
, vala
|
||||||
|
, gettext
|
||||||
|
, gnome3
|
||||||
|
, libnotify
|
||||||
|
, itstool
|
||||||
|
, glib
|
||||||
|
, gtk3
|
||||||
|
, libxml2
|
||||||
|
, gnome-online-accounts
|
||||||
|
, coreutils
|
||||||
|
, libsoup
|
||||||
|
, libsecret
|
||||||
|
, pcre
|
||||||
|
, libxkbcommon
|
||||||
|
, wrapGAppsHook
|
||||||
|
, libpthreadstubs
|
||||||
|
, libXdmcp
|
||||||
|
, epoxy
|
||||||
|
, at-spi2-core
|
||||||
|
, dbus
|
||||||
|
, libgpgerror
|
||||||
|
, json-glib
|
||||||
|
, appstream-glib
|
||||||
|
, desktop-file-utils
|
||||||
|
, duplicity
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "deja-dup";
|
pname = "deja-dup";
|
||||||
version = "38.3";
|
version = "40.4";
|
||||||
|
|
||||||
src = fetchFromGitLab {
|
src = fetchFromGitLab {
|
||||||
domain = "gitlab.gnome.org";
|
domain = "gitlab.gnome.org";
|
||||||
owner = "World";
|
owner = "World";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "1bnvmdlm67k1b6115x75j3nl92x5yl4psq5pna2w6cg9npxdd3fa";
|
sha256 = "0x9z8z1mh1sxi28ilml3pvbc0g6ghcbyiy002rziwwlarxnbwkky";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
@ -22,37 +48,55 @@ stdenv.mkDerivation rec {
|
|||||||
src = ./fix-paths.patch;
|
src = ./fix-paths.patch;
|
||||||
inherit coreutils;
|
inherit coreutils;
|
||||||
})
|
})
|
||||||
|
|
||||||
|
# Hardcode GSettings path for Nautilus extension to avoid crashes from missing schemas
|
||||||
./hardcode-gsettings.patch
|
./hardcode-gsettings.patch
|
||||||
];
|
];
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
substituteInPlace deja-dup/nautilus/NautilusExtension.c --subst-var-by DEJA_DUP_GSETTINGS_PATH ${glib.makeSchemaPath "$out" "${pname}-${version}"}
|
# substitute variable from hardcode-gsettings.patch
|
||||||
|
substituteInPlace deja-dup/nautilus/NautilusExtension.c --subst-var-by DEJA_DUP_GSETTINGS_PATH "${glib.makeSchemaPath (placeholder "out") "${pname}-${version}"}"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
meson ninja pkgconfig vala_0_40 gettext itstool
|
meson
|
||||||
appstream-glib desktop-file-utils libxml2 wrapGAppsHook
|
ninja
|
||||||
|
pkgconfig
|
||||||
|
vala
|
||||||
|
gettext
|
||||||
|
itstool
|
||||||
|
appstream-glib
|
||||||
|
desktop-file-utils
|
||||||
|
libxml2
|
||||||
|
wrapGAppsHook
|
||||||
];
|
];
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
libnotify libpeas glib gtk3 libsecret
|
libnotify
|
||||||
pcre libxkbcommon libpthreadstubs libXdmcp epoxy gnome3.nautilus
|
libsoup
|
||||||
at-spi2-core dbus gnome-online-accounts libgpgerror
|
glib
|
||||||
|
gtk3
|
||||||
|
libsecret
|
||||||
|
pcre
|
||||||
|
libxkbcommon
|
||||||
|
libpthreadstubs
|
||||||
|
libXdmcp
|
||||||
|
epoxy
|
||||||
|
gnome3.nautilus
|
||||||
|
at-spi2-core
|
||||||
|
dbus
|
||||||
|
gnome-online-accounts # GOA not used any more, only for transferring legacy keys
|
||||||
|
libgpgerror
|
||||||
|
json-glib
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# TODO: hard code the path
|
||||||
|
# https://gitlab.gnome.org/World/deja-dup/merge_requests/32
|
||||||
propagatedUserEnvPkgs = [ duplicity ];
|
propagatedUserEnvPkgs = [ duplicity ];
|
||||||
|
|
||||||
|
# install nautilus plug-in to correct path
|
||||||
PKG_CONFIG_LIBNAUTILUS_EXTENSION_EXTENSIONDIR = "${placeholder "out"}/lib/nautilus/extensions-3.0";
|
PKG_CONFIG_LIBNAUTILUS_EXTENSION_EXTENSIONDIR = "${placeholder "out"}/lib/nautilus/extensions-3.0";
|
||||||
|
|
||||||
postInstall = ''
|
|
||||||
glib-compile-schemas $out/share/glib-2.0/schemas
|
|
||||||
'';
|
|
||||||
|
|
||||||
postFixup = ''
|
|
||||||
# Unwrap accidentally wrapped library
|
|
||||||
mv $out/libexec/deja-dup/tools/.libduplicity.so-wrapped $out/libexec/deja-dup/tools/libduplicity.so
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
description = "A simple backup tool";
|
description = "A simple backup tool";
|
||||||
longDescription = ''
|
longDescription = ''
|
||||||
@ -60,7 +104,7 @@ stdenv.mkDerivation rec {
|
|||||||
of backing up the Right Way (encrypted, off-site, and regular) \
|
of backing up the Right Way (encrypted, off-site, and regular) \
|
||||||
and uses duplicity as the backend.
|
and uses duplicity as the backend.
|
||||||
'';
|
'';
|
||||||
homepage = https://wiki.gnome.org/Apps/DejaDup;
|
homepage = "https://wiki.gnome.org/Apps/DejaDup";
|
||||||
license = licenses.gpl3Plus;
|
license = licenses.gpl3Plus;
|
||||||
maintainers = with maintainers; [ jtojnar joncojonathan ];
|
maintainers = with maintainers; [ jtojnar joncojonathan ];
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
|
@ -1,38 +1,16 @@
|
|||||||
--- a/deja-dup/nautilus/NautilusExtension.c
|
--- a/deja-dup/nautilus/NautilusExtension.c
|
||||||
+++ b/deja-dup/nautilus/NautilusExtension.c
|
+++ b/deja-dup/nautilus/NautilusExtension.c
|
||||||
@@ -24,6 +24,8 @@
|
@@ -313,7 +313,12 @@
|
||||||
#include <glib/gi18n-lib.h>
|
|
||||||
|
|
||||||
GList *dirs = NULL;
|
|
||||||
+GSettingsSchemaSource *schema_source = NULL;
|
|
||||||
+GSettingsSchema *schema = NULL;
|
|
||||||
GSettings *settings = NULL;
|
|
||||||
|
|
||||||
// This will treat a < b iff a is 'lower' in the file tree than b
|
|
||||||
@@ -313,7 +315,13 @@
|
|
||||||
bindtextdomain(GETTEXT_PACKAGE, LOCALE_DIR);
|
bindtextdomain(GETTEXT_PACKAGE, LOCALE_DIR);
|
||||||
bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
|
bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
|
||||||
|
|
||||||
- settings = g_settings_new("org.gnome.DejaDup");
|
- settings = g_settings_new(APPLICATION_ID);
|
||||||
+ schema_source = g_settings_schema_source_new_from_directory ("@DEJA_DUP_GSETTINGS_PATH@",
|
+ g_autoptr (GSettingsSchemaSource) schema_source = g_settings_schema_source_new_from_directory ("@DEJA_DUP_GSETTINGS_PATH@",
|
||||||
+ g_settings_schema_source_get_default (), TRUE, NULL);
|
+ g_settings_schema_source_get_default (), TRUE, NULL);
|
||||||
+
|
+
|
||||||
+ schema = g_settings_schema_source_lookup (schema_source,
|
+ g_autoptr (GSettingsSchema) schema = g_settings_schema_source_lookup (schema_source, APPLICATION_ID, FALSE);
|
||||||
+ "org.gnome.DejaDup", FALSE);
|
|
||||||
+
|
+
|
||||||
+ settings = g_settings_new_full (schema, NULL, NULL);
|
+ settings = g_settings_new_full (schema, NULL, NULL);
|
||||||
g_signal_connect(settings, "changed::include-list",
|
g_signal_connect(settings, "changed::include-list",
|
||||||
update_include_excludes, NULL);
|
update_include_excludes, NULL);
|
||||||
g_signal_connect(settings, "changed::exclude-list",
|
g_signal_connect(settings, "changed::exclude-list",
|
||||||
@@ -329,7 +337,11 @@
|
|
||||||
|
|
||||||
void nautilus_module_shutdown(void)
|
|
||||||
{
|
|
||||||
+ g_settings_schema_source_unref(schema_source);
|
|
||||||
+ g_settings_schema_unref(schema);
|
|
||||||
g_object_unref(settings);
|
|
||||||
+ schema_source = NULL;
|
|
||||||
+ schema = NULL;
|
|
||||||
settings = NULL;
|
|
||||||
|
|
||||||
update_include_excludes(); /* will clear it now that settings is NULL */
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
let
|
let
|
||||||
version = "2.6.4";
|
version = "2.6.5";
|
||||||
sha256 = "11l93w97961zig4gqf345j9l20g0mjp7fayl1mdwdp14hhd5zk5g";
|
sha256 = "1ykrsphqil68051wwp9b0259gsmfrj9xmx0pfhh2yvmmjzv7k4fv";
|
||||||
cargoSha256 = "1q6cbms7j1h726bvq38npxkjkmz14b5ir9c4z7pb0jcy7gkplyxx";
|
cargoSha256 = "1xqmnirx2r91q5gy1skxl0f79xvaqzimq3l0cj4xvfms7mpdfbg1";
|
||||||
in
|
in
|
||||||
import ./parity.nix { inherit version sha256 cargoSha256; }
|
import ./parity.nix { inherit version sha256 cargoSha256; }
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
let
|
let
|
||||||
version = "2.5.9";
|
version = "2.5.10";
|
||||||
sha256 = "06gmfw5l8n5i35dimsmj6dn0fxhbp53zjrdvbkff63r5kfqnwnx2";
|
sha256 = "0s8llcb1xdzs2zb6rnbsa9hck7dj4m8mamzkkvr0xjmgvigskf64";
|
||||||
cargoSha256 = "1kdy0bnmyqx4rhpq0a8gliy6mws68n035kfkxrfa6cxr2cn53dyb";
|
cargoSha256 = "16nf6y0hyffwdhxn1w4ms4zycs5lkzir8sj6c2lgsabig057hb6z";
|
||||||
in
|
in
|
||||||
import ./parity.nix { inherit version sha256 cargoSha256; }
|
import ./parity.nix { inherit version sha256 cargoSha256; }
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
, qt4
|
, qt4
|
||||||
, withQt5 ? false
|
, withQt5 ? false
|
||||||
, qtbase
|
, qtbase
|
||||||
|
, yelp-tools
|
||||||
}:
|
}:
|
||||||
|
|
||||||
with stdenv.lib;
|
with stdenv.lib;
|
||||||
@ -47,7 +48,7 @@ stdenv.mkDerivation rec {
|
|||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
autoconf
|
autoconf
|
||||||
automake
|
automake
|
||||||
gnome3.yelp-tools
|
yelp-tools
|
||||||
gnome3.yelp-xsl
|
gnome3.yelp-xsl
|
||||||
gobject-introspection
|
gobject-introspection
|
||||||
gtk-doc
|
gtk-doc
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{ avahiSupport ? false # build support for Avahi in libinfinity
|
{ avahiSupport ? false # build support for Avahi in libinfinity
|
||||||
, stdenv, fetchFromGitHub, autoconf, automake, pkgconfig, wrapGAppsHook
|
, stdenv, fetchFromGitHub, autoconf, automake, pkgconfig, wrapGAppsHook, yelp-tools
|
||||||
, gtkmm3, gsasl, gtksourceview3, libxmlxx, libinfinity, intltool, itstool, gnome3 }:
|
, gtkmm3, gsasl, gtksourceview3, libxmlxx, libinfinity, intltool, itstool, gnome3 }:
|
||||||
|
|
||||||
let
|
let
|
||||||
@ -13,7 +13,7 @@ in stdenv.mkDerivation {
|
|||||||
sha256 = "0q7lq64yn16lxvj4jphs8y9194h0xppj8k7y9x8b276krraak2az";
|
sha256 = "0q7lq64yn16lxvj4jphs8y9194h0xppj8k7y9x8b276krraak2az";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ autoconf automake pkgconfig intltool itstool gnome3.yelp-tools wrapGAppsHook ];
|
nativeBuildInputs = [ autoconf automake pkgconfig intltool itstool yelp-tools wrapGAppsHook ];
|
||||||
buildInputs = [ gtkmm3 gsasl gtksourceview3 libxmlxx libinf ];
|
buildInputs = [ gtkmm3 gsasl gtksourceview3 libxmlxx libinf ];
|
||||||
|
|
||||||
preConfigure = "./autogen.sh";
|
preConfigure = "./autogen.sh";
|
||||||
|
@ -21,13 +21,13 @@ let
|
|||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "neovim-unwrapped";
|
pname = "neovim-unwrapped";
|
||||||
version = "0.4.2";
|
version = "0.4.3";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "neovim";
|
owner = "neovim";
|
||||||
repo = "neovim";
|
repo = "neovim";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "13w446plvgl219lhj29jyimhiqvs1y1byrz4qpdmxgyddmx9xqss";
|
sha256 = "03p7pic7hw9yxxv7fbgls1f42apx3lik2k6mpaz1a109ngyc5kaj";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
|
@ -52,6 +52,8 @@ in stdenv.mkDerivation rec {
|
|||||||
pname = "gimp";
|
pname = "gimp";
|
||||||
version = "2.10.14";
|
version = "2.10.14";
|
||||||
|
|
||||||
|
outputs = [ "out" "dev" ];
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://download.gimp.org/pub/gimp/v${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
|
url = "http://download.gimp.org/pub/gimp/v${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
|
||||||
sha256 = "0m6wdnfvsxyhimdd4v3351g4r1fklllnbipbwcfym3h7q88hz6yz";
|
sha256 = "0m6wdnfvsxyhimdd4v3351g4r1fklllnbipbwcfym3h7q88hz6yz";
|
||||||
|
@ -68,13 +68,20 @@ stdenv.lib.makeScope pkgs.newScope (self: with self; {
|
|||||||
Filters/Generic/FFT Forward
|
Filters/Generic/FFT Forward
|
||||||
Filters/Generic/FFT Inverse
|
Filters/Generic/FFT Inverse
|
||||||
*/
|
*/
|
||||||
name = "fourier-0.4.1";
|
name = "fourier-0.4.3";
|
||||||
buildInputs = with pkgs; [ fftw ];
|
buildInputs = with pkgs; [ fftw ];
|
||||||
postInstall = "fail";
|
|
||||||
installPhase = "installPlugins fourier";
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://registry.gimp.org/files/${name}.tar.gz";
|
url = "https://www.lprp.fr/files/old-web/soft/gimp/${name}.tar.gz";
|
||||||
sha256 = "1pr3y3zl9w8xs1circdrxpr98myz9m8wfzy022al79z4pdanwvs1";
|
sha256 = "0mf7f8vaqs2madx832x3kcxw3hv3w3wampvzvaps1mkf2kvrjbsn";
|
||||||
|
};
|
||||||
|
|
||||||
|
installPhase = "installPlugins fourier";
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "GIMP plug-in to do the fourier transform";
|
||||||
|
homepage = "https://people.via.ecp.fr/~remi/soft/gimp/gimp_plugin_en.php3#fourier";
|
||||||
|
license = with licenses; [ gpl3Plus ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{ stdenv, fetchurl, barcode, gnome3, autoreconfHook
|
{ stdenv, fetchurl, barcode, gnome3, autoreconfHook
|
||||||
, gtk3, gtk-doc, libxml2, librsvg , libtool, libe-book, gsettings-desktop-schemas
|
, gtk3, gtk-doc, libxml2, librsvg , libtool, libe-book, gsettings-desktop-schemas
|
||||||
, intltool, itstool, makeWrapper, pkgconfig
|
, intltool, itstool, makeWrapper, pkgconfig, yelp-tools
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
nativeBuildInputs = [ autoreconfHook pkgconfig makeWrapper intltool ];
|
nativeBuildInputs = [ autoreconfHook pkgconfig makeWrapper intltool ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
barcode gtk3 gtk-doc gnome3.yelp-tools
|
barcode gtk3 gtk-doc yelp-tools
|
||||||
gnome3.gnome-common gsettings-desktop-schemas
|
gnome3.gnome-common gsettings-desktop-schemas
|
||||||
itstool libxml2 librsvg libe-book libtool
|
itstool libxml2 librsvg libe-book libtool
|
||||||
];
|
];
|
||||||
|
@ -17,13 +17,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "ideogram";
|
pname = "ideogram";
|
||||||
version = "1.2.2";
|
version = "1.3.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "cassidyjames";
|
owner = "cassidyjames";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "1qakgg3y4n2vcnykk2004ndvwmjbk2yy0p4j30mlb7p14dxscif6";
|
sha256 = "0ghc7hk4b4r3a0x9r30rrgv3rarxyjr2hf9ig244xwvhh5rn3j10";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
@ -45,14 +45,6 @@ stdenv.mkDerivation rec {
|
|||||||
xorg.libXtst
|
xorg.libXtst
|
||||||
];
|
];
|
||||||
|
|
||||||
patches = [
|
|
||||||
# See: https://github.com/cassidyjames/ideogram/issues/26
|
|
||||||
(fetchpatch {
|
|
||||||
url = "https://github.com/cassidyjames/ideogram/commit/65994ee11bd21f8316b057cec01afbf50639a708.patch";
|
|
||||||
sha256 = "12vrvvggpqq53dmhbm7gbbbigncn19m1fjln9wxaady21m0w776c";
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
chmod +x meson/post_install.py
|
chmod +x meson/post_install.py
|
||||||
patchShebangs meson/post_install.py
|
patchShebangs meson/post_install.py
|
||||||
|
@ -1,81 +0,0 @@
|
|||||||
diff --git a/Core/Geometry/Transform.cc b/Core/Geometry/Transform.cc
|
|
||||||
index 4f16fdc..0da4679 100644
|
|
||||||
--- a/Core/Geometry/Transform.cc
|
|
||||||
+++ b/Core/Geometry/Transform.cc
|
|
||||||
@@ -28,6 +28,7 @@
|
|
||||||
|
|
||||||
#include <cassert>
|
|
||||||
#include <cstring>
|
|
||||||
+#include <cstdio>
|
|
||||||
|
|
||||||
#include <Core/Util/TypeDescription.h>
|
|
||||||
#include <Core/Geometry/Transform.h>
|
|
||||||
diff --git a/Core/Util/FullFileName.cc b/Core/Util/FullFileName.cc
|
|
||||||
index 7a2cad7..7710e92 100644
|
|
||||||
--- a/Core/Util/FullFileName.cc
|
|
||||||
+++ b/Core/Util/FullFileName.cc
|
|
||||||
@@ -29,6 +29,7 @@
|
|
||||||
|
|
||||||
#include <Core/Util/FullFileName.h>
|
|
||||||
#include <iostream>
|
|
||||||
+#include <cstdio>
|
|
||||||
|
|
||||||
namespace SCIRun {
|
|
||||||
|
|
||||||
diff --git a/Externals/particle-system-mm/src/sizingfield/LFS.cxx b/Externals/particle-system-mm/src/sizingfield/LFS.cxx
|
|
||||||
index d1fa5aa..a5a4358 100644
|
|
||||||
--- a/Externals/particle-system-mm/src/sizingfield/LFS.cxx
|
|
||||||
+++ b/Externals/particle-system-mm/src/sizingfield/LFS.cxx
|
|
||||||
@@ -1,5 +1,6 @@
|
|
||||||
#include <cstdlib>
|
|
||||||
#include <iostream>
|
|
||||||
+#include <cstdio>
|
|
||||||
#include <LFS.h>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
diff --git a/Externals/slivr/Point.cc b/Externals/slivr/Point.cc
|
|
||||||
index d3be03e..ed4e503 100644
|
|
||||||
--- a/Externals/slivr/Point.cc
|
|
||||||
+++ b/Externals/slivr/Point.cc
|
|
||||||
@@ -42,6 +42,7 @@
|
|
||||||
#include <slivr/Point.h>
|
|
||||||
#include <slivr/Vector.h>
|
|
||||||
#include <iostream>
|
|
||||||
+#include <cstdio>
|
|
||||||
|
|
||||||
namespace SLIVR {
|
|
||||||
|
|
||||||
diff --git a/Externals/slivr/Transform.cc b/Externals/slivr/Transform.cc
|
|
||||||
index c0a4430..520179f 100644
|
|
||||||
--- a/Externals/slivr/Transform.cc
|
|
||||||
+++ b/Externals/slivr/Transform.cc
|
|
||||||
@@ -47,6 +47,7 @@
|
|
||||||
#include <math.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <iostream>
|
|
||||||
+#include <cstdio>
|
|
||||||
|
|
||||||
using namespace SLIVR;
|
|
||||||
using namespace std;
|
|
||||||
diff --git a/Externals/slivr/Vector.cc b/Externals/slivr/Vector.cc
|
|
||||||
index 8370d65..8b04bb9 100644
|
|
||||||
--- a/Externals/slivr/Vector.cc
|
|
||||||
+++ b/Externals/slivr/Vector.cc
|
|
||||||
@@ -43,6 +43,7 @@
|
|
||||||
#include <slivr/Point.h>
|
|
||||||
#include <assert.h>
|
|
||||||
#include <iostream>
|
|
||||||
+#include <cstdio>
|
|
||||||
|
|
||||||
using std::istream;
|
|
||||||
using std::ostream;
|
|
||||||
diff --git a/Externals/vispack/src/image/imagefile.txx b/Externals/vispack/src/image/imagefile.txx
|
|
||||||
index ced2590..13a32b2 100644
|
|
||||||
--- a/Externals/vispack/src/image/imagefile.txx
|
|
||||||
+++ b/Externals/vispack/src/image/imagefile.txx
|
|
||||||
@@ -1,3 +1,5 @@
|
|
||||||
+#include <cstdio>
|
|
||||||
+
|
|
||||||
template <class T>
|
|
||||||
int write_raw(const char* name, const VISImage<T>& im)
|
|
||||||
{
|
|
@ -1,54 +0,0 @@
|
|||||||
{ fetchurl, stdenv, cmake, wxGTK, itk, libGLU, libGL, libXft, libXext, libXi, zlib, libXmu,
|
|
||||||
libuuid }:
|
|
||||||
|
|
||||||
assert (stdenv ? glibc);
|
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
|
||||||
name = "seg3d-1.12_20090930";
|
|
||||||
src = fetchurl {
|
|
||||||
url = https://www.sci.utah.edu/releases/seg3d_v1.12/Seg3D_1.12_20090930_source.tgz;
|
|
||||||
sha256 = "1wr6rc6v5qjjkmws8yrc03z35h3iydxk1z28p06v1wdnca0y71z8";
|
|
||||||
};
|
|
||||||
|
|
||||||
patches = [ ./cstdio.patch ];
|
|
||||||
|
|
||||||
cmakeFlags = [
|
|
||||||
"-DM_LIBRARY=${stdenv.glibc.out}/lib/libm.so"
|
|
||||||
"-DDL_LIBRARY=${stdenv.glibc.out}/lib/libdl.so"
|
|
||||||
"-DBUILD_UTILS=1"
|
|
||||||
"-DBUILD_SEG3D=1"
|
|
||||||
"-DBUILD_DATAFLOW=0"
|
|
||||||
"-DBUILD_SHARED_LIBS=0"
|
|
||||||
"-DWITH_X11=1"
|
|
||||||
"-DBUILD_BIOMESH3D=1"
|
|
||||||
"-DWITH_TETGEN=1"
|
|
||||||
"-DBUILD_TYPE=Release"
|
|
||||||
"-DWITH_WXWIDGETS=ON"
|
|
||||||
"-DITK_DIR=${itk}/lib/InsightToolkit"
|
|
||||||
"-DGDCM_LIBRARY=${itk}/lib/libitkgdcm.a"
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
makeFlags = "VERBOSE=1";
|
|
||||||
|
|
||||||
preBuild = ''
|
|
||||||
export LD_LIBRARY_PATH=`pwd`/lib
|
|
||||||
export NIX_LDFLAGS="$NIX_LDFLAGS -lGLU -lSM -lICE -lX11 -lXext -luuid";
|
|
||||||
'';
|
|
||||||
|
|
||||||
preUnpack = ''
|
|
||||||
set -x
|
|
||||||
sourceRoot=`pwd`/src
|
|
||||||
'';
|
|
||||||
|
|
||||||
postInstall = ''
|
|
||||||
cp Seg3D $out/bin
|
|
||||||
exit 1
|
|
||||||
'';
|
|
||||||
|
|
||||||
buildInputs = [ cmake wxGTK itk libGLU libGL libXft libXext libXi zlib libXmu libuuid ];
|
|
||||||
|
|
||||||
meta = {
|
|
||||||
broken = true;
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,7 +1,8 @@
|
|||||||
{
|
{
|
||||||
mkDerivation, lib,
|
mkDerivation, lib,
|
||||||
extra-cmake-modules, kdoctools,
|
extra-cmake-modules, kdoctools,
|
||||||
karchive, ki18n, kio, perl, python, php, qttools,
|
karchive, ki18n, kio, perl, python, php, qttools
|
||||||
|
, kdbusaddons
|
||||||
}:
|
}:
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
@ -11,5 +12,5 @@ mkDerivation {
|
|||||||
maintainers = with lib.maintainers; [ orivej ];
|
maintainers = with lib.maintainers; [ orivej ];
|
||||||
};
|
};
|
||||||
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
|
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
|
||||||
buildInputs = [ karchive ki18n kio perl python php qttools ];
|
buildInputs = [ karchive ki18n kio perl python php qttools kdbusaddons ];
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
, ilmbase, libXi, libX11, libXext, libXrender
|
, ilmbase, libXi, libX11, libXext, libXrender
|
||||||
, libjpeg, libpng, libsamplerate, libsndfile
|
, libjpeg, libpng, libsamplerate, libsndfile
|
||||||
, libtiff, libGLU, libGL, openal, opencolorio, openexr, openimageio, openjpeg_1, python3Packages
|
, libtiff, libGLU, libGL, openal, opencolorio, openexr, openimageio, openjpeg_1, python3Packages
|
||||||
|
, openvdb, libXxf86vm, tbb
|
||||||
, zlib, fftw, opensubdiv, freetype, jemalloc, ocl-icd, addOpenGLRunpath
|
, zlib, fftw, opensubdiv, freetype, jemalloc, ocl-icd, addOpenGLRunpath
|
||||||
, jackaudioSupport ? false, libjack2
|
, jackaudioSupport ? false, libjack2
|
||||||
, cudaSupport ? config.cudaSupport or false, cudatoolkit
|
, cudaSupport ? config.cudaSupport or false, cudatoolkit
|
||||||
@ -15,11 +16,11 @@ let python = python3Packages.python; in
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "blender";
|
pname = "blender";
|
||||||
version = "2.80";
|
version = "2.81";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.blender.org/source/${pname}-${version}.tar.gz";
|
url = "https://download.blender.org/source/${pname}-${version}.tar.xz";
|
||||||
sha256 = "1h550jisdbis50hxwk5kxrvrk1a6sh2fsri3yyj66vhzbi87x7fd";
|
sha256 = "1prp0f2152f1sz23jlc86vndfvmplb7qhllikkirq7hgpykrshna";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake ] ++ optional cudaSupport addOpenGLRunpath;
|
nativeBuildInputs = [ cmake ] ++ optional cudaSupport addOpenGLRunpath;
|
||||||
@ -29,6 +30,7 @@ stdenv.mkDerivation rec {
|
|||||||
freetype libjpeg libpng libsamplerate libsndfile libtiff libGLU libGL openal
|
freetype libjpeg libpng libsamplerate libsndfile libtiff libGLU libGL openal
|
||||||
opencolorio openexr openimageio openjpeg_1 python zlib fftw jemalloc
|
opencolorio openexr openimageio openjpeg_1 python zlib fftw jemalloc
|
||||||
(opensubdiv.override { inherit cudaSupport; })
|
(opensubdiv.override { inherit cudaSupport; })
|
||||||
|
openvdb libXxf86vm tbb
|
||||||
makeWrapper
|
makeWrapper
|
||||||
]
|
]
|
||||||
++ optional jackaudioSupport libjack2
|
++ optional jackaudioSupport libjack2
|
||||||
@ -56,6 +58,9 @@ stdenv.mkDerivation rec {
|
|||||||
"-DWITH_PYTHON_INSTALL=OFF"
|
"-DWITH_PYTHON_INSTALL=OFF"
|
||||||
"-DWITH_PYTHON_INSTALL_NUMPY=OFF"
|
"-DWITH_PYTHON_INSTALL_NUMPY=OFF"
|
||||||
"-DPYTHON_NUMPY_PATH=${python3Packages.numpy}/${python.sitePackages}"
|
"-DPYTHON_NUMPY_PATH=${python3Packages.numpy}/${python.sitePackages}"
|
||||||
|
"-DWITH_OPENVDB=ON"
|
||||||
|
"-DWITH_TBB=ON"
|
||||||
|
"-DWITH_IMAGE_OPENJPEG=ON"
|
||||||
]
|
]
|
||||||
++ optional jackaudioSupport "-DWITH_JACK=ON"
|
++ optional jackaudioSupport "-DWITH_JACK=ON"
|
||||||
++ optional cudaSupport "-DWITH_CYCLES_CUDA_BINARIES=ON"
|
++ optional cudaSupport "-DWITH_CYCLES_CUDA_BINARIES=ON"
|
||||||
|
@ -29,13 +29,13 @@ with stdenv.lib;
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "elogind";
|
pname = "elogind";
|
||||||
version = "239.5";
|
version = "241.3";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "elogind";
|
owner = "elogind";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "1gdiy4vbx4gs2hnb79x14zi530mlq26glxpzp3c95w8l058wj4ba";
|
sha256 = "0jpb55prqq5cm3w2gy9766cbaqknjvbrbniyshb8bz1q31vf4jlq";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "et";
|
pname = "et";
|
||||||
version = "0.1.1";
|
version = "0.1.2";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "geistesk";
|
owner = "geistesk";
|
||||||
repo = "et";
|
repo = "et";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "167w9qwfpd63rgy0xmkkkh5krmd91q42c3ijy3j099krgdfbb9bc";
|
sha256 = "0i0lgmnly8n7y4y6pb10pxgxyz8s5zk26k8z1g1578v1wan01lnq";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ libnotify gdk-pixbuf ];
|
buildInputs = [ libnotify gdk-pixbuf ];
|
||||||
@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
description = "Minimal libnotify-based (egg) timer";
|
description = "Minimal libnotify-based (egg) timer";
|
||||||
homepage = https://github.com/geistesk/et;
|
homepage = "https://github.com/geistesk/et";
|
||||||
license = licenses.gpl3;
|
license = licenses.gpl3;
|
||||||
platforms = platforms.unix;
|
platforms = platforms.unix;
|
||||||
maintainers = with maintainers; [ geistesk ];
|
maintainers = with maintainers; [ geistesk ];
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{ stdenv, fetchFromGitHub, meson, ninja, gettext, python3, fetchpatch,
|
{ stdenv, fetchFromGitHub, meson, ninja, gettext, python3, fetchpatch,
|
||||||
pkgconfig, libxml2, json-glib , sqlite, itstool, librsvg,
|
pkgconfig, libxml2, json-glib , sqlite, itstool, librsvg, yelp-tools,
|
||||||
vala, gtk3, gnome3, desktop-file-utils, wrapGAppsHook, gobject-introspection
|
vala, gtk3, gnome3, desktop-file-utils, wrapGAppsHook, gobject-introspection
|
||||||
}:
|
}:
|
||||||
|
|
||||||
@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
|
|||||||
itstool
|
itstool
|
||||||
desktop-file-utils
|
desktop-file-utils
|
||||||
vala
|
vala
|
||||||
gnome3.yelp-tools
|
yelp-tools
|
||||||
wrapGAppsHook
|
wrapGAppsHook
|
||||||
# For https://github.com/FontManager/master/blob/master/lib/unicode/meson.build
|
# For https://github.com/FontManager/master/blob/master/lib/unicode/meson.build
|
||||||
gobject-introspection
|
gobject-introspection
|
||||||
|
@ -20,13 +20,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "formatter";
|
pname = "formatter";
|
||||||
version = "0.3.0";
|
version = "0.3.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "Djaler";
|
owner = "Djaler";
|
||||||
repo = "Formatter";
|
repo = "Formatter";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "145742dk16736zxj30rzn61h4k0xpggfsbqkxllxd302mgbmxlzq";
|
sha256 = "1ghxd2h0pklhlrjslfr46vza1kjsm3mr0sdzzjiqi9jd6hddnk7i";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
, postgresql
|
, postgresql
|
||||||
, gnome3
|
, gnome3
|
||||||
, gobject-introspection
|
, gobject-introspection
|
||||||
|
, yelp-tools
|
||||||
, wrapGAppsHook
|
, wrapGAppsHook
|
||||||
}:
|
}:
|
||||||
|
|
||||||
@ -67,7 +68,7 @@ in stdenv.mkDerivation rec {
|
|||||||
libtool
|
libtool
|
||||||
mm-common
|
mm-common
|
||||||
intltool
|
intltool
|
||||||
gnome3.yelp-tools
|
yelp-tools
|
||||||
itstool
|
itstool
|
||||||
doxygen
|
doxygen
|
||||||
graphviz
|
graphviz
|
||||||
|
@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
mkDerivation rec {
|
mkDerivation rec {
|
||||||
pname = "gpxsee";
|
pname = "gpxsee";
|
||||||
version = "7.17";
|
version = "7.18";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "tumic0";
|
owner = "tumic0";
|
||||||
repo = "GPXSee";
|
repo = "GPXSee";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "10mch709m4ws73yzkrx9lm2hwzl179ggpk6xkbhkvnl7rsd2yz08";
|
sha256 = "1z3knfqfv0rwsq66adk0qngw1r500yvy4z259bygqkzbn2l5fcjk";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ qmake ];
|
nativeBuildInputs = [ qmake ];
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{ stdenv, requireFile, zlib, libpng, libSM, libICE, fontconfig, xorg, libGLU, libGL, alsaLib, dbus, xkeyboardconfig, bc }:
|
{ stdenv, requireFile, zlib, libpng, libSM, libICE, fontconfig, xorg, libGLU, libGL, alsaLib, dbus, xkeyboardconfig, bc, addOpenGLRunpath }:
|
||||||
|
|
||||||
let
|
let
|
||||||
ld_library_path = builtins.concatStringsSep ":" [
|
ld_library_path = builtins.concatStringsSep ":" [
|
||||||
@ -24,6 +24,7 @@ let
|
|||||||
zlib
|
zlib
|
||||||
libpng
|
libpng
|
||||||
dbus
|
dbus
|
||||||
|
addOpenGLRunpath.driverLink
|
||||||
])
|
])
|
||||||
];
|
];
|
||||||
license_dir = "~/.config/houdini";
|
license_dir = "~/.config/houdini";
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
, sshfs
|
, sshfs
|
||||||
, makeWrapper
|
, makeWrapper
|
||||||
, kwayland
|
, kwayland
|
||||||
|
, kio
|
||||||
}:
|
}:
|
||||||
|
|
||||||
mkDerivation rec {
|
mkDerivation rec {
|
||||||
@ -30,7 +31,7 @@ mkDerivation rec {
|
|||||||
buildInputs = [
|
buildInputs = [
|
||||||
libfakekey libXtst
|
libfakekey libXtst
|
||||||
ki18n kiconthemes kcmutils kconfigwidgets kdbusaddons knotifications
|
ki18n kiconthemes kcmutils kconfigwidgets kdbusaddons knotifications
|
||||||
qca-qt5 qtx11extras makeWrapper kwayland
|
qca-qt5 qtx11extras makeWrapper kwayland kio
|
||||||
];
|
];
|
||||||
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
|
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
|
||||||
|
@ -1,21 +1,47 @@
|
|||||||
{ stdenv, pkgconfig, fetchurl, buildPythonApplication
|
{ stdenv
|
||||||
, autoreconfHook, wrapGAppsHook, gobject-introspection
|
, pkgconfig
|
||||||
, gettext, yelp-tools, itstool, libxmlxx3
|
, fetchurl
|
||||||
, python, pygobject3, gtk3, gnome3, substituteAll
|
, buildPythonApplication
|
||||||
, at-spi2-atk, at-spi2-core, pyatspi, dbus, dbus-python, pyxdg
|
, autoreconfHook
|
||||||
, xkbcomp, procps, lsof, coreutils, gsettings-desktop-schemas
|
, wrapGAppsHook
|
||||||
, speechd, brltty, liblouis, setproctitle, gst_all_1, gst-python
|
, gobject-introspection
|
||||||
|
, gettext
|
||||||
|
, yelp-tools
|
||||||
|
, itstool
|
||||||
|
, libxmlxx3
|
||||||
|
, python
|
||||||
|
, pygobject3
|
||||||
|
, gtk3
|
||||||
|
, gnome3
|
||||||
|
, substituteAll
|
||||||
|
, at-spi2-atk
|
||||||
|
, at-spi2-core
|
||||||
|
, pyatspi
|
||||||
|
, dbus
|
||||||
|
, dbus-python
|
||||||
|
, pyxdg
|
||||||
|
, xkbcomp
|
||||||
|
, procps
|
||||||
|
, lsof
|
||||||
|
, coreutils
|
||||||
|
, gsettings-desktop-schemas
|
||||||
|
, speechd
|
||||||
|
, brltty
|
||||||
|
, liblouis
|
||||||
|
, setproctitle
|
||||||
|
, gst_all_1
|
||||||
|
, gst-python
|
||||||
}:
|
}:
|
||||||
|
|
||||||
buildPythonApplication rec {
|
buildPythonApplication rec {
|
||||||
pname = "orca";
|
pname = "orca";
|
||||||
version = "3.34.0";
|
version = "3.34.1";
|
||||||
|
|
||||||
format = "other";
|
format = "other";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
|
url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
|
||||||
sha256 = "10h258cprsxzb2hz9wqrkzv1yrsm19ws46l6fsnspywza5wq0z4p";
|
sha256 = "1q38n7hyshkiszmn361skxjynxr31lcms7a1iny6d0zlpmh1vnk4";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
@ -29,19 +55,40 @@ buildPythonApplication rec {
|
|||||||
];
|
];
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
autoreconfHook wrapGAppsHook pkgconfig libxmlxx3
|
autoreconfHook
|
||||||
gettext yelp-tools itstool gobject-introspection
|
wrapGAppsHook
|
||||||
|
pkgconfig
|
||||||
|
libxmlxx3
|
||||||
|
gettext
|
||||||
|
yelp-tools
|
||||||
|
itstool
|
||||||
|
gobject-introspection
|
||||||
];
|
];
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
pygobject3 pyatspi dbus-python pyxdg brltty liblouis speechd gst-python setproctitle
|
pygobject3
|
||||||
|
pyatspi
|
||||||
|
dbus-python
|
||||||
|
pyxdg
|
||||||
|
brltty
|
||||||
|
liblouis
|
||||||
|
speechd
|
||||||
|
gst-python
|
||||||
|
setproctitle
|
||||||
];
|
];
|
||||||
|
|
||||||
strictDeps = false;
|
strictDeps = false;
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
python gtk3 at-spi2-atk at-spi2-core dbus gsettings-desktop-schemas
|
python
|
||||||
gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good
|
gtk3
|
||||||
|
at-spi2-atk
|
||||||
|
at-spi2-core
|
||||||
|
dbus
|
||||||
|
gsettings-desktop-schemas
|
||||||
|
gst_all_1.gstreamer
|
||||||
|
gst_all_1.gst-plugins-base
|
||||||
|
gst_all_1.gst-plugins-good
|
||||||
];
|
];
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
@ -51,7 +98,7 @@ buildPythonApplication rec {
|
|||||||
};
|
};
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
homepage = https://wiki.gnome.org/Projects/Orca;
|
homepage = "https://wiki.gnome.org/Projects/Orca";
|
||||||
description = "Screen reader";
|
description = "Screen reader";
|
||||||
longDescription = ''
|
longDescription = ''
|
||||||
A free, open source, flexible and extensible screen reader that provides
|
A free, open source, flexible and extensible screen reader that provides
|
||||||
|
@ -19,6 +19,6 @@ stdenv.mkDerivation rec {
|
|||||||
homepage = http://tasktools.org;
|
homepage = http://tasktools.org;
|
||||||
license = licenses.mit;
|
license = licenses.mit;
|
||||||
maintainers = with maintainers; [ matthiasbeyer ];
|
maintainers = with maintainers; [ matthiasbeyer ];
|
||||||
platforms = platforms.linux;
|
platforms = platforms.unix;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,20 +1,22 @@
|
|||||||
{ enableGUI ? true, enablePDFtoPPM ? true, useT1Lib ? false
|
{ enableGUI ? true
|
||||||
, stdenv, fetchurl, zlib, libpng, freetype ? null, t1lib ? null
|
, enablePDFtoPPM ? true
|
||||||
, cmake, qtbase ? null, qtsvg ? null, wrapQtAppsHook
|
, enablePrinting ? true
|
||||||
|
, stdenv, fetchzip, cmake, makeDesktopItem
|
||||||
|
, zlib, libpng, cups ? null, freetype ? null
|
||||||
|
, qtbase ? null, qtsvg ? null, wrapQtAppsHook
|
||||||
}:
|
}:
|
||||||
|
|
||||||
assert enableGUI -> qtbase != null && qtsvg != null && freetype != null;
|
assert enableGUI -> qtbase != null && qtsvg != null && freetype != null;
|
||||||
assert enablePDFtoPPM -> freetype != null;
|
assert enablePDFtoPPM -> freetype != null;
|
||||||
assert useT1Lib -> t1lib != null;
|
assert enablePrinting -> cups != null;
|
||||||
|
|
||||||
assert !useT1Lib; # t1lib has multiple unpatched security vulnerabilities
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "xpdf";
|
||||||
|
version = "4.02";
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
src = fetchzip {
|
||||||
name = "xpdf-4.00";
|
url = "https://xpdfreader-dl.s3.amazonaws.com/${pname}-${version}.tar.gz";
|
||||||
|
sha256 = "0dzwq6fnk013wa4l5mjpvm4mms2mh5hbrxv4rhk2ab5ljbzz7b2w";
|
||||||
src = fetchurl {
|
|
||||||
url = http://www.xpdfreader.com/dl/xpdf-4.00.tar.gz;
|
|
||||||
sha256 = "1mhn89738vjva14xr5gblc2zrdgzmpqbbjdflqdmpqv647294ggz";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# Fix "No known features for CXX compiler", see
|
# Fix "No known features for CXX compiler", see
|
||||||
@ -26,20 +28,33 @@ stdenv.mkDerivation {
|
|||||||
[ cmake ]
|
[ cmake ]
|
||||||
++ stdenv.lib.optional enableGUI wrapQtAppsHook;
|
++ stdenv.lib.optional enableGUI wrapQtAppsHook;
|
||||||
|
|
||||||
cmakeFlags = ["-DSYSTEM_XPDFRC=/etc/xpdfrc" "-DA4_PAPER=ON"];
|
cmakeFlags = ["-DSYSTEM_XPDFRC=/etc/xpdfrc" "-DA4_PAPER=ON" "-DOPI_SUPPORT=ON"]
|
||||||
|
++ stdenv.lib.optional (!enablePrinting) "-DXPDFWIDGET_PRINTING=OFF";
|
||||||
|
|
||||||
buildInputs = [ zlib libpng ] ++
|
buildInputs = [ zlib libpng ] ++
|
||||||
stdenv.lib.optional enableGUI qtbase ++
|
stdenv.lib.optional enableGUI qtbase ++
|
||||||
stdenv.lib.optional useT1Lib t1lib ++
|
stdenv.lib.optional enablePrinting cups ++
|
||||||
stdenv.lib.optional enablePDFtoPPM freetype;
|
stdenv.lib.optional enablePDFtoPPM freetype;
|
||||||
|
|
||||||
# Debian uses '-fpermissive' to bypass some errors on char* constantness.
|
|
||||||
CXXFLAGS = "-O2 -fpermissive";
|
|
||||||
|
|
||||||
hardeningDisable = [ "format" ];
|
hardeningDisable = [ "format" ];
|
||||||
|
|
||||||
|
desktopItem = makeDesktopItem {
|
||||||
|
name = "xpdf";
|
||||||
|
desktopName = "Xpdf";
|
||||||
|
comment = "Views Adobe PDF files";
|
||||||
|
icon = "xpdf";
|
||||||
|
exec = "xpdf %f";
|
||||||
|
categories = "Office;";
|
||||||
|
terminal = "false";
|
||||||
|
};
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
install -Dm644 ${desktopItem}/share/applications/xpdf.desktop $out/share/applications/xpdf.desktop
|
||||||
|
install -Dm644 $src/xpdf-qt/xpdf-icon.svg $out/share/pixmaps/xpdf.svg
|
||||||
|
'';
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
homepage = https://www.xpdfreader.com;
|
homepage = "https://www.xpdfreader.com";
|
||||||
description = "Viewer for Portable Document Format (PDF) files";
|
description = "Viewer for Portable Document Format (PDF) files";
|
||||||
longDescription = ''
|
longDescription = ''
|
||||||
XPDF includes multiple tools for viewing and processing PDF files.
|
XPDF includes multiple tools for viewing and processing PDF files.
|
||||||
@ -56,5 +71,13 @@ stdenv.mkDerivation {
|
|||||||
'';
|
'';
|
||||||
license = with licenses; [ gpl2 gpl3 ];
|
license = with licenses; [ gpl2 gpl3 ];
|
||||||
platforms = platforms.unix;
|
platforms = platforms.unix;
|
||||||
|
maintainers = with maintainers; [ sikmir ];
|
||||||
|
knownVulnerabilities = [
|
||||||
|
"CVE-2018-7453: loop in PDF objects"
|
||||||
|
"CVE-2018-16369: loop in PDF objects"
|
||||||
|
"CVE-2019-9587: loop in PDF objects"
|
||||||
|
"CVE-2019-9588: loop in PDF objects"
|
||||||
|
"CVE-2019-16088: loop in PDF objects"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -19,13 +19,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "ephemeral";
|
pname = "ephemeral";
|
||||||
version = "6.0.0";
|
version = "6.1.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "cassidyjames";
|
owner = "cassidyjames";
|
||||||
repo = "ephemeral";
|
repo = "ephemeral";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "0g9rrx41grmgf4nn2pp17yhjxxayk826gs6nmkfdnimd4gmlf3nk";
|
sha256 = "1i77chbjjg8zda5bnn1wj4h00a88awfls5b3i3dqwgsi356hv4wb";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
{ lib, buildGoPackage, fetchFromGitHub }:
|
{ lib, buildGoPackage, fetchFromGitHub }:
|
||||||
|
|
||||||
# SHA of ${version} for the tool's help output
|
# SHA of ${version} for the tool's help output
|
||||||
let rev = "7ad367535a6710802085d41e0dbb53df359b9882";
|
let rev = "c9c2a461cd3397909fe6e45ff71836347ef89fd8";
|
||||||
in
|
in
|
||||||
buildGoPackage rec {
|
buildGoPackage rec {
|
||||||
pname = "sonobuoy";
|
pname = "sonobuoy";
|
||||||
version = "0.15.0";
|
version = "0.16.1";
|
||||||
|
|
||||||
goPackagePath = "github.com/heptio/sonobuoy";
|
goPackagePath = "github.com/heptio/sonobuoy";
|
||||||
|
|
||||||
@ -19,10 +19,10 @@ buildGoPackage rec {
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
sha256 = "0dkmhmr7calk8mkdxfpy3yjzk10ja4gz1jq8pgk3v8rh04f4h1x5";
|
sha256 = "14qc5a7jbr403wjpk6pgpb94i72yx647sg9srz07q6drq650kyfv";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
repo = "sonobuoy";
|
repo = "sonobuoy";
|
||||||
owner = "heptio";
|
owner = "vmware-tanzu";
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
@ -36,8 +36,8 @@ buildGoPackage rec {
|
|||||||
accessible and non-destructive manner.
|
accessible and non-destructive manner.
|
||||||
'';
|
'';
|
||||||
|
|
||||||
homepage = "https://github.com/heptio/sonobuoy";
|
homepage = "https://sonobuoy.io";
|
||||||
license = licenses.asl20;
|
license = licenses.asl20;
|
||||||
maintainers = with maintainers; [ carlosdagos ];
|
maintainers = with maintainers; [ carlosdagos saschagrunert ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{ pkgs, stdenv, fetchFromGitHub, makeWrapper, makeDesktopItem, electron_5, riot-web, yarn2nix-moretea }:
|
{ pkgs, stdenv, fetchFromGitHub, makeWrapper, makeDesktopItem, electron_5, riot-web, mkYarnPackage }:
|
||||||
|
|
||||||
# Notes for maintainers:
|
# Notes for maintainers:
|
||||||
# * versions of `riot-web` and `riot-desktop` should be kept in sync.
|
# * versions of `riot-web` and `riot-desktop` should be kept in sync.
|
||||||
@ -14,7 +14,7 @@ let
|
|||||||
sha256 = "1xi5zg3602d7gdjxskpk2q3anpn2drrkxyirfvi9mzcfp2r05557";
|
sha256 = "1xi5zg3602d7gdjxskpk2q3anpn2drrkxyirfvi9mzcfp2r05557";
|
||||||
};
|
};
|
||||||
|
|
||||||
in yarn2nix-moretea.mkYarnPackage rec {
|
in mkYarnPackage rec {
|
||||||
name = "riot-desktop-${version}";
|
name = "riot-desktop-${version}";
|
||||||
inherit version;
|
inherit version;
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env nix-shell
|
#!/usr/bin/env nix-shell
|
||||||
#!nix-shell -I nixpkgs=../../../../../ -i bash -p wget yarn2nix-moretea.yarn2nix
|
#!nix-shell -I nixpkgs=../../../../../ -i bash -p wget yarn2nix
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
|
@ -14,11 +14,11 @@ assert pulseaudioSupport -> libpulseaudio != null;
|
|||||||
let
|
let
|
||||||
inherit (stdenv.lib) concatStringsSep makeBinPath optional;
|
inherit (stdenv.lib) concatStringsSep makeBinPath optional;
|
||||||
|
|
||||||
version = "3.0.309708.1027";
|
version = "3.0.317369.1110";
|
||||||
srcs = {
|
srcs = {
|
||||||
x86_64-linux = fetchurl {
|
x86_64-linux = fetchurl {
|
||||||
url = "https://zoom.us/client/${version}/zoom_x86_64.tar.xz";
|
url = "https://zoom.us/client/${version}/zoom_x86_64.tar.xz";
|
||||||
sha256 = "0g0nmlbcps331vdnfj571lzhcw8cb2gxbll09jananxdpnmwv5l6";
|
sha256 = "0r4wp9qb1739xwr24kglc4sj8qaxwr4nh5p1igi3x6f1f8gczia7";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
buildGoPackage rec {
|
buildGoPackage rec {
|
||||||
pname = "rclone";
|
pname = "rclone";
|
||||||
version = "1.50.1";
|
version = "1.50.2";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = pname;
|
owner = pname;
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0iwm0a9h6xxdsqw86xlqcsz7h4pzsg134m6yfqj5s2xg7kfy5laq";
|
sha256 = "0yaspkh88q8i58i8g8mm6sqb75hczavz2lvzdd1iif1bqgi6b5fz";
|
||||||
};
|
};
|
||||||
|
|
||||||
goPackagePath = "github.com/rclone/rclone";
|
goPackagePath = "github.com/rclone/rclone";
|
||||||
|
@ -4,13 +4,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "meteo";
|
pname = "meteo";
|
||||||
version = "0.9.7";
|
version = "0.9.8";
|
||||||
|
|
||||||
src = fetchFromGitLab {
|
src = fetchFromGitLab {
|
||||||
owner = "bitseater";
|
owner = "bitseater";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "014x3mg2dc58h1qwy2nrz3a5mzdnbzish8zgn3x6lj6szfz5c72n";
|
sha256 = "1ll5fja0dqxcr6hrh2dk4hgw9gf8ms9bcp1ifznd21byxzyhdlr0";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
@ -3,13 +3,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "aesop";
|
pname = "aesop";
|
||||||
version = "1.1.2";
|
version = "1.1.3";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "lainsce";
|
owner = "lainsce";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "1vadm8295jb7jaah2qykf3h9zvl5c013sanmxqi4snmmq4pa32ax";
|
sha256 = "1hnwhxaz0zx4fswrxjzyv5s77v5fimn87yid9sd1qgfv2g1ck0jc";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
@ -65,6 +65,8 @@ in stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
inherit (primary-src) src;
|
inherit (primary-src) src;
|
||||||
|
|
||||||
|
outputs = [ "out" "dev" ];
|
||||||
|
|
||||||
# For some reason librdf_redland sometimes refers to rasqal.h instead
|
# For some reason librdf_redland sometimes refers to rasqal.h instead
|
||||||
# of rasqal/rasqal.h
|
# of rasqal/rasqal.h
|
||||||
NIX_CFLAGS_COMPILE = [ "-I${librdf_rasqal}/include/rasqal" ] ++ lib.optional stdenv.isx86_64 "-mno-fma";
|
NIX_CFLAGS_COMPILE = [ "-I${librdf_rasqal}/include/rasqal" ] ++ lib.optional stdenv.isx86_64 "-mno-fma";
|
||||||
@ -276,6 +278,9 @@ in stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
cp -r sysui/desktop/icons "$out/share"
|
cp -r sysui/desktop/icons "$out/share"
|
||||||
sed -re 's@Icon=libreoffice(dev)?[0-9.]*-?@Icon=@' -i "$out/share/applications/"*.desktop
|
sed -re 's@Icon=libreoffice(dev)?[0-9.]*-?@Icon=@' -i "$out/share/applications/"*.desktop
|
||||||
|
|
||||||
|
mkdir -p $dev
|
||||||
|
cp -r include $dev
|
||||||
'';
|
'';
|
||||||
|
|
||||||
configureFlags = [
|
configureFlags = [
|
||||||
|
@ -65,6 +65,8 @@ in stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
inherit (primary-src) src;
|
inherit (primary-src) src;
|
||||||
|
|
||||||
|
outputs = [ "out" "dev" ];
|
||||||
|
|
||||||
# For some reason librdf_redland sometimes refers to rasqal.h instead
|
# For some reason librdf_redland sometimes refers to rasqal.h instead
|
||||||
# of rasqal/rasqal.h
|
# of rasqal/rasqal.h
|
||||||
NIX_CFLAGS_COMPILE = [ "-I${librdf_rasqal}/include/rasqal" ];
|
NIX_CFLAGS_COMPILE = [ "-I${librdf_rasqal}/include/rasqal" ];
|
||||||
@ -276,6 +278,9 @@ in stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
cp -r sysui/desktop/icons "$out/share"
|
cp -r sysui/desktop/icons "$out/share"
|
||||||
sed -re 's@Icon=libreoffice(dev)?[0-9.]*-?@Icon=@' -i "$out/share/applications/"*.desktop
|
sed -re 's@Icon=libreoffice(dev)?[0-9.]*-?@Icon=@' -i "$out/share/applications/"*.desktop
|
||||||
|
|
||||||
|
mkdir -p $dev
|
||||||
|
cp -r include $dev
|
||||||
'';
|
'';
|
||||||
|
|
||||||
configureFlags = [
|
configureFlags = [
|
||||||
|
@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
callPackage ./generic.nix (args // rec {
|
callPackage ./generic.nix (args // rec {
|
||||||
pname = "freeoffice";
|
pname = "freeoffice";
|
||||||
version = "971";
|
version = "973";
|
||||||
edition = "2018";
|
edition = "2018";
|
||||||
suiteName = "FreeOffice";
|
suiteName = "FreeOffice";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://www.softmaker.net/down/softmaker-freeoffice-${version}-amd64.tgz";
|
url = "https://www.softmaker.net/down/softmaker-freeoffice-${version}-amd64.tgz";
|
||||||
sha256 = "1h36pjbpbiy4cw383cbrwh1jx2kp1ay29734zailmhifz53gj44f";
|
sha256 = "0xac4ynf1lfh8qmni5bhp4ybaamdfngva4bqaq21n1m4pgrx1ba5";
|
||||||
};
|
};
|
||||||
|
|
||||||
archive = "freeoffice${edition}.tar.lzma";
|
archive = "freeoffice${edition}.tar.lzma";
|
||||||
|
@ -96,6 +96,10 @@ in stdenv.mkDerivation rec {
|
|||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# freeoffice 973 misses the 96x96 application icons, giving broken symbolic links
|
||||||
|
# remove broken symbolic links
|
||||||
|
find $out -xtype l -ls -exec rm {} \;
|
||||||
|
|
||||||
# Add desktop items
|
# Add desktop items
|
||||||
${desktopItems.planmaker.buildCommand}
|
${desktopItems.planmaker.buildCommand}
|
||||||
${desktopItems.presentations.buildCommand}
|
${desktopItems.presentations.buildCommand}
|
||||||
|
@ -2,14 +2,14 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "freebayes";
|
pname = "freebayes";
|
||||||
version = "2017-08-23";
|
version = "1.3.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
name = "freebayes-${version}-src";
|
name = "freebayes-${version}-src";
|
||||||
owner = "ekg";
|
owner = "ekg";
|
||||||
repo = "freebayes";
|
repo = "freebayes";
|
||||||
rev = "8d2b3a060da473e1f4f89be04edfce5cba63f1d3";
|
rev = "v${version}";
|
||||||
sha256 = "0yyrgk2639lz1yvg4jf0ccahnkic31dy77q05pb3i28rjf37v45z";
|
sha256 = "035nriknjqq8gvil81vvsmvqwi35v80q8h1cw24vd1gdyn1x7bys";
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -298,6 +298,10 @@ stdenv.mkDerivation {
|
|||||||
|
|
||||||
# As of 2.19.0, t5562 refers to #!/usr/bin/perl
|
# As of 2.19.0, t5562 refers to #!/usr/bin/perl
|
||||||
patchShebangs t/t5562/invoke-with-content-length.pl
|
patchShebangs t/t5562/invoke-with-content-length.pl
|
||||||
|
'' + stdenv.lib.optionalString stdenv.isDarwin ''
|
||||||
|
# XXX: Some tests added in 2.24.0 fail.
|
||||||
|
# Please try to re-enable on the next release.
|
||||||
|
disable_test t7816-grep-binary-pattern
|
||||||
'' + stdenv.lib.optionalString stdenv.hostPlatform.isMusl ''
|
'' + stdenv.lib.optionalString stdenv.hostPlatform.isMusl ''
|
||||||
# Test fails (as of 2.17.0, musl 1.1.19)
|
# Test fails (as of 2.17.0, musl 1.1.19)
|
||||||
disable_test t3900-i18n-commit
|
disable_test t3900-i18n-commit
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{ stdenv, lib, fetchurl, fetchFromGitLab, bundlerEnv
|
{ stdenv, lib, fetchurl, fetchFromGitLab, bundlerEnv
|
||||||
, ruby, tzdata, git, nettools, nixosTests, nodejs
|
, ruby, tzdata, git, nettools, nixosTests, nodejs
|
||||||
, gitlabEnterprise ? false, callPackage, yarn
|
, gitlabEnterprise ? false, callPackage, yarn
|
||||||
, yarn2nix-moretea, replace
|
, fixup_yarn_lock, replace
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
@ -62,7 +62,7 @@ let
|
|||||||
yarn config --offline set yarn-offline-mirror ${yarnOfflineCache}
|
yarn config --offline set yarn-offline-mirror ${yarnOfflineCache}
|
||||||
|
|
||||||
# Fixup "resolved"-entries in yarn.lock to match our offline cache
|
# Fixup "resolved"-entries in yarn.lock to match our offline cache
|
||||||
${yarn2nix-moretea.fixup_yarn_lock}/bin/fixup_yarn_lock yarn.lock
|
${fixup_yarn_lock}/bin/fixup_yarn_lock yarn.lock
|
||||||
|
|
||||||
yarn install --offline --frozen-lockfile --ignore-scripts --no-progress --non-interactive
|
yarn install --offline --frozen-lockfile --ignore-scripts --no-progress --non-interactive
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env nix-shell
|
#!/usr/bin/env nix-shell
|
||||||
#! nix-shell -i python3 -p bundix common-updater-scripts nix nix-prefetch-git python3 python3Packages.requests python3Packages.lxml python3Packages.click python3Packages.click-log vgo2nix yarn2nix-moretea.yarn2nix
|
#! nix-shell -i python3 -p bundix common-updater-scripts nix nix-prefetch-git python3 python3Packages.requests python3Packages.lxml python3Packages.click python3Packages.click-log vgo2nix yarn2nix
|
||||||
|
|
||||||
import click
|
import click
|
||||||
import click_log
|
import click_log
|
||||||
|
@ -1,6 +1,17 @@
|
|||||||
{ stdenv, fetchurl, rustPlatform, darwin, openssl, libsodium, nettle, clang, libclang, pkgconfig }:
|
{ stdenv, fetchurl, rustPlatform, darwin, openssl, libsodium, nettle, clang, libclang, pkgconfig }:
|
||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
let
|
||||||
|
# nettle-sys=1.0.1 requires the des-compat.h header, but it was removed in
|
||||||
|
# nettle 3.5. See https://nest.pijul.com/pijul_org/pijul/discussions/416
|
||||||
|
# Remove with the next release
|
||||||
|
nettle_34 = nettle.overrideAttrs (_oldAttrs: rec {
|
||||||
|
version = "3.4.1";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "mirror://gnu/nettle/nettle-${version}.tar.gz";
|
||||||
|
sha256 = "1bcji95n1iz9p9vsgdgr26v6s7zhpsxfbjjwpqcihpfd6lawyhgr";
|
||||||
|
};
|
||||||
|
});
|
||||||
|
in rustPlatform.buildRustPackage rec {
|
||||||
pname = "pijul";
|
pname = "pijul";
|
||||||
version = "0.12.0";
|
version = "0.12.0";
|
||||||
|
|
||||||
@ -20,7 +31,7 @@ rustPlatform.buildRustPackage rec {
|
|||||||
|
|
||||||
LIBCLANG_PATH = libclang + "/lib";
|
LIBCLANG_PATH = libclang + "/lib";
|
||||||
|
|
||||||
buildInputs = [ openssl libsodium nettle libclang ] ++ stdenv.lib.optionals stdenv.isDarwin
|
buildInputs = [ openssl libsodium nettle_34 libclang ] ++ stdenv.lib.optionals stdenv.isDarwin
|
||||||
(with darwin.apple_sdk.frameworks; [ CoreServices Security ]);
|
(with darwin.apple_sdk.frameworks; [ CoreServices Security ]);
|
||||||
|
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{ stdenv, fetchFromGitHub
|
{ stdenv, fetchFromGitHub
|
||||||
, meson, ninja, pkgconfig, makeWrapper
|
, meson, ninja, pkgconfig, makeWrapper
|
||||||
, wlroots, wayland, wayland-protocols, pixman, libxkbcommon
|
, wlroots, wayland, wayland-protocols, pixman, libxkbcommon
|
||||||
, systemd, mesa, libX11
|
, systemd, libGL, libX11
|
||||||
, xwayland ? null
|
, xwayland ? null
|
||||||
}:
|
}:
|
||||||
|
|
||||||
@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
|
|||||||
buildInputs = [
|
buildInputs = [
|
||||||
wlroots wayland wayland-protocols pixman libxkbcommon
|
wlroots wayland wayland-protocols pixman libxkbcommon
|
||||||
# TODO: Not specified but required:
|
# TODO: Not specified but required:
|
||||||
systemd mesa libX11
|
systemd libGL libX11
|
||||||
];
|
];
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
@ -185,7 +185,7 @@ rec {
|
|||||||
keyutils.lib
|
keyutils.lib
|
||||||
libjack2
|
libjack2
|
||||||
fribidi
|
fribidi
|
||||||
p11_kit
|
p11-kit
|
||||||
|
|
||||||
# libraries not on the upstream include list, but nevertheless expected
|
# libraries not on the upstream include list, but nevertheless expected
|
||||||
# by at least one appimage
|
# by at least one appimage
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
addEmacsVars () {
|
addEmacsVars () {
|
||||||
if [[ -d "$1/share/emacs/site-lisp" ]]; then
|
if test -d $1/share/emacs/site-lisp; then
|
||||||
export EMACSLOADPATH="$1/share/emacs/site-lisp${EMACSLOADPATH:+:}${EMACSLOADPATH-}"
|
# it turns out, that the trailing : is actually required
|
||||||
|
# see https://www.gnu.org/software/emacs/manual/html_node/elisp/Library-Search.html
|
||||||
|
export EMACSLOADPATH="$1/share/emacs/site-lisp:${EMACSLOADPATH-}"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,27 +1,41 @@
|
|||||||
{ stdenv, fetchurl, itstool, libxml2, gettext, gnome3 }:
|
{ stdenv
|
||||||
|
, fetchurl
|
||||||
|
, gettext
|
||||||
|
, gnome3
|
||||||
|
, itstool
|
||||||
|
, libxml2
|
||||||
|
, yelp-tools
|
||||||
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "gnome-user-docs";
|
pname = "gnome-user-docs";
|
||||||
version = "3.2.2";
|
version = "3.34.1";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
|
url = "mirror://gnome/sources/gnome-user-docs/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
|
||||||
sha256 = "1ka0nw2kc85p10y8x31v0wv06a88k7qrgafp4ys04y9fzz0rkcjj";
|
sha256 = "11m9fv8k2hynrcgah4jvbm6yczg0s1ly302mipysbwpn6gbdkvf2";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ itstool libxml2 gettext ];
|
nativeBuildInputs = [
|
||||||
|
gettext
|
||||||
|
itstool
|
||||||
|
libxml2
|
||||||
|
yelp-tools
|
||||||
|
];
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
updateScript = gnome3.updateScript {
|
updateScript = gnome3.updateScript {
|
||||||
packageName = pname;
|
packageName = pname;
|
||||||
attrPath = "gnome3.gnome-user-docs";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = {
|
meta = with stdenv.lib; {
|
||||||
homepage = "https://gitlab.gnome.org/GNOME/gnome-user-docs";
|
description = "User and system administration help for the GNOME desktop";
|
||||||
description = "GNOME User Documentation";
|
homepage = "https://help.gnome.org/users/gnome-help/";
|
||||||
license = stdenv.lib.licenses.cc-by-30;
|
license = licenses.cc-by-30;
|
||||||
maintainers = gnome3.maintainers;
|
maintainers = gnome3.maintainers;
|
||||||
|
platforms = platforms.linux;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ in fetchzip {
|
|||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Unicode CJK font with over 36000 Han characters";
|
description = "Unicode CJK font with over 36000 Han characters";
|
||||||
homepage = http://www.babelstone.co.uk/Fonts/Han.html;
|
homepage = https://www.babelstone.co.uk/Fonts/Han.html;
|
||||||
|
|
||||||
license = licenses.free;
|
license = licenses.free;
|
||||||
platforms = platforms.all;
|
platforms = platforms.all;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{ lib, fetchzip }:
|
{ lib, fetchzip }:
|
||||||
|
|
||||||
let
|
let
|
||||||
version = "1.7.2";
|
version = "1.8.0";
|
||||||
in
|
in
|
||||||
|
|
||||||
fetchzip rec {
|
fetchzip rec {
|
||||||
@ -15,7 +15,7 @@ fetchzip rec {
|
|||||||
unzip -j $downloadedFile README.md -d $out/share/doc/${name}
|
unzip -j $downloadedFile README.md -d $out/share/doc/${name}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
sha256 = "1fwvbqfrgb539xybwdawvwa8cg4f215kw905rgl9a6p0iwa1nxqk";
|
sha256 = "07y2w6xzkbaj6vr95fvvnmwq1pw9jib4z02xf8937dx812yic9ni";
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
homepage = https://github.com/belluzj/fantasque-sans;
|
homepage = https://github.com/belluzj/fantasque-sans;
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user