224 lines
6.3 KiB
Nix
224 lines
6.3 KiB
Nix
{ config, pkgs, ... }:
|
|
|
|
{
|
|
# Home Manager needs a bit of information about you and the paths it should
|
|
# manage.
|
|
home.username = "blue";
|
|
home.homeDirectory = "/home/blue";
|
|
|
|
# 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 = [
|
|
# add grimblast screenshot tool
|
|
pkgs.grimblast
|
|
pkgs.hyprpaper
|
|
# # 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" ]; })
|
|
|
|
# # You can also create simple shell scripts directly inside your
|
|
# # configuration. For example, this adds a command 'my-hello' to your
|
|
# # environment:
|
|
# (pkgs.writeShellScriptBin "my-hello" ''
|
|
# echo "Hello, ${config.home.username}!"
|
|
# '')
|
|
];
|
|
|
|
# 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/blue/etc/profile.d/hm-session-vars.sh
|
|
#
|
|
home.sessionVariables = {
|
|
# EDITOR = "emacs";
|
|
};
|
|
|
|
# Let Home Manager install and manage itself.
|
|
programs.home-manager.enable = true;
|
|
|
|
# Enable Hyprland compositor
|
|
wayland.windowManager.hyprland = {
|
|
enable = true;
|
|
package = pkgs.hyprland;
|
|
xwayland.enable = true;
|
|
# Autostart using systemd
|
|
systemd.enable = true;
|
|
extraConfig = ''
|
|
# exec-once = waybar
|
|
|
|
# Monitor settings
|
|
monitor = eDP-2, 2560x1600@165, 0x0, auto # main laptop monitor
|
|
monitor = DP-3, 1920x1080@60, -1280x-1080, auto # left external monitor
|
|
monitor = DP-2, 1920x1080@60, 640x-1080, auto # right external monitor
|
|
|
|
debug:disable_logs = false
|
|
|
|
# Move/resize windows with mainMod + LMB/RMB and dragging
|
|
bindm = $mod, mouse:272, movewindow
|
|
bindm = $mod, mouse:273, resizewindow
|
|
'';
|
|
};
|
|
# Hyprland configuration
|
|
wayland.windowManager.hyprland.settings = {
|
|
"$mod" = "SUPER";
|
|
input = { kb_layout = "gb"; };
|
|
bind =
|
|
[
|
|
# Keybinds for starting programs
|
|
"$mod, F, exec, firefox"
|
|
", Print, exec, grimblast copy area"
|
|
"$mod, 1, exec, alacritty"
|
|
"$mod, l, exec, hyprlock"
|
|
]
|
|
++ (
|
|
# workspaces
|
|
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
|
|
builtins.concatLists (builtins.genList (
|
|
x: let
|
|
ws = let
|
|
c = (x + 1) / 10;
|
|
in
|
|
builtins.toString (x + 1 - (c * 10));
|
|
in [
|
|
"$mod, ${ws}, workspace, ${toString (x + 1)}"
|
|
"$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}"
|
|
]
|
|
)
|
|
10)
|
|
);
|
|
};
|
|
|
|
programs.waybar = {
|
|
enable = true;
|
|
settings = {
|
|
mainBar = {
|
|
layer = "top";
|
|
position = "top";
|
|
height = 30;
|
|
output = [
|
|
"eDP-2"
|
|
"DP-2"
|
|
"DP-3"
|
|
];
|
|
modules-left = [ "wlr/workspaces" "wlr/mode" "wlr/taskbar" ];
|
|
modules-center = [ "wlr/window" "clock" ];
|
|
modules-right = [ "idle_inhibitor" "pulseaudio" "backlight" "battery" "tray" ];
|
|
|
|
"custom/hello-from-waybar" = {
|
|
format = "hello {}";
|
|
max-length = 40;
|
|
interval = "once";
|
|
exec = pkgs.writeShellScript "hello-from-waybar" ''
|
|
echo "from within waybar"
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
programs.alacritty = {
|
|
enable = true;
|
|
package = pkgs.alacritty;
|
|
settings = {
|
|
window.dimensions = {
|
|
lines = 3;
|
|
columns = 200;
|
|
};
|
|
# keyboard.bindings = [
|
|
# {
|
|
# key = "K";
|
|
# mods = "Control";
|
|
# chars = "\\u000c";
|
|
# }
|
|
# ];
|
|
};
|
|
};
|
|
|
|
# programs.hyprpaper = {
|
|
# enable = true;
|
|
# settings = {
|
|
# ipc = "on";
|
|
# splash = false;
|
|
# splash_offset = 2.0;
|
|
|
|
# preload = [ "~/Pictures/wallpaper.png" ];
|
|
|
|
# wallpaper = [
|
|
# ",~/Pictures/wallpaper.png"
|
|
# ];
|
|
# };
|
|
# };
|
|
programs.hyprlock = {
|
|
enable = true;
|
|
settings = {
|
|
general = {
|
|
disable_loading_bar = true;
|
|
grace = 5;
|
|
hide_cursor = true;
|
|
no_fade_in = false;
|
|
};
|
|
|
|
background = [
|
|
{
|
|
path = "screenshot";
|
|
blur_passes = 3;
|
|
blur_size = 8;
|
|
}
|
|
];
|
|
|
|
input-field = [
|
|
{
|
|
size = "200, 50";
|
|
position = "0, -80";
|
|
monitor = "eDP-2";
|
|
dots_center = true;
|
|
fade_on_empty = false;
|
|
font_color = "rgb(202, 211, 245)";
|
|
inner_color = "rgb(91, 96, 120)";
|
|
outer_color = "rgb(24, 25, 38)";
|
|
outline_thickness = 5;
|
|
# placeholder_text = "<span foreground="##cad3f5">Password...</span>";
|
|
# shadow_passes = 2;
|
|
}
|
|
];
|
|
};
|
|
};
|
|
services.blueman-applet.enable = true;
|
|
}
|