1{
2 nixConfig = {
3 experimental-features = [ "nix-command" "flakes" ];
4 };
5
6 inputs = {
7 nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
8 nixos-hardware.url = "github:NixOS/nixos-hardware/master";
9
10 apple-silicon = {
11 url = "github:nix-community/nixos-apple-silicon";
12 inputs.nixpkgs.follows = "nixpkgs";
13 };
14
15 lanzaboote = {
16 url = "github:nix-community/lanzaboote/v0.4.2";
17 inputs.nixpkgs.follows = "nixpkgs";
18 };
19
20 agenix = {
21 url = "github:ryantm/agenix";
22 inputs = {
23 darwin.follows = "darwin";
24 nixpkgs.follows = "nixpkgs";
25 home-manager.follows = "home-manager";
26 };
27 };
28
29 flake-utils.url = "github:numtide/flake-utils";
30
31 home-manager = {
32 url = "github:nix-community/home-manager";
33 inputs.nixpkgs.follows = "nixpkgs";
34 };
35
36 darwin = {
37 url = "github:lnl7/nix-darwin";
38 inputs.nixpkgs.follows = "nixpkgs";
39 };
40
41 language-servers = {
42 url = "github:kitten/language-servers.nix";
43 inputs = {
44 nixpkgs.follows = "nixpkgs";
45 flake-utils.follows = "flake-utils";
46 };
47 };
48
49 system-shell = {
50 url = "github:kitten/system-shell";
51 inputs = {
52 nixpkgs.follows = "nixpkgs";
53 flake-utils.follows = "flake-utils";
54 };
55 };
56
57 nvim-plugins = {
58 url = "github:kitten/system-nvim-plugins.nix";
59 inputs = {
60 nixpkgs.follows = "nixpkgs";
61 flake-utils.follows = "flake-utils";
62 };
63 };
64
65 yeetmouse = {
66 url = "github:AndyFilter/yeetmouse?dir=nix";
67 inputs.nixpkgs.follows = "nixpkgs";
68 };
69
70 android-sdk = {
71 url = "github:tadfisher/android-nixpkgs/stable";
72 inputs = {
73 nixpkgs.follows = "nixpkgs";
74 flake-utils.follows = "flake-utils";
75 };
76 };
77
78 zen-browser = {
79 url = "github:0xc000022070/zen-browser-flake";
80 inputs = {
81 nixpkgs.follows = "nixpkgs";
82 home-manager.follows = "home-manager";
83 };
84 };
85
86 tangled = {
87 url = "git+https://tangled.org/@tangled.org/core";
88 inputs.nixpkgs.follows = "nixpkgs";
89 };
90 };
91
92 outputs = inputs @ { self, ... }: let
93 inherit (inputs.nixpkgs) lib;
94 inherit (import ./lib/system.nix inputs) mkSystem;
95 eachSystem = lib.genAttrs ["aarch64-darwin" "aarch64-linux" "x86_64-darwin" "x86_64-linux"];
96 overlays = [
97 self.overlays.default
98 self.overlays.lix
99 inputs.nvim-plugins.overlays.default
100 inputs.android-sdk.overlays.default
101 inputs.language-servers.overlays.default
102 inputs.system-shell.overlays.default
103 (self: super: {
104 zen-browser = inputs.zen-browser.packages.${self.system}.beta;
105 })
106 ];
107 in {
108 darwinConfigurations."sprite" = mkSystem {
109 inherit overlays;
110 system = "aarch64-darwin";
111 hostname = "sprite";
112 };
113
114 darwinConfigurations."fanta" = mkSystem {
115 inherit overlays;
116 system = "aarch64-darwin";
117 hostname = "fanta";
118 };
119
120 darwinConfigurations."irnbru" = mkSystem {
121 inherit overlays;
122 system = "aarch64-darwin";
123 hostname = "irnbru";
124 };
125
126 darwinConfigurations."sodacream" = mkSystem {
127 inherit overlays;
128 system = "aarch64-darwin";
129 hostname = "sodacream";
130 };
131
132 nixosConfigurations."pepper" = mkSystem {
133 inherit overlays;
134 system = "x86_64-linux";
135 hostname = "pepper";
136 };
137
138 nixosConfigurations."cola" = mkSystem {
139 inherit overlays;
140 system = "x86_64-linux";
141 hostname = "cola";
142 };
143
144 nixosConfigurations."ramune" = mkSystem {
145 inherit overlays;
146 system = "aarch64-linux";
147 hostname = "ramune";
148 };
149
150 overlays = {
151 default = import ./lib/pkgs;
152 lix = import ./lib/lix-overlay.nix;
153 };
154
155 packages = eachSystem (system: let
156 pkgs = import inputs.nixpkgs {
157 inherit system;
158 overlays = [ self.overlays.default self.overlays.lix ];
159 };
160 in {
161 inherit (inputs.agenix.packages.${system}) agenix;
162 inherit (inputs.darwin.packages.${system}) darwin-rebuild;
163 } // {
164 inherit (pkgs)
165 pinentry-touchid
166 steamworks-sdk-redist
167 systemd-transparent-udp-forwarderd
168 force-bind;
169 });
170
171 apps = eachSystem (system: import ./lib/apps {
172 inherit lib;
173 pkgs = inputs.nixpkgs.legacyPackages.${system};
174 });
175 };
176}