diff options
| -rw-r--r-- | bragi.nix | 55 | ||||
| m--------- | custom/thermoprint | 0 |
2 files changed, 54 insertions, 1 deletions
| @@ -80,6 +80,8 @@ in rec { | |||
| 80 | --run "umask 0" | 80 | --run "umask 0" |
| 81 | ''; | 81 | ''; |
| 82 | }); | 82 | }); |
| 83 | |||
| 84 | inherit (pkgs.callPackage ./custom/thermoprint {}) thermoprint-server thermoprint-webgui tprint; | ||
| 83 | }; | 85 | }; |
| 84 | 86 | ||
| 85 | environment.systemPackages = with pkgs; [ | 87 | environment.systemPackages = with pkgs; [ |
| @@ -91,6 +93,7 @@ in rec { | |||
| 91 | jack2Full | 93 | jack2Full |
| 92 | trivmix | 94 | trivmix |
| 93 | zsh | 95 | zsh |
| 96 | tprint | ||
| 94 | ]; | 97 | ]; |
| 95 | 98 | ||
| 96 | # List services that you want to enable: | 99 | # List services that you want to enable: |
| @@ -272,10 +275,60 @@ in rec { | |||
| 272 | home = "/var/lib/thermoprint"; | 275 | home = "/var/lib/thermoprint"; |
| 273 | }; | 276 | }; |
| 274 | 277 | ||
| 278 | environment.etc."thermoprint-server/config.hs" = '' | ||
| 279 | {-# LANGUAGE OverloadedStrings #-} | ||
| 280 | {-# LANGUAGE ImpredicativeTypes #-} | ||
| 281 | |||
| 282 | module Main (main) where | ||
| 283 | |||
| 284 | import Thermoprint.Server | ||
| 285 | |||
| 286 | import Thermoprint.Server.Printer.Generic | ||
| 287 | |||
| 288 | import Control.Monad.Trans.Resource | ||
| 289 | import Control.Monad.Logger | ||
| 290 | import Control.Monad.Reader | ||
| 291 | |||
| 292 | import Database.Persist.Sqlite | ||
| 293 | |||
| 294 | import qualified Network.Wai.Handler.Warp as Warp | ||
| 295 | |||
| 296 | main :: IO () | ||
| 297 | main = thermoprintServer True (Nat runSqlite) $ (\c -> c { queueManagers = queueManagers, warpSettings = wSettings }) <$> def `withPrinters` printers | ||
| 298 | where | ||
| 299 | runSqlite :: ReaderT ConnectionPool (LoggingT IO) a -> IO a | ||
| 300 | runSqlite = runStderrLoggingT . withSqlitePool "${users.extraUsers."thermoprint".home}/thermoprint.sqlite" 1 . runReaderT | ||
| 301 | |||
| 302 | printers = [ (pure $ genericPrint "/dev/usb/lp0", def) | ||
| 303 | ] | ||
| 304 | |||
| 305 | queueManagers _ = QMConfig | ||
| 306 | { manager = union [ limitHistorySize 100 | ||
| 307 | , limitHistoryAge 3600 | ||
| 308 | ] | ||
| 309 | , collapse = standardCollapse | ||
| 310 | } | ||
| 311 | |||
| 312 | wSettings = setHost "*" . Warp.setPort 8080 $ Warp.defaultSettings | ||
| 313 | ''; | ||
| 314 | |||
| 275 | systemd.services."thermoprint" = { | 315 | systemd.services."thermoprint" = { |
| 316 | environment = { | ||
| 317 | THERMOPRINT_CONFIG = "/etc/thermoprint-server"; | ||
| 318 | THERMOPRINT_CACHE = ${users.extraUsers."thermoprint".home}"/dyre"; | ||
| 319 | }; | ||
| 320 | serviceConfig = { | ||
| 321 | Type = "simple"; | ||
| 322 | ExecStart = ''${pkgs.thermoprint-server}/bin/thermoprint-server''; | ||
| 323 | User = users.extraUsers."thermoprint".name; | ||
| 324 | Group = users.extraUsers."thermoprint".group; | ||
| 325 | }; | ||
| 326 | }; | ||
| 327 | |||
| 328 | systemd.services."thermoprint-webgui" = { | ||
| 276 | serviceConfig = { | 329 | serviceConfig = { |
| 277 | Type = "simple"; | 330 | Type = "simple"; |
| 278 | ExecStart = ''${thermoprint-servant}/bin/thermoprint --database ${users.extraUsers."thermoprint".home}/database.sqlite /dev/usb/lp0''; | 331 | ExecStart = '''${pkgs.thermoprint-webgui}/bin/thermoprint-webgui -P 8080 -A localhost -a "*" -p 8081'; |
| 279 | User = users.extraUsers."thermoprint".name; | 332 | User = users.extraUsers."thermoprint".name; |
| 280 | Group = users.extraUsers."thermoprint".group; | 333 | Group = users.extraUsers."thermoprint".group; |
| 281 | }; | 334 | }; |
diff --git a/custom/thermoprint b/custom/thermoprint | |||
| Subproject 7f84192054e2f3c2e379588b15cf73aaecfbad0 | Subproject 2b9ceaead3f3cd80e973cccecb9a3eebc51154f | ||
