default.nix (3600B)
1 { 2 config, 3 pkgs, 4 inputs, 5 ... 6 }: 7 let 8 domain = import ./domain.nix; 9 in 10 rec { 11 imports = [ 12 ./disk-config.nix 13 ]; 14 15 modules = { 16 agate = { 17 enable = true; 18 preStart = { 19 scripts = 20 let 21 generateAtom = builtins.concatStringsSep " " [ 22 "${inputs.site}/scripts/generate-atom.sh" 23 "/var/tmp/site/gemini" 24 "\"Francesco Saccone's blog\"" 25 "gemini://${domain}" 26 ]; 27 generateSitemap = builtins.concatStringsSep " " [ 28 "${inputs.site}/scripts/generate-sitemap.sh" 29 "/var/tmp/site/gemini" 30 "gemini://${domain}" 31 ]; 32 generateGemini = builtins.concatStringsSep " " [ 33 "${inputs.site}/scripts/generate-gemini.sh" 34 "/var/tmp/site/gemini" 35 ]; 36 in 37 [ 38 generateAtom 39 generateSitemap 40 generateGemini 41 ]; 42 packages = [ 43 pkgs.coreutils 44 pkgs.findutils 45 pkgs.gnused 46 pkgs.lowdown 47 ]; 48 }; 49 symlinks = { 50 "index.gmi" = "/var/tmp/site/gemini/index.gmi"; 51 "blog" = "/var/tmp/site/gemini/blog"; 52 "code" = "/var/tmp/site/gemini/code"; 53 "public" = "${inputs.site}/public"; 54 "robots.txt" = "${inputs.site}/robots.txt"; 55 "atom.xml" = "/var/tmp/site/gemini/atom.xml"; 56 "sitemap.xml" = "/var/tmp/site/gemini/sitemap.xml"; 57 }; 58 }; 59 bind = { 60 enable = true; 61 inherit (networking) domain; 62 records = import ./dns.nix domain; 63 }; 64 quark = { 65 enable = true; 66 preStart = { 67 scripts = 68 let 69 generateAtom = builtins.concatStringsSep " " [ 70 "${inputs.site}/scripts/generate-atom.sh" 71 config.modules.quark.directory 72 "\"Francesco Saccone's blog\"" 73 "https://${domain}" 74 ]; 75 generateSitemap = builtins.concatStringsSep " " [ 76 "${inputs.site}/scripts/generate-sitemap.sh" 77 config.modules.quark.directory 78 "https://${domain}" 79 ]; 80 generateHtml = builtins.concatStringsSep " " [ 81 "${inputs.site}/scripts/generate-html.sh" 82 config.modules.quark.directory 83 ]; 84 copyStaticContent = pkgs.writeShellScript "copy-static-content" '' 85 ${pkgs.sbase}/bin/cp -r \ 86 ${inputs.site}/public \ 87 ${inputs.site}/favicon.ico \ 88 ${inputs.site}/robots.txt \ 89 ${config.modules.quark.directory} 90 ''; 91 in 92 [ 93 generateAtom 94 generateSitemap 95 generateHtml 96 copyStaticContent 97 ]; 98 packages = [ 99 pkgs.coreutils 100 pkgs.findutils 101 pkgs.gnused 102 pkgs.lowdown 103 ]; 104 }; 105 acme = { 106 enable = true; 107 email = "admin@${domain}"; 108 inherit domain; 109 extraDomains = [ "www.${domain}" ]; 110 }; 111 tls = { 112 enable = true; 113 pemFiles = 114 let 115 inherit (config.modules.quark.acme) directory; 116 in 117 [ 118 "${directory}/${domain}/fullchain.pem" 119 "${directory}/${domain}/privkey.pem" 120 ]; 121 }; 122 }; 123 openssh.listen = { 124 enable = true; 125 port = 22; 126 authorizedKeyFiles = rec { 127 root = [ 128 ./ssh/francescosaccone.pub 129 ]; 130 }; 131 }; 132 }; 133 134 networking = { 135 inherit domain; 136 }; 137 }