about summary refs log tree commit diff
path: root/nix
diff options
context:
space:
mode:
Diffstat (limited to 'nix')
-rw-r--r--nix/flake/devshell.nix101
-rw-r--r--nix/flake/hosts.nix30
2 files changed, 131 insertions, 0 deletions
diff --git a/nix/flake/devshell.nix b/nix/flake/devshell.nix
new file mode 100644
index 0000000..79bb2f9
--- /dev/null
+++ b/nix/flake/devshell.nix
@@ -0,0 +1,101 @@
+{ inputs, ... }: {
+  imports = [
+    inputs.devshell.flakeModule
+    inputs.treefmt-nix.flakeModule
+    inputs.pre-commit-hooks.flakeModule
+  ];
+
+  perSystem =
+    { config
+    , pkgs
+    , ...
+    }: {
+      devshells.default = {
+        name = "world";
+
+        packages = with pkgs; [
+          (config.treefmt.build.wrapper)
+
+          python3
+
+          go_1_21
+          gopls
+          golangci-lint
+          goreleaser
+        ];
+
+        devshell.startup = {
+          pre-commit.text = config.pre-commit.installationScript;
+        };
+
+        commands = [
+          { package = config.treefmt.build.wrapper; }
+          {
+            name = "environment";
+            help = "Print various information from CI";
+            category = "CI";
+            command = "make build-environment";
+          }
+          {
+            name = "update";
+            help = "Update + Commit the Lock File";
+            command = "nix flake update --commit-lock-file";
+            category = "nix";
+          }
+          {
+            name = "build-darwin";
+            category = "darwin";
+            help = "Build the current darwin configuration";
+            command = "darwin-rebuild build --flake .#";
+          }
+          {
+            name = "switch-darwin";
+            category = "darwin";
+            help = "Switch to the current darwin configuration";
+            command = "darwin-rebuild switch --flake .#";
+          }
+          {
+            name = "build-commands";
+            category = "cmd";
+            help = "Build all the commands";
+            command = "make build-binaries";
+          }
+          {
+            name = "clean";
+            category = "cmd";
+            help = "Delete all the artifacts in bin/";
+            command = "make clean";
+          }
+        ];
+      };
+
+      treefmt = {
+        projectRootFile = ".git/config";
+
+        # list of supported programs
+        # https://github.com/numtide/treefmt-nix
+        programs = {
+          gofmt.enable = true;
+          gofumpt.enable = true;
+          nixpkgs-fmt.enable = true;
+          shellcheck.enable = true;
+          shfmt.enable = true;
+          taplo.enable = true;
+          # I don't understand why this is causing issues in CI. When
+          # I run `nix flake check` locally I don't get any issues but
+          # CI is failing with errors in some of the workflows.
+          # Commenting this until I have a proper solution
+          # yamlfmt.enable = true;
+        };
+      };
+
+      pre-commit = {
+        settings = {
+          hooks = {
+            deadnix.enable = true;
+            treefmt.enable = true;
+          };
+        };
+      };
+    };
+}
diff --git a/nix/flake/hosts.nix b/nix/flake/hosts.nix
new file mode 100644
index 0000000..e3d1fff
--- /dev/null
+++ b/nix/flake/hosts.nix
@@ -0,0 +1,30 @@
+{ inputs, ... }:
+let
+  inherit (inputs) nixpkgs darwin home-manager firefox-darwin nur;
+  inherit (nixpkgs.lib) mkMerge;
+
+  mkDarwinConfig = system: path:
+    darwin.lib.darwinSystem {
+      inherit system;
+      modules = [
+        home-manager.darwinModule
+        path
+        {
+          nixpkgs.overlays = [
+            firefox-darwin.overlay
+            nur.overlay
+          ];
+        }
+      ];
+      specialArgs = { inherit inputs; };
+    };
+in
+{
+  flake = mkMerge [
+    {
+      darwinConfigurations = {
+        mba-fcuny = mkDarwinConfig "aarch64-darwin" ../../hosts/mba;
+      };
+    }
+  ];
+}