{ briefcase, pkgs, ... }: let inherit (builtins) fetchGit path toJSON; inherit (briefcase.emacs) initEl runScript; elispLintSrc = fetchGit { url = "https://github.com/gonewest818/elisp-lint"; rev = "2b645266be8010a6a49c6d0ebf6a3ad5bd290ff4"; }; pipeline.steps = [ { key = "lint-secrets"; command = "${pkgs.git-secrets}/bin/git-secrets --scan-history"; label = ":broom: lint secrets"; } { key = "build-briefcase"; command = '' nix-build . -I briefcase="$(pwd)" --no-out-link --show-trace ''; label = ":nix: build briefcase"; depends_on = "lint-secrets"; } { key = "init-emacs"; command = let scriptEl = path { path = ./script.el; name = "script.el"; }; runScriptEl = runScript { script = scriptEl; briefcasePath = "$(pwd)"; }; in "${runScriptEl} ${initEl}"; label = ":gnu: initialize Emacs"; depends_on = "build-briefcase"; } { key = "lint-emacs"; command = let nixosEmacs = briefcase.emacs.nixos { briefcasePath = "$(pwd)"; }; in '' ${nixosEmacs}/bin/wpcarros-emacs \ --quick \ --batch \ --load ${elispLintSrc}/elisp-lint.el \ --funcall elisp-lint-files-batch \ "$$@" ''; label = ":gnu: lint Emacs"; depends_on = "init-emacs"; } { key = "build-socrates"; command = '' nix-build '' \ -I briefcase="$(pwd)" \ -I nixpkgs=/var/lib/buildkite-agent-socrates/nixpkgs-channels \ -I nixos-config=nixos/socrates/default.nix \ -A system \ --no-out-link \ --show-trace ''; label = ":nix: build socrates"; depends_on = "build-briefcase"; } ]; in pkgs.writeText "pipeline.yaml" (toJSON pipeline)