aboutsummaryrefslogtreecommitdiff
path: root/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix77
1 files changed, 59 insertions, 18 deletions
diff --git a/flake.nix b/flake.nix
index 036644d..7d5a5fe 100644
--- a/flake.nix
+++ b/flake.nix
@@ -5,6 +5,8 @@
nixpkgs.url = "github:nixos/nixpkgs/master";
flake-utils.url = "github:numtide/flake-utils";
pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix";
+ devshell.url = "github:numtide/devshell";
+ treefmt-nix.url = "github:numtide/treefmt-nix";
};
outputs =
@@ -13,19 +15,40 @@
nixpkgs,
flake-utils,
pre-commit-hooks,
+ devshell,
+ treefmt-nix,
}:
flake-utils.lib.eachDefaultSystem (
system:
let
- pkgs = nixpkgs.legacyPackages.${system};
+ pkgs = import nixpkgs {
+ inherit system;
+ overlays = [
+ devshell.overlays.default
+ ];
+ };
+
+ treefmt = (
+ treefmt-nix.lib.mkWrapper pkgs {
+ projectRootFile = "flake.nix";
+ programs = {
+ actionlint.enable = true;
+ deadnix.enable = true;
+ jsonfmt.enable = true;
+ just.enable = true;
+ nixfmt.enable = true;
+ prettier.enable = true;
+ taplo.enable = true;
+ typos.enable = true;
+ };
+ settings.formatter.typos.excludes = [
+ "*.jpeg"
+ "*.jpg"
+ ];
+ }
+ );
in
{
- apps = {
- default = {
- type = "app";
- program = "${self.packages."${system}".zola}/bin/zola";
- };
- };
packages = {
default =
@@ -42,13 +65,14 @@
buildPhase = ''
mkdir -p $out
${pkgs.zola}/bin/zola build -o $out -f
- ${pkgs.pandoc}/bin/pandoc --self-contained --css static/css/resume.css \
+ ${pkgs.pandoc}/bin/pandoc --self-contained --css static/css/resume.css \
--from markdown --to html --output $out/resume.html resume/resume.md
- ${pkgs.pandoc}/bin/pandoc --self-contained --css static/css/resume.css \
+ ${pkgs.pandoc}/bin/pandoc --self-contained --css static/css/resume.css \
--from markdown --to pdf --output $out/resume.pdf resume/resume.md
'';
dontInstall = true;
};
+
zola = pkgs.writeShellScriptBin "zola" ''
set -euo pipefail
export PATH=${
@@ -61,13 +85,26 @@
'';
};
+ apps = {
+ default = {
+ type = "app";
+ program = "${self.packages."${system}".zola}/bin/zola";
+ };
+ check-links = pkgs.writeShellScriptBin "check-links" ''
+ ${pkgs.lychee}/bin/lychee --quiet --no-progress --base="${self.packages.default}/public" "${self.packages.default}/public"
+ '';
+
+ };
+ formatter = treefmt;
+
checks = {
pre-commit-check = pre-commit-hooks.lib.${system}.run {
src = ./.;
hooks = {
- nixfmt-rfc-style.enable = true;
- check-toml.enable = true;
- check-yaml.enable = true;
+ treefmt = {
+ enable = true;
+ excludes = [ ".*" ];
+ };
check-merge-conflicts.enable = true;
end-of-file-fixer.enable = true;
actionlint.enable = true;
@@ -75,9 +112,9 @@
};
};
- devShells.default = pkgs.mkShell {
- inherit (self.checks.${system}.pre-commit-check) shellHook;
- buildInputs = with pkgs; [
+ devShells.default = pkgs.devshell.mkShell {
+ name = "python-scripts";
+ packages = with pkgs; [
zola
git
treefmt
@@ -85,11 +122,15 @@
just
taplo
nodePackages.prettier
- awscli
- imagemagick
- exiftool
treefmt
];
+ devshell.startup.pre-commit.text = self.checks.${system}.pre-commit-check.shellHook;
+ env = [
+ {
+ name = "DEVSHELL_NO_MOTD";
+ value = "1";
+ }
+ ];
};
}
);