panamax: new package and service

This commit is contained in:
Matej Cotman 2014-12-08 10:02:57 +01:00
parent 73c43b4e4f
commit 8c79a2df63
8 changed files with 1213 additions and 0 deletions

View file

@ -177,6 +177,8 @@
cadvisor = 167;
nylon = 168;
apache-kafka = 169;
panamax = 170;
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
nixbld = 30000; # start of range of uids
@ -315,6 +317,7 @@
kubernetes = 162;
gitlab = 165;
nylon = 166;
panamax = 170;
# When adding a gid, make sure it doesn't match an existing
# uid. Users and groups with the same name should have equal

View file

@ -104,6 +104,7 @@
./services/backup/tarsnap.nix
./services/cluster/fleet.nix
./services/cluster/kubernetes.nix
./services/cluster/panamax.nix
./services/computing/torque/server.nix
./services/computing/torque/mom.nix
./services/continuous-integration/jenkins/default.nix

View file

@ -0,0 +1,122 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.panamax;
panamax_api = pkgs.panamax_api.override { dataDir = cfg.dataDir+"/api"; };
panamax_ui = pkgs.panamax_ui.override { dataDir = cfg.dataDir+"/ui"; };
in {
##### Interface
options.services.panamax = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Whether to enable Panamax service.
'';
};
UIPort = mkOption {
type = types.int;
default = 8888;
description = ''
Panamax UI listening port.
'';
};
APIPort = mkOption {
type = types.int;
default = 3000;
description = ''
Panamax UI listening port.
'';
};
dataDir = mkOption {
type = types.str;
default = "/var/lib/panamax";
description = ''
Data dir for Panamax.
'';
};
fleetctlEndpoint = mkOption {
type = types.str;
default = "http://127.0.0.1:4001";
description = ''
Fleetctl endpoint.
'';
};
journalEndpoint = mkOption {
type = types.str;
default = "http://127.0.0.1:19531";
description = ''
Journal endpoint.
'';
};
secretKey = mkOption {
type = types.str;
default = "SomethingVeryLong.";
description = ''
Secret key (do change this).
'';
};
};
##### Implementation
config = mkIf cfg.enable {
systemd.services.panamax_api = {
description = "Panamax API";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" "fleet.service" "etcd.service" "docker.service" ];
environment = {
JOURNAL_ENDPOINT = cfg.journalEndpoint;
FLEETCTL_ENDPOINT = cfg.fleetctlEndpoint;
};
preStart = "${panamax_api}/bin/panamax-api-init";
serviceConfig = {
ExecStart = "${panamax_api}/bin/panamax-api-run --port ${toString cfg.APIPort}";
User = "panamax";
Group = "panamax";
};
};
systemd.services.panamax_ui = {
description = "Panamax UI";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" "panamax_api.service" ];
environment = {
JOURNAL_ENDPOINT = cfg.journalEndpoint;
PMX_API_PORT_3000_TCP_PORT = toString cfg.APIPort;
SECRET_KEY_BASE = cfg.secretKey;
};
serviceConfig = {
ExecStart = "${panamax_ui}/bin/panamax-ui-run --port ${toString cfg.UIPort}";
User = "panamax";
Group = "panamax";
};
};
users.extraUsers.panamax =
{ uid = config.ids.uids.panamax;
description = "Panamax user";
createHome = true;
home = cfg.dataDir;
extraGroups = [ "docker" ];
};
services.journald.enableHttpGateway = mkDefault true;
services.fleet.enable = mkDefault true;
virtualisation.docker.enable = mkDefault true;
environment.systemPackages = [ panamax_api panamax_ui ];
users.extraGroups.panamax.gid = config.ids.gids.panamax;
};
}

View file

@ -0,0 +1,362 @@
[
{
name = "actionmailer";
hash = "05f36cd4897fd9229d89b09838edf0836dadab1065a2503a23eddd25a72a5b62";
url = "http://rubygems.org/downloads/actionmailer-4.1.7.gem";
version = "4.1.7";
}
{
name = "actionpack";
hash = "5dfd227ed14e755db89f3fe3778271a280560bf5550323309d3d190880b7c11f";
url = "http://rubygems.org/downloads/actionpack-4.1.7.gem";
version = "4.1.7";
}
{
name = "actionview";
hash = "5d8d50df260f7c0f65ee71fb0dcc8bb344b78d0ff7d26de4b152d8ebde19571b";
url = "http://rubygems.org/downloads/actionview-4.1.7.gem";
version = "4.1.7";
}
{
name = "active_model_serializers";
hash = "744e1a710f6fd44f9140152bbce911c6705e59fdfc29300f3fa152ce477f43f3";
url = "http://rubygems.org/downloads/active_model_serializers-0.9.0.gem";
version = "0.9.0";
}
{
name = "activemodel";
hash = "590288279d69fd6fba3a227275ca80a90131eb04e8d1381fbc7a1f5ac4ff9866";
url = "http://rubygems.org/downloads/activemodel-4.1.7.gem";
version = "4.1.7";
}
{
name = "activerecord";
hash = "c52f2d21892a38c0817cafa0028f65217f5986a57921fdd2af7cc92a46059948";
url = "http://rubygems.org/downloads/activerecord-4.1.7.gem";
version = "4.1.7";
}
{
name = "activesupport";
hash = "7a0d7b9c6e68b4cd01f9d686596aaf6671b0b16395cb97862f779666ccaf238e";
url = "http://rubygems.org/downloads/activesupport-4.1.7.gem";
version = "4.1.7";
}
{
name = "addressable";
hash = "e822c28133d151d450778bbcf1f6e7742d4c3aba54498eb0da33d80a3990ee8c";
url = "http://rubygems.org/downloads/addressable-2.3.6.gem";
version = "2.3.6";
}
{
name = "archive-tar-minitar";
hash = "2fe26844b314b8e2bd52ec16cff90e610b5c19075d1000161f8c8d3cc231c6c8";
url = "http://rubygems.org/downloads/archive-tar-minitar-0.5.2.gem";
version = "0.5.2";
}
{
name = "arel";
hash = "c941f07bad89af26e8837c73d8a399b7777c721609f759eda015ed0081601636";
url = "http://rubygems.org/downloads/arel-5.0.1.20140414130214.gem";
version = "5.0.1.20140414130214";
}
{
name = "builder";
hash = "62fb9ad70ea42219a0c8d209a30281803712c717df7cb8f5ce5f63b4d489d191";
url = "http://rubygems.org/downloads/builder-3.2.2.gem";
version = "3.2.2";
}
{
name = "coveralls";
hash = "449284ddd071e2297d06d0a9d18fe4c2b4027848263b1087d4180fb44e03e36b";
url = "http://rubygems.org/downloads/coveralls-0.7.0.gem";
version = "0.7.0";
}
{
name = "crack";
hash = "ea4c34f052106f571235f627f561d28309151c09b841130bb7627c2d522589c6";
url = "http://rubygems.org/downloads/crack-0.4.2.gem";
version = "0.4.2";
}
{
name = "database_cleaner";
hash = "f675eb78d4fed65ae1e8503ccef4dfd25f4a3c3702bfb792789720a39a2f82a7";
url = "http://rubygems.org/downloads/database_cleaner-1.3.0.gem";
version = "1.3.0";
}
{
name = "diff-lcs";
hash = "a1d3dde665292317a883d319066792e3f0e6a24cade4bc4cc47605d27664c9ed";
url = "http://rubygems.org/downloads/diff-lcs-1.2.5.gem";
version = "1.2.5";
}
{
name = "docile";
hash = "5d3ee40b3a6567fe460601f3f4a3e199a98de37434ebfa242d751d0c79181255";
url = "http://rubygems.org/downloads/docile-1.1.5.gem";
version = "1.1.5";
}
{
name = "docker-api";
hash = "e65a1a62d0d56c273e279eb96625084f6bca82467de22682539d1efb8e5059e5";
url = "http://rubygems.org/downloads/docker-api-1.13.0.gem";
version = "1.13.0";
}
{
name = "erubis";
hash = "63653f5174a7997f6f1d6f465fbe1494dcc4bdab1fb8e635f6216989fb1148ba";
url = "http://rubygems.org/downloads/erubis-2.7.0.gem";
version = "2.7.0";
}
{
name = "excon";
hash = "626b862a9f759a669dc62c57ccc8b3fc09c0e24af3431a6c0aa416acab56a717";
url = "http://rubygems.org/downloads/excon-0.37.0.gem";
version = "0.37.0";
}
{
name = "faraday";
hash = "289c3b5b57821b52988bdb5178d3e1149741f2bae5fbee2a80bc83feb44ba79d";
url = "http://rubygems.org/downloads/faraday-0.8.9.gem";
version = "0.8.9";
}
{
name = "faraday_middleware";
hash = "02b37848159983ed1e4374f46f02325bf0364e8eb1e0a38839d2b4deb4889bcf";
url = "http://rubygems.org/downloads/faraday_middleware-0.9.0.gem";
version = "0.9.0";
}
{
name = "fleet-api";
hash = "c6aad769ddd4adafa81f99661bf04e2f7176d05bdd5834e0afe67607d8af6604";
url = "http://rubygems.org/downloads/fleet-api-0.6.0.gem";
version = "0.6.0";
}
{
name = "hike";
hash = "154e2f2593845e5bcd8ed2ba3092600c55c6ad8c630722857de3fdaf334ccc44";
url = "http://rubygems.org/downloads/hike-1.2.3.gem";
version = "1.2.3";
}
{
name = "i18n";
hash = "b37dda25b30484f2674a851e24ae098a38564a61c976fa91a34bf8fceaa3923b";
url = "http://rubygems.org/downloads/i18n-0.6.11.gem";
version = "0.6.11";
}
{
name = "its";
hash = "0ffd70eda8958938f6568141fac1fb8a2b8899abbf2b867f45e4e21b936ebc67";
url = "http://rubygems.org/downloads/its-0.2.0.gem";
version = "0.2.0";
}
{
name = "json";
hash = "961bfbbfa9fda1e857e9c791e964e6664e0d43bf687b19669dfbc7cdbc5e0200";
url = "http://rubygems.org/downloads/json-1.8.1.gem";
version = "1.8.1";
}
{
name = "kmts";
hash = "1bb5e075232b3ed13aaa01db5e1e8e2638ae3a8aa6aa2254198f0e42304066f2";
url = "http://rubygems.org/downloads/kmts-2.0.1.gem";
version = "2.0.1";
}
{
name = "mail";
hash = "d7fee1ec4e4ea9bb38b77de5baf53c17004133efcdff030bd1de5e3620306fd9";
url = "http://rubygems.org/downloads/mail-2.6.3.gem";
version = "2.6.3";
}
{
name = "mime-types";
hash = "38f29a89a273d15bfb99e839c6fe5cf7c463f223dd7ac5ee3c9287b1acd6d19a";
url = "http://rubygems.org/downloads/mime-types-2.4.3.gem";
version = "2.4.3";
}
{
name = "minitest";
hash = "a41b54b1c6e64b102fe78bf265045896845c38177a10bdb32d04caf4e06542f3";
url = "http://rubygems.org/downloads/minitest-5.4.3.gem";
version = "5.4.3";
}
{
name = "multi_json";
hash = "2c98979877e87df0b338ebf5c86091b390f53d62c11a8232bd51ca007e0b82d2";
url = "http://rubygems.org/downloads/multi_json-1.10.1.gem";
version = "1.10.1";
}
{
name = "multipart-post";
hash = "ccf26a61706f128a2a3f3745aba0f79fde7b6fee068e03490eb189c2aaa5e78a";
url = "http://rubygems.org/downloads/multipart-post-1.2.0.gem";
version = "1.2.0";
}
{
name = "octokit";
hash = "cf8690111a706d493f1ace13c81ce966f6f1ba29bc4d4896d65f9c0d431f941e";
url = "http://rubygems.org/downloads/octokit-3.2.0.gem";
version = "3.2.0";
}
{
name = "puma";
hash = "13ac36ce9535ead0b6ebbd540b5fa99ea53126c0f697a5ce96aefb8d5c75a7d0";
url = "http://rubygems.org/downloads/puma-2.8.2.gem";
version = "2.8.2";
}
{
name = "rack";
hash = "e64af00234e8faaa69ea81ef4e3800f40743c69560f0dda8fc9969660e775fa7";
url = "http://rubygems.org/downloads/rack-1.5.2.gem";
version = "1.5.2";
}
{
name = "rack-test";
hash = "7e920b6aac888e4a3846e5997fb1cbf456bdb5846322b58dc31697a54a38b306";
url = "http://rubygems.org/downloads/rack-test-0.6.2.gem";
version = "0.6.2";
}
{
name = "rails";
hash = "20972f5ce418d5b938afa42680bcbe8c52770c0664429233fa0e567a25bd3515";
url = "http://rubygems.org/downloads/rails-4.1.7.gem";
version = "4.1.7";
}
{
name = "railties";
hash = "dfa7ef2174675c88492c62596bfe6d8aa78f3735305aaa372d5801f9328008d8";
url = "http://rubygems.org/downloads/railties-4.1.7.gem";
version = "4.1.7";
}
{
name = "rake";
hash = "887f72d6711c31576abab37f1f7db45972402cc8544fa9a67c06d2c0f0ef2028";
url = "http://rubygems.org/downloads/rake-10.4.0.gem";
version = "10.4.0";
}
{
name = "rest-client";
hash = "a3203433b8b0c914648caea54395a8791a61e0df7d401c81f4e2b7f8a8fac75a";
url = "http://rubygems.org/downloads/rest-client-1.6.7.gem";
version = "1.6.7";
}
{
name = "rspec-core";
hash = "89e1aed9b8b1c22d4bc0cbed25e163c10075731df87e2ea9736f1863e9e66a05";
url = "http://rubygems.org/downloads/rspec-core-3.1.7.gem";
version = "3.1.7";
}
{
name = "rspec-expectations";
hash = "f0db34c6b7f351031880e08e59c8902f0f037b0e0f7e52345b978667b9190d55";
url = "http://rubygems.org/downloads/rspec-expectations-3.1.2.gem";
version = "3.1.2";
}
{
name = "rspec-mocks";
hash = "f9d76c70a9c38171cdce7a64b871739cf73ec8647d6b70adfe44453a072fb33f";
url = "http://rubygems.org/downloads/rspec-mocks-3.1.3.gem";
version = "3.1.3";
}
{
name = "rspec-rails";
hash = "980fa827218f483a0efb5d22922b53b1006cbd58e38ec593bb2bb016ecb031ac";
url = "http://rubygems.org/downloads/rspec-rails-3.1.0.gem";
version = "3.1.0";
}
{
name = "rspec-support";
hash = "2b5fc899bb71019b7ed956105e8492c90f077641309d9c7c0e09669a72dac693";
url = "http://rubygems.org/downloads/rspec-support-3.1.2.gem";
version = "3.1.2";
}
{
name = "safe_yaml";
hash = "248193992ef1730a0c9ec579999ef2256a2b3a32a9bd9d708a1e12544a489ec2";
url = "http://rubygems.org/downloads/safe_yaml-1.0.4.gem";
version = "1.0.4";
}
{
name = "sawyer";
hash = "5bf41b23f93568f14ffdfe6d0d417048f2eb7e9ed11695a7654a3de0ee277406";
url = "http://rubygems.org/downloads/sawyer-0.5.4.gem";
version = "0.5.4";
}
{
name = "shoulda-matchers";
hash = "81554002d29e612e55daf2c45b40b617ad7a2186d8eebaec6946ea46da8672dc";
url = "http://rubygems.org/downloads/shoulda-matchers-2.6.1.gem";
version = "2.6.1";
}
{
name = "simplecov";
hash = "ce9ffc797f9e4493bf97bbf5e88073ad7351d8234561b56ea3bd2baa68a71e1a";
url = "http://rubygems.org/downloads/simplecov-0.9.1.gem";
version = "0.9.1";
}
{
name = "simplecov-html";
hash = "69393ce932c2898dd5074913e360078f651f094a9b7300b286a78f43b11c164a";
url = "http://rubygems.org/downloads/simplecov-html-0.8.0.gem";
version = "0.8.0";
}
{
name = "sprockets";
hash = "c25a4a37c9436e5a2c877b926156bce1826a0156d9cd96ca704ab085726ec2ae";
url = "http://rubygems.org/downloads/sprockets-2.12.3.gem";
version = "2.12.3";
}
{
name = "sprockets-rails";
hash = "148ea6c109605093f84725dee46f2943e973cdb602f83b93e540a93d35ee4e10";
url = "http://rubygems.org/downloads/sprockets-rails-2.2.0.gem";
version = "2.2.0";
}
{
name = "sqlite3";
hash = "9984744afb5f44ca4a82aec66e257ff60783920afd48f06606d1fb4a9d51a61e";
url = "http://rubygems.org/downloads/sqlite3-1.3.9.gem";
version = "1.3.9";
}
{
name = "term-ansicolor";
hash = "8b5caf6839a0c1bbf7a55a9d2fbd3c172f623fa05c427f9b3ea5d75bdfe14fa8";
url = "http://rubygems.org/downloads/term-ansicolor-1.3.0.gem";
version = "1.3.0";
}
{
name = "thor";
hash = "9ff834f031b5550c743bb8a3139317fefdae9cdebd02d60de376658f427fe522";
url = "http://rubygems.org/downloads/thor-0.19.1.gem";
version = "0.19.1";
}
{
name = "thread_safe";
hash = "16315baa971c48d00104bcd35e8934e3f9ccfd3b8f429e3fca7ee2dfd81734b2";
url = "http://rubygems.org/downloads/thread_safe-0.3.4.gem";
version = "0.3.4";
}
{
name = "tilt";
hash = "39820562c4f5db45fe18de87ccc30a0e77a998bf5334b1d8c10a2f7dbc1f5903";
url = "http://rubygems.org/downloads/tilt-1.4.1.gem";
version = "1.4.1";
}
{
name = "tins";
hash = "b1ad5c07aef3f26b80f329c701bfedf83f1bc560e7516e0ce284d774fd2caafb";
url = "http://rubygems.org/downloads/tins-1.3.0.gem";
version = "1.3.0";
}
{
name = "tzinfo";
hash = "fdb1d3fdf2776d490c82a0e589a08e7cbde70ac1ae7d2b1f0b7e77f3e6b801b0";
url = "http://rubygems.org/downloads/tzinfo-1.2.2.gem";
version = "1.2.2";
}
{
name = "webmock";
hash = "d544830ab2203e2796ab55fbee6859d8e248c7e6deeadb4fa74448f63bd8852e";
url = "http://rubygems.org/downloads/webmock-1.20.0.gem";
version = "1.20.0";
}
]

View file

@ -0,0 +1,482 @@
[
{
name = "actionmailer";
hash = "05f36cd4897fd9229d89b09838edf0836dadab1065a2503a23eddd25a72a5b62";
url = "http://rubygems.org/downloads/actionmailer-4.1.7.gem";
version = "4.1.7";
}
{
name = "actionpack";
hash = "5dfd227ed14e755db89f3fe3778271a280560bf5550323309d3d190880b7c11f";
url = "http://rubygems.org/downloads/actionpack-4.1.7.gem";
version = "4.1.7";
}
{
name = "actionview";
hash = "5d8d50df260f7c0f65ee71fb0dcc8bb344b78d0ff7d26de4b152d8ebde19571b";
url = "http://rubygems.org/downloads/actionview-4.1.7.gem";
version = "4.1.7";
}
{
name = "activemodel";
hash = "590288279d69fd6fba3a227275ca80a90131eb04e8d1381fbc7a1f5ac4ff9866";
url = "http://rubygems.org/downloads/activemodel-4.1.7.gem";
version = "4.1.7";
}
{
name = "activerecord";
hash = "c52f2d21892a38c0817cafa0028f65217f5986a57921fdd2af7cc92a46059948";
url = "http://rubygems.org/downloads/activerecord-4.1.7.gem";
version = "4.1.7";
}
{
name = "activeresource";
hash = "589266ba14c344903c582e82ad39da5f24067f9bcbcf8213d55f7a19e58b8539";
url = "http://rubygems.org/downloads/activeresource-4.0.0.gem";
version = "4.0.0";
}
{
name = "activesupport";
hash = "7a0d7b9c6e68b4cd01f9d686596aaf6671b0b16395cb97862f779666ccaf238e";
url = "http://rubygems.org/downloads/activesupport-4.1.7.gem";
version = "4.1.7";
}
{
name = "addressable";
hash = "e822c28133d151d450778bbcf1f6e7742d4c3aba54498eb0da33d80a3990ee8c";
url = "http://rubygems.org/downloads/addressable-2.3.6.gem";
version = "2.3.6";
}
{
name = "arel";
hash = "c941f07bad89af26e8837c73d8a399b7777c721609f759eda015ed0081601636";
url = "http://rubygems.org/downloads/arel-5.0.1.20140414130214.gem";
version = "5.0.1.20140414130214";
}
{
name = "binding_of_caller";
hash = "d327682ce1d8e8cc46e282a46052946af0de16bef734014c63df0aac66334f96";
url = "http://rubygems.org/downloads/binding_of_caller-0.7.2.gem";
version = "0.7.2";
}
{
name = "builder";
hash = "62fb9ad70ea42219a0c8d209a30281803712c717df7cb8f5ce5f63b4d489d191";
url = "http://rubygems.org/downloads/builder-3.2.2.gem";
version = "3.2.2";
}
{
name = "byebug";
hash = "56358e944d1cdb83151d4400631306eb2539b5fdf1b5e784cdd984b14016ac51";
url = "http://rubygems.org/downloads/byebug-3.5.1.gem";
version = "3.5.1";
}
{
name = "capybara";
hash = "dac69117b32bbf56d3345e01a04426811e3c576a3216f2eb8bfaf861f527a28b";
url = "http://rubygems.org/downloads/capybara-2.3.0.gem";
version = "2.3.0";
}
{
name = "coderay";
hash = "5a943c59e36f7ef9dd2677855735656413af02e3f302431e9c548aabe89f3c15";
url = "http://rubygems.org/downloads/coderay-1.1.0.gem";
version = "1.1.0";
}
{
name = "columnize";
hash = "37d6e33624f2e3542667425504d204843788ce52905b2529654ab57d11fe6ab8";
url = "http://rubygems.org/downloads/columnize-0.8.9.gem";
version = "0.8.9";
}
{
name = "coveralls";
hash = "449284ddd071e2297d06d0a9d18fe4c2b4027848263b1087d4180fb44e03e36b";
url = "http://rubygems.org/downloads/coveralls-0.7.0.gem";
version = "0.7.0";
}
{
name = "crack";
hash = "ea4c34f052106f571235f627f561d28309151c09b841130bb7627c2d522589c6";
url = "http://rubygems.org/downloads/crack-0.4.2.gem";
version = "0.4.2";
}
{
name = "ctl_base_ui";
hash = "adb8be85e5bc292af2ee0d5e8482f011d82cc4e65e8270fda1981957015d0d40";
url = "http://rubygems.org/downloads/ctl_base_ui-0.0.4.gem";
version = "0.0.4";
}
{
name = "debug_inspector";
hash = "1594188ffd35b9973fa1e048497e4aa63abad0c3cbba0670e17935005e302781";
url = "http://rubygems.org/downloads/debug_inspector-0.0.2.gem";
version = "0.0.2";
}
{
name = "debugger-linecache";
hash = "bf5d371a295727c131618e3cd223c6939c51c7bb28ff172477bb340752e89e47";
url = "http://rubygems.org/downloads/debugger-linecache-1.2.0.gem";
version = "1.2.0";
}
{
name = "diff-lcs";
hash = "a1d3dde665292317a883d319066792e3f0e6a24cade4bc4cc47605d27664c9ed";
url = "http://rubygems.org/downloads/diff-lcs-1.2.5.gem";
version = "1.2.5";
}
{
name = "docile";
hash = "5d3ee40b3a6567fe460601f3f4a3e199a98de37434ebfa242d751d0c79181255";
url = "http://rubygems.org/downloads/docile-1.1.5.gem";
version = "1.1.5";
}
{
name = "dotenv";
hash = "35e10cfb1b6ba008f5f1f45b15809c33c424b1fb1ab58d358847cf651af0e027";
url = "http://rubygems.org/downloads/dotenv-0.11.1.gem";
version = "0.11.1";
}
{
name = "dotenv-deployment";
hash = "0c7db97431f091e11b88f26fd08d3f1a0570128d5e73a465c0380195b034a6a9";
url = "http://rubygems.org/downloads/dotenv-deployment-0.0.2.gem";
version = "0.0.2";
}
{
name = "dotenv-rails";
hash = "1e67a7a949a3336184cf3235cf8d2dc66aca8ae2a7f7594f5c37d210818bd064";
url = "http://rubygems.org/downloads/dotenv-rails-0.11.1.gem";
version = "0.11.1";
}
{
name = "erubis";
hash = "63653f5174a7997f6f1d6f465fbe1494dcc4bdab1fb8e635f6216989fb1148ba";
url = "http://rubygems.org/downloads/erubis-2.7.0.gem";
version = "2.7.0";
}
{
name = "execjs";
hash = "0bc9e196416a59cf16690ebdcc09ecd3fd692919e93e8245210402cc717a81e8";
url = "http://rubygems.org/downloads/execjs-2.2.1.gem";
version = "2.2.1";
}
{
name = "haml";
hash = "05b1cde6e0d770e800cb74f6bf1212446bc4573bbbfecc4002e1085c2658bff6";
url = "http://rubygems.org/downloads/haml-4.0.5.gem";
version = "4.0.5";
}
{
name = "hike";
hash = "154e2f2593845e5bcd8ed2ba3092600c55c6ad8c630722857de3fdaf334ccc44";
url = "http://rubygems.org/downloads/hike-1.2.3.gem";
version = "1.2.3";
}
{
name = "i18n";
hash = "b37dda25b30484f2674a851e24ae098a38564a61c976fa91a34bf8fceaa3923b";
url = "http://rubygems.org/downloads/i18n-0.6.11.gem";
version = "0.6.11";
}
{
name = "jquery-rails";
hash = "7ee42bba07bb858c11d81da798c2bfa3641b5afad5d420445b55d0118b29aa40";
url = "http://rubygems.org/downloads/jquery-rails-3.1.2.gem";
version = "3.1.2";
}
{
name = "jquery-ui-rails";
hash = "5b349e7066150b16d7a784183f040c083d51af3357937b8564aa0cc8b1cd59bd";
url = "http://rubygems.org/downloads/jquery-ui-rails-4.2.1.gem";
version = "4.2.1";
}
{
name = "json";
hash = "961bfbbfa9fda1e857e9c791e964e6664e0d43bf687b19669dfbc7cdbc5e0200";
url = "http://rubygems.org/downloads/json-1.8.1.gem";
version = "1.8.1";
}
{
name = "kramdown";
hash = "00611597850c4c9a0d7e00d4d8cf8eb446b3b9aef8f2b4569b7bf1583df03b00";
url = "http://rubygems.org/downloads/kramdown-1.4.0.gem";
version = "1.4.0";
}
{
name = "libv8";
hash = "988948213e992417dffee3cebbcf565c59f1702d539ec202cbc2c117b8205c10";
url = "http://rubygems.org/downloads/libv8-3.16.14.7-x86_64-linux.gem";
version = "3.16.14.7";
}
{
name = "mail";
hash = "d7fee1ec4e4ea9bb38b77de5baf53c17004133efcdff030bd1de5e3620306fd9";
url = "http://rubygems.org/downloads/mail-2.6.3.gem";
version = "2.6.3";
}
{
name = "method_source";
hash = "c2e9d0f4ebefd6b37efe38fe2964337b1d315fe198cad850681fd2da0027b1bc";
url = "http://rubygems.org/downloads/method_source-0.8.2.gem";
version = "0.8.2";
}
{
name = "mime-types";
hash = "38f29a89a273d15bfb99e839c6fe5cf7c463f223dd7ac5ee3c9287b1acd6d19a";
url = "http://rubygems.org/downloads/mime-types-2.4.3.gem";
version = "2.4.3";
}
{
name = "mini_portile";
hash = "762b3e241362de24b2eb2bb1b98638399b931e9e51bece5f8e2df7611eb16c26";
url = "http://rubygems.org/downloads/mini_portile-0.6.0.gem";
version = "0.6.0";
}
{
name = "minitest";
hash = "a41b54b1c6e64b102fe78bf265045896845c38177a10bdb32d04caf4e06542f3";
url = "http://rubygems.org/downloads/minitest-5.4.3.gem";
version = "5.4.3";
}
{
name = "multi_json";
hash = "2c98979877e87df0b338ebf5c86091b390f53d62c11a8232bd51ca007e0b82d2";
url = "http://rubygems.org/downloads/multi_json-1.10.1.gem";
version = "1.10.1";
}
{
name = "nokogiri";
hash = "dfb23254b87672a93582981c4ac5880d178ff32db6878fc351d75198aa544836";
url = "http://rubygems.org/downloads/nokogiri-1.6.2.1.gem";
version = "1.6.2.1";
}
{
name = "phantomjs";
hash = "87666a234180c69186df0d4a009f5cbbb0de58972f2217ee827affc5bf075a91";
url = "http://rubygems.org/downloads/phantomjs-1.9.7.1.gem";
version = "1.9.7.1";
}
{
name = "pry";
hash = "1f4925cdc8d83db67ba9b7ff542f042558c0ceb5579966e0fabc6d0eaa2b19c8";
url = "http://rubygems.org/downloads/pry-0.10.1.gem";
version = "0.10.1";
}
{
name = "pry-byebug";
hash = "f8bfffb58c6a37d2ee8edf8896a778b441237df3c90cf9272f64a4c88038669d";
url = "http://rubygems.org/downloads/pry-byebug-2.0.0.gem";
version = "2.0.0";
}
{
name = "pry-stack_explorer";
hash = "bfa09ca06ee08121fa34fb4e1eca776c0cb7530a7e96600d9a36e5e6189648a0";
url = "http://rubygems.org/downloads/pry-stack_explorer-0.4.9.1.gem";
version = "0.4.9.1";
}
{
name = "puma";
hash = "13ac36ce9535ead0b6ebbd540b5fa99ea53126c0f697a5ce96aefb8d5c75a7d0";
url = "http://rubygems.org/downloads/puma-2.8.2.gem";
version = "2.8.2";
}
{
name = "rack";
hash = "e64af00234e8faaa69ea81ef4e3800f40743c69560f0dda8fc9969660e775fa7";
url = "http://rubygems.org/downloads/rack-1.5.2.gem";
version = "1.5.2";
}
{
name = "rack-protection";
hash = "b9c08cb17b13c6672ef642cc4855b4c4ba8fcb1f66abc687f03cddf37f106b33";
url = "http://rubygems.org/downloads/rack-protection-1.5.3.gem";
version = "1.5.3";
}
{
name = "rack-test";
hash = "7e920b6aac888e4a3846e5997fb1cbf456bdb5846322b58dc31697a54a38b306";
url = "http://rubygems.org/downloads/rack-test-0.6.2.gem";
version = "0.6.2";
}
{
name = "rails";
hash = "20972f5ce418d5b938afa42680bcbe8c52770c0664429233fa0e567a25bd3515";
url = "http://rubygems.org/downloads/rails-4.1.7.gem";
version = "4.1.7";
}
{
name = "rails-observers";
hash = "9e71de73929a9a7e8cde83c041989bbb25914f84047ce15dde37eefa650a5cd3";
url = "http://rubygems.org/downloads/rails-observers-0.1.2.gem";
version = "0.1.2";
}
{
name = "railties";
hash = "dfa7ef2174675c88492c62596bfe6d8aa78f3735305aaa372d5801f9328008d8";
url = "http://rubygems.org/downloads/railties-4.1.7.gem";
version = "4.1.7";
}
{
name = "rake";
hash = "82cfce8fb9c53bc2d96acc88456056b1ed5aab162b85f9419b7c5f7edbff8690";
url = "http://rubygems.org/downloads/rake-10.4.1.gem";
version = "10.4.1";
}
{
name = "ref";
hash = "8a8ec8f40f1e622c4324055d85300e03d9a78a9faf476ea0d382f1af9dbe0fa7";
url = "http://rubygems.org/downloads/ref-1.0.5.gem";
version = "1.0.5";
}
{
name = "rest-client";
hash = "a3203433b8b0c914648caea54395a8791a61e0df7d401c81f4e2b7f8a8fac75a";
url = "http://rubygems.org/downloads/rest-client-1.6.7.gem";
version = "1.6.7";
}
{
name = "rspec-core";
hash = "8c43f4dbc105ca622e72693c8aed533386580c0fa082bcd280777cda66f1525f";
url = "http://rubygems.org/downloads/rspec-core-2.14.8.gem";
version = "2.14.8";
}
{
name = "rspec-expectations";
hash = "c961c9dff8127c1b4ddd24358e5c921f8f09805a92c42ff996e66c39119f28da";
url = "http://rubygems.org/downloads/rspec-expectations-2.14.5.gem";
version = "2.14.5";
}
{
name = "rspec-mocks";
hash = "60eca91c74afd5f978eacdd60f4d81ff669910b6c24f023daecc70d364ac9abb";
url = "http://rubygems.org/downloads/rspec-mocks-2.14.6.gem";
version = "2.14.6";
}
{
name = "rspec-rails";
hash = "a75c843e8ecfee79b0aeefd392e6f740bc1e48e174bcc292e753846b145c36c9";
url = "http://rubygems.org/downloads/rspec-rails-2.14.2.gem";
version = "2.14.2";
}
{
name = "safe_yaml";
hash = "94a36065cd702f8939f928106f63b0e9049d0cddcbf5163ccc430332fdf46b18";
url = "http://rubygems.org/downloads/safe_yaml-1.0.3.gem";
version = "1.0.3";
}
{
name = "sass";
hash = "bfce1f74e41f135d32a346dff35358424ddd7062d371f20f487120318edc294c";
url = "http://rubygems.org/downloads/sass-3.3.9.gem";
version = "3.3.9";
}
{
name = "simplecov";
hash = "ce9ffc797f9e4493bf97bbf5e88073ad7351d8234561b56ea3bd2baa68a71e1a";
url = "http://rubygems.org/downloads/simplecov-0.9.1.gem";
version = "0.9.1";
}
{
name = "simplecov-html";
hash = "69393ce932c2898dd5074913e360078f651f094a9b7300b286a78f43b11c164a";
url = "http://rubygems.org/downloads/simplecov-html-0.8.0.gem";
version = "0.8.0";
}
{
name = "sinatra";
hash = "3a8083318938048090021481581158ede01e47659d06d192f97a5bfaf950d663";
url = "http://rubygems.org/downloads/sinatra-1.4.5.gem";
version = "1.4.5";
}
{
name = "slop";
hash = "76ccab03be66bfcab4838cdc07cab019cd3e192a3538266246749e79e4788803";
url = "http://rubygems.org/downloads/slop-3.6.0.gem";
version = "3.6.0";
}
{
name = "sprockets";
hash = "c25a4a37c9436e5a2c877b926156bce1826a0156d9cd96ca704ab085726ec2ae";
url = "http://rubygems.org/downloads/sprockets-2.12.3.gem";
version = "2.12.3";
}
{
name = "sprockets-rails";
hash = "2ba0eddfb651d7b8a5aab1d03b25d9a61333509a589b48e1355fbe40dd264da4";
url = "http://rubygems.org/downloads/sprockets-rails-2.2.2.gem";
version = "2.2.2";
}
{
name = "teaspoon";
hash = "7f5c90796186877f0e3c10914f8aa8866d3696c0667d9e5aaab36c96eaca6bc8";
url = "http://rubygems.org/downloads/teaspoon-0.8.0.gem";
version = "0.8.0";
}
{
name = "term-ansicolor";
hash = "8b5caf6839a0c1bbf7a55a9d2fbd3c172f623fa05c427f9b3ea5d75bdfe14fa8";
url = "http://rubygems.org/downloads/term-ansicolor-1.3.0.gem";
version = "1.3.0";
}
{
name = "therubyracer";
hash = "26565ce91657acb5d0921584cace7ee82723452d747d66ee8154298f6bc4ce80";
url = "http://rubygems.org/downloads/therubyracer-0.12.1.gem";
version = "0.12.1";
}
{
name = "thor";
hash = "9ff834f031b5550c743bb8a3139317fefdae9cdebd02d60de376658f427fe522";
url = "http://rubygems.org/downloads/thor-0.19.1.gem";
version = "0.19.1";
}
{
name = "thread_safe";
hash = "16315baa971c48d00104bcd35e8934e3f9ccfd3b8f429e3fca7ee2dfd81734b2";
url = "http://rubygems.org/downloads/thread_safe-0.3.4.gem";
version = "0.3.4";
}
{
name = "tilt";
hash = "39820562c4f5db45fe18de87ccc30a0e77a998bf5334b1d8c10a2f7dbc1f5903";
url = "http://rubygems.org/downloads/tilt-1.4.1.gem";
version = "1.4.1";
}
{
name = "tins";
hash = "5964d11f3784651370b685ea2751f3f88c75f4def29a1b04b19f224e0161ad49";
url = "http://rubygems.org/downloads/tins-1.1.0.gem";
version = "1.1.0";
}
{
name = "tzinfo";
hash = "fdb1d3fdf2776d490c82a0e589a08e7cbde70ac1ae7d2b1f0b7e77f3e6b801b0";
url = "http://rubygems.org/downloads/tzinfo-1.2.2.gem";
version = "1.2.2";
}
{
name = "uglifier";
hash = "e0badf2761a79855e2c008e50d3e9253bc60738d64230da25069ff9ac0c030ee";
url = "http://rubygems.org/downloads/uglifier-2.5.1.gem";
version = "2.5.1";
}
{
name = "webmock";
hash = "0360485651dfe94675a36f546367e2bb075570ab879fdb311b4bd2763a5141e4";
url = "http://rubygems.org/downloads/webmock-1.18.0.gem";
version = "1.18.0";
}
{
name = "xpath";
hash = "9ca4a1cc88d9ab16c591468cce7b5d00ee06a8a76b841f8438970c7a44c86c12";
url = "http://rubygems.org/downloads/xpath-2.0.0.gem";
version = "2.0.0";
}
{
name = "zeroclipboard-rails";
hash = "cc31aa9aae0b3aec173c966c1c7cf398374cfe37cc80fbbdc6aa57a000553d02";
url = "http://rubygems.org/downloads/zeroclipboard-rails-0.1.0.gem";
version = "0.1.0";
}
]

View file

@ -0,0 +1,139 @@
{ stdenv, buildEnv, fetchgit, fetchurl, ruby_2_1, rubygemsFun, libxslt, libxml2
, sqlite, openssl, cacert, writeScriptBin, docker
, dataDir ? "/var/lib/panamax-api" }:
let
ruby = ruby_2_1;
rubygems = rubygemsFun ruby_2_1;
gemspec = map (gem: fetchurl { url=gem.url; sha256=gem.hash; }) (import ./Gemfile-api.nix);
srcs = {
bundler = fetchurl {
url = "http://rubygems.org/downloads/bundler-1.7.9.gem";
sha256 = "1gd201rh17xykab9pbqp0dkxfm7b9jri02llyvmrc0c5bz2vhycm";
};
};
panamax_api = stdenv.mkDerivation rec {
name = "panamax-api-${version}";
version = "0.2.11";
src = fetchgit {
rev = "refs/tags/v${version}";
url = "git://github.com/CenturyLinkLabs/panamax-api";
sha256 = "01sz7jibn1rqfga85pr4p8wk6jfldzfaxj1726vs6znmcwhfkcgj";
};
buildInputs = [ sqlite openssl ruby ];
installPhase = ''
mkdir -p $out/share/panamax-api
cp -R . $out/share/panamax-api
cd $out/share/panamax-api
export HOME=$PWD
export GEM_HOME=$PWD
export PATH="${rubygems}/bin:$PATH"
export RAILS_ENV=production
find . -type f -exec sed -e 's|/usr/bin/docker|${docker}/bin/docker|g' -i "{}" \;
mkdir -p vendor/cache
${stdenv.lib.concatStrings (map (gem: "ln -s ${gem} vendor/cache/${gem.name};") gemspec)}
${"ln -s ${srcs.bundler} vendor/cache/${srcs.bundler.name};"}
gem install --local vendor/cache/${srcs.bundler.name}
ln -sf ${database_yml} config/database.yml
bin/bundle install -j4 --verbose --local --deployment
rm -f ./bin/*
./gems/bundler-*/bin/bundle exec rake rails:update:bin
rm -rf log
ln -sf ${dataDir}/state/log .
ln -sf ${dataDir}/state/tmp .
mv ./db ./_db
ln -sf ${dataDir}/db .
'';
};
panamax_api_init = writeScriptBin "panamax-api-init" ''
#!${stdenv.shell}
test -d ${dataDir}/db && exit 0
cd ${panamax_api}/share/panamax-api
export HOME=$PWD
export GEM_HOME=$PWD
export PATH="${panamax_api}/share/panamax-api/bin:${ruby}/bin:$PATH"
export OPENSSL_X509_CERT_FILE="${cacert}/etc/ca-bundle.crt"
export RAILS_ENV=production
mkdir -p ${dataDir}/state/log
mkdir -p ${dataDir}/db/mnt
ln -sf ${panamax_api}/share/panamax-api/_db/schema.rb ${dataDir}/db/
ln -sf ${panamax_api}/share/panamax-api/_db/seeds.rb ${dataDir}/db/
ln -sf ${panamax_api}/share/panamax-api/_db/migrate ${dataDir}/db/
bundle exec rake db:setup
bundle exec rake db:seed
bundle exec rake panamax:templates:load
'';
panamax_api_run = writeScriptBin "panamax-api-run" ''
#!${stdenv.shell}
cd ${panamax_api}/share/panamax-api
mkdir -p ${dataDir}/state/tmp
export HOME=$PWD
export GEM_HOME=$PWD
export PATH="${panamax_api}/share/panamax-api/bin:${ruby}/bin:${docker}/bin:$PATH"
export RAILS_ENV=production
export SSL_CERT_FILE="${cacert}/etc/ca-bundle.crt"
bin/bundle exec rails s $@
'';
database_yml = builtins.toFile "database.yml" ''
development:
adapter: sqlite3
database: ${dataDir}/db/mnt/development.sqlite3
pool: 5
timeout: 5000
# See corresponding schema load in spec/support/in_memory_database
test:
adapter: sqlite3
database: ":memory:"
verbosity: quiet
production:
adapter: sqlite3
database: ${dataDir}/db/mnt/production.sqlite3
pool: 5
timeout: 5000
'';
in
stdenv.mkDerivation rec {
name = panamax_api.name;
unpackPhase = "true";
installPhase = ''
mkdir -p $out/bin
ln -s ${panamax_api_init}/bin/* $out/bin
ln -s ${panamax_api_run}/bin/* $out/bin
'';
meta = with stdenv.lib; {
homepage = https://github.com/CenturyLinkLabs/panamax-api;
description = "The API behind The Panamax UI";
license = licenses.asl20;
maintainers = with maintainers; [ matejc ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,101 @@
{ stdenv, buildEnv, fetchgit, fetchurl, ruby_2_1, rubygemsFun
, libxml2, libxslt, openssl, writeScriptBin, sqlite
, dataDir ? "/var/lib/panamax-ui" }:
let
ruby = ruby_2_1;
rubygems = rubygemsFun ruby_2_1;
gemspec = map (gem: fetchurl { url=gem.url; sha256=gem.hash; }) (import ./Gemfile-ui.nix);
srcs = {
bundler = fetchurl {
url = "http://rubygems.org/downloads/bundler-1.7.9.gem";
sha256 = "1gd201rh17xykab9pbqp0dkxfm7b9jri02llyvmrc0c5bz2vhycm";
};
};
panamax_ui = stdenv.mkDerivation rec {
name = "panamax-ui-${version}";
version = "0.2.11";
src = fetchgit {
rev = "refs/tags/v${version}";
url = "git://github.com/CenturyLinkLabs/panamax-ui";
sha256 = "17j5ac8fzp377bzg7f239jdcc9j0c63bkx0ill5nl10i3h05z7jh";
};
buildInputs = [ ruby openssl sqlite ];
installPhase = ''
mkdir -p $out/share/panamax-ui
cp -R . $out/share/panamax-ui
cd $out/share/panamax-ui
find . -type f -iname "*.haml" -exec sed -e 's|CoreOS Journal|NixOS Journal|g' -i "{}" \;
find . -type f -iname "*.haml" -exec sed -e 's|CoreOS Local|NixOS Local|g' -i "{}" \;
find . -type f -iname "*.haml" -exec sed -e 's|CoreOS Host|NixOS Host|g' -i "{}" \;
sed -e 's|CoreOS Local|NixOS Local|g' -i "spec/features/manage_application_spec.rb"
export HOME=$PWD
export GEM_HOME=$PWD
export PATH="${rubygems}/bin:$PATH"
mkdir -p vendor/cache
${stdenv.lib.concatStrings (map (gem: "ln -s ${gem} vendor/cache/${gem.name};") gemspec)}
${"ln -s ${srcs.bundler} vendor/cache/${srcs.bundler.name};"}
gem install --local vendor/cache/${srcs.bundler.name}
bin/bundle install --verbose --local --without development test
rm -f ./bin/*
./gems/bundler-*/bin/bundle exec rake rails:update:bin
rm -rf log
ln -sf ${dataDir}/state/log .
rm -rf tmp
ln -sf ${dataDir}/state/tmp .
rm -rf db
ln -sf ${dataDir}/db .
'';
};
panamax_ui_run = writeScriptBin "panamax-ui-run" ''
#!${stdenv.shell}
cd ${panamax_ui}/share/panamax-ui
export PATH="${panamax_ui}/share/panamax-ui/bin:${ruby}/bin:$PATH"
export RAILS_ENV="production"
export HOME="${panamax_ui}/share/panamax-ui"
export GEM_HOME="${panamax_ui}/share/panamax-ui"
export GEM_PATH="${panamax_ui}/share/panamax-ui"
echo ${panamax_ui}/share/panamax-ui
mkdir -p ${dataDir}/state/log
mkdir -p ${dataDir}/state/tmp
mkdir -p ${dataDir}/db
export PMX_API_PORT_3000_TCP_ADDR=localhost
bin/rails server $@
'';
in
stdenv.mkDerivation rec {
name = panamax_ui.name;
unpackPhase = "true";
installPhase = ''
mkdir -p $out/bin
ln -s ${panamax_ui_run}/bin/* $out/bin
'';
meta = with stdenv.lib; {
homepage = https://github.com/CenturyLinkLabs/panamax-ui;
description = "The Web GUI for Panamax";
license = licenses.asl20;
maintainers = with maintainers; [ matejc ];
platforms = platforms.linux;
};
}

View file

@ -10789,6 +10789,9 @@ let
namecoin = callPackage ../applications/misc/namecoin { };
namecoinqt = callPackage ../applications/misc/namecoin/qt.nix { };
panamax_api = callPackage ../applications/networking/cluster/panamax/api.nix {};
panamax_ui = callPackage ../applications/networking/cluster/panamax/ui.nix {};
pcmanfm = callPackage ../applications/misc/pcmanfm { };
shotcut = callPackage ../applications/video/shotcut { mlt = mlt-qt5; };