blob: b84749e92418585cc7e61de9d548a2da0e774094 (
plain) (
tree)
|
|
{
description = "personal NixOS configurations";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
nixpkgsUnstable.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager/release-24.11";
inputs.nixpkgs.follows = "nixpkgs";
};
darwin = {
url = "github:lnl7/nix-darwin/nix-darwin-24.11";
inputs.nixpkgs.follows = "nixpkgs";
};
treefmt-nix = {
url = "github:numtide/treefmt-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
pre-commit-hooks = {
url = "github:cachix/git-hooks.nix";
inputs.nixpkgs.follows = "nixpkgs";
};
};
# Output config, or config for NixOS system
outputs =
{
nixpkgs,
nixpkgsUnstable,
darwin,
treefmt-nix,
pre-commit-hooks,
...
}@inputs:
let
system = "aarch64-darwin";
pkgs = import nixpkgs { inherit system; };
pkgsUnstable = import nixpkgsUnstable { inherit system; };
# Define overlays here
overlays = [
(final: _prev: {
# Load all packages from the pkgs directory
customPackages = builtins.mapAttrs (
name: _:
final.callPackage (./pkgs + "/${name}") {
inherit pkgsUnstable;
}
) (builtins.readDir ./pkgs);
})
];
mkSystem = import ./nix/lib/mkSystem.nix {
inherit nixpkgs inputs overlays;
};
treefmtEval = treefmt-nix.lib.evalModule pkgs {
projectRootFile = "flake.nix";
programs = {
nixfmt.enable = true;
actionlint.enable = true;
deadnix.enable = true;
};
};
in
{
# nix fmt
formatter.${system} = treefmtEval.config.build.wrapper;
# nix flake check
checks.${system} = {
pre-commit-check = inputs.pre-commit-hooks.lib.${pkgs.system}.run {
src = ./.;
hooks = {
actionlint.enable = true;
check-merge-conflicts.enable = true;
deadnix.enable = true;
detect-private-keys.enable = true;
end-of-file-fixer.enable = true;
mixed-line-endings.enable = true;
shellcheck.enable = true;
treefmt = {
enable = true;
entry = "${treefmtEval.config.build.wrapper}/bin/treefmt --ci";
};
trim-trailing-whitespace.enable = true;
};
};
};
# my personal MacBook Air
darwinConfigurations.mba-m2 = mkSystem "mba-m2" {
system = "aarch64-darwin";
user = "fcuny";
darwin = true;
};
# work laptop
darwinConfigurations.hq-kwny2vh41p = mkSystem "hq-kwny2vh41p" {
system = "aarch64-darwin";
user = "fcuny";
darwin = true;
};
devShells.${system}.default = pkgs.mkShellNoCC {
packages = with pkgs; [
git
(writeScriptBin "nbuild" ''
set -e
echo "> Running darwin-rebuild build..."
${inputs.darwin.packages.${system}.darwin-rebuild}/bin/darwin-rebuild build --flake .
echo "> darwin-rebuild build was successful ✅"
echo "> macOS config was successfully applied 🚀"
'')
(writeScriptBin "nswitch" ''
set -e
echo "> Running darwin-rebuild switch..."
${inputs.darwin.packages.${system}.darwin-rebuild}/bin/darwin-rebuild switch --flake .
echo "> darwin-rebuild build was successful ✅"
echo "> macOS config was successfully applied 🚀"
'')
(writeScriptBin "update-deps" "nix flake update --commit-lock-file")
];
};
};
}
|