refactor(modules): make sure nothing is added without setting enable
All checks were successful
Discord / discord commits (push) Has been skipped
All checks were successful
Discord / discord commits (push) Has been skipped
This commit is contained in:
parent
4a2ad39114
commit
49dc072b81
56 changed files with 684 additions and 506 deletions
|
@ -8,6 +8,8 @@ TODO: add directory structure info and enforce it
|
||||||
- if there is non nix code, it will be in a `config` folder
|
- if there is non nix code, it will be in a `config` folder
|
||||||
- redo docs
|
- redo docs
|
||||||
- every module should not do anything if imported
|
- every module should not do anything if imported
|
||||||
|
- all nix files that represent a module should be `default.nix` (a nix file
|
||||||
|
which is imported directly can be called anything alongside `default.nix`)
|
||||||
|
|
||||||
## AGS
|
## AGS
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
roles.server = {
|
roles.server = {
|
||||||
|
enable = true;
|
||||||
user = mainUser;
|
user = mainUser;
|
||||||
sshd.enable = true;
|
sshd.enable = true;
|
||||||
};
|
};
|
||||||
|
|
|
@ -55,6 +55,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
roles.desktop = {
|
roles.desktop = {
|
||||||
|
enable = true;
|
||||||
user = mainUser;
|
user = mainUser;
|
||||||
|
|
||||||
ags.enable = true;
|
ags.enable = true;
|
||||||
|
@ -65,6 +66,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
roles.server = {
|
roles.server = {
|
||||||
|
enable = true;
|
||||||
user = mainUser;
|
user = mainUser;
|
||||||
tailscale.enable = true;
|
tailscale.enable = true;
|
||||||
sshd.enable = true;
|
sshd.enable = true;
|
||||||
|
|
|
@ -58,6 +58,7 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
roles.server = {
|
roles.server = {
|
||||||
|
enable = true;
|
||||||
user = mainUser;
|
user = mainUser;
|
||||||
tailscale.enable = true;
|
tailscale.enable = true;
|
||||||
sshd.enable = true;
|
sshd.enable = true;
|
||||||
|
|
|
@ -48,6 +48,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
roles.server = {
|
roles.server = {
|
||||||
|
enable = true;
|
||||||
user = mainUser;
|
user = mainUser;
|
||||||
tailscale.enable = true;
|
tailscale.enable = true;
|
||||||
sshd.enable = true;
|
sshd.enable = true;
|
||||||
|
|
|
@ -52,21 +52,21 @@
|
||||||
"ueboom.service"
|
"ueboom.service"
|
||||||
];
|
];
|
||||||
|
|
||||||
# Allow pulseaudio to be managed by MPD
|
services = {
|
||||||
hardware.pulseaudio = {
|
# Allow pulseaudio to be managed by MPD
|
||||||
enable = true;
|
pulseaudio = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
zeroconf = {
|
zeroconf = {
|
||||||
discovery.enable = true;
|
discovery.enable = true;
|
||||||
publish.enable = true;
|
publish.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
extraConfig = ''
|
|
||||||
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
|
||||||
upower.enable = true;
|
upower.enable = true;
|
||||||
|
|
||||||
mpd = {
|
mpd = {
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
roles.server = {
|
roles.server = {
|
||||||
|
enable = true;
|
||||||
user = mainUser;
|
user = mainUser;
|
||||||
sshd.enable = true;
|
sshd.enable = true;
|
||||||
};
|
};
|
||||||
|
|
|
@ -49,6 +49,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
roles.server = {
|
roles.server = {
|
||||||
|
enable = true;
|
||||||
user = mainUser;
|
user = mainUser;
|
||||||
tailscale.enable = true;
|
tailscale.enable = true;
|
||||||
sshd.enable = true;
|
sshd.enable = true;
|
||||||
|
|
|
@ -62,6 +62,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
roles.server = {
|
roles.server = {
|
||||||
|
enable = true;
|
||||||
user = mainUser;
|
user = mainUser;
|
||||||
tailscale.enable = true;
|
tailscale.enable = true;
|
||||||
sshd.enable = true;
|
sshd.enable = true;
|
||||||
|
|
|
@ -65,6 +65,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
roles.desktop = {
|
roles.desktop = {
|
||||||
|
enable = true;
|
||||||
user = mainUser;
|
user = mainUser;
|
||||||
|
|
||||||
ags.enable = true;
|
ags.enable = true;
|
||||||
|
@ -76,6 +77,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
roles.server = {
|
roles.server = {
|
||||||
|
enable = true;
|
||||||
user = mainUser;
|
user = mainUser;
|
||||||
tailscale.enable = true;
|
tailscale.enable = true;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,195 +1,205 @@
|
||||||
self: {...}: let
|
self: {
|
||||||
|
lib,
|
||||||
|
osConfig,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
inherit (self.lib.hypr) mkAnimation mkBezier mkBind mkLayerRule;
|
inherit (self.lib.hypr) mkAnimation mkBezier mkBind mkLayerRule;
|
||||||
|
|
||||||
|
inherit (lib) mkIf;
|
||||||
|
|
||||||
|
cfgDesktop = osConfig.roles.desktop;
|
||||||
in {
|
in {
|
||||||
config.wayland.windowManager.hyprland = {
|
config = mkIf cfgDesktop.ags.enable {
|
||||||
settings = {
|
wayland.windowManager.hyprland = {
|
||||||
general = {
|
settings = {
|
||||||
gaps_in = 5;
|
general = {
|
||||||
gaps_out = 5;
|
gaps_in = 5;
|
||||||
border_size = 0;
|
gaps_out = 5;
|
||||||
};
|
border_size = 0;
|
||||||
|
|
||||||
decoration = {
|
|
||||||
rounding = 12;
|
|
||||||
|
|
||||||
blur = {
|
|
||||||
enabled = true;
|
|
||||||
size = 3;
|
|
||||||
passes = 1;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
shadow.enabled = false;
|
decoration = {
|
||||||
};
|
rounding = 12;
|
||||||
|
|
||||||
animations = {
|
blur = {
|
||||||
enabled = true;
|
enabled = true;
|
||||||
|
size = 3;
|
||||||
|
passes = 1;
|
||||||
|
};
|
||||||
|
|
||||||
bezier = map mkBezier [
|
shadow.enabled = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
animations = {
|
||||||
|
enabled = true;
|
||||||
|
|
||||||
|
bezier = map mkBezier [
|
||||||
|
{
|
||||||
|
name = "easeInQuart";
|
||||||
|
p0 = [0.895 0.030];
|
||||||
|
p1 = [0.685 0.220];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "easeOutQuart";
|
||||||
|
p0 = [0.165 0.840];
|
||||||
|
p1 = [0.440 1.000];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "easeInOutQuart";
|
||||||
|
p0 = [0.770 0.000];
|
||||||
|
p1 = [0.175 1.000];
|
||||||
|
}
|
||||||
|
|
||||||
|
# fade out
|
||||||
|
{
|
||||||
|
name = "easeInExpo";
|
||||||
|
p0 = [0.950 0.050];
|
||||||
|
p1 = [0.795 0.035];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
animation = map mkAnimation [
|
||||||
|
{
|
||||||
|
name = "workspaces";
|
||||||
|
duration = 6;
|
||||||
|
bezier = "easeOutQuart";
|
||||||
|
style = "slide";
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "windows";
|
||||||
|
duration = 4;
|
||||||
|
bezier = "easeOutQuart";
|
||||||
|
style = "slide";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "fadeIn";
|
||||||
|
enable = false;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "fadeOut";
|
||||||
|
duration = 4;
|
||||||
|
bezier = "easeInExpo";
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "fadeLayersIn";
|
||||||
|
enable = false;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "fadeLayersOut";
|
||||||
|
duration = 4;
|
||||||
|
bezier = "easeInExpo";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "layers";
|
||||||
|
duration = 4;
|
||||||
|
bezier = "easeInOutQuart";
|
||||||
|
style = "fade";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
layerrule = map mkLayerRule [
|
||||||
{
|
{
|
||||||
name = "easeInQuart";
|
rule = "animation popin";
|
||||||
p0 = [0.895 0.030];
|
namespace = "^(hyprpaper.*)";
|
||||||
p1 = [0.685 0.220];
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "easeOutQuart";
|
rule = "animation fade";
|
||||||
p0 = [0.165 0.840];
|
namespace = "^(bg-layer.*)";
|
||||||
p1 = [0.440 1.000];
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "easeInOutQuart";
|
rule = "noanim";
|
||||||
p0 = [0.770 0.000];
|
namespace = "^(noanim-.*)";
|
||||||
p1 = [0.175 1.000];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# fade out
|
|
||||||
{
|
{
|
||||||
name = "easeInExpo";
|
rule = "blur";
|
||||||
p0 = [0.950 0.050];
|
namespace = "^(blur-bg.*)";
|
||||||
p1 = [0.795 0.035];
|
}
|
||||||
|
{
|
||||||
|
rule = "ignorealpha 0.19";
|
||||||
|
namespace = "^(blur-bg.*)";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
animation = map mkAnimation [
|
exec-once = [
|
||||||
|
"ags"
|
||||||
|
"sleep 3; ags request 'open win-applauncher'"
|
||||||
|
];
|
||||||
|
|
||||||
|
bind = map mkBind [
|
||||||
{
|
{
|
||||||
name = "workspaces";
|
modifier = "$mainMod SHIFT";
|
||||||
duration = 6;
|
key = "E";
|
||||||
bezier = "easeOutQuart";
|
command = "ags toggle win-powermenu";
|
||||||
style = "slide";
|
}
|
||||||
|
{
|
||||||
|
modifier = "$mainMod";
|
||||||
|
key = "D";
|
||||||
|
command = "ags toggle win-applauncher";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
modifier = "$mainMod";
|
||||||
|
key = "V";
|
||||||
|
command = "ags toggle win-clipboard";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "Print";
|
||||||
|
command = "ags toggle win-screenshot";
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "windows";
|
key = "XF86AudioMute";
|
||||||
duration = 4;
|
command = "pactl set-sink-mute @DEFAULT_SINK@ toggle";
|
||||||
bezier = "easeOutQuart";
|
|
||||||
style = "slide";
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "fadeIn";
|
key = "XF86AudioMicMute";
|
||||||
enable = false;
|
command = "pactl set-source-mute @DEFAULT_SOURCE@ toggle";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "fadeOut";
|
modifier = "$mainMod";
|
||||||
duration = 4;
|
key = "Print";
|
||||||
bezier = "easeInExpo";
|
command = "bash -c \"grim -g \\\"$(slurp)\\\" - | satty -f -\"";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
binde = map mkBind [
|
||||||
|
{
|
||||||
|
key = "XF86MonBrightnessUp";
|
||||||
|
command = "ags request 'Brightness.screen +0.05'";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "XF86MonBrightnessDown";
|
||||||
|
command = "ags request 'Brightness.screen -0.05'";
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "fadeLayersIn";
|
key = "XF86AudioRaiseVolume";
|
||||||
enable = false;
|
command = "wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+ & ags request 'popup speaker' &";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "fadeLayersOut";
|
key = "XF86AudioLowerVolume";
|
||||||
duration = 4;
|
command = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- & ags request 'popup speaker' &";
|
||||||
bezier = "easeInExpo";
|
|
||||||
}
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
bindn = map mkBind [
|
||||||
{
|
{
|
||||||
name = "layers";
|
key = "Escape";
|
||||||
duration = 4;
|
command = "ags request closeAll";
|
||||||
bezier = "easeInOutQuart";
|
}
|
||||||
style = "fade";
|
];
|
||||||
|
|
||||||
|
bindr = map mkBind [
|
||||||
|
{
|
||||||
|
modifier = "CAPS";
|
||||||
|
key = "Caps_Lock";
|
||||||
|
command = "ags request fetchCapsState";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
layerrule = map mkLayerRule [
|
|
||||||
{
|
|
||||||
rule = "animation popin";
|
|
||||||
namespace = "^(hyprpaper.*)";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
rule = "animation fade";
|
|
||||||
namespace = "^(bg-layer.*)";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
rule = "noanim";
|
|
||||||
namespace = "^(noanim-.*)";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
rule = "blur";
|
|
||||||
namespace = "^(blur-bg.*)";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
rule = "ignorealpha 0.19";
|
|
||||||
namespace = "^(blur-bg.*)";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
exec-once = [
|
|
||||||
"ags"
|
|
||||||
"sleep 3; ags request 'open win-applauncher'"
|
|
||||||
];
|
|
||||||
|
|
||||||
bind = map mkBind [
|
|
||||||
{
|
|
||||||
modifier = "$mainMod SHIFT";
|
|
||||||
key = "E";
|
|
||||||
command = "ags toggle win-powermenu";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
modifier = "$mainMod";
|
|
||||||
key = "D";
|
|
||||||
command = "ags toggle win-applauncher";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
modifier = "$mainMod";
|
|
||||||
key = "V";
|
|
||||||
command = "ags toggle win-clipboard";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "Print";
|
|
||||||
command = "ags toggle win-screenshot";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
key = "XF86AudioMute";
|
|
||||||
command = "pactl set-sink-mute @DEFAULT_SINK@ toggle";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "XF86AudioMicMute";
|
|
||||||
command = "pactl set-source-mute @DEFAULT_SOURCE@ toggle";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
modifier = "$mainMod";
|
|
||||||
key = "Print";
|
|
||||||
command = "bash -c \"grim -g \\\"$(slurp)\\\" - | satty -f -\"";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
binde = map mkBind [
|
|
||||||
{
|
|
||||||
key = "XF86MonBrightnessUp";
|
|
||||||
command = "ags request 'Brightness.screen +0.05'";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "XF86MonBrightnessDown";
|
|
||||||
command = "ags request 'Brightness.screen -0.05'";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
key = "XF86AudioRaiseVolume";
|
|
||||||
command = "wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+ & ags request 'popup speaker' &";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "XF86AudioLowerVolume";
|
|
||||||
command = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- & ags request 'popup speaker' &";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
bindn = map mkBind [
|
|
||||||
{
|
|
||||||
key = "Escape";
|
|
||||||
command = "ags request closeAll";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
bindr = map mkBind [
|
|
||||||
{
|
|
||||||
modifier = "CAPS";
|
|
||||||
key = "Caps_Lock";
|
|
||||||
command = "ags request fetchCapsState";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ self: {
|
||||||
|
|
||||||
gtkSessionLock = gtk-session-lock.packages.${pkgs.system}.default;
|
gtkSessionLock = gtk-session-lock.packages.${pkgs.system}.default;
|
||||||
|
|
||||||
inherit (lib) attrValues boolToString filter getExe optionalAttrs optionals;
|
inherit (lib) attrValues boolToString filter getExe mkIf optionalAttrs optionals;
|
||||||
|
|
||||||
inherit (osConfig.networking) hostName;
|
inherit (osConfig.networking) hostName;
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ self: {
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
config = {
|
config = mkIf cfgDesktop.ags.enable {
|
||||||
# Make these accessible outside these files
|
# Make these accessible outside these files
|
||||||
programs.ags = {
|
programs.ags = {
|
||||||
package = ags.packages.${pkgs.system}.ags.override {
|
package = ags.packages.${pkgs.system}.ags.override {
|
||||||
|
|
|
@ -7,8 +7,8 @@
|
||||||
inherit (lib) mkIf;
|
inherit (lib) mkIf;
|
||||||
|
|
||||||
cfg = config.roles.base;
|
cfg = config.roles.base;
|
||||||
in
|
in {
|
||||||
mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
fonts = {
|
fonts = {
|
||||||
fontconfig = {
|
fontconfig = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -45,4 +45,8 @@ in
|
||||||
# Select internationalisation properties.
|
# Select internationalisation properties.
|
||||||
i18n.defaultLocale = "en_CA.UTF-8";
|
i18n.defaultLocale = "en_CA.UTF-8";
|
||||||
console.useXkbConfig = true;
|
console.useXkbConfig = true;
|
||||||
}
|
};
|
||||||
|
|
||||||
|
# For accurate stack trace
|
||||||
|
_file = ./default.nix;
|
||||||
|
}
|
||||||
|
|
|
@ -23,8 +23,8 @@
|
||||||
${updatedb} -o ${database} --prunefs "${pruneFS}" \
|
${updatedb} -o ${database} --prunefs "${pruneFS}" \
|
||||||
--prunepaths "${prunePaths}" --prunenames "${pruneNames}"
|
--prunepaths "${prunePaths}" --prunenames "${pruneNames}"
|
||||||
'';
|
'';
|
||||||
in
|
in {
|
||||||
mkIf (baseCfg.enable) {
|
config = mkIf baseCfg.enable {
|
||||||
users.users.${baseCfg.user}.extraGroups = [
|
users.users.${baseCfg.user}.extraGroups = [
|
||||||
locateGroup
|
locateGroup
|
||||||
];
|
];
|
||||||
|
@ -79,4 +79,8 @@ in
|
||||||
".svn"
|
".svn"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
};
|
||||||
|
|
||||||
|
# For accurate stack trace
|
||||||
|
_file = ./default.nix;
|
||||||
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@ self: {
|
||||||
|
|
||||||
cfg = config.roles.base;
|
cfg = config.roles.base;
|
||||||
in {
|
in {
|
||||||
config = mkIf (cfg.enable) {
|
config = mkIf cfg.enable {
|
||||||
nixpkgs.overlays =
|
nixpkgs.overlays =
|
||||||
(map (i: self.inputs.${i}.overlays.default) [
|
(map (i: self.inputs.${i}.overlays.default) [
|
||||||
"discord-overlay"
|
"discord-overlay"
|
||||||
|
|
|
@ -14,8 +14,8 @@
|
||||||
then unique (a ++ b)
|
then unique (a ++ b)
|
||||||
else b)) {}
|
else b)) {}
|
||||||
list;
|
list;
|
||||||
in
|
in {
|
||||||
mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
(pkgs.writeShellApplication {
|
(pkgs.writeShellApplication {
|
||||||
name = "rebuild-no-cache";
|
name = "rebuild-no-cache";
|
||||||
|
@ -50,4 +50,8 @@ in
|
||||||
(mkSubstituterConf 10 "https://cache-apt.nelim.org" "cache-apt.nelim.org:NLAsWxa2Qbm4b+hHimjCpZfm48a4oN4O/GPZY9qpjNw=")
|
(mkSubstituterConf 10 "https://cache-apt.nelim.org" "cache-apt.nelim.org:NLAsWxa2Qbm4b+hHimjCpZfm48a4oN4O/GPZY9qpjNw=")
|
||||||
]);
|
]);
|
||||||
};
|
};
|
||||||
}
|
};
|
||||||
|
|
||||||
|
# For accurate stack trace
|
||||||
|
_file = ./default.nix;
|
||||||
|
}
|
||||||
|
|
|
@ -1,32 +1,42 @@
|
||||||
{...}: {
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkIf;
|
||||||
|
|
||||||
|
cfg = config.services.borgbackup;
|
||||||
|
in {
|
||||||
imports = [./module.nix];
|
imports = [./module.nix];
|
||||||
|
|
||||||
config.services.borgbackup = {
|
config = mkIf (cfg.configs != {}) {
|
||||||
existingRepos = [
|
services.borgbackup = {
|
||||||
{
|
existingRepos = [
|
||||||
name = "docker";
|
{
|
||||||
host = "nos";
|
name = "docker";
|
||||||
authorizedKeys = [
|
host = "nos";
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPijoxuSwH9IrS4poewzHHwe64UoX4QY7Qix5VhEdqKR root@servivi"
|
authorizedKeys = [
|
||||||
];
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPijoxuSwH9IrS4poewzHHwe64UoX4QY7Qix5VhEdqKR root@servivi"
|
||||||
}
|
];
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "mc";
|
name = "mc";
|
||||||
host = "servivi";
|
host = "servivi";
|
||||||
authorizedKeys = [
|
authorizedKeys = [
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPijoxuSwH9IrS4poewzHHwe64UoX4QY7Qix5VhEdqKR root@servivi"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPijoxuSwH9IrS4poewzHHwe64UoX4QY7Qix5VhEdqKR root@servivi"
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "seven-days";
|
name = "seven-days";
|
||||||
host = "nos";
|
host = "nos";
|
||||||
authorizedKeys = [
|
authorizedKeys = [
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPijoxuSwH9IrS4poewzHHwe64UoX4QY7Qix5VhEdqKR root@servivi"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPijoxuSwH9IrS4poewzHHwe64UoX4QY7Qix5VhEdqKR root@servivi"
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# For accurate stack trace
|
# For accurate stack trace
|
||||||
|
|
|
@ -92,7 +92,7 @@ self: {
|
||||||
}/Caddyfile";
|
}/Caddyfile";
|
||||||
in {
|
in {
|
||||||
options.services.caddy.virtualHosts = mkOption {
|
options.services.caddy.virtualHosts = mkOption {
|
||||||
type = types.attrsOf (types.submodule (import ./vhost-options.nix {inherit cfg;}));
|
type = types.attrsOf (types.submodule (import ./vhost-options.nix cfg));
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{cfg}: {
|
cfg: {
|
||||||
lib,
|
lib,
|
||||||
name,
|
name,
|
||||||
...
|
...
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{cfg}: {
|
cfg: {
|
||||||
lib,
|
lib,
|
||||||
name,
|
name,
|
||||||
...
|
...
|
||||||
|
@ -22,7 +22,7 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
subDirectories = mkOption {
|
subDirectories = mkOption {
|
||||||
type = types.attrsOf (types.submodule (import ./sub-dir-options.nix {inherit cfg;}));
|
type = types.attrsOf (types.submodule (import ./sub-dir-options.nix cfg));
|
||||||
default = {};
|
default = {};
|
||||||
example = literalExpression ''
|
example = literalExpression ''
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{cfg}: {lib, ...}: let
|
cfg: {lib, ...}: let
|
||||||
inherit (lib) literalExpression mkOption types;
|
inherit (lib) literalExpression mkOption types;
|
||||||
in {
|
in {
|
||||||
options = {
|
options = {
|
||||||
|
@ -12,7 +12,7 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
subDomains = mkOption {
|
subDomains = mkOption {
|
||||||
type = types.attrsOf (types.submodule (import ./sub-domain-options.nix {inherit cfg;}));
|
type = types.attrsOf (types.submodule (import ./sub-domain-options.nix cfg));
|
||||||
default = {};
|
default = {};
|
||||||
example = literalExpression ''
|
example = literalExpression ''
|
||||||
{
|
{
|
||||||
|
@ -30,7 +30,7 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
subDirectories = mkOption {
|
subDirectories = mkOption {
|
||||||
type = types.attrsOf (types.submodule (import ./sub-dir-options.nix {inherit cfg;}));
|
type = types.attrsOf (types.submodule (import ./sub-dir-options.nix cfg));
|
||||||
default = {};
|
default = {};
|
||||||
example = literalExpression ''
|
example = literalExpression ''
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,10 +3,10 @@ self: {
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib) elemAt mkOption types;
|
|
||||||
|
|
||||||
inherit (self.inputs) home-manager;
|
inherit (self.inputs) home-manager;
|
||||||
|
|
||||||
|
inherit (lib) elemAt mkIf mkOption types;
|
||||||
|
|
||||||
cfg = config.roles.desktop;
|
cfg = config.roles.desktop;
|
||||||
flakeDir = config.environment.variables.FLAKE;
|
flakeDir = config.environment.variables.FLAKE;
|
||||||
in {
|
in {
|
||||||
|
@ -18,17 +18,24 @@ in {
|
||||||
home-manager.nixosModules.home-manager
|
home-manager.nixosModules.home-manager
|
||||||
];
|
];
|
||||||
|
|
||||||
config.assertions = [
|
config = mkIf cfg.enable {
|
||||||
{
|
assertions = [
|
||||||
assertion = lib.hasPrefix "/home/${cfg.user}/" flakeDir;
|
{
|
||||||
message = ''
|
assertion = lib.hasPrefix "/home/${cfg.user}/" flakeDir;
|
||||||
Your $FLAKE environment variable needs to point to a directory in
|
message = ''
|
||||||
the main users' home to use the desktop module.
|
Your $FLAKE environment variable needs to point to a directory in
|
||||||
'';
|
the main users' home to use the desktop module.
|
||||||
}
|
'';
|
||||||
];
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
options.roles.desktop = {
|
options.roles.desktop = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
|
||||||
user = mkOption {
|
user = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
description = ''
|
description = ''
|
||||||
|
|
|
@ -6,6 +6,19 @@ self: {
|
||||||
}: let
|
}: let
|
||||||
inherit (self.inputs) hyprland;
|
inherit (self.inputs) hyprland;
|
||||||
inherit (self.lib.hypr) mkBind;
|
inherit (self.lib.hypr) mkBind;
|
||||||
|
|
||||||
|
inherit (lib) concatStringsSep mkIf optionals;
|
||||||
|
|
||||||
|
cfg = config.roles.desktop;
|
||||||
|
|
||||||
|
hyprCfg =
|
||||||
|
config
|
||||||
|
.home-manager
|
||||||
|
.users
|
||||||
|
.${cfg.user}
|
||||||
|
.wayland
|
||||||
|
.windowManager
|
||||||
|
.hyprland;
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
(import ../../ags self)
|
(import ../../ags self)
|
||||||
|
@ -18,20 +31,7 @@ in {
|
||||||
(import ./modules/security.nix self)
|
(import ./modules/security.nix self)
|
||||||
];
|
];
|
||||||
|
|
||||||
config = let
|
config = mkIf cfg.enable {
|
||||||
inherit (lib) concatStringsSep optionals;
|
|
||||||
|
|
||||||
cfg = config.roles.desktop;
|
|
||||||
|
|
||||||
hyprCfg =
|
|
||||||
config
|
|
||||||
.home-manager
|
|
||||||
.users
|
|
||||||
.${cfg.user}
|
|
||||||
.wayland
|
|
||||||
.windowManager
|
|
||||||
.hyprland;
|
|
||||||
in {
|
|
||||||
services = {
|
services = {
|
||||||
dbus.enable = true;
|
dbus.enable = true;
|
||||||
gvfs.enable = true;
|
gvfs.enable = true;
|
||||||
|
|
|
@ -1,5 +1,14 @@
|
||||||
{pkgs, ...}: {
|
{
|
||||||
config = {
|
lib,
|
||||||
|
osConfig,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkIf;
|
||||||
|
|
||||||
|
cfg = osConfig.roles.desktop;
|
||||||
|
in {
|
||||||
|
config = mkIf cfg.enable {
|
||||||
programs.bash.shellAliases = {
|
programs.bash.shellAliases = {
|
||||||
# https://wiki.hyprland.org/Contributing-and-Debugging/#lsp-and-formatting
|
# https://wiki.hyprland.org/Contributing-and-Debugging/#lsp-and-formatting
|
||||||
"mkCMakeFiles" = "${pkgs.cmake}/bin/cmake -S . -B build/ -G Ninja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON";
|
"mkCMakeFiles" = "${pkgs.cmake}/bin/cmake -S . -B build/ -G Ninja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON";
|
||||||
|
|
|
@ -2,10 +2,12 @@
|
||||||
lib,
|
lib,
|
||||||
osConfig,
|
osConfig,
|
||||||
...
|
...
|
||||||
}: {
|
}: let
|
||||||
config = let
|
inherit (lib) mkIf;
|
||||||
cfg = osConfig.roles.desktop;
|
|
||||||
in {
|
cfg = osConfig.roles.desktop;
|
||||||
|
in {
|
||||||
|
config = mkIf cfg.enable {
|
||||||
programs = {
|
programs = {
|
||||||
# https://codeberg.org/dnkl/foot/wiki#spawning-new-terminal-instances-in-the-current-working-directory
|
# https://codeberg.org/dnkl/foot/wiki#spawning-new-terminal-instances-in-the-current-working-directory
|
||||||
bash.bashrcExtra =
|
bash.bashrcExtra =
|
||||||
|
|
|
@ -1,7 +1,16 @@
|
||||||
self: {pkgs, ...}: let
|
self: {
|
||||||
|
lib,
|
||||||
|
osConfig,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
inherit (self.lib.hypr) mkBind;
|
inherit (self.lib.hypr) mkBind;
|
||||||
|
|
||||||
|
inherit (lib) mkIf;
|
||||||
|
|
||||||
|
cfg = osConfig.roles.desktop;
|
||||||
in {
|
in {
|
||||||
config = {
|
config = mkIf cfg.enable {
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
plugins = [self.inputs.hyprland-plugins.packages.${pkgs.system}.hyprexpo];
|
plugins = [self.inputs.hyprland-plugins.packages.${pkgs.system}.hyprexpo];
|
||||||
|
|
||||||
|
|
|
@ -4,12 +4,13 @@ self: {
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib) map mkIf;
|
|
||||||
inherit (self.lib.hypr) mkBind;
|
inherit (self.lib.hypr) mkBind;
|
||||||
|
|
||||||
|
inherit (lib) map mkIf;
|
||||||
|
|
||||||
cfg = osConfig.roles.desktop;
|
cfg = osConfig.roles.desktop;
|
||||||
in {
|
in {
|
||||||
config = mkIf cfg.isTouchscreen {
|
config = mkIf (cfg.enable && cfg.isTouchscreen) {
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
plugins = [self.inputs.hyprgrass.packages.${pkgs.system}.default];
|
plugins = [self.inputs.hyprgrass.packages.${pkgs.system}.default];
|
||||||
|
|
||||||
|
|
|
@ -2,25 +2,27 @@ self: {
|
||||||
osConfig,
|
osConfig,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: {
|
}: let
|
||||||
config = let
|
inherit (self.lib.hypr) mkBind;
|
||||||
inherit (lib) map;
|
|
||||||
inherit (self.lib.hypr) mkBind;
|
|
||||||
|
|
||||||
inherit (osConfig.services.xserver) xkb;
|
inherit (lib) mkIf;
|
||||||
inherit (osConfig.roles.desktop) mainMonitor;
|
|
||||||
|
|
||||||
miceNames = [
|
cfg = osConfig.roles.desktop;
|
||||||
"logitech-g502-x"
|
|
||||||
"logitech-g502-hero-gaming-mouse"
|
|
||||||
];
|
|
||||||
|
|
||||||
mkConf = name: {
|
inherit (osConfig.services.xserver) xkb;
|
||||||
inherit name;
|
|
||||||
sensitivity = 0;
|
miceNames = [
|
||||||
accel_profile = "flat";
|
"logitech-g502-x"
|
||||||
};
|
"logitech-g502-hero-gaming-mouse"
|
||||||
in {
|
];
|
||||||
|
|
||||||
|
mkConf = name: {
|
||||||
|
inherit name;
|
||||||
|
sensitivity = 0;
|
||||||
|
accel_profile = "flat";
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
config = mkIf cfg.enable {
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
settings = {
|
settings = {
|
||||||
device = map mkConf miceNames;
|
device = map mkConf miceNames;
|
||||||
|
@ -31,8 +33,8 @@ self: {
|
||||||
};
|
};
|
||||||
|
|
||||||
exec-once =
|
exec-once =
|
||||||
if mainMonitor != null
|
if cfg.mainMonitor != null
|
||||||
then ["hyprctl dispatch focusmonitor ${mainMonitor}"]
|
then ["hyprctl dispatch focusmonitor ${cfg.mainMonitor}"]
|
||||||
else [];
|
else [];
|
||||||
|
|
||||||
input = {
|
input = {
|
||||||
|
|
|
@ -1,7 +1,16 @@
|
||||||
self: {pkgs, ...}: {
|
self: {
|
||||||
config = let
|
lib,
|
||||||
inherit (self.scopedPackages.${pkgs.system}) mpvScripts;
|
osConfig,
|
||||||
in {
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (self.scopedPackages.${pkgs.system}) mpvScripts;
|
||||||
|
|
||||||
|
inherit (lib) mkIf;
|
||||||
|
|
||||||
|
cfg = osConfig.roles.desktop;
|
||||||
|
in {
|
||||||
|
config = mkIf cfg.enable {
|
||||||
# For kdialog-open-files
|
# For kdialog-open-files
|
||||||
home.packages = [
|
home.packages = [
|
||||||
pkgs.kdialog
|
pkgs.kdialog
|
||||||
|
|
|
@ -1,9 +1,18 @@
|
||||||
self: {pkgs, ...}: let
|
self: {
|
||||||
|
lib,
|
||||||
|
osConfig,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
inherit (self.inputs) nixpkgs-wayland;
|
inherit (self.inputs) nixpkgs-wayland;
|
||||||
|
|
||||||
|
waypkgs = nixpkgs-wayland.packages.${pkgs.system};
|
||||||
|
|
||||||
|
inherit (lib) mkIf;
|
||||||
|
|
||||||
|
cfg = osConfig.roles.desktop;
|
||||||
in {
|
in {
|
||||||
config = let
|
config = mkIf cfg.enable {
|
||||||
waypkgs = nixpkgs-wayland.packages.${pkgs.system};
|
|
||||||
in {
|
|
||||||
programs = {
|
programs = {
|
||||||
obs-studio = {
|
obs-studio = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
@ -1,9 +1,17 @@
|
||||||
self: {...}: let
|
self: {
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
inherit (self.inputs) nix-gaming;
|
inherit (self.inputs) nix-gaming;
|
||||||
|
|
||||||
|
inherit (lib) mkIf;
|
||||||
|
|
||||||
|
cfg = config.roles.desktop;
|
||||||
in {
|
in {
|
||||||
imports = [nix-gaming.nixosModules.pipewireLowLatency];
|
imports = [nix-gaming.nixosModules.pipewireLowLatency];
|
||||||
|
|
||||||
config = {
|
config = mkIf cfg.enable {
|
||||||
services = {
|
services = {
|
||||||
pulseaudio.enable = false;
|
pulseaudio.enable = false;
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,13 @@
|
||||||
{config, ...}: {
|
{
|
||||||
config = let
|
config,
|
||||||
cfg = config.roles.desktop;
|
lib,
|
||||||
in {
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkIf;
|
||||||
|
|
||||||
|
cfg = config.roles.desktop;
|
||||||
|
in {
|
||||||
|
config = mkIf cfg.enable {
|
||||||
programs.dconf.enable = true;
|
programs.dconf.enable = true;
|
||||||
|
|
||||||
home-manager.users.${cfg.user} = {
|
home-manager.users.${cfg.user} = {
|
||||||
|
|
|
@ -1,11 +1,14 @@
|
||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: let
|
||||||
config = let
|
inherit (lib) mkIf;
|
||||||
cfg = config.roles.desktop;
|
|
||||||
in {
|
cfg = config.roles.desktop;
|
||||||
|
in {
|
||||||
|
config = mkIf cfg.enable {
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
pkgs.plasma5Packages.kio-admin
|
pkgs.plasma5Packages.kio-admin
|
||||||
];
|
];
|
||||||
|
|
|
@ -6,21 +6,22 @@ self: {
|
||||||
}: let
|
}: let
|
||||||
inherit (self.lib.hypr) mkBind;
|
inherit (self.lib.hypr) mkBind;
|
||||||
inherit (self.inputs) jellyfin-flake;
|
inherit (self.inputs) jellyfin-flake;
|
||||||
|
|
||||||
|
inherit (lib) getExe mkIf optionals;
|
||||||
|
inherit (pkgs.writers) writeTOML;
|
||||||
|
|
||||||
|
cfg = config.roles.desktop;
|
||||||
|
|
||||||
|
flakeDir = config.environment.variables.FLAKE;
|
||||||
|
isNvidia = config.nvidia.enable;
|
||||||
|
|
||||||
|
restartTailscale = pkgs.writeShellScriptBin "restartTailscale" ''
|
||||||
|
sudo ${pkgs.systemd}/bin/systemctl restart tailscaled.service
|
||||||
|
'';
|
||||||
in {
|
in {
|
||||||
imports = [./dolphin.nix];
|
imports = [./dolphin.nix];
|
||||||
|
|
||||||
config = let
|
config = mkIf cfg.enable {
|
||||||
inherit (lib) getExe map optionals;
|
|
||||||
inherit (pkgs.writers) writeTOML;
|
|
||||||
|
|
||||||
flakeDir = config.environment.variables.FLAKE;
|
|
||||||
cfg = config.roles.desktop;
|
|
||||||
isNvidia = config.nvidia.enable;
|
|
||||||
|
|
||||||
restartTailscale = pkgs.writeShellScriptBin "restartTailscale" ''
|
|
||||||
sudo ${pkgs.systemd}/bin/systemctl restart tailscaled.service
|
|
||||||
'';
|
|
||||||
in {
|
|
||||||
programs.kdeconnect.enable = true;
|
programs.kdeconnect.enable = true;
|
||||||
|
|
||||||
security.sudo.extraRules = [
|
security.sudo.extraRules = [
|
||||||
|
|
|
@ -1,5 +1,14 @@
|
||||||
{pkgs, ...}: {
|
{
|
||||||
config = {
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkIf;
|
||||||
|
|
||||||
|
cfg = config.roles.desktop;
|
||||||
|
in {
|
||||||
|
config = mkIf cfg.enable {
|
||||||
services = {
|
services = {
|
||||||
# Enable CUPS to print documents.
|
# Enable CUPS to print documents.
|
||||||
printing = {
|
printing = {
|
||||||
|
|
|
@ -1,7 +1,15 @@
|
||||||
self: {pkgs, ...}: let
|
self: {
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
inherit (self.packages.${pkgs.system}) libratbag piper;
|
inherit (self.packages.${pkgs.system}) libratbag piper;
|
||||||
|
inherit (lib) mkIf;
|
||||||
|
|
||||||
|
cfg = config.roles.desktop;
|
||||||
in {
|
in {
|
||||||
config = {
|
config = mkIf cfg.enable {
|
||||||
services.ratbagd = {
|
services.ratbagd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
|
|
|
@ -3,44 +3,45 @@ self: {
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: let
|
||||||
config = let
|
inherit (self.lib.hypr) mkBind;
|
||||||
inherit (self.lib.hypr) mkBind;
|
|
||||||
inherit (lib) getExe map mkIf;
|
|
||||||
|
|
||||||
cfg = config.roles.desktop;
|
inherit (lib) getExe map mkIf;
|
||||||
|
|
||||||
hmCfg = config.home-manager.users.${cfg.user};
|
cfg = config.roles.desktop;
|
||||||
hyprPkg = hmCfg.wayland.windowManager.hyprland.finalPackage;
|
|
||||||
|
|
||||||
# See modules/ags/packages.nix
|
hmCfg = config.home-manager.users.${cfg.user};
|
||||||
lockPkg = hmCfg.programs.ags.lockPkg;
|
hyprPkg = hmCfg.wayland.windowManager.hyprland.finalPackage;
|
||||||
|
|
||||||
runInDesktop = pkgs.writeShellApplication {
|
# See modules/ags/packages.nix
|
||||||
name = "runInDesktop";
|
lockPkg = hmCfg.programs.ags.lockPkg;
|
||||||
runtimeInputs = [
|
|
||||||
pkgs.sudo
|
|
||||||
hyprPkg
|
|
||||||
];
|
|
||||||
|
|
||||||
text = ''
|
runInDesktop = pkgs.writeShellApplication {
|
||||||
params=( "$@" )
|
name = "runInDesktop";
|
||||||
user="$(id -u ${cfg.user})"
|
runtimeInputs = [
|
||||||
readarray -t SIGS <<< "$(ls "/run/user/$user/hypr/")"
|
pkgs.sudo
|
||||||
|
hyprPkg
|
||||||
|
];
|
||||||
|
|
||||||
run() {
|
text = ''
|
||||||
export HYPRLAND_INSTANCE_SIGNATURE="$1"
|
params=( "$@" )
|
||||||
sudo -Eu ${cfg.user} hyprctl dispatch exec "''${params[@]}"
|
user="$(id -u ${cfg.user})"
|
||||||
}
|
readarray -t SIGS <<< "$(ls "/run/user/$user/hypr/")"
|
||||||
|
|
||||||
i=0
|
run() {
|
||||||
|
export HYPRLAND_INSTANCE_SIGNATURE="$1"
|
||||||
|
sudo -Eu ${cfg.user} hyprctl dispatch exec "''${params[@]}"
|
||||||
|
}
|
||||||
|
|
||||||
while ! run "''${SIGS[$i]}"; do
|
i=0
|
||||||
((i+=1))
|
|
||||||
done
|
while ! run "''${SIGS[$i]}"; do
|
||||||
'';
|
((i+=1))
|
||||||
};
|
done
|
||||||
in {
|
'';
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
config = mkIf cfg.enable {
|
||||||
services.acpid = mkIf cfg.isLaptop {
|
services.acpid = mkIf cfg.isLaptop {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
|
|
|
@ -1,29 +1,32 @@
|
||||||
self: {
|
self: {
|
||||||
config,
|
config,
|
||||||
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: let
|
||||||
config = let
|
inherit (lib) mkIf;
|
||||||
cfg = config.roles.desktop;
|
|
||||||
agsCfg = hmCfg.programs.ags;
|
|
||||||
hmCfg = config.home-manager.users.${cfg.user};
|
|
||||||
|
|
||||||
hyprland = hmCfg.wayland.windowManager.hyprland.finalPackage;
|
cfg = config.roles.desktop;
|
||||||
|
agsCfg = hmCfg.programs.ags;
|
||||||
|
hmCfg = config.home-manager.users.${cfg.user};
|
||||||
|
|
||||||
agsConfig = let
|
hyprland = hmCfg.wayland.windowManager.hyprland.finalPackage;
|
||||||
homeFiles = config.home-manager.users.${cfg.user}.home.file;
|
|
||||||
|
|
||||||
nodeModules = homeFiles."${agsCfg.configDir}/node_modules".source;
|
agsConfig = let
|
||||||
varsTs = homeFiles."${agsCfg.configDir}/widgets/lockscreen/vars.ts".source;
|
homeFiles = config.home-manager.users.${cfg.user}.home.file;
|
||||||
in
|
|
||||||
pkgs.runCommandLocal "agsConfig" {} ''
|
nodeModules = homeFiles."${agsCfg.configDir}/node_modules".source;
|
||||||
cp -ar ${../../ags/config}/* ./.
|
varsTs = homeFiles."${agsCfg.configDir}/widgets/lockscreen/vars.ts".source;
|
||||||
chmod +w -R ./.
|
in
|
||||||
cp -ar ${varsTs} ./widgets/lockscreen/vars.ts
|
pkgs.runCommandLocal "agsConfig" {} ''
|
||||||
cp -ar ${nodeModules} ./node_modules
|
cp -ar ${self}/modules/ags/config/* ./.
|
||||||
${agsCfg.package}/bin/ags bundle ./app.ts $out
|
chmod +w -R ./.
|
||||||
'';
|
cp -ar ${varsTs} ./widgets/lockscreen/vars.ts
|
||||||
in {
|
cp -ar ${nodeModules} ./node_modules
|
||||||
|
${agsCfg.package}/bin/ags bundle ./app.ts $out
|
||||||
|
'';
|
||||||
|
in {
|
||||||
|
config = mkIf cfg.enable {
|
||||||
assertions = [
|
assertions = [
|
||||||
{
|
{
|
||||||
assertion = cfg.ags.enable;
|
assertion = cfg.ags.enable;
|
|
@ -3,58 +3,57 @@ self: {
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: let
|
||||||
|
inherit (lib) mkIf;
|
||||||
|
|
||||||
|
cfg = config.roles.desktop;
|
||||||
|
|
||||||
|
hyprland =
|
||||||
|
config
|
||||||
|
.home-manager
|
||||||
|
.users
|
||||||
|
.${cfg.user}
|
||||||
|
.wayland
|
||||||
|
.windowManager
|
||||||
|
.hyprland
|
||||||
|
.finalPackage;
|
||||||
|
|
||||||
|
# Hide TTY on launch
|
||||||
|
cmd = toString (pkgs.writeShellScript "hyprland-wrapper" ''
|
||||||
|
trap 'systemctl --user stop hyprland-session.target; sleep 1' EXIT
|
||||||
|
exec Hyprland >/dev/null
|
||||||
|
'');
|
||||||
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
(import ./ags.nix self)
|
(import ./ags self)
|
||||||
(import ./hyprland.nix self)
|
(import ./hyprland self)
|
||||||
];
|
];
|
||||||
|
|
||||||
config = let
|
config = mkIf (cfg.enable && cfg.displayManager.enable) {
|
||||||
inherit (lib) mkIf;
|
services = {
|
||||||
|
displayManager.sessionPackages = [hyprland];
|
||||||
|
|
||||||
cfg = config.roles.desktop;
|
greetd = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
default_session = {
|
||||||
|
command = cmd;
|
||||||
|
user = "greeter";
|
||||||
|
};
|
||||||
|
|
||||||
hyprland =
|
initial_session = {
|
||||||
config
|
command = cmd;
|
||||||
.home-manager
|
user = cfg.user;
|
||||||
.users
|
|
||||||
.${cfg.user}
|
|
||||||
.wayland
|
|
||||||
.windowManager
|
|
||||||
.hyprland
|
|
||||||
.finalPackage;
|
|
||||||
|
|
||||||
# Hide TTY on launch
|
|
||||||
cmd = toString (pkgs.writeShellScript "hyprland-wrapper" ''
|
|
||||||
trap 'systemctl --user stop hyprland-session.target; sleep 1' EXIT
|
|
||||||
exec Hyprland >/dev/null
|
|
||||||
'');
|
|
||||||
in
|
|
||||||
mkIf cfg.displayManager.enable {
|
|
||||||
services = {
|
|
||||||
displayManager.sessionPackages = [hyprland];
|
|
||||||
|
|
||||||
greetd = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
default_session = {
|
|
||||||
command = cmd;
|
|
||||||
user = "greeter";
|
|
||||||
};
|
|
||||||
|
|
||||||
initial_session = {
|
|
||||||
command = cmd;
|
|
||||||
user = cfg.user;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# unlock GPG keyring on login
|
|
||||||
services.gnome.gnome-keyring.enable = true;
|
|
||||||
security.pam.services.greetd.enableGnomeKeyring = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# unlock GPG keyring on login
|
||||||
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
security.pam.services.greetd.enableGnomeKeyring = true;
|
||||||
|
};
|
||||||
|
|
||||||
# For accurate stack trace
|
# For accurate stack trace
|
||||||
_file = ./default.nix;
|
_file = ./default.nix;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,28 +3,28 @@ self: {
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: let
|
||||||
config = let
|
inherit (self.lib.hypr) mkAnimation;
|
||||||
inherit (lib) optionals;
|
|
||||||
inherit (self.lib.hypr) mkAnimation;
|
|
||||||
|
|
||||||
inherit (import ./setupMonitors.nix {inherit config pkgs;}) setupMonitors;
|
inherit (lib) mkIf optionals;
|
||||||
|
|
||||||
cfg = config.roles.desktop;
|
inherit (import ./setupMonitors.nix {inherit config pkgs;}) setupMonitors;
|
||||||
|
|
||||||
# Nix stuff
|
cfg = config.roles.desktop;
|
||||||
cfgHypr =
|
|
||||||
config
|
cfgHypr =
|
||||||
.home-manager
|
config
|
||||||
.users
|
.home-manager
|
||||||
.${cfg.user}
|
.users
|
||||||
.wayland
|
.${cfg.user}
|
||||||
.windowManager
|
.wayland
|
||||||
.hyprland;
|
.windowManager
|
||||||
in {
|
.hyprland;
|
||||||
|
in {
|
||||||
|
config = mkIf cfg.enable {
|
||||||
home-manager.users.greeter = {
|
home-manager.users.greeter = {
|
||||||
imports = [
|
imports = [
|
||||||
(import ../theme self)
|
(import ../../theme self)
|
||||||
];
|
];
|
||||||
|
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
|
@ -73,5 +73,5 @@ self: {
|
||||||
};
|
};
|
||||||
|
|
||||||
# For accurate stack trace
|
# For accurate stack trace
|
||||||
_file = ./hyprland.nix;
|
_file = ./default.nix;
|
||||||
}
|
}
|
|
@ -1,12 +1,21 @@
|
||||||
self: {pkgs, ...}: {
|
self: {
|
||||||
config = let
|
lib,
|
||||||
inherit (self.scopedPackages.${pkgs.system}) dracula;
|
osConfig,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (self.scopedPackages.${pkgs.system}) dracula;
|
||||||
|
|
||||||
cursorTheme = dracula.hyprcursor;
|
inherit (lib) mkIf;
|
||||||
cursorThemeName = "Dracula-cursors";
|
|
||||||
hyprcursorThemeName = "Dracula-hyprcursor";
|
cfg = osConfig.roles.desktop;
|
||||||
cursorSize = 24;
|
|
||||||
in {
|
cursorTheme = dracula.hyprcursor;
|
||||||
|
cursorThemeName = "Dracula-cursors";
|
||||||
|
hyprcursorThemeName = "Dracula-hyprcursor";
|
||||||
|
cursorSize = 24;
|
||||||
|
in {
|
||||||
|
config = mkIf cfg.enable {
|
||||||
home.pointerCursor = {
|
home.pointerCursor = {
|
||||||
name = cursorThemeName;
|
name = cursorThemeName;
|
||||||
package = dracula.gtk;
|
package = dracula.gtk;
|
||||||
|
@ -35,5 +44,5 @@ self: {pkgs, ...}: {
|
||||||
};
|
};
|
||||||
|
|
||||||
# For accurate stack trace
|
# For accurate stack trace
|
||||||
_file = ./cursors.nix;
|
_file = ./default.nix;
|
||||||
}
|
}
|
|
@ -1,26 +1,36 @@
|
||||||
self: {...}: {
|
self: {
|
||||||
|
lib,
|
||||||
|
osConfig,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkIf;
|
||||||
|
|
||||||
|
cfg = osConfig.roles.desktop;
|
||||||
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
./gtk
|
./gtk
|
||||||
./xresources.nix
|
./xresources
|
||||||
|
|
||||||
(import ./cursors.nix self)
|
(import ./cursors self)
|
||||||
(import ./qt.nix self)
|
(import ./hyprpaper self)
|
||||||
(import ./hyprpaper.nix self)
|
(import ./qt self)
|
||||||
];
|
];
|
||||||
|
|
||||||
config.wayland.windowManager.hyprland = {
|
config = mkIf cfg.enable {
|
||||||
settings = {
|
wayland.windowManager.hyprland = {
|
||||||
windowrule = [
|
settings = {
|
||||||
"size 1231 950,title:^(Open Folder)$"
|
windowrule = [
|
||||||
"float,title:^(Open Folder)$"
|
"size 1231 950,title:^(Open Folder)$"
|
||||||
|
"float,title:^(Open Folder)$"
|
||||||
|
|
||||||
"size 1231 950,title:^(Open File)$"
|
"size 1231 950,title:^(Open File)$"
|
||||||
"float,title:^(Open File)$"
|
"float,title:^(Open File)$"
|
||||||
];
|
];
|
||||||
|
|
||||||
layerrule = [
|
layerrule = [
|
||||||
"noanim, selection"
|
"noanim, selection"
|
||||||
];
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -3,12 +3,14 @@
|
||||||
lib,
|
lib,
|
||||||
osConfig,
|
osConfig,
|
||||||
...
|
...
|
||||||
}: {
|
}: let
|
||||||
config = let
|
inherit (lib) mkIf;
|
||||||
inherit (import ./gradience.nix {inherit pkgs lib;}) gradience;
|
|
||||||
|
|
||||||
cfg = osConfig.roles.desktop;
|
inherit (import ./gradience.nix {inherit pkgs lib;}) gradience;
|
||||||
in {
|
|
||||||
|
cfg = osConfig.roles.desktop;
|
||||||
|
in {
|
||||||
|
config = mkIf cfg.enable {
|
||||||
home.packages = [
|
home.packages = [
|
||||||
pkgs.gnomeExtensions.user-themes
|
pkgs.gnomeExtensions.user-themes
|
||||||
];
|
];
|
||||||
|
|
|
@ -1,12 +1,17 @@
|
||||||
self: {
|
self: {
|
||||||
lib,
|
lib,
|
||||||
|
osConfig,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: let
|
||||||
config = let
|
inherit (lib) mkIf;
|
||||||
hyprpaper = self.inputs.hyprpaper.packages.${pkgs.system}.default;
|
|
||||||
wallpaper = toString self.scopedPackages.${pkgs.system}.dracula.wallpaper;
|
cfg = osConfig.roles.desktop;
|
||||||
in {
|
|
||||||
|
hyprpaper = self.inputs.hyprpaper.packages.${pkgs.system}.default;
|
||||||
|
wallpaper = toString self.scopedPackages.${pkgs.system}.dracula.wallpaper;
|
||||||
|
in {
|
||||||
|
config = mkIf cfg.enable {
|
||||||
home.packages = [hyprpaper];
|
home.packages = [hyprpaper];
|
||||||
|
|
||||||
xdg.configFile."hypr/hyprpaper.conf" = {
|
xdg.configFile."hypr/hyprpaper.conf" = {
|
||||||
|
@ -26,5 +31,5 @@ self: {
|
||||||
};
|
};
|
||||||
|
|
||||||
# For accurate stack trace
|
# For accurate stack trace
|
||||||
_file = ./hyprpaper.nix;
|
_file = ./default.nix;
|
||||||
}
|
}
|
|
@ -3,12 +3,14 @@ self: {
|
||||||
osConfig,
|
osConfig,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: let
|
||||||
config = let
|
inherit (self.scopedPackages.${pkgs.system}) dracula;
|
||||||
inherit (self.scopedPackages.${pkgs.system}) dracula;
|
|
||||||
|
|
||||||
cfg = osConfig.roles.desktop;
|
inherit (lib) mkIf;
|
||||||
in {
|
|
||||||
|
cfg = osConfig.roles.desktop;
|
||||||
|
in {
|
||||||
|
config = mkIf cfg.enable {
|
||||||
home.packages = [
|
home.packages = [
|
||||||
pkgs.libsForQt5.qtstyleplugin-kvantum
|
pkgs.libsForQt5.qtstyleplugin-kvantum
|
||||||
pkgs.kdePackages.qtstyleplugin-kvantum
|
pkgs.kdePackages.qtstyleplugin-kvantum
|
||||||
|
@ -44,5 +46,5 @@ self: {
|
||||||
};
|
};
|
||||||
|
|
||||||
# For accurate stack trace
|
# For accurate stack trace
|
||||||
_file = ./qt.nix;
|
_file = ./default.nix;
|
||||||
}
|
}
|
|
@ -1,23 +0,0 @@
|
||||||
{...}: {
|
|
||||||
xresources.extraConfig = ''
|
|
||||||
! Dracula Xresources palette
|
|
||||||
*.foreground: #F8F8F2
|
|
||||||
*.background: #282A36
|
|
||||||
*.color0: #000000
|
|
||||||
*.color8: #4D4D4D
|
|
||||||
*.color1: #FF5555
|
|
||||||
*.color9: #FF6E67
|
|
||||||
*.color2: #50FA7B
|
|
||||||
*.color10: #5AF78E
|
|
||||||
*.color3: #F1FA8C
|
|
||||||
*.color11: #F4F99D
|
|
||||||
*.color4: #BD93F9
|
|
||||||
*.color12: #CAA9FA
|
|
||||||
*.color5: #FF79C6
|
|
||||||
*.color13: #FF92D0
|
|
||||||
*.color6: #8BE9FD
|
|
||||||
*.color14: #9AEDFE
|
|
||||||
*.color7: #BFBFBF
|
|
||||||
*.color15: #E6E6E6
|
|
||||||
'';
|
|
||||||
}
|
|
36
modules/desktop/theme/xresources/default.nix
Normal file
36
modules/desktop/theme/xresources/default.nix
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
osConfig,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkIf;
|
||||||
|
|
||||||
|
cfg = osConfig.roles.desktop;
|
||||||
|
in {
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
xresources.extraConfig = ''
|
||||||
|
! Dracula Xresources palette
|
||||||
|
*.foreground: #F8F8F2
|
||||||
|
*.background: #282A36
|
||||||
|
*.color0: #000000
|
||||||
|
*.color8: #4D4D4D
|
||||||
|
*.color1: #FF5555
|
||||||
|
*.color9: #FF6E67
|
||||||
|
*.color2: #50FA7B
|
||||||
|
*.color10: #5AF78E
|
||||||
|
*.color3: #F1FA8C
|
||||||
|
*.color11: #F4F99D
|
||||||
|
*.color4: #BD93F9
|
||||||
|
*.color12: #CAA9FA
|
||||||
|
*.color5: #FF79C6
|
||||||
|
*.color13: #FF92D0
|
||||||
|
*.color6: #8BE9FD
|
||||||
|
*.color14: #9AEDFE
|
||||||
|
*.color7: #BFBFBF
|
||||||
|
*.color15: #E6E6E6
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# For accurate stack trace
|
||||||
|
_file = ./default.nix;
|
||||||
|
}
|
|
@ -33,7 +33,7 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf (cfg.enable) {
|
config = mkIf cfg.enable {
|
||||||
virtualisation = {
|
virtualisation = {
|
||||||
docker = {
|
docker = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
@ -51,7 +51,7 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf (cfg.enable) {
|
config = mkIf cfg.enable {
|
||||||
# FIXME: https://github.com/NixOS/nixpkgs/issues/339557
|
# FIXME: https://github.com/NixOS/nixpkgs/issues/339557
|
||||||
systemd.services.esphome = {
|
systemd.services.esphome = {
|
||||||
environment.PLATFORMIO_CORE_DIR = mkForce "${stateDir}/.platformio";
|
environment.PLATFORMIO_CORE_DIR = mkForce "${stateDir}/.platformio";
|
||||||
|
|
|
@ -7,26 +7,28 @@
|
||||||
|
|
||||||
cfg = config.boot.plymouth;
|
cfg = config.boot.plymouth;
|
||||||
in {
|
in {
|
||||||
config.boot = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
initrd = {
|
boot = {
|
||||||
verbose = false;
|
initrd = {
|
||||||
systemd.enable = true;
|
verbose = false;
|
||||||
|
systemd.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
consoleLogLevel = 0;
|
||||||
|
|
||||||
|
kernelParams = [
|
||||||
|
"quiet"
|
||||||
|
"splash"
|
||||||
|
"boot.shell_on_fail"
|
||||||
|
"i915.fastboot=1"
|
||||||
|
"loglevel=3"
|
||||||
|
"rd.systemd.show_status=false"
|
||||||
|
"rd.udev.log_level=3"
|
||||||
|
"udev.log_priority=3"
|
||||||
|
];
|
||||||
|
|
||||||
|
loader.timeout = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
consoleLogLevel = 0;
|
|
||||||
|
|
||||||
kernelParams = [
|
|
||||||
"quiet"
|
|
||||||
"splash"
|
|
||||||
"boot.shell_on_fail"
|
|
||||||
"i915.fastboot=1"
|
|
||||||
"loglevel=3"
|
|
||||||
"rd.systemd.show_status=false"
|
|
||||||
"rd.udev.log_level=3"
|
|
||||||
"udev.log_priority=3"
|
|
||||||
];
|
|
||||||
|
|
||||||
loader.timeout = 0;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# For accurate stack trace
|
# For accurate stack trace
|
||||||
|
|
|
@ -2,11 +2,16 @@
|
||||||
inherit (lib) mkOption types;
|
inherit (lib) mkOption types;
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
./sshd.nix
|
./sshd
|
||||||
./tailscale.nix
|
./tailscale
|
||||||
];
|
];
|
||||||
|
|
||||||
options.roles.server = {
|
options.roles.server = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
|
||||||
user = mkOption {
|
user = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
description = ''
|
description = ''
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
cfg = config.roles.server;
|
cfg = config.roles.server;
|
||||||
in {
|
in {
|
||||||
config = mkIf cfg.sshd.enable {
|
config = mkIf (cfg.enable && cfg.sshd.enable) {
|
||||||
services = {
|
services = {
|
||||||
openssh = {
|
openssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -29,5 +29,5 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
# For accurate stack trace
|
# For accurate stack trace
|
||||||
_file = ./sshd.nix;
|
_file = ./default.nix;
|
||||||
}
|
}
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
cfg = config.roles.server;
|
cfg = config.roles.server;
|
||||||
in {
|
in {
|
||||||
config = mkIf cfg.tailscale.enable {
|
config = mkIf (cfg.enable && cfg.tailscale.enable) {
|
||||||
services = {
|
services = {
|
||||||
tailscale = {
|
tailscale = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -48,5 +48,5 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
# For accurate stack trace
|
# For accurate stack trace
|
||||||
_file = ./tailscale.nix;
|
_file = ./default.nix;
|
||||||
}
|
}
|
|
@ -4,14 +4,14 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib) attrValues elemAt hasAttr mkIf mkOption types;
|
inherit (lib) attrValues hasAttr head mkIf mkOption types;
|
||||||
|
|
||||||
cfg = config.programs.tmux;
|
cfg = config.programs.tmux;
|
||||||
|
|
||||||
# Support NixOnDroid
|
# Support NixOnDroid
|
||||||
firstUser =
|
firstUser =
|
||||||
if hasAttr "users" config.home-manager
|
if hasAttr "users" config.home-manager
|
||||||
then elemAt (attrValues config.home-manager.users) 0
|
then head (attrValues config.home-manager.users)
|
||||||
else config.home-manager.config;
|
else config.home-manager.config;
|
||||||
in {
|
in {
|
||||||
options.programs.tmux = {
|
options.programs.tmux = {
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
inherit (lib.strings) concatMapStringsSep concatStringsSep;
|
inherit (lib.strings) concatMapStringsSep concatStringsSep;
|
||||||
|
|
||||||
cfg = config.services.wyoming;
|
cfg = config.services.wyoming;
|
||||||
|
|
||||||
|
forkedPkg = pkgs.callPackage ./pkgs {};
|
||||||
in {
|
in {
|
||||||
options.services.wyoming.openwakeword.vadThreshold = mkOption {
|
options.services.wyoming.openwakeword.vadThreshold = mkOption {
|
||||||
type = types.float;
|
type = types.float;
|
||||||
|
@ -16,9 +18,7 @@ in {
|
||||||
apply = toString;
|
apply = toString;
|
||||||
};
|
};
|
||||||
|
|
||||||
config = let
|
config = {
|
||||||
forkedPkg = pkgs.callPackage ./pkgs {};
|
|
||||||
in {
|
|
||||||
systemd.services = mkIf (cfg.openwakeword.enable) {
|
systemd.services = mkIf (cfg.openwakeword.enable) {
|
||||||
wyoming-openwakeword.serviceConfig = {
|
wyoming-openwakeword.serviceConfig = {
|
||||||
MemoryDenyWriteExecute = mkForce (cfg.openwakeword.package != forkedPkg);
|
MemoryDenyWriteExecute = mkForce (cfg.openwakeword.package != forkedPkg);
|
||||||
|
|
Loading…
Reference in a new issue