Create paste directories in /ceph/p
Ensure that all hut users have a paste directory in /ceph/p owned by themselves. We need to wait for the ceph mount point to create them, so we use a systemd service that waits for the remote-fs.target. Reviewed-by: Aleix Boné <abonerib@bsc.es>
This commit is contained in:
		
							parent
							
								
									c1617266b6
								
							
						
					
					
						commit
						b978f12d19
					
				
							
								
								
									
										21
									
								
								m/hut/p.nix
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								m/hut/p.nix
									
									
									
									
									
								
							| @ -1,4 +1,4 @@ | |||||||
| { pkgs, ... }: | { pkgs, lib, config, ... }: | ||||||
| let | let | ||||||
|   p = pkgs.writeShellScriptBin "p" '' |   p = pkgs.writeShellScriptBin "p" '' | ||||||
|     set -e |     set -e | ||||||
| @ -21,4 +21,23 @@ let | |||||||
| in | in | ||||||
| { | { | ||||||
|   environment.systemPackages = with pkgs; [ p ]; |   environment.systemPackages = with pkgs; [ p ]; | ||||||
|  | 
 | ||||||
|  |   # Make sure we have a directory per user. We cannot use the nice | ||||||
|  |   # systemd-tmpfiles-setup.service service because this is a remote FS, and it | ||||||
|  |   # may not be mounted when it runs. | ||||||
|  |   systemd.services.create-paste-dirs = let | ||||||
|  |     # Take only normal users in hut | ||||||
|  |     users = lib.filterAttrs (_: v: v.isNormalUser) config.users.users; | ||||||
|  |     commands = lib.concatLists (lib.mapAttrsToList | ||||||
|  |       (_: user: [ | ||||||
|  |         "install -d -o ${user.name} -g ${user.group} -m 0755 /ceph/p/${user.name}" | ||||||
|  |       ]) users); | ||||||
|  |     script = pkgs.writeShellScript "create-paste-dirs.sh" (lib.concatLines commands); | ||||||
|  |   in { | ||||||
|  |     enable = true; | ||||||
|  |     wants = [ "remote-fs.target" ]; | ||||||
|  |     after = [ "remote-fs.target" ]; | ||||||
|  |     wantedBy = [ "multi-user.target" ]; | ||||||
|  |     serviceConfig.ExecStart = script; | ||||||
|  |   }; | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user