{
config,
lib,
pkgs,
...
}:
{
imports = [
./sh.nix
./hyprland/hyprland.nix
./ghostty.nix
./obsidian.nix
./fastfetch.nix
./udiskie.nix
./mpd.nix
./rofi.nix
./stylix.nix
./brave-config.nix
./rmpc-theme.nix
./rmpc-config.nix
];
# Home Manager needs a bit of information about you and the paths it should
# manage.
home.username = "andrew";
home.homeDirectory = "/home/andrew";
# 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 = "25.05"; # Please read the comment before changing.
# The home.packages option allows you to install Nix packages into your
# environment.
home.packages = with pkgs; [
# # Adds the 'hello':wq command to your environment. It prints a friendly
# # "Hello, world!" when run.
discord
neovim
catppuccin-gtk
inter
prismlauncher
nixfmt-rfc-style
p7zip
github-desktop
# # 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'.
# # 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.file = {
};
# 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/andrew/etc/profile.d/hm-session-vars.sh
#
home.sessionVariables = {
EDITOR = "neovim";
};
programs.brave.enable = true;
programs.rmpc = {
enable = true;
};
#notifcations
services.dunst.enable = true;
services.mpd-mpris.enable = true;
services.playerctld.enable = true;
programs.git = {
enable = true;
userEmail = "admonty1@protonmail.com";
};
programs.keepassxc = {
enable = true;
# settings = {
# Browser = {
# Enabled = true;
# UseCustomBrowser = true;
# CustomBrowserType = 1;
#
#};
# GUI = {
# ShowTrayIcon = true;
# ApplicationTheme = "dark";
# };
# };
};
programs.waybar = {
enable = true;
settings = [
{
output = [ "DP-3"];
height = 37; # Waybar height
spacing = 4; # Gaps between modules
modules-left = [
"hyprland/workspaces"
"hyprland/window"
];
modules-center = [
"mpris"
];
modules-right = [
"idle_inhibitor"
"load"
"wireplumber"
"clock"
"battery"
"tray"
];
"hyprland/workspaces" = {
all-outputs = true;
warp-on-scroll = false;
enable-bar-scroll = true;
disable-scroll-wraparound = true;
format = "{icon}";
format-icons = {
"1" = "";
"2" = "";
"3" = "";
"4" = "";
"5" = "";
"9" = "";
"10" = "";
};
};
"hyprland/window" = {
format = "{title}";
max-length = 40;
all-outputs = true;
};
mpris = {
format = " {status_icon} {dynamic}";
interval = 1;
dynamic-len = 40;
dynamic-order = [ "title" "artist" ];
ignored-players = [ "firefox" ];
status-icons = {
playing = "▶";
paused = "⏸";
stopped = "";
};
};
idle_inhibitor = {
format = "{icon}";
format-icons = {
activated = "";
deactivated = "";
};
};
tray = {
icon-size = 14;
spacing = 10;
};
load = {
format = " {}";
};
clock = {
tooltip-format = "{:%Y %B}\n{calendar}";
format-alt = "{:%Y-%m-%d}";
};
battery = {
states = {
warning = 30;
critical = 15;
};
format = "{icon} {capacity}%";
format-full = "{icon} {capacity}%";
format-charging = " {capacity}%";
format-plugged = " {capacity}%";
format-alt = "{icon} {time}";
format-icons = [ "" "" "" "" "" ];
};
wireplumber = {
scroll-step = 5;
format = "{icon} {volume}%";
format-bluetooth = "{icon} {volume}% ";
format-bluetooth-muted = " {icon}";
format-muted = "";
format-icons = {
headphone = "";
hands-free = "";
headset = "";
phone = "";
portable = "";
car = "";
default = [ "" "" "" ];
};
on-click = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
};
}
# Bar for DP-2 only
{
output = [ "DP-2" ];
height = 24;
spacing = 4;
modules-left = [
"hyprland/workspaces"
"hyprland/window"
];
modules-center = [ ];
modules-right = [ "clock" ];
"hyprland/workspaces" = {
all-outputs = true;
warp-on-scroll = true;
enable-bar-scroll = true;
format = "{icon}";
format-icons = {
"1" = "";
"2" = "";
"3" = "";
"4" = "";
"5" = "";
"9" = "";
"10" = "";
};
};
"hyprland/window" = {
format = "{title}";
max-length = 40;
all-outputs = true;
};
clock = {
tooltip-format = "{:%Y %B}\n{calendar}";
format-alt = "{:%Y-%m-%d}";
};
}
];
};
xdg.portal = {
enable = true;
extraPortals = [ pkgs.xdg-desktop-portal-hyprland ];
};
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
}