my nixos/home-manager configuration
1{
2 inputs = {
3 nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-25.11";
4 nixpkgs-unstable.url = "github:nixos/nixpkgs?ref=master";
5
6 nixos-hardware.url = "github:nixos/nixos-hardware?ref=master";
7
8 home-manager = {
9 url = "github:nix-community/home-manager?ref=release-25.11";
10 inputs.nixpkgs.follows = "nixpkgs";
11 };
12
13 disko = {
14 url = "github:nix-community/disko";
15 inputs.nixpkgs.follows = "nixpkgs";
16 };
17
18 nur = {
19 url = "github:nix-community/nur";
20 inputs.nixpkgs.follows = "nixpkgs";
21 };
22
23 opnix = {
24 url = "github:brizzbuzz/opnix";
25 inputs.nixpkgs.follows = "nixpkgs";
26 };
27
28 zen-browser = {
29 url = "github:0xc000022070/zen-browser-flake";
30 inputs = {
31 nixpkgs.follows = "nixpkgs";
32 home-manager.follows = "home-manager";
33 };
34 };
35
36 betterfox = {
37 url = "github:yokoffing/Betterfox";
38 flake = false;
39 };
40
41 claude-code = {
42 url = "github:sadjow/claude-code-nix";
43 inputs.nixpkgs.follows = "nixpkgs";
44 };
45 };
46
47 outputs =
48 {
49 nixpkgs,
50 nixos-hardware,
51 home-manager,
52 disko,
53 nur,
54 opnix,
55 ...
56 }@inputs:
57 let
58 system = "x86_64-linux";
59 config = {
60 allowUnfree = true;
61 };
62 overlays = [
63 nur.overlays.default
64 inputs.claude-code.overlays.default
65 (final: prev: {
66 unstable = import inputs.nixpkgs-unstable {
67 inherit system;
68 inherit config;
69 };
70 })
71 (final: prev: import ./pkgs { pkgs = final; })
72 ];
73
74 pkgs = import nixpkgs {
75 inherit system;
76 inherit config;
77 inherit overlays;
78 };
79
80 user = rec {
81 name = "youn";
82 family = "melois";
83 fullName = "Youn Mélois";
84 email = "youn@melois.dev";
85 homeDirectory = "/home/${name}";
86 nixfilesDirectory = "${homeDirectory}/nixfiles";
87 configDirectory = "${nixfilesDirectory}/config";
88 homeManagerConfigDirectory = "${nixfilesDirectory}/home-manager";
89 nixosConfigDirectory = "${nixfilesDirectory}/nixos";
90 };
91
92 fonts = {
93 sans = {
94 default = {
95 package = pkgs.cantarell-fonts;
96 family = "Cantarell";
97 };
98 noto-cjk-sans = {
99 package = pkgs.noto-fonts-cjk-sans;
100 family = "Noto Sans CJK";
101 };
102 };
103 serif = {
104 default = {
105 package = pkgs.dejavu_fonts;
106 family = "DejaVu Serif";
107 };
108 noto-cjk-serif = {
109 package = pkgs.noto-fonts-cjk-serif;
110 family = "Noto Serif CJK";
111 };
112 };
113 monospace = {
114 default = {
115 package = pkgs.maple-mono.NL-NF;
116 family = "Maple Mono NL NF";
117 };
118 };
119 emoji = {
120 default = {
121 package = pkgs.noto-fonts-color-emoji;
122 family = "Noto Color Emoji";
123 };
124 };
125 };
126
127 mkNixosSystem =
128 modules:
129 nixpkgs.lib.nixosSystem {
130 specialArgs = {
131 inherit inputs;
132 inherit user;
133 inherit fonts;
134 };
135
136 modules = [
137 {
138 nixpkgs = {
139 inherit config;
140 inherit overlays;
141 };
142 }
143 ./nixos/modules
144 opnix.nixosModules.default
145 ]
146 ++ modules;
147 };
148
149 mkHomeManagerConfiguration =
150 modules:
151 home-manager.lib.homeManagerConfiguration {
152 inherit pkgs;
153
154 extraSpecialArgs = {
155 inherit inputs;
156 inherit user;
157 inherit fonts;
158 };
159
160 modules = [
161 ./home-manager/modules
162 opnix.homeManagerModules.default
163 ]
164 ++ modules;
165 };
166 in
167 {
168 # nixos-rebuild switch --flake .#<hostname>
169 nixosConfigurations = {
170 "desktop" = mkNixosSystem [
171 ./nixos/desktop
172 ];
173 "laptop" = mkNixosSystem [
174 ./nixos/laptop
175 nixos-hardware.nixosModules.framework-12th-gen-intel
176 ];
177 # nixos-rebuild --target-host root@<hostname> switch --flake ~/nixfiles#server
178 "server" = mkNixosSystem [
179 disko.nixosModules.disko
180 ./nixos/server
181 ];
182 "clever-cloud" = mkNixosSystem [
183 ./nixos/clever-cloud
184 nixos-hardware.nixosModules.lenovo-thinkpad-t480s
185 ];
186 };
187 # nix run home-manager/release-25.11 -- switch --flake .#<hostname>
188 # home-manager switch --flake .#<hostname>
189 homeConfigurations = {
190 "${user.name}@desktop" = mkHomeManagerConfiguration [
191 ./home-manager/desktop.nix
192 ];
193 "${user.name}@laptop" = mkHomeManagerConfiguration [
194 ./home-manager/laptop.nix
195 ];
196 "${user.name}@clever-cloud" = mkHomeManagerConfiguration [
197 ./home-manager/clever-cloud.nix
198 ];
199 };
200 };
201}