Extend NixOS: Difference between revisions
imported>Mic92 |
imported>Mic92 |
||
| Line 10: | Line 10: | ||
= Implementations = | = Implementations = | ||
== Quick Implementation == | == Quick Implementation == | ||
| Line 36: | Line 34: | ||
environment.systemPackages = [ pkgs.screen ]; | environment.systemPackages = [ pkgs.screen ]; | ||
# ... usual configuration ... | # ... usual configuration ... | ||
| Line 56: | Line 53: | ||
{ | { | ||
systemd.services = pkgs.lib.mkIf (config.networking.hostname == "my-server") { | |||
ircSession = { | |||
wantedBy = [ "multi-user.target" ]; | |||
after = [ "network.target" ]; | |||
description = "Start the irc client of username."; | |||
serviceConfig = { | |||
Type = "forking"; | |||
User = "username"; | |||
ExecStart = ''${pkgs.screen}/bin/screen -dmS irc ${pkgs.irssi}/bin/irssi''; | |||
ExecStop = ''${pkgs.screen}/bin/screen -S irc -X quit''; | |||
}; | |||
}; | |||
}; | }; | ||
environment.systemPackages = pkgs.lib.mkIf (config.networking.hostname == "my-server") [ pkgs.screen ]; | environment.systemPackages = pkgs.lib.mkIf (config.networking.hostname == "my-server") [ pkgs.screen ]; | ||
# ... usual configuration ... | # ... usual configuration ... | ||
| Line 91: | Line 93: | ||
pkgs.lib.mkIf (config.networking.hostname == "my-server") { | pkgs.lib.mkIf (config.networking.hostname == "my-server") { | ||
systemd.services.ircSession = { | |||
wantedBy = [ "multi-user.target" ]; | |||
after = [ "network.target" ]; | |||
description = "Start the irc client of username."; | |||
serviceConfig = { | |||
Type = "forking"; | |||
User = "username"; | |||
ExecStart = ''${pkgs.screen}/bin/screen -dmS irc ${pkgs.irssi}/bin/irssi''; | |||
ExecStop = ''${pkgs.screen}/bin/screen -S irc -X quit''; | |||
}; | |||
}; | }; | ||
environment.systemPackages = [ pkgs.screen ]; | environment.systemPackages = [ pkgs.screen ]; | ||
} | |||
</syntaxhighlight> | </syntaxhighlight> | ||
If we organize our configuration like this, sharing it across machines is easier. In addition, our IRC client can be consistent across machines that choose to use it. | If we organize our configuration like this, sharing it across machines is easier. In addition, our IRC client can be consistent across machines that choose to use it. | ||
| Line 140: | Line 147: | ||
config = mkIf cfg.enable { | config = mkIf cfg.enable { | ||
systemd.services.ircSession = { | |||
description = "Start the irc client of | wantedBy = [ "multi-user.target" ]; | ||
after = [ "network.target" ]; | |||
description = "Start the irc client of username."; | |||
serviceConfig = { | |||
Type = "forking"; | |||
User = "username"; | |||
ExecStart = ''${pkgs.screen}/bin/screen -dmS irc ${pkgs.irssi}/bin/irssi''; | |||
ExecStop = ''${pkgs.screen}/bin/screen -S irc -X quit''; | |||
}; | |||
}; | }; | ||
environment.systemPackages = [ pkgs.screen ]; | environment.systemPackages = [ pkgs.screen ]; | ||
}; | }; | ||
} | } | ||
| Line 229: | Line 241: | ||
config = mkIf anyIrcClient { | config = mkIf anyIrcClient { | ||
environment.systemPackages = [ pkgs.screen ]; | environment.systemPackages = [ pkgs.screen ]; | ||
}; | }; | ||
} | } | ||