76 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| {
 | |
|   lib,
 | |
|   config,
 | |
|   ...
 | |
| }: let
 | |
|   inherit (lib) mkIf;
 | |
|   inherit (config.ooknet.host) admin;
 | |
|   inherit (config.ooknet.server) ookflix;
 | |
|   inherit (config.ooknet.server.ookflix) volumes groups;
 | |
|   inherit (config.ooknet.server.ookflix.services) jellyfin plex sonarr radarr prowlarr qbittorrent;
 | |
|   dataDirPermissions = {
 | |
|     mode = "0775";
 | |
|     user = admin.name;
 | |
|     group = groups.media.name;
 | |
|   };
 | |
|   ifTheyExist = users: builtins.filter (user: builtins.hasAttr user config.users.users) users;
 | |
| in {
 | |
|   config = mkIf ookflix.enable {
 | |
|     users.groups = {
 | |
|       ${groups.media.name} = {
 | |
|         inherit (groups.media) name;
 | |
|         gid = groups.media.id;
 | |
|         members = ifTheyExist [
 | |
|           # need access to the media library
 | |
|           jellyfin.user.name
 | |
|           plex.user.name
 | |
| 
 | |
|           # need access to the media library and the torrent/usenet library
 | |
|           sonarr.user.name
 | |
|           radarr.user.name
 | |
|           prowlarr.user.name
 | |
| 
 | |
|           # need access to the torrent library
 | |
|           qbittorrent.user.name
 | |
|         ];
 | |
|       };
 | |
|     };
 | |
|     systemd.tmpfiles.settings = {
 | |
|       ookflixDataDirs = {
 | |
|         /*
 | |
|         set up the entire directory structure it should look something like this:
 | |
|         data
 | |
|         ├── torrents
 | |
|         │  ├── movies
 | |
|         │  ├── books
 | |
|         │  └── tv
 | |
|         ├── usenet
 | |
|         │   ├── incomplete
 | |
|         │   └── complete
 | |
|         │       ├── books
 | |
|         │       ├── movies
 | |
|         │       └── tv
 | |
|         └── media
 | |
|             ├── movies
 | |
|             ├── books
 | |
|             └── tv
 | |
|         */
 | |
|         "${volumes.data.root}"."d" = dataDirPermissions;
 | |
|         "${volumes.torrents.root}"."d" = dataDirPermissions;
 | |
|         "${volumes.torrents.movies}"."d" = dataDirPermissions;
 | |
|         "${volumes.torrents.tv}"."d" = dataDirPermissions;
 | |
|         "${volumes.torrents.books}"."d" = dataDirPermissions;
 | |
|         "${volumes.usenet.root}"."d" = dataDirPermissions;
 | |
|         "${volumes.usenet.incomplete}"."d" = dataDirPermissions;
 | |
|         "${volumes.usenet.complete.root}"."d" = dataDirPermissions;
 | |
|         "${volumes.usenet.complete.movies}"."d" = dataDirPermissions;
 | |
|         "${volumes.usenet.complete.tv}"."d" = dataDirPermissions;
 | |
|         "${volumes.usenet.complete.books}"."d" = dataDirPermissions;
 | |
|         "${volumes.media.root}"."d" = dataDirPermissions;
 | |
|         "${volumes.media.movies}"."d" = dataDirPermissions;
 | |
|         "${volumes.media.tv}"."d" = dataDirPermissions;
 | |
|         "${volumes.media.books}"."d" = dataDirPermissions;
 | |
|       };
 | |
|     };
 | |
|   };
 | |
| }
 |