init
This commit is contained in:
		
						commit
						81e0aadf20
					
				
					 5 changed files with 113 additions and 0 deletions
				
			
		
							
								
								
									
										27
									
								
								flake.lock
									
										
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								flake.lock
									
										
									
										generated
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,27 @@ | |||
| { | ||||
|   "nodes": { | ||||
|     "nixpkgs": { | ||||
|       "locked": { | ||||
|         "lastModified": 1748026106, | ||||
|         "narHash": "sha256-6m1Y3/4pVw1RWTsrkAK2VMYSzG4MMIj7sqUy7o8th1o=", | ||||
|         "owner": "nixos", | ||||
|         "repo": "nixpkgs", | ||||
|         "rev": "063f43f2dbdef86376cc29ad646c45c46e93234c", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
|         "owner": "nixos", | ||||
|         "ref": "nixos-unstable", | ||||
|         "repo": "nixpkgs", | ||||
|         "type": "github" | ||||
|       } | ||||
|     }, | ||||
|     "root": { | ||||
|       "inputs": { | ||||
|         "nixpkgs": "nixpkgs" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "root": "root", | ||||
|   "version": 7 | ||||
| } | ||||
							
								
								
									
										16
									
								
								flake.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								flake.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,16 @@ | |||
| { | ||||
|   inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; | ||||
|   outputs = { nixpkgs, ... }: let | ||||
|     supportedArchitectures = [ | ||||
|       "aarch64-darwin" | ||||
|       "aarch64-linux" | ||||
|       "x86_64-darwin" | ||||
|       "x86_64-linux" | ||||
|     ]; | ||||
|   in { | ||||
|     packages = nixpkgs.lib.genAttrs supportedArchitectures (system: { | ||||
|       nix_templater = nixpkgs.legacyPackages.${system}.callPackage ./pkgs/nix_templater {}; | ||||
|     }); | ||||
|     legacyPackages = nixpkgs.lib.genAttrs supportedArchitectures (system: import ./lib.nix { pkgs = nixpkgs.legacyPackages.${system}; }); | ||||
|   }; | ||||
| } | ||||
							
								
								
									
										29
									
								
								lib.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								lib.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,29 @@ | |||
| { pkgs, text_templater }: | ||||
| rec { | ||||
|   fileContents = file: { | ||||
|    outPath = "<${builtins.placeholder "nix_template"}${toString file}${builtins.placeholder "nix_template"}>"; | ||||
|    file = file; | ||||
|   }; | ||||
| 
 | ||||
|   template_text = { name, text, outPath }: | ||||
|     pkgs.runCommand name { | ||||
|       textBeforeTemplate = text; | ||||
|       script = '' | ||||
|         ${text_templater}/bin/text_templater ${builtins.placeholder "out"}/template ${builtins.placeholder "nix_template"} "${outPath}" | ||||
|       ''; | ||||
|       passAsFile = [ "script" "textBeforeTemplate" ]; | ||||
|     } '' | ||||
|       mkdir -p $out/bin | ||||
|       cp $textBeforeTemplatePath $out/template | ||||
|       cp $scriptPath $out/bin/${name} | ||||
|       chmod +x $out/bin/${name} | ||||
|     ''; | ||||
| 
 | ||||
|   test = template_text { | ||||
|     name = "test"; | ||||
|     text = '' | ||||
|       blablabla ${fileContents (pkgs.writeText "lol" "lol")} | ||||
|     ''; | ||||
|     outPath = "./test"; | ||||
|   }; | ||||
| } | ||||
							
								
								
									
										10
									
								
								pkgs/nix_templater/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								pkgs/nix_templater/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,10 @@ | |||
| { writeShellApplication, python3 }: | ||||
| writeShellApplication { | ||||
|   name = "text_templater"; | ||||
|   runtimeInputs = [ | ||||
|     python3 | ||||
|   ]; | ||||
|   text = '' | ||||
|     python ${./replace.py} "$@" | ||||
|     ''; | ||||
| } | ||||
							
								
								
									
										31
									
								
								pkgs/nix_templater/replace.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								pkgs/nix_templater/replace.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,31 @@ | |||
| import sys | ||||
| from pathlib import Path | ||||
| 
 | ||||
| tempalte_file = sys.argv[1] | ||||
| magic_string = sys.argv[2] | ||||
| outfile = sys.argv[3] | ||||
| 
 | ||||
| if Path(outfile).exists(): | ||||
|     print(f"{outfile} already exists, aborting") | ||||
|     sys.exit(1) | ||||
| 
 | ||||
| template_bytes = Path(tempalte_file).read_bytes() | ||||
| loc = 0 | ||||
| output = b"" | ||||
| 
 | ||||
| 
 | ||||
| while True: | ||||
|     magic_start = template_bytes[loc:].find(f"<{magic_string}".encode()) | ||||
|     if magic_start == -1: | ||||
|         output += template_bytes[loc:] | ||||
|         break | ||||
|     magic_end = template_bytes[loc + magic_start :].find(f"{magic_string}>".encode()) | ||||
|     magic_file = template_bytes[ | ||||
|         (loc + magic_start + len(magic_string) + 1) : loc + magic_start + magic_end | ||||
|     ] | ||||
|     output += template_bytes[loc : loc + magic_start] | ||||
|     # TODO handle errors better here | ||||
|     output += Path(magic_file.decode()).read_bytes() | ||||
|     loc = loc + magic_start + magic_end + len(magic_string) + 1 | ||||
| 
 | ||||
| Path(outfile).write_bytes(output) | ||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 lassulus
						lassulus