Merge pull request #190325 from fgaz/merecat/init

merecat: init at 2.31

authored by Stanisław Pitucha and committed by GitHub 08fbb5de 49ae64fb

+148
+7
nixos/doc/manual/from_md/release-notes/rl-2211.section.xml
··· 376 376 </listitem> 377 377 <listitem> 378 378 <para> 379 + <link xlink:href="https://troglobit.com/projects/merecat/">merecat</link>, 380 + a small and easy HTTP server based on thttpd. Available as 381 + <link linkend="opt-services.merecat.enable">services.merecat</link> 382 + </para> 383 + </listitem> 384 + <listitem> 385 + <para> 379 386 <link xlink:href="https://github.com/L11R/go-autoconfig">go-autoconfig</link>, 380 387 IMAP/SMTP autodiscover server. Available as 381 388 <link linkend="opt-services.go-autoconfig.enable">services.go-autoconfig</link>.
+2
nixos/doc/manual/release-notes/rl-2211.section.md
··· 126 126 127 127 - [expressvpn](https://www.expressvpn.com), the CLI client for ExpressVPN. Available as [services.expressvpn](#opt-services.expressvpn.enable). 128 128 129 + - [merecat](https://troglobit.com/projects/merecat/), a small and easy HTTP server based on thttpd. Available as [services.merecat](#opt-services.merecat.enable) 130 + 129 131 - [go-autoconfig](https://github.com/L11R/go-autoconfig), IMAP/SMTP autodiscover server. Available as [services.go-autoconfig](#opt-services.go-autoconfig.enable). 130 132 131 133 - [tmate-ssh-server](https://github.com/tmate-io/tmate-ssh-server), server side part of [tmate](https://tmate.io/). Available as [services.tmate-ssh-server](#opt-services.tmate-ssh-server.enable).
+1
nixos/modules/module-list.nix
··· 1156 1156 ./services/web-servers/lighttpd/collectd.nix 1157 1157 ./services/web-servers/lighttpd/default.nix 1158 1158 ./services/web-servers/lighttpd/gitweb.nix 1159 + ./services/web-servers/merecat.nix 1159 1160 ./services/web-servers/mighttpd2.nix 1160 1161 ./services/web-servers/minio.nix 1161 1162 ./services/web-servers/molly-brown.nix
+55
nixos/modules/services/web-servers/merecat.nix
··· 1 + { config, lib, pkgs, ... }: 2 + 3 + with lib; 4 + 5 + let 6 + cfg = config.services.merecat; 7 + format = pkgs.formats.keyValue { 8 + mkKeyValue = generators.mkKeyValueDefault { 9 + mkValueString = v: 10 + # In merecat.conf, booleans are "true" and "false" 11 + if builtins.isBool v 12 + then if v then "true" else "false" 13 + else generators.mkValueStringDefault {} v; 14 + } "="; 15 + }; 16 + configFile = format.generate "merecat.conf" cfg.settings; 17 + 18 + in { 19 + 20 + options.services.merecat = { 21 + 22 + enable = mkEnableOption (lib.mdDoc "Merecat HTTP server"); 23 + 24 + settings = mkOption { 25 + inherit (format) type; 26 + default = { }; 27 + description = lib.mdDoc '' 28 + Merecat configuration. Refer to merecat(8) for details on supported values. 29 + ''; 30 + example = { 31 + hostname = "localhost"; 32 + port = 8080; 33 + virtual-host = true; 34 + directory = "/srv/www"; 35 + }; 36 + }; 37 + 38 + }; 39 + 40 + config = mkIf cfg.enable { 41 + 42 + systemd.services.merecat = { 43 + description = "Merecat HTTP server"; 44 + after = [ "network.target" ]; 45 + wantedBy = [ "multi-user.target" ]; 46 + serviceConfig = { 47 + DynamicUser = true; 48 + ExecStart = "${pkgs.merecat}/bin/merecat -n -f ${configFile}"; 49 + AmbientCapabilities = lib.mkIf ((cfg.settings.port or 80) < 1024) [ "CAP_NET_BIND_SERVICE" ]; 50 + }; 51 + }; 52 + 53 + }; 54 + 55 + }
+1
nixos/tests/all-tests.nix
··· 368 368 mediawiki = handleTest ./mediawiki.nix {}; 369 369 meilisearch = handleTest ./meilisearch.nix {}; 370 370 memcached = handleTest ./memcached.nix {}; 371 + merecat = handleTest ./merecat.nix {}; 371 372 metabase = handleTest ./metabase.nix {}; 372 373 minecraft = handleTest ./minecraft.nix {}; 373 374 minecraft-server = handleTest ./minecraft-server.nix {};
+28
nixos/tests/merecat.nix
··· 1 + import ./make-test-python.nix ({ pkgs, ... }: { 2 + name = "merecat"; 3 + meta = with pkgs.lib.maintainers; { 4 + maintainers = [ fgaz ]; 5 + }; 6 + 7 + nodes.machine = { config, pkgs, ... }: { 8 + services.merecat = { 9 + enable = true; 10 + settings = { 11 + hostname = "localhost"; 12 + virtual-host = true; 13 + directory = toString (pkgs.runCommand "merecat-webdir" {} '' 14 + mkdir -p $out/foo.localhost $out/bar.localhost 15 + echo '<h1>Hello foo</h1>' > $out/foo.localhost/index.html 16 + echo '<h1>Hello bar</h1>' > $out/bar.localhost/index.html 17 + ''); 18 + }; 19 + }; 20 + }; 21 + 22 + testScript = '' 23 + machine.wait_for_unit("merecat") 24 + machine.wait_for_open_port(80) 25 + machine.succeed("curl --fail foo.localhost | grep 'Hello foo'") 26 + machine.succeed("curl --fail bar.localhost | grep 'Hello bar'") 27 + ''; 28 + })
+52
pkgs/servers/http/merecat/default.nix
··· 1 + { lib 2 + , stdenv 3 + , fetchFromGitHub 4 + , autoreconfHook 5 + , pkg-config 6 + , libconfuse 7 + , libxcrypt 8 + , testers 9 + , merecat 10 + , nixosTests 11 + }: 12 + 13 + stdenv.mkDerivation rec { 14 + pname = "merecat"; 15 + version = "2.31"; 16 + 17 + # Or, already reconf'd: ftp://ftp.troglobit.com/merecat/merecat-${version}.tar.xz 18 + src = fetchFromGitHub { 19 + owner = "troglobit"; 20 + repo = "merecat"; 21 + rev = "v${version}"; 22 + hash = "sha256-oIzOXUnCFqd3HPyKp58r+enRRpaE7f9hqNITtxCCB7I="; 23 + }; 24 + 25 + nativeBuildInputs = [ 26 + autoreconfHook 27 + pkg-config 28 + ]; 29 + 30 + buildInputs = [ 31 + libconfuse 32 + libxcrypt 33 + ]; 34 + 35 + passthru.tests = { 36 + testVersion = testers.testVersion { 37 + package = merecat; 38 + command = "merecat -V"; 39 + }; 40 + inherit (nixosTests) merecat; 41 + }; 42 + 43 + meta = with lib; { 44 + description = "Small and made-easy HTTP/HTTPS server based on Jef Poskanzer's thttpd"; 45 + homepage = "https://troglobit.com/projects/merecat/"; 46 + license = licenses.bsd2; 47 + maintainers = with maintainers; [ fgaz ]; 48 + platforms = platforms.all; 49 + # Strange header and/or linker errors 50 + broken = stdenv.isDarwin; 51 + }; 52 + }
+2
pkgs/top-level/all-packages.nix
··· 23708 23708 23709 23709 memcached = callPackage ../servers/memcached {}; 23710 23710 23711 + merecat = callPackage ../servers/http/merecat { }; 23712 + 23711 23713 meteor = callPackage ../servers/meteor { }; 23712 23714 23713 23715 micronaut = callPackage ../development/tools/micronaut {};