major home-manager changes

This commit is contained in:
2021-05-02 09:24:02 +05:30
parent da3ef21ccd
commit 70b18cf4fd
33 changed files with 1115 additions and 37 deletions

View File

@@ -2,7 +2,7 @@
## TODO ## TODO
1. Add user specific traditional dotfiles. 1. Add user specific traditional dotfiles.
2. Try home-manager for nix (Trying out right now) 2. ~~Try home-manager for nix~~ (Still in the middle of updating)
3. ~~Try nix flakes~~ 3. ~~Try nix flakes~~
## How install workey ## How install workey

View File

@@ -1,4 +1,4 @@
{ config, lib, pkgs, modulesPath, ... }: { config, lib, ... }:
{ {
powerManagement = { powerManagement = {

View File

@@ -1,4 +1,4 @@
{lib, config, pkgs, ... }: {lib, config, ... }:
{ {
services.pipewire = { services.pipewire = {

View File

@@ -1,5 +1,5 @@
{ config, lib, pkgs, modulesPath, ... }: { config, lib, ... }:
#let #let
# compiledLayout = pkgs.runCommand "keyboard-layout" {} '' # compiledLayout = pkgs.runCommand "keyboard-layout" {} ''

View File

@@ -4,17 +4,12 @@
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot = { boot = {
kernelPackages = pkgs.linuxPackages_zen; kernelPackages = pkgs.linuxPackagesFor (pkgs.linux_zen.override {
kernelPatches = [
{
name = "zenwithmuqqs";
patch = null;
structuredExtraConfig = with lib.kernel; { structuredExtraConfig = with lib.kernel; {
SCHED_MUQSS = yes; CONFIG_SCHED_MUQSS = yes;
}; };
ignoreConfigErrors = true; ignoreConfigErrors = true;
} });
];
initrd={ initrd={
availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod"]; availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod"];
kernelModules = [ ]; kernelModules = [ ];

View File

@@ -1,4 +1,4 @@
{lib, config, pkgs, ... }: { lib, config, ...}:
{ {
imports = imports =

View File

@@ -1,4 +1,4 @@
{ config, lib, pkgs, modulesPath, ... }: { config, lib, modulesPath, ... }:
{ {
imports = imports =
@@ -11,6 +11,7 @@
fileSystems."/" = fileSystems."/" =
{ device = "/dev/disk/by-uuid/4c02ddf5-d00e-4d84-856f-c327ae44d047"; { device = "/dev/disk/by-uuid/4c02ddf5-d00e-4d84-856f-c327ae44d047";
fsType = "btrfs"; fsType = "btrfs";
options = ["compress=zstd"];
}; };
fileSystems."/boot/efi" = fileSystems."/boot/efi" =

View File

@@ -1,4 +1,4 @@
{lib, config, pkgs, ... }: {lib, config, ... }:
{ {
networking = { networking = {

View File

@@ -2,52 +2,35 @@
{ {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
customscripts
xclip xclip
dunst
xorg.xkbcomp xorg.xkbcomp
glibc
proxychains
#qt5.qmake
xorg.xmodmap xorg.xmodmap
ffmpeg ffmpeg
p7zip p7zip
git git
glxinfo glxinfo
sox sxiv
libmpdclient
lxappearance
jq jq
mono mono
vim vim
mpd
wineWowPackages.staging wineWowPackages.staging
neofetch neofetch
tor-browser-bundle-bin
w3m w3m
gnumake gnumake
pciutils pciutils
jdk jdk
gcc
ntfs3g ntfs3g
python38 python38
luajit
neovim
htop htop
nodejs nodejs
wget wget
ripgrep ripgrep
patchelf patchelf
doas
feh feh
sxiv
mpv
dwm dwm
dmenu dmenu
st st
kbd kbd
picom
ncmpcpp
]; ];
programs.steam.enable = true; programs.steam.enable = true;
nix = { nix = {

View File

@@ -1,4 +1,4 @@
{lib, config, pkgs, ... }: {lib, config, ... }:
{ {
imports = [ imports = [
./Stuff/sound.nix ./Stuff/sound.nix

View File

@@ -29,6 +29,18 @@
homeDirectory = "/home/natto"; homeDirectory = "/home/natto";
username = "natto"; username = "natto";
}; };
root = home-manager.lib.homeManagerConfiguration {
configuration = { pkgs, lib, ... }: {
imports = [ ./home/root.nix ];
nixpkgs = {
overlays = builtins.attrValues self.overlays;
};
};
system = "${system}";
homeDirectory = "/root";
username = "root";
};
}; };
nixosConfigurations.Satori = nixpkgs.lib.nixosSystem { nixosConfigurations.Satori = nixpkgs.lib.nixosSystem {

30
home/config/bspwm/bspwmrc Executable file
View File

@@ -0,0 +1,30 @@
#! /bin/sh
bspc rule -r "*"
##Autostart
pgrep -x sxhkd > /dev/null || sxhkd &
picom --experimental-backends &
feh --bg-scale ~/Downloads/gruvbox.jpg &
killall "polybar"
polybar main &
killall node
node /mnt/Stuff/code/muhbot
bspc monitor -d          
#bspc monitor -d I II III IV V VI VII VIII IX X
bspc config border_width 2
bspc config window_gap 10
bspc config focus_follows_pointer true
bspc config split_ratio 0.52
bspc config borderless_monocle true
bspc config gapless_monocle true
bspc config single_monocle true
bspc config top_padding 50
bspc config normal_border_color "#ffffff"
bspc config active_border_color "#1bb1b1"
bspc config focused_border_color "#fe8019"
bspc config urgent_border_color "#fe8019"

View File

@@ -0,0 +1,355 @@
:root {
/* Minimal Functional Fox variables*/
--mff-bg: #1d2021;
--mff-icon-color: #bbbbbb;
--mff-nav-toolbar-padding: 8px;
--mff-sidebar-bg: var(--mff-bg);
--mff-sidebar-color: #e0fbfc;
--mff-tab-border-radius: 0px;
--mff-tab-color: #ebdbb2;
--mff-tab-font-family: "Fira Mono for Powerline", sans;
--mff-tab-font-size: 11pt;
--mff-tab-font-weight: 400;
--mff-tab-height: 32px;
--mff-tab-pinned-bg: #70c1b3;
--mff-tab-selected-bg: #ebdbb2;
--mff-tab-selected-color: #1d2021;
--mff-tab-soundplaying-bg: #818181;
--mff-tab-soundplaying-color: #1d2021;
--mff-urlbar-color: #98c1d9;
--mff-urlbar-focused-color: #e0fbfc;
--mff-urlbar-font-family: "Fira Mono for Powerline", serif;
--mff-urlbar-font-size: 12pt;
--mff-urlbar-font-weight: 500;
--mff-urlbar-results-color: #e0fbfc;
--mff-urlbar-results-font-family: "Fira Mono for Powerline", serif;
--mff-urlbar-results-font-size: 12pt;
--mff-urlbar-results-font-weight: 500;
--mff-urlbar-results-url-color: #98c1d9;
/* --mff-tab-selected-bg: linear-gradient(90deg, rgba(232,74,95,1) 0%, rgba(255,132,124,1) 50%, rgba(254,206,168,1) 100%); */
/* --mff-urlbar-font-weight: 600; */
/* Overriden Firefox variables*/
--autocomplete-popup-background: var(--mff-bg) !important;
--default-arrowpanel-background: var(--mff-bg) !important;
--default-arrowpanel-color: #fefefa !important;
--lwt-toolbarbutton-icon-fill: var(--mff-icon-color) !important;
--panel-disabled-color: #f9f9fa80;
--toolbar-bgcolor: var(--mff-bg) !important;
--urlbar-separator-color: transparent !important;
}
/*
_____ _ ___ ___
|_ _/_\ | _ ) __|
| |/ _ \| _ \__ \
|_/_/ \_\___/___/
*/
.tab-background[selected="true"] {
background: var(--mff-tab-selected-bg) !important;
}
.tab-text[selected="true"] {
color: var(--mff-tab-selected-color) !important;
font-weight: bold !important;
}
.tab-background:not[visuallyselected] {
background: var(--mff-tab-selected-bg) !important;
opacity: 0.5 !important;
}
/* This positions the tabs under the navaigator container */
#titlebar {
-moz-box-ordinal-group: 3 !important;
}
.tabbrowser-tab::after,
.tabbrowser-tab::before {
border-left: none !important;
}
.tab-background {
border: none !important;
}
.tabbrowser-arrowscrollbox {
margin-inline-start: 4px !important;
margin-inline-end: 0px !important;
}
.tab-close-button {
display: none !important;
}
.tab-text {
font-family: var(--mff-tab-font-family);
font-weight: var(--mff-tab-font-weight);
font-size: var(--mff-tab-font-size) !important;
color: var(--mff-tab-color);
}
/* Hide the favicon for tabs */
hbox.tab-content .tab-icon-image {
display: none !important;
}
/* Show the favicon for tabs that are pinned */
hbox.tab-content[pinned=true] .tab-icon-image {
display: initial !important;
}
hbox.tab-content[pinned=true] .tab-text {
display: none !important;
}
#tabbrowser-tabs {
--tab-loading-fill: #033433 !important;
}
.tab-label-container:not([textoverflow]) {
display: flex;
overflow: hidden;
justify-content: center;
width: 50% !important;
max-width: 50% !important;
min-width: 50% !important;
}
/* .tab-label-container::after {
content: "?" !important;
} */
.tab-line {
display: none !important;
}
.tabbrowser-tab {
border-radius: var(--mff-tab-border-radius) !important;
border-width: 0;
height: var(--mff-tab-height) !important;
margin-bottom: 4px !important;
margin-inline-end: 4px !important;
margin-top: 4px !important;
max-height: var(--mff-tab-height) !important;
min-height: var(--mff-tab-height) !important;
}
.tabbrowser-tab[soundplaying="true"] {
background-color: var(--mff-tab-soundplaying-bg) !important;
}
#tabs-newtab-button {
list-style-image: url("https://raw.githubusercontent.com/mut-ex/minimal-functional-fox/master/add.svg") !important;
opacity: 0.7;
}
.tab-icon-sound {
display: none !important;
}
/*
_____ ___ ___ _ ___ _ ___
|_ _/ _ \ / _ \| | | _ ) /_\ | _ \
| || (_) | (_) | |__| _ \/ _ \| /
|_| \___/ \___/|____|___/_/ \_\_|_\
*/
.urlbar-icon > image {
fill: var(--mff-icon-color) !important;
color: var(--mff-icon-color) !important;
}
.toolbarbutton-text {
color: var(--mff-icon-color) !important;
}
.urlbar-icon {
color: var(--mff-icon-color) !important;
}
.toolbarbutton-icon {
/* filter: drop-shadow(0 0 0.75rem crimson); */
}
#urlbar-results {
font-family: var(--mff-urlbar-results-font-family);
font-weight: var(--mff-urlbar-results-font-weight);
font-size: var(--mff-urlbar-results-font-size) !important;
color: var(--mff-urlbar-results-color) !important;
}
.urlbarView-row[type="bookmark"] > span{
color: green !important;
}
.urlbarView-row[type="switchtab"] > span{
color: orange !important;
}
.urlbarView-url, .search-panel-one-offs-container {
color: var(--mff-urlbar-results-url-color) !important;
font-family: var(--mff-urlbar-font-family);
font-weight: var(--mff-urlbar-results-font-weight);
font-size: var(--mff-urlbar-font-size) !important;
}
.urlbarView-favicon, .urlbarView-type-icon {
display: none !important;
}
#urlbar-input {
font-size: var(--mff-urlbar-font-size) !important;
color: var(--mff-urlbar-color) !important;
font-family: var(--mff-urlbar-font-family) !important;
font-weight: var(--mff-urlbar-font-weight)!important;
text-align: center !important;
}
#tracking-protection-icon-container, #identity-box {
display: none;
}
#back-button > .toolbarbutton-icon{
--backbutton-background: transparent !important;
border: none !important;
}
#back-button {
list-style-image: url("https://raw.githubusercontent.com/mut-ex/minimal-functional-fox/master/left-arrow.svg") !important;
}
#forward-button {
list-style-image: url("https://raw.githubusercontent.com/mut-ex/minimal-functional-fox/master/right-arrow.svg") !important;
}
toolbar {
background-image: none !important;
}
#urlbar-background {
opacity: .98 !important;
}
#navigator-toolbox, toolbaritem {
border: none !important;
}
#urlbar-background {
background-color: var(--mff-bg) !important;
border: none !important;
}
.toolbar-items {
background-color: var(--mff-bg) !important;
}
#sidebar-search-container {
background-color: var(--mff-sidebar-bg) !important;
}
box.panel-arrowbox {
display: none;
}
box.panel-arrowcontent {
border-radius: 8px !important;
border: none !important;
}
tab.tabbrowser-tab {
overflow: hidden;
}
tab.tabbrowser-tab:hover {
box-shadow: 0 1px 4px rgba(0,0,0,.05);
}
image#star-button {
display: none;
}
toolbar#nav-bar {
padding: var(--mff-nav-toolbar-padding) !important;
}
toolbar#nav-bar {
padding: 4px !important;
}
#urlbar {
max-width: 70% !important;
margin: 0 15% !important;
/* position: unset!important; */;
}
#urlbar-input:focus {
color: var(--mff-urlbar-focused-color) !important;
}
.megabar[breakout-extend="true"]:not([open="true"]) > #urlbar-background {
box-shadow: none !important;
background-color: transparent !important;
}
toolbarbutton {
box-shadow: none !important;
}
/*
___ ___ ___ ___ ___ _ ___
/ __|_ _| \| __| _ ) /_\ | _ \
\__ \| || |) | _|| _ \/ _ \| /
|___/___|___/|___|___/_/ \_\_|_\
*/
.close-icon, .urlbar-icon {
fill: var(--mff-icon-color) !important;
}
.sidebar-placesTree {
color: var(--mff-sidebar-color) !important;
}
#sidebar-switcher-target {
/* color: white !important; */
}
#sidebar-box {
--sidebar-background-color: var(--mff-sidebar-bg) !important;
}
splitter#sidebar-splitter {
opacity: 0 !important;
}
splitter#sidebar-splitter {
border: none !important;
background-color: transparent !important;
}
image#sidebar-icon {
display: none;
}
/*
_ ___ ___ _____ _____ _ _ _ ___ _
/_\ | _ \ _ \/ _ \ \ / / _ \/_\ | \| | __| |
/ _ \| / / (_) \ \/\/ /| _/ _ \| .` | _|| |__
/_/ \_\_|_\_|_\\___/ \_/\_/ |_|/_/ \_\_|\_|___|____|
*/
.panel-arrowcontent {
padding: 0px !important;
margin: 0px !important;
}
toolbarseparator {
display: none;
}

View File

@@ -0,0 +1,23 @@
@import url("userChrome.css");
/* Removes white loading page */
@-moz-document url(about:blank), url(about:newtab), url(about:home) {
html:not(#ublock0-epicker), html:not(#ublock0-epicker) body, #newtab-customize-overlay {
background: var(--mff-bg) !important;
}
}
/* Hide scrollbar */
:root{
scrollbar-width: none !important;
}
@-moz-document url(about:privatebrowsing) {
:root{
scrollbar-width: none !important;
}
}

24
home/config/mpd/mpd.conf Normal file
View File

@@ -0,0 +1,24 @@
music_directory "~/Music"
playlist_directory "~/.config/mpd/playlists"
db_file "~/.config/mpd/database"
log_file "~/.config/mpd/log"
pid_file "~/.config/mpd/pid"
state_file "~/.config/mpd/state"
bind_to_address "~/.config/mpd/socket"
bind_to_address "localhost"
port "6600"
restore_paused "yes"
input {
plugin "curl"
}
audio_output {
type "pulse"
name "pulse audio"
}
audio_output {
type "fifo"
name "Visualizer feed"
path "/tmp/g.fifo"
format "44100:16:2"
}
filesystem_charset "UTF-8"

View File

@@ -0,0 +1,62 @@
autocenter_mode = "yes"
follow_now_playing_lyrics = "yes"
lyrics_directory = "~/.lyrics"
mpd_music_dir="~/Music"
fetch_lyrics_for_current_song_in_background = "yes"
#store_lyrics_in_song_dir = yes
browser_sort_mode=mtime
colors_enabled = "yes"
main_window_color = "white"
header_window_color = "180"
volume_color = "215"
progressbar_color = "180"
progressbar_elapsed_color = "16"
statusbar_color = "43"
active_window_border = "blue"
user_interface = "alternative"
#song_list_format="(4)[230]{l}"
song_columns_list_format = "(4)[230]{l} (30)[219]{t} (15)[180]{a} (15)[215]{b}"
song_list_format = "{$(219)%a} - {$(230)%t}"
#song_list_format = "{$7%a - $9}{$5%t$9}|{$5%f$9}$R{$6%b $9}{$3%l$9}"
song_status_format = " $6%a $7⟫⟫ $3%t $7⟫⟫ $4%b "
visualizer_data_source = "/tmp/g.fifo"
#visualizer_output_name = "my_fifo"
visualizer_type = "spectrum"
#visualizer_type = "ellipse"
visualizer_fps = 144
visualizer_in_stereo = "yes"
visualizer_look = "◆▋"
visualizer_spectrum_smooth_look="yes"
playlist_editor_display_mode = "classic"
playlist_display_mode = "columns"
cyclic_scrolling = "yes"
lines_scrolled = "2"
system_encoding = "utf-8"
regular_expressions = "extended"
#selected_item_prefix = "* "
#discard_colors_if_item_is_selected = "no"
#incremental_seeking = "yes"
#seek_time = "1"
## Visibility ##
header_visibility = "yes"
statusbar_visibility = "yes"
titles_visibility = "yes"
## Progress Bar ##
progressbar_look = "▃▃▃"
## Now Playing ##
now_playing_prefix = "> "
centered_cursor = "yes"
# Misc
display_bitrate = "yes"
enable_window_title = "yes"
empty_tag_marker = ""
#execute_on_song_change="~/.config/ncmpcpp/cover_obs.sh"

View File

@@ -0,0 +1,6 @@
let g:netrw_dirhistmax =10
let g:netrw_dirhistcnt =4
let g:netrw_dirhist_4='/home/natto/.config/deemix'
let g:netrw_dirhist_3='/mnt/Stuff/Bruhniggacode/C++'
let g:netrw_dirhist_2='/home/natto/.config/ncmpcpp'
let g:netrw_dirhist_1='/home/otaku619/.config/mpd'

View File

@@ -0,0 +1,3 @@
{
"python.jediEnabled": false
}

127
home/config/nvim/init.vim Normal file
View File

@@ -0,0 +1,127 @@
"SETTINGS
let g:mapleader = "\<Space>"
syntax enable
set modifiable
set cursorline
set hidden
set nowrap
set encoding=utf-8
set pumheight=10
set fileencoding=utf-8
set ruler
set cmdheight=2
set iskeyword+=-
set mouse=a
set splitbelow
set splitright
set t_Co=256
set conceallevel=0
set tabstop=4
set shiftwidth=4
set smarttab
set expandtab
set smartindent
set autoindent
set number
set relativenumber
set background=dark
set showtabline=2
set noshowmode
set nobackup
set nowritebackup
set updatetime=300
set timeoutlen=100
set formatoptions-=cro
set clipboard=unnamedplus
au! BufWritePost $MYVIMRC source %
cmap w!! w !sudo tee %
"MAPPINGS
inoremap <S-Space> <ESC>
nnoremap m h|xnoremap m h|onoremap m h|
nnoremap n j|xnoremap n j|onoremap n j|
nnoremap e k|xnoremap e k|onoremap e k|
nnoremap i l|xnoremap i l|onoremap i l|
nnoremap M H|xnoremap M H|onoremap M H|
nnoremap N J|xnoremap N J|onoremap N J|
nnoremap E K|xnoremap E K|onoremap E K|
nnoremap I L|xnoremap I L|onoremap I L|
nnoremap h i|xnoremap h i|onoremap h i|
nnoremap H I|xnoremap H I|onoremap H I|
nnoremap k n|xnoremap k n|onoremap k n|
nnoremap K N|xnoremap K N|onoremap K N|
nnoremap j m|xnoremap j m|onoremap j m|
nnoremap J M|xnoremap J M|onoremap J M|
nnoremap l e|xnoremap l e|onoremap l e|
nnoremap L E|xnoremap L E|onoremap L E|
nnoremap <C-s> :w<CR>
nnoremap <M-n> :resize -2<CR>
nnoremap <M-e> :resize +2<CR>
nnoremap <M-m> :vertical resize -2<CR>
nnoremap <M-i> :vertical resize +2<CR>
nnoremap <TAB> :bnext<CR>
nnoremap <S-TAB> :bprevious<CR>
vnoremap < <gv
vnoremap > >gv
nnoremap <C-q> :bd!<CR>
nnoremap <C-x> :bd#<CR>
tnoremap <C-q> :bd!<CR>
nnoremap <C-M> <C-W>h|xnoremap <C-M> <C-W>h|
nnoremap <C-N> <C-W>j|xnoremap <C-N> <C-W>j|
nnoremap <C-E> <C-W>k|xnoremap <C-E> <C-W>k|
nnoremap <C-I> <C-W>l|xnoremap <C-I> <C-W>l|
"STATUSLINE
"let right=""
"let left=""
set laststatus=2
set statusline=
set statusline+=%1*
set statusline+=\ %{ModeBruh()}\
set statusline+=%2*\%{GitBruh()}\
set statusline+=%3*\ %f\
set statusline+=%1*
set statusline+=%=
set statusline+=%3*\ %{strlen(&fenc)?&fenc:'none'}\
set statusline+=%2*\ %y\
let bruh="%  "
let bruh1="  "
set statusline+=%1*\ %p%{bruh}%l/%L%{bruh1}%c\
hi User1 guibg=#fbf1c7 guifg=#1d2021
hi User2 guibg=#1d2021 guifg=#fbf1c7
hi User3 guifg=#fbf1c7 guibg=#665c54
function! ModeBruh()
let l:mode=mode()
if l:mode==#"n"
return "NORMAL"
elseif l:mode==?"v"
return "VISUAL"
elseif l:mode==#"i"
return "INSERT"
elseif l:mode==#"R"
return "REPLACE"
elseif l:mode==?"s"
return "SELECT"
elseif l:mode==#"t"
return "TERMINAL"
elseif l:mode==#"c"
return "COMMAND"
elseif l:mode==#"!"
return "SHELL"
endif
endfunction
function! GitBruh()
let l:branchname = GitBranch()
return strlen(l:branchname) > 0?'  '.l:branchname.'':''
endfunction
function! GitBranch()
return system("git rev-parse --abbrev-ref HEAD 2>/dev/null | tr -d '\n'")
endfunction
set termguicolors

19
home/config/nvim/utils.vim Executable file
View File

@@ -0,0 +1,19 @@
" I got this part of the config from Michael Lan Source = https://www.youtube.com/watch?v=I4Rz0qoWYBl
function! TermWrapper(command) abort
if !exists('g:split_term_style') | let g:split_term_style = 'vertical' | endif
if g:split_term_style ==# 'vertical'
let buffercmd = 'vnew'
elseif g:split_term_style ==# 'horizontal'
let buffercmd = 'new'
else
echoerr 'ERROR! g:split_term_style is not a valid value (must be ''horizontal'' or ''vertical'' but is currently set to ''' . g:split_term_style . ''')'
throw 'ERROR! g:split_term_style is not a valid value (must be ''horizontal'' or ''vertical'')'
endif
exec buffercmd
exec 'term ' . a:command
exec 'startinsert'
endfunction
command! -nargs=0 CompileAndRun call TermWrapper(printf('g++ -std=c++17 %s && ./a.out', expand('%')))
autocmd FileType cpp nnoremap <F5> :CompileAndRun<CR>
let g:split_term_style = 'vertical'

154
home/config/sxhkd/sxhkdrc Normal file
View File

@@ -0,0 +1,154 @@
#
# wm independent hotkeys
#
# terminal emulator
super + Return
st
# program launcher
super + d
rofi -show drun
# make sxhkd reload its configuration files:
super + alt + c
pkill -USR1 -x sxhkd
# quit/restart bspwm
super + shift + {e,r}
bspc {quit,wm -r}
# close and kill
super + {_,shift + }q
bspc node -{c,k}
# alternate between the tiled and monocle layout
super + shift + f
bspc desktop -l next
# send the newest marked node to the newest preselected node
#super + y
# bspc node newest.marked.local -n newest.!automatic.local
# swap the current node and the biggest window
#super + g
# bspc node -s biggest.window
#
# state/flags
#
# set the window state
super + {t,shift + t,s,f}
bspc node -t {\~tiled,\~pseudo_tiled,\~floating,\~fullscreen}
# set the node flags
#super + ctrl + {m,x,y,z}
# bspc node -g {marked,locked,sticky,private}
#
# focus/swap
#
# focus the node in the given direction
super + shift + {h,j,k,l}
bspc node -s {west,south,north,east}
super + {h,j,k,l}
bspc node -f {west,south,north,east}
# focus the code for the given path jump
#super + {p,b,comma,period}
# bspc node -f @{parent,brother,first,second}
# focus the next/previous window in the current desktop
super + {_,shift + }c
bspc node -f {next,prev}.local.!hidden.window
# focus the next/previous desktop in the current monitor
super + bracket{left,right}
bspc desktop -f {prev,next}.local
# focus the last node/desktop
#super + {grave,Tab}
# bspc {node,desktop} -f last
# focus the older or newer node in the focus history
super + {o,i}
bspc wm -h off; \
bspc node {older,newer} -f; \
bspc wm -h on
# focus or send to the given desktop
super + {_,shift + }{1-9,0}
bspc {desktop -f,node -d} '^{1-9,10}'
#
# preselect
#
# preselect the direction
super + ctrl + {h,j,k,l}
bspc node -p {west,south,north,east}
# preselect the ratio
super + ctrl + {1-9}
bspc node -o 0.{1-9}
# cancel the preselection for the focused node
super + ctrl + space
bspc node -p cancel
# cancel the preselection for the focused desktop
super + ctrl + shift + space
bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel
#
# move/resize
#
# expand a window by moving one of its side outward
super + alt + {h,j,k,l}
bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}
# contract a window by moving one of its side inward
super + alt + shift + {h,j,k,l}
bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0}
# move a floating window
super + {Left,Down,Up,Right}
bspc node -v {-20 0,0 20,0 -20,20 0}
#
# Screenshotting
#
@Print
flameshot & flameshot full -p ~/Pictures
# exec scrot '%d-%m-%Y_%I-%M-%S%p.png' -e 'mv ~/$f ~/Pictures/'
shift + @Print
flameshot & flameshot gui -p ~/Pictures
# exec scrot -s '%d-%m-%Y_%I-%M-%S%p.png' -e 'mv ~/$f ~/Pictures/'
#super + @Print
#flameshot gui full -p ~/Pictures
# exec scrot -u '%d-%m-%Y_%I-%M-%S%p.png' -e 'mv ~/$f ~/Pictures/'
alt + @Print
flameshot & flameshot gui -d 10000 -p ~/Pictures
# exec scrot -d 10 '%d-%m-%Y_%I-%M-%S%p.png' -e 'mv ~/$f ~/Pictures/'
#
#mpd/ncmpcpp
#
super + shift + n
mpc prev
super + shift + m
mpc next
super + shift + space
mpc toggle
super + A
mpc seek +00:00:05
super + D
mpc seek -00:00:05

View File

@@ -0,0 +1,14 @@
set statusbar-h-padding 0
set statusbar-v-padding 0
set page-padding 1
map w scroll half-up
map r scroll half-down
map s reload
map S rotate
map f zoom in
map q zoom out
map p follow link
map m left
map i right
map n down
map e up

15
home/modules/files.nix Normal file
View File

@@ -0,0 +1,15 @@
{config, ...}:
let
home = config.home.homeDirectory;
in {
home = {
file.ncmpcpp = {
source = ../config/ncmpcpp/config;
target = "${home}/.config/ncmpcpp/config";
};
file.mpd = {
source = ../config/mpd/mpd.conf;
target = "${home}/.config/mpd/mpd.conf";
};
};
}

10
home/modules/gtk.nix Normal file
View File

@@ -0,0 +1,10 @@
{config, pkgs,...}:
{
gtk = {
enable = true;
iconTheme.name = "Gruvbox-Material-Dark";
iconTheme.package = pkgs.gruvbox-icons;
theme.name = "Equilux";
theme.package = pkgs.equilux-theme;
};
}

37
home/modules/programs.nix Normal file
View File

@@ -0,0 +1,37 @@
{ pkgs, config, ...}:
{
imports = [
./programs/nvim.nix
];
programs = {
firefox = {
enable = true;
package = pkgs.firefox-bin;
profiles.natto = {
name = "natto";
userChrome = builtins.readFile ../config/firefox/userChrome.css;
userContent = builtins.readFile ../config/firefox/userContent.css;
};
};
zathura = {
enable = true;
extraConfig = builtins.readFile ../config/zathura/zathurarc;
options = {
recolor = true;
recolor-lightcolor = "rgba(0,0,0,0)";
default-bg = "rgba(0,0,0,0.7)";
};
};
ncmpcpp = {
enable = true;
};
mpv = {
enable = true;
config = {
force-window = "yes";
keep-open = "yes";
save-position-on-quit = "yes";
};
};
};
}

View File

@@ -0,0 +1,88 @@
{config, pkgs, ...}:
let
plugs = {
floaterm = {
config = ''
let g:floaterm_keymap_toggle = '<F1>'
let g:floaterm_keymap_next = '<F2>'
let g:floaterm_keymap_prev = '<F3>'
let g:floaterm_keymap_new = '<F4>'
let g:floaterm_gitcommit='floaterm'
let g:floaterm_autoinsert=1
let g:floaterm_width=0.8
let g:floaterm_height=0.8
let g:floaterm_wintitle=0
let g:floaterm_shell="/usr/bin/env fish"
'';
plugin = pkgs.vimPlugins.vim-floaterm;
};
nvim-colorizer = {
plugin = pkgs.vimPlugins.nvim-colorizer-lua;
config = ''
packadd! nvim-colorizer.lua
lua require'colorizer'.setup()
'';
};
auto-pairs = {
plugin = pkgs.vimPlugins.auto-pairs;
};
vim-closetag = {
config = ''
let g:closetag_filenames = "*.html,*.xhtml,*.phtml,*.js,*.erb,*.jsx"
let g:closetag_xhtml_filenames = '*.xhtml,*.jsx,*.js,*.erb'
let g:closetag_emptyTags_caseSensitive = 1
let g:closetag_shortcut = '>'
let g:closetag_close_shortcut = '<leader>>'
'';
plugin = pkgs.vimPlugins.vim-closetag;
};
nerdcommenter = {
config = ''
map <C-c> <plug>NERDCommenterToggle
map <C-d> <plug>NERDCommenterSexy
'';
plugin = pkgs.vimPlugins.nerdcommenter;
};
vim-rooter = {
plugin = pkgs.vimPlugins.vim-rooter;
};
vim-polyglot = {
plugin = pkgs.vimPlugins.vim-polyglot;
};
themes = {
gruvbox = {
plugin = pkgs.vimPlugins.gruvbox;
};
};
};
in
{
programs.neovim = {
enable = true;
vimAlias = true;
viAlias = false;
withNodeJs = true;
withPython = true;
extraConfig = ''
let g:gruvbox_italic=1
let g:gruvbox_contrast_dark="hard"
let g:gruvbox_contrast_light="hard"
set background=dark
colorscheme gruvbox
'' +
builtins.readFile ../../config/nvim/init.vim +
builtins.readFile ../../config/nvim/utils.vim;
plugins = with plugs; [
auto-pairs
#nvim-colorizer
floaterm
vim-rooter
nerdcommenter
vim-polyglot
vim-closetag
themes.gruvbox
];
};
}

48
home/modules/services.nix Normal file
View File

@@ -0,0 +1,48 @@
{config, pkgs, ...}:
let
home = config.home.homeDirectory;
in
{
services = {
picom = {
enable = true;
extraOptions =
''
shadow = true;
shadow-radius = 7;
shadow-offset-x = -7;
shadow-offset-y = -7;
blurExclude = [ "class_g = 'dwm'" ];
inactive-opacity = 0.92;
active-opacity = 0.97;
inactive-opacity-override = true;
blur-background = true;
blur-method = "dual_kawase";
blur-strength = 3;
blur-kern = "3x3box";
fading = true;
fade-in-step = 0.05;
fade-out-step = 0.05;
backend = "glx";
detect-rounded-corners = true;
detect-client-opacity = true;
experimental-backends = true;
vsync = false;
wintypes:
{
tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; };
popup_menu={opacity=0.8;};
dropdown_menu={opacity=0.8;};
};
shadow-exclude = ["x = 0 && y = 0 && override_redirect = true"]
'';
};
sxhkd = {
enable = false;
extraConfig = builtins.readFile ./config/sxhkd/sxhkdrc;
};
};
}

View File

@@ -0,0 +1,9 @@
{pkgs, config, ...}:
{
xsession = {
windowManager.bspwm = {
enable = false;
extraConfig = builtins.readFile ./config/bspwm/bspwmrc;
};
};
}

View File

@@ -1,6 +1,13 @@
{ config, pkgs, ... }: { config, pkgs, ... }:
{ {
imports = [
./modules/programs.nix
./modules/xsession.nix
./modules/files.nix
./modules/services.nix
./modules/gtk.nix
];
nixpkgs = { nixpkgs = {
config = { config = {
allowUnfree = true; allowUnfree = true;
@@ -8,10 +15,24 @@
}; };
home = { home = {
packages = with pkgs; [ packages = with pkgs; [
mpdas
mpd
dunst
pavucontrol
anup
proxychains
cmake
xfce.thunar
discord discord
customscripts customscripts
mpd_discord_richpresence mpd_discord_richpresence
sox
qbittorrent qbittorrent
tor-browser-bundle-bin
mpc_cli
flameshot
luajit
mpv
]; ];
}; };
} }

7
home/root.nix Normal file
View File

@@ -0,0 +1,7 @@
{config, ...}:
{
imports = [
./modules/programs/nvim.nix
./modules/gtk.nix
];
}

18
overlays/anup/default.nix Normal file
View File

@@ -0,0 +1,18 @@
{ lib, rustPlatform, fetchFromGitHub, sqlite, xdg_utils}:
rustPlatform.buildRustPackage rec {
pname = "anup";
version = "0.4.0";
src = fetchFromGitHub {
owner = "Acizza";
repo = "anup";
rev = version;
sha256 = "sha256-4pXF4p4K8+YihVB9NdgT6bOidmQEgWXUbcbvgXJ0IDA=";
};
buildInputs = [
sqlite.dev
xdg_utils
];
cargoSha256 = "sha256-1TA2HDHKA3twFtlAWaC2zcRzS8TJwcbBt1OTQ3hC3qM=";
}

View File

@@ -0,0 +1,15 @@
{ stdenv, fetchgit }:
stdenv.mkDerivation rec {
name = "gruvbox-icons";
src = fetchgit {
url = "https://github.com/sainnhe/gruvbox-material-gtk";
rev = "2418ff7988411c57f8974f14adeb70a64e7f25c1";
sha256 = "sha256-56Mu8zHcnB4++QXjAq3S7/UPvDB8DlpT14mAW3ketSY=";
};
dontBuild = true;
installPhase = ''
mkdir -p $out/share
cp -r icons $out/share
'';
}

View File

@@ -1,4 +1,6 @@
final: prev: { final: prev: {
mpd_discord_richpresence = prev.callPackage ./mpd-rpc {}; mpd_discord_richpresence = prev.callPackage ./mpd-rpc {};
customscripts = prev.callPackage ./customscripts {}; customscripts = prev.callPackage ./customscripts {};
gruvbox-icons = prev.callPackage ./gruvbox-icons {};
anup = prev.callPackage ./anup {};
} }