summaryrefslogtreecommitdiffstats
path: root/krebs/3modules/announce-activation.nix
diff options
context:
space:
mode:
authormakefu <github@syntax-fehler.de>2017-09-06 11:12:24 +0200
committermakefu <github@syntax-fehler.de>2017-09-06 11:12:24 +0200
commit4399e8ee64864596d1a5062a78cf405e2c5d6221 (patch)
tree0bcc67e7d0f4ff22ca7e4840608f72015a49fbdd /krebs/3modules/announce-activation.nix
parentd12b4d86310ab56ac87f4ba768e49fd6423a9f37 (diff)
parent99ecdb4dab32d5a5044cd439a9ce639801d1398b (diff)
Merge remote-tracking branch 'lass/master'
Diffstat (limited to 'krebs/3modules/announce-activation.nix')
-rw-r--r--krebs/3modules/announce-activation.nix60
1 files changed, 60 insertions, 0 deletions
diff --git a/krebs/3modules/announce-activation.nix b/krebs/3modules/announce-activation.nix
new file mode 100644
index 000000000..5a3a788c2
--- /dev/null
+++ b/krebs/3modules/announce-activation.nix
@@ -0,0 +1,60 @@
+with import <stockholm/lib>;
+{ config, pkgs, ... }: let
+ cfg = config.krebs.announce-activation;
+ announce-activation = pkgs.writeDash "announce-activation" ''
+ set -efu
+ message=$(${cfg.get-message})
+ exec ${pkgs.irc-announce}/bin/irc-announce \
+ ${shell.escape cfg.irc.server} \
+ ${shell.escape (toString cfg.irc.port)} \
+ ${shell.escape cfg.irc.nick} \
+ ${shell.escape cfg.irc.channel} \
+ "$message"
+ '';
+ default-get-message = pkgs.writeDash "announce-activation-get-message" ''
+ set -efu
+ PATH=${makeBinPath [
+ pkgs.coreutils
+ pkgs.gawk
+ pkgs.gnused
+ pkgs.nix
+ ]}
+ profile=/nix/var/nix/profiles/system
+ gen_info=$(nix-env -p "$profile" --list-generations | tail -1)
+ gen_no=$(echo "$gen_info" | awk '{print$1}')
+ pretty_name=$(sed -n '/^PRETTY_NAME=/{s/.*="//;s/"$//;p}' /etc/os-release)
+ echo "activating generation $gen_no $pretty_name"
+ '';
+in {
+ options.krebs.announce-activation = {
+ enable = mkEnableOption "announce-activation";
+ get-message = mkOption {
+ default = default-get-message;
+ type = types.package;
+ };
+ irc = {
+ # TODO rename channel to target?
+ channel = mkOption {
+ default = "#retiolum";
+ type = types.str; # TODO types.irc-channel
+ };
+ nick = mkOption {
+ default = config.krebs.build.host.name;
+ type = types.label;
+ };
+ port = mkOption {
+ default = 6667;
+ type = types.int;
+ };
+ server = mkOption {
+ default = "ni.r";
+ type = types.hostname;
+ };
+ };
+ };
+ config = mkIf cfg.enable {
+ system.activationScripts.announce-activation = ''
+ ${announce-activation}
+ '';
+ };
+}