diff options
-rw-r--r-- | pkgs/default.nix | 3 | ||||
-rw-r--r-- | pkgs/profpatsch/warpspeed/default.nix | 34 |
2 files changed, 37 insertions, 0 deletions
diff --git a/pkgs/default.nix b/pkgs/default.nix index 1b8665dc..5f3d6d66 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -56,6 +56,9 @@ let }; profpatsch = pkgs.recurseIntoAttrs { display-infos = callPackage ./profpatsch/display-infos {}; + warpspeed = callPackage ./profpatsch/warpspeed { + inherit (pkgs.haskellPackages) ghcWithPackages; + }; }; sternenseemann = pkgs.recurseIntoAttrs { spacecookie = pkgs.haskellPackages.callPackage ./sternenseemann/spacecookie {}; diff --git a/pkgs/profpatsch/warpspeed/default.nix b/pkgs/profpatsch/warpspeed/default.nix new file mode 100644 index 00000000..a73169b5 --- /dev/null +++ b/pkgs/profpatsch/warpspeed/default.nix @@ -0,0 +1,34 @@ +{ lib, runCommand, ghcWithPackages }: + +let + name = "warpspeed-1.0"; + + script = builtins.toFile "${name}.hs" '' + {-# LANGUAGE OverloadedStrings #-} + module Main where + + import Safe + import System.Environment (getArgs) + import System.Exit (die) + import Network.Wai + import Network.Wai.Middleware.Static + import Network.Wai.Handler.Warp + import Network.HTTP.Types.Status + + main :: IO () + main = do + args <- getArgs + port <- case headMay args >>= readMay of + Just p -> pure $ p + Nothing -> die "please specify a port" + runEnv port $ static $ \_ resp -> resp $ responseLBS notFound404 [] "" + ''; + + deps = hp: with hp; [ wai-middleware-static warp safe ]; + +in runCommand name { + meta.description = "Trivial and very fast static HTTP file server"; +} '' + mkdir -p $out/bin + ${ghcWithPackages deps}/bin/ghc -O2 -Wall -o "$out/bin/warpspeed" ${script} +'' |