nix/home/home.nix
2023-01-22 19:02:56 +11:00

522 lines
13 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;
kitty_notest = pkgs.kitty.overridePythonAttrs (oldAttrs: { doCheck = false; checkPhase = ""; });
in
{
imports = [
# who are you?
./bolt.nix
# ./fossil.nix
# ./plank.nix
hyprland.homeManagerModules.default
];
nixpkgs.config.packageOverrides = pkgs: {
nur = import (builtins.fetchTarball "https://github.com/nix-community/NUR/archive/master.tar.gz") {
inherit pkgs;
};
};
wayland.windowManager.hyprland = {
enable = true;
systemdIntegration = true;
nvidiaPatches = true;
extraConfig = ''
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 | wc -l) -eq 1 ]; then printf on; else printf off; fi)."
bind=,XF86AudioRaiseVolume,exec,pactl set-sink-volume @DEFAULT_SINK@ +5% && notify-send "Audio" "Volume at $(pactl get-sink-volume @DEFAULT_SINK@ | cut -d' ' -f 6)"
bind=,XF86AudioLowerVolume,exec,pactl set-sink-volume @DEFAULT_SINK@ -5% && notify-send "Audio" "Volume at $(pactl get-sink-volume @DEFAULT_SINK@ | cut -d' ' -f 6)"
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-)"
'';
};
nixpkgs.config.allowUnfree = true;
home.packages = with pkgs; [
thunderbird
clementine
inkscape
grim
slurp
mako
swaybg
wlogout
wf-recorder
libnotify
fuzzel
waybar
pulseaudio # yuck! just for pactl..
btop
bat
joshuto
ripgrep
fd
lazygit
fzf
# kdeconnect # maybe once i get an android
keepassxc
direnv
mpv
syncthing
zoxide
meslo-lgs-nf
libreoffice-qt
libsForQt5.ark
libsForQt5.qtstyleplugin-kvantum
libsForQt5.bismuth
gtk-engine-murrine
# plasma-browser-integration
(callPackage ./homepkgs/git-credential-keepassxc.nix { })
(callPackage ./homepkgs/culr.nix { })
(callPackage ./homepkgs/glpaper.nix { })
];
xdg.enable = true;
programs.mako = {
enable = true;
anchor = "bottom-right";
borderRadius = 8;
borderSize = 2;
defaultTimeout = 3500;
ignoreTimeout = true;
font = "Visby Regular 14";
};
programs.vscode = {
enable = true;
# enableExtensionUpdateCheck = false;
# enableUpdateCheck = false;
package = pkgs.vscodium;
extensions = [];
mutableExtensionsDir = false;
};
# xdg.desktopEntries = {
# vscodium-url = {
# name = "VsCodium";
# genericName = "Text Editor";
# exec = "codium --disable-gpu-sandbox --open-url %U";
# icon = "code";
# comment = "Code Editing. Redefined.";
# categories = [ "Utility" "TextEditor" "Development" "IDE" ];
# # keywords = [ "vscode" ];
# mimeType = [ "x-scheme-handler/vscode" ];
# noDisplay = true;
# startupNotify = true;
# type = "Application";
# };
# vscodium = {
# categories = [ "Utility" "TextEditor" "Development" "IDE" ];
# comment = "Code Editing. Redefined.";
# exec = "codium --disable-gpu-sandbox %F";
# genericName = "Text Editor";
# icon = "code";
# # keywords = [ "vscode" ];
# mimeType = [ "text/plain" "inode/directory" ];
# name = "VsCodium";
# startupNotify = true;
# # startupWMClass = "vscodium";
# type = "Application";
# };
# };
programs.direnv = {
enable = true;
nix-direnv = {
enable = true;
};
};
gtk = {
enable = true;
# theme = {
# package = (pkgs.callPackage ./homepkgs/simplewaita-gtk.nix {});
# name = "simplewaita";
# };
};
programs.firefox =
{
package = pkgs.firefox.override {
cfg = {
enablePlasmaBrowserIntegration = true;
};
};
enable = true;
extensions = with pkgs.nur.repos.rycee.firefox-addons; [
vimium-c
darkreader
localcdn
ublock-origin
bypass-paywalls-clean
sidebery
plasma-integration
keepassxc-browser
user-agent-string-switcher
# happy-bonobo-disable-webrtc
];
profiles.default = {
id = 0;
name = "Default";
settings = {
"browser.startup.homepage" = "about:blank";
};
};
};
services.syncthing = {
enable = true;
};
services.kdeconnect = {
enable = true;
indicator = true;
};
programs.kitty = {
enable = true;
package = kitty_notest;
font = {
name = "Ellograph CF";
size = 10;
};
settings = {
foreground = "#d3dae3";
background = "#060604";
cursor = "#d3dae3";
selection_foreground = "#fdbc4b";
selection_background = "#1e2233";
color0 = "#2f343f";
color1 = "#ed244e";
color2 = "#27ae60";
color3 = "#f67400";
color4 = "#2980b9";
color5 = "#c50ed2";
color6 = "#3daee9";
color7 = "#a1a9b1";
color8 = "#1e2233";
color9 = "#da4453";
color10 = "#71f79f";
color11 = "#fdbc4b";
color12 = "#1d99f3";
color13 = "#9b59b6";
color14 = "#5294e2";
color15 = "#656a73";
};
};
programs.git = {
enable = true;
userName = "atagen";
userEmail = "atagen@boss.co";
extraConfig = {
credential.helper = "keepassxc";
};
};
programs.zoxide = {
enable = true;
enableZshIntegration = true;
};
programs.fzf = {
enable = true;
enableZshIntegration = true;
# colors = {
# fg = "#d3dae3";
# "fg+" = "#d3dae3";
# bg = "#060604";
# "bg+" = "#060604";
# preview-fg = "#fdbc4b";
# preview-bg = "#1e2233";
# hl = "#da4453";
# "hl+" = "#ed244e";
# info = "#fdbc4b";
# border = "#656a73";
# prompt = "#c50ed2";
# pointer = "#27ae60";
# header = "#da4453";
# };
};
programs.zsh = {
enable = true;
enableAutosuggestions = true;
enableCompletion = true;
enableSyntaxHighlighting = true;
enableVteIntegration = true;
autocd = true;
defaultKeymap = "viins";
initExtra = "
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
la_culr()
{
ls -ralhX --color $@ | culr
}
ls_culr()
{
ls -rlhX --color $@ | culr
}
ps_culr()
{
ps ww$@ | culr
}
alias ...=\"cd ../..\"
alias ....=\"cd ../../..\"
alias .....=\"cd ../../../..\"
alias fresh=\"clear; echo; ~/.nix/header.sh\"
alias icat=\"kitty +kitten icat\"
alias chmox=\"chmod +x\"
alias gs=\"git status\"
alias gcl=\"git clone\"
alias ga=\"git add\"
alias gcb=\"git checkout -b\"
alias gco=\"git checkout\"
alias gl=\"git pull\"
alias gp=\"git push\"
alias gd=\"git diff\"
alias gcam=\"git commit -am\"
alias gcm=\"git commit -m\"
alias gr=\"git restore\"
alias gm=\"git merge\"
alias l=\"ls_culr\"
alias la=\"la_culr\"
alias p=\"ps_culr\"
alias mnt=\"mount | column -t | culr\"
alias kaboom=\"printf 'type any input if you wish to update\n\npress enter to continue\n'; read upgrade; if [ -n \\\"\\\$upgrade\\\" ]; then echo upgrading..; sudo nix-channel --update; else echo no upgrade!; fi; sudo nixos-rebuild switch -j9 && rm ~/.gtkrc-2.0; home-manager switch && sudo nix-collect-garbage && nix-store --optimise\"
fresh
";
plugins = [
{
name = "powerlevel10k";
src = pkgs.zsh-powerlevel10k;
file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme";
}
{
name = "zsh-vi-mode";
src = pkgs.zsh-vi-mode;
file = "share/zsh-vi-mode/zsh-vi-mode.zsh";
}
{
name = "zsh-autopair";
src = pkgs.zsh-autopair;
file = "share/zsh-autopair/zsh-autopair.zsh";
}
{
name = "zsh-completions";
src = pkgs.zsh-completions;
file = "share/zsh-completions/zsh-completions.zsh";
}
{
name = "zsh-command-time";
src = pkgs.zsh-command-time;
file = "share/zsh-completions/zsh-command-time.zsh";
}
# {
# name = "zsh-you-should-use";
# src = pkgs.zsh-you-should-use;
# # file = "share/zsh-completions/zsh-you-should-use.zsh";
# }
{
name = "zsh-autocomplete";
src = pkgs.zsh-autocomplete;
file = "share/zsh-autocomplete/zsh-autocomplete.zsh";
}
{
name = "zsh-fast-syntax-highlighting";
src = pkgs.zsh-fast-syntax-highlighting;
file = "share/zsh-fast-syntax-highlighting/zsh-fast-syntax-highlighting.zsh";
}
{
name = "zsh-nix-shell";
src = pkgs.zsh-nix-shell;
file = "share/zsh-nix-shell/zsh-nix-shell.zsh";
}
{
name = "any-nix-shell";
src = pkgs.any-nix-shell;
file = "share/any-nix-shell/any-nix-shell.zsh";
}
{
name = "nix-zsh-completions";
src = pkgs.nix-zsh-completions;
file = "share/nix-zsh-completions/nix-zsh-completions.zsh";
}
# {
# name = "zsh-fzf-tab";
# src = pkgs.zsh-fzf-tab;
# # file = "share/zsh-fzf-tab/zsh-fzf-tab.zsh";
# }
];
};
xresources.extraConfig = "
! special
*.foreground: #d3dae3
*.background: #181b28
*.cursorColor: #d3dae3
! black
*.color0: #2f343f
*.color8: #1e2233
! red
*.color1: #ed244e
*.color9: #da4453
! green
*.color2: #27ae60
*.color10: #71f79f
! yellow
*.color3: #f67400
*.color11: #fdbc4b
! blue
*.color4: #2980b9
*.color12: #1d99f3
! magenta
*.color5: #c50ed2
*.color13: #9b59b6
! cyan
*.color6: #3daee9
*.color14: #5294e2
! white
*.color7: #a1a9b1
*.color15: #656a73";
programs.helix.enable = true;
programs.helix.settings = {
theme = "bogster";
};
# home.sessionVariables = {
# GTK_THEME = "simplewaita";
# };
home.stateVersion = "22.11";
programs.home-manager.enable = true;
}