My personal linux configuration files (dotfiles). These include custom full-fledged ZSH configuration, vim config, many handy aliases and other things.
Find a file
ItsDrike 02237fd0b1
Don't re-run work_directory function
- Re-reunning work_directory every time we redraw the prompt isn't
  necessary, since the function is here to generate the zsh supported
  syntax for the prompt that will get expanded into a work directory
  automatically.
- The function is only here to determine whether we're in TTY and use
  ASCII compatible symbols if we are, however it is enough to only check
  this once initially, since we can't leave TTY in favor of a graphical
  instance without reloading the rc file and neither can we leave.
- However, this function also checks for `USE_SHORTENED_WORKDIR`
  variable and decides which prompt to show based on it. This means that
  it someone was setting this variable in their profile file it would
  now no longer be respected, however this was never the intention of
  that variable, if a change is desired, the variable should simply be
  edited in the prompt file directly.
- Removing continual calls to this function each time prompt is redrawn
  is worth the very minor inconvenience of no longer supporting
  shortened workdirs from externally set variable due to the speed
  benefit it gives us, though not that noticeable, it is pretty
  significant. Not to mention that this wasn't intended/recommended
  usage anyway.
2021-12-18 04:46:02 +01:00
home Don't re-run work_directory function 2021-12-18 04:46:02 +01:00
root Add ipython3.10 2021-12-18 03:03:40 +01:00
.gitignore Add pacman cache cleanup utilities 2021-04-01 19:27:56 +02:00
.gitmodules Change nvim submodule URL 2021-12-11 21:37:26 +01:00
LICENSE Lincese under GPL v3 2021-07-20 00:53:46 +00:00
packages.yaml Move to jetbrains mono font for alacritty 2021-12-18 00:17:13 +01:00
README.md Remove attributions for neovim (now in it's own repo) 2021-12-10 02:51:07 +01:00

Dotfiles

These are my personal dotfiles. They're split into home/ and root/ folders where the home folder holds all files that should be put directly into your $HOME directory, while all of the files in the root folder can be put directly into /

You are highly advised to first go through these dotfiles yourself and adjust them to your liking.

Sample images

  • Custom prompt (defined here).
    • Colorscheme showcase: image
    • Command timing showcase: image
  • Neovim configuration written in lua: Screenshot_2021-12-06_14-31-37
  • Automatic unknown command package handler: image
  • lf file manager previews with ueberzug: image

Features

  • Full fledged ZSH configuration without the need to rely on oh-my-zsh
    • oh-my-zsh configuration is also supported, but it is off by default, adjust .zshrc to enable it
    • Even though enabling it is an option, it is not a necessary thing to do, oh-my-zsh has a lot of code that is mostly irrelevant and unused, these dotfiles give you the ability to completely avoid it, if you desire to do so
  • Custom prompt, both for oh-my-zsh configuration or for standalone usage
  • Custom NVIM configuration
    • When you open nvim for the first time, it will automatically try to install Packer plugin manager
    • It is compatible with TTY usage, in which case the color support is downgraded and use of special fonts is disabled.
    • The configuration is split into multiple smaller files to keep everything clearn and avoid clutter in the main configuration file (init.lua). It also allows for us to quickly disable certain parts of the config.
    • The whole configuration is written in lua rather than vimscript. This allows us to do some nicer things, however it also means that this config will NOT work for regular vim, it's only meant to be used for neovim.
  • Many handy aliases and functions (likely too many, you should adjust that to your needs)
  • Many pre-defined environmental variables, these include
    • XDG paths configuration to avoid too much cluttering in home directory
    • Colorful man pages using LESS_TERMCAP, or if bat is installed, using it as MANPAGER
  • Automatic handlers which override default command not found behavior to show the package to which given command belongs (requires pkgfile on Arch Linux)
  • List of useful packages that I often install on most of my systems. (These are the package names for arch linux, but you should be able to find these for any distro, perhaps with a bit different name) located in packages.yaml
  • Opensnitch firewall rules, which block most unauthorized traffic and only allow needed things. This also blocks spotify ads.
  • Automatic logout for TTY sessions or for root logins after 10 minutes of inactivity
  • NetworkManager configuration which assigns new mac for each network
  • lf file manager configuration with support for ueberzug image previews within the terminal
  • Tons of handy scripts for automating common tasks
    • incremental-backup: Easy way to utilize rsync for all backups, without the need for external software
    • auto-chroot: Quick way to chroot into any other linux system, without typing the very repetitive mount and umount commands
    • tamper-check: Script that uses checksums to verify that given files weren't adjusted in any way.
    • brightness: Script to quickly change screen brightness, you may need to adjust the BRIGHTNESS_FILE, this can be different from machine to machine
    • setbg: Quick way to set desktop background to specific image, or random image, or previously used image
    • Many smaller dmenu scripts to make life easier

Installation

Clone this repository anywhere you like $ git clone https://github.com/ItsDrike/dotfiles

If you don't want to install git (running straight from newly installed OS), you can use curl:
$ curl -LJO https://github.com/ItsDrike/dotfiles/tarball/master
And extract from .tar.gz archive: $ tar xvf [archive name]

Attribution

The open-source community has an incredible amount of resources that people have offered to others free of charge and we all depend on many of these sources. This project is no different and there were many open-source projects that were utilized in some parts of this project. For that reason, I'd like to thank all of these projects and their contributors for keeping their content open and available to everyone. This is the list of projects that helped me build this repository to the stage it's in now. Many of the aliases, config files and other resources aren't my original creations, but rather just small improvements and adjustments to get everything set in the way I like. Below is the list of all projects which helped the existence of this repository: