├── .editorconfig ├── .gitattributes ├── .github └── workflows │ ├── tests.yml │ └── trunk.yml ├── .gitignore ├── .prettierignore ├── README.md ├── bin ├── auto_brightness_toggle ├── brightnessdunst ├── browser ├── clipcat-last ├── clipcat-selector ├── commit-date ├── commit-time ├── cycle_windows ├── cycle_ws ├── dmenu-emacs-workspaces ├── dmenu-list ├── dmenu-systemd ├── dmenu-tmux ├── dmenurecord ├── dunst_alert ├── easyeffects_toggle ├── edit ├── emacs_lets_note ├── emacs_lets_write ├── git-fetch-all ├── ide ├── imv-open ├── json2nix ├── keyboard-switch ├── mic-test ├── mov2gif ├── myip ├── newlines-to-csv ├── nvimedit ├── rofi_drun ├── rofi_windows ├── rofi_wrapper ├── scrrec ├── select-wallpaper ├── setwall ├── spell ├── sw ├── tmpsh ├── volumedunst ├── xmonad-lsp-setup ├── xshot └── zzz ├── config ├── alacritty │ ├── alacritty.toml │ └── alacritty.yml ├── avizo │ └── config.ini ├── bash │ └── .bashrc ├── bat │ └── config ├── betterlockscreen │ └── betterlockscreenrc ├── bspwm │ └── bspwmrc ├── clipcat │ ├── clipcat-menu.toml │ └── clipcatd.toml ├── doom │ ├── .custom.el │ ├── cli.el │ ├── config.el │ ├── config.org │ ├── init.el │ ├── packages.el │ └── splash.png ├── dunst │ ├── Submarine.wav │ └── dunstrc ├── espanso │ ├── config │ │ └── default.yml │ └── match │ │ ├── base.yml │ │ └── packages │ │ ├── get-ip │ │ ├── README.md │ │ ├── _manifest.yml │ │ ├── _pkgsource.yml │ │ └── package.yml │ │ ├── greek-letters-improved │ │ ├── LICENSE │ │ ├── README.md │ │ ├── _manifest.yml │ │ ├── _pkgsource.yml │ │ └── package.yml │ │ ├── logic-symbols │ │ ├── README.md │ │ ├── _manifest.yml │ │ ├── _pkgsource.yml │ │ └── package.yml │ │ ├── lorem │ │ ├── README.md │ │ ├── _manifest.yml │ │ ├── _pkgsource.yml │ │ └── package.yml │ │ ├── math-symbols │ │ ├── LICENSE │ │ ├── README.md │ │ ├── _manifest.yml │ │ ├── _pkgsource.yml │ │ └── package.yml │ │ ├── quotes │ │ ├── LICENSE │ │ ├── README.md │ │ ├── _manifest.yml │ │ ├── _pkgsource.yml │ │ └── package.yml │ │ └── wtc │ │ ├── LICENSE │ │ ├── README.md │ │ ├── _manifest.yml │ │ ├── _pkgsource.yml │ │ └── package.yml ├── firefox │ ├── preferences.nix │ ├── search-engines.nix │ ├── userChrome.css │ └── userContent.css ├── fish │ ├── completions │ │ ├── _git-forgit │ │ ├── bd.fish │ │ ├── dl.fish │ │ ├── fifc.fish │ │ ├── fisher.fish │ │ ├── fzf_configure_bindings.fish │ │ ├── git-forgit.bash │ │ ├── git-forgit.fish │ │ ├── pnpm.fish │ │ ├── spark.fish │ │ └── web-search.fish │ ├── conf.d │ │ ├── abbr_tips.fish │ │ ├── autopair.fish │ │ ├── bin │ │ │ └── git-forgit │ │ ├── done.fish │ │ ├── fifc.fish │ │ ├── forgit.plugin.fish │ │ ├── fzf.fish │ │ ├── my-abbr.fish │ │ ├── my-fzf.fish │ │ ├── my-paths.fish │ │ ├── my-vim-ui.fish │ │ ├── my-yazi.fish │ │ ├── nix-env.fish │ │ ├── puffer_fish_key_bindings.fish │ │ ├── thefuck.fish │ │ └── web-search.fish │ ├── config.fish │ ├── fish_plugins │ ├── fish_variables │ └── functions │ │ ├── __abbr_tips_bind_newline.fish │ │ ├── __abbr_tips_bind_space.fish │ │ ├── __abbr_tips_clean.fish │ │ ├── __abbr_tips_init.fish │ │ ├── __bass.py │ │ ├── __tf_updt.fish │ │ ├── _autopair_backspace.fish │ │ ├── _autopair_insert_left.fish │ │ ├── _autopair_insert_right.fish │ │ ├── _autopair_insert_same.fish │ │ ├── _autopair_tab.fish │ │ ├── _fifc.fish │ │ ├── _fifc_action.fish │ │ ├── _fifc_completion_group.fish │ │ ├── _fifc_expand_tilde.fish │ │ ├── _fifc_file_type.fish │ │ ├── _fifc_help.fish │ │ ├── _fifc_open_cmd.fish │ │ ├── _fifc_open_dir.fish │ │ ├── _fifc_open_file.fish │ │ ├── _fifc_open_fn.fish │ │ ├── _fifc_open_opt.fish │ │ ├── _fifc_open_process.fish │ │ ├── _fifc_parse_complist.fish │ │ ├── _fifc_parse_pid.fish │ │ ├── _fifc_path_to_complete.fish │ │ ├── _fifc_preview_cmd.fish │ │ ├── _fifc_preview_dir.fish │ │ ├── _fifc_preview_file.fish │ │ ├── _fifc_preview_file_default.fish │ │ ├── _fifc_preview_fn.fish │ │ ├── _fifc_preview_opt.fish │ │ ├── _fifc_preview_process.fish │ │ ├── _fifc_source_directories.fish │ │ ├── _fifc_source_files.fish │ │ ├── _fifc_test_version.fish │ │ ├── _fzf_configure_bindings_help.fish │ │ ├── _fzf_extract_var_info.fish │ │ ├── _fzf_preview_changed_file.fish │ │ ├── _fzf_preview_file.fish │ │ ├── _fzf_report_diff_type.fish │ │ ├── _fzf_report_file_type.fish │ │ ├── _fzf_search_directory.fish │ │ ├── _fzf_search_git_log.fish │ │ ├── _fzf_search_git_status.fish │ │ ├── _fzf_search_history.fish │ │ ├── _fzf_search_processes.fish │ │ ├── _fzf_search_variables.fish │ │ ├── _fzf_wrapper.fish │ │ ├── _na.fish │ │ ├── _puffer_fish_expand_bang.fish │ │ ├── _puffer_fish_expand_dots.fish │ │ ├── _puffer_fish_expand_lastarg.fish │ │ ├── bass.fish │ │ ├── bd.fish │ │ ├── bdf.fish │ │ ├── br.fish │ │ ├── dl.fish │ │ ├── fifc.fish │ │ ├── fish_user_key_bindings.fish │ │ ├── fisher.fish │ │ ├── fkill.fish │ │ ├── fuck.fish │ │ ├── fzf_configure_bindings.fish │ │ ├── l.fish │ │ ├── la.fish │ │ ├── laa.fish │ │ ├── laad.fish │ │ ├── laai.fish │ │ ├── laaid.fish │ │ ├── lad.fish │ │ ├── lai.fish │ │ ├── laid.fish │ │ ├── lc.fish │ │ ├── lca.fish │ │ ├── lcaa.fish │ │ ├── lcaad.fish │ │ ├── lcaai.fish │ │ ├── lcaaid.fish │ │ ├── lcad.fish │ │ ├── lcai.fish │ │ ├── lcaid.fish │ │ ├── lcd.fish │ │ ├── lci.fish │ │ ├── lcid.fish │ │ ├── ld.fish │ │ ├── le.fish │ │ ├── lea.fish │ │ ├── leaa.fish │ │ ├── leaad.fish │ │ ├── leaai.fish │ │ ├── leaaid.fish │ │ ├── lead.fish │ │ ├── leai.fish │ │ ├── leaid.fish │ │ ├── led.fish │ │ ├── lei.fish │ │ ├── leid.fish │ │ ├── lg.fish │ │ ├── lga.fish │ │ ├── lgaa.fish │ │ ├── lgaad.fish │ │ ├── lgaai.fish │ │ ├── lgaaid.fish │ │ ├── lgad.fish │ │ ├── lgai.fish │ │ ├── lgaid.fish │ │ ├── lgd.fish │ │ ├── lgi.fish │ │ ├── lgid.fish │ │ ├── li.fish │ │ ├── lid.fish │ │ ├── ll.fish │ │ ├── lla.fish │ │ ├── llaa.fish │ │ ├── llaad.fish │ │ ├── llaai.fish │ │ ├── llaaid.fish │ │ ├── llad.fish │ │ ├── llai.fish │ │ ├── llaid.fish │ │ ├── lld.fish │ │ ├── lli.fish │ │ ├── llid.fish │ │ ├── lo.fish │ │ ├── loa.fish │ │ ├── loaa.fish │ │ ├── loaad.fish │ │ ├── loaai.fish │ │ ├── loaaid.fish │ │ ├── load.fish │ │ ├── loai.fish │ │ ├── loaid.fish │ │ ├── lod.fish │ │ ├── loi.fish │ │ ├── loid.fish │ │ ├── lt.fish │ │ ├── lta.fish │ │ ├── ltaad.fish │ │ ├── ltaai.fish │ │ ├── ltaaid.fish │ │ ├── ltad.fish │ │ ├── ltai.fish │ │ ├── ltaid.fish │ │ ├── ltd.fish │ │ ├── lti.fish │ │ ├── ltid.fish │ │ ├── man.fish │ │ ├── mkcd.fish │ │ ├── spark.fish │ │ ├── thefuck-command-line.fish │ │ └── web-search.fish ├── ghci │ └── .ghci ├── ghostty │ └── config ├── gitui │ └── key_bindings_vim.ron ├── gtk │ └── css │ │ └── gtk.css ├── htop │ └── htoprc ├── i3 │ └── config ├── jetbrains │ └── .ideavimrc ├── kitty │ ├── current-theme.conf │ ├── kitty.conf │ ├── kitty.conf.bak │ └── themes │ │ ├── Solarized Light.conf │ │ ├── dark-theme.auto.conf │ │ ├── light-theme.auto.conf │ │ └── no-preference-theme.auto.conf ├── libinput-gestures │ └── libinput-gestures.conf ├── mpd │ └── mpd.conf ├── mpv │ ├── input.conf │ └── mpv.conf ├── ncmpcpp │ ├── bindings │ └── config ├── nvim │ ├── .gitignore │ ├── .luarc.json │ ├── .neoconf.json │ ├── LICENSE │ ├── README.md │ ├── init.lua │ ├── lazy-lock.json │ ├── lazyvim.json │ ├── lua │ │ ├── config │ │ │ ├── autocmds.lua │ │ │ ├── keymaps.lua │ │ │ ├── kitty.lua │ │ │ ├── lazy.lua │ │ │ └── options.lua │ │ └── plugins │ │ │ ├── aerial.lua │ │ │ ├── ai │ │ │ ├── avante.lua │ │ │ ├── copilot-chat.lua │ │ │ ├── copilot.lua │ │ │ └── mcphub.lua │ │ │ ├── arrow.lua │ │ │ ├── blink.lua │ │ │ ├── bufferline.lua │ │ │ ├── ccc.lua │ │ │ ├── chainsaw.lua │ │ │ ├── cloak.lua │ │ │ ├── codesnap.lua │ │ │ ├── coding.lua │ │ │ ├── coerce.lua │ │ │ ├── colorscheme.lua │ │ │ ├── csv.lua │ │ │ ├── curl.lua │ │ │ ├── cyryllic.lua │ │ │ ├── dashboard.lua │ │ │ ├── disablees.lua │ │ │ ├── easymotion.lua │ │ │ ├── example.lua │ │ │ ├── faster.lua │ │ │ ├── git │ │ │ ├── co-author.lua │ │ │ ├── gh-addressed.lua │ │ │ ├── gh-blame.lua │ │ │ ├── git-conflict.lua │ │ │ ├── git-graph.lua │ │ │ ├── gitignore.lua │ │ │ ├── gitlinker.lua │ │ │ ├── gitsigns.lua │ │ │ ├── neogit.lua │ │ │ ├── pipeline.lua │ │ │ └── pr.lua │ │ │ ├── hardtime.lua │ │ │ ├── img-clip.lua │ │ │ ├── in-and-out.lua │ │ │ ├── init.lua │ │ │ ├── json.lua │ │ │ ├── kitty.lua │ │ │ ├── lang │ │ │ ├── bash.lua │ │ │ ├── graphql.lua │ │ │ ├── justfiles.lua │ │ │ └── nodejs.lua │ │ │ ├── lazydocker.lua │ │ │ ├── lazyvim.lua │ │ │ ├── leetcode.lua │ │ │ ├── lorem.lua │ │ │ ├── lsp │ │ │ └── action-preview.lua │ │ │ ├── lualine.lua │ │ │ ├── no-neck-pain.lua │ │ │ ├── nvim-rip.lua │ │ │ ├── nvim-spider.lua │ │ │ ├── obsidian.lua │ │ │ ├── orgmode.lua │ │ │ ├── origami.lua │ │ │ ├── precognition.lua │ │ │ ├── remote-sshfs.lua │ │ │ ├── remove-nvim.lua │ │ │ ├── showkeys.lua │ │ │ ├── stay-centered.lua │ │ │ ├── suda.lua │ │ │ ├── telescope.lua │ │ │ ├── timerly.lua │ │ │ ├── translate.lua │ │ │ ├── treesitter │ │ │ ├── treesitter.lua │ │ │ ├── treesj.lua │ │ │ └── treewalker.lua │ │ │ ├── typr.lua │ │ │ ├── typst.lua │ │ │ ├── urlview.lua │ │ │ ├── window-picker.lua │ │ │ └── yazi.lua │ └── stylua.toml ├── picom │ └── picom.conf ├── polybar │ ├── bspwm │ │ └── config │ ├── launch.sh │ └── scripts │ │ ├── battery-combined-tlp.sh │ │ ├── openweathermap-forecast.sh │ │ ├── openweathermap-fullfeatured.sh │ │ ├── polybar-kdeconnect.sh │ │ ├── popup-calendar.sh │ │ └── updates-arch-combined.sh ├── qutebrowser │ └── config.py ├── ranger │ ├── commands.py │ ├── plugins │ │ ├── .keep │ │ ├── kdeconnect_send.py │ │ ├── ranger-archives │ │ │ ├── .gitignore │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── __init__.py │ │ │ ├── archives_utils.py │ │ │ ├── compress.py │ │ │ └── extract.py │ │ └── ranger-zoxide │ │ │ ├── .gitignore │ │ │ ├── LICENSE.md │ │ │ ├── README.md │ │ │ └── __init__.py │ ├── rc.conf │ ├── rifle.conf │ └── scope.sh ├── rofi │ ├── dmenu.rasi │ ├── drun.rasi │ ├── list.rasi │ ├── main.rasi │ ├── minimal.rasi │ └── theme.rasi ├── skippy-xd │ └── skippy-xd.rc ├── starship │ └── starship.toml ├── sway │ └── config ├── sxhkd │ └── sxhkdrc ├── sxiv │ └── exec │ │ └── key-handler ├── tmux │ ├── .gitignore │ └── tmux.conf ├── vimium-c │ └── styles.css ├── vscode │ ├── keybindings.json │ ├── settings.json │ └── settings.json.bak ├── xinitrc │ └── .xinitrc ├── xmonad │ ├── .ghci │ ├── .gitignore │ ├── fourmolu.yaml │ ├── hie-bios.sh │ ├── hie.yaml │ ├── lib │ │ └── XMonad │ │ │ └── Custom │ │ │ ├── Actions │ │ │ ├── ApplicationChooser.hs │ │ │ ├── Calculator.hs │ │ │ ├── DoActions.hs │ │ │ ├── DoPrompt.hs │ │ │ ├── JumpWorkspaces.hs │ │ │ ├── Keyboard.hs │ │ │ ├── LayoutChooser.hs │ │ │ ├── Minimize.hs │ │ │ ├── RecentWindows.hs │ │ │ ├── RecentWorkspaces.hs │ │ │ ├── ScratchpadChooser.hs │ │ │ ├── Screen │ │ │ │ ├── Screencast.hs │ │ │ │ └── Screenshot.hs │ │ │ └── TmuxPrompt.hs │ │ │ ├── Bindings.hs │ │ │ ├── Config.hs │ │ │ ├── Hooks │ │ │ ├── Event.hs │ │ │ ├── KeyboardChangeEvent.hs │ │ │ ├── Layout.hs │ │ │ ├── Log.hs │ │ │ ├── Screens.hs │ │ │ ├── Startup.hs │ │ │ ├── Statusbar.hs │ │ │ └── TAGS │ │ │ ├── Manage │ │ │ ├── ManageHelpers.hs │ │ │ └── ManageHook.hs │ │ │ ├── Misc.hs │ │ │ ├── MouseBindings.hs │ │ │ ├── Navigation.hs │ │ │ ├── Prompt.hs │ │ │ ├── Prompt │ │ │ └── FuzzyMatch.hs │ │ │ ├── Scratchpads.hs │ │ │ ├── Search.hs │ │ │ ├── Server.hs │ │ │ ├── Theme.hs │ │ │ ├── Utils │ │ │ ├── Array.hs │ │ │ ├── ChordKeys.hs │ │ │ ├── Keyboard.hs │ │ │ ├── Loggers.hs │ │ │ └── Strings.hs │ │ │ └── Workspaces.hs │ ├── scripts │ │ ├── caffeine │ │ ├── keyboard-listener │ │ ├── nsp-console.sh │ │ ├── screenlock.sh │ │ ├── toggle-compositor.sh │ │ └── xmobar │ │ │ ├── caffeinatestatus │ │ │ ├── dunststatus │ │ │ ├── openweathermap │ │ │ ├── player │ │ │ ├── warpstatus │ │ │ ├── wgcf │ │ │ └── wgcf-toggle │ ├── src │ │ └── Main.hs │ ├── xmobarrc │ │ ├── bot.hs │ │ └── top.hs │ └── xmonad.hs ├── xplr │ └── init.lua ├── xresources │ └── .Xresources ├── yazi │ ├── init.lua │ ├── keymap.toml │ ├── package.toml │ ├── plugins │ │ ├── auto-layout.yazi │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── main.lua │ │ ├── chmod.yazi │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── main.lua │ │ ├── compress.yazi │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── main.lua │ │ ├── convert.yazi │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── main.lua │ │ ├── copy-file-contents.yazi │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── main.lua │ │ ├── eza-preview.yazi │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── main.lua │ │ ├── fg.yazi │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── main.lua │ │ ├── file-extra-metadata.yazi │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── main.lua │ │ ├── fr.yazi │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── main.lua │ │ ├── full-border.yazi │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── main.lua │ │ ├── git.yazi │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── main.lua │ │ ├── glow.yazi │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── main.lua │ │ ├── jump-to-char.yazi │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── main.lua │ │ ├── lazygit.yazi │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── main.lua │ │ ├── max-preview.yazi │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── main.lua │ │ ├── mime-ext.yazi │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── main.lua │ │ ├── office.yazi │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── main.lua │ │ ├── open-with-cmd.yazi │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── main.lua │ │ ├── projects.yazi │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── main.lua │ │ ├── relative-motions.yazi │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── main.lua │ │ ├── smart-filter.yazi │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── main.lua │ │ ├── starship.yazi │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── main.lua │ │ ├── yatline-created-time.yazi │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── main.lua │ │ ├── yatline-githead.yazi │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── main.lua │ │ └── yatline.yazi │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── main.lua │ └── yazi.toml ├── zathura │ └── zathurarc └── zsh │ ├── .gitignore │ ├── .zshenv │ ├── .zshrc │ └── br ├── default.nix ├── extra └── treefmt.nix ├── flake.lock ├── flake.nix ├── hie.yaml ├── hosts ├── common.nix ├── laptp1 │ ├── default.nix │ ├── facter.json │ ├── hardware-configuration.nix │ ├── modules │ │ ├── books.nix │ │ ├── default.nix │ │ ├── homepage │ │ │ ├── dashboard.nix │ │ │ ├── services.yaml │ │ │ └── settings.yaml │ │ ├── jellyfin.nix │ │ ├── nginx.nix │ │ ├── prowlarr.nix │ │ ├── radarr.nix │ │ ├── sonarr.nix │ │ ├── torrents.nix │ │ └── your-spotify.nix │ └── secrets │ │ ├── secrets.nix │ │ └── your_spotify_secret.age ├── t440p │ ├── add-proprietary.sh │ ├── default.nix │ ├── dns.nix │ ├── facter.json │ ├── gpu.nix │ ├── hardware-configuration.nix │ ├── jack_retask │ │ ├── hda-jack-retask.fw │ │ └── jack_retask.nix │ ├── modules │ │ ├── default.nix │ │ └── nginx.nix │ ├── mongodb.nix │ ├── phone_cam.nix │ ├── postgresql.nix │ ├── power-management.nix │ └── secrets │ │ ├── nextdns.age │ │ └── secrets.nix └── t480 │ ├── add-proprietary.sh │ ├── default.nix │ ├── facter.json │ ├── fingerprint │ ├── calib-data.bin │ └── default.nix │ ├── hardware-configuration.nix │ ├── phone_cam.nix │ └── power-management.nix ├── justfile ├── lib ├── attrs.nix ├── default.nix ├── files.nix ├── modules.nix ├── nixos.nix ├── numbers.nix ├── options.nix ├── packages.nix ├── services.nix └── strings.nix ├── modules ├── agenix.nix ├── desktop │ ├── apps │ │ ├── common.nix │ │ ├── discord.nix │ │ ├── dmenu.nix │ │ ├── dunst.nix │ │ ├── gnome-circle.nix │ │ ├── nautilus.nix │ │ ├── rofi.nix │ │ └── sxiv.nix │ ├── browsers │ │ ├── brave.nix │ │ ├── chromium.nix │ │ ├── default.nix │ │ ├── firefox.nix │ │ ├── qutebrowser.nix │ │ ├── tor.nix │ │ └── zen-browser.nix │ ├── desktop.nix │ ├── fonts │ │ ├── fonts.nix │ │ ├── ibmsevka.nix │ │ ├── iosevka-full-mono.nix │ │ ├── iosevka.nix │ │ ├── pragmasevka.nix │ │ └── pragmata_pro.nix │ ├── media │ │ ├── documents.nix │ │ ├── graphics.nix │ │ ├── mpv.nix │ │ ├── ncmpcpp.nix │ │ ├── recording.nix │ │ └── spotify.nix │ ├── term │ │ ├── alacritty.nix │ │ ├── default.nix │ │ ├── kitty.nix │ │ └── st.nix │ ├── themes │ │ ├── colors.nix │ │ └── common.nix │ ├── vm │ │ ├── qemu.nix │ │ ├── virtualbox.nix │ │ ├── winapps.nix │ │ └── wine.nix │ ├── xdg │ │ └── handlr.nix │ └── xorg │ │ ├── compositor.nix │ │ ├── gnome.nix │ │ ├── lockscreen.nix │ │ └── xmonad.nix ├── develop │ ├── cc.nix │ ├── ccache.nix │ ├── clojure.nix │ ├── common-lisp.nix │ ├── default.nix │ ├── docker.nix │ ├── dotnet.nix │ ├── elixir.nix │ ├── go.nix │ ├── haskell.nix │ ├── java.nix │ ├── kuber.nix │ ├── nix.nix │ ├── node.nix │ ├── php.nix │ ├── python.nix │ ├── rust.nix │ ├── shell.nix │ └── typst.nix ├── editors │ ├── default.nix │ ├── emacs.nix │ ├── jetbrains │ │ └── default.nix │ ├── neovim.nix │ └── vscode │ │ └── default.nix ├── options.nix ├── programs │ ├── distrobox.nix │ ├── nix-helper.nix │ └── nix-ld.nix ├── security.nix ├── services │ ├── adguard-home.nix │ ├── ananicy.nix │ ├── avizo.nix │ ├── bitwarden.nix │ ├── clight.nix │ ├── clipcat.nix │ ├── common.nix │ ├── darkman.nix │ ├── espanso.nix │ ├── flatpak.nix │ ├── greenclip.nix │ ├── kdeconnect.nix │ ├── keyd.nix │ ├── polkit.nix │ ├── progressbar.nix │ ├── psd.nix │ ├── qbittorrent.nix │ ├── random-wallpaper.nix │ ├── skippy-xd.nix │ ├── ssh.nix │ ├── sxhkd.nix │ ├── tlp.nix │ ├── tray.nix │ ├── warp.nix │ └── zcfan.nix ├── shell │ ├── aria2.nix │ ├── common.nix │ ├── direnv.nix │ ├── fish.nix │ ├── fzf.nix │ ├── git.nix │ ├── gnupg.nix │ ├── pass.nix │ ├── ranger.nix │ ├── tmux.nix │ ├── weather.nix │ ├── xplr.nix │ ├── yazi.nix │ └── zsh.nix ├── system │ ├── boot │ │ ├── bootsplash │ │ │ └── default.nix │ │ └── default.nix │ ├── cachyos │ │ ├── cachyos-settings.nix │ │ └── cachyos-udev.nix │ ├── documentation.nix │ ├── hardware │ │ ├── audio.nix │ │ ├── bluetooth.nix │ │ ├── cpu │ │ │ ├── cpu.nix │ │ │ └── intel.nix │ │ ├── ddc.nix │ │ ├── fingerprint.nix │ │ ├── fs.nix │ │ ├── gpu │ │ │ ├── intel.nix │ │ │ └── nvidia │ │ │ │ └── default.nix │ │ ├── kernel.nix │ │ ├── profiles │ │ │ └── laptop.nix │ │ └── touchpad.nix │ ├── network │ │ ├── default.nix │ │ ├── fast-networking.nix │ │ └── iwd.nix │ ├── sysfs │ │ └── default.nix │ ├── systemd │ │ ├── powermanagement-rest.nix │ │ └── timesyncd.nix │ └── zram.nix └── xdg.nix ├── overlays ├── .git-keep ├── dmenu │ ├── 0001-configure-patches.patch │ └── default.nix ├── nsxiv.nix ├── rofi-screenshot.nix ├── st │ ├── 0001-configure-patches.patch │ └── default.nix ├── trayer.nix └── xob.nix ├── packages ├── .git-keep ├── .gitignore ├── apple-fonts.nix ├── boomer.nix ├── caffeinate.nix ├── code-cursor.nix ├── devtunnel.nix ├── dmenu-bluetooth.nix ├── dmenu-pipewire.nix ├── dmenu-translate.nix ├── fast-font.nix ├── fish-v4.nix ├── gitbutler.nix ├── hints.nix ├── my_cookies.nix ├── pragmasevka.nix ├── pragmatapro.nix ├── rofi-chrome-profile-launcher.nix ├── rofi-code.nix └── udiskie-dmenu.nix └── shell.nix /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | indent_size = 2 7 | indent_style = space 8 | insert_final_newline = true 9 | # max_line_length = 80 10 | trim_trailing_whitespace = true 11 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.org linguist-detectable=true 2 | -------------------------------------------------------------------------------- /.github/workflows/tests.yml: -------------------------------------------------------------------------------- 1 | name: Tests 2 | on: 3 | push: 4 | paths-ignore: 5 | - "README.md" 6 | pull_request: 7 | jobs: 8 | test: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v4 12 | - name: Install Nix 13 | uses: DeterminateSystems/nix-installer-action@v14 14 | - name: Run the Magic Nix Cache 15 | uses: DeterminateSystems/magic-nix-cache-action@v8 16 | - name: Check | Evaluate nix exressions 17 | run: nix flake check 18 | -------------------------------------------------------------------------------- /.github/workflows/trunk.yml: -------------------------------------------------------------------------------- 1 | name: Push to trunk 2 | on: 3 | push: 4 | paths-ignore: 5 | - "README.md" 6 | pull_request: 7 | jobs: 8 | format: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v4 12 | - name: Install Nix 13 | uses: DeterminateSystems/nix-installer-action@v14 14 | - name: Run the Magic Nix Cache 15 | uses: DeterminateSystems/magic-nix-cache-action@v8 16 | - name: Format 17 | run: nix fmt 18 | # - name: Lint errors fixing 19 | # run: nix run nixpkgs#statix fix . 20 | - name: Commit formatting changes 21 | uses: stefanzweifel/git-auto-commit-action@v5 22 | with: 23 | commit_message: Apply formatting changes 24 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .idea 3 | *.log 4 | tmp/ 5 | .tex 6 | .auctex-auto/ 7 | .direnv 8 | 9 | .pre-commit-config.yaml 10 | result 11 | 12 | .vscode 13 | .vscode/* 14 | !.vscode/settings.json 15 | !.vscode/tasks.json 16 | !.vscode/launch.json 17 | !.vscode/extensions.json 18 | !.vscode/*.code-snippets 19 | 20 | # Local History for Visual Studio Code 21 | .history/ 22 | 23 | # Built Visual Studio Code Extensions 24 | *.vsix 25 | 26 | .ruff_cache/ 27 | .aider* 28 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | facter.json 2 | -------------------------------------------------------------------------------- /bin/auto_brightness_toggle: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if ! systemctl is-active --user --quiet clight; then 4 | # systemctl start clightd & 5 | systemctl --user start clight & 6 | else 7 | systemctl --user stop clight & 8 | # systemctl stop clightd & 9 | fi 10 | -------------------------------------------------------------------------------- /bin/browser: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | "$BROWSER" --new-window "$1" 4 | -------------------------------------------------------------------------------- /bin/clipcat-last: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if last_id=$(clipcatctl list | grep -oE "^[a-f0-9]{16}" | head -n 1); then 4 | clipcatctl promote "$last_id" 5 | fi 6 | -------------------------------------------------------------------------------- /bin/clipcat-selector: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | clipcat-menu -f rofi --rofi-menu-length 18 --rofi-extra-arguments='-theme,minimal,-i' 4 | # clipcat-menu --rofi-menu-length 18 5 | # clipcat-menu -f dmenu --dmenu-extra-arguments='-fn,"monospace 12"' 6 | # clipcat-menu -f dmenu 7 | -------------------------------------------------------------------------------- /bin/commit-date: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | current_date=$(date +'%Y-%m-%d') 4 | latest_commit_date=$(git log -1 --format=%cd --date=short 2>/dev/null) 5 | 6 | if [[ "$latest_commit_date" == "$current_date" ]]; then 7 | echo "Found existing commit for today. Amending..." 8 | GIT_COMMITTER_DATE="$(date)" git commit --amend -m "$current_date" --date="$(date)" "$@" 9 | else 10 | echo "Creating new commit for today..." 11 | git commit -m "$current_date" "$@" 12 | fi 13 | -------------------------------------------------------------------------------- /bin/commit-time: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Get current time with seconds precision 4 | current_time=$(date +'%H:%M:%S') 5 | 6 | echo "Creating commit with timestamp: $current_time" 7 | git commit -m "Update at $current_time" "$@" 8 | -------------------------------------------------------------------------------- /bin/dmenu-emacs-workspaces: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # TODO FIXME 4 | 5 | # Get list of Doom Emacs workspaces 6 | workspaces=$(emacsclient -e "(mapcar #'prin1-to-string (+workspace-list-names))" | tr -d '()') 7 | 8 | # Remove quotes, backslashes, and create a list 9 | cleaned_workspaces=$(echo "$workspaces" | sed 's/" "/\n/g; s/^"//; s/"$//; s/\\//g') 10 | 11 | echo "$cleaned_workspaces" 12 | 13 | # Present workspaces in dmenu 14 | chosen_workspace=$(echo "$cleaned_workspaces" | dmenu -p "Choose a Doom Emacs workspace:" -l 10) 15 | 16 | if [ -z "$chosen_workspace" ]; then 17 | echo "Workspace selection canceled." 18 | exit 0 19 | fi 20 | 21 | echo "$chosen_workspace" 22 | 23 | emacsclient -c -e "(+workspace/switch-to $chosen_workspace)" 24 | -------------------------------------------------------------------------------- /bin/dmenu-list: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [ $# -lt 1 ]; then 4 | echo "Usage: dmenu-list [ ...]" 5 | exit 1 6 | fi 7 | 8 | result=$(printf "%s\n" "$@") 9 | 10 | echo -e "$result" 11 | -------------------------------------------------------------------------------- /bin/dmenu-tmux: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | tmux_sessions=$(tmux list-sessions -F "#S") 4 | chosen_session=$(echo "$tmux_sessions" | dmenu -p "Choose a Tmux session:" -l 10) 5 | 6 | if [ -z "$chosen_session" ]; then 7 | echo "Session selection canceled." 8 | exit 0 9 | fi 10 | 11 | $TERM -e tmux attach -t "$chosen_session" 12 | -------------------------------------------------------------------------------- /bin/dunst_alert: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env cached-nix-shell 2 | #!nix-shell -i bash -p pipewire 3 | 4 | blacklist=("Spotify") 5 | notification_sound="$DOTFILES/config/dunst/Submarine.wav" 6 | 7 | [[ ! ${blacklist[*]} =~ $DUNST_APP_NAME ]] && pw-cat --volume 0.2 -p "$notification_sound" 8 | -------------------------------------------------------------------------------- /bin/easyeffects_toggle: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if ! systemctl --user is-active --quiet easyeffects; then 4 | systemctl --user start easyeffects & 5 | else 6 | systemctl --user stop easyeffects & 7 | fi 8 | -------------------------------------------------------------------------------- /bin/edit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [ $# -eq 0 ]; then 4 | echo "Usage: edit " 5 | exit 1 6 | fi 7 | 8 | $EDITOR "$1" & 9 | -------------------------------------------------------------------------------- /bin/emacs_lets_note: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | emacsclient -n -e ' 4 | (progn 5 | (select-frame (make-frame)) 6 | (+workspace/new-named "notes") 7 | (org-roam-node-random) 8 | (org-roam-ui-open) 9 | )' 10 | -------------------------------------------------------------------------------- /bin/emacs_lets_write: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | emacsclient -n -e ' 4 | (progn 5 | (select-frame (make-frame)) 6 | (+workspace/new-named "writing") 7 | (find-file "new.org") 8 | (+zen/toggle) 9 | )' 10 | -------------------------------------------------------------------------------- /bin/git-fetch-all: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | git fetch "$1" "+refs/heads/*:refs/remotes/$1/*" 6 | -------------------------------------------------------------------------------- /bin/ide: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | tmux split-window -v -l 30% 3 | tmux split-window -h -l 66% 4 | tmux split-window -h -l 50% 5 | -------------------------------------------------------------------------------- /bin/imv-open: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | FIFO_PATH="$1" 4 | IMAGE="$2" 5 | MAINWINDOW="$(xdotool getactivewindow)" 6 | IMV_PID="$(pgrep imv)" 7 | 8 | if [ ! "$IMV_PID" ]; then 9 | imv "$IMAGE" & 10 | IMV_PID=$! 11 | fi 12 | 13 | sleep 0.5 14 | 15 | xdotool windowactivate "$MAINWINDOW" 16 | 17 | while read -r path; do 18 | imv-msg "$IMV_PID" close all 19 | imv-msg "$IMV_PID" open "$path" 20 | done <"$FIFO_PATH" 21 | 22 | imv-msg "$IMV_PID" quit 23 | [ -e "$FIFO_PATH" ] && rm -f "$FIFO_PATH" 24 | -------------------------------------------------------------------------------- /bin/keyboard-switch: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | # Switch between keyboard layouts 4 | 5 | set_default_layout() { 6 | xkb-switch -s us >/dev/null 2>&1 & 7 | } 8 | 9 | layout_menu() { 10 | xkb-switch -l | rofi -dmenu -i -p "layout" 11 | } 12 | 13 | switch_layout() { 14 | previous_layout="$1" 15 | layout="${2:-$previous_layout}" 16 | 17 | xkb-switch -s "$layout" >/dev/null 18 | } 19 | 20 | previous_layout=$(xkb-switch -p) 21 | set_default_layout 22 | selected_layout=$(layout_menu) 23 | switch_layout "$previous_layout" "$selected_layout" 24 | -------------------------------------------------------------------------------- /bin/mic-test: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env cached-nix-shell 2 | #! nix-shell -i bash -p alsa-utils 3 | 4 | set -euo pipefail 5 | 6 | arecord -f cd - | aplay - 7 | -------------------------------------------------------------------------------- /bin/myip: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env cached-nix-shell 2 | #! nix-shell -i bash -p dig 3 | 4 | dig -4 +short @resolver1.opendns.com myip.opendns.com A 5 | dig -6 +short @resolver1.opendns.com myip.opendns.com AAAA 6 | -------------------------------------------------------------------------------- /bin/nvimedit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | $TERM -e nvim "$@" 4 | -------------------------------------------------------------------------------- /bin/rofi_drun: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | # rofi_wrapper -show drun -theme drun -no-config >/dev/null 4 | rofi_wrapper -show >/dev/null 5 | -------------------------------------------------------------------------------- /bin/rofi_windows: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | rofi_wrapper -show window -theme minimal -no-config >/dev/null 4 | -------------------------------------------------------------------------------- /bin/rofi_wrapper: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | # Wrapper around rofi that always 4 | # runs it with english kbd layout 5 | 6 | previous_layout=$(xkb-switch -p) 7 | xkb-switch -s us >/dev/null & 8 | 9 | rofi "$@" >/dev/null 10 | 11 | xkb-switch -s "$previous_layout" >/dev/null & 12 | -------------------------------------------------------------------------------- /bin/select-wallpaper: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env zsh 2 | 3 | wallpaper_dir=~/Pictures/walls 4 | wallpapers=("$wallpaper_dir"/*(N.om)) 5 | 6 | selected_wallpaper=$(sxiv -t "${wallpapers[@]}") 7 | setwall "$selected_wallpaper" & 8 | -------------------------------------------------------------------------------- /bin/setwall: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Sets the image as a wallpaper for desktop 3 | 4 | # Example usage 5 | # setwall ~/Pictures/walls/Thomas_Cole_-_Dream_of_Arcadia_-_Google_Art_Project.jpg 6 | # setwall ~/Pictures/walls/1593486499392.jpg 7 | 8 | set -e 9 | 10 | wallpaper="${1}" 11 | 12 | feh --bg-fill "$wallpaper" & 13 | -------------------------------------------------------------------------------- /bin/spell: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Find the correct spelling of a word. Uses (and requires) fzf to select the 4 | # correct word. This output can be piped to something like dict to find 5 | # definitions/synonyms. 6 | # 7 | # Requires: aspell, fzf 8 | # Usage: spell mispeling 9 | # Example: dict $(spell mispeling) 10 | 11 | spell_check() { 12 | result=$(echo "$@" | aspell -a | tail -n -2) 13 | 14 | if [[ "$result" == '*' ]]; then 15 | echo "$@" 16 | else 17 | words=$(echo "$result" | sed $'s/[:,] /\\\n/g' | tail -n +2) 18 | 19 | if (($(wc -l <<<"$words") > 1)) && command -v fzf >/dev/null; then 20 | fzf <<<"$words" 21 | else 22 | echo "$words" 23 | fi 24 | fi 25 | } 26 | 27 | case "$1" in 28 | -h | --help) 29 | echo "Usage: spell " 30 | ;; 31 | *) 32 | spell_check "$@" 33 | ;; 34 | esac 35 | -------------------------------------------------------------------------------- /bin/sw: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env cached-nix-shell 2 | #! nix-shell -i bash -p xdo ripgrep gawk 3 | 4 | # Swallowing functionality for any WM 5 | 6 | # That means you can run graphical programs 7 | # from command line by avoiding cluttering 8 | # the screen with many unusable terminals. 9 | 10 | # Example usage 11 | # sw sxiv ~/Pictures/walls 12 | # sw mpv ~/recordings/video.mp4 13 | # sw zathura ~/Documents/books/sicp.pdf 14 | 15 | file="$XDG_DATA_HOME/unhide" 16 | app="$1" 17 | 18 | tid=$(xdo id) 19 | 20 | hidecurrent() { 21 | echo "$tid+$app" >>"$file" & 22 | xdo hide 23 | } 24 | 25 | showlast() { 26 | sid=$(rg "$app" "$file" | awk -F "+" 'END{print $1}') 27 | xdo show -r "$sid" 28 | } 29 | 30 | hidecurrent & 31 | "$@" >/dev/null 2>&1 32 | showlast 33 | -------------------------------------------------------------------------------- /bin/tmpsh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -ex 2 | # 3 | # open shell in a temporary dir 4 | # 5 | 6 | dir=/tmp/$$.tmpsh 7 | 8 | mkdir -p "$dir" 9 | trap 'rm -rf -- "${dir:-?}"' EXIT INT TERM HUP 10 | 11 | cd "$dir" 12 | echo "$dir" | xclip -selection clipboard 13 | (${SHELL:-/bin/sh}) 14 | -------------------------------------------------------------------------------- /bin/xmonad-lsp-setup: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # https://discourse.nixos.org/t/haskell-language-server-support-for-xmonad/12348/4 4 | 5 | yaml=" 6 | cradle: 7 | bios: 8 | program: hie-bios.sh 9 | with-ghc: ${XMONAD_GHC} 10 | " 11 | echo "${yaml}" >./hie.yaml 12 | -------------------------------------------------------------------------------- /config/avizo/config.ini: -------------------------------------------------------------------------------- 1 | [default] 2 | time = 0.7 3 | 4 | border-radius = 0 5 | # border-radius = 20 6 | border-width = 0 7 | 8 | block-height = 5 9 | 10 | y-offset = 0.5 11 | -------------------------------------------------------------------------------- /config/bash/.bashrc: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | [[ $- != *i* ]] && \ 4 | return 5 | 6 | set -o vi 7 | 8 | shopt -s autocd 2>/dev/null 9 | shopt -s checkjobs 2>/dev/null 10 | shopt -s checkwinsize 11 | shopt -s extglob 12 | shopt -s globstar 13 | shopt -s hostcomplete 14 | 15 | set +o histexpand 16 | shopt -s cmdhist 17 | shopt -s histappend 18 | shopt -s histreedit 19 | HISTCONTROL=ignoredups:ignorespace 20 | 21 | complete -A directory cd 22 | 23 | export PS1="\[\033[0;32m\]\w\[\033[0m\] \[\033[0;33m\]$\[\033[0m\] " 24 | -------------------------------------------------------------------------------- /config/bat/config: -------------------------------------------------------------------------------- 1 | --style=plain,grid,changes,header 2 | --theme=base16 3 | --wrap=never 4 | -------------------------------------------------------------------------------- /config/betterlockscreen/betterlockscreenrc: -------------------------------------------------------------------------------- 1 | # configuration file for betterlockscreen 2 | 3 | insidecolor=00000000 4 | ringcolor=00000000 5 | keyhlcolor=d23c3dff 6 | bshlcolor=d23c3dff 7 | separatorcolor=00000000 8 | insidevercolor=00000000 9 | insidewrongcolor=d23c3dff 10 | ringvercolor=00000000 11 | ringwrongcolor=d23c3dff 12 | verifcolor=ffffffff 13 | timecolor=ffffffff 14 | datecolor=ffffffff 15 | llayoutcolor=00000000 16 | oginbox=00000066 17 | locktext="Type password to unlock..." 18 | verif_text="" 19 | quiet=true 20 | -------------------------------------------------------------------------------- /config/clipcat/clipcat-menu.toml: -------------------------------------------------------------------------------- 1 | [rofi] 2 | menu_prompt = "clip:" 3 | extra_arguments = ["-i"] 4 | -------------------------------------------------------------------------------- /config/doom/cli.el: -------------------------------------------------------------------------------- 1 | ;;; cli.el -*- lexical-binding: t; -*- 2 | (setq org-confirm-babel-evaluate nil) 3 | 4 | (defun doom-shut-up-a (orig-fn &rest args) 5 | (quiet! (apply orig-fn args))) 6 | 7 | (advice-add 'org-babel-execute-src-block :around #'doom-shut-up-a) 8 | -------------------------------------------------------------------------------- /config/doom/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lenivaya/dotfiles/1261ccc34d851d40e23728aa15243f8e6b0a0f9a/config/doom/splash.png -------------------------------------------------------------------------------- /config/dunst/Submarine.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lenivaya/dotfiles/1261ccc34d851d40e23728aa15243f8e6b0a0f9a/config/dunst/Submarine.wav -------------------------------------------------------------------------------- /config/espanso/config/default.yml: -------------------------------------------------------------------------------- 1 | # Automatically generated by espanso migration tool 2 | # Original file: default.yml 3 | search_shortcut: ALT+SHIFT+SPACE 4 | search_trigger: ".search" 5 | -------------------------------------------------------------------------------- /config/espanso/match/base.yml: -------------------------------------------------------------------------------- 1 | # Plugins 2 | # - math-symbols 3 | # - greek-letters-improved 4 | # - lorem 5 | # - logic-symbols 6 | # - quotes 7 | # - wtc 8 | # - get-ip 9 | matches: 10 | - trigger: ":em" 11 | replace: — 12 | - trigger: ":date" 13 | replace: "{{mydate}}" 14 | vars: 15 | - name: mydate 16 | type: date 17 | params: 18 | format: "%d.%m.%Y" 19 | - trigger: ":now" 20 | replace: "It's {{mytime}}" 21 | vars: 22 | - name: mytime 23 | type: date 24 | params: 25 | format: "%H:%M" 26 | -------------------------------------------------------------------------------- /config/espanso/match/packages/get-ip/README.md: -------------------------------------------------------------------------------- 1 | # espanso-get-ip-pack 2 | 3 | Espanso package to get public IP 4 | 5 | Works with both Linux and Windows 6 | and Requires Curl Installed 7 | 8 | ## Usage: 9 | 10 | :getip for linux 11 | 12 | :winip for windows 13 | -------------------------------------------------------------------------------- /config/espanso/match/packages/get-ip/_manifest.yml: -------------------------------------------------------------------------------- 1 | author: yogeshbatra 2 | description: A espanso package to get IP address 3 | homepage: https://github.com/yogeshbatra/espanso-get-ip-pack 4 | name: get-ip 5 | title: Get Ip 6 | version: 0.1.0 7 | tags: ["ip", "shell", "development"] 8 | -------------------------------------------------------------------------------- /config/espanso/match/packages/get-ip/_pkgsource.yml: -------------------------------------------------------------------------------- 1 | hub 2 | -------------------------------------------------------------------------------- /config/espanso/match/packages/get-ip/package.yml: -------------------------------------------------------------------------------- 1 | # getip package 2 | matches: 3 | - trigger: ":getip" 4 | replace: "{{output}}" 5 | vars: 6 | - name: output 7 | type: shell 8 | params: 9 | cmd: "curl ifconfig.me" 10 | - trigger: ":winip" 11 | replace: "{{output}}" 12 | vars: 13 | - name: output 14 | type: shell 15 | params: 16 | cmd: "curl ifconfig.me" 17 | shell: cmd 18 | -------------------------------------------------------------------------------- /config/espanso/match/packages/greek-letters-improved/_manifest.yml: -------------------------------------------------------------------------------- 1 | author: "José Ferreira" 2 | description: A package containing most of the Greek alphabet and some common variatons using Latex based naming scheme 3 | name: greek-letters-improved 4 | title: Greek Letters based on Latex 5 | version: 0.1.0 6 | homepage: "https://github.com/jpmvferreira/espanso-mega-pack" 7 | tags: ["greek", "languages", "latex", "math"] 8 | -------------------------------------------------------------------------------- /config/espanso/match/packages/greek-letters-improved/_pkgsource.yml: -------------------------------------------------------------------------------- 1 | hub 2 | -------------------------------------------------------------------------------- /config/espanso/match/packages/logic-symbols/README.md: -------------------------------------------------------------------------------- 1 | A simple package including common unicode logic [symbols](https://en.wikipedia.org/wiki/List_of_logic_symbols). 2 | 3 | ### Installation 4 | 5 | ``` 6 | espanso install logic-symbols 7 | ``` 8 | 9 | ### Usage 10 | 11 | The following basic symbols are included, but feel free to add more! 12 | 13 | | Keyword | Emoji | 14 | | --------- | ----- | 15 | | `:not` | ¬ | 16 | | `:and` | ∧ | 17 | | `:or` | ∨ | 18 | | `:xor` | ⊕ | 19 | | `:imp` | → | 20 | | `:biimp` | ⟷ | 21 | | `:eq` | ≡ | 22 | | `:true` | ⊤ | 23 | | `:false` | ⊥ | 24 | | `:all` | ∀ | 25 | | `:exists` | ∃ | 26 | -------------------------------------------------------------------------------- /config/espanso/match/packages/logic-symbols/_manifest.yml: -------------------------------------------------------------------------------- 1 | author: Max Gallup 2 | description: Commonly used symbols in predicate logic and boolean algebra. 3 | name: "logic-symbols" 4 | title: "Logic Symbols" 5 | version: 0.1.0 6 | tags: ["logic", "symbols"] 7 | -------------------------------------------------------------------------------- /config/espanso/match/packages/logic-symbols/_pkgsource.yml: -------------------------------------------------------------------------------- 1 | hub 2 | -------------------------------------------------------------------------------- /config/espanso/match/packages/logic-symbols/package.yml: -------------------------------------------------------------------------------- 1 | matches: 2 | - trigger: ":not" 3 | replace: "¬" 4 | - trigger: ":and" 5 | replace: "∧" 6 | - trigger: ":or" 7 | replace: "∨" 8 | - trigger: ":xor" 9 | replace: "⊕" 10 | - triggers: [":imp", ":if"] 11 | replace: "→" 12 | - triggers: [":bimp", ":iff"] 13 | replace: "↔" 14 | - triggers: [":eq", ":def"] 15 | replace: "≡" 16 | - triggers: [":true", ":top"] 17 | replace: "⊤" 18 | - triggers: [":false", ":bot"] 19 | replace: "⊥" 20 | - trigger: ":forall" 21 | replace: "∀" 22 | - trigger: ":exists" 23 | replace: "∃" 24 | - trigger: ":proves" 25 | replace: "⊢" 26 | - trigger: ":models" 27 | replace: "⊨" 28 | -------------------------------------------------------------------------------- /config/espanso/match/packages/lorem/README.md: -------------------------------------------------------------------------------- 1 | A simple package to generate random lorem ipsum sentences or paragraphs based on free macOS app [LoremBuilder](https://lorembuilder.com/). 2 | 3 | ### Installation 4 | 5 | ``` 6 | espanso install lorem 7 | ``` 8 | 9 | ### Usage 10 | 11 | | Trigger | Replace | 12 | | --------- | ------------ | 13 | | `>lorem` | 1 sentence. | 14 | | `>2lorem` | 2 sentences. | 15 | | `>3lorem` | 3 sentences. | 16 | | `>4lorem` | 4 sentences. | 17 | 18 | | Trigger | Replace | 19 | | --------- | ------------- | 20 | | `#lorem` | 1 paragraph. | 21 | | `#2lorem` | 2 paragraphs. | 22 | | `#3lorem` | 3 paragraphs. | 23 | | `#4lorem` | 4 paragraphs. | 24 | -------------------------------------------------------------------------------- /config/espanso/match/packages/lorem/_manifest.yml: -------------------------------------------------------------------------------- 1 | author: Dominique Da Silva 2 | description: Lorem ipsum sentences and paragraphs generator. 3 | name: lorem 4 | title: Lorem Ipsum 5 | version: 0.1.0 6 | homepage: "https://github.com/atika/espanso-lorem" 7 | tags: ["lorem", "design", "utility"] 8 | -------------------------------------------------------------------------------- /config/espanso/match/packages/lorem/_pkgsource.yml: -------------------------------------------------------------------------------- 1 | hub 2 | -------------------------------------------------------------------------------- /config/espanso/match/packages/math-symbols/_manifest.yml: -------------------------------------------------------------------------------- 1 | author: "José Ferreira" 2 | description: Displays math symbols using Latex based naming scheme 3 | name: math-symbols 4 | title: Math symbols based on Latex 5 | version: 0.1.0 6 | homepage: "https://github.com/jpmvferreira/espanso-mega-pack" 7 | tags: ["math", "symbols"] 8 | -------------------------------------------------------------------------------- /config/espanso/match/packages/math-symbols/_pkgsource.yml: -------------------------------------------------------------------------------- 1 | hub 2 | -------------------------------------------------------------------------------- /config/espanso/match/packages/quotes/_manifest.yml: -------------------------------------------------------------------------------- 1 | author: WhistlingZephyr 2 | description: Include different quotations and quotation-related characters to espanso. 3 | name: quotes 4 | title: Quotes 5 | version: 0.1.0 6 | homepage: https://github.com/WhistlingZephyr/espanso-package-quotes 7 | tags: ["quotes", "punctuation", "languages"] 8 | -------------------------------------------------------------------------------- /config/espanso/match/packages/quotes/_pkgsource.yml: -------------------------------------------------------------------------------- 1 | hub 2 | -------------------------------------------------------------------------------- /config/espanso/match/packages/wtc/README.md: -------------------------------------------------------------------------------- 1 | Espanso package that gets a hilarious random commit message. 2 | 3 | ![](https://user-images.githubusercontent.com/516342/99454223-cda04800-292e-11eb-9034-e5c625ee0073.gif) 4 | 5 | Instead of writing something meaningful, your can commit with a silly message `git commit -m ":wtc"` 6 | 7 | Powered by [What The Commit](https://whatthecommit.com/). 8 | -------------------------------------------------------------------------------- /config/espanso/match/packages/wtc/_manifest.yml: -------------------------------------------------------------------------------- 1 | author: omrilotan 2 | description: Get a hilarious random commit message 3 | name: wtc 4 | title: What the Commit 5 | version: 1.0.1 6 | homepage: "https://github.com/omrilotan/espanso-package-wtc" 7 | tags: ["fun", "git", "shell"] 8 | -------------------------------------------------------------------------------- /config/espanso/match/packages/wtc/_pkgsource.yml: -------------------------------------------------------------------------------- 1 | hub 2 | -------------------------------------------------------------------------------- /config/espanso/match/packages/wtc/package.yml: -------------------------------------------------------------------------------- 1 | matches: 2 | - trigger: ":wtc" 3 | replace: "{{output}}" 4 | vars: 5 | - name: output 6 | type: shell 7 | params: 8 | cmd: "curl -s https://whatthecommit.com/index.txt" 9 | -------------------------------------------------------------------------------- /config/firefox/userContent.css: -------------------------------------------------------------------------------- 1 | /* scrollbar */ 2 | 3 | :root { 4 | scrollbar-width: thin !important; 5 | } 6 | 7 | @-moz-document url(about:privatebrowsing) { 8 | :root { 9 | scrollbar-width: thin !important; 10 | } 11 | } 12 | 13 | /* https://www.reddit.com/r/FirefoxCSS/comments/1hy3suk/remove_firefox_support_button/ */ 14 | [is="moz-support-link"] { 15 | display: none !important; 16 | } 17 | [support-page="addons-help"] { 18 | display: none !important; 19 | } 20 | /* Hide all 'Learn more' links in about:preferences */ 21 | @-moz-document url-prefix("about:preferences") { 22 | .learnMore, 23 | .browsing-cfr-recommendations-learn-more, 24 | #addEngines, 25 | #addressAutofillLearnMore, 26 | #creditCardAutofillLearnMore, 27 | #creditCardReauthenticateLearnMore, 28 | #crashReporterLearnMore, 29 | a[is="moz-support-link"] { 30 | display: none !important; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /config/fish/completions/bd.fish: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env fish 2 | # -*- mode:fish; tab-width:4 -*- 3 | # 4 | # fish-completion for fish-bd 5 | # https://github.com/0rax/fish-bd 6 | # 7 | 8 | complete -c bd -s c --description "Classic mode : goes back to the first directory named as the string" 9 | complete -c bd -s s --description "Seems mode : goes back to the first directory containing string" 10 | complete -c bd -s i --description "Case insensitive move (implies seems mode)" 11 | complete -c bd -s h -x --description "Display help and exit" 12 | complete -c bd -A -f 13 | 14 | function __fish_bd_complete_dirs 15 | printf (pwd | sed 's%/[^/]*$%/%; s/.$//; s|/|\\\n|g') 16 | end 17 | 18 | complete -c bd -a '(__fish_bd_complete_dirs)' 19 | -------------------------------------------------------------------------------- /config/fish/completions/dl.fish: -------------------------------------------------------------------------------- 1 | complete --command dl --description "Wrapper around yt-dlp to easily download media" 2 | complete --command dl --short h --long help --description "Display help" 3 | complete --command dl --short v --long version --description "Display version" 4 | -------------------------------------------------------------------------------- /config/fish/completions/fifc.fish: -------------------------------------------------------------------------------- 1 | complete fifc --long condition --short -n --description "Command or fish function to be evaluated" 2 | complete fifc --long regex --short r --description "Regex matching the part of the commandline before cursor" 3 | complete fifc --long extract --short e --description "Regex applied on the sele cted candidate(s) to extract string to bo appended to the commandline (using capture groups)" 4 | complete fifc --long order --short O --description "Order in which this rule must be evaluated" 5 | complete fifc --long preview --short p --description "Preview command to be evaluated on the current candidate" 6 | complete fifc --long open --short o --description "Open command to be evaluated on the current candidate" 7 | complete fifc --long fzf-options --short f --description "Custom fzf options" 8 | -------------------------------------------------------------------------------- /config/fish/completions/fisher.fish: -------------------------------------------------------------------------------- 1 | complete --command fisher --exclusive --long help --description "Print help" 2 | complete --command fisher --exclusive --long version --description "Print version" 3 | complete --command fisher --exclusive --condition __fish_use_subcommand --arguments install --description "Install plugins" 4 | complete --command fisher --exclusive --condition __fish_use_subcommand --arguments update --description "Update installed plugins" 5 | complete --command fisher --exclusive --condition __fish_use_subcommand --arguments remove --description "Remove installed plugins" 6 | complete --command fisher --exclusive --condition __fish_use_subcommand --arguments list --description "List installed plugins matching regex" 7 | complete --command fisher --exclusive --condition "__fish_seen_subcommand_from update remove" --arguments "(fisher list)" 8 | -------------------------------------------------------------------------------- /config/fish/completions/pnpm.fish: -------------------------------------------------------------------------------- 1 | ###-begin-pnpm-completion-### 2 | function _pnpm_completion 3 | set cmd (commandline -o) 4 | set cursor (commandline -C) 5 | set words (count $cmd) 6 | 7 | set completions (eval env DEBUG=\"" \"" COMP_CWORD=\""$words\"" COMP_LINE=\""$cmd \"" COMP_POINT=\""$cursor\"" SHELL=fish pnpm completion-server -- $cmd) 8 | 9 | if [ "$completions" = "__tabtab_complete_files__" ] 10 | set -l matches (commandline -ct)* 11 | if [ -n "$matches" ] 12 | __fish_complete_path (commandline -ct) 13 | end 14 | else 15 | for completion in $completions 16 | echo -e $completion 17 | end 18 | end 19 | end 20 | 21 | complete -f -d 'pnpm' -c pnpm -a "(_pnpm_completion)" 22 | ###-end-pnpm-completion-### 23 | 24 | -------------------------------------------------------------------------------- /config/fish/completions/spark.fish: -------------------------------------------------------------------------------- 1 | complete --command spark --exclusive --long min --description "Minimum range" 2 | complete --command spark --exclusive --long max --description "Maximum range" 3 | complete --command spark --exclusive --long version --description "Print version" 4 | complete --command spark --exclusive --long help --description "Print this help message" 5 | -------------------------------------------------------------------------------- /config/fish/completions/web-search.fish: -------------------------------------------------------------------------------- 1 | # access _web_search_fish_engines to get the list of engines 2 | for i in (seq 1 2 (count $_web_search_fish_engines)) 3 | set -l context $_web_search_fish_engines[$i] 4 | set -a contexts "$context" 5 | end 6 | 7 | for custom_env in (env | grep ^WEB_SEARCH) 8 | set -l context (string split -m 1 = $custom_env)[1] 9 | set -a contexts ( echo "$context" | string sub -s 12) 10 | end 11 | 12 | complete -c web-search -f -n __fish_use_subcommand -a "$contexts" 13 | -------------------------------------------------------------------------------- /config/fish/conf.d/my-fzf.fish: -------------------------------------------------------------------------------- 1 | set --export FZF_DEFAULT_OPTS '--cycle --layout=reverse --border=sharp --height=100% --preview-window=wrap --marker="*" --prompt="∷ " --pointer=▶ --marker=⇒ --info=inline --multi --margin=1' 2 | -------------------------------------------------------------------------------- /config/fish/conf.d/my-vim-ui.fish: -------------------------------------------------------------------------------- 1 | # Emulates vim's cursor shape behavior 2 | # Set the normal and visual mode cursors to a block 3 | set fish_cursor_default block 4 | # Set the insert mode cursor to a line 5 | set fish_cursor_insert line 6 | # Set the replace mode cursors to an underscore 7 | set fish_cursor_replace_one underscore 8 | set fish_cursor_replace underscore 9 | # Set the external cursor to a line. The external cursor appears when a command is started. 10 | # The cursor shape takes the value of fish_cursor_default when fish_cursor_external is not specified. 11 | set fish_cursor_external line 12 | # The following variable can be used to configure cursor shape in 13 | # visual mode, but due to fish_cursor_default, is redundant here 14 | set fish_cursor_visual block 15 | 16 | bind yy fish_clipboard_copy 17 | bind Y fish_clipboard_copy 18 | bind p fish_clipboard_paste 19 | -------------------------------------------------------------------------------- /config/fish/conf.d/my-yazi.fish: -------------------------------------------------------------------------------- 1 | function y 2 | set tmp (mktemp -t "yazi-cwd.XXXXXX") 3 | yazi $argv --cwd-file="$tmp" 4 | if set cwd (command cat -- "$tmp"); and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ] 5 | builtin cd -- "$cwd" 6 | end 7 | rm -f -- "$tmp" 8 | end 9 | -------------------------------------------------------------------------------- /config/fish/conf.d/puffer_fish_key_bindings.fish: -------------------------------------------------------------------------------- 1 | status is-interactive || exit 2 | 3 | function _puffer_fish_key_bindings --on-variable fish_key_bindings 4 | set -l modes 5 | if test "$fish_key_bindings" = fish_default_key_bindings 6 | set modes default insert 7 | else 8 | set modes insert default 9 | end 10 | 11 | bind --mode $modes[1] . _puffer_fish_expand_dots 12 | bind --mode $modes[1] ! _puffer_fish_expand_bang 13 | bind --mode $modes[1] '$' _puffer_fish_expand_lastarg 14 | bind --mode $modes[2] --erase . ! '$' 15 | end 16 | 17 | _puffer_fish_key_bindings 18 | 19 | set -l uninstall_event puffer_fish_key_bindings_uninstall 20 | 21 | function _$uninstall_event --on-event $uninstall_event 22 | bind -e . 23 | bind -e ! 24 | bind -e '$' 25 | end 26 | -------------------------------------------------------------------------------- /config/fish/conf.d/thefuck.fish: -------------------------------------------------------------------------------- 1 | if type -q thefuck 2 | set -q __tf_func; or __tf_updt 3 | eval $__tf_func 4 | else 5 | echo "Please install thefuck first. Check https://github.com/nvbn/thefuck" 6 | end 7 | -------------------------------------------------------------------------------- /config/fish/fish_plugins: -------------------------------------------------------------------------------- 1 | jorgebucaran/fisher 2 | franciscolourenco/done 3 | wfxr/forgit 4 | patrickf1/fzf.fish 5 | jorgebucaran/autopair.fish 6 | ryoppippi/bdf.fish 7 | 0rax/fish-bd 8 | jorgebucaran/spark.fish 9 | edc/bass 10 | gazorby/fish-abbreviation-tips 11 | nickeb96/puffer-fish 12 | lilyball/nix-env.fish 13 | ryoppippi/fish-na 14 | gazorby/fifc 15 | oh-my-fish/plugin-thefuck 16 | veirt/web-search.fish 17 | dideler/dl.fish 18 | decors/fish-colored-man 19 | -------------------------------------------------------------------------------- /config/fish/functions/__abbr_tips_bind_newline.fish: -------------------------------------------------------------------------------- 1 | function __abbr_tips_bind_newline 2 | if test $__abbr_tips_used != 1 3 | if abbr -q -- (string trim -- (commandline)) 4 | set -g __abbr_tips_used 1 5 | else 6 | set -g __abbr_tips_used 0 7 | end 8 | end 9 | commandline -f execute 10 | end 11 | -------------------------------------------------------------------------------- /config/fish/functions/__abbr_tips_bind_space.fish: -------------------------------------------------------------------------------- 1 | function __abbr_tips_bind_space 2 | commandline -i " " 3 | if test $__abbr_tips_used != 1 4 | if abbr -q -- (string trim -- (commandline)) 5 | set -g __abbr_tips_used 1 6 | else 7 | set -g __abbr_tips_used 0 8 | end 9 | end 10 | commandline -f expand-abbr 11 | end 12 | -------------------------------------------------------------------------------- /config/fish/functions/__abbr_tips_clean.fish: -------------------------------------------------------------------------------- 1 | function __abbr_tips_clean -d "Clean plugin variables and functions" 2 | bind --erase \n 3 | bind --erase \r 4 | bind --erase " " 5 | set --erase __abbr_tips_used 6 | set --erase __abbr_tips_run_once 7 | set --erase __ABBR_TIPS_VALUES 8 | set --erase __ABBR_TIPS_KEYS 9 | set --erase ABBR_TIPS_PROMPT 10 | set --erase ABBR_TIPS_AUTO_UPDATE 11 | set --erase ABBR_TIPS_ALIAS_WHITELIST 12 | set --erase ABBR_TIPS_REGEXES 13 | functions --erase __abbr_tips_bind_newline 14 | functions --erase __abbr_tips_bind_space 15 | functions --erase __abbr_tips 16 | end 17 | -------------------------------------------------------------------------------- /config/fish/functions/__tf_updt.fish: -------------------------------------------------------------------------------- 1 | function __tf_updt 2 | set -l tf_vers (thefuck -v 2>&1) 3 | if test "$__tf_vers" != "$tf_vers" -o -z "$__tf_func" 4 | set -U __tf_vers $tf_vers 5 | set -U __tf_func (thefuck -a "__tf_alias" | tr "\n" ";") 6 | eval $__tf_func 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /config/fish/functions/_autopair_backspace.fish: -------------------------------------------------------------------------------- 1 | function _autopair_backspace 2 | set --local index (commandline --cursor) 3 | set --local buffer (commandline) 4 | 5 | test $index -ge 1 && 6 | contains -- (string sub --start=$index --length=2 -- "$buffer") $autopair_pairs && 7 | commandline --function delete-char 8 | commandline --function backward-delete-char 9 | end 10 | -------------------------------------------------------------------------------- /config/fish/functions/_autopair_insert_left.fish: -------------------------------------------------------------------------------- 1 | function _autopair_insert_left --argument-names left right 2 | set --local buffer (commandline) 3 | set --local before (commandline --cut-at-cursor) 4 | 5 | commandline --insert -- $left 6 | 7 | switch "$buffer" 8 | case "$before"{," "\*,$autopair_right\*} 9 | set --local index (commandline --cursor) 10 | commandline --insert -- $right 11 | commandline --cursor $index 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /config/fish/functions/_autopair_insert_right.fish: -------------------------------------------------------------------------------- 1 | function _autopair_insert_right --argument-names key 2 | set --local buffer (commandline) 3 | set --local before (commandline --cut-at-cursor) 4 | 5 | switch "$buffer" 6 | case "$before$key"\* 7 | commandline --cursor (math (commandline --cursor) + 1) 8 | case \* 9 | commandline --insert -- $key 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /config/fish/functions/_autopair_insert_same.fish: -------------------------------------------------------------------------------- 1 | function _autopair_insert_same --argument-names key 2 | set --local buffer (commandline) 3 | set --local index (commandline --cursor) 4 | set --local next (string sub --start=(math $index + 1) --length=1 -- "$buffer") 5 | 6 | if test (math (count (string match --all --regex -- "$key" "$buffer")) % 2) = 0 7 | test $key = $next && commandline --cursor (math $index + 1) && return 8 | 9 | commandline --insert -- $key 10 | 11 | if test $index -lt 1 || 12 | contains -- (string sub --start=$index --length=1 -- "$buffer") "" " " $autopair_left && 13 | contains -- $next "" " " $autopair_right 14 | commandline --insert -- $key 15 | commandline --cursor (math $index + 1) 16 | end 17 | else 18 | commandline --insert -- $key 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /config/fish/functions/_autopair_tab.fish: -------------------------------------------------------------------------------- 1 | function _autopair_tab 2 | commandline --paging-mode && down-or-search && return 3 | 4 | string match --quiet --regex -- '\$[^\s]*"$' (commandline --current-token) && 5 | commandline --function end-of-line --function backward-delete-char 6 | commandline --function complete 7 | end 8 | -------------------------------------------------------------------------------- /config/fish/functions/_fifc_expand_tilde.fish: -------------------------------------------------------------------------------- 1 | function _fifc_expand_tilde 2 | string replace --regex -- '^~' "$HOME" $argv 3 | end 4 | -------------------------------------------------------------------------------- /config/fish/functions/_fifc_file_type.fish: -------------------------------------------------------------------------------- 1 | function _fifc_file_type -d "Figure out file type (txt, json, image, pdf, archive, binary)" 2 | set -l mime (file --mime-type -b "$argv") 3 | set -l binary 0 4 | if string match --quiet '*binary*' -- (file --mime -b -L "$argv") 5 | set binary 1 6 | end 7 | 8 | switch $mime 9 | case application/{gzip,java-archive,x-{7z-compressed,bzip2,chrome-extension,rar,tar,xar},zip} 10 | echo archive 11 | return 12 | case "image/*" 13 | echo image 14 | return 15 | end 16 | 17 | if test $binary = 1 18 | echo binary 19 | else 20 | switch $mime 21 | case application/pdf 22 | echo pdf 23 | case application/json 24 | echo json 25 | case "*" 26 | echo txt 27 | end 28 | end 29 | end 30 | -------------------------------------------------------------------------------- /config/fish/functions/_fifc_open_cmd.fish: -------------------------------------------------------------------------------- 1 | function _fifc_open_cmd 2 | _fifc_preview_cmd $fifc_candidate 3 | end 4 | -------------------------------------------------------------------------------- /config/fish/functions/_fifc_open_dir.fish: -------------------------------------------------------------------------------- 1 | function _fifc_open_dir 2 | if type -q broot 3 | broot --color=yes $fifc_broot_opts $fifc_candidate 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /config/fish/functions/_fifc_open_file.fish: -------------------------------------------------------------------------------- 1 | function _fifc_open_file -d "Open a file with the right tool depending on its type" 2 | set -l filepath "$fifc_candidate" 3 | 4 | if test -n "$argv" 5 | set filepath "$argv" 6 | end 7 | 8 | set -q fifc_editor || set -l fifc_editor "$EDITOR" 9 | 10 | set -l file_type (_fifc_file_type "$filepath") 11 | 12 | switch $file_type 13 | case txt json archive 14 | $fifc_editor "$filepath" 15 | case image 16 | if type -q chafa 17 | chafa --watch $fifc_chafa_opts "$filepath" 18 | else 19 | $fifc_editor "$filepath" 20 | end 21 | case binary 22 | if type -q hexyl 23 | hexyl $fifc_hexyl_opts "$filepath" | less --RAW-CONTROL-CHARS 24 | else 25 | $fifc_editor "$filepath" 26 | end 27 | end 28 | end 29 | -------------------------------------------------------------------------------- /config/fish/functions/_fifc_open_fn.fish: -------------------------------------------------------------------------------- 1 | function _fifc_open_fn -d "Open a function definition using open file wrapper" 2 | set -l pathname (functions --details $fifc_candidate 2>/dev/null) 3 | if test -f $pathname 4 | _fifc_open_file $pathname 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /config/fish/functions/_fifc_open_opt.fish: -------------------------------------------------------------------------------- 1 | function _fifc_open_opt -d "Open a man page starting at the selected option" 2 | set -l cmd (string match --regex --groups-only -- '(^|\h+)(\w+) ?-*$' "$fifc_commandline") 3 | set -l opt (string trim --chars '\n ' -- "$fifc_candidate") 4 | set -l regex "^\h*(-+[^\n]*)*$opt" 5 | 6 | if type -q bat 7 | man $cmd \ 8 | | bat --color=always --language man $fifc_bat_opts \ 9 | # --RAW-CONTROL-CHARS allow color output of bat to be displayed 10 | | less --RAW-CONTROL-CHARS --pattern "$regex" 11 | else 12 | man $cmd | less --pattern "$regex" 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /config/fish/functions/_fifc_open_process.fish: -------------------------------------------------------------------------------- 1 | function _fifc_open_process -d "Open the tree view of the selected process (procs only)" 2 | set -l pid (_fifc_parse_pid "$fifc_candidate") 3 | 4 | if type -q procs 5 | procs --color=always --tree --pager=always $fifc_procs_opts "$pid" 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /config/fish/functions/_fifc_parse_complist.fish: -------------------------------------------------------------------------------- 1 | function _fifc_parse_complist -d "Extract the first column of fish completion list" 2 | cat $_fifc_complist_path \ 3 | | string unescape \ 4 | | uniq \ 5 | | awk -F '\t' '{ print $1 }' 6 | end 7 | -------------------------------------------------------------------------------- /config/fish/functions/_fifc_parse_pid.fish: -------------------------------------------------------------------------------- 1 | function _fifc_parse_pid -d "Extract pid at the beginning of ps output lines" 2 | string match --regex --groups-only -- "^\h*([0-9]+)" "$argv" 3 | end 4 | -------------------------------------------------------------------------------- /config/fish/functions/_fifc_path_to_complete.fish: -------------------------------------------------------------------------------- 1 | function _fifc_path_to_complete 2 | set -l token (string unescape -- $fifc_token) 3 | if string match --regex --quiet -- '.*(\w|\.|/)+$' "$token" 4 | _fifc_expand_tilde "$token" 5 | else 6 | echo {$PWD}/ 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /config/fish/functions/_fifc_preview_cmd.fish: -------------------------------------------------------------------------------- 1 | function _fifc_preview_cmd -d "Open man page of the selected command" 2 | if type -q bat 3 | man $fifc_candidate 2>/dev/null | bat --color=always --language man $fifc_bat_opts 4 | else 5 | man $fifc_candidate 2>/dev/null 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /config/fish/functions/_fifc_preview_dir.fish: -------------------------------------------------------------------------------- 1 | function _fifc_preview_dir -d "List content of the selected directory" 2 | if type -q exa 3 | exa --color=always $fifc_exa_opts $fifc_candidate 4 | else 5 | ls --color=always $fifc_ls_opts $fifc_candidate 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /config/fish/functions/_fifc_preview_file_default.fish: -------------------------------------------------------------------------------- 1 | function _fifc_preview_file_default -d "Display informations about the selected file" 2 | set -l mime (file --mime-type -b "$argv") 3 | set_color brgreen 4 | echo -e "$mime[1]\n" 5 | set_color --bold white 6 | file -b "$argv" 7 | set_color normal 8 | end 9 | -------------------------------------------------------------------------------- /config/fish/functions/_fifc_preview_fn.fish: -------------------------------------------------------------------------------- 1 | function _fifc_preview_fn -d "Preview the function definition" 2 | if type -q bat 3 | type $fifc_candidate | bat --color=always --language fish $fifc_bat_opts 4 | else 5 | type $fifc_candidate 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /config/fish/functions/_fifc_preview_process.fish: -------------------------------------------------------------------------------- 1 | function _fifc_preview_process -d "Preview process informations" 2 | set -l pid (_fifc_parse_pid "$fifc_candidate") 3 | set -l err_msg "\nThe process exited" 4 | 5 | if type -q procs 6 | procs --color=always --tree $fifc_procs_opts "$pid" 7 | else 8 | set -l ps_preview_fmt (string join ',' 'pid' 'ppid=PARENT' 'user' '%cpu' 'rss=RSS_IN_KB' 'start=START_TIME' 'command') 9 | ps -o "$ps_preview_fmt" -p "$pid" 2>/dev/null 10 | end 11 | if not ps -p "$pid" &>/dev/null 12 | set_color yellow 13 | echo -e "$err_msg" 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /config/fish/functions/_fifc_source_directories.fish: -------------------------------------------------------------------------------- 1 | function _fifc_source_directories -d "Return a command to recursively find directories" 2 | if type -q fd 3 | set --local --export fifc_fd_opts -t d 4 | _fifc_source_files 5 | else 6 | set --local --export fifc_find_opts -type d 7 | _fifc_source_files 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /config/fish/functions/_fifc_test_version.fish: -------------------------------------------------------------------------------- 1 | function _fifc_test_version -d "Compare version numbers" 2 | set -l arg_1 (string replace --regex --all '[^\d]' '' -- "$argv[1]") 3 | set -l arg_2 (string replace --regex --all '[^\d]' '' -- "$argv[3]") 4 | set -l op "$argv[2]" 5 | 6 | set -l v_diff (math (string length -- $arg_1) - (string length -- $arg_2)) 7 | 8 | # Ensure both versions are the same length 9 | if test $v_diff -gt 0 10 | set arg_2 (string join '' -- "$arg_2" (string repeat -N -n $v_diff '0')) 11 | else if test $v_diff -lt 0 12 | set v_diff (math abs $v_diff) 13 | set arg_1 (string join '' -- "$arg_1" (string repeat -N -n $v_diff '0')) 14 | end 15 | 16 | set -l cmd (string collect -- "test " "$arg_1" " $op " "$arg_2") 17 | eval $cmd 18 | end 19 | -------------------------------------------------------------------------------- /config/fish/functions/_fzf_extract_var_info.fish: -------------------------------------------------------------------------------- 1 | # helper function for _fzf_search_variables 2 | function _fzf_extract_var_info --argument-names variable_name set_show_output --description "Extract and reformat lines pertaining to \$variable_name from \$set_show_output." 3 | # Extract only the lines about the variable, all of which begin with either 4 | # $variable_name: ...or... $variable_name[ 5 | string match --regex "^\\\$$variable_name(?::|\[).*" <$set_show_output | 6 | 7 | # Strip the variable name prefix, including ": " for scope info lines 8 | string replace --regex "^\\\$$variable_name(?:: )?" '' | 9 | 10 | # Distill the lines of values, replacing... 11 | # [1]: |value| 12 | # ...with... 13 | # [1] value 14 | string replace --regex ": \|(.*)\|" ' $1' 15 | end 16 | -------------------------------------------------------------------------------- /config/fish/functions/_fzf_report_diff_type.fish: -------------------------------------------------------------------------------- 1 | # helper for _fzf_preview_changed_file 2 | # prints out something like 3 | # ╭────────╮ 4 | # │ Staged │ 5 | # ╰────────╯ 6 | function _fzf_report_diff_type --argument-names diff_type --description "Print a distinct colored header meant to preface a git patch." 7 | # number of "-" to draw is the length of the string to box + 2 for padding 8 | set -f repeat_count (math 2 + (string length $diff_type)) 9 | set -f line (string repeat --count $repeat_count ─) 10 | set -f top_border ╭$line╮ 11 | set -f btm_border ╰$line╯ 12 | 13 | set_color yellow 14 | echo $top_border 15 | echo "│ $diff_type │" 16 | echo $btm_border 17 | set_color normal 18 | end 19 | -------------------------------------------------------------------------------- /config/fish/functions/_fzf_report_file_type.fish: -------------------------------------------------------------------------------- 1 | # helper function for _fzf_preview_file 2 | function _fzf_report_file_type --argument-names file_path file_type --description "Explain the file type for a file." 3 | set_color red 4 | echo "Cannot preview '$file_path': it is a $file_type." 5 | set_color normal 6 | end 7 | -------------------------------------------------------------------------------- /config/fish/functions/_puffer_fish_expand_bang.fish: -------------------------------------------------------------------------------- 1 | function _puffer_fish_expand_bang 2 | switch (commandline -t) 3 | case '!' 4 | commandline -t $history[1] 5 | case '*' 6 | commandline -i '!' 7 | end 8 | end 9 | 10 | -------------------------------------------------------------------------------- /config/fish/functions/_puffer_fish_expand_dots.fish: -------------------------------------------------------------------------------- 1 | function _puffer_fish_expand_dots -d 'expand ... to ../.. etc' 2 | set -l cmd (commandline --cut-at-cursor) 3 | set -l split (string split -- ' ' $cmd) 4 | if string match --quiet --regex -- '^(\.\./)*\.\.$' $split[-1] 5 | commandline --insert '/..' 6 | else 7 | commandline --insert '.' 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /config/fish/functions/_puffer_fish_expand_lastarg.fish: -------------------------------------------------------------------------------- 1 | function _puffer_fish_expand_lastarg 2 | switch (commandline -t) 3 | case '!' 4 | commandline -t "" 5 | commandline -f history-token-search-backward 6 | case '*' 7 | commandline -i '$' 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /config/fish/functions/bass.fish: -------------------------------------------------------------------------------- 1 | function bass 2 | set -l bash_args $argv 3 | set -l bass_debug 4 | if test "$bash_args[1]_" = '-d_' 5 | set bass_debug true 6 | set -e bash_args[1] 7 | end 8 | 9 | set -l script_file (mktemp) 10 | if command -v python3 >/dev/null 2>&1 11 | command python3 -sS (dirname (status -f))/__bass.py $bash_args 3>$script_file 12 | else 13 | command python -sS (dirname (status -f))/__bass.py $bash_args 3>$script_file 14 | end 15 | set -l bass_status $status 16 | if test $bass_status -ne 0 17 | return $bass_status 18 | end 19 | 20 | if test -n "$bass_debug" 21 | cat $script_file 22 | end 23 | source $script_file 24 | command rm $script_file 25 | end 26 | 27 | function __bass_usage 28 | echo "Usage: bass [-d] " 29 | end 30 | -------------------------------------------------------------------------------- /config/fish/functions/br.fish: -------------------------------------------------------------------------------- 1 | /home/leniviy/.local/share/broot/launcher/fish/br.fish -------------------------------------------------------------------------------- /config/fish/functions/fish_user_key_bindings.fish: -------------------------------------------------------------------------------- 1 | function fish_user_key_bindings 2 | fish_vi_key_bindings 3 | end 4 | -------------------------------------------------------------------------------- /config/fish/functions/fkill.fish: -------------------------------------------------------------------------------- 1 | function fkill 2 | ps ax -o pid,time,command | fzf --query "$LBUFFER" | awk '{print $1}' | xargs kill 3 | end 4 | -------------------------------------------------------------------------------- /config/fish/functions/fuck.fish: -------------------------------------------------------------------------------- 1 | function fuck -d "Correct your previous console command" 2 | __tf_alias 3 | fish -c __tf_updt 2>&1 > /dev/null & 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/l.fish: -------------------------------------------------------------------------------- 1 | function l --wraps='_ls --git-ignore' --wraps='eza $EZA_STANDARD_OPTIONS $EZA_L_OPTIONS' --description 'alias l eza $EZA_STANDARD_OPTIONS $EZA_L_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_L_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/la.fish: -------------------------------------------------------------------------------- 1 | function la --wraps='eza -lbhHigUmuSa' --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LA_OPTIONS $EZA_L_OPTIONS' --description 'alias la eza $EZA_STANDARD_OPTIONS $EZA_LA_OPTIONS $EZA_L_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LA_OPTIONS $EZA_L_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/laa.fish: -------------------------------------------------------------------------------- 1 | function laa --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAA_OPTIONS $EZA_L_OPTIONS' --description 'alias laa eza $EZA_STANDARD_OPTIONS $EZA_LAA_OPTIONS $EZA_L_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAA_OPTIONS $EZA_L_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/laad.fish: -------------------------------------------------------------------------------- 1 | function laad --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAAD_OPTIONS $EZA_L_OPTIONS' --description 'alias laad eza $EZA_STANDARD_OPTIONS $EZA_LAAD_OPTIONS $EZA_L_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAAD_OPTIONS $EZA_L_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/laai.fish: -------------------------------------------------------------------------------- 1 | function laai --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAAI_OPTIONS $EZA_L_OPTIONS' --description 'alias laai eza $EZA_STANDARD_OPTIONS $EZA_LAAI_OPTIONS $EZA_L_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAAI_OPTIONS $EZA_L_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/laaid.fish: -------------------------------------------------------------------------------- 1 | function laaid --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAAID_OPTIONS $EZA_L_OPTIONS' --description 'alias laaid eza $EZA_STANDARD_OPTIONS $EZA_LAAID_OPTIONS $EZA_L_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAAID_OPTIONS $EZA_L_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lad.fish: -------------------------------------------------------------------------------- 1 | function lad --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAD_OPTIONS $EZA_L_OPTIONS' --description 'alias lad eza $EZA_STANDARD_OPTIONS $EZA_LAD_OPTIONS $EZA_L_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAD_OPTIONS $EZA_L_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lai.fish: -------------------------------------------------------------------------------- 1 | function lai --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAI_OPTIONS $EZA_L_OPTIONS' --description 'alias lai eza $EZA_STANDARD_OPTIONS $EZA_LAI_OPTIONS $EZA_L_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAI_OPTIONS $EZA_L_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/laid.fish: -------------------------------------------------------------------------------- 1 | function laid --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAID_OPTIONS $EZA_L_OPTIONS' --description 'alias laid eza $EZA_STANDARD_OPTIONS $EZA_LAID_OPTIONS $EZA_L_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAID_OPTIONS $EZA_L_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lc.fish: -------------------------------------------------------------------------------- 1 | function lc --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LC_OPTIONS' --description 'alias lc eza $EZA_STANDARD_OPTIONS $EZA_LC_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LC_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lca.fish: -------------------------------------------------------------------------------- 1 | function lca --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LA_OPTIONS $EZA_LC_OPTIONS' --description 'alias lca eza $EZA_STANDARD_OPTIONS $EZA_LA_OPTIONS $EZA_LC_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LA_OPTIONS $EZA_LC_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lcaa.fish: -------------------------------------------------------------------------------- 1 | function lcaa --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAA_OPTIONS $EZA_LC_OPTIONS' --description 'alias lcaa eza $EZA_STANDARD_OPTIONS $EZA_LAA_OPTIONS $EZA_LC_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAA_OPTIONS $EZA_LC_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lcaad.fish: -------------------------------------------------------------------------------- 1 | function lcaad --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAAD_OPTIONS $EZA_LC_OPTIONS' --description 'alias lcaad eza $EZA_STANDARD_OPTIONS $EZA_LAAD_OPTIONS $EZA_LC_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAAD_OPTIONS $EZA_LC_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lcaai.fish: -------------------------------------------------------------------------------- 1 | function lcaai --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAAI_OPTIONS $EZA_LC_OPTIONS' --description 'alias lcaai eza $EZA_STANDARD_OPTIONS $EZA_LAAI_OPTIONS $EZA_LC_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAAI_OPTIONS $EZA_LC_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lcaaid.fish: -------------------------------------------------------------------------------- 1 | function lcaaid --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAAID_OPTIONS $EZA_LC_OPTIONS' --description 'alias lcaaid eza $EZA_STANDARD_OPTIONS $EZA_LAAID_OPTIONS $EZA_LC_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAAID_OPTIONS $EZA_LC_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lcad.fish: -------------------------------------------------------------------------------- 1 | function lcad --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAD_OPTIONS $EZA_LC_OPTIONS' --description 'alias lcad eza $EZA_STANDARD_OPTIONS $EZA_LAD_OPTIONS $EZA_LC_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAD_OPTIONS $EZA_LC_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lcai.fish: -------------------------------------------------------------------------------- 1 | function lcai --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAI_OPTIONS $EZA_LC_OPTIONS' --description 'alias lcai eza $EZA_STANDARD_OPTIONS $EZA_LAI_OPTIONS $EZA_LC_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAI_OPTIONS $EZA_LC_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lcaid.fish: -------------------------------------------------------------------------------- 1 | function lcaid --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAID_OPTIONS $EZA_LC_OPTIONS' --description 'alias lcaid eza $EZA_STANDARD_OPTIONS $EZA_LAID_OPTIONS $EZA_LC_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAID_OPTIONS $EZA_LC_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lcd.fish: -------------------------------------------------------------------------------- 1 | function lcd --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LD_OPTIONS $EZA_LC_OPTIONS' --description 'alias lcd eza $EZA_STANDARD_OPTIONS $EZA_LD_OPTIONS $EZA_LC_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LD_OPTIONS $EZA_LC_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lci.fish: -------------------------------------------------------------------------------- 1 | function lci --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LI_OPTIONS $EZA_LC_OPTIONS' --description 'alias lci eza $EZA_STANDARD_OPTIONS $EZA_LI_OPTIONS $EZA_LC_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LI_OPTIONS $EZA_LC_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lcid.fish: -------------------------------------------------------------------------------- 1 | function lcid --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LID_OPTIONS $EZA_LC_OPTIONS' --description 'alias lcid eza $EZA_STANDARD_OPTIONS $EZA_LID_OPTIONS $EZA_LC_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LID_OPTIONS $EZA_LC_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/ld.fish: -------------------------------------------------------------------------------- 1 | function ld --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LD_OPTIONS $EZA_L_OPTIONS' --description 'alias ld eza $EZA_STANDARD_OPTIONS $EZA_LD_OPTIONS $EZA_L_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LD_OPTIONS $EZA_L_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/le.fish: -------------------------------------------------------------------------------- 1 | function le --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LE_OPTIONS' --description 'alias le eza $EZA_STANDARD_OPTIONS $EZA_LE_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LE_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lea.fish: -------------------------------------------------------------------------------- 1 | function lea --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LA_OPTIONS $EZA_LE_OPTIONS' --description 'alias lea eza $EZA_STANDARD_OPTIONS $EZA_LA_OPTIONS $EZA_LE_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LA_OPTIONS $EZA_LE_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/leaa.fish: -------------------------------------------------------------------------------- 1 | function leaa --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAA_OPTIONS $EZA_LE_OPTIONS' --description 'alias leaa eza $EZA_STANDARD_OPTIONS $EZA_LAA_OPTIONS $EZA_LE_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAA_OPTIONS $EZA_LE_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/leaad.fish: -------------------------------------------------------------------------------- 1 | function leaad --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAAD_OPTIONS $EZA_LE_OPTIONS' --description 'alias leaad eza $EZA_STANDARD_OPTIONS $EZA_LAAD_OPTIONS $EZA_LE_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAAD_OPTIONS $EZA_LE_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/leaai.fish: -------------------------------------------------------------------------------- 1 | function leaai --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAAI_OPTIONS $EZA_LE_OPTIONS' --description 'alias leaai eza $EZA_STANDARD_OPTIONS $EZA_LAAI_OPTIONS $EZA_LE_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAAI_OPTIONS $EZA_LE_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/leaaid.fish: -------------------------------------------------------------------------------- 1 | function leaaid --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAAID_OPTIONS $EZA_LE_OPTIONS' --description 'alias leaaid eza $EZA_STANDARD_OPTIONS $EZA_LAAID_OPTIONS $EZA_LE_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAAID_OPTIONS $EZA_LE_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lead.fish: -------------------------------------------------------------------------------- 1 | function lead --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAD_OPTIONS $EZA_LE_OPTIONS' --description 'alias lead eza $EZA_STANDARD_OPTIONS $EZA_LAD_OPTIONS $EZA_LE_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAD_OPTIONS $EZA_LE_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/leai.fish: -------------------------------------------------------------------------------- 1 | function leai --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAI_OPTIONS $EZA_LE_OPTIONS' --description 'alias leai eza $EZA_STANDARD_OPTIONS $EZA_LAI_OPTIONS $EZA_LE_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAI_OPTIONS $EZA_LE_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/leaid.fish: -------------------------------------------------------------------------------- 1 | function leaid --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAID_OPTIONS $EZA_LE_OPTIONS' --description 'alias leaid eza $EZA_STANDARD_OPTIONS $EZA_LAID_OPTIONS $EZA_LE_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAID_OPTIONS $EZA_LE_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/led.fish: -------------------------------------------------------------------------------- 1 | function led --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LD_OPTIONS $EZA_LE_OPTIONS' --description 'alias led eza $EZA_STANDARD_OPTIONS $EZA_LD_OPTIONS $EZA_LE_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LD_OPTIONS $EZA_LE_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lei.fish: -------------------------------------------------------------------------------- 1 | function lei --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LI_OPTIONS $EZA_LE_OPTIONS' --description 'alias lei eza $EZA_STANDARD_OPTIONS $EZA_LI_OPTIONS $EZA_LE_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LI_OPTIONS $EZA_LE_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/leid.fish: -------------------------------------------------------------------------------- 1 | function leid --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LID_OPTIONS $EZA_LE_OPTIONS' --description 'alias leid eza $EZA_STANDARD_OPTIONS $EZA_LID_OPTIONS $EZA_LE_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LID_OPTIONS $EZA_LE_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lg.fish: -------------------------------------------------------------------------------- 1 | function lg --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LG_OPTIONS' --description 'alias lg eza $EZA_STANDARD_OPTIONS $EZA_LG_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LG_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lga.fish: -------------------------------------------------------------------------------- 1 | function lga --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LA_OPTIONS $EZA_LG_OPTIONS' --description 'alias lga eza $EZA_STANDARD_OPTIONS $EZA_LA_OPTIONS $EZA_LG_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LA_OPTIONS $EZA_LG_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lgaa.fish: -------------------------------------------------------------------------------- 1 | function lgaa --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAA_OPTIONS $EZA_LG_OPTIONS' --description 'alias lgaa eza $EZA_STANDARD_OPTIONS $EZA_LAA_OPTIONS $EZA_LG_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAA_OPTIONS $EZA_LG_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lgaad.fish: -------------------------------------------------------------------------------- 1 | function lgaad --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAAD_OPTIONS $EZA_LG_OPTIONS' --description 'alias lgaad eza $EZA_STANDARD_OPTIONS $EZA_LAAD_OPTIONS $EZA_LG_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAAD_OPTIONS $EZA_LG_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lgaai.fish: -------------------------------------------------------------------------------- 1 | function lgaai --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAAI_OPTIONS $EZA_LG_OPTIONS' --description 'alias lgaai eza $EZA_STANDARD_OPTIONS $EZA_LAAI_OPTIONS $EZA_LG_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAAI_OPTIONS $EZA_LG_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lgaaid.fish: -------------------------------------------------------------------------------- 1 | function lgaaid --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAAID_OPTIONS $EZA_LG_OPTIONS' --description 'alias lgaaid eza $EZA_STANDARD_OPTIONS $EZA_LAAID_OPTIONS $EZA_LG_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAAID_OPTIONS $EZA_LG_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lgad.fish: -------------------------------------------------------------------------------- 1 | function lgad --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAD_OPTIONS $EZA_LG_OPTIONS' --description 'alias lgad eza $EZA_STANDARD_OPTIONS $EZA_LAD_OPTIONS $EZA_LG_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAD_OPTIONS $EZA_LG_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lgai.fish: -------------------------------------------------------------------------------- 1 | function lgai --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAI_OPTIONS $EZA_LG_OPTIONS' --description 'alias lgai eza $EZA_STANDARD_OPTIONS $EZA_LAI_OPTIONS $EZA_LG_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAI_OPTIONS $EZA_LG_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lgaid.fish: -------------------------------------------------------------------------------- 1 | function lgaid --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAID_OPTIONS $EZA_LG_OPTIONS' --description 'alias lgaid eza $EZA_STANDARD_OPTIONS $EZA_LAID_OPTIONS $EZA_LG_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAID_OPTIONS $EZA_LG_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lgd.fish: -------------------------------------------------------------------------------- 1 | function lgd --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LD_OPTIONS $EZA_LG_OPTIONS' --description 'alias lgd eza $EZA_STANDARD_OPTIONS $EZA_LD_OPTIONS $EZA_LG_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LD_OPTIONS $EZA_LG_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lgi.fish: -------------------------------------------------------------------------------- 1 | function lgi --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LI_OPTIONS $EZA_LG_OPTIONS' --description 'alias lgi eza $EZA_STANDARD_OPTIONS $EZA_LI_OPTIONS $EZA_LG_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LI_OPTIONS $EZA_LG_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lgid.fish: -------------------------------------------------------------------------------- 1 | function lgid --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LID_OPTIONS $EZA_LG_OPTIONS' --description 'alias lgid eza $EZA_STANDARD_OPTIONS $EZA_LID_OPTIONS $EZA_LG_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LID_OPTIONS $EZA_LG_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/li.fish: -------------------------------------------------------------------------------- 1 | function li --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LI_OPTIONS $EZA_L_OPTIONS' --description 'alias li eza $EZA_STANDARD_OPTIONS $EZA_LI_OPTIONS $EZA_L_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LI_OPTIONS $EZA_L_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lid.fish: -------------------------------------------------------------------------------- 1 | function lid --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LID_OPTIONS $EZA_L_OPTIONS' --description 'alias lid eza $EZA_STANDARD_OPTIONS $EZA_LID_OPTIONS $EZA_L_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LID_OPTIONS $EZA_L_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/ll.fish: -------------------------------------------------------------------------------- 1 | function ll --wraps='_ls --all --header --long' --wraps=eza_git --description 'alias ll eza_git' 2 | eza_git $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lla.fish: -------------------------------------------------------------------------------- 1 | function lla --wraps='eza_git $EZA_LA_OPTIONS' --description 'alias lla eza_git $EZA_LA_OPTIONS' 2 | eza_git $EZA_LA_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/llaa.fish: -------------------------------------------------------------------------------- 1 | function llaa --wraps='eza_git $EZA_LAA_OPTIONS' --description 'alias llaa eza_git $EZA_LAA_OPTIONS' 2 | eza_git $EZA_LAA_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/llaad.fish: -------------------------------------------------------------------------------- 1 | function llaad --wraps='eza_git $EZA_LAAD_OPTIONS' --description 'alias llaad eza_git $EZA_LAAD_OPTIONS' 2 | eza_git $EZA_LAAD_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/llaai.fish: -------------------------------------------------------------------------------- 1 | function llaai --wraps='eza_git $EZA_LAAI_OPTIONS' --description 'alias llaai eza_git $EZA_LAAI_OPTIONS' 2 | eza_git $EZA_LAAI_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/llaaid.fish: -------------------------------------------------------------------------------- 1 | function llaaid --wraps='eza_git $EZA_LAAID_OPTIONS' --description 'alias llaaid eza_git $EZA_LAAID_OPTIONS' 2 | eza_git $EZA_LAAID_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/llad.fish: -------------------------------------------------------------------------------- 1 | function llad --wraps='eza_git $EZA_LAD_OPTIONS' --description 'alias llad eza_git $EZA_LAD_OPTIONS' 2 | eza_git $EZA_LAD_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/llai.fish: -------------------------------------------------------------------------------- 1 | function llai --wraps='eza_git $EZA_LAI_OPTIONS' --description 'alias llai eza_git $EZA_LAI_OPTIONS' 2 | eza_git $EZA_LAI_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/llaid.fish: -------------------------------------------------------------------------------- 1 | function llaid --wraps='eza_git $EZA_LAID_OPTIONS' --description 'alias llaid eza_git $EZA_LAID_OPTIONS' 2 | eza_git $EZA_LAID_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lld.fish: -------------------------------------------------------------------------------- 1 | function lld --wraps='eza_git $EZA_LD_OPTIONS' --description 'alias lld eza_git $EZA_LD_OPTIONS' 2 | eza_git $EZA_LD_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lli.fish: -------------------------------------------------------------------------------- 1 | function lli --wraps='eza_git $EZA_LI_OPTIONS' --description 'alias lli eza_git $EZA_LI_OPTIONS' 2 | eza_git $EZA_LI_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/llid.fish: -------------------------------------------------------------------------------- 1 | function llid --wraps='eza_git $EZA_LID_OPTIONS' --description 'alias llid eza_git $EZA_LID_OPTIONS' 2 | eza_git $EZA_LID_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lo.fish: -------------------------------------------------------------------------------- 1 | function lo --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LO_OPTIONS' --description 'alias lo eza $EZA_STANDARD_OPTIONS $EZA_LO_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LO_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/loa.fish: -------------------------------------------------------------------------------- 1 | function loa --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LA_OPTIONS $EZA_LO_OPTIONS' --description 'alias loa eza $EZA_STANDARD_OPTIONS $EZA_LA_OPTIONS $EZA_LO_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LA_OPTIONS $EZA_LO_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/loaa.fish: -------------------------------------------------------------------------------- 1 | function loaa --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAA_OPTIONS $EZA_LO_OPTIONS' --description 'alias loaa eza $EZA_STANDARD_OPTIONS $EZA_LAA_OPTIONS $EZA_LO_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAA_OPTIONS $EZA_LO_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/loaad.fish: -------------------------------------------------------------------------------- 1 | function loaad --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAAD_OPTIONS $EZA_LO_OPTIONS' --description 'alias loaad eza $EZA_STANDARD_OPTIONS $EZA_LAAD_OPTIONS $EZA_LO_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAAD_OPTIONS $EZA_LO_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/loaai.fish: -------------------------------------------------------------------------------- 1 | function loaai --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAAI_OPTIONS $EZA_LO_OPTIONS' --description 'alias loaai eza $EZA_STANDARD_OPTIONS $EZA_LAAI_OPTIONS $EZA_LO_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAAI_OPTIONS $EZA_LO_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/loaaid.fish: -------------------------------------------------------------------------------- 1 | function loaaid --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAAID_OPTIONS $EZA_LO_OPTIONS' --description 'alias loaaid eza $EZA_STANDARD_OPTIONS $EZA_LAAID_OPTIONS $EZA_LO_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAAID_OPTIONS $EZA_LO_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/load.fish: -------------------------------------------------------------------------------- 1 | function load --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAD_OPTIONS $EZA_LO_OPTIONS' --description 'alias load eza $EZA_STANDARD_OPTIONS $EZA_LAD_OPTIONS $EZA_LO_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAD_OPTIONS $EZA_LO_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/loai.fish: -------------------------------------------------------------------------------- 1 | function loai --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAI_OPTIONS $EZA_LO_OPTIONS' --description 'alias loai eza $EZA_STANDARD_OPTIONS $EZA_LAI_OPTIONS $EZA_LO_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAI_OPTIONS $EZA_LO_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/loaid.fish: -------------------------------------------------------------------------------- 1 | function loaid --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAID_OPTIONS $EZA_LO_OPTIONS' --description 'alias loaid eza $EZA_STANDARD_OPTIONS $EZA_LAID_OPTIONS $EZA_LO_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAID_OPTIONS $EZA_LO_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lod.fish: -------------------------------------------------------------------------------- 1 | function lod --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LD_OPTIONS $EZA_LO_OPTIONS' --description 'alias lod eza $EZA_STANDARD_OPTIONS $EZA_LD_OPTIONS $EZA_LO_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LD_OPTIONS $EZA_LO_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/loi.fish: -------------------------------------------------------------------------------- 1 | function loi --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LI_OPTIONS $EZA_LO_OPTIONS' --description 'alias loi eza $EZA_STANDARD_OPTIONS $EZA_LI_OPTIONS $EZA_LO_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LI_OPTIONS $EZA_LO_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/loid.fish: -------------------------------------------------------------------------------- 1 | function loid --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LID_OPTIONS $EZA_LO_OPTIONS' --description 'alias loid eza $EZA_STANDARD_OPTIONS $EZA_LID_OPTIONS $EZA_LO_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LID_OPTIONS $EZA_LO_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lt.fish: -------------------------------------------------------------------------------- 1 | function lt --wraps='_ls --tree' --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LT_OPTIONS' --description 'alias lt eza $EZA_STANDARD_OPTIONS $EZA_LT_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LT_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lta.fish: -------------------------------------------------------------------------------- 1 | function lta --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LA_OPTIONS $EZA_LT_OPTIONS' --description 'alias lta eza $EZA_STANDARD_OPTIONS $EZA_LA_OPTIONS $EZA_LT_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LA_OPTIONS $EZA_LT_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/ltaad.fish: -------------------------------------------------------------------------------- 1 | function ltaad --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAAD_OPTIONS $EZA_LT_OPTIONS' --description 'alias ltaad eza $EZA_STANDARD_OPTIONS $EZA_LAAD_OPTIONS $EZA_LT_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAAD_OPTIONS $EZA_LT_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/ltaai.fish: -------------------------------------------------------------------------------- 1 | function ltaai --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAAI_OPTIONS $EZA_LT_OPTIONS' --description 'alias ltaai eza $EZA_STANDARD_OPTIONS $EZA_LAAI_OPTIONS $EZA_LT_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAAI_OPTIONS $EZA_LT_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/ltaaid.fish: -------------------------------------------------------------------------------- 1 | function ltaaid --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAAID_OPTIONS $EZA_LT_OPTIONS' --description 'alias ltaaid eza $EZA_STANDARD_OPTIONS $EZA_LAAID_OPTIONS $EZA_LT_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAAID_OPTIONS $EZA_LT_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/ltad.fish: -------------------------------------------------------------------------------- 1 | function ltad --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAD_OPTIONS $EZA_LT_OPTIONS' --description 'alias ltad eza $EZA_STANDARD_OPTIONS $EZA_LAD_OPTIONS $EZA_LT_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAD_OPTIONS $EZA_LT_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/ltai.fish: -------------------------------------------------------------------------------- 1 | function ltai --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAI_OPTIONS $EZA_LT_OPTIONS' --description 'alias ltai eza $EZA_STANDARD_OPTIONS $EZA_LAI_OPTIONS $EZA_LT_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAI_OPTIONS $EZA_LT_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/ltaid.fish: -------------------------------------------------------------------------------- 1 | function ltaid --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LAID_OPTIONS $EZA_LT_OPTIONS' --description 'alias ltaid eza $EZA_STANDARD_OPTIONS $EZA_LAID_OPTIONS $EZA_LT_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LAID_OPTIONS $EZA_LT_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/ltd.fish: -------------------------------------------------------------------------------- 1 | function ltd --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LD_OPTIONS $EZA_LT_OPTIONS' --description 'alias ltd eza $EZA_STANDARD_OPTIONS $EZA_LD_OPTIONS $EZA_LT_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LD_OPTIONS $EZA_LT_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/lti.fish: -------------------------------------------------------------------------------- 1 | function lti --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LI_OPTIONS $EZA_LT_OPTIONS' --description 'alias lti eza $EZA_STANDARD_OPTIONS $EZA_LI_OPTIONS $EZA_LT_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LI_OPTIONS $EZA_LT_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/ltid.fish: -------------------------------------------------------------------------------- 1 | function ltid --wraps='eza $EZA_STANDARD_OPTIONS $EZA_LID_OPTIONS $EZA_LT_OPTIONS' --description 'alias ltid eza $EZA_STANDARD_OPTIONS $EZA_LID_OPTIONS $EZA_LT_OPTIONS' 2 | eza $EZA_STANDARD_OPTIONS $EZA_LID_OPTIONS $EZA_LT_OPTIONS $argv 3 | 4 | end 5 | -------------------------------------------------------------------------------- /config/fish/functions/mkcd.fish: -------------------------------------------------------------------------------- 1 | function mkcd 2 | if test (count $argv) -eq 0 3 | echo "Pass dir name" 4 | return 1 5 | end 6 | 7 | set dirname $argv[1] 8 | mkdir -p $dirname 9 | eval cd $dirname 10 | end 11 | -------------------------------------------------------------------------------- /config/fish/functions/thefuck-command-line.fish: -------------------------------------------------------------------------------- 1 | function thefuck-command-line 2 | env THEFUCK_REQUIRE_CONFIRMATION=0 thefuck $history[1] 2> /dev/null | read fuck 3 | [ -z $fuck ]; and return 4 | commandline -r $fuck 5 | end 6 | -------------------------------------------------------------------------------- /config/fish/functions/web-search.fish: -------------------------------------------------------------------------------- 1 | function web-search -d "Search on the web" 2 | _web_search_load_custom_engines 3 | 4 | set -l url (_web_search_get_url $argv) 5 | if test $status -eq 1 6 | echo "'$argv[1]' is not supported." 7 | return 1 8 | end 9 | 10 | set -l open_cmd (_web_search_get_open_cmd) 11 | eval "$open_cmd '$url' &> /dev/null & disown" 12 | end 13 | -------------------------------------------------------------------------------- /config/kitty/current-theme.conf: -------------------------------------------------------------------------------- 1 | # vim:ft=kitty 2 | 3 | # Color scheme 4 | # background #000000 5 | background #0b0806 6 | foreground #a19782 7 | 8 | # Normal colors 9 | color0 #0b0806 10 | color1 #844d2c 11 | color2 #57553a 12 | color3 #a17c38 13 | color4 #41434f 14 | color5 #6b4444 15 | color6 #59664c 16 | color7 #a19782 17 | 18 | # Bright colors 19 | color8 #2f2b2a 20 | color9 #a64848 21 | color10 #897f5a 22 | color11 #c8b38d 23 | color12 #526274 24 | color13 #755c47 25 | color14 #718062 26 | color15 #c1ab83 27 | 28 | # Cursor colors 29 | cursor #844d2c 30 | cursor_text_color #1d2021 31 | 32 | # Additional indexed colors (if needed) 33 | color16 #de935f 34 | color17 #a3685a 35 | color18 #282a2e 36 | color19 #373b41 37 | color20 #b4b7b4 38 | color21 #e0e0e0 39 | 40 | -------------------------------------------------------------------------------- /config/kitty/themes/dark-theme.auto.conf: -------------------------------------------------------------------------------- 1 | # vim:ft=kitty 2 | 3 | # Color scheme 4 | # background #000000 5 | background #0b0806 6 | foreground #a19782 7 | 8 | # Normal colors 9 | color0 #0b0806 10 | color1 #844d2c 11 | color2 #57553a 12 | color3 #a17c38 13 | color4 #41434f 14 | color5 #6b4444 15 | color6 #59664c 16 | color7 #a19782 17 | 18 | # Bright colors 19 | color8 #2f2b2a 20 | color9 #a64848 21 | color10 #897f5a 22 | color11 #c8b38d 23 | color12 #526274 24 | color13 #755c47 25 | color14 #718062 26 | color15 #c1ab83 27 | 28 | # Cursor colors 29 | cursor #844d2c 30 | cursor_text_color #1d2021 31 | 32 | # Additional indexed colors (if needed) 33 | color16 #de935f 34 | color17 #a3685a 35 | color18 #282a2e 36 | color19 #373b41 37 | color20 #b4b7b4 38 | color21 #e0e0e0 39 | 40 | -------------------------------------------------------------------------------- /config/kitty/themes/no-preference-theme.auto.conf: -------------------------------------------------------------------------------- 1 | # Color scheme 2 | # background #000000 3 | background #0b0806 4 | foreground #a19782 5 | 6 | # Normal colors 7 | color0 #0b0806 8 | color1 #844d2c 9 | color2 #57553a 10 | color3 #a17c38 11 | color4 #41434f 12 | color5 #6b4444 13 | color6 #59664c 14 | color7 #a19782 15 | 16 | # Bright colors 17 | color8 #2f2b2a 18 | color9 #a64848 19 | color10 #897f5a 20 | color11 #c8b38d 21 | color12 #526274 22 | color13 #755c47 23 | color14 #718062 24 | color15 #c1ab83 25 | 26 | # Cursor colors 27 | cursor #844d2c 28 | cursor_text_color #1d2021 29 | 30 | # Additional indexed colors (if needed) 31 | color16 #de935f 32 | color17 #a3685a 33 | color18 #282a2e 34 | color19 #373b41 35 | color20 #b4b7b4 36 | color21 #e0e0e0 37 | 38 | -------------------------------------------------------------------------------- /config/libinput-gestures/libinput-gestures.conf: -------------------------------------------------------------------------------- 1 | gesture swipe right 3 cycle_ws prev 2 | gesture swipe left 3 cycle_ws next 3 | 4 | gesture swipe up 4 "toggleFullscreen" 5 | gesture swipe up 3 skippy-xd --paging 6 | gesture swipe down 3 skippy-xd --expose 7 | # gesture hold on 4 "zzz" 8 | 9 | # gesture pinch in xdotool key ctrl+minus 10 | # gesture pinch out xdotool key ctrl+plus 11 | 12 | gesture pinch clockwise xdotool key alt+Tab 13 | -------------------------------------------------------------------------------- /config/mpv/input.conf: -------------------------------------------------------------------------------- 1 | # a cycle-values video-aspect "16:9" "4:3" "2:1" "2.21:1" "1.6:1" 2 | H apply-profile "high-quality" 3 | h apply-profile "default-one" 4 | 5 | r cycle_values video-rotate 90 180 270 0 6 | -------------------------------------------------------------------------------- /config/mpv/mpv.conf: -------------------------------------------------------------------------------- 1 | screenshot-directory="~/Pictures/movies" 2 | profile=default-one 3 | # osc=no # Extensions 4 | 5 | [default-one] 6 | profile-desc="default profile" 7 | 8 | [high-quality] 9 | profile-desc="high-quality profile" 10 | vo=gpu 11 | profile=gpu-hq 12 | scale=ewa_lanczossharp 13 | cscale=ewa_lanczossharp 14 | video-sync=display-resample 15 | interpolation 16 | tscale=oversample 17 | log-file=~~/log #Sets a location for writing a log file, ~~/ translates to ~/.config/mpv 18 | 19 | -------------------------------------------------------------------------------- /config/nvim/.gitignore: -------------------------------------------------------------------------------- 1 | tt.* 2 | .tests 3 | doc/tags 4 | debug 5 | .repro 6 | foo.* 7 | *.log 8 | data 9 | -------------------------------------------------------------------------------- /config/nvim/.luarc.json: -------------------------------------------------------------------------------- 1 | { 2 | "diagnostics.globals": ["M"] 3 | } 4 | -------------------------------------------------------------------------------- /config/nvim/.neoconf.json: -------------------------------------------------------------------------------- 1 | { 2 | "neodev": { 3 | "library": { 4 | "enabled": true 5 | } 6 | }, 7 | "lspconfig": { 8 | "lua_ls": { 9 | "Lua.hint.enable": true 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /config/nvim/README.md: -------------------------------------------------------------------------------- 1 | # 💤 LazyVim 2 | 3 | A starter template for [LazyVim](https://github.com/LazyVim/LazyVim). 4 | Refer to the [documentation](https://lazyvim.github.io/installation) to get started. 5 | -------------------------------------------------------------------------------- /config/nvim/init.lua: -------------------------------------------------------------------------------- 1 | if vim.loader then 2 | vim.loader.enable() 3 | end 4 | 5 | -- bootstrap lazy.nvim, LazyVim and your plugins 6 | require("config.lazy") 7 | -------------------------------------------------------------------------------- /config/nvim/lua/config/keymaps.lua: -------------------------------------------------------------------------------- 1 | -- Keymaps are automatically loaded on the VeryLazy event 2 | -- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua 3 | -- Add any additional keymaps here 4 | 5 | local set = vim.keymap.set 6 | 7 | set({ "i", "v", "n", "s" }, "fs", "w", { desc = "Save file" }) 8 | set("n", ";", "e#", { desc = "Last Buffer" }) 9 | set("n", "bn", "enew", { desc = "New buffer" }) 10 | set("n", "", "ggVG", { desc = "Select all" }) 11 | -------------------------------------------------------------------------------- /config/nvim/lua/config/kitty.lua: -------------------------------------------------------------------------------- 1 | -- vim.api.nvim_create_autocmd("VimEnter", { 2 | -- callback = function() 3 | -- vim.cmd(":silent !kitty @ set-spacing padding=0 margin=0") 4 | -- end, 5 | -- }) 6 | -- 7 | -- vim.api.nvim_create_autocmd("VimLeavePre", { 8 | -- callback = function() 9 | -- vim.cmd(":silent !kitty @ set-spacing padding=20 margin=10") 10 | -- end, 11 | -- }) 12 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/aerial.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "stevearc/aerial.nvim", 3 | event = "LazyFile", 4 | opts = function(_, opts) 5 | table.insert(opts.layout, { 6 | resize_to_content = true, 7 | -- max_width = {40, 0.2} means "the lesser of 40 columns or 20% of total" 8 | max_width = 0.55, 9 | min_width = 0.15, 10 | }) 11 | end, 12 | } 13 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/arrow.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "otavioschwanck/arrow.nvim", 3 | version = false, 4 | event = "VeryLazy", 5 | opts = { 6 | show_icons = true, 7 | always_show_path = true, 8 | leader_key = ";", -- Recommended to be a single key 9 | }, 10 | } 11 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/cloak.lua: -------------------------------------------------------------------------------- 1 | return { 2 | -- Hide Secrets 3 | { 4 | "laytan/cloak.nvim", 5 | event = "VeryLazy", 6 | version = false, 7 | opts = function(_, opts) 8 | opts.cloak_length = 5 9 | opts.cloak_on_leave = true 10 | 11 | require("which-key").add({ 12 | { "*", group = "Cloak", icon = LazyVim.config.icons.misc.dots }, 13 | { "*l", "CloakPreviewLine", desc = "Uncloak Line" }, 14 | }) 15 | 16 | Snacks.toggle({ 17 | name = "Cloak", 18 | get = function() 19 | return vim.b.cloak_enabled ~= false 20 | end, 21 | set = function() 22 | require("cloak").toggle() 23 | end, 24 | }):map("**") 25 | end, 26 | }, 27 | } 28 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/codesnap.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "mistricky/codesnap.nvim", 3 | build = "make", 4 | event = "VeryLazy", 5 | -- keys = { 6 | -- { "cc", "CodeSnap", mode = "x", desc = "Save selected code snapshot into clipboard" }, 7 | -- { "cs", "CodeSnapSave", mode = "x", desc = "Save selected code snapshot in ~/Pictures" }, 8 | -- }, 9 | opts = { 10 | save_path = "~/Pictures/Screenshots/", 11 | has_breadcrumbs = false, 12 | bg_color = "#535c68", 13 | -- bg_padding = 0, 14 | bg_x_padding = 100, 15 | bg_y_padding = 40, 16 | watermark = "", 17 | mac_window_bar = false, 18 | -- code_font_family = "monospace", 19 | code_font_family = "PragmataPro Mono Liga Regular", 20 | }, 21 | } 22 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/coding.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "zbirenbaum/copilot.lua", 4 | optional = true, 5 | opts = { 6 | filetypes = { ["*"] = true }, 7 | }, 8 | }, 9 | { 10 | "bennypowers/nvim-regexplainer", 11 | event = "BufRead", 12 | dependencies = { "nvim-treesitter/nvim-treesitter", "MunifTanjim/nui.nvim" }, 13 | config = true, 14 | opts = { 15 | mappings = { 16 | toggle = "ge", 17 | }, 18 | }, 19 | }, 20 | } 21 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/coerce.lua: -------------------------------------------------------------------------------- 1 | -- changes cases easily 2 | return { 3 | "gregorias/coerce.nvim", 4 | -- vscode = true, 5 | event = "VeryLazy", 6 | opts = { 7 | default_mode_keymap_prefixes = { 8 | normal_mode = "gu", 9 | motion_mode = "guo", 10 | visual_mode = "gu", 11 | }, 12 | }, 13 | } 14 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/curl.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "oysandvik94/curl.nvim", 3 | evvent = "VeryLazy", 4 | cmd = "CurlOpen", 5 | config = true, 6 | } 7 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/cyryllic.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "nativerv/cyrillic.nvim", 3 | vscode = true, 4 | event = { "VeryLazy" }, 5 | config = function() 6 | require("cyrillic").setup({ 7 | no_cyrillic_abbrev = false, -- default 8 | }) 9 | end, 10 | } 11 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/dashboard.lua: -------------------------------------------------------------------------------- 1 | return { 2 | -- { 3 | -- "folke/snacks.nvim", 4 | -- opts = function(_, opts) 5 | -- local logo = "" 6 | -- opts.dashboard.preset.header = logo 7 | -- end, 8 | -- }, 9 | -- 10 | { "folke/snacks.nvim", opts = { dashboard = { enabled = false } } }, 11 | } 12 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/disablees.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { "mini.animate", enabled = false }, 3 | { "indent-blankline.nvim", enabled = false }, 4 | { 5 | "sphamba/smear-cursor.nvim", 6 | enabled = false, 7 | }, 8 | { 9 | "sphamba/smear-cursor.nvim", 10 | enabled = false, 11 | }, 12 | { 13 | "folke/tokyonight.nvim", 14 | enabled = false, 15 | }, 16 | { 17 | "akinsho/bufferline.nvim", 18 | enabled = false, 19 | }, 20 | } 21 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/faster.lua: -------------------------------------------------------------------------------- 1 | return { 2 | -- https://github.com/LazyVim/LazyVim/issues/4923#issuecomment-2510513295 3 | -- { 4 | -- version = false, 5 | -- "pteroctopus/faster.nvim", 6 | -- event = "LazyFile", 7 | -- config = true, 8 | -- }, 9 | } 10 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/git/co-author.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "2kabhishek/co-author.nvim", 3 | event = "VeryLazy", 4 | keys = { "ga", "GitCoAuthors", desc = "Add Co-Authors" }, 5 | } 6 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/git/gh-addressed.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "dlvhdr/gh-addressed.nvim", 3 | event = "VeryLazy", 4 | dependencies = { 5 | "nvim-lua/plenary.nvim", 6 | "MunifTanjim/nui.nvim", 7 | "folke/trouble.nvim", 8 | }, 9 | cmd = "GhReviewComments", 10 | keys = { 11 | { "gR", "GhReviewComments", desc = "GitHub Review Comments" }, 12 | }, 13 | } 14 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/git/gh-blame.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "dlvhdr/gh-blame.nvim", 3 | event = "VeryLazy", 4 | dependencies = { "nvim-lua/plenary.nvim", "MunifTanjim/nui.nvim" }, 5 | keys = { 6 | { "gW", "GhBlameCurrentLine", desc = "GitHub PR Blame Current Line" }, 7 | }, 8 | } 9 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/git/git-conflict.lua: -------------------------------------------------------------------------------- 1 | return { 2 | -- "akinsho/git-conflict.nvim", 3 | -- lazy = true, 4 | -- version = false, 5 | -- opts = { 6 | -- default_mappings = { 7 | -- ours = "ho", 8 | -- theirs = "ht", 9 | -- none = "h0", 10 | -- both = "hb", 11 | -- next = "]x", 12 | -- prev = "[x", 13 | -- }, 14 | -- }, 15 | -- keys = { 16 | -- { 17 | -- "gx", 18 | -- "GitConflictListQf", 19 | -- desc = "List Conflicts", 20 | -- }, 21 | -- { 22 | -- "gr", 23 | -- "GitConflictRefresh", 24 | -- desc = "Refresh Conflicts", 25 | -- }, 26 | -- }, 27 | } 28 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/git/gitignore.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "wintermute-cell/gitignore.nvim", 3 | event = "VeryLazy", 4 | config = function() 5 | require("gitignore") 6 | end, 7 | } 8 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/git/gitlinker.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "linrongbin16/gitlinker.nvim", 3 | event = "VeryLazy", 4 | dependencies = { 5 | "nvim-lua/plenary.nvim", 6 | }, 7 | cmd = "GitLink", 8 | keys = { 9 | { "gy", "GitLink default_branch", mode = { "n", "v" }, desc = "Yank git link" }, 10 | { "gY", "GitLink! default_branch", mode = { "n", "v" }, desc = "Open git link" }, 11 | }, 12 | opts = {}, 13 | } 14 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/git/gitsigns.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "lewis6991/gitsigns.nvim", 3 | keys = { 4 | { 5 | "hb", 6 | "Gitsigns blame_line", 7 | desc = "Blame Line", 8 | remap = true, 9 | }, 10 | { 11 | "hs", 12 | "Gitsigns stage_hunk", 13 | desc = "Stage Hunk", 14 | }, 15 | { 16 | "hS", 17 | "Gitsigns stage_buffer", 18 | desc = "Stage Buffer", 19 | }, 20 | { 21 | "hr", 22 | "Gitsigns reset_hunk", 23 | desc = "Reset Hunk", 24 | }, 25 | { 26 | "hR", 27 | "Gitsigns reset_buffer", 28 | desc = "Reset Buffer", 29 | }, 30 | { 31 | "hu", 32 | "Gitsigns undo_stage_hunk", 33 | desc = "Undo Stage Hunk", 34 | }, 35 | }, 36 | } 37 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/git/neogit.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "NeogitOrg/neogit", 3 | event = "VeryLazy", 4 | dependencies = { 5 | "nvim-lua/plenary.nvim", -- required 6 | "sindrets/diffview.nvim", -- optional - Diff integration 7 | -- Only one of these is needed. 8 | "nvim-telescope/telescope.nvim", -- optional 9 | -- "ibhagwan/fzf-lua", -- optional 10 | -- "echasnovski/mini.pick", -- optional 11 | }, 12 | cmd = "Neogit", 13 | keys = { 14 | { "gn", "Neogit", desc = "Neogit" }, 15 | { 16 | "gC", 17 | function() 18 | require("neogit").open({ "commit" }) 19 | end, 20 | desc = "Neogit Open", 21 | }, 22 | }, 23 | config = true, 24 | } 25 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/git/pipeline.lua: -------------------------------------------------------------------------------- 1 | -- ci/cd things in neovim 2 | return { 3 | "topaxi/pipeline.nvim", 4 | keys = { 5 | { "ci", "Pipeline", desc = "Open pipeline.nvim" }, 6 | }, 7 | -- optional, you can also install and use `yq` instead. 8 | build = "make", 9 | ---@type pipeline.Config 10 | opts = {}, 11 | } 12 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/git/pr.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "fredrikaverpil/pr.nvim", 4 | lazy = true, 5 | dependencies = { 6 | "nvim-lua/plenary.nvim", 7 | }, 8 | opts = {}, 9 | keys = { 10 | { 11 | "gvp", 12 | function() 13 | require("pr").view() 14 | end, 15 | desc = "View PR in browser", 16 | }, 17 | }, 18 | cmd = { "PRView" }, 19 | }, 20 | } 21 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/img-clip.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "HakonHarnes/img-clip.nvim", 3 | event = "VeryLazy", 4 | opts = { 5 | -- add options here 6 | -- or leave it empty to use the default settings 7 | use_absolute_path = false, 8 | relative_to_current_file = true, ---@type boolean | fun(): boolean 9 | }, 10 | keys = { 11 | -- suggested keymap 12 | { "aI", "PasteImage", desc = "Paste image from system clipboard" }, 13 | }, 14 | } 15 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/in-and-out.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "ysmb-wtsg/in-and-out.nvim", 3 | evnt = "VeryLazy", 4 | keys = { 5 | { 6 | "", 7 | function() 8 | require("in-and-out").in_and_out() 9 | end, 10 | mode = { "i" }, 11 | desc = "In and Out", 12 | }, 13 | }, 14 | } 15 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/init.lua: -------------------------------------------------------------------------------- 1 | -- https://github.com/folke/lazy.nvim/discussions/335 2 | 3 | return { 4 | { import = "plugins.git" }, 5 | { import = "plugins.ai" }, 6 | { import = "plugins.lang" }, 7 | { import = "plugins.lsp" }, 8 | { import = "plugins.treesitter" }, 9 | } 10 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/json.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "gennaro-tedesco/nvim-jqx", 4 | event = "VeryLazy", 5 | ft = { "json", "yaml" }, 6 | }, 7 | } 8 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/kitty.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "mikesmithgh/kitty-scrollback.nvim", 4 | enabled = true, 5 | lazy = true, 6 | cmd = { 7 | "KittyScrollbackGenerateKittens", 8 | "KittyScrollbackCheckHealth", 9 | "KittyScrollbackGenerateCommandLineEditing", 10 | }, 11 | event = { "User KittyScrollbackLaunch" }, 12 | version = "*", -- latest stable version, may have breaking changes if major version changed 13 | -- version = '^6.0.0', -- pin major version, include fixes and features that do not have breaking changes 14 | config = function() 15 | require("kitty-scrollback").setup() 16 | end, 17 | }, 18 | { 19 | "NeViRAIDE/nekifoch.nvim", 20 | build = "chmod +x ./install.sh && ./install.sh", 21 | cmd = "Nekifoch", 22 | config = true, 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/lang/bash.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "nvim-treesitter/nvim-treesitter", 4 | opts = function(_, opts) 5 | if type(opts.ensure_installed) == "table" then 6 | vim.list_extend(opts.ensure_installed, { "bash" }) 7 | end 8 | end, 9 | }, 10 | { 11 | "neovim/nvim-lspconfig", 12 | opts = { 13 | servers = { 14 | bashls = {}, 15 | }, 16 | }, 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/lang/graphql.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "nvim-treesitter/nvim-treesitter", 4 | opts = { ensure_installed = { "graphql" } }, 5 | }, 6 | { 7 | "neovim/nvim-lspconfig", 8 | ---@class PluginLspOpts 9 | opts = { 10 | ---@module 'lspconfig' 11 | ---@type {[string]: lspconfig.Config|{}} 12 | servers = { graphql = {} }, 13 | }, 14 | }, 15 | } 16 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/lazydocker.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "crnvl96/lazydocker.nvim", 3 | event = "VeryLazy", 4 | opts = {}, -- automatically calls `require("lazydocker").setup()` 5 | dependencies = { 6 | "MunifTanjim/nui.nvim", 7 | }, 8 | keys = { 9 | { "kk", "LazyDocker", desc = "Open lazydocker" }, 10 | }, 11 | } 12 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/lazyvim.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { "folke/lazy.nvim", version = false }, 3 | { "LazyVim/LazyVim", version = false }, 4 | } 5 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/leetcode.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "kawre/leetcode.nvim", 3 | dependencies = { 4 | "nvim-telescope/telescope.nvim", 5 | -- "ibhagwan/fzf-lua", 6 | "nvim-lua/plenary.nvim", 7 | "MunifTanjim/nui.nvim", 8 | }, 9 | opts = { 10 | lang = "python", 11 | storage = { 12 | home = "~/.leetcode", 13 | }, 14 | description = { 15 | position = "right", 16 | }, 17 | -- configuration goes here 18 | }, 19 | } 20 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/lorem.lua: -------------------------------------------------------------------------------- 1 | return { 2 | event = "VeryLazy", 3 | "elvxk/mylorem.nvim", 4 | lazy = true, 5 | config = function() 6 | require("mylorem").setup({ 7 | luasnip = true, -- Enable for LuaSnip 8 | default = true, -- Use LuaSnip by default 9 | }) 10 | end, 11 | } 12 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/lualine.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "nvim-lualine/lualine.nvim", 4 | opts = function(_, opts) 5 | -- Disable time 6 | opts.sections.lualine_z = {} 7 | 8 | -- Show lualine on top, much more useful for me 9 | opts.tabline = opts.sections 10 | opts.sections = {} 11 | end, 12 | }, 13 | } 14 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/nvim-rip.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "chrisgrieser/nvim-rip-substitute", 3 | keys = { 4 | { 5 | "g/", 6 | function() 7 | require("rip-substitute").sub() 8 | end, 9 | mode = { "n", "x" }, 10 | desc = "Rip Substitute", 11 | }, 12 | { 13 | "rs", 14 | function() 15 | require("rip-substitute").sub() 16 | end, 17 | mode = { "n", "x" }, 18 | desc = " rip-substitute", 19 | }, 20 | { 21 | "rS", 22 | function() 23 | require("rip-substitute").rememberCursorWord() 24 | end, 25 | desc = " remember cword (rip-sub)", 26 | }, 27 | }, 28 | opts = { 29 | popupWin = { 30 | hideKeymapHints = false, 31 | }, 32 | editingBehavior = { 33 | autoCaptureGroups = true, 34 | }, 35 | }, 36 | } 37 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/nvim-spider.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "chrisgrieser/nvim-spider", 3 | vscode = true, 4 | event = "LazyFile", 5 | lazy = true, 6 | opts = { 7 | consistentOperatorPending = true, 8 | }, 9 | keys = { 10 | { 11 | "e", 12 | "lua require('spider').motion('e')", 13 | mode = { "n", "o", "x" }, 14 | desc = "Move to start of next word", 15 | }, 16 | { 17 | "w", 18 | "lua require('spider').motion('w')", 19 | mode = { "n", "o", "x" }, 20 | desc = "Move to end of word", 21 | }, 22 | { 23 | "b", 24 | "lua require('spider').motion('b')", 25 | mode = { "n", "o", "x" }, 26 | desc = "Move to start of previous word", 27 | }, 28 | }, 29 | } 30 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/orgmode.lua: -------------------------------------------------------------------------------- 1 | return { 2 | -- "nvim-orgmode/orgmode", 3 | -- event = "VeryLazy", 4 | -- ft = { "org" }, 5 | -- config = function() 6 | -- -- Setup orgmode 7 | -- require("orgmode").setup({ 8 | -- org_agenda_files = "~/org/**/*", 9 | -- org_default_notes_file = "~/org/refile.org", 10 | -- }) 11 | -- 12 | -- -- NOTE: If you are using nvim-treesitter with ~ensure_installed = "all"~ option 13 | -- -- add ~org~ to ignore_install 14 | -- -- require("nvim-treesitter.configs").setup({ 15 | -- -- ensure_installed = "all", 16 | -- -- ignore_install = { "org" }, 17 | -- -- }) 18 | -- end, 19 | } 20 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/origami.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "chrisgrieser/nvim-origami", 4 | event = "VeryLazy", 5 | opts = {}, -- needed even when using default config 6 | }, 7 | } 8 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/precognition.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "tris203/precognition.nvim", 3 | lazy = true, 4 | opts = { 5 | startVisible = false, 6 | }, 7 | keys = { 8 | { 9 | "u?", 10 | function() 11 | require("precognition").toggle() 12 | end, 13 | desc = "Toggle Precognition", 14 | }, 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/remote-sshfs.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "nosduco/remote-sshfs.nvim", 3 | event = "VeryLazy", 4 | dependencies = { "nvim-telescope/telescope.nvim" }, 5 | opts = { 6 | connections = { 7 | ssh_configs = { -- which ssh configs to parse for hosts list 8 | vim.fn.expand("$HOME") .. "/.ssh/config", 9 | "/etc/ssh/ssh_config", 10 | -- "/path/to/custom/ssh_config" 11 | }, 12 | }, 13 | -- Refer to the configuration section below 14 | -- or leave empty for defaults 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/remove-nvim.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "amitds1997/remote-nvim.nvim", 3 | event = "VeryLazy", 4 | version = "*", -- Pin to GitHub releases 5 | dependencies = { 6 | "nvim-lua/plenary.nvim", -- For standard functions 7 | "MunifTanjim/nui.nvim", -- To build the plugin UI 8 | "nvim-telescope/telescope.nvim", -- For picking b/w different remote methods 9 | }, 10 | config = true, 11 | } 12 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/showkeys.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "nvzone/showkeys", 4 | event = "VeryLazy", 5 | cmd = "ShowkeysToggle", 6 | }, 7 | } 8 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/stay-centered.lua: -------------------------------------------------------------------------------- 1 | return { 2 | -- { 3 | -- "arnamak/stay-centered.nvim", 4 | -- opts = function() 5 | -- require("stay-centered").setup({ 6 | -- -- Add any configurations here, like skip_filetypes if needed 7 | -- -- skip_filetypes = {"lua", "typescript"}, 8 | -- }) 9 | -- -- Define the keymap to toggle the stay-centered plugin 10 | -- -- I had to move this keymap here inside, otherwise the plugin started 11 | -- -- disabled if I set the keymap outside under "keys" 12 | -- vim.keymap.set("n", "US", function() 13 | -- require("stay-centered").toggle() 14 | -- vim.notify("Toggled stay-centered", vim.log.levels.INFO) 15 | -- end, { desc = "[P]Toggle stay-centered.nvim" }) 16 | -- end, 17 | -- }, 18 | } 19 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/suda.lua: -------------------------------------------------------------------------------- 1 | ---@diagnostic disable: assign-type-mismatch 2 | ---@type LazySpec 3 | return { 4 | "lambdalisue/suda.vim", 5 | config = false, 6 | cmd = { 7 | "SudaRead", 8 | "SudaWrite", 9 | }, 10 | } 11 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/telescope.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "nvim-telescope/telescope.nvim", 4 | opts = { 5 | defaults = { 6 | sorting_strategy = "ascending", -- display results top->bottom 7 | layout_config = { 8 | prompt_position = "top", -- search bar at the top 9 | }, 10 | }, 11 | }, 12 | }, 13 | } 14 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/timerly.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { "nvzone/volt", event = "VeryLazy" }, 3 | { "nvzone/timerly", event = "VeryLazy", cmd = "TimerlyToggle" }, 4 | } 5 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/translate.lua: -------------------------------------------------------------------------------- 1 | return { 2 | -- Run :Pantran to translate the current line or visual selection. Then type 'g?' to see the available binding. 3 | { 4 | "potamides/pantran.nvim", 5 | event = "VeryLazy", 6 | lazy = true, 7 | cmd = { "Pantran" }, 8 | opts = { 9 | default_engine = "argos", 10 | }, 11 | }, 12 | } 13 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/treesitter/treesj.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "Wansmer/treesj", 3 | vscode = true, 4 | keys = { 5 | { 6 | "J", 7 | "TSJToggle", 8 | desc = "Join Toggle", 9 | remap = true, 10 | }, 11 | }, 12 | opts = { 13 | use_default_keymaps = false, 14 | max_join_length = 150, 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/typr.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "nvzone/typr", 4 | event = "VeryLazy", 5 | lazy = true, 6 | version = false, 7 | dependencies = "nvzone/volt", 8 | opts = {}, 9 | cmd = { "Typr", "TyprStats" }, 10 | }, 11 | { 12 | "saghen/blink.cmp", 13 | ---@module "blink.cmp" 14 | ---@type blink.cmp.Config 15 | opts = { 16 | enabled = function() 17 | return not vim.tbl_contains({ "typr" }, vim.bo.filetype) 18 | and vim.bo.buftype ~= "prompt" 19 | and vim.b.completion ~= false 20 | end, 21 | }, 22 | }, 23 | } 24 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/urlview.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "axieax/urlview.nvim", 4 | cmd = "UrlView", 5 | 6 | config = function(_, opts) 7 | require("urlview").setup(opts) 8 | end, 9 | 10 | opts = { 11 | -- custom configuration options -- 12 | }, 13 | 14 | keys = { 15 | { "fuu", "UrlView", mode = "n", desc = "View buffer URLs" }, 16 | { "ful", "UrlView lazy", mode = "n", desc = "View Lazy URLs" }, 17 | { "fup", "UrlView packer", mode = "n", desc = "View Packer plugin URLs" }, 18 | { "fuv", "UrlView vimplug", mode = "n", desc = "View Packer plugin URLs" }, 19 | }, 20 | }, 21 | } 22 | -------------------------------------------------------------------------------- /config/nvim/stylua.toml: -------------------------------------------------------------------------------- 1 | indent_type = "Spaces" 2 | indent_width = 2 3 | column_width = 120 4 | -------------------------------------------------------------------------------- /config/polybar/launch.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | killall -q polybar 4 | while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done 5 | 6 | polybar -c ~/.config/polybar/bspwm/config top & 7 | # notify-send "Bars launched..." 8 | -------------------------------------------------------------------------------- /config/polybar/scripts/battery-combined-tlp.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | battery=$(sudo tlp-stat -b | tail -2 | head -n 1 | tr -d -c "[:digit:],.") 4 | 5 | echo "# $battery %" 6 | -------------------------------------------------------------------------------- /config/polybar/scripts/updates-arch-combined.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if ! updates_arch=$(checkupdates 2>/dev/null | wc -l); then 4 | updates_arch=0 5 | fi 6 | 7 | if ! updates_aur=$(yay -Qum 2>/dev/null | wc -l); then 8 | # if ! updates_aur=$(cower -u 2> /dev/null | wc -l); then 9 | # if ! updates_aur=$(trizen -Su --aur --quiet | wc -l); then 10 | updates_aur=0 11 | fi 12 | 13 | updates=$(("$updates_arch" + "$updates_aur")) 14 | 15 | if [ "$updates" -gt 0 ]; then 16 | echo "# $updates" 17 | else 18 | echo "" 19 | fi 20 | -------------------------------------------------------------------------------- /config/ranger/plugins/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lenivaya/dotfiles/1261ccc34d851d40e23728aa15243f8e6b0a0f9a/config/ranger/plugins/.keep -------------------------------------------------------------------------------- /config/ranger/plugins/ranger-archives/__init__.py: -------------------------------------------------------------------------------- 1 | from .compress import compress 2 | from .extract import extract, extract_raw, extract_to_dirs 3 | -------------------------------------------------------------------------------- /config/starship/starship.toml: -------------------------------------------------------------------------------- 1 | [character] 2 | success_symbol = "[λ](green)" 3 | error_symbol = "[λ](bold red)" 4 | vicmd_symbol = "<<" 5 | -------------------------------------------------------------------------------- /config/sxiv/exec/key-handler: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | while read -r file; do 3 | case "$1" in 4 | "w") setwall "$file" & ;; 5 | "W") feh --bg-fill "$file" & ;; 6 | "r") 7 | convert -rotate 90 "$file" "$file" 8 | ;; 9 | "R") 10 | convert -rotate -90 "$file" "$file" 11 | ;; 12 | "f") 13 | convert -flop "$file" "$file" 14 | ;; 15 | "y") 16 | echo "$file" | xclip -selection clipboard && 17 | notify-send "$file copied to clipboard" & 18 | ;; 19 | "Y") 20 | readlink -f "$file" | xclip -selection clipboard && 21 | notify-send "$(readlink -f "$file") copied to clipboard" & 22 | ;; 23 | "d") 24 | # [ "$(printf 'No\nYes' | dmenu -p "Really delete $file?")" = "Yes" ] && rm "$file" && notify-send "$file deleted." 25 | [ "$(dmenu-list No Yes | dmenu -p "Really delete")" = "Yes" ] && rm "$file" && notify-send "$file deleted." 26 | ;; 27 | esac 28 | done 29 | -------------------------------------------------------------------------------- /config/tmux/.gitignore: -------------------------------------------------------------------------------- 1 | plugins 2 | -------------------------------------------------------------------------------- /config/vimium-c/styles.css: -------------------------------------------------------------------------------- 1 | /* https://github.com/rose-pine/vimium-c */ 2 | 3 | /* find-host, not working write to the find-host section, so I put it outside */ 4 | .R.HM.D > .LH { 5 | background: #0b0806; 6 | border: 0.5px solid #a17c38; 7 | color: #a19782; 8 | } 9 | 10 | /* #ui */ 11 | .HUD, 12 | .TEE { 13 | padding: 0; 14 | bottom: 1px; 15 | } 16 | 17 | /* #omni */ 18 | #input { 19 | text-align: center !important; 20 | } 21 | 22 | body::after { 23 | border: none; 24 | } 25 | 26 | .item { 27 | border-bottom: none; 28 | padding-top: 0px; 29 | cursor: pointer; 30 | 31 | display: flex; 32 | align-items: center; 33 | justify-content: space-between; 34 | } 35 | 36 | /* .item.s, */ 37 | /* .item:hover { */ 38 | /* } */ 39 | /**/ 40 | -------------------------------------------------------------------------------- /config/xmonad/.ghci: -------------------------------------------------------------------------------- 1 | :set -i:lib 2 | -------------------------------------------------------------------------------- /config/xmonad/.gitignore: -------------------------------------------------------------------------------- 1 | *.hi 2 | *.o 3 | .cabal-sandbox/ 4 | .ghc.* 5 | .hdevtools.* 6 | .stack-work/ 7 | cabal.project.* 8 | cabal.sandbox.config 9 | dist-newstyle/ 10 | dist/ 11 | prompt-history 12 | xmonad-*-* 13 | xmonad.errors 14 | -------------------------------------------------------------------------------- /config/xmonad/fourmolu.yaml: -------------------------------------------------------------------------------- 1 | indentation: 2 2 | column-limit: 90 3 | function-arrows: leading 4 | comma-style: trailing 5 | import-export-style: diff-friendly 6 | indent-wheres: true 7 | record-brace-space: true 8 | newlines-between-decls: 1 9 | haddock-style: multi-line-compact 10 | haddock-style-module: multi-line-compact 11 | let-style: auto 12 | in-style: left-align 13 | single-constraint-parens: auto 14 | unicode: detect 15 | respectful: true 16 | fixities: [] 17 | reexports: [] 18 | -------------------------------------------------------------------------------- /config/xmonad/hie-bios.sh: -------------------------------------------------------------------------------- 1 | echo "xmonad" >>"$HIE_BIOS_OUTPUT" 2 | -------------------------------------------------------------------------------- /config/xmonad/hie.yaml: -------------------------------------------------------------------------------- 1 | cradle: 2 | bios: 3 | program: hie-bios.sh 4 | with-ghc: /nix/store/38jy5ybiidgcm2pbzyx3p166w9pfrpl6-ghc-9.6.6-with-packages/bin/ghc 5 | -------------------------------------------------------------------------------- /config/xmonad/lib/XMonad/Custom/Actions/Calculator.hs: -------------------------------------------------------------------------------- 1 | module XMonad.Custom.Actions.Calculator where 2 | 3 | import Control.Monad 4 | import Data.Char 5 | import Data.List 6 | import XMonad 7 | import XMonad.Prompt 8 | import XMonad.Prompt.Input 9 | import XMonad.Util.Run (runProcessWithInput) 10 | 11 | calcPrompt :: XPConfig -> String -> X () 12 | calcPrompt config answer = 13 | inputPrompt config (trim answer) ?+ (doCalc >=> calcPrompt config) 14 | where 15 | trim = dropWhileEnd isSpace 16 | 17 | doCalc :: MonadIO m => String -> m String 18 | doCalc input = runProcessWithInput "qalc" [input] "" 19 | -------------------------------------------------------------------------------- /config/xmonad/lib/XMonad/Custom/Actions/ScratchpadChooser.hs: -------------------------------------------------------------------------------- 1 | module XMonad.Custom.Actions.ScratchpadChooser where 2 | 3 | import XMonad 4 | import XMonad.Custom.Prompt 5 | import XMonad.Custom.Scratchpads (scratchpads) 6 | import XMonad.Prompt 7 | import XMonad.Util.NamedScratchpad 8 | 9 | -- Prompt 10 | data ScratchpadByName = ScratchpadByName 11 | 12 | instance XPrompt ScratchpadByName where 13 | showXPrompt _ = "Scratchpad: " 14 | 15 | -- Get list of scratchpad names from the scratchpads list 16 | scratchpadNames :: [String] 17 | scratchpadNames = map name scratchpads 18 | 19 | -- Prompt to select and run a scratchpad 20 | selectScratchpadByName :: XPConfig -> X () 21 | selectScratchpadByName conf = 22 | mkXPrompt 23 | ScratchpadByName 24 | conf 25 | (mkComplFunFromList' conf scratchpadNames) 26 | (namedScratchpadAction scratchpads) 27 | -------------------------------------------------------------------------------- /config/xmonad/lib/XMonad/Custom/Actions/TmuxPrompt.hs: -------------------------------------------------------------------------------- 1 | module XMonad.Custom.Actions.TmuxPrompt (tmuxPrompt) where 2 | 3 | import Data.List (lines) 4 | import XMonad 5 | import XMonad.Prompt 6 | import XMonad.Util.Run (runInTerm, runProcessWithInput) 7 | 8 | data Tmux = Tmux 9 | 10 | instance XPrompt Tmux where 11 | showXPrompt Tmux = "Tmux session: " 12 | 13 | tmuxPrompt :: XPConfig -> X () 14 | tmuxPrompt c = do 15 | sessions <- getSessions 16 | mkXPrompt Tmux c (mkComplFunFromList' c sessions) startTmux 17 | 18 | getSessions :: MonadIO m => m [String] 19 | getSessions = io $ do 20 | output <- runProcessWithInput "tmux" ["list-sessions", "-F", "#S"] "" 21 | return $ lines output 22 | 23 | startTmux :: String -> X () 24 | startTmux s = 25 | runInTerm "" $ 26 | "tmux attach-session -t \"" 27 | ++ s 28 | ++ "\" || tmux new-session -A -s \"" 29 | ++ s 30 | ++ "\"" 31 | -------------------------------------------------------------------------------- /config/xmonad/lib/XMonad/Custom/Hooks/Screens.hs: -------------------------------------------------------------------------------- 1 | module XMonad.Custom.Hooks.Screens ( 2 | myRandrChangeHook, 3 | ) where 4 | 5 | import XMonad.Actions.ShowText 6 | import XMonad.Core 7 | 8 | flash' = flashText def 0.5 9 | 10 | myRandrChangeHook :: X () 11 | myRandrChangeHook = do 12 | flash' "Screen change" 13 | pure () 14 | 15 | -- spawn "autorandr --change" 16 | -- spawn "~/.fehbg" 17 | -------------------------------------------------------------------------------- /config/xmonad/lib/XMonad/Custom/Hooks/Startup.hs: -------------------------------------------------------------------------------- 1 | module XMonad.Custom.Hooks.Startup ( 2 | startupHook, 3 | ) where 4 | 5 | import Data.Maybe 6 | import XMonad hiding (startupHook) 7 | import XMonad.Custom.Actions.Keyboard 8 | import XMonad.Hooks.SetWMName 9 | import XMonad.Hooks.StatusBar 10 | import XMonad.Util.Cursor 11 | import XMonad.Util.SpawnOnce 12 | 13 | startupHook :: X () 14 | startupHook = do 15 | -- setWMName "LG3D" 16 | -- setWMName "XMonad" 17 | -- setDefaultCursor xC_left_ptr -- sets some strange looking cursor 18 | -- spawnOnce "xsetroot -cursor_name left_ptr" 19 | spawnOnce "source ~/.fehbg" 20 | spawn "xset r rate 200 100" -- too needed for me, lets set it on every startup 21 | -- spawn "killall sxhkd || sxhkd" 22 | -- spawn "killall skippy-xd || skippy-xd --start-daemon --config-reload" 23 | keyboardStartupHook 24 | 25 | -- setDefaultCursor xC_left_ptr 26 | -- spawn "source ~/.fehbg" 27 | -------------------------------------------------------------------------------- /config/xmonad/lib/XMonad/Custom/Navigation.hs: -------------------------------------------------------------------------------- 1 | module XMonad.Custom.Navigation ( 2 | navigation, 3 | ) where 4 | 5 | import XMonad.Actions.Navigation2D 6 | 7 | navigation :: Navigation2DConfig 8 | navigation = 9 | def 10 | { defaultTiledNavigation = hybridOf sideNavigation centerNavigation, 11 | floatNavigation = hybridOf lineNavigation centerNavigation, 12 | layoutNavigation = [("Full", centerNavigation)], 13 | unmappedWindowRect = [("Full", singleWindowRect)] 14 | } 15 | -------------------------------------------------------------------------------- /config/xmonad/lib/XMonad/Custom/Server.hs: -------------------------------------------------------------------------------- 1 | -- import XMonad 2 | -- import XMonad.Actions.ShowText 3 | 4 | -- myCommands :: [(String, X ())] 5 | -- myCommands = 6 | -- [ ("decrease-master-size", sendMessage Shrink) 7 | -- , ("increase-master-size", sendMessage Expand) 8 | -- , ("decrease-master-count", sendMessage $ IncMasterN (-1)) 9 | -- , ("increase-master-count", sendMessage $ IncMasterN (1)) 10 | -- , ("focus-prev", windows W.focusUp) 11 | -- , ("focus-next", windows W.focusDown) 12 | -- , ("focus-master", windows W.focusMaster) 13 | -- , ("swap-with-prev", windows W.swapUp) 14 | -- , ("swap-with-next", windows W.swapDown) 15 | -- , ("swap-with-master", windows W.swapMaster) 16 | -- , ("kill-window", kill) 17 | -- , ("quit", io exitSuccess) 18 | -- , ("restart", restart "xmonad" True) 19 | -- ] 20 | -------------------------------------------------------------------------------- /config/xmonad/lib/XMonad/Custom/Utils/Array.hs: -------------------------------------------------------------------------------- 1 | module XMonad.Custom.Utils.Array where 2 | 3 | -- intersect :: Eq a => [a] -> [a] -> [a] 4 | -- intersect [] = const [] 5 | -- intersect xs = filter (`elem` xs) 6 | -------------------------------------------------------------------------------- /config/xmonad/lib/XMonad/Custom/Utils/Strings.hs: -------------------------------------------------------------------------------- 1 | module XMonad.Custom.Utils.Strings where 2 | 3 | import Data.Char (isSpace) 4 | 5 | -- | Trims leading and trailing whitespace from a string 6 | trim :: String -> String 7 | trim = f . f 8 | where 9 | f = reverse . dropWhile isSpace 10 | -------------------------------------------------------------------------------- /config/xmonad/scripts/caffeine: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if pgrep -x "caffeinate" >/dev/null; then 4 | killall -INT caffeinate 5 | else 6 | caffeinate 7 | fi 8 | -------------------------------------------------------------------------------- /config/xmonad/scripts/keyboard-listener: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | current_layout="" 4 | previous_layout="" 5 | 6 | xkbmon -u | while read -s -r layout; do 7 | if [[ $layout != "$previous_layout" ]]; then 8 | current_layout="$layout" 9 | xmonadctl -a XMONAD_SHOW_KEYBOARD_CHANGE "$current_layout" 10 | previous_layout="$layout" 11 | fi 12 | done 13 | -------------------------------------------------------------------------------- /config/xmonad/scripts/nsp-console.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | session_name="scratchpad" 4 | 5 | if tmux has-session -t "$session_name"; then 6 | tmux attach-session -t "scratchpad" 7 | else 8 | tmux new-session -s "$session_name" -n "$session_name" -c "$HOME" 9 | fi 10 | -------------------------------------------------------------------------------- /config/xmonad/scripts/screenlock.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | betterlockscreen -l dim 4 | -------------------------------------------------------------------------------- /config/xmonad/scripts/toggle-compositor.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if ! systemctl --user is-active --quiet picom; then 4 | systemctl --user start picom & 5 | else 6 | systemctl --user stop picom & 7 | fi 8 | -------------------------------------------------------------------------------- /config/xmonad/scripts/xmobar/caffeinatestatus: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if pgrep -x "caffeinate" >/dev/null; then 4 | echo "󰅶" 5 | fi 6 | -------------------------------------------------------------------------------- /config/xmonad/scripts/xmobar/dunststatus: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if [ "$(dunstctl is-paused)" = "true" ]; then 4 | echo "󰂛" 5 | fi 6 | -------------------------------------------------------------------------------- /config/xmonad/scripts/xmobar/player: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | player_status=$(playerctl --player playerctld status) 4 | 5 | case "$player_status" in 6 | Playing | Paused) 7 | artist=$(playerctl metadata artist) 8 | title=$(playerctl metadata title) 9 | output="$artist - $title" 10 | # Trim to 97 chars and add ... if longer 11 | if [ ${#output} -gt 100 ]; then 12 | echo "${output:0:97}..." 13 | else 14 | echo "$output" 15 | fi 16 | ;; 17 | *) 18 | echo "" 19 | ;; 20 | esac 21 | -------------------------------------------------------------------------------- /config/xmonad/scripts/xmobar/warpstatus: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if pgrep -x ".*warp-svc.*" >/dev/null; then 4 | echo "" 5 | fi 6 | -------------------------------------------------------------------------------- /config/xmonad/scripts/xmobar/wgcf: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | INTERFACE="wgcf-profile" 4 | 5 | if ip link show "$INTERFACE" >/dev/null 2>&1; then 6 | echo " WARP " 7 | exit 0 8 | else 9 | echo " warp " 10 | exit 0 11 | fi 12 | -------------------------------------------------------------------------------- /config/xmonad/scripts/xmobar/wgcf-toggle: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | INTERFACE="wgcf-profile" 4 | CONF_FILE="$HOME/wgcf-profile.conf" 5 | SILENT=false 6 | 7 | # Check for silent flag 8 | if [ "$1" = "--silent" ]; then 9 | SILENT=true 10 | fi 11 | 12 | # Check current status 13 | if ip link show "$INTERFACE" >/dev/null 2>&1; then 14 | [ "$SILENT" = false ] && notify-send "Warp" "Deactivating WireGuard Cloudflare..." 15 | pkexec wg-quick down "$CONF_FILE" 16 | [ "$SILENT" = false ] && notify-send "Warp" "WireGuard Cloudflare deactivated" 17 | else 18 | [ "$SILENT" = false ] && notify-send "Warp" "Activating WireGuard Cloudflare..." 19 | pkexec wg-quick up "$CONF_FILE" 20 | [ "$SILENT" = false ] && notify-send "Warp" "WireGuard Cloudflare activated" 21 | fi 22 | -------------------------------------------------------------------------------- /config/xmonad/src/Main.hs: -------------------------------------------------------------------------------- 1 | module Main where 2 | 3 | import XMonad 4 | import XMonad.Custom.Config 5 | 6 | main :: IO () 7 | main = myConfig >>= xmonad 8 | -------------------------------------------------------------------------------- /config/xmonad/xmonad.hs: -------------------------------------------------------------------------------- 1 | src/Main.hs -------------------------------------------------------------------------------- /config/yazi/plugins/chmod.yazi/README.md: -------------------------------------------------------------------------------- 1 | # chmod.yazi 2 | 3 | Execute `chmod` on the selected files to change their mode. This plugin is only available on Unix platforms since it relies on [`chmod(2)`](https://man7.org/linux/man-pages/man2/chmod.2.html). 4 | 5 | https://github.com/yazi-rs/plugins/assets/17523360/7aa3abc2-d057-498c-8473-a6282c59c464 6 | 7 | ## Installation 8 | 9 | ```sh 10 | ya pack -a yazi-rs/plugins:chmod 11 | ``` 12 | 13 | ## Usage 14 | 15 | Add this to your `~/.config/yazi/keymap.toml`: 16 | 17 | ```toml 18 | [[manager.prepend_keymap]] 19 | on = [ "c", "m" ] 20 | run = "plugin chmod" 21 | desc = "Chmod on selected files" 22 | ``` 23 | 24 | Make sure the c => m key is not used elsewhere. 25 | 26 | ## License 27 | 28 | This plugin is MIT-licensed. For more information check the [LICENSE](LICENSE) file. 29 | -------------------------------------------------------------------------------- /config/yazi/plugins/convert.yazi/README.md: -------------------------------------------------------------------------------- 1 | # convert.yazi 2 | 3 | ## Requirements 4 | 5 | - [yazi](https://github.com/sxyazi/yazi) 6 | - [magick](https://archlinux.org/packages/extra/x86_64/thunar/) 7 | 8 | ## Installation 9 | 10 | ### Linux 11 | 12 | ```sh 13 | git clone https://github.com/atareao/convert.yazi ~/.config/yazi/plugins/convert.yazi 14 | ``` 15 | 16 | or 17 | 18 | ```sh 19 | ya pack -a atareao/convert 20 | ``` 21 | 22 | ## Usage 23 | 24 | Add this to your ~/.config/yazi/keymap.toml, inside of `[manager]` 25 | 26 | 27 | ```toml 28 | prepend_keymap = [ 29 | { on = [ "c", "j" ], run = "plugin convert --args='--extension=jpg'", desc = "Convert image to JPG" }, 30 | { on = [ "c", "p" ], run = "plugin convert --args='--extension=png'", desc = "Convert image to PNG" }, 31 | { on = [ "c", "w" ], run = "plugin convert --args='--extension=webp'", desc = "Convert image to WEBP" }, 32 | ] 33 | ``` 34 | -------------------------------------------------------------------------------- /config/yazi/plugins/full-border.yazi/README.md: -------------------------------------------------------------------------------- 1 | # full-border.yazi 2 | 3 | Add a full border to Yazi to make it look fancier. 4 | 5 | ![full-border](https://github.com/yazi-rs/plugins/assets/17523360/ef81b560-2465-4d36-abf2-5d21dcb7b987) 6 | 7 | ## Installation 8 | 9 | ```sh 10 | ya pack -a yazi-rs/plugins:full-border 11 | ``` 12 | 13 | ## Usage 14 | 15 | Add this to your `init.lua` to enable the plugin: 16 | 17 | ```lua 18 | require("full-border"):setup() 19 | ``` 20 | 21 | Or you can customize the border type: 22 | 23 | ```lua 24 | require("full-border"):setup { 25 | -- Available values: ui.Border.PLAIN, ui.Border.ROUNDED 26 | type = ui.Border.ROUNDED, 27 | } 28 | ``` 29 | 30 | ## License 31 | 32 | This plugin is MIT-licensed. For more information check the [LICENSE](LICENSE) file. 33 | -------------------------------------------------------------------------------- /config/yazi/plugins/jump-to-char.yazi/README.md: -------------------------------------------------------------------------------- 1 | # jump-to-char.yazi 2 | 3 | Vim-like `f`, jump to the next file whose name starts with ``. 4 | 5 | https://github.com/yazi-rs/plugins/assets/17523360/aac9341c-b416-4e0c-aaba-889d48389869 6 | 7 | ## Installation 8 | 9 | ```sh 10 | ya pack -a yazi-rs/plugins:jump-to-char 11 | ``` 12 | 13 | ## Usage 14 | 15 | Add this to your `~/.config/yazi/keymap.toml`: 16 | 17 | ```toml 18 | [[manager.prepend_keymap]] 19 | on = "f" 20 | run = "plugin jump-to-char" 21 | desc = "Jump to char" 22 | ``` 23 | 24 | Make sure the f key is not used elsewhere. 25 | 26 | ## License 27 | 28 | This plugin is MIT-licensed. For more information check the [LICENSE](LICENSE) file. 29 | -------------------------------------------------------------------------------- /config/yazi/plugins/jump-to-char.yazi/main.lua: -------------------------------------------------------------------------------- 1 | --- @since 25.2.26 2 | 3 | local AVAILABLE_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789." 4 | 5 | local changed = ya.sync(function(st, new) 6 | local b = st.last ~= new 7 | st.last = new 8 | return b or not cx.active.finder 9 | end) 10 | 11 | local escape = function(s) return s == "." and "\\." or s end 12 | 13 | return { 14 | entry = function() 15 | local cands = {} 16 | for i = 1, #AVAILABLE_CHARS do 17 | cands[#cands + 1] = { on = AVAILABLE_CHARS:sub(i, i) } 18 | end 19 | 20 | local idx = ya.which { cands = cands, silent = true } 21 | if not idx then 22 | return 23 | end 24 | 25 | local kw = escape(cands[idx].on) 26 | if changed(kw) then 27 | ya.mgr_emit("find_do", { "^" .. kw }) 28 | else 29 | ya.mgr_emit("find_arrow", {}) 30 | end 31 | end, 32 | } 33 | -------------------------------------------------------------------------------- /config/yazi/plugins/open-with-cmd.yazi/README.md: -------------------------------------------------------------------------------- 1 | # open-with-cmd.yazi 2 | 3 | This is a Yazi plugin for opening files with a prompted command. 4 | 5 | ## Installation 6 | 7 | Install the plugin: 8 | 9 | ``` 10 | ya pack -a Ape/open-with-cmd 11 | ``` 12 | 13 | Create `~/.config/yazi/keymap.toml` and add: 14 | 15 | ``` 16 | [[manager.prepend_keymap]] 17 | on = "o" 18 | run = "plugin open-with-cmd --args=block" 19 | desc = "Open with command in the terminal" 20 | 21 | [[manager.prepend_keymap]] 22 | on = "O" 23 | run = "plugin open-with-cmd" 24 | desc = "Open with command" 25 | ``` 26 | -------------------------------------------------------------------------------- /config/yazi/plugins/open-with-cmd.yazi/main.lua: -------------------------------------------------------------------------------- 1 | return { 2 | entry = function(_, job) 3 | local block = job.args[1] and job.args[1] == "block" 4 | 5 | local value, event = ya.input({ 6 | title = block and "Open with (block):" or "Open with:", 7 | position = { "hovered", y = 1, w = 50 }, 8 | }) 9 | 10 | if event == 1 then 11 | local s = ya.target_family() == "windows" and " %*" or ' "$@"' 12 | ya.manager_emit("shell", { 13 | value .. s, 14 | block = block, 15 | orphan = true, 16 | confirm = true, 17 | }) 18 | end 19 | end, 20 | } 21 | -------------------------------------------------------------------------------- /config/yazi/plugins/smart-filter.yazi/README.md: -------------------------------------------------------------------------------- 1 | # smart-filter.yazi 2 | 3 | A Yazi plugin that makes filters smarter: continuous filtering, automatically enter unique directory, open file on submitting. 4 | 5 | https://github.com/yazi-rs/plugins/assets/17523360/72aaf117-1378-4f7e-93ba-d425a79deac5 6 | 7 | ## Installation 8 | 9 | ```sh 10 | ya pack -a yazi-rs/plugins:smart-filter 11 | ``` 12 | 13 | ## Usage 14 | 15 | Add this to your `~/.config/yazi/keymap.toml`: 16 | 17 | ```toml 18 | [[manager.prepend_keymap]] 19 | on = "F" 20 | run = "plugin smart-filter" 21 | desc = "Smart filter" 22 | ``` 23 | 24 | Make sure the F key is not used elsewhere. 25 | 26 | ## License 27 | 28 | This plugin is MIT-licensed. For more information check the [LICENSE](LICENSE) file. 29 | -------------------------------------------------------------------------------- /config/yazi/plugins/yatline-created-time.yazi/main.lua: -------------------------------------------------------------------------------- 1 | function hovered() 2 | local hovered = cx.active.current.hovered 3 | if hovered then 4 | return hovered 5 | else 6 | return "" 7 | end 8 | end 9 | 10 | local function setup(_, options) 11 | options = options or {} 12 | 13 | local config = { 14 | created_time_color = options.created_time_color or "silver", 15 | } 16 | 17 | if Yatline ~= nil then 18 | function Yatline.coloreds.get:created_time() 19 | local h = hovered() 20 | local created_time = {} 21 | local time = " C: " .. os.date("%Y-%m-%d %H:%M", h.cha.btime // 1) .. " " 22 | 23 | table.insert(created_time, { time, config.created_time_color }) 24 | return created_time 25 | end 26 | end 27 | end 28 | 29 | return { setup = setup } 30 | -------------------------------------------------------------------------------- /config/yazi/plugins/yatline.yazi/README.md: -------------------------------------------------------------------------------- 1 | # yatline.yazi 2 | The first Yazi plugin for customizing both header-line and status-line. 3 | 4 | ![yatline](https://github.com/user-attachments/assets/61013ec8-7fd9-42df-a9f4-f254663871fe) 5 | 6 | > [!NOTE] 7 | > Check out [wiki](https://github.com/imsi32/yatline.yazi/wiki) for installation steps, configuration and further information. 8 | 9 | ## Features 10 | - Lualine-like Design 11 | - Flexible 12 | - Simple 13 | - Automatic Configuration 14 | - Themes (See: [yatline-themes](https://github.com/imsi32/yatline-themes)) 15 | - Add-ons (See: [yatline-addons](https://github.com/imsi32/yatline-addons)) 16 | 17 | ## Credits 18 | - [Lualine](https://github.com/nvim-lualine/lualine.nvim) 19 | - [Yazi](https://github.com/sxyazi/yazi) 20 | -------------------------------------------------------------------------------- /config/zsh/.gitignore: -------------------------------------------------------------------------------- 1 | extra.zshenv 2 | extra.zshrc 3 | .zcompdump* 4 | .zinit/ 5 | .zsh_history 6 | .zsh_history* 7 | -------------------------------------------------------------------------------- /config/zsh/.zshenv: -------------------------------------------------------------------------------- 1 | export LANG=en_US.UTF-8 2 | 3 | skip_global_compinit=1 4 | 5 | # Home-manager sessionVariables 6 | source /etc/profiles/per-user/leniviy/etc/profile.d/hm-session-vars.sh 7 | 8 | ## Auto-generated by my nix config 9 | [ -f "${0:a:h}/extra.zshenv" ] && source "${0:a:h}/extra.zshenv" 10 | 11 | # If you have host-local configuration, this is where you'd put it 12 | [ -f ~/.zshenv ] && source ~/.zshenv 13 | -------------------------------------------------------------------------------- /config/zsh/br: -------------------------------------------------------------------------------- 1 | # This script was automatically generated by the broot program 2 | # More information can be found in https://github.com/Canop/broot 3 | # This function starts broot and executes the command 4 | # it produces, if any. 5 | # It's needed because some shell commands, like `cd`, 6 | # have no useful effect if executed in a subshell. 7 | function br { 8 | local cmd cmd_file code 9 | cmd_file=$(mktemp) 10 | if broot --outcmd "$cmd_file" "$@"; then 11 | cmd=$(<"$cmd_file") 12 | command rm -f "$cmd_file" 13 | eval "$cmd" 14 | else 15 | code=$? 16 | command rm -f "$cmd_file" 17 | return "$code" 18 | fi 19 | } 20 | -------------------------------------------------------------------------------- /extra/treefmt.nix: -------------------------------------------------------------------------------- 1 | { treefmt-wrapper }: 2 | treefmt-wrapper { 3 | projectRootFile = "flake.nix"; 4 | 5 | programs = { 6 | nixfmt.enable = true; 7 | deadnix.enable = true; 8 | shfmt.enable = true; 9 | ruff-format.enable = true; 10 | rufo.enable = true; 11 | mdsh.enable = true; 12 | yamlfmt.enable = true; 13 | prettier = { 14 | enable = true; 15 | excludes = [ 16 | "config/yazi/**" 17 | "config/nvim/**" 18 | ]; 19 | }; 20 | toml-sort.enable = true; 21 | fourmolu.enable = true; 22 | }; 23 | } 24 | -------------------------------------------------------------------------------- /hie.yaml: -------------------------------------------------------------------------------- 1 | cradle: 2 | bios: 3 | program: hie-bios.sh 4 | with-ghc: /nix/store/wmff61c3v6c5dzkpbvxas1ddlh62si1p-ghc-9.6.6-with-packages/bin/ghc 5 | -------------------------------------------------------------------------------- /hosts/common.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | with lib; 3 | { 4 | boot.loader.timeout = mkDefault 1; 5 | 6 | networking = { 7 | networkmanager.enable = true; 8 | firewall.enable = true; 9 | }; 10 | 11 | # hardware related stuff 12 | # nixpkgs.config.allowUnfree = true; 13 | hardware.enableRedistributableFirmware = true; 14 | hardware.enableAllFirmware = true; 15 | hardware.graphics = { 16 | enable = true; 17 | }; 18 | 19 | services.automatic-timezoned.enable = true; 20 | 21 | console = { 22 | useXkbConfig = true; 23 | }; 24 | 25 | i18n.defaultLocale = mkDefault "en_US.UTF-8"; 26 | location.provider = "geoclue2"; 27 | } 28 | -------------------------------------------------------------------------------- /hosts/laptp1/modules/books.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | with lib; 3 | with my; 4 | let 5 | calibre-server-port = 8081; 6 | in 7 | { 8 | networking.firewall.allowedTCPPorts = [ calibre-server-port ]; 9 | 10 | services.readarr = enabled // { 11 | openFirewall = true; 12 | group = "media"; 13 | }; 14 | 15 | services.calibre-server = enabled // { 16 | port = calibre-server-port; 17 | group = "media"; 18 | libraries = [ "/data/books" ]; 19 | auth = enabled // { 20 | userDb = "/data/books/users.sqlite"; 21 | }; 22 | }; 23 | 24 | services.calibre-web = enabled // { 25 | openFirewall = true; 26 | listen = { 27 | ip = "127.0.0.1"; 28 | port = 8083; 29 | }; 30 | group = "media"; 31 | options = { 32 | enableBookUploading = true; 33 | }; 34 | }; 35 | } 36 | -------------------------------------------------------------------------------- /hosts/laptp1/modules/default.nix: -------------------------------------------------------------------------------- 1 | { ... }: 2 | { 3 | imports = [ 4 | ./radarr.nix 5 | ./sonarr.nix 6 | ./books.nix 7 | ./prowlarr.nix 8 | ./jellyfin.nix 9 | ./torrents.nix 10 | ./nginx.nix 11 | ./homepage/dashboard.nix 12 | ]; 13 | } 14 | -------------------------------------------------------------------------------- /hosts/laptp1/modules/homepage/settings.yaml: -------------------------------------------------------------------------------- 1 | # For configuration options and examples, please see: 2 | # https://gethomepage.dev/latest/configs/settings 3 | # providers: 4 | # openweathermap: openweathermapapikey 5 | # weatherapi: weatherapiapikey 6 | headerStyle: clean 7 | statusStyle: "dot" 8 | hideVersion: true 9 | cardBlur: sm 10 | language: en 11 | quicklaunch: 12 | hideInternetSearch: true 13 | hideVisitURL: true 14 | searchDescriptions: true 15 | -------------------------------------------------------------------------------- /hosts/laptp1/modules/jellyfin.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | with lib; 3 | with my; 4 | { 5 | services.jellyfin = enabled // { 6 | openFirewall = true; 7 | group = "media"; 8 | }; 9 | 10 | # For now it doesn't support subpath in reverse proxy [1] 11 | # 12 | # [1]: https://github.com/Fallenbagel/jellyseerr/issues/97 13 | # services.jellyseerr = 14 | # enabled 15 | # // { 16 | # openFirewall = true; 17 | # group = "media"; 18 | # }; 19 | 20 | systemd.services.jellyfin.serviceConfig.Nice = mkForce (-19); 21 | systemd.services.jellyfin.serviceConfig.IOWeight = mkForce 9000; 22 | systemd.services.jellyfin.serviceConfig.CPUWeight = mkForce 9000; 23 | } 24 | -------------------------------------------------------------------------------- /hosts/laptp1/modules/prowlarr.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | with lib; 3 | with my; 4 | { 5 | services.prowlarr = enabled // { 6 | openFirewall = true; 7 | # group = "media"; 8 | }; 9 | } 10 | -------------------------------------------------------------------------------- /hosts/laptp1/modules/radarr.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | with lib; 3 | with my; 4 | { 5 | services.radarr = enabled // { 6 | openFirewall = true; 7 | group = "media"; 8 | }; 9 | } 10 | -------------------------------------------------------------------------------- /hosts/laptp1/modules/sonarr.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | with lib; 3 | with my; 4 | { 5 | services.sonarr = enabled // { 6 | openFirewall = true; 7 | group = "media"; 8 | }; 9 | } 10 | -------------------------------------------------------------------------------- /hosts/laptp1/modules/torrents.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | with lib; 3 | with my; 4 | { 5 | services.qbittorrent = enabled // { 6 | openFirewall = true; 7 | group = "media"; 8 | }; 9 | } 10 | -------------------------------------------------------------------------------- /hosts/laptp1/modules/your-spotify.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | with lib; 3 | with my; 4 | { 5 | # services.your_spotify = 6 | # enabled 7 | # // { 8 | # spotifySecretFile = config.age.secrets.your_spotify_secret.path; 9 | # # nginxVirtualHost = "local.self-hosted.com"; 10 | # settings = { 11 | # PORT = 4500; 12 | # SPOTIFY_PUBLIC = "a25a6c24950d4dc6b5170315e79331ac"; 13 | # API_ENDPOINT = ""; 14 | # }; 15 | # }; 16 | } 17 | -------------------------------------------------------------------------------- /hosts/laptp1/secrets/secrets.nix: -------------------------------------------------------------------------------- 1 | let 2 | key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKJWZChgyuytRTYKH/TkMY0rS7QTUXzdlSfa0SRSrqK/ xocada@gmail.com"; 3 | in 4 | { 5 | "your_spotify_secret.age".publicKeys = [ key ]; 6 | } 7 | -------------------------------------------------------------------------------- /hosts/laptp1/secrets/your_spotify_secret.age: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lenivaya/dotfiles/1261ccc34d851d40e23728aa15243f8e6b0a0f9a/hosts/laptp1/secrets/your_spotify_secret.age -------------------------------------------------------------------------------- /hosts/t440p/add-proprietary.sh: -------------------------------------------------------------------------------- 1 | nix-store --add-fixed sha256 ~/Downloads/PragmataPro0.830.zip 2 | -------------------------------------------------------------------------------- /hosts/t440p/dns.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | with lib; 3 | with my; 4 | { 5 | # networking.nameservers = mkForce [ 6 | # "127.0.0.1" 7 | # "::1" 8 | # ]; 9 | # networking.networkmanager.dns = mkForce "none"; 10 | 11 | # systemd.services.dnsproxy = { 12 | # description = "dnsproxy"; 13 | # path = with pkgs; [ dnsproxy ]; 14 | # script = spaceConcat [ 15 | # "dnsproxy" 16 | # "-l 127.0.0.1" 17 | # "-u quic://$(cat ${config.age.secrets.nextdns.path})" 18 | # "-b 9.9.9.9" 19 | # "-b 1.1.1.1" 20 | # "--cache --cache-optimistic" 21 | # "--cache-size=${toString (megabytesToBytes 50)}" 22 | # "--cache-min-ttl=${toString (hoursToSeconds 10)}" 23 | # "--cache-max-ttl=${toString (hoursToSeconds 96)}" 24 | # "--http3" 25 | # ]; 26 | # wantedBy = [ "multi-user.target" ]; 27 | # }; 28 | } 29 | -------------------------------------------------------------------------------- /hosts/t440p/jack_retask/hda-jack-retask.fw: -------------------------------------------------------------------------------- 1 | [codec] 2 | 0x10ec0292 0x17aa220e 0 3 | 4 | [pincfg] 5 | 0x12 0x90a60130 6 | 0x13 0x40000000 7 | 0x14 0x90170110 8 | 0x15 0x0321101f 9 | 0x16 0x21211010 10 | 0x18 0x411111f0 11 | 0x19 0x21a11010 12 | 0x1a 0x40a000f0 13 | 0x1b 0x411111f0 14 | 0x1d 0x40738105 15 | 0x1e 0x411111f0 16 | -------------------------------------------------------------------------------- /hosts/t440p/jack_retask/jack_retask.nix: -------------------------------------------------------------------------------- 1 | # Reconfigures sound card so it won't mute internal 2 | # microphone when headphones are plugged in 3 | _: 4 | let 5 | soundCard = "/sys/class/sound/hwC2D0"; 6 | in 7 | { 8 | # hardware.firmware = [ ( pkgs.writeTextDir "/lib/firmware/hda-jack-retask.fw" ( builtins.readFile ./hda-jack-retask.fw ) ) ]; 9 | systemd.services.jack-retask = { 10 | wantedBy = [ "multi-user.target" ]; 11 | before = [ "multi-user.target" ]; 12 | 13 | script = '' 14 | ( 15 | echo 0x1a 0x40a000f0 16 | )>${soundCard}/user_pin_configs 17 | echo 1 > ${soundCard}/reconfig 18 | ''; 19 | serviceConfig = { 20 | Type = "oneshot"; 21 | Restart = "on-failure"; 22 | }; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /hosts/t440p/modules/default.nix: -------------------------------------------------------------------------------- 1 | { ... }: 2 | 3 | { 4 | imports = [ ./nginx.nix ]; 5 | } 6 | -------------------------------------------------------------------------------- /hosts/t440p/mongodb.nix: -------------------------------------------------------------------------------- 1 | { lib, pkgs, ... }: 2 | with lib; 3 | with lib.my; 4 | { 5 | user.packages = with pkgs; [ 6 | mongosh 7 | mongodb-tools 8 | mongodb-compass 9 | ]; 10 | 11 | services = { 12 | # mongodb = enabled // {}; 13 | # let it be docker. 14 | }; 15 | } 16 | -------------------------------------------------------------------------------- /hosts/t440p/phone_cam.nix: -------------------------------------------------------------------------------- 1 | # Virtual camera and mic 2 | { config, ... }: 3 | { 4 | boot.extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback.out ]; 5 | boot.kernelModules = [ 6 | "v4l2loopback" 7 | "snd-aloop" 8 | ]; 9 | boot.extraModprobeConfig = ''options v4l2loopback exclusive_caps=1 card_label="Virtual Camera"''; 10 | } 11 | # ffmpeg -hide_banner -vcodec mjpeg -framerate 60 -s 1280x720 -i /dev/video1 -vcodec rawvideo -vf "format=yuv420p,boxblur=1" -f v4l2 /dev/video0 12 | # ffmpeg -hide_banner -vcodec mjpeg -framerate 60 -s 1280x720 -i /dev/video1 -vcodec rawvideo -vf "format=yuv420p,boxblur=1,hflip" -f v4l2 /dev/video0 13 | -------------------------------------------------------------------------------- /hosts/t440p/secrets/nextdns.age: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lenivaya/dotfiles/1261ccc34d851d40e23728aa15243f8e6b0a0f9a/hosts/t440p/secrets/nextdns.age -------------------------------------------------------------------------------- /hosts/t440p/secrets/secrets.nix: -------------------------------------------------------------------------------- 1 | let 2 | key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKJWZChgyuytRTYKH/TkMY0rS7QTUXzdlSfa0SRSrqK/"; 3 | key2 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFd9g1in9f8odPZ7GakncXW1rYumYrRz4x5DqnyVgvFd root@t440p"; 4 | in 5 | { 6 | "nextdns.age".publicKeys = [ 7 | key 8 | key2 9 | ]; 10 | } 11 | -------------------------------------------------------------------------------- /hosts/t480/add-proprietary.sh: -------------------------------------------------------------------------------- 1 | nix-store --add-fixed sha256 ~/Downloads/upwork_5.8.0.35_amd64.deb 2 | nix-store --add-fixed sha256 ~/Downloads/PragmataPro0.830.zip 3 | -------------------------------------------------------------------------------- /hosts/t480/fingerprint/calib-data.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lenivaya/dotfiles/1261ccc34d851d40e23728aa15243f8e6b0a0f9a/hosts/t480/fingerprint/calib-data.bin -------------------------------------------------------------------------------- /hosts/t480/phone_cam.nix: -------------------------------------------------------------------------------- 1 | # Virtual camera and mic 2 | { config, ... }: 3 | { 4 | boot.extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback.out ]; 5 | boot.kernelModules = [ 6 | "v4l2loopback" 7 | "snd-aloop" 8 | ]; 9 | boot.extraModprobeConfig = ''options v4l2loopback exclusive_caps=1 card_label="Virtual Camera"''; 10 | security.polkit.enable = true; 11 | } 12 | # ffmpeg -hide_banner -vcodec mjpeg -framerate 60 -s 1280x720 -i /dev/video1 -vcodec rawvideo -vf "format=yuv420p,boxblur=1" -f v4l2 /dev/video0 13 | # ffmpeg -hide_banner -vcodec mjpeg -framerate 60 -s 1280x720 -i /dev/video1 -vcodec rawvideo -vf "format=yuv420p,boxblur=1,hflip" -f v4l2 /dev/video0 14 | -------------------------------------------------------------------------------- /lib/attrs.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | with builtins; 3 | with lib; 4 | rec { 5 | # attrsToList :: attrs -> attrs 6 | attrsToList = attrs: mapAttrsToList (name: value: { inherit name value; }) attrs; 7 | 8 | # mapFilterAttrs :: 9 | # (name -> value -> bool) 10 | # (name -> value -> { name = any; value = any; }) 11 | # attrs 12 | mapFilterAttrs = 13 | pred: f: attrs: 14 | filterAttrs pred (mapAttrs' f attrs); 15 | 16 | # Generate an attribute set by mapping a function over a list of values. 17 | genAttrs' = values: f: listToAttrs (map f values); 18 | 19 | # anyAttrs :: (name -> value -> bool) attrs -> bool 20 | anyAttrs = pred: attrs: any (attr: pred attr.name attr.value) (attrsToList attrs); 21 | 22 | # countAttrs :: (name -> value -> bool) attrs 23 | countAttrs = pred: attrs: count (attr: pred attr.name attr.value) (attrsToList attrs); 24 | } 25 | -------------------------------------------------------------------------------- /lib/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs, 3 | lib, 4 | pkgs, 5 | system, 6 | ... 7 | }: 8 | let 9 | inherit (lib) makeExtensible attrValues foldr; 10 | inherit (modules) mapModules; 11 | 12 | modules = import ./modules.nix { 13 | inherit lib; 14 | self.attrs = import ./attrs.nix { 15 | inherit lib; 16 | self = { }; 17 | }; 18 | }; 19 | 20 | mylib = makeExtensible ( 21 | self: 22 | mapModules ./. ( 23 | file: 24 | import file { 25 | inherit 26 | self 27 | lib 28 | pkgs 29 | inputs 30 | system 31 | ; 32 | } 33 | ) 34 | ); 35 | in 36 | mylib.extend (_self: super: foldr (a: b: a // b) { } (attrValues super)) 37 | -------------------------------------------------------------------------------- /lib/files.nix: -------------------------------------------------------------------------------- 1 | _: { 2 | # To use with system.userActivationScripts. 3 | linkIfNotExist = path: pathToLink: '' 4 | if ! [ -e ${path} ]; then 5 | ln -s ${pathToLink} ${path} 6 | fi 7 | ''; 8 | 9 | forceLink = path: pathToLink: '' 10 | if [ -e ${path} ]; then 11 | rm -rf ${path} 12 | fi 13 | ln -s ${pathToLink} ${path} 14 | ''; 15 | 16 | forceLinkImpure = path: pathToLink: '' 17 | if [ -e ${path} ]; then 18 | rm -rf ${path} 19 | fi 20 | cat ${pathToLink} > ${path} 21 | ''; 22 | 23 | createDirIfNotExist = path: '' 24 | if ! [ -d ${path} ]; then 25 | mkdir -p ${path} 26 | fi 27 | ''; 28 | } 29 | -------------------------------------------------------------------------------- /lib/nixos.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs, 3 | lib, 4 | pkgs, 5 | ... 6 | }: 7 | with lib; 8 | with lib.my; 9 | let 10 | sys = "x86_64-linux"; 11 | in 12 | { 13 | mkHost = 14 | path: 15 | attrs@{ 16 | system ? sys, 17 | modules ? [ ], 18 | ... 19 | }: 20 | nixosSystem { 21 | inherit system; 22 | specialArgs = { 23 | inherit lib inputs system; 24 | }; 25 | modules = [ 26 | { 27 | nixpkgs.pkgs = pkgs; 28 | networking.hostName = mkDefault (removeSuffix ".nix" (baseNameOf path)); 29 | } 30 | (filterAttrs ( 31 | n: _v: 32 | !elem n [ 33 | "system" 34 | "modules" 35 | ] 36 | ) attrs) 37 | ../. # /default.nix 38 | (import path) 39 | ] ++ modules; 40 | }; 41 | 42 | mapHosts = dir: attrs: mapModules dir (hostPath: mkHost hostPath attrs); 43 | } 44 | -------------------------------------------------------------------------------- /lib/numbers.nix: -------------------------------------------------------------------------------- 1 | _: { 2 | pow = 3 | base: exponent: 4 | assert (builtins.isInt base) && (builtins.isInt exponent); 5 | assert exponent > 0; 6 | builtins.foldl' (x: _: x * base) 1 (builtins.genList _ exponent); 7 | 8 | MHz = x: x * 1000; 9 | 10 | megabytesToBytes = x: 1024 * 1024 * x; 11 | 12 | gigabytesToMegabytes = x: 1024 * x; 13 | 14 | hoursToSeconds = x: x * 3600; 15 | } 16 | -------------------------------------------------------------------------------- /lib/options.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | let 3 | inherit (lib) 4 | mkOption 5 | types 6 | foldr 7 | unique 8 | mkIf 9 | ; 10 | in 11 | rec { 12 | mkOpt = type: default: mkOption { inherit type default; }; 13 | 14 | mkOpt' = 15 | type: default: description: 16 | mkOption { inherit type default description; }; 17 | 18 | mkBoolOpt = 19 | default: 20 | mkOption { 21 | inherit default; 22 | type = types.bool; 23 | example = true; 24 | }; 25 | 26 | disabled = { 27 | enable = false; 28 | }; 29 | enabled' = otherThings: { enable = true; } // otherThings; 30 | enabled = enabled' { }; 31 | 32 | ifEnabled = cfg: mkIf cfg.enable; 33 | 34 | valueForEach = names: value: foldr (name: acc: acc // { "${name}" = value; }) { } (unique names); 35 | } 36 | -------------------------------------------------------------------------------- /lib/services.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | with lib; 3 | { 4 | # make a service that is a part of the graphical session target 5 | mkGraphicalService = recursiveUpdate { 6 | partOf = [ "graphical-session.target" ]; 7 | after = [ "graphical-session.target" ]; 8 | wantedBy = [ "graphical-session.target" ]; 9 | }; 10 | 11 | disableService = service: { systemd.services."${service}".wantedBy = mkForce [ ]; }; 12 | disableUserService = service: { systemd.user.services."${service}".wantedBy = mkForce [ ]; }; 13 | } 14 | -------------------------------------------------------------------------------- /lib/strings.nix: -------------------------------------------------------------------------------- 1 | _: rec { 2 | comcat = builtins.concatStringsSep ","; 3 | spaceConcat = list: builtins.concatStringsSep " " list; 4 | 5 | isEmptyString = str: str == ""; 6 | notEmptyString = str: !(isEmptyString str); 7 | 8 | # Helper for shell environment variables that need proper expansion 9 | # Example: envVar "XDG_CONFIG_HOME" -> "${XDG_CONFIG_HOME}" 10 | envVar = name: "$\{${name}}"; 11 | } 12 | -------------------------------------------------------------------------------- /modules/desktop/apps/discord.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | pkgs, 5 | ... 6 | }: 7 | with lib; 8 | with lib.my; 9 | let 10 | cfg = config.modules.desktop.apps.discord; 11 | in 12 | { 13 | options.modules.desktop.apps.discord.enable = mkBoolOpt false; 14 | 15 | config = mkIf cfg.enable { 16 | user.packages = 17 | let 18 | discord' = wrapWithFlags "legcord" (getExe' pkgs.legcord "legcord") ( 19 | spaceConcat config.modules.desktop.browsers.chromium.commandLineArgs 20 | ); 21 | in 22 | [ discord' ]; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /modules/desktop/apps/gnome-circle.nix: -------------------------------------------------------------------------------- 1 | # I like some gnome apps 2 | { 3 | config, 4 | lib, 5 | pkgs, 6 | ... 7 | }: 8 | with lib; 9 | with lib.my; 10 | let 11 | cfg = config.modules.desktop.apps.gnome-circle; 12 | in 13 | { 14 | options.modules.desktop.apps.gnome-circle.enable = mkBoolOpt false; 15 | 16 | config = mkIf cfg.enable { 17 | user.packages = with pkgs; [ 18 | junction 19 | blanket # ambient sounds 20 | # wike 21 | metadata-cleaner 22 | gnome-obfuscate 23 | czkawka 24 | # pdfarranger 25 | ]; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /modules/desktop/apps/sxiv.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | pkgs, 5 | ... 6 | }: 7 | with lib; 8 | with lib.my; 9 | let 10 | inherit (config.dotfiles) configDir; 11 | in 12 | { 13 | config = mkIf config.modules.desktop.enable { 14 | user.packages = with pkgs; [ 15 | nsxiv 16 | dmenu 17 | ]; 18 | # environment.shellAliases.sxiv = "nsxiv"; 19 | 20 | home.configFile."nsxiv" = { 21 | source = "${configDir}/sxiv"; 22 | recursive = true; 23 | }; 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /modules/desktop/browsers/brave.nix: -------------------------------------------------------------------------------- 1 | # modules/browser/brave.nix --- https://publishers.basicattentiontoken.org 2 | # 3 | # A FOSS and privacy-minded browser. 4 | { 5 | config, 6 | lib, 7 | pkgs, 8 | ... 9 | }: 10 | with lib; 11 | with lib.my; 12 | let 13 | cfg = config.modules.desktop.browsers.brave; 14 | in 15 | { 16 | options.modules.desktop.browsers.brave.enable = mkBoolOpt false; 17 | 18 | config = mkIf cfg.enable { 19 | user.packages = with pkgs; [ 20 | brave 21 | (makeDesktopItem { 22 | name = "brave-private"; 23 | desktopName = "Brave Web Browser"; 24 | genericName = "Open a private Brave window"; 25 | icon = "brave"; 26 | exec = "${getExe brave} --incognito"; 27 | categories = [ "Network" ]; 28 | }) 29 | ]; 30 | }; 31 | } 32 | -------------------------------------------------------------------------------- /modules/desktop/browsers/default.nix: -------------------------------------------------------------------------------- 1 | { config, lib, ... }: 2 | with lib; 3 | with lib.my; 4 | let 5 | cfg = config.modules.desktop.browsers; 6 | in 7 | { 8 | options.modules.desktop.browsers = { 9 | default = mkOpt (with types; nullOr str) null; 10 | }; 11 | 12 | config = mkIf (cfg.default != null) { env.BROWSER = cfg.default; }; 13 | } 14 | -------------------------------------------------------------------------------- /modules/desktop/fonts/ibmsevka.nix: -------------------------------------------------------------------------------- 1 | # Iosevka as monospace, IBM Plex as sans and serif 2 | { 3 | pkgs, 4 | config, 5 | lib, 6 | ... 7 | }: 8 | with lib; 9 | with lib.my; 10 | let 11 | inherit (config.modules.desktop.fonts) ibmsevka; 12 | in 13 | { 14 | options.modules.desktop.fonts.ibmsevka.enable = mkBoolOpt false; 15 | 16 | config = mkIf ibmsevka.enable { 17 | fonts.packages = with pkgs; [ 18 | iosevka-bin 19 | ibm-plex 20 | ]; 21 | 22 | fonts.fontconfig.defaultFonts = mkForce { 23 | monospace = [ "Iosevka" ]; 24 | sansSerif = [ "IBM Plex Sans" ]; 25 | serif = [ "IBM Plex Serif" ]; 26 | }; 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /modules/desktop/fonts/iosevka-full-mono.nix: -------------------------------------------------------------------------------- 1 | { 2 | pkgs, 3 | config, 4 | lib, 5 | ... 6 | }: 7 | with lib; 8 | with lib.my; 9 | let 10 | inherit (config.modules.desktop.fonts) iosevka-full-mono; 11 | in 12 | { 13 | options.modules.desktop.fonts.iosevka-full-mono.enable = mkBoolOpt false; 14 | 15 | config = mkIf iosevka-full-mono.enable { 16 | fonts.packages = with pkgs; [ iosevka-bin ]; 17 | 18 | fonts.fontconfig.defaultFonts = mkForce { 19 | monospace = [ "Iosevka" ]; 20 | sansSerif = [ "Iosevka" ]; 21 | serif = [ "Iosevka" ]; 22 | }; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /modules/desktop/fonts/iosevka.nix: -------------------------------------------------------------------------------- 1 | { 2 | pkgs, 3 | config, 4 | lib, 5 | ... 6 | }: 7 | with lib; 8 | with lib.my; 9 | let 10 | inherit (config.modules.desktop.fonts) iosevka; 11 | in 12 | { 13 | options.modules.desktop.fonts.iosevka.enable = mkBoolOpt false; 14 | 15 | config = mkIf iosevka.enable { 16 | fonts.packages = with pkgs; [ 17 | iosevka-bin 18 | (iosevka-bin.override { variant = "Aile"; }) 19 | (iosevka-bin.override { variant = "Etoile"; }) 20 | ]; 21 | 22 | fonts.fontconfig.defaultFonts = mkForce { 23 | monospace = [ "Iosevka" ]; 24 | sansSerif = [ "Iosevka Aile" ]; 25 | serif = [ "Iosevka Etoile" ]; 26 | }; 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /modules/desktop/fonts/pragmasevka.nix: -------------------------------------------------------------------------------- 1 | # Iosevka configured to look more like pragmata pro 2 | { 3 | pkgs, 4 | config, 5 | lib, 6 | ... 7 | }: 8 | with lib; 9 | with lib.my; 10 | let 11 | inherit (config.modules.desktop.fonts) pragmasevka; 12 | in 13 | { 14 | options.modules.desktop.fonts.pragmasevka.enable = mkBoolOpt false; 15 | 16 | config = mkIf pragmasevka.enable { 17 | fonts.packages = with pkgs; [ my.pragmasevka ]; 18 | 19 | fonts.fontconfig.defaultFonts = mkForce { 20 | monospace = [ "Pragmasevka" ]; 21 | sansSerif = [ "Pragmasevka" ]; 22 | serif = [ "Pragmasevka" ]; 23 | }; 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /modules/desktop/fonts/pragmata_pro.nix: -------------------------------------------------------------------------------- 1 | { 2 | pkgs, 3 | config, 4 | lib, 5 | ... 6 | }: 7 | with lib; 8 | with lib.my; 9 | let 10 | inherit (config.modules.desktop.fonts) pragmata; 11 | in 12 | { 13 | options.modules.desktop.fonts.pragmata.enable = mkBoolOpt false; 14 | 15 | config = mkIf pragmata.enable { 16 | fonts.packages = with pkgs; [ my.pragmatapro ]; 17 | 18 | fonts.fontconfig.defaultFonts = mkForce { 19 | monospace = [ "PragmataPro Mono Liga Regular" ]; 20 | sansSerif = [ "PragmataPro Liga Regular" ]; 21 | serif = [ "PragmataPro Liga Regular" ]; 22 | }; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /modules/desktop/media/ncmpcpp.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | options, 4 | lib, 5 | pkgs, 6 | ... 7 | }: 8 | with lib; 9 | with lib.my; 10 | let 11 | cfg = config.modules.desktop.media.ncmpcpp; 12 | inherit (config.dotfiles) configDir; 13 | in 14 | { 15 | options.modules.desktop.media.ncmpcpp = { 16 | enable = mkBoolOpt false; 17 | # modipy.enable = mkBoolOpt false; 18 | }; 19 | 20 | config = mkIf cfg.enable { 21 | user.packages = with pkgs; [ (ncmpcpp.override { visualizerSupport = true; }) ]; 22 | 23 | env.NCMPCPP_HOME = "$XDG_CONFIG_HOME/ncmpcpp"; 24 | 25 | # Symlink these one at a time because ncmpcpp writes other files to 26 | # ~/.config/ncmpcpp, so it needs to be writeable. 27 | home.configFile = { 28 | "ncmpcpp/config".source = "${configDir}/ncmpcpp/config"; 29 | "ncmpcpp/bindings".source = "${configDir}/ncmpcpp/bindings"; 30 | }; 31 | }; 32 | } 33 | -------------------------------------------------------------------------------- /modules/desktop/term/alacritty.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | pkgs, 5 | ... 6 | }: 7 | with lib; 8 | with lib.my; 9 | let 10 | cfg = config.modules.desktop.term.alacritty; 11 | inherit (config.dotfiles) configDir; 12 | in 13 | { 14 | options.modules.desktop.term.alacritty.enable = mkBoolOpt false; 15 | 16 | config = mkIf cfg.enable { 17 | user.packages = with pkgs; [ alacritty ]; 18 | 19 | home.configFile."alacritty" = { 20 | source = "${configDir}/alacritty"; 21 | recursive = true; 22 | }; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /modules/desktop/term/default.nix: -------------------------------------------------------------------------------- 1 | { config, lib, ... }: 2 | with lib; 3 | with lib.my; 4 | let 5 | cfg = config.modules.desktop.term; 6 | in 7 | { 8 | options.modules.desktop.term = { 9 | default = mkOpt types.str "xterm"; 10 | }; 11 | 12 | config = { 13 | services.xserver.desktopManager.xterm.enable = mkDefault (cfg.default == "xterm"); 14 | 15 | environment.sessionVariables.TERM = mkForce cfg.default; 16 | environment.variables.TERM = mkForce cfg.default; 17 | env.TERM = mkForce cfg.default; 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /modules/desktop/vm/virtualbox.nix: -------------------------------------------------------------------------------- 1 | # modules/desktop/vm/virtualbox.nix 2 | # 3 | # For testing or building software on other OSes. If I find out how to get macOS 4 | # on qemu/libvirt I'd be happy to leave virtualbox behind. 5 | { config, lib, ... }: 6 | with lib; 7 | with lib.my; 8 | let 9 | cfg = config.modules.desktop.vm.virtualbox; 10 | in 11 | { 12 | options.modules.desktop.vm.virtualbox = { 13 | enable = mkBoolOpt false; 14 | }; 15 | 16 | config = mkIf cfg.enable { 17 | virtualisation.virtualbox.host = enabled // { 18 | # urg, takes so long to build, but needed for macOS guest 19 | # enableExtensionPack = true; 20 | }; 21 | 22 | user.extraGroups = [ "vboxusers" ]; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /modules/desktop/vm/wine.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | pkgs, 5 | ... 6 | }: 7 | with lib; 8 | with lib.my; 9 | let 10 | cfg = config.modules.desktop.vm.wine; 11 | in 12 | { 13 | options.modules.desktop.vm.wine.enable = mkBoolOpt false; 14 | 15 | config = mkIf cfg.enable { 16 | environment.systemPackages = with pkgs; [ 17 | wineWowPackages.staging 18 | winetricks 19 | bottles 20 | ]; 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /modules/desktop/xdg/handlr.nix: -------------------------------------------------------------------------------- 1 | # Default xdg-open from xdg-utils sometimes works like 2 | # pure garbage. This is a simple wrapper that uses handlr-regex 3 | # instead [1]. 4 | # 5 | # [1]: https://wiki.archlinux.org/title/default_applications#handlr 6 | { 7 | config, 8 | lib, 9 | pkgs, 10 | ... 11 | }: 12 | with lib; 13 | with lib.my; 14 | let 15 | cfg = config.modules.desktop.xdg.handlr; 16 | 17 | shadowedXdgOpen = pkgs.writeShellScriptBin "xdg-open" '' 18 | ${getExe pkgs.handlr-regex} open "$@" 19 | ''; 20 | in 21 | { 22 | options.modules.desktop.xdg.handlr.enable = mkBoolOpt false; 23 | 24 | config = mkIf cfg.enable { 25 | environment.systemPackages = with pkgs; [ 26 | handlr-regex 27 | shadowedXdgOpen 28 | ]; 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /modules/desktop/xorg/compositor.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | config, 4 | inputs, 5 | system, 6 | ... 7 | }: 8 | with lib; 9 | with lib.my; 10 | let 11 | cfg = config.modules.desktop.compositor; 12 | inherit (config.dotfiles) configDir; 13 | in 14 | { 15 | options.modules.desktop.compositor.enable = mkBoolOpt false; 16 | 17 | config = mkIf cfg.enable { 18 | home.services.picom = enabled; 19 | home.configFile."picom/picom.conf".source = mkForce "${configDir}/picom/picom.conf"; 20 | 21 | nixpkgs.overlays = [ 22 | (_final: _prev: { 23 | picom = optimizePkg inputs.picom.packages."${system}".picom; 24 | }) 25 | ]; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /modules/develop/cc.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | pkgs, 5 | ... 6 | }: 7 | with lib; 8 | with lib.my; 9 | let 10 | cfg = config.modules.dev.cc; 11 | in 12 | { 13 | options.modules.dev.cc.enable = mkBoolOpt false; 14 | 15 | config = mkIf cfg.enable { 16 | user.packages = with pkgs; [ 17 | clang 18 | clang-tools 19 | gcc 20 | bear 21 | gdb 22 | cmake 23 | llvmPackages.libcxx 24 | ccls 25 | rtags 26 | llvm 27 | ]; 28 | }; 29 | } 30 | -------------------------------------------------------------------------------- /modules/develop/ccache.nix: -------------------------------------------------------------------------------- 1 | { config, lib, ... }: 2 | with lib; 3 | with lib.my; 4 | let 5 | cfg = config.modules.dev.ccache; 6 | in 7 | { 8 | options.modules.dev.ccache.enable = mkBoolOpt false; 9 | 10 | config = mkIf cfg.enable { 11 | programs.ccache.enable = true; 12 | nix.settings.extra-sandbox-paths = [ config.programs.ccache.cacheDir ]; 13 | }; 14 | } 15 | -------------------------------------------------------------------------------- /modules/develop/clojure.nix: -------------------------------------------------------------------------------- 1 | # modules/dev/clojure.nix --- https://clojure.org/ 2 | # 3 | # I don't use clojure. Perhaps one day... 4 | { 5 | config, 6 | lib, 7 | pkgs, 8 | ... 9 | }: 10 | with lib; 11 | with lib.my; 12 | let 13 | cfg = config.modules.dev.clojure; 14 | in 15 | { 16 | options.modules.dev.clojure.enable = mkBoolOpt false; 17 | 18 | config = mkIf cfg.enable { 19 | user.packages = with pkgs; [ 20 | clojure 21 | joker 22 | leiningen 23 | ]; 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /modules/develop/common-lisp.nix: -------------------------------------------------------------------------------- 1 | # modules/dev/common-lisp.nix --- https://common-lisp.net/ 2 | # 3 | # Mostly for my stumpwm config, and the occasional dip into lisp gamedev. 4 | { 5 | config, 6 | lib, 7 | pkgs, 8 | ... 9 | }: 10 | with lib; 11 | with lib.my; 12 | let 13 | cfg = config.modules.dev.common-lisp; 14 | in 15 | { 16 | options.modules.dev.common-lisp.enable = mkBoolOpt false; 17 | 18 | config = mkIf cfg.enable { 19 | user.packages = with pkgs; [ 20 | sbcl 21 | lispPackages.quicklisp 22 | ]; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /modules/develop/default.nix: -------------------------------------------------------------------------------- 1 | { lib, pkgs, ... }: 2 | with lib; 3 | with lib.my; 4 | { 5 | # modules.dev = { 6 | # nix = enabled; 7 | # }; 8 | 9 | user.packages = with pkgs; [ just ]; 10 | 11 | # Is needed too often to not include it in default environment 12 | env.LD_LIBRARY_PATH = "${pkgs.stdenv.cc.cc.lib}/lib"; 13 | } 14 | -------------------------------------------------------------------------------- /modules/develop/elixir.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | pkgs, 5 | ... 6 | }: 7 | with lib; 8 | with lib.my; 9 | let 10 | cfg = config.modules.dev.elixir; 11 | in 12 | { 13 | options.modules.dev.elixir.enable = mkBoolOpt false; 14 | 15 | config = mkIf cfg.enable { 16 | user.packages = with pkgs; [ 17 | erlang 18 | elixir 19 | elixir_ls 20 | inotify-tools 21 | ]; 22 | }; 23 | } 24 | -------------------------------------------------------------------------------- /modules/develop/go.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | pkgs, 5 | ... 6 | }: 7 | with lib; 8 | with lib.my; 9 | let 10 | cfg = config.modules.dev.go; 11 | in 12 | { 13 | options.modules.dev.go.enable = mkBoolOpt false; 14 | 15 | config = mkIf cfg.enable { 16 | home.programs.go = enabled // { 17 | package = pkgs.go; 18 | goBin = ".go/bin"; 19 | goPath = ".go"; 20 | }; 21 | 22 | user.packages = with pkgs; [ 23 | gotools 24 | gopls 25 | ]; 26 | 27 | env = { 28 | PATH = [ "$GOPATH/bin" ]; 29 | }; 30 | }; 31 | } 32 | -------------------------------------------------------------------------------- /modules/develop/kuber.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | pkgs, 4 | config, 5 | ... 6 | }: 7 | with lib; 8 | with lib.my; 9 | let 10 | cfg = config.modules.dev.kuber; 11 | in 12 | { 13 | options.modules.dev.kuber.enable = mkBoolOpt false; 14 | 15 | config = mkIf cfg.enable { 16 | user.packages = with pkgs; [ 17 | kubectl 18 | kubernetes-helm 19 | k9s 20 | minikube 21 | kustomize 22 | kubectx # Includes kubens 23 | # Add other useful tools here, e.g.: 24 | kind 25 | stern 26 | ]; 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /modules/develop/nix.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | pkgs, 5 | ... 6 | }: 7 | with lib; 8 | with lib.my; 9 | let 10 | cfg = config.modules.dev.nix; 11 | in 12 | { 13 | options.modules.dev.nix.enable = mkBoolOpt false; 14 | 15 | config = mkIf cfg.enable { 16 | user.packages = with pkgs; [ 17 | nil 18 | nix-index 19 | nix-output-monitor 20 | nix-tree 21 | # nix-top 22 | 23 | niv 24 | cachix 25 | manix 26 | 27 | # nixpkgs-fmt 28 | nixfmt-rfc-style 29 | statix 30 | deadnix 31 | ]; 32 | 33 | environment.shellAliases = { 34 | nixdev = "nix develop -c $SHELL"; 35 | nixdevenv = "nix develop --impure -c $SHELL"; 36 | }; 37 | }; 38 | } 39 | -------------------------------------------------------------------------------- /modules/develop/php.nix: -------------------------------------------------------------------------------- 1 | # https://shyim.me/blog/devenv-compose-developer-environment-for-php-with-nix/ 2 | { 3 | config, 4 | lib, 5 | pkgs, 6 | ... 7 | }: 8 | with lib; 9 | with lib.my; 10 | let 11 | cfg = config.modules.dev.php; 12 | in 13 | { 14 | options.modules.dev.php = with types; { 15 | enable = mkBoolOpt false; 16 | package = mkOpt package pkgs.php; 17 | }; 18 | 19 | config = mkIf cfg.enable { 20 | user.packages = 21 | with pkgs; 22 | let 23 | php' = cfg.package; 24 | in 25 | [ 26 | php' 27 | phpactor 28 | nodePackages.intelephense 29 | ] 30 | ++ (with php'.packages; [ 31 | composer 32 | php-cs-fixer 33 | php-codesniffer 34 | psalm 35 | phpstan 36 | ]); 37 | }; 38 | } 39 | -------------------------------------------------------------------------------- /modules/develop/shell.nix: -------------------------------------------------------------------------------- 1 | # modules/dev/shell.nix --- http://zsh.sourceforge.net/ 2 | # 3 | # Shell script programmers are strange beasts. Writing programs in a language 4 | # that wasn't intended as a programming language. Alas, it is not for us mere 5 | # mortals to question the will of the ancient ones. If they want shell programs, 6 | # they get shell programs. 7 | { 8 | config, 9 | lib, 10 | pkgs, 11 | ... 12 | }: 13 | with lib; 14 | with lib.my; 15 | let 16 | cfg = config.modules.dev.shell; 17 | in 18 | { 19 | options.modules.dev.shell.enable = mkBoolOpt false; 20 | 21 | config = mkIf cfg.enable { 22 | user.packages = with pkgs; [ 23 | shellcheck 24 | shfmt 25 | ]; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /modules/develop/typst.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | pkgs, 5 | ... 6 | }: 7 | with lib; 8 | with lib.my; 9 | let 10 | cfg = config.modules.dev.typst; 11 | in 12 | { 13 | options.modules.dev.typst.enable = mkBoolOpt false; 14 | 15 | config = mkIf cfg.enable { 16 | user.packages = with pkgs; [ 17 | typst 18 | tinymist 19 | typst-live 20 | typstyle 21 | ]; 22 | }; 23 | } 24 | -------------------------------------------------------------------------------- /modules/editors/default.nix: -------------------------------------------------------------------------------- 1 | { config, lib, ... }: 2 | with lib; 3 | with lib.my; 4 | let 5 | cfg = config.modules.editors; 6 | in 7 | { 8 | options.modules.editors = { 9 | default = mkOpt types.str "vim"; 10 | }; 11 | 12 | config = mkIf (cfg.default != null) { 13 | env = { 14 | EDITOR = cfg.default; 15 | VISUAL = cfg.default; 16 | }; 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /modules/editors/jetbrains/default.nix: -------------------------------------------------------------------------------- 1 | # https://scriptedalchemy.medium.com/speeding-up-intellij-webstorm-and-other-jetbrains-products-96a2abe6bf2 2 | # https://gist.github.com/HELWATANY/c86ac31128468267c16ff0ef9f740637 3 | { 4 | config, 5 | lib, 6 | inputs, 7 | ... 8 | }: 9 | with lib; 10 | with lib.my; 11 | let 12 | cfg = config.modules.editors.jetbrains; 13 | inherit (config.dotfiles) outOfStoreConfigDir; 14 | in 15 | { 16 | options.modules.editors.jetbrains = with types; { 17 | enable = mkBoolOpt false; 18 | packages = mkOpt (listOf package) [ ]; 19 | }; 20 | 21 | config = mkIf cfg.enable { 22 | user.packages = cfg.packages; 23 | 24 | system.userActivationScripts.linkIdeaVimRc = linkIfNotExist "~/.ideavimrc" "${outOfStoreConfigDir}/jetbrains/.ideavimrc"; 25 | 26 | home.file.".intellimacs".source = inputs.intellimacs; 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /modules/editors/neovim.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | pkgs, 5 | ... 6 | }: 7 | with lib; 8 | with lib.my; 9 | let 10 | cfg = config.modules.editors.neovim; 11 | inherit (config.dotfiles) outOfStoreConfigDir; 12 | in 13 | { 14 | options.modules.editors.neovim = { 15 | enable = mkBoolOpt false; 16 | }; 17 | 18 | config = mkIf cfg.enable { 19 | user.packages = with pkgs; [ 20 | neovim 21 | lua 22 | ripgrep 23 | ]; 24 | 25 | system.userActivationScripts.linkNvimConfig = linkIfNotExist "~/.config/nvim" "${outOfStoreConfigDir}/nvim"; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /modules/programs/nix-helper.nix: -------------------------------------------------------------------------------- 1 | { config, lib, ... }: 2 | with lib; 3 | with lib.my; 4 | let 5 | cfg = config.modules.programs.nix-helper; 6 | in 7 | { 8 | options.modules.programs.nix-helper.enable = mkBoolOpt false; 9 | 10 | config = mkIf cfg.enable { 11 | programs.nh = enabled // { 12 | flake = config.dotfiles.dir'; 13 | }; 14 | 15 | # Removing diff script from srvos 16 | system.activationScripts.update-diff.text = mkForce ""; 17 | 18 | # nixpkgs.overlays = [inputs.nh.overlays.default]; 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /modules/services/avizo.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | pkgs, 5 | ... 6 | }: 7 | with lib; 8 | with lib.my; 9 | let 10 | inherit (config.dotfiles) configDir; 11 | cfg = config.modules.services.avizo; 12 | in 13 | { 14 | options.modules.services.avizo.enable = mkBoolOpt false; 15 | 16 | config = mkIf cfg.enable { 17 | home.configFile."avizo" = { 18 | source = "${configDir}/avizo"; 19 | recursive = true; 20 | }; 21 | 22 | environment.systemPackages = with pkgs; [ avizo ]; 23 | # home.services.avizo = enabled; 24 | 25 | systemd.user.services.avizo = mkGraphicalService { 26 | description = "Notification daemon for volume and brightness"; 27 | 28 | path = with pkgs; [ avizo ]; 29 | script = "avizo-service"; 30 | }; 31 | }; 32 | } 33 | -------------------------------------------------------------------------------- /modules/services/clight.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | pkgs, 4 | config, 5 | ... 6 | }: 7 | with lib; 8 | with lib.my; 9 | { 10 | config = mkIf config.modules.desktop.isPureWM { 11 | services.clight = enabled // { 12 | settings = { 13 | verbose = false; 14 | dimmer.disabled = true; 15 | # gamma.long_transition = true; 16 | }; 17 | }; 18 | 19 | systemd.user.services.clight.path = with pkgs; [ gawk ]; 20 | 21 | # Hate those libddcutil logs when srgb mode is enabled on external monitor 22 | # and brightness could not be set by clightd 23 | systemd.services.clightd.serviceConfig.StandardOutput = mkForce "null"; 24 | systemd.services.clightd.serviceConfig.StandardError = mkForce "null"; 25 | systemd.services.clightd.serviceConfig.LogLevelMax = mkForce 2; # error 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /modules/services/clipcat.nix: -------------------------------------------------------------------------------- 1 | # Simple clipboard manager to be integrated with rofi/dmenu 2 | # FIXME BUG TODO https://github.com/xrelkd/clipcat/issues/434 3 | { 4 | config, 5 | lib, 6 | ... 7 | }: 8 | with lib; 9 | with lib.my; 10 | let 11 | inherit (config.dotfiles) configDir; 12 | cfg = config.modules.services.clipcat; 13 | in 14 | { 15 | options.modules.services.clipcat.enable = mkBoolOpt false; 16 | 17 | config = mkIf cfg.enable { 18 | services.clipcat = enabled; 19 | systemd.user.services.clipcat.serviceConfig = { 20 | Restart = "on-failure"; 21 | }; 22 | 23 | home.configFile."clipcat" = { 24 | source = "${configDir}/clipcat"; 25 | recursive = true; 26 | }; 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /modules/services/common.nix: -------------------------------------------------------------------------------- 1 | { 2 | pkgs, 3 | lib, 4 | config, 5 | ... 6 | }: 7 | with lib; 8 | with lib.my; 9 | { 10 | services = mkMerge [ 11 | { 12 | acpid = enabled; 13 | devmon = enabled; 14 | openssh = enabled; 15 | # earlyoom = enabled; 16 | 17 | # https://github.com/NixOS/nixpkgs/issues/135888 18 | nscd.enableNsncd = mkDefault true; 19 | } 20 | 21 | (mkIf config.this.isHeadful { udev.packages = [ pkgs.android-udev-rules ]; }) 22 | 23 | (mkIf config.modules.desktop.enable { 24 | xbanish = enabled; 25 | gnome.gnome-keyring = enabled; 26 | dbus.implementation = "broker"; 27 | geoclue2 = enabled; 28 | }) 29 | ]; 30 | } 31 | -------------------------------------------------------------------------------- /modules/services/flatpak.nix: -------------------------------------------------------------------------------- 1 | { config, lib, ... }: 2 | with lib; 3 | with lib.my; 4 | let 5 | cfg = config.modules.services.flatpak; 6 | in 7 | { 8 | options.modules.services.flatpak.enable = mkBoolOpt false; 9 | 10 | config = mkIf cfg.enable { 11 | services.flatpak = enabled; 12 | xdg.portal = enabled // { 13 | xdgOpenUsePortal = true; 14 | }; 15 | 16 | # user.packages = with pkgs; [gnome.gnome-software]; 17 | 18 | environment.sessionVariables.XDG_DATA_DIRS = [ "/var/lib/flatpak/exports/share" ]; 19 | 20 | home.file.".local/share/flatpak/overrides/global".text = '' 21 | [Context] 22 | filesystems=/run/current-system/sw/share/X11/fonts:ro;/nix/store:ro 23 | ''; 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /modules/services/greenclip.nix: -------------------------------------------------------------------------------- 1 | # Simple clipboard manager to be integrated with rofi/dmenu 2 | { config, lib, ... }: 3 | with lib; 4 | with lib.my; 5 | let 6 | cfg = config.modules.services.greenclip; 7 | in 8 | { 9 | options.modules.services.greenclip.enable = mkBoolOpt false; 10 | 11 | config = mkIf cfg.enable { services.greenclip = enabled; }; 12 | } 13 | -------------------------------------------------------------------------------- /modules/services/kdeconnect.nix: -------------------------------------------------------------------------------- 1 | { config, lib, ... }: 2 | with lib; 3 | with lib.my; 4 | let 5 | cfg = config.modules.services.kdeconnect; 6 | in 7 | { 8 | options.modules.services.kdeconnect.enable = mkBoolOpt false; 9 | 10 | config = mkIf cfg.enable { 11 | # Open ports 12 | networking = { 13 | firewall.allowedTCPPortRanges = [ 14 | { 15 | from = 1714; 16 | to = 1764; 17 | } 18 | ]; 19 | }; 20 | 21 | home.services.kdeconnect = enabled // { 22 | indicator = true; 23 | }; 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /modules/shell/aria2.nix: -------------------------------------------------------------------------------- 1 | _: { home.programs.aria2.enable = true; } 2 | -------------------------------------------------------------------------------- /modules/shell/direnv.nix: -------------------------------------------------------------------------------- 1 | { config, lib, ... }: 2 | with lib; 3 | with lib.my; 4 | let 5 | cfg = config.modules.shell.direnv; 6 | in 7 | { 8 | options.modules.shell.direnv.enable = mkBoolOpt false; 9 | 10 | config = mkIf cfg.enable { 11 | programs.direnv = enabled // { 12 | nix-direnv = enabled; 13 | silent = true; 14 | loadInNixShell = true; 15 | }; 16 | 17 | modules.shell.zsh.rcInit = ''eval "$(direnv hook zsh)"''; 18 | 19 | services.lorri = enabled; 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /modules/shell/fzf.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | pkgs, 4 | lib, 5 | ... 6 | }: 7 | with lib; 8 | with lib.my; 9 | let 10 | cfg = config.modules.shell.fzf; 11 | in 12 | { 13 | options.modules.shell.fzf.enable = mkBoolOpt false; 14 | 15 | config = mkIf cfg.enable { 16 | user.packages = with pkgs; [ fd ]; 17 | 18 | home.programs.fzf = enabled // { 19 | defaultCommand = "fd --type f"; 20 | changeDirWidgetCommand = "fd --type d"; 21 | defaultOptions = [ 22 | "--reverse" 23 | "--info=inline" 24 | "--border" 25 | "--margin=1" 26 | "--multi" 27 | ]; 28 | }; 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /modules/shell/gnupg.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | pkgs, 5 | ... 6 | }: 7 | with lib; 8 | with lib.my; 9 | let 10 | cfg = config.modules.shell.gnupg; 11 | in 12 | { 13 | options.modules.shell.gnupg = with types; { 14 | enable = mkBoolOpt false; 15 | cacheTTL = mkOpt int 3600; # 1hr 16 | }; 17 | 18 | config = mkIf cfg.enable (mkMerge [ 19 | { 20 | programs.gnupg.agent = enabled // { 21 | settings = { 22 | default-cache-ttl = cfg.cacheTTL; 23 | }; 24 | }; 25 | user.packages = with pkgs; [ tomb ]; 26 | } 27 | 28 | (mkIf config.this.isHeadful { 29 | programs.gnupg.agent.pinentryPackage = mkForce pkgs.pinentry-gnome3; 30 | user.packages = with pkgs; [ seahorse ]; 31 | }) 32 | ]); 33 | } 34 | -------------------------------------------------------------------------------- /modules/shell/pass.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | pkgs, 4 | lib, 5 | ... 6 | }: 7 | with lib; 8 | with lib.my; 9 | let 10 | cfg = config.modules.shell.pass; 11 | in 12 | { 13 | options.modules.shell.pass.enable = mkBoolOpt false; 14 | 15 | config = mkIf cfg.enable { 16 | user.packages = 17 | with pkgs; 18 | let 19 | pass' = pass.withExtensions ( 20 | exts: 21 | with exts; 22 | [ 23 | pass-otp 24 | pass-genphrase 25 | # pass-audit 26 | pass-import 27 | pass-update 28 | pass-file 29 | pass-checkup 30 | ] 31 | ++ optional config.modules.shell.gnupg.enable exts.pass-tomb 32 | ); 33 | in 34 | [ pass' ]; 35 | 36 | env.PASSWORD_STORE_DIR = "$HOME/.secrets/password-store"; 37 | }; 38 | } 39 | -------------------------------------------------------------------------------- /modules/shell/ranger.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | pkgs, 5 | ... 6 | }: 7 | with lib; 8 | with lib.my; 9 | let 10 | cfg = config.modules.shell.ranger; 11 | inherit (config.dotfiles) configDir; 12 | in 13 | { 14 | options.modules.shell.ranger.enable = mkBoolOpt false; 15 | 16 | config = mkIf cfg.enable { 17 | user.packages = with pkgs; [ 18 | ranger 19 | 20 | ueberzugpp 21 | poppler_utils 22 | zoxide 23 | ]; 24 | 25 | # Maybe some time 26 | # home.programs.pistol = 27 | # enabled 28 | # // { 29 | # associations = []; 30 | # }; 31 | 32 | home.configFile."ranger" = { 33 | source = "${configDir}/ranger"; 34 | recursive = true; 35 | }; 36 | }; 37 | } 38 | -------------------------------------------------------------------------------- /modules/shell/weather.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | pkgs, 4 | lib, 5 | ... 6 | }: 7 | with lib; 8 | with lib.my; 9 | let 10 | cfg = config.modules.shell.weather; 11 | in 12 | { 13 | options.modules.shell.weather.enable = mkBoolOpt false; 14 | 15 | config = mkIf cfg.enable { 16 | user.packages = with pkgs; [ wthrr ]; 17 | 18 | environment.shellAliases = { 19 | weather = "wthrr"; 20 | weather-hourly = "wthrr -f d"; 21 | weather-weekly = "wthrr -f w"; 22 | }; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /modules/shell/yazi.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | pkgs, 4 | config, 5 | ... 6 | }: 7 | with lib; 8 | with lib.my; 9 | let 10 | cfg = config.modules.shell.yazi; 11 | inherit (config.dotfiles) outOfStoreConfigDir; 12 | in 13 | { 14 | options.modules.shell.yazi.enable = mkBoolOpt false; 15 | 16 | config = mkIf cfg.enable { 17 | environment.systemPackages = with pkgs; [ 18 | yazi 19 | exiftool # general file info 20 | glow 21 | miller 22 | ouch 23 | sox 24 | xdragon 25 | ripdrag 26 | ]; 27 | 28 | # Embrace impurity and imperfection. 29 | system.userActivationScripts.linkYaziConfig = linkIfNotExist "~/.config/yazi" "${outOfStoreConfigDir}/yazi"; 30 | 31 | nixpkgs.overlays = [ 32 | (_final: _prev: { 33 | inherit (pkgs.unstable) 34 | yazi 35 | ; 36 | }) 37 | ]; 38 | }; 39 | } 40 | -------------------------------------------------------------------------------- /modules/system/boot/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | with lib; 3 | { 4 | config.boot = { 5 | # whether to enable support for Linux MD RAID arrays 6 | # I don't know why this defaults to true, how many people use RAID anyway? 7 | # also on > 23.11, this will throw a warning if neither MAILADDR nor PROGRAM are set 8 | swraid.enable = mkDefault false; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /modules/system/documentation.nix: -------------------------------------------------------------------------------- 1 | { config, lib, ... }: 2 | with lib; 3 | with lib.my; 4 | { 5 | config = mkMerge [ 6 | (mkIf config.this.isHeadful { 7 | home-manager.users.${config.user.name}.manual = { 8 | html.enable = false; 9 | json.enable = false; 10 | manpages.enable = true; 11 | }; 12 | 13 | documentation = { 14 | enable = true; 15 | doc.enable = false; 16 | info.enable = false; 17 | nixos = { 18 | enable = false; 19 | }; 20 | }; 21 | }) 22 | (mkIf config.this.isHeadless { 23 | home-manager.users.${config.user.name}.manual.manpages.enable = false; 24 | documentation.enable = false; 25 | }) 26 | ]; 27 | } 28 | -------------------------------------------------------------------------------- /modules/system/hardware/fingerprint.nix: -------------------------------------------------------------------------------- 1 | { config, lib, ... }: 2 | with lib; 3 | with lib.my; 4 | let 5 | cfg = config.modules.hardware.fingerprint; 6 | in 7 | { 8 | options.modules.hardware.fingerprint.enable = mkBoolOpt false; 9 | 10 | config = mkIf cfg.enable { 11 | services.fprintd = mkDefault enabled // { }; 12 | security.pam.services.login.fprintAuth = mkDefault true; 13 | security.pam.services.xscreensaver.fprintAuth = mkDefault true; 14 | }; 15 | } 16 | -------------------------------------------------------------------------------- /modules/system/hardware/kernel.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | with lib; 3 | with lib.my; 4 | { 5 | boot = { 6 | # I don't use it even on laptops. It's also /required/ to disable it for 7 | # ZFS[1]. 8 | # [1]: https://github.com/openzfs/zfs/issues/260 9 | # [1]: https://github.com/openzfs/zfs/issues/12842 10 | kernelParams = [ "hibernate=no" ]; 11 | }; 12 | 13 | # https://docs.kernel.org/admin-guide/mm/ksm.html 14 | hardware.ksm = enabled; 15 | } 16 | -------------------------------------------------------------------------------- /modules/system/network/iwd.nix: -------------------------------------------------------------------------------- 1 | # https://git.kernel.org/pub/scm/network/wireless/iwd.git/tree/src/iwd.config.rst 2 | { lib, ... }: 3 | with lib; 4 | with my; 5 | { 6 | networking.wireless.enable = mkForce false; 7 | networking.wireless.iwd = enabled // { 8 | settings = { 9 | Network = { 10 | EnableIPv6 = true; 11 | }; 12 | Settings = { 13 | AutoConnect = true; 14 | }; 15 | 16 | Rank.BandModifier5Ghz = 2.0; # prefer 5ghz 17 | 18 | # General.AddressRandomization = "once"; 19 | # General.AddressRandomizationRange = "full"; 20 | }; 21 | }; 22 | networking.networkmanager.wifi.backend = "iwd"; 23 | } 24 | -------------------------------------------------------------------------------- /modules/system/sysfs/default.nix: -------------------------------------------------------------------------------- 1 | { config, lib, ... }: 2 | with lib; 3 | # Adapted off sysctl.nix 4 | { 5 | options.boot.kernel.sysfs = mkOption { 6 | default = { }; 7 | type = types.attrs; 8 | }; 9 | 10 | config = { 11 | systemd.tmpfiles.rules = 12 | let 13 | formatString = x: if isBool x then if !x then "0" else "1" else builtins.toString x; 14 | 15 | toRule = path: value: "w ${path} - - - - ${formatString value}"; 16 | 17 | isLeaf = x: !(isAttrs x); 18 | cascadeTree = 19 | root: prefix: 20 | if isLeaf root then 21 | toRule prefix root 22 | else 23 | mapAttrsToList (n: v: cascadeTree v "${prefix}/${n}") root; 24 | in 25 | flatten (cascadeTree config.boot.kernel.sysfs ""); 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /overlays/.git-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lenivaya/dotfiles/1261ccc34d851d40e23728aa15243f8e6b0a0f9a/overlays/.git-keep -------------------------------------------------------------------------------- /overlays/dmenu/default.nix: -------------------------------------------------------------------------------- 1 | _final: prev: { 2 | dmenu = prev.dmenu.overrideAttrs (_oa: { 3 | src = prev.fetchFromGitHub { 4 | owner = "bakkeby"; 5 | repo = "dmenu-flexipatch"; 6 | rev = "76549d014ef6abdecb1d676e5d4de160f86ba2d9"; 7 | hash = "sha256-bZbMGA5w3gLMf/kOzy+ji8GNkGZ3Srt6TfKwK6BLc4A="; 8 | }; 9 | 10 | NIX_LDFLAGS = "-lm"; 11 | 12 | patches = [ ./0001-configure-patches.patch ]; 13 | }); 14 | } 15 | -------------------------------------------------------------------------------- /overlays/rofi-screenshot.nix: -------------------------------------------------------------------------------- 1 | final: prev: { 2 | rofi-screenshot = prev.rofi-screenshot.overrideAttrs (oa: { 3 | postFixup = '' 4 | wrapProgram $out/bin/${oa.pname} \ 5 | --set PATH ${ 6 | with final; 7 | lib.makeBinPath [ 8 | libnotify 9 | slop 10 | ffcast 11 | ffmpeg 12 | xclip 13 | rofi 14 | coreutils 15 | gnused 16 | procps 17 | gawk # fixes screen recording feature 18 | ] 19 | } 20 | ''; 21 | }); 22 | } 23 | -------------------------------------------------------------------------------- /overlays/st/default.nix: -------------------------------------------------------------------------------- 1 | _final: prev: { 2 | st = 3 | (prev.st.overrideAttrs (_oa: { 4 | src = prev.fetchFromGitHub { 5 | owner = "bakkeby"; 6 | repo = "st-flexipatch"; 7 | rev = "1c03f10db9d52c3b9417eeff2e81d0a370280834"; 8 | hash = "sha256-W1kHL7FsA9V+EYz7NgFpnGucEQ31CgM4hChzcVxSA2o="; 9 | }; 10 | 11 | patches = [ ./0001-configure-patches.patch ]; 12 | })).override 13 | { 14 | extraLibs = with prev; [ 15 | harfbuzz 16 | libsixel 17 | xorg.libXcursor 18 | ]; 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /overlays/trayer.nix: -------------------------------------------------------------------------------- 1 | _final: prev: { 2 | trayer = prev.trayer.overrideAttrs (_oa: { 3 | src = prev.fetchFromGitHub { 4 | # owner = "sargon"; 5 | # repo = "trayer-srg"; 6 | # rev = "b5693f5c6f554320d5a9bf328170f3194c1de2aa"; 7 | # hash = "sha256-tlYZZzs9cndz094OYhz15gW8jPuc8zSjjz7PKRJT29c="; 8 | 9 | # latest updated fork, adds --iconsize flag 10 | owner = "theo-coder"; 11 | repo = "trayer-srg"; 12 | rev = "91874ac93af623cba76b03cebfed92bb6f4fb4fc"; 13 | hash = "sha256-jXIWR4vvB7UQnKXlzwnelyV45C0cgTxNtybWv3P5kNo="; 14 | }; 15 | }); 16 | } 17 | -------------------------------------------------------------------------------- /overlays/xob.nix: -------------------------------------------------------------------------------- 1 | _final: prev: { 2 | xob = prev.xob.overrideAttrs (oa: { 3 | src = prev.fetchFromGitHub { 4 | owner = "juster-0"; 5 | repo = "xob"; 6 | rev = "66d13ac4e35c705b802eea4628725831a2965c28"; 7 | hash = "sha256-gnb7Yg/tKGDVDtp6xNyolnIfZ8e31HNQJ8os2YAegGw="; 8 | }; 9 | 10 | buildInputs = 11 | oa.buildInputs 12 | ++ (with prev.xorg; [ 13 | libXft 14 | libXext 15 | libXrandr 16 | ]); 17 | 18 | # makeFlags = oa.makeFlags ++ ["enable_alpha=no"]; 19 | }); 20 | } 21 | -------------------------------------------------------------------------------- /packages/.git-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lenivaya/dotfiles/1261ccc34d851d40e23728aa15243f8e6b0a0f9a/packages/.git-keep -------------------------------------------------------------------------------- /packages/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .idea 3 | *.log 4 | tmp/ 5 | 6 | # ja-netfilter.nix 7 | -------------------------------------------------------------------------------- /packages/caffeinate.nix: -------------------------------------------------------------------------------- 1 | { stdenv, pkgs, ... }: 2 | with stdenv; 3 | with pkgs; 4 | rustPlatform.buildRustPackage rec { 5 | pname = "caffeinate"; 6 | version = "master"; 7 | 8 | src = fetchFromGitHub { 9 | owner = "rschmukler"; 10 | repo = "caffeinate"; 11 | rev = version; 12 | hash = "sha256-22gQ+rXANrCgaqtji3BAA0ITmEoVua+q4C+KEn5LM90="; 13 | }; 14 | 15 | cargoHash = "sha256-wz1CXmlqKBa+TlzsWZKZN73RmFHQGsvuwBHTATun31s="; 16 | 17 | meta = { 18 | description = "Keeping xidlehook woke"; 19 | homepage = "https://github.com/rschmukler/caffeinate"; 20 | license = lib.licenses.mit; 21 | maintainers = with lib.maintainers; [ ]; 22 | mainProgram = "caffeinate"; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /packages/fast-font.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | stdenvNoCC, 4 | fetchFromGitHub, 5 | ... 6 | }: 7 | stdenvNoCC.mkDerivation { 8 | pname = "fast-font"; 9 | version = "final-unstable"; 10 | 11 | src = fetchFromGitHub { 12 | owner = "Born2Root"; 13 | repo = "Fast-Font"; 14 | rev = "be82e4c72cc3f40d44a270b2d4d7d45a79d676ee"; 15 | hash = "sha256-ZSxt1BDmsbvz2FVMpvgybvba0YEraz1SDo8tFNFJuhs="; 16 | }; 17 | 18 | installPhase = '' 19 | runHook preInstall 20 | 21 | install -Dm644 *.ttf -t $out/share/fonts/truetype 22 | 23 | runHook postInstall 24 | ''; 25 | 26 | meta = with lib; { 27 | homepage = "https://github.com/Born2Root/Fast-Font"; 28 | description = "A font to help you read faster."; 29 | license = licenses.mit; 30 | maintainers = [ ]; 31 | }; 32 | } 33 | -------------------------------------------------------------------------------- /packages/my_cookies.nix: -------------------------------------------------------------------------------- 1 | { lib, pkgs, ... }: 2 | with pkgs.python3Packages; 3 | buildPythonPackage rec { 4 | pname = "my_cookies"; 5 | version = "0.1.1"; 6 | 7 | src = fetchPypi { 8 | inherit pname version; 9 | sha256 = "SDXfJoMCR+cPXt/SkTVjkddpY3dQ4/WjKtwlxUG727A="; 10 | }; 11 | 12 | propagatedBuildInputs = [ browser-cookie3 ]; 13 | 14 | meta = with lib; { 15 | description = "Package for retrieving leetcode cookies from browser"; 16 | platforms = platforms.unix; 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /packages/pragmasevka.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | stdenvNoCC, 4 | fetchzip, 5 | ... 6 | }: 7 | stdenvNoCC.mkDerivation rec { 8 | pname = "pragmasevka"; 9 | version = "1.6.4"; 10 | 11 | src = fetchzip { 12 | url = "https://github.com/shytikov/pragmasevka/releases/download/v${version}/Pragmasevka.zip"; 13 | stripRoot = false; 14 | hash = "sha256-9ZBozMYjNy/9IO+2Rl6SQC9h+aLBYfG7K4q6GKIOKeo="; 15 | }; 16 | 17 | installPhase = '' 18 | runHook preInstall 19 | 20 | install -Dm644 *.ttf -t $out/share/fonts/truetype 21 | 22 | runHook postInstall 23 | ''; 24 | 25 | meta = with lib; { 26 | description = "PragmataPro meets Iosevka"; 27 | homepage = "https://github.com/shytikov/pragmasevka"; 28 | license = licenses.ofl; 29 | maintainers = [ maintainers.jboyens ]; 30 | platforms = platforms.all; 31 | }; 32 | } 33 | -------------------------------------------------------------------------------- /packages/pragmatapro.nix: -------------------------------------------------------------------------------- 1 | { 2 | stdenv, 3 | requireFile, 4 | unzip, 5 | ... 6 | }: 7 | stdenv.mkDerivation rec { 8 | name = "PragmataPro${version}"; 9 | version = "0.830"; 10 | buildInputs = [ unzip ]; 11 | 12 | src = requireFile { 13 | url = "file://path/to/${name}.zip"; 14 | sha256 = "053rdfdfn2l1xby4068y9sasc2zb1l51ylygjd0f7j8q21nhl3r8"; 15 | }; 16 | 17 | # Work around the "unpacker appears to have produced no directories" 18 | # case that happens when the archive doesn't have a subdirectory. 19 | setSourceRoot = "sourceRoot=`pwd`"; 20 | 21 | installPhase = '' 22 | # unzip $src 23 | 24 | install_path=$out/share/fonts/truetype/pragmatapro 25 | mkdir -p $install_path 26 | 27 | find -name "PragmataPro*.ttf" -exec mv {} $install_path \; 28 | ''; 29 | 30 | meta = with stdenv.lib; { 31 | platfotms = platforms.linux; 32 | }; 33 | } 34 | -------------------------------------------------------------------------------- /packages/rofi-code.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | buildGoModule, 4 | fetchFromGitHub, 5 | ... 6 | }: 7 | buildGoModule rec { 8 | pname = "rofi-code"; 9 | version = "master"; 10 | 11 | src = fetchFromGitHub { 12 | owner = "Coffelius"; 13 | repo = "rofi-code"; 14 | rev = version; 15 | hash = "sha256-mfMiraadJRqtMB+4yzeDozDApPAUHnLiTgEgRjPXJqs="; 16 | }; 17 | 18 | vendorHash = "sha256-Yp2tBZWHc/xjp1rpJEAfz8nNo4Wtu66rdwCEkfeLq3I="; 19 | 20 | ldflags = [ 21 | "-s" 22 | "-w" 23 | ]; 24 | 25 | meta = with lib; { 26 | description = "Use rofi to quickly open VSCode or Codium workspaces"; 27 | homepage = "https://github.com/Coffelius/rofi-code"; 28 | license = licenses.mit; 29 | mainProgram = "rofi-code"; 30 | }; 31 | } 32 | --------------------------------------------------------------------------------