tangled
alpha
login
or
join now
pluie.me
/
flake
2
fork
atom
All my system configs and packages in one repo
2
fork
atom
overview
issues
pulls
pipelines
presets/niri: switch to systemd services + autostart
pluie.me
4 months ago
45f7417d
a463605d
verified
This commit was signed with the committer's
known signature
.
pluie.me
SSH Key Fingerprint:
SHA256:YtI1D7vlcZ4obaiJ4tQihtswcMhHKdfYZuc4whOX2y8=
+208
-136
14 changed files
expand all
collapse all
unified
split
modules
hjem-ext
programs
vesktop.nix
users
leah
presets
niri
config.kdl
default.nix
services.nix
swaync
default.nix
swayosd
default.nix
waybar
config.nix
default.nix
programs
1password.nix
default.nix
discord
default.nix
firefox
default.nix
ghostty.nix
steam.nix
+22
-14
modules/hjem-ext/programs/vesktop.nix
···
11
11
{
12
12
options.ext.programs.vesktop = {
13
13
enable = lib.mkEnableOption "Vesktop";
14
14
-
15
14
package = lib.mkPackageOption pkgs "vesktop" { };
15
15
+
autostart = lib.mkEnableOption "autostarting Vesktop";
16
16
17
17
settings = lib.mkOption {
18
18
inherit (format) type;
···
50
50
};
51
51
52
52
config = lib.mkIf cfg.enable {
53
53
-
packages = [
54
54
-
(cfg.package.override {
55
55
-
withSystemVencord = cfg.vencord.useSystemPackage;
56
56
-
})
53
53
+
packages = lib.mkMerge [
54
54
+
[
55
55
+
(cfg.package.override {
56
56
+
withSystemVencord = cfg.vencord.useSystemPackage;
57
57
+
})
58
58
+
]
59
59
+
(lib.mkIf cfg.autostart [
60
60
+
(pkgs.makeAutostartItem {
61
61
+
name = "vesktop";
62
62
+
package = pkgs.vesktop;
63
63
+
prependExtraArgs = [ "--wayland-text-input-version=3" ];
64
64
+
})
65
65
+
])
57
66
];
58
67
59
59
-
xdg.config.files =
60
60
-
{
61
61
-
"vesktop/settings.json".source = format.generate "vesktop-settings.json" cfg.settings;
62
62
-
}
63
63
-
// lib.optionalAttrs cfg.vencord.enable {
64
64
-
"vesktop/settings/settings.json".source =
65
65
-
format.generate "vencord-settings.json" cfg.vencord.settings;
68
68
+
xdg.config.files = {
69
69
+
"vesktop/settings.json".source = format.generate "vesktop-settings.json" cfg.settings;
70
70
+
}
71
71
+
// lib.optionalAttrs cfg.vencord.enable {
72
72
+
"vesktop/settings/settings.json".source =
73
73
+
format.generate "vencord-settings.json" cfg.vencord.settings;
66
74
67
67
-
"vesktop/settings/quickCss.css".text = cfg.vencord.css;
68
68
-
};
75
75
+
"vesktop/settings/quickCss.css".text = cfg.vencord.css;
76
76
+
};
69
77
};
70
78
}
-14
users/leah/presets/niri/config.kdl
···
343
343
}
344
344
workspace "gaming"
345
345
346
346
-
spawn-at-startup "waybar"
347
347
-
spawn-at-startup "swaync"
348
348
-
spawn-at-startup "fcitx5"
349
349
-
spawn-at-startup "swayidle"
350
350
-
spawn-at-startup "swaybg"
351
351
-
spawn-at-startup "swayosd-server"
352
352
-
353
353
-
// TODO: I do not know why 1Pass doesn't work on Wayland
354
354
-
spawn-at-startup "env" "ELECTRON_OZONE_PLATFORM_HINT=x11" "1password"
355
355
-
spawn-at-startup "ghostty" "--launched-from=desktop"
356
356
-
spawn-at-startup "firefox"
357
357
-
spawn-at-startup "vesktop" "--wayland-text-input-version=3"
358
358
-
spawn-at-startup "steam"
359
359
-
360
346
window-rule {
361
347
match at-startup=true app-id="vesktop"
362
348
open-on-workspace "chat"
+65
-41
users/leah/presets/niri/default.nix
···
7
7
./gui-toolkits.nix
8
8
./services.nix
9
9
./waybar
10
10
+
./swaync
11
11
+
./swayosd
10
12
];
11
13
12
14
programs.niri.enable = true;
13
15
14
14
-
services.udev.packages = [ pkgs.swayosd ];
15
15
-
systemd.packages = [ pkgs.swayosd ];
16
16
+
services.gnome.gnome-keyring.enable = true;
17
17
+
security.pam.services.login.enableGnomeKeyring = true;
16
18
17
19
hjem.users.leah = {
18
20
packages = with pkgs; [
19
19
-
# I'm using Nautilus here because it a) looks nice
20
20
-
# and b) avoids configuring XDP GNOME to use a XDP GTK's file chooser
21
21
-
nautilus
22
22
-
23
21
networkmanagerapplet
24
24
-
swaynotificationcenter
25
25
-
waybar
26
22
xwayland-satellite
27
23
brightnessctl
28
24
wleave
···
32
28
loupe
33
29
gnome-logs
34
30
resources
31
31
+
# I'm using Nautilus here because it a) looks nice
32
32
+
# and b) avoids configuring XDP GNOME to use a XDP GTK's file chooser
33
33
+
nautilus
35
34
];
36
35
37
37
-
xdg.config.files = {
38
38
-
"niri/config.kdl".source = ./config.kdl;
39
39
-
"swaync/style.css".source = ./swaync/style.css;
40
40
-
"swaync/config.json".source = ./swaync/config.json;
41
41
-
};
42
42
-
};
36
36
+
xdg.config.files."niri/config.kdl".source = ./config.kdl;
43
37
44
44
-
hjem.users.leah.rum.programs.fuzzel = {
45
45
-
enable = true;
38
38
+
ext.programs.swaylock = {
39
39
+
enable = true;
40
40
+
package = pkgs.swaylock-effects;
46
41
47
47
-
settings.main = {
48
48
-
font = "Sans:size=14";
49
49
-
use-bold = true;
50
50
-
show-actions = true;
51
51
-
match-counter = true;
42
42
+
settings = {
43
43
+
show-failed-attempts = true;
44
44
+
ignore-empty-password = true;
45
45
+
daemonize = true;
52
46
53
53
-
# Make Fuzzel take on-demand focus and stop it
54
54
-
# from closing automatically
55
55
-
keyboard-focus = "on-demand";
56
56
-
exit-on-keyboard-focus-loss = false;
47
47
+
screenshots = true;
48
48
+
scaling = "fit";
49
49
+
clock = true;
50
50
+
indicator-idle-visible = true;
51
51
+
grace = 3;
52
52
+
effect-blur = "10x10";
53
53
+
effect-vignette = "0.5:0.8";
54
54
+
effect-pixelate = 4;
57
55
58
58
-
lines = 8;
59
59
-
y-margin = 8;
60
60
-
horizontal-pad = 20;
61
61
-
vertical-pad = 16;
62
62
-
inner-pad = 8;
63
63
-
anchor = "bottom";
64
64
-
layer = "top";
56
56
+
text-color = "#cdd6f4";
57
57
+
inside-color = "#181825";
58
58
+
inside-clear-color = "#a6e3a1";
59
59
+
inside-ver-color = "#cba6f7";
60
60
+
inside-wrong-color = "#f38ba8";
61
61
+
ring-color = "#1e1e2e";
62
62
+
ring-clear-color = "#a6e3a1";
63
63
+
ring-ver-color = "#cba6f7";
64
64
+
ring-wrong-color = "#f38ba8";
65
65
+
key-hl-color = "#eba0ac";
66
66
+
bs-hl-color = "#6c7086";
67
67
+
line-color = "#313244";
68
68
+
69
69
+
timestr = "%H:%M";
70
70
+
datestr = "%e %b '%y / %a";
71
71
+
};
65
72
};
66
73
67
67
-
settings.border = {
68
68
-
radius = 8;
69
69
-
width = 2;
70
70
-
};
71
71
-
};
74
74
+
rum.programs.fuzzel = {
75
75
+
enable = true;
76
76
+
77
77
+
settings.main = {
78
78
+
font = "Sans:size=14";
79
79
+
use-bold = true;
80
80
+
show-actions = true;
81
81
+
match-counter = true;
82
82
+
83
83
+
# Make Fuzzel take on-demand focus
84
84
+
keyboard-focus = "on-demand";
72
85
73
73
-
hjem.users.leah.ext.programs.swayosd = {
74
74
-
enable = true;
75
75
-
settings.server.show_percentage = true;
76
76
-
style = ./swayosd/style.css;
86
86
+
lines = 8;
87
87
+
width = 35;
88
88
+
y-margin = 8;
89
89
+
horizontal-pad = 20;
90
90
+
vertical-pad = 16;
91
91
+
inner-pad = 8;
92
92
+
anchor = "bottom";
93
93
+
layer = "top";
94
94
+
};
95
95
+
96
96
+
settings.border = {
97
97
+
radius = 8;
98
98
+
width = 2;
99
99
+
};
100
100
+
};
77
101
};
78
102
}
+16
-1
users/leah/presets/niri/services.nix
···
9
9
name = "swaybg";
10
10
runtimeInputs = [ pkgs.swaybg ];
11
11
text = ''
12
12
-
swaybg -i ${../../wallpaper.jpg}
12
12
+
exec swaybg -i "${../../wallpaper.jpg}" "$@"
13
13
'';
14
14
};
15
15
···
39
39
swayidle'
40
40
swaybg'
41
41
];
42
42
+
43
43
+
hjem.users.leah.systemd.services = {
44
44
+
swaybg = {
45
45
+
after = [ "graphical-session.target" ];
46
46
+
wantedBy = [ "graphical-session.target" ];
47
47
+
serviceConfig.ExecStart = lib.getExe swaybg';
48
48
+
restartTriggers = [ swaybg' ];
49
49
+
};
50
50
+
swayidle = {
51
51
+
after = [ "graphical-session.target" ];
52
52
+
wantedBy = [ "graphical-session.target" ];
53
53
+
serviceConfig.ExecStart = lib.getExe swayidle';
54
54
+
restartTriggers = [ swayidle' ];
55
55
+
};
56
56
+
};
42
57
43
58
security = {
44
59
polkit.enable = true;
+15
users/leah/presets/niri/swaync/default.nix
···
1
1
+
{
2
2
+
pkgs,
3
3
+
...
4
4
+
}:
5
5
+
{
6
6
+
hjem.users.leah = {
7
7
+
packages = [ pkgs.swaynotificationcenter ];
8
8
+
systemd.targets.graphical-session-pre.wants = [ "swaync.service" ];
9
9
+
10
10
+
xdg.config.files = {
11
11
+
"swaync/style.css".source = ./style.css;
12
12
+
"swaync/config.json".source = ./config.json;
13
13
+
};
14
14
+
};
15
15
+
}
+34
users/leah/presets/niri/swayosd/default.nix
···
1
1
+
{
2
2
+
lib,
3
3
+
config,
4
4
+
...
5
5
+
}:
6
6
+
let
7
7
+
swayosd = config.hjem.users.leah.ext.programs.swayosd.package;
8
8
+
in
9
9
+
{
10
10
+
# LibInput backend
11
11
+
services = {
12
12
+
dbus.packages = [ swayosd ];
13
13
+
udev.packages = [ swayosd ];
14
14
+
};
15
15
+
systemd = {
16
16
+
packages = [ swayosd ];
17
17
+
targets.graphical.wants = [ "swayosd-libinput-backend.service" ];
18
18
+
};
19
19
+
20
20
+
# Server
21
21
+
hjem.users.leah = {
22
22
+
ext.programs.swayosd = {
23
23
+
enable = true;
24
24
+
settings.server.show_percentage = true;
25
25
+
style = ./style.css;
26
26
+
};
27
27
+
systemd.services.swayosd-server = {
28
28
+
after = [ "graphical-session.target" ];
29
29
+
wantedBy = [ "graphical-session.target" ];
30
30
+
serviceConfig.ExecStart = lib.getExe' swayosd "swayosd-server";
31
31
+
restartTriggers = [ swayosd ];
32
32
+
};
33
33
+
};
34
34
+
}
+1
-1
users/leah/presets/niri/waybar/config.nix
···
186
186
};
187
187
"custom/wleave" = {
188
188
format = "";
189
189
-
on-click = "wleave";
189
189
+
on-click = "wleave -x";
190
190
};
191
191
}
192
192
{
+1
users/leah/presets/niri/waybar/default.nix
···
9
9
{
10
10
hjem.users.leah = {
11
11
packages = [ pkgs.waybar ];
12
12
+
systemd.targets.graphical-session-pre.wants = [ "waybar.service" ];
12
13
13
14
xdg.config.files = {
14
15
"waybar/style.css".source = ./style.css;
+7
-1
users/leah/programs/1password.nix
···
1
1
{
2
2
config,
3
3
pkgs,
4
4
-
lib,
5
4
...
6
5
}:
7
6
{
···
18
17
19
18
# Add 1Pass as SSH agent
20
19
hjem.users.leah = {
20
20
+
packages = [
21
21
+
(pkgs.makeAutostartItem {
22
22
+
name = "1password";
23
23
+
inherit (config.programs._1password-gui) package;
24
24
+
})
25
25
+
];
26
26
+
21
27
environment.sessionVariables.SSH_AUTH_SOCK = "${config.hjem.users.leah.directory}/.1password/agent.sock";
22
28
};
23
29
}
-36
users/leah/programs/default.nix
···
76
76
wrap = true;
77
77
};
78
78
};
79
79
-
80
80
-
swaylock = {
81
81
-
enable = true;
82
82
-
package = pkgs.swaylock-effects;
83
83
-
84
84
-
settings = {
85
85
-
show-failed-attempts = true;
86
86
-
ignore-empty-password = true;
87
87
-
daemonize = true;
88
88
-
89
89
-
screenshots = true;
90
90
-
scaling = "fit";
91
91
-
clock = true;
92
92
-
indicator-idle-visible = true;
93
93
-
grace = 3;
94
94
-
effect-blur = "10x10";
95
95
-
effect-vignette = "0.5:0.8";
96
96
-
effect-pixelate = 4;
97
97
-
98
98
-
text-color = "#cdd6f4";
99
99
-
inside-color = "#181825";
100
100
-
inside-clear-color = "#a6e3a1";
101
101
-
inside-ver-color = "#cba6f7";
102
102
-
inside-wrong-color = "#f38ba8";
103
103
-
ring-color = "#1e1e2e";
104
104
-
ring-clear-color = "#a6e3a1";
105
105
-
ring-ver-color = "#cba6f7";
106
106
-
ring-wrong-color = "#f38ba8";
107
107
-
key-hl-color = "#eba0ac";
108
108
-
bs-hl-color = "#6c7086";
109
109
-
line-color = "#313244";
110
110
-
111
111
-
timestr = "%H:%M";
112
112
-
datestr = "%e %b '%y / %a";
113
113
-
};
114
114
-
};
115
79
};
116
80
};
117
81
}
+1
users/leah/programs/discord/default.nix
···
1
1
{
2
2
hjem.users.leah.ext.programs.vesktop = {
3
3
enable = true;
4
4
+
autostart = true;
4
5
5
6
settings = {
6
7
minimizeToTray = "on";
+7
-1
users/leah/programs/firefox/default.nix
···
59
59
# I've seen how HM does it, and I don't think it's worth it at all...
60
60
in
61
61
{
62
62
-
hjem.users.leah.packages = [ wrappedFirefox ];
62
62
+
hjem.users.leah.packages = [
63
63
+
wrappedFirefox
64
64
+
(pkgs.makeAutostartItem {
65
65
+
name = "firefox";
66
66
+
package = wrappedFirefox;
67
67
+
})
68
68
+
];
63
69
}
+32
-27
users/leah/programs/ghostty.nix
···
4
4
...
5
5
}:
6
6
{
7
7
-
# Required by apps like Fuzzel for determing the default terminal
8
8
-
hjem.users.leah.environment.sessionVariables.TERMINAL = "ghostty";
7
7
+
hjem.users.leah = {
8
8
+
# Required by apps like Fuzzel for determing the default terminal
9
9
+
environment.sessionVariables.TERMINAL = "ghostty";
10
10
+
systemd.targets.graphical-session.wants = [
11
11
+
"app-com.mitchellh.ghostty.service"
12
12
+
];
9
13
10
10
-
hjem.users.leah.rum.programs.ghostty = {
11
11
-
enable = true;
12
12
-
package = inputs.ghostty.packages.${pkgs.system}.ghostty;
14
14
+
rum.programs.ghostty = {
15
15
+
enable = true;
16
16
+
package = inputs.ghostty.packages.${pkgs.system}.ghostty;
13
17
14
14
-
settings = {
15
15
-
font-family = "Iosevka";
16
16
-
font-size = 14;
18
18
+
settings = {
19
19
+
font-family = "Iosevka";
20
20
+
font-size = 14;
17
21
18
18
-
background = "#1e1e2e";
22
22
+
background = "#1e1e2e";
19
23
20
20
-
window-decoration = "client";
21
21
-
window-theme = "ghostty";
24
24
+
window-decoration = "client";
25
25
+
window-theme = "ghostty";
22
26
23
23
-
unfocused-split-opacity = 0.8;
24
24
-
background-opacity = 0.85;
25
25
-
background-blur = true;
27
27
+
unfocused-split-opacity = 0.8;
28
28
+
background-opacity = 0.85;
29
29
+
background-blur = true;
26
30
27
27
-
# Massively improves the nvim experience
28
28
-
mouse-hide-while-typing = true;
31
31
+
# Massively improves the nvim experience
32
32
+
mouse-hide-while-typing = true;
29
33
30
30
-
quick-terminal-size = "30%";
31
31
-
quick-terminal-autohide = true;
34
34
+
quick-terminal-size = "30%";
35
35
+
quick-terminal-autohide = true;
32
36
33
33
-
keybind = [
34
34
-
"ctrl+shift+up=new_split:up"
35
35
-
"ctrl+shift+down=new_split:down"
36
36
-
"ctrl+shift+left=new_split:left"
37
37
-
"ctrl+shift+right=new_split:right"
38
38
-
"alt+shift+left=next_tab"
39
39
-
"alt+shift+right=previous_tab"
40
40
-
"global:ctrl+backquote=toggle_quick_terminal"
41
41
-
];
37
37
+
keybind = [
38
38
+
"ctrl+shift+up=new_split:up"
39
39
+
"ctrl+shift+down=new_split:down"
40
40
+
"ctrl+shift+left=new_split:left"
41
41
+
"ctrl+shift+right=new_split:right"
42
42
+
"alt+shift+left=next_tab"
43
43
+
"alt+shift+right=previous_tab"
44
44
+
"global:ctrl+backquote=toggle_quick_terminal"
45
45
+
];
46
46
+
};
42
47
};
43
48
};
44
49
}
+7
users/leah/programs/steam.nix
···
29
29
protontricks.enable = true;
30
30
remotePlay.openFirewall = true;
31
31
};
32
32
+
33
33
+
hjem.users.leah.packages = [
34
34
+
(pkgs.makeAutostartItem {
35
35
+
name = "steam";
36
36
+
package = pkgs.steam;
37
37
+
})
38
38
+
];
32
39
}