{ description = "nix-darwin system flake"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-25.05-darwin"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; nix-darwin.url = "github:nix-darwin/nix-darwin/nix-darwin-25.05"; nix-darwin.inputs.nixpkgs.follows = "nixpkgs"; }; outputs = inputs@{ self, nix-darwin, nixpkgs, nixpkgs-unstable }: let system = "aarch64-darwin"; pkgs = import nixpkgs { inherit system; config.allowUnfree = true; overlays = [ (import ./overlays/jpm.nix) (import ./overlays/bleve.nix) (final: prev: { kotlin-lsp = final.callPackage ./overlays/kotlin-lsp.nix {}; }) ]; }; pkgs-unstable = nixpkgs-unstable.legacyPackages.${system}; in { # Build darwin flake using: # $ darwin-rebuild build --flake ~/.config/nix # $ darwin-rebuild switch --flake ~/.config/nix darwinConfigurations."boltless-MacBook-Air" = nix-darwin.lib.darwinSystem { modules = [ ./darwin.nix ]; specialArgs = { inherit self pkgs-unstable; }; }; darwinConfigurations."boltless-Studio" = nix-darwin.lib.darwinSystem { modules = [ ./darwin.nix ]; specialArgs = { inherit self pkgs-unstable; }; }; # based on https://zaynetro.com/post/2024-you-dont-need-home-manager-nix # $ nix profile install . # $ nix profile upgrade nix packages.${system}.default = pkgs.buildEnv { name = "my-env"; paths = [ pkgs.bacon pkgs.bleve-cli pkgs.btop pkgs.difftastic pkgs.direnv pkgs.dust pkgs.eza pkgs.fd pkgs.fzf pkgs.gh pkgs.git pkgs.go pkgs.gopls pkgs.hello pkgs.janet pkgs.yarn pkgs.jpm pkgs.kotlin-lsp pkgs.ktfmt pkgs.meld pkgs.mprocs pkgs.nil pkgs.nixfmt-classic pkgs.nodejs_24 pkgs.pandoc pkgs.qmk pkgs.ripgrep pkgs.stack pkgs.sumneko-lua-language-server pkgs.tmux pkgs.tree pkgs.typescript-language-server pkgs.typst pkgs.unixtools.watch pkgs.vim pkgs.zellij pkgs-unstable.jujutsu pkgs-unstable.neovim (pkgs-unstable.lua5_1.withPackages (ps: with ps; [luarocks])) (pkgs.buildEnv { name = "mailing"; paths = [ pkgs.neomutt # pkgs.mutt-wizard # pkgs.isync # pkgs.msmtp # pkgs.pass # pkgs.cacert # pkgs.gettext ]; }) ] ++ (if pkgs.stdenv.isDarwin then [ # TODO: automate this with nix: # $ ln -sfn ~/.nix-profile/Applications ~/Applications/Nix\ User\ Apps pkgs.anki-bin pkgs.brave pkgs.iina pkgs.macmon pkgs.docker pkgs.slack ] else []); }; # This can be just `imports = [ ./templates/templates.nix ]` when using flake-parts templates = ((import ./templates/templates.nix) { inherit inputs; }).flake.templates; }; } # vim: et:ts=2