{ description = "personal NixOS configurations"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; home-manager = { url = "github:nix-community/home-manager/release-24.11"; inputs.nixpkgs.follows = "nixpkgs"; }; darwin = { url = "github:lnl7/nix-darwin"; inputs.nixpkgs.follows = "nixpkgs"; }; treefmt-nix = { url = "github:numtide/treefmt-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; flake-utils.url = "github:numtide/flake-utils"; pre-commit-hooks = { url = "github:cachix/pre-commit-hooks.nix"; inputs.nixpkgs.follows = "nixpkgs"; }; devshell.url = "github:numtide/devshell"; devshell.inputs.nixpkgs.follows = "nixpkgs"; }; # Output config, or config for NixOS system outputs = { self , nixpkgs , darwin , flake-utils , pre-commit-hooks , devshell , ... }@inputs: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; overlays = [ devshell.overlays.default ]; }; mkSystem = import ./nix/lib/mkSystem.nix { inherit nixpkgs inputs; }; in { checks = { pre-commit-check = pre-commit-hooks.lib.${system}.run { src = ./.; hooks = { nixpkgs-fmt.enable = true; check-merge-conflicts.enable = true; end-of-file-fixer.enable = true; }; }; }; devShells.default = pkgs.devshell.mkShell { packages = with pkgs; [ just ]; env = [{ name = "DEVSHELL_NO_MOTD"; value = "1"; }]; }; # a VM running on the MacBook Air nixosConfigurations.vm-aarch64 = mkSystem "vm-aarch64" { system = "aarch64-linux"; user = "fcuny"; }; # a VM running on the synology DS923+ nixosConfigurations.vm-synology = mkSystem "vm-synology" { system = "x86_64-linux"; user = "fcuny"; }; # my personal MacBook Air darwinConfigurations.macbook-air-m2 = mkSystem "macbook-air-m2" { system = "aarch64-darwin"; user = "fcuny"; darwin = true; }; # my work MacBook Pro darwinConfigurations.macbook-pro-intel = mkSystem "macbook-pro-intel" { system = "x86_64-darwin"; user = "fcuny"; darwin = true; }; }); }