forked from mirrors/nixpkgs
Merge staging-next into staging
This commit is contained in:
commit
76b16d05e6
|
@ -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 a new issue