41 lines
978 B
Nix
41 lines
978 B
Nix
{ nixpkgs }:
|
|
let
|
|
inherit (nixpkgs) lib;
|
|
in
|
|
{
|
|
makeServiceConfig =
|
|
{ system
|
|
, modules
|
|
, service-manager
|
|
,
|
|
}:
|
|
let
|
|
pkgs = nixpkgs.legacyPackages.${system};
|
|
|
|
nixosConfig = lib.nixosSystem {
|
|
inherit system modules;
|
|
specialArgs = { };
|
|
};
|
|
|
|
services = map
|
|
(name: {
|
|
inherit name;
|
|
service = ''${nixosConfig.config.systemd.units."${name}.service".unit}/${name}.service'';
|
|
})
|
|
nixosConfig.config.service-manager.services;
|
|
|
|
servicesPath = pkgs.writeTextFile {
|
|
name = "services";
|
|
destination = "/services.json";
|
|
text = lib.generators.toJSON { } services;
|
|
};
|
|
activationScript = pkgs.writeShellScript "activate" ''
|
|
${service-manager}/bin/service-manager activate \
|
|
--store-path "$(realpath $(dirname ''${0}))"
|
|
'';
|
|
in
|
|
pkgs.linkFarmFromDrvs "service-manager" [
|
|
servicesPath
|
|
activationScript
|
|
];
|
|
}
|