inital commit

This commit is contained in:
wieerwill 2024-11-03 13:36:49 +01:00
commit efe0e47d45

246
home.nix Normal file
View File

@ -0,0 +1,246 @@
{ config, pkgs, lib, ... }:
let
# Define variables for your workspaces and displays
display1 = "card1-eDP-1"; # Replace with your actual display identifier
workspace1 = "1:Web";
workspace2 = "2:App";
workspace3 = "3:Chat";
workspace4 = "4:Read";
workspace5 = "5:Code";
workspace6 = "6:Password";
workspace7 = "7:Shell";
workspace8 = "8:Media";
in
{
# Home Manager needs a bit of information about you and the paths it should
# manage.
home.username = "wieerwill";
home.homeDirectory = "/home/wieerwill";
# This value determines the Home Manager release that your configuration is
# compatible with. This helps avoid breakage when a new Home Manager release
# introduces backwards incompatible changes.
#
# You should not change this value, even if you update Home Manager. If you do
# want to update the value, then make sure to first check the Home Manager
# release notes.
home.stateVersion = "24.05"; # Please read the comment before changing.
# The home.packages option allows you to install Nix packages into your
# environment.
home.packages = with pkgs; [
# List of programs
thunderbird
signal-desktop
vscodium
vlc
keepassxc
alacritty
logseq
okular
firefox
# utility
htop
pulsemixer
brightnessctl
# Sway
grim # screenshot functionality
slurp # screenshot functionality
wl-clipboard # wl-copy and wl-paste for copy/paste from stdin / stdout
mako # notification system developed by swaywm maintainer
# # It is sometimes useful to fine-tune packages, for example, by applying
# # overrides. You can do that directly here, just don't forget the
# # parentheses. Maybe you want to install Nerd Fonts with a limited number of
# # fonts?
(pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
];
# Configure fonts
fonts = {
fontconfig = {
enable = true;
};
};
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
home.file = {
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
# # symlink to the Nix store copy.
# ".screenrc".source = dotfiles/screenrc;
# # You can also set the file content immediately.
# ".gradle/gradle.properties".text = ''
# org.gradle.console=verbose
# org.gradle.daemon.idletimeout=3600000
# '';
};
# Home Manager can also manage your environment variables through
# 'home.sessionVariables'. These will be explicitly sourced when using a
# shell provided by Home Manager. If you don't want to manage your shell
# through Home Manager then you have to manually source 'hm-session-vars.sh'
# located at either
#
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# /etc/profiles/per-user/wieerwill/etc/profile.d/hm-session-vars.sh
#
home.sessionVariables = {
# EDITOR = "emacs";
};
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
programs.alacritty = {
enable = true;
};
programs.git = {
enable = true;
userName = "wieerwill";
userEmail = "robert.jeutter@gmx.de";
extraConfig = {
credential.helper = "${
pkgs.git.override { withLibsecret = true; }
}/bin/git-credential-libsecret";
};
};
programs.neovim = {
enable = true;
#viAlias = true;
#vimAlias = true;
#defaultEditor = true;
#extraConfig = ''
# set number relativenumber
#'';
};
# Enable Sway window manager
wayland.windowManager.sway = {
enable = true;
wrapperFeatures.gtk = true;
# Sway configuration
config = rec {
modifier = "Mod4"; # Windows key
terminal = "alacritty";
menu = "bemenu-run";
# Autostart applications
startup = [
{command = "nvim";}
{command = "allacritty";}
{command = "keepassxc";}
{command = "logseq";}
{command = "thunderbird";}
{command = "firefox";}
# Update environment variables
{command = "dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP XDG_SESSION_TYPE NIXOS_OZONE_WL XCURSOR_THEME XCURSOR_SIZE PATH";}
# Start sway-session.target
{command = "systemctl --user start sway-session.target";}
];
# Keyboard layout
input = {
"*" = {
xkb_layout = "de"; # German keyboard layout
};
};
# Display configuration
output = {
"*" = {
scale = "1";
};
"${display1}" = {
res = "1280x800"; # Steam Deck resolution
pos = "0 0";
scale = "1";
};
};
# Keybindings
keybindings = {
"Mod4+1" = "workspace ${workspace1}";
"Mod4+2" = "workspace ${workspace2}";
"Mod4+3" = "workspace ${workspace3}";
"Mod4+4" = "workspace ${workspace4}";
"Mod4+5" = "workspace ${workspace5}";
"Mod4+6" = "workspace ${workspace6}";
"Mod4+7" = "workspace ${workspace7}";
"Mod4+8" = "workspace ${workspace8}";
"Mod4+Shift+1" = "move container to workspace ${workspace1}";
"Mod4+Shift+2" = "move container to workspace ${workspace2}";
"Mod4+Shift+3" = "move container to workspace ${workspace3}";
"Mod4+Shift+4" = "move container to workspace ${workspace4}";
"Mod4+Shift+5" = "move container to workspace ${workspace5}";
"Mod4+Shift+6" = "move container to workspace ${workspace6}";
"Mod4+Shift+7" = "move container to workspace ${workspace7}";
"Mod4+Shift+8" = "move container to workspace ${workspace8}";
"Mod4+Mod1+f" = "exec firefox, workspace ${workspace1}";
"Mod4+Mod1+g" = "exec logseq, workspace ${workspace2}";
"Mod4+Mod1+t" = "exec thunderbird, workspace ${workspace3}";
"Mod4+Mod1+s" = "exec signal-desktop, workspace ${workspace3}";
"Mod4+Mod1+o" = "exec okular, workspace ${workspace4}";
"Mod4+Mod1+c" = "exec codium, workspace ${workspace5}";
"Mod4+Mod1+k" = "exec keepassxc, workspace ${workspace6}";
"Mod4+Return" = "exec alacritty, workspace ${workspace7}";
"Mod4+Mod1+p" = "exec alacritty -e pulsemixer, workspace ${workspace7}";
"Mod4+Mod1+v" = "exec alacritty -e neovim, workspace ${workspace7}";
"Mod4+Mod1+b" = "exec alacritty -e bluetuith, workspace ${workspace7}";
"Mod4+Mod1+n" = "exec alacritty -e nmtui, workspace ${workspace7}";
"Mod4+Mod1+h" = "exec alacritty -e htop, workspace ${workspace7}";
"XF86AudioRaiseVolume" = "exec pactl set-sink-volume @DEFAULT_SINK@ +5%";
"XF86AudioLowerVolume" = "exec pactl set-sink-volume @DEFAULT_SINK@ -5%";
"XF86AudioMute" = "exec pactl set-sink-mute @DEFAULT_SINK@ toggle";
"XF86AudioMicMute" = "exec pactl set-source-mute @DEFAULT_SOURCE@ toggle";
"XF86MonBrightnessDown" = "exec brightnessctl set 5%-";
"XF86MonBrightnessUp" = "exec brightnessctl set 5%+";
"Print" = "exec grimshot save area";
"Mod4+Shift+q" = "exec swaynagmode --exit";
"Mod4+Shift+Return" = "exec swaynagmode --confirm";
};
# Assign workspaces to outputs (adjust as needed)
workspaceOutputAssign = [
{
workspace = workspace1;
output = display1;
}
# Add other workspace-output assignments if you have multiple monitors
];
# Assign applications to workspaces
assigns = {
"${workspace1}" = [ { app_id = "firefox"; } ];
"${workspace2}" = [ { class = "Logseq"; } ];
"${workspace3}" = [
{ class = "Signal"; }
{ app_id = "thunderbird"; }
];
"${workspace4}" = [ { app_id = "org.kde.okular"; } ];
"${workspace5}" = [
{ class = "VSCodium"; }
{ class = "nvim"; }
];
"${workspace6}" = [ { app_id = "org.keepassxc.KeePassXC"; } ];
"${workspace7}" = [ { app_id = "Alacritty"; } ];
"${workspace8}" = [ { class = "vlc"; } ];
};
};
};
}