aboutsummaryrefslogtreecommitdiff
path: root/modules/home-manager/home.nix
blob: 3e4d91101e1d3ef0aac44b5224ef75e046578884 (plain) (blame)
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
{ inputs, config, ... }:
let
	hm = config.flake.modules.homeManager;
in
{
	flake.modules.homeManager.boss =
		{ pkgs, lib, ... }:
		let
			claude-code-latest = pkgs.claude-code.override {
				manifest = lib.importJSON ./claude-code-manifest-2.1.310.json;
			};
		in
		{

			imports = [
				hm.bash
				hm.emacs
				#hm.hyprland
				hm.i3
				# hm.YATwm
				hm.kitty
				inputs.spicetify-nix.homeManagerModules.default
				inputs.nixcord.homeModules.nixcord
				inputs.zen-browser.homeModules.twilight-official
				#inputs.stylix.homeManagerModules.stylix
			];

			home = {
				stateVersion = "24.05";
				username = "boss";
				homeDirectory = "/home/boss";
			};

			# The home.packages option allows you to install Nix packages into your
			# environment.
			# nixpkgs.config.allowUnfree = true;
			home.packages = with pkgs; [
				feh
				pass
				# spotify
				playerctl
				libqalculate
				libreoffice
				hunspell
				hunspellDicts.en_AU
				logisim-evolution
				thunderbird
				xdotool
				discord
				# (discord.override {
				#     withOpenASAR = true;
				#     withVencord = true;
				# })
				# vesktop
				mumble
				gimp
				bottom
				xfce.thunar
				mpv
				man-pages
				man-pages-posix
				# (inputs.plover-flake.packages.${system}.plover.with-plugins (ps: with ps;[
				#     plover-dict-commands
				#     plover-console-ui
				#     plover-controller
				# ]))
				pavucontrol
				unzip
				zip
				appimage-run
				# lunar-client
				libnotify
				xclip
				(python3.withPackages (
					ps: with ps; [
						python-lsp-server
						numpy
						matplotlib
						jupyter
						jupytext
						pandas
						pydot
						scikit-learn
						nbdev
						pillow
					]
				))
				graphviz
				alacritty
				# nyxt
				wireguard-tools
				brightnessctl
				# inputs.nil.packages.${system}.default
				nil
				#inputs.polymc.packages.${system}.default
				jre8
				#inputs.zen-browser.packages."${system}".default
				piper
				qbittorrent
				# sbcl
				superTuxKart
				typst
				sops
				ffmpeg
				ghc
				# hytale-launcher
				# inputs.hytale-launcher.packages.${pkgs.system}.default
				#adom
				flatpak
				deadlock-mod-manager
				nh
				claude-code-latest
				inputs.claude-desktop.packages.${system}.claude-desktop
				# openttd
			];

			nix = {
				#package = pkgs.nix;
				settings.experimental-features = [
					"nix-command"
					"flakes"
				];
			};

			home.sessionVariables = {
				EDITOR = "emacsclient -c";
				MAKEFLAGS = " -j16 ";
				MOZ_ENABLE_WAYLAND = 1;
			};

			programs.home-manager.enable = true;

			programs.direnv = {
				enable = true;
				enableBashIntegration = true;
				nix-direnv.enable = true;
			};

			services.gpg-agent.enable = true;
			services.gpg-agent.pinentry.package = pkgs.pinentry-gtk2;

			services.dunst = {
				enable = true;
				settings = {
					global = {
						follow = "keyboard";
						frame_width = 0;
					};
				};
			};

			programs.obs-studio = {
				enable = true;

				# optional Nvidia hardware acceleration
				# package = (
				#     pkgs.obs-studio.override {
				#         cudaSupport = true;
				#     }
				# );

				plugins = with pkgs.obs-studio-plugins; [
					obs-pipewire-audio-capture
					input-overlay
				];
			};

			# services.easyeffects.enable = true;

			services.pass-secret-service.enable = true;
			# Start with the X session rather than at boot, so it inherits DISPLAY/XAUTHORITY
			# and gpg can show the GTK pinentry. Otherwise apps get logged out.
			systemd.user.services.pass-secret-service = {
				Unit.After = [ "graphical-session.target" ];
				Unit.PartOf = lib.mkForce [ "graphical-session.target" ];
				Install.WantedBy = lib.mkForce [ "graphical-session.target" ];
			};

			programs.firefox = {
				enable = true;
			};
			programs.zen-browser = {
				enable = true;
				setAsDefaultBrowser = true;
			};

			# programs.nixcord = {
			#     enable = true;
			# };

			stylix.targets.spicetify.enable = true;
			stylix.targets.firefox.profileNames = [ "default" ];
			stylix.targets.zen-browser.profileNames = [ "default" ];
			# stylix.targets.nixcord.enable = true;

			programs.spicetify =
				let
					spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system};
				in
				{
					enable = true;
					spotifyLaunchFlags = "--disable-gpu --disable-software-rasterizer";
					enabledExtensions = with spicePkgs.extensions; [
						fullAppDisplay
						powerBar
						# addToQueueTop
						loopyLoop
					];
					enabledCustomApps = with spicePkgs.apps; [
						newReleases
						lyricsPlus
						betterLibrary
					];
					# theme = spicePkgs.themes.nightlight;
				};

			xsession.windowManager.command = lib.mkForce "$@";
		};
}