aboutsummaryrefslogtreecommitdiff
path: root/nix/flake
diff options
context:
space:
mode:
authorFranck Cuny <franck@fcuny.net>2024-02-23 08:49:10 -0800
committerFranck Cuny <franck@fcuny.net>2024-03-04 08:36:45 -0800
commit0b7a643ec291d8bda1f91db3cc1e436d317e6e1e (patch)
treeb221fcf66319c87ff5173281e52e4b74ed1bba70 /nix/flake
parentchore: update flake (diff)
downloadinfra-0b7a643ec291d8bda1f91db3cc1e436d317e6e1e.tar.gz
nix libraries and modules will be under `nix/`
Diffstat (limited to 'nix/flake')
-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;
+ };
+ }
+ ];
+}