Merge pull request #145035 from pmeiyu/master

authored by

Sandro and committed by
GitHub
29b7d4ad 1ca1038a

+132
+1
nixos/modules/module-list.nix
··· 684 ./services/network-filesystems/tahoe.nix 685 ./services/network-filesystems/diod.nix 686 ./services/network-filesystems/u9fs.nix 687 ./services/network-filesystems/yandex-disk.nix 688 ./services/network-filesystems/xtreemfs.nix 689 ./services/network-filesystems/ceph.nix
··· 684 ./services/network-filesystems/tahoe.nix 685 ./services/network-filesystems/diod.nix 686 ./services/network-filesystems/u9fs.nix 687 + ./services/network-filesystems/webdav.nix 688 ./services/network-filesystems/yandex-disk.nix 689 ./services/network-filesystems/xtreemfs.nix 690 ./services/network-filesystems/ceph.nix
+107
nixos/modules/services/network-filesystems/webdav.nix
···
··· 1 + { config, lib, pkgs, ... }: 2 + 3 + with lib; 4 + let 5 + cfg = config.services.webdav; 6 + format = pkgs.formats.yaml { }; 7 + in 8 + { 9 + options = { 10 + services.webdav = { 11 + enable = mkEnableOption "WebDAV server"; 12 + 13 + user = mkOption { 14 + type = types.str; 15 + default = "webdav"; 16 + description = "User account under which WebDAV runs."; 17 + }; 18 + 19 + group = mkOption { 20 + type = types.str; 21 + default = "webdav"; 22 + description = "Group under which WebDAV runs."; 23 + }; 24 + 25 + settings = mkOption { 26 + type = format.type; 27 + default = { }; 28 + description = '' 29 + Attrset that is converted and passed as config file. Available options 30 + can be found at 31 + <link xlink:href="https://github.com/hacdias/webdav">here</link>. 32 + 33 + This program supports reading username and password configuration 34 + from environment variables, so it's strongly recommended to store 35 + username and password in a separate 36 + <link xlink:href="https://www.freedesktop.org/software/systemd/man/systemd.exec.html#EnvironmentFile=">EnvironmentFile</link>. 37 + This prevents adding secrets to the world-readable Nix store. 38 + ''; 39 + example = literalExpression '' 40 + { 41 + address = "0.0.0.0"; 42 + port = 8080; 43 + scope = "/srv/public"; 44 + modify = true; 45 + auth = true; 46 + users = [ 47 + { 48 + username = "{env}ENV_USERNAME"; 49 + password = "{env}ENV_PASSWORD"; 50 + } 51 + ]; 52 + } 53 + ''; 54 + }; 55 + 56 + configFile = mkOption { 57 + type = types.path; 58 + default = format.generate "webdav.yaml" cfg.settings; 59 + defaultText = "Config file generated from services.webdav.settings"; 60 + description = '' 61 + Path to config file. If this option is set, it will override any 62 + configuration done in options.services.webdav.settings. 63 + ''; 64 + example = "/etc/webdav/config.yaml"; 65 + }; 66 + 67 + environmentFile = mkOption { 68 + type = types.nullOr types.path; 69 + default = null; 70 + description = '' 71 + Environment file as defined in <citerefentry> 72 + <refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum> 73 + </citerefentry>. 74 + ''; 75 + }; 76 + }; 77 + }; 78 + 79 + config = mkIf cfg.enable { 80 + users.users = mkIf (cfg.user == "webdav") { 81 + webdav = { 82 + description = "WebDAV daemon user"; 83 + isSystemUser = true; 84 + group = cfg.group; 85 + }; 86 + }; 87 + 88 + users.groups = mkIf (cfg.group == "webdav") { 89 + webdav = { }; 90 + }; 91 + 92 + systemd.services.webdav = { 93 + description = "WebDAV server"; 94 + after = [ "network.target" ]; 95 + wantedBy = [ "multi-user.target" ]; 96 + serviceConfig = { 97 + ExecStart = "${pkgs.webdav}/bin/webdav -c ${cfg.configFile}"; 98 + Restart = "on-failure"; 99 + User = cfg.user; 100 + Group = cfg.group; 101 + EnvironmentFile = mkIf (cfg.environmentFile != null) [ cfg.environmentFile ]; 102 + }; 103 + }; 104 + }; 105 + 106 + meta.maintainers = with maintainers; [ pengmeiyu ]; 107 + }
+22
pkgs/servers/webdav/default.nix
···
··· 1 + { lib, stdenv, fetchFromGitHub, buildGoModule }: 2 + 3 + buildGoModule rec { 4 + pname = "webdav"; 5 + version = "4.1.1"; 6 + 7 + src = fetchFromGitHub { 8 + owner = "hacdias"; 9 + repo = "webdav"; 10 + rev = "v${version}"; 11 + sha256 = "0jnh1bhc98vcx2vm6hmgak6zwfc0rx898qcdjcca5y9dni4120aq"; 12 + }; 13 + 14 + vendorSha256 = "19nhz6z8h4fxpy4gjx7zz69si499jak7qj9yb17x32lar5m88gvb"; 15 + 16 + meta = with lib; { 17 + description = "Simple WebDAV server"; 18 + homepage = "https://github.com/hacdias/webdav"; 19 + license = licenses.mit; 20 + maintainers = with maintainers; [ pengmeiyu ]; 21 + }; 22 + }
+2
pkgs/top-level/all-packages.nix
··· 21619 21620 wallabag = callPackage ../servers/web-apps/wallabag { }; 21621 21622 webmetro = callPackage ../servers/webmetro { }; 21623 21624 wsdd = callPackage ../servers/wsdd { };
··· 21619 21620 wallabag = callPackage ../servers/web-apps/wallabag { }; 21621 21622 + webdav = callPackage ../servers/webdav { }; 21623 + 21624 webmetro = callPackage ../servers/webmetro { }; 21625 21626 wsdd = callPackage ../servers/wsdd { };