panamax: simplify, refactor, add test
This commit is contained in:
parent
8c79a2df63
commit
ae34f923f7
@ -5,8 +5,8 @@ with lib;
|
|||||||
let
|
let
|
||||||
cfg = config.services.panamax;
|
cfg = config.services.panamax;
|
||||||
|
|
||||||
panamax_api = pkgs.panamax_api.override { dataDir = cfg.dataDir+"/api"; };
|
panamax_api = pkgs.panamax_api.override { dataDir = cfg.dataDir + "/api"; };
|
||||||
panamax_ui = pkgs.panamax_ui.override { dataDir = cfg.dataDir+"/ui"; };
|
panamax_ui = pkgs.panamax_ui.override { dataDir = cfg.dataDir + "/ui"; };
|
||||||
|
|
||||||
in {
|
in {
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ in {
|
|||||||
type = types.str;
|
type = types.str;
|
||||||
default = "http://127.0.0.1:4001";
|
default = "http://127.0.0.1:4001";
|
||||||
description = ''
|
description = ''
|
||||||
Fleetctl endpoint.
|
Panamax fleetctl endpoint.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -56,7 +56,7 @@ in {
|
|||||||
type = types.str;
|
type = types.str;
|
||||||
default = "http://127.0.0.1:19531";
|
default = "http://127.0.0.1:19531";
|
||||||
description = ''
|
description = ''
|
||||||
Journal endpoint.
|
Panamax journal endpoint.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -64,7 +64,7 @@ in {
|
|||||||
type = types.str;
|
type = types.str;
|
||||||
default = "SomethingVeryLong.";
|
default = "SomethingVeryLong.";
|
||||||
description = ''
|
description = ''
|
||||||
Secret key (do change this).
|
Panamax secret key (do change this).
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -72,33 +72,64 @@ in {
|
|||||||
|
|
||||||
##### Implementation
|
##### Implementation
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
systemd.services.panamax_api = {
|
systemd.services.panamax-api = {
|
||||||
description = "Panamax API";
|
description = "Panamax API";
|
||||||
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = [ "network.target" "fleet.service" "etcd.service" "docker.service" ];
|
after = [ "network.target" "fleet.service" "etcd.service" "docker.service" ];
|
||||||
|
|
||||||
|
path = [ panamax_api ];
|
||||||
environment = {
|
environment = {
|
||||||
|
RAILS_ENV = "production";
|
||||||
JOURNAL_ENDPOINT = cfg.journalEndpoint;
|
JOURNAL_ENDPOINT = cfg.journalEndpoint;
|
||||||
FLEETCTL_ENDPOINT = cfg.fleetctlEndpoint;
|
FLEETCTL_ENDPOINT = cfg.fleetctlEndpoint;
|
||||||
|
PANAMAX_DATABASE_PATH = "${cfg.dataDir}/api/db/mnt/db.sqlite3";
|
||||||
};
|
};
|
||||||
preStart = "${panamax_api}/bin/panamax-api-init";
|
|
||||||
|
preStart = ''
|
||||||
|
rm -rf ${cfg.dataDir}/state/tmp
|
||||||
|
mkdir -p ${cfg.dataDir}/api/{db/mnt,state/log,state/tmp}
|
||||||
|
ln -sf ${panamax_api}/share/panamax-api/_db/{schema.rb,seeds.rb,migrate} ${cfg.dataDir}/api/db/
|
||||||
|
|
||||||
|
if [ ! -f ${cfg.dataDir}/.created ]; then
|
||||||
|
bundle exec rake db:setup
|
||||||
|
bundle exec rake db:seed
|
||||||
|
bundle exec rake panamax:templates:load || true
|
||||||
|
touch ${cfg.dataDir}/.created
|
||||||
|
else
|
||||||
|
bundle exec rake db:migrate
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${panamax_api}/bin/panamax-api-run --port ${toString cfg.APIPort}";
|
ExecStart = "${panamax_api}/bin/bundle exec rails server --binding 127.0.0.1 --port ${toString cfg.APIPort}";
|
||||||
User = "panamax";
|
User = "panamax";
|
||||||
Group = "panamax";
|
Group = "panamax";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.panamax_ui = {
|
systemd.services.panamax-ui = {
|
||||||
description = "Panamax UI";
|
description = "Panamax UI";
|
||||||
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = [ "network.target" "panamax_api.service" ];
|
after = [ "network.target" "panamax_api.service" ];
|
||||||
|
|
||||||
|
path = [ panamax_ui ];
|
||||||
environment = {
|
environment = {
|
||||||
|
RAILS_ENV = "production";
|
||||||
JOURNAL_ENDPOINT = cfg.journalEndpoint;
|
JOURNAL_ENDPOINT = cfg.journalEndpoint;
|
||||||
|
PMX_API_PORT_3000_TCP_ADDR = "localhost";
|
||||||
PMX_API_PORT_3000_TCP_PORT = toString cfg.APIPort;
|
PMX_API_PORT_3000_TCP_PORT = toString cfg.APIPort;
|
||||||
SECRET_KEY_BASE = cfg.secretKey;
|
SECRET_KEY_BASE = cfg.secretKey;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
preStart = ''
|
||||||
|
rm -rf ${cfg.dataDir}/state/tmp
|
||||||
|
mkdir -p ${cfg.dataDir}/ui/state/{log,tmp}
|
||||||
|
'';
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${panamax_ui}/bin/panamax-ui-run --port ${toString cfg.UIPort}";
|
ExecStart = "${panamax_ui}/bin/bundle exec rails server --binding 127.0.0.1 --port ${toString cfg.UIPort}";
|
||||||
User = "panamax";
|
User = "panamax";
|
||||||
Group = "panamax";
|
Group = "panamax";
|
||||||
};
|
};
|
||||||
|
@ -300,6 +300,7 @@ in rec {
|
|||||||
tests.nfs3 = callTest tests/nfs.nix { version = 3; };
|
tests.nfs3 = callTest tests/nfs.nix { version = 3; };
|
||||||
tests.nsd = callTest tests/nsd.nix {};
|
tests.nsd = callTest tests/nsd.nix {};
|
||||||
tests.openssh = callTest tests/openssh.nix {};
|
tests.openssh = callTest tests/openssh.nix {};
|
||||||
|
tests.panamax = scrubDrv (import tests/panamax.nix { system = "x86_64-linux"; });
|
||||||
tests.peerflix = callTest tests/peerflix.nix {};
|
tests.peerflix = callTest tests/peerflix.nix {};
|
||||||
tests.printing = callTest tests/printing.nix {};
|
tests.printing = callTest tests/printing.nix {};
|
||||||
tests.proxy = callTest tests/proxy.nix {};
|
tests.proxy = callTest tests/proxy.nix {};
|
||||||
|
18
nixos/tests/panamax.nix
Normal file
18
nixos/tests/panamax.nix
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
import ./make-test.nix {
|
||||||
|
name = "panamax";
|
||||||
|
|
||||||
|
machine = { config, pkgs, ... }: {
|
||||||
|
services.panamax.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript =
|
||||||
|
''
|
||||||
|
startAll;
|
||||||
|
$machine->waitForUnit("panamax-api.service");
|
||||||
|
$machine->waitForUnit("panamax-ui.service");
|
||||||
|
$machine->waitForOpenPort(3000);
|
||||||
|
$machine->waitForOpenPort(8888);
|
||||||
|
$machine->succeed("curl --fail http://localhost:8888/ > /dev/null");
|
||||||
|
$machine->shutdown;
|
||||||
|
'';
|
||||||
|
}
|
@ -1,139 +1,86 @@
|
|||||||
{ stdenv, buildEnv, fetchgit, fetchurl, ruby_2_1, rubygemsFun, libxslt, libxml2
|
{ stdenv, buildEnv, fetchgit, fetchurl, makeWrapper
|
||||||
, sqlite, openssl, cacert, writeScriptBin, docker
|
, ruby, rubygemsFun, libxslt, libxml2, sqlite, openssl, cacert, docker
|
||||||
, dataDir ? "/var/lib/panamax-api" }:
|
, dataDir ? "/var/lib/panamax-api" }:
|
||||||
|
|
||||||
|
with stdenv.lib;
|
||||||
|
|
||||||
let
|
let
|
||||||
ruby = ruby_2_1;
|
database_yml = builtins.toFile "database.yml" ''
|
||||||
rubygems = rubygemsFun ruby_2_1;
|
production:
|
||||||
|
adapter: sqlite3
|
||||||
|
database: <%= ENV["PANAMAX_DATABASE_PATH"] || "${dataDir}/db/mnt/db.sqlite3" %>
|
||||||
|
timeout: 5000
|
||||||
|
'';
|
||||||
|
|
||||||
|
in stdenv.mkDerivation rec {
|
||||||
|
name = "panamax-api-${version}";
|
||||||
|
version = "0.2.11";
|
||||||
|
|
||||||
|
bundler = fetchurl {
|
||||||
|
url = "http://rubygems.org/downloads/bundler-1.7.9.gem";
|
||||||
|
sha256 = "1gd201rh17xykab9pbqp0dkxfm7b9jri02llyvmrc0c5bz2vhycm";
|
||||||
|
};
|
||||||
|
|
||||||
|
src = fetchgit {
|
||||||
|
rev = "refs/tags/v${version}";
|
||||||
|
url = "git://github.com/CenturyLinkLabs/panamax-api";
|
||||||
|
sha256 = "01sz7jibn1rqfga85pr4p8wk6jfldzfaxj1726vs6znmcwhfkcgj";
|
||||||
|
};
|
||||||
|
|
||||||
gemspec = map (gem: fetchurl { url=gem.url; sha256=gem.hash; }) (import ./Gemfile-api.nix);
|
gemspec = map (gem: fetchurl { url=gem.url; sha256=gem.hash; }) (import ./Gemfile-api.nix);
|
||||||
|
|
||||||
srcs = {
|
buildInputs = [ makeWrapper sqlite openssl ruby (rubygemsFun ruby) ];
|
||||||
bundler = fetchurl {
|
|
||||||
url = "http://rubygems.org/downloads/bundler-1.7.9.gem";
|
|
||||||
sha256 = "1gd201rh17xykab9pbqp0dkxfm7b9jri02llyvmrc0c5bz2vhycm";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
panamax_api = stdenv.mkDerivation rec {
|
setSourceRoot = ''
|
||||||
name = "panamax-api-${version}";
|
mkdir -p $out/share
|
||||||
version = "0.2.11";
|
cp -R git-export $out/share/panamax-api
|
||||||
|
export sourceRoot="$out/share/panamax-api"
|
||||||
|
'';
|
||||||
|
|
||||||
src = fetchgit {
|
postPatch = ''
|
||||||
rev = "refs/tags/v${version}";
|
find . -type f -exec sed -e 's|/usr/bin/docker|${docker}/bin/docker|g' -i "{}" \;
|
||||||
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
|
|
||||||
|
|
||||||
|
configurePhase = ''
|
||||||
export HOME=$PWD
|
export HOME=$PWD
|
||||||
export GEM_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
|
export RAILS_ENV=production
|
||||||
|
|
||||||
mkdir -p ${dataDir}/state/log
|
mkdir -p vendor/cache
|
||||||
mkdir -p ${dataDir}/db/mnt
|
${concatStrings (map (gem: "ln -s ${gem} vendor/cache/${gem.name};") gemspec)}
|
||||||
ln -sf ${panamax_api}/share/panamax-api/_db/schema.rb ${dataDir}/db/
|
ln -s ${bundler} vendor/cache/${bundler.name}
|
||||||
ln -sf ${panamax_api}/share/panamax-api/_db/seeds.rb ${dataDir}/db/
|
ln -sf ${database_yml} config/database.yml
|
||||||
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" ''
|
buildPhase = ''
|
||||||
#!${stdenv.shell}
|
gem install --local vendor/cache/${bundler.name}
|
||||||
cd ${panamax_api}/share/panamax-api
|
bin/bundle install -j4 --verbose --local --deployment --without development test
|
||||||
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" ''
|
installPhase = ''
|
||||||
development:
|
rm -rf log tmp
|
||||||
adapter: sqlite3
|
mv ./db ./_db
|
||||||
database: ${dataDir}/db/mnt/development.sqlite3
|
ln -sf ${dataDir}/{db,state/log,state/tmp} .
|
||||||
pool: 5
|
|
||||||
timeout: 5000
|
|
||||||
|
|
||||||
# See corresponding schema load in spec/support/in_memory_database
|
mkdir -p $out/bin
|
||||||
test:
|
makeWrapper bin/bundle "$out/bin/bundle" \
|
||||||
adapter: sqlite3
|
--run "cd $out/share/panamax-api" \
|
||||||
database: ":memory:"
|
--prefix "PATH" : "$out/share/panamax-api/bin:${ruby}/bin:$PATH" \
|
||||||
verbosity: quiet
|
--prefix "HOME" : "$out/share/panamax-api" \
|
||||||
|
--prefix "GEM_HOME" : "$out/share/panamax-api" \
|
||||||
production:
|
--prefix "OPENSSL_X509_CERT_FILE" : "${cacert}/etc/ca-bundle.crt" \
|
||||||
adapter: sqlite3
|
--prefix "SSL_CERT_FILE" : "${cacert}/etc/ca-bundle.crt"
|
||||||
database: ${dataDir}/db/mnt/production.sqlite3
|
|
||||||
pool: 5
|
|
||||||
timeout: 5000
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
in
|
postFixup = ''
|
||||||
stdenv.mkDerivation rec {
|
rm -r vendor/cache/*
|
||||||
name = panamax_api.name;
|
'';
|
||||||
|
|
||||||
unpackPhase = "true";
|
meta = with stdenv.lib; {
|
||||||
|
homepage = https://github.com/CenturyLinkLabs/panamax-api;
|
||||||
installPhase = ''
|
description = "The API behind The Panamax UI";
|
||||||
mkdir -p $out/bin
|
license = licenses.asl20;
|
||||||
ln -s ${panamax_api_init}/bin/* $out/bin
|
maintainers = with maintainers; [ matejc offline ];
|
||||||
ln -s ${panamax_api_run}/bin/* $out/bin
|
platforms = platforms.linux;
|
||||||
'';
|
};
|
||||||
|
}
|
||||||
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;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
@ -1,101 +1,74 @@
|
|||||||
{ stdenv, buildEnv, fetchgit, fetchurl, ruby_2_1, rubygemsFun
|
{ stdenv, fetchgit, fetchurl, makeWrapper
|
||||||
, libxml2, libxslt, openssl, writeScriptBin, sqlite
|
, ruby, rubygemsFun, openssl, sqlite, dataDir ? "/var/lib/panamax-ui"}:
|
||||||
, dataDir ? "/var/lib/panamax-ui" }:
|
|
||||||
let
|
with stdenv.lib;
|
||||||
ruby = ruby_2_1;
|
|
||||||
rubygems = rubygemsFun ruby_2_1;
|
stdenv.mkDerivation rec {
|
||||||
|
name = "panamax-ui-${version}";
|
||||||
|
version = "0.2.11";
|
||||||
|
|
||||||
|
bundler = fetchurl {
|
||||||
|
url = "http://rubygems.org/downloads/bundler-1.7.9.gem";
|
||||||
|
sha256 = "1gd201rh17xykab9pbqp0dkxfm7b9jri02llyvmrc0c5bz2vhycm";
|
||||||
|
};
|
||||||
|
|
||||||
|
src = fetchgit {
|
||||||
|
rev = "refs/tags/v${version}";
|
||||||
|
url = "git://github.com/CenturyLinkLabs/panamax-ui";
|
||||||
|
sha256 = "17j5ac8fzp377bzg7f239jdcc9j0c63bkx0ill5nl10i3h05z7jh";
|
||||||
|
};
|
||||||
|
|
||||||
gemspec = map (gem: fetchurl { url=gem.url; sha256=gem.hash; }) (import ./Gemfile-ui.nix);
|
gemspec = map (gem: fetchurl { url=gem.url; sha256=gem.hash; }) (import ./Gemfile-ui.nix);
|
||||||
|
|
||||||
srcs = {
|
buildInputs = [ makeWrapper ruby openssl sqlite (rubygemsFun ruby) ];
|
||||||
bundler = fetchurl {
|
|
||||||
url = "http://rubygems.org/downloads/bundler-1.7.9.gem";
|
|
||||||
sha256 = "1gd201rh17xykab9pbqp0dkxfm7b9jri02llyvmrc0c5bz2vhycm";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
panamax_ui = stdenv.mkDerivation rec {
|
setSourceRoot = ''
|
||||||
name = "panamax-ui-${version}";
|
mkdir -p $out/share
|
||||||
version = "0.2.11";
|
cp -R git-export $out/share/panamax-ui
|
||||||
|
export sourceRoot="$out/share/panamax-ui"
|
||||||
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
|
postPatch = ''
|
||||||
stdenv.mkDerivation rec {
|
find . -type f -iname "*.haml" -exec sed -e 's|CoreOS Journal|NixOS Journal|g' -i "{}" \;
|
||||||
name = panamax_ui.name;
|
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"
|
||||||
|
'';
|
||||||
|
|
||||||
unpackPhase = "true";
|
configurePhase = ''
|
||||||
|
export HOME=$PWD
|
||||||
|
export GEM_HOME=$PWD
|
||||||
|
|
||||||
installPhase = ''
|
mkdir -p vendor/cache
|
||||||
mkdir -p $out/bin
|
${concatStrings (map (gem: "ln -s ${gem} vendor/cache/${gem.name};") gemspec)}
|
||||||
ln -s ${panamax_ui_run}/bin/* $out/bin
|
ln -s ${bundler} vendor/cache/${bundler.name}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
buildPhase = ''
|
||||||
homepage = https://github.com/CenturyLinkLabs/panamax-ui;
|
gem install --local vendor/cache/${bundler.name}
|
||||||
description = "The Web GUI for Panamax";
|
bin/bundle install --verbose --local --without development test
|
||||||
license = licenses.asl20;
|
rm -f ./bin/*
|
||||||
maintainers = with maintainers; [ matejc ];
|
ruby ./gems/bundler-*/bin/bundle exec rake rails:update:bin
|
||||||
platforms = platforms.linux;
|
'';
|
||||||
};
|
|
||||||
}
|
installPhase = ''
|
||||||
|
rm -rf log tmp db
|
||||||
|
ln -sf ${dataDir}/{db,state/log,state/tmp} .
|
||||||
|
|
||||||
|
mkdir -p $out/bin
|
||||||
|
makeWrapper bin/bundle "$out/bin/bundle" \
|
||||||
|
--run "cd $out/share/panamax-ui" \
|
||||||
|
--prefix "PATH" : "$out/share/panamax-ui/bin:${ruby}/bin:$PATH" \
|
||||||
|
--prefix "HOME" : "$out/share/panamax-ui" \
|
||||||
|
--prefix "GEM_HOME" : "$out/share/panamax-ui" \
|
||||||
|
--prefix "GEM_PATH" : "$out/share/panamax-ui"
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = https://github.com/CenturyLinkLabs/panamax-ui;
|
||||||
|
description = "The Web GUI for Panamax";
|
||||||
|
license = licenses.asl20;
|
||||||
|
maintainers = with maintainers; [ matejc offline ];
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
@ -10789,8 +10789,12 @@ let
|
|||||||
namecoin = callPackage ../applications/misc/namecoin { };
|
namecoin = callPackage ../applications/misc/namecoin { };
|
||||||
namecoinqt = callPackage ../applications/misc/namecoin/qt.nix { };
|
namecoinqt = callPackage ../applications/misc/namecoin/qt.nix { };
|
||||||
|
|
||||||
panamax_api = callPackage ../applications/networking/cluster/panamax/api.nix {};
|
panamax_api = callPackage ../applications/networking/cluster/panamax/api.nix {
|
||||||
panamax_ui = callPackage ../applications/networking/cluster/panamax/ui.nix {};
|
ruby = ruby_2_1;
|
||||||
|
};
|
||||||
|
panamax_ui = callPackage ../applications/networking/cluster/panamax/ui.nix {
|
||||||
|
ruby = ruby_2_1;
|
||||||
|
};
|
||||||
|
|
||||||
pcmanfm = callPackage ../applications/misc/pcmanfm { };
|
pcmanfm = callPackage ../applications/misc/pcmanfm { };
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user