1{ pkgs, ... }:
2
3{
4 name = "ifm";
5 meta = with pkgs.lib.maintainers; {
6 maintainers = [ litchipi ];
7 };
8
9 nodes = {
10 server = rec {
11 services.ifm = {
12 enable = true;
13 port = 9001;
14 dataDir = "/data";
15 };
16
17 system.activationScripts.ifm-setup-dir = ''
18 mkdir -p ${services.ifm.dataDir}
19 chmod u+w,g+w,o+w ${services.ifm.dataDir}
20 '';
21 };
22 };
23
24 testScript = ''
25 start_all()
26 server.wait_for_unit("ifm.service")
27 server.wait_for_open_port(9001)
28 server.succeed("curl --fail http://localhost:9001")
29
30 server.succeed("echo \"testfile\" > testfile && shasum testfile >> checksums")
31 server.succeed("curl --fail http://localhost:9001 -X POST -F \"api=upload\" -F \"dir=\" -F \"file=@testfile\" | grep \"OK\"");
32 server.succeed("rm testfile")
33 server.succeed("curl --fail http://localhost:9001 -X POST -F \"api=download\" -F \"filename=testfile\" -F \"dir=\" --output testfile");
34 server.succeed("shasum testfile >> checksums && shasum --check checksums")
35 '';
36}