From 36c3f778c89d2449df7edb0901b0dbddd18e69c2 Mon Sep 17 00:00:00 2001
From: Bun <bun@nixfox.ca>
Date: Fri, 14 Mar 2025 18:23:32 -0400
Subject: [PATCH] Lots of user changes and also Spacebar

---
 hosts/midas/firewall/default.nix              |   3 +--
 modules/system/accounts/default.nix           |   3 ++-
 .../system/accounts/users/custom/default.nix  |   7 -----
 modules/system/accounts/users/default.nix     |   8 +++---
 .../users/{custom => }/main/default.nix       |  14 +++++-----
 .../system/accounts/users/system/default.nix  |   9 -------
 modules/system/secrets/default.nix            | Bin 2066 -> 2033 bytes
 .../server/fileserver/jellyfin/default.nix    |   5 +++-
 .../fileserver/jellyfin/nginx/default.nix     |   2 +-
 .../fileserver/jellyfin/user}/default.nix     |   4 +--
 .../server/fileserver/nextcloud/default.nix   |   5 +++-
 .../fileserver/nextcloud/user}/default.nix    |   4 +--
 .../server/icecast/liquidsoap/default.nix     |   1 +
 .../icecast/liquidsoap/user}/default.nix      |   4 +--
 .../services/server/socialserver/default.nix  |   2 +-
 .../server/socialserver/spacebar/default.nix  |  25 ++++++++++++++++++
 .../socialserver/spacebar/user/default.nix    |  11 ++++++++
 .../server/webserver/nginx/default.nix        |   1 +
 .../server/webserver/nginx/user}/default.nix  |   4 +--
 19 files changed, 69 insertions(+), 43 deletions(-)
 delete mode 100644 modules/system/accounts/users/custom/default.nix
 rename modules/system/accounts/users/{custom => }/main/default.nix (72%)
 delete mode 100644 modules/system/accounts/users/system/default.nix
 rename modules/system/{accounts/users/system/jellyfin => services/server/fileserver/jellyfin/user}/default.nix (69%)
 rename modules/system/{accounts/users/system/nextcloud => services/server/fileserver/nextcloud/user}/default.nix (69%)
 rename modules/system/{accounts/users/system/liquidsoap => services/server/icecast/liquidsoap/user}/default.nix (70%)
 create mode 100644 modules/system/services/server/socialserver/spacebar/default.nix
 create mode 100644 modules/system/services/server/socialserver/spacebar/user/default.nix
 rename modules/system/{accounts/users/system/nginx => services/server/webserver/nginx/user}/default.nix (73%)

diff --git a/hosts/midas/firewall/default.nix b/hosts/midas/firewall/default.nix
index 73967e3..8875b2e 100644
--- a/hosts/midas/firewall/default.nix
+++ b/hosts/midas/firewall/default.nix
@@ -13,7 +13,6 @@
         chain PREROUTING {
           type nat hook prerouting priority dstnat; policy accept;
           tcp dport 2211 dnat to ${config.ips.pc}:22 comment "SSH to PC"
-          tcp dport 2222 dnat to 10.100.0.19:22 comment "SSH to Oracle VM"
           
           udp dport { 27005, 27015, 7777 } dnat to ${config.ips.pc} comment "PC Hosted Games"
           
@@ -28,7 +27,7 @@
 
         chain POSTROUTING {
           type nat hook postrouting priority 100; policy accept;
-          oifname "eno1" masquerade
+          oifname "enp0s31f6" masquerade
         }
       '';
     };
diff --git a/modules/system/accounts/default.nix b/modules/system/accounts/default.nix
index 5c525dd..dfbc9b1 100644
--- a/modules/system/accounts/default.nix
+++ b/modules/system/accounts/default.nix
@@ -1,4 +1,5 @@
-{ ... }: {
+{ ... }:
+{
   imports = [
     ./users
     ./groups
diff --git a/modules/system/accounts/users/custom/default.nix b/modules/system/accounts/users/custom/default.nix
deleted file mode 100644
index d2600a9..0000000
--- a/modules/system/accounts/users/custom/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-{ home-manager, ... }:
-{
-  imports = [
-    ./main
-    home-manager.nixosModules.home-manager
-  ];
-}
diff --git a/modules/system/accounts/users/default.nix b/modules/system/accounts/users/default.nix
index 59e3555..d2600a9 100644
--- a/modules/system/accounts/users/default.nix
+++ b/modules/system/accounts/users/default.nix
@@ -1,9 +1,7 @@
-{ ... }:
+{ home-manager, ... }:
 {
   imports = [
-    ./custom
-    ./system
+    ./main
+    home-manager.nixosModules.home-manager
   ];
-
-  users.mutableUsers = false;
 }
diff --git a/modules/system/accounts/users/custom/main/default.nix b/modules/system/accounts/users/main/default.nix
similarity index 72%
rename from modules/system/accounts/users/custom/main/default.nix
rename to modules/system/accounts/users/main/default.nix
index 00fc0a0..350f082 100644
--- a/modules/system/accounts/users/custom/main/default.nix
+++ b/modules/system/accounts/users/main/default.nix
@@ -12,14 +12,14 @@
       isNormalUser = true;
       createHome = true;
       openssh.authorizedKeys.keyFiles = [
-        ../../../../../../hosts/tower/id_ed25519.pub
+        ../../../../../hosts/tower/id_ed25519.pub
 
-        ../../../../../../hosts/envy/id_ed25519.pub
-        ../../../../../../hosts/pear/id_ed25519.pub
-        ../../../../../../hosts/redmond/id_ed25519.pub
+        ../../../../../hosts/envy/id_ed25519.pub
+        ../../../../../hosts/pear/id_ed25519.pub
+        ../../../../../hosts/redmond/id_ed25519.pub
 
-        ../../../../../../hosts/midas/id_ed25519.pub
-        ../../../../../../hosts/prophet/id_ed25519.pub
+        ../../../../../hosts/midas/id_ed25519.pub
+        ../../../../../hosts/prophet/id_ed25519.pub
       ];
       openssh.authorizedKeys.keys = [
         "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJahAoF74BY6GCTsFkt1ADKaraFgJJozW1Y1aBTLK0j9 Pixel9"
@@ -43,6 +43,6 @@
       shell = pkgs.zsh;
     };
 
-    home-manager.users."${config.sysusers.main}" = import ../../../../../home;
+    home-manager.users."${config.sysusers.main}" = import ../../../../home;
   };
 }
diff --git a/modules/system/accounts/users/system/default.nix b/modules/system/accounts/users/system/default.nix
deleted file mode 100644
index ffbaa7a..0000000
--- a/modules/system/accounts/users/system/default.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-{ ... }:
-{
-  imports = [
-    ./jellyfin
-    ./liquidsoap
-    ./nextcloud
-    ./nginx
-  ];
-}
diff --git a/modules/system/secrets/default.nix b/modules/system/secrets/default.nix
index 77483769b1653698c50906705e1af02c97aea64c..3eec42f89b681059858223efb8b421910ddf5a71 100644
GIT binary patch
literal 2033
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
PiJBw8Ql!mZ%Ogc!a<%g5

literal 2066
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

diff --git a/modules/system/services/server/fileserver/jellyfin/default.nix b/modules/system/services/server/fileserver/jellyfin/default.nix
index c0ad6af..b50ec1f 100644
--- a/modules/system/services/server/fileserver/jellyfin/default.nix
+++ b/modules/system/services/server/fileserver/jellyfin/default.nix
@@ -1,6 +1,9 @@
 { config, lib, ... }:
 {
-  imports = [ ./nginx ];
+  imports = [
+    ./nginx
+    ./user
+  ];
 
   config = lib.mkIf config.system.fileserver.enable {
     services.jellyfin.enable = true;
diff --git a/modules/system/services/server/fileserver/jellyfin/nginx/default.nix b/modules/system/services/server/fileserver/jellyfin/nginx/default.nix
index bc9db65..26d20ab 100644
--- a/modules/system/services/server/fileserver/jellyfin/nginx/default.nix
+++ b/modules/system/services/server/fileserver/jellyfin/nginx/default.nix
@@ -1,6 +1,6 @@
 { config, lib, ... }:
 {
-  services.nginx.virtualHosts."jelly.nixfox.ca" = lib.mkIf config.services.forgejo.enable {
+  services.nginx.virtualHosts."jelly.nixfox.ca" = lib.mkIf config.services.jellyfin.enable {
     enableACME = true;
     forceSSL = true;
     locations."/" = {
diff --git a/modules/system/accounts/users/system/jellyfin/default.nix b/modules/system/services/server/fileserver/jellyfin/user/default.nix
similarity index 69%
rename from modules/system/accounts/users/system/jellyfin/default.nix
rename to modules/system/services/server/fileserver/jellyfin/user/default.nix
index ed8cc7b..a168eed 100644
--- a/modules/system/accounts/users/system/jellyfin/default.nix
+++ b/modules/system/services/server/fileserver/jellyfin/user/default.nix
@@ -1,6 +1,6 @@
-{ ... }:
+{ config, lib, ... }:
 {
-  users = {
+  users = lib.mkIf config.services.jellyfin.enable {
     users.jellyfin = {
       group = "jellyfin";
       extraGroups = [ "nfsShare" ];
diff --git a/modules/system/services/server/fileserver/nextcloud/default.nix b/modules/system/services/server/fileserver/nextcloud/default.nix
index 831bedd..0dbb2ef 100644
--- a/modules/system/services/server/fileserver/nextcloud/default.nix
+++ b/modules/system/services/server/fileserver/nextcloud/default.nix
@@ -1,6 +1,9 @@
 { config, lib, pkgs, ... }:
 {
-  imports = [ ./nginx ];
+  imports = [
+    ./nginx
+    ./user
+  ];
 
   config = lib.mkIf config.system.fileserver.enable {
     services.nextcloud = {
diff --git a/modules/system/accounts/users/system/nextcloud/default.nix b/modules/system/services/server/fileserver/nextcloud/user/default.nix
similarity index 69%
rename from modules/system/accounts/users/system/nextcloud/default.nix
rename to modules/system/services/server/fileserver/nextcloud/user/default.nix
index 0722276..49a6ff0 100644
--- a/modules/system/accounts/users/system/nextcloud/default.nix
+++ b/modules/system/services/server/fileserver/nextcloud/user/default.nix
@@ -1,6 +1,6 @@
-{ ... }:
+{ config, lib, ... }:
 {
-  users = {
+  users = lib.mkIf config.services.nextcloud.enable {
     users.nextcloud = {
       group = "nextcloud";
       extraGroups = [ "nfsShare" ];
diff --git a/modules/system/services/server/icecast/liquidsoap/default.nix b/modules/system/services/server/icecast/liquidsoap/default.nix
index 3693261..78024e4 100644
--- a/modules/system/services/server/icecast/liquidsoap/default.nix
+++ b/modules/system/services/server/icecast/liquidsoap/default.nix
@@ -3,5 +3,6 @@
   imports = [
     ./nixbops
     ./nixscrap
+    ./user
   ];
 }
diff --git a/modules/system/accounts/users/system/liquidsoap/default.nix b/modules/system/services/server/icecast/liquidsoap/user/default.nix
similarity index 70%
rename from modules/system/accounts/users/system/liquidsoap/default.nix
rename to modules/system/services/server/icecast/liquidsoap/user/default.nix
index f83e9cc..3f2f698 100644
--- a/modules/system/accounts/users/system/liquidsoap/default.nix
+++ b/modules/system/services/server/icecast/liquidsoap/user/default.nix
@@ -1,6 +1,6 @@
-{ ... }:
+{ config, lib, ... }:
 {
-  users = {
+  users = lib.mkIf config.services.icecast.enable {
     users.liquidsoap = {
       group = "liquidsoap";
       extraGroups = [ "nginx" ];
diff --git a/modules/system/services/server/socialserver/default.nix b/modules/system/services/server/socialserver/default.nix
index c49e35f..eadde80 100644
--- a/modules/system/services/server/socialserver/default.nix
+++ b/modules/system/services/server/socialserver/default.nix
@@ -3,7 +3,7 @@
   imports = [
     ./mastodon
     ./owncast
-    #./spacebar
+    ./spacebar
   ];
 
   options.system.socialserver.enable = lib.mkEnableOption "Enable social media like services";
diff --git a/modules/system/services/server/socialserver/spacebar/default.nix b/modules/system/services/server/socialserver/spacebar/default.nix
new file mode 100644
index 0000000..95a8d71
--- /dev/null
+++ b/modules/system/services/server/socialserver/spacebar/default.nix
@@ -0,0 +1,25 @@
+{ config, lib, pkgs, spacebar, ... }:
+{
+  imports = [
+    #./nginx
+    ./user
+  ];
+
+  config = lib.mkIf config.system.socialserver.enable {
+    systemd.services.spacebar-server = {
+      enable = true;
+      description = "Spacebar Chat Server";
+      documentation = [ "https://docs.spacebar.chat/" ];
+      path = [ spacebar.packages.${pkgs.system}.default ];
+      wantedBy = [ "multi-user.target" ];
+      after = [ "network.target" ];
+      serviceConfig = {
+        WorkingDirectory = "/var/lib/spacebar";
+        ExecStart = "start-bundle";
+        Restart = "always";
+        User = "spacebar";
+      };
+    };
+    environment.persistence."/persist".directories = [ config.systemd.services.spacebar-server.serviceConfig.WorkingDirectory ];
+  };
+}
diff --git a/modules/system/services/server/socialserver/spacebar/user/default.nix b/modules/system/services/server/socialserver/spacebar/user/default.nix
new file mode 100644
index 0000000..16c28a0
--- /dev/null
+++ b/modules/system/services/server/socialserver/spacebar/user/default.nix
@@ -0,0 +1,11 @@
+{ config, lib, ... }:
+{
+  users = lib.mkIf config.system.socialserver.enable {
+    users.spacebar = {
+      group = "spacebar";
+      isSystemUser = true;
+      uid = 138;
+    };
+    groups.spacebar = {};
+  };
+}
diff --git a/modules/system/services/server/webserver/nginx/default.nix b/modules/system/services/server/webserver/nginx/default.nix
index 516a8fe..8834918 100644
--- a/modules/system/services/server/webserver/nginx/default.nix
+++ b/modules/system/services/server/webserver/nginx/default.nix
@@ -2,6 +2,7 @@
 {
   imports = [
     ./rtmp
+    ./user
     ./virtualhosts
   ];
 
diff --git a/modules/system/accounts/users/system/nginx/default.nix b/modules/system/services/server/webserver/nginx/user/default.nix
similarity index 73%
rename from modules/system/accounts/users/system/nginx/default.nix
rename to modules/system/services/server/webserver/nginx/user/default.nix
index 2c5fa8a..ff6b51b 100644
--- a/modules/system/accounts/users/system/nginx/default.nix
+++ b/modules/system/services/server/webserver/nginx/user/default.nix
@@ -1,6 +1,6 @@
-{ ... }:
+{ config, lib, ... }:
 {
-  users = {
+  users = lib.mkIf config.services.nginx.enable {
     users.nginx = {
       group = "nginx";
       extraGroups = [