{{title}}
{{:endif}} + ++{{magic_rb/source-with-name "example" 'src-block :value}} ++ +
+{{magic_rb/source-with-name "command-docker" 'src-block :value}} ++ +
+{{magic_rb/source-with-name "command-podman" 'src-block :value}} ++
diff --git a/Makefile b/Makefile deleted file mode 100644 index fef355d..0000000 --- a/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -all: - emacs --script make.el diff --git a/flake.nix b/flake.nix index 8d4b229..c8bbb1e 100644 --- a/flake.nix +++ b/flake.nix @@ -15,13 +15,9 @@ let supportedSystems = [ "x86_64-linux" "i686-linux" "aarch64-linux" ]; forAllSystems = f: nixpkgs.lib.genAttrs supportedSystems (system: f system); - - in - { - - website = pkgs: - pkgs.stdenv.mkDerivation { - name = "magic_rb-website"; + site = pkgs: which: + pkgs.stdenv.mkDerivation { + name = which; version = "0.1"; src = ./.; nativeBuildInputs = [ pkgs.emacs ]; @@ -30,7 +26,7 @@ cp ${org-thtml}/ox-thtml.el ./ox-thtml.el cp ${emacs-htmlize}/htmlize.el ./htmlize.el mkdir tmp && export HOME=$(pwd)/tmp - emacs --script ./make.el + emacs --script ./make.el -- ${which} find public_html -name 'sitemap.*' -exec rm {} \; ''; @@ -40,12 +36,36 @@ cp -r public_html/* $out ''; }; - - defaultPackage = forAllSystems (system: + in + { + redalder = forAllSystems (system: let pkgs = import nixpkgs { inherit system; }; in - self.website pkgs + site pkgs "redalder.org" + ); + + nixng = forAllSystems (system: + let + pkgs = import nixpkgs { inherit system; }; + in + site pkgs "nixng.org" + ); + + website = forAllSystems (system: + let + pkgs = import nixpkgs { inherit system; }; + in + pkgs.runCommandNoCC "website" {} + '' + mkdir -p $out/ + ln -s ${self.redalder.${system}} $out/redalder + ln -s ${self.nixng.${system}} $out/nixng + '' + ); + + defaultPackage = forAllSystems (system: + self.website.${system} ); }; } diff --git a/make.el b/make.el index 8ef1079..38769b7 100644 --- a/make.el +++ b/make.el @@ -30,11 +30,39 @@ ;; org-html-htmlize-output-type 'inline-css ) +(defvar magic_rb/asset-include + "\\(ttf\\|svg\\|jpg\\|gif\\|png\\|css\\|js\\|el\\|nb\\|ipynb\\|pdf\\|xml\\)") + +(defun magic_rb/source-with-name (name symbol property) + "" + (string-trim + (org-element-property + property + (car (let ((path buffer-file-name)) + (with-temp-buffer + (insert-file-contents path) + (org-element-map (org-element-parse-buffer) symbol + (lambda (object) + (let ((block-name (org-element-property :name object))) + (if (string-equal block-name name) + object + nil)))))))))) + +;; (org-element-map (org-element-parse-buffer) 'paragraph +;; (lambda (paragraph) +;; (let ((parent (org-element-property :parent paragraph))) +;; (and (eq (org-element-type parent) 'section) +;; (let ((first-child (car (org-element-contents parent)))) +;; (eq first-child paragraph)) +;; ;; Return value. +;; paragraph)))) + + (defvar org-publish-project-alist) (setq org-publish-project-alist `( ;; Blog - ("blog-content" + ("redalder-blog-content" :base-directory ,(expand-file-name "./blog/") :base-extension "org" :publishing-directory ,(expand-file-name "./public_html/blog") @@ -53,7 +81,7 @@ :sitemap-title "Magic_RB's blog" :sitemap-filename "sitemap.inc" :sitemap-sort-files anti-chronologically) - ("blog-index" + ("redalder-blog-index" :base-directory ,(expand-file-name "./blog/") :root-directory ,(expand-file-name "./blog/") :recursive t @@ -66,12 +94,12 @@ :with-date nil :html-template ,(templated-html-load-template "./templates/blog-index.html") :publishing-function org-html-publish-to-templated-html) - ("blog" - :components ("blog-content" "blog-index")) + ("redalder-blog" + :components ("redalder-blog-content" "redalder-blog-index")) ;; Homepage - ("homepage" + ("redalder-homepage" :base-directory ,(expand-file-name "./home") :recursive nil :base-extension "org" @@ -84,7 +112,7 @@ ;; Contact - ("contact" + ("redalder-contact" :base-directory ,(expand-file-name "./home") :recursive nil :base-extension "org" @@ -96,7 +124,7 @@ :publishing-function org-html-publish-to-templated-html) ;; Links - ("links" + ("redalder-links" :base-directory ,(expand-file-name "./home") :recursive nil :base-extension "org" @@ -107,19 +135,46 @@ :html-template ,(templated-html-load-template "./templates/empty.html") :publishing-function org-html-publish-to-templated-html) - ;; Static images and css and js - ("assets" + ;; Static images and css and js for redalder.org + ("redalder-assets" :base-directory ,(expand-file-name "./assets/") :publishing-directory ,(expand-file-name "./public_html/") :recursive t - :base-extension "\\(ttf\\|svg\\|jpg\\|gif\\|png\\|css\\|js\\|el\\|nb\\|ipynb\\|pdf\\|xml\\)" + :base-extension ,magic_rb/asset-include + :publishing-function org-publish-attachment) + + + ("nixng-examples" + :base-directory ,(expand-file-name "./nixng/examples/") + :base-extension "org" + :publishing-directory ,(expand-file-name "./public_html/") + :html-template ,(templated-html-load-template "./templates/example.html") + :publishing-function org-html-publish-to-templated-html) + + ;; Static images and css and js for nixng.org + ("nixng-assets" + :base-directory ,(expand-file-name "./assets/") + :publishing-directory ,(expand-file-name "./public_html/") + :recursive t + :base-extension ,magic_rb/asset-include :publishing-function org-publish-attachment) ;; top-level trigger - ("publish" - :components ("blog" "assets" "homepage" "contact" "links")))) + ("redalder-publish" + :components ("redalder-blog" + "redalder-assets" + "redalder-homepage" + "redalder-contact" + "redalder-links")) -(org-publish "publish" t) + ("nixng-publish" + :components ("nixng-assets" + "nixng-examples")))) + +(cond ((member "redalder.org" command-line-args-left) + (org-publish "redalder-publish" t)) + ((member "nixng.org" command-line-args-left) + (org-publish "nixng-publish"))) (provide 'make) ;;; make.el ends here diff --git a/nixng/examples/apache.org b/nixng/examples/apache.org new file mode 100644 index 0000000..f5ff7dd --- /dev/null +++ b/nixng/examples/apache.org @@ -0,0 +1,102 @@ +#+NAME: example +#+BEGIN_SRC nix :exports none +nglib: +(nglib "x86_64-linux").makeSystem { + system = "x86_64-linux"; + name = "nixng-apache"; + config = ({ pkgs, config, ... }: + let + ids = config.ids; + in + { + config = { + dumb-init = { + enable = true; + type.services = {}; + }; + init.services.apache2 = { + shutdownOnExit = true; + ensureSomething.link."documentRoot" = { + src = "${pkgs.apacheHttpd}/htdocs"; + dst = "/var/www"; + }; + }; + services.apache2 = { + enable = true; + envsubst = true; + configuration = [ + { + LoadModule = [ + [ "mpm_event_module" "modules/mod_mpm_event.so" ] + [ "log_config_module" "modules/mod_log_config.so" ] + [ "unixd_module" "modules/mod_unixd.so" ] + [ "authz_core_module" "modules/mod_authz_core.so" ] + [ "dir_module" "modules/mod_dir.so" ] + [ "mime_module" "modules/mod_mime.so" ] + ]; + } + { + Listen = "0.0.0.0:80"; + + ServerRoot = "/var/www"; + ServerName = "blowhole"; + PidFile = "/httpd.pid"; + + DocumentRoot = "/var/www"; + + User = "www-data"; + Group = "www-data"; + } + + { + ErrorLog = "/dev/stderr"; + TransferLog = "/dev/stdout"; + + LogLevel = "info"; + } + + { + AddType = [ + [ "image/svg+xml" "svg" "svgz" ] + ]; + AddEncoding = [ "gzip" "svgz" ]; + + TypesConfig = "${pkgs.apacheHttpd}/conf/mime.types"; + } + + { + Directory = { + "/" = { + Require = [ "all" "denied" ]; + Options = "SymlinksIfOwnerMatch"; + }; + }; + + VirtualHost = { + "*:80" = { + Directory = { + "/var/www" = { + Require = [ "all" "granted" ]; + Options = [ "-Indexes" "+FollowSymlinks" ]; + DirectoryIndex = "\${DIRECTORY_INDEX:-index.html}"; + }; + }; + }; + }; + } + ]; + }; + }; + }); +} +#+END_SRC + +#+NAME: command-docker +#+BEGIN_SRC fundamental + nix run git+https://gitea.redalder.org/Magic_RB/NixNG?rev=d5146db73cfd31712950608560a387ad71243cee#nginxSystem.config.system.build.ociImage.stream && ./result | docker load +#+END_SRC + +#+NAME: command-podman +#+BEGIN_SRC fundamental + nix run git+https://gitea.redalder.org/Magic_RB/NixNG?rev=d5146db73cfd31712950608560a387ad71243cee#nginxSystem.config.system.build.ociImage.stream && ./result | podman load +#+END_SRC diff --git a/templates/example.html b/templates/example.html new file mode 100644 index 0000000..a70bc1d --- /dev/null +++ b/templates/example.html @@ -0,0 +1,26 @@ + + + {{:include "head.html"}} +
+ {{:include "navbar.html"}} ++{{magic_rb/source-with-name "example" 'src-block :value}} ++ +
+{{magic_rb/source-with-name "command-docker" 'src-block :value}} ++ +
+{{magic_rb/source-with-name "command-podman" 'src-block :value}} ++