I did it. I finally got rid of this declarative crap and rewrite everything to bash. No home-manager channel. No bullshit. Just me and my disk

This commit is contained in:
Gregory 2026-02-10 16:46:41 +03:00
parent eacce4ceef
commit a2f1530daf
28 changed files with 1734 additions and 54 deletions

32
.emacs Normal file
View File

@ -0,0 +1,32 @@
(defun my-disable-gui-bars (&optional frame)
"Turn off tool-, menu- and scrollbars in FRAME (default: current frame)."
(with-selected-frame (or frame (selected-frame))
(menu-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)))
;; Apply to the first frame right now
(my-disable-gui-bars)
;; And to every frame created in the future
(add-hook 'after-make-frame-functions #'my-disable-gui-bars)
;; Prevent the bars from flickering at startup
(setq default-frame-alist
'((menu-bar-lines . 0)
(tool-bar-lines . 0)
(vertical-scroll-bars . nil)))
;;(setq inhibit-startup-screen t)
(global-set-key (kbd "C-w <left>") #'windmove-left)
(global-set-key (kbd "C-w <right>") #'windmove-right)
(global-set-key (kbd "C-w <up>") #'windmove-up)
(global-set-key (kbd "C-w <down>") #'windmove-down)
(load-theme 'tango-dark t)
;;(add-to-list 'default-frame-alist
;; '(font . "Fira Code-14"))
(setq org-support-shift-select nil)

6
.gitignore vendored
View File

@ -1 +1,7 @@
hardware-configuration.nix hardware-configuration.nix
/de/dwm/dwm
/de/st/st
/de/my-tui-utils/my-tui-utils
/de/sxiv/sxiv
/de/dmenu/dmenu
result

108
.keynavrc Normal file
View File

@ -0,0 +1,108 @@
clear
Super_L+slash start
Escape end
ctrl+bracketleft end
j cut-left
k cut-down
l cut-up
semicolon cut-right
u cut-left,cut-up
i cut-right,cut-up
n cut-left,cut-down
m cut-right,cut-down
shift+j move-left
shift+k move-down
shift+l move-up
shift+semicolon move-right
shift+u move-left,move-up
shift+i move-right,move-up
shift+n move-left,move-down
shift+m move-right,move-down
space warp,click 1,end
Return warp,click 2,end
slash warp,end
Tab warp
1 click 1
2 click 2
3 click 3
w windowzoom
# Zoom to the cursor location
c cursorzoom 400 400
# Arrow keys can move the grid as welll
Left cut-left
Down cut-down
Up cut-up
Right cut-right
shift+Left move-left
shift+Down move-down
shift+Up move-up
shift+Right move-right
a history-back
# Record keynav actions (Had not tried yet)
q record
shift+at playback
### Example using the 'sh' command.
# Make firefox the active window
#f sh "xdotool windowactivate $(xdotool search -title -- '- Mozilla Firefox')", end
# Make a new tab in google chrome:
#t sh "xdotool windowactivate $(xdotool search --title -- '- Google Chrome' | head -1); xdotool key ctrl+t",end
# Paste
#v sh "xdotool key shift+Insert"
### Drag examples
# Start drag holding the left mouse button
#q drag 1
# Start drag holding middle mouse + control and shift
#w drag 2 ctrl+shift
# Dragging with modifiers
#q drag 1
#ctrl+q drag 1 ctrl
#shift+q drag 1 shift
#shift+ctrl+q drag 1 shift+ctrl
### Example of cut and move without the default values
#h cut-left .75
#j cut-down .75
#k cut-up .75
#l cut-right .75
#shift+h move-left .50
#shift+j move-down .50
#shift+k move-up .50
#shift+l move-right .50
### Example using a 2-row, 3-column grid,
# mapped to Insert/Home/PageUp/etc...
#6 grid 2x3
#Insert cell-select 1x1
#Home cell-select 1x2
#Prior cell-select 1x3 # PageUp
#Delete cell-select 2x1
#End cell-select 2x2
#Next cell-select 2x3 # PageDown
### Example using a 3x3 grid with nethack-vi keys
#ctrl+semicolon start, grid 3x3
#h cell-select 1x2 # left
#j cell-select 2x3 # down
#k cell-select 2x1 # up
#l cell-select 3x2 # right
#y cell-select 1x1 # up-left
#u cell-select 3x1 # up-right
#b cell-select 1x3 # down-left
#n cell-select 3x3 # down-right
#period cell-select 2x2 # center

5
.lesskey Normal file
View File

@ -0,0 +1,5 @@
h noaction
j left-scroll
k forw-line
l back-line
; right-scroll

78
.tmux.conf Normal file
View File

@ -0,0 +1,78 @@
set -g history-limit 200000
set -g mouse off
set -g base-index 1
set -gw pane-base-index 1
set -g mode-keys emacs
# Previously set to tmux-256color and xterm-256color
set -g default-terminal xterm-256color
set -g escape-time 0
set -g repeat-time 0
set -g status on
set -g status-style bg=#66ccff,fg=black,
set -g window-status-style bg=#ccffff,fg=black
set -g window-status-current-style bg=red,fg=white
set -g status-left-style fg=black,bold
set -g status-right-style fg=black,bold
unbind -T copy-mode C-Space
unbind -T copy-mode v
bind -T copy-mode v send-keys -X begin-selection
unbind -T copy-mode C-w
unbind -T copy-mode y
bind -T copy-mode y send-keys -X copy-selection-and-cancel
unbind -T copy-mode Y
bind -T copy-mode Y send-keys -X pipe-and-cancel "xclip -i -f -selection primary | xclip -i -selection clipboard"
unbind -T copy-mode j
unbind -T copy-mode k
unbind -T copy-mode l
unbind -T copy-mode \;
bind -T copy-mode j send-keys -X cursor-left
bind -T copy-mode k send-keys -X cursor-down
bind -T copy-mode l send-keys -X cursor-up
bind -T copy-mode \; send-keys -X cursor-right
%hidden start_command="zsh -l"
%hidden small_resize="3"
%hidden big_resize="13"
unbind C
unbind c
bind C new-window
bind c new-window $start_command
unbind \"
bind \" split-window -v -c "#{pane_current_path}" $start_command
unbind %
bind % split-window -h -c "#{pane_current_path}" $start_command
unbind Q
bind Q kill-session
# This binding is for gays. I don't use it. Because I'm not gay.
# bind h select-pane -t "{left-of}"
bind j select-pane -L
bind k select-pane -D
bind l select-pane -U
bind \; select-pane -R
#set -ga terminal-overrides ",*:ctrlsem=\033[69;50S"
#set -ga terminal-overrides ",*:altsem=\033[69;2S"
set -s user-keys[0] "\e[69;50S"
set -s user-keys[1] "\e[69;2S"
bind -n User0 send-keys "\e[69;50S"
bind -n User1 send-keys "\e[69;2S"
bind C-j resize-pane -L $small_resize
bind C-k resize-pane -D $small_resize
bind C-l resize-pane -U $small_resize
bind User0 resize-pane -R $small_resize
bind M-j resize-pane -L $big_resize
bind M-k resize-pane -D $big_resize
bind M-l resize-pane -U $big_resize
bind User1 resize-pane -R $big_resize
bind r source-file ~/.tmux.conf \; display "Config reloaded"

151
.vimrc Executable file
View File

@ -0,0 +1,151 @@
let g:ctrl_semicolon_key_code="<Esc>[69;50S"
set number
set expandtab
set softtabstop=4
set tabstop=4
set shiftwidth=4
set textwidth=99999999
set wrapmargin=0
set nowrap
set formatoptions-=t
set clipboard=unnamedplus
set mouse=n
set noswapfile
set backspace=indent,eol,start
set ttimeoutlen=5
let g:ale_enabled = 0
" For YCM
let g:ycm_auto_trigger = 0
let g:ycm_auto_hover = ''
let g:ycm_signature_help = 0
let g:ycm_show_diagnostics_ui = 0
set completeopt=menuone,popup
let g:ycm_server_keep_logfiles = 0
"set nocompatible
" filetype off
" set rtp+=~/.vim/bundle/Vundle.vim
"set rtp+=~/.vim/bundle/ale
"set rtp+=~/.vim/bundle/nerdtree
"set rtp+=~/.vim/bundle/vim-airline
"set rtp+=~/.vim/bundle/YouCompleteMe
" filetype plugin indent on
syntax on
set signcolumn=yes
highlight Normal ctermbg=NONE guibg=NONE
highlight SignColumn term=standout ctermfg=14 ctermbg=37 guifg=Cyan guibg=LightSeaGreen
highlight EndOfBuffer ctermbg=NONE ctermfg=37 guibg=NONE guifg=LightSeaGreen
highlight Pmenu ctermbg=darkblue ctermfg=white
highlight PmenuSel ctermbg=lightblue ctermfg=black
"nnoremap <F3> :YcmCompleter GetDoc<CR>
"nnoremap <F4> :<C-u>echo ""<CR>
"inoremap <silent> <C-a> <plug>(YCMCompleter)
"autocmd User YcmLoaded inoremap <silent> <C-a> <Plug>(YCMCompleter)
" How bad YCM developers had not thought about ADDING AN ABILITY TO MAP FUNCTIONS
imap <c-a> <c-space>
inoremap <C-q> <C-y>
nnoremap q <nop>
" For Airline
let g:airline_powerline_fonts = 1
let g:airline#extensions#keymap#enabled = 0
let g:airline_section_z = "\ue0a1:%l/%L Col:%c"
let g:Powerline_symbols='unicode'
" For NERDTree
let g:NERDTreeShowHidden=1
nnoremap <leader>i :NERDTree<CR><C-w>5>
nnoremap <leader>v :source $MYVIMRC<cr>
nnoremap <leader>e :vsplit $MYVIMRC<cr>
nnoremap <leader>w :set wrap<cr>:set linebreak<cr>
nnoremap <leader>y :call system("wl-copy", getreg("@\""))<cr>
" Close the tab if NERDTree is the only window remaining in it.
autocmd BufEnter * if winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | call feedkeys(":quit\<CR>:\<BS>") | endif
" If another buffer tries to replace NERDTree, put it in the other window, and bring back NERDTree.
autocmd BufEnter * if winnr() == winnr('h') && bufname('#') =~ 'NERD_tree_\d\+' && bufname('%') !~ 'NERD_tree_\d\+' && winnr('$') > 1 |
\ let buf=bufnr() | buffer# | execute "normal! \<C-W>w" | execute 'buffer'.buf | endif
" Remap cursor movement keys in Normal mode
nnoremap j h
nnoremap k gj
nnoremap l gk
nnoremap ; l
nnoremap <C-j> h
nnoremap <C-k> gj
nnoremap <C-l> gk
execute "nnoremap " . g:ctrl_semicolon_key_code . " l"
" Remap cursor movement keys in Visual mode
vnoremap j h
vnoremap k gj
vnoremap l gk
vnoremap ; l
vnoremap <C-j> h
vnoremap <C-k> gj
vnoremap <C-l> gk
execute "vnoremap " . g:ctrl_semicolon_key_code . " l"
" Remap cursor movement keys in Select mode
snoremap j h
snoremap k gj
snoremap l gk
snoremap ; l
" Remap cursor movement keys in Operator-pending mode
onoremap j h
onoremap k gj
onoremap l gk
onoremap ; l
" Remap cursor movement keys in Insert mode
inoremap <C-j> <Left>
inoremap <C-k> g<Down>
inoremap <C-l> g<Up>
execute "inoremap " . g:ctrl_semicolon_key_code . " <Right>"
" Remap cursor movement keys in Command-line mode
cnoremap <C-j> <Left>
cnoremap <C-k> g<Down>
cnoremap <C-l> g<Up>
execute "cnoremap " . g:ctrl_semicolon_key_code . " <Right>"
"Remap window movement
nnoremap <C-w>j <C-w>h
nnoremap <C-w>k <C-w>j
nnoremap <C-w>l <C-w>k
nnoremap <C-w>; <C-w>l
" My custom idea - moving window with the cursor
nnoremap K j<C-e>
nnoremap L k<C-y>
"Navigating tabs
nnoremap <C-t>j gT
nnoremap <C-t>; gt
"Rearranging tabs
nnoremap <C-t>J :tabmove -1<cr>
nnoremap <C-t>: :tabmove +1<cr>
"Makefile tab highlight
augroup MakefileTabHighlight
autocmd!
"autocmd FileType make syntax match FirstTab /^\t/
"autocmd FileType make highlight FirstTab ctermbg=35 ctermfg=35
autocmd FileType make setlocal noexpandtab
autocmd FileType make setlocal list
autocmd FileType make setlocal lcs=tab:*\ \*
autocmd FileType make highlight SpecialKey ctermbg=35 ctermfg=30
augroup END

29
.xinitrc Executable file
View File

@ -0,0 +1,29 @@
#!/bin/sh
exec >~/xinitrc.log 2>&1
set -x
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export SDL_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
setxkbmap -layout "us,ru" -option "grp:win_space_toggle"
xset r rate 250 30
xset b off
xset s off -dpms
flameshot &
picom &
fcitx5 &
keynav &
AVD="$HOME/desktop_env/avd"
"$AVD/avdd" &
"$AVD/avds" 'bat,dt,vol-amixer' m true &
"$AVD/avds" 'cpu,mem' 2000 true &
dwm_random_bg.sh &
exec dwm

66
HaskellImportCrib.hs Normal file
View File

@ -0,0 +1,66 @@
-- Module declaration with explicit exports: exports only specified items, hiding others.
-- Here, exporting a function, a type with all constructors, a class, and a module re-export.
module ExampleModule
( myFunction -- Exports the function myFunction
, MyType(..) -- Exports type MyType and all its constructors/patterns
, class MyClass -- Exports the class MyClass
, module Data.Maybe -- Re-exports everything from Data.Maybe
) where
-- Simple import: imports all exported items from Prelude unqualified.
import Prelude
-- Empty import list: imports nothing explicitly, but allows qualified access if qualified.
import Prelude ()
-- Specific imports: imports only listed items unqualified.
import Prelude (not, (&&)) -- Imports not and && operators.
-- Import type with specific constructors: imports MyType but only Con1 and Con2.
import ExampleModule (MyType(Con1, Con2)) -- Imports Con1 and Con2 for MyType.
-- Import type with all constructors: imports MyType and all its constructors.
import ExampleModule (MyType(..)) -- Imports MyType and all constructors/patterns.
-- Import class: imports the class MyClass.
import ExampleModule (class MyClass) -- Imports MyClass class.
-- Hiding specific items: imports all from Prelude except not and &&.
import Prelude hiding (not, (&&)) -- Excludes not and && from import.
-- Qualified import: imports all from Data.List qualified, access via Data.List.name.
import qualified Data.List
-- Qualified with hiding: imports qualified, excluding intersect.
import qualified Data.List hiding (intersect) -- Excludes intersect, others via Data.List.
-- Qualified with specific items: imports only sort and length qualified.
import qualified Data.List (sort, length) -- Access via Data.List.sort, Data.List.length.
-- Import as alias: imports all from Data.Map unqualified, but alias for qualified use.
import Data.Map as M -- Unqualified access, or M. for qualified.
-- Qualified as alias: imports qualified with alias DM.
import qualified Data.Map as DM -- Access via DM.name.
-- Qualified as alias with specific items: imports only lookup and insert as DM.
import qualified Data.Map (lookup, insert) as DM -- DM.lookup, DM.insert.
-- Qualified as alias hiding: imports qualified as DM, hiding delete.
import qualified Data.Map hiding (delete) as DM -- Excludes delete, others via DM.
-- ghci -i path/to/my/custom/module/ Executable.hs
import MyCustomModule -- Imports from specified source file.
-- Import safe: imports only safe exports (no unsafePerformIO etc.).
import safe System.IO.Unsafe -- Imports only safe items.
-- Qualified safe: imports qualified and safe.
import safe qualified System.IO.Unsafe as Unsafe -- Unsafe.name, only safe items.
-- Import instances: instances are imported automatically with types/classes (no explicit syntax).
-- Re-exporting: as shown in module header, use module OtherModule to re-export.
-- Note: Exports control visibility; if not in export list, hidden unless open module.

121
batshit.sh Executable file
View File

@ -0,0 +1,121 @@
#!/usr/bin/env bash
# From gregory
# I wrote none of this. This script is produced entirely by AI
# Function to get battery percentage
get_battery_percentage() {
local bat_path="/sys/class/power_supply"
local bat_name=""
# Find battery directory
for bat in "$bat_path"/BAT*; do
if [ -d "$bat" ]; then
bat_name=$(basename "$bat")
break
fi
done
if [ -z "$bat_name" ]; then
echo "BATTERY_NOT_FOUND"
return 1
fi
local capacity_file="$bat_path/$bat_name/capacity"
if [ ! -r "$capacity_file" ]; then
echo "CAPACITY_READ_FAILED"
return 1
fi
local capacity
if ! capacity=$(cat "$capacity_file" 2>/dev/null); then
echo "CAPACITY_READ_FAILED"
return 1
fi
# Validate it's a number between 0-100
if ! echo "$capacity" | grep -qE '^[0-9]+$'; then
echo "CAPACITY_INVALID"
return 1
fi
if [ "$capacity" -lt 0 ] || [ "$capacity" -gt 100 ]; then
echo "CAPACITY_INVALID"
return 1
fi
echo "$capacity"
}
# Function to get battery status
get_battery_status() {
local bat_path="/sys/class/power_supply"
local bat_name=""
# Find battery directory
for bat in "$bat_path"/BAT*; do
if [ -d "$bat" ]; then
bat_name=$(basename "$bat")
break
fi
done
if [ -z "$bat_name" ]; then
echo "BATTERY_NOT_FOUND"
return 1
fi
local status_file="$bat_path/$bat_name/status"
if [ ! -r "$status_file" ]; then
echo "STATUS_READ_FAILED"
return 1
fi
local status
if ! status=$(cat "$status_file" 2>/dev/null); then
echo "STATUS_READ_FAILED"
return 1
fi
# Validate status is one of expected values
case "$status" in
Charging|Discharging|Full|Unknown|"Not charging")
echo "$status"
;;
*)
echo "STATUS_UNKNOWN"
return 1
;;
esac
}
# Function to get date
get_date() {
if ! date +%Y-%m-%d 2>/dev/null; then
echo "DATE_FAILED"
return 1
fi
}
# Function to get time with seconds
get_time() {
if ! date +%H:%M:%S 2>/dev/null; then
echo "TIME_FAILED"
return 1
fi
}
# Main loop
while true; do
# Get all components
battery_percent=$(get_battery_percentage)
battery_status=$(get_battery_status)
current_date=$(get_date)
current_time=$(get_time)
# Print the line
echo "${battery_percent}% ${battery_status} ${current_date} ${current_time}"
# Wait 1 second
sleep 1
done

40
cmus-rc Normal file
View File

@ -0,0 +1,40 @@
set color_win_fg=227
set color_win_bg=default
set color_cmdline_fg=220
set color_cmdline_bg=default
set color_error=9
set color_info=106
set color_separator=11
set color_statusline_fg=208
set color_statusline_bg=default
set color_statusline_progress_fg=162
set color_statusline_progress_bg=default
set color_titleline_fg=214
set color_titleline_bg=default
set color_win_title_fg=166
set color_win_title_bg=default
set color_win_cur=9
# When track is hovered and playing
set color_win_cur_sel_fg=88
set color_win_cur_sel_bg=220
# When track is playing and selected but not hovered
set color_win_inactive_cur_sel_fg=88
set color_win_inactive_cur_sel_bg=222
# When track is not playing and hovered
set color_win_sel_fg=232
set color_win_sel_bg=190
# When some track is selected but is not playing and not hovered
set color_win_inactive_sel_fg=232
set color_win_inactive_sel_bg=172
set color_win_dir=155
unbind -f common h
bind -f common j seek -5
bind -f common k win-down
bind -f common l win-up
bind -f common ; seek +5
bind -f common R source ~/.config/cmus/rc
bind -f common A add -l ~/Music

View File

@ -1,11 +1,11 @@
# nixos-help
{ config, pkgs, lib, ... }: { config, pkgs, lib, ... }:
let home-manager-src = builtins.fetchTarball {
url = "https://github.com/nix-community/home-manager/archive/release-25.11.tar.gz";
}; in
{ {
imports = [ imports = [
./hardware-configuration.nix ./hardware-configuration.nix
# <home-manager/nixos> (import "${home-manager-src}/nixos")
<nixpkgs/nixos/modules/services/hardware/sane_extra_backends/brscan4.nix> <nixpkgs/nixos/modules/services/hardware/sane_extra_backends/brscan4.nix>
]; ];
@ -18,10 +18,42 @@
nix.settings.experimental-features = [ "nix-command"]; nix.settings.experimental-features = [ "nix-command"];
boot.extraModulePackages = with config.boot.kernelPackages; [
v4l2loopback
];
home-manager.users.gregory = import ./home.nix { inherit pkgs; };
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
#pkgs.python312.withPackages (ps: [ ps.pillow ps.pyftpdlib ps.numpy ])
python3 python3Packages.numpy python3Packages.pillow python3Packages.pyyaml python3Packages.pyftpdlib
(haskellPackages.ghcWithPackages (hpkgs: with hpkgs; [
random
]))
haskell-language-server
cowsay
tagainijisho
djview
djvulibre
convmv
dnsmasq
# linuxKernel.packages.linux_6_12.v4l2loopback
config.boot.kernelPackages.v4l2loopback
cheese
perf
pymol
bedtools
krita
v4l-utils
wf-recorder
wl-screenrec
libime
pencil2d
helix
graphviz
gzdoom
bc bc
optipng optipng
#xdg-desktop-portal-wlr
i3status i3status
waybar waybar
qrencode qrencode
@ -118,7 +150,7 @@
cmus cmus
htop htop
picom picom
linuxKernel.packages.linux_5_4.wireguard #linuxKernel.packages.linux_5_4.wireguard
wireguard-tools wireguard-tools
pulsemixer pulsemixer
nix-prefetch-git nix-prefetch-git
@ -170,7 +202,7 @@
steam-tui steam-tui
steamcmd steamcmd
ratpoison #ratpoison
waybar # status bar waybar # status bar
wl-clipboard wl-clipboard
@ -179,29 +211,47 @@
foot foot
]; ];
environment.etc."profile.local" = { services.logind.settings.Login = {
text = '' HandleLidSwitch="ignore";
export EDITOR=vim HandleLidSwitchExternalPower="ignore";
''; HandleLidSwitchDocked="ignore";
}; };
environment.etc."zshrc.local".text = builtins.readFile ./zshrc.local;
environment.etc."my_zsh_utils.zsh".text = builtins.readFile ./my_zsh_utils.zsh; networking.firewall = {
enable = true;
allowedTCPPorts = [ 5559 5560 5561 ];
};
services.flatpak.enable=true;
environment.etc."profile.local".text = ''
export EDITOR=vim
'';
services.dbus.enable = true; services.dbus.enable = true;
xdg.portal = { xdg.portal = {
enable = true; enable = true; # Ensure portals are enabled
wlr.enable = true; extraPortals = with pkgs; [
extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; xdg-desktop-portal-gtk # For 'gtk' backend
xdg-desktop-portal-wlr # For 'wlr' backend
];
config.common = {
default = "gtk"; # Default to gtk for all interfaces
"org.freedesktop.impl.portal.Screencast" = "wlr";
"org.freedesktop.impl.portal.Screenshot" = "wlr";
};
}; };
i18n.inputMethod = { i18n.inputMethod = {
enable = true; enable = true;
type = "fcitx5"; type = "fcitx5";
fcitx5.waylandFrontend = true;
fcitx5.addons = with pkgs; [ fcitx5.addons = with pkgs; [
#qt6Packages.fcitx5-chinese-addons
fcitx5-mozc fcitx5-mozc
#fcitx5-mozc-ut #fcitx5-mozc-ut
fcitx5-gtk fcitx5-gtk
fcitx5-configtool qt6Packages.fcitx5-configtool
]; ];
}; };
@ -222,7 +272,7 @@
WLR_NO_HARDWARE_CURSORS = "1"; WLR_NO_HARDWARE_CURSORS = "1";
}; };
networking.hostName = "gaminglaptopg"; networking.hostName = "siliconCan";
networking.networkmanager.enable = true; networking.networkmanager.enable = true;
@ -283,45 +333,25 @@
openFirewall = true; openFirewall = true;
}; };
services.logind.extraConfig = '' # todo: use services.logind.settings.Login instead
LidSwitchIgnoreInhibited=no #services.logind.extraConfig = ''
HandleLidSwitch=ignore # LidSwitchIgnoreInhibited=no
''; # HandleLidSwitch=ignore
#'';
programs.zsh.enable = true; programs.zsh.enable = true;
services.pulseaudio.enable = lib.mkForce false; services.pulseaudio.enable = lib.mkForce false;
security.rtkit.enable = true; security.rtkit.enable = true;
services.pipewire = { services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
#jack.enable = true;
wireplumber = {
enable = true; enable = true;
alsa.enable = true; };
alsa.support32Bit = true;
pulse.enable = true;
#jack.enable = true;
wireplumber = {
enable = true;
configPackages = [
(pkgs.writeTextDir "share/wireplumber/wireplumber.conf.d/51-disable-bt-suspend.conf" ''
monitor.bluez.rules = [
{
matches = [
{
node.name = "~bluez_input.*"
},
{
node.name = "~bluez_output.*"
}
]
actions = {
update-props = {
session.suspend-timeout-seconds = 0
}
}
}
]
'')
];
};
}; };
hardware.bluetooth.enable = true; hardware.bluetooth.enable = true;
hardware.bluetooth.powerOnBoot = true; hardware.bluetooth.powerOnBoot = true;
@ -462,7 +492,7 @@
}; };
services.xserver.videoDrivers = [ "amdgpu" "nouveau" ]; services.xserver.videoDrivers = [ "amdgpu" "nouveau" "intel" ];
#services.xserver.videoDrivers = ["nvidia" "amdgpu" ]; #services.xserver.videoDrivers = ["nvidia" "amdgpu" ];
#boot.blacklistedKernelModules = [ #boot.blacklistedKernelModules = [

46
de/dmenu/default.nix Normal file
View File

@ -0,0 +1,46 @@
{ stdenv, lib, pkgs, ... }:
stdenv.mkDerivation rec {
pname = "dmenu-cust";
version = "5.3-gregory";
#nv1 release
#src = builtins.fetchTarball {
# url = "https://yyyi.ru/suckless-desktop/";
# sha256 = "04098rrybliw3n4q7wvl78vca1v5nzs2d6r6i89labbp48rap48x";
#};
src = ./dmenu;
buildPhase = "make all";
installPhase = ''
DESTDIR=$out/ make PREFIX=/ install
'';
buildInputs = with pkgs; [
xorg.libX11
xorg.libXft
xorg.libXrender
fontconfig
freetype
xorg.libXinerama
python311
];
nativeBuildInputs = with pkgs; [
gnumake
pkg-config
];
meta = {
description = "Literally coolest program in the world";
platforms = lib.platforms.linux;
};
postPatch = ''
substituteInPlace config.mk \
--replace "/usr/local" "$out"
'';
}

37
de/dwm/default.nix Normal file
View File

@ -0,0 +1,37 @@
{ stdenv, lib, pkgs ? import <nixpkgs> {}, ... }:
stdenv.mkDerivation rec {
pname = "dwm-cust";
version = "6.5-gregory";
src = ./dwm;
buildPhase = "make all";
installPhase = ''
DESTDIR=$out/ make PREFIX=/ install
'';
buildInputs = with pkgs; [
xorg.libX11
xorg.libXft
xorg.libXrender
xorg.libXinerama
fontconfig
freetype
xwallpaper
#(pkgs.callPackage ../st/default.nix {})
#(pkgs.callPackage ../dmenu/default.nix {})
];
nativeBuildInputs = with pkgs; [
gnumake
pkg-config
];
meta = {
description = "My fork of dwm";
platforms = lib.platforms.linux;
};
}

12
de/let_it_happen.sh Executable file
View File

@ -0,0 +1,12 @@
#!/bin/sh
[ -f let_it_happen.sh ] || { echo "Wrong directory"; exit 1; }
sudo rm -rf ./dwm/dwm ./st/st ./my-tui-utils/my-tui-utils ./dmenu/dmenu ./sxiv/sxiv
sudo cp -r ~/desktop_env/dwm ./dwm/dwm
sudo cp -r ~/desktop_env/st ./st/st
sudo cp -r ~/desktop_env/my-tui-utils ./my-tui-utils/my-tui-utils
sudo cp -r ~/desktop_env/dmenu ./dmenu/dmenu
sudo cp -r ~/desktop_env/sxiv ./sxiv/sxiv

View File

@ -0,0 +1,29 @@
{ stdenv, lib, pkgs ? import <nixpkgs> {}, ... }:
stdenv.mkDerivation rec {
pname = "my-tui-utils";
version = "0.1";
src = ./my-tui-utils;
buildPhase = "";
installPhase = ''
make PREFIX=$out install
'';
buildInputs = with pkgs; [
python311
];
nativeBuildInputs = with pkgs; [
gnumake
pkg-config
];
meta = {
description = "Some cool programs I made on my knees";
platforms = lib.platforms.linux;
};
}

141
de/nethack-gleb/default.nix Normal file
View File

@ -0,0 +1,141 @@
{
src,
withRuNethackMemes ? false,
coreutils,
darwin,
fetchzip,
stdenv,
ncurses,
groff,
lib,
gzip,
gnugrep,
bash,
pkg-config,
pkgs,
# pkgs ? import <nixpkgs> {}
}:
stdenv.mkDerivation (finalAttrs: {
pname = "nethack";
version = "3.7-git";
src = pkgs.fetchFromGitHub {
owner = "NetHack";
repo = "NetHack";
rev = "0f01260605c9393068e07a308840a9b6f8864aa9";
sha256 = "0d193ycd5yd1sgg64m6w7gqjm8vmfx8vsmrf6vi19idhj6zch72x";
};
luaVersion = "5.4.6";
luaTarballHash = "sha256-K2dM3q69YuOhlKKE9qTcHFJUVhjlRPxQtKB8ZQOpAyE=";
luaSrc = fetchzip {
name = "lua-src";
url = "https://www.lua.org/ftp/lua-${finalAttrs.luaVersion}.tar.gz";
hash = finalAttrs.luaTarballHash;
};
platformHint =
{
"aarch64-darwin" = "macOS";
"x86_64-linux" = "linux";
}
.${stdenv.hostPlatform.system} or (throw "Unsupported platform: ${stdenv.hostPlatform.system}");
#inherit src;
prePatch = ''
mkdir -p ./lib
cp -r --no-preserve=mode ${finalAttrs.luaSrc} ./lib/lua-${finalAttrs.luaVersion}
'';
buildInputs = [ ncurses ];
nativeBuildInputs = [
groff
pkg-config
];
postPatch = ''
sed \
-e '/^GIT_HASH/d' \
-e '/^GIT_BRANCH/d' \
-e '/^SHELLDIR/d' \
-e '/-DCOMPRESS/s:/bin/gzip:${lib.getExe' gzip "gzip"}:' \
-i sys/unix/hints/${finalAttrs.platformHint}.370
${lib.optionalString stdenv.hostPlatform.isDarwin ''
substituteInPlace sys/unix/hints/${finalAttrs.platformHint}.370 \
--replace-fail "/usr/bin/true" "${coreutils}/bin/true" \
--replace-fail "which" "${darwin.shell_cmds}/bin/which"
''}
sed \
-e '/^GDBPATH=/d' \
-e '/^PANICTRACE_GDB=/s/1/0/' \
-e '/^GREPPATH=/s:=.*:=${lib.getExe gnugrep}:' \
-e '/^WIZARDS/s/=.*/=*/' \
-i sys/unix/sysconf
${lib.optionalString withRuNethackMemes ''
sed \
-e 's/\bluckstone\b/laccstone/g' \
-e 's/\bhiss\b/zHz/g' \
-e 's/\bsouls\b/Russel Souls/g' \
-i $(find -type f)
''}
'';
patches = [ ./unixconf.patch ];
configurePhase = ''
sys/unix/setup.sh sys/unix/hints/${finalAttrs.platformHint}.370
'';
postInstall = ''
mkdir $out/bin
cat > $out/bin/nethack << EOF
#! ${lib.getExe bash}
if [ -z "\$HOME" ]; then
echo "Home directory must be set to play NetHack" >&2
exit 1
fi
export NETHACKVARDIR="\$HOME/.local/share/nethack"
if [ -e "\$NETHACKVARDIR" ]; then
if [ ! -d "\$NETHACKVARDIR" ]; then
echo "\$NETHACKVARDIR must not be something that is not a directory" >&2
exit 1
fi
else
mkdir -p "\$NETHACKVARDIR"
cp -r $out/lib/nethack/vardir/* "\$NETHACKVARDIR"
chmod -R +w "\$NETHACKVARDIR"/*
fi
$out/lib/nethack/nethack \$@
EOF
chmod +x $out/bin/nethack
'';
enableParallelBuilding = true;
NIX_CFLAGS_COMPILE = "-DUSE_DARKGRAY";
makeFlags = [
"GIT=0"
"PREFIX=$(out)"
"HACKDIR=$(out)/lib/nethack"
"VARDIR=$(out)/lib/nethack/vardir"
"WANT_WIN_TTY=1"
"WANT_WIN_CURSES=1"
];
meta = {
mainProgram = "nethack";
};
})

124
de/nethack-gleb/old-def Normal file
View File

@ -0,0 +1,124 @@
{
src,
fetchzip,
stdenv,
ncurses,
util-linux,
groff,
lib,
gzip,
gnugrep,
bash,
pkg-config,
pkgs ? import <nixpkgs> {}
}:
stdenv.mkDerivation (finalAttrs: {
pname = "nethack";
version = "3.7-git";
lua-version = "5.4.6";
lua-tarball-hash = "sha256-K2dM3q69YuOhlKKE9qTcHFJUVhjlRPxQtKB8ZQOpAyE=";
srcs = [
src
(fetchzip {
name = "lua-src";
url = "https://www.lua.org/ftp/lua-${finalAttrs.lua-version}.tar.gz";
hash = finalAttrs.lua-tarball-hash;
})
];
postUnpack = ''
ls && exit 1
mkdir -p ${finalAttrs.sourceRoot}/lib/
cp -r --no-preserve=mode lua-src ${finalAttrs.sourceRoot}/lib/lua-${finalAttrs.lua-version}
'';
src = pkgs.fetchFromGitHub {
owner = "NetHack";
repo = "NetHack";
rev = "0f01260605c9393068e07a308840a9b6f8864aa9";
sha256 = "0d193ycd5yd1sgg64m6w7gqjm8vmfx8vsmrf6vi19idhj6zch72x";
};
sourceRoot = src.name;
buildInputs = [ ncurses ];
nativeBuildInputs = [
util-linux
groff
pkg-config
];
postPatch = ''
sed \
-e '/^GIT_HASH/d' \
-e '/^GIT_BRANCH/d' \
-e '/^SHELLDIR/d' \
-e '/-DCOMPRESS/s:/bin/gzip:${lib.getExe' gzip "gzip"}:' \
-i sys/unix/hints/linux.370
sed \
-e '/^GDBPATH=/d' \
-e '/^PANICTRACE_GDB=/s/1/0/' \
-e '/^GREPPATH=/s:=.*:=${lib.getExe gnugrep}:' \
-e '/^WIZARDS/s/=.*/=*/' \
-i sys/unix/sysconf
sed \
-e 's/\bluckstone\b/laccstone/g' \
-e 's/\bhiss\b/zHz/g' \
-e 's/\bsouls\b/Russel Souls/g' \
-i $(find -type f)
'';
patches = [ ./unixconf.patch ];
configurePhase = ''
sys/unix/setup.sh sys/unix/hints/linux.370
'';
postInstall = ''
mkdir $out/bin
cat > $out/bin/nethack << EOF
#! ${lib.getExe bash}
if [ -z "\$HOME" ]; then
echo "Home directory must be set to play NetHack" >&2
exit 1
fi
export NETHACKVARDIR="\$HOME/.local/share/nethack"
if [ -e "\$NETHACKVARDIR" ]; then
if [ ! -d "\$NETHACKVARDIR" ]; then
echo "\$NETHACKVARDIR must not be something that is not a directory" >&2
exit 1
fi
else
mkdir -p "\$NETHACKVARDIR"
cp -r $out/lib/nethack/vardir/* "\$NETHACKVARDIR"
chmod -R +w "\$NETHACKVARDIR"/*
fi
$out/lib/nethack/nethack \$@
EOF
chmod +x $out/bin/nethack
'';
makeFlags = [
"GIT=0"
"PREFIX=$(out)"
"HACKDIR=$(out)/lib/nethack"
"VARDIR=$(out)/lib/nethack/vardir"
"WANT_WIN_TTY=1"
"WANT_WIN_CURSES=1"
];
meta = {
mainProgram = "nethack";
};
})

View File

@ -0,0 +1,14 @@
diff --git a/include/unixconf.h b/include/unixconf.h
index 2c0d133e2..168be776b 100644
--- a/include/unixconf.h
+++ b/include/unixconf.h
@@ -83,7 +83,7 @@
* If you want the static parts of your playground on a read-only file
* system, define VAR_PLAYGROUND to be where the variable parts are kept.
*/
-/* #define VAR_PLAYGROUND "/var/lib/games/nethack" */
+#define VAR_PLAYGROUND getenv("NETHACKVARDIR")
/*
* Define DEF_PAGER as your default pager, e.g. "/bin/cat" or "/usr/ucb/more"

41
de/st/default.nix Normal file
View File

@ -0,0 +1,41 @@
{ stdenv, lib, pkgs, ... }:
# ####
stdenv.mkDerivation rec {
pname = "st-cust";
version = "0.9.2-gregory";
src = ./st;
buildPhase = "echo $PWD; echo $src; make all";
installPhase = ''
DESTDIR=$out/ make PREFIX=/ install
'';
buildInputs = with pkgs; [
xorg.libX11
xorg.libXft
xorg.libXrender
fontconfig
freetype
];
nativeBuildInputs = with pkgs; [
gnumake
pkg-config
];
meta = {
description = "Terminal emulator that does not suck dicks.";
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.linux;
};
strictDeps = true;
postPatch = ''
substituteInPlace config.mk \
--replace "/usr/local" "$out"
'';
}

48
de/sxiv/default.nix Normal file
View File

@ -0,0 +1,48 @@
{ stdenv, lib, pkgs ? import <nixpkgs> {}, ... }:
stdenv.mkDerivation rec {
pname = "sxiv-cust";
version = "26-gregory";
src = ./sxiv;
buildPhase = "echo $PWD; echo $src; make all";
installPhase = ''
DESTDIR=$out/ make PREFIX=/ install
'';
buildInputs = with pkgs; [
xorg.libX11
xorg.libXinerama
xorg.libXft
xorg.libXrandr
fontconfig
gnumake
pkg-config
freetype
xorg.libXrender
libexif
imlib2
giflib
];
nativeBuildInputs = with pkgs; [
gnumake
pkg-config
];
meta = {
description = "My fork of sxiv image viewer";
platforms = lib.platforms.linux;
};
strictDeps = true;
postPatch = ''
substituteInPlace Makefile \
--replace "/usr/local" "$out"
'';
}

12
helix-config.toml Normal file
View File

@ -0,0 +1,12 @@
[keys.normal]
"j" = "move_char_left"
"k" = "move_visual_line_down"
"l" = "move_visual_line_up"
";" = "move_char_right"
#"backspace" = "collapse_selection"
[keys.select]
"j" = "extend_char_left"
"k" = "extend_visual_line_down"
"l" = "extend_visual_line_up"
";" = "extend_char_right"

105
home.nix Normal file
View File

@ -0,0 +1,105 @@
{ pkgs, ... }:
let
userApps = "/home/gregory/.local/share/applications";
in {
home.username = "gregory";
home.homeDirectory = "/home/gregory";
home.stateVersion = "24.11";
programs.home-manager.enable = true;
#nixpkgs.overlays = [import ./d/overlays.nix ];
home.packages = with pkgs; [
(pkgs.callPackage ./de/dwm/default.nix { })
(pkgs.callPackage ./de/dmenu/default.nix { })
(pkgs.callPackage ./de/st/default.nix { })
(pkgs.callPackage ./de/my-tui-utils/default.nix { })
(pkgs.callPackage ./de/sxiv/default.nix { })
(pkgs.callPackage ./de/nethack-gleb/default.nix { })
];
programs.vim = {
enable = true;
plugins = with pkgs.vimPlugins; [ vim-airline nerdtree ];
extraConfig = builtins.readFile ./.vimrc;
};
programs.helix = {
enable = true;
# Add haskell-language-server to Helix's environment
extraPackages = [ pkgs.haskellPackages.haskell-language-server ];
settings = {
theme = "autumn_night_transparent";
editor.cursor-shape = {
normal = "block";
insert = "bar";
select = "underline";
};
};
languages.language = [
{
name = "nix";
auto-format = true;
formatter.command = "${pkgs.nixfmt}/bin/nixfmt";
}
# Optional: Explicit Haskell configuration
{
name = "haskell";
auto-format = true; # Uses HLS by default
# language-servers = [ "haskell-language-server-wrapper" ] # This is the default
}
];
themes = {
autumn_night_transparent = {
"inherits" = "autumn_night";
"ui.background" = { };
};
};
extraConfig = builtins.readFile ./helix-config.toml;
};
gtk = {
enable = true;
theme = { name = "Adwaita-dark"; };
};
home.file."${userApps}/st-vim.desktop".text = ''
[Desktop Entry]
Name=ST Vim
Exec=st -e vim %f
Icon=utilities-terminal
Terminal=false
Type=Application
MimeType=text/plain;
Categories=Utility;TextEditor;
'';
home.file."${userApps}/firefox-default-release.desktop".text = ''
[Desktop Entry]
Name=Firefox
Exec=firefox -P default-release %u
Icon=firefox
Terminal=false
Type=Application
MimeType=x-scheme-handler/http;x-scheme-handler/https;
Categories=Network;WebBrowser;
'';
xdg.mimeApps = {
enable = true;
defaultApplications = {
"x-scheme-handler/http" = [ "firefox-default-release.desktop" ];
"x-scheme-handler/https" = [ "firefox-default-release.desktop" ];
"x-scheme-handler/tg" = [ "org.telegram.desktop.desktop" ];
"x-scheme-handler/tonsite" = [ "org.telegram.desktop.desktop" ];
# Set PDF viewer
"application/pdf" = [ "org.pwmt.zathura.desktop" ];
# Set text editor
"text/plain" = [ "st-vim.desktop" ];
};
};
}

34
imper_files.sh Executable file
View File

@ -0,0 +1,34 @@
#!/usr/bin/env bash
if [ "$USER" != gregory ]; then
echo "Expected to be run as gregory"
exit 1
fi
sudo cp zshrc.local /etc/zshrc.local
sudo cp my_zsh_utils.zsh /etc/my_zsh_utils.zsh
mkdir -p ~/.config/suckless_desktop/
mkdir -p ~/.config/cmus
mkdir -p ~/.config/sway
mkdir -p ~/.config/swaylock
cp win_r.dmenu ~/.config/suckless_desktop/
cp ./.emacs ~/
cp ./.keynavrc ~/
cp ./.lesskey ~/
cp ./cmus-rc ~/.config/cmus/rc
cp ./picom.conf ~/.config/
cp ./.tmux.conf ~/
cp .xinitrc ~/.xinitrc
chmod +x ~/.xinitrc
cp ./sway-config ~/.config/sway/config
cp ./swaylock-config ~/.config/swaylock/config
cp ./batshit.sh ~/.config/sway/batshit.sh
chmod +x ~/.config/sway/batshit.sh
# todo: add mozc and fcitx5 config here

View File

@ -1,15 +1,43 @@
#!/bin/zsh #!/bin/zsh
export vfat_mount_flags="-o rw,uid=1000,gid=1000,utf8,iocharset=utf8,codepage=866"
function take-first-part-media(){
if [ $# != 3 ]; then
echo "Executed commans: ffmpeg -i \"\$1\" -t \"\$3\" -c copy \"\$2\""
else
ffmpeg -i "$1" -t "$3" -c copy "$2"
fi
}
function take-second-part-media(){
if [ $# != 3 ]; then
echo "Executed commans: ffmpeg -i \"\$1\" -ss \"\$3\" -c copy \"\$2\""
else
ffmpeg -i "$1" -ss "$3" -c copy "$2"
fi
}
alias ghci="ghci -Wno-x-partial"
function nmrescan {
nmcli device wifi rescan
}
function homeREBUILD () { function homeREBUILD () {
home-manager switch home-manager switch
} }
function nixZSHELL(){
nix-shell --command zsh
}
docx_to_pdf () { docx_to_pdf () {
if [ -z "$1" ]; then if [ -z "$1" ]; then
echo "docx_to_pdf <document path>" 1>&2 echo "docx_to_pdf <document path>" 1>&2
exit 1 else
libreoffice --headless --convert-to pdf "$1"
fi fi
libreoffice --headless --convert-to pdf "$1"
} }
download-audio(){ download-audio(){
@ -210,4 +238,3 @@ function gitaddacommit {
if [ -z "$SSH_AUTH_SOCK" ]; then if [ -z "$SSH_AUTH_SOCK" ]; then
eval "$(ssh-agent -s)" eval "$(ssh-agent -s)"
fi fi

27
picom.conf Normal file
View File

@ -0,0 +1,27 @@
# Shadow
shadow=false
# Fading
fading=true
fade-in-step=0.05
fade-out-step=0.03
fade-delta=5
# Transparency/Opacity
frame-opacity=1
#inactive-dim-fixed=false
# Blur
blur-background=true
blur-kern="11x11gaussian"
blur-strength=5
#blur-background-fixed=true
# General Settings
backend="glx"
vsync=true
detect-rounded-corners=true
detect-client-opacity=true
detect-transient=true
use-damage=true

167
sway-config Normal file
View File

@ -0,0 +1,167 @@
include /home/gregory/.config/sway/style-autogen
exec dbus-update-activation-environment WAYLAND_DISPLAY DISPLAY XDG_CURRENT_DESKTOP SWAYSOCK I3SOCK XCURSOR_SIZE XCURSOR_THEME
set $mod Mod4
floating_modifier $mod normal
bindsym --no-warn --to-code $mod+s exec st -e tmux new-session zsh
bindsym --no-warn --to-code $mod+r exec /home/gregory/.config/suckless_desktop/win_r_out/invoke.sh
bindsym --no-warn --to-code $mod+f1 exec pactl set-sink-mute @DEFAULT_SINK@ toggle
bindsym --no-warn --to-code $mod+f2 exec pactl set-sink-volume @DEFAULT_SINK@ -5%
bindsym --no-warn --to-code $mod+f3 exec pactl set-sink-volume @DEFAULT_SINK@ +5%
bindsym --no-warn --to-code XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle
bindsym --no-warn --to-code XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5%
bindsym --no-warn --to-code XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5%
bindsym --no-warn --to-code $mod+Shift+s exec swaylock
bindsym --no-warn Print exec flameshot gui --raw | wl-copy
bindsym --no-warn --to-code $mod+Home exec playerctl previous
bindsym --no-warn --to-code $mod+End exec playerctl next
bindsym --no-warn --to-code $mod+Insert exec playerctl play-pause
bindsym --no-warn --to-code XF86AudioPrev exec playerctl previous
bindsym --no-warn --to-code XF86AudioNext exec playerctl next
bindsym --no-warn --to-code XF86AudioPlay exec playerctl play-pause
bindsym --no-warn --to-code Ctrl+XF86AudioStop exec playerctl loop track
bindsym --no-warn --to-code Ctrl+XF86AudioNext exec playerctl loop playlist
bindsym --no-warn --to-code Ctrl+XF86AudioPlay exec playerctl loop playlist
bindsym --no-warn $mod+f4 kill
bindsym --no-warn --to-code $mod+f5 exec brightnessctl set 5%-
bindsym --no-warn --to-code $mod+f6 exec brightnessctl set 5%+
bindsym --no-warn --to-code XF86MonBrightnessDown exec brightnessctl set 5%-
bindsym --no-warn --to-code XF86MonBrightnessUp exec brightnessctl set 5%+
bindsym --no-warn --to-code $mod+Ctrl+Shift+f4 exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
bindsym --no-warn --to-code XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
# --- focus with j k l ; (shifted H J K L to the right) ---
bindsym --no-warn --to-code $mod+j focus left
bindsym --no-warn --to-code $mod+k focus down
bindsym --no-warn --to-code $mod+l focus up
bindsym --no-warn --to-code $mod+semicolon focus right
# (optional but handy) move containers with Shift + j/k/l/;
bindsym --no-warn --to-code $mod+Shift+j move left
bindsym --no-warn --to-code $mod+Shift+k move down
bindsym --no-warn --to-code $mod+Shift+l move up
bindsym --no-warn --to-code $mod+Shift+semicolon move right
# --- outputs (screens) ---
# focus another output
bindsym --no-warn --to-code $mod+Ctrl+j focus output left
bindsym --no-warn --to-code $mod+Ctrl+k focus output down
bindsym --no-warn --to-code $mod+Ctrl+l focus output up
bindsym --no-warn --to-code $mod+Ctrl+semicolon focus output right
# send the focused window to another output (and keep it focused)
bindsym --no-warn --to-code $mod+Ctrl+Shift+j move container to output left
bindsym --no-warn --to-code $mod+Ctrl+Shift+k move container to output down
bindsym --no-warn --to-code $mod+Ctrl+Shift+l move container to output up
bindsym --no-warn --to-code $mod+Ctrl+Shift+semicolon move container to output right
# --- window layout switching ---
# choose layouts on U / I / O to avoid conflicts
bindsym --no-warn --to-code $mod+u layout tabbed
bindsym --no-warn --to-code $mod+i layout stacking
# toggle split orientation (splith <-> splitv) for the current container
bindsym --no-warn --to-code $mod+o layout toggle split
# prepare the split direction for the *next* split
bindsym --no-warn --to-code $mod+Shift+o split toggle
bindsym --no-warn --to-code $mod+b splith
bindsym --no-warn --to-code $mod+v splitv
bindsym --no-warn --to-code $mod+Shift+c reload
bindsym --no-warn --to-code $mod+shift+e exec swaynag -t warning -m 'Do you want to exit sway' -B 'Yes' 'swaymsg exit'
bindsym --no-warn --to-code $mod+f fullscreen
bindsym --no-warn --to-code $mod+a focus parent
# Toggle the current focus between tiling and floating mode
bindsym --no-warn --to-code $mod+Ctrl+space floating toggle
# Swap focus between the tiling area and the floating area
bindsym --no-warn --to-code $mod+Shift+Ctrl+space focus mode_toggle
# Move the currently focused window to the scratchpad
bindsym $mod+Shift+minus move scratchpad
# Show the next scratchpad window or hide the focused scratchpad window.
# If there are multiple scratchpad windows, this command cycles through them.
bindsym $mod+minus scratchpad show
bindsym --no-warn $mod+1 workspace number 1
bindsym --no-warn $mod+2 workspace number 2
bindsym --no-warn $mod+3 workspace number 3
bindsym --no-warn $mod+4 workspace number 4
bindsym --no-warn $mod+5 workspace number 5
bindsym --no-warn $mod+6 workspace number 6
bindsym --no-warn $mod+7 workspace number 7
bindsym --no-warn $mod+8 workspace number 8
bindsym --no-warn $mod+9 workspace number 9
bindsym --no-warn $mod+0 workspace number 10
bindsym --no-warn $mod+Shift+1 move container to workspace number 1
bindsym --no-warn $mod+Shift+2 move container to workspace number 2
bindsym --no-warn $mod+Shift+3 move container to workspace number 3
bindsym --no-warn $mod+Shift+4 move container to workspace number 4
bindsym --no-warn $mod+Shift+5 move container to workspace number 5
bindsym --no-warn $mod+Shift+6 move container to workspace number 6
bindsym --no-warn $mod+Shift+7 move container to workspace number 7
bindsym --no-warn $mod+Shift+8 move container to workspace number 8
bindsym --no-warn $mod+Shift+9 move container to workspace number 9
bindsym --no-warn $mod+Shift+0 move container to workspace number 10
mode "resize" {
bindsym --no-warn --to-code j resize grow left 15px
bindsym --no-warn --to-code k resize grow down 12px
bindsym --no-warn --to-code l resize grow up 12px
bindsym --no-warn --to-code semicolon resize grow right 15px
bindsym --no-warn --to-code Ctrl+j resize grow left 55px
bindsym --no-warn --to-code Ctrl+k resize grow down 40px
bindsym --no-warn --to-code Ctrl+l resize grow up 40px
bindsym --no-warn --to-code Ctrl+semicolon resize grow right 55px
bindsym --no-warn --to-code Shift+j resize shrink left 15px
bindsym --no-warn --to-code Shift+k resize shrink down 12px
bindsym --no-warn --to-code Shift+l resize shrink up 12px
bindsym --no-warn --to-code Shift+semicolon resize shrink right 15px
bindsym --no-warn --to-code Shift+Ctrl+j resize shrink left 55px
bindsym --no-warn --to-code Shift+Ctrl+k resize shrink down 40px
bindsym --no-warn --to-code Shift+Ctrl+l resize shrink up 40px
bindsym --no-warn --to-code Shift+Ctrl+semicolon resize shrink right 55px
bindsym --no-warn Return mode "default"
bindsym --no-warn Escape mode "default"
}
bindsym --no-warn $mod+w mode "resize"
mode "party" {
bindsym Escape mode "default"
}
bindsym $mod+p mode "party"
bar one {
position top
status_command ~/.config/sway/batshit.sh
colors {
statusline #ffffff
background #323232
inactive_workspace #32323200 #32323200 #5c5c5c
}
}
bar * colors {
statusline #ff88aa
}
set $bg ~/Pictures/wallpapers/xdds.jpg
output * bg $bg fill
input * repeat_delay 250
input * repeat_rate 30
input * {
xkb_layout "us,ru"
xkb_options "grp:win_space_toggle"
}

23
swaylock-config Normal file
View File

@ -0,0 +1,23 @@
indicator-radius=120
indicator-thickness=8
font=Sans
font-size=18
#image=.config/suckless_desktop/wallpaper/wallpaper_empty/shikarnie.png
scaling=fill
color=00ff00ff
# indicator + text colors
inside-color=00000080
ring-color=ffffff80
line-uses-ring
text-color=ffffffff
key-hl-color=88c0d0ff
bs-hl-color=bf616aff
separator-color=ffffff33
# layout label (if you show it)
layout-bg-color=00000080
layout-text-color=ffffffff
layout-border-color=00000000

127
win_r.dmenu Normal file
View File

@ -0,0 +1,127 @@
dmenu `Запущу программу =>` (
import options `local.dmenul`
option `nethack` eval `st -e nethack`
option `pencil2d` eval `pencil2d`
option `gzdoom` eval `gzdoom`
option `pactl unload shit` eval `pactl unload-module module-suspend-on-idle`
option `tagainijisho` eval `tagainijisho`
option `vibecheck` eval `st -e ping 8.8.8.8`
option `full brightness` eval `brightnessctl set 100%`
option `night mode` eval `brightnessctl set 30%`
option `play` eval `playerctl play`
option `pause` eval `playerctl pause`
option `next track` eval `playerctl next`
option `prev track` eval `playerctl prev`
option `repeat current track` eval `playerctl loop track`
option `play playlist` eval `playerctl loop playlist`
option `geogebra` eval `geogebra`
option `vpnup` eval `wg-quick up $WG_VPN_NAME`
option `vpndown` eval `wg-quick down $WG_VPN_NAME`
option `firefox` eval `firefox -P "$FF_MAIN_PROFILE"`
option `nmtui` eval `st -e nmtui`
option `alsamixer` eval `st -e alsamixer`
option `bctl` eval `st -e sh -c 'sudo rfkill unblock all && bluetoothctl'`
option `bluetoothctl` eval `st -e sh -c 'sudo rfkill unblock all && bluetoothctl'`
option `cmus` eval `st -e cmus`
option `tui colors` eval `st_show_stuff.sh tui_colors.py`
option `flex` eval `st_show_stuff.sh neofetch`
option `calc` eval `st -e calc`
option `htop` eval `st -e htop`
option `cal` eval `st_show_stuff.sh cal`
option `pulsemixer` eval `st -e pulsemixer`
option `dwm_random_bg.sh` eval `dwm_random_bg.sh`
option `edit` dmenu `Отредактирую файл ::>` (
option `win_r` eval `st -e sh -c 'cd /etc/nixos && sudo vim win_r.dmenu'`
option `nixos config` eval `st -e sh -c 'cd /etc/nixos && sudo vim configuration.nix'`
option `zutils` eval `st -e sh -c 'cd /etc/nixos && sudo vim my_zsh_utils.zsh'`
option `sway config` eval `st -e sh -c 'cd /etc/nixos && sudo vim sway-config'`
option `cmus rc` eval `st -e sh -c 'cd /etc/nixos && sudo vim cmus-rc'`
option `tmux config` eval `st -e sh -c 'cd /etc/nixos && sudo vim .tmux.conf'`
option `local zshrc` eval `st -e sh -c 'cd ~/ && vim .zshrc'`
option `local win_r` eval `st -e sh -c 'cd ~/.config/suckless_desktop && vim local.dmenul'`
option `local win_r init_shell.sh` eval `st -e sh -c 'cd ~/.config/suckless_desktop && vim init_shell.sh'`
)
option `recompile this` eval `dmenuc.py ~/.config/suckless_desktop/win_r.dmenu ~/.config/suckless_desktop/win_r_out/ init_shell.sh`
option `reboot` dmenu `ПЕРЕЗАГРУЗИТЬ компьютер?` (
option `y да` eval `sudo reboot`
option `n нет` eval ``
)
option `shitdown` dmenu `ВЫКЛЮЧИТЬ компьютер?` (
option `y да` eval `sudo shutdown -h 0`
option `n нет` eval ``
)
option `tor browser` eval `tor-browser`
option `fix xorg keyboard` eval `sh -c 'setxkbmap -layout "us,ru" -option "grp:win_space_toggle"; xset r rate 250 30; xset b off; xset s off -dpms'`
option `взломать пентагон` dmenu `ВЗЛОМ ПЕНТАГОНА 1%` (
option `подключиться к сети america rules` dmenu `ВЗЛОМ ПЕНТАГОНА 3%` (
option `похитить ssh ключ от холодильника Трампа` dmenu `ВЗЛОМ ПЕНТАГОНА 6%` (
option `скачать маску анонимуса онлайн` dmenu `ВЗЛОМ ПЕНТАГОНА 8%` (
option `врубить ИНТЕРНАЦИОНАЛ EARRAPE VERSION` dmenu `ВЗЛОМ ПЕНТАГОНА 9%` (
option `redirect default sink to pentagon alarms` dmenu `ВЗЛОМ ПЕНТАГОНА 18%` (
option `уронить сервис раздачи оружия для детей` dmenu `ВЗЛОМ ПЕНТАГОНА 23%` (
option `resurrect_sadam_hussein.py` dmenu `ВЗЛОМ ПЕНТАГОНА 30%` (
option `ssh elon.musk@tesla.gov` dmenu `ВЗЛОМ ПЕНТАГОНА 30%` (
option `password: 123456 zig hail` dmenu `Wrong password ВЗЛОМ ПЕНТАГОНА 29%` (
option `password: maga09876` dmenu `Wrong password ВЗЛОМ ПЕНТАГОНА 28%` (
option `password: I.Love.Trump` dmenu `ВЗЛОМ ПЕНТАГОНА 36%` (
option `Слить переписку Трампа с Эпштейном` dmenu `ВЗЛОМ ПЕНТАГОНА 39%` (
option `кинуть 6yo_girls.zip главе ЦРУ (там зип бомба)` dmenu `ВЗЛОМ ПЕНТАГОНА 46%` (
option `concern head of CIA with the security of his shit` dmenu `ВЗЛОМ ПЕНТАГОНА 50%` (
option `На всех компах: настройки локали > выбрать километры` dmenu `ВЗЛОМ ПЕНТАГОНА 59%` (
option `удалить chrome со всех компьютеров` dmenu `ВЗЛОМ ПЕНТАГОНА 63%` (
option `запустить восстановление удалённых файлов` dmenu `ВЗЛОМ ПЕНТАГОНА 66%` (
option `cd .top-secret` dmenu `ВЗЛОМ ПЕНТАГОНА 67%` (
option `Идти в папку всех агентов ЦРУ за вё время` dmenu `ВЗЛОМ ПЕНТАГОНА 68%` (
option `Находим там 'Усама Бен Ладен.docx'` dmenu `Так-так-так ВЗЛОМ ПЕНТАГОНА 69%` (
option `cd ../contract-records` dmenu `Некоторые из них подписаны кровью` (
option `apt-get install freebsd-bloodmagic-cryptography` dmenu `ВЗЛОМ ПЕНТАГОНА 70%` (
option `Находим контракт между Бушем и Антихристом` dmenu `ВЗЛОМ ПЕНТАГОНА 71%` (
option `Сливаем всё-всё в даркнет` dmenu `ВЗЛОМ ПЕНТАГОНА 76%` (
option `Сотни тысяч людей штурмуют пентагон в четверг` dmenu `ВЗЛОМ ПЕНТАГОНА 93%` (
option `Ворваться в здание вместе с толпой` dmenu `ВЗЛОМ ПЕНТАГОНА 96%` (
option `Бежим в бункер с air-gapped серверами фури порна` dmenu `ВЗЛОМ ПЕНТАГОНА 97%` (
option `air-gapped значит тут 30 метров бетона` dmenu `ВЗЛОМ ПЕНТАГОНА 90%` (
option `Похуй. Грызть бетон` dmenu `ВЗЛОМ ПЕНТАГОНА 95%` (
option `Подключиться к серверу с фурри-порном` dmenu `ВЗЛОМ ПЕНТАГОНА 99%` (
option `Забрать всю казну США себе` dmenu `ВЗЛОМ ПЕНТАГОНА 100%` (
option `Покинуть пентагон. Разрушить экономику США` eval `st_show_stuff.sh echo "ПЕНТАГОН ВЗЛОМАН. We own the shit. Доллар стоит 0 рублей"`
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)