nixos-configs/nixos/cfg/home-manager.nix

196 lines
5 KiB
Nix

{ config, ... }: let
flake-compat = builtins.fetchTarball "https://github.com/edolstra/flake-compat/archive/master.tar.gz";
hyprland = (import flake-compat {
# I use release version for plugin support
src = builtins.fetchTarball "https://github.com/hyprwm/Hyprland/archive/master.tar.gz";
}).defaultNix;
in
{
imports =
[
<home-manager/nixos>
];
# Define a user account. Don't forget to set a password with 'passwd'.
users.users.matt = {
isNormalUser = true;
extraGroups = [ "wheel" "input" "adm" "mlocate" "video" ];
};
home-manager.useGlobalPkgs = true;
programs.dconf.enable = true;
home-manager.users.matt = { config, pkgs, lib, ... }: {
programs.waybar = {
enable = true;
package = pkgs.waybar.overrideAttrs (oldAttrs: {
mesonFlags = oldAttrs.mesonFlags ++ [ "-Dexperimental=true" ];
});
};
home.packages = with pkgs;
(with xorg; [
xcursorthemes
]) ++
(with python311Packages; [
python
pyclip
]) ++
(with plasma5Packages; [
polkit-kde-agent
qtstyleplugin-kvantum
breeze-icons
dolphin
dolphin-plugins
ffmpegthumbs
kio-admin # needs to be both here and in system pkgs
ark
kcharselect
#kdenlive
kmime
okular
]) ++
(with gnome; [
gnome-calculator
seahorse
adwaita-icon-theme
]) ++
[
(builtins.getFlake "github:hyprwm/Hyprland").packages.x86_64-linux.default
(builtins.getFlake "path:/home/matt/git/hyprland-touch-gestures").packages.x86_64-linux.default
swayosd
qt5.qtwayland
qt6.qtwayland
httrack
lisgd
zeal
acpi
libreoffice-fresh # TODO: add spelling stuff
neofetch
photoqt
progress
wl-color-picker # add bind for this in hyprland
xclip
xdg-utils
pavucontrol # TODO: open on left click
gimp-with-plugins
jdk8_headless
bluez-tools
spotify
#spotifywm # fails to build
spicetify-cli # TODO
vlc
discord
alacritty
brightnessctl
pulseaudio
alsa-utils
wget
firefox
tree
mosh
rsync
killall
jq # enable using home-manager?
ripgrep-all
hyprpaper
rofi-wayland
networkmanagerapplet
nextcloud-client
tutanota-desktop
galaxy-buds-client
swaynotificationcenter
swayidle
wl-clipboard
cliphist
gtklock
gtklock-playerctl-module
gtklock-powerbar-module
grim
slurp
swappy
neovim
fontfor
qt5ct
lxappearance
imagemagick
usbutils
catppuccin-plymouth
evtest
squeekboard
glib
appimage-run
gparted # doesn't open without sudo
(writeShellScriptBin "Gparted" ''
(
sleep 0.5
while killall -r -0 ksshaskpass > /dev/null 2>&1
do
sleep 0.1
if [[ $(hyprctl activewindow | grep Ksshaskpass) == "" ]]; then
killall -r ksshaskpass
fi
done
) &
exec sudo -k -EA '${gparted}/bin/${gparted.pname}' "$@"
'')
];
xdg.desktopEntries.gparted = {
name = "GParted";
genericName = "Partition Editor";
comment = "Create, reorganize, and delete partitions";
exec = "Gparted";
icon = "gparted";
terminal = false;
type = "Application";
categories = [ "GNOME" "System" "Filesystem" ];
startupNotify = true;
settings = {
Keywords = "Partition";
X-GNOME-FullName = "GParted Partition Editor";
};
};
home.sessionVariables = {
XDG_DATA_DIRS = "${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}:\$XDG_DATA_DIRS";
SUDO_ASKPASS = "${pkgs.plasma5Packages.ksshaskpass}/bin/${pkgs.plasma5Packages.ksshaskpass.pname}";
};
imports = [
hyprland.homeManagerModules.default
];
wayland.windowManager.hyprland = {
enable = true;
package = (builtins.getFlake "github:hyprwm/Hyprland").packages.x86_64-linux.default; # to be able to get the right ver from hyprctl version
plugins = with pkgs; [
"${(builtins.getFlake "path:/home/matt/git/hyprland-touch-gestures").packages.x86_64-linux.default}/lib/libtouch-gestures.so"
];
extraConfig = ''
exec-once = ${pkgs.plasma5Packages.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1
source = ~/.config/hypr/main.conf
env = XDG_DATA_DIRS, ${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}:$XDG_DATA_DIRS
env = SUDO_ASKPASS, ${pkgs.plasma5Packages.ksshaskpass}/bin/${pkgs.plasma5Packages.ksshaskpass.pname}
'';
};
home.stateVersion = "23.05";
};
services.xserver.displayManager = {
sessionPackages = [
(builtins.getFlake "github:hyprwm/Hyprland").packages.x86_64-linux.default
];
defaultSession = "hyprland";
};
}