{pkgs, ...}: { environment.etc."srv/docker-compose.yml" = builtins.readFile ./docker-compose.yml; systemd.services.load-balancer = let dataset = "gc1_srv"; in { wantedBy = ["multi-user.target"]; requires = ["public-network.service" "zfs-import-${dataset}.service"]; after = ["public-network.service" "zfs-import-${dataset}.service"]; serviceConfig = { ExecStart = "${pkgs.docker}/bin/docker compose up"; WorkingDirectory = "/etc/srv/load-balancer"; }; }; } # '//' in nix means "merge attribute sets". We're importing a function at the # path, then calling it with the attr set as an argument, and merging the # results with the config above // import ./common/services/load-balancer { dataset = "gc1_srv"; pkgs = pkgs; } // import ./common/services/conduit.nix { dataset = "gc1_srv"; pkgs = pkgs; domain = "chat.techwork.zone"; }