Compare commits
5 Commits
4f5de3b4cc
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7d6785f27e | ||
|
|
f446706a9c | ||
|
|
6ea5db6d37 | ||
|
|
e46b5689a2 | ||
|
|
8fa60a1b06 |
30
flake.lock
generated
30
flake.lock
generated
@@ -573,6 +573,27 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"komga-bookmanager": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772572455,
|
||||||
|
"narHash": "sha256-B4KOdV2GQogU1XL9903qFkOFf/6H7UGa+dprNGctgMY=",
|
||||||
|
"ref": "main",
|
||||||
|
"rev": "002732d4ebc5b80c2b8522896427c9f6bee9e1d1",
|
||||||
|
"revCount": 6,
|
||||||
|
"type": "git",
|
||||||
|
"url": "ssh://gitea@git.ppp.pm:1122/alex/komga-bookmanager.git"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"ref": "main",
|
||||||
|
"type": "git",
|
||||||
|
"url": "ssh://gitea@git.ppp.pm:1122/alex/komga-bookmanager.git"
|
||||||
|
}
|
||||||
|
},
|
||||||
"komga-comictracker": {
|
"komga-comictracker": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -580,11 +601,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771079752,
|
"lastModified": 1772884418,
|
||||||
"narHash": "sha256-4Pw8MhQUVWcTH3fg31sP19k+qgHDxqSKtSoDU/CYf/Y=",
|
"narHash": "sha256-2V/JnGsIhvQoAiH7iIQkOPX5OTZVwGTOEv+nFetd4I8=",
|
||||||
"ref": "main",
|
"ref": "main",
|
||||||
"rev": "2b5cc59e3d4dba439a9a5f0d1fc2c30d9bdf45e1",
|
"rev": "0b91385e8906ca40cc89381bf8394ed24a116c6b",
|
||||||
"revCount": 32,
|
"revCount": 49,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "ssh://gitea@git.ppp.pm:1122/alex/komga-comictracker.git"
|
"url": "ssh://gitea@git.ppp.pm:1122/alex/komga-comictracker.git"
|
||||||
},
|
},
|
||||||
@@ -786,6 +807,7 @@
|
|||||||
"home-manager": "home-manager_2",
|
"home-manager": "home-manager_2",
|
||||||
"hyprland": "hyprland",
|
"hyprland": "hyprland",
|
||||||
"hyprland-contrib": "hyprland-contrib",
|
"hyprland-contrib": "hyprland-contrib",
|
||||||
|
"komga-bookmanager": "komga-bookmanager",
|
||||||
"komga-comictracker": "komga-comictracker",
|
"komga-comictracker": "komga-comictracker",
|
||||||
"naviterm": "naviterm",
|
"naviterm": "naviterm",
|
||||||
"nh": "nh",
|
"nh": "nh",
|
||||||
|
|||||||
@@ -74,6 +74,12 @@
|
|||||||
# url = "path:/home/alex/code/own/komga-comictracker";
|
# url = "path:/home/alex/code/own/komga-comictracker";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
komga-bookmanager = {
|
||||||
|
url = "git+ssh://gitea@git.ppp.pm:1122/alex/komga-bookmanager.git?ref=main";
|
||||||
|
# url = "path:/home/alex/code/own/komga-comictracker";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs =
|
outputs =
|
||||||
|
|||||||
@@ -10,11 +10,13 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf enabled {
|
config = lib.mkIf enabled {
|
||||||
mod.homepage.services = [{
|
mod.homepage.services = [
|
||||||
|
{
|
||||||
name = "Audiobookshelf";
|
name = "Audiobookshelf";
|
||||||
port = 8000;
|
port = 8000;
|
||||||
description = "Audiobooks & podcasts";
|
description = "Audiobooks & podcasts";
|
||||||
}];
|
}
|
||||||
|
];
|
||||||
|
|
||||||
users.users.audiobookshelf = {
|
users.users.audiobookshelf = {
|
||||||
isSystemUser = true;
|
isSystemUser = true;
|
||||||
|
|||||||
@@ -1,40 +0,0 @@
|
|||||||
{ lib, config, ... }:
|
|
||||||
let
|
|
||||||
enabled = config.mod.calibre-web.enable;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options = {
|
|
||||||
mod.calibre-web = {
|
|
||||||
enable = lib.mkEnableOption "add calibre-web module";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf enabled {
|
|
||||||
mod.homepage.services = [{
|
|
||||||
name = "Calibre-Web";
|
|
||||||
port = 8083;
|
|
||||||
description = "E-book library";
|
|
||||||
}];
|
|
||||||
|
|
||||||
services = {
|
|
||||||
calibre-web = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
user = "storage";
|
|
||||||
group = "storage";
|
|
||||||
|
|
||||||
listen = {
|
|
||||||
ip = "0.0.0.0";
|
|
||||||
port = 8083;
|
|
||||||
};
|
|
||||||
|
|
||||||
dataDir = "/mnt/media/public/books";
|
|
||||||
|
|
||||||
options = {
|
|
||||||
calibreLibrary = "/mnt/media/public/books";
|
|
||||||
enableBookUploading = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -16,7 +16,6 @@ in
|
|||||||
nginx.enable = true;
|
nginx.enable = true;
|
||||||
syncthing.enable = true;
|
syncthing.enable = true;
|
||||||
transmission.enable = true;
|
transmission.enable = true;
|
||||||
calibre-web.enable = true;
|
|
||||||
audiobookshelf.enable = true;
|
audiobookshelf.enable = true;
|
||||||
jellyfin.enable = true;
|
jellyfin.enable = true;
|
||||||
immich.enable = true;
|
immich.enable = true;
|
||||||
|
|||||||
@@ -62,11 +62,13 @@ let
|
|||||||
'';
|
'';
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
mod.homepage.services = [{
|
mod.homepage.services = [
|
||||||
|
{
|
||||||
name = "Home Assistant";
|
name = "Home Assistant";
|
||||||
port = 8123;
|
port = 8123;
|
||||||
description = "Home automation";
|
description = "Home automation";
|
||||||
}];
|
}
|
||||||
|
];
|
||||||
|
|
||||||
hardware.bluetooth.enable = true;
|
hardware.bluetooth.enable = true;
|
||||||
|
|
||||||
|
|||||||
@@ -77,13 +77,15 @@ in
|
|||||||
mod.homepage = {
|
mod.homepage = {
|
||||||
enable = lib.mkEnableOption "Enable homepage module";
|
enable = lib.mkEnableOption "Enable homepage module";
|
||||||
services = lib.mkOption {
|
services = lib.mkOption {
|
||||||
type = lib.types.listOf (lib.types.submodule {
|
type = lib.types.listOf (
|
||||||
|
lib.types.submodule {
|
||||||
options = {
|
options = {
|
||||||
name = lib.mkOption { type = lib.types.str; };
|
name = lib.mkOption { type = lib.types.str; };
|
||||||
port = lib.mkOption { type = lib.types.port; };
|
port = lib.mkOption { type = lib.types.port; };
|
||||||
description = lib.mkOption { type = lib.types.str; };
|
description = lib.mkOption { type = lib.types.str; };
|
||||||
};
|
};
|
||||||
});
|
}
|
||||||
|
);
|
||||||
default = [ ];
|
default = [ ];
|
||||||
description = "Services to display on the homepage";
|
description = "Services to display on the homepage";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -10,11 +10,13 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf enabled {
|
config = lib.mkIf enabled {
|
||||||
mod.homepage.services = [{
|
mod.homepage.services = [
|
||||||
|
{
|
||||||
name = "Immich";
|
name = "Immich";
|
||||||
port = 2283;
|
port = 2283;
|
||||||
description = "Photo library";
|
description = "Photo library";
|
||||||
}];
|
}
|
||||||
|
];
|
||||||
|
|
||||||
users.users.immich = {
|
users.users.immich = {
|
||||||
isSystemUser = true;
|
isSystemUser = true;
|
||||||
|
|||||||
@@ -47,11 +47,13 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
mod.homepage.services = [{
|
mod.homepage.services = [
|
||||||
|
{
|
||||||
name = "Jellyfin";
|
name = "Jellyfin";
|
||||||
port = 8096;
|
port = 8096;
|
||||||
description = "Media streaming";
|
description = "Media streaming";
|
||||||
}];
|
}
|
||||||
|
];
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
firewall.allowedTCPPorts = [ 8096 ];
|
firewall.allowedTCPPorts = [ 8096 ];
|
||||||
|
|||||||
@@ -16,7 +16,10 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
imports = [ inputs.komga-comictracker.nixosModules.default ];
|
imports = [
|
||||||
|
inputs.komga-comictracker.nixosModules.default
|
||||||
|
inputs.komga-bookmanager.nixosModules.default
|
||||||
|
];
|
||||||
|
|
||||||
config = lib.mkIf enabled {
|
config = lib.mkIf enabled {
|
||||||
mod.homepage.services = [
|
mod.homepage.services = [
|
||||||
@@ -30,6 +33,11 @@ in
|
|||||||
port = 8888;
|
port = 8888;
|
||||||
description = "Comic reader";
|
description = "Comic reader";
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
name = "Komga Book Manager";
|
||||||
|
port = 8686;
|
||||||
|
description = "Book manager";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
users.users.komga = {
|
users.users.komga = {
|
||||||
@@ -85,16 +93,33 @@ in
|
|||||||
|
|
||||||
programs.comictracker = {
|
programs.comictracker = {
|
||||||
enable = true;
|
enable = true;
|
||||||
komgaUrl = "http://manatee:8002";
|
komgaUrl = "http://127.0.0.1:8002";
|
||||||
|
komgaLibraryId = "0NVZH5AK3RPE1";
|
||||||
secretsFile = config.age.secrets.komga-comicbooktracker-credentials.path;
|
secretsFile = config.age.secrets.komga-comicbooktracker-credentials.path;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
services.komga-book-manager = {
|
||||||
|
enable = true;
|
||||||
|
port = 8686;
|
||||||
|
group = "storage";
|
||||||
|
komgaUrl = "http://127.0.0.1:8002";
|
||||||
|
credentialsFile = config.age.secrets.komga-bookmanager-credentials.path;
|
||||||
|
libraryRoot = "/mnt/media/public/books";
|
||||||
|
libraryId = "0PNE1NEPY6995";
|
||||||
|
};
|
||||||
|
|
||||||
age.secrets = {
|
age.secrets = {
|
||||||
"komga-comicbooktracker-credentials" = {
|
"komga-comicbooktracker-credentials" = {
|
||||||
file = ../../../../secrets/manatee/komga-comicbooktracker-credentials.age;
|
file = ../../../../secrets/manatee/komga-comicbooktracker-credentials.age;
|
||||||
owner = "alex";
|
owner = "alex";
|
||||||
group = "users";
|
group = "users";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
"komga-bookmanager-credentials" = {
|
||||||
|
file = ../../../../secrets/manatee/komga-bookmanager-credentials.age;
|
||||||
|
owner = "alex";
|
||||||
|
group = "users";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,11 +15,13 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
mod.homepage.services = lib.mkIf navidromeEnabled [{
|
mod.homepage.services = lib.mkIf navidromeEnabled [
|
||||||
|
{
|
||||||
name = "Navidrome";
|
name = "Navidrome";
|
||||||
port = 4533;
|
port = 4533;
|
||||||
description = "Music streaming";
|
description = "Music streaming";
|
||||||
}];
|
}
|
||||||
|
];
|
||||||
|
|
||||||
services = lib.mkIf navidromeEnabled {
|
services = lib.mkIf navidromeEnabled {
|
||||||
navidrome = {
|
navidrome = {
|
||||||
|
|||||||
@@ -10,11 +10,13 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf enabled {
|
config = lib.mkIf enabled {
|
||||||
mod.homepage.services = [{
|
mod.homepage.services = [
|
||||||
|
{
|
||||||
name = "Syncthing";
|
name = "Syncthing";
|
||||||
port = 8384;
|
port = 8384;
|
||||||
description = "File sync";
|
description = "File sync";
|
||||||
}];
|
}
|
||||||
|
];
|
||||||
|
|
||||||
services.syncthing = {
|
services.syncthing = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
@@ -15,11 +15,13 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf enabled {
|
config = lib.mkIf enabled {
|
||||||
mod.homepage.services = [{
|
mod.homepage.services = [
|
||||||
|
{
|
||||||
name = "Transmission";
|
name = "Transmission";
|
||||||
port = 9091;
|
port = 9091;
|
||||||
description = "Torrent client";
|
description = "Torrent client";
|
||||||
}];
|
}
|
||||||
|
];
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
transmission = {
|
transmission = {
|
||||||
|
|||||||
7
secrets/manatee/komga-bookmanager-credentials.age
Normal file
7
secrets/manatee/komga-bookmanager-credentials.age
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 wkRvNA GW8mvnaXpspxr78xV0fKhXwHVvReyjvDc0v7uPwhuBI
|
||||||
|
Rne8JZYVhrTTesSFpRQ/IOZlFIMoX9Wmv5n1Ed7Ehv8
|
||||||
|
-> ssh-ed25519 +oNaHQ d7utzodGQ7LsD2Uht1rbT8Qq9BZp3PkJS9EDhajCjnk
|
||||||
|
qd2Vj+1TQrjEKkSVAf0cXcCdkgeN/Jbp4UrBSp3cKYQ
|
||||||
|
--- JQr5UQlutONqnTeoT/mIVZL8ME7ipUDK8zDfNcN3uhU
|
||||||
|
ø5-VŸÌ²ÂòÀ-®ªÁÅ'^žô5kú.t(d1‡)É'<u%
|
||||||
@@ -34,6 +34,7 @@ in {
|
|||||||
"manatee/syncthing-key.age".publicKeys = [ manatee alex ];
|
"manatee/syncthing-key.age".publicKeys = [ manatee alex ];
|
||||||
"manatee/hetzner-dns.age".publicKeys = [ manatee alex ];
|
"manatee/hetzner-dns.age".publicKeys = [ manatee alex ];
|
||||||
"manatee/komga-comicbooktracker-credentials.age".publicKeys = [ manatee alex];
|
"manatee/komga-comicbooktracker-credentials.age".publicKeys = [ manatee alex];
|
||||||
|
"manatee/komga-bookmanager-credentials.age".publicKeys = [ manatee alex];
|
||||||
|
|
||||||
"backwards/root.backwards.age".publicKeys = [ backwards alex ];
|
"backwards/root.backwards.age".publicKeys = [ backwards alex ];
|
||||||
"backwards/root.backwards.pub.age".publicKeys = [ backwards alex ];
|
"backwards/root.backwards.pub.age".publicKeys = [ backwards alex ];
|
||||||
|
|||||||
Reference in New Issue
Block a user