Compare commits
13 Commits
master
...
ad05cdf7b5
| Author | SHA1 | Date | |
|---|---|---|---|
|
ad05cdf7b5
|
|||
|
b895c3a1ff
|
|||
|
20afc8836f
|
|||
|
cbeead85eb
|
|||
|
8069839f38
|
|||
|
daa3202393
|
|||
|
909baf9111
|
|||
|
341e4d703a
|
|||
|
a81fc48127
|
|||
|
f6d5c83a8e
|
|||
|
695e196024
|
|||
|
8ae48df307
|
|||
|
0e893bc106
|
@ -372,6 +372,7 @@
|
|||||||
tidal-hifi
|
tidal-hifi
|
||||||
tidal-dl-ng
|
tidal-dl-ng
|
||||||
picard
|
picard
|
||||||
|
handbrake
|
||||||
|
|
||||||
# Office
|
# Office
|
||||||
kdePackages.wacomtablet # For xournalpp/krita
|
kdePackages.wacomtablet # For xournalpp/krita
|
||||||
@ -457,6 +458,7 @@
|
|||||||
enableFishIntegration = config.modules.fish.enable;
|
enableFishIntegration = config.modules.fish.enable;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# TODO: Module
|
||||||
fastfetch = {
|
fastfetch = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -104,7 +104,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,7 @@
|
|||||||
../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/tinymediamanager.nix
|
||||||
../services/whats-up-docker.nix
|
../services/whats-up-docker.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@ -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"];
|
||||||
};
|
};
|
||||||
|
|||||||
55
system/services/fileflows.nix
Normal file
55
system/services/fileflows.nix
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
FileFlowsVersion = "25.10";
|
||||||
|
in {
|
||||||
|
virtualisation.oci-containers.containers = {
|
||||||
|
FileFlows = {
|
||||||
|
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 = [
|
||||||
|
"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 = "1000";
|
||||||
|
PGID = "1000";
|
||||||
|
TZ = "Europe/Berlin";
|
||||||
|
};
|
||||||
|
|
||||||
|
environmentFiles = [
|
||||||
|
config.sops.templates."FileFlows_secrets.env".path
|
||||||
|
];
|
||||||
|
|
||||||
|
extraOptions = [
|
||||||
|
"--privileged"
|
||||||
|
"--device=nvidia.com/gpu=all"
|
||||||
|
"--net=behind-nginx"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@ -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 = {
|
||||||
|
|||||||
@ -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 = {
|
||||||
|
|||||||
@ -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 = {
|
||||||
|
|||||||
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