summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authorIlan Joselevich <personal@ilanjoselevich.com>2023-07-07 19:50:29 +0300
committerIlan Joselevich <personal@ilanjoselevich.com>2023-07-07 20:03:54 +0300
commit160edcf2c5fd9aab2fd26d7e6a32b00a4afc28ca (patch)
tree1d5f4e939b4072ea27a36468bf440445ec9a6055 /nixos
parent73d174c62ba412c79358895282b6ecee9497469a (diff)
downloadnixpkgs-160edcf2c5fd9aab2fd26d7e6a32b00a4afc28ca.tar
nixpkgs-160edcf2c5fd9aab2fd26d7e6a32b00a4afc28ca.tar.gz
nixpkgs-160edcf2c5fd9aab2fd26d7e6a32b00a4afc28ca.tar.bz2
nixpkgs-160edcf2c5fd9aab2fd26d7e6a32b00a4afc28ca.tar.lz
nixpkgs-160edcf2c5fd9aab2fd26d7e6a32b00a4afc28ca.tar.xz
nixpkgs-160edcf2c5fd9aab2fd26d7e6a32b00a4afc28ca.tar.zst
nixpkgs-160edcf2c5fd9aab2fd26d7e6a32b00a4afc28ca.zip
nixos/twingate: add package option and test
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/services/networking/twingate.nix30
-rw-r--r--nixos/tests/all-tests.nix1
-rw-r--r--nixos/tests/twingate.nix10
3 files changed, 24 insertions, 17 deletions
diff --git a/nixos/modules/services/networking/twingate.nix b/nixos/modules/services/networking/twingate.nix
index 17140bffd21..1454a7431cd 100644
--- a/nixos/modules/services/networking/twingate.nix
+++ b/nixos/modules/services/networking/twingate.nix
@@ -1,28 +1,24 @@
 { config, lib, pkgs, ... }:
 
-with lib;
-
 let
   cfg = config.services.twingate;
-
-in {
-
+in
+{
   options.services.twingate = {
-    enable = mkEnableOption (lib.mdDoc "Twingate Client daemon");
+    enable = lib.mkEnableOption (lib.mdDoc "Twingate Client daemon");
+    package = lib.mkPackageOptionMD pkgs "twingate" { };
   };
 
-  config = mkIf cfg.enable {
-
-    networking.firewall.checkReversePath = lib.mkDefault false;
-    networking.networkmanager.enable = true;
-
-    environment.systemPackages = [ pkgs.twingate ]; # for the CLI
-    systemd.packages = [ pkgs.twingate ];
+  config = lib.mkIf cfg.enable {
+    systemd.packages = [ cfg.package ];
+    systemd.services.twingate = {
+      preStart = "cp -r -n ${cfg.package}/etc/twingate/. /etc/twingate/";
+      wantedBy = [ "multi-user.target" ];
+    };
 
-    systemd.services.twingate.preStart = ''
-      cp -r -n ${pkgs.twingate}/etc/twingate/. /etc/twingate/
-    '';
+    networking.firewall.checkReversePath = lib.mkDefault "loose";
+    services.resolved.enable = !(config.networking.networkmanager.enable);
 
-    systemd.services.twingate.wantedBy = [ "multi-user.target" ];
+    environment.systemPackages = [ cfg.package ]; # For the CLI.
   };
 }
diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix
index f7f57b3268e..587fb07ed7b 100644
--- a/nixos/tests/all-tests.nix
+++ b/nixos/tests/all-tests.nix
@@ -801,6 +801,7 @@ in {
   tuptime = handleTest ./tuptime.nix {};
   turbovnc-headless-server = handleTest ./turbovnc-headless-server.nix {};
   tuxguitar = handleTest ./tuxguitar.nix {};
+  twingate = runTest ./twingate.nix;
   ucarp = handleTest ./ucarp.nix {};
   udisks2 = handleTest ./udisks2.nix {};
   ulogd = handleTest ./ulogd.nix {};
diff --git a/nixos/tests/twingate.nix b/nixos/tests/twingate.nix
new file mode 100644
index 00000000000..8c7161b6fae
--- /dev/null
+++ b/nixos/tests/twingate.nix
@@ -0,0 +1,10 @@
+{
+  name = "twingate";
+
+  nodes.machine.services.twingate.enable = true;
+
+  testScript = { nodes, ... }: ''
+    machine.wait_for_unit("twingate.service")
+    machine.succeed("twingate --version | grep '${nodes.machine.services.twingate.package.version}' >&2")
+  '';
+}