I've got a program which depends on the static
and config
directories being available on the server along with the binary. The default build phases for NixOps doesn't include these files, as far as I can tell it just compiles the binary and then copies the binary to the server.
How can I modify the build phases such that the static
and config
directories are available on the server? I tried adding:
preInstall = ''
echo "copying static and config files"
cp -a ../static $out/static
cp -a ../config $out/config
'';
But that doesn't seem to actually copy the files over, and I never see the echo
command executed. Here is a gist of the configuration file used by NixOps. The error on the server is:
[root@pprjam:~]# systemctl status pprjam
● pprjam.service - pprjam webapp
Loaded: loaded (/nix/store/z2s52f39p3dx8q9b06rkaqqw5mhdvnmq-unit-pprjam.service/pprjam.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sat 2018-02-17 01:29:57 UTC; 1min 27s ago
Process: 6917 ExecStart=/nix/store/khilhwldcbm0xm3a3bzhy6f0kwdk8w1p-pprjam-0.0.0/bin/pprjam (code=exited, status=1/FAILURE)
Main PID: 6917 (code=exited, status=1/FAILURE)
Feb 17 01:29:51 pprjam systemd[1]: Started pprjam webapp.
Feb 17 01:29:56 pprjam pprjam[6917]: pprjam: static: getDirectoryContents:openDirStream: does not exist (No such file or directory)
Feb 17 01:29:57 pprjam systemd[1]: pprjam.service: Main process exited, code=exited, status=1/FAILURE
Feb 17 01:29:57 pprjam systemd[1]: pprjam.service: Unit entered failed state.
Feb 17 01:29:57 pprjam systemd[1]: pprjam.service: Failed with result 'exit-code'.
In your gist it looks like you are merging the preInstall attribute onto the existing attributes for your pprjam package. That would mean that you are changing the attributes of your package after it has already been built. If that's right then you probably want to make use of overrideAttrs
instead (see the manual and source).
Also by config
and static
directories do you mean those in /etc
? AFAIK they are fairly fundamental to a NixOS system and should always be present.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With