diff options
| author | Daiderd Jordan <daiderd@gmail.com> | 2016-11-07 21:00:23 +0100 |
|---|---|---|
| committer | Daiderd Jordan <daiderd@gmail.com> | 2016-11-07 21:00:23 +0100 |
| commit | 81b8a44e400569717385556c17b34eb9d14410c5 (patch) | |
| tree | 893a6bc5629de4fe736e3a680c8ddd1cbc92af01 /modules/launchd | |
| parent | f6513722522999e7ce5a144df5fda591cf214dcb (diff) | |
add /Library/LaunchDaemons to system
Diffstat (limited to 'modules/launchd')
| -rw-r--r-- | modules/launchd/default.nix | 99 |
1 files changed, 55 insertions, 44 deletions
diff --git a/modules/launchd/default.nix b/modules/launchd/default.nix index cb5e4d9..dccddd0 100644 --- a/modules/launchd/default.nix +++ b/modules/launchd/default.nix @@ -13,8 +13,8 @@ let { config, name, ... }: { options = { plist = mkOption { - type = types.path; internal = true; + type = types.path; description = "The generated plist."; }; @@ -35,55 +35,56 @@ let config = { serviceConfig.Label = mkDefault "org.nixos.${name}"; - plist = pkgs.writeText "${config.serviceConfig.Label}.plist" '' + plist = pkgs.writeText "${config.serviceConfig.Label}.plist" ('' <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> - ${xmlMapAttr xmlString "Label" config.serviceConfig.Label} - ${xmlMapAttr xmlBool "Disabled" config.serviceConfig.Disabled} - ${xmlMapAttr xmlString "UserName" config.serviceConfig.UserName} - ${xmlMapAttr xmlString "GroupName" config.serviceConfig.GroupName} - ${xmlMapAttr (xmlMapAttrs xmlBool) "inetdCompatibility" config.serviceConfig.inetdCompatibility} - ${xmlMapAttr (xmlMap xmlString) "LimitLoadToHosts" config.serviceConfig.LimitLoadToHosts} - ${xmlMapAttr (xmlMap xmlString) "LimitLoadFromHosts" config.serviceConfig.LimitLoadFromHosts} - ${xmlMapAttr xmlString "LimitLoadToSessionType" config.serviceConfig.LimitLoadToSessionType} - ${xmlMapAttr xmlString "Program" config.serviceConfig.Program} - ${xmlMapAttr (xmlMap xmlString) "ProgramArguments" config.serviceConfig.ProgramArguments} - ${xmlMapAttr xmlBool "EnableGlobbing" config.serviceConfig.EnableGlobbing} - ${xmlMapAttr xmlBool "EnableTransactions" config.serviceConfig.EnableTransactions} - ${xmlMapAttr xmlBool "OnDemand" config.serviceConfig.OnDemand} - ${xmlMapAttr xmlBool "KeepAlive" config.serviceConfig.KeepAlive} - ${xmlMapAttr xmlBool "RunAtLoad" config.serviceConfig.RunAtLoad} - ${xmlMapAttr xmlString "RootDirectory" config.serviceConfig.RootDirectory} - ${xmlMapAttr xmlString "WorkingDirectory" config.serviceConfig.WorkingDirectory} - ${xmlMapAttr (xmlMapAttrs xmlString) "EnvironmentVariables" config.serviceConfig.EnvironmentVariables} - ${xmlMapAttr xmlInt "Umask" config.serviceConfig.Umask} - ${xmlMapAttr xmlInt "TimeOut" config.serviceConfig.TimeOut} - ${xmlMapAttr xmlInt "ExitTimeOut" config.serviceConfig.ExitTimeOut} - ${xmlMapAttr xmlInt "ThrottleInterval" config.serviceConfig.ThrottleInterval} - ${xmlMapAttr xmlBool "InitGroups" config.serviceConfig.InitGroups} - ${xmlMapAttr (xmlMap xmlString) "WatchPaths" config.serviceConfig.WatchPaths} - ${xmlMapAttr (xmlMap xmlString) "QueueDirectories" config.serviceConfig.QueueDirectories} - ${xmlMapAttr xmlBool "StartOnMount" config.serviceConfig.StartOnMount} - ${xmlMapAttr xmlInt "StartInterval" config.serviceConfig.StartInterval} - ${xmlMapAttr (xmlMapAttrs xmlInt) "StartCalendarInterval" config.serviceConfig.StartCalendarInterval} - ${xmlMapAttr xmlString "StandardInPath" config.serviceConfig.StandardInPath} - ${xmlMapAttr xmlString "StandardOutPath" config.serviceConfig.StandardOutPath} - ${xmlMapAttr xmlString "StandardErrorPath" config.serviceConfig.StandardErrorPath} - ${xmlMapAttr xmlBool "Debug" config.serviceConfig.Debug} - ${xmlMapAttr xmlBool "WaitForDebugger" config.serviceConfig.WaitForDebugger} - ${xmlMapAttr (xmlMapAttrs xmlInt) "SoftResourceLimits" config.serviceConfig.SoftResourceLimits} - ${xmlMapAttr (xmlMapAttrs xmlInt) "HardResourceLimits" config.serviceConfig.HardResourceLimits} - ${xmlMapAttr xmlInt "Nice" config.serviceConfig.Nice} - ${xmlMapAttr xmlString "ProcessType" config.serviceConfig.ProcessType} - ${xmlMapAttr xmlBool "AbandonProcessGroup" config.serviceConfig.AbandonProcessGroup} - ${xmlMapAttr xmlBool "LowPriorityIO" config.serviceConfig.LowPriorityIO} - ${xmlMapAttr xmlBool "LaunchOnlyOnce" config.serviceConfig.LaunchOnlyOnce} - ${xmlMapAttr (xmlMapAttrs xmlBool) "MachServices" config.serviceConfig.MachServices} + '' + xmlMapAttr xmlString "Label" config.serviceConfig.Label + + xmlMapAttr xmlBool "Disabled" config.serviceConfig.Disabled + + xmlMapAttr xmlString "UserName" config.serviceConfig.UserName + + xmlMapAttr xmlString "GroupName" config.serviceConfig.GroupName + + xmlMapAttr (xmlMapAttrs xmlBool) "inetdCompatibility" config.serviceConfig.inetdCompatibility + + xmlMapAttr (xmlMap xmlString) "LimitLoadToHosts" config.serviceConfig.LimitLoadToHosts + + xmlMapAttr (xmlMap xmlString) "LimitLoadFromHosts" config.serviceConfig.LimitLoadFromHosts + + xmlMapAttr xmlString "LimitLoadToSessionType" config.serviceConfig.LimitLoadToSessionType + + xmlMapAttr xmlString "Program" config.serviceConfig.Program + + xmlMapAttr (xmlMap xmlString) "ProgramArguments" config.serviceConfig.ProgramArguments + + xmlMapAttr xmlBool "EnableGlobbing" config.serviceConfig.EnableGlobbing + + xmlMapAttr xmlBool "EnableTransactions" config.serviceConfig.EnableTransactions + + xmlMapAttr xmlBool "OnDemand" config.serviceConfig.OnDemand + + xmlMapAttr xmlBool "KeepAlive" config.serviceConfig.KeepAlive + + xmlMapAttr xmlBool "RunAtLoad" config.serviceConfig.RunAtLoad + + xmlMapAttr xmlString "RootDirectory" config.serviceConfig.RootDirectory + + xmlMapAttr xmlString "WorkingDirectory" config.serviceConfig.WorkingDirectory + + xmlMapAttr (xmlMapAttrs xmlString) "EnvironmentVariables" config.serviceConfig.EnvironmentVariables + + xmlMapAttr xmlInt "Umask" config.serviceConfig.Umask + + xmlMapAttr xmlInt "TimeOut" config.serviceConfig.TimeOut + + xmlMapAttr xmlInt "ExitTimeOut" config.serviceConfig.ExitTimeOut + + xmlMapAttr xmlInt "ThrottleInterval" config.serviceConfig.ThrottleInterval + + xmlMapAttr xmlBool "InitGroups" config.serviceConfig.InitGroups + + xmlMapAttr (xmlMap xmlString) "WatchPaths" config.serviceConfig.WatchPaths + + xmlMapAttr (xmlMap xmlString) "QueueDirectories" config.serviceConfig.QueueDirectories + + xmlMapAttr xmlBool "StartOnMount" config.serviceConfig.StartOnMount + + xmlMapAttr xmlInt "StartInterval" config.serviceConfig.StartInterval + + xmlMapAttr (xmlMapAttrs xmlInt) "StartCalendarInterval" config.serviceConfig.StartCalendarInterval + + xmlMapAttr xmlString "StandardInPath" config.serviceConfig.StandardInPath + + xmlMapAttr xmlString "StandardOutPath" config.serviceConfig.StandardOutPath + + xmlMapAttr xmlString "StandardErrorPath" config.serviceConfig.StandardErrorPath + + xmlMapAttr xmlBool "Debug" config.serviceConfig.Debug + + xmlMapAttr xmlBool "WaitForDebugger" config.serviceConfig.WaitForDebugger + + xmlMapAttr (xmlMapAttrs xmlInt) "SoftResourceLimits" config.serviceConfig.SoftResourceLimits + + xmlMapAttr (xmlMapAttrs xmlInt) "HardResourceLimits" config.serviceConfig.HardResourceLimits + + xmlMapAttr xmlInt "Nice" config.serviceConfig.Nice + + xmlMapAttr xmlString "ProcessType" config.serviceConfig.ProcessType + + xmlMapAttr xmlBool "AbandonProcessGroup" config.serviceConfig.AbandonProcessGroup + + xmlMapAttr xmlBool "LowPriorityIO" config.serviceConfig.LowPriorityIO + + xmlMapAttr xmlBool "LaunchOnlyOnce" config.serviceConfig.LaunchOnlyOnce + + xmlMapAttr (xmlMapAttrs xmlBool) "MachServices" config.serviceConfig.MachServices + + '' </dict> </plist> - ''; + ''); }; }; @@ -112,6 +113,16 @@ in { config = { + system.build.launchd = pkgs.stdenvNoCC.mkDerivation { + name = "launchd-library"; + preferLocalBuild = true; + + buildCommand = '' + mkdir -p $out/Library/LaunchDaemons + ln -s ${cfg.daemons.nix-daemon.plist} $out/Library/LaunchDaemons/${cfg.daemons.nix-daemon.serviceConfig.Label}.plist + ''; + }; + system.activationScripts.launchd.text = '' # Set up launchd services in /Library/LaunchAgents, /Library/LaunchDaemons and ~/Library/LaunchAgents echo "setting up launchd services..." |
