nix/home/bolt.nix
2023-03-18 00:38:26 +11:00

190 lines
5.3 KiB
Nix
Executable file

{ config, pkgs, ... }:
let
flake-compat = builtins.fetchTarball "https://github.com/edolstra/flake-compat/archive/master.tar.gz";
hyprland = (import flake-compat {
src = builtins.fetchTarball "https://github.com/hyprwm/Hyprland/archive/master.tar.gz";
}).defaultNix;
in {
imports = [
hyprland.homeManagerModules.default
];
nixpkgs.overlays = [
(self: super: {
kwin-system76-scheduler-integration = pkgs.libsForQt5.callPackage ../system/syspkgs/kwin-system76-scheduler-integration.nix {};
})
];
home.username = "bolt";
home.homeDirectory = "/home/bolt";
home.packages = with pkgs; [
cmus
zellij
xonotic
nicotine-plus
fuzzel
grim
slurp
mako
swaybg
wlogout
wf-recorder
libnotify
waybar
pulseaudio
];
wayland.windowManager.sway = {
enable = true;
config = rec {
modifier = "Mod4";
terminal = "kitty";
gaps = {
inner = 15;
outer = 30;
};
};
wrapperFeatures = {
base = true;
gtk= true;
};
};
wayland.windowManager.hyprland = {
enable = true;
systemdIntegration = true;
nvidiaPatches = true;
extraConfig = ''
bind = SUPER, Return, exec, kitty
exec-once = waybar
exec-once = keepassxc
exec-once = mako
exec-once = ckb-next -c -b
exec-once = swaybg -i $HOME/Downloads/00026.png
exec-once = xrdb $HOME/.Xresources
input {
kb_layout=us
kb_options=caps:escape,escape:caps
}
general {
no_border_on_floating=true
layout=dwindle
border_size=3
gaps_in=10
gaps_out=20
}
dwindle {
preserve_split=true
pseudotile=true
use_active_for_splits=true
}
decoration {
rounding=8
blur=0
}
animations {
enabled=1
bezier=overshot,0.05,0.9,0.1,1.1
bezier=smooth,0.06,0.94,0.1,1.0
bezier=slosmooth,0.1,0.89,0.14,0.96
animation=windows,1,6,overshot,popin
animation=workspaces,1,6,smooth,slidevert
animation=specialWorkspace,1,6,overshot,slide
}
misc {
disable_hyprland_logo=true
disable_splash_rendering=true
}
monitor=,highrr,auto,1
bind=SUPER,Return,exec,kitty
bind=SUPER,F,exec,firefox
bind=SUPER,D,exec,fuzzel
bind=SUPER_SHIFT,Q,killactive
bind=SUPER_SHIFT,space,fullscreen,0
bind=SUPER,space,togglefloating
bind=SUPER,h,movefocus,l
bind=SUPER,l,movefocus,r
bind=SUPER,j,movefocus,d
bind=SUPER,k,movefocus,u
bind=SUPER_SHIFT,h,movewindow,l
bind=SUPER_SHIFT,l,movewindow,r
bind=SUPER_SHIFT,j,movewindow,d
bind=SUPER_SHIFT,k,movewindow,u
bind=SUPER,s,togglesplit
bind=SUPER,1,workspace,1
bind=SUPER,2,workspace,2
bind=SUPER,3,workspace,3
bind=SUPER,4,workspace,4
bind=SUPER_SHIFT,1,movetoworkspacesilent,1
bind=SUPER_SHIFT,2,movetoworkspacesilent,2
bind=SUPER_SHIFT,3,movetoworkspacesilent,3
bind=SUPER_SHIFT,4,movetoworkspacesilent,4
bind=SUPER_CTRL,h,resizeactive,-40 0
bind=SUPER_CTRL,l,resizeactive,40 0
bind=SUPER_CTRL,j,resizeactive,0 -40
bind=SUPER_CTRL,k,resizeactive,0 40
bind=SUPER,minus,togglespecialworkspace
bind=SUPER_SHIFT,minus,movetoworkspace,special
bind=SUPER_SHIFT,S,exec,grim -g "$(slurp)" -t png -o "$HOME/Pictures/$(date +%F_%H-%m-%S).png" && notify-send "Screenshot taken."
bind=SUPER_SHIFT_CTRL,S,exec,wf-recorder -a -f "$HOME/Videos/recording_($date +%F_%H-%m-%S).mp4" && notify-send "Recording desktop.."
bind=SUPER_SHIFT,E,exec,wlogout
bind=,XF86AudioMute,exec,pactl set-sink-mute @DEFAULT_SINK@ toggle && notify-send "Audio" "Mute $(if [ $(pactl get-sink-mute @DEFAULT_SINK@ | rg yes >
bind=,XF86AudioRaiseVolume,exec,pactl set-sink-volume @DEFAULT_SINK@ +5% && notify-send "Audio" "Volume at $(pactl get-sink-volume @DEFAULT_SINK@ | c>
bind=,XF86AudioLowerVolume,exec,pactl set-sink-volume @DEFAULT_SINK@ -5% && notify-send "Audio" "Volume at $(pactl get-sink-volume @DEFAULT_SINK@ | c>
bind=,XF86AudioStop,exec,cmus-remote -s && notify-send "Music" "Playback stopped."
bind=,XF86AudioPlay,exec,cmus-remote -u && notify-send "Music" "Playback status: $(cmus-remote -Q | head -n 1 | cut -d' ' -f 2)"
bind=,XF86AudioPrev,exec,cmus-remote -r && notify-send "Music" "Now playing:\n$(cmus-remote -Q | rg -e 'artist|title' | cut -d' ' -f 3-)"
bind=,XF86AudioNext,exec,cmus-remote -n && notify-send "Music" "Now playing:\n$(cmus-remote -Q | rg -e 'artist|title' | cut -d' ' -f 3-)"
'';
};
programs.mako = {
enable = true;
anchor = "bottom-right";
borderRadius = 8;
borderSize = 2;
defaultTimeout = 3500;
ignoreTimeout = true;
font = "Visby Regular 14";
};
systemd.user.startServices = true;
systemd.user.services."com.system76.Scheduler.dbusproxy" = {
Unit = {
Description = "the system76 process scheduler kwin dbus proxy";
Requires = [ "dbus.service" ];
};
Install = {
WantedBy = [ "graphical-session.target" "default.target" ];
};
Service = {
ExecStart = ''${pkgs.kwin-system76-scheduler-integration}/bin/kwin-system76-scheduler-dbus-proxy.sh'';
};
};
}