about summary refs log tree commit diff stats
path: root/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix61
1 files changed, 61 insertions, 0 deletions
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..34f4360
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,61 @@
+{
+  description = "My website, alanpearce.eu";
+  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
+  inputs.utils.url = "github:numtide/flake-utils";
+  inputs.flake-compat = {
+    url = "github:edolstra/flake-compat";
+    flake = false;
+  };
+  inputs.pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix";
+
+  outputs = { self, nixpkgs, utils, pre-commit-hooks, ... }:
+    utils.lib.eachDefaultSystem
+      (system:
+        let
+          pkgs = import nixpkgs {
+            inherit system;
+          };
+          commonShellPackages = with pkgs; [
+            go
+            templ
+            hyperlink
+            just
+            ko
+            flyctl
+          ];
+          devPackages = with pkgs; [
+            gopls
+            gotools
+
+            systemfd
+            just
+            modd
+          ];
+        in
+        {
+          devShells = {
+            ci = pkgs.mkShell {
+              packages = commonShellPackages;
+            };
+            default = pkgs.mkShell {
+              inherit (self.checks.${system}.pre-commit-check) shellHook;
+              packages = devPackages ++ commonShellPackages;
+            };
+          };
+          checks = {
+            pre-commit-check = pre-commit-hooks.lib.${system}.run {
+              src = ./.;
+              hooks = {
+                go-mod-tidy = {
+                  enable = true;
+                  name = "go-mod-tidy";
+                  description = "Run `go mod tidy`";
+                  types_or = [ "go" "go-mod" ];
+                  entry = "${pkgs.go}/bin/go mod tidy";
+                  pass_filenames = false;
+                };
+              };
+            };
+          };
+        });
+}