blob: c0b512365b38d6aaac044c42beb8c2a4a58415e9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
{
description = "Build my static site";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
git-hooks = {
url = "github:cachix/git-hooks.nix";
inputs.nixpkgs.follows = "nixpkgs";
};
hyprnixmacs.url = "git+file:./nix";
};
outputs = { nixpkgs, git-hooks, hyprnixmacs, self, ... }:
let
system = "x86_64-linux";
pkgs = import nixpkgs { inherit system; };
pre-commit-check = git-hooks.lib.${system}.run {
src = ./.;
hooks = {
deadnix.enable = true;
prevent-direct-main-commits = {
enable = true;
name = "Prevent direct commits to main";
description = "Blocks commits to main unless they are merge commits";
pass_filenames = false;
entry = "${pkgs.writeShellScript "block-main-commits" ''
BRANCH=$(git branch --show-current)
GIT_DIR=$(git rev-parse --git-dir)
if [ "$BRANCH" = "main" ] && [ ! -f "$GIT_DIR/MERGE_HEAD" ]; then
echo "Direct commits to 'main' are blocked."
echo "Please commit to a feature branch and merge it into main."
exit 1
fi
''}";
};
};
};
emacsPackages = import ./nix/modules/home/emacs-packages.nix;
ci-emacs = pkgs.emacs-nox.pkgs.withPackages emacsPackages;
website = pkgs.stdenv.mkDerivation {
name = "org-publish-website";
src = pkgs.lib.cleanSource ./.;
buildInputs = [ ci-emacs ];
buildPhase = ''
mkdir -p public
emacs -Q --batch \
--eval '(setq system-email "ci@dummy.local")' \
--eval '(setq system-username "ci-runner")' \
--eval '(setq system-fullname "CI Pipeline")' \
--eval '(setq system-gpgkey "00000000")' \
-l ./nix/init.el \
--eval '(org-publish-all t)'
'';
installPhase = ''
mkdir -p $out
cp -r public/* $out/
'';
};
in
{
nixosConfigurations.installer = hyprnixmacs.nixosConfigurations.installer.extendModules {
specialArgs = { monorepoSelf = self; };
};
checks."${system}" = {
build-website = website;
};
packages."${system}" = {
default = website;
installer = self.nixosConfigurations.installer.config.system.build.isoImage;
};
devShells."${system}".default = with pkgs; mkShell {
inherit (pre-commit-check) shellHook;
buildInputs = [
deadnix
];
};
};
}
|