From 1e534e234b0a92bf06361fa41b7ac8691fdbc769 Mon Sep 17 00:00:00 2001 From: Benno Fünfstück Date: Sat, 23 Jul 2016 22:31:57 +0200 Subject: fix nixos-version --hash when building from git --- nixos/modules/installer/tools/get-git-revision | 22 ++++++++++++++++++++++ nixos/modules/installer/tools/get-version-suffix | 22 ---------------------- nixos/modules/installer/tools/nixos-rebuild.sh | 7 ++++--- 3 files changed, 26 insertions(+), 25 deletions(-) create mode 100644 nixos/modules/installer/tools/get-git-revision delete mode 100644 nixos/modules/installer/tools/get-version-suffix (limited to 'nixos/modules') diff --git a/nixos/modules/installer/tools/get-git-revision b/nixos/modules/installer/tools/get-git-revision new file mode 100644 index 000000000000..b57d9cf9fa08 --- /dev/null +++ b/nixos/modules/installer/tools/get-git-revision @@ -0,0 +1,22 @@ +getVersion() { + local dir="$1" + rev= + if [ -e "$dir/.git" ]; then + if [ -z "$(type -P git)" ]; then + echo "warning: Git not found; cannot figure out revision of $dir" >&2 + return + fi + cd "$dir" + rev=$(git rev-parse --short HEAD) + if git describe --always --dirty | grep -q dirty; then + rev+=M + fi + fi +} + +if nixpkgs=$(nix-instantiate --find-file nixpkgs "$@"); then + getVersion $nixpkgs + if [ -n "$rev" ]; then + echo "$rev" + fi +fi diff --git a/nixos/modules/installer/tools/get-version-suffix b/nixos/modules/installer/tools/get-version-suffix deleted file mode 100644 index b8972cd57d22..000000000000 --- a/nixos/modules/installer/tools/get-version-suffix +++ /dev/null @@ -1,22 +0,0 @@ -getVersion() { - local dir="$1" - rev= - if [ -e "$dir/.git" ]; then - if [ -z "$(type -P git)" ]; then - echo "warning: Git not found; cannot figure out revision of $dir" >&2 - return - fi - cd "$dir" - rev=$(git rev-parse --short HEAD) - if git describe --always --dirty | grep -q dirty; then - rev+=M - fi - fi -} - -if nixpkgs=$(nix-instantiate --find-file nixpkgs "$@"); then - getVersion $nixpkgs - if [ -n "$rev" ]; then - echo ".git.$rev" - fi -fi diff --git a/nixos/modules/installer/tools/nixos-rebuild.sh b/nixos/modules/installer/tools/nixos-rebuild.sh index 5ecdcdb3cdb5..80a4537375c4 100644 --- a/nixos/modules/installer/tools/nixos-rebuild.sh +++ b/nixos/modules/installer/tools/nixos-rebuild.sh @@ -311,9 +311,10 @@ fi # nixos-version shows something useful). if [ -n "$canRun" ]; then if nixpkgs=$(nix-instantiate --find-file nixpkgs "${extraBuildFlags[@]}"); then - suffix=$($SHELL $nixpkgs/nixos/modules/installer/tools/get-version-suffix "${extraBuildFlags[@]}" || true) - if [ -n "$suffix" ]; then - echo -n "$suffix" > "$nixpkgs/.version-suffix" || true + revision=$($SHELL $nixpkgs/nixos/modules/installer/tools/get-git-revision "${extraBuildFlags[@]}" || true) + if [ -n "$revision" ]; then + echo -n ".git.$revision" > "$nixpkgs/.version-suffix" || true + echo -n "$revision" > "$nixpkgs/.git-revision" || true fi fi fi -- cgit 1.4.1 From c0ff64c2e8bd8fa9e751c835fb5b060a9f870463 Mon Sep 17 00:00:00 2001 From: Roger Qiu Date: Fri, 29 Jul 2016 20:36:06 +1000 Subject: zsh: Added HELPDIR variable for interactive shells, as the help directory is distribution specific, and will be useful for using `run-help` --- nixos/modules/programs/zsh/zsh.nix | 2 ++ 1 file changed, 2 insertions(+) (limited to 'nixos/modules') diff --git a/nixos/modules/programs/zsh/zsh.nix b/nixos/modules/programs/zsh/zsh.nix index b51104c16fa9..1b8b7a79593e 100644 --- a/nixos/modules/programs/zsh/zsh.nix +++ b/nixos/modules/programs/zsh/zsh.nix @@ -116,6 +116,8 @@ in done ${if cfg.enableCompletion then "autoload -U compinit && compinit" else ""} + + HELPDIR="${pkgs.zsh}/share/zsh/$ZSH_VERSION/help" ''; }; -- cgit 1.4.1 From 19af5b444ebc0a4bbd8e848081a6700e13ba08ef Mon Sep 17 00:00:00 2001 From: Damien Cassou Date: Mon, 1 Aug 2016 09:37:53 +0200 Subject: offlineimap's module: change UI to syslog The 'syslog' UI "allows better integration with systemd": http://www.offlineimap.org/doc/Changelog.html#offlineimap-v660-rc2-2015-10-15 --- nixos/modules/services/networking/offlineimap.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'nixos/modules') diff --git a/nixos/modules/services/networking/offlineimap.nix b/nixos/modules/services/networking/offlineimap.nix index 31ce9280f319..daf6196d3706 100644 --- a/nixos/modules/services/networking/offlineimap.nix +++ b/nixos/modules/services/networking/offlineimap.nix @@ -54,7 +54,7 @@ in { description = "Offlineimap: a software to dispose your mailbox(es) as a local Maildir(s)"; serviceConfig = { Type = "oneshot"; - ExecStart = "${cfg.package}/bin/offlineimap -u basic -o -1"; + ExecStart = "${cfg.package}/bin/offlineimap -u syslog -o -1"; TimeoutStartSec = cfg.timeoutStartSec; }; path = cfg.path; -- cgit 1.4.1 From 9ecc587e3b116dcb614a3fbe5726afcb641783c1 Mon Sep 17 00:00:00 2001 From: Casey Ransom Date: Fri, 22 Jul 2016 13:29:35 -0400 Subject: cassandra service: init The module will configure a Cassandra server with common options being tweakable. Included is also a test which will spin up 3 nodes and verify that the cluster can be formed, broken, and repaired. --- nixos/modules/module-list.nix | 1 + nixos/modules/services/databases/cassandra.nix | 445 +++++++++++++++++++++++++ nixos/release.nix | 1 + nixos/tests/cassandra.nix | 68 ++++ 4 files changed, 515 insertions(+) create mode 100644 nixos/modules/services/databases/cassandra.nix create mode 100644 nixos/tests/cassandra.nix (limited to 'nixos/modules') diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index d202b5a2c724..6c06da36183f 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -137,6 +137,7 @@ ./services/continuous-integration/jenkins/slave.nix ./services/databases/4store-endpoint.nix ./services/databases/4store.nix + ./services/databases/cassandra.nix ./services/databases/couchdb.nix ./services/databases/firebird.nix ./services/databases/hbase.nix diff --git a/nixos/modules/services/databases/cassandra.nix b/nixos/modules/services/databases/cassandra.nix new file mode 100644 index 000000000000..3f3733a8e80f --- /dev/null +++ b/nixos/modules/services/databases/cassandra.nix @@ -0,0 +1,445 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.cassandra; + cassandraPackage = cfg.package.override { + jre = cfg.jre; + }; + cassandraUser = { + name = cfg.user; + home = "/var/lib/cassandra"; + description = "Cassandra role user"; + }; + + cassandraRackDcProperties = '' + dc=${cfg.dc} + rack=${cfg.rack} + ''; + + cassandraConf = '' + cluster_name: ${cfg.clusterName} + num_tokens: 256 + auto_bootstrap: ${if cfg.autoBootstrap then "true" else "false"} + hinted_handoff_enabled: ${if cfg.hintedHandOff then "true" else "false"} + hinted_handoff_throttle_in_kb: ${builtins.toString cfg.hintedHandOffThrottle} + max_hints_delivery_threads: 2 + max_hint_window_in_ms: 10800000 # 3 hours + authenticator: ${cfg.authenticator} + authorizer: ${cfg.authorizer} + permissions_validity_in_ms: 2000 + partitioner: org.apache.cassandra.dht.Murmur3Partitioner + data_file_directories: + ${builtins.concatStringsSep "\n" (map (v: " - "+v) cfg.dataDirs)} + commitlog_directory: ${cfg.commitLogDirectory} + disk_failure_policy: stop + key_cache_size_in_mb: + key_cache_save_period: 14400 + row_cache_size_in_mb: 0 + row_cache_save_period: 0 + saved_caches_directory: ${cfg.savedCachesDirectory} + commitlog_sync: ${cfg.commitLogSync} + commitlog_sync_period_in_ms: ${builtins.toString cfg.commitLogSyncPeriod} + commitlog_segment_size_in_mb: 32 + seed_provider: + - class_name: org.apache.cassandra.locator.SimpleSeedProvider + parameters: + - seeds: "${builtins.concatStringsSep "," cfg.seeds}" + concurrent_reads: ${builtins.toString cfg.concurrentReads} + concurrent_writes: ${builtins.toString cfg.concurrentWrites} + memtable_flush_queue_size: 4 + trickle_fsync: false + trickle_fsync_interval_in_kb: 10240 + storage_port: 7000 + ssl_storage_port: 7001 + listen_address: ${cfg.listenAddress} + start_native_transport: true + native_transport_port: 9042 + start_rpc: true + rpc_address: ${cfg.rpcAddress} + rpc_port: 9160 + rpc_keepalive: true + rpc_server_type: sync + thrift_framed_transport_size_in_mb: 15 + incremental_backups: ${if cfg.incrementalBackups then "true" else "false"} + snapshot_before_compaction: false + auto_snapshot: true + column_index_size_in_kb: 64 + in_memory_compaction_limit_in_mb: 64 + multithreaded_compaction: false + compaction_throughput_mb_per_sec: 16 + compaction_preheat_key_cache: true + read_request_timeout_in_ms: 10000 + range_request_timeout_in_ms: 10000 + write_request_timeout_in_ms: 10000 + cas_contention_timeout_in_ms: 1000 + truncate_request_timeout_in_ms: 60000 + request_timeout_in_ms: 10000 + cross_node_timeout: false + endpoint_snitch: ${cfg.snitch} + dynamic_snitch_update_interval_in_ms: 100 + dynamic_snitch_reset_interval_in_ms: 600000 + dynamic_snitch_badness_threshold: 0.1 + request_scheduler: org.apache.cassandra.scheduler.NoScheduler + server_encryption_options: + internode_encryption: ${cfg.internodeEncryption} + keystore: ${cfg.keyStorePath} + keystore_password: ${cfg.keyStorePassword} + truststore: ${cfg.trustStorePath} + truststore_password: ${cfg.trustStorePassword} + client_encryption_options: + enabled: ${if cfg.clientEncryption then "true" else "false"} + keystore: ${cfg.keyStorePath} + keystore_password: ${cfg.keyStorePassword} + internode_compression: all + inter_dc_tcp_nodelay: false + preheat_kernel_page_cache: false + streaming_socket_timeout_in_ms: ${toString cfg.streamingSocketTimoutInMS} + ''; + + cassandraLog = '' + log4j.rootLogger=${cfg.logLevel},stdout + log4j.appender.stdout=org.apache.log4j.ConsoleAppender + log4j.appender.stdout.layout=org.apache.log4j.PatternLayout + log4j.appender.stdout.layout.ConversionPattern=%5p [%t] %d{HH:mm:ss,SSS} %m%n + ''; + + cassandraConfFile = pkgs.writeText "cassandra.yaml" cassandraConf; + cassandraLogFile = pkgs.writeText "log4j-server.properties" cassandraLog; + cassandraRackFile = pkgs.writeText "cassandra-rackdc.properties" cassandraRackDcProperties; + + cassandraEnvironment = { + CASSANDRA_HOME = cassandraPackage; + JAVA_HOME = cfg.jre; + CASSANDRA_CONF = "/etc/cassandra"; + }; + +in { + + ###### interface + + options.services.cassandra = { + enable = mkOption { + description = "Whether to enable cassandra."; + default = false; + type = types.bool; + }; + package = mkOption { + description = "Cassandra package to use."; + default = pkgs.cassandra; + type = types.package; + }; + jre = mkOption { + description = "JRE package to run cassandra service."; + default = pkgs.jre; + type = types.package; + }; + user = mkOption { + description = "User that runs cassandra service."; + default = "cassandra"; + type = types.string; + }; + group = mkOption { + description = "Group that runs cassandra service."; + default = "cassandra"; + type = types.string; + }; + envFile = mkOption { + description = "path to cassandra-env.sh"; + default = "${cassandraPackage}/conf/cassandra-env.sh"; + type = types.path; + }; + clusterName = mkOption { + description = "set cluster name"; + default = "cassandra"; + example = "prod-cluster0"; + type = types.string; + }; + commitLogDirectory = mkOption { + description = "directory for commit logs"; + default = "/var/lib/cassandra/commit_log"; + type = types.string; + }; + savedCachesDirectory = mkOption { + description = "directory for saved caches"; + default = "/var/lib/cassandra/saved_caches"; + type = types.string; + }; + hintedHandOff = mkOption { + description = "enable hinted handoff"; + default = true; + type = types.bool; + }; + hintedHandOffThrottle = mkOption { + description = "hinted hand off throttle rate in kb"; + default = 1024; + type = types.int; + }; + commitLogSync = mkOption { + description = "commitlog sync method"; + default = "periodic"; + type = types.str; + example = "batch"; + }; + commitLogSyncPeriod = mkOption { + description = "commitlog sync period in ms "; + default = 10000; + type = types.int; + }; + envScript = mkOption { + default = "${cassandraPackage}/conf/cassandra-env.sh"; + type = types.path; + description = "Supply your own cassandra-env.sh rather than using the default"; + }; + extraParams = mkOption { + description = "add additional lines to cassandra-env.sh"; + default = []; + example = [''JVM_OPTS="$JVM_OPTS -Dcassandra.available_processors=1"'']; + type = types.listOf types.str; + }; + dataDirs = mkOption { + type = types.listOf types.path; + default = [ "/var/lib/cassandra/data" ]; + description = "Data directories for cassandra"; + }; + logLevel = mkOption { + type = types.str; + default = "INFO"; + description = "default logging level for log4j"; + }; + internodeEncryption = mkOption { + description = "enable internode encryption"; + default = "none"; + example = "all"; + type = types.str; + }; + clientEncryption = mkOption { + description = "enable client encryption"; + default = false; + type = types.bool; + }; + trustStorePath = mkOption { + description = "path to truststore"; + default = ".conf/truststore"; + type = types.str; + }; + keyStorePath = mkOption { + description = "path to keystore"; + default = ".conf/keystore"; + type = types.str; + }; + keyStorePassword = mkOption { + description = "password to keystore"; + default = "cassandra"; + type = types.str; + }; + trustStorePassword = mkOption { + description = "password to truststore"; + default = "cassandra"; + type = types.str; + }; + seeds = mkOption { + description = "password to truststore"; + default = [ "127.0.0.1" ]; + type = types.listOf types.str; + }; + concurrentWrites = mkOption { + description = "number of concurrent writes allowed"; + default = 32; + type = types.int; + }; + concurrentReads = mkOption { + description = "number of concurrent reads allowed"; + default = 32; + type = types.int; + }; + listenAddress = mkOption { + description = "listen address"; + default = "localhost"; + type = types.str; + }; + rpcAddress = mkOption { + description = "rpc listener address"; + default = "localhost"; + type = types.str; + }; + incrementalBackups = mkOption { + description = "enable incremental backups"; + default = false; + type = types.bool; + }; + snitch = mkOption { + description = "snitch to use for topology discovery"; + default = "GossipingPropertyFileSnitch"; + example = "Ec2Snitch"; + type = types.str; + }; + dc = mkOption { + description = "datacenter for use in topology configuration"; + default = "DC1"; + example = "DC1"; + type = types.str; + }; + rack = mkOption { + description = "rack for use in topology configuration"; + default = "RAC1"; + example = "RAC1"; + type = types.str; + }; + authorizer = mkOption { + description = " + Authorization backend, implementing IAuthorizer; used to limit access/provide permissions + "; + default = "AllowAllAuthorizer"; + example = "CassandraAuthorizer"; + type = types.str; + }; + authenticator = mkOption { + description = " + Authentication backend, implementing IAuthenticator; used to identify users + "; + default = "AllowAllAuthenticator"; + example = "PasswordAuthenticator"; + type = types.str; + }; + autoBootstrap = mkOption { + description = "It makes new (non-seed) nodes automatically migrate the right data to themselves."; + default = true; + example = true; + type = types.bool; + }; + streamingSocketTimoutInMS = mkOption { + description = "Enable or disable socket timeout for streaming operations"; + default = 3600000; #CASSANDRA-8611 + example = 120; + type = types.int; + }; + repairStartAt = mkOption { + default = "Sun"; + type = types.string; + description = '' + Defines realtime (i.e. wallclock) timers with calendar event + expressions. For more details re: systemd OnCalendar at + https://www.freedesktop.org/software/systemd/man/systemd.time.html#Displaying%20Time%20Spans + ''; + example = ["weekly" "daily" "08:05:40" "mon,fri *-1/2-1,3 *:30:45"]; + }; + repairRandomizedDelayInSec = mkOption { + default = 0; + type = types.int; + description = ''Delay the timer by a randomly selected, evenly distributed + amount of time between 0 and the specified time value. re: systemd timer + RandomizedDelaySec for more details + ''; + }; + repairPostStop = mkOption { + default = null; + type = types.nullOr types.string; + description = '' + Run a script when repair is over. One can use it to send statsd events, email, etc. + ''; + }; + repairPostStart = mkOption { + default = null; + type = types.nullOr types.string; + description = '' + Run a script when repair starts. One can use it to send statsd events, email, etc. + It has same semantics as systemd ExecStopPost; So, if it fails, unit is consisdered + failed. + ''; + }; + }; + + ###### implementation + + config = mkIf cfg.enable { + + environment.etc."cassandra/cassandra-rackdc.properties" = { + source = cassandraRackFile; + }; + environment.etc."cassandra/cassandra.yaml" = { + source = cassandraConfFile; + }; + environment.etc."cassandra/log4j-server.properties" = { + source = cassandraLogFile; + }; + environment.etc."cassandra/cassandra-env.sh" = { + text = '' + ${builtins.readFile cfg.envFile} + ${concatStringsSep "\n" cfg.extraParams} + ''; + }; + systemd.services.cassandra = { + description = "Cassandra Daemon"; + wantedBy = [ "multi-user.target" ]; + after = [ "network-interfaces.target" ]; + environment = cassandraEnvironment; + restartTriggers = [ cassandraConfFile cassandraLogFile cassandraRackFile ]; + serviceConfig = { + + User = cfg.user; + PermissionsStartOnly = true; + LimitAS = "infinity"; + LimitNOFILE = "100000"; + LimitNPROC = "32768"; + LimitMEMLOCK = "infinity"; + + }; + script = '' + ${cassandraPackage}/bin/cassandra -f + ''; + path = [ + cfg.jre + cassandraPackage + pkgs.coreutils + ]; + preStart = '' + mkdir -m 0700 -p /etc/cassandra/triggers + mkdir -m 0700 -p /var/lib/cassandra /var/log/cassandra + chown ${cfg.user} /var/lib/cassandra /var/log/cassandra /etc/cassandra/triggers + ''; + postStart = '' + sleep 2 + while ! nodetool status >/dev/null 2>&1; do + sleep 2 + done + nodetool status + ''; + }; + + environment.systemPackages = [ cassandraPackage ]; + + networking.firewall.allowedTCPPorts = [ + 7000 + 7001 + 9042 + 9160 + ]; + + users.extraUsers.cassandra = + if config.ids.uids ? "cassandra" + then { uid = config.ids.uids.cassandra; } // cassandraUser + else cassandraUser ; + + boot.kernel.sysctl."vm.swappiness" = pkgs.lib.mkOptionDefault 0; + + systemd.timers."cassandra-repair" = { + timerConfig = { + OnCalendar = "${toString cfg.repairStartAt}"; + RandomizedDelaySec = cfg.repairRandomizedDelayInSec; + }; + }; + + systemd.services."cassandra-repair" = { + description = "Cassandra repair daemon"; + environment = cassandraEnvironment; + script = "${cassandraPackage}/bin/nodetool repair -pr"; + postStop = mkIf (cfg.repairPostStop != null) cfg.repairPostStop; + postStart = mkIf (cfg.repairPostStart != null) cfg.repairPostStart; + serviceConfig = { + User = cfg.user; + }; + }; + }; +} diff --git a/nixos/release.nix b/nixos/release.nix index b059de34132b..71fdcb962f7e 100644 --- a/nixos/release.nix +++ b/nixos/release.nix @@ -212,6 +212,7 @@ in rec { tests.boot = callSubTests tests/boot.nix {}; tests.boot-stage1 = callTest tests/boot-stage1.nix {}; tests.cadvisor = hydraJob (import tests/cadvisor.nix { system = "x86_64-linux"; }); + tests.cassandra = callTest tests/cassandra.nix {}; tests.chromium = (callSubTests tests/chromium.nix { system = "x86_64-linux"; }).stable; tests.cjdns = callTest tests/cjdns.nix {}; tests.containers-ipv4 = callTest tests/containers-ipv4.nix {}; diff --git a/nixos/tests/cassandra.nix b/nixos/tests/cassandra.nix new file mode 100644 index 000000000000..b729e6b158bc --- /dev/null +++ b/nixos/tests/cassandra.nix @@ -0,0 +1,68 @@ +import ./make-test.nix ({ pkgs, ...}: +let + user = "cassandra"; + nodeCfg = nodes: selfIP: cassandraOpts: + { + services.cassandra = { + enable = true; + listenAddress = selfIP; + rpcAddress = "0.0.0.0"; + seeds = [ "192.168.1.1" ]; + package = pkgs.cassandra_2_0; + jre = pkgs.openjdk; + clusterName = "ci ahoy"; + authenticator = "PasswordAuthenticator"; + authorizer = "CassandraAuthorizer"; + user = user; + } // cassandraOpts; + nixpkgs.config.allowUnfree = true; + virtualisation.memorySize = 1024; + }; + +in +{ + name = "cassandra-ci"; + + nodes = { + cass0 = {pkgs, config, nodes, ...}: nodeCfg nodes "192.168.1.1" {}; + cass1 = {pkgs, config, nodes, ...}: nodeCfg nodes "192.168.1.2" {}; + cass2 = {pkgs, config, nodes, ...}: nodeCfg nodes "192.168.1.3" { + extraParams = [ + ''JVM_OPTS="$JVM_OPTS -Dcassandra.replace_address=192.168.1.2"'' + ]; + listenAddress = "192.168.1.3"; + }; + }; + + testScript = '' + subtest "start seed", sub { + $cass0->waitForUnit("cassandra.service"); + $cass0->waitForOpenPort(9160); + $cass0->execute("echo show version | cqlsh localhost -u cassandra -p cassandra"); + sleep 2; + $cass0->succeed("echo show version | cqlsh localhost -u cassandra -p cassandra"); + $cass1->start; + }; + subtest "cassandra user/group", sub { + $cass0->succeed("id \"${user}\" >/dev/null"); + $cass1->succeed("id \"${user}\" >/dev/null"); + }; + subtest "bring up cassandra cluster", sub { + $cass1->waitForUnit("cassandra.service"); + $cass0->waitUntilSucceeds("nodetool status | grep -c UN | grep 2"); + }; + subtest "break and fix node", sub { + $cass0->block; + $cass0->waitUntilSucceeds("nodetool status | grep -c DN | grep 1"); + $cass0->unblock; + $cass0->waitUntilSucceeds("nodetool status | grep -c UN | grep 2"); + }; + subtest "replace crashed node", sub { + $cass1->crash; + $cass2->start; + $cass2->waitForUnit("cassandra.service"); + $cass0->waitUntilFails("nodetool status | grep UN | grep 192.168.1.2"); + $cass0->waitUntilSucceeds("nodetool status | grep UN | grep 192.168.1.3"); + }; + ''; +}) -- cgit 1.4.1 From 0f0be5e498ac29e9011c7a29a7612871c0bc393f Mon Sep 17 00:00:00 2001 From: Guillaume Maudoux Date: Wed, 3 Aug 2016 08:15:18 +0200 Subject: Warn for conflict between synaptics and libinput --- nixos/modules/services/x11/hardware/libinput.nix | 8 ++++++++ nixos/modules/services/x11/hardware/synaptics.nix | 7 +++++++ 2 files changed, 15 insertions(+) (limited to 'nixos/modules') diff --git a/nixos/modules/services/x11/hardware/libinput.nix b/nixos/modules/services/x11/hardware/libinput.nix index 14c7131e611c..47ce9e566045 100644 --- a/nixos/modules/services/x11/hardware/libinput.nix +++ b/nixos/modules/services/x11/hardware/libinput.nix @@ -227,6 +227,14 @@ in { EndSection ''; + assertions = [ + # already present in synaptics.nix + /* { + assertion = !config.services.xserver.synaptics.enable; + message = "Synaptics and libinput are incompatible, you cannot enable both (in services.xserver)."; + } */ + ]; + }; } diff --git a/nixos/modules/services/x11/hardware/synaptics.nix b/nixos/modules/services/x11/hardware/synaptics.nix index e74b19c8e710..5c068e89dd71 100644 --- a/nixos/modules/services/x11/hardware/synaptics.nix +++ b/nixos/modules/services/x11/hardware/synaptics.nix @@ -205,6 +205,13 @@ in { EndSection ''; + assertions = [ + { + assertion = !config.services.xserver.libinput.enable; + message = "Synaptics and libinput are incompatible, you cannot enable both (in services.xserver)."; + } + ]; + }; } -- cgit 1.4.1 From d33540734ffd5da87fc01fdc959463b77fc267bf Mon Sep 17 00:00:00 2001 From: Eric Litak Date: Wed, 3 Aug 2016 06:44:15 -0700 Subject: factorio: rudimentary mod support for factorio's nixos module --- nixos/modules/services/games/factorio.nix | 48 +++++++++++++++++++++++------- pkgs/games/factorio/default.nix | 26 +++++++++++++--- pkgs/games/factorio/utils.nix | 49 +++++++++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 4 files changed, 111 insertions(+), 14 deletions(-) create mode 100644 pkgs/games/factorio/utils.nix (limited to 'nixos/modules') diff --git a/nixos/modules/services/games/factorio.nix b/nixos/modules/services/games/factorio.nix index 90834c5b2605..0369752997a7 100644 --- a/nixos/modules/services/games/factorio.nix +++ b/nixos/modules/services/games/factorio.nix @@ -4,14 +4,17 @@ with lib; let cfg = config.services.factorio; + factorio = pkgs.factorio-headless; name = "Factorio"; stateDir = "/var/lib/factorio"; + mkSavePath = name: "${stateDir}/saves/${name}.zip"; configFile = pkgs.writeText "factorio.conf" '' use-system-read-write-data-directories=true [path] - read-data=${pkgs.factorio-headless}/share/factorio/data + read-data=${factorio}/share/factorio/data write-data=${stateDir} ''; + modDir = pkgs.factorio-mkModDirDrv cfg.mods; in { options = { @@ -32,7 +35,8 @@ in description = '' The name of the savegame that will be used by the server. - When not present in ${stateDir}/saves, it will be generated before starting the service. + When not present in ${stateDir}/saves, a new map with default + settings will be generated before starting the service. ''; }; # TODO Add more individual settings as nixos-options? @@ -51,6 +55,26 @@ in customizations. ''; }; + mods = mkOption { + type = types.listOf types.package; + default = []; + description = '' + Mods the server should install and activate. + + The derivations in this list must "build" the mod by simply copying + the .zip, named correctly, into the output directory. Eventually, + there will be a way to pull in the most up-to-date list of + derivations via nixos-channel. Until then, this is for experts only. + ''; + }; + autosave-interval = mkOption { + type = types.nullOr types.int; + default = null; + example = 2; + description = '' + The time, in minutes, between autosaves. + ''; + }; }; }; @@ -74,12 +98,14 @@ in wantedBy = [ "multi-user.target" ]; after = [ "network.target" ]; - preStart = '' - test -e ${stateDir}/saves/${cfg.saveName}.zip || \ - ${pkgs.factorio-headless}/bin/factorio \ - --config=${cfg.configFile} \ - --create=${stateDir}/saves/${cfg.saveName}.zip - ''; + preStart = toString [ + "test -e ${stateDir}/saves/${cfg.saveName}.zip" + "||" + "${factorio}/bin/factorio" + "--config=${cfg.configFile}" + "--create=${mkSavePath cfg.saveName}" + (optionalString (cfg.mods != []) "--mod-directory=${modDir}") + ]; serviceConfig = { User = "factorio"; @@ -90,10 +116,12 @@ in PrivateTmp = true; UMask = "0007"; ExecStart = toString [ - "${pkgs.factorio-headless}/bin/factorio" + "${factorio}/bin/factorio" "--config=${cfg.configFile}" "--port=${toString cfg.port}" - "--start-server=${stateDir}/saves/${cfg.saveName}.zip" + "--start-server=${mkSavePath cfg.saveName}" + (optionalString (cfg.mods != []) "--mod-directory=${modDir}") + (optionalString (cfg.autosave-interval != null) "--autosave-interval ${toString cfg.autosave-interval}") ]; }; }; diff --git a/pkgs/games/factorio/default.nix b/pkgs/games/factorio/default.nix index ace8dc658f22..bb6cffdb1224 100644 --- a/pkgs/games/factorio/default.nix +++ b/pkgs/games/factorio/default.nix @@ -1,6 +1,8 @@ { stdenv, callPackage, fetchurl, makeWrapper , alsaLib, libX11, libXcursor, libXinerama, libXrandr, libXi, mesa_noglu +, factorio-utils , releaseType +, mods ? [] , username ? "" , password ? "" }: @@ -54,14 +56,16 @@ let fi ''; + modDir = factorio-utils.mkModDirDrv mods; + base = { name = "factorio-${releaseType}-${version}"; src = fetch.${arch.inTar}.${releaseType}; + preferLocalBuild = true; dontBuild = true; - # TODO detangle headless/normal mode wrapping, libs, etc. test all urls 32/64/headless/gfx installPhase = '' mkdir -p $out/{bin,share/factorio} cp -a data $out/share/factorio @@ -71,8 +75,6 @@ let $out/bin/factorio ''; - preferLocalBuild = true; - meta = { description = "A game in which you build and maintain factories"; longDescription = '' @@ -112,7 +114,23 @@ let wrapProgram $out/bin/factorio \ --prefix LD_LIBRARY_PATH : /run/opengl-driver/lib:$libPath \ --run "$out/share/factorio/update-config.sh" \ - --add-flags "-c \$HOME/.factorio/config.cfg" + --add-flags "-c \$HOME/.factorio/config.cfg ${optionalString (mods != []) "--mod-directory=${modDir}"}" + + # TODO Currently, every time a mod is changed/added/removed using the + # modlist, a new derivation will take up the entire footprint of the + # client. The only way to avoid this is to remove the mods arg from the + # package function. The modsDir derivation will have to be built + # separately and have the user specify it in the .factorio config or + # right along side it using a symlink into the store I think i will + # just remove mods for the client derivation entirely. this is much + # cleaner and more useful for headless mode. + + # TODO: trying to toggle off a mod will result in read-only-fs-error. + # not much we can do about that except warn the user somewhere. In + # fact, no exit will be clean, since this error will happen on close + # regardless. just prints an ugly stacktrace but seems to be otherwise + # harmless, unless maybe the user forgets and tries to use the mod + # manager. install -m0644 <(cat << EOF ${configBaseCfg} diff --git a/pkgs/games/factorio/utils.nix b/pkgs/games/factorio/utils.nix new file mode 100644 index 000000000000..563ece6cb9c2 --- /dev/null +++ b/pkgs/games/factorio/utils.nix @@ -0,0 +1,49 @@ +# This file provides a top-level function that will be used by both nixpkgs and nixos +# to generate mod directories for use at runtime by factorio. +{ stdenv }: +with stdenv.lib; +{ + mkModDirDrv = mods: # a list of mod derivations + let + recursiveDeps = modDrv: [modDrv] ++ optionals (modDrv.deps == []) (map recursiveDeps modDrv.deps); + modDrvs = unique (flatten (map recursiveDeps mods)); + in + stdenv.mkDerivation { + name = "factorio-mod-directory"; + + preferLocalBuild = true; + buildCommand = '' + mkdir -p $out + for modDrv in ${toString modDrvs}; do + # NB: there will only ever be a single zip file in each mod derivation's output dir + ln -s $modDrv/*.zip $out + done + ''; + }; + + modDrv = { allRecommendedMods, allOptionalMods }: + { src + , name ? null + , deps ? [] + , optionalDeps ? [] + , recommendedDeps ? [] + }: stdenv.mkDerivation { + + inherit src; + + # Use the name of the zip, but endstrip ".zip" and possibly the querystring that gets left in by fetchurl + name = replaceStrings ["_"] ["-"] (if name != null then name else removeSuffix ".zip" (head (splitString "?" src.name))); + + deps = deps ++ optionals allOptionalMods optionalDeps + ++ optionals allRecommendedMods recommendedDeps; + + preferLocalBuild = true; + buildCommand = '' + mkdir -p $out + srcBase=$(basename $src) + srcBase=''${srcBase#*-} # strip nix hash + srcBase=''${srcBase%\?*} # strip querystring leftover from fetchurl + cp $src $out/$srcBase + ''; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ac96ea3448fc..a0611ff66589 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -15594,6 +15594,8 @@ in factorio-headless = callPackage ../games/factorio { releaseType = "headless"; }; + factorio-utils = callPackage ../games/factorio/utils.nix { }; + fairymax = callPackage ../games/fairymax {}; fish-fillets-ng = callPackage ../games/fish-fillets-ng {}; -- cgit 1.4.1 From c39b6025d8fa8a77b6ac89e89400c595bf2bd2f0 Mon Sep 17 00:00:00 2001 From: Franz Pletz Date: Wed, 3 Aug 2016 18:49:18 +0200 Subject: gitlab: 8.5.12 -> 8.10.3, update module Fixes #14795. --- nixos/modules/services/misc/gitlab.nix | 139 ++- .../version-management/gitlab-shell/default.nix | 4 +- .../gitlab-workhorse/default.nix | 6 +- .../applications/version-management/gitlab/Gemfile | 228 +++-- .../version-management/gitlab/Gemfile.lock | 744 +++++++------- .../version-management/gitlab/default.nix | 12 +- .../disable-dump-schema-after-migration.patch | 11 - .../version-management/gitlab/gemset.nix | 1045 ++++++++------------ .../version-management/gitlab/nulladapter.patch | 75 +- .../gitlab/remove-hardcoded-locations.patch | 47 +- 10 files changed, 1086 insertions(+), 1225 deletions(-) delete mode 100644 pkgs/applications/version-management/gitlab/disable-dump-schema-after-migration.patch (limited to 'nixos/modules') diff --git a/nixos/modules/services/misc/gitlab.nix b/nixos/modules/services/misc/gitlab.nix index 267442bd1f8b..46af78d58a17 100644 --- a/nixos/modules/services/misc/gitlab.nix +++ b/nixos/modules/services/misc/gitlab.nix @@ -57,42 +57,23 @@ let issues = true; merge_requests = true; wiki = true; - snippets = false; + snippets = true; builds = true; + container_registry = true; }; }; - artifacts = { - enabled = true; - }; - lfs = { - enabled = true; - }; - gravatar = { - enabled = true; - }; - cron_jobs = { - stuck_ci_builds_worker = { - cron = "0 0 * * *"; - }; - }; - gitlab_ci = { - builds_path = "${cfg.statePath}/builds"; - }; - ldap = { - enabled = false; - }; - omniauth = { - enabled = false; - }; - shared = { - path = "${cfg.statePath}/shared"; - }; - backup = { - path = "${cfg.backupPath}"; - }; + repositories.storages.default = "${cfg.statePath}/repositories"; + artifacts.enabled = true; + lfs.enabled = true; + gravatar.enabled = true; + cron_jobs = { }; + gitlab_ci.builds_path = "${cfg.statePath}/builds"; + ldap.enabled = false; + omniauth.enabled = false; + shared.path = "${cfg.statePath}/shared"; + backup.path = "${cfg.backupPath}"; gitlab_shell = { path = "${cfg.packages.gitlab-shell}"; - repos_path = "${cfg.statePath}/repositories"; hooks_path = "${cfg.statePath}/shell/hooks"; secret_file = "${cfg.statePath}/config/gitlab_shell_secret"; upload_pack = true; @@ -127,19 +108,38 @@ let gitlab-runner = pkgs.stdenv.mkDerivation rec { name = "gitlab-runner"; - buildInputs = [ cfg.packages.gitlab bundler pkgs.makeWrapper ]; + buildInputs = [ cfg.packages.gitlab cfg.packages.gitlab.env pkgs.makeWrapper ]; phases = "installPhase fixupPhase"; buildPhase = ""; installPhase = '' mkdir -p $out/bin - makeWrapper ${bundler}/bin/bundle $out/bin/gitlab-runner \ - ${concatStrings (mapAttrsToList (name: value: "--set ${name} '\"${value}\"' ") gitlabEnv)} \ - --set GITLAB_CONFIG_PATH '"${cfg.statePath}/config"' \ - --set PATH '"${pkgs.nodejs}/bin:${pkgs.gzip}/bin:${config.services.postgresql.package}/bin:$PATH"' \ - --set RAKEOPT '"-f ${cfg.packages.gitlab}/share/gitlab/Rakefile"' + makeWrapper ${cfg.packages.gitlab.env}/bin/bundle $out/bin/gitlab-runner \ + ${concatStrings (mapAttrsToList (name: value: "--set ${name} '${value}' ") gitlabEnv)} \ + --set GITLAB_CONFIG_PATH '${cfg.statePath}/config' \ + --set PATH '${pkgs.nodejs}/bin:${pkgs.gzip}/bin:${config.services.postgresql.package}/bin:$PATH' \ + --set RAKEOPT '-f ${cfg.packages.gitlab}/share/gitlab/Rakefile' \ + --run 'cd ${cfg.packages.gitlab}/share/gitlab' ''; }; + smtpSettings = pkgs.writeText "gitlab-smtp-settings.rb" '' + if Rails.env.production? + Rails.application.config.action_mailer.delivery_method = :smtp + + ActionMailer::Base.delivery_method = :smtp + ActionMailer::Base.smtp_settings = { + address: "${cfg.smtp.address}", + port: ${toString cfg.smtp.port}, + ${optionalString (cfg.smtp.username != null) ''user_name: "${cfg.smtp.username}",''} + ${optionalString (cfg.smtp.password != null) ''password: "${cfg.smtp.password}",''} + domain: "${cfg.smtp.domain}", + ${optionalString (cfg.smtp.authentication != null) "authentication: :${cfg.smtp.authentication},"} + enable_starttls_auto: ${toString cfg.smtp.enableStartTLSAuto}, + openssl_verify_mode: '${cfg.smtp.opensslVerifyMode}' + } + end + ''; + in { options = { @@ -255,6 +255,62 @@ in { ''; }; + smtp = { + enable = mkOption { + type = types.bool; + default = false; + description = "Enable gitlab mail delivery over SMTP."; + }; + + address = mkOption { + type = types.str; + default = "localhost"; + description = "Address of the SMTP server for Gitlab."; + }; + + port = mkOption { + type = types.int; + default = 465; + description = "Port of the SMTP server for Gitlab."; + }; + + username = mkOption { + type = types.nullOr types.str; + default = null; + description = "Username of the SMTP server for Gitlab."; + }; + + password = mkOption { + type = types.nullOr types.str; + default = null; + description = "Password of the SMTP server for Gitlab."; + }; + + domain = mkOption { + type = types.str; + default = "localhost"; + description = "HELO domain to use for outgoing mail."; + }; + + authentication = mkOption { + type = types.nullOr types.str; + default = null; + description = "Authentitcation type to use, see http://api.rubyonrails.org/classes/ActionMailer/Base.html"; + }; + + enableStartTLSAuto = mkOption { + type = types.bool; + default = true; + description = "Whether to try to use StartTLS."; + }; + + opensslVerifyMode = mkOption { + type = types.str; + default = "peer"; + description = "How OpenSSL checks the certificate, see http://api.rubyonrails.org/classes/ActionMailer/Base.html"; + }; + }; + extraConfig = mkOption { type = types.attrs; default = {}; @@ -308,6 +364,7 @@ in { systemd.services.gitlab-sidekiq = { after = [ "network.target" "redis.service" ]; wantedBy = [ "multi-user.target" ]; + partOf = [ "gitlab.service" ]; environment = gitlabEnv; path = with pkgs; [ config.services.postgresql.package @@ -322,7 +379,7 @@ in { Group = cfg.group; TimeoutSec = "300"; WorkingDirectory = "${cfg.packages.gitlab}/share/gitlab"; - ExecStart="${bundler}/bin/bundle exec \"sidekiq -q post_receive -q mailers -q system_hook -q project_web_hook -q gitlab_shell -q common -q default -e production -P ${cfg.statePath}/tmp/sidekiq.pid\""; + ExecStart="${cfg.packages.gitlab.env}/bin/bundle exec \"sidekiq -q post_receive -q mailers -q system_hook -q project_web_hook -q gitlab_shell -q common -q default -e production -P ${cfg.statePath}/tmp/sidekiq.pid\""; }; }; @@ -397,6 +454,9 @@ in { chmod -R u+rwX,go-rwx+X ${gitlabEnv.HOME}/ cp -rf ${cfg.packages.gitlab}/share/gitlab/config.dist/* ${cfg.statePath}/config + ${optionalString cfg.smtp.enable '' + ln -sf ${smtpSettings} ${cfg.statePath}/config/initializers/smtp_settings.rb + ''} ln -sf ${cfg.statePath}/config /run/gitlab/config cp ${cfg.packages.gitlab}/share/gitlab/VERSION ${cfg.statePath}/VERSION @@ -441,8 +501,9 @@ in { User = cfg.user; Group = cfg.group; TimeoutSec = "300"; + Restart = "on-failure"; WorkingDirectory = "${cfg.packages.gitlab}/share/gitlab"; - ExecStart="${bundler}/bin/bundle exec \"unicorn -c ${cfg.statePath}/config/unicorn.rb -E production\""; + ExecStart = "${cfg.packages.gitlab.env}/bin/bundle exec \"unicorn -c ${cfg.statePath}/config/unicorn.rb -E production\""; }; }; diff --git a/pkgs/applications/version-management/gitlab-shell/default.nix b/pkgs/applications/version-management/gitlab-shell/default.nix index 0b0f59b0077e..ea04fa33a734 100644 --- a/pkgs/applications/version-management/gitlab-shell/default.nix +++ b/pkgs/applications/version-management/gitlab-shell/default.nix @@ -1,14 +1,14 @@ { stdenv, ruby, bundler, fetchFromGitLab }: stdenv.mkDerivation rec { - version = "2.6.10"; + version = "3.2.1"; name = "gitlab-shell-${version}"; srcs = fetchFromGitLab { owner = "gitlab-org"; repo = "gitlab-shell"; rev = "v${version}"; - sha256 = "1f1ma49xpkan2iksnw9amzjdw6i0bxnzdbsk0329m7if4987vcqd"; + sha256 = "099w4s606k2mk9xc42jwqym1ycr20824w6nkf3zpiv17slwakw90"; }; buildInputs = [ diff --git a/pkgs/applications/version-management/gitlab-workhorse/default.nix b/pkgs/applications/version-management/gitlab-workhorse/default.nix index e24ff31708ea..df0125a6de8e 100644 --- a/pkgs/applications/version-management/gitlab-workhorse/default.nix +++ b/pkgs/applications/version-management/gitlab-workhorse/default.nix @@ -1,14 +1,14 @@ { stdenv, fetchFromGitLab, git, go }: stdenv.mkDerivation rec { - version = "0.6.4"; + version = "0.7.8"; name = "gitlab-workhorse-${version}"; srcs = fetchFromGitLab { owner = "gitlab-org"; repo = "gitlab-workhorse"; - rev = version; - sha256 = "09bs3kdmqi6avdak2nqma141y4fhfv050zwqqx7qh9a9hgkgwjxw"; + rev = "v${version}"; + sha256 = "03lhgmd8w2ainvgf2q3pgafz2jl5g4x32qyybyijlyxfl07vkg4g"; }; buildInputs = [ git go ]; diff --git a/pkgs/applications/version-management/gitlab/Gemfile b/pkgs/applications/version-management/gitlab/Gemfile index 99b8a4e28df1..f97c99183f22 100644 --- a/pkgs/applications/version-management/gitlab/Gemfile +++ b/pkgs/applications/version-management/gitlab/Gemfile @@ -1,67 +1,71 @@ -source "https://rubygems.org" +source 'https://rubygems.org' -gem 'rails', '4.2.5.2' +gem 'rails', '4.2.7' gem 'rails-deprecated_sanitizer', '~> 1.0.3' # Responders respond_to and respond_with gem 'responders', '~> 2.0' -# Specify a sprockets version due to security issue -# See https://groups.google.com/forum/#!topic/rubyonrails-security/doAVp0YaTqY -gem 'sprockets', '~> 2.12.3' +# Specify a sprockets version due to increased performance +# See https://gitlab.com/gitlab-org/gitlab-ce/issues/6069 +gem 'sprockets', '~> 3.6.0' # Default values for AR models -gem "default_value_for", "~> 3.0.0" +gem 'default_value_for', '~> 3.0.0' # Supported DBs -gem "mysql2", '~> 0.3.16', group: :mysql -gem "pg", '~> 0.18.2', group: :postgres +gem 'mysql2', '~> 0.3.16', group: :mysql +gem 'pg', '~> 0.18.2', group: :postgres # Authentication libraries -gem 'devise', '~> 3.5.4' -gem 'devise-async', '~> 0.9.0' -gem 'doorkeeper', '~> 2.2.0' +gem 'devise', '~> 4.0' +gem 'doorkeeper', '~> 4.0' gem 'omniauth', '~> 1.3.1' +gem 'omniauth-auth0', '~> 1.4.1' gem 'omniauth-azure-oauth2', '~> 0.0.6' gem 'omniauth-bitbucket', '~> 0.0.2' gem 'omniauth-cas3', '~> 1.1.2' gem 'omniauth-facebook', '~> 3.0.0' gem 'omniauth-github', '~> 1.1.1' gem 'omniauth-gitlab', '~> 1.0.0' -gem 'omniauth-google-oauth2', '~> 0.2.0' +gem 'omniauth-google-oauth2', '~> 0.4.1' gem 'omniauth-kerberos', '~> 0.3.0', group: :kerberos -gem 'omniauth-saml', '~> 1.4.2' +gem 'omniauth-saml', '~> 1.6.0' gem 'omniauth-shibboleth', '~> 1.2.0' gem 'omniauth-twitter', '~> 1.2.0' gem 'omniauth_crowd', '~> 2.2.0' gem 'rack-oauth2', '~> 1.2.1' +gem 'jwt' # Spam and anti-bot protection -gem 'recaptcha', require: 'recaptcha/rails' +gem 'recaptcha', '~> 3.0', require: 'recaptcha/rails' gem 'akismet', '~> 2.0' # Two-factor authentication -gem 'devise-two-factor', '~> 2.0.0' +gem 'devise-two-factor', '~> 3.0.0' gem 'rqrcode-rails3', '~> 0.1.7' -gem 'attr_encrypted', '~> 1.3.4' +gem 'attr_encrypted', '~> 3.0.0' +gem 'u2f', '~> 0.2.1' # Browser detection -gem "browser", '~> 1.0.0' +gem 'browser', '~> 2.2' # Extracting information from a git repository # Provide access to Gitlab::Git library -gem "gitlab_git", '~> 8.2' +gem 'gitlab_git', '~> 10.3.2' # LDAP Auth # GitLab fork with several improvements to original library. For full list of changes # see https://github.com/intridea/omniauth-ldap/compare/master...gitlabhq:master -gem 'gitlab_omniauth-ldap', '~> 1.2.1', require: "omniauth-ldap" +gem 'gitlab_omniauth-ldap', '~> 1.2.1', require: 'omniauth-ldap' # Git Wiki -gem 'gollum-lib', '~> 4.1.0' +# Required manually in config/initializers/gollum.rb to control load order +gem 'gollum-lib', '~> 4.2', require: false +gem 'gollum-rugged_adapter', '~> 0.4.2', require: false # Language detection -gem "github-linguist", "~> 4.7.0", require: "linguist" +gem 'github-linguist', '~> 4.7.0', require: 'linguist' # API gem 'grape', '~> 0.13.0' @@ -69,72 +73,80 @@ gem 'grape-entity', '~> 0.4.2' gem 'rack-cors', '~> 0.4.0', require: 'rack/cors' # Pagination -gem "kaminari", "~> 0.16.3" +gem 'kaminari', '~> 0.17.0' # HAML -gem "haml-rails", '~> 0.9.0' +gem 'hamlit', '~> 2.5' # Files attachments -gem "carrierwave", '~> 0.9.0' +gem 'carrierwave', '~> 0.10.0' # Drag and Drop UI gem 'dropzonejs-rails', '~> 0.7.1' +# for backups +gem 'fog-aws', '~> 0.9' +gem 'fog-azure', '~> 0.0' +gem 'fog-core', '~> 1.40' +gem 'fog-local', '~> 0.3' +gem 'fog-google', '~> 0.3' +gem 'fog-openstack', '~> 0.1' +gem 'fog-rackspace', '~> 0.1.1' + # for aws storage -gem "fog", "~> 1.36.0" -gem "unf", '~> 0.1.4' +gem 'unf', '~> 0.1.4' # Authorization -gem "six", '~> 0.2.0' +gem 'six', '~> 0.2.0' # Seed data -gem "seed-fu", '~> 2.3.5' +gem 'seed-fu', '~> 2.3.5' # Markdown and HTML processing gem 'html-pipeline', '~> 1.11.0' gem 'task_list', '~> 1.0.2', require: 'task_list/railtie' -gem 'github-markup', '~> 1.3.1' +gem 'github-markup', '~> 1.4' gem 'redcarpet', '~> 3.3.3' -gem 'RedCloth', '~> 4.2.9' +gem 'RedCloth', '~> 4.3.2' gem 'rdoc', '~>3.6' gem 'org-ruby', '~> 0.9.12' gem 'creole', '~> 0.5.0' gem 'wikicloth', '0.8.1' gem 'asciidoctor', '~> 1.5.2' -gem 'rouge', '~> 1.10.1' +gem 'rouge', '~> 2.0' # See https://groups.google.com/forum/#!topic/ruby-security-ann/aSbgDiwb24s # and https://groups.google.com/forum/#!topic/ruby-security-ann/Dy7YiKb_pMM -gem 'nokogiri', '~> 1.6.7', '>= 1.6.7.2' +gem 'nokogiri', '~> 1.6.7', '>= 1.6.7.2', '< 1.6.8' # Diffs gem 'diffy', '~> 3.0.3' # Application server group :unicorn do - gem "unicorn", '~> 4.8.2' + gem 'unicorn', '~> 4.9.0' gem 'unicorn-worker-killer', '~> 0.4.2' end # State machine -gem "state_machines-activerecord", '~> 0.3.0' +gem 'state_machines-activerecord', '~> 0.4.0' # Run events after state machine commits -gem 'after_commit_queue' +gem 'after_commit_queue', '~> 1.3.0' # Issue tags gem 'acts-as-taggable-on', '~> 3.4' # Background jobs -gem 'sinatra', '~> 1.4.4', require: nil +gem 'sinatra', '~> 1.4.4', require: false gem 'sidekiq', '~> 4.0' gem 'sidekiq-cron', '~> 0.4.0' -gem 'redis-namespace' +gem 'redis-namespace', '~> 1.5.2' # HTTP requests -gem "httparty", '~> 0.13.3' +gem 'httparty', '~> 0.13.3' # Colored output to console -gem "colorize", '~> 0.7.0' +gem 'rainbow', '~> 2.1.0' # GitLab settings gem 'settingslogic', '~> 2.0.9' @@ -144,7 +156,11 @@ gem 'settingslogic', '~> 2.0.9' gem 'version_sorter', '~> 2.0.0' # Cache -gem "redis-rails", '~> 4.0.0' +gem 'redis-rails', '~> 4.0.0' + +# Redis +gem 'redis', '~> 3.2' +gem 'connection_pool', '~> 2.0' # Campfire integration gem 'tinder', '~> 1.10.0' @@ -153,13 +169,13 @@ gem 'tinder', '~> 1.10.0' gem 'hipchat', '~> 1.5.0' # Flowdock integration -gem "gitlab-flowdock-git-hook", "~> 1.0.1" +gem 'gitlab-flowdock-git-hook', '~> 1.0.1' # Gemnasium integration -gem "gemnasium-gitlab-service", "~> 0.2" +gem 'gemnasium-gitlab-service', '~> 0.2' # Slack integration -gem "slack-notifier", "~> 1.2.0" +gem 'slack-notifier', '~> 1.2.0' # Asana integration gem 'asana', '~> 0.4.0' @@ -170,24 +186,24 @@ gem 'ruby-fogbugz', '~> 0.2.1' # d3 gem 'd3_rails', '~> 3.5.0' -#cal-heatmap -gem 'cal-heatmap-rails', '~> 3.5.0' - # underscore-rails -gem "underscore-rails", "~> 1.8.0" +gem 'underscore-rails', '~> 1.8.0' # Sanitize user input -gem "sanitize", '~> 2.0' +gem 'sanitize', '~> 2.0' gem 'babosa', '~> 1.0.2' # Sanitizes SVG input -gem "loofah", "~> 2.0.3" +gem 'loofah', '~> 2.0.3' + +# Working with license +gem 'licensee', '~> 8.0.0' # Protect against bruteforcing -gem "rack-attack", '~> 4.3.1' +gem 'rack-attack', '~> 4.3.1' # Ace editor -gem 'ace-rails-ap', '~> 2.0.1' +gem 'ace-rails-ap', '~> 4.0.2' # Keyboard shortcuts gem 'mousetrap-rails', '~> 1.4.6' @@ -195,49 +211,49 @@ gem 'mousetrap-rails', '~> 1.4.6' # Detect and convert string character encoding gem 'charlock_holmes', '~> 0.7.3' -gem "sass-rails", '~> 5.0.0' -gem "coffee-rails", '~> 4.1.0' -gem "uglifier", '~> 2.7.2' +# Parse duration +gem 'chronic_duration', '~> 0.10.6' + +gem 'sass-rails', '~> 5.0.0' +gem 'coffee-rails', '~> 4.1.0' +gem 'uglifier', '~> 2.7.2' gem 'turbolinks', '~> 2.5.0' gem 'jquery-turbolinks', '~> 2.1.0' gem 'addressable', '~> 2.3.8' gem 'bootstrap-sass', '~> 3.3.0' -gem 'font-awesome-rails', '~> 4.2' -gem 'gitlab_emoji', '~> 0.3.0' +gem 'font-awesome-rails', '~> 4.6.1' +gem 'gemojione', '~> 3.0' gem 'gon', '~> 6.0.1' gem 'jquery-atwho-rails', '~> 1.3.2' -gem 'jquery-rails', '~> 4.0.0' -gem 'jquery-scrollto-rails', '~> 1.4.3' +gem 'jquery-rails', '~> 4.1.0' gem 'jquery-ui-rails', '~> 5.0.0' -gem 'nprogress-rails', '~> 0.1.6.7' -gem 'raphael-rails', '~> 2.1.2' -gem 'request_store', '~> 1.2.0' +gem 'request_store', '~> 1.3.0' gem 'select2-rails', '~> 3.5.9' gem 'virtus', '~> 1.0.1' gem 'net-ssh', '~> 3.0.1' +gem 'base32', '~> 0.3.0' # Sentry integration -gem 'sentry-raven', '~> 0.15' +gem 'sentry-raven', '~> 1.1.0' + +gem 'premailer-rails', '~> 1.9.0' # Metrics group :metrics do gem 'allocations', '~> 1.0', require: false, platform: :mri gem 'method_source', '~> 0.8', require: false gem 'influxdb', '~> 0.2', require: false - gem 'connection_pool', '~> 2.0', require: false end group :development do - gem "foreman" - gem 'brakeman', '~> 3.1.0', require: false + gem 'foreman', '~> 0.78.0' + gem 'brakeman', '~> 3.3.0', require: false - gem "annotate", "~> 2.6.0" - gem "letter_opener", '~> 1.1.2' - gem 'quiet_assets', '~> 1.0.2' + gem 'letter_opener_web', '~> 1.3.0' gem 'rerun', '~> 0.11.0' - gem 'bullet', require: false - gem 'rblineprof', platform: :mri, require: false + gem 'bullet', '~> 5.0.0', require: false + gem 'rblineprof', '~> 0.3.6', platform: :mri, require: false gem 'web-console', '~> 2.0' # Better errors handler @@ -245,23 +261,25 @@ group :development do gem 'binding_of_caller', '~> 0.7.2' # Docs generator - gem "sdoc", '~> 0.3.20' + gem 'sdoc', '~> 0.3.20' # thin instead webrick - gem 'thin', '~> 1.6.1' + gem 'thin', '~> 1.7.0' end group :development, :test do - gem 'byebug', platform: :mri - gem 'pry-rails' + gem 'byebug', '~> 8.2.1', platform: :mri + gem 'pry-rails', '~> 0.3.4' gem 'awesome_print', '~> 1.2.0', require: false gem 'fuubar', '~> 2.0.0' - gem 'database_cleaner', '~> 1.4.0' - gem 'factory_girl_rails', '~> 4.3.0' - gem 'rspec-rails', '~> 3.3.0' - gem 'spinach-rails', '~> 0.2.1' + gem 'database_cleaner', '~> 1.4.0' + gem 'factory_girl_rails', '~> 4.6.0' + gem 'rspec-rails', '~> 3.5.0' + gem 'rspec-retry', '~> 0.4.5' + gem 'spinach-rails', '~> 0.2.1' + gem 'spinach-rerun-reporter', '~> 0.0.2' # Prevent occasions where minitest is not bundled in packaged versions of ruby (see #3826) gem 'minitest', '~> 5.7.0' @@ -269,26 +287,30 @@ group :development, :test do # Generate Fake data gem 'ffaker', '~> 2.0.0' - gem 'capybara', '~> 2.4.0' + gem 'capybara', '~> 2.6.2' gem 'capybara-screenshot', '~> 1.0.0' - gem 'poltergeist', '~> 1.8.1' + gem 'poltergeist', '~> 1.9.0' - gem 'teaspoon', '~> 1.0.0' + gem 'teaspoon', '~> 1.1.0' gem 'teaspoon-jasmine', '~> 2.2.0' - gem 'spring', '~> 1.3.6' + gem 'spring', '~> 1.7.0' gem 'spring-commands-rspec', '~> 1.0.4' - gem 'spring-commands-spinach', '~> 1.0.0' + gem 'spring-commands-spinach', '~> 1.1.0' gem 'spring-commands-teaspoon', '~> 0.0.2' - gem 'rubocop', '~> 0.35.0', require: false - gem 'coveralls', '~> 0.8.2', require: false - gem 'simplecov', '~> 0.10.0', require: false - gem 'flog', require: false - gem 'flay', require: false - gem 'bundler-audit', require: false + gem 'rubocop', '~> 0.41.2', require: false + gem 'rubocop-rspec', '~> 1.5.0', require: false + gem 'scss_lint', '~> 0.47.0', require: false + gem 'simplecov', '~> 0.11.0', require: false + gem 'flog', '~> 4.3.2', require: false + gem 'flay', '~> 2.6.1', require: false + gem 'bundler-audit', '~> 0.5.0', require: false + + gem 'benchmark-ips', '~> 2.3.0', require: false - gem 'benchmark-ips', require: false + gem 'license_finder', '~> 2.1.0', require: false + gem 'knapsack', '~> 1.11.0' end group :test do @@ -296,30 +318,36 @@ group :test do gem 'email_spec', '~> 1.6.0' gem 'webmock', '~> 1.21.0' gem 'test_after_commit', '~> 0.4.2' - gem 'sham_rack' + gem 'sham_rack', '~> 1.3.6' end group :production do - gem "gitlab_meta", '7.0' + gem 'gitlab_meta', '7.0' end -gem "newrelic_rpm", '~> 3.14' +gem 'newrelic_rpm', '~> 3.14' -gem 'octokit', '~> 3.8.0' +gem 'octokit', '~> 4.3.0' -gem "mail_room", "~> 0.6.1" +gem 'mail_room', '~> 0.8' gem 'email_reply_parser', '~> 0.5.8' ## CI -gem 'activerecord-deprecated_finders', '~> 1.0.3' -gem 'activerecord-session_store', '~> 0.1.0' -gem "nested_form", '~> 0.3.2' +gem 'activerecord-session_store', '~> 1.0.0' +gem 'nested_form', '~> 0.3.2' # OAuth -gem 'oauth2', '~> 1.0.0' +gem 'oauth2', '~> 1.2.0' # Soft deletion -gem "paranoia", "~> 2.0" +gem 'paranoia', '~> 2.0' + +# Health check +gem 'health_check', '~> 2.1.0' + +# System information +gem 'vmstat', '~> 2.1.1' +gem 'sys-filesystem', '~> 1.1.6' gem "activerecord-nulldb-adapter" diff --git a/pkgs/applications/version-management/gitlab/Gemfile.lock b/pkgs/applications/version-management/gitlab/Gemfile.lock index 8c3ddf3b5701..1919acecc61a 100644 --- a/pkgs/applications/version-management/gitlab/Gemfile.lock +++ b/pkgs/applications/version-management/gitlab/Gemfile.lock @@ -1,46 +1,46 @@ GEM remote: https://rubygems.org/ specs: - CFPropertyList (2.3.2) - RedCloth (4.2.9) - ace-rails-ap (2.0.1) - actionmailer (4.2.5.2) - actionpack (= 4.2.5.2) - actionview (= 4.2.5.2) - activejob (= 4.2.5.2) + RedCloth (4.3.2) + ace-rails-ap (4.0.2) + actionmailer (4.2.7) + actionpack (= 4.2.7) + actionview (= 4.2.7) + activejob (= 4.2.7) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 1.0, >= 1.0.5) - actionpack (4.2.5.2) - actionview (= 4.2.5.2) - activesupport (= 4.2.5.2) + actionpack (4.2.7) + actionview (= 4.2.7) + activesupport (= 4.2.7) rack (~> 1.6) rack-test (~> 0.6.2) rails-dom-testing (~> 1.0, >= 1.0.5) rails-html-sanitizer (~> 1.0, >= 1.0.2) - actionview (4.2.5.2) - activesupport (= 4.2.5.2) + actionview (4.2.7) + activesupport (= 4.2.7) builder (~> 3.1) erubis (~> 2.7.0) rails-dom-testing (~> 1.0, >= 1.0.5) rails-html-sanitizer (~> 1.0, >= 1.0.2) - activejob (4.2.5.2) - activesupport (= 4.2.5.2) + activejob (4.2.7) + activesupport (= 4.2.7) globalid (>= 0.3.0) - activemodel (4.2.5.2) - activesupport (= 4.2.5.2) + activemodel (4.2.7) + activesupport (= 4.2.7) builder (~> 3.1) - activerecord (4.2.5.2) - activemodel (= 4.2.5.2) - activesupport (= 4.2.5.2) + activerecord (4.2.7) + activemodel (= 4.2.7) + activesupport (= 4.2.7) arel (~> 6.0) - activerecord-deprecated_finders (1.0.4) - activerecord-nulldb-adapter (0.3.2) + activerecord-nulldb-adapter (0.3.3) activerecord (>= 2.0.0) - activerecord-session_store (0.1.2) - actionpack (>= 4.0.0, < 5) - activerecord (>= 4.0.0, < 5) - railties (>= 4.0.0, < 5) - activesupport (4.2.5.2) + activerecord-session_store (1.0.0) + actionpack (>= 4.0, < 5.1) + activerecord (>= 4.0, < 5.1) + multi_json (~> 1.11, >= 1.11.2) + rack (>= 1.5.2, < 3) + railties (>= 4.0, < 5.1) + activesupport (4.2.7) i18n (~> 0.7) json (~> 1.7, >= 1.7.7) minitest (~> 5.1) @@ -52,10 +52,7 @@ GEM after_commit_queue (1.3.0) activerecord (>= 3.0) akismet (2.0.0) - allocations (1.0.4) - annotate (2.6.10) - activerecord (>= 3.2, <= 4.3) - rake (~> 10.4) + allocations (1.0.5) arel (6.0.3) asana (0.4.0) faraday (~> 0.9) @@ -63,11 +60,9 @@ GEM faraday_middleware-multi_json (~> 0.0) oauth2 (~> 1.0) asciidoctor (1.5.3) - ast (2.1.0) - astrolabe (1.3.1) - parser (~> 2.2) - attr_encrypted (1.3.4) - encryptor (>= 1.3.0) + ast (2.3.0) + attr_encrypted (3.0.1) + encryptor (~> 3.0.0) attr_required (1.0.0) autoprefixer-rails (6.2.3) execjs @@ -77,8 +72,24 @@ GEM descendants_tracker (~> 0.0.4) ice_nine (~> 0.11.0) thread_safe (~> 0.3, >= 0.3.1) + azure (0.7.5) + addressable (~> 2.3) + azure-core (~> 0.1) + faraday (~> 0.9) + faraday_middleware (~> 0.10) + json (~> 1.8) + mime-types (>= 1, < 3.0) + nokogiri (~> 1.6) + systemu (~> 2.6) + thor (~> 0.19) + uuid (~> 2.0) + azure-core (0.1.2) + faraday (~> 0.9) + faraday_middleware (~> 0.10) + nokogiri (~> 1.6) babosa (1.0.2) - bcrypt (3.1.10) + base32 (0.3.2) + bcrypt (3.1.11) benchmark-ips (2.3.0) better_errors (1.0.1) coderay (>= 1.0.0) @@ -88,29 +99,18 @@ GEM bootstrap-sass (3.3.6) autoprefixer-rails (>= 5.2.1) sass (>= 3.3.4) - brakeman (3.1.4) - erubis (~> 2.6) - fastercsv (~> 1.5) - haml (>= 3.0, < 5.0) - highline (>= 1.6.20, < 2.0) - multi_json (~> 1.2) - ruby2ruby (>= 2.1.1, < 2.3.0) - ruby_parser (~> 3.7.0) - safe_yaml (>= 1.0) - sass (~> 3.0) - slim (>= 1.3.6, < 4.0) - terminal-table (~> 1.4) - browser (1.0.1) + brakeman (3.3.2) + browser (2.2.0) builder (3.2.2) - bullet (4.14.10) + bullet (5.0.0) activesupport (>= 3.0.0) uniform_notifier (~> 1.9.0) - bundler-audit (0.4.0) + bundler-audit (0.5.0) bundler (~> 1.2) thor (~> 0.18) byebug (8.2.1) - cal-heatmap-rails (3.5.1) - capybara (2.4.4) + capybara (2.6.2) + addressable mime-types (>= 1.16) nokogiri (>= 1.3.3) rack (>= 1.0.0) @@ -119,37 +119,35 @@ GEM capybara-screenshot (1.0.11) capybara (>= 1.0, < 3) launchy - carrierwave (0.9.0) + carrierwave (0.10.0) activemodel (>= 3.2.0) activesupport (>= 3.2.0) json (>= 1.7) + mime-types (>= 1.16) cause (0.1) charlock_holmes (0.7.3) + chronic_duration (0.10.6) + numerizer (~> 0.1.1) chunky_png (1.3.5) cliver (0.3.2) coderay (1.1.0) coercible (1.0.0) descendants_tracker (~> 0.0.1) - coffee-rails (4.1.0) + coffee-rails (4.1.1) coffee-script (>= 2.2.0) - railties (>= 4.0.0, < 5.0) + railties (>= 4.0.0, < 5.1.x) coffee-script (2.4.1) coffee-script-source execjs coffee-script-source (1.10.0) colorize (0.7.7) - concurrent-ruby (1.0.0) + concurrent-ruby (1.0.2) connection_pool (2.2.0) - coveralls (0.8.9) - json (~> 1.8) - rest-client (>= 1.6.8, < 2) - simplecov (~> 0.10.0) - term-ansicolor (~> 1.3) - thor (~> 0.19.1) - tins (~> 1.6.0) crack (0.4.3) safe_yaml (~> 1.0.0) creole (0.5.0) + css_parser (1.4.1) + addressable d3_rails (3.5.11) railties (>= 3.1.0) daemons (1.2.3) @@ -160,46 +158,41 @@ GEM activerecord (>= 3.2.0, < 5.0) descendants_tracker (0.0.4) thread_safe (~> 0.3, >= 0.3.1) - devise (3.5.4) + devise (4.1.1) bcrypt (~> 3.0) orm_adapter (~> 0.1) - railties (>= 3.2.6, < 5) + railties (>= 4.1.0, < 5.1) responders - thread_safe (~> 0.1) warden (~> 1.2.3) - devise-async (0.9.0) - devise (~> 3.2) - devise-two-factor (2.0.1) + devise-two-factor (3.0.0) activesupport - attr_encrypted (~> 1.3.2) - devise (~> 3.5.0) + attr_encrypted (>= 1.3, < 4, != 2) + devise (~> 4.0) railties - rotp (~> 2) + rotp (~> 2.0) diff-lcs (1.2.5) diffy (3.0.7) docile (1.1.5) - domain_name (0.5.25) - unf (>= 0.0.5, < 1.0.0) - doorkeeper (2.2.2) - railties (>= 3.2) + doorkeeper (4.0.0) + railties (>= 4.2) dropzonejs-rails (0.7.2) rails (> 3.1) email_reply_parser (0.5.8) email_spec (1.6.0) launchy (~> 2.1) mail (~> 2.2) - encryptor (1.3.0) + encryptor (3.0.0) equalizer (0.0.11) erubis (2.7.0) - escape_utils (1.1.0) + escape_utils (1.1.1) eventmachine (1.0.8) - excon (0.45.4) + excon (0.49.0) execjs (2.6.0) expression_parser (0.9.0) - factory_girl (4.3.0) + factory_girl (4.5.0) activesupport (>= 3.0.0) - factory_girl_rails (4.3.0) - factory_girl (~> 4.3.0) + factory_girl_rails (4.6.0) + factory_girl (~> 4.5.0) railties (>= 3.0.0) faraday (0.9.2) multipart-post (>= 1.2, < 3) @@ -208,11 +201,8 @@ GEM faraday_middleware-multi_json (0.0.6) faraday_middleware multi_json - fastercsv (1.5.5) ffaker (2.0.0) ffi (1.9.10) - fission (0.5.0) - CFPropertyList (~> 2.2) flay (2.6.1) ruby_parser (~> 3.0) sexp_processor (~> 4.0) @@ -222,114 +212,43 @@ GEM flowdock (0.7.1) httparty (~> 0.7) multi_json - fog (1.36.0) - fog-aliyun (>= 0.1.0) - fog-atmos - fog-aws (>= 0.6.0) - fog-brightbox (~> 0.4) - fog-core (~> 1.32) - fog-dynect (~> 0.0.2) - fog-ecloud (~> 0.1) - fog-google (<= 0.1.0) - fog-json - fog-local - fog-powerdns (>= 0.1.1) - fog-profitbricks - fog-radosgw (>= 0.0.2) - fog-riakcs - fog-sakuracloud (>= 0.0.4) - fog-serverlove - fog-softlayer - fog-storm_on_demand - fog-terremark - fog-vmfusion - fog-voxel - fog-xenserver - fog-xml (~> 0.1.1) - ipaddress (~> 0.5) - nokogiri (~> 1.5, >= 1.5.11) - fog-aliyun (0.1.0) + fog-aws (0.9.2) fog-core (~> 1.27) fog-json (~> 1.0) + fog-xml (~> 0.1) ipaddress (~> 0.8) - xml-simple (~> 1.1) - fog-atmos (0.1.0) - fog-core - fog-xml - fog-aws (0.8.1) + fog-azure (0.0.2) + azure (~> 0.6) fog-core (~> 1.27) fog-json (~> 1.0) fog-xml (~> 0.1) - ipaddress (~> 0.8) - fog-brightbox (0.10.1) - fog-core (~> 1.22) - fog-json - inflecto (~> 0.0.2) - fog-core (1.35.0) + fog-core (1.40.0) builder - excon (~> 0.45) + excon (~> 0.49) formatador (~> 0.2) - fog-dynect (0.0.2) - fog-core - fog-json - fog-xml - fog-ecloud (0.3.0) - fog-core - fog-xml - fog-google (0.1.0) + fog-google (0.3.2) fog-core fog-json fog-xml fog-json (1.0.2) fog-core (~> 1.0) multi_json (~> 1.10) - fog-local (0.2.1) - fog-core (~> 1.27) - fog-powerdns (0.1.1) + fog-local (0.3.0) fog-core (~> 1.27) - fog-json (~> 1.0) - fog-xml (~> 0.1) - fog-profitbricks (0.0.5) - fog-core - fog-xml - nokogiri - fog-radosgw (0.0.5) - fog-core (>= 1.21.0) - fog-json - fog-xml (>= 0.0.1) - fog-riakcs (0.1.0) - fog-core - fog-json - fog-xml - fog-sakuracloud (1.7.5) - fog-core - fog-json - fog-serverlove (0.1.2) - fog-core - fog-json - fog-softlayer (1.0.3) - fog-core - fog-json - fog-storm_on_demand (0.1.1) - fog-core - fog-json - fog-terremark (0.1.0) - fog-core - fog-xml - fog-vmfusion (0.1.0) - fission - fog-core - fog-voxel (0.1.0) - fog-core - fog-xml - fog-xenserver (0.2.2) - fog-core - fog-xml + fog-openstack (0.1.6) + fog-core (>= 1.39) + fog-json (>= 1.0) + ipaddress (>= 0.8) + fog-rackspace (0.1.1) + fog-core (>= 1.35) + fog-json (>= 1.0) + fog-xml (>= 0.1) + ipaddress (>= 0.8) fog-xml (0.1.2) fog-core nokogiri (~> 1.5, >= 1.5.11) - font-awesome-rails (4.5.0.0) - railties (>= 3.2, < 5.0) + font-awesome-rails (4.6.1.0) + railties (>= 3.2, < 5.1) foreman (0.78.0) thor (~> 0.19.1) formatador (0.2.5) @@ -338,32 +257,30 @@ GEM ruby-progressbar (~> 1.4) gemnasium-gitlab-service (0.2.6) rugged (~> 0.21) - gemojione (2.2.1) + gemojione (3.0.1) json get_process_mem (0.2.0) gherkin-ruby (0.3.2) - github-linguist (4.7.5) + github-linguist (4.7.6) charlock_holmes (~> 0.7.3) escape_utils (~> 1.1.0) mime-types (>= 1.19) rugged (>= 0.23.0b) - github-markup (1.3.3) + github-markup (1.4.0) gitlab-flowdock-git-hook (1.0.1) flowdock (~> 0.7) gitlab-grit (>= 2.4.1) multi_json - gitlab-grit (2.7.3) + gitlab-grit (2.8.1) charlock_holmes (~> 0.6) diff-lcs (~> 1.1) - mime-types (~> 1.15) + mime-types (>= 1.16, < 3) posix-spawn (~> 0.3) - gitlab_emoji (0.3.1) - gemojione (~> 2.2, >= 2.2.1) - gitlab_git (8.2.0) + gitlab_git (10.3.2) activesupport (~> 4.0) charlock_holmes (~> 0.7.3) github-linguist (~> 4.7.0) - rugged (~> 0.24.0b13) + rugged (~> 0.24.0) gitlab_meta (7.0) gitlab_omniauth-ldap (1.2.1) net-ldap (~> 0.9) @@ -372,15 +289,18 @@ GEM rubyntlm (~> 0.3) globalid (0.3.6) activesupport (>= 4.1.0) - gollum-grit_adapter (1.0.0) + gollum-grit_adapter (1.0.1) gitlab-grit (~> 2.7, >= 2.7.1) - gollum-lib (4.1.0) - github-markup (~> 1.3.3) + gollum-lib (4.2.1) + github-markup (~> 1.4.0) gollum-grit_adapter (~> 1.0) nokogiri (~> 1.6.4) - rouge (~> 1.9) + rouge (~> 2.0) sanitize (~> 2.1.0) stringex (~> 2.5.1) + gollum-rugged_adapter (0.4.2) + mime-types (>= 1.15) + rugged (~> 0.24.0, >= 0.21.3) gon (6.0.1) actionpack (>= 3.0) json @@ -399,30 +319,20 @@ GEM grape-entity (0.4.8) activesupport multi_json (>= 1.3.2) - haml (4.0.7) + hamlit (2.5.0) + temple (~> 0.7.6) + thor tilt - haml-rails (0.9.0) - actionpack (>= 4.0.1) - activesupport (>= 4.0.1) - haml (>= 4.0.6, < 5.0) - html2haml (>= 1.0.1) - railties (>= 4.0.1) hashie (3.4.3) - highline (1.7.8) - hike (1.2.3) + health_check (2.1.0) + rails (>= 4.0) hipchat (1.5.2) httparty mimemagic html-pipeline (1.11.0) activesupport (>= 2) nokogiri (~> 1.4) - html2haml (2.0.0) - erubis (~> 2.7.0) - haml (~> 4.0.0) - nokogiri (~> 1.6.0) - ruby_parser (~> 3.5) - http-cookie (1.0.2) - domain_name (~> 0.5) + htmlentities (4.3.4) http_parser.rb (0.5.3) httparty (0.13.7) json (~> 1.8) @@ -430,33 +340,45 @@ GEM httpclient (2.7.0.1) i18n (0.7.0) ice_nine (0.11.1) - inflecto (0.0.2) influxdb (0.2.3) cause json - ipaddress (0.8.2) + ipaddress (0.8.3) jquery-atwho-rails (1.3.2) - jquery-rails (4.0.5) - rails-dom-testing (~> 1.0) + jquery-rails (4.1.1) + rails-dom-testing (>= 1, < 3) railties (>= 4.2.0) thor (>= 0.14, < 2.0) - jquery-scrollto-rails (1.4.3) - railties (> 3.1, < 5.0) jquery-turbolinks (2.1.0) railties (>= 3.1.0) turbolinks jquery-ui-rails (5.0.5) railties (>= 3.2.16) json (1.8.3) - jwt (1.5.2) - kaminari (0.16.3) + jwt (1.5.4) + kaminari (0.17.0) actionpack (>= 3.0.0) activesupport (>= 3.0.0) kgio (2.10.0) + knapsack (1.11.0) + rake + timecop (>= 0.1.0) launchy (2.4.3) addressable (~> 2.3) - letter_opener (1.1.2) + letter_opener (1.4.1) launchy (~> 2.2) + letter_opener_web (1.3.0) + actionmailer (>= 3.2) + letter_opener (~> 1.0) + railties (>= 3.2) + license_finder (2.1.0) + bundler + httparty + rubyzip + thor + xml-simple + licensee (8.0.0) + rugged (>= 0.24b) listen (3.0.5) rb-fsevent (>= 0.9.3) rb-inotify (>= 0.9) @@ -464,39 +386,40 @@ GEM nokogiri (>= 1.5.9) macaddr (1.7.1) systemu (~> 2.6.2) - mail (2.6.3) - mime-types (>= 1.16, < 3) - mail_room (0.6.1) + mail (2.6.4) + mime-types (>= 1.16, < 4) + mail_room (0.8.0) method_source (0.8.2) - mime-types (1.25.1) + mime-types (2.99.2) mimemagic (0.3.0) mini_portile2 (2.0.0) minitest (5.7.0) mousetrap-rails (1.4.6) - multi_json (1.11.2) + multi_json (1.12.1) multi_xml (0.5.5) multipart-post (2.0.0) mysql2 (0.3.20) nested_form (0.3.2) net-ldap (0.12.1) net-ssh (3.0.1) - netrc (0.11.0) newrelic_rpm (3.14.1.311) nokogiri (1.6.7.2) mini_portile2 (~> 2.0.0.rc2) - nprogress-rails (0.1.6.7) + numerizer (0.1.1) oauth (0.4.7) - oauth2 (1.0.0) + oauth2 (1.2.0) faraday (>= 0.8, < 0.10) jwt (~> 1.0) multi_json (~> 1.3) multi_xml (~> 0.5) - rack (~> 1.2) - octokit (3.8.0) - sawyer (~> 0.6.0, >= 0.5.3) + rack (>= 1.2, < 3) + octokit (4.3.0) + sawyer (~> 0.7.0, >= 0.5.3) omniauth (1.3.1) hashie (>= 1.2, < 4) rack (>= 1.0, < 3) + omniauth-auth0 (1.4.1) + omniauth-oauth2 (~> 1.1) omniauth-azure-oauth2 (0.0.6) jwt (~> 1.0) omniauth (~> 1.0) @@ -517,7 +440,7 @@ GEM omniauth-gitlab (1.0.1) omniauth (~> 1.0) omniauth-oauth2 (~> 1.0) - omniauth-google-oauth2 (0.2.10) + omniauth-google-oauth2 (0.4.1) addressable (~> 2.3) jwt (~> 1.0) multi_json (~> 1.3) @@ -534,9 +457,9 @@ GEM omniauth-oauth2 (1.3.1) oauth2 (~> 1.0) omniauth (~> 1.2) - omniauth-saml (1.4.2) - omniauth (~> 1.1) - ruby-saml (~> 1.1, >= 1.1.1) + omniauth-saml (1.6.0) + omniauth (~> 1.3) + ruby-saml (~> 1.3) omniauth-shibboleth (1.2.1) omniauth (>= 1.0.0) omniauth-twitter (1.2.1) @@ -551,16 +474,23 @@ GEM orm_adapter (0.5.0) paranoia (2.1.4) activerecord (~> 4.0) - parser (2.2.3.0) - ast (>= 1.1, < 3.0) + parser (2.3.1.2) + ast (~> 2.2) pg (0.18.4) - poltergeist (1.8.1) + pkg-config (1.1.7) + poltergeist (1.9.0) capybara (~> 2.1) cliver (~> 0.3.1) multi_json (~> 1.0) websocket-driver (>= 0.2.0) posix-spawn (0.3.11) powerpack (0.1.1) + premailer (1.8.6) + css_parser (>= 1.3.6) + htmlentities (>= 4.0.0) + premailer-rails (1.9.2) + actionmailer (>= 3, < 6) + premailer (~> 1.7, >= 1.7.9) pry (0.10.3) coderay (~> 1.1.0) method_source (~> 0.8.1) @@ -568,8 +498,6 @@ GEM pry-rails (0.3.4) pry (>= 0.9.10) pyu-ruby-sasl (0.0.3.3) - quiet_assets (1.0.3) - railties (>= 3.1, < 5.0) rack (1.6.4) rack-accept (0.4.5) rack (>= 0.4) @@ -588,16 +516,16 @@ GEM rack rack-test (0.6.3) rack (>= 1.0) - rails (4.2.5.2) - actionmailer (= 4.2.5.2) - actionpack (= 4.2.5.2) - actionview (= 4.2.5.2) - activejob (= 4.2.5.2) - activemodel (= 4.2.5.2) - activerecord (= 4.2.5.2) - activesupport (= 4.2.5.2) + rails (4.2.7) + actionmailer (= 4.2.7) + actionpack (= 4.2.7) + actionview (= 4.2.7) + activejob (= 4.2.7) + activemodel (= 4.2.7) + activerecord (= 4.2.7) + activesupport (= 4.2.7) bundler (>= 1.3.0, < 2.0) - railties (= 4.2.5.2) + railties (= 4.2.7) sprockets-rails rails-deprecated_sanitizer (1.0.3) activesupport (>= 4.2.0.alpha) @@ -607,15 +535,14 @@ GEM rails-deprecated_sanitizer (>= 1.0.1) rails-html-sanitizer (1.0.3) loofah (~> 2.0) - railties (4.2.5.2) - actionpack (= 4.2.5.2) - activesupport (= 4.2.5.2) + railties (4.2.7) + actionpack (= 4.2.7) + activesupport (= 4.2.7) rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) - rainbow (2.0.0) + rainbow (2.1.0) raindrops (0.15.0) rake (10.5.0) - raphael-rails (2.1.2) rb-fsevent (0.9.6) rb-inotify (0.9.5) ffi (>= 0.5.0) @@ -623,7 +550,7 @@ GEM debugger-ruby_core_source (~> 1.3) rdoc (3.12.2) json (~> 1.4) - recaptcha (1.0.2) + recaptcha (3.0.0) json redcarpet (3.3.3) redis (3.2.2) @@ -645,118 +572,114 @@ GEM redis-store (~> 1.1.0) redis-store (1.1.7) redis (>= 2.2) - request_store (1.2.1) + request_store (1.3.0) rerun (0.11.0) listen (~> 3.0) responders (2.1.1) railties (>= 4.2.0, < 5.1) - rest-client (1.8.0) - http-cookie (>= 1.0.2, < 2.0) - mime-types (>= 1.16, < 3.0) - netrc (~> 0.7) - rinku (1.7.3) - rotp (2.1.1) - rouge (1.10.1) + rinku (2.0.0) + rotp (2.1.2) + rouge (2.0.5) rqrcode (0.7.0) chunky_png rqrcode-rails3 (0.1.7) rqrcode (>= 0.4.2) - rspec (3.3.0) - rspec-core (~> 3.3.0) - rspec-expectations (~> 3.3.0) - rspec-mocks (~> 3.3.0) - rspec-core (3.3.2) - rspec-support (~> 3.3.0) - rspec-expectations (3.3.1) + rspec (3.5.0) + rspec-core (~> 3.5.0) + rspec-expectations (~> 3.5.0) + rspec-mocks (~> 3.5.0) + rspec-core (3.5.0) + rspec-support (~> 3.5.0) + rspec-expectations (3.5.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.3.0) - rspec-mocks (3.3.2) + rspec-support (~> 3.5.0) + rspec-mocks (3.5.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.3.0) - rspec-rails (3.3.3) - actionpack (>= 3.0, < 4.3) - activesupport (>= 3.0, < 4.3) - railties (>= 3.0, < 4.3) - rspec-core (~> 3.3.0) - rspec-expectations (~> 3.3.0) - rspec-mocks (~> 3.3.0) - rspec-support (~> 3.3.0) - rspec-support (3.3.0) - rubocop (0.35.1) - astrolabe (~> 1.3) - parser (>= 2.2.3.0, < 3.0) + rspec-support (~> 3.5.0) + rspec-rails (3.5.0) + actionpack (>= 3.0) + activesupport (>= 3.0) + railties (>= 3.0) + rspec-core (~> 3.5.0) + rspec-expectations (~> 3.5.0) + rspec-mocks (~> 3.5.0) + rspec-support (~> 3.5.0) + rspec-retry (0.4.5) + rspec-core + rspec-support (3.5.0) + rubocop (0.41.2) + parser (>= 2.3.1.1, < 3.0) powerpack (~> 0.1) rainbow (>= 1.99.1, < 3.0) ruby-progressbar (~> 1.7) - tins (<= 1.6.0) + unicode-display_width (~> 1.0, >= 1.0.1) + rubocop-rspec (1.5.0) + rubocop (>= 0.40.0) ruby-fogbugz (0.2.1) crack (~> 0.4) - ruby-progressbar (1.7.5) - ruby-saml (1.1.1) + ruby-progressbar (1.8.1) + ruby-saml (1.3.0) nokogiri (>= 1.5.10) - uuid (~> 2.3) - ruby2ruby (2.2.0) - ruby_parser (~> 3.1) - sexp_processor (~> 4.0) - ruby_parser (3.7.2) + ruby_parser (3.8.2) sexp_processor (~> 4.1) rubyntlm (0.5.2) rubypants (0.2.0) + rubyzip (1.2.0) rufus-scheduler (3.1.10) - rugged (0.24.0b13) + rugged (0.24.0) safe_yaml (1.0.4) sanitize (2.1.0) nokogiri (>= 1.4.4) - sass (3.4.20) - sass-rails (5.0.4) - railties (>= 4.0.0, < 5.0) + sass (3.4.22) + sass-rails (5.0.5) + railties (>= 4.0.0, < 6) sass (~> 3.1) sprockets (>= 2.8, < 4.0) sprockets-rails (>= 2.0, < 4.0) tilt (>= 1.1, < 3) - sawyer (0.6.0) - addressable (~> 2.3.5) + sawyer (0.7.0) + addressable (>= 2.3.5, < 2.5) faraday (~> 0.8, < 0.10) + scss_lint (0.47.1) + rake (>= 0.9, < 11) + sass (~> 3.4.15) sdoc (0.3.20) json (>= 1.1.3) rdoc (~> 3.10) - seed-fu (2.3.5) - activerecord (>= 3.1, < 4.3) - activesupport (>= 3.1, < 4.3) + seed-fu (2.3.6) + activerecord (>= 3.1) + activesupport (>= 3.1) select2-rails (3.5.9.3) thor (~> 0.14) - sentry-raven (0.15.6) + sentry-raven (1.1.0) faraday (>= 0.7.6) settingslogic (2.0.9) - sexp_processor (4.6.0) + sexp_processor (4.7.0) sham_rack (1.3.6) rack shoulda-matchers (2.8.0) activesupport (>= 3.0.0) - sidekiq (4.0.1) + sidekiq (4.1.4) concurrent-ruby (~> 1.0) connection_pool (~> 2.2, >= 2.2.0) - json (~> 1.0) redis (~> 3.2, >= 3.2.1) + sinatra (>= 1.4.7) sidekiq-cron (0.4.0) redis-namespace (>= 1.5.2) rufus-scheduler (>= 2.0.24) sidekiq (>= 4.0.0) simple_oauth (0.1.9) - simplecov (0.10.0) + simplecov (0.11.2) docile (~> 1.1.0) json (~> 1.8) simplecov-html (~> 0.10.0) simplecov-html (0.10.0) - sinatra (1.4.6) - rack (~> 1.4) + sinatra (1.4.7) + rack (~> 1.5) rack-protection (~> 1.4) tilt (>= 1.3, < 3) six (0.2.0) slack-notifier (1.2.1) - slim (3.0.6) - temple (~> 0.7.3) - tilt (>= 1.3.3, < 2.1) slop (3.6.0) spinach (0.8.10) colorize @@ -766,50 +689,50 @@ GEM capybara (>= 2.0.0) railties (>= 3) spinach (>= 0.4) - spring (1.3.6) + spinach-rerun-reporter (0.0.2) + spinach (~> 0.8) + spring (1.7.2) spring-commands-rspec (1.0.4) spring (>= 0.9.1) - spring-commands-spinach (1.0.0) + spring-commands-spinach (1.1.0) spring (>= 0.9.1) spring-commands-teaspoon (0.0.2) spring (>= 0.9.1) - sprockets (2.12.4) - hike (~> 1.2) - multi_json (~> 1.0) - rack (~> 1.0) - tilt (~> 1.1, != 1.3.0) - sprockets-rails (2.3.3) - actionpack (>= 3.0) - activesupport (>= 3.0) - sprockets (>= 2.8, < 4.0) + sprockets (3.6.3) + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.1.1) + actionpack (>= 4.0) + activesupport (>= 4.0) + sprockets (>= 3.0.0) state_machines (0.4.0) - state_machines-activemodel (0.3.0) - activemodel (~> 4.1) + state_machines-activemodel (0.4.0) + activemodel (>= 4.1, < 5.1) state_machines (>= 0.4.0) - state_machines-activerecord (0.3.0) - activerecord (~> 4.1) + state_machines-activerecord (0.4.0) + activerecord (>= 4.1, < 5.1) state_machines-activemodel (>= 0.3.0) stringex (2.5.2) + sys-filesystem (1.1.6) + ffi systemu (2.6.5) task_list (1.0.2) html-pipeline - teaspoon (1.0.2) - railties (>= 3.2.5, < 5) + teaspoon (1.1.5) + railties (>= 3.2.5, < 6) teaspoon-jasmine (2.2.0) teaspoon (>= 1.0.0) - temple (0.7.6) - term-ansicolor (1.3.2) - tins (~> 1.0) - terminal-table (1.5.2) + temple (0.7.7) test_after_commit (0.4.2) activerecord (>= 3.2) - thin (1.6.4) + thin (1.7.0) daemons (~> 1.0, >= 1.0.9) eventmachine (~> 1.0, >= 1.0.4) - rack (~> 1.0) + rack (>= 1, < 3) thor (0.19.1) thread_safe (0.3.5) - tilt (1.4.1) + tilt (2.0.5) + timecop (0.8.1) timfel-krb5-auth (0.8.3) tinder (1.10.1) eventmachine (~> 1.0) @@ -820,7 +743,6 @@ GEM mime-types multi_json (~> 1.7) twitter-stream (~> 0.1) - tins (1.6.0) turbolinks (2.5.3) coffee-rails twitter-stream (0.1.16) @@ -829,14 +751,16 @@ GEM simple_oauth (~> 0.1.4) tzinfo (1.2.2) thread_safe (~> 0.1) + u2f (0.2.1) uglifier (2.7.2) execjs (>= 0.3.0) json (>= 1.8.0) underscore-rails (1.8.3) unf (0.1.4) unf_ext - unf_ext (0.0.7.1) - unicorn (4.8.3) + unf_ext (0.0.7.2) + unicode-display_width (1.1.0) + unicorn (4.9.0) kgio (~> 2.6) rack raindrops (~> 0.7) @@ -852,9 +776,10 @@ GEM coercible (~> 1.0) descendants_tracker (~> 0.0, >= 0.0.3) equalizer (~> 0.0, >= 0.0.9) - warden (1.2.4) + vmstat (2.1.1) + warden (1.2.6) rack (>= 1.0) - web-console (2.2.1) + web-console (2.3.0) activemodel (>= 4.0) binding_of_caller (>= 0.7.2) railties (>= 4.0) @@ -877,86 +802,93 @@ PLATFORMS ruby DEPENDENCIES - RedCloth (~> 4.2.9) - ace-rails-ap (~> 2.0.1) - activerecord-deprecated_finders (~> 1.0.3) + RedCloth (~> 4.3.2) + ace-rails-ap (~> 4.0.2) activerecord-nulldb-adapter - activerecord-session_store (~> 0.1.0) + activerecord-session_store (~> 1.0.0) acts-as-taggable-on (~> 3.4) addressable (~> 2.3.8) - after_commit_queue + after_commit_queue (~> 1.3.0) akismet (~> 2.0) allocations (~> 1.0) - annotate (~> 2.6.0) asana (~> 0.4.0) asciidoctor (~> 1.5.2) - attr_encrypted (~> 1.3.4) + attr_encrypted (~> 3.0.0) awesome_print (~> 1.2.0) babosa (~> 1.0.2) - benchmark-ips + base32 (~> 0.3.0) + benchmark-ips (~> 2.3.0) better_errors (~> 1.0.1) binding_of_caller (~> 0.7.2) bootstrap-sass (~> 3.3.0) - brakeman (~> 3.1.0) - browser (~> 1.0.0) - bullet - bundler-audit - byebug - cal-heatmap-rails (~> 3.5.0) - capybara (~> 2.4.0) + brakeman (~> 3.3.0) + browser (~> 2.2) + bullet (~> 5.0.0) + bundler-audit (~> 0.5.0) + byebug (~> 8.2.1) + capybara (~> 2.6.2) capybara-screenshot (~> 1.0.0) - carrierwave (~> 0.9.0) + carrierwave (~> 0.10.0) charlock_holmes (~> 0.7.3) + chronic_duration (~> 0.10.6) coffee-rails (~> 4.1.0) - colorize (~> 0.7.0) connection_pool (~> 2.0) - coveralls (~> 0.8.2) creole (~> 0.5.0) d3_rails (~> 3.5.0) database_cleaner (~> 1.4.0) default_value_for (~> 3.0.0) - devise (~> 3.5.4) - devise-async (~> 0.9.0) - devise-two-factor (~> 2.0.0) + devise (~> 4.0) + devise-two-factor (~> 3.0.0) diffy (~> 3.0.3) - doorkeeper (~> 2.2.0) + doorkeeper (~> 4.0) dropzonejs-rails (~> 0.7.1) email_reply_parser (~> 0.5.8) email_spec (~> 1.6.0) - factory_girl_rails (~> 4.3.0) + factory_girl_rails (~> 4.6.0) ffaker (~> 2.0.0) - flay - flog - fog (~> 1.36.0) - font-awesome-rails (~> 4.2) - foreman + flay (~> 2.6.1) + flog (~> 4.3.2) + fog-aws (~> 0.9) + fog-azure (~> 0.0) + fog-core (~> 1.40) + fog-google (~> 0.3) + fog-local (~> 0.3) + fog-openstack (~> 0.1) + fog-rackspace (~> 0.1.1) + font-awesome-rails (~> 4.6.1) + foreman (~> 0.78.0) fuubar (~> 2.0.0) gemnasium-gitlab-service (~> 0.2) + gemojione (~> 3.0) github-linguist (~> 4.7.0) - github-markup (~> 1.3.1) + github-markup (~> 1.4) gitlab-flowdock-git-hook (~> 1.0.1) - gitlab_emoji (~> 0.3.0) - gitlab_git (~> 8.2) + gitlab_git (~> 10.3.2) gitlab_meta (= 7.0) gitlab_omniauth-ldap (~> 1.2.1) - gollum-lib (~> 4.1.0) + gollum-lib (~> 4.2) + gollum-rugged_adapter (~> 0.4.2) gon (~> 6.0.1) grape (~> 0.13.0) grape-entity (~> 0.4.2) - haml-rails (~> 0.9.0) + hamlit (~> 2.5) + health_check (~> 2.1.0) hipchat (~> 1.5.0) html-pipeline (~> 1.11.0) httparty (~> 0.13.3) influxdb (~> 0.2) jquery-atwho-rails (~> 1.3.2) - jquery-rails (~> 4.0.0) - jquery-scrollto-rails (~> 1.4.3) + jquery-rails (~> 4.1.0) jquery-turbolinks (~> 2.1.0) jquery-ui-rails (~> 5.0.0) - kaminari (~> 0.16.3) - letter_opener (~> 1.1.2) + jwt + kaminari (~> 0.17.0) + knapsack (~> 1.11.0) + letter_opener_web (~> 1.3.0) + license_finder (~> 2.1.0) + licensee (~> 8.0.0) loofah (~> 2.0.3) - mail_room (~> 0.6.1) + mail_room (~> 0.8) method_source (~> 0.8) minitest (~> 5.7.0) mousetrap-rails (~> 1.4.6) @@ -964,88 +896,96 @@ DEPENDENCIES nested_form (~> 0.3.2) net-ssh (~> 3.0.1) newrelic_rpm (~> 3.14) - nokogiri (~> 1.6.7, >= 1.6.7.2) - nprogress-rails (~> 0.1.6.7) - oauth2 (~> 1.0.0) - octokit (~> 3.8.0) + nokogiri (~> 1.6.7, >= 1.6.7.2, < 1.6.8) + oauth2 (~> 1.2.0) + octokit (~> 4.3.0) omniauth (~> 1.3.1) + omniauth-auth0 (~> 1.4.1) omniauth-azure-oauth2 (~> 0.0.6) omniauth-bitbucket (~> 0.0.2) omniauth-cas3 (~> 1.1.2) omniauth-facebook (~> 3.0.0) omniauth-github (~> 1.1.1) omniauth-gitlab (~> 1.0.0) - omniauth-google-oauth2 (~> 0.2.0) + omniauth-google-oauth2 (~> 0.4.1) omniauth-kerberos (~> 0.3.0) - omniauth-saml (~> 1.4.2) + omniauth-saml (~> 1.6.0) omniauth-shibboleth (~> 1.2.0) omniauth-twitter (~> 1.2.0) omniauth_crowd (~> 2.2.0) org-ruby (~> 0.9.12) paranoia (~> 2.0) pg (~> 0.18.2) - poltergeist (~> 1.8.1) - pry-rails - quiet_assets (~> 1.0.2) + poltergeist (~> 1.9.0) + premailer-rails (~> 1.9.0) + pry-rails (~> 0.3.4) rack-attack (~> 4.3.1) rack-cors (~> 0.4.0) rack-oauth2 (~> 1.2.1) - rails (= 4.2.5.2) + rails (= 4.2.7) rails-deprecated_sanitizer (~> 1.0.3) - raphael-rails (~> 2.1.2) - rblineprof + rainbow (~> 2.1.0) + rblineprof (~> 0.3.6) rdoc (~> 3.6) - recaptcha + recaptcha (~> 3.0) redcarpet (~> 3.3.3) - redis-namespace + redis (~> 3.2) + redis-namespace (~> 1.5.2) redis-rails (~> 4.0.0) - request_store (~> 1.2.0) + request_store (~> 1.3.0) rerun (~> 0.11.0) responders (~> 2.0) - rouge (~> 1.10.1) + rouge (~> 2.0) rqrcode-rails3 (~> 0.1.7) - rspec-rails (~> 3.3.0) - rubocop (~> 0.35.0) + rspec-rails (~> 3.5.0) + rspec-retry (~> 0.4.5) + rubocop (~> 0.41.2) + rubocop-rspec (~> 1.5.0) ruby-fogbugz (~> 0.2.1) sanitize (~> 2.0) sass-rails (~> 5.0.0) + scss_lint (~> 0.47.0) sdoc (~> 0.3.20) seed-fu (~> 2.3.5) select2-rails (~> 3.5.9) - sentry-raven (~> 0.15) + sentry-raven (~> 1.1.0) settingslogic (~> 2.0.9) - sham_rack + sham_rack (~> 1.3.6) shoulda-matchers (~> 2.8.0) sidekiq (~> 4.0) sidekiq-cron (~> 0.4.0) - simplecov (~> 0.10.0) + simplecov (~> 0.11.0) sinatra (~> 1.4.4) six (~> 0.2.0) slack-notifier (~> 1.2.0) spinach-rails (~> 0.2.1) - spring (~> 1.3.6) + spinach-rerun-reporter (~> 0.0.2) + spring (~> 1.7.0) spring-commands-rspec (~> 1.0.4) - spring-commands-spinach (~> 1.0.0) + spring-commands-spinach (~> 1.1.0) spring-commands-teaspoon (~> 0.0.2) - sprockets (~> 2.12.3) - state_machines-activerecord (~> 0.3.0) + sprockets (~> 3.6.0) + state_machines-activerecord (~> 0.4.0) + sys-filesystem (~> 1.1.6) task_list (~> 1.0.2) - teaspoon (~> 1.0.0) + teaspoon (~> 1.1.0) teaspoon-jasmine (~> 2.2.0) test_after_commit (~> 0.4.2) - thin (~> 1.6.1) + thin (~> 1.7.0) tinder (~> 1.10.0) turbolinks (~> 2.5.0) + u2f (~> 0.2.1) uglifier (~> 2.7.2) underscore-rails (~> 1.8.0) unf (~> 0.1.4) - unicorn (~> 4.8.2) + unicorn (~> 4.9.0) unicorn-worker-killer (~> 0.4.2) version_sorter (~> 2.0.0) virtus (~> 1.0.1) + vmstat (~> 2.1.1) web-console (~> 2.0) webmock (~> 1.21.0) wikicloth (= 0.8.1) BUNDLED WITH - 1.11.2 + 1.12.5 diff --git a/pkgs/applications/version-management/gitlab/default.nix b/pkgs/applications/version-management/gitlab/default.nix index c3aef17513f7..fadb14dc7829 100644 --- a/pkgs/applications/version-management/gitlab/default.nix +++ b/pkgs/applications/version-management/gitlab/default.nix @@ -24,20 +24,19 @@ in stdenv.mkDerivation rec { name = "gitlab-${version}"; - version = "8.5.12"; + version = "8.10.3"; - buildInputs = [ ruby bundler tzdata git nodejs procps ]; + buildInputs = [ env ruby bundler tzdata git nodejs procps ]; src = fetchFromGitHub { owner = "gitlabhq"; repo = "gitlabhq"; rev = "v${version}"; - sha256 = "144i97ywnr0xgm7gnwnwiy7kk5z1d71ccawl8qdhapz0705993l8"; + sha256 = "0fhnwrgrpccc2j9wgdmwwi9h1ym3ll97lhmddq0xfzivc302ri3w"; }; patches = [ ./remove-hardcoded-locations.patch - ./disable-dump-schema-after-migration.patch ./nulladapter.patch ]; @@ -66,9 +65,10 @@ stdenv.mkDerivation rec { ''; buildPhase = '' - export GEM_HOME=${env}/${ruby.gemPath} mv config/gitlab.yml.example config/gitlab.yml - GITLAB_DATABASE_ADAPTER=nulldb bundle exec rake assets:precompile RAILS_ENV=production + GITLAB_DATABASE_ADAPTER=nulldb \ + SKIP_STORAGE_VALIDATION=true \ + rake assets:precompile RAILS_ENV=production mv config/gitlab.yml config/gitlab.yml.example mv config config.dist ''; diff --git a/pkgs/applications/version-management/gitlab/disable-dump-schema-after-migration.patch b/pkgs/applications/version-management/gitlab/disable-dump-schema-after-migration.patch deleted file mode 100644 index bc1f638cee01..000000000000 --- a/pkgs/applications/version-management/gitlab/disable-dump-schema-after-migration.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff --git a/config/environments/production.rb b/config/environments/production.rb -index 3316ece..d60566c 100644 ---- a/config/environments/production.rb -+++ b/config/environments/production.rb -@@ -77,4 +77,6 @@ Gitlab::Application.configure do - config.eager_load = true - - config.allow_concurrency = false -+ -+ config.active_record.dump_schema_after_migration = false - end diff --git a/pkgs/applications/version-management/gitlab/gemset.nix b/pkgs/applications/version-management/gitlab/gemset.nix index 870f5e79f3af..ce7ecd9f030f 100644 --- a/pkgs/applications/version-management/gitlab/gemset.nix +++ b/pkgs/applications/version-management/gitlab/gemset.nix @@ -2,98 +2,82 @@ ace-rails-ap = { source = { remotes = ["https://rubygems.org"]; - sha256 = "082n12rkd9j7d89030nhmi4fx1gqaf13knps6cknsyvwix7fryvv"; + sha256 = "1y1xdjmdb7fg1w0ym7xizpfvll8bicnhli2s65bzvpk3zp7h8qmi"; type = "gem"; }; - version = "2.0.1"; + version = "4.0.2"; }; actionmailer = { - dependencies = ["actionpack" "actionview" "activejob" "mail" "rails-dom-testing"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "8cee5f2f1e58c8ada17cca696377443c0cbc9675df2b7eef97a04318876484b5"; + sha256 = "1fhq3dg3icbi1vrz55xwalzn4wpbrdgm41ma1jkrgbwl4qqqrrsq"; type = "gem"; }; - version = "4.2.5.2"; + version = "4.2.7"; }; actionpack = { - dependencies = ["actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "a22e1818f06b707433c9a76867932929751b5d57edbeacc258635a7b23da12cf"; + sha256 = "0swhxylh0mrq7b8am3b90xqnwldvfn52jd2m9zmc27r8hvc0h2fp"; type = "gem"; }; - version = "4.2.5.2"; + version = "4.2.7"; }; actionview = { - dependencies = ["activesupport" "builder" "erubis" "rails-dom-testing" "rails-html-sanitizer"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "e8ce01cf6cc822ec023a15a856a0fae0e078ebb232b95b722c23af4117d2d635"; + sha256 = "0wsxa7zkvacmv4vf528nmid2v5smqy54vh17srj3997bgjyr68f3"; type = "gem"; }; - version = "4.2.5.2"; + version = "4.2.7"; }; activejob = { - dependencies = ["activesupport" "globalid"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "cecb9bbc55292dee064ca479990c6e50fa3e2273aac6722ce058d18c22383026"; + sha256 = "19bf6fpl1vw6qnpsqcvdhljrvp67a7j72x1ydz4rj2s7g4xbjas3"; type = "gem"; }; - version = "4.2.5.2"; + version = "4.2.7"; }; activemodel = { - dependencies = ["activesupport" "builder"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "09ce967be3086b34ae9fcbd919e714b2bdf72b8ab6e89b64aa74627267d93962"; + sha256 = "0v991wipszd5ly1fba8qzfyg86r06k8l8y353dv7438sngwd7slk"; type = "gem"; }; - version = "4.2.5.2"; + version = "4.2.7"; }; activerecord = { - dependencies = ["activemodel" "activesupport" "arel"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "c2b1b6a4c6b8542c2464b457dce4cac4915efcbd3d5acfba57102e58474c33f2"; + sha256 = "0m04absj00hxj4q527ng0w0ydgbfc1cgxlcksjixgnx4j1visibn"; type = "gem"; }; - version = "4.2.5.2"; - }; - activerecord-deprecated_finders = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "03xplckz7v3nm6inqkwdd44h6gpbpql0v02jc1rz46a38rd6cj6m"; - type = "gem"; - }; - version = "1.0.4"; + version = "4.2.7"; }; activerecord-nulldb-adapter = { source = { remotes = ["https://rubygems.org"]; - sha256 = "1ym3paxp5lqr2kr4hkqj6xxqvgl57fv8jqhvgjfxb9lk7k5jlfmp"; + sha256 = "1m8jlbzmwc1cx4fb54m9adw962anpz5cazbyirb4qs5brxma63fp"; type = "gem"; }; - version = "0.3.2"; + version = "0.3.3"; }; activerecord-session_store = { - dependencies = ["actionpack" "activerecord" "railties"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1rp5q0q5i5syfgw7qpiq3a42x13p7myyv1c5hmnczpdlh57axs3p"; + sha256 = "1b8q5p7wl0xpmlcjig2im1yryzj4aipvw7zq3z1ig8fdg4m2m943"; type = "gem"; }; - version = "0.1.2"; + version = "1.0.0"; }; activesupport = { - dependencies = ["i18n" "json" "minitest" "thread_safe" "tzinfo"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "80ad345adf7e2b72c5d90753c0df91eacc34f4de02b34cfbf60bcf6c83483031"; + sha256 = "1pm0gw4ykq9137n8i815vayyah0mk2m920clgg02jr3l23w6gsnj"; type = "gem"; }; - version = "4.2.5.2"; + version = "4.2.7"; }; acts-as-taggable-on = { dependencies = ["activerecord"]; @@ -132,19 +116,10 @@ allocations = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0iynf7gkbnbr5mgl2wgbgvxmjdiawh7ywwbnyjm94bj3pkybzgkc"; - type = "gem"; - }; - version = "1.0.4"; - }; - annotate = { - dependencies = ["activerecord" "rake"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1wdw9phsv2dndgid3pd8h0hl4zycwy11jc9iz6prwza0xax0i7hg"; + sha256 = "1y7z66lpzabyvviphk1fnzvrj5vhv7v9vppcnkrf0n5wh8qwx2zi"; type = "gem"; }; - version = "2.6.10"; + version = "1.0.5"; }; arel = { source = { @@ -174,28 +149,18 @@ ast = { source = { remotes = ["https://rubygems.org"]; - sha256 = "102bywfxrv0w3n4s6lg25d7xxshd344sc7ijslqmganj5bany1pk"; - type = "gem"; - }; - version = "2.1.0"; - }; - astrolabe = { - dependencies = ["parser"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0ybbmjxaf529vvhrj4y8d4jpf87f3hgczydzywyg1d04gggjx7l7"; + sha256 = "0pp82blr5fakdk27d1d21xq9zchzb6vmyb1zcsl520s3ygvprn8m"; type = "gem"; }; - version = "1.3.1"; + version = "2.3.0"; }; attr_encrypted = { - dependencies = ["encryptor"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1hm2844qm37kflqq5v0x2irwasbhcblhp40qk10m3wlkj4m9wp8p"; + sha256 = "0xqb753sjgwxpb2s375j8nkrk8kjhjijzywyl6vps5r3nbs0l51k"; type = "gem"; }; - version = "1.3.4"; + version = "3.0.1"; }; attr_required = { source = { @@ -231,6 +196,22 @@ }; version = "0.1.1"; }; + azure = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1vfnx47ihizg1d6szdyf48xfdghjfk66k4r39z6b0gl5i40vcm8v"; + type = "gem"; + }; + version = "0.7.5"; + }; + azure-core = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "016krlc7wfg27zgg5i6j0pys32ra8jszgls8wz4dz64h2zf1kd7a"; + type = "gem"; + }; + version = "0.1.2"; + }; babosa = { source = { remotes = ["https://rubygems.org"]; @@ -239,13 +220,21 @@ }; version = "1.0.2"; }; + base32 = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0b7y8sy6j9v1lvfzd4va88k5vg9yh0xcjzzn3llcw7yxqlcrnbjk"; + type = "gem"; + }; + version = "0.3.2"; + }; bcrypt = { source = { remotes = ["https://rubygems.org"]; - sha256 = "15cf7zzlj9b0xcx12jf8fmnpc8g1b0yhxal1yr5p7ny3mrz5pll6"; + sha256 = "1d254sdhdj6mzak3fb5x3jam8b94pvl1srladvs53j05a89j5z50"; type = "gem"; }; - version = "3.1.10"; + version = "3.1.11"; }; benchmark-ips = { source = { @@ -283,21 +272,20 @@ version = "3.3.6"; }; brakeman = { - dependencies = ["erubis" "fastercsv" "haml" "highline" "multi_json" "ruby2ruby" "ruby_parser" "safe_yaml" "sass" "slim" "terminal-table"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "15v13yizpvp1rm86raqggmsmm51v6p8fqw3pfgi6xpvx1ba06cfm"; + sha256 = "0v2yllqcn2zyi60ahgi8ds8pix6a82703ln25p9pkm1bvrwj3fsq"; type = "gem"; }; - version = "3.1.4"; + version = "3.3.2"; }; browser = { source = { remotes = ["https://rubygems.org"]; - sha256 = "01bkb64w2ld2q5r3chc4f6spbjrmginyg8wlzg130zmx2z4jia2h"; + sha256 = "055r4wyc3z61r7mg2bgqpzabpkg8db2q5rciwfx9lwfyhjx19pbv"; type = "gem"; }; - version = "1.0.1"; + version = "2.2.0"; }; builder = { source = { @@ -308,22 +296,20 @@ version = "3.2.2"; }; bullet = { - dependencies = ["activesupport" "uniform_notifier"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1h3iaflcz5a1xr32bdb8sk4nx06yhh5d8y7w294w49xigfv4hzj3"; + sha256 = "14i3ci990sygxzdsy9jsgzfs5zkzgx6fd56i0d58s77wmn2myham"; type = "gem"; }; - version = "4.14.10"; + version = "5.0.0"; }; bundler-audit = { - dependencies = ["thor"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "0msv3k2277y7al5lbnw7q9lmb5fnrscpkmsb36wpn189pdq0akfv"; + sha256 = "1gr7k6m9fda7m66irxzydm8v9xbmlryjj65cagwm1zyi5f317srb"; type = "gem"; }; - version = "0.4.0"; + version = "0.5.0"; }; byebug = { source = { @@ -333,22 +319,13 @@ }; version = "8.2.1"; }; - cal-heatmap-rails = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0lrmcyj3iixkprqi9fb9vcn97wpp779sl5hxxgx57r3rb7l4d20w"; - type = "gem"; - }; - version = "3.5.1"; - }; capybara = { - dependencies = ["mime-types" "nokogiri" "rack" "rack-test" "xpath"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "114k4xi4nfbp3jfbxgwa3fksbwsyibx74gbdqpcgg3dxpmzkaa4f"; + sha256 = "0ln77a5wwhd5sbxsh3v26xrwjnza0rgx2hn23yjggdlha03b00yw"; type = "gem"; }; - version = "2.4.4"; + version = "2.6.2"; }; capybara-screenshot = { dependencies = ["capybara" "launchy"]; @@ -360,13 +337,12 @@ version = "1.0.11"; }; carrierwave = { - dependencies = ["activemodel" "activesupport" "json"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1b1av1ancby6brhmypl5k8xwrasd8bd3kqp9ri8kbq7z8nj6k445"; + sha256 = "0h9179vcsv5mhdd83zx13bisk6x5c7j97mhqaxagimjbkszwsvr0"; type = "gem"; }; - version = "0.9.0"; + version = "0.10.0"; }; cause = { source = { @@ -376,21 +352,21 @@ }; version = "0.1"; }; - CFPropertyList = { + charlock_holmes = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0mjb46368z4hiax3fcsgxk14fxrhwnvcmakc2f5sx8nz0wvvkwg2"; + sha256 = "0jsl6k27wjmssxbwv9wpf7hgp9r0nvizcf6qpjnr7qs2nia53lf7"; type = "gem"; }; - version = "2.3.2"; + version = "0.7.3"; }; - charlock_holmes = { + chronic_duration = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0jsl6k27wjmssxbwv9wpf7hgp9r0nvizcf6qpjnr7qs2nia53lf7"; + sha256 = "1k7sx3xqbrn6s4pishh2pgr4kw6fmw63h00lh503l66k8x0qvigs"; type = "gem"; }; - version = "0.7.3"; + version = "0.10.6"; }; chunky_png = { source = { @@ -426,13 +402,12 @@ version = "1.0.0"; }; coffee-rails = { - dependencies = ["coffee-script" "railties"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "0p3zhs44gsy1p90nmghihzfyl7bsk8kv6j3q7rj3bn74wg8w7nqs"; + sha256 = "1mv1kaw3z4ry6cm51w8pfrbby40gqwxanrqyqr0nvs8j1bscc1gw"; type = "gem"; }; - version = "4.1.0"; + version = "4.1.1"; }; coffee-script = { dependencies = ["coffee-script-source" "execjs"]; @@ -462,10 +437,10 @@ concurrent-ruby = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0qqdgcfkzv90nznrpsvg3cgg5xiqz4c8hnv7va5gm4fp4lf4k85v"; + sha256 = "1kb4sav7yli12pjr8lscv8z49g52a5xzpfg3z9h8clzw6z74qjsw"; type = "gem"; }; - version = "1.0.0"; + version = "1.0.2"; }; connection_pool = { source = { @@ -475,15 +450,6 @@ }; version = "2.2.0"; }; - coveralls = { - dependencies = ["json" "rest-client" "simplecov" "term-ansicolor" "thor" "tins"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "03vnvcw1fdmkp3405blcxpsjf89jxd2061474a32fchsmv2das9y"; - type = "gem"; - }; - version = "0.8.9"; - }; crack = { dependencies = ["safe_yaml"]; source = { @@ -501,6 +467,14 @@ }; version = "0.5.0"; }; + css_parser = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1ql5q4n39278prbdjdsxx9wkxkxblgzzn0qcdqnwibgd1dkvb5av"; + type = "gem"; + }; + version = "1.4.1"; + }; d3_rails = { dependencies = ["railties"]; source = { @@ -561,31 +535,20 @@ version = "0.0.4"; }; devise = { - dependencies = ["bcrypt" "orm_adapter" "railties" "responders" "thread_safe" "warden"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "00h0xdl4a8pjpb0gbgy4w6q9j2mpczkmj23195zmjrg2b1gl8f2q"; - type = "gem"; - }; - version = "3.5.4"; - }; - devise-async = { - dependencies = ["devise"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "11llg7ggzpmg4lb9gh4sx55spvp98sal5r803gjzamps9crfq6mm"; + sha256 = "1i5glkxmn0ymj50pz05nh6xcffc9giqajgfg6qrcbs2n552hbr5k"; type = "gem"; }; - version = "0.9.0"; + version = "4.1.1"; }; devise-two-factor = { - dependencies = ["activesupport" "attr_encrypted" "devise" "railties" "rotp"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1v2wva971ds48af47rj4ywavlmz7qzbmf1jpf1l3xn3mscz52hln"; + sha256 = "1pkldws5lga4mlv4xmcrfb0yivl6qad0l8qyb2hdb50adv6ny4gs"; type = "gem"; }; - version = "2.0.1"; + version = "3.0.0"; }; diff-lcs = { source = { @@ -611,23 +574,13 @@ }; version = "1.1.5"; }; - domain_name = { - dependencies = ["unf"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "16qvfrmcwlzz073aas55mpw2nhyhjcn96s524w0g1wlml242hjav"; - type = "gem"; - }; - version = "0.5.25"; - }; doorkeeper = { - dependencies = ["railties"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "0wim84wkvx758cfb8q92w3hhvnfbwr990x1mmfv1ss1ivjz8fmm0"; + sha256 = "0lillrbd2sy7zzni6a2kf3p09lfd0br831zzv22zsv4ffr6n1va1"; type = "gem"; }; - version = "2.2.2"; + version = "4.0.0"; }; dropzonejs-rails = { dependencies = ["rails"]; @@ -658,10 +611,10 @@ encryptor = { source = { remotes = ["https://rubygems.org"]; - sha256 = "04wqqda081h7hmhwjjx1yqxprxjk8s5jgv837xqv1bpxiv7f4v1y"; + sha256 = "0s8rvfl0vn8w7k1sgkc234060jh468s3zd45xa64p1jdmfa3zwmb"; type = "gem"; }; - version = "1.3.0"; + version = "3.0.0"; }; equalizer = { source = { @@ -682,10 +635,10 @@ escape_utils = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0hb8nmrgmd9n5dhih86fp91sf26mmw14sdn5vswg5g20svrqxc7x"; + sha256 = "088r5c2mz2vy2jbbx1xjbi8msnzg631ggli29nhik2spbcp1z6vh"; type = "gem"; }; - version = "1.1.0"; + version = "1.1.1"; }; eventmachine = { source = { @@ -698,10 +651,10 @@ excon = { source = { remotes = ["https://rubygems.org"]; - sha256 = "1shb4g3dhsfkywgjv6123yrvp2c8bvi8hqmq47iqa5lp72sn4b4w"; + sha256 = "0jmdgc4lhlbxccpg79a32vn3qngqipcaaq8bxa0ivfw5mvz0zc0z"; type = "gem"; }; - version = "0.45.4"; + version = "0.49.0"; }; execjs = { source = { @@ -720,22 +673,20 @@ version = "0.9.0"; }; factory_girl = { - dependencies = ["activesupport"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "13z20a4b7z1c8vbz0qz5ranssdprldwvwlgjmn38x311sfjmp9dz"; + sha256 = "0qn34ba1midnzms1854yzx0g16sgy7bd9wcsvs66rxd65idsay20"; type = "gem"; }; - version = "4.3.0"; + version = "4.5.0"; }; factory_girl_rails = { - dependencies = ["factory_girl" "railties"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1jj0yl6mfildb4g79dwgc1q5pv2pa65k9b1ml43mi8mg62j8mrhz"; + sha256 = "00vngc59bww75hqkr1hbnvnqm5763w0jlv3lsq3js1r1wxdzix2r"; type = "gem"; }; - version = "4.3.0"; + version = "4.6.0"; }; faraday = { dependencies = ["multipart-post"]; @@ -764,14 +715,6 @@ }; version = "0.0.6"; }; - fastercsv = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1df3vfgw5wg0s405z0pj0rfcvnl9q6wak7ka8gn0xqg4cag1k66h"; - type = "gem"; - }; - version = "1.5.5"; - }; ffaker = { source = { remotes = ["https://rubygems.org"]; @@ -788,15 +731,6 @@ }; version = "1.9.10"; }; - fission = { - dependencies = ["CFPropertyList"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "09pmp1j1rr8r3pcmbn2na2ls7s1j9ijbxj99xi3a8r6v5xhjdjzh"; - type = "gem"; - }; - version = "0.5.0"; - }; flay = { dependencies = ["ruby_parser" "sexp_processor"]; source = { @@ -824,86 +758,37 @@ }; version = "0.7.1"; }; - fog = { - dependencies = ["fog-aliyun" "fog-atmos" "fog-aws" "fog-brightbox" "fog-core" "fog-dynect" "fog-ecloud" "fog-google" "fog-json" "fog-local" "fog-powerdns" "fog-profitbricks" "fog-radosgw" "fog-riakcs" "fog-sakuracloud" "fog-serverlove" "fog-softlayer" "fog-storm_on_demand" "fog-terremark" "fog-vmfusion" "fog-voxel" "fog-xenserver" "fog-xml" "ipaddress" "nokogiri"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1ml31jdycqdm8w7w3l9pbyrgbnmrrnhmkppa2x4bwi9as1n1jmwq"; - type = "gem"; - }; - version = "1.36.0"; - }; - fog-aliyun = { - dependencies = ["fog-core" "fog-json" "ipaddress" "xml-simple"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1i76g8sdskyfc0gcnd6n9i757s7dmwg3wf6spcr2xh8wzyxkm1pj"; - type = "gem"; - }; - version = "0.1.0"; - }; - fog-atmos = { - dependencies = ["fog-core" "fog-xml"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1aaxgnw9zy96gsh4h73kszypc32sx497s6bslvhfqh32q9d1y8c9"; - type = "gem"; - }; - version = "0.1.0"; - }; fog-aws = { - dependencies = ["fog-core" "fog-json" "fog-xml" "ipaddress"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1pzfahq8h3alfflb5dr8lm02q27x81vm96qn5zyfdlx86yy7bq96"; + sha256 = "0imhhxrw8m031lc912bnlqzgac41sjsip1fa8v845ldmn56kn9zg"; type = "gem"; }; - version = "0.8.1"; - }; - fog-brightbox = { - dependencies = ["fog-core" "fog-json" "inflecto"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0p7rbx587hb1d1am90dcr3zdp6y50c2zddh97yfgl62vji0pbkkd"; - type = "gem"; - }; - version = "0.10.1"; - }; - fog-core = { - dependencies = ["builder" "excon" "formatador"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "02z91r3f5a64hlalm6h39v0778yl2kk3qvva0zvplpp9hpwbwzhl"; - type = "gem"; - }; - version = "1.35.0"; + version = "0.9.2"; }; - fog-dynect = { - dependencies = ["fog-core" "fog-json" "fog-xml"]; + fog-azure = { source = { remotes = ["https://rubygems.org"]; - sha256 = "18lqmdkm22254z86jh3aa9v9vqk8bgbd3d1m0w7az3ij47ak7kch"; + sha256 = "1bdgzn1a1z79drfvashs6gzpg98dijvxm168cq0czzkx3wvbrfcl"; type = "gem"; }; version = "0.0.2"; }; - fog-ecloud = { - dependencies = ["fog-core" "fog-xml"]; + fog-core = { source = { remotes = ["https://rubygems.org"]; - sha256 = "18rb4qjad9xwwqvvpj8r2h0hi9svy71pm4d3fc28cdcnfarmdi06"; + sha256 = "1flkprsdm1qr38bzd80wxpkbcwm5zshivbg2k8pjls9i6jh6a0z7"; type = "gem"; }; - version = "0.3.0"; + version = "1.40.0"; }; fog-google = { - dependencies = ["fog-core" "fog-json" "fog-xml"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "0z4vmswpqwph04c0wqzrscns1d1wdm8kbxx457bv156mawzrhfj3"; + sha256 = "0vzwid3s4c39fqixg1zb0dr5g3q6lafm9pan6bk3csys62v6fnm9"; type = "gem"; }; - version = "0.1.0"; + version = "0.3.2"; }; fog-json = { dependencies = ["fog-core" "multi_json"]; @@ -915,122 +800,29 @@ version = "1.0.2"; }; fog-local = { - dependencies = ["fog-core"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "0i5hxwzmc2ag3z9nlligsaf679kp2pz39cd8n2s9cmxaamnlh2s3"; + sha256 = "0256l3q2f03q8fk49035h5jij388rcz9fqlwri7y788492b4vs3c"; type = "gem"; }; - version = "0.2.1"; - }; - fog-powerdns = { - dependencies = ["fog-core" "fog-json" "fog-xml"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "08zavzwfkk344gz83phz4sy9nsjznsdjsmn1ifp6ja17bvydlhh7"; - type = "gem"; - }; - version = "0.1.1"; - }; - fog-profitbricks = { - dependencies = ["fog-core" "fog-xml" "nokogiri"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "154sqs2dcmvg21v4m3fj8f09z5i70sq8a485v6rdygsffs8xrycn"; - type = "gem"; - }; - version = "0.0.5"; - }; - fog-radosgw = { - dependencies = ["fog-core" "fog-json" "fog-xml"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0nslgv8yp5qkiryj3zsm91gs7s6i626igj61kwxjjwk2yv6swyr6"; - type = "gem"; - }; - version = "0.0.5"; - }; - fog-riakcs = { - dependencies = ["fog-core" "fog-json" "fog-xml"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1nbxc4dky3agfwrmgm1aqmi59p6vnvfnfbhhg7xpg4c2cf41whxm"; - type = "gem"; - }; - version = "0.1.0"; - }; - fog-sakuracloud = { - dependencies = ["fog-core" "fog-json"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "08krsn9sk5sx0aza812g31r169bd0zanb8pq5am3a64j6azarimd"; - type = "gem"; - }; - version = "1.7.5"; - }; - fog-serverlove = { - dependencies = ["fog-core" "fog-json"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0hxgmwzygrw25rbsy05i6nzsyr0xl7xj5j2sjpkb9n9wli5sagci"; - type = "gem"; - }; - version = "0.1.2"; + version = "0.3.0"; }; - fog-softlayer = { - dependencies = ["fog-core" "fog-json"]; + fog-openstack = { source = { remotes = ["https://rubygems.org"]; - sha256 = "1zax2wws0q8pm787jnlxd2xlj23f2acz0s6jl5nzczyxjgll571r"; + sha256 = "1pw2ypxbbmfscmhcz05ry5kc7c5rjr61lv9zj6zpr98fg1wad3a6"; type = "gem"; }; - version = "1.0.3"; + version = "0.1.6"; }; - fog-storm_on_demand = { - dependencies = ["fog-core" "fog-json"]; + fog-rackspace = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0fif1x8ci095b2yyilf65n7x6iyvn448azrsnmwsdkriy8vxxv3y"; + sha256 = "0y2bli061g37l9p4w0ljqbmg830rp2qz6sf8b0ck4cnx68j7m32a"; type = "gem"; }; version = "0.1.1"; }; - fog-terremark = { - dependencies = ["fog-core" "fog-xml"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "01lfkh9jppj0iknlklmwyb7ym3bfhkq58m3absb6rf5a5mcwi3lf"; - type = "gem"; - }; - version = "0.1.0"; - }; - fog-vmfusion = { - dependencies = ["fission" "fog-core"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0g0l0k9ylxk1h9pzqr6h2ba98fl47lpp3j19lqv4jxw0iw1rqxn4"; - type = "gem"; - }; - version = "0.1.0"; - }; - fog-voxel = { - dependencies = ["fog-core" "fog-xml"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "10skdnj59yf4jpvq769njjrvh2l0wzaa7liva8n78qq003mvmfgx"; - type = "gem"; - }; - version = "0.1.0"; - }; - fog-xenserver = { - dependencies = ["fog-core" "fog-xml"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1ngw8hh8ljk7wi0cp8n4b4jcy2acx0yqzjk7851m3mp0kji5dlgl"; - type = "gem"; - }; - version = "0.2.2"; - }; fog-xml = { dependencies = ["fog-core" "nokogiri"]; source = { @@ -1041,13 +833,12 @@ version = "0.1.2"; }; font-awesome-rails = { - dependencies = ["railties"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "09x1bg98sp2v1lsg9h2bal915q811xq84h9d74p1f3378ga63c1x"; + sha256 = "04cq20l6g5byjnqvm9n02wangakxfj5kaxk1447y5mi0a87x184c"; type = "gem"; }; - version = "4.5.0.0"; + version = "4.6.1.0"; }; foreman = { dependencies = ["thor"]; @@ -1087,10 +878,10 @@ gemojione = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0av60lajn64z1csmkzfaf5wvpd3x48lcshiknkqr8m0zx3sg7w3h"; + sha256 = "17yy3cp7b75ngc2v4f0cacvq3f1bk3il5a0ykvnypl6fcj6r6b3w"; type = "gem"; }; - version = "2.2.1"; + version = "3.0.1"; }; get_process_mem = { source = { @@ -1111,18 +902,18 @@ github-linguist = { source = { remotes = ["https://rubygems.org"]; - sha256 = "1xxm2lbabkc1xmx2myv56a4fkw3wwg9n8w2bzwrl4s33kf6x62ag"; + sha256 = "0c8w92yzjfs7pjnm8bdjsgyd1jpisn10fb6dy43381k1k8pxsifd"; type = "gem"; }; - version = "4.7.5"; + version = "4.7.6"; }; github-markup = { source = { remotes = ["https://rubygems.org"]; - sha256 = "01r901wcgn0gs0n9h684gs5n90y1vaj9lxnx4z5ig611jwa43ivq"; + sha256 = "046bvnbhk3bw021sd88808n71dya0b0dmx8hm64rj0fvs2jzg54z"; type = "gem"; }; - version = "1.3.3"; + version = "1.4.0"; }; gitlab-flowdock-git-hook = { dependencies = ["flowdock" "gitlab-grit" "multi_json"]; @@ -1134,29 +925,20 @@ version = "1.0.1"; }; gitlab-grit = { - dependencies = ["charlock_holmes" "diff-lcs" "mime-types" "posix-spawn"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0nv8shx7w7fww8lf5a2rbvf7bq173rllm381m6x7g1i0qqc68q1b"; - type = "gem"; - }; - version = "2.7.3"; - }; - gitlab_emoji = { source = { remotes = ["https://rubygems.org"]; - sha256 = "1dy746icdmyc548mb5xkavvkn37pk7vv3gznx0p6hff325pan8dj"; + sha256 = "0lf1cr6pzqrbnxiiwym6q74b1a2ihdi91dynajk8hi1p093hl66n"; type = "gem"; }; - version = "0.3.1"; + version = "2.8.1"; }; gitlab_git = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0311dl4vh6h7k8xarmpr61fndrhbmfskzjzkkj1rr8321gn8znfv"; + sha256 = "00l5dv4k6q21yzxnviqh5ab6i2i6ajzlyjbwm1vgag7663wscny6"; type = "gem"; }; - version = "8.2.0"; + version = "10.3.2"; }; gitlab_meta = { source = { @@ -1185,22 +967,28 @@ version = "0.3.6"; }; gollum-grit_adapter = { - dependencies = ["gitlab-grit"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "02c5qfq0s0kx2ifnpbnbgz6258fl7rchzzzc7vpx72shi8gbpac7"; + sha256 = "0fcibm63v1afc0fj5rki0mm51m7nndil4cjcjjvkh3yigfn4nr4b"; type = "gem"; }; - version = "1.0.0"; + version = "1.0.1"; }; gollum-lib = { - dependencies = ["github-markup" "gollum-grit_adapter" "nokogiri" "rouge" "sanitize" "stringex"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "01s8pgzhc3cgcmsy6hh79wrcbn5vbadniq2a7d4qw87kpq7mzfdm"; + sha256 = "1q668c76gnyyyl8217gnblbj50plm7giacs5lgf7ix2rj8rdxzj7"; + type = "gem"; + }; + version = "4.2.1"; + }; + gollum-rugged_adapter = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1qs5bzjnvk2269jaq7b7vxghhim50sswjf9fclqs33r8bym7zxk3"; type = "gem"; }; - version = "4.1.0"; + version = "0.4.2"; }; gon = { dependencies = ["actionpack" "json" "multi_json" "request_store"]; @@ -1229,23 +1017,13 @@ }; version = "0.4.8"; }; - haml = { - dependencies = ["tilt"]; + hamlit = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0mrzjgkygvfii66bbylj2j93na8i89998yi01fin3whwqbvx0m1p"; + sha256 = "00360fr2kq9f31p6mq965z0lpb16vhji3mzgkywcsxym1z9srvwm"; type = "gem"; }; - version = "4.0.7"; - }; - haml-rails = { - dependencies = ["actionpack" "activesupport" "haml" "html2haml" "railties"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1hbfznkxab663hxp1v6gpsa7sv6w1fnw9r8b3flixwylnwh3c5dz"; - type = "gem"; - }; - version = "0.9.0"; + version = "2.5.0"; }; hashie = { source = { @@ -1255,21 +1033,13 @@ }; version = "3.4.3"; }; - highline = { + health_check = { source = { remotes = ["https://rubygems.org"]; - sha256 = "1nf5lgdn6ni2lpfdn4gk3gi47fmnca2bdirabbjbz1fk9w4p8lkr"; + sha256 = "1jhm5342ngm2qfa1s6g0k09rszvb0h9jkxgda7dkwhg2v4cgj976"; type = "gem"; }; - version = "1.7.8"; - }; - hike = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0i6c9hrszzg3gn2j41v3ijnwcm8cc2931fnjiv6mnpl4jcjjykhm"; - type = "gem"; - }; - version = "1.2.3"; + version = "2.1.0"; }; hipchat = { dependencies = ["httparty" "mimemagic"]; @@ -1289,23 +1059,13 @@ }; version = "1.11.0"; }; - html2haml = { - dependencies = ["erubis" "haml" "nokogiri" "ruby_parser"]; + htmlentities = { source = { remotes = ["https://rubygems.org"]; - sha256 = "069zcy8lr010hn4qmbi8g5srdf69brk8nbgx4zcqcgbgsl4m8d4i"; + sha256 = "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj"; type = "gem"; }; - version = "2.0.0"; - }; - http-cookie = { - dependencies = ["domain_name"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0cz2fdkngs3jc5w32a6xcl511hy03a7zdiy988jk1sf3bf5v3hdw"; - type = "gem"; - }; - version = "1.0.2"; + version = "4.3.4"; }; "http_parser.rb" = { source = { @@ -1348,14 +1108,6 @@ }; version = "0.11.1"; }; - inflecto = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "085l5axmvqw59mw5jg454a3m3gr67ckq9405a075isdsn7bm3sp4"; - type = "gem"; - }; - version = "0.0.2"; - }; influxdb = { dependencies = ["cause" "json"]; source = { @@ -1368,10 +1120,10 @@ ipaddress = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0sl0ldvhd6j0qbwhz18w24qy65mdj448b2vhgh2cwn7xrkksmv9l"; + sha256 = "1x86s0s11w202j6ka40jbmywkrx8fhq8xiy8mwvnkhllj57hqr45"; type = "gem"; }; - version = "0.8.2"; + version = "0.8.3"; }; jquery-atwho-rails = { source = { @@ -1382,22 +1134,12 @@ version = "1.3.2"; }; jquery-rails = { - dependencies = ["rails-dom-testing" "railties" "thor"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "028dv2n0r2r8qj1bqcbzmih0hwzh5km6cvscn2808v5gd44z48r1"; + sha256 = "1asbrr9hqf43q9qbjf87f5lm7fp12pndh76z89ks6jwxf1350fj1"; type = "gem"; }; - version = "4.0.5"; - }; - jquery-scrollto-rails = { - dependencies = ["railties"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "12ic0zxw60ryglm1qjq5ralqd6k4jawmjj7kqnp1nkqds2nvinvp"; - type = "gem"; - }; - version = "1.4.3"; + version = "4.1.1"; }; jquery-turbolinks = { dependencies = ["railties" "turbolinks"]; @@ -1428,19 +1170,18 @@ jwt = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0is8973si98rsry5igqdag2jb1knj6jhmfkr9r4mc5n0yvgr5n2q"; + sha256 = "0s5llb4mhpy0phzbrc4jd2jd2b91h1axy4bhci7g1bdz1w2m3a2i"; type = "gem"; }; - version = "1.5.2"; + version = "1.5.4"; }; kaminari = { - dependencies = ["actionpack" "activesupport"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "14vx3kgssl4lv2kn6grr5v2whsynx5rbl1j9aqiq8nc3d7j74l67"; + sha256 = "1n063jha143mw4fklpq5f4qs7saakx4s4ps1zixj0s5y8l9pam54"; type = "gem"; }; - version = "0.16.3"; + version = "0.17.0"; }; kgio = { source = { @@ -1450,6 +1191,14 @@ }; version = "2.10.0"; }; + knapsack = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0z0bp5al0b8wyzw8ff99jwr6qsh5n52xqryvzvy2nbrma9qr7dam"; + type = "gem"; + }; + version = "1.11.0"; + }; launchy = { dependencies = ["addressable"]; source = { @@ -1460,13 +1209,36 @@ version = "2.4.3"; }; letter_opener = { - dependencies = ["launchy"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1kzbmc686hfh4jznyckq6g40kn14nhb71znsjjm0rc13nb3n0c5l"; + sha256 = "1pcrdbxvp2x5six8fqn8gf09bn9rd3jga76ds205yph5m8fsda21"; type = "gem"; }; - version = "1.1.2"; + version = "1.4.1"; + }; + letter_opener_web = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "050x5cwqbxj2cydd2pzy9vfhmpgn1w6lfbwjaax1m1vpkn3xg9bv"; + type = "gem"; + }; + version = "1.3.0"; + }; + license_finder = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "092rwf1yjq1l63zbqanmbnbky8g5pj7c3g30mcqbyppbqrsflx80"; + type = "gem"; + }; + version = "2.1.0"; + }; + licensee = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "013wrp4sampgypx9ar48cv4ai487l2bg8a2b2z6srd77najf70gr"; + type = "gem"; + }; + version = "8.0.0"; }; listen = { dependencies = ["rb-fsevent" "rb-inotify"]; @@ -1496,21 +1268,20 @@ version = "1.7.1"; }; mail = { - dependencies = ["mime-types"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1nbg60h3cpnys45h7zydxwrl200p7ksvmrbxnwwbpaaf9vnf3znp"; + sha256 = "0c9vqfy0na9b5096i5i4qvrvhwamjnmajhgqi3kdsdfl8l6agmkp"; type = "gem"; }; - version = "2.6.3"; + version = "2.6.4"; }; mail_room = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0jpybhgw9yi50g422qvnwadn5jnj563vh70qaml5cxzdqxbd7fj1"; + sha256 = "00jaj42z6rhgpxprs7wb0a9gq33zsfalah3ddpynxldij5iz8mg0"; type = "gem"; }; - version = "0.6.1"; + version = "0.8.0"; }; method_source = { source = { @@ -1523,10 +1294,10 @@ mime-types = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0mhzsanmnzdshaba7gmsjwnv168r1yj8y0flzw88frw1cickrvw8"; + sha256 = "06lnv0w9j45llai5qhvc1m7w409j5lhnssdzkvv6yw49d632jxkz"; type = "gem"; }; - version = "1.25.1"; + version = "2.99.2"; }; mimemagic = { source = { @@ -1563,10 +1334,10 @@ multi_json = { source = { remotes = ["https://rubygems.org"]; - sha256 = "1rf3l4j3i11lybqzgq2jhszq7fh7gpmafjzd14ymp9cjfxqg596r"; + sha256 = "1wpc23ls6v2xbk3l1qncsbz16npvmw8p0b38l8czdzri18mp51xk"; type = "gem"; }; - version = "1.11.2"; + version = "1.12.1"; }; multi_xml = { source = { @@ -1616,14 +1387,6 @@ }; version = "3.0.1"; }; - netrc = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"; - type = "gem"; - }; - version = "0.11.0"; - }; newrelic_rpm = { source = { remotes = ["https://rubygems.org"]; @@ -1633,7 +1396,6 @@ version = "3.14.1.311"; }; nokogiri = { - dependencies = ["mini_portile2"]; source = { remotes = ["https://rubygems.org"]; sha256 = "11sbmpy60ynak6s3794q32lc99hs448msjy8rkp84ay7mq7zqspv"; @@ -1641,13 +1403,13 @@ }; version = "1.6.7.2"; }; - nprogress-rails = { + numerizer = { source = { remotes = ["https://rubygems.org"]; - sha256 = "1ylq2208i95661ba0p1ng2i38z4978ddwiidvpb614amfdq5pqvn"; + sha256 = "0vrk9jbv4p4dcz0wzr72wrf5kajblhc5l9qf7adbcwi4qvz9xv0h"; type = "gem"; }; - version = "0.1.6.7"; + version = "0.1.1"; }; oauth = { source = { @@ -1658,21 +1420,20 @@ version = "0.4.7"; }; oauth2 = { - dependencies = ["faraday" "jwt" "multi_json" "multi_xml" "rack"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "0zaa7qnvizv363apmxx9vxa8f6c6xy70z0jm0ydx38xvhxr8898r"; + sha256 = "0z25sx8i82wczzhv6xr4g3zi3ik6fr8qr9n7r96gd65fdlw5ka93"; type = "gem"; }; - version = "1.0.0"; + version = "1.2.0"; }; octokit = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0vmknh0vz1g734q32kgpxv0qwz9ifmnw2jfpd2w5rrk6xwq1k7a8"; + sha256 = "1hq47ck0z03vr3rzblyszihn7x2m81gv35chwwx0vrhf17nd27np"; type = "gem"; }; - version = "3.8.0"; + version = "4.3.0"; }; omniauth = { source = { @@ -1682,6 +1443,14 @@ }; version = "1.3.1"; }; + omniauth-auth0 = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0dhfl01519q1cp4w0ml481j1cg05g7qvam0x4ia9jhdz8yx6npfs"; + type = "gem"; + }; + version = "1.4.1"; + }; omniauth-azure-oauth2 = { dependencies = ["jwt" "omniauth" "omniauth-oauth2"]; source = { @@ -1737,13 +1506,12 @@ version = "1.0.1"; }; omniauth-google-oauth2 = { - dependencies = ["addressable" "jwt" "multi_json" "omniauth" "omniauth-oauth2"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1lm4fk6ig9vwzv7398qd861325g678sfr1iv2mm60xswl69964fi"; + sha256 = "1m6v2vm3h21ychd10wzkdhyhnrk9zhc1bgi4ahp5gwy00pggrppw"; type = "gem"; }; - version = "0.2.10"; + version = "0.4.1"; }; omniauth-kerberos = { dependencies = ["omniauth-multipassword" "timfel-krb5-auth"]; @@ -1784,10 +1552,10 @@ omniauth-saml = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0c7pypskq9y6wbl7c8gnp48j256snph11br3csgwvy9whjfisx65"; + sha256 = "0xs7v08s34s2bpyd3i8i8kj73zqb6wgn51ix3pmcwsifns0c8npr"; type = "gem"; }; - version = "1.4.2"; + version = "1.6.0"; }; omniauth-shibboleth = { dependencies = ["omniauth"]; @@ -1843,13 +1611,12 @@ version = "2.1.4"; }; parser = { - dependencies = ["ast"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "14db0gam24j04iprqz4m3hxygkb8h0plnbm0yk4k3lzq6j5wzcac"; + sha256 = "0fxcs83z28wxn6bphbq5q40c1y5ab8zl8ww17jwkbi032wf6iik6"; type = "gem"; }; - version = "2.2.3.0"; + version = "2.3.1.2"; }; pg = { source = { @@ -1859,14 +1626,21 @@ }; version = "0.18.4"; }; + pkg-config = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0lljiqnm0b4z6iy87lzapwrdfa6ps63x2z5zbs038iig8dqx2g0z"; + type = "gem"; + }; + version = "1.1.7"; + }; poltergeist = { - dependencies = ["capybara" "cliver" "multi_json" "websocket-driver"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "0ppm4isvbxm739508yjhvisq1iwp1q6h8dx4hkndj2krskavz4i9"; + sha256 = "1fnkly1ks31nf5cdks9jd5c5vynbanrr8pwp801qq2i8bg78rwc0"; type = "gem"; }; - version = "1.8.1"; + version = "1.9.0"; }; posix-spawn = { source = { @@ -1884,6 +1658,22 @@ }; version = "0.1.1"; }; + premailer = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0xhi427j99rgaxf5ga8rairicgbyc1bdky9ipbsw0sy0alv93346"; + type = "gem"; + }; + version = "1.8.6"; + }; + premailer-rails = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1h2ls42bnqirim2j1blwqa0dk5lhdh6qvczpqilm6n90c2zq3xwx"; + type = "gem"; + }; + version = "1.9.2"; + }; pry = { dependencies = ["coderay" "method_source" "slop"]; source = { @@ -1910,15 +1700,6 @@ }; version = "0.0.3.3"; }; - quiet_assets = { - dependencies = ["railties"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1q4azw4j1xsgd7qwcig110mfdn1fm0y34y87zw9j9v187xr401b1"; - type = "gem"; - }; - version = "1.0.3"; - }; rack = { source = { remotes = ["https://rubygems.org"]; @@ -1990,13 +1771,12 @@ version = "0.6.3"; }; rails = { - dependencies = ["actionmailer" "actionpack" "actionview" "activejob" "activemodel" "activerecord" "activesupport" "railties" "sprockets-rails"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "aa93c1b9eb8b535eee58280504e30237f88217699fe9bb016e458e5122eefa2e"; + sha256 = "033wfvqjzlzkm0nrqrjpxxrp0lwhfm8sjlxn5zdhxhkzmhibrnvn"; type = "gem"; }; - version = "4.2.5.2"; + version = "4.2.7"; }; rails-deprecated_sanitizer = { dependencies = ["activesupport"]; @@ -2026,21 +1806,20 @@ version = "1.0.3"; }; railties = { - dependencies = ["actionpack" "activesupport" "rake" "thor"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "cfff64cbc0e409341003c35fa2e576e6a8cd8259a9894d09f15c6123be73f146"; + sha256 = "0psnr9g436k2fkkjlhs7mq090i7vh0cvh7qwwrb8ppzbcr15hhab"; type = "gem"; }; - version = "4.2.5.2"; + version = "4.2.7"; }; rainbow = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0dsnzfjiih2w8npsjab3yx1ssmmvmgjkbxny0i9yzrdy7whfw7b4"; + sha256 = "11licivacvfqbjx2rwppi8z89qff2cgs67d4wyx42pc5fg7g9f00"; type = "gem"; }; - version = "2.0.0"; + version = "2.1.0"; }; raindrops = { source = { @@ -2058,14 +1837,6 @@ }; version = "10.5.0"; }; - raphael-rails = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0sjiaymvfn4al5dr1pza5i142byan0fxnj4rymziyql2bzvdm2bc"; - type = "gem"; - }; - version = "2.1.2"; - }; rb-fsevent = { source = { remotes = ["https://rubygems.org"]; @@ -2102,13 +1873,12 @@ version = "3.12.2"; }; recaptcha = { - dependencies = ["json"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "190qqklirmi31s6ih7png4h9xmx1p5h2n5fi45z90y8hsp5w1sh1"; + sha256 = "1pppfgica4629i8gbji6pnh681wjf03m6m1ix2ficpnqg2z7gl9n"; type = "gem"; }; - version = "1.0.2"; + version = "3.0.0"; }; redcarpet = { source = { @@ -2121,10 +1891,10 @@ RedCloth = { source = { remotes = ["https://rubygems.org"]; - sha256 = "06pahxyrckhgb7alsxwhhlx1ib2xsx33793finj01jk8i054bkxl"; + sha256 = "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy"; type = "gem"; }; - version = "4.2.9"; + version = "4.3.2"; }; redis = { source = { @@ -2191,10 +1961,10 @@ request_store = { source = { remotes = ["https://rubygems.org"]; - sha256 = "01rxi2hw84y133z0r91jns4aaywd8d83wjq0xgb42iaicf0a90p9"; + sha256 = "1vw3vkgnpbpgzc1b4cg2ifn3rb5w7bvk62x9jfy9laz40816nvkn"; type = "gem"; }; - version = "1.2.1"; + version = "1.3.0"; }; rerun = { dependencies = ["listen"]; @@ -2214,38 +1984,29 @@ }; version = "2.1.1"; }; - rest-client = { - dependencies = ["http-cookie" "mime-types" "netrc"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1m8z0c4yf6w47iqz6j2p7x1ip4qnnzvhdph9d5fgx081cvjly3p7"; - type = "gem"; - }; - version = "1.8.0"; - }; rinku = { source = { remotes = ["https://rubygems.org"]; - sha256 = "1jh6nys332brph55i6x6cil6swm086kxjw34wq131nl6mwryqp7b"; + sha256 = "11cakxzp7qi04d41hbqkh92n52mm4z2ba8sqyhxbmfi4kypmls9y"; type = "gem"; }; - version = "1.7.3"; + version = "2.0.0"; }; rotp = { source = { remotes = ["https://rubygems.org"]; - sha256 = "1nzsc9hfxijnyzjbv728ln9dm80bc608chaihjdk63i2wi4m529g"; + sha256 = "1w8d6svhq3y9y952r8cqirxvdx12zlkb7zxjb44bcbidb2sisy4d"; type = "gem"; }; - version = "2.1.1"; + version = "2.1.2"; }; rouge = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0wp8as9ypdy18kdj9h70kny1rdfq71mr8cj2bpahr9vxjjvjasqz"; + sha256 = "07nda5cfrxxizcd4ff7ad8z3i0j9jaff8q7q6ddpxcj0s80nvvpi"; type = "gem"; }; - version = "1.10.1"; + version = "2.0.5"; }; rqrcode = { dependencies = ["chunky_png"]; @@ -2266,66 +2027,76 @@ version = "0.1.7"; }; rspec = { - dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1bn5zs71agc0zyns2r3c8myi5bxw3q7xnzp7f3v5b7hbil1qym4r"; + sha256 = "16g3mmih999f0b6vcz2c3qsc7ks5zy4lj1rzjh8hf6wk531nvc6s"; type = "gem"; }; - version = "3.3.0"; + version = "3.5.0"; }; rspec-core = { - dependencies = ["rspec-support"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "0xw5qi936j6nz9fixi2mwy03f406761cd72bzyvd61pr854d7hy1"; + sha256 = "03m0pn5lwlix094khfwlv50n963p75vjsg6w2g0b3hqcvvlch1mx"; type = "gem"; }; - version = "3.3.2"; + version = "3.5.0"; }; rspec-expectations = { - dependencies = ["diff-lcs" "rspec-support"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1d0b5hpkxlr9f3xpsbhvl3irnk4smmycx2xnmc8qv3pqaa7mb7ah"; + sha256 = "0bbqfrb1x8gmwf8x2xhhwvvlhwbbafq4isbvlibxi6jk602f09gs"; type = "gem"; }; - version = "3.3.1"; + version = "3.5.0"; }; rspec-mocks = { - dependencies = ["diff-lcs" "rspec-support"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1lfbzscmpyixlbapxmhy2s69596vs1z00lv590l51hgdw70z92vg"; + sha256 = "0nl3ksivh9wwrjjd47z5dggrwx40v6gpb3a0gzbp1gs06a5dmk24"; type = "gem"; }; - version = "3.3.2"; + version = "3.5.0"; }; rspec-rails = { - dependencies = ["actionpack" "activesupport" "railties" "rspec-core" "rspec-expectations" "rspec-mocks" "rspec-support"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "0m66n9p3a7d3fmrzkbh8312prb6dhrgmp53g1amck308ranasv2a"; + sha256 = "0zzd75v8vpa1r30j3hsrprza272rcx54hb0klwpzchr9ch6c9z2a"; type = "gem"; }; - version = "3.3.3"; + version = "3.5.0"; + }; + rspec-retry = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0izvxab7jvk25kaprk0i72asjyh1ip3cm70bgxlm8lpid35qjar6"; + type = "gem"; + }; + version = "0.4.5"; }; rspec-support = { source = { remotes = ["https://rubygems.org"]; - sha256 = "1cyagig8slxjas8mbg5f8bl240b8zgr8mnjsvrznag1fwpkh4h27"; + sha256 = "10vf3k3d472y573mag2kzfsfrf6rv355s13kadnpryk8d36yq5r0"; type = "gem"; }; - version = "3.3.0"; + version = "3.5.0"; }; rubocop = { - dependencies = ["astrolabe" "parser" "powerpack" "rainbow" "ruby-progressbar" "tins"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1grqda2fdknm43zyagh8gcmnhjkypyfw98q92hmvprprwghkq2sg"; + sha256 = "02adr908a9l8nhdfjz137i20w1dv8mbfiamy0m9z9q0fvslfdxly"; type = "gem"; }; - version = "0.35.1"; + version = "0.41.2"; + }; + rubocop-rspec = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "11701iw858vkxmb6khc9apmagz3lmnbdxm8irsxsgg57d0p8bs8p"; + type = "gem"; + }; + version = "1.5.0"; }; ruby-fogbugz = { dependencies = ["crack"]; @@ -2339,36 +2110,26 @@ ruby-progressbar = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0hynaavnqzld17qdx9r7hfw00y16ybldwq730zrqfszjwgi59ivi"; + sha256 = "1qzc7s7r21bd7ah06kskajc2bjzkr9y0v5q48y0xwh2l55axgplm"; type = "gem"; }; - version = "1.7.5"; + version = "1.8.1"; }; ruby-saml = { source = { remotes = ["https://rubygems.org"]; - sha256 = "151jbak16y87dbj3ma2nc03rh37z7lixcwgaqahncq80rgnv45a8"; + sha256 = "0qhma3cdmi9acpsn6r3x5mjjgfqxkhzxgy2pd3bc6rddghpa3x5l"; type = "gem"; }; - version = "1.1.1"; - }; - ruby2ruby = { - dependencies = ["ruby_parser" "sexp_processor"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1kmc0503s9mqnjyypx51wsi6zz9zj550ch43rag23wpj4qd6i6pm"; - type = "gem"; - }; - version = "2.2.0"; + version = "1.3.0"; }; ruby_parser = { - dependencies = ["sexp_processor"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1rip6075b4k5a7s8w2klwc3jaqx31h69k004ac5nhl8y0ja92qvz"; + sha256 = "0wr15wjkvq4wcm2ia3ajfxqwwd5szzpvnrbbq3c2bnd9g7ghqq0c"; type = "gem"; }; - version = "3.7.2"; + version = "3.8.2"; }; rubyntlm = { source = { @@ -2386,6 +2147,14 @@ }; version = "0.2.0"; }; + rubyzip = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "10a9p1m68lpn8pwqp972lv61140flvahm3g9yzbxzjks2z3qlb2s"; + type = "gem"; + }; + version = "1.2.0"; + }; rufus-scheduler = { source = { remotes = ["https://rubygems.org"]; @@ -2397,10 +2166,10 @@ rugged = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0v0cvdw8cgy1hf5h3cx796zpxhbad8d5cm50nykyhwjc00q80zrr"; + sha256 = "0fnldbha5npdapij6xhrm7qj5qicnswrcfxa5dbk7wjaq482gh6r"; type = "gem"; }; - version = "0.24.0b13"; + version = "0.24.0"; }; safe_yaml = { source = { @@ -2422,28 +2191,34 @@ sass = { source = { remotes = ["https://rubygems.org"]; - sha256 = "04rpdcp258arh2wgdk9shbqnzd6cbbbpi3wpi9a0wby8awgpxmyf"; + sha256 = "0dkj6v26fkg1g0majqswwmhxva7cd6p3psrhdlx93qal72dssywy"; type = "gem"; }; - version = "3.4.20"; + version = "3.4.22"; }; sass-rails = { - dependencies = ["railties" "sass" "sprockets" "sprockets-rails" "tilt"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1f6357vw944w2ayayqmz8ai9myl6xbnry06sx5b5ms4r9lny8hj8"; + sha256 = "1ag66qa1f4agghdmnmn199s4sp7x54msa3abs31vl89ncbdf933i"; type = "gem"; }; - version = "5.0.4"; + version = "5.0.5"; }; sawyer = { - dependencies = ["addressable" "faraday"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "0fk43bzwn816qj1ksiicm2i1kmzv5675cmnvk57kmfmi4rfsyjpy"; + sha256 = "1cn48ql00mf1ag9icmfpj7g7swh7mdn7992ggynjqbw1gh15bs3j"; type = "gem"; }; - version = "0.6.0"; + version = "0.7.0"; + }; + scss_lint = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0q6yankh4ay4fqz7s19p2r2nqhzv93gihc5c6xnqka3ch1z6v9fv"; + type = "gem"; + }; + version = "0.47.1"; }; sdoc = { dependencies = ["json" "rdoc"]; @@ -2455,13 +2230,12 @@ version = "0.3.20"; }; seed-fu = { - dependencies = ["activerecord" "activesupport"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "11xja82yxir1kwccrzng29h7w911i9j0xj2y7y949yqnw91v12vw"; + sha256 = "1nkp1pvkdydclbl2v4qf9cixmiycvlqnrgxd61sv9r85spb01z3p"; type = "gem"; }; - version = "2.3.5"; + version = "2.3.6"; }; select2-rails = { dependencies = ["thor"]; @@ -2475,10 +2249,10 @@ sentry-raven = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0iqnwfmf6rnpgrvl3c8gh2gkix91nhm21j5qf389g4mi2rkc0ky8"; + sha256 = "0fjfq3hkfv3a415mk6cjwknnxg9d71x0b8x7szgbwhyqa8ahj3j3"; type = "gem"; }; - version = "0.15.6"; + version = "1.1.0"; }; settingslogic = { source = { @@ -2491,10 +2265,10 @@ sexp_processor = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0gxlcpg81wfjf5gpggf8h6l2dbq3ikgavbrr2yfw3m2vqy88yjg2"; + sha256 = "0gs57v3gvbh83cknzkq20giqygdzhhbm7s7i7kxramf945diyfln"; type = "gem"; }; - version = "4.6.0"; + version = "4.7.0"; }; sham_rack = { dependencies = ["rack"]; @@ -2515,13 +2289,12 @@ version = "2.8.0"; }; sidekiq = { - dependencies = ["concurrent-ruby" "connection_pool" "json" "redis"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1x7jfc2va0x6fcfffdf0wdiyk4krjw8053jzwffa63wkqr5jvg3y"; + sha256 = "0j0yz9fv79d7sasz7lsrb9fnymxg58jpykgr58r73nv2v8nsx1nm"; type = "gem"; }; - version = "4.0.1"; + version = "4.1.4"; }; sidekiq-cron = { dependencies = ["redis-namespace" "rufus-scheduler" "sidekiq"]; @@ -2541,13 +2314,12 @@ version = "0.1.9"; }; simplecov = { - dependencies = ["docile" "json" "simplecov-html"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1q2iq2vgrdvvla5y907gkmqx6ry2qvnvc7a90hlcbwgp1w0sv6z4"; + sha256 = "1p0jhxwsv2ksk4hmp8qbhnr325z9fhs26z9y8in5v5c49y331qw2"; type = "gem"; }; - version = "0.10.0"; + version = "0.11.2"; }; simplecov-html = { source = { @@ -2558,13 +2330,12 @@ version = "0.10.0"; }; sinatra = { - dependencies = ["rack" "rack-protection" "tilt"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1hhmwqc81ram7lfwwziv0z70jh92sj1m7h7s9fr0cn2xq8mmn8l7"; + sha256 = "1b81kbr65mmcl9cdq2r6yc16wklyp798rxkgmm5pr9fvsj7jwmxp"; type = "gem"; }; - version = "1.4.6"; + version = "1.4.7"; }; six = { source = { @@ -2582,15 +2353,6 @@ }; version = "1.2.1"; }; - slim = { - dependencies = ["temple" "tilt"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1szs71hh0msm5gj6qbcxw44m3hqnwybx4yh02scwixnwg576058k"; - type = "gem"; - }; - version = "3.0.6"; - }; slop = { source = { remotes = ["https://rubygems.org"]; @@ -2617,13 +2379,21 @@ }; version = "0.2.1"; }; + spinach-rerun-reporter = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0fkmp99cpxrdzkjrxw9y9qp8qxk5d1arpmmlg5njx40rlcvx002k"; + type = "gem"; + }; + version = "0.0.2"; + }; spring = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0xvz2x6nvza5i53p7mddnf11j2wshqmbaphi6ngd6nar8v35y0k1"; + sha256 = "17clm28dp140rw3761z9g8kjnnlpv9nv4flvpryhaasihjvjgfy1"; type = "gem"; }; - version = "1.3.6"; + version = "1.7.2"; }; spring-commands-rspec = { dependencies = ["spring"]; @@ -2635,13 +2405,12 @@ version = "1.0.4"; }; spring-commands-spinach = { - dependencies = ["spring"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "138jardqyj96wz68njdgy55qjbpl2d0g8bxbkz97ndaz3c2bykv9"; + sha256 = "12qa60sclhnclwi6lskhdgr1l007bca831vhp35f06hq1zmimi2x"; type = "gem"; }; - version = "1.0.0"; + version = "1.1.0"; }; spring-commands-teaspoon = { dependencies = ["spring"]; @@ -2653,22 +2422,20 @@ version = "0.0.2"; }; sprockets = { - dependencies = ["hike" "multi_json" "rack" "tilt"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "15818683yz27w4hgywccf27n91azy9a4nmb5qkklzb08k8jw9gp3"; + sha256 = "0flynmaaxa53pv15x7kcxr7z6h1hn7ifrxk13dfhhvh6h38jnzkv"; type = "gem"; }; - version = "2.12.4"; + version = "3.6.3"; }; sprockets-rails = { - dependencies = ["actionpack" "activesupport" "sprockets"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1vsl6ryxdjpp97nl4ghhk1v6p50zh3sx9qv81bhmlffc234r91wn"; + sha256 = "1sak0as7ka964f6zjb1w8hkvfkkbf55kpcyvh7k6nyrb6pqnwmnf"; type = "gem"; }; - version = "2.3.3"; + version = "3.1.1"; }; state_machines = { source = { @@ -2679,22 +2446,20 @@ version = "0.4.0"; }; state_machines-activemodel = { - dependencies = ["activemodel" "state_machines"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1bshcm53v2vfpapvhws1h0dq1h4f3p6bvpdkjpydb52a3m0w2z0y"; + sha256 = "0p6560jsb4flapd1vbc50bqjk6dzykkwbmyivchyjh5ncynsdb8v"; type = "gem"; }; - version = "0.3.0"; + version = "0.4.0"; }; state_machines-activerecord = { - dependencies = ["activerecord" "state_machines-activemodel"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "10dplkn4cm49xby8s0sn7wxww4hnxi4dgikfsmhp1rbsa24d76vx"; + sha256 = "0x5wx1s2i3qc4p2knkf2n9h8b49pla9rjidkwxqzi781qm40wdxx"; type = "gem"; }; - version = "0.3.0"; + version = "0.4.0"; }; stringex = { source = { @@ -2704,6 +2469,14 @@ }; version = "2.5.2"; }; + sys-filesystem = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "092wj7936i5inzafi09wqh5c8dbak588q21k652dsrdjf5qi10zq"; + type = "gem"; + }; + version = "1.1.6"; + }; systemu = { source = { remotes = ["https://rubygems.org"]; @@ -2722,13 +2495,12 @@ version = "1.0.2"; }; teaspoon = { - dependencies = ["railties"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "0cprz18vgf0jgcggcxf4pwx8jcwbiyj1p0dnck5aavlvaxaic58s"; + sha256 = "1xz5f1w8jm2fg1g194kf17gh36imd7sgs9cx0adqx1l22p7jrkvv"; type = "gem"; }; - version = "1.0.2"; + version = "1.1.5"; }; teaspoon-jasmine = { dependencies = ["teaspoon"]; @@ -2742,27 +2514,10 @@ temple = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0ysraljv7lkb04z5vdyrkijab7j1jzj1mgz4bj82744dp7d0rhb0"; - type = "gem"; - }; - version = "0.7.6"; - }; - term-ansicolor = { - dependencies = ["tins"]; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0ydbbyjmk5p7fsi55ffnkq79jnfqx65c3nj8d9rpgl6sw85ahyys"; + sha256 = "0xlf1if32xj14mkfwh8nxy3zzjzd9lipni0v2bghknp2kfc1hcz6"; type = "gem"; }; - version = "1.3.2"; - }; - terminal-table = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1s6qyj9ir1agbbi32li9c0c34dcl0klyxqif6mxy0dbvq7kqfp8f"; - type = "gem"; - }; - version = "1.5.2"; + version = "0.7.7"; }; test_after_commit = { dependencies = ["activerecord"]; @@ -2774,13 +2529,12 @@ version = "0.4.2"; }; thin = { - dependencies = ["daemons" "eventmachine" "rack"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1pyc602sa8fqwjyssn9yvf3fqrr14jk7hj9hsjlan1mq4zvim1lf"; + sha256 = "1dq9q7qyjyg4444bmn12r2s0mir8dqnvc037y0zidhbyaavrv95q"; type = "gem"; }; - version = "1.6.4"; + version = "1.7.0"; }; thor = { source = { @@ -2801,10 +2555,18 @@ tilt = { source = { remotes = ["https://rubygems.org"]; - sha256 = "00sr3yy7sbqaq7cb2d2kpycajxqf1b1wr1yy33z4bnzmqii0b0ir"; + sha256 = "0lgk8bfx24959yq1cn55php3321wddw947mgj07bxfnwyipy9hqf"; type = "gem"; }; - version = "1.4.1"; + version = "2.0.5"; + }; + timecop = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0vwbkwqyxhavzvr1820hqwz43ylnfcf6w4x6sag0nghi44sr9kmx"; + type = "gem"; + }; + version = "0.8.1"; }; timfel-krb5-auth = { source = { @@ -2823,14 +2585,6 @@ }; version = "1.10.1"; }; - tins = { - source = { - remotes = ["https://rubygems.org"]; - sha256 = "02qarvy17nbwvslfgqam8y6y7479cwmb1a6di9z18hzka4cf90hz"; - type = "gem"; - }; - version = "1.6.0"; - }; turbolinks = { dependencies = ["coffee-rails"]; source = { @@ -2858,6 +2612,14 @@ }; version = "1.2.2"; }; + u2f = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0lsm1hvwcaa9sq13ab1l1zjk0fgcy951ay11v2acx0h6q1iv21vr"; + type = "gem"; + }; + version = "0.2.1"; + }; uglifier = { dependencies = ["execjs" "json"]; source = { @@ -2887,19 +2649,26 @@ unf_ext = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0ly2ms6c3irmbr1575ldyh52bz2v0lzzr2gagf0p526k12ld2n5b"; + sha256 = "04d13bp6lyg695x94whjwsmzc2ms72d94vx861nx1y40k3817yp8"; type = "gem"; }; - version = "0.0.7.1"; + version = "0.0.7.2"; + }; + unicode-display_width = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "194d70pfxq4d7rrk0vsk1dvj46ns2f350308khi7q5cvnmg3h1xs"; + type = "gem"; + }; + version = "1.1.0"; }; unicorn = { - dependencies = ["kgio" "rack" "raindrops"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1kpg2vikx2hxdyrl45bqcr89a0w59hfw7yn7xh87bmlczi34xds4"; + sha256 = "02xgk7gajnp8zqd2wvk1hbbwz7czlbpk29ahs9ph0jprsssnzzrv"; type = "gem"; }; - version = "4.8.3"; + version = "4.9.0"; }; unicorn-worker-killer = { dependencies = ["get_process_mem" "unicorn"]; @@ -2944,23 +2713,29 @@ }; version = "1.0.5"; }; + vmstat = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "02yf9y7050zk1k7mn7dkp81wwa220kpkpdnlv4bg5mp65w33g5jf"; + type = "gem"; + }; + version = "2.1.1"; + }; warden = { - dependencies = ["rack"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1iyxw1ms3930dh7vcrfyi4ifpdbkfsr8k7fzjryva0r7k3c71gb7"; + sha256 = "04gpmnvkp312wxmsvvbq834iyab58vjmh6w4x4qpgh4p1lzkiq1l"; type = "gem"; }; - version = "1.2.4"; + version = "1.2.6"; }; web-console = { - dependencies = ["activemodel" "binding_of_caller" "railties" "sprockets-rails"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "13rwps8m76j45iqhggm810j78i8bg4nqzgi8k7amxplik2zm5blf"; + sha256 = "0f8mgdjnkwb2gmnd73hnlx8p2clzvpz007alhsglqgylpj6m20jk"; type = "gem"; }; - version = "2.2.1"; + version = "2.3.0"; }; webmock = { dependencies = ["addressable" "crack"]; diff --git a/pkgs/applications/version-management/gitlab/nulladapter.patch b/pkgs/applications/version-management/gitlab/nulladapter.patch index 0d5c1749e83f..92a3cb55e4d5 100644 --- a/pkgs/applications/version-management/gitlab/nulladapter.patch +++ b/pkgs/applications/version-management/gitlab/nulladapter.patch @@ -1,29 +1,70 @@ -index acd1874..f493451 100644 +diff --git a/Gemfile b/Gemfile +index 92e666c..f97c991 100644 --- a/Gemfile +++ b/Gemfile -@@ -318,3 +318,5 @@ gem 'oauth2', '~> 1.0.0' +@@ -117,7 +117,7 @@ gem 'rouge', '~> 2.0' - # Soft deletion - gem "paranoia", "~> 2.0" + # See https://groups.google.com/forum/#!topic/ruby-security-ann/aSbgDiwb24s + # and https://groups.google.com/forum/#!topic/ruby-security-ann/Dy7YiKb_pMM +-gem 'nokogiri', '~> 1.6.7', '>= 1.6.7.2' ++gem 'nokogiri', '~> 1.6.7', '>= 1.6.7.2', '< 1.6.8' + + # Diffs + gem 'diffy', '~> 3.0.3' +@@ -349,3 +349,5 @@ gem 'health_check', '~> 2.1.0' + # System information + gem 'vmstat', '~> 2.1.1' + gem 'sys-filesystem', '~> 1.1.6' + +gem "activerecord-nulldb-adapter" -index 14d2c76..7a010f0 100644 +diff --git a/Gemfile.lock b/Gemfile.lock +index e2b3d55..23a5454 100644 --- a/Gemfile.lock +++ b/Gemfile.lock -@@ -34,6 +34,8 @@ GEM - activesupport (= 4.2.5.1) +@@ -32,6 +32,8 @@ GEM + activemodel (= 4.2.7) + activesupport (= 4.2.7) arel (~> 6.0) - activerecord-deprecated_finders (1.0.4) -+ activerecord-nulldb-adapter (0.3.2) ++ activerecord-nulldb-adapter (0.3.3) + activerecord (>= 2.0.0) - activerecord-session_store (0.1.2) - actionpack (>= 4.0.0, < 5) - activerecord (>= 4.0.0, < 5) -@@ -880,6 +882,7 @@ DEPENDENCIES - RedCloth (~> 4.2.9) - ace-rails-ap (~> 2.0.1) - activerecord-deprecated_finders (~> 1.0.3) + activerecord-session_store (1.0.0) + actionpack (>= 4.0, < 5.1) + activerecord (>= 4.0, < 5.1) +@@ -390,7 +392,7 @@ GEM + method_source (0.8.2) + mime-types (2.99.2) + mimemagic (0.3.0) +- mini_portile2 (2.1.0) ++ mini_portile2 (2.0.0) + minitest (5.7.0) + mousetrap-rails (1.4.6) + multi_json (1.12.1) +@@ -401,9 +403,8 @@ GEM + net-ldap (0.12.1) + net-ssh (3.0.1) + newrelic_rpm (3.14.1.311) +- nokogiri (1.6.8) +- mini_portile2 (~> 2.1.0) +- pkg-config (~> 1.1.7) ++ nokogiri (1.6.7.2) ++ mini_portile2 (~> 2.0.0.rc2) + numerizer (0.1.1) + oauth (0.4.7) + oauth2 (1.2.0) +@@ -803,6 +803,7 @@ PLATFORMS + DEPENDENCIES + RedCloth (~> 4.3.2) + ace-rails-ap (~> 4.0.2) + activerecord-nulldb-adapter - activerecord-session_store (~> 0.1.0) + activerecord-session_store (~> 1.0.0) acts-as-taggable-on (~> 3.4) addressable (~> 2.3.8) +@@ -894,7 +895,7 @@ DEPENDENCIES + nested_form (~> 0.3.2) + net-ssh (~> 3.0.1) + newrelic_rpm (~> 3.14) +- nokogiri (~> 1.6.7, >= 1.6.7.2) ++ nokogiri (~> 1.6.7, >= 1.6.7.2, < 1.6.8) + oauth2 (~> 1.2.0) + octokit (~> 4.3.0) + omniauth (~> 1.3.1) diff --git a/pkgs/applications/version-management/gitlab/remove-hardcoded-locations.patch b/pkgs/applications/version-management/gitlab/remove-hardcoded-locations.patch index fbf5a05fc4e6..a8a0542a8823 100644 --- a/pkgs/applications/version-management/gitlab/remove-hardcoded-locations.patch +++ b/pkgs/applications/version-management/gitlab/remove-hardcoded-locations.patch @@ -1,8 +1,8 @@ diff --git a/config/environments/production.rb b/config/environments/production.rb -index 9095266..694a4c5 100644 +index a9d8ac4..85f13f5 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb -@@ -67,10 +67,10 @@ Rails.application.configure do +@@ -70,14 +70,16 @@ Rails.application.configure do config.action_mailer.delivery_method = :sendmail # Defaults to: @@ -17,11 +17,17 @@ index 9095266..694a4c5 100644 config.action_mailer.perform_deliveries = true config.action_mailer.raise_delivery_errors = true + config.eager_load = true + + config.allow_concurrency = false ++ ++ config.active_record.dump_schema_after_migration = false + end diff --git a/config/gitlab.yml.example b/config/gitlab.yml.example -index 05f127d..6a4ae68 100644 +index 1470a6e..1b2660d 100644 --- a/config/gitlab.yml.example +++ b/config/gitlab.yml.example -@@ -423,7 +423,7 @@ production: &base +@@ -476,7 +476,7 @@ production: &base # CAUTION! # Use the default values unless you really know what you are doing git: @@ -30,6 +36,28 @@ index 05f127d..6a4ae68 100644 # The next value is the maximum memory size grit can use # Given in number of bytes per git object (e.g. a commit) # This value can be increased if you have very large commits +diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb +index 86f5521..3bf006b 100644 +--- a/config/initializers/1_settings.rb ++++ b/config/initializers/1_settings.rb +@@ -192,7 +192,7 @@ Settings.gitlab['user'] ||= 'git' + Settings.gitlab['user_home'] ||= begin + Etc.getpwnam(Settings.gitlab['user']).dir + rescue ArgumentError # no user configured +- '/home/' + Settings.gitlab['user'] ++ '/homeless-shelter' + end + Settings.gitlab['time_zone'] ||= nil + Settings.gitlab['signup_enabled'] ||= true if Settings.gitlab['signup_enabled'].nil? +@@ -350,7 +350,7 @@ Settings.backup['upload']['encryption'] ||= nil + # + Settings['git'] ||= Settingslogic.new({}) + Settings.git['max_size'] ||= 20971520 # 20.megabytes +-Settings.git['bin_path'] ||= '/usr/bin/git' ++Settings.git['bin_path'] ||= 'git' + Settings.git['timeout'] ||= 10 + + # Important: keep the satellites.path setting until GitLab 9.0 at diff --git a/lib/gitlab/logger.rb b/lib/gitlab/logger.rb index 59b2114..4f4a39a 100644 --- a/lib/gitlab/logger.rb @@ -72,7 +100,7 @@ index be8fcc7..7642d74 100644 end end diff --git a/lib/tasks/gitlab/check.rake b/lib/tasks/gitlab/check.rake -index d59872d..0b8007f 100644 +index 60f4636..157641f 100644 --- a/lib/tasks/gitlab/check.rake +++ b/lib/tasks/gitlab/check.rake @@ -223,7 +223,7 @@ namespace :gitlab do @@ -83,23 +111,22 @@ index d59872d..0b8007f 100644 + log_path = ENV["GITLAB_LOG_PATH"] if File.writable?(log_path) - puts "yes".green -@@ -263,10 +263,12 @@ namespace :gitlab do + puts "yes".color(:green) +@@ -263,10 +263,11 @@ namespace :gitlab do def check_uploads print "Uploads directory setup correctly? ... " - unless File.directory?(Rails.root.join('public/uploads')) + uploads_dir = ENV['GITLAB_UPLOADS_PATH'] || Rails.root.join('public/uploads') -+ + unless File.directory?(uploads_dir) - puts "no".red + puts "no".color(:red) try_fixing_it( - "sudo -u #{gitlab_user} mkdir #{Rails.root}/public/uploads" + "sudo -u #{gitlab_user} mkdir #{uploads_dir}" ) for_more_information( see_installation_guide_section "GitLab" -@@ -275,7 +277,7 @@ namespace :gitlab do +@@ -275,7 +276,7 @@ namespace :gitlab do return end -- cgit 1.4.1 From d8fd06641ac9b7ce131afd5eaa626d60c8645b21 Mon Sep 17 00:00:00 2001 From: Franz Pletz Date: Thu, 4 Aug 2016 02:08:26 +0200 Subject: gitlab module: split up gitlab-runner script The name gitlab-runner clashes with a component of Gitlab CI with the same name and only confuses people. It's now called gitlab-bundle and a convenience-script gitlab-rake for easier invocation of rake tasks was added. This was the primary use case of gitlab-runner. --- nixos/doc/manual/release-notes/rl-1609.xml | 7 ++++++- nixos/modules/services/misc/gitlab.nix | 18 ++++++++++-------- nixos/modules/services/misc/gitlab.xml | 14 +++++++------- 3 files changed, 23 insertions(+), 16 deletions(-) (limited to 'nixos/modules') diff --git a/nixos/doc/manual/release-notes/rl-1609.xml b/nixos/doc/manual/release-notes/rl-1609.xml index 8dbf03ee42b4..7a85d5cd5cbc 100644 --- a/nixos/doc/manual/release-notes/rl-1609.xml +++ b/nixos/doc/manual/release-notes/rl-1609.xml @@ -42,10 +42,15 @@ following incompatible changes: - Redis now binds to 127.0.0.1 only instead of listening to all network interfaces. This is the default + Redis now binds to 127.0.0.1 only instead of listening to all network interfaces. This is the default behavior of Redis 3.2 + + Gitlab's maintainence script gitlab-runner was removed and split up into the more clearer + gitlab-run and gitlab-rake scripts because gitlab-runner is a component of Gitlab CI. + + diff --git a/nixos/modules/services/misc/gitlab.nix b/nixos/modules/services/misc/gitlab.nix index 46af78d58a17..ac2e94c25c33 100644 --- a/nixos/modules/services/misc/gitlab.nix +++ b/nixos/modules/services/misc/gitlab.nix @@ -106,20 +106,22 @@ let unicornConfig = builtins.readFile ./defaultUnicornConfig.rb; - gitlab-runner = pkgs.stdenv.mkDerivation rec { - name = "gitlab-runner"; + gitlab-rake = pkgs.stdenv.mkDerivation rec { + name = "gitlab-rake"; buildInputs = [ cfg.packages.gitlab cfg.packages.gitlab.env pkgs.makeWrapper ]; phases = "installPhase fixupPhase"; buildPhase = ""; installPhase = '' mkdir -p $out/bin - makeWrapper ${cfg.packages.gitlab.env}/bin/bundle $out/bin/gitlab-runner \ + makeWrapper ${cfg.packages.gitlab.env}/bin/bundle $out/bin/gitlab-bundle \ ${concatStrings (mapAttrsToList (name: value: "--set ${name} '${value}' ") gitlabEnv)} \ --set GITLAB_CONFIG_PATH '${cfg.statePath}/config' \ --set PATH '${pkgs.nodejs}/bin:${pkgs.gzip}/bin:${config.services.postgresql.package}/bin:$PATH' \ --set RAKEOPT '-f ${cfg.packages.gitlab}/share/gitlab/Rakefile' \ --run 'cd ${cfg.packages.gitlab}/share/gitlab' - ''; + makeWrapper $out/bin/gitlab-bundle $out/bin/gitlab-rake \ + --add-flags "exec rake" + ''; }; smtpSettings = pkgs.writeText "gitlab-smtp-settings.rb" '' @@ -331,7 +333,7 @@ in { config = mkIf cfg.enable { - environment.systemPackages = [ pkgs.git gitlab-runner cfg.packages.gitlab-shell ]; + environment.systemPackages = [ pkgs.git gitlab-rake cfg.packages.gitlab-shell ]; assertions = [ { assertion = cfg.databasePassword != ""; @@ -480,14 +482,14 @@ in { touch "${cfg.statePath}/db-created" # The gitlab:setup task is horribly broken somehow, these two tasks will do the same for setting up the initial database - ${gitlab-runner}/bin/gitlab-runner exec rake db:migrate RAILS_ENV=production - ${gitlab-runner}/bin/gitlab-runner exec rake db:seed_fu RAILS_ENV=production \ + ${gitlab-rake}/bin/gitlab-rake db:migrate RAILS_ENV=production + ${gitlab-rake}/bin/gitlab-rake db:seed_fu RAILS_ENV=production \ GITLAB_ROOT_PASSWORD="${cfg.initialRootPassword}" GITLAB_ROOT_EMAIL="${cfg.initialRootEmail}"; fi fi # Always do the db migrations just to be sure the database is up-to-date - ${gitlab-runner}/bin/gitlab-runner exec rake db:migrate RAILS_ENV=production + ${gitlab-rake}/bin/gitlab-rake db:migrate RAILS_ENV=production # Change permissions in the last step because some of the # intermediary scripts like to create directories as root. diff --git a/nixos/modules/services/misc/gitlab.xml b/nixos/modules/services/misc/gitlab.xml index b630fe421130..30bc39d25683 100644 --- a/nixos/modules/services/misc/gitlab.xml +++ b/nixos/modules/services/misc/gitlab.xml @@ -80,21 +80,21 @@ options for the services.gitlab module.
Maintenance -You can run all Gitlab related commands like rake tasks with -gitlab-runner which will be available on the system -when gitlab is enabled. You will have to run the commands as the user that -you configured to run gitlab. +You can run Gitlab's rake tasks with gitlab-rake +which will be available on the system when gitlab is enabled. You will +have to run the command as the user that you configured to run gitlab +with. -For instance, to backup a Gitlab instance: +For example, to backup a Gitlab instance: -$ sudo -u git -H gitlab-runner exec rake gitlab:backup:create +$ sudo -u git -H gitlab-rake gitlab:backup:create A list of all availabe rake tasks can be obtained by running: -$ sudo -u git -H gitlab-runner exec rake -T +$ sudo -u git -H gitlab-rake -T -- cgit 1.4.1 From 8a8971788c47f4b2f5173cd5b71082fdfd79bf49 Mon Sep 17 00:00:00 2001 From: Franz Pletz Date: Thu, 4 Aug 2016 02:23:08 +0200 Subject: gitlab module: update documentation --- nixos/modules/services/misc/gitlab.xml | 49 +++++++++++++++++----------------- 1 file changed, 25 insertions(+), 24 deletions(-) (limited to 'nixos/modules') diff --git a/nixos/modules/services/misc/gitlab.xml b/nixos/modules/services/misc/gitlab.xml index 30bc39d25683..a8147b3a74f9 100644 --- a/nixos/modules/services/misc/gitlab.xml +++ b/nixos/modules/services/misc/gitlab.xml @@ -14,29 +14,22 @@ /run/gitlab/gitlab-workhorse.socket. You need to configure a webserver to proxy HTTP requests to the socket. -For instance, this could be used for Nginx: +For instance, the following configuration could be used to use nginx as + frontend proxy: -services.nginx.httpConfig = '' - server { - server_name git.example.com; - listen 443 ssl spdy; - listen [::]:443 ssl spdy; - - ssl_certificate /var/lib/acme/git.example.com/fullchain.pem; - ssl_certificate_key /var/lib/acme/git.example.com/key.pem; - - location / { - proxy_http_version 1.1; - proxy_set_header Host $http_host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-Ssl on; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - - proxy_pass http://unix:/run/gitlab/gitlab-workhorse.socket; - } - } + services.nginx = { + enable = true; + recommendedGzipSettings = true; + recommendedOptimisation = true; + recommendedProxySettings = true; + recommendedTlsSettings = true; + virtualHosts."git.example.com" = { + enableACME = true; + forceSSL = true; + locations."/".proxyPass = "http://unix:/run/gitlab/gitlab-workhorse.socket"; + }; + }; ''; @@ -49,10 +42,10 @@ services.nginx.httpConfig = '' both services. In the case of PostgreSQL, a database and a role will be created. -The default state dir is /var/gitlab/state. This is where all data like -the repositories and uploads will be stored. +The default state dir is /var/gitlab/state. This is where +all data like the repositories and uploads will be stored. -A basic configuration could look like this: +A basic configuration with some custom settings could look like this: services.gitlab = { @@ -64,8 +57,16 @@ services.gitlab = { port = 443; user = "git"; group = "git"; + smtp = { + enable = true; + address = "localhost"; + port = 25; + }; extraConfig = { gitlab = { + email_from = "gitlab-no-reply@example.com"; + email_display_name = "Example GitLab"; + email_reply_to = "gitlab-no-reply@example.com"; default_projects_features = { builds = false; }; }; }; -- cgit 1.4.1 From c4cba0e51f9db45b3faee55e8a5ed6d63c227f92 Mon Sep 17 00:00:00 2001 From: Peter Hoeg Date: Sun, 19 Jun 2016 17:19:31 +0800 Subject: ssh module: ignore exit code when socket activated sshd will at times fail when exiting. When socket activated, this will leave a number of sshd@ service instances in the failed state, so we simply ignore the error code if we are running socket activated. Recommended by upstream: http://systemd-devel.freedesktop.narkive.com/d0eapMCG/socket-activated-sshd-service-showing-up-as-a-failure-when-the-client-connection-fails Fixes: #3279 --- nixos/modules/services/networking/ssh/sshd.nix | 1 + 1 file changed, 1 insertion(+) (limited to 'nixos/modules') diff --git a/nixos/modules/services/networking/ssh/sshd.nix b/nixos/modules/services/networking/ssh/sshd.nix index a464733a6a03..f900ef494abf 100644 --- a/nixos/modules/services/networking/ssh/sshd.nix +++ b/nixos/modules/services/networking/ssh/sshd.nix @@ -263,6 +263,7 @@ in serviceConfig = { ExecStart = + (optionalString cfg.startWhenNeeded "-") + "${cfgc.package}/bin/sshd " + (optionalString cfg.startWhenNeeded "-i ") + "-f ${pkgs.writeText "sshd_config" cfg.extraConfig}"; KillMode = "process"; -- cgit 1.4.1 From ea7e705cd905e01bc65f2a7ccc6e700bd1bcd4e0 Mon Sep 17 00:00:00 2001 From: Christian Kauhaus Date: Thu, 4 Aug 2016 15:25:23 +0200 Subject: varnish: fix localstatedir for varnish* tools (#17508) The varnish tools (varnishstat, varnishlog, ...) tried to load the VSM file from a spurious var directory in the Nix store. Fix the default so the tools "just work" when also keeping services.varnish.stateDir at the default. Notes: - The tools use $localstatedir/$HOSTNAME so I've adapted the default for stateDir as well to contain hostName. - Added postStop action to remove the localstatedir. There is no point in keeping it around when varnish does not run, as it regenerates it on startup anyway. Fixes #7495 --- nixos/modules/services/web-servers/varnish/default.nix | 5 ++++- pkgs/servers/varnish/default.nix | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'nixos/modules') diff --git a/nixos/modules/services/web-servers/varnish/default.nix b/nixos/modules/services/web-servers/varnish/default.nix index 364f6c68faca..61df43ec2352 100644 --- a/nixos/modules/services/web-servers/varnish/default.nix +++ b/nixos/modules/services/web-servers/varnish/default.nix @@ -28,7 +28,7 @@ with lib; }; stateDir = mkOption { - default = "/var/spool/varnish"; + default = "/var/spool/varnish/${config.networking.hostName}"; description = " Directory holding all state for Varnish to run. "; @@ -46,6 +46,9 @@ with lib; mkdir -p ${cfg.stateDir} chown -R varnish:varnish ${cfg.stateDir} ''; + postStop = '' + rm -rf ${cfg.stateDir} + ''; path = [ pkgs.gcc ]; serviceConfig.ExecStart = "${pkgs.varnish}/sbin/varnishd -a ${cfg.http_address} -f ${pkgs.writeText "default.vcl" cfg.config} -n ${cfg.stateDir} -u varnish"; serviceConfig.Type = "forking"; diff --git a/pkgs/servers/varnish/default.nix b/pkgs/servers/varnish/default.nix index 358afb3dfb36..fb3331768014 100644 --- a/pkgs/servers/varnish/default.nix +++ b/pkgs/servers/varnish/default.nix @@ -13,6 +13,8 @@ stdenv.mkDerivation rec { buildInputs = [ pcre libxslt groff ncurses pkgconfig readline python pythonPackages.docutils]; + buildFlags = "localstatedir=/var/spool"; + meta = { description = "Web application accelerator also known as a caching HTTP reverse proxy"; homepage = "https://www.varnish-cache.org"; -- cgit 1.4.1 From 037d9c6cab17a5dc28ed01c6b96c74e55cee57bc Mon Sep 17 00:00:00 2001 From: obadz Date: Sun, 24 Jul 2016 14:45:24 +0100 Subject: nixos-install: add options --closure, --no-channel-copy, --no-root-passwd, and --no-bootloader MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #17236 nix-build -A tests.installer.simple '' succeeds ✓ --- nixos/doc/manual/man-nixos-install.xml | 33 +++++++++++++++++++++++--- nixos/modules/installer/tools/nixos-install.sh | 33 ++++++++++++++++++++------ 2 files changed, 56 insertions(+), 10 deletions(-) (limited to 'nixos/modules') diff --git a/nixos/doc/manual/man-nixos-install.xml b/nixos/doc/manual/man-nixos-install.xml index 7ad1be1ec105..15c603256ca7 100644 --- a/nixos/doc/manual/man-nixos-install.xml +++ b/nixos/doc/manual/man-nixos-install.xml @@ -25,6 +25,19 @@ root + + + closure + + + + + + + + + + @@ -71,12 +84,13 @@ the following steps: /mnt/etc/nixos/configuration.nix. It installs the GRUB boot loader on the device - specified in the option , + specified in the option + (unless is specified), and generates a GRUB configuration file that boots into the NixOS configuration just installed. - It prompts you for a password for the root - account. + It prompts you for a password for the root account + (unless is specified). @@ -103,6 +117,19 @@ it. + + + + If this option is provided, nixos-install will install the specified closure + rather than attempt to build one from /mnt/etc/nixos/configuration.nix. + + The closure must be an appropriately configured NixOS system, with boot loader and partition + configuration that fits the target host. Such a closure is typically obtained with a command such as + nix-build -I nixos-config=./configuration.nix '<nixos>' -A system --no-out-link + + + + diff --git a/nixos/modules/installer/tools/nixos-install.sh b/nixos/modules/installer/tools/nixos-install.sh index 7962be137875..ae9f3a892950 100644 --- a/nixos/modules/installer/tools/nixos-install.sh +++ b/nixos/modules/installer/tools/nixos-install.sh @@ -24,6 +24,7 @@ fi # Parse the command line for the -I flag extraBuildFlags=() chrootCommand=(/run/current-system/sw/bin/bash) +bootLoader=1 while [ "$#" -gt 0 ]; do i="$1"; shift 1 @@ -40,6 +41,18 @@ while [ "$#" -gt 0 ]; do --root) mountPoint="$1"; shift 1 ;; + --closure) + closure="$1"; shift 1 + ;; + --no-channel-copy) + noChannelCopy=1 + ;; + --no-root-passwd) + noRootPasswd=1 + ;; + --no-bootloader) + bootLoader=0 + ;; --show-trace) extraBuildFlags+=("$i") ;; @@ -111,7 +124,7 @@ if test -z "$NIXOS_CONFIG"; then NIXOS_CONFIG=/etc/nixos/configuration.nix fi -if ! test -e "$mountPoint/$NIXOS_CONFIG"; then +if [ ! -e "$mountPoint/$NIXOS_CONFIG" ] && [ -z "$closure" ]; then echo "configuration file $mountPoint/$NIXOS_CONFIG doesn't exist" exit 1 fi @@ -200,16 +213,22 @@ for i in /nix/var/nix/manifests/*.nixmanifest; do done -# Get the absolute path to the NixOS/Nixpkgs sources. -nixpkgs="$(readlink -f $(nix-instantiate --find-file nixpkgs))" +if [ -z "$closure" ]; then + # Get the absolute path to the NixOS/Nixpkgs sources. + nixpkgs="$(readlink -f $(nix-instantiate --find-file nixpkgs))" + nixEnvAction="-f --set -A system" +else + nixpkgs="" + nixEnvAction="--set $closure" +fi # Build the specified Nix expression in the target store and install # it into the system configuration profile. echo "building the system configuration..." NIX_PATH="nixpkgs=/tmp/root/$nixpkgs:nixos-config=$NIXOS_CONFIG" NIXOS_CONFIG= \ chroot $mountPoint @nix@/bin/nix-env \ - "${extraBuildFlags[@]}" -p /nix/var/nix/profiles/system -f '' --set -A system + "${extraBuildFlags[@]}" -p /nix/var/nix/profiles/system $nixEnvAction # Copy the NixOS/Nixpkgs sources to the target as the initial contents @@ -218,7 +237,7 @@ mkdir -m 0755 -p $mountPoint/nix/var/nix/profiles mkdir -m 1777 -p $mountPoint/nix/var/nix/profiles/per-user mkdir -m 0755 -p $mountPoint/nix/var/nix/profiles/per-user/root srcs=$(nix-env "${extraBuildFlags[@]}" -p /nix/var/nix/profiles/per-user/root/channels -q nixos --no-name --out-path 2>/dev/null || echo -n "") -if test -n "$srcs"; then +if [ -z "$noChannelCopy" ] && [ -n "$srcs" ]; then echo "copying NixOS/Nixpkgs sources..." chroot $mountPoint @nix@/bin/nix-env \ "${extraBuildFlags[@]}" -p /nix/var/nix/profiles/per-user/root/channels -i "$srcs" --quiet @@ -244,7 +263,7 @@ touch $mountPoint/etc/NIXOS # a menu default pointing at the kernel/initrd/etc of the new # configuration. echo "finalising the installation..." -NIXOS_INSTALL_GRUB=1 chroot $mountPoint \ +NIXOS_INSTALL_GRUB="$bootLoader" chroot $mountPoint \ /nix/var/nix/profiles/system/bin/switch-to-configuration boot @@ -253,7 +272,7 @@ chroot $mountPoint /nix/var/nix/profiles/system/activate # Ask the user to set a root password. -if [ "$(chroot $mountPoint /run/current-system/sw/bin/sh -l -c "nix-instantiate --eval '' -A config.users.mutableUsers")" = true ] && [ -t 0 ] ; then +if [ -z "$noRootPasswd" ] && [ "$(chroot $mountPoint /run/current-system/sw/bin/sh -l -c "nix-instantiate --eval '' -A config.users.mutableUsers")" = true ] && [ -t 0 ] ; then echo "setting root password..." chroot $mountPoint /var/setuid-wrappers/passwd fi -- cgit 1.4.1 From 2ea72fa9c811622bdbf93e866cd68db756d45986 Mon Sep 17 00:00:00 2001 From: Tuomas Tynkkynen Date: Thu, 4 Aug 2016 23:12:39 +0300 Subject: nixos/luksroot: Reference correct output of openssl --- nixos/modules/system/boot/luksroot.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'nixos/modules') diff --git a/nixos/modules/system/boot/luksroot.nix b/nixos/modules/system/boot/luksroot.nix index 8dad09c89207..f2755b49f88d 100644 --- a/nixos/modules/system/boot/luksroot.nix +++ b/nixos/modules/system/boot/luksroot.nix @@ -443,7 +443,7 @@ in copy_bin_and_libs pbkdf2-sha512 mkdir -p $out/etc/ssl - cp -pdv ${pkgs.openssl}/etc/ssl/openssl.cnf $out/etc/ssl + cp -pdv ${pkgs.openssl.out}/etc/ssl/openssl.cnf $out/etc/ssl cat > $out/bin/openssl-wrap < Date: Fri, 5 Aug 2016 18:29:02 +0200 Subject: nixos/x11: output sections for modesetting driver See #17487. --- nixos/modules/services/x11/xserver.nix | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'nixos/modules') diff --git a/nixos/modules/services/x11/xserver.nix b/nixos/modules/services/x11/xserver.nix index e7df2e6b4690..51f55322ca61 100644 --- a/nixos/modules/services/x11/xserver.nix +++ b/nixos/modules/services/x11/xserver.nix @@ -14,6 +14,9 @@ let # Map video driver names to driver packages. FIXME: move into card-specific modules. knownVideoDrivers = { virtualbox = { modules = [ kernelPackages.virtualboxGuestAdditions ]; driverName = "vboxvideo"; }; + + # modesetting does not have a xf86videomodesetting package as it is included in xorgserver + modesetting = {}; }; fontsForXServer = @@ -435,15 +438,14 @@ in services.xserver.videoDrivers = mkIf (cfg.videoDriver != null) [ cfg.videoDriver ]; - # FIXME: somehow check for unknown driver names. - services.xserver.drivers = flip concatMap cfg.videoDrivers (name: + services.xserver.drivers = flip map cfg.videoDrivers (name: let driver = attrByPath [name] (if xorg ? ${"xf86video" + name} then { modules = [xorg.${"xf86video" + name}]; } - else null) + else throw "Unknown video driver: ${name}") knownVideoDrivers; - in optional (driver != null) ({ inherit name; driverName = name; } // driver)); + in { inherit name; modules = []; driverName = name; } // driver); assertions = [ { assertion = config.security.polkit.enable; -- cgit 1.4.1 From 22088b4b25119083d8adfc055073f563b9cd8115 Mon Sep 17 00:00:00 2001 From: Gabriel Ebner Date: Sat, 6 Aug 2016 07:22:33 +0200 Subject: nixos/x11: make nvidia driver work again The nvidia driver module directly sets the services.xserver.drivers option, while still having nvidia/nvidiaBeta/... etc. in the videoDrivers option. --- nixos/modules/services/x11/xserver.nix | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'nixos/modules') diff --git a/nixos/modules/services/x11/xserver.nix b/nixos/modules/services/x11/xserver.nix index 51f55322ca61..b03f70385b1f 100644 --- a/nixos/modules/services/x11/xserver.nix +++ b/nixos/modules/services/x11/xserver.nix @@ -438,14 +438,15 @@ in services.xserver.videoDrivers = mkIf (cfg.videoDriver != null) [ cfg.videoDriver ]; - services.xserver.drivers = flip map cfg.videoDrivers (name: + # FIXME: somehow check for unknown driver names. + services.xserver.drivers = flip concatMap cfg.videoDrivers (name: let driver = attrByPath [name] (if xorg ? ${"xf86video" + name} then { modules = [xorg.${"xf86video" + name}]; } - else throw "Unknown video driver: ${name}") + else null) knownVideoDrivers; - in { inherit name; modules = []; driverName = name; } // driver); + in optional (driver != null) ({ inherit name; modules = []; driverName = name; } // driver)); assertions = [ { assertion = config.security.polkit.enable; -- cgit 1.4.1 From 66d5edf654c6c98e3835dbee4f208794fc03c81d Mon Sep 17 00:00:00 2001 From: obadz Date: Sat, 6 Aug 2016 09:13:20 +0100 Subject: chromium: add nixos module security.chromiumSuidSandbox Closes #17460 Changed the wrapper derivation to produce a second output containing the sandbox. Add a launch wrapper to try and locate the sandbox (either in /var/setuid-wrappers or in /nix/store). This launch wrapper also sheds libredirect.so from LD_PRELOAD as Chromium does not tolerate it. Does not trigger a Chromium rebuild. cc @cleverca22 @joachifm @jasom --- nixos/modules/module-list.nix | 1 + nixos/modules/security/chromium-suid-sandbox.nix | 28 ++++++++++++++++++ .../networking/browsers/chromium/common.nix | 4 +++ .../networking/browsers/chromium/default.nix | 34 ++++++++++++++++++++-- 4 files changed, 64 insertions(+), 3 deletions(-) create mode 100644 nixos/modules/security/chromium-suid-sandbox.nix (limited to 'nixos/modules') diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index d202b5a2c724..6a6730856b15 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -92,6 +92,7 @@ ./security/apparmor-suid.nix ./security/audit.nix ./security/ca.nix + ./security/chromium-suid-sandbox.nix ./security/duosec.nix ./security/grsecurity.nix ./security/hidepid.nix diff --git a/nixos/modules/security/chromium-suid-sandbox.nix b/nixos/modules/security/chromium-suid-sandbox.nix new file mode 100644 index 000000000000..b517e879f04e --- /dev/null +++ b/nixos/modules/security/chromium-suid-sandbox.nix @@ -0,0 +1,28 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.security.chromiumSuidSandbox; + sandbox = pkgs.chromium.sandbox; +in +{ + options.security.chromiumSuidSandbox.enable = mkEnableOption '' + Whether to install the Chromium SUID sandbox which is an executable that + Chromium may use in order to achieve sandboxing. + + If you get the error "The SUID sandbox helper binary was found, but is not + configured correctly.", turning this on might help. + + Also, if the URL chrome://sandbox tells you that "You are not adequately + sandboxed!", turning this on might resolve the issue. + + Finally, if you have enabled and you + use Chromium, you probably need this. + ''; + + config = mkIf cfg.enable { + environment.systemPackages = [ sandbox ]; + security.setuidPrograms = [ sandbox.passthru.sandboxExecutableName ]; + }; +} diff --git a/pkgs/applications/networking/browsers/chromium/common.nix b/pkgs/applications/networking/browsers/chromium/common.nix index 2c70978a4962..119a8c16f15c 100644 --- a/pkgs/applications/networking/browsers/chromium/common.nix +++ b/pkgs/applications/networking/browsers/chromium/common.nix @@ -96,6 +96,8 @@ let buildPath = "out/${buildType}"; libExecPath = "$out/libexec/${packageName}"; + sandboxExecutableName = "__chromium-suid-sandbox"; + base = rec { name = "${packageName}-${version}"; inherit (upstream-info) version; @@ -221,6 +223,8 @@ let targets = extraAttrs.buildTargets or []; commands = map buildCommand targets; in concatStringsSep "\n" commands; + + passthru = { inherit sandboxExecutableName; }; }; # Remove some extraAttrs we supplied to the base attributes already. diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix index a7447db7c220..8b4cb00a7786 100644 --- a/pkgs/applications/networking/browsers/chromium/default.nix +++ b/pkgs/applications/networking/browsers/chromium/default.nix @@ -1,4 +1,4 @@ -{ newScope, stdenv, makeWrapper, makeDesktopItem +{ newScope, stdenv, makeWrapper, makeDesktopItem, writeScript # package customization , channel ? "stable" @@ -61,22 +61,49 @@ let suffix = if channel != "stable" then "-" + channel else ""; + sandboxExecutableName = chromium.browser.passthru.sandboxExecutableName; + in stdenv.mkDerivation { name = "chromium${suffix}-${chromium.browser.version}"; buildInputs = [ makeWrapper ]; + outputs = ["out" "sandbox"]; + buildCommand = let browserBinary = "${chromium.browser}/libexec/chromium/chromium"; getWrapperFlags = plugin: "$(< \"${plugin}/nix-support/wrapper-flags\")"; + sandboxExecutableSourcePath = "${chromium.browser}/libexec/chromium/chrome-sandbox"; + launchScript = writeScript "chromium" '' + #! ${stdenv.shell} + + if [ -x "/var/setuid-wrappers/${sandboxExecutableName}" ] + then + export CHROME_DEVEL_SANDBOX="/var/setuid-wrappers/${sandboxExecutableName}" + else + export CHROME_DEVEL_SANDBOX="@sandbox@/bin/${sandboxExecutableName}" + fi + + # libredirect causes chromium to deadlock on startup + export LD_PRELOAD="$(echo -n "$LD_PRELOAD" | tr ':' '\n' | grep -v /lib/libredirect\\.so$ | tr '\n' ':')" + + exec @out@/bin/.chromium-wrapped "''${extraFlagsArray[@]}" "$@" + ''; in with stdenv.lib; '' mkdir -p "$out/bin" "$out/share/applications" ln -s "${chromium.browser}/share" "$out/share" - eval makeWrapper "${browserBinary}" "$out/bin/chromium" \ - --set CHROME_DEVEL_SANDBOX "${chromium.browser}/libexec/chromium/chrome-sandbox" \ + eval makeWrapper "${browserBinary}" "$out/bin/.chromium-wrapped" \ ${concatMapStringsSep " " getWrapperFlags chromium.plugins.enabled} + cp -v "${launchScript}" "$out/bin/chromium" + substituteInPlace $out/bin/chromium --replace @out@ $out --replace @sandbox@ $sandbox + chmod 755 "$out/bin/chromium" + + mkdir -p "$sandbox/bin" + [ -x "${sandboxExecutableSourcePath}" ] || exit 1 + ln -sv "${sandboxExecutableSourcePath}" "$sandbox/bin/${sandboxExecutableName}" + ln -s "$out/bin/chromium" "$out/bin/chromium-browser" ln -s "${chromium.browser}/share/icons" "$out/share/icons" cp -v "${desktopItem}/share/applications/"* "$out/share/applications" @@ -87,5 +114,6 @@ in stdenv.mkDerivation { passthru = { inherit (chromium) upstream-info; mkDerivation = chromium.mkChromiumDerivation; + inherit sandboxExecutableName; }; } -- cgit 1.4.1 From adeab67bd80c7dc2d94152f3231c5940ae10a337 Mon Sep 17 00:00:00 2001 From: jokogr Date: Sat, 6 Aug 2016 18:20:18 +0300 Subject: syncthing service: add syncthing-inotify (#17320) --- nixos/modules/services/networking/syncthing.nix | 55 +++++++++++++++++++------ 1 file changed, 43 insertions(+), 12 deletions(-) (limited to 'nixos/modules') diff --git a/nixos/modules/services/networking/syncthing.nix b/nixos/modules/services/networking/syncthing.nix index b44b03dc0bf3..8a430734319b 100644 --- a/nixos/modules/services/networking/syncthing.nix +++ b/nixos/modules/services/networking/syncthing.nix @@ -23,6 +23,18 @@ let RestartForceExitStatus="3 4"; }; + iNotifyHeader = { + description = "Syncthing Inotify File Watcher service"; + after = [ "network.target" "syncthing.service" ]; + requires = [ "syncthing.service" ]; + }; + + iNotifyService = { + SuccessExitStatus = "2"; + RestartForceExitStatus = "3"; + Restart = "on-failure"; + }; + in { @@ -39,6 +51,12 @@ in available on http://127.0.0.1:8384/. ''; + useInotify = mkOption { + type = types.bool; + default = false; + description = "Provide syncthing-inotify as a service."; + }; + systemService = mkOption { type = types.bool; default = true; @@ -112,27 +130,40 @@ in config.ids.gids.syncthing; }; - environment.systemPackages = [ cfg.package ]; - - systemd.services = mkIf cfg.systemService { - syncthing = header // { + systemd.services = { + syncthing = mkIf cfg.systemService (header // { + wants = mkIf cfg.useInotify [ "syncthing-inotify.service" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = service // { + User = cfg.user; + Group = cfg.group; + PermissionsStartOnly = true; + ExecStart = "${cfg.package}/bin/syncthing -no-browser -home=${cfg.dataDir}"; + }; + }); + + syncthing-inotify = mkIf (cfg.systemService && cfg.useInotify) (iNotifyHeader // { wantedBy = [ "multi-user.target" ]; - serviceConfig = service // { + serviceConfig = iNotifyService // { User = cfg.user; - Group = cfg.group; - PermissionsStartOnly = true; - ExecStart = "${cfg.package}/bin/syncthing -no-browser -home=${cfg.dataDir}"; + ExecStart = "${pkgs.syncthing-inotify.bin}/bin/syncthing-inotify -home=${cfg.dataDir} -logflags=0"; }; - }; + }); }; - systemd.user.services.syncthing = - header // { - wantedBy = [ "default.target" ]; + systemd.user.services = { + syncthing = header // { serviceConfig = service // { ExecStart = "${cfg.package}/bin/syncthing -no-browser"; }; }; + syncthing-inotify = mkIf cfg.useInotify (iNotifyHeader // { + serviceConfig = iNotifyService // { + ExecStart = "${pkgs.syncthing-inotify.bin}/bin/syncthing-inotify -logflags=0"; + }; + }); + }; + }; } -- cgit 1.4.1 From 486b8e7f5cd4d2a476c1f0fd50f71273d575d0e3 Mon Sep 17 00:00:00 2001 From: Paul Hendry Date: Sat, 6 Aug 2016 18:58:38 -0700 Subject: Add Terraria server service (#16832) --- nixos/modules/misc/ids.nix | 2 + nixos/modules/module-list.nix | 1 + nixos/modules/services/games/terraria.nix | 139 ++++++++++++++++++++++++++++++ pkgs/games/terraria-server/default.nix | 1 + 4 files changed, 143 insertions(+) create mode 100644 nixos/modules/services/games/terraria.nix (limited to 'nixos/modules') diff --git a/nixos/modules/misc/ids.nix b/nixos/modules/misc/ids.nix index 3ba279f597da..83b47728639c 100644 --- a/nixos/modules/misc/ids.nix +++ b/nixos/modules/misc/ids.nix @@ -273,6 +273,7 @@ smokeping = 250; gocd-agent = 251; gocd-server = 252; + terraria = 253; # When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399! @@ -516,6 +517,7 @@ smokeping = 250; gocd-agent = 251; gocd-server = 252; + terraria = 253; # When adding a gid, make sure it doesn't match an existing # uid. Users and groups with the same name should have equal diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 6a6730856b15..03a191c72321 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -174,6 +174,7 @@ ./services/games/ghost-one.nix ./services/games/minecraft-server.nix ./services/games/minetest-server.nix + ./services/games/terraria.nix ./services/hardware/acpid.nix ./services/hardware/actkbd.nix ./services/hardware/amd-hybrid-graphics.nix diff --git a/nixos/modules/services/games/terraria.nix b/nixos/modules/services/games/terraria.nix new file mode 100644 index 000000000000..57ac37bb1bd3 --- /dev/null +++ b/nixos/modules/services/games/terraria.nix @@ -0,0 +1,139 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.terraria; + worldSizeMap = { "small" = 1; "medium" = 2; "large" = 3; }; + valFlag = name: val: optionalString (val != null) "-${name} \"${escape ["\\" "\""] (toString val)}\""; + boolFlag = name: val: optionalString val "-${name}"; + flags = [ + (valFlag "port" cfg.port) + (valFlag "maxPlayers" cfg.maxPlayers) + (valFlag "password" cfg.password) + (valFlag "motd" cfg.messageOfTheDay) + (valFlag "world" cfg.worldPath) + (valFlag "autocreate" (builtins.getAttr cfg.autoCreatedWorldSize worldSizeMap)) + (valFlag "banlist" cfg.banListPath) + (boolFlag "secure" cfg.secure) + (boolFlag "noupnp" cfg.noUPnP) + ]; +in +{ + options = { + services.terraria = { + enable = mkOption { + type = types.bool; + default = false; + description = '' + If enabled, starts a Terraria server. The server can be connected to via tmux -S /var/lib/terraria/terraria.sock attach + for administration by users who are a part of the terraria group (use C-b d shortcut to detach again). + ''; + }; + + port = mkOption { + type = types.int; + default = 7777; + description = '' + Specifies the port to listen on. + ''; + }; + + maxPlayers = mkOption { + type = types.int; + default = 255; + description = '' + Sets the max number of players (between 1 and 255). + ''; + }; + + password = mkOption { + type = types.nullOr types.str; + default = null; + description = '' + Sets the server password. Leave null for no password. + ''; + }; + + messageOfTheDay = mkOption { + type = types.nullOr types.str; + default = null; + description = '' + Set the server message of the day text. + ''; + }; + + worldPath = mkOption { + type = types.path; + default = null; + description = '' + The path to the world file (.wld) which should be loaded. + If no world exists at this path, one will be created with the size + specified by autoCreatedWorldSize. + ''; + }; + + autoCreatedWorldSize = mkOption { + type = types.enum [ "small" "medium" "large" ]; + default = "medium"; + description = '' + Specifies the size of the auto-created world if worldPath does not + point to an existing world. + ''; + }; + + banListPath = mkOption { + type = types.nullOr types.path; + default = null; + description = '' + The path to the ban list. + ''; + }; + + secure = mkOption { + type = types.bool; + default = false; + description = "Adds additional cheat protection to the server."; + }; + + noUPnP = mkOption { + type = types.bool; + default = false; + description = "Disables automatic Universal Plug and Play."; + }; + }; + }; + + config = mkIf cfg.enable { + users.extraUsers.terraria = { + description = "Terraria server service user"; + home = "/var/lib/terraria"; + createHome = true; + uid = config.ids.uids.terraria; + }; + + users.extraGroups.terraria = { + gid = config.ids.gids.terraria; + members = [ "terraria" ]; + }; + + systemd.services.terraria = { + description = "Terraria Server Service"; + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; + + serviceConfig = { + User = "terraria"; + Type = "oneshot"; + RemainAfterExit = true; + ExecStart = "${pkgs.tmux.bin}/bin/tmux -S /var/lib/terraria/terraria.sock new -d ${pkgs.terraria-server}/bin/TerrariaServer ${concatStringsSep " " flags}"; + ExecStop = "${pkgs.tmux.bin}/bin/tmux -S /var/lib/terraria/terraria.sock send-keys Enter \"exit\" Enter"; + }; + + postStart = '' + ${pkgs.coreutils}/bin/chmod 660 /var/lib/terraria/terraria.sock + ${pkgs.coreutils}/bin/chgrp terraria /var/lib/terraria/terraria.sock + ''; + }; + }; +} diff --git a/pkgs/games/terraria-server/default.nix b/pkgs/games/terraria-server/default.nix index 59dabf2f9cde..5fcb5063bbc8 100644 --- a/pkgs/games/terraria-server/default.nix +++ b/pkgs/games/terraria-server/default.nix @@ -16,6 +16,7 @@ stdenv.mkDerivation rec { installPhase = '' mkdir -p $out/bin cp -r Linux $out/ + chmod +x "$out/Linux/TerrariaServer.bin.x86_64" ln -s "$out/Linux/TerrariaServer.bin.x86_64" $out/bin/TerrariaServer # Fix "/lib64/ld-linux-x86-64.so.2" like references in ELF executables. find "$out" | while read filepath; do -- cgit 1.4.1 From 59aa3bb5c84a8d2cfe8d27170bd826499710036e Mon Sep 17 00:00:00 2001 From: Nikolay Amiantov Date: Mon, 8 Aug 2016 01:32:18 +0300 Subject: nixos stage-1: factor device waiting into a function --- nixos/modules/system/boot/stage-1-init.sh | 55 ++++++++++++++++++------------- 1 file changed, 32 insertions(+), 23 deletions(-) (limited to 'nixos/modules') diff --git a/nixos/modules/system/boot/stage-1-init.sh b/nixos/modules/system/boot/stage-1-init.sh index 7705dcb2d125..8e33705644d8 100644 --- a/nixos/modules/system/boot/stage-1-init.sh +++ b/nixos/modules/system/boot/stage-1-init.sh @@ -352,6 +352,33 @@ mountFS() { } +# Function for waiting a device to appear. +waitDevice() { + local device="$1" + + # USB storage devices tend to appear with some delay. It would be + # great if we had a way to synchronously wait for them, but + # alas... So just wait for a few seconds for the device to + # appear. + if test ! -e $device; then + echo -n "waiting for device $device to appear..." + try=20 + while [ $try -gt 0 ]; do + sleep 1 + # also re-try lvm activation now that new block devices might have appeared + lvm vgchange -ay + # and tell udev to create nodes for the new LVs + udevadm trigger --action=add + if test -e $device; then break; fi + echo -n "." + try=$((try - 1)) + done + echo + [ $try -ne 0 ] + fi +} + + # Try to find and mount the root device. mkdir -p $targetRoot @@ -384,29 +411,11 @@ while read -u 3 mountPoint; do ;; esac - # USB storage devices tend to appear with some delay. It would be - # great if we had a way to synchronously wait for them, but - # alas... So just wait for a few seconds for the device to - # appear. If it doesn't appear, try to mount it anyway (and - # probably fail). This is a fallback for non-device "devices" - # that we don't properly recognise. - if test -z "$pseudoDevice" -a ! -e $device; then - echo -n "waiting for device $device to appear..." - try=20 - while [ $try -gt 0 ]; do - sleep 1 - # also re-try lvm activation now that new block devices might have appeared - lvm vgchange -ay - # and tell udev to create nodes for the new LVs - udevadm trigger --action=add - if test -e $device; then break; fi - echo -n "." - try=$((try - 1)) - done - echo - if [ $try -eq 0 ]; then - echo "Timed out waiting for device $device, trying to mount anyway." - fi + if test -z "$pseudoDevice" && ! waitDevice "$device"; then + # If it doesn't appear, try to mount it anyway (and + # probably fail). This is a fallback for non-device "devices" + # that we don't properly recognise. + echo "Timed out waiting for device $device, trying to mount anyway." fi # Wait once more for the udev queue to empty, just in case it's -- cgit 1.4.1 From 3ae468e8355494dda2e9c28b5d62d3c03bf4ce98 Mon Sep 17 00:00:00 2001 From: Nikolay Amiantov Date: Mon, 8 Aug 2016 01:34:23 +0300 Subject: nixos stage-1: move resumption below helper functions' definitions --- nixos/modules/system/boot/stage-1-init.sh | 66 +++++++++++++++---------------- 1 file changed, 33 insertions(+), 33 deletions(-) (limited to 'nixos/modules') diff --git a/nixos/modules/system/boot/stage-1-init.sh b/nixos/modules/system/boot/stage-1-init.sh index 8e33705644d8..fc50481e0bc8 100644 --- a/nixos/modules/system/boot/stage-1-init.sh +++ b/nixos/modules/system/boot/stage-1-init.sh @@ -189,39 +189,6 @@ if test -n "$debug1devices"; then fail; fi @postDeviceCommands@ -# Try to resume - all modules are loaded now, and devices exist -if test -e /sys/power/tuxonice/resume; then - if test -n "$(cat /sys/power/tuxonice/resume)"; then - echo 0 > /sys/power/tuxonice/user_interface/enabled - echo 1 > /sys/power/tuxonice/do_resume || echo "failed to resume..." - fi -fi - -if test -e /sys/power/resume -a -e /sys/power/disk; then - if test -n "@resumeDevice@"; then - resumeDev="@resumeDevice@" - resumeInfo="$(udevadm info -q property "$resumeDev" )" - else - for sd in @resumeDevices@; do - # Try to detect resume device. According to Ubuntu bug: - # https://bugs.launchpad.net/ubuntu/+source/pm-utils/+bug/923326/comments/1 - # when there are multiple swap devices, we can't know where the hibernate - # image will reside. We can check all of them for swsuspend blkid. - resumeInfo="$(test -e "$sd" && udevadm info -q property "$sd")" - if [ "$(echo "$resumeInfo" | sed -n 's/^ID_FS_TYPE=//p')" = "swsuspend" ]; then - resumeDev="$sd" - break - fi - done - fi - if test -e "$resumeDev"; then - resumeMajor="$(echo "$resumeInfo" | sed -n 's/^MAJOR=//p')" - resumeMinor="$(echo "$resumeInfo" | sed -n 's/^MINOR=//p')" - echo "$resumeMajor:$resumeMinor" > /sys/power/resume 2> /dev/null || echo "failed to resume..." - fi -fi - - # Return true if the machine is on AC power, or if we can't determine # whether it's on AC power. onACPower() { @@ -379,6 +346,39 @@ waitDevice() { } +# Try to resume - all modules are loaded now, and devices exist +if test -e /sys/power/tuxonice/resume; then + if test -n "$(cat /sys/power/tuxonice/resume)"; then + echo 0 > /sys/power/tuxonice/user_interface/enabled + echo 1 > /sys/power/tuxonice/do_resume || echo "failed to resume..." + fi +fi + +if test -e /sys/power/resume -a -e /sys/power/disk; then + if test -n "@resumeDevice@"; then + resumeDev="@resumeDevice@" + resumeInfo="$(udevadm info -q property "$resumeDev" )" + else + for sd in @resumeDevices@; do + # Try to detect resume device. According to Ubuntu bug: + # https://bugs.launchpad.net/ubuntu/+source/pm-utils/+bug/923326/comments/1 + # when there are multiple swap devices, we can't know where the hibernate + # image will reside. We can check all of them for swsuspend blkid. + resumeInfo="$(test -e "$sd" && udevadm info -q property "$sd")" + if [ "$(echo "$resumeInfo" | sed -n 's/^ID_FS_TYPE=//p')" = "swsuspend" ]; then + resumeDev="$sd" + break + fi + done + fi + if test -e "$resumeDev"; then + resumeMajor="$(echo "$resumeInfo" | sed -n 's/^MAJOR=//p')" + resumeMinor="$(echo "$resumeInfo" | sed -n 's/^MINOR=//p')" + echo "$resumeMajor:$resumeMinor" > /sys/power/resume 2> /dev/null || echo "failed to resume..." + fi +fi + + # Try to find and mount the root device. mkdir -p $targetRoot -- cgit 1.4.1 From 986a40421a94528c55531719fb382160292c7e16 Mon Sep 17 00:00:00 2001 From: Nikolay Amiantov Date: Mon, 8 Aug 2016 01:35:43 +0300 Subject: nixos stage-1: wait for devices during resumption attempt Also a microimprovement -- use `test -n` instead of `test -e` since we have already checked that the file exists. --- nixos/modules/system/boot/stage-1-init.sh | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'nixos/modules') diff --git a/nixos/modules/system/boot/stage-1-init.sh b/nixos/modules/system/boot/stage-1-init.sh index fc50481e0bc8..ef04629d735f 100644 --- a/nixos/modules/system/boot/stage-1-init.sh +++ b/nixos/modules/system/boot/stage-1-init.sh @@ -346,7 +346,7 @@ waitDevice() { } -# Try to resume - all modules are loaded now, and devices exist +# Try to resume - all modules are loaded now. if test -e /sys/power/tuxonice/resume; then if test -n "$(cat /sys/power/tuxonice/resume)"; then echo 0 > /sys/power/tuxonice/user_interface/enabled @@ -355,7 +355,7 @@ if test -e /sys/power/tuxonice/resume; then fi if test -e /sys/power/resume -a -e /sys/power/disk; then - if test -n "@resumeDevice@"; then + if test -n "@resumeDevice@" && waitDevice "@resumeDevice@"; then resumeDev="@resumeDevice@" resumeInfo="$(udevadm info -q property "$resumeDev" )" else @@ -364,14 +364,16 @@ if test -e /sys/power/resume -a -e /sys/power/disk; then # https://bugs.launchpad.net/ubuntu/+source/pm-utils/+bug/923326/comments/1 # when there are multiple swap devices, we can't know where the hibernate # image will reside. We can check all of them for swsuspend blkid. - resumeInfo="$(test -e "$sd" && udevadm info -q property "$sd")" - if [ "$(echo "$resumeInfo" | sed -n 's/^ID_FS_TYPE=//p')" = "swsuspend" ]; then - resumeDev="$sd" - break + if waitDevice "$sd"; then + resumeInfo="$(udevadm info -q property "$sd")" + if [ "$(echo "$resumeInfo" | sed -n 's/^ID_FS_TYPE=//p')" = "swsuspend" ]; then + resumeDev="$sd" + break + fi fi done fi - if test -e "$resumeDev"; then + if test -n "$resumeDev"; then resumeMajor="$(echo "$resumeInfo" | sed -n 's/^MAJOR=//p')" resumeMinor="$(echo "$resumeInfo" | sed -n 's/^MINOR=//p')" echo "$resumeMajor:$resumeMinor" > /sys/power/resume 2> /dev/null || echo "failed to resume..." -- cgit 1.4.1 From 2aba1c496215d4ee788c47b94e5d06fea09134ff Mon Sep 17 00:00:00 2001 From: Al Zohali Date: Mon, 20 Jun 2016 00:42:26 +0300 Subject: phpfpm service: restructured pool configuration From @fpletz: Keep poolConfigs option for backwards-compatibility. The original commit 6b3f5b5a421fe3422e9ef63a3fd690178c36163e was previously reverted by c7860cae1a4b54f4b54339142472f00f861fa055 but the issues were resolved. --- nixos/modules/module-list.nix | 2 +- nixos/modules/services/web-servers/phpfpm.nix | 104 ------------------ .../services/web-servers/phpfpm/default.nix | 122 +++++++++++++++++++++ .../services/web-servers/phpfpm/pool-options.nix | 35 ++++++ 4 files changed, 158 insertions(+), 105 deletions(-) delete mode 100644 nixos/modules/services/web-servers/phpfpm.nix create mode 100644 nixos/modules/services/web-servers/phpfpm/default.nix create mode 100644 nixos/modules/services/web-servers/phpfpm/pool-options.nix (limited to 'nixos/modules') diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 03a191c72321..98af71e014dd 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -476,7 +476,7 @@ ./services/web-servers/lighttpd/gitweb.nix ./services/web-servers/lighttpd/inginious.nix ./services/web-servers/nginx/default.nix - ./services/web-servers/phpfpm.nix + ./services/web-servers/phpfpm/default.nix ./services/web-servers/shellinabox.nix ./services/web-servers/tomcat.nix ./services/web-servers/uwsgi.nix diff --git a/nixos/modules/services/web-servers/phpfpm.nix b/nixos/modules/services/web-servers/phpfpm.nix deleted file mode 100644 index 2658d7117e37..000000000000 --- a/nixos/modules/services/web-servers/phpfpm.nix +++ /dev/null @@ -1,104 +0,0 @@ -{ config, lib, pkgs, ... }: - -with lib; - -let - cfg = config.services.phpfpm; - - stateDir = "/run/phpfpm"; - - pidFile = "${stateDir}/phpfpm.pid"; - - cfgFile = pkgs.writeText "phpfpm.conf" '' - [global] - pid = ${pidFile} - error_log = syslog - daemonize = yes - ${cfg.extraConfig} - - ${concatStringsSep "\n" (mapAttrsToList (n: v: "[${n}]\n${v}") cfg.poolConfigs)} - ''; - - phpIni = pkgs.writeText "php.ini" '' - ${readFile "${cfg.phpPackage}/etc/php.ini"} - - ${cfg.phpOptions} - ''; - -in { - - options = { - services.phpfpm = { - extraConfig = mkOption { - type = types.lines; - default = ""; - description = '' - Extra configuration that should be put in the global section of - the PHP FPM configuration file. Do not specify the options - pid, error_log or - daemonize here, since they are generated by - NixOS. - ''; - }; - - phpPackage = mkOption { - type = types.package; - default = pkgs.php; - defaultText = "pkgs.php"; - description = '' - The PHP package to use for running the FPM service. - ''; - }; - - phpOptions = mkOption { - type = types.lines; - default = ""; - example = - '' - date.timezone = "CET" - ''; - description = - "Options appended to the PHP configuration file php.ini."; - }; - - poolConfigs = mkOption { - type = types.attrsOf types.lines; - default = {}; - example = literalExample '' - { mypool = ''' - listen = /run/phpfpm/mypool - user = nobody - pm = dynamic - pm.max_children = 75 - pm.start_servers = 10 - pm.min_spare_servers = 5 - pm.max_spare_servers = 20 - pm.max_requests = 500 - '''; - } - ''; - description = '' - A mapping between PHP FPM pool names and their configurations. - See the documentation on php-fpm.conf for - details on configuration directives. If no pools are defined, - the phpfpm service is disabled. - ''; - }; - }; - }; - - config = mkIf (cfg.poolConfigs != {}) { - - systemd.services.phpfpm = { - wantedBy = [ "multi-user.target" ]; - preStart = '' - mkdir -p "${stateDir}" - ''; - serviceConfig = { - ExecStart = "${cfg.phpPackage}/bin/php-fpm -y ${cfgFile} -c ${phpIni}"; - PIDFile = pidFile; - }; - }; - - }; -} diff --git a/nixos/modules/services/web-servers/phpfpm/default.nix b/nixos/modules/services/web-servers/phpfpm/default.nix new file mode 100644 index 000000000000..819d0c251bf3 --- /dev/null +++ b/nixos/modules/services/web-servers/phpfpm/default.nix @@ -0,0 +1,122 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.phpfpm; + + stateDir = "/run/phpfpm"; + + pidFile = "${stateDir}/phpfpm.pid"; + + mkPool = n: p: '' + [${n}] + listen = ${p.listen} + ${p.extraConfig} + ''; + + cfgFile = pkgs.writeText "phpfpm.conf" '' + [global] + pid = ${pidFile} + error_log = syslog + daemonize = yes + ${cfg.extraConfig} + + ${concatStringsSep "\n" (mapAttrsToList mkPool cfg.pools)} + + ${concatStringsSep "\n" (mapAttrsToList (n: v: "[${n}]\n${v}") cfg.poolConfigs)} + ''; + + phpIni = pkgs.writeText "php.ini" '' + ${readFile "${cfg.phpPackage}/etc/php.ini"} + + ${cfg.phpOptions} + ''; + +in { + + options = { + services.phpfpm = { + extraConfig = mkOption { + type = types.lines; + default = ""; + description = '' + Extra configuration that should be put in the global section of + the PHP FPM configuration file. Do not specify the options + pid, error_log or + daemonize here, since they are generated by + NixOS. + ''; + }; + + phpPackage = mkOption { + type = types.package; + default = pkgs.php; + defaultText = "pkgs.php"; + description = '' + The PHP package to use for running the FPM service. + ''; + }; + + phpOptions = mkOption { + type = types.lines; + default = ""; + example = + '' + date.timezone = "CET" + ''; + description = + "Options appended to the PHP configuration file php.ini."; + }; + + poolConfigs = mkOption { + default = {}; + type = types.attrsOf types.lines; + example = literalExample '' + { mypool = ''' + listen = /run/phpfpm/mypool + user = nobody + pm = dynamic + pm.max_children = 75 + pm.start_servers = 10 + pm.min_spare_servers = 5 + pm.max_spare_servers = 20 + pm.max_requests = 500 + '''; + } + ''; + description = '' + A mapping between PHP FPM pool names and their configurations. + See the documentation on php-fpm.conf for + details on configuration directives. If no pools are defined, + the phpfpm service is disabled. + ''; + }; + + pools = mkOption { + type = types.attrsOf (types.submodule (import ./pool-options.nix { + inherit lib; + })); + default = {}; + description = '' + If no pools are defined, the phpfpm service is disabled. + ''; + }; + }; + }; + + config = mkIf (cfg.pools != {}) { + + systemd.services.phpfpm = { + wantedBy = [ "multi-user.target" ]; + preStart = '' + mkdir -p "${stateDir}" + ''; + serviceConfig = { + ExecStart = "${cfg.phpPackage}/bin/php-fpm -y ${cfgFile} -c ${phpIni}"; + PIDFile = pidFile; + }; + }; + + }; +} diff --git a/nixos/modules/services/web-servers/phpfpm/pool-options.nix b/nixos/modules/services/web-servers/phpfpm/pool-options.nix new file mode 100644 index 000000000000..cc688c2c48a2 --- /dev/null +++ b/nixos/modules/services/web-servers/phpfpm/pool-options.nix @@ -0,0 +1,35 @@ +{ lib }: + +with lib; { + + options = { + + listen = mkOption { + type = types.str; + example = "/path/to/unix/socket"; + description = '' + The address on which to accept FastCGI requests. + ''; + }; + + extraConfig = mkOption { + type = types.lines; + example = '' + user = nobody + pm = dynamic + pm.max_children = 75 + pm.start_servers = 10 + pm.min_spare_servers = 5 + pm.max_spare_servers = 20 + pm.max_requests = 500 + ''; + + description = '' + Extra lines that go into the pool configuration. + See the documentation on php-fpm.conf for + details on configuration directives. + ''; + }; + }; +} + -- cgit 1.4.1 From b2413e48aea29b24ae9994c2c8bddf7e96245cc2 Mon Sep 17 00:00:00 2001 From: Nikolay Amiantov Date: Mon, 8 Aug 2016 01:55:11 +0300 Subject: chromium-suid-sandbox module: fix description --- nixos/modules/security/chromium-suid-sandbox.nix | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) (limited to 'nixos/modules') diff --git a/nixos/modules/security/chromium-suid-sandbox.nix b/nixos/modules/security/chromium-suid-sandbox.nix index b517e879f04e..88fbe518c2de 100644 --- a/nixos/modules/security/chromium-suid-sandbox.nix +++ b/nixos/modules/security/chromium-suid-sandbox.nix @@ -7,19 +7,23 @@ let sandbox = pkgs.chromium.sandbox; in { - options.security.chromiumSuidSandbox.enable = mkEnableOption '' - Whether to install the Chromium SUID sandbox which is an executable that - Chromium may use in order to achieve sandboxing. + options.security.chromiumSuidSandbox.enable = mkOption { + type = types.bool; + default = false; + description = '' + Whether to install the Chromium SUID sandbox which is an executable that + Chromium may use in order to achieve sandboxing. - If you get the error "The SUID sandbox helper binary was found, but is not - configured correctly.", turning this on might help. + If you get the error "The SUID sandbox helper binary was found, but is not + configured correctly.", turning this on might help. - Also, if the URL chrome://sandbox tells you that "You are not adequately - sandboxed!", turning this on might resolve the issue. + Also, if the URL chrome://sandbox tells you that "You are not adequately + sandboxed!", turning this on might resolve the issue. - Finally, if you have enabled and you - use Chromium, you probably need this. - ''; + Finally, if you have enabled and you + use Chromium, you probably need this. + ''; + }; config = mkIf cfg.enable { environment.systemPackages = [ sandbox ]; -- cgit 1.4.1 From 1e8894f085f0fb9f323058bc7168a9073ef9f6bb Mon Sep 17 00:00:00 2001 From: Nikolay Amiantov Date: Mon, 8 Aug 2016 01:56:47 +0300 Subject: unity3d: use chromium-suid-sandbox --- nixos/modules/module-list.nix | 1 - nixos/modules/programs/unity3d.nix | 25 ------------------------- nixos/modules/rename.nix | 3 +++ pkgs/development/tools/unity3d/default.nix | 8 +++----- 4 files changed, 6 insertions(+), 31 deletions(-) delete mode 100644 nixos/modules/programs/unity3d.nix (limited to 'nixos/modules') diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 98af71e014dd..35a48ca601be 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -80,7 +80,6 @@ ./programs/ssh.nix ./programs/ssmtp.nix ./programs/tmux.nix - ./programs/unity3d.nix ./programs/venus.nix ./programs/wvdial.nix ./programs/xfs_quota.nix diff --git a/nixos/modules/programs/unity3d.nix b/nixos/modules/programs/unity3d.nix deleted file mode 100644 index 3c0ea26d9d56..000000000000 --- a/nixos/modules/programs/unity3d.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ config, lib, pkgs, ... }: - -with lib; - -let cfg = config.programs.unity3d; -in { - - options = { - programs.unity3d.enable = mkEnableOption "Unity3D, a game development tool"; - }; - - config = mkIf cfg.enable { - security.setuidOwners = [{ - program = "unity-chrome-sandbox"; - source = "${pkgs.unity3d.sandbox}/bin/unity-chrome-sandbox"; - owner = "root"; - #group = "root"; - setuid = true; - #setgid = true; - }]; - - environment.systemPackages = [ pkgs.unity3d ]; - }; - -} diff --git a/nixos/modules/rename.nix b/nixos/modules/rename.nix index 634f91a275d3..3f8a770cbce7 100644 --- a/nixos/modules/rename.nix +++ b/nixos/modules/rename.nix @@ -134,6 +134,9 @@ with lib; (mkRemovedOptionModule [ "security" "grsecurity" "config" "verboseVersion" ]) (mkRemovedOptionModule [ "security" "grsecurity" "config" "kernelExtraConfig" ]) + # Unity3D + (mkRenamedOptionModule [ "programs" "unity3d" "enable" ] [ "security" "chromiumSuidSandbox" "enable" ]) + # Options that are obsolete and have no replacement. (mkRemovedOptionModule [ "boot" "initrd" "luks" "enable" ]) (mkRemovedOptionModule [ "programs" "bash" "enable" ]) diff --git a/pkgs/development/tools/unity3d/default.nix b/pkgs/development/tools/unity3d/default.nix index 8f89770ffc85..0a72e6bb91eb 100644 --- a/pkgs/development/tools/unity3d/default.nix +++ b/pkgs/development/tools/unity3d/default.nix @@ -4,7 +4,7 @@ , cairo, dbus, expat, zlib, libpng12, nodejs, gnutar, gcc, gcc_32bit , libX11, libXcursor, libXdamage, libXfixes, libXrender, libXi , libXcomposite, libXext, libXrandr, libXtst, libSM, libICE, libxcb -, mono, libgnomeui, gnome_vfs, gnome-sharp, gtk-sharp +, mono, libgnomeui, gnome_vfs, gnome-sharp, gtk-sharp, chromium }: let @@ -44,7 +44,7 @@ in stdenv.mkDerivation rec { nativeBuildInputs = [ makeWrapper fakeroot file getopt ]; - outputs = [ "out" "monodevelop" "sandbox" ]; + outputs = [ "out" "monodevelop" ]; unpackPhase = '' echo -e 'q\ny' | fakeroot sh $src @@ -91,12 +91,10 @@ in stdenv.mkDerivation rec { ''; installPhase = '' - install -Dm755 Editor/chrome-sandbox $sandbox/bin/unity-chrome-sandbox - unitydir="$out/opt/Unity/Editor" mkdir -p $unitydir mv Editor/* $unitydir - ln -sf /var/setuid-wrappers/unity-chrome-sandbox $unitydir/chrome-sandbox + ln -sf /var/setuid-wrappers/${chromium.sandboxExecutableName} $unitydir/chrome-sandbox mkdir -p $out/share/applications sed "/^Exec=/c\Exec=$out/bin/unity-editor" \ -- cgit 1.4.1 From 85ed3ca9c7bf12d0095aa36c79d7d98c751fe429 Mon Sep 17 00:00:00 2001 From: Profpatsch Date: Mon, 8 Aug 2016 13:36:30 +0200 Subject: libinput.accelProfile: improve docs & new default MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The link to some (of course non-existing, i.e. freedesktop) “libinput” documentation is replaced by a piece of the API documentation. The default is changed since the documentation suggests `adaptive` should be it. https://wayland.freedesktop.org/libinput/doc/latest/group__config.html#gad63796972347f318b180e322e35cee79 Also fix a missing string conversion for `scrollButton`. --- nixos/doc/manual/release-notes/rl-1609.xml | 7 +++++++ nixos/modules/services/x11/hardware/libinput.nix | 21 +++++++++++++-------- 2 files changed, 20 insertions(+), 8 deletions(-) (limited to 'nixos/modules') diff --git a/nixos/doc/manual/release-notes/rl-1609.xml b/nixos/doc/manual/release-notes/rl-1609.xml index 7a85d5cd5cbc..8dd4e1a9f642 100644 --- a/nixos/doc/manual/release-notes/rl-1609.xml +++ b/nixos/doc/manual/release-notes/rl-1609.xml @@ -51,6 +51,13 @@ following incompatible changes: gitlab-run and gitlab-rake scripts because gitlab-runner is a component of Gitlab CI. + + services.xserver.libinput.accelProfile default + changed from flat to adaptive, + as per + official documentation. + + diff --git a/nixos/modules/services/x11/hardware/libinput.nix b/nixos/modules/services/x11/hardware/libinput.nix index 47ce9e566045..b358550ba41d 100644 --- a/nixos/modules/services/x11/hardware/libinput.nix +++ b/nixos/modules/services/x11/hardware/libinput.nix @@ -25,16 +25,21 @@ in { accelProfile = mkOption { type = types.enum [ "flat" "adaptive" ]; - default = "flat"; - example = "adaptive"; + default = "adaptive"; + example = "flat"; description = '' - Sets the pointer acceleration profile to the given profile. Permitted values are adaptive, flat. - Not all devices support this option or all profiles. If a profile is unsupported, the default profile - for this is used. For a description on the profiles and their behavior, see the libinput documentation. + Sets the pointer acceleration profile to the given profile. + Permitted values are adaptive, flat. + Not all devices support this option or all profiles. + If a profile is unsupported, the default profile for this is used. + flat: Pointer motion is accelerated by a constant + (device-specific) factor, depending on the current speed. + adaptive: Pointer acceleration depends on the input speed. + This is the default profile for most devices. ''; - }; - + }; + accelSpeed = mkOption { type = types.nullOr types.string; default = null; @@ -216,7 +221,7 @@ in { Option "LeftHanded" "${xorgBool cfg.leftHanded}" Option "MiddleEmulation" "${xorgBool cfg.middleEmulation}" Option "NaturalScrolling" "${xorgBool cfg.naturalScrolling}" - ${optionalString (cfg.scrollButton != null) ''Option "ScrollButton" "${cfg.scrollButton}"''} + ${optionalString (cfg.scrollButton != null) ''Option "ScrollButton" "${toString cfg.scrollButton}"''} Option "ScrollMethod" "${cfg.scrollMethod}" Option "HorizontalScrolling" "${xorgBool cfg.horizontalScrolling}" Option "SendEventsMode" "${cfg.sendEventsMode}" -- cgit 1.4.1 From ee36bb85886e4a6be1b172f5ec692727a8fe5893 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Mon, 8 Aug 2016 09:28:17 -0500 Subject: nixos/stage-1: fix antiquotation --- nixos/modules/system/boot/stage-1.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'nixos/modules') diff --git a/nixos/modules/system/boot/stage-1.nix b/nixos/modules/system/boot/stage-1.nix index 21a49d45789e..a74cfafdd37f 100644 --- a/nixos/modules/system/boot/stage-1.nix +++ b/nixos/modules/system/boot/stage-1.nix @@ -90,7 +90,7 @@ let [ ! -f "$out/lib/$(basename $LIB)" ] && cp -pdv $LIB $out/lib while [ "$(readlink $LIB)" != "" ]; do LINK="$(readlink $LIB)" - if [ "${LINK:0:1}" != "/" ]; then + if [ "''${LINK:0:1}" != "/" ]; then LINK="$(dirname $LIB)/$LINK" fi LIB="$LINK" -- cgit 1.4.1 From 68922e3f7407c5aecd8cc9cc3d22d753269b3f31 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Mon, 8 Aug 2016 09:45:45 -0500 Subject: nixos/stage-1: use `readlink -e` in builder The builder has this convoluted `while` loop which just replicates `readlink -e`. I'm sure there was a reason at one point, because the loop has been there since time immemorial. It kept getting copied around, I suspect because nobody bothered to understand what it actually did. Incidentally, this fixes #17513, but I have no idea why. --- nixos/modules/system/boot/stage-1.nix | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) (limited to 'nixos/modules') diff --git a/nixos/modules/system/boot/stage-1.nix b/nixos/modules/system/boot/stage-1.nix index a74cfafdd37f..70429e9c0a22 100644 --- a/nixos/modules/system/boot/stage-1.nix +++ b/nixos/modules/system/boot/stage-1.nix @@ -87,15 +87,11 @@ let LDD="$(ldd $BIN)" || continue LIBS="$(echo "$LDD" | awk '{print $3}' | sed '/^$/d')" for LIB in $LIBS; do - [ ! -f "$out/lib/$(basename $LIB)" ] && cp -pdv $LIB $out/lib - while [ "$(readlink $LIB)" != "" ]; do - LINK="$(readlink $LIB)" - if [ "''${LINK:0:1}" != "/" ]; then - LINK="$(dirname $LIB)/$LINK" - fi - LIB="$LINK" - [ ! -f "$out/lib/$(basename $LIB)" ] && cp -pdv $LIB $out/lib - done + TGT="$out/lib/$(basename $LIB)" + if [ ! -f "$TGT" ]; then + SRC="$(readlink -e $LIB)" + cp -pdv "$SRC" "$TGT" + fi done done -- cgit 1.4.1 From b0b0a45bb1277e77528a0216a0f697540ef659a6 Mon Sep 17 00:00:00 2001 From: Robin Gloster Date: Tue, 9 Aug 2016 11:59:10 +0000 Subject: nginx module: fix cfg.config backwards compatibility fixes #17604 --- nixos/modules/services/web-servers/nginx/default.nix | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'nixos/modules') diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index 8385d8e60266..2bd19f16a160 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -18,7 +18,7 @@ let ${cfg.config} - ${optionalString (cfg.httpConfig == "") '' + ${optionalString (cfg.httpConfig == "" && cfg.config == "") '' http { include ${cfg.package}/conf/mime.types; include ${cfg.package}/conf/fastcgi.conf; @@ -233,9 +233,12 @@ in }; config = mkOption { - default = "events {}"; + default = ""; description = " Verbatim nginx.conf configuration. + This is mutually exclusive with the structured configuration + via virtualHosts and the recommendedXyzSettings configuration + options. See appendConfig for appending to the generated http block. "; }; @@ -268,8 +271,8 @@ in default = ""; description = " Configuration lines to be appended to the generated http block. - This is mutually exclusive with using httpConfig for specifying the whole - http block verbatim. + This is mutually exclusive with using config and httpConfig for + specifying the whole http block verbatim. "; }; -- cgit 1.4.1 From 55d881eea334049dbb6ac10623bb895363857fca Mon Sep 17 00:00:00 2001 From: aszlig Date: Tue, 9 Aug 2016 14:11:29 +0200 Subject: Revert adding .git-revision unconditionally This reverts commit 1e534e234b0a92bf06361fa41b7ac8691fdbc769. We already should have a .git directory if it is managed via Git, otherwise there is no way to get the Git revision if neither .git-revision or .git is present. But having .git-revision _and_ .git present seems very much redundant to me. Signed-off-by: aszlig Cc: @bennofs, @Profpatsch Issue: #17218 --- nixos/modules/installer/tools/get-git-revision | 22 ---------------------- nixos/modules/installer/tools/get-version-suffix | 22 ++++++++++++++++++++++ nixos/modules/installer/tools/nixos-rebuild.sh | 7 +++---- 3 files changed, 25 insertions(+), 26 deletions(-) delete mode 100644 nixos/modules/installer/tools/get-git-revision create mode 100644 nixos/modules/installer/tools/get-version-suffix (limited to 'nixos/modules') diff --git a/nixos/modules/installer/tools/get-git-revision b/nixos/modules/installer/tools/get-git-revision deleted file mode 100644 index b57d9cf9fa08..000000000000 --- a/nixos/modules/installer/tools/get-git-revision +++ /dev/null @@ -1,22 +0,0 @@ -getVersion() { - local dir="$1" - rev= - if [ -e "$dir/.git" ]; then - if [ -z "$(type -P git)" ]; then - echo "warning: Git not found; cannot figure out revision of $dir" >&2 - return - fi - cd "$dir" - rev=$(git rev-parse --short HEAD) - if git describe --always --dirty | grep -q dirty; then - rev+=M - fi - fi -} - -if nixpkgs=$(nix-instantiate --find-file nixpkgs "$@"); then - getVersion $nixpkgs - if [ -n "$rev" ]; then - echo "$rev" - fi -fi diff --git a/nixos/modules/installer/tools/get-version-suffix b/nixos/modules/installer/tools/get-version-suffix new file mode 100644 index 000000000000..b8972cd57d22 --- /dev/null +++ b/nixos/modules/installer/tools/get-version-suffix @@ -0,0 +1,22 @@ +getVersion() { + local dir="$1" + rev= + if [ -e "$dir/.git" ]; then + if [ -z "$(type -P git)" ]; then + echo "warning: Git not found; cannot figure out revision of $dir" >&2 + return + fi + cd "$dir" + rev=$(git rev-parse --short HEAD) + if git describe --always --dirty | grep -q dirty; then + rev+=M + fi + fi +} + +if nixpkgs=$(nix-instantiate --find-file nixpkgs "$@"); then + getVersion $nixpkgs + if [ -n "$rev" ]; then + echo ".git.$rev" + fi +fi diff --git a/nixos/modules/installer/tools/nixos-rebuild.sh b/nixos/modules/installer/tools/nixos-rebuild.sh index 80a4537375c4..5ecdcdb3cdb5 100644 --- a/nixos/modules/installer/tools/nixos-rebuild.sh +++ b/nixos/modules/installer/tools/nixos-rebuild.sh @@ -311,10 +311,9 @@ fi # nixos-version shows something useful). if [ -n "$canRun" ]; then if nixpkgs=$(nix-instantiate --find-file nixpkgs "${extraBuildFlags[@]}"); then - revision=$($SHELL $nixpkgs/nixos/modules/installer/tools/get-git-revision "${extraBuildFlags[@]}" || true) - if [ -n "$revision" ]; then - echo -n ".git.$revision" > "$nixpkgs/.version-suffix" || true - echo -n "$revision" > "$nixpkgs/.git-revision" || true + suffix=$($SHELL $nixpkgs/nixos/modules/installer/tools/get-version-suffix "${extraBuildFlags[@]}" || true) + if [ -n "$suffix" ]; then + echo -n "$suffix" > "$nixpkgs/.version-suffix" || true fi fi fi -- cgit 1.4.1 From 0b9d9eded15e13079b1f0fef059ecb25bfb308c4 Mon Sep 17 00:00:00 2001 From: aszlig Date: Tue, 9 Aug 2016 14:15:53 +0200 Subject: nixos/version: Try to get Git revison from .git Let's first try if we can determine the Git revision from the .git directory and if that fails, fall back to get the info from the ".git-revision" file... and after that use something generic like "master". This should address #17218 in better way, because we don't need to create another redundant file in the source checkout of nixpkgs. I'm not going to route of falling back to using .git, because after 55d881e, we already have ".git-revision" files in people's Git repositories, which in turn means that nixos-version will report that old file every time even if the working tree has updated. Signed-off-by: aszlig Cc: @bennofs, Profpatsch Reported-by: @devhell Fixes: #17218 --- nixos/modules/misc/version.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'nixos/modules') diff --git a/nixos/modules/misc/version.nix b/nixos/modules/misc/version.nix index 6af310a9d877..2ecdbdbf3925 100644 --- a/nixos/modules/misc/version.nix +++ b/nixos/modules/misc/version.nix @@ -63,7 +63,9 @@ in nixosRevision = mkOption { internal = true; type = types.str; - default = if pathExists revisionFile then fileContents revisionFile else "master"; + default = if pathIsDirectory gitRepo then commitIdFromGitRepo gitRepo + else if pathExists revisionFile then fileContents revisionFile + else "master"; description = "The Git revision from which this NixOS configuration was built."; }; -- cgit 1.4.1 From 3cf5d5ebed8c7c20f0da1ec3bc66388f1886b8ec Mon Sep 17 00:00:00 2001 From: Robin Gloster Date: Tue, 9 Aug 2016 17:09:47 +0000 Subject: nginx module: fixup events in config --- nixos/modules/services/web-servers/nginx/default.nix | 3 +++ 1 file changed, 3 insertions(+) (limited to 'nixos/modules') diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index 2bd19f16a160..af7753470de6 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -19,6 +19,8 @@ let ${cfg.config} ${optionalString (cfg.httpConfig == "" && cfg.config == "") '' + events {} + http { include ${cfg.package}/conf/mime.types; include ${cfg.package}/conf/fastcgi.conf; @@ -96,6 +98,7 @@ let }''} ${optionalString (cfg.httpConfig != "") '' + events {} http { include ${cfg.package}/conf/mime.types; include ${cfg.package}/conf/fastcgi.conf; -- cgit 1.4.1 From 57b7c3c545f35385dbe5a1eab44028f9233b736e Mon Sep 17 00:00:00 2001 From: obadz Date: Sun, 7 Aug 2016 01:17:41 +0100 Subject: nixos-install: more robust way of sourcing fresh version of self --- nixos/modules/installer/tools/nixos-rebuild.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'nixos/modules') diff --git a/nixos/modules/installer/tools/nixos-rebuild.sh b/nixos/modules/installer/tools/nixos-rebuild.sh index 5ecdcdb3cdb5..e26a9f6cf635 100644 --- a/nixos/modules/installer/tools/nixos-rebuild.sh +++ b/nixos/modules/installer/tools/nixos-rebuild.sh @@ -214,9 +214,9 @@ fi # Re-execute nixos-rebuild from the Nixpkgs tree. if [ -z "$_NIXOS_REBUILD_REEXEC" -a -n "$canRun" ]; then - if p=$(nix-instantiate --find-file nixpkgs/nixos/modules/installer/tools/nixos-rebuild.sh "${extraBuildFlags[@]}"); then + if p=$(nix-build --no-out-link --expr 'with import {}; config.system.build.nixos-rebuild' "${extraBuildFlags[@]}"); then export _NIXOS_REBUILD_REEXEC=1 - exec $SHELL -e $p "${origArgs[@]}" + exec $p/bin/nixos-rebuild "${origArgs[@]}" exit 1 fi fi -- cgit 1.4.1 From 582313bafef4c81cb6df2dcf2ece4757eb5c8082 Mon Sep 17 00:00:00 2001 From: obadz Date: Sun, 7 Aug 2016 01:25:06 +0100 Subject: nixos: remove rsync from base install and add explicit path in nixos-install As per https://github.com/NixOS/nixpkgs/commit/60b3f95ad86826faf95680a3529ced1c322d4d87#commitcomment-18507812 --- nixos/modules/config/system-path.nix | 1 - nixos/modules/installer/tools/nixos-install.sh | 2 +- nixos/modules/installer/tools/tools.nix | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) (limited to 'nixos/modules') diff --git a/nixos/modules/config/system-path.nix b/nixos/modules/config/system-path.nix index 3054439da655..9708b5d9fe33 100644 --- a/nixos/modules/config/system-path.nix +++ b/nixos/modules/config/system-path.nix @@ -34,7 +34,6 @@ let config.programs.ssh.package pkgs.perl pkgs.procps - pkgs.rsync pkgs.strace pkgs.su pkgs.time diff --git a/nixos/modules/installer/tools/nixos-install.sh b/nixos/modules/installer/tools/nixos-install.sh index ae9f3a892950..0247925f4144 100644 --- a/nixos/modules/installer/tools/nixos-install.sh +++ b/nixos/modules/installer/tools/nixos-install.sh @@ -175,7 +175,7 @@ if ! NIX_DB_DIR=$mountPoint/nix/var/nix/db nix-store --check-validity @nix@ 2> / for i in $(@perl@/bin/perl @pathsFromGraph@ @nixClosure@); do echo " $i" chattr -R -i $mountPoint/$i 2> /dev/null || true # clear immutable bit - rsync -a $i $mountPoint/nix/store/ + @rsync@/bin/rsync -a $i $mountPoint/nix/store/ done # Register the paths in the Nix closure as valid. This is necessary diff --git a/nixos/modules/installer/tools/tools.nix b/nixos/modules/installer/tools/tools.nix index d8622b510522..a55c03bd9528 100644 --- a/nixos/modules/installer/tools/tools.nix +++ b/nixos/modules/installer/tools/tools.nix @@ -21,7 +21,7 @@ let name = "nixos-install"; src = ./nixos-install.sh; - inherit (pkgs) perl pathsFromGraph; + inherit (pkgs) perl pathsFromGraph rsync; nix = config.nix.package.out; cacert = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"; -- cgit 1.4.1 From 5ccfe7e8f281dd93b0e34b53a463149e0859ff17 Mon Sep 17 00:00:00 2001 From: Domen Kožar Date: Wed, 10 Aug 2016 16:12:05 +0200 Subject: fix manual evaluation --- nixos/modules/services/databases/cassandra.nix | 1 + 1 file changed, 1 insertion(+) (limited to 'nixos/modules') diff --git a/nixos/modules/services/databases/cassandra.nix b/nixos/modules/services/databases/cassandra.nix index 3f3733a8e80f..3c41e3becb90 100644 --- a/nixos/modules/services/databases/cassandra.nix +++ b/nixos/modules/services/databases/cassandra.nix @@ -133,6 +133,7 @@ in { jre = mkOption { description = "JRE package to run cassandra service."; default = pkgs.jre; + defaultText = "pkgs.jre"; type = types.package; }; user = mkOption { -- cgit 1.4.1 From 52a875fb2329c55070e86e3f85f1d788df10c2c5 Mon Sep 17 00:00:00 2001 From: obadz Date: Wed, 10 Aug 2016 15:46:56 +0100 Subject: further fix manual evaluation cc @cransom @domenkozar See also 9ecc587 5ccfe7e --- nixos/modules/services/databases/cassandra.nix | 3 +++ 1 file changed, 3 insertions(+) (limited to 'nixos/modules') diff --git a/nixos/modules/services/databases/cassandra.nix b/nixos/modules/services/databases/cassandra.nix index 3c41e3becb90..c98af617587d 100644 --- a/nixos/modules/services/databases/cassandra.nix +++ b/nixos/modules/services/databases/cassandra.nix @@ -128,6 +128,7 @@ in { package = mkOption { description = "Cassandra package to use."; default = pkgs.cassandra; + defaultText = "pkgs.cassandra"; type = types.package; }; jre = mkOption { @@ -149,6 +150,7 @@ in { envFile = mkOption { description = "path to cassandra-env.sh"; default = "${cassandraPackage}/conf/cassandra-env.sh"; + defaultText = "\${cassandraPackage}/conf/cassandra-env.sh"; type = types.path; }; clusterName = mkOption { @@ -190,6 +192,7 @@ in { }; envScript = mkOption { default = "${cassandraPackage}/conf/cassandra-env.sh"; + defaultText = "\${cassandraPackage}/conf/cassandra-env.sh"; type = types.path; description = "Supply your own cassandra-env.sh rather than using the default"; }; -- cgit 1.4.1 From 8750b4892ef1004e2cbe4b70e8fa83206b75c76b Mon Sep 17 00:00:00 2001 From: Shawn Warren Date: Wed, 10 Aug 2016 10:10:13 -0500 Subject: bump gocd-agent version to 16.6.0-3590 (#17311) Update gocd-agent package version to 16.6.0-3590 including new sha. Modify heapSize and maxMemory mkOption to accurately reflect their intended purpose of configuring initial java heap sizes. --- .../services/continuous-integration/gocd-agent/default.nix | 14 +++++++------- nixos/tests/gocd-agent.nix | 10 ++++++++-- .../tools/continuous-integration/gocd-agent/default.nix | 8 ++++---- 3 files changed, 19 insertions(+), 13 deletions(-) (limited to 'nixos/modules') diff --git a/nixos/modules/services/continuous-integration/gocd-agent/default.nix b/nixos/modules/services/continuous-integration/gocd-agent/default.nix index 36f6527ee47b..bc6c6d5a2582 100644 --- a/nixos/modules/services/continuous-integration/gocd-agent/default.nix +++ b/nixos/modules/services/continuous-integration/gocd-agent/default.nix @@ -36,7 +36,7 @@ in { }; packages = mkOption { - default = [ pkgs.stdenv pkgs.jre config.programs.ssh.package pkgs.nix ]; + default = [ pkgs.stdenv pkgs.jre pkgs.git config.programs.ssh.package pkgs.nix ]; type = types.listOf types.package; description = '' Packages to add to PATH for the Go.CD agent process. @@ -80,26 +80,26 @@ in { ''; }; - heapSize = mkOption { + initialJavaHeapSize = mkOption { default = "128m"; type = types.str; description = '' - Specifies the java heap memory size for the Go.CD agent java process. + Specifies the initial java heap memory size for the Go.CD agent java process. ''; }; - maxMemory = mkOption { + maxJavaHeapMemory = mkOption { default = "256m"; type = types.str; description = '' - Specifies the java maximum memory size for the Go.CD agent java process. + Specifies the java maximum heap memory size for the Go.CD agent java process. ''; }; startupOptions = mkOption { default = [ - "-Xms${cfg.heapSize}" - "-Xmx${cfg.maxMemory}" + "-Xms${cfg.initialJavaHeapSize}" + "-Xmx${cfg.maxJavaHeapMemory}" "-Djava.io.tmpdir=/tmp" "-Dcruise.console.publish.interval=10" "-Djava.security.egd=file:/dev/./urandom" diff --git a/nixos/tests/gocd-agent.nix b/nixos/tests/gocd-agent.nix index d5ed0f65ab01..34d0a800d092 100644 --- a/nixos/tests/gocd-agent.nix +++ b/nixos/tests/gocd-agent.nix @@ -4,10 +4,15 @@ # 3. GoCD agent is available on GoCD server using GoCD API # 3.1. https://api.go.cd/current/#get-all-agents +let + serverUrl = "localhost:8153/go/api/agents"; + header = "Accept: application/vnd./go.cd/v2+json"; +in + import ./make-test.nix ({ pkgs, ...} : { name = "gocd-agent"; meta = with pkgs.stdenv.lib.maintainers; { - maintainers = [ swarren83 ]; + maintainers = [ grahamc swarren83 ]; }; nodes = { @@ -29,6 +34,7 @@ nodes = { $gocd_agent->waitForUnit("gocd-server"); $gocd_agent->waitForOpenPort("8153"); $gocd_agent->waitForUnit("gocd-agent"); - $gocd_agent->waitUntilSucceeds("curl -s -f localhost:8153/go/api/agents -H 'Accept: application/vnd.go.cd.v2+json'"); + $gocd_agent->waitUntilSucceeds("curl -s -f ${serverUrl} -H '${header}' | awk -F \" '/\"uuid\":\s\"[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12}/ {print $4}'"); + $gocd_agent->waitUntilSucceeds("curl -s -f ${serverUrl} -H '${header}' | awk -F \" '/\"agent_state\":\s\"Idle\"/'"); ''; }) diff --git a/pkgs/development/tools/continuous-integration/gocd-agent/default.nix b/pkgs/development/tools/continuous-integration/gocd-agent/default.nix index 170f07ca5c3d..94938c2626a5 100644 --- a/pkgs/development/tools/continuous-integration/gocd-agent/default.nix +++ b/pkgs/development/tools/continuous-integration/gocd-agent/default.nix @@ -2,19 +2,19 @@ stdenv.mkDerivation rec { name = "gocd-agent-${version}-${rev}"; - version = "16.5.0"; - rev = "3305"; + version = "16.6.0"; + rev = "3590"; src = fetchurl { url = "https://download.go.cd/binaries/${version}-${rev}/generic/go-agent-${version}-${rev}.zip"; - sha256 = "2cb988d36ec747b2917f3be040b430f2a8289c07353a6b6bdc95bf741fa1ed97"; + sha256 = "ee076c62b388a6ed88d5065f18a4a96cb0d3161f693c16f920d85886d295ff27"; }; meta = with stdenv.lib; { description = "A continuous delivery server specializing in advanced workflow modeling and visualization"; homepage = http://www.go.cd; license = licenses.asl20; platforms = platforms.all; - maintainers = with maintainers; [ swarren83 ]; + maintainers = with maintainers; [ grahamc swarren83 ]; }; buildInputs = [ unzip ]; -- cgit 1.4.1 From dc7e32e618bbc962ddbdd03b596966a1deac5fb4 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 10 Aug 2016 18:09:40 +0200 Subject: Revert "command-not-found: disable module until it's fixed again" This reverts commit 2a3c0ca3d5ab0fe9aaa312199b3cad5bc9a01934. --- nixos/modules/module-list.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'nixos/modules') diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 9d1823849916..36ec26519654 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -62,8 +62,7 @@ ./programs/bash/bash.nix ./programs/blcr.nix ./programs/cdemu.nix - # see https://github.com/NixOS/nixos-channel-scripts/issues/4 - #./programs/command-not-found/command-not-found.nix + ./programs/command-not-found/command-not-found.nix ./programs/dconf.nix ./programs/environment.nix ./programs/freetds.nix -- cgit 1.4.1 From d969f3fa5110b458bbfe5d12774024a6329a6580 Mon Sep 17 00:00:00 2001 From: Graham Christensen Date: Wed, 10 Aug 2016 15:47:29 -0400 Subject: gocd-agent: 16.7.0 startup fixes + test improvements - Agent now takes a full URL to the Go.CD server - Instruct the agent to attempt restart every 30s upon failure - Test's Accept header did not match the server's expectation - Replace the tests' complex Awk matches with calls to `jq` --- .../continuous-integration/gocd-agent/default.nix | 23 ++++++----------- nixos/tests/gocd-agent.nix | 30 +++++++++++----------- 2 files changed, 23 insertions(+), 30 deletions(-) (limited to 'nixos/modules') diff --git a/nixos/modules/services/continuous-integration/gocd-agent/default.nix b/nixos/modules/services/continuous-integration/gocd-agent/default.nix index bc6c6d5a2582..21f319f7fcf6 100644 --- a/nixos/modules/services/continuous-integration/gocd-agent/default.nix +++ b/nixos/modules/services/continuous-integration/gocd-agent/default.nix @@ -57,18 +57,10 @@ in { }; goServer = mkOption { - default = "127.0.0.1"; + default = "https://127.0.0.1:8154/go"; type = types.str; description = '' - Address of GoCD Server to attach the Go.CD Agent to. - ''; - }; - - goServerPort = mkOption { - default = 8153; - type = types.int; - description = '' - Port that Go.CD Server is Listening on. + URL of the GoCD Server to attach the Go.CD Agent to. ''; }; @@ -112,8 +104,8 @@ in { extraOptions = mkOption { default = [ ]; - example = [ - "-X debug" + example = [ + "-X debug" "-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5006" "-verbose:gc" "-Xloggc:go-agent-gc.log" @@ -170,7 +162,7 @@ in { config.environment.sessionVariables; in selectedSessionVars // - { + { NIX_REMOTE = "daemon"; AGENT_WORK_DIR = cfg.workDir; AGENT_STARTUP_ARGS = ''${concatStringsSep " " cfg.startupOptions}''; @@ -199,13 +191,14 @@ in { ${pkgs.jre}/bin/java ${concatStringsSep " " cfg.startupOptions} \ ${concatStringsSep " " cfg.extraOptions} \ -jar ${pkgs.gocd-agent}/go-agent/agent-bootstrapper.jar \ - ${cfg.goServer} \ - ${toString cfg.goServerPort} + -serverUrl ${cfg.goServer} ''; serviceConfig = { User = cfg.user; WorkingDirectory = cfg.workDir; + RestartSec = 30; + Restart = "on-failure"; }; }; }; diff --git a/nixos/tests/gocd-agent.nix b/nixos/tests/gocd-agent.nix index 34d0a800d092..b1282acdb044 100644 --- a/nixos/tests/gocd-agent.nix +++ b/nixos/tests/gocd-agent.nix @@ -6,7 +6,7 @@ let serverUrl = "localhost:8153/go/api/agents"; - header = "Accept: application/vnd./go.cd/v2+json"; + header = "Accept: application/vnd.go.cd.v2+json"; in import ./make-test.nix ({ pkgs, ...} : { @@ -15,26 +15,26 @@ import ./make-test.nix ({ pkgs, ...} : { maintainers = [ grahamc swarren83 ]; }; -nodes = { - gocd_agent = - { config, pkgs, ... }: - { - virtualisation.memorySize = 2048; - services.gocd-agent = { - enable = true; + nodes = { + gocd_agent = + { config, pkgs, ... }: + { + virtualisation.memorySize = 2048; + services.gocd-agent = { + enable = true; + }; + services.gocd-server = { + enable = true; + }; }; - services.gocd-server = { - enable = true; - }; - }; -}; + }; testScript = '' startAll; $gocd_agent->waitForUnit("gocd-server"); $gocd_agent->waitForOpenPort("8153"); $gocd_agent->waitForUnit("gocd-agent"); - $gocd_agent->waitUntilSucceeds("curl -s -f ${serverUrl} -H '${header}' | awk -F \" '/\"uuid\":\s\"[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12}/ {print $4}'"); - $gocd_agent->waitUntilSucceeds("curl -s -f ${serverUrl} -H '${header}' | awk -F \" '/\"agent_state\":\s\"Idle\"/'"); + $gocd_agent->waitUntilSucceeds("curl ${serverUrl} -H '${header}' | ${pkgs.jq}/bin/jq -e ._embedded.agents[0].uuid"); + $gocd_agent->succeed("curl ${serverUrl} -H '${header}' | ${pkgs.jq}/bin/jq -e ._embedded.agents[0].agent_state | grep -q Idle"); ''; }) -- cgit 1.4.1