feat(flake): use flake-parts

This commit is contained in:
Moritz Böhme 2023-09-27 12:38:41 +02:00
parent 611584a0be
commit e2a0172e2d
No known key found for this signature in database
GPG key ID: 970C6E89EB0547A9
14 changed files with 576 additions and 489 deletions

View file

@ -53,88 +53,94 @@ in
services.dunst.enable = true;
};
# enable home-manager module
home-manager.users.moritz = {
# import home-manager module
imports = [ inputs.hyprland.homeManagerModules.default ];
# enable home-manager module
wayland.windowManager.hyprland = {
enable = true;
package = hyprland;
recommendedEnvironment = true;
extraConfig = import ./_config.nix args;
};
};
# add waybar as a status bar
home-manager.users.moritz.programs.waybar = {
enable = true;
# start using systemd service
systemd = {
# add waybar as a status bar
programs.waybar = {
enable = true;
target = "graphical-session.target";
};
settings = {
mainBar = {
start_hidden = true;
layer = "top";
position = "top";
height = 20;
modules-left = [ "hyprland/workspaces" ];
modules-center = [ "hyprland/window" ];
modules-right = [ "hyprland/language" "network" "memory" "cpu" "battery" "clock" ];
# start using systemd service
systemd = {
enable = true;
target = "graphical-session.target";
};
settings = {
mainBar = {
start_hidden = true;
layer = "top";
position = "top";
height = 20;
modules-left = [ "hyprland/workspaces" ];
modules-center = [ "hyprland/window" ];
modules-right = [ "hyprland/language" "network" "memory" "cpu" "battery" "clock" ];
};
};
};
};
# lock screen after timeout
home-manager.users.moritz.programs.swaylock = {
enable = true;
settings = {
color = "000000";
# lock screen after timeout
programs.swaylock = {
enable = true;
settings = {
color = "000000";
};
};
services.swayidle = {
enable = true;
events = [
{
event = "before-sleep";
command = "${getExe pkgs.swaylock} -fF";
}
{
event = "lock";
command = "${getExe pkgs.swaylock} -fF";
}
];
timeouts =
let
lockTimeout = 10;
in
[
{
timeout = lockTimeout * 60 - 10;
command = "${pkgs.libnotify}/bin/notify-send 'Locking screen!'";
}
{
timeout = lockTimeout * 60;
command = "${hyprland}/bin/hyprctl dispatch dpms off";
resumeCommand = "${hyprland}/bin/hyprctl dispatch dpms on";
}
{
timeout = lockTimeout * 60 + 10;
command = "${pkgs.systemd}/bin/loginctl lock-session";
}
] ++ optional
(!cfg.nvidiaSupport) # TODO https://github.com/hyprwm/Hyprland/issues/1728
{
timeout = 30 * 60;
command = "${pkgs.systemd}/bin/systemctl suspend-and-hibernate";
};
systemdTarget = "hyprland-session.target";
};
systemd.user.services.nextcloud-client.Service = {
RestartSec = "500ms";
Restart = "on-failure";
};
};
home-manager.users.moritz.services.swayidle = {
enable = true;
events = [
{
event = "before-sleep";
command = "${getExe pkgs.swaylock} -fF";
}
{
event = "lock";
command = "${getExe pkgs.swaylock} -fF";
}
];
timeouts =
let
lockTimeout = 10;
in
[
{
timeout = lockTimeout * 60 - 10;
command = "${pkgs.libnotify}/bin/notify-send 'Locking screen!'";
}
{
timeout = lockTimeout * 60;
command = "${hyprland}/bin/hyprctl dispatch dpms off";
resumeCommand = "${hyprland}/bin/hyprctl dispatch dpms on";
}
{
timeout = lockTimeout * 60 + 10;
command = "${pkgs.systemd}/bin/loginctl lock-session";
}
] ++ optional
(!cfg.nvidiaSupport) # TODO https://github.com/hyprwm/Hyprland/issues/1728
{
timeout = 30 * 60;
command = "${pkgs.systemd}/bin/systemctl suspend-and-hibernate";
};
systemdTarget = "hyprland-session.target";
};
# adds pam module for swaylock
security.pam.services.swaylock = { };
@ -151,11 +157,6 @@ in
requiredBy = [ "xdg-desktop-portal.service" ];
};
home-manager.users.moritz.systemd.user.services.nextcloud-client.Service = {
RestartSec = "500ms";
Restart = "on-failure";
};
# add user packages for wayland and hyprland in particular
users.users.moritz.packages = with pkgs; [
brightnessctl # control brightness