Skip to content

Commit 2d5fec0

Browse files
authored
Merge pull request #11 from theoparis/push-xzmpmmrtqmwr
nix: add nix package
2 parents c42feaf + be6d3ab commit 2d5fec0

File tree

17 files changed

+116
-95
lines changed

17 files changed

+116
-95
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,4 +117,4 @@ jobs:
117117
cache-from: type=gha
118118
cache-to: type=gha,mode=max
119119
provenance: true
120-
sbom: true
120+
sbom: true

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,4 +129,4 @@ jobs:
129129
with:
130130
subject-name: ghcr.io/pyrohost/elytra
131131
subject-digest: ${{ steps.build.outputs.digest }}
132-
push-to-registry: true
132+
push-to-registry: true

.gitignore

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,8 @@ debug
5555
.DS_Store
5656
*.pprof
5757
*.pdf
58-
pprof.*
58+
pprof.*
59+
60+
# Nix output files
61+
/result
62+
/result-*

docker-compose.example.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
version: '3.8'
2-
32
services:
43
elytra:
54
image: ghcr.io/pyrohost/elytra:latest
@@ -27,7 +26,6 @@ services:
2726
#- "/srv/daemon-data/:/srv/daemon-data/"
2827
# Required for ssl if you use let's encrypt. uncomment to use.
2928
#- "/etc/letsencrypt/:/etc/letsencrypt/"
30-
3129
networks:
3230
elytra0:
3331
name: elytra0

flake.lock

Lines changed: 12 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,35 @@
1717

1818
imports = [
1919
inputs.treefmt-nix.flakeModule
20+
inputs.flake-parts.flakeModules.easyOverlay
2021
];
2122

22-
perSystem = {system, ...}: let
23+
perSystem = {
24+
system,
25+
config,
26+
...
27+
}: let
2328
pkgs = import inputs.nixpkgs {inherit system;};
2429
in {
25-
devShells.default = pkgs.mkShell {
30+
devShells.default = pkgs.mkShell {
2631
buildInputs = with pkgs; [
27-
go_1_24
28-
gofumpt
32+
go
2933
golangci-lint
3034
gotools
35+
config.treefmt.build.wrapper
36+
];
37+
};
38+
39+
packages.elytra = pkgs.buildGoModule rec {
40+
pname = "elytra";
41+
version = inputs.self.rev or "dirty";
42+
src = inputs.self;
43+
vendorHash = "sha256-scQQP9hRezE0pB6zh36IEqETktWwE8PH4gBCel8L3hQ=";
44+
ldflags = [
45+
"-s"
46+
"-w"
47+
"-X"
48+
"github.com/pyrohost/elytra/system.Version=${version}"
3149
];
3250
};
3351

@@ -37,16 +55,18 @@
3755
programs = {
3856
alejandra.enable = true;
3957
deadnix.enable = true;
40-
gofumpt = {
41-
enable = true;
42-
extra = true;
43-
};
58+
gofmt.enable = true;
4459
shellcheck.enable = true;
4560
shfmt = {
4661
enable = true;
4762
indent_size = 0; # 0 causes shfmt to use tabs
4863
};
49-
yamlfmt.enable = true;
64+
yamlfmt = {
65+
enable = true;
66+
settings = {
67+
formatter.retain_line_breaks = true;
68+
};
69+
};
5070
};
5171
};
5272
};

src/cmd/root.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -341,8 +341,8 @@ func rootCmdRun(cmd *cobra.Command, _ []string) {
341341
}
342342

343343
// Initialize job manager for async operations
344-
jobManager := jobs.NewManager(4) // 4 worker threads
345-
jobManager.SetClient(pclient) // Set client for Panel notifications
344+
jobManager := jobs.NewManager(4) // 4 worker threads
345+
jobManager.SetClient(pclient) // Set client for Panel notifications
346346
jobManager.SetServerManager(manager) // Set server manager for WebSocket events
347347

348348
// Register all job types

src/jobs/backup_job.go

Lines changed: 42 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -7,27 +7,27 @@ import (
77
"strings"
88
"time"
99

10-
"github.com/google/uuid"
10+
"emperror.dev/errors"
1111
"github.com/apex/log"
12-
"github.com/pyrohost/elytra/src/server/backup"
13-
"github.com/pyrohost/elytra/src/server"
12+
"github.com/google/uuid"
1413
"github.com/pyrohost/elytra/src/remote"
15-
"emperror.dev/errors"
14+
"github.com/pyrohost/elytra/src/server"
15+
"github.com/pyrohost/elytra/src/server/backup"
1616
)
1717

1818
// BackupCreateJob handles backup creation operations
1919
type BackupCreateJob struct {
20-
id string
21-
serverID string
22-
backupUUID string
23-
adapterType string
24-
ignore string
25-
name string
26-
context map[string]interface{}
27-
progress int
28-
message string
29-
serverManager *server.Manager
30-
client remote.Client
20+
id string
21+
serverID string
22+
backupUUID string
23+
adapterType string
24+
ignore string
25+
name string
26+
context map[string]interface{}
27+
progress int
28+
message string
29+
serverManager *server.Manager
30+
client remote.Client
3131
}
3232

3333
// BackupDeleteJob handles backup deletion operations
@@ -166,13 +166,13 @@ func NewBackupRestoreJob(data map[string]interface{}, serverManager *server.Mana
166166
}
167167

168168
// BackupCreateJob implementation
169-
func (j *BackupCreateJob) GetID() string { return j.id }
170-
func (j *BackupCreateJob) GetType() string { return "backup_create" }
171-
func (j *BackupCreateJob) GetProgress() int { return j.progress }
172-
func (j *BackupCreateJob) GetMessage() string { return j.message }
169+
func (j *BackupCreateJob) GetID() string { return j.id }
170+
func (j *BackupCreateJob) GetType() string { return "backup_create" }
171+
func (j *BackupCreateJob) GetProgress() int { return j.progress }
172+
func (j *BackupCreateJob) GetMessage() string { return j.message }
173173

174174
// WebSocketJob interface implementation for real-time backup status updates
175-
func (j *BackupCreateJob) GetServerID() string { return j.serverID }
175+
func (j *BackupCreateJob) GetServerID() string { return j.serverID }
176176
func (j *BackupCreateJob) GetWebSocketEventType() string { return "backup.status" }
177177
func (j *BackupCreateJob) GetWebSocketEventData() map[string]interface{} {
178178
return map[string]interface{}{
@@ -317,13 +317,13 @@ func (j *BackupCreateJob) performBackupWithProgress(ctx context.Context, reporte
317317
}
318318

319319
// BackupDeleteJob implementation
320-
func (j *BackupDeleteJob) GetID() string { return j.id }
321-
func (j *BackupDeleteJob) GetType() string { return "backup_delete" }
322-
func (j *BackupDeleteJob) GetProgress() int { return j.progress }
323-
func (j *BackupDeleteJob) GetMessage() string { return j.message }
320+
func (j *BackupDeleteJob) GetID() string { return j.id }
321+
func (j *BackupDeleteJob) GetType() string { return "backup_delete" }
322+
func (j *BackupDeleteJob) GetProgress() int { return j.progress }
323+
func (j *BackupDeleteJob) GetMessage() string { return j.message }
324324

325325
// WebSocketJob interface implementation for real-time backup status updates
326-
func (j *BackupDeleteJob) GetServerID() string { return j.serverID }
326+
func (j *BackupDeleteJob) GetServerID() string { return j.serverID }
327327
func (j *BackupDeleteJob) GetWebSocketEventType() string { return "backup.status" }
328328
func (j *BackupDeleteJob) GetWebSocketEventData() map[string]interface{} {
329329
return map[string]interface{}{
@@ -448,7 +448,7 @@ func (j *BackupDeleteJob) deleteRusticLocalBackup(ctx context.Context, reporter
448448
reporter.ReportProgress(90, "Calculating repository size...")
449449

450450
result := map[string]interface{}{
451-
"deleted": true,
451+
"deleted": true,
452452
"type": "rustic_local",
453453
"successful": true,
454454
"already_deleted": true,
@@ -562,7 +562,7 @@ func (j *BackupDeleteJob) deleteRusticS3Backup(ctx context.Context, reporter Pro
562562
reporter.ReportProgress(90, "Calculating repository size...")
563563

564564
result := map[string]interface{}{
565-
"deleted": true,
565+
"deleted": true,
566566
"type": "rustic_s3",
567567
"successful": true,
568568
"already_deleted": true,
@@ -652,13 +652,13 @@ func (j *BackupDeleteJob) deleteRusticS3Backup(ctx context.Context, reporter Pro
652652
}
653653

654654
// BackupRestoreJob implementation
655-
func (j *BackupRestoreJob) GetID() string { return j.id }
656-
func (j *BackupRestoreJob) GetType() string { return "backup_restore" }
657-
func (j *BackupRestoreJob) GetProgress() int { return j.progress }
658-
func (j *BackupRestoreJob) GetMessage() string { return j.message }
655+
func (j *BackupRestoreJob) GetID() string { return j.id }
656+
func (j *BackupRestoreJob) GetType() string { return "backup_restore" }
657+
func (j *BackupRestoreJob) GetProgress() int { return j.progress }
658+
func (j *BackupRestoreJob) GetMessage() string { return j.message }
659659

660660
// WebSocketJob interface implementation for real-time backup status updates
661-
func (j *BackupRestoreJob) GetServerID() string { return j.serverID }
661+
func (j *BackupRestoreJob) GetServerID() string { return j.serverID }
662662
func (j *BackupRestoreJob) GetWebSocketEventType() string { return "backup.status" }
663663
func (j *BackupRestoreJob) GetWebSocketEventData() map[string]interface{} {
664664
return map[string]interface{}{
@@ -1001,7 +1001,7 @@ func (j *BackupDeleteAllJob) GetProgress() int { return j.progress }
10011001
func (j *BackupDeleteAllJob) GetMessage() string { return j.message }
10021002

10031003
// WebSocketJob interface implementation
1004-
func (j *BackupDeleteAllJob) GetServerID() string { return j.serverID }
1004+
func (j *BackupDeleteAllJob) GetServerID() string { return j.serverID }
10051005
func (j *BackupDeleteAllJob) GetWebSocketEventType() string { return "backup.status" }
10061006
func (j *BackupDeleteAllJob) GetWebSocketEventData() map[string]interface{} {
10071007
return map[string]interface{}{
@@ -1193,11 +1193,11 @@ func (j *BackupDeleteAllJob) Execute(ctx context.Context, reporter ProgressRepor
11931193
reporter.ReportProgress(100, "Repository destruction failed")
11941194

11951195
logger.WithFields(log.Fields{
1196-
"deleted_count": deletedCount,
1197-
"failed_count": failedCount,
1198-
"destroyed_repos": destroyedRepos,
1199-
"total_repos": len(repositories),
1200-
"destroy_errors": len(destroyErrors),
1196+
"deleted_count": deletedCount,
1197+
"failed_count": failedCount,
1198+
"destroyed_repos": destroyedRepos,
1199+
"total_repos": len(repositories),
1200+
"destroy_errors": len(destroyErrors),
12011201
}).Error("delete all job failed - repository destruction incomplete")
12021202

12031203
// Combine all errors
@@ -1215,9 +1215,9 @@ func (j *BackupDeleteAllJob) Execute(ctx context.Context, reporter ProgressRepor
12151215
reporter.ReportProgress(100, "All backups and repositories destroyed")
12161216

12171217
logger.WithFields(log.Fields{
1218-
"deleted_count": deletedCount,
1219-
"failed_count": failedCount,
1220-
"destroyed_repos": destroyedRepos,
1218+
"deleted_count": deletedCount,
1219+
"failed_count": failedCount,
1220+
"destroyed_repos": destroyedRepos,
12211221
}).Info("all backups and repositories destroyed successfully")
12221222

12231223
return map[string]interface{}{
@@ -1229,4 +1229,4 @@ func (j *BackupDeleteAllJob) Execute(ctx context.Context, reporter ProgressRepor
12291229
"destroyed_repos": destroyedRepos,
12301230
"successful": true,
12311231
}, nil
1232-
}
1232+
}

src/jobs/job.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ type Manager struct {
6565
jobTypes map[string]func(data map[string]interface{}) (Job, error)
6666
workers int
6767
queue chan *Instance
68-
client remote.Client // For notifying Panel automatically
69-
serverManager *server.Manager // For WebSocket event publishing
68+
client remote.Client // For notifying Panel automatically
69+
serverManager *server.Manager // For WebSocket event publishing
7070
}
7171

7272
// Instance wraps a Job implementation with execution metadata
@@ -365,4 +365,4 @@ func (m *Manager) publishWebSocketEvent(instance *Instance) {
365365

366366
// Publish the WebSocket event
367367
server.Events().Publish(eventType, eventData)
368-
}
368+
}

src/jobs/setup.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,4 @@ func SetupJobs(manager *Manager, serverManager *server.Manager, client remote.Cl
2323
return NewBackupDeleteAllJob(data, serverManager, client)
2424
})
2525

26-
}
26+
}

0 commit comments

Comments
 (0)