From 5fa28927fc73c28259a9f235f4d5ce923b1a730c Mon Sep 17 00:00:00 2001 From: Nathan Reiner Date: Mon, 16 Sep 2024 22:48:02 +0200 Subject: add flake options --- flake.nix | 47 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/flake.nix b/flake.nix index e305715..2b96109 100644 --- a/flake.nix +++ b/flake.nix @@ -28,9 +28,52 @@ overlays.default = final: prev: { inherit (self.packages.${prev.system}) webtray; }; nixosModules.default = - { pkgs, ... }: { - environment.systemPackages = [ self.packages.${pkgs.system}.default ]; + pkgs, + lib, + config, + ... + }: + { + options.webtray.instances = lib.mkOption { + type = lib.types.attrsOf ( + lib.types.submodule { + options = { + url = lib.mkOption { + description = "URL of the WebTray instance"; + type = lib.types.strMatching "https?://[a-z0-9.]*"; + }; + autoStart = lib.mkOption { + description = "WebTray Instances to start on login"; + type = lib.types.bool; + default = true; + }; + openInWindow = lib.mkOption { + description = "Open Instance as Window"; + type = lib.types.bool; + default = false; + }; + }; + } + ); + }; + + config = { + environment.systemPackages = [ self.packages.${pkgs.system}.default ]; + + systemd.user.services = builtins.mapAttrs (name: value: { + enable = true; + after = if value.autoStart then [ "graphical-session.target" ] else [ ]; + wantedBy = [ "default.target" ]; + description = "WebTray Instance for ${name}"; + serviceConfig = { + Type = "simple"; + ExecStart = "${self.packages.${pkgs.system}}/bin/webtray ${value.url}${ + if value.openInWindow then " --open-at-startup" else "" + }"; + }; + }) config.webtray.instances; + }; }; }; } -- cgit v1.2.3-70-g09d2