forked from tangled.org/core
Monorepo for Tangled — https://tangled.org
1{ 2 nixpkgs, 3 system, 4 self, 5}: let 6 envVar = name: let 7 var = builtins.getEnv name; 8 in 9 if var == "" 10 then throw "\$${name} must be defined, see docs/hacking.md for more details" 11 else var; 12in 13 nixpkgs.lib.nixosSystem { 14 inherit system; 15 modules = [ 16 self.nixosModules.knot 17 self.nixosModules.spindle 18 ({ 19 config, 20 pkgs, 21 ... 22 }: { 23 virtualisation = { 24 memorySize = 2048; 25 diskSize = 10 * 1024; 26 cores = 2; 27 forwardPorts = [ 28 # ssh 29 { 30 from = "host"; 31 host.port = 2222; 32 guest.port = 22; 33 } 34 # knot 35 { 36 from = "host"; 37 host.port = 6000; 38 guest.port = 6000; 39 } 40 # spindle 41 { 42 from = "host"; 43 host.port = 6555; 44 guest.port = 6555; 45 } 46 ]; 47 }; 48 services.getty.autologinUser = "root"; 49 environment.systemPackages = with pkgs; [curl vim git]; 50 systemd.tmpfiles.rules = let 51 u = config.services.tangled-knot.gitUser; 52 g = config.services.tangled-knot.gitUser; 53 in [ 54 "d /var/lib/knot 0770 ${u} ${g} - -" # Create the directory first 55 "f+ /var/lib/knot/secret 0660 ${u} ${g} - KNOT_SERVER_SECRET=${envVar "TANGLED_VM_KNOT_SECRET"}" 56 ]; 57 services.tangled-knot = { 58 enable = true; 59 motd = "Welcome to the development knot!\n"; 60 server = { 61 secretFile = "/var/lib/knot/secret"; 62 hostname = "localhost:6000"; 63 listenAddr = "0.0.0.0:6000"; 64 }; 65 }; 66 services.tangled-spindle = { 67 enable = true; 68 server = { 69 owner = envVar "TANGLED_VM_SPINDLE_OWNER"; 70 hostname = "localhost:6555"; 71 listenAddr = "0.0.0.0:6555"; 72 dev = true; 73 secrets = { 74 provider = "sqlite"; 75 }; 76 }; 77 }; 78 }) 79 ]; 80 }