system-manager/nix/lib.nix
2023-02-02 17:31:10 +00:00

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
];
}