diff options
Diffstat (limited to 'ibb')
-rw-r--r-- | ibb/Main.hs | 8 | ||||
-rw-r--r-- | ibb/module.nix | 47 |
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"; }; }; }; |