diff options
Diffstat (limited to 'modules/services/nixos/ganyupload')
| -rw-r--r-- | modules/services/nixos/ganyupload/AGENTS.md | 65 | ||||
| -rw-r--r-- | modules/services/nixos/ganyupload/default.nix | 9 |
2 files changed, 4 insertions, 70 deletions
diff --git a/modules/services/nixos/ganyupload/AGENTS.md b/modules/services/nixos/ganyupload/AGENTS.md deleted file mode 100644 index c4d9192..0000000 --- a/modules/services/nixos/ganyupload/AGENTS.md +++ /dev/null @@ -1,65 +0,0 @@ -# Ganyupload - Agent Instructions - -## Quick Context -- Simple Go file upload service using standard `net/http`. -- Single `main.go`, two Nix files (`default.nix`, `pkg.nix`), one README. -- Embedded README is served on GET /. -- Used as a NixOS module: `collinux.services.ganyupload` enables it, configures port and upload directory via systemd environment. - -## How to Build and Test - -### Build -```bash -nix build -``` - -Alternatively, from the repo root: -```bash -nix build .#nixosConfigurations.<hostname>.config.system.build.toplevel -``` - -### Test -No dedicated test file. Verify locally by running with environment variables: -```bash -PORT=8080 UPLOAD_DIR=/tmp/upload go run main.go -``` - -Then test uploads: -```bash -curl -X PUT --data-binary @file.txt http://localhost:8080/file.txt -curl http://localhost:8080/ # Read embedded README -``` - -## Code Style - -**Go:** -- Keep `main.go` clean; use `gofmt -w .`. -- Match existing error handling (early return, `log.Printf` for warnings, `log.Fatalf` for fatal errors). -- Path traversal prevention is critical; do not weaken `filepath.Clean` + `..` prefix checks. - -**Nix:** -- Follow `/home/collin/nixos/AGENTS.md` conventions (2-space indent, common arg pattern, `lib.mkIf` for gating). -- `default.nix` imports `mkCaddyCfg.nix` to integrate with Caddy reverse proxy; do not remove that import. - -## Key Implementation Notes - -1. **Embedded README:** The README file is embedded at compile time using `//go:embed README`. If you update README, rebuild to reflect changes. -2. **Environment Variables:** - - `UPLOAD_DIR`: Defaults to `.`, overridden by systemd service to `/media/ganyupload`. - - `PORT`: Defaults to `8080`, set by systemd to the configured `cfg.port`. -3. **NixOS Integration:** The service runs as user/group `ganyupload` with home `/var/lib/ganyupload`. Ensure the service has write permission to `UPLOAD_DIR`. -4. **Caddy Integration:** `default.nix` imports `mkCaddyCfg.nix` to configure Caddy as a reverse proxy. Changes to hostname or port must be reflected in both Nix config and the Caddy rule. - -## Common Tasks - -- **Update Go code:** Edit `main.go`, test locally, then nix build to verify. -- **Change upload directory or port:** Update `default.nix` (systemd environment or `cfg.port`). -- **Update README:** Edit README file, then rebuild (`nix build`) so the embedded version updates. -- **Debug NixOS module:** Check `/etc/systemd/system/ganyupload.service` for actual service config after rebuild. - -## Validation - -After changes: -1. Run `nix build` from this directory or `nix build .#nixosConfigurations.<hostname>.config.system.build.toplevel` from repo root. -2. If applicable, test via `PORT=8080 UPLOAD_DIR=/tmp go run main.go`. -3. Verify no Nix lint issues (use repo-level `yo test` or `nix run nixpkgs#alejandra -- .` for formatting). diff --git a/modules/services/nixos/ganyupload/default.nix b/modules/services/nixos/ganyupload/default.nix index 0138100..2ec704b 100644 --- a/modules/services/nixos/ganyupload/default.nix +++ b/modules/services/nixos/ganyupload/default.nix @@ -5,13 +5,8 @@ ... }: let cfg = config.collinux.services.ganyupload; - package = pkgs.callPackage ./pkg.nix {}; in { - imports = [ - (import ../mkCaddyCfg.nix cfg) - ]; - config = lib.mkIf cfg.enable { users.groups."ganyupload" = {}; users.users."ganyupload" = { @@ -43,5 +38,9 @@ in { wantedBy = ["multi-user.target"]; }; + + services.caddy.virtualHosts."upld.williamsfam.us.com".extraConfig = '' + reverse_proxy 127.0.0.1:${toString cfg.port} + ''; }; } |
