Compare commits

..

2 Commits

Author SHA1 Message Date
7f52f27085 Add docker deploy to flake 2026-01-24 19:43:26 +01:00
dc6654ee93 Make config directory configurable 2026-01-24 19:43:11 +01:00
4 changed files with 47 additions and 7 deletions

View File

@@ -13,5 +13,6 @@ SYNC_INTERVAL_MINUTES=1
ADMIN_EMAIL=admin@admin.com ADMIN_EMAIL=admin@admin.com
ADMIN_PASSWORD=sheetless ADMIN_PASSWORD=sheetless
# Directory of your sheets # Directories containing permanent data
SHEETS_DIRECTORY=/data/sheets SHEETS_DIRECTORY=/data/sheets
CONFIG_DIRECTORY=/data/config

View File

@@ -14,21 +14,56 @@
flake-utils.lib.eachDefaultSystem ( flake-utils.lib.eachDefaultSystem (
system: let system: let
pkgs = nixpkgs.legacyPackages.${system}; pkgs = nixpkgs.legacyPackages.${system};
deploy = pkgs.writeShellScriptBin "deploy" ''
set -e; set -o pipefail; set -x;
nix build .#docker
image=$((docker load < result) | sed -n '$s/^Loaded image: //p')
docker image tag "$image" harbor.julian-mutter.de/sheetless/sheetless-server:latest
docker push harbor.julian-mutter.de/sheetless/sheetless-server:latest
'';
in { in {
devShells.default = pkgs.mkShell { devShells.default = pkgs.mkShell {
buildInputs = with pkgs; [ buildInputs = with pkgs; [
go go
gopls gopls
go-tools go-tools
deploy
]; ];
}; };
packages.default = pkgs.buildGoModule { packages = rec {
default = sheetless-server;
sheetless-server = pkgs.buildGoModule {
pname = "sheetless-server"; pname = "sheetless-server";
version = "0.1.0"; version = "0.1.0";
src = ./src; src = ./src;
vendorHash = "sha256-NnHo1wcsX0aCBpay8eEyjmtO7+Qe8gcBPITobP7WtkA="; vendorHash = "sha256-NnHo1wcsX0aCBpay8eEyjmtO7+Qe8gcBPITobP7WtkA=";
}; };
docker = pkgs.dockerTools.buildImage {
name = "sheetless-server";
tag = "latest";
copyToRoot = with pkgs; [
dockerTools.usrBinEnv
dockerTools.binSh
dockerTools.caCertificates
coreutils
sheetless-server
];
config = {
Cmd = ["/bin/sheetless-server"];
Expose = "8080";
};
created = "now";
};
};
} }
); );
} }

View File

@@ -23,6 +23,7 @@ type Config struct {
Password string Password string
} }
SheetsDirectory string SheetsDirectory string
ConfigDirectory string
} }
var AppConfig *Config var AppConfig *Config
@@ -47,6 +48,7 @@ func Load() {
cfg.Admin.Password = getEnv("ADMIN_PASSWORD", "sheetless") cfg.Admin.Password = getEnv("ADMIN_PASSWORD", "sheetless")
cfg.SheetsDirectory = getEnv("SHEETS_DIRECTORY", "./sheets_directory") cfg.SheetsDirectory = getEnv("SHEETS_DIRECTORY", "./sheets_directory")
cfg.ConfigDirectory = getEnv("CONFIG_DIRECTORY", "./config_directory")
AppConfig = cfg AppConfig = cfg
} }

View File

@@ -2,6 +2,7 @@ package database
import ( import (
"log" "log"
"path/filepath"
"sheetless-server/config" "sheetless-server/config"
"sheetless-server/models" "sheetless-server/models"
@@ -15,7 +16,8 @@ var DB *gorm.DB
func InitDatabase() { func InitDatabase() {
var err error var err error
DB, err = gorm.Open(sqlite.Open("sheetless.db"), &gorm.Config{}) databaseFile := filepath.Join(config.AppConfig.ConfigDirectory, "sheetless.db")
DB, err = gorm.Open(sqlite.Open(databaseFile), &gorm.Config{})
if err != nil { if err != nil {
log.Fatal("Failed to connect to database:", err) log.Fatal("Failed to connect to database:", err)
} }