From 0b7a643ec291d8bda1f91db3cc1e436d317e6e1e Mon Sep 17 00:00:00 2001 From: Franck Cuny Date: Fri, 23 Feb 2024 08:49:10 -0800 Subject: nix libraries and modules will be under `nix/` --- nix/flake/devshell.nix | 101 +++++++++++++++++++++++++++++++++++++++++++++++++ nix/flake/hosts.nix | 30 +++++++++++++++ 2 files changed, 131 insertions(+) create mode 100644 nix/flake/devshell.nix create mode 100644 nix/flake/hosts.nix (limited to 'nix/flake') 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; + }; + } + ]; +} -- cgit 1.4.1