feat: add river and foot modules
This commit is contained in:
parent
298aa410eb
commit
e714349fe1
10 changed files with 485 additions and 230 deletions
|
|
@ -47,6 +47,26 @@
|
|||
prompt = "#${mauve}";
|
||||
spinner = "#${rosewater}";
|
||||
};
|
||||
foot.settings.colors = {
|
||||
foreground = text; # Text
|
||||
background = base; # Base
|
||||
regular0 = surface1; # Surface 1
|
||||
regular1 = red; # red
|
||||
regular2 = green; # green
|
||||
regular3 = yellow; # yellow
|
||||
regular4 = blue;
|
||||
regular5 = pink;
|
||||
regular6 = teal;
|
||||
regular7 = subtext1;
|
||||
bright0 = surface2;
|
||||
bright1 = red;
|
||||
bright2 = green;
|
||||
bright3 = yellow;
|
||||
bright4 = blue;
|
||||
bright5 = pink;
|
||||
bright6 = teal;
|
||||
bright7 = subtext0;
|
||||
};
|
||||
kitty.extraConfig = ''
|
||||
# vim:ft=kitty
|
||||
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ in
|
|||
isNormalUser = true;
|
||||
home = "/home/moritz";
|
||||
extraGroups = [ "wheel" "networkmanager" "video" ];
|
||||
initialPassword = "password"; # CHANGE ME PLEASE
|
||||
# initialPassword = "password"; # CHANGE ME PLEASE
|
||||
openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGoAqa2m7hIzZ2LS96Z+RCIlRvhBM/j7h27tMBCwMT+a" # Moritz
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDhtwHDGAZshiQWKkCcPWV9tC83b+bKBgjDcjP/N2CKO" # Laptop
|
||||
|
|
|
|||
30
modules/programs/foot.nix
Normal file
30
modules/programs/foot.nix
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
{ config
|
||||
, lib
|
||||
, ...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.my.programs.foot;
|
||||
in
|
||||
{
|
||||
options.my.programs.foot.enable = mkEnableOption "foot";
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home-manager.users.moritz = {
|
||||
# HACK: to make foot server work
|
||||
systemd.user.services.foot.Service.Environment = "PATH=/run/current-system/sw/bin/";
|
||||
programs.foot = {
|
||||
enable = true;
|
||||
server.enable = true;
|
||||
settings = {
|
||||
main = {
|
||||
term = "xterm-256color";
|
||||
font = "FiraCode Nerd Font:size=8";
|
||||
dpi-aware = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -154,8 +154,9 @@ in
|
|||
bind = $mainMod , D , exec , hyprctl keyword general:layout dwindle
|
||||
bind = $mainMod , M , exec , hyprctl keyword general:layout master
|
||||
bind = $mainMod , R , exec , rofi -show combi
|
||||
bind = $mainMod , RETURN , exec , kitty
|
||||
bind = $mainMod SHIFT , RETURN , exec , kitty -- tmux new "ts || tn home ~"
|
||||
bind = $mainMod , RETURN , exec , footclient
|
||||
bind = $mainMod SHIFT , RETURN , exec , foot
|
||||
# bind = $mainMod SHIFT , RETURN , exec , kitty -- tmux new "ts || tn home ~"
|
||||
|
||||
# XF86 keys
|
||||
binde = , XF86AudioLowerVolume , exec , pamixer -d 5
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ in
|
|||
];
|
||||
programs = {
|
||||
wallpaper.enable = true;
|
||||
kitty.enable = true;
|
||||
foot.enable = true;
|
||||
rofi.enable = true;
|
||||
};
|
||||
wallpapers.enable = true;
|
||||
|
|
|
|||
207
modules/programs/river/default.nix
Normal file
207
modules/programs/river/default.nix
Normal file
|
|
@ -0,0 +1,207 @@
|
|||
{ config
|
||||
, lib
|
||||
, pkgs
|
||||
, inputs
|
||||
, ...
|
||||
} @ args:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.my.programs.river;
|
||||
in
|
||||
{
|
||||
options.my.programs.river = {
|
||||
enable = mkEnableOption "river";
|
||||
keyboardLayouts = mkOption {
|
||||
type = types.listOf types.str;
|
||||
description = "list of keyboard layouts";
|
||||
default = [ "de" "us" ];
|
||||
};
|
||||
monitors = mkOption {
|
||||
type = types.listOf types.str;
|
||||
description = "monitor settings";
|
||||
default = [ ",preferred,auto,1" ];
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.river.enable = true;
|
||||
my = {
|
||||
programs = {
|
||||
wallpaper.enable = true;
|
||||
foot.enable = true;
|
||||
rofi.enable = true;
|
||||
};
|
||||
wallpapers.enable = true;
|
||||
services = {
|
||||
dunst.enable = true;
|
||||
wallpaper = {
|
||||
enable = true;
|
||||
# target = "hyprland-session.target";
|
||||
};
|
||||
# spotify-player.target = "hyprland-session.target";
|
||||
};
|
||||
};
|
||||
|
||||
home-manager.users.moritz = {
|
||||
# enable home-manager module
|
||||
wayland.windowManager.river = {
|
||||
enable = true;
|
||||
settings = {
|
||||
border-width = 2;
|
||||
declare-mode = [
|
||||
"locked"
|
||||
"normal"
|
||||
"passthrough"
|
||||
];
|
||||
map = {
|
||||
normal = {
|
||||
"Super Q" = "close";
|
||||
"Super Return" = "spawn footclient";
|
||||
"Super+Shift Return" = "spawn foot";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# add waybar as a status bar
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
|
||||
# start using systemd service
|
||||
systemd = {
|
||||
enable = true;
|
||||
# target = "hyprland-session.target";
|
||||
};
|
||||
|
||||
settings = {
|
||||
mainBar = {
|
||||
start_hidden = true;
|
||||
layer = "top";
|
||||
position = "top";
|
||||
height = 20;
|
||||
modules-left = [ "river/mode" ];
|
||||
modules-center = [ "river/window" ];
|
||||
modules-right = [ "network" "memory" "cpu" "battery" "clock" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# 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 + 10;
|
||||
command = "${pkgs.systemd}/bin/loginctl lock-session";
|
||||
}
|
||||
];
|
||||
# systemdTarget = "hyprland-session.target";
|
||||
};
|
||||
};
|
||||
|
||||
# adds pam module for swaylock
|
||||
security.pam.services.swaylock = { };
|
||||
|
||||
# add user packages for wayland and hyprland in particular
|
||||
users.users.moritz.packages = with pkgs; [
|
||||
brightnessctl # control brightness
|
||||
grimblast # screenshot tool for hyprland
|
||||
pamixer # pulse audio cli
|
||||
playerctl # control media playback
|
||||
slurp # region select for wayland (for screensharing)
|
||||
wdisplays # manage monitors
|
||||
wl-clipboard # clipboard tool for wayland
|
||||
];
|
||||
|
||||
|
||||
# additional environment variables
|
||||
# environment.sessionVariables =
|
||||
# {
|
||||
# XDG_CURRENT_DESKTOP = "Hyprland";
|
||||
# XDG_SESSION_TYPE = "wayland";
|
||||
# XDG_SESSION_DESKTOP = "Hyprland";
|
||||
# QT_AUTO_SCREEN_SCALE_FACTOR = "1";
|
||||
# QT_QPA_PLATFORM = "wayland;xcb";
|
||||
# QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
||||
# QT_QPA_PLATFORMTHEME = "qt5ct";
|
||||
# _JAVA_AWT_WM_NONEREPARENTING = "1";
|
||||
# } // (optionalAttrs cfg.nvidiaSupport
|
||||
# {
|
||||
# LIBVA_DRIVER_NAME = "nvidia";
|
||||
# GBM_BACKEND = "nvidia-drm";
|
||||
# __GLX_VENDOR_LIBRARY_NAME = "nvidia";
|
||||
# WLR_NO_HARDWARE_CURSORS = "1";
|
||||
# __GL_VRR_ALLOWED = "0";
|
||||
# });
|
||||
|
||||
services = {
|
||||
dbus.enable = true;
|
||||
# use pipewire (needed for screensharing)
|
||||
pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
};
|
||||
xserver = {
|
||||
enable = true;
|
||||
displayManager = {
|
||||
lightdm.enable = true;
|
||||
autoLogin = {
|
||||
enable = true;
|
||||
user = "moritz";
|
||||
};
|
||||
defaultSession = "river";
|
||||
};
|
||||
};
|
||||
};
|
||||
security.rtkit.enable = true;
|
||||
|
||||
# home-manager.users.moritz.systemd.user.services =
|
||||
# let
|
||||
# units = [ "waybar" ];
|
||||
# mkAfter = _: {
|
||||
# Unit = {
|
||||
# After = [ "hyprland-session.target" ];
|
||||
# Wants = [ "hyprland-session.target" ];
|
||||
# };
|
||||
# };
|
||||
# in
|
||||
# genAttrs units mkAfter;
|
||||
#
|
||||
# systemd.user.services =
|
||||
# let
|
||||
# units = [ "pipewire" "xdg-desktop-portal" "xdg-desktop-portal-hyprland" "wireplumber" ];
|
||||
# mkAfter = _: {
|
||||
# after = [ "hyprland-session.target" ];
|
||||
# wants = [ "hyprland-session.target" ];
|
||||
# };
|
||||
# in
|
||||
# genAttrs units mkAfter;
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue