forked from Yuka/c3h-nixfiles
		
	fix spotifyd service config and firewall setup
This commit is contained in:
		
							parent
							
								
									d1ebaa7a86
								
							
						
					
					
						commit
						c5349029ab
					
				
					 3 changed files with 78 additions and 2 deletions
				
			
		|  | @ -38,6 +38,7 @@ | ||||||
|     vim |     vim | ||||||
|     wget |     wget | ||||||
|     jq |     jq | ||||||
|  |     lsof | ||||||
|   ]; |   ]; | ||||||
| 
 | 
 | ||||||
|   programs.bash.shellAliases = { |   programs.bash.shellAliases = { | ||||||
|  |  | ||||||
							
								
								
									
										68
									
								
								modules/spotifyd.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								modules/spotifyd.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,68 @@ | ||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | with lib; | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   cfg = config.services.spotifyd; | ||||||
|  |   toml = pkgs.formats.toml {}; | ||||||
|  |   warnConfig = | ||||||
|  |     if cfg.config != "" | ||||||
|  |     then lib.trace "Using the stringly typed .config attribute is discouraged. Use the TOML typed .settings attribute instead." | ||||||
|  |     else id; | ||||||
|  |   spotifydConf = | ||||||
|  |     if cfg.settings != {} | ||||||
|  |     then toml.generate "spotify.conf" cfg.settings | ||||||
|  |     else warnConfig (pkgs.writeText "spotifyd.conf" cfg.config); | ||||||
|  | in | ||||||
|  | { | ||||||
|  |   options = { | ||||||
|  |     services.spotifyd = { | ||||||
|  |       enable = mkEnableOption "spotifyd, a Spotify playing daemon"; | ||||||
|  | 
 | ||||||
|  |       config = mkOption { | ||||||
|  |         default = ""; | ||||||
|  |         type = types.lines; | ||||||
|  |         description = '' | ||||||
|  |           (Deprecated) Configuration for Spotifyd. For syntax and directives, see | ||||||
|  |           <link xlink:href="https://github.com/Spotifyd/spotifyd#Configuration"/>. | ||||||
|  |         ''; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|  |       settings = mkOption { | ||||||
|  |         default = {}; | ||||||
|  |         type = toml.type; | ||||||
|  |         example = { global.bitrate = 320; }; | ||||||
|  |         description = '' | ||||||
|  |           Configuration for Spotifyd. For syntax and directives, see | ||||||
|  |           <link xlink:href="https://github.com/Spotifyd/spotifyd#Configuration"/>. | ||||||
|  |         ''; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config = mkIf cfg.enable { | ||||||
|  |     assertions = [ | ||||||
|  |       { | ||||||
|  |         assertion = cfg.config == "" || cfg.settings == {}; | ||||||
|  |         message = "At most one of the .config attribute and the .settings attribute may be set"; | ||||||
|  |       } | ||||||
|  |     ]; | ||||||
|  | 
 | ||||||
|  |     systemd.services.spotifyd = { | ||||||
|  |       wantedBy = [ "multi-user.target" ]; | ||||||
|  |       after = [ "network-online.target" "sound.target" ]; | ||||||
|  |       description = "spotifyd, a Spotify playing daemon"; | ||||||
|  |       environment.SHELL = "/bin/sh"; | ||||||
|  |       serviceConfig = { | ||||||
|  |         ExecStart = "${pkgs.spotifyd}/bin/spotifyd --no-daemon --config-path ${spotifydConf}"; | ||||||
|  |         Restart = "always"; | ||||||
|  |         RestartSec = 12; | ||||||
|  |         DynamicUser = true; | ||||||
|  |         CacheDirectory = "spotifyd"; | ||||||
|  |         SupplementaryGroups = ["audio"]; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   meta.maintainers = [ maintainers.anderslundstedt ]; | ||||||
|  | } | ||||||
|  | @ -1,11 +1,18 @@ | ||||||
| { config, ... }: | { config, ... }: | ||||||
| 
 | 
 | ||||||
| { | { | ||||||
|  |   disabledModules = [ "services/audio/spotifyd.nix" ]; | ||||||
|  |   imports = [ ../modules/spotifyd.nix ]; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|   services.spotifyd = { |   services.spotifyd = { | ||||||
|     enable = true; |     enable = true; | ||||||
|     settings.zeroconf_port = 18572; |     settings.global = { | ||||||
|  |       bitrate = 320; | ||||||
|  |       zeroconf_port = 18572; | ||||||
|  |     }; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   networking.firewall.allowedTCPPorts = [ 4070 config.services.spotifyd.settings.zeroconf_port ]; |   networking.firewall.allowedTCPPorts = [ 4070 config.services.spotifyd.settings.global.zeroconf_port ]; | ||||||
|   networking.firewall.allowedUDPPorts = [ 5353 ]; |   networking.firewall.allowedUDPPorts = [ 5353 ]; | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue