Personal Nix setup
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/v1.0.0";
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 nvim-plugins = {
50 url = "github:kitten/system-nvim-plugins.nix";
51 inputs = {
52 nixpkgs.follows = "nixpkgs";
53 flake-utils.follows = "flake-utils";
54 };
55 };
56
57 yeetmouse = {
58 url = "github:AndyFilter/yeetmouse?dir=nix";
59 inputs.nixpkgs.follows = "nixpkgs";
60 };
61
62 android-sdk = {
63 url = "github:tadfisher/android-nixpkgs/stable";
64 inputs = {
65 nixpkgs.follows = "nixpkgs";
66 flake-utils.follows = "flake-utils";
67 };
68 };
69
70 zen-browser = {
71 url = "github:0xc000022070/zen-browser-flake";
72 inputs = {
73 nixpkgs.follows = "nixpkgs";
74 home-manager.follows = "home-manager";
75 };
76 };
77
78 tangled = {
79 url = "git+https://tangled.org/@tangled.org/core?ref=v1.13.0-alpha";
80 inputs.nixpkgs.follows = "nixpkgs";
81 };
82 };
83
84 outputs = inputs @ { self, ... }: let
85 inherit (inputs.nixpkgs) lib;
86 inherit (import ./lib/system.nix inputs) mkSystem;
87 eachSystem = lib.genAttrs ["aarch64-darwin" "aarch64-linux" "x86_64-darwin" "x86_64-linux"];
88 overlays = [
89 self.overlays.default
90 self.overlays.lix
91 inputs.nvim-plugins.overlays.default
92 inputs.android-sdk.overlays.default
93 inputs.language-servers.overlays.default
94 (self: super: {
95 zen-browser = inputs.zen-browser.packages.${self.system}.beta;
96 })
97 ];
98 in {
99 darwinConfigurations."sprite" = mkSystem {
100 inherit overlays;
101 system = "aarch64-darwin";
102 hostname = "sprite";
103 };
104
105 darwinConfigurations."fanta" = mkSystem {
106 inherit overlays;
107 system = "aarch64-darwin";
108 hostname = "fanta";
109 };
110
111 darwinConfigurations."irnbru" = mkSystem {
112 inherit overlays;
113 system = "aarch64-darwin";
114 hostname = "irnbru";
115 };
116
117 darwinConfigurations."sodacream" = mkSystem {
118 inherit overlays;
119 system = "aarch64-darwin";
120 hostname = "sodacream";
121 };
122
123 nixosConfigurations."pepper" = mkSystem {
124 inherit overlays;
125 system = "x86_64-linux";
126 hostname = "pepper";
127 };
128
129 nixosConfigurations."cola" = mkSystem {
130 inherit overlays;
131 system = "x86_64-linux";
132 hostname = "cola";
133 };
134
135 nixosConfigurations."ramune" = mkSystem {
136 inherit overlays;
137 system = "aarch64-linux";
138 hostname = "ramune";
139 };
140
141 overlays = {
142 default = import ./lib/pkgs;
143 lix = import ./lib/lix-overlay.nix;
144 };
145
146 packages = eachSystem (system: let
147 pkgs = import inputs.nixpkgs {
148 inherit system;
149 overlays = [ self.overlays.default self.overlays.lix ];
150 };
151 in {
152 inherit (inputs.agenix.packages.${system}) agenix;
153 inherit (inputs.darwin.packages.${system}) darwin-rebuild;
154 } // {
155 inherit (pkgs)
156 pinentry-touchid
157 steamworks-sdk-redist
158 systemd-transparent-udp-forwarderd
159 force-bind;
160 });
161
162 apps = eachSystem (system: import ./lib/apps {
163 inherit lib;
164 pkgs = inputs.nixpkgs.legacyPackages.${system};
165 });
166 };
167}