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_PASSWORD=sheetless
# Directory of your sheets
# Directories containing permanent data
SHEETS_DIRECTORY=/data/sheets
CONFIG_DIRECTORY=/data/config

View File

@@ -14,20 +14,55 @@
flake-utils.lib.eachDefaultSystem (
system: let
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 {
devShells.default = pkgs.mkShell {
buildInputs = with pkgs; [
go
gopls
go-tools
deploy
];
};
packages.default = pkgs.buildGoModule {
pname = "sheetless-server";
version = "0.1.0";
src = ./src;
vendorHash = "sha256-NnHo1wcsX0aCBpay8eEyjmtO7+Qe8gcBPITobP7WtkA=";
packages = rec {
default = sheetless-server;
sheetless-server = pkgs.buildGoModule {
pname = "sheetless-server";
version = "0.1.0";
src = ./src;
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
}
SheetsDirectory string
ConfigDirectory string
}
var AppConfig *Config
@@ -47,6 +48,7 @@ func Load() {
cfg.Admin.Password = getEnv("ADMIN_PASSWORD", "sheetless")
cfg.SheetsDirectory = getEnv("SHEETS_DIRECTORY", "./sheets_directory")
cfg.ConfigDirectory = getEnv("CONFIG_DIRECTORY", "./config_directory")
AppConfig = cfg
}

View File

@@ -2,6 +2,7 @@ package database
import (
"log"
"path/filepath"
"sheetless-server/config"
"sheetless-server/models"
@@ -15,7 +16,8 @@ var DB *gorm.DB
func InitDatabase() {
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 {
log.Fatal("Failed to connect to database:", err)
}