summaryrefslogtreecommitdiff
path: root/ibb
diff options
context:
space:
mode:
Diffstat (limited to 'ibb')
-rw-r--r--ibb/Main.hs8
-rw-r--r--ibb/module.nix47
2 files changed, 36 insertions, 19 deletions
diff --git a/ibb/Main.hs b/ibb/Main.hs
index 544b0c8..05e7738 100644
--- a/ibb/Main.hs
+++ b/ibb/Main.hs
@@ -3,6 +3,7 @@
module Main where
+import Data.Maybe (fromMaybe)
import Data.ByteString.Lazy (ByteString)
import Data.Text.Lazy (Text)
import Data.Text.Lazy.Encoding (encodeUtf8)
@@ -13,6 +14,7 @@ import Text.Hamlet (shamlet)
import Text.Lucius (lucius, renderCss)
import Web.Scotty (ActionM, scotty, get, html, raw, setHeader)
import Influencers
+import System.Environment (lookupEnv)
render :: Html -> ActionM ()
render = html . renderHtml
@@ -21,7 +23,11 @@ css :: ByteString -> ActionM ()
css src = setHeader "content-type" "text/css" >> raw src
main :: IO ()
-main = scotty 3000 $ do
+main = do
+ port <- read <$> fromMaybe "3000" <$> lookupEnv "PORT" :: IO Int
+ scotty port routes
+
+routes = do
get "/" $ render homepage
get "/custom.css" $ css stylesheet
diff --git a/ibb/module.nix b/ibb/module.nix
index b4f7609..e2d4dd0 100644
--- a/ibb/module.nix
+++ b/ibb/module.nix
@@ -7,24 +7,35 @@
let
cfg = config.services.ibb;
-in {
- options.services.ibb.enable = lib.mkEnableOption "Enable the IBB service";
- config = lib.mkIf cfg.enable {
- systemd.services.ibb = {
- path = with pkgs; [ ibb bash ];
- wantedBy = [ "multi-user.target" ];
- script = ''
- ./bin/ibb
- '';
- description = ''
- Influenced By Books website
- '';
- serviceConfig = {
- WorkingDirectory=pkgs.ibb;
- KillSignal="INT";
- Type = "simple";
- Restart = "on-abort";
- RestartSec = "10";
+in
+{
+ options.services.ibb = {
+ enable = lib.mkEnableOption "Enable the IBB service";
+ port = lib.mkOption {
+ type = lib.types.string;
+ default = "3000";
+ description = ''
+ The port on which IBB will listen for
+ incoming HTTP traffic.
+ '';
+ };
+ };
+ config = lib.mkIf cfg.enable {
+ systemd.services.ibb = {
+ path = with pkgs; [ ibb bash ];
+ wantedBy = [ "multi-user.target" ];
+ script = ''
+ PORT=${cfg.port} ./bin/ibb
+ '';
+ description = ''
+ Influenced By Books website
+ '';
+ serviceConfig = {
+ WorkingDirectory=pkgs.ibb;
+ KillSignal="INT";
+ Type = "simple";
+ Restart = "on-abort";
+ RestartSec = "10";
};
};
};