119 lines
2.7 KiB
Nix
119 lines
2.7 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}:
|
|
{
|
|
imports = [ ./netns.nix ];
|
|
|
|
system.fsPackages = with pkgs; [
|
|
gocryptfs
|
|
cifs-utils
|
|
];
|
|
systemd.mounts = [
|
|
{
|
|
after = [ "network.target" ];
|
|
what = "//library.technogothic.net/backup";
|
|
where = "/mnt/library-raw";
|
|
type = "cifs";
|
|
options = "gid=users,file_mode=0664,dir_mode=0775";
|
|
mountConfig.EnvironmentFile = "/var/lib/secrets/hetzner-env";
|
|
}
|
|
{
|
|
what = "/mnt/library-raw";
|
|
where = "/mnt/library";
|
|
type = "fuse.gocryptfs";
|
|
options = "allow_other,passfile=/var/lib/secrets/gocryptfs-pass";
|
|
wantedBy = [ "multi-user.target" ];
|
|
}
|
|
];
|
|
|
|
systemd.services."container@transmission" = {
|
|
bindsTo = [ "ve-transmission.service" ];
|
|
after = [
|
|
"ve-transmission.service"
|
|
"mnt-library.mount"
|
|
];
|
|
};
|
|
|
|
containers.transmission = {
|
|
autoStart = true;
|
|
|
|
extraFlags = [ "--network-namespace-path=/run/netns/transmission" ];
|
|
|
|
bindMounts = {
|
|
"/var/lib/transmission" = {
|
|
hostPath = "/var/lib/transmission";
|
|
isReadOnly = false;
|
|
};
|
|
"/mnt/library" = {
|
|
hostPath = "/mnt/library";
|
|
isReadOnly = false;
|
|
};
|
|
"/etc/resolv.conf" = {
|
|
hostPath = toString (pkgs.writeText "resolv.conf" "nameserver 74.82.42.42");
|
|
};
|
|
};
|
|
|
|
config = {
|
|
services.transmission = {
|
|
enable = true;
|
|
|
|
package = pkgs.transmission_4;
|
|
webHome = pkgs.flood-for-transmission;
|
|
|
|
settings = {
|
|
rpc-bind-address = "::";
|
|
rpc-whitelist-enabled = false;
|
|
rpc-host-whitelist-enabled = false;
|
|
|
|
download-dir = "/mnt/library/Downloads";
|
|
incomplete-dir = "/mnt/library/.incomplete";
|
|
watch-dir = "/mnt/library/watchdir";
|
|
};
|
|
openRPCPort = true;
|
|
openPeerPorts = true;
|
|
};
|
|
|
|
users.users.transmission.extraGroups = [ "users" ];
|
|
|
|
# https://github.com/NixOS/nixpkgs/issues/258793
|
|
systemd.services.transmission.serviceConfig = {
|
|
RootDirectoryStartOnly = lib.mkForce (lib.mkForce false);
|
|
RootDirectory = lib.mkForce (lib.mkForce "");
|
|
};
|
|
|
|
system.stateVersion = config.system.stateVersion;
|
|
};
|
|
};
|
|
|
|
# Jellyfin
|
|
services.jellyfin = {
|
|
enable = true;
|
|
openFirewall = true;
|
|
};
|
|
environment.systemPackages = with pkgs; [
|
|
jellyfin
|
|
jellyfin-web
|
|
jellyfin-ffmpeg
|
|
];
|
|
|
|
# SMB Share
|
|
services.samba = {
|
|
enable = true;
|
|
openFirewall = true;
|
|
extraConfig = ''
|
|
server string = Watchtower
|
|
guest account = nobody
|
|
map to guest = bad user
|
|
'';
|
|
shares.Library = {
|
|
path = "/mnt/library";
|
|
browseable = "yes";
|
|
"read only" = "no";
|
|
"guest ok" = "yes";
|
|
};
|
|
};
|
|
}
|