summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoruakci <uakci@uakci.pl>2021-09-15 01:32:27 +0200
committeruakci <uakci@uakci.pl>2021-09-15 01:48:35 +0200
commit38860e25ea17f81878efe496fccfd23de16dff56 (patch)
tree71791a121ba10365e39e1bcb4ddd0b551a2d6a5e
parentinitial (diff)
downloadnuogai-38860e25ea17f81878efe496fccfd23de16dff56.tar.gz
nuogai-38860e25ea17f81878efe496fccfd23de16dff56.zip
preliminary nixos module
-rw-r--r--flake.nix35
-rw-r--r--module.nix32
2 files changed, 48 insertions, 19 deletions
diff --git a/flake.nix b/flake.nix
index de458af..04a714b 100644
--- a/flake.nix
+++ b/flake.nix
@@ -14,9 +14,7 @@
, serial-predicate-engine-upstream, flake-utils, ... }:
{
inherit (gomod2nix) devShell;
- nixosModule = { config, system, ... }: {
- config.fonts.fonts = [ self.packages.toaqScript.${system} ];
- };
+ nixosModule = a: import ./module.nix (a // { inherit self; system = "x86_64-linux"; });
} // flake-utils.lib.eachDefaultSystem (system:
let
pkgs = (import nixpkgs {
@@ -25,7 +23,8 @@
}).pkgs;
in with pkgs;
let
- toaqScript = pkgs.writeTextDir "share/fonts/ToaqScript.ttf" ./ToaqScript.ttf;
+ toaqScript =
+ pkgs.writeTextDir "share/fonts/ToaqScript.ttf" ./ToaqScript.ttf;
schemePkgs = lib.mapAttrs (name:
{ src, install, patches }:
pkgs.stdenv.mkDerivation {
@@ -53,22 +52,20 @@
'';
};
};
- nuogai = buildGoApplication {
- vendorSha256 = null;
- runVend = true;
- name = "nuogai";
- src = ./.;
- modules = ./gomod2nix.toml;
- buildInputs = (builtins.attrValues schemePkgs) ++ [
- toaqScript
- (imagemagick.overrideAttrs
- (a: { buildInputs = a.buildInputs ++ [ pango ]; }))
- ];
- };
+ nuogai = buildGoApplication {
+ vendorSha256 = null;
+ runVend = true;
+ name = "nuogai";
+ src = ./.;
+ modules = ./gomod2nix.toml;
+ buildInputs = (builtins.attrValues schemePkgs) ++ [
+ toaqScript
+ (imagemagick.overrideAttrs
+ (a: { buildInputs = a.buildInputs ++ [ pango ]; }))
+ ];
+ };
in {
defaultPackage = nuogai;
- packages = schemePkgs // {
- inherit toaqScript nuogai;
- };
+ packages = schemePkgs // { inherit toaqScript nuogai; };
});
}
diff --git a/module.nix b/module.nix
new file mode 100644
index 0000000..eb3eae0
--- /dev/null
+++ b/module.nix
@@ -0,0 +1,32 @@
+{ config, lib, self, ... }:
+let cfg = config.services.nuogai; in with lib; {
+ options.services.nuogai = {
+ enable = mkEnableOption "Enables the nuogaı Discord Bot";
+ nuiPort = mkOption { type = types.port; };
+ spePort = mkOption { type = types.port; };
+ };
+ config = mkIf cfg.enable {
+ fonts.fonts = [ self.packages.toaqScript.${system} ];
+ systemd.services = lib.mapAttrs (k: v: v // {
+ wantedBy = [ "multi-user.target" ];
+ wants = v.wants or [] ++ [ "network-online.target" ];
+ }) {
+ nuogai = {
+ wants = [ "nuigui.service" "serial-predicate-engine.service" ];
+ serviceConfig.ExecStart = "${self.packages.nuogai.${system}}/bin/nuogai";
+ environment = {
+ NUI_PORT = cfg.nuiPort;
+ SPE_PORT = cfg.spePort;
+ };
+ };
+ nuigui = {
+ serviceConfig.ExecStart = "${self.packages.nuigui.${system}}/bin/nuigui";
+ environment.PORT = cfg.nuiPort;
+ };
+ serial-predicate-engine = {
+ serviceConfig.ExecStart = "${self.packages.serial-predicate-engine.${system}}/bin/serial-predicate-engine";
+ environment.PORT = cfg.spePort;
+ };
+ };
+ };
+}