Compare commits

...

2 Commits

Author SHA1 Message Date
Alexander Heldt
4e14b6b379 manatee: Add transmission module 2025-05-03 12:50:35 +02:00
Alexander Heldt
338b8be3d9 manatee: Add storage group that owns /mnt/media/public 2025-05-03 12:45:14 +02:00
4 changed files with 81 additions and 1 deletions

View File

@@ -16,7 +16,10 @@
users.users.alex = {
isNormalUser = true;
description = "alex";
extraGroups = [ "wheel" ];
extraGroups = [
"wheel"
"storage"
];
};
environment.systemPackages = with pkgs; [

View File

@@ -3,6 +3,33 @@
imports = [ inputs.disko.nixosModules.disko ];
config = {
users.groups.storage = { };
users.users.storage = {
isSystemUser = true;
description = "storage";
group = "storage";
};
systemd.tmpfiles.settings = {
"10-media-public" = {
"/mnt/media/public" = {
d = {
# Create directory
user = "storage";
group = "storage";
mode = "2775";
};
z = {
# Ensure permissions are inherited
user = "storage";
group = "storage";
mode = "2775";
};
};
};
};
networking.hostId = "0a9474e7"; # Required by ZFS
disko.devices = {
disk = {

View File

@@ -12,6 +12,8 @@ in
ssh.enable = true;
git.enable = true;
transmission.enable = true;
};
};
}

View File

@@ -0,0 +1,48 @@
{
pkgs,
lib,
config,
...
}:
let
enabled = config.mod.transmission.enable;
in
{
options = {
mod.transmission = {
enable = lib.mkEnableOption "enable transmission module";
};
};
config = lib.mkIf enabled {
services = {
transmission = {
enable = true;
package = pkgs.transmission_4;
openFirewall = true;
user = "storage";
group = "storage";
home = "/mnt/media/public/.ts-home";
downloadDirPermissions = "775";
settings = {
incomplete-dir-enabled = false;
download-dir = "/mnt/media/public/downloads";
rpc-bind-address = "0.0.0.0";
# Required to have empty user/pass to satisfy transmissionA
# https://github.com/transmission/transmission/discussions/1941#discussioncomment-1472352
rpc-whitelist-enabled = false;
rpc-authentication-required = true;
rpc-username = "";
rpc-password = "";
};
};
};
};
}