summaryrefslogtreecommitdiff
path: root/archetypes/profiles/desktop/default.nix
blob: a239219f108b1a4b5a41fe4f19f91a1887a0c72d (plain)
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
{ lib, config, pkgs, ... }: let
	mkDesktop = lib.mkOverride 920;

	nixosConfig = {
		_archetypes.collections = {
			desktop = {
				utilities.enable = mkDesktop true;
				firefox.enable = mkDesktop true;
				xserver = {
					enable = mkDesktop true;
					utilities.enable = mkDesktop true;
				};
			};
			development = {
				utilities.enable = mkDesktop true;
			};
			fonts.enable = mkDesktop true;
		};

		security = {
			_doas.enable = mkDesktop true;
		};

		programs = {
			_ddcutil.enable = mkDesktop true;
			_home-manager.enable = mkDesktop true;
		};

		services = {
			xserver = {
				windowManager._awesome.enable = mkDesktop true;
			};
			_geoclue2.enable = mkDesktop true;
			_pipewire.enable = mkDesktop true;
			_printing.enable = mkDesktop true;
			_ssh.enable = mkDesktop true;
			tlp.enable = mkDesktop true;

			# Ensure video group can change backlight
			udev.extraRules = mkDesktop ''
				SUBSYSTEM=="backlight", ACTION=="add", RUN+="${pkgs.coreutils}/bin/chgrp video /sys/class/backlight/%k/brightness", RUN+="${pkgs.coreutils}/bin/chmod g+w /sys/class/backlight/%k/brightness"
			'';
		};
	};

	homeConfig = {
		gtk = {
			enable = mkDesktop true;
			_mintTheme.enable = mkDesktop true;
			font.name = mkDesktop "sans-serif";
			cursorTheme.name = mkDesktop "Adwaita";
		};

		qt._gtkPlatformTheme.enable = mkDesktop true;

		fonts.fontconfig = {
			enable = mkDesktop true;
			defaultFonts = {
				# These fonts are added above in fonts collection
				sansSerif = mkDesktop [ "Inter" ];
				monospace = mkDesktop [ "CommitMono" ];
			};
		};

		programs = {
			_pcmanfm.openAsRootOption.enable = mkDesktop true;
			firefox._configure = mkDesktop true;
			htop._configure = mkDesktop true;
		};

		services = {
			_redshift.enable = true;
		};

		home._repos = {
			enable = mkDesktop true;
			desktop = mkDesktop true;
		};

		xdg.mimeApps._defaultCategoryApplications = {
			enable = true;
			categoryApplications = {
				audio = [ "mpv" ];
				email = [ "thunderbird" ];
				image = [ "sxiv" ];
				pdf   = [ "org.pwmt.zathura-pdf-mupdf" ];
				text  = [ "nvim" ];
				video = [ "mpv" ];
			};
		};
	};
in {
	imports = [ (lib._mkProfileArchetype "desktop" nixosConfig homeConfig) ];
}