forked from fediversity/fediversity
		
	add README
This commit is contained in:
		
							parent
							
								
									5bef87be1f
								
							
						
					
					
						commit
						36d1c9c433
					
				
					 2 changed files with 72 additions and 0 deletions
				
			
		
							
								
								
									
										70
									
								
								website/README.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								website/README.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,70 @@ | |||
| # Fediversity web site | ||||
| 
 | ||||
| This web site is built with a static site generator based on the Nix language [module system](https://nix.dev/tutorials/module-system/). | ||||
| It has unique features such as: | ||||
| - correct-by-construction relative links, automatic redirects for moved pages | ||||
| - correct-by-construction content fields | ||||
| - customisable templating and content structure, all seamlessly expressed in the Nix language | ||||
| - correct-by-construction spec-compliant HTML output | ||||
| - content source organisation independent of output structure | ||||
| 
 | ||||
| Structured content is managed through Nix expressions, and copy is written in [CommonMark](https://commonmark.org/). | ||||
| 
 | ||||
| # Contributing | ||||
| 
 | ||||
| - [Install Nix](https://nix.dev/install-nix) | ||||
| - [Set up `direnv`](https://github.com/nix-community/nix-direnv#installation) | ||||
| - Run `direnv allow` in the directory where repository is stored on your machine | ||||
| - Edit any of the files, see [repository layout](#repository-layout) for guidance | ||||
| - Build and view the web site | ||||
| 
 | ||||
|   ```bash | ||||
|   xdg-open $(nix-build -A build --no-out-link)/index.html | ||||
|   ``` | ||||
| 
 | ||||
|   or | ||||
| 
 | ||||
|   ```fish | ||||
|   open (nix-build -A build --no-out-link)/index.html | ||||
|   ``` | ||||
| 
 | ||||
| # Repository layout | ||||
| 
 | ||||
| - [content](./content) | ||||
| 
 | ||||
|   Content of the web site is managed here. | ||||
|   The entry point is [`content/default.nix`](./content/default.nix) and is built to correspond to `index.html` in the result. | ||||
|   All other content sources are automatically included in `imports`, and can be accessed though the `config` module argument. | ||||
| 
 | ||||
| - [structure](./structure) | ||||
| 
 | ||||
|   Definitions of content data structures, such as pages, articles, menus, collections, etc. | ||||
| 
 | ||||
| - [presentation](./presentation) | ||||
| 
 | ||||
|   Code specific to how the web site is rendered. | ||||
|   In particular, it encodes the mechanism for distributing content to files, and for putting together files for the final result. | ||||
| 
 | ||||
|   In principle, different output formats (such as RSS feeds) are possible, and would be implemented there. | ||||
| 
 | ||||
| - [default.nix](./default.nix) | ||||
| 
 | ||||
|   Entry point for building the project. | ||||
|   This is where content, structure, and presentation are wired up. | ||||
| 
 | ||||
| - [shell.nix](./shell.nix) | ||||
| 
 | ||||
|   Convenience wrapper to enable running `nix-shell` without arguments. | ||||
| 
 | ||||
| - [lib.nix](./lib.nix) | ||||
| 
 | ||||
|   Reusable convenience functions. | ||||
|   Also exposed under the `lib` attribute in [default.nix](./default.nix). | ||||
| 
 | ||||
| - [npins](./npins) | ||||
| 
 | ||||
|   Dependencies, managed with [`npins`](https://github.com/andir/npins/). | ||||
| 
 | ||||
| - [README.md](./README.md) | ||||
| 
 | ||||
|   This file. | ||||
|  | @ -16,6 +16,8 @@ let | |||
|   lib'' = lib.extend lib'; | ||||
| in | ||||
| { | ||||
|   lib = import ./lib.nix { inherit lib; }; | ||||
| 
 | ||||
|   build = | ||||
|     let | ||||
|       result = lib''.evalModules { | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Valentin Gagarin
							Valentin Gagarin