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
							
								
									fb506460ba
								
							
						
					
					
						commit
						e6dc87ad82
					
				
							
								
								
									
										21
									
								
								m/hut/p.nix
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								m/hut/p.nix
									
									
									
									
									
								
							| @ -1,4 +1,4 @@ | ||||
| { pkgs, ... }: | ||||
| { pkgs, lib, config, ... }: | ||||
| let | ||||
|   p = pkgs.writeShellScriptBin "p" '' | ||||
|     set -e | ||||
| @ -21,4 +21,23 @@ let | ||||
| in | ||||
| { | ||||
|   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