Compare commits
21 Commits
df1a60dd05
...
67e4951f7d
| Author | SHA1 | Date | |
|---|---|---|---|
|
67e4951f7d
|
|||
|
3f69658e49
|
|||
|
ab039be574
|
|||
|
dcd3293ee8
|
|||
|
5a2bd01894
|
|||
|
9824a769c1
|
|||
|
c3863c568f
|
|||
|
da4297c3d9
|
|||
|
39e608fac8
|
|||
|
dbb39fa40f
|
|||
|
2777ad7823
|
|||
|
7f98459009
|
|||
|
a98912e252
|
|||
|
248379a9cd
|
|||
|
e3c58ee2bf
|
|||
|
a3178137d3
|
|||
|
9d96d54d48
|
|||
|
2c44e6cee2
|
|||
|
e174d547a7
|
|||
|
359cf544a9
|
|||
|
0b6ebd9c85
|
@ -355,6 +355,7 @@
|
|||||||
protonmail-bridge-gui
|
protonmail-bridge-gui
|
||||||
|
|
||||||
# GUI stuff
|
# GUI stuff
|
||||||
|
nautilus # Just in case
|
||||||
signal-desktop
|
signal-desktop
|
||||||
anki
|
anki
|
||||||
font-manager # Previews fonts, but doesn't set them
|
font-manager # Previews fonts, but doesn't set them
|
||||||
@ -372,6 +373,8 @@
|
|||||||
tidal-hifi
|
tidal-hifi
|
||||||
tidal-dl-ng
|
tidal-dl-ng
|
||||||
picard
|
picard
|
||||||
|
handbrake
|
||||||
|
teamspeak6-client
|
||||||
|
|
||||||
# Office
|
# Office
|
||||||
kdePackages.wacomtablet # For xournalpp/krita
|
kdePackages.wacomtablet # For xournalpp/krita
|
||||||
@ -457,6 +460,7 @@
|
|||||||
enableFishIntegration = config.modules.fish.enable;
|
enableFishIntegration = config.modules.fish.enable;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# TODO: Module
|
||||||
fastfetch = {
|
fastfetch = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
|
|||||||
@ -219,6 +219,12 @@
|
|||||||
];
|
];
|
||||||
|
|
||||||
overrides = {
|
overrides = {
|
||||||
|
"org.prismlauncher.PrismLauncher".Context = {
|
||||||
|
filesystems = [
|
||||||
|
"/tmp"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
"com.valvesoftware.Steam".Context = {
|
"com.valvesoftware.Steam".Context = {
|
||||||
filesystems = [
|
filesystems = [
|
||||||
"${config.home.homeDirectory}/Games"
|
"${config.home.homeDirectory}/Games"
|
||||||
|
|||||||
@ -50,7 +50,8 @@ in {
|
|||||||
"edit" # edit metadata in text editor
|
"edit" # edit metadata in text editor
|
||||||
"fetchart" # pickup local cover art or search online
|
"fetchart" # pickup local cover art or search online
|
||||||
"fish" # beet fish generates ~/.config/fish/completions file
|
"fish" # beet fish generates ~/.config/fish/completions file
|
||||||
"lyrics" # fetch song lyrics
|
# "lyrics" # fetch song lyrics
|
||||||
|
"musicbrainz" # auto tagger data source
|
||||||
"replaygain" # write replaygain tags for automatic loudness adjustments
|
"replaygain" # write replaygain tags for automatic loudness adjustments
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -59,10 +60,10 @@ in {
|
|||||||
sources = "filesystem coverart itunes amazon albumart"; # sources are queried in this order
|
sources = "filesystem coverart itunes amazon albumart"; # sources are queried in this order
|
||||||
};
|
};
|
||||||
|
|
||||||
lyrics = {
|
# lyrics = {
|
||||||
auto = "yes"; # only embeds lyrics into metadata, needed for jellyfin but useless for rmpc
|
# auto = "yes"; # only embeds lyrics into metadata, needed for jellyfin but useless for rmpc
|
||||||
synced = "yes"; # prefer synced lyrics if provided
|
# synced = "yes"; # prefer synced lyrics if provided
|
||||||
};
|
# };
|
||||||
|
|
||||||
replaygain = {
|
replaygain = {
|
||||||
auto = "yes"; # analyze on import automatically
|
auto = "yes"; # analyze on import automatically
|
||||||
|
|||||||
@ -26,6 +26,9 @@
|
|||||||
# localSystem = {inherit (prev) system;};
|
# localSystem = {inherit (prev) system;};
|
||||||
# }).unityhub;
|
# }).unityhub;
|
||||||
|
|
||||||
|
# Remove this after jetbrains.jdk builds again (nixpkgs issue 425328)
|
||||||
|
# jetbrains.rider = pkgs-stable.jetbrains.rider;
|
||||||
|
|
||||||
# neovide = prev.neovide.overrideAttrs (finalAttrs: prevAttrs: {
|
# neovide = prev.neovide.overrideAttrs (finalAttrs: prevAttrs: {
|
||||||
# version = "0.15.1";
|
# version = "0.15.1";
|
||||||
# src = prev.fetchFromGitHub {
|
# src = prev.fetchFromGitHub {
|
||||||
@ -41,8 +44,20 @@
|
|||||||
# };
|
# };
|
||||||
# });
|
# });
|
||||||
|
|
||||||
# Remove this after jetbrains.jdk builds again (nixpkgs issue 425328)
|
rmpc = prev.rmpc.overrideAttrs (finalAttrs: prevAttrs: {
|
||||||
# jetbrains.rider = pkgs-stable.jetbrains.rider;
|
version = "0.10.0";
|
||||||
|
src = prev.fetchFromGitHub {
|
||||||
|
owner = "mierak";
|
||||||
|
repo = "rmpc";
|
||||||
|
rev = "v0.10.0";
|
||||||
|
hash = "sha256-NU8T26oPhm8L7wdO4p65cpNa0pax7/oqHGs98QDoEc0=";
|
||||||
|
};
|
||||||
|
cargoHash = "sha256-d2/4q2s/11HNE18D8d8Y2yWidhT+XsUS4J9ahnxToI0=";
|
||||||
|
cargoDeps = prev.rustPlatform.fetchCargoVendor {
|
||||||
|
inherit (finalAttrs) pname src version;
|
||||||
|
hash = finalAttrs.cargoHash;
|
||||||
|
};
|
||||||
|
});
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
# Composes a list of overlays and returns a single overlay function that combines them.
|
# Composes a list of overlays and returns a single overlay function that combines them.
|
||||||
|
|||||||
@ -143,7 +143,7 @@ with mylib.networking; {
|
|||||||
|
|
||||||
# Bootloader/Kernel stuff
|
# Bootloader/Kernel stuff
|
||||||
boot = {
|
boot = {
|
||||||
kernelPackages = lib.mkDefault pkgs.linuxPackages_latest;
|
kernelPackages = lib.mkDefault pkgs.linuxPackages;
|
||||||
kernelParams = ["mitigations=off"]; # I don't care
|
kernelParams = ["mitigations=off"]; # I don't care
|
||||||
|
|
||||||
# Make /tmp volatile
|
# Make /tmp volatile
|
||||||
|
|||||||
@ -117,6 +117,7 @@ in {
|
|||||||
# (mkUDir ".android" m755) # Unity
|
# (mkUDir ".android" m755) # Unity
|
||||||
# (mkUDir ".gradle" m755) # Unity
|
# (mkUDir ".gradle" m755) # Unity
|
||||||
# (mkUDir ".java" m755) # Unity/Rider
|
# (mkUDir ".java" m755) # Unity/Rider
|
||||||
|
(mkUDir ".MakeMKV" m755)
|
||||||
(mkUDir ".mozilla/firefox" m755) # TODO: Remove this someday
|
(mkUDir ".mozilla/firefox" m755) # TODO: Remove this someday
|
||||||
(mkUDir ".mozilla/native-messaging-hosts" m755)
|
(mkUDir ".mozilla/native-messaging-hosts" m755)
|
||||||
(mkUDir ".nix-package-search" m755)
|
(mkUDir ".nix-package-search" m755)
|
||||||
@ -150,6 +151,7 @@ in {
|
|||||||
(mkUDir ".config/obs-studio" m755)
|
(mkUDir ".config/obs-studio" m755)
|
||||||
(mkUDir ".config/Signal" m755)
|
(mkUDir ".config/Signal" m755)
|
||||||
# (mkUDir ".config/singularitygroup-hotreload" m755) # Unity
|
# (mkUDir ".config/singularitygroup-hotreload" m755) # Unity
|
||||||
|
(mkUDir ".config/TeamSpeak" m755)
|
||||||
(mkUDir ".config/tidal-hifi" m755)
|
(mkUDir ".config/tidal-hifi" m755)
|
||||||
(mkUDir ".config/tidal_dl_ng" m755)
|
(mkUDir ".config/tidal_dl_ng" m755)
|
||||||
# (mkUDir ".config/unity3d" m755) # Unity
|
# (mkUDir ".config/unity3d" m755) # Unity
|
||||||
|
|||||||
@ -12,6 +12,9 @@
|
|||||||
./disks.nix
|
./disks.nix
|
||||||
|
|
||||||
../modules
|
../modules
|
||||||
|
|
||||||
|
# General services
|
||||||
|
../services/fileflows-node.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
modules = {
|
modules = {
|
||||||
@ -104,7 +107,8 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
# kernelPackages = pkgs.linuxPackages_zen;
|
kernelPackages = pkgs.linuxPackages_zen;
|
||||||
|
# kernelPackages = lib.mkDefault pkgs.linuxPackages_latest;
|
||||||
|
|
||||||
# kernelParams = [ "quiet" ];
|
# kernelParams = [ "quiet" ];
|
||||||
# plymouth.enable = true;
|
# plymouth.enable = true;
|
||||||
|
|||||||
@ -35,6 +35,10 @@
|
|||||||
"vfat"
|
"vfat"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
supportedFilesystems = [
|
||||||
|
# "zfs" # Probably requires LTS kernel + networking.hostId
|
||||||
|
];
|
||||||
|
|
||||||
kernelModules = [
|
kernelModules = [
|
||||||
"kvm-amd"
|
"kvm-amd"
|
||||||
"sg" # Blu-Ray drive
|
"sg" # Blu-Ray drive
|
||||||
@ -60,6 +64,9 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Required for supportedFilesystems = ["zfs"];, so pools don't get imported on the wrong machine
|
||||||
|
# networking.hostId = "611e6afb";
|
||||||
|
|
||||||
fileSystems = {
|
fileSystems = {
|
||||||
# NOTE: Some filesystems are managed by disko (see ./disks.nix)
|
# NOTE: Some filesystems are managed by disko (see ./disks.nix)
|
||||||
|
|
||||||
@ -82,26 +89,30 @@
|
|||||||
# Using NFS over TCP or increasing the value of the retrans option may mitigate
|
# Using NFS over TCP or increasing the value of the retrans option may mitigate
|
||||||
# some of the risks of using the soft option.
|
# some of the risks of using the soft option.
|
||||||
|
|
||||||
|
# Synology DS223j
|
||||||
|
|
||||||
|
"/home/${username}/Restic" = {
|
||||||
|
device = "192.168.86.15:/volume1/NixinatorPersistence";
|
||||||
|
fsType = "nfs";
|
||||||
|
options = ["defaults" "rw" "noatime" "_netdev" "bg" "soft"];
|
||||||
|
};
|
||||||
|
|
||||||
|
# TrueNAS
|
||||||
|
|
||||||
"/home/${username}/Movies" = {
|
"/home/${username}/Movies" = {
|
||||||
device = "192.168.86.20:/mnt/SG Exos Mirror 18TB/Movie";
|
device = "192.168.86.20:/mnt/Seagate4TB/Movies";
|
||||||
fsType = "nfs";
|
fsType = "nfs";
|
||||||
options = ["defaults" "rw" "noatime" "_netdev" "bg" "soft"];
|
options = ["defaults" "rw" "noatime" "_netdev" "bg" "soft"];
|
||||||
};
|
};
|
||||||
|
|
||||||
"/home/${username}/Shows" = {
|
"/home/${username}/Shows" = {
|
||||||
device = "192.168.86.20:/mnt/SG Exos Mirror 18TB/Show";
|
device = "192.168.86.20:/mnt/Seagate4TB/Shows";
|
||||||
fsType = "nfs";
|
fsType = "nfs";
|
||||||
options = ["defaults" "rw" "noatime" "_netdev" "bg" "soft"];
|
options = ["defaults" "rw" "noatime" "_netdev" "bg" "soft"];
|
||||||
};
|
};
|
||||||
|
|
||||||
"/home/${username}/Music" = {
|
"/home/${username}/Music" = {
|
||||||
device = "192.168.86.20:/mnt/SG Exos Mirror 18TB/Music";
|
device = "192.168.86.20:/mnt/Seagate4TB/Music";
|
||||||
fsType = "nfs";
|
|
||||||
options = ["defaults" "rw" "noatime" "_netdev" "bg" "soft"];
|
|
||||||
};
|
|
||||||
|
|
||||||
"/home/${username}/Restic" = {
|
|
||||||
device = "192.168.86.15:/volume1/NixinatorPersistence";
|
|
||||||
fsType = "nfs";
|
fsType = "nfs";
|
||||||
options = ["defaults" "rw" "noatime" "_netdev" "bg" "soft"];
|
options = ["defaults" "rw" "noatime" "_netdev" "bg" "soft"];
|
||||||
};
|
};
|
||||||
|
|||||||
@ -24,6 +24,7 @@
|
|||||||
|
|
||||||
# General services
|
# General services
|
||||||
../services/authelia.nix
|
../services/authelia.nix
|
||||||
|
../services/fileflows.nix
|
||||||
../services/gitea.nix
|
../services/gitea.nix
|
||||||
../services/gitea-runner.nix
|
../services/gitea-runner.nix
|
||||||
../services/immich.nix
|
../services/immich.nix
|
||||||
@ -33,6 +34,8 @@
|
|||||||
../services/nginx-proxy-manager.nix
|
../services/nginx-proxy-manager.nix
|
||||||
../services/paperless.nix
|
../services/paperless.nix
|
||||||
../services/portainer-agent.nix
|
../services/portainer-agent.nix
|
||||||
|
../services/teamspeak.nix
|
||||||
|
../services/tinymediamanager.nix
|
||||||
../services/whats-up-docker.nix
|
../services/whats-up-docker.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -58,16 +61,30 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# NOTE: Streams: Ports have to be opened in the VPS firewall + VPS UFW and bound in the VPS Nginx compose file.
|
||||||
|
|
||||||
allowedTCPPorts = [
|
allowedTCPPorts = [
|
||||||
53 # DNS
|
53 # DNS (Adguard Home)
|
||||||
80 # HTTP
|
67 # DHCP
|
||||||
3000 # Gitea runner needs to reach local gitea instance
|
80 # HTTP (Nginx Proxy Manager)
|
||||||
|
443 # HTTPS (Nginx Proxy Manager)
|
||||||
|
|
||||||
|
3000 # Gitea (runner needs to reach local gitea instance)
|
||||||
|
|
||||||
|
30033 # Teamspeak
|
||||||
|
10080 # Teamspeak
|
||||||
];
|
];
|
||||||
|
|
||||||
allowedUDPPorts = [
|
allowedUDPPorts = [
|
||||||
53 # DNS
|
53 # DNS (Adguard Home)
|
||||||
67 # DHCP
|
67 # DHCP
|
||||||
3000 # Gitea runner needs to reach local gitea instance
|
80 # HTTP (Nginx Proxy Manager)
|
||||||
|
443 # HTTPS (Nginx Proxy Manager)
|
||||||
|
|
||||||
|
3000 # Gitea (runner needs to reach local gitea instance)
|
||||||
|
|
||||||
|
30033 # Teamspeak
|
||||||
|
9987 # Teamspeak
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -44,22 +44,22 @@
|
|||||||
options = ["defaults" "rw" "relatime" "_netdev" "bg" "soft"];
|
options = ["defaults" "rw" "relatime" "_netdev" "bg" "soft"];
|
||||||
};
|
};
|
||||||
|
|
||||||
# SG Exos Mirror Shares
|
# TrueNAS
|
||||||
|
|
||||||
"/media/Movie" = {
|
"/media/Movie" = {
|
||||||
device = "192.168.86.20:/mnt/SG Exos Mirror 18TB/Movie";
|
device = "192.168.86.20:/mnt/Seagate4TB/Movies";
|
||||||
fsType = "nfs";
|
fsType = "nfs";
|
||||||
options = ["defaults" "rw" "relatime" "_netdev" "bg" "soft"];
|
options = ["defaults" "rw" "relatime" "_netdev" "bg" "soft"];
|
||||||
};
|
};
|
||||||
|
|
||||||
"/media/Show" = {
|
"/media/Show" = {
|
||||||
device = "192.168.86.20:/mnt/SG Exos Mirror 18TB/Show";
|
device = "192.168.86.20:/mnt/Seagate4TB/Shows";
|
||||||
fsType = "nfs";
|
fsType = "nfs";
|
||||||
options = ["defaults" "rw" "relatime" "_netdev" "bg" "soft"];
|
options = ["defaults" "rw" "relatime" "_netdev" "bg" "soft"];
|
||||||
};
|
};
|
||||||
|
|
||||||
"/media/TV-Music" = {
|
"/media/TV-Music" = {
|
||||||
device = "192.168.86.20:/mnt/SG Exos Mirror 18TB/Music";
|
device = "192.168.86.20:/mnt/Seagate4TB/Music";
|
||||||
fsType = "nfs";
|
fsType = "nfs";
|
||||||
options = ["defaults" "rw" "relatime" "_netdev" "bg" "soft"];
|
options = ["defaults" "rw" "relatime" "_netdev" "bg" "soft"];
|
||||||
};
|
};
|
||||||
|
|||||||
@ -20,9 +20,7 @@ in {
|
|||||||
passwordFile = "${config.sops.secrets.docker-password.path}";
|
passwordFile = "${config.sops.secrets.docker-password.path}";
|
||||||
};
|
};
|
||||||
|
|
||||||
dependsOn = [
|
dependsOn = [];
|
||||||
# "pihole"
|
|
||||||
];
|
|
||||||
|
|
||||||
ports = [
|
ports = [
|
||||||
# "9091:9091"
|
# "9091:9091"
|
||||||
|
|||||||
54
system/services/fileflows-node.nix
Normal file
54
system/services/fileflows-node.nix
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
fileflowsVersion = "25.10";
|
||||||
|
in {
|
||||||
|
virtualisation.oci-containers.containers = {
|
||||||
|
fileflows-node = {
|
||||||
|
image = "revenz/fileflows:${fileflowsVersion}";
|
||||||
|
autoStart = true;
|
||||||
|
|
||||||
|
login = {
|
||||||
|
# Uses DockerHub by default
|
||||||
|
# registry = "";
|
||||||
|
|
||||||
|
# DockerHub Credentials
|
||||||
|
username = "christoph.urlacher@protonmail.com";
|
||||||
|
passwordFile = "${config.sops.secrets.docker-password.path}";
|
||||||
|
};
|
||||||
|
|
||||||
|
dependsOn = [];
|
||||||
|
|
||||||
|
ports = [];
|
||||||
|
|
||||||
|
volumes = [
|
||||||
|
"/home/christoph/Movies:/media/movies"
|
||||||
|
"/home/christoph/Shows:/media/tvshows"
|
||||||
|
|
||||||
|
"fileflows_temp:/temp"
|
||||||
|
|
||||||
|
"/var/run/docker.sock:/var/run/docker.socl:ro"
|
||||||
|
];
|
||||||
|
|
||||||
|
hostname = "Nixinator";
|
||||||
|
|
||||||
|
environment = {
|
||||||
|
PUID = "3000";
|
||||||
|
PGID = "3000";
|
||||||
|
TZ = "Europe/Berlin";
|
||||||
|
|
||||||
|
FFNODE = "1";
|
||||||
|
ServerUrl = "https://fileflows.local.chriphost.de";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraOptions = [
|
||||||
|
"--privileged"
|
||||||
|
"--device=nvidia.com/gpu=all"
|
||||||
|
# "--net=behind-nginx"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
51
system/services/fileflows.nix
Normal file
51
system/services/fileflows.nix
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
version = "25.10";
|
||||||
|
in {
|
||||||
|
virtualisation.oci-containers.containers = {
|
||||||
|
fileflows = {
|
||||||
|
image = "revenz/fileflows:${version}";
|
||||||
|
autoStart = true;
|
||||||
|
|
||||||
|
login = {
|
||||||
|
# Uses DockerHub by default
|
||||||
|
# registry = "";
|
||||||
|
|
||||||
|
# DockerHub Credentials
|
||||||
|
username = "christoph.urlacher@protonmail.com";
|
||||||
|
passwordFile = "${config.sops.secrets.docker-password.path}";
|
||||||
|
};
|
||||||
|
|
||||||
|
dependsOn = [];
|
||||||
|
|
||||||
|
ports = [];
|
||||||
|
|
||||||
|
volumes = [
|
||||||
|
"fileflows_temp:/temp"
|
||||||
|
"fileflows_data:/app/Data"
|
||||||
|
"fileflows_logs:/app/Logs"
|
||||||
|
|
||||||
|
"/media/Movie:/media/movies"
|
||||||
|
"/media/Show:/media/tvshows"
|
||||||
|
|
||||||
|
"/var/run/docker.sock:/var/run/docker.sock:ro"
|
||||||
|
];
|
||||||
|
|
||||||
|
environment = {
|
||||||
|
PUID = "3000";
|
||||||
|
PGID = "3000";
|
||||||
|
TZ = "Europe/Berlin";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraOptions = [
|
||||||
|
"--privileged"
|
||||||
|
"--device=nvidia.com/gpu=all"
|
||||||
|
"--net=behind-nginx"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@ -14,7 +14,7 @@ in {
|
|||||||
dependsOn = [];
|
dependsOn = [];
|
||||||
|
|
||||||
ports = [
|
ports = [
|
||||||
"55555:5000"
|
"55555:5000" # Bind for VPS
|
||||||
];
|
];
|
||||||
|
|
||||||
volumes = [
|
volumes = [
|
||||||
|
|||||||
@ -12,12 +12,10 @@ in {
|
|||||||
image = "gitea.vps.chriphost.de/christoph/pocketbase:${pocketbaseVersion}";
|
image = "gitea.vps.chriphost.de/christoph/pocketbase:${pocketbaseVersion}";
|
||||||
autoStart = true;
|
autoStart = true;
|
||||||
|
|
||||||
dependsOn = [
|
dependsOn = [];
|
||||||
# "pihole"
|
|
||||||
];
|
|
||||||
|
|
||||||
ports = [
|
ports = [
|
||||||
"8090:8080"
|
"8090:8080" # Bind for VPS
|
||||||
];
|
];
|
||||||
|
|
||||||
volumes = [
|
volumes = [
|
||||||
|
|||||||
@ -72,7 +72,7 @@ in {
|
|||||||
];
|
];
|
||||||
|
|
||||||
ports = [
|
ports = [
|
||||||
"3000:3000"
|
"3000:3000" # Bind for VPS
|
||||||
|
|
||||||
# NOTE: Set .git/config url to ssh://christoph@gitea.local.chriphost.de:222/christoph/<repo>.git
|
# NOTE: Set .git/config url to ssh://christoph@gitea.local.chriphost.de:222/christoph/<repo>.git
|
||||||
"222:222" # Gitea SSH
|
"222:222" # Gitea SSH
|
||||||
|
|||||||
@ -73,7 +73,7 @@ in {
|
|||||||
];
|
];
|
||||||
|
|
||||||
ports = [
|
ports = [
|
||||||
"2283:8080"
|
"2283:8080" # Bind for VPS
|
||||||
];
|
];
|
||||||
|
|
||||||
volumes = [
|
volumes = [
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
jellyfinVersion = "10.10.7";
|
jellyfinVersion = "10.11.2";
|
||||||
in {
|
in {
|
||||||
virtualisation.oci-containers.containers = {
|
virtualisation.oci-containers.containers = {
|
||||||
jellyfin = {
|
jellyfin = {
|
||||||
@ -25,7 +25,7 @@ in {
|
|||||||
];
|
];
|
||||||
|
|
||||||
ports = [
|
ports = [
|
||||||
"8096:8096"
|
"8096:8096" # Bind for VPS
|
||||||
];
|
];
|
||||||
|
|
||||||
volumes = [
|
volumes = [
|
||||||
|
|||||||
@ -112,7 +112,7 @@ in {
|
|||||||
];
|
];
|
||||||
|
|
||||||
ports = [
|
ports = [
|
||||||
"8080:80"
|
"8080:80" # Bind for VPS
|
||||||
];
|
];
|
||||||
|
|
||||||
volumes = [
|
volumes = [
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
nginxVersion = "2.12.6";
|
nginxVersion = "2.13.1";
|
||||||
in {
|
in {
|
||||||
virtualisation.oci-containers.containers = {
|
virtualisation.oci-containers.containers = {
|
||||||
nginx-proxy-manager = {
|
nginx-proxy-manager = {
|
||||||
|
|||||||
@ -125,7 +125,7 @@ in {
|
|||||||
];
|
];
|
||||||
|
|
||||||
ports = [
|
ports = [
|
||||||
"8000:8000"
|
"8000:8000" # Bind for VPS
|
||||||
];
|
];
|
||||||
|
|
||||||
volumes = [
|
volumes = [
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
# Match this with the portainer-ce version
|
# Match this with the portainer-ce version
|
||||||
portainerVersion = "2.31.3";
|
portainerVersion = "2.33.3";
|
||||||
in {
|
in {
|
||||||
# Use the agent to connect clients to a main portainer instance
|
# Use the agent to connect clients to a main portainer instance
|
||||||
virtualisation.oci-containers.containers = {
|
virtualisation.oci-containers.containers = {
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
# Match this with the portainer agent version
|
# Match this with the portainer agent version
|
||||||
portainerVersion = "2.31.3";
|
portainerVersion = "2.33.3";
|
||||||
in {
|
in {
|
||||||
virtualisation.oci-containers.containers = {
|
virtualisation.oci-containers.containers = {
|
||||||
portainer = {
|
portainer = {
|
||||||
|
|||||||
@ -14,7 +14,7 @@ in {
|
|||||||
ports = [
|
ports = [
|
||||||
# "8080:8090"
|
# "8080:8090"
|
||||||
# "3111:5173"
|
# "3111:5173"
|
||||||
"3111:8080"
|
"3111:8080" # Bind for VPS
|
||||||
];
|
];
|
||||||
|
|
||||||
volumes = [];
|
volumes = [];
|
||||||
|
|||||||
51
system/services/teamspeak.nix
Normal file
51
system/services/teamspeak.nix
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
teamspeakVersion = "v6.0.0-beta7";
|
||||||
|
in {
|
||||||
|
virtualisation.oci-containers.containers = {
|
||||||
|
teamspeak = {
|
||||||
|
image = "teamspeaksystems/teamspeak6-server:${teamspeakVersion}";
|
||||||
|
autoStart = true;
|
||||||
|
|
||||||
|
login = {
|
||||||
|
# Uses DockerHub by default
|
||||||
|
# registry = "";
|
||||||
|
|
||||||
|
# DockerHub Credentials
|
||||||
|
username = "christoph.urlacher@protonmail.com";
|
||||||
|
passwordFile = "${config.sops.secrets.docker-password.path}";
|
||||||
|
};
|
||||||
|
|
||||||
|
dependsOn = [];
|
||||||
|
|
||||||
|
ports = [
|
||||||
|
# Bind for VPS
|
||||||
|
"9987:9987/udp" # Voice port
|
||||||
|
"30033:30033" # File transfer
|
||||||
|
"10080:10080/tcp" # Web query
|
||||||
|
];
|
||||||
|
|
||||||
|
volumes = [
|
||||||
|
"teamspeak_data:/var/tsserver"
|
||||||
|
];
|
||||||
|
|
||||||
|
environment = {
|
||||||
|
PUID = "1000";
|
||||||
|
PGID = "1000";
|
||||||
|
TZ = "Europe/Berlin";
|
||||||
|
|
||||||
|
TSSERVER_LICENSE_ACCEPTED = "accept";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraOptions = [
|
||||||
|
# "--privileged"
|
||||||
|
# "--device=nvidia.com/gpu=all"
|
||||||
|
# "--net=behind-nginx"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
54
system/services/tinymediamanager.nix
Normal file
54
system/services/tinymediamanager.nix
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
version = "5.2.3";
|
||||||
|
in {
|
||||||
|
virtualisation.oci-containers.containers = {
|
||||||
|
tinymediamanager = {
|
||||||
|
image = "tinymediamanager/tinymediamanager:${version}";
|
||||||
|
autoStart = true;
|
||||||
|
|
||||||
|
login = {
|
||||||
|
# Uses DockerHub by default
|
||||||
|
# registry = "";
|
||||||
|
|
||||||
|
# DockerHub Credentials
|
||||||
|
username = "christoph.urlacher@protonmail.com";
|
||||||
|
passwordFile = "${config.sops.secrets.docker-password.path}";
|
||||||
|
};
|
||||||
|
|
||||||
|
dependsOn = [];
|
||||||
|
|
||||||
|
ports = [];
|
||||||
|
|
||||||
|
volumes = [
|
||||||
|
"tinymediamanager_data:/data"
|
||||||
|
|
||||||
|
"/media/Show:/media/tvshows"
|
||||||
|
"/media/Movie:/media/movies"
|
||||||
|
];
|
||||||
|
|
||||||
|
environment = {
|
||||||
|
PUID = "1000";
|
||||||
|
PGID = "1000";
|
||||||
|
TZ = "Europe/Berlin";
|
||||||
|
|
||||||
|
USER_ID = "1000";
|
||||||
|
GROUP_ID = "1000";
|
||||||
|
ALLOW_DIRECT_VNC = "true";
|
||||||
|
LC_ALL = "en_US.UTF-8"; # force UTF8
|
||||||
|
LANG = "en_US.UTF-8"; # force UTF8
|
||||||
|
PASSWORD = "<password>";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraOptions = [
|
||||||
|
# "--privileged"
|
||||||
|
# "--device=nvidia.com/gpu=all"
|
||||||
|
"--net=behind-nginx"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@ -40,22 +40,22 @@
|
|||||||
options = ["defaults" "rw" "relatime" "_netdev" "bg" "soft"];
|
options = ["defaults" "rw" "relatime" "_netdev" "bg" "soft"];
|
||||||
};
|
};
|
||||||
|
|
||||||
# SG Exos Mirror Shares
|
# TrueNAS
|
||||||
|
|
||||||
"/media/Movie" = {
|
"/media/Movie" = {
|
||||||
device = "192.168.86.20:/mnt/SG Exos Mirror 18TB/Movie";
|
device = "192.168.86.20:/mnt/Seagate4TB/Movies";
|
||||||
fsType = "nfs";
|
fsType = "nfs";
|
||||||
options = ["defaults" "rw" "relatime" "_netdev" "bg" "soft"];
|
options = ["defaults" "rw" "relatime" "_netdev" "bg" "soft"];
|
||||||
};
|
};
|
||||||
|
|
||||||
"/media/Show" = {
|
"/media/Show" = {
|
||||||
device = "192.168.86.20:/mnt/SG Exos Mirror 18TB/Show";
|
device = "192.168.86.20:/mnt/Seagate4TB/Shows";
|
||||||
fsType = "nfs";
|
fsType = "nfs";
|
||||||
options = ["defaults" "rw" "relatime" "_netdev" "bg" "soft"];
|
options = ["defaults" "rw" "relatime" "_netdev" "bg" "soft"];
|
||||||
};
|
};
|
||||||
|
|
||||||
"/media/TV-Music" = {
|
"/media/TV-Music" = {
|
||||||
device = "192.168.86.20:/mnt/SG Exos Mirror 18TB/Music";
|
device = "192.168.86.20:/mnt/Seagate4TB/Music";
|
||||||
fsType = "nfs";
|
fsType = "nfs";
|
||||||
options = ["defaults" "rw" "relatime" "_netdev" "bg" "soft"];
|
options = ["defaults" "rw" "relatime" "_netdev" "bg" "soft"];
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user