From ee58ab04af3c4a2737913051f3b8636e084448c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kier=C3=A1n=20Meinhardt?= Date: Mon, 10 Jun 2019 17:05:36 +0200 Subject: [PATCH] traadfri: move out to module --- configs/default.nix | 13 +-------- configs/traadfri.nix | 21 ++++++++++++++ modules/traadfri.nix | 46 ++++++++++++++++++++++++++++++ systems/catullus/configuration.nix | 22 ++++---------- 4 files changed, 74 insertions(+), 28 deletions(-) create mode 100644 configs/traadfri.nix create mode 100644 modules/traadfri.nix diff --git a/configs/default.nix b/configs/default.nix index 1557c35..163b5e9 100644 --- a/configs/default.nix +++ b/configs/default.nix @@ -49,6 +49,7 @@ + @@ -112,17 +113,8 @@ odyssey = pkgs.callPackage {}; wttr = pkgs.callPackage {}; git-quick-stats = pkgs.callPackage {}; - libcoap = pkgs.callPackage {}; writeDash = pkgs.writers.writeDash; writeDashBin = pkgs.writers.writeDashBin; - traadfri = - let traadfri-package = pkgs.fetchFromGitHub { - owner = "kmein"; - repo = "traadfri"; - rev = "9a34ce96363e0709adf9ff842e3dfc6d469e5217"; - sha256 = "1dj4xvzq51n2s3vnwh8f83lxn00x895wc92jp83x3pkcrjvkkzxn"; - }; - in pkgs.python3Packages.callPackage traadfri-package {}; dic = pkgs.callPackage {}; yt-next = pkgs.callPackage {}; @@ -409,9 +401,6 @@ n wtf depp - ] ++ [ - libcoap - traadfri ]; } ]; diff --git a/configs/traadfri.nix b/configs/traadfri.nix new file mode 100644 index 0000000..589055f --- /dev/null +++ b/configs/traadfri.nix @@ -0,0 +1,21 @@ +{ pkgs, lib, ... }: +{ + imports = [ ]; + + niveum.traadfri = { + enable = true; + user = "kmein"; + host = "192.168.178.28"; + key = lib.strings.removeSuffix "\n" (builtins.readFile ); + rooms = { + bedroom = 131074; + corridor = 131076; + kitchen = 131075; + living-room = 131073; + }; + bulbs = { + bedread = 65546; + livingread = 65537; + }; + }; +} diff --git a/modules/traadfri.nix b/modules/traadfri.nix new file mode 100644 index 0000000..f5b6ae3 --- /dev/null +++ b/modules/traadfri.nix @@ -0,0 +1,46 @@ +{ pkgs, lib, config, ... }: +with lib; +let + cfg = config.niveum.traadfri; + traadfri = + let traadfri-package = pkgs.fetchFromGitHub { + owner = "kmein"; + repo = "traadfri"; + rev = "9a34ce96363e0709adf9ff842e3dfc6d469e5217"; + sha256 = "1dj4xvzq51n2s3vnwh8f83lxn00x895wc92jp83x3pkcrjvkkzxn"; + }; + in pkgs.python3Packages.callPackage traadfri-package { + libcoap = pkgs.callPackage {}; + }; +in +{ + options.niveum.traadfri = { + enable = mkEnableOption "Trådfri CLI"; + user = mkOption { type = types.str; }; + host = mkOption { type = types.str; }; + key = mkOption { type = types.str; }; + rooms = mkOption { type = types.attrsOf types.int; default = {}; }; + bulbs = mkOption { type = types.attrsOf types.int; default = {}; }; + }; + + config = mkIf cfg.enable { + environment.shellAliases = + lib.attrsets.mapAttrs' + (name: value: + lib.nameValuePair "traadfri-${name}" "traadfri bulb ${toString value}") + cfg.bulbs + // lib.attrsets.mapAttrs' + (name: value: + lib.nameValuePair "traadfri-${name}" "traadfri group ${toString value}") + cfg.rooms; + + environment.systemPackages = [ + (pkgs.writeShellScriptBin "traadfri" '' + TRAADFRI_USER="${cfg.user}" \ + TRAADFRI_KEY="${cfg.key}" \ + TRAADFRI_HUB="${cfg.host}" \ + ${traadfri}/bin/traadfri $@ + '') + ]; + }; +} diff --git a/systems/catullus/configuration.nix b/systems/catullus/configuration.nix index 4461a1e..dd8852d 100644 --- a/systems/catullus/configuration.nix +++ b/systems/catullus/configuration.nix @@ -13,26 +13,16 @@ in { + { - nixpkgs.config.packageOverrides = pkgs: { - libcoap = pkgs.callPackage {}; - traadfri = - let traadfri-package = pkgs.fetchFromGitHub { - owner = "kmein"; - repo = "traadfri"; - rev = "9a34ce96363e0709adf9ff842e3dfc6d469e5217"; - sha256 = "1dj4xvzq51n2s3vnwh8f83lxn00x895wc92jp83x3pkcrjvkkzxn"; - }; - in pkgs.python3Packages.callPackage traadfri-package {}; - }; + environment.systemPackages = [ pkgs.wtf ]; - environment.systemPackages = [ pkgs.traadfri ]; - environment.variables = { - TRAADFRI_USER = "kmein"; - TRAADFRI_HUB = "192.168.178.28"; - TRAADFRI_KEY = builtins.readFile ; + systemd.services.wtf = { + wantedBy = [ "multi-user.target" ]; + script = "${pkgs.tmux}/bin/tmux new-session -d '${pkgs.wtf}/bin/wtf --config=${wtf-config}'"; + serviceConfig.Type = "oneshot"; }; } ];