dotfiles
1{
2 description = "nix-darwin system flake";
3
4 inputs = {
5 nixpkgs-2511.url = "github:NixOS/nixpkgs/nixpkgs-25.11-darwin";
6 nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-26.05-darwin";
7 nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
8
9 nix-darwin.url = "github:nix-darwin/nix-darwin/nix-darwin-26.05";
10 nix-darwin.inputs.nixpkgs.follows = "nixpkgs";
11 };
12
13 outputs = inputs@{
14 self,
15 nix-darwin,
16 nixpkgs-2511,
17 nixpkgs,
18 nixpkgs-unstable
19 }:
20 let
21 system = "aarch64-darwin";
22 pkgs = import nixpkgs {
23 inherit system;
24 config.allowUnfree = true;
25 overlays = [
26 (import ./overlays/jpm.nix)
27 (import ./overlays/bleve.nix)
28 (final: prev: {
29 kotlin-lsp = final.callPackage ./overlays/kotlin-lsp.nix {};
30 })
31 ];
32 };
33 pkgs-unstable = nixpkgs-unstable.legacyPackages.${system};
34 pkgs-2511 = nixpkgs-2511.legacyPackages.${system};
35 in
36 {
37 # Build darwin flake using:
38 # $ sudo darwin-rebuild build --flake ~/.config/nix
39 # $ sudo darwin-rebuild switch --flake ~/.config/nix
40 darwinConfigurations."boltless-MacBook-Air" = nix-darwin.lib.darwinSystem {
41 modules = [
42 ./darwin.nix
43 ];
44 specialArgs = {
45 inherit self pkgs-unstable;
46 };
47 };
48 darwinConfigurations."boltless-Studio" = nix-darwin.lib.darwinSystem {
49 modules = [
50 ./darwin.nix
51 # ({ lib, ... }: {
52 # nix.linux-builder.maxJobs = 6;
53 # nix.linux-builder.config.virtualisation.cores = 8;
54 # })
55 ];
56 specialArgs = {
57 inherit self pkgs-unstable;
58 };
59 };
60 # based on https://zaynetro.com/post/2024-you-dont-need-home-manager-nix
61 # $ nix profile install .
62 # $ nix profile upgrade nix
63 packages.${system}.default = pkgs.buildEnv {
64 name = "my-env";
65 paths = [
66 pkgs.bacon
67 pkgs.bleve-cli
68 pkgs.btop
69 pkgs.difftastic
70 pkgs-unstable.direnv
71 pkgs.dust
72 pkgs.eza
73 pkgs.fd
74 pkgs.fzf
75 pkgs.gh
76 pkgs.git
77 pkgs.go
78 pkgs.gopls
79 pkgs.hello
80 pkgs.janet
81 pkgs.yarn
82 pkgs.jpm
83 # pkgs.kotlin-lsp
84 pkgs.ktfmt
85 pkgs.meld
86 pkgs.mprocs
87 pkgs.nil
88 pkgs.nixfmt
89 pkgs.nodejs_26
90 pkgs.pandoc
91 pkgs.qmk
92 pkgs.ripgrep
93 pkgs.stack
94 pkgs.lua-language-server
95 pkgs.tmux
96 pkgs.tree
97 pkgs.typescript-language-server
98 pkgs.typst
99 pkgs.unixtools.watch
100 pkgs.vim
101 pkgs.pnpm
102 pkgs.worktrunk
103 pkgs.zellij
104 pkgs.llvmPackages.clang-tools
105 pkgs-unstable.jujutsu
106 pkgs-2511.neovim
107 (pkgs-unstable.lua5_1.withPackages (ps: with ps; [luarocks]))
108 (pkgs.buildEnv {
109 name = "mailing";
110 paths = [
111 pkgs.neomutt
112 # pkgs.mutt-wizard
113 # pkgs.isync
114 # pkgs.msmtp
115 # pkgs.pass
116 # pkgs.cacert
117 # pkgs.gettext
118 ];
119 })
120 ] ++ (if pkgs.stdenv.isDarwin then [
121 # TODO: automate this with nix:
122 # $ ln -sfn ~/.nix-profile/Applications ~/Applications/Nix\ User\ Apps
123 pkgs.anki-bin
124 pkgs.iina
125 pkgs.imagemagick
126 pkgs.macmon
127 pkgs-unstable.docker
128 ] else []);
129 };
130 # This can be just `imports = [ ./templates/templates.nix ]` when using flake-parts
131 templates = ((import ./templates/templates.nix) { inherit inputs; }).flake.templates;
132 };
133}
134# vim: et:ts=2