Merge master into staging-next
This commit is contained in:
commit
0caf36def0
@ -68,6 +68,17 @@ build-time.
|
||||
When `verifyCargoDeps` is set to `true`, the build will also verify that the
|
||||
`cargoSha256` is not out of date by comparing the `Cargo.lock` file in both the `cargoDeps` and `src`. Note that this option changes the value of `cargoSha256` since it also copies the `Cargo.lock` in it. To avoid breaking backward-compatibility this option is not enabled by default but hopefully will be in the future.
|
||||
|
||||
### Building a crate for a different target
|
||||
|
||||
To build your crate with a different cargo `--target` simply specify the `target` attribute:
|
||||
|
||||
```nix
|
||||
pkgs.rustPlatform.buildRustPackage {
|
||||
(...)
|
||||
target = "x86_64-fortanix-unknown-sgx";
|
||||
}
|
||||
```
|
||||
|
||||
## Compiling Rust crates using Nix instead of Cargo
|
||||
|
||||
### Simple operation
|
||||
|
@ -5117,6 +5117,16 @@
|
||||
githubId = 1179566;
|
||||
name = "Nicolas B. Pierron";
|
||||
};
|
||||
pingiun = {
|
||||
email = "nixos@pingiun.com";
|
||||
github = "pingiun";
|
||||
githubId = 1576660;
|
||||
name = "Jelle Besseling";
|
||||
keys = [{
|
||||
longkeyid = "rsa4096/0x9712452E8BE3372E";
|
||||
fingerprint = "A3A3 65AE 16ED A7A0 C29C 88F1 9712 452E 8BE3 372E";
|
||||
}];
|
||||
};
|
||||
piotr = {
|
||||
email = "ppietrasa@gmail.com";
|
||||
name = "Piotr Pietraszkiewicz";
|
||||
@ -6340,6 +6350,12 @@
|
||||
githubId = 120188;
|
||||
name = "Scott W. Dunlop";
|
||||
};
|
||||
sweber = {
|
||||
email = "sweber2342+nixpkgs@gmail.com";
|
||||
github = "sweber83";
|
||||
githubId = 19905904;
|
||||
name = "Simon Weber";
|
||||
};
|
||||
swflint = {
|
||||
email = "swflint@flintfam.org";
|
||||
github = "swflint";
|
||||
|
@ -118,6 +118,14 @@ in
|
||||
type = with types; attrsOf (nullOr (either str path));
|
||||
};
|
||||
|
||||
environment.homeBinInPath = mkOption {
|
||||
description = ''
|
||||
Include ~/bin/ in $PATH.
|
||||
'';
|
||||
default = true;
|
||||
type = types.bool;
|
||||
};
|
||||
|
||||
environment.binsh = mkOption {
|
||||
default = "${config.system.build.binsh}/bin/sh";
|
||||
defaultText = "\${config.system.build.binsh}/bin/sh";
|
||||
@ -186,8 +194,10 @@ in
|
||||
|
||||
${cfg.extraInit}
|
||||
|
||||
# ~/bin if it exists overrides other bin directories.
|
||||
export PATH="$HOME/bin:$PATH"
|
||||
${optionalString cfg.homeBinInPath ''
|
||||
# ~/bin if it exists overrides other bin directories.
|
||||
export PATH="$HOME/bin:$PATH"
|
||||
''}
|
||||
'';
|
||||
|
||||
system.activationScripts.binsh = stringAfter [ "stdio" ]
|
||||
|
@ -19,6 +19,21 @@ in
|
||||
config = mkIf enabled {
|
||||
|
||||
boot.extraModulePackages = [ evdi ];
|
||||
boot.kernelModules = [ "evdi" ];
|
||||
|
||||
environment.etc."X11/xorg.conf.d/40-displaylink.conf".text = ''
|
||||
Section "OutputClass"
|
||||
Identifier "DisplayLink"
|
||||
MatchDriver "evdi"
|
||||
Driver "modesetting"
|
||||
Option "AccelMethod" "none"
|
||||
EndSection
|
||||
'';
|
||||
|
||||
# make the device available
|
||||
services.xserver.displayManager.sessionCommands = ''
|
||||
${lib.getBin pkgs.xorg.xrandr}/bin/xrandr --setprovideroutputsource 1 0
|
||||
'';
|
||||
|
||||
# Those are taken from displaylink-installer.sh and from Arch Linux AUR package.
|
||||
|
||||
@ -47,18 +62,13 @@ in
|
||||
description = "DisplayLink Manager Service";
|
||||
after = [ "display-manager.service" ];
|
||||
conflicts = [ "getty@tty7.service" ];
|
||||
path = [ pkgs.kmod ];
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = "${displaylink}/bin/DisplayLinkManager";
|
||||
Restart = "always";
|
||||
RestartSec = 5;
|
||||
LogsDirectory = "displaylink";
|
||||
};
|
||||
|
||||
preStart = ''
|
||||
mkdir -p /var/log/displaylink
|
||||
modprobe evdi
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
@ -123,7 +123,7 @@ in
|
||||
# programs.gnupg.agent = {
|
||||
# enable = true;
|
||||
# enableSSHSupport = true;
|
||||
# flavour = "gnome3";
|
||||
# pinentryFlavor = "gnome3";
|
||||
# };
|
||||
|
||||
# List services that you want to enable:
|
||||
|
@ -718,6 +718,7 @@
|
||||
./services/networking/tinc.nix
|
||||
./services/networking/tinydns.nix
|
||||
./services/networking/tftpd.nix
|
||||
./services/networking/trickster.nix
|
||||
./services/networking/tox-bootstrapd.nix
|
||||
./services/networking/tox-node.nix
|
||||
./services/networking/toxvpn.nix
|
||||
|
@ -121,6 +121,8 @@ in
|
||||
wantedBy = [ "sockets.target" ];
|
||||
};
|
||||
|
||||
services.dbus.packages = mkIf (cfg.agent.pinentryFlavor == "gnome3") [ pkgs.gcr ];
|
||||
|
||||
environment.systemPackages = with pkgs; [ cfg.package ];
|
||||
systemd.packages = [ cfg.package ];
|
||||
|
||||
|
@ -69,6 +69,7 @@ in {
|
||||
users.users.x2go = {
|
||||
home = "/var/lib/x2go/db";
|
||||
group = "x2go";
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
security.wrappers.x2gosqliteWrapper = {
|
||||
|
@ -89,6 +89,7 @@ in
|
||||
group = cfg.group;
|
||||
home = cfg.dataDir;
|
||||
createHome = true;
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
systemd.services.oxidized = {
|
||||
|
@ -223,6 +223,7 @@ in {
|
||||
group = "jackaudio";
|
||||
extraGroups = [ "audio" ];
|
||||
description = "JACK Audio system service user";
|
||||
isSystemUser = true;
|
||||
};
|
||||
# http://jackaudio.org/faq/linux_rt_config.html
|
||||
security.pam.loginLimits = [
|
||||
|
@ -99,7 +99,10 @@ in
|
||||
|
||||
environment.systemPackages = [ pkg ];
|
||||
|
||||
users.users.${user}.group = group;
|
||||
users.users.${user} = {
|
||||
group = group;
|
||||
isSystemUser = true;
|
||||
};
|
||||
users.groups.${group} = { };
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
|
@ -191,6 +191,7 @@ in
|
||||
createHome = true;
|
||||
description = "Buildkite agent user";
|
||||
extraGroups = [ "keys" ];
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
|
@ -194,7 +194,10 @@ in
|
||||
allowedTCPPorts = [ cfg.port ];
|
||||
};
|
||||
|
||||
users.users.redis.description = "Redis database user";
|
||||
users.users.redis = {
|
||||
description = "Redis database user";
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
|
||||
|
@ -99,6 +99,7 @@ in
|
||||
users.users.rethinkdb = mkIf (cfg.user == "rethinkdb")
|
||||
{ name = "rethinkdb";
|
||||
description = "RethinkDB server user";
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
users.groups = optionalAttrs (cfg.group == "rethinkdb") (singleton
|
||||
|
@ -115,6 +115,7 @@ in {
|
||||
{ name = "infinoted";
|
||||
description = "Infinoted user";
|
||||
group = cfg.group;
|
||||
isSystemUser = true;
|
||||
};
|
||||
users.groups = optional (cfg.group == "infinoted")
|
||||
{ name = "infinoted";
|
||||
|
@ -61,6 +61,7 @@ in {
|
||||
users.users.trezord = {
|
||||
group = "trezord";
|
||||
description = "Trezor bridge daemon user";
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
users.groups.trezord = {};
|
||||
|
@ -47,6 +47,7 @@ in
|
||||
name = cfg.user;
|
||||
description = "usbmuxd user";
|
||||
group = cfg.group;
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
users.groups = optional (cfg.group == defaultUserGroup) {
|
||||
|
@ -66,6 +66,7 @@ in {
|
||||
users.users.vdr = {
|
||||
group = "vdr";
|
||||
home = libDir;
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
users.groups.vdr = {};
|
||||
|
@ -27,6 +27,7 @@ in {
|
||||
users.users.mailhog = {
|
||||
name = cfg.user;
|
||||
description = "MailHog service user";
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
systemd.services.mailhog = {
|
||||
|
@ -148,6 +148,7 @@ in {
|
||||
name = cfg.user;
|
||||
home = cfg.home;
|
||||
createHome = true;
|
||||
isSystemUser = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
@ -145,11 +145,13 @@ in {
|
||||
};
|
||||
|
||||
users.users.docker-registry =
|
||||
if cfg.storagePath != null
|
||||
(if cfg.storagePath != null
|
||||
then {
|
||||
createHome = true;
|
||||
home = cfg.storagePath;
|
||||
}
|
||||
else {};
|
||||
else {}) // {
|
||||
isSystemUser = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
@ -76,7 +76,10 @@ in {
|
||||
};
|
||||
|
||||
config = mkIf (cfg.instances != {}) {
|
||||
users.users.errbot.group = "errbot";
|
||||
users.users.errbot = {
|
||||
group = "errbot";
|
||||
isSystemUser = true;
|
||||
};
|
||||
users.groups.errbot = {};
|
||||
|
||||
systemd.services = mapAttrs' (name: instanceCfg: nameValuePair "errbot-${name}" (
|
||||
|
@ -409,6 +409,7 @@ in
|
||||
home = cfg.stateDir;
|
||||
useDefaultShell = true;
|
||||
group = "gitea";
|
||||
isSystemUser = true;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -71,6 +71,7 @@ in
|
||||
group = config.users.users.gollum.name;
|
||||
description = "Gollum user";
|
||||
createHome = false;
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
users.groups.gollum = { };
|
||||
|
@ -41,7 +41,10 @@ in
|
||||
};
|
||||
|
||||
users.users = mkIf (cfg.user == "jellyfin") {
|
||||
jellyfin.group = cfg.group;
|
||||
jellyfin = {
|
||||
group = cfg.group;
|
||||
isSystemUser = true;
|
||||
};
|
||||
};
|
||||
|
||||
users.groups = mkIf (cfg.group == "jellyfin") {
|
||||
|
@ -59,6 +59,7 @@ in
|
||||
group = config.users.users.osrm.name;
|
||||
description = "OSRM user";
|
||||
createHome = false;
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
users.groups.osrm = { };
|
||||
|
@ -131,6 +131,7 @@ in {
|
||||
|
||||
users.users = optional (cfg.user == "collectd") {
|
||||
name = "collectd";
|
||||
isSystemUser = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
@ -49,6 +49,7 @@ in {
|
||||
users.users = singleton {
|
||||
name = "fusion-inventory";
|
||||
description = "FusionInventory user";
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
systemd.services.fusion-inventory = {
|
||||
|
@ -181,6 +181,7 @@ in {
|
||||
|
||||
users.users = optional (cfg.user == defaultUser) {
|
||||
name = defaultUser;
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
users.groups = optional (cfg.group == defaultUser) {
|
||||
|
@ -131,6 +131,7 @@ in
|
||||
users.users.${user} = {
|
||||
description = "Zabbix Agent daemon user";
|
||||
inherit group;
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
users.groups.${group} = { };
|
||||
|
@ -187,6 +187,7 @@ in {
|
||||
group = cfg.group;
|
||||
description = "Bitcoin daemon user";
|
||||
home = cfg.dataDir;
|
||||
isSystemUser = true;
|
||||
};
|
||||
users.groups.${cfg.group} = {
|
||||
name = cfg.group;
|
||||
|
@ -84,7 +84,7 @@ in {
|
||||
|
||||
config = mkIf config.services.dnscache.enable {
|
||||
environment.systemPackages = [ pkgs.djbdns ];
|
||||
users.users.dnscache = {};
|
||||
users.users.dnscache.isSystemUser = true;
|
||||
|
||||
systemd.services.dnscache = {
|
||||
description = "djbdns dnscache server";
|
||||
|
@ -142,6 +142,7 @@ in {
|
||||
description = "dnscrypt-wrapper daemon user";
|
||||
home = "${dataDir}";
|
||||
createHome = true;
|
||||
isSystemUser = true;
|
||||
};
|
||||
users.groups.dnscrypt-wrapper = { };
|
||||
|
||||
|
@ -138,6 +138,7 @@ in
|
||||
users.users = singleton {
|
||||
name = hansUser;
|
||||
description = "Hans daemon user";
|
||||
isSystemUser = true;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -95,6 +95,7 @@ in
|
||||
users.users = optional (cfg.user == "matterbridge")
|
||||
{ name = "matterbridge";
|
||||
group = "matterbridge";
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
users.groups = optional (cfg.group == "matterbridge")
|
||||
|
@ -74,6 +74,7 @@ in
|
||||
{ description = "Morty user";
|
||||
createHome = true;
|
||||
home = "/var/lib/morty";
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
systemd.services.morty =
|
||||
|
@ -96,6 +96,7 @@ in
|
||||
users.groups.nghttpx = { };
|
||||
users.users.nghttpx = {
|
||||
group = config.users.groups.nghttpx.name;
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
|
||||
|
@ -21,6 +21,7 @@ in
|
||||
name = "owamp";
|
||||
group = "owamp";
|
||||
description = "Owamp daemon";
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
users.groups = singleton {
|
||||
|
@ -56,6 +56,7 @@ in {
|
||||
users.users.thelounge = {
|
||||
description = "thelounge service user";
|
||||
group = "thelounge";
|
||||
isSystemUser = true;
|
||||
};
|
||||
users.groups.thelounge = {};
|
||||
systemd.services.thelounge = {
|
||||
|
@ -32,7 +32,7 @@ with lib;
|
||||
config = mkIf config.services.tinydns.enable {
|
||||
environment.systemPackages = [ pkgs.djbdns ];
|
||||
|
||||
users.users.tinydns = {};
|
||||
users.users.tinydns.isSystemUser = true;
|
||||
|
||||
systemd.services.tinydns = {
|
||||
description = "djbdns tinydns server";
|
||||
|
112
nixos/modules/services/networking/trickster.nix
Normal file
112
nixos/modules/services/networking/trickster.nix
Normal file
@ -0,0 +1,112 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.trickster;
|
||||
in
|
||||
{
|
||||
|
||||
options = {
|
||||
services.trickster = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Enable Trickster.
|
||||
'';
|
||||
};
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.trickster;
|
||||
defaultText = "pkgs.trickster";
|
||||
description = ''
|
||||
Package that should be used for trickster.
|
||||
'';
|
||||
};
|
||||
|
||||
configFile = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
description = ''
|
||||
Path to configuration file.
|
||||
'';
|
||||
};
|
||||
|
||||
instance-id = mkOption {
|
||||
type = types.nullOr types.int;
|
||||
default = null;
|
||||
description = ''
|
||||
Instance ID for when running multiple processes (default null).
|
||||
'';
|
||||
};
|
||||
|
||||
log-level = mkOption {
|
||||
type = types.str;
|
||||
default = "info";
|
||||
description = ''
|
||||
Level of Logging to use (debug, info, warn, error) (default "info").
|
||||
'';
|
||||
};
|
||||
|
||||
metrics-port = mkOption {
|
||||
type = types.port;
|
||||
default = 8082;
|
||||
description = ''
|
||||
Port that the /metrics endpoint will listen on.
|
||||
'';
|
||||
};
|
||||
|
||||
origin = mkOption {
|
||||
type = types.str;
|
||||
default = "http://prometheus:9090";
|
||||
description = ''
|
||||
URL to the Prometheus Origin. Enter it like you would in grafana, e.g., http://prometheus:9090 (default http://prometheus:9090).
|
||||
'';
|
||||
};
|
||||
|
||||
profiler-port = mkOption {
|
||||
type = types.nullOr types.port;
|
||||
default = null;
|
||||
description = ''
|
||||
Port that the /debug/pprof endpoint will listen on.
|
||||
'';
|
||||
};
|
||||
|
||||
proxy-port = mkOption {
|
||||
type = types.port;
|
||||
default = 9090;
|
||||
description = ''
|
||||
Port that the Proxy server will listen on.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
systemd.services.trickster = {
|
||||
description = "Dashboard Accelerator for Prometheus";
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
DynamicUser = true;
|
||||
ExecStart = ''
|
||||
${cfg.package}/bin/trickster \
|
||||
-log-level ${cfg.log-level} \
|
||||
-metrics-port ${toString cfg.metrics-port} \
|
||||
-origin ${cfg.origin} \
|
||||
-proxy-port ${toString cfg.proxy-port} \
|
||||
${optionalString (cfg.configFile != null) "-config ${cfg.configFile}"} \
|
||||
${optionalString (cfg.profiler-port != null) "-profiler-port ${cfg.profiler-port}"} \
|
||||
${optionalString (cfg.instance-id != null) "-instance-id ${cfg.instance-id}"}
|
||||
'';
|
||||
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||
Restart = "always";
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
|
@ -93,6 +93,6 @@ in {
|
||||
};
|
||||
};
|
||||
|
||||
users.users.${cfg.user} = { };
|
||||
users.users.${cfg.user}.isSystemUser = true;
|
||||
};
|
||||
}
|
||||
|
@ -74,7 +74,10 @@ in {
|
||||
webVaultEnabled = mkDefault true;
|
||||
};
|
||||
|
||||
users.users.bitwarden_rs = { inherit group; };
|
||||
users.users.bitwarden_rs = {
|
||||
inherit group;
|
||||
isSystemUser = true;
|
||||
};
|
||||
users.groups.bitwarden_rs = { };
|
||||
|
||||
systemd.services.bitwarden_rs = {
|
||||
|
@ -546,6 +546,7 @@ in
|
||||
|
||||
users.users.oauth2_proxy = {
|
||||
description = "OAuth2 Proxy";
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
systemd.services.oauth2_proxy = {
|
||||
|
@ -171,6 +171,7 @@ in {
|
||||
|
||||
users.users.magnetico = {
|
||||
description = "Magnetico daemons user";
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
systemd.services.magneticod = {
|
||||
|
@ -893,6 +893,7 @@ in
|
||||
extraGroups = cfg.groups;
|
||||
home = cfg.workDir;
|
||||
createHome = true;
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
systemd.services.codimd = {
|
||||
|
@ -177,6 +177,7 @@ in
|
||||
{ name = cfg.user;
|
||||
group = cfg.group;
|
||||
home = "${cfg.statePath}";
|
||||
isSystemUser = true;
|
||||
}
|
||||
];
|
||||
|
||||
|
@ -277,7 +277,10 @@ in
|
||||
|
||||
systemd.services.httpd.after = optional mysqlLocal "mysql.service" ++ optional pgsqlLocal "postgresql.service";
|
||||
|
||||
users.users.${user}.group = group;
|
||||
users.users.${user} = {
|
||||
group = group;
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
|
@ -461,7 +461,10 @@ in
|
||||
|
||||
systemd.services.httpd.after = optional (cfg.database.createLocally && cfg.database.type == "mysql") "mysql.service";
|
||||
|
||||
users.users.${user}.group = group;
|
||||
users.users.${user} = {
|
||||
group = group;
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
environment.systemPackages = [ mediawikiScripts ];
|
||||
};
|
||||
|
@ -309,7 +309,9 @@ in
|
||||
|
||||
systemd.services.httpd.after = optional mysqlLocal "mysql.service" ++ optional pgsqlLocal "postgresql.service";
|
||||
|
||||
users.users.${user}.group = group;
|
||||
|
||||
users.users.${user} = {
|
||||
group = group;
|
||||
isSystemUser = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
@ -68,6 +68,7 @@ in
|
||||
-Dkaraf.data=${cfg.home}/nexus3
|
||||
-Djava.io.tmpdir=${cfg.home}/nexus3/tmp
|
||||
-Dkaraf.startLocalConsole=false
|
||||
-Djava.endorsed.dirs=${cfg.package}/lib/endorsed
|
||||
'';
|
||||
|
||||
description = ''
|
||||
|
@ -54,6 +54,7 @@ in
|
||||
home = stateDir;
|
||||
createHome = true;
|
||||
group = mkIf config.virtualisation.libvirtd.enable "libvirtd";
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
systemd.services.virtlyst = {
|
||||
|
@ -367,7 +367,10 @@ in
|
||||
})
|
||||
];
|
||||
|
||||
users.users.${user}.group = group;
|
||||
users.users.${user} = {
|
||||
group = group;
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
|
@ -102,7 +102,10 @@ with lib;
|
||||
|
||||
environment.systemPackages = [ pkgs.hitch ];
|
||||
|
||||
users.users.hitch.group = "hitch";
|
||||
users.users.hitch = {
|
||||
group = "hitch";
|
||||
isSystemUser = true;
|
||||
};
|
||||
users.groups.hitch = {};
|
||||
};
|
||||
}
|
||||
|
@ -117,6 +117,7 @@ in {
|
||||
group = "traefik";
|
||||
home = cfg.dataDir;
|
||||
createHome = true;
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
users.groups.traefik = {};
|
||||
|
@ -116,6 +116,7 @@ in {
|
||||
users.users = optionalAttrs (cfg.user == "unit") (singleton {
|
||||
name = "unit";
|
||||
group = cfg.group;
|
||||
isSystemUser = true;
|
||||
});
|
||||
|
||||
users.groups = optionalAttrs (cfg.group == "unit") (singleton {
|
||||
|
@ -135,6 +135,9 @@ in
|
||||
services.openssh.enable = true;
|
||||
services.openssh.permitRootLogin = "prohibit-password";
|
||||
|
||||
# Creates symlinks for block device names.
|
||||
services.udev.packages = [ pkgs.ec2-utils ];
|
||||
|
||||
# Force getting the hostname from EC2.
|
||||
networking.hostName = mkDefault "";
|
||||
|
||||
|
@ -39,7 +39,8 @@ in
|
||||
caddy = handleTest ./caddy.nix {};
|
||||
cadvisor = handleTestOn ["x86_64-linux"] ./cadvisor.nix {};
|
||||
cassandra = handleTest ./cassandra.nix {};
|
||||
ceph = handleTestOn ["x86_64-linux"] ./ceph.nix {};
|
||||
ceph-single-node = handleTestOn ["x86_64-linux"] ./ceph-single-node.nix {};
|
||||
ceph-multi-node = handleTestOn ["x86_64-linux"] ./ceph-multi-node.nix {};
|
||||
certmgr = handleTest ./certmgr.nix {};
|
||||
cfssl = handleTestOn ["x86_64-linux"] ./cfssl.nix {};
|
||||
chromium = (handleTestOn ["x86_64-linux"] ./chromium.nix {}).stable or {};
|
||||
@ -280,6 +281,7 @@ in
|
||||
tor = handleTest ./tor.nix {};
|
||||
transmission = handleTest ./transmission.nix {};
|
||||
trezord = handleTest ./trezord.nix {};
|
||||
trickster = handleTest ./trickster.nix {};
|
||||
udisks2 = handleTest ./udisks2.nix {};
|
||||
upnp = handleTest ./upnp.nix {};
|
||||
uwsgi = handleTest ./uwsgi.nix {};
|
||||
|
247
nixos/tests/ceph-multi-node.nix
Normal file
247
nixos/tests/ceph-multi-node.nix
Normal file
@ -0,0 +1,247 @@
|
||||
import ./make-test.nix ({pkgs, lib, ...}:
|
||||
|
||||
let
|
||||
cfg = {
|
||||
clusterId = "066ae264-2a5d-4729-8001-6ad265f50b03";
|
||||
monA = {
|
||||
name = "a";
|
||||
ip = "192.168.1.1";
|
||||
};
|
||||
osd0 = {
|
||||
name = "0";
|
||||
ip = "192.168.1.2";
|
||||
key = "AQBCEJNa3s8nHRAANvdsr93KqzBznuIWm2gOGg==";
|
||||
uuid = "55ba2294-3e24-478f-bee0-9dca4c231dd9";
|
||||
};
|
||||
osd1 = {
|
||||
name = "1";
|
||||
ip = "192.168.1.3";
|
||||
key = "AQBEEJNac00kExAAXEgy943BGyOpVH1LLlHafQ==";
|
||||
uuid = "5e97a838-85b6-43b0-8950-cb56d554d1e5";
|
||||
};
|
||||
};
|
||||
generateCephConfig = { daemonConfig }: {
|
||||
enable = true;
|
||||
global = {
|
||||
fsid = cfg.clusterId;
|
||||
monHost = cfg.monA.ip;
|
||||
monInitialMembers = cfg.monA.name;
|
||||
};
|
||||
} // daemonConfig;
|
||||
|
||||
generateHost = { pkgs, cephConfig, networkConfig, ... }: {
|
||||
virtualisation = {
|
||||
memorySize = 512;
|
||||
emptyDiskImages = [ 20480 ];
|
||||
vlans = [ 1 ];
|
||||
};
|
||||
|
||||
networking = networkConfig;
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
bash
|
||||
sudo
|
||||
ceph
|
||||
xfsprogs
|
||||
netcat-openbsd
|
||||
];
|
||||
|
||||
boot.kernelModules = [ "xfs" ];
|
||||
|
||||
services.ceph = cephConfig;
|
||||
|
||||
# So that we don't have to battle systemd when bootstraping
|
||||
systemd.targets.ceph.wantedBy = lib.mkForce [];
|
||||
};
|
||||
|
||||
networkMonA = {
|
||||
dhcpcd.enable = false;
|
||||
interfaces.eth1.ipv4.addresses = pkgs.lib.mkOverride 0 [
|
||||
{ address = cfg.monA.ip; prefixLength = 24; }
|
||||
];
|
||||
firewall = {
|
||||
allowedTCPPorts = [ 6789 3300 ];
|
||||
allowedTCPPortRanges = [ { from = 6800; to = 7300; } ];
|
||||
};
|
||||
};
|
||||
cephConfigMonA = generateCephConfig { daemonConfig = {
|
||||
mon = {
|
||||
enable = true;
|
||||
daemons = [ cfg.monA.name ];
|
||||
};
|
||||
mgr = {
|
||||
enable = true;
|
||||
daemons = [ cfg.monA.name ];
|
||||
};
|
||||
}; };
|
||||
|
||||
networkOsd0 = {
|
||||
dhcpcd.enable = false;
|
||||
interfaces.eth1.ipv4.addresses = pkgs.lib.mkOverride 0 [
|
||||
{ address = cfg.osd0.ip; prefixLength = 24; }
|
||||
];
|
||||
firewall = {
|
||||
allowedTCPPortRanges = [ { from = 6800; to = 7300; } ];
|
||||
};
|
||||
};
|
||||
cephConfigOsd0 = generateCephConfig { daemonConfig = {
|
||||
osd = {
|
||||
enable = true;
|
||||
daemons = [ cfg.osd0.name ];
|
||||
};
|
||||
}; };
|
||||
|
||||
networkOsd1 = {
|
||||
dhcpcd.enable = false;
|
||||
interfaces.eth1.ipv4.addresses = pkgs.lib.mkOverride 0 [
|
||||
{ address = cfg.osd1.ip; prefixLength = 24; }
|
||||
];
|
||||
firewall = {
|
||||
allowedTCPPortRanges = [ { from = 6800; to = 7300; } ];
|
||||
};
|
||||
};
|
||||
cephConfigOsd1 = generateCephConfig { daemonConfig = {
|
||||
osd = {
|
||||
enable = true;
|
||||
daemons = [ cfg.osd1.name ];
|
||||
};
|
||||
}; };
|
||||
|
||||
testscript = { ... }: ''
|
||||
startAll;
|
||||
|
||||
$monA->waitForUnit("network.target");
|
||||
$osd0->waitForUnit("network.target");
|
||||
$osd1->waitForUnit("network.target");
|
||||
|
||||
# Create the ceph-related directories
|
||||
$monA->mustSucceed(
|
||||
"mkdir -p /var/lib/ceph/mgr/ceph-${cfg.monA.name}",
|
||||
"mkdir -p /var/lib/ceph/mon/ceph-${cfg.monA.name}",
|
||||
"chown ceph:ceph -R /var/lib/ceph/",
|
||||
"mkdir -p /etc/ceph",
|
||||
"chown ceph:ceph -R /etc/ceph"
|
||||
);
|
||||
$osd0->mustSucceed(
|
||||
"mkdir -p /var/lib/ceph/osd/ceph-${cfg.osd0.name}",
|
||||
"chown ceph:ceph -R /var/lib/ceph/",
|
||||
"mkdir -p /etc/ceph",
|
||||
"chown ceph:ceph -R /etc/ceph"
|
||||
);
|
||||
$osd1->mustSucceed(
|
||||
"mkdir -p /var/lib/ceph/osd/ceph-${cfg.osd1.name}",
|
||||
"chown ceph:ceph -R /var/lib/ceph/",
|
||||
"mkdir -p /etc/ceph",
|
||||
"chown ceph:ceph -R /etc/ceph"
|
||||
);
|
||||
|
||||
# Bootstrap ceph-mon daemon
|
||||
$monA->mustSucceed(
|
||||
"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 /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",
|
||||
"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",
|
||||
"systemctl start ceph-mon-${cfg.monA.name}"
|
||||
);
|
||||
$monA->waitForUnit("ceph-mon-${cfg.monA.name}");
|
||||
$monA->mustSucceed("ceph mon enable-msgr2");
|
||||
|
||||
# Can't check ceph status until a mon is up
|
||||
$monA->succeed("ceph -s | grep 'mon: 1 daemons'");
|
||||
|
||||
# Start the ceph-mgr daemon, it has no deps and hardly any setup
|
||||
$monA->mustSucceed(
|
||||
"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}"
|
||||
);
|
||||
$monA->waitForUnit("ceph-mgr-a");
|
||||
$monA->waitUntilSucceeds("ceph -s | grep 'quorum ${cfg.monA.name}'");
|
||||
$monA->waitUntilSucceeds("ceph -s | grep 'mgr: ${cfg.monA.name}(active,'");
|
||||
|
||||
# Send the admin keyring to the OSD machines
|
||||
$monA->mustSucceed("cp /etc/ceph/ceph.client.admin.keyring /tmp/shared");
|
||||
$osd0->mustSucceed("cp /tmp/shared/ceph.client.admin.keyring /etc/ceph");
|
||||
$osd1->mustSucceed("cp /tmp/shared/ceph.client.admin.keyring /etc/ceph");
|
||||
|
||||
# Bootstrap both OSDs
|
||||
$osd0->mustSucceed(
|
||||
"mkfs.xfs /dev/vdb",
|
||||
"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}",
|
||||
"echo '{\"cephx_secret\": \"${cfg.osd0.key}\"}' | ceph osd new ${cfg.osd0.uuid} -i -",
|
||||
);
|
||||
$osd1->mustSucceed(
|
||||
"mkfs.xfs /dev/vdb",
|
||||
"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}",
|
||||
"echo '{\"cephx_secret\": \"${cfg.osd1.key}\"}' | ceph osd new ${cfg.osd1.uuid} -i -"
|
||||
);
|
||||
|
||||
# Initialize the OSDs with regular filestore
|
||||
$osd0->mustSucceed(
|
||||
"ceph-osd -i ${cfg.osd0.name} --mkfs --osd-uuid ${cfg.osd0.uuid}",
|
||||
"chown -R ceph:ceph /var/lib/ceph/osd",
|
||||
"systemctl start ceph-osd-${cfg.osd0.name}",
|
||||
);
|
||||
$osd1->mustSucceed(
|
||||
"ceph-osd -i ${cfg.osd1.name} --mkfs --osd-uuid ${cfg.osd1.uuid}",
|
||||
"chown -R ceph:ceph /var/lib/ceph/osd",
|
||||
"systemctl start ceph-osd-${cfg.osd1.name}"
|
||||
);
|
||||
$monA->waitUntilSucceeds("ceph osd stat | grep -e '2 osds: 2 up[^,]*, 2 in'");
|
||||
$monA->waitUntilSucceeds("ceph -s | grep 'mgr: ${cfg.monA.name}(active,'");
|
||||
$monA->waitUntilSucceeds("ceph -s | grep 'HEALTH_OK'");
|
||||
|
||||
$monA->mustSucceed(
|
||||
"ceph osd pool create multi-node-test 100 100",
|
||||
"ceph osd pool ls | grep 'multi-node-test'",
|
||||
"ceph osd pool rename multi-node-test multi-node-other-test",
|
||||
"ceph osd pool ls | grep 'multi-node-other-test'"
|
||||
);
|
||||
$monA->waitUntilSucceeds("ceph -s | grep '1 pools, 100 pgs'");
|
||||
$monA->mustSucceed("ceph osd pool set multi-node-other-test size 2");
|
||||
$monA->waitUntilSucceeds("ceph -s | grep 'HEALTH_OK'");
|
||||
$monA->waitUntilSucceeds("ceph -s | grep '100 active+clean'");
|
||||
$monA->mustFail(
|
||||
"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"
|
||||
);
|
||||
|
||||
# As we disable the target in the config, we still want to test that it works as intended
|
||||
$osd0->mustSucceed("systemctl stop ceph-osd-${cfg.osd0.name}");
|
||||
$osd1->mustSucceed("systemctl stop ceph-osd-${cfg.osd1.name}");
|
||||
$monA->mustSucceed(
|
||||
"systemctl stop ceph-mgr-${cfg.monA.name}",
|
||||
"systemctl stop ceph-mon-${cfg.monA.name}"
|
||||
);
|
||||
|
||||
$monA->succeed("systemctl start ceph.target");
|
||||
$monA->waitForUnit("ceph-mon-${cfg.monA.name}");
|
||||
$monA->waitForUnit("ceph-mgr-${cfg.monA.name}");
|
||||
$osd0->succeed("systemctl start ceph.target");
|
||||
$osd0->waitForUnit("ceph-osd-${cfg.osd0.name}");
|
||||
$osd1->succeed("systemctl start ceph.target");
|
||||
$osd1->waitForUnit("ceph-osd-${cfg.osd1.name}");
|
||||
|
||||
$monA->succeed("ceph -s | grep 'mon: 1 daemons'");
|
||||
$monA->waitUntilSucceeds("ceph -s | grep 'quorum ${cfg.monA.name}'");
|
||||
$monA->waitUntilSucceeds("ceph osd stat | grep -e '2 osds: 2 up[^,]*, 2 in'");
|
||||
$monA->waitUntilSucceeds("ceph -s | grep 'mgr: ${cfg.monA.name}(active,'");
|
||||
$monA->waitUntilSucceeds("ceph -s | grep 'HEALTH_OK'");
|
||||
'';
|
||||
in {
|
||||
name = "basic-multi-node-ceph-cluster";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ lejonet ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
monA = generateHost { pkgs = pkgs; cephConfig = cephConfigMonA; networkConfig = networkMonA; };
|
||||
osd0 = generateHost { pkgs = pkgs; cephConfig = cephConfigOsd0; networkConfig = networkOsd0; };
|
||||
osd1 = generateHost { pkgs = pkgs; cephConfig = cephConfigOsd1; networkConfig = networkOsd1; };
|
||||
};
|
||||
|
||||
testScript = testscript;
|
||||
})
|
193
nixos/tests/ceph-single-node.nix
Normal file
193
nixos/tests/ceph-single-node.nix
Normal file
@ -0,0 +1,193 @@
|
||||
import ./make-test.nix ({pkgs, lib, ...}:
|
||||
|
||||
let
|
||||
cfg = {
|
||||
clusterId = "066ae264-2a5d-4729-8001-6ad265f50b03";
|
||||
monA = {
|
||||
name = "a";
|
||||
ip = "192.168.1.1";
|
||||
};
|
||||
osd0 = {
|
||||
name = "0";
|
||||
key = "AQBCEJNa3s8nHRAANvdsr93KqzBznuIWm2gOGg==";
|
||||
uuid = "55ba2294-3e24-478f-bee0-9dca4c231dd9";
|
||||
};
|
||||
osd1 = {
|
||||
name = "1";
|
||||
key = "AQBEEJNac00kExAAXEgy943BGyOpVH1LLlHafQ==";
|
||||
uuid = "5e97a838-85b6-43b0-8950-cb56d554d1e5";
|
||||
};
|
||||
};
|
||||
generateCephConfig = { daemonConfig }: {
|
||||
enable = true;
|
||||
global = {
|
||||
fsid = cfg.clusterId;
|
||||
monHost = cfg.monA.ip;
|
||||
monInitialMembers = cfg.monA.name;
|
||||
};
|
||||
} // daemonConfig;
|
||||
|
||||
generateHost = { pkgs, cephConfig, networkConfig, ... }: {
|
||||
virtualisation = {
|
||||
memorySize = 512;
|
||||
emptyDiskImages = [ 20480 20480 ];
|
||||
vlans = [ 1 ];
|
||||
};
|
||||
|
||||
networking = networkConfig;
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
bash
|
||||
sudo
|
||||
ceph
|
||||
xfsprogs
|
||||
];
|
||||
|
||||
boot.kernelModules = [ "xfs" ];
|
||||
|
||||
services.ceph = cephConfig;
|
||||
|
||||
# So that we don't have to battle systemd when bootstraping
|
||||
systemd.targets.ceph.wantedBy = lib.mkForce [];
|
||||
};
|
||||
|
||||
networkMonA = {
|
||||
dhcpcd.enable = false;
|
||||
interfaces.eth1.ipv4.addresses = pkgs.lib.mkOverride 0 [
|
||||
{ address = cfg.monA.ip; prefixLength = 24; }
|
||||
];
|
||||
};
|
||||
cephConfigMonA = generateCephConfig { daemonConfig = {
|
||||
mon = {
|
||||
enable = true;
|
||||
daemons = [ cfg.monA.name ];
|
||||
};
|
||||
mgr = {
|
||||
enable = true;
|
||||
daemons = [ cfg.monA.name ];
|
||||
};
|
||||
osd = {
|
||||
enable = true;
|
||||
daemons = [ cfg.osd0.name cfg.osd1.name ];
|
||||
};
|
||||
}; };
|
||||
|
||||
testscript = { ... }: ''
|
||||
startAll;
|
||||
|
||||
$monA->waitForUnit("network.target");
|
||||
|
||||
# Create the ceph-related directories
|
||||
$monA->mustSucceed(
|
||||
"mkdir -p /var/lib/ceph/mgr/ceph-${cfg.monA.name}",
|
||||
"mkdir -p /var/lib/ceph/mon/ceph-${cfg.monA.name}",
|
||||
"mkdir -p /var/lib/ceph/osd/ceph-${cfg.osd0.name}",
|
||||
"mkdir -p /var/lib/ceph/osd/ceph-${cfg.osd1.name}",
|
||||
"mkdir -p /etc/ceph",
|
||||
"chown ceph:ceph -R /etc/ceph",
|
||||
"chown ceph:ceph -R /var/lib/ceph/",
|
||||
);
|
||||
|
||||
# Bootstrap ceph-mon daemon
|
||||
$monA->mustSucceed(
|
||||
"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 /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",
|
||||
"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",
|
||||
"systemctl start ceph-mon-${cfg.monA.name}"
|
||||
);
|
||||
$monA->waitForUnit("ceph-mon-${cfg.monA.name}");
|
||||
$monA->mustSucceed("ceph mon enable-msgr2");
|
||||
|
||||
# Can't check ceph status until a mon is up
|
||||
$monA->succeed("ceph -s | grep 'mon: 1 daemons'");
|
||||
|
||||
# Start the ceph-mgr daemon, it has no deps and hardly any setup
|
||||
$monA->mustSucceed(
|
||||
"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}"
|
||||
);
|
||||
$monA->waitForUnit("ceph-mgr-a");
|
||||
$monA->waitUntilSucceeds("ceph -s | grep 'quorum ${cfg.monA.name}'");
|
||||
$monA->waitUntilSucceeds("ceph -s | grep 'mgr: ${cfg.monA.name}(active,'");
|
||||
|
||||
# Bootstrap both OSDs
|
||||
$monA->mustSucceed(
|
||||
"mkfs.xfs /dev/vdb",
|
||||
"mkfs.xfs /dev/vdc",
|
||||
"mount /dev/vdb /var/lib/ceph/osd/ceph-${cfg.osd0.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.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.osd1.key}\"}' | ceph osd new ${cfg.osd1.uuid} -i -"
|
||||
);
|
||||
|
||||
# Initialize the OSDs with regular filestore
|
||||
$monA->mustSucceed(
|
||||
"ceph-osd -i ${cfg.osd0.name} --mkfs --osd-uuid ${cfg.osd0.uuid}",
|
||||
"ceph-osd -i ${cfg.osd1.name} --mkfs --osd-uuid ${cfg.osd1.uuid}",
|
||||
"chown -R ceph:ceph /var/lib/ceph/osd",
|
||||
"systemctl start ceph-osd-${cfg.osd0.name}",
|
||||
"systemctl start ceph-osd-${cfg.osd1.name}"
|
||||
);
|
||||
$monA->waitUntilSucceeds("ceph osd stat | grep -e '2 osds: 2 up[^,]*, 2 in'");
|
||||
$monA->waitUntilSucceeds("ceph -s | grep 'mgr: ${cfg.monA.name}(active,'");
|
||||
$monA->waitUntilSucceeds("ceph -s | grep 'HEALTH_OK'");
|
||||
|
||||
$monA->mustSucceed(
|
||||
"ceph osd pool create single-node-test 100 100",
|
||||
"ceph osd pool ls | grep 'single-node-test'",
|
||||
"ceph osd pool rename single-node-test single-node-other-test",
|
||||
"ceph osd pool ls | grep 'single-node-other-test'"
|
||||
);
|
||||
$monA->waitUntilSucceeds("ceph -s | grep '1 pools, 100 pgs'");
|
||||
$monA->mustSucceed(
|
||||
"ceph osd getcrushmap -o crush",
|
||||
"crushtool -d crush -o decrushed",
|
||||
"sed 's/step chooseleaf firstn 0 type host/step chooseleaf firstn 0 type osd/' decrushed > modcrush",
|
||||
"crushtool -c modcrush -o recrushed",
|
||||
"ceph osd setcrushmap -i recrushed",
|
||||
"ceph osd pool set single-node-other-test size 2"
|
||||
);
|
||||
$monA->waitUntilSucceeds("ceph -s | grep 'HEALTH_OK'");
|
||||
$monA->waitUntilSucceeds("ceph -s | grep '100 active+clean'");
|
||||
$monA->mustFail(
|
||||
"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"
|
||||
);
|
||||
|
||||
# As we disable the target in the config, we still want to test that it works as intended
|
||||
$monA->mustSucceed(
|
||||
"systemctl stop ceph-osd-${cfg.osd0.name}",
|
||||
"systemctl stop ceph-osd-${cfg.osd1.name}",
|
||||
"systemctl stop ceph-mgr-${cfg.monA.name}",
|
||||
"systemctl stop ceph-mon-${cfg.monA.name}"
|
||||
);
|
||||
|
||||
$monA->succeed("systemctl start ceph.target");
|
||||
$monA->waitForUnit("ceph-mon-${cfg.monA.name}");
|
||||
$monA->waitForUnit("ceph-mgr-${cfg.monA.name}");
|
||||
$monA->waitForUnit("ceph-osd-${cfg.osd0.name}");
|
||||
$monA->waitForUnit("ceph-osd-${cfg.osd1.name}");
|
||||
|
||||
$monA->succeed("ceph -s | grep 'mon: 1 daemons'");
|
||||
$monA->waitUntilSucceeds("ceph -s | grep 'quorum ${cfg.monA.name}'");
|
||||
$monA->waitUntilSucceeds("ceph osd stat | grep -e '2 osds: 2 up[^,]*, 2 in'");
|
||||
$monA->waitUntilSucceeds("ceph -s | grep 'mgr: ${cfg.monA.name}(active,'");
|
||||
$monA->waitUntilSucceeds("ceph -s | grep 'HEALTH_OK'");
|
||||
'';
|
||||
in {
|
||||
name = "basic-single-node-ceph-cluster";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ lejonet johanot ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
monA = generateHost { pkgs = pkgs; cephConfig = cephConfigMonA; networkConfig = networkMonA; };
|
||||
};
|
||||
|
||||
testScript = testscript;
|
||||
})
|
@ -1,161 +0,0 @@
|
||||
import ./make-test.nix ({pkgs, lib, ...}: {
|
||||
name = "All-in-one-basic-ceph-cluster";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ johanot lejonet ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
aio = { pkgs, ... }: {
|
||||
virtualisation = {
|
||||
memorySize = 1536;
|
||||
emptyDiskImages = [ 20480 20480 ];
|
||||
vlans = [ 1 ];
|
||||
};
|
||||
|
||||
networking = {
|
||||
useDHCP = false;
|
||||
interfaces.eth1.ipv4.addresses = pkgs.lib.mkOverride 0 [
|
||||
{ address = "192.168.1.1"; prefixLength = 24; }
|
||||
];
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
bash
|
||||
sudo
|
||||
ceph
|
||||
xfsprogs
|
||||
];
|
||||
|
||||
boot.kernelModules = [ "xfs" ];
|
||||
|
||||
services.ceph.enable = true;
|
||||
services.ceph.global = {
|
||||
fsid = "066ae264-2a5d-4729-8001-6ad265f50b03";
|
||||
monInitialMembers = "aio";
|
||||
monHost = "192.168.1.1";
|
||||
};
|
||||
|
||||
services.ceph.mon = {
|
||||
enable = true;
|
||||
daemons = [ "aio" ];
|
||||
};
|
||||
|
||||
services.ceph.mgr = {
|
||||
enable = true;
|
||||
daemons = [ "aio" ];
|
||||
};
|
||||
|
||||
services.ceph.osd = {
|
||||
enable = true;
|
||||
daemons = [ "0" "1" ];
|
||||
};
|
||||
|
||||
# So that we don't have to battle systemd when bootstraping
|
||||
systemd.targets.ceph.wantedBy = lib.mkForce [];
|
||||
};
|
||||
};
|
||||
|
||||
testScript = { ... }: ''
|
||||
startAll;
|
||||
|
||||
$aio->waitForUnit("network.target");
|
||||
|
||||
# Create the ceph-related directories
|
||||
$aio->mustSucceed(
|
||||
"mkdir -p /var/lib/ceph/mgr/ceph-aio",
|
||||
"mkdir -p /var/lib/ceph/mon/ceph-aio",
|
||||
"mkdir -p /var/lib/ceph/osd/ceph-{0,1}",
|
||||
"chown ceph:ceph -R /var/lib/ceph/",
|
||||
"mkdir -p /etc/ceph",
|
||||
"chown ceph:ceph -R /etc/ceph"
|
||||
);
|
||||
|
||||
# Bootstrap ceph-mon daemon
|
||||
$aio->mustSucceed(
|
||||
"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 /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring",
|
||||
"monmaptool --create --add aio 192.168.1.1 --fsid 066ae264-2a5d-4729-8001-6ad265f50b03 /tmp/monmap",
|
||||
"sudo -u ceph ceph-mon --mkfs -i aio --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring",
|
||||
"sudo -u ceph touch /var/lib/ceph/mon/ceph-aio/done",
|
||||
"systemctl start ceph-mon-aio"
|
||||
);
|
||||
$aio->waitForUnit("ceph-mon-aio");
|
||||
$aio->mustSucceed("ceph mon enable-msgr2");
|
||||
|
||||
# Can't check ceph status until a mon is up
|
||||
$aio->succeed("ceph -s | grep 'mon: 1 daemons'");
|
||||
|
||||
# Start the ceph-mgr daemon, it has no deps and hardly any setup
|
||||
$aio->mustSucceed(
|
||||
"ceph auth get-or-create mgr.aio mon 'allow profile mgr' osd 'allow *' mds 'allow *' > /var/lib/ceph/mgr/ceph-aio/keyring",
|
||||
"systemctl start ceph-mgr-aio"
|
||||
);
|
||||
$aio->waitForUnit("ceph-mgr-aio");
|
||||
$aio->waitUntilSucceeds("ceph -s | grep 'quorum aio'");
|
||||
$aio->waitUntilSucceeds("ceph -s | grep 'mgr: aio(active,'");
|
||||
|
||||
# Bootstrap both OSDs
|
||||
$aio->mustSucceed(
|
||||
"mkfs.xfs /dev/vdb",
|
||||
"mkfs.xfs /dev/vdc",
|
||||
"mount /dev/vdb /var/lib/ceph/osd/ceph-0",
|
||||
"mount /dev/vdc /var/lib/ceph/osd/ceph-1",
|
||||
"ceph-authtool --create-keyring /var/lib/ceph/osd/ceph-0/keyring --name osd.0 --add-key AQBCEJNa3s8nHRAANvdsr93KqzBznuIWm2gOGg==",
|
||||
"ceph-authtool --create-keyring /var/lib/ceph/osd/ceph-1/keyring --name osd.1 --add-key AQBEEJNac00kExAAXEgy943BGyOpVH1LLlHafQ==",
|
||||
"echo '{\"cephx_secret\": \"AQBCEJNa3s8nHRAANvdsr93KqzBznuIWm2gOGg==\"}' | ceph osd new 55ba2294-3e24-478f-bee0-9dca4c231dd9 -i -",
|
||||
"echo '{\"cephx_secret\": \"AQBEEJNac00kExAAXEgy943BGyOpVH1LLlHafQ==\"}' | ceph osd new 5e97a838-85b6-43b0-8950-cb56d554d1e5 -i -"
|
||||
);
|
||||
|
||||
# Initialize the OSDs with regular filestore
|
||||
$aio->mustSucceed(
|
||||
"ceph-osd -i 0 --mkfs --osd-uuid 55ba2294-3e24-478f-bee0-9dca4c231dd9",
|
||||
"ceph-osd -i 1 --mkfs --osd-uuid 5e97a838-85b6-43b0-8950-cb56d554d1e5",
|
||||
"chown -R ceph:ceph /var/lib/ceph/osd",
|
||||
"systemctl start ceph-osd-0",
|
||||
"systemctl start ceph-osd-1"
|
||||
);
|
||||
|
||||
$aio->waitUntilSucceeds("ceph osd stat | grep -e '2 osds: 2 up[^,]*, 2 in'");
|
||||
$aio->waitUntilSucceeds("ceph -s | grep 'mgr: aio(active,'");
|
||||
$aio->waitUntilSucceeds("ceph -s | grep 'HEALTH_OK'");
|
||||
|
||||
$aio->mustSucceed(
|
||||
"ceph osd pool create aio-test 100 100",
|
||||
"ceph osd pool ls | grep 'aio-test'",
|
||||
"ceph osd pool rename aio-test aio-other-test",
|
||||
"ceph osd pool ls | grep 'aio-other-test'",
|
||||
"ceph -s | grep '1 pools, 100 pgs'",
|
||||
"ceph osd getcrushmap -o crush",
|
||||
"crushtool -d crush -o decrushed",
|
||||
"sed 's/step chooseleaf firstn 0 type host/step chooseleaf firstn 0 type osd/' decrushed > modcrush",
|
||||
"crushtool -c modcrush -o recrushed",
|
||||
"ceph osd setcrushmap -i recrushed",
|
||||
"ceph osd pool set aio-other-test size 2"
|
||||
);
|
||||
$aio->waitUntilSucceeds("ceph -s | grep 'HEALTH_OK'");
|
||||
$aio->waitUntilSucceeds("ceph -s | grep '100 active+clean'");
|
||||
$aio->mustFail(
|
||||
"ceph osd pool ls | grep 'aio-test'",
|
||||
"ceph osd pool delete aio-other-test aio-other-test --yes-i-really-really-mean-it"
|
||||
);
|
||||
|
||||
# As we disable the target in the config, we still want to test that it works as intended
|
||||
$aio->mustSucceed(
|
||||
"systemctl stop ceph-osd-0",
|
||||
"systemctl stop ceph-osd-1",
|
||||
"systemctl stop ceph-mgr-aio",
|
||||
"systemctl stop ceph-mon-aio"
|
||||
);
|
||||
$aio->succeed("systemctl start ceph.target");
|
||||
$aio->waitForUnit("ceph-mon-aio");
|
||||
$aio->waitForUnit("ceph-mgr-aio");
|
||||
$aio->waitForUnit("ceph-osd-0");
|
||||
$aio->waitForUnit("ceph-osd-1");
|
||||
$aio->succeed("ceph -s | grep 'mon: 1 daemons'");
|
||||
$aio->waitUntilSucceeds("ceph -s | grep 'quorum aio'");
|
||||
$aio->waitUntilSucceeds("ceph osd stat | grep -e '2 osds: 2 up[^,]*, 2 in'");
|
||||
$aio->waitUntilSucceeds("ceph -s | grep 'mgr: aio(active,'");
|
||||
$aio->waitUntilSucceeds("ceph -s | grep 'HEALTH_OK'");
|
||||
'';
|
||||
})
|
29
nixos/tests/trickster.nix
Normal file
29
nixos/tests/trickster.nix
Normal file
@ -0,0 +1,29 @@
|
||||
import ./make-test.nix ({ pkgs, ... }: {
|
||||
name = "trickster";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ "1000101" ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
prometheus = { ... }: {
|
||||
services.prometheus.enable = true;
|
||||
networking.firewall.allowedTCPPorts = [ 9090 ];
|
||||
};
|
||||
trickster = { ... }: {
|
||||
services.trickster.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
startAll;
|
||||
$prometheus->waitForUnit("prometheus.service");
|
||||
$prometheus->waitForOpenPort(9090);
|
||||
$prometheus->waitUntilSucceeds("curl -L http://localhost:9090/metrics | grep 'promhttp_metric_handler_requests_total{code=\"500\"} 0'");
|
||||
$trickster->waitForUnit("trickster.service");
|
||||
$trickster->waitForOpenPort(8082);
|
||||
$trickster->waitForOpenPort(9090);
|
||||
$trickster->waitUntilSucceeds("curl -L http://localhost:8082/metrics | grep 'promhttp_metric_handler_requests_total{code=\"500\"} 0'");
|
||||
$trickster->waitUntilSucceeds("curl -L http://prometheus:9090/metrics | grep 'promhttp_metric_handler_requests_total{code=\"500\"} 0'");
|
||||
$trickster->waitUntilSucceeds("curl -L http://localhost:9090/metrics | grep 'promhttp_metric_handler_requests_total{code=\"500\"} 0'");
|
||||
'';
|
||||
})
|
@ -3,12 +3,12 @@
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "0.9.18";
|
||||
version = "0.9.18.1";
|
||||
pname = "drumgizmo";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://www.drumgizmo.org/releases/${pname}-${version}/${pname}-${version}.tar.gz";
|
||||
sha256 = "1vig9pm0dakpk8wa62m9ajj3bz536h0170r8vb98hxbm4wyys8yj";
|
||||
sha256 = "0bpbkzcr3znbwfdk79c14n5k5hh80iqlk2nc03q95vhimbadk8k7";
|
||||
};
|
||||
|
||||
configureFlags = [ "--enable-lv2" ];
|
||||
|
@ -5,14 +5,14 @@
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "gpodder";
|
||||
version = "3.10.9";
|
||||
version = "3.10.11";
|
||||
format = "other";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = pname;
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "1sdmr1sq1d4p492zp9kq3npl7p56yr0pr470z9r6xxcylax5mhfq";
|
||||
sha256 = "15f5z3cnch9lpzbz73l4wjykv9n74y8djz5db53la2ql4ihaxfz9";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "padthv1";
|
||||
version = "0.9.10";
|
||||
version = "0.9.11";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/padthv1/${pname}-${version}.tar.gz";
|
||||
sha256 = "07gpq31a9iwk79yzndqzmw7snap7s4ifnsc4mfwkdga2zx13z0rx";
|
||||
sha256 = "02yfwyirjqxa075yqdnci9b9k57kdmkjvn9gnpdbnjp887pds76g";
|
||||
};
|
||||
|
||||
buildInputs = [ libjack2 alsaLib libsndfile liblo lv2 qt5.qtbase qt5.qttools fftw ];
|
||||
|
@ -1,12 +1,12 @@
|
||||
{ stdenv, fetchurl, pkgconfig, qt5, alsaLib, libjack2 }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "0.5.5";
|
||||
version = "0.6.0";
|
||||
pname = "qmidinet";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/qmidinet/${pname}-${version}.tar.gz";
|
||||
sha256 = "0az20hh14g7k6h779dk1b6fshxnfj2664sj6ypgllzriwv430x9y";
|
||||
sha256 = "07hgk3a8crx262rm1fzggqarz8f1ml910vwgd32mbvlarws5cv0n";
|
||||
};
|
||||
|
||||
hardeningDisable = [ "format" ];
|
||||
|
@ -1,13 +1,13 @@
|
||||
{ stdenv, fetchurl, autoconf, automake, libtool, pkgconfig, qttools
|
||||
, liblscp, libgig, qtbase }:
|
||||
, liblscp, libgig, qtbase, mkDerivation }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
mkDerivation rec {
|
||||
pname = "qsampler";
|
||||
version = "0.5.6";
|
||||
version = "0.6.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/qsampler/${pname}-${version}.tar.gz";
|
||||
sha256 = "0lx2mzyajmjckwfvgf8p8bahzpj0n0lflyip41jk32nwd2hzjhbs";
|
||||
sha256 = "1krhjyd67hvnv6sgndwq81lfvnb4qkhc7da1119fn2lzl7hx9wh3";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoconf automake libtool pkgconfig qttools ];
|
||||
|
@ -4,11 +4,11 @@
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "qsynth";
|
||||
version = "0.5.7";
|
||||
version = "0.6.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/qsynth/${pname}-${version}.tar.gz";
|
||||
sha256 = "18im4w8agj60nkppwbkxqnhpp13z5li3w30kklv4lgs20rvgbvl6";
|
||||
sha256 = "173v0jqybi5szxxvj4n6wyg9sj54rmm6pxwhynx8wkm7nsbh0aij";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoconf pkgconfig ];
|
||||
|
@ -7,13 +7,13 @@ with stdenv.lib;
|
||||
stdenv.mkDerivation rec {
|
||||
|
||||
name = "bitcoin" + (toString (optional (!withGui) "d")) + "-abc-" + version;
|
||||
version = "0.20.3";
|
||||
version = "0.20.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bitcoin-ABC";
|
||||
repo = "bitcoin-abc";
|
||||
rev = "v${version}";
|
||||
sha256 = "1m0k685czpywmkzhzfa09jc0hvmh7rk5rywwlq2chxz50pzm2m3a";
|
||||
sha256 = "1adps3g99m7cxs58c48g2dgyihfv0v8d198klzcbbf4dq0s5v45c";
|
||||
};
|
||||
|
||||
patches = [ ./fix-bitcoin-qt-build.patch ];
|
||||
|
@ -10,16 +10,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "jormungandr";
|
||||
version = "0.7.0-rc3";
|
||||
version = "0.7.0-rc4";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://github.com/input-output-hk/${pname}";
|
||||
rev = "v${version}";
|
||||
sha256 = "09hfmzgz1imz22w27c0aal6v7m4yfivh0sk63mawcd4m7sa6045c";
|
||||
sha256 = "1cjdapy0r2bikqck64cl09vzs307wcfi628hfmpczrg33i81pr3g";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
cargoSha256 = "0syfwykwzfm9nqpna0qrmjiv4dp0rxxbpxv8qawq9ivs9z8fbq2m";
|
||||
cargoSha256 = "0546ahgwcczaxda1hc1r20skzi93s40isq2ys40y9165sgdydn4i";
|
||||
|
||||
nativeBuildInputs = [ pkgconfig protobuf ];
|
||||
buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security ];
|
||||
|
@ -104,21 +104,6 @@
|
||||
|
||||
icicles = callPackage ./icicles { };
|
||||
|
||||
rtags = melpaBuild {
|
||||
inherit (external.rtags) version src meta;
|
||||
|
||||
pname = "rtags";
|
||||
|
||||
dontConfigure = true;
|
||||
|
||||
propagatedUserEnvPkgs = [ external.rtags ];
|
||||
recipe = pkgs.writeText "recipe" ''
|
||||
(rtags
|
||||
:repo "andersbakken/rtags" :fetcher github
|
||||
:files ("src/*.el"))
|
||||
'';
|
||||
};
|
||||
|
||||
lib-requires =
|
||||
callPackage ./lib-requires { };
|
||||
|
||||
|
@ -16,7 +16,7 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
|
||||
|
||||
dontConfigure = pkg: if pkg != null then pkg.override (args: {
|
||||
melpaBuild = drv: args.melpaBuild (drv // {
|
||||
configureScript = "true";
|
||||
dontConfigure = true;
|
||||
});
|
||||
}) else null;
|
||||
|
||||
@ -26,6 +26,17 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
|
||||
});
|
||||
}) else null;
|
||||
|
||||
externalSrc = pkg : epkg : if pkg != null then pkg.override (args : {
|
||||
melpaBuild = drv : args.melpaBuild (drv // {
|
||||
inherit (epkg) src version;
|
||||
|
||||
propagatedUserEnvPkgs = [ epkg ];
|
||||
});
|
||||
}) else null;
|
||||
|
||||
fix-rtags = pkg : if pkg != null then dontConfigure (externalSrc pkg external.rtags)
|
||||
else null;
|
||||
|
||||
generateMelpa = lib.makeOverridable ({
|
||||
archiveJson ? ./recipes-archive-melpa.json
|
||||
}: let
|
||||
@ -36,7 +47,7 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
|
||||
overrides = rec {
|
||||
shared = rec {
|
||||
# Expects bash to be at /bin/bash
|
||||
ac-rtags = markBroken super.ac-rtags;
|
||||
ac-rtags = fix-rtags super.ac-rtags;
|
||||
|
||||
airline-themes = super.airline-themes.override {
|
||||
inherit (self.melpaPackages) powerline;
|
||||
@ -52,17 +63,11 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
|
||||
# part of a larger package
|
||||
caml = dontConfigure super.caml;
|
||||
|
||||
cmake-mode = super.cmake-mode.overrideAttrs (attrs: {
|
||||
buildInputs = (attrs.buildInputs or []) ++ [
|
||||
external.openssl
|
||||
];
|
||||
nativeBuildInputs = (attrs.nativeBuildInputs or []) ++ [
|
||||
external.pkgconfig
|
||||
];
|
||||
});
|
||||
# part of a larger package
|
||||
# upstream issue: missing package version
|
||||
cmake-mode = dontConfigure super.cmake-mode;
|
||||
|
||||
# Expects bash to be at /bin/bash
|
||||
company-rtags = markBroken super.company-rtags;
|
||||
company-rtags = fix-rtags super.company-rtags;
|
||||
|
||||
easy-kill-extras = super.easy-kill-extras.override {
|
||||
inherit (self.melpaPackages) easy-kill;
|
||||
@ -104,8 +109,7 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
|
||||
inherit (self.melpaPackages) ess ctable popup;
|
||||
};
|
||||
|
||||
# Expects bash to be at /bin/bash
|
||||
flycheck-rtags = markBroken super.flycheck-rtags;
|
||||
flycheck-rtags = fix-rtags super.flycheck-rtags;
|
||||
|
||||
pdf-tools = super.pdf-tools.overrideAttrs(old: {
|
||||
nativeBuildInputs = [ external.pkgconfig ];
|
||||
@ -119,11 +123,8 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
|
||||
});
|
||||
|
||||
# Build same version as Haskell package
|
||||
hindent = super.hindent.overrideAttrs (attrs: {
|
||||
version = external.hindent.version;
|
||||
src = external.hindent.src;
|
||||
hindent = (externalSrc super.hindent external.hindent).overrideAttrs (attrs: {
|
||||
packageRequires = [ self.haskell-mode ];
|
||||
propagatedUserEnvPkgs = [ external.hindent ];
|
||||
});
|
||||
|
||||
irony = super.irony.overrideAttrs (old: {
|
||||
@ -156,8 +157,7 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
|
||||
HOME = "/tmp";
|
||||
});
|
||||
|
||||
# Expects bash to be at /bin/bash
|
||||
ivy-rtags = markBroken super.ivy-rtags;
|
||||
ivy-rtags = fix-rtags super.ivy-rtags;
|
||||
|
||||
magit = super.magit.overrideAttrs (attrs: {
|
||||
# searches for Git at build time
|
||||
@ -218,6 +218,8 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
|
||||
# part of a larger package
|
||||
notmuch = dontConfigure super.notmuch;
|
||||
|
||||
rtags = dontConfigure (externalSrc super.rtags external.rtags);
|
||||
|
||||
shm = super.shm.overrideAttrs (attrs: {
|
||||
propagatedUserEnvPkgs = [ external.structured-haskell-mode ];
|
||||
});
|
||||
@ -286,10 +288,6 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
|
||||
# upstream issue: missing file header
|
||||
bufshow = markBroken super.bufshow;
|
||||
|
||||
# part of a larger package
|
||||
# upstream issue: missing package version
|
||||
cmake-mode = dontConfigure super.cmake-mode;
|
||||
|
||||
# upstream issue: missing file header
|
||||
connection = markBroken super.connection;
|
||||
|
||||
@ -317,8 +315,7 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
|
||||
# upstream issue: doesn't build
|
||||
eterm-256color = markBroken super.eterm-256color;
|
||||
|
||||
# Expects bash to be at /bin/bash
|
||||
helm-rtags = markBroken super.helm-rtags;
|
||||
helm-rtags = fix-rtags super.helm-rtags;
|
||||
|
||||
# upstream issue: missing file header
|
||||
qiita = markBroken super.qiita;
|
||||
@ -362,8 +359,7 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
|
||||
(attrs.nativeBuildInputs or []) ++ [ external.git ];
|
||||
});
|
||||
|
||||
# Expects bash to be at /bin/bash
|
||||
helm-rtags = markBroken super.helm-rtags;
|
||||
helm-rtags = fix-rtags super.helm-rtags;
|
||||
|
||||
orgit =
|
||||
(super.orgit.overrideAttrs (attrs: {
|
||||
|
@ -13,8 +13,8 @@ let
|
||||
else throw "ImageMagick is not supported on this platform.";
|
||||
|
||||
cfg = {
|
||||
version = "7.0.8-68";
|
||||
sha256 = "07p3gdqdfmip7066n8v7ark8kgffg7miiin814lj4zg6p3h0aja7";
|
||||
version = "7.0.9-0";
|
||||
sha256 = "1w7ci7v5qlayd7a5z69px94fz3fshvn1diqw7k1ymsyvz5888d39";
|
||||
patches = [];
|
||||
};
|
||||
in
|
||||
|
@ -13,8 +13,8 @@ let
|
||||
else throw "ImageMagick is not supported on this platform.";
|
||||
|
||||
cfg = {
|
||||
version = "6.9.10-68";
|
||||
sha256 = "0ldkw6j4x0k7l6ykgpx9hz9cs7dmlapz2lv3lbrgz2nn9znqswxk";
|
||||
version = "6.9.10-69";
|
||||
sha256 = "0l4lllis16gbwjpvvsyfz91i9nq11zb3lg2zlmyay7v5697jshh6";
|
||||
patches = [];
|
||||
}
|
||||
# Freeze version on mingw so we don't need to port the patch too often.
|
||||
|
@ -60,11 +60,11 @@ let
|
||||
|
||||
in mkDerivation rec {
|
||||
pname = "drawpile";
|
||||
version = "2.1.11";
|
||||
version = "2.1.12";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://drawpile.net/files/src/drawpile-${version}.tar.gz";
|
||||
sha256 = "00r5vzracvjk369rri2jxzgfaa1ll4qj5gdmzgflvidz8420bcvm";
|
||||
sha256 = "0jvy21xmlidyfkk1p47rgyf4c1ksizcpm8s17n8mwdbnjrf6m55n";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -1,7 +1,7 @@
|
||||
{ stdenv, fetchurl, pkgconfig, perlPackages, libXft
|
||||
, libpng, zlib, popt, boehmgc, libxml2, libxslt, glib, gtkmm2
|
||||
, glibmm, libsigcxx, lcms, boost, gettext, makeWrapper
|
||||
, gsl, python2, poppler, imagemagick, libwpg, librevenge
|
||||
, gsl, gtkspell2, python2, poppler, imagemagick, libwpg, librevenge
|
||||
, libvisio, libcdr, libexif, potrace, cmake
|
||||
, librsvg, wrapGAppsHook
|
||||
}:
|
||||
@ -52,7 +52,7 @@ stdenv.mkDerivation rec {
|
||||
librsvg # for loading icons
|
||||
|
||||
python2Env perlPackages.perl
|
||||
];
|
||||
] ++ stdenv.lib.optional (!stdenv.isDarwin) gtkspell2;
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
@ -62,9 +62,6 @@ stdenv.mkDerivation rec {
|
||||
install_name_tool -change $out/lib/libinkscape_base.dylib $out/lib/inkscape/libinkscape_base.dylib $out/bin/inkview
|
||||
'';
|
||||
|
||||
# 0.92.3 complains about an invalid conversion from const char * to char *
|
||||
NIX_CFLAGS_COMPILE = " -fpermissive ";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
license = "GPL";
|
||||
homepage = https://www.inkscape.org;
|
||||
|
@ -1,14 +1,17 @@
|
||||
{ stdenv, fetchurl, qmake, poppler, pkgconfig, libunarr, libGLU
|
||||
, qtdeclarative, qtgraphicaleffects, qtmultimedia, qtquickcontrols, qtscript
|
||||
{ mkDerivation, lib, fetchFromGitHub, qmake, poppler, pkgconfig, libunarr
|
||||
, libGLU, qtdeclarative, qtgraphicaleffects, qtmultimedia, qtquickcontrols
|
||||
, qtscript
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
mkDerivation rec {
|
||||
pname = "yacreader";
|
||||
version = "9.5.0";
|
||||
version = "9.6.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/YACReader/yacreader/releases/download/${version}/${pname}-${version}-src.tar.xz";
|
||||
sha256 = "0cv5y76kjvsqsv4fp99j8np5pm4m76868i1nn40q6hy573dmxwm6";
|
||||
src = fetchFromGitHub {
|
||||
owner = "YACReader";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "1s7kb72skhr364kq8wr2i012jjmaz2vzcz526h0b2bch8921wrnf";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ qmake pkgconfig ];
|
||||
@ -19,7 +22,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
meta = {
|
||||
description = "A comic reader for cross-platform reading and managing your digital comic collection";
|
||||
homepage = http://www.yacreader.com;
|
||||
license = stdenv.lib.licenses.gpl3;
|
||||
homepage = "http://www.yacreader.com";
|
||||
license = lib.licenses.gpl3;
|
||||
};
|
||||
}
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "yEd";
|
||||
version = "3.19.1";
|
||||
version = "3.19.1.1";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://www.yworks.com/resources/yed/demo/${pname}-${version}.zip";
|
||||
sha256 = "19bnzpwszfrlpi5ssgfsv29gdmfj7pvxad9z8fdjf9k61187dgqj";
|
||||
sha256 = "0px88rc1slf7n1n8lpk56hf29ppbnnd4lrqfyggihcr0pxmw157c";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper unzip ];
|
||||
@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
license = licenses.unfree;
|
||||
homepage = http://www.yworks.com/en/products/yfiles/yed/;
|
||||
homepage = "https://www.yworks.com/products/yed";
|
||||
description = "A powerful desktop application that can be used to quickly and effectively generate high-quality diagrams";
|
||||
platforms = jre.meta.platforms;
|
||||
maintainers = with maintainers; [ abbradar ];
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
buildGoPackage rec {
|
||||
pname = "cointop";
|
||||
version = "1.3.4";
|
||||
version = "1.3.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "miguelmota";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "0nw6vzp0c5r8bwnlvgzj4hzdah44p5pp03d2bcr1lkw8np8fy65n";
|
||||
sha256 = "0xm616yjqf6qq98yjbdj6lihib2p4fh6jd91dcb59arkbs2l1nbg";
|
||||
};
|
||||
|
||||
goPackagePath = "github.com/miguelmota/cointop";
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "curaengine-lulzBot";
|
||||
version = "3.6.18";
|
||||
version = "3.6.21";
|
||||
|
||||
src = fetchgit {
|
||||
url = https://code.alephobjects.com/source/curaengine-lulzbot.git;
|
||||
|
@ -1,45 +1,44 @@
|
||||
{ lib, callPackage, fetchgit, cmake, jq, python3Packages, qtbase, qtquickcontrols2 }:
|
||||
{ lib, mkDerivation, wrapQtAppsHook, callPackage, fetchgit, cmake, jq, python3, qtbase, qtquickcontrols2 }:
|
||||
|
||||
let
|
||||
# admittedly, we're using (printer firmware) blobs when we could compile them ourselves.
|
||||
curaBinaryDataVersion = "3.6.18"; # Marlin v2.0.0.144. Keep this accurate wrt. the below.
|
||||
curaBinaryDataVersion = "3.6.21"; # Marlin v2.0.0.174 for Bio, v2.0.0.144 for others.
|
||||
curaBinaryData = fetchgit {
|
||||
url = https://code.alephobjects.com/diffusion/CBD/cura-binary-data.git;
|
||||
rev = "cdc046494bbfe1f65bfb34659a257eef9a0100a0";
|
||||
sha256 = "0v0s036gxdjiglas2yzw95alv60sw3pq5k1zrrhmw9mxr4irrblb";
|
||||
rev = "5c75d0f6c10d8b7a903e2072a48cd1f08059509e";
|
||||
sha256 = "1qdsj6rczwzdwzyr7nz7fnypbphckjrnwl8c9dr6izsxyzs465c4";
|
||||
};
|
||||
|
||||
libarcusLulzbot = callPackage ./libarcus.nix {
|
||||
inherit (python3Packages) buildPythonPackage sip pythonOlder;
|
||||
inherit (python3.pkgs) buildPythonPackage sip pythonOlder;
|
||||
};
|
||||
libsavitarLulzbot = callPackage ./libsavitar.nix {
|
||||
inherit (python3Packages) buildPythonPackage sip pythonOlder;
|
||||
inherit (python3.pkgs) buildPythonPackage sip pythonOlder;
|
||||
};
|
||||
|
||||
inherit (python3Packages) buildPythonPackage pyqt5 numpy scipy shapely pythonOlder;
|
||||
inherit (python3.pkgs) buildPythonPackage pyqt5 numpy scipy shapely pythonOlder;
|
||||
curaengine = callPackage ./curaengine.nix {
|
||||
inherit libarcusLulzbot;
|
||||
};
|
||||
uraniumLulzbot = callPackage ./uranium.nix {
|
||||
inherit callPackage libarcusLulzbot;
|
||||
inherit (python3Packages) buildPythonPackage pyqt5 numpy scipy shapely pythonOlder;
|
||||
inherit (python3.pkgs) buildPythonPackage pyqt5 numpy scipy shapely pythonOlder;
|
||||
};
|
||||
in
|
||||
python3Packages.buildPythonApplication rec {
|
||||
name = "cura-lulzbot-${version}";
|
||||
version = "3.6.18";
|
||||
mkDerivation rec {
|
||||
pname = "cura-lulzbot";
|
||||
version = "3.6.21";
|
||||
|
||||
src = fetchgit {
|
||||
url = https://code.alephobjects.com/source/cura-lulzbot.git;
|
||||
rev = "71f1ac5a2b9f535175a3858a565930348358a9ca";
|
||||
sha256 = "0by06fpxvdgy858lwhsccbmvkdq67j2s1cz8v6jnrnjrsxk7vzka";
|
||||
rev = "7faeb18604c83004846a02c60cb240708db0034f";
|
||||
sha256 = "10q38s8c8x6xkh1vns4p3iqa5y267vrjh5vq8h55mg1q5001scyq";
|
||||
};
|
||||
|
||||
format = "other"; # using cmake to build
|
||||
buildInputs = [ qtbase qtquickcontrols2 ];
|
||||
# numpy-stl temporarily disabled due to https://code.alephobjects.com/T8415
|
||||
propagatedBuildInputs = with python3Packages; [ pyserial requests zeroconf ] ++ [ libsavitarLulzbot uraniumLulzbot libarcusLulzbot ]; # numpy-stl
|
||||
nativeBuildInputs = [ cmake python3Packages.wrapPython ];
|
||||
propagatedBuildInputs = with python3.pkgs; [ pyserial requests zeroconf ] ++ [ libsavitarLulzbot uraniumLulzbot libarcusLulzbot ]; # numpy-stl
|
||||
nativeBuildInputs = [ cmake python3.pkgs.wrapPython ];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DURANIUM_DIR=${uraniumLulzbot.src}"
|
||||
@ -68,6 +67,11 @@ python3Packages.buildPythonApplication rec {
|
||||
EOF
|
||||
'';
|
||||
|
||||
postFixup = ''
|
||||
wrapPythonPrograms
|
||||
wrapQtApp "$out/bin/cura-lulzbot"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "3D printer / slicing GUI built on top of the Uranium framework";
|
||||
homepage = https://code.alephobjects.com/diffusion/CURA/;
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
buildPythonPackage {
|
||||
pname = "libarcus";
|
||||
version = "3.6.18";
|
||||
version = "3.6.21";
|
||||
format = "other";
|
||||
|
||||
src = fetchgit {
|
||||
url = https://code.alephobjects.com/source/arcus.git;
|
||||
rev = "c795c0644591703ce04e1fd799fc97b1539031aa";
|
||||
sha256 = "1yap9wbqxbjx3kqyqcsldny4mlcm33ywiwpdjlfgs0wjahfg4ip0";
|
||||
rev = "aeda02d7727f45b657afb72cef203283fbf09325";
|
||||
sha256 = "1ak0d4k745sx7paic27was3s4987z9h3czscjs21hxbi6qy83g99";
|
||||
};
|
||||
|
||||
disabled = pythonOlder "3.4.0";
|
||||
|
@ -3,13 +3,13 @@
|
||||
buildPythonPackage {
|
||||
pname = "libsavitar-lulzbot";
|
||||
name = "libsavitar-lulzbot";
|
||||
version = "3.6.18";
|
||||
version = "3.6.21";
|
||||
format = "other";
|
||||
|
||||
src = fetchgit {
|
||||
url = https://code.alephobjects.com/source/savitar.git;
|
||||
rev = "988a26d35b2a1d042f8c38938ccda77ab146af7d";
|
||||
sha256 = "146agw3a92azkgs5ahmn2rrck4an78m2r3pcss6ihmb60lx165k7";
|
||||
rev = "ee8ada42c55f54727ce4d275c294ba426d3d8234";
|
||||
sha256 = "1wm5ii3cmni8dk3c65kw4wglpypkdsfpgd480d3hc1r5bqpq0d6j";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
@ -1,16 +0,0 @@
|
||||
diff --git a/UM/Qt/Bindings/i18nCatalogProxy.py b/UM/Qt/Bindings/i18nCatalogProxy.py
|
||||
index 7e2bb16c..cec70dd6 100644
|
||||
--- a/UM/Qt/Bindings/i18nCatalogProxy.py
|
||||
+++ b/UM/Qt/Bindings/i18nCatalogProxy.py
|
||||
@@ -86,9 +86,9 @@ class i18nCatalogProxy(QObject): # [CodeStyle: Ultimaker code style requires cla
|
||||
# \todo Move this to a more generic place so more things can use it.
|
||||
def _wrapFunction(self, engine, this_object, function):
|
||||
# JavaScript code that wraps the Python method call in a closure
|
||||
- wrap_js = """function(this_object) {{
|
||||
+ wrap_js = """(function(this_object) {{
|
||||
return function({args}) {{ return this_object.{function}({args}) }}
|
||||
- }}"""
|
||||
+ }})"""
|
||||
|
||||
# Get the function name and argument list.
|
||||
function_name = function.__name__
|
@ -2,15 +2,15 @@
|
||||
, pyqt5, numpy, scipy, shapely, libarcusLulzbot, doxygen, gettext, pythonOlder }:
|
||||
|
||||
buildPythonPackage {
|
||||
version = "3.6.18";
|
||||
version = "3.6.21";
|
||||
pname = "uranium";
|
||||
name = "uraniumLulzbot";
|
||||
format = "other";
|
||||
|
||||
src = fetchgit {
|
||||
url = https://code.alephobjects.com/diffusion/U/uranium.git;
|
||||
rev = "33df88a7414375ac924ac761113baa48d2ced2b4";
|
||||
sha256 = "109cbv7y105crbrzfp70lmcr9n20ap5c97i5qd46fmxbx86yj7f8";
|
||||
rev = "54d911edd2551c5875c554928896122835a0dd6c";
|
||||
sha256 = "04bym3vwikaxw8ab0mymv9sc9n8i7yw5kfsv99ic811g9lzz3j1i";
|
||||
};
|
||||
|
||||
disabled = pythonOlder "3.5.0";
|
||||
@ -19,9 +19,6 @@ buildPythonPackage {
|
||||
propagatedBuildInputs = [ pyqt5 numpy scipy shapely libarcusLulzbot ];
|
||||
nativeBuildInputs = [ cmake doxygen ];
|
||||
|
||||
# Qt 5.12+ support; see https://code.alephobjects.com/rU70b73ba0a270799b9eacf78e400aa8b8ab3fb2ee
|
||||
patches = [ ./uranium-qt512-support.patch ];
|
||||
|
||||
postPatch = ''
|
||||
sed -i 's,/python''${PYTHON_VERSION_MAJOR}/dist-packages,/python''${PYTHON_VERSION_MAJOR}.''${PYTHON_VERSION_MINOR}/site-packages,g' CMakeLists.txt
|
||||
sed -i \
|
||||
|
@ -1,4 +1,4 @@
|
||||
{ stdenv, fetchFromGitHub, cmake, python3Packages }:
|
||||
{ stdenv, fetchFromGitHub, fetchpatch, cmake, python3Packages }:
|
||||
|
||||
let
|
||||
|
||||
@ -11,8 +11,8 @@ let
|
||||
src = fetchFromGitHub {
|
||||
owner = "fieldOfView";
|
||||
repo = pname;
|
||||
rev = "46548cbb8d32d10fe3aee12f272d5d8f34271738";
|
||||
sha256 = "0pllba8qx1746pnf5ccbkqn2j6f8hhknpgyrrv244ykvigrlczx0";
|
||||
rev = "a82a42a87bbeb390b80b991afb1a6741c46a3432";
|
||||
sha256 = "0q5yd7pw626qls2ks2y39hb9czd6lgh71jalzl2drwdi6a8mwsfz";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
@ -3,11 +3,11 @@ librsvg, glib, gtk2, libXext, libXxf86vm, poppler, xineLib, ghostscript, makeWra
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "eaglemode";
|
||||
version = "0.94.1";
|
||||
version = "0.94.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/eaglemode/${pname}-${version}.tar.bz2";
|
||||
sha256 = "0mpnk0fzy02jxbafipkdkj48m6k38h42j599gw4sdnag7ymlms89";
|
||||
sha256 = "10zxih7gmyhq0az1mnsw2x563l4bbwcns794s4png8rf4d6hjszm";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig ];
|
||||
|
@ -2,11 +2,11 @@
|
||||
, curl, cdparanoia, libid3tag, ncurses, libtool }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "grip-3.10.2";
|
||||
name = "grip-4.0.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/grip/${name}.tar.gz";
|
||||
sha256 = "1wngrvw0zkrd2xw7c6w0qmq38jxishp5q9xvm6qlycza2czb4p36";
|
||||
sha256 = "1k4mnzz2ky3wps147sdpxx7pz87zpfws2hdyl3x68iji54697qi0";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig ];
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "jgmenu";
|
||||
version = "3.4";
|
||||
version = "3.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "johanmalm";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "1cikndf71wi17qld3rwp38gk0q7zic707zzz0mr7cgn86dc4if3d";
|
||||
sha256 = "0q0m3sskgmjv28gzvjkphgg3yhwzc9w9fj9i342pibb50impjazy";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -79,9 +79,9 @@ buildPythonApplication rec {
|
||||
'';
|
||||
|
||||
buildPhase = if stdenv.isDarwin then ''
|
||||
make app
|
||||
${python.interpreter} setup.py kitty.app --update-check-interval=0
|
||||
'' else ''
|
||||
${python.interpreter} setup.py linux-package
|
||||
${python.interpreter} setup.py linux-package --update-check-interval=0
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
|
@ -56,17 +56,18 @@ let
|
||||
"websocket-client"
|
||||
"wrapt"
|
||||
"sentry-sdk"
|
||||
"werkzeug" # 0.16 just deprecates some stuff
|
||||
];
|
||||
|
||||
in py.pkgs.buildPythonApplication rec {
|
||||
pname = "OctoPrint";
|
||||
version = "1.3.11";
|
||||
version = "1.3.12";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "foosel";
|
||||
repo = "OctoPrint";
|
||||
rev = version;
|
||||
sha256 = "1102ki1819wsmkfg4riz4i0hjlr3w6nsvk8wrzqq0lc0s5ycf4jx";
|
||||
sha256 = "1lmqssgwjyhknjf3x58g7cr0fqz7fs5a3rl07r69wfpch63ranyd";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with py.pkgs; [
|
||||
@ -75,7 +76,7 @@ in py.pkgs.buildPythonApplication rec {
|
||||
psutil pyserial flask_login netaddr markdown sockjs-tornado
|
||||
pylru pyyaml sarge feedparser netifaces click websocket_client
|
||||
scandir chainmap future futures wrapt monotonic emoji
|
||||
frozendict cachelib sentry-sdk typing
|
||||
frozendict cachelib sentry-sdk typing filetype
|
||||
] ++ lib.optionals stdenv.isDarwin [ py.pkgs.appdirs ];
|
||||
|
||||
checkInputs = with py.pkgs; [ nose mock ddt ];
|
||||
@ -96,6 +97,6 @@ in py.pkgs.buildPythonApplication rec {
|
||||
homepage = https://octoprint.org/;
|
||||
description = "The snappy web interface for your 3D printer";
|
||||
license = licenses.agpl3;
|
||||
maintainers = with maintainers; [ abbradar ];
|
||||
maintainers = with maintainers; [ abbradar gebner ];
|
||||
};
|
||||
}
|
||||
|
@ -47,13 +47,13 @@ let
|
||||
|
||||
mqtt = buildPlugin rec {
|
||||
pname = "MQTT";
|
||||
version = "0.8.0";
|
||||
version = "0.8.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "OctoPrint";
|
||||
repo = "OctoPrint-MQTT";
|
||||
rev = version;
|
||||
sha256 = "1318pgwy39gkdqgll3q5lwm7avslgdwyiwb5v8m23cgyh5w8cjq7";
|
||||
sha256 = "0y1jnfplcy8mh3szrfbbvngl02j49cbdizglrfsry4fvqg50zjxd";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with python2Packages; [ paho-mqtt ];
|
||||
@ -87,13 +87,13 @@ let
|
||||
|
||||
stlviewer = buildPlugin rec {
|
||||
pname = "STLViewer";
|
||||
version = "0.4.1";
|
||||
version = "0.4.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jneilliii";
|
||||
repo = "OctoPrint-STLViewer";
|
||||
rev = "v${version}";
|
||||
sha256 = "1f64s37g2d79g76v0vjnjrc2jp2gwrsnfgx7w3n0hkf1lz1pjkm0";
|
||||
rev = version;
|
||||
sha256 = "0mkvh44fn2ch4z2avsdjwi1rp353ylmk9j5fln4x7rx8ph8y7g2b";
|
||||
};
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
@ -168,13 +168,13 @@ let
|
||||
|
||||
printtimegenius = buildPlugin rec {
|
||||
pname = "PrintTimeGenius";
|
||||
version = "1.3.1";
|
||||
version = "2.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "eyal0";
|
||||
repo = "OctoPrint-${pname}";
|
||||
rev = version;
|
||||
sha256 = "0ijv1nxmikv06a00hqqkqri6wnydqh6lwcx07pmvw6jy706jhy28";
|
||||
sha256 = "1w4jm42434x87sbih45brkb9krik851vxkz153w3w5c8p74kgg6f";
|
||||
};
|
||||
|
||||
preConfigure = ''
|
||||
|
@ -3,16 +3,13 @@
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "qmapshack";
|
||||
version = "1.13.2";
|
||||
version = "1.14.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Maproom";
|
||||
repo = pname;
|
||||
# TODO: remove it on next release.
|
||||
# 1.13.2 release tarball is essentially broken, use fixed commit instead.
|
||||
# See https://github.com/maproom/qmapshack/pull/4 for more details.
|
||||
rev = "763cfc149566325cce9e4690cb7b5f986048f86a"; #"V_${version}";
|
||||
sha256 = "1lfivhm9rv9ly1srlmb7d80s77306xplg23lx35vav879bri29rx";
|
||||
rev = "V_${version}";
|
||||
sha256 = "07c2hrq9sn456w7l3gdr599rmjfv2k6mh159zza7p1py8r7ywksa";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
@ -1,15 +1,15 @@
|
||||
{ stdenv, fetchzip, qt5 }:
|
||||
{ stdenv, fetchzip, qt5, mkDerivation }:
|
||||
|
||||
let
|
||||
version = "1.40.41";
|
||||
version = "1.40.43";
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
mkDerivation {
|
||||
pname = "qtbitcointrader";
|
||||
inherit version;
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://github.com/JulyIGHOR/QtBitcoinTrader/archive/v${version}.tar.gz";
|
||||
sha256 = "0v2rqzswqxfhxvkj1i7b48sd6kbj3w9issvn05yhp7bx75gwns4p";
|
||||
sha256 = "07xbsi78cykpyxidp1bw5ahmymdrs2afg7b0lla7dfhagz18lzxv";
|
||||
};
|
||||
|
||||
buildInputs = [ qt5.qtbase qt5.qtmultimedia qt5.qtscript ];
|
||||
|
@ -0,0 +1,25 @@
|
||||
{ lib, fetchurl, perlPackages, pkgconfig, fribidi }:
|
||||
|
||||
perlPackages.buildPerlPackage rec {
|
||||
pname = "urxvt-bidi";
|
||||
version = "2.15";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://cpan/authors/id/K/KA/KAMENSKY/Text-Bidi-${version}.tar.gz";
|
||||
sha256 = "1w65xbi4mw5acsrpv3phyzv82ghb29kpbb3b1b1gcinlfxl6f61m";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig perlPackages.ExtUtilsPkgConfig ];
|
||||
buildInputs = [ fribidi ];
|
||||
|
||||
postInstall = ''
|
||||
install -Dm555 misc/bidi "$out/lib/urxvt/perl/bidi"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Text::Bidi Perl package using fribidi, providing a urxvt plugin";
|
||||
homepage = "https://github.com/mkamensky/Text-Bidi";
|
||||
maintainers = with maintainers; [ doronbehar ];
|
||||
platforms = with platforms; unix;
|
||||
};
|
||||
}
|
@ -20,14 +20,14 @@
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
version = "0.10.1";
|
||||
version = "0.10.2";
|
||||
pname = "syncthingtray";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Martchus";
|
||||
repo = "syncthingtray";
|
||||
rev = "v${version}";
|
||||
sha256 = "107w6dlr1m5g60j342p2b6ipfn1r8kyad8av58nh8ibzycghbfv2";
|
||||
sha256 = "09iq1rr70wwy5xk0jmfnwzvnigq409hvs2viy1j0khn9jhvnk6z0";
|
||||
};
|
||||
|
||||
buildInputs = [ qtbase cpp-utilities qtutilities ]
|
||||
@ -45,6 +45,7 @@ mkDerivation rec {
|
||||
] ++ lib.optionals (!plasmoidSupport) ["-DNO_PLASMOID=ON"]
|
||||
++ lib.optionals (!kioPluginSupport) ["-DNO_FILE_ITEM_ACTION_PLUGIN=ON"]
|
||||
++ lib.optionals systemdSupport ["-DSYSTEMD_SUPPORT=ON"]
|
||||
++ lib.optionals (!webviewSupport) ["-DWEBVIEW_PROVIDER:STRING=none"]
|
||||
;
|
||||
|
||||
meta = with lib; {
|
||||
|
@ -136,9 +136,9 @@ let
|
||||
./patches/nix_plugin_paths_68.patch
|
||||
./patches/remove-webp-include-69.patch
|
||||
./patches/no-build-timestamps.patch
|
||||
] ++ optionals (channel == "stable" || channel == "beta") [
|
||||
] ++ optionals (channel == "stable") [
|
||||
./patches/widevine.patch
|
||||
] ++ optionals (channel == "dev") [
|
||||
] ++ optionals (channel == "beta" || channel == "dev") [
|
||||
./patches/widevine-79.patch
|
||||
# Unfortunately, chromium regularly breaks on major updates and
|
||||
# then needs various patches backported in order to be compiled with GCC.
|
||||
|
@ -156,7 +156,11 @@ in stdenv.mkDerivation {
|
||||
export CHROME_DEVEL_SANDBOX="$sandbox/bin/${sandboxExecutableName}"
|
||||
fi
|
||||
|
||||
export LD_LIBRARY_PATH="\$LD_LIBRARY_PATH:${libPath}"
|
||||
'' + lib.optionalString (libPath != "") ''
|
||||
# To avoid loading .so files from cwd, LD_LIBRARY_PATH here must not
|
||||
# contain an empty section before or after a colon.
|
||||
export LD_LIBRARY_PATH="\$LD_LIBRARY_PATH\''${LD_LIBRARY_PATH:+:}${libPath}"
|
||||
'' + ''
|
||||
|
||||
# libredirect causes chromium to deadlock on startup
|
||||
export LD_PRELOAD="\$(echo -n "\$LD_PRELOAD" | tr ':' '\n' | grep -v /lib/libredirect\\\\.so$ | tr '\n' ':')"
|
||||
|
@ -1,18 +1,18 @@
|
||||
# This file is autogenerated from update.sh in the same directory.
|
||||
{
|
||||
beta = {
|
||||
sha256 = "0qklm2wyixa5xkaykbxp71xix4h8gc2w4ng33afa2nynjx07kifx";
|
||||
sha256bin64 = "1y18fcql8sv0vg8zc97f1iasx660hhgdfpr3k1rlan8jzlzdnrkk";
|
||||
version = "78.0.3904.70";
|
||||
sha256 = "0pw0z35v04jzcnshsfwbc8cz95cl0dq6405rlmh2a3xz2gxaacqi";
|
||||
sha256bin64 = "1xyvaksik5a1jkkv7zqyys33n8x0n7q8xzf5mpgj71iany57z2sv";
|
||||
version = "79.0.3945.16";
|
||||
};
|
||||
dev = {
|
||||
sha256 = "01g05pqcxrk6110jfi8arkh4cq5y18n0mgbxrjd3acyirpl43s75";
|
||||
sha256bin64 = "1xm9fhqlc15wrz96f1zp00jwm1hkrjql41bbs95yvdmpdjvif34b";
|
||||
version = "79.0.3941.4";
|
||||
sha256 = "169iwzqc5zvbmm7cq1q185w2j2y2r716pbgpadps7ng2i47z6rqs";
|
||||
sha256bin64 = "0ravjdmmbwlf3ydgmk7hdd5d92zxh67nv49igr5km6mr4fi1xsw2";
|
||||
version = "80.0.3955.4";
|
||||
};
|
||||
stable = {
|
||||
sha256 = "0qklm2wyixa5xkaykbxp71xix4h8gc2w4ng33afa2nynjx07kifx";
|
||||
sha256bin64 = "0vwgi8q0zs0aclvdi91g8b0knbrlaj6dwgzb0qh6c1n5blx0dmkm";
|
||||
version = "78.0.3904.70";
|
||||
sha256 = "0mpb7798hzpysidp10k4x54b56c3fm7wqfj4s3kl7z47835gzxld";
|
||||
sha256bin64 = "1y75687w0rls03yps63hi4m0qfdm0qzgq1jhp1jicyyhjkp0xw5q";
|
||||
version = "78.0.3904.87";
|
||||
};
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user