Thanks to the Nix anti-patterns documented here... https://nix.dev/anti-patterns/language.html#reproducability-referencing-top-level-directory-with ...I'm cleaning up some of my Nix expressions. Read the article for more context.
		
			
				
	
	
		
			35 lines
		
	
	
	
		
			669 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
	
		
			669 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { ... }:
 | |
| 
 | |
| let
 | |
|   pkgs = import <unstable> {};
 | |
| 
 | |
|   ghc = pkgs.haskellPackages.ghcWithPackages (hpkgs: [
 | |
|     hpkgs.time
 | |
|     hpkgs.aeson
 | |
|     hpkgs.either
 | |
|   ]);
 | |
| 
 | |
|   # This is the systemd service unit
 | |
|   service = pkgs.stdenv.mkDerivation {
 | |
|     name = "url-blocker";
 | |
|     src = builtins.path { path = ./.; name = "url-blocker"; };
 | |
|     buildPhase = ''
 | |
|     ${ghc}/bin/ghc Main.hs
 | |
|   '';
 | |
|     installPhase = ''
 | |
|     mv ./Main $out
 | |
|   '';
 | |
|   };
 | |
| 
 | |
|   # This is the systemd timer unit.
 | |
|   # Run once every minute.
 | |
|   # Give root privilege.
 | |
|   systemdUnit = {
 | |
|     systemd = {
 | |
|       timers.simple-timer = {
 | |
|         wantedBy = [ "timers.target" ];
 | |
|         partOf = [];
 | |
|       };
 | |
|     };
 | |
|   };
 | |
| in null
 |