OOKNET                             [ /  search the index  ]  
──────────────────────────────────────────────────────────────────────────────────────
══════════════════════════════════════════════════════════════════════════════════════
OOKNET   [ /  search  ]  
────────────────────────────────────────────────
════════════════════════════════════════════════
 
HASH      338e3a25a1da
DATE      2025-01-12
SUBJECT   forgejo: add forgejo cli script
FILES     1 CHANGED
HASH      338e3a25a1da
DATE      2025-01-12
SUBJECT   forgejo: add forgejo cli script
FILES     1 CHANGED
 

diff --git a/modules/nixos/server/services/forgejo/default.nix b/modules/nixos/ser
ver/services/forgejo/default.nix
index c31731a..7cfd06e 100644
--- a/modules/nixos/server/services/forgejo/default.nix
+++ b/modules/nixos/server/services/forgejo/default.nix
@@ -1,10 +1,11 @@
 {
   config,
   lib,
+  pkgs,
   ...
 }: let
   inherit (config.ooknet.server) services domain;
-  inherit (lib) mkIf elem;
+  inherit (lib) mkIf elem getExe;
 in {
   config = mkIf (elem "forgejo" services) {
     networking.firewall.allowedTCPPorts = [2222];
@@ -62,5 +63,24 @@ in {
         '';
       };
     };
+    # credit to TLATER
+    # https://discourse.nixos.org/t/how-to-access-forgejo-cli/45370
+    environment.systemPackages = let
+      cfg = config.services.forgejo;
+      forgejo-cli = pkgs.writeScriptBin "forgejo-cli" ''
+        #!${pkgs.runtimeShell}
+        cd ${cfg.stateDir}
+        sudo=exec
+        if [[ "$USER" != forgejo ]]; then
+          sudo='exec /run/wrappers/bin/sudo -u ${cfg.user} -g ${cfg.group} --pres
erve-env=GITEA_WORK_DIR --preserve-env=GITEA_CUSTOM'
+        fi
+        # Note that these variable names will change
+        export GITEA_WORK_DIR=${cfg.stateDir}
+        export GITEA_CUSTOM=${cfg.customDir}
+        $sudo ${getExe cfg.package} "$@"
+      '';
+    in [
+      forgejo-cli
+    ];
   };
 }

diff --git a/modules/nixos/server/services/f
orgejo/default.nix b/modules/nixos/server/se
rvices/forgejo/default.nix
index c31731a..7cfd06e 100644
--- a/modules/nixos/server/services/forgejo/
default.nix
+++ b/modules/nixos/server/services/forgejo/
default.nix
@@ -1,10 +1,11 @@
 {
   config,
   lib,
+  pkgs,
   ...
 }: let
   inherit (config.ooknet.server) services d
omain;
-  inherit (lib) mkIf elem;
+  inherit (lib) mkIf elem getExe;
 in {
   config = mkIf (elem "forgejo" services) {
     networking.firewall.allowedTCPPorts = [
2222];
@@ -62,5 +63,24 @@ in {
         '';
       };
     };
+    # credit to TLATER
+    # https://discourse.nixos.org/t/how-to-
access-forgejo-cli/45370
+    environment.systemPackages = let
+      cfg = config.services.forgejo;
+      forgejo-cli = pkgs.writeScriptBin "fo
rgejo-cli" ''
+        #!${pkgs.runtimeShell}
+        cd ${cfg.stateDir}
+        sudo=exec
+        if [[ "$USER" != forgejo ]]; then
+          sudo='exec /run/wrappers/bin/sudo
 -u ${cfg.user} -g ${cfg.group} --preserve-e
nv=GITEA_WORK_DIR --preserve-env=GITEA_CUSTO
M'
+        fi
+        # Note that these variable names wi
ll change
+        export GITEA_WORK_DIR=${cfg.stateDi
r}
+        export GITEA_CUSTOM=${cfg.customDir
}
+        $sudo ${getExe cfg.package} "$@"
+      '';
+    in [
+      forgejo-cli
+    ];
   };
 }
 
[ BACK TO LOG ]
──────────────────────────────────────────────────────────────────────────────────────
OOKNET
────────────────────────────────────────────────
OOKNET