-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
-
41
-
42
-
43
-
44
-
45
-
46
-
47
-
48
-
49
-
50
-
51
-
52
-
53
-
54
-
55
-
56
-
57
-
58
-
59
-
60
-
61
-
62
-
63
-
64
-
65
-
66
-
67
-
68
-
69
-
70
-
71
-
72
-
73
-
74
-
75
-
76
-
77
-
78
-
79
-
80
-
81
-
82
-
83
-
84
-
85
-
86
-
87
-
88
-
89
-
90
-
91
-
92
-
93
-
94
-
95
-
96
-
97
-
98
-
99
-
100
-
101
-
102
-
103
-
104
-
105
-
106
-
107
-
108
-
109
-
110
-
111
-
112
-
113
-
114
-
115
-
116
-
117
-
118
-
119
-
120
-
121
-
122
-
123
-
124
-
125
-
126
-
127
-
128
-
129
-
130
-
131
-
132
-
133
{
description = "My system configuration";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = {
self,
nixpkgs,
home-manager,
}: let
# Catppuccin pallet, one of: "latte", "frappe", "macchiato", "mocha"
catppuccinTheme = "mocha";
# Pre-defined modules
mods = {
essentials = import ./essentials {
inherit catppuccinTheme;
};
scm = import ./scm {
username = "Shota FUJI";
email = "pockawoooh@gmail.com";
gpgKeyId = "5E5148973E291363";
};
wayland-de = import ./wayland-de {
inherit catppuccinTheme;
};
webdev = ./webdev;
};
mkHomeConfiguration = {
# Platform (e.g. x86_64-linux)
system,
# OS username
username,
# Modules to include
modules ? [mods.essentials],
# Timezone of the machine
timezone ? "Asia/Tokyo",
}: let
isDarwin = (builtins.match ".*-darwin$" system) != null;
homeDir =
if isDarwin
then "/Users"
else "/home";
in
home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.${system};
modules =
[
{
home = rec {
inherit username;
homeDirectory = "${homeDir}/${username}";
stateVersion = "23.11";
sessionVariables = {
TZ = timezone;
};
};
# Turn off Home Manager news bs
news.display = "silent";
}
]
++ modules;
};
availableSystems = [
"aarch64-darwin"
"x86_64-linux"
];
in {
homeConfigurations = {
dev-linux = mkHomeConfiguration {
system = "x86_64-linux";
username = "pocka";
modules = [
mods.essentials
mods.scm
mods.webdev
mods.wayland-de
];
};
pixelbook = mkHomeConfiguration {
system = "x86_64-linux";
username = "pockawoooh";
modules = [
mods.essentials
mods.scm
mods.webdev
];
};
scm-server = mkHomeConfiguration {
system = "x86_64-linux";
username = "pocka";
modules = [
mods.essentials
mods.scm
];
};
mbp-m1 = mkHomeConfiguration {
system = "aarch64-darwin";
username = "pocka";
modules = [
mods.essentials
mods.scm
mods.webdev
];
};
};
formatter = builtins.listToAttrs (
builtins.map (system: {
name = system;
value = nixpkgs.legacyPackages.${system}.alejandra;
})
availableSystems
);
};
}