Merge previous flakes
This commit is contained in:
commit
0f0c007317
|
|
@ -0,0 +1,29 @@
|
|||
layout_postgres() {
|
||||
PGHOST="$(direnv_layout_dir)/postgres"
|
||||
export PGHOST
|
||||
|
||||
if [[ ! -d "$PGHOST" ]]; then
|
||||
mkdir -p "$PGHOST"
|
||||
fi
|
||||
|
||||
PGDATA="$PGHOST/data"
|
||||
export PGDATA
|
||||
|
||||
if [[ ! -d "$PGDATA" ]]; then
|
||||
initdb
|
||||
cat >>"$PGDATA/postgresql.conf" <<-EOF
|
||||
listen_addresses = ''
|
||||
unix_socket_directories = '$PGHOST'
|
||||
EOF
|
||||
fi
|
||||
}
|
||||
|
||||
layout_symfony() {
|
||||
PATH_add bin
|
||||
}
|
||||
|
||||
layout_python() {
|
||||
PYTHONPATH_add src
|
||||
}
|
||||
|
||||
# vim: ft=sh
|
||||
|
|
@ -0,0 +1,174 @@
|
|||
# vim:ft=dircolors
|
||||
# (This is not a dircolors file but it helps to highlight colors and comments)
|
||||
|
||||
# default values from dircolors
|
||||
# (entries with a leading # are not implemented in lf)
|
||||
# #no 00 # NORMAL
|
||||
# fi 00 # FILE
|
||||
# #rs 0 # RESET
|
||||
# di 01;34 # DIR
|
||||
# ln 01;36 # LINK
|
||||
# #mh 00 # MULTIHARDLINK
|
||||
# pi 40;33 # FIFO
|
||||
# so 01;35 # SOCK
|
||||
# #do 01;35 # DOOR
|
||||
# bd 40;33;01 # BLK
|
||||
# cd 40;33;01 # CHR
|
||||
# or 40;31;01 # ORPHAN
|
||||
# #mi 00 # MISSING
|
||||
# su 37;41 # SETUID
|
||||
# sg 30;43 # SETGID
|
||||
# #ca 30;41 # CAPABILITY
|
||||
# tw 30;42 # STICKY_OTHER_WRITABLE
|
||||
# ow 34;42 # OTHER_WRITABLE
|
||||
# st 37;44 # STICKY
|
||||
# ex 01;32 # EXEC
|
||||
|
||||
# default values from lf (with matching order)
|
||||
# ln 01;36 # LINK
|
||||
# or 31;01 # ORPHAN
|
||||
# tw 01;34 # STICKY_OTHER_WRITABLE
|
||||
# ow 01;34 # OTHER_WRITABLE
|
||||
# st 01;34 # STICKY
|
||||
# di 01;34 # DIR
|
||||
# pi 33 # FIFO
|
||||
# so 01;35 # SOCK
|
||||
# bd 33;01 # BLK
|
||||
# cd 33;01 # CHR
|
||||
# su 01;32 # SETUID
|
||||
# sg 01;32 # SETGID
|
||||
# ex 01;32 # EXEC
|
||||
# fi 00 # FILE
|
||||
|
||||
# file types (with matching order)
|
||||
ln 01;36 # LINK
|
||||
or 31;01 # ORPHAN
|
||||
tw 34 # STICKY_OTHER_WRITABLE
|
||||
ow 34 # OTHER_WRITABLE
|
||||
st 01;34 # STICKY
|
||||
di 01;34 # DIR
|
||||
pi 33 # FIFO
|
||||
so 01;35 # SOCK
|
||||
bd 33;01 # BLK
|
||||
cd 33;01 # CHR
|
||||
su 01;32 # SETUID
|
||||
sg 01;32 # SETGID
|
||||
ex 01;32 # EXEC
|
||||
fi 00 # FILE
|
||||
|
||||
# archives or compressed (dircolors defaults)
|
||||
*.tar 01;31
|
||||
*.tgz 01;31
|
||||
*.arc 01;31
|
||||
*.arj 01;31
|
||||
*.taz 01;31
|
||||
*.lha 01;31
|
||||
*.lz4 01;31
|
||||
*.lzh 01;31
|
||||
*.lzma 01;31
|
||||
*.tlz 01;31
|
||||
*.txz 01;31
|
||||
*.tzo 01;31
|
||||
*.t7z 01;31
|
||||
*.zip 01;31
|
||||
*.z 01;31
|
||||
*.dz 01;31
|
||||
*.gz 01;31
|
||||
*.lrz 01;31
|
||||
*.lz 01;31
|
||||
*.lzo 01;31
|
||||
*.xz 01;31
|
||||
*.zst 01;31
|
||||
*.tzst 01;31
|
||||
*.bz2 01;31
|
||||
*.bz 01;31
|
||||
*.tbz 01;31
|
||||
*.tbz2 01;31
|
||||
*.tz 01;31
|
||||
*.deb 01;31
|
||||
*.rpm 01;31
|
||||
*.jar 01;31
|
||||
*.war 01;31
|
||||
*.ear 01;31
|
||||
*.sar 01;31
|
||||
*.rar 01;31
|
||||
*.alz 01;31
|
||||
*.ace 01;31
|
||||
*.zoo 01;31
|
||||
*.cpio 01;31
|
||||
*.7z 01;31
|
||||
*.rz 01;31
|
||||
*.cab 01;31
|
||||
*.wim 01;31
|
||||
*.swm 01;31
|
||||
*.dwm 01;31
|
||||
*.esd 01;31
|
||||
|
||||
# image formats (dircolors defaults)
|
||||
*.jpg 01;35
|
||||
*.jpeg 01;35
|
||||
*.mjpg 01;35
|
||||
*.mjpeg 01;35
|
||||
*.gif 01;35
|
||||
*.bmp 01;35
|
||||
*.pbm 01;35
|
||||
*.pgm 01;35
|
||||
*.ppm 01;35
|
||||
*.tga 01;35
|
||||
*.xbm 01;35
|
||||
*.xpm 01;35
|
||||
*.tif 01;35
|
||||
*.tiff 01;35
|
||||
*.png 01;35
|
||||
*.svg 01;35
|
||||
*.svgz 01;35
|
||||
*.mng 01;35
|
||||
*.pcx 01;35
|
||||
*.mov 01;35
|
||||
*.mpg 01;35
|
||||
*.mpeg 01;35
|
||||
*.m2v 01;35
|
||||
*.mkv 01;35
|
||||
*.webm 01;35
|
||||
*.ogm 01;35
|
||||
*.mp4 01;35
|
||||
*.m4v 01;35
|
||||
*.mp4v 01;35
|
||||
*.vob 01;35
|
||||
*.qt 01;35
|
||||
*.nuv 01;35
|
||||
*.wmv 01;35
|
||||
*.asf 01;35
|
||||
*.rm 01;35
|
||||
*.rmvb 01;35
|
||||
*.flc 01;35
|
||||
*.avi 01;35
|
||||
*.fli 01;35
|
||||
*.flv 01;35
|
||||
*.gl 01;35
|
||||
*.dl 01;35
|
||||
*.xcf 01;35
|
||||
*.xwd 01;35
|
||||
*.yuv 01;35
|
||||
*.cgm 01;35
|
||||
*.emf 01;35
|
||||
*.ogv 01;35
|
||||
*.ogx 01;35
|
||||
|
||||
# audio formats (dircolors defaults)
|
||||
*.aac 00;36
|
||||
*.au 00;36
|
||||
*.flac 00;36
|
||||
*.m4a 00;36
|
||||
*.mid 00;36
|
||||
*.midi 00;36
|
||||
*.mka 00;36
|
||||
*.mp3 00;36
|
||||
*.mpc 00;36
|
||||
*.ogg 00;36
|
||||
*.ra 00;36
|
||||
*.wav 00;36
|
||||
*.oga 00;36
|
||||
*.opus 00;36
|
||||
*.spx 00;36
|
||||
*.xspf 00;36
|
||||
|
|
@ -0,0 +1,357 @@
|
|||
# vim:ft=conf
|
||||
|
||||
# These examples require Nerd Fonts or a compatible font to be used.
|
||||
# See https://www.nerdfonts.com for more information.
|
||||
|
||||
# default values from lf (with matching order)
|
||||
# ln l # LINK
|
||||
# or l # ORPHAN
|
||||
# tw t # STICKY_OTHER_WRITABLE
|
||||
# ow d # OTHER_WRITABLE
|
||||
# st t # STICKY
|
||||
# di d # DIR
|
||||
# pi p # FIFO
|
||||
# so s # SOCK
|
||||
# bd b # BLK
|
||||
# cd c # CHR
|
||||
# su u # SETUID
|
||||
# sg g # SETGID
|
||||
# ex x # EXEC
|
||||
# fi - # FILE
|
||||
|
||||
# file types (with matching order)
|
||||
ln # LINK
|
||||
or # ORPHAN
|
||||
tw t # STICKY_OTHER_WRITABLE
|
||||
ow # OTHER_WRITABLE
|
||||
st t # STICKY
|
||||
di # DIR
|
||||
pi p # FIFO
|
||||
so s # SOCK
|
||||
bd b # BLK
|
||||
cd c # CHR
|
||||
su u # SETUID
|
||||
sg g # SETGID
|
||||
ex # EXEC
|
||||
fi # FILE
|
||||
|
||||
# file extensions (vim-devicons)
|
||||
*.styl
|
||||
*.sass
|
||||
*.scss
|
||||
*.htm
|
||||
*.html
|
||||
*.slim
|
||||
*.haml
|
||||
*.ejs
|
||||
*.css
|
||||
*.less
|
||||
*.md
|
||||
*.mdx
|
||||
*.markdown
|
||||
*.rmd
|
||||
*.json
|
||||
*.webmanifest
|
||||
*.js
|
||||
*.mjs
|
||||
*.jsx
|
||||
*.rb
|
||||
*.gemspec
|
||||
*.rake
|
||||
*.php
|
||||
*.py
|
||||
*.pyc
|
||||
*.pyo
|
||||
*.pyd
|
||||
*.coffee
|
||||
*.mustache
|
||||
*.hbs
|
||||
*.conf
|
||||
*.ini
|
||||
*.yml
|
||||
*.yaml
|
||||
*.toml
|
||||
*.bat
|
||||
*.mk
|
||||
*.jpg
|
||||
*.jpeg
|
||||
*.bmp
|
||||
*.png
|
||||
*.webp
|
||||
*.gif
|
||||
*.ico
|
||||
*.twig
|
||||
*.cpp
|
||||
*.c++
|
||||
*.cxx
|
||||
*.cc
|
||||
*.cp
|
||||
*.c
|
||||
*.cs
|
||||
*.h
|
||||
*.hh
|
||||
*.hpp
|
||||
*.hxx
|
||||
*.hs
|
||||
*.lhs
|
||||
*.nix
|
||||
*.lua
|
||||
*.java
|
||||
*.sh
|
||||
*.fish
|
||||
*.bash
|
||||
*.zsh
|
||||
*.ksh
|
||||
*.csh
|
||||
*.awk
|
||||
*.ps1
|
||||
*.ml λ
|
||||
*.mli λ
|
||||
*.diff
|
||||
*.db
|
||||
*.sql
|
||||
*.dump
|
||||
*.clj
|
||||
*.cljc
|
||||
*.cljs
|
||||
*.edn
|
||||
*.scala
|
||||
*.go
|
||||
*.dart
|
||||
*.xul
|
||||
*.sln
|
||||
*.suo
|
||||
*.pl
|
||||
*.pm
|
||||
*.t
|
||||
*.rss
|
||||
'*.f#'
|
||||
*.fsscript
|
||||
*.fsx
|
||||
*.fs
|
||||
*.fsi
|
||||
*.rs
|
||||
*.rlib
|
||||
*.d
|
||||
*.erl
|
||||
*.hrl
|
||||
*.ex
|
||||
*.exs
|
||||
*.eex
|
||||
*.leex
|
||||
*.heex
|
||||
*.vim
|
||||
*.ai
|
||||
*.psd
|
||||
*.psb
|
||||
*.ts
|
||||
*.tsx
|
||||
*.jl
|
||||
*.pp
|
||||
*.vue
|
||||
*.elm
|
||||
*.swift
|
||||
*.xcplayground
|
||||
*.tex
|
||||
*.r
|
||||
*.rproj
|
||||
*.sol
|
||||
*.pem
|
||||
|
||||
# file names (vim-devicons) (case-insensitive not supported in lf)
|
||||
*gruntfile.coffee
|
||||
*gruntfile.js
|
||||
*gruntfile.ls
|
||||
*gulpfile.coffee
|
||||
*gulpfile.js
|
||||
*gulpfile.ls
|
||||
*mix.lock
|
||||
*dropbox
|
||||
*.ds_store
|
||||
*.gitconfig
|
||||
*.gitignore
|
||||
*.gitattributes
|
||||
*.gitlab-ci.yml
|
||||
*.bashrc
|
||||
*.zshrc
|
||||
*.zshenv
|
||||
*.zprofile
|
||||
*.vimrc
|
||||
*.gvimrc
|
||||
*_vimrc
|
||||
*_gvimrc
|
||||
*.bashprofile
|
||||
*favicon.ico
|
||||
*license
|
||||
*node_modules
|
||||
*react.jsx
|
||||
*procfile
|
||||
*dockerfile
|
||||
*docker-compose.yml
|
||||
*rakefile
|
||||
*config.ru
|
||||
*gemfile
|
||||
*makefile
|
||||
*cmakelists.txt
|
||||
*robots.txt
|
||||
|
||||
# file names (case-sensitive adaptations)
|
||||
*Gruntfile.coffee
|
||||
*Gruntfile.js
|
||||
*Gruntfile.ls
|
||||
*Gulpfile.coffee
|
||||
*Gulpfile.js
|
||||
*Gulpfile.ls
|
||||
*Dropbox
|
||||
*.DS_Store
|
||||
*LICENSE
|
||||
*React.jsx
|
||||
*Procfile
|
||||
*Dockerfile
|
||||
*Docker-compose.yml
|
||||
*Rakefile
|
||||
*Gemfile
|
||||
*Makefile
|
||||
*CMakeLists.txt
|
||||
|
||||
# file patterns (vim-devicons) (patterns not supported in lf)
|
||||
# .*jquery.*\.js$
|
||||
# .*angular.*\.js$
|
||||
# .*backbone.*\.js$
|
||||
# .*require.*\.js$
|
||||
# .*materialize.*\.js$
|
||||
# .*materialize.*\.css$
|
||||
# .*mootools.*\.js$
|
||||
# .*vimrc.*
|
||||
# Vagrantfile$
|
||||
|
||||
# file patterns (file name adaptations)
|
||||
*jquery.min.js
|
||||
*angular.min.js
|
||||
*backbone.min.js
|
||||
*require.min.js
|
||||
*materialize.min.js
|
||||
*materialize.min.css
|
||||
*mootools.min.js
|
||||
*vimrc
|
||||
Vagrantfile
|
||||
|
||||
# archives or compressed (extensions from dircolors defaults)
|
||||
*.tar
|
||||
*.tgz
|
||||
*.arc
|
||||
*.arj
|
||||
*.taz
|
||||
*.lha
|
||||
*.lz4
|
||||
*.lzh
|
||||
*.lzma
|
||||
*.tlz
|
||||
*.txz
|
||||
*.tzo
|
||||
*.t7z
|
||||
*.zip
|
||||
*.z
|
||||
*.dz
|
||||
*.gz
|
||||
*.lrz
|
||||
*.lz
|
||||
*.lzo
|
||||
*.xz
|
||||
*.zst
|
||||
*.tzst
|
||||
*.bz2
|
||||
*.bz
|
||||
*.tbz
|
||||
*.tbz2
|
||||
*.tz
|
||||
*.deb
|
||||
*.rpm
|
||||
*.jar
|
||||
*.war
|
||||
*.ear
|
||||
*.sar
|
||||
*.rar
|
||||
*.alz
|
||||
*.ace
|
||||
*.zoo
|
||||
*.cpio
|
||||
*.7z
|
||||
*.rz
|
||||
*.cab
|
||||
*.wim
|
||||
*.swm
|
||||
*.dwm
|
||||
*.esd
|
||||
|
||||
# image formats (extensions from dircolors defaults)
|
||||
*.jpg
|
||||
*.jpeg
|
||||
*.mjpg
|
||||
*.mjpeg
|
||||
*.gif
|
||||
*.bmp
|
||||
*.pbm
|
||||
*.pgm
|
||||
*.ppm
|
||||
*.tga
|
||||
*.xbm
|
||||
*.xpm
|
||||
*.tif
|
||||
*.tiff
|
||||
*.png
|
||||
*.svg
|
||||
*.svgz
|
||||
*.mng
|
||||
*.pcx
|
||||
*.mov
|
||||
*.mpg
|
||||
*.mpeg
|
||||
*.m2v
|
||||
*.mkv
|
||||
*.webm
|
||||
*.ogm
|
||||
*.mp4
|
||||
*.m4v
|
||||
*.mp4v
|
||||
*.vob
|
||||
*.qt
|
||||
*.nuv
|
||||
*.wmv
|
||||
*.asf
|
||||
*.rm
|
||||
*.rmvb
|
||||
*.flc
|
||||
*.avi
|
||||
*.fli
|
||||
*.flv
|
||||
*.gl
|
||||
*.dl
|
||||
*.xcf
|
||||
*.xwd
|
||||
*.yuv
|
||||
*.cgm
|
||||
*.emf
|
||||
*.ogv
|
||||
*.ogx
|
||||
|
||||
# audio formats (extensions from dircolors defaults)
|
||||
*.aac
|
||||
*.au
|
||||
*.flac
|
||||
*.m4a
|
||||
*.mid
|
||||
*.midi
|
||||
*.mka
|
||||
*.mp3
|
||||
*.mpc
|
||||
*.ogg
|
||||
*.ra
|
||||
*.wav
|
||||
*.oga
|
||||
*.opus
|
||||
*.spx
|
||||
*.xspf
|
||||
|
||||
# other formats
|
||||
*.pdf
|
||||
|
|
@ -0,0 +1,102 @@
|
|||
zle -N up-line-or-beginning-search
|
||||
zle -N down-line-or-beginning-search
|
||||
|
||||
zstyle ':completion:*' completer _extensions _complete _approximate
|
||||
zstyle ':completion:*' use-cache on
|
||||
zstyle ':completion:*' cache-path "$XDG_CACHE_HOME/zsh/.zcompcache"
|
||||
zstyle ':completion:*' matcher-list '' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
|
||||
zstyle ':completion:*:messages' format ' %F{purple} -- %d --%f'
|
||||
zstyle ':completion:*:warnings' format ' %F{red}-- no matches found --%f'
|
||||
zstyle ':completion:*:*:*:*:descriptions' format '%F{green}-- %d --%f'
|
||||
zstyle ':completion:*:*:*:*:corrections' format '%F{yellow}!- %d (errors: %e) -!%f'
|
||||
zstyle ':completion:*' menu select
|
||||
zstyle ':completion:*' group-name ''
|
||||
zstyle ':completion:*' list-colors ''${(s.:.)LS_COLORS}
|
||||
zstyle ':completion:*' file-list all
|
||||
zstyle ':completion:complete:*' gain-privileges 1
|
||||
# disable sort when completing `git checkout`
|
||||
zstyle ':completion:*:git-checkout:*' sort false
|
||||
# set descriptions format to enable group support
|
||||
zstyle ':completion:*:descriptions' format '[%d]'
|
||||
|
||||
zmodload zsh/complist
|
||||
bindkey -M menuselect 'h' vi-backward-char
|
||||
bindkey -M menuselect 'k' vi-up-line-or-history
|
||||
bindkey -M menuselect 'j' vi-down-line-or-history
|
||||
bindkey -M menuselect 'l' vi-forward-char
|
||||
|
||||
typeset -g -A key
|
||||
|
||||
key[Home]="${terminfo[khome]}"
|
||||
key[End]="${terminfo[kend]}"
|
||||
key[Insert]="${terminfo[kich1]}"
|
||||
key[Backspace]="${terminfo[kbs]}"
|
||||
key[Delete]="${terminfo[kdch1]}"
|
||||
key[Up]="${terminfo[kcuu1]}"
|
||||
key[Down]="${terminfo[kcud1]}"
|
||||
key[Left]="${terminfo[kcub1]}"
|
||||
key[Right]="${terminfo[kcuf1]}"
|
||||
key[PageUp]="${terminfo[kpp]}"
|
||||
key[PageDown]="${terminfo[knp]}"
|
||||
key[Shift-Tab]="${terminfo[kcbt]}"
|
||||
|
||||
# setup key accordingly
|
||||
[[ -n "${key[Home]}" ]] && bindkey -- "${key[Home]}" beginning-of-line
|
||||
[[ -n "${key[End]}" ]] && bindkey -- "${key[End]}" end-of-line
|
||||
[[ -n "${key[Insert]}" ]] && bindkey -- "${key[Insert]}" overwrite-mode
|
||||
[[ -n "${key[Backspace]}" ]] && bindkey -- "${key[Backspace]}" backward-delete-char
|
||||
[[ -n "${key[Delete]}" ]] && bindkey -- "${key[Delete]}" delete-char
|
||||
[[ -n "${key[Left]}" ]] && bindkey -- "${key[Left]}" backward-char
|
||||
[[ -n "${key[Right]}" ]] && bindkey -- "${key[Right]}" forward-char
|
||||
[[ -n "${key[PageUp]}" ]] && bindkey -- "${key[PageUp]}" beginning-of-buffer-or-history
|
||||
[[ -n "${key[PageDown]}" ]] && bindkey -- "${key[PageDown]}" end-of-buffer-or-history
|
||||
[[ -n "${key[Shift-Tab]}" ]] && bindkey -- "${key[Shift-Tab]}" reverse-menu-complete
|
||||
|
||||
#[[ -n "${key[Up]}" ]] && bindkey -- "${key[Up]}" up-line-or-beginning-search
|
||||
#[[ -n "${key[Down]}" ]] && bindkey -- "${key[Down]}" down-line-or-beginning-search
|
||||
[[ -n "${key[Up]}" ]] && bindkey -- "${key[Up]}" history-substring-search-up
|
||||
[[ -n "${key[Down]}" ]] && bindkey -- "${key[Down]}" history-substring-search-down
|
||||
|
||||
|
||||
# Finally, make sure the terminal is in application mode, when zle is
|
||||
# active. Only then are the values from $terminfo valid.
|
||||
if (( ${+terminfo[smkx]} && ${+terminfo[rmkx]} )); then
|
||||
autoload -Uz add-zle-hook-widget
|
||||
function zle_application_mode_start { echoti smkx }
|
||||
function zle_application_mode_stop { echoti rmkx }
|
||||
add-zle-hook-widget -Uz zle-line-init zle_application_mode_start
|
||||
add-zle-hook-widget -Uz zle-line-finish zle_application_mode_stop
|
||||
fi
|
||||
|
||||
_fzf_compgen_path() {
|
||||
fd --hidden --follow --exclude ".git" . "$1"
|
||||
}
|
||||
|
||||
# Use fd to generate the list for directory completion
|
||||
_fzf_compgen_dir() {
|
||||
fd --type d --hidden --follow --exclude ".git" . "$1"
|
||||
}
|
||||
|
||||
|
||||
function gi() {
|
||||
curl -sLw '\n' "https://www.toptal.com/developers/gitignore/api/$*"
|
||||
}
|
||||
|
||||
_gitignoreio_get_command_list() {
|
||||
curl -sL https://www.toptal.com/developers/gitignore/api/list | tr "," "\n"
|
||||
}
|
||||
|
||||
_gitignoreio () {
|
||||
compset -P '*,'
|
||||
compadd -S '' "$(_gitignoreio_get_command_list)"
|
||||
}
|
||||
|
||||
compdef _gitignoreio gi
|
||||
|
||||
compdef _symfony_complete symfony
|
||||
compdef _symfony_complete composer
|
||||
compdef _symfony_complete console
|
||||
compdef _symfony_complete artisan
|
||||
compdef _symfony_complete phpstan
|
||||
compdef _symfony_complete php-cs-fixer
|
||||
compdef _symfony_complete phpspec
|
||||
|
|
@ -0,0 +1,647 @@
|
|||
{
|
||||
"nodes": {
|
||||
"base16-schemes": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1696158499,
|
||||
"narHash": "sha256-5yIHgDTPjoX/3oDEfLSQ0eJZdFL1SaCfb9d6M0RmOTM=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-schemes",
|
||||
"rev": "a9112eaae86d9dd8ee6bb9445b664fba2f94037a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-schemes",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"devshell": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_4",
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1711099426,
|
||||
"narHash": "sha256-HzpgM/wc3aqpnHJJ2oDqPBkNsqWbW0WfWUO8lKu8nGk=",
|
||||
"owner": "numtide",
|
||||
"repo": "devshell",
|
||||
"rev": "2d45b54ca4a183f2fdcf4b19c895b64fbf620ee8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "devshell",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1696426674,
|
||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat_2": {
|
||||
"locked": {
|
||||
"lastModified": 1696426674,
|
||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||
"revCount": 57,
|
||||
"type": "tarball",
|
||||
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
|
||||
}
|
||||
},
|
||||
"flake-compat_3": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1696426674,
|
||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": "nixpkgs-lib"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1712014858,
|
||||
"narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "9126214d0a59633752a136528f5f3b9aa8565b7d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts_2": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"neovim-nightly-overlay",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1712014858,
|
||||
"narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "9126214d0a59633752a136528f5f3b9aa8565b7d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts_3": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"neovim-nightly-overlay",
|
||||
"hercules-ci-effects",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1709336216,
|
||||
"narHash": "sha256-Dt/wOWeW6Sqm11Yh+2+t0dfEWxoMxGBvv3JpIocFl9E=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "f7b3c975cf067e56e7cda6cb098ebe3fb4d74ca2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"id": "flake-parts",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"flake-parts_4": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1709336216,
|
||||
"narHash": "sha256-Dt/wOWeW6Sqm11Yh+2+t0dfEWxoMxGBvv3JpIocFl9E=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "f7b3c975cf067e56e7cda6cb098ebe3fb4d74ca2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": [
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1710146030,
|
||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_2": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1701680307,
|
||||
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_3": {
|
||||
"locked": {
|
||||
"lastModified": 1659877975,
|
||||
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_4": {
|
||||
"inputs": {
|
||||
"systems": "systems_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1701680307,
|
||||
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_5": {
|
||||
"inputs": {
|
||||
"systems": "systems_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1710146030,
|
||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gitignore": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"pre-commit-hooks",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1709087332,
|
||||
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hercules-ci-effects": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts_3",
|
||||
"nixpkgs": [
|
||||
"neovim-nightly-overlay",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1710478346,
|
||||
"narHash": "sha256-Xjf8BdnQG0tLhPMlqQdwCIjOp7Teox0DP3N/jjyiGM4=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "hercules-ci-effects",
|
||||
"rev": "64e7763d72c1e4c1e5e6472640615b6ae2d40fbf",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "hercules-ci-effects",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1712462372,
|
||||
"narHash": "sha256-WA3bbBWhd3o1wAgyHZNypjb/LG4oq+IWxFq8ey8yNPU=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "a561ad6ab38578c812cc9af3b04f2cc60ebf48c9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager_2": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1711625603,
|
||||
"narHash": "sha256-W+9dfqA9bqUIBV5u7jaIARAzMe3kTq/Hp2SpSVXKRQw=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "c0ef0dab55611c676ad7539bf4e41b3ec6fa87d2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"neovim-flake": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_2",
|
||||
"nixpkgs": [
|
||||
"neovim-nightly-overlay",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"dir": "contrib",
|
||||
"lastModified": 1712529338,
|
||||
"narHash": "sha256-5/E8yWlb6XiQcT8LIhf1IoMQvCsJ+YI3ydNdDteh+xU=",
|
||||
"owner": "neovim",
|
||||
"repo": "neovim",
|
||||
"rev": "541c2d3816cdef9aba7f55f74908fa07d0cfa3ec",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"dir": "contrib",
|
||||
"owner": "neovim",
|
||||
"repo": "neovim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"neovim-nightly-overlay": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"flake-parts": "flake-parts_2",
|
||||
"hercules-ci-effects": "hercules-ci-effects",
|
||||
"neovim-flake": "neovim-flake",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1712534643,
|
||||
"narHash": "sha256-nOR2DxznyiBQ1sDxjIk8D5nrJhD/z+PwlBfc8YonSr4=",
|
||||
"owner": "nix-community",
|
||||
"repo": "neovim-nightly-overlay",
|
||||
"rev": "4cb2a8580de0498dd38eb90791728547b5826331",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "neovim-nightly-overlay",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-colors": {
|
||||
"inputs": {
|
||||
"base16-schemes": "base16-schemes",
|
||||
"nixpkgs-lib": "nixpkgs-lib_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1707825078,
|
||||
"narHash": "sha256-hTfge2J2W+42SZ7VHXkf4kjU+qzFqPeC9k66jAUBMHk=",
|
||||
"owner": "misterio77",
|
||||
"repo": "nix-colors",
|
||||
"rev": "b01f024090d2c4fc3152cd0cf12027a7b8453ba1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "misterio77",
|
||||
"repo": "nix-colors",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-darwin": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1711763326,
|
||||
"narHash": "sha256-sXcesZWKXFlEQ8oyGHnfk4xc9f2Ip0X/+YZOq3sKviI=",
|
||||
"owner": "lnl7",
|
||||
"repo": "nix-darwin",
|
||||
"rev": "36524adc31566655f2f4d55ad6b875fb5c1a4083",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "lnl7",
|
||||
"repo": "nix-darwin",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixgl": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_3",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1705794759,
|
||||
"narHash": "sha256-jfyttJ23+WcGlW9zoBcQuUpXNCLEwZaygJClvtFTqWU=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixGL",
|
||||
"rev": "9b4887dbf16933bdc124296434b3898d810b3608",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixGL",
|
||||
"rev": "9b4887dbf16933bdc124296434b3898d810b3608",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1712439257,
|
||||
"narHash": "sha256-aSpiNepFOMk9932HOax0XwNxbA38GOUVOiXfUVPOrck=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "ff0dbd94265ac470dda06a657d5fe49de93b4599",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-lib": {
|
||||
"locked": {
|
||||
"dir": "lib",
|
||||
"lastModified": 1711703276,
|
||||
"narHash": "sha256-iMUFArF0WCatKK6RzfUJknjem0H9m4KgorO/p3Dopkk=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d8fe5e6c92d0d190646fb9f1056741a229980089",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"dir": "lib",
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-lib_2": {
|
||||
"locked": {
|
||||
"lastModified": 1697935651,
|
||||
"narHash": "sha256-qOfWjQ2JQSQL15KLh6D7xQhx0qgZlYZTYlcEiRuAMMw=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"rev": "e1e11fdbb01113d85c7f41cada9d2847660e3902",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixvim": {
|
||||
"inputs": {
|
||||
"devshell": "devshell",
|
||||
"flake-compat": "flake-compat_2",
|
||||
"flake-parts": "flake-parts_4",
|
||||
"home-manager": "home-manager_2",
|
||||
"nix-darwin": "nix-darwin",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"pre-commit-hooks": "pre-commit-hooks"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1712517143,
|
||||
"narHash": "sha256-fC+spgEJpRBvLzTLiqOVBhcIHVWZWqQfxAG1aM2calo=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"rev": "0d85838d204d0f3d1cda22059d3fed0cd757d0ab",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nur": {
|
||||
"locked": {
|
||||
"lastModified": 1712577859,
|
||||
"narHash": "sha256-Dj/v0G964gStuJQ4AZlU/BXhfUbboCeegfPEGOM0x9c=",
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"rev": "47a8f374c33c567f9b0c63f6a953f38e3b6eb921",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pre-commit-hooks": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_3",
|
||||
"flake-utils": "flake-utils_5",
|
||||
"gitignore": "gitignore",
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs-stable": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1711760932,
|
||||
"narHash": "sha256-DqUTQ2iAAqSDwMhKBqvi24v0Oc7pD3LCK/0FCG//TdA=",
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"rev": "c11e43aed6f17336c25cd120eac886b96c455731",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts",
|
||||
"flake-utils": "flake-utils",
|
||||
"home-manager": "home-manager",
|
||||
"neovim-nightly-overlay": "neovim-nightly-overlay",
|
||||
"nix-colors": "nix-colors",
|
||||
"nixgl": "nixgl",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixvim": "nixvim",
|
||||
"nur": "nur",
|
||||
"systems": "systems_4"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_2": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_3": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_4": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
|
|
@ -0,0 +1,138 @@
|
|||
{
|
||||
description = "My Nix Configs";
|
||||
|
||||
outputs = {
|
||||
self,
|
||||
nixpkgs,
|
||||
flake-utils,
|
||||
...
|
||||
}: let
|
||||
inherit (self) inputs outputs;
|
||||
|
||||
flakeLib = import ./lib;
|
||||
|
||||
vars = rec {
|
||||
name = "Patrick Neff";
|
||||
username = "odie";
|
||||
homeDirectory = "/home/${username}";
|
||||
locale = "de_DE.UTF-8";
|
||||
email = "odie86@gmail.com";
|
||||
timeZone = "Europe/Berlin";
|
||||
sshKeys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIByWNNmKhjVk5VEjk3aSKosOXzglCbiq7q8IQ8mA0qQe odie"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA1QZO6fF2RLcmjMKdG1eZi0RLw3joa+VBXaKvfmA7Tg odie"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINs89u4Kvwlmq67eV+H/n+x9M8gsKDxQU+dCPSEb2vJe odie"
|
||||
];
|
||||
domain = "odie.intranet";
|
||||
};
|
||||
in
|
||||
{
|
||||
nixosModules = {
|
||||
base = import ./modules/nixos/base;
|
||||
desktop = import ./modules/nixos/desktop;
|
||||
wsl = import ./modules/nixos/wsl;
|
||||
};
|
||||
nixosConfigurations =
|
||||
flakeLib.mkSystem {
|
||||
inherit inputs nixpkgs vars;
|
||||
system = "x86_64-linux";
|
||||
hostName = "vm";
|
||||
}
|
||||
// flakeLib.mkSystem {
|
||||
inherit inputs nixpkgs vars;
|
||||
system = "x86_64-linux";
|
||||
hostName = "wsl-dev";
|
||||
}
|
||||
// flakeLib.mkSystem {
|
||||
inherit inputs nixpkgs vars;
|
||||
system = "aarch64-linux";
|
||||
hostName = "pi1";
|
||||
}
|
||||
// {};
|
||||
homeManagerModules = {
|
||||
base = import ./modules/home-manager/base.nix;
|
||||
desktop = import ./modules/home-manager/desktop.nix;
|
||||
shell = import ./modules/home-manager/shell.nix;
|
||||
dev = import ./modules/home-manager/dev.nix;
|
||||
};
|
||||
homeConfigurations = {
|
||||
"odie@wanaheim" = flakeLib.mkHomeConfiguration {
|
||||
inherit inputs outputs nixpkgs flakeLib vars;
|
||||
profile = ./profiles/home-manager/desktop-dev.nix;
|
||||
system = "x86_64-linux";
|
||||
modules = [
|
||||
{
|
||||
desktop = {
|
||||
enable = true;
|
||||
awesome = {
|
||||
enable = true;
|
||||
wifi_device = "'wlp3s0'";
|
||||
battery_device = "'BAT0'";
|
||||
};
|
||||
};
|
||||
services.picom.enable = false;
|
||||
programs.rofi.enable = true;
|
||||
}
|
||||
];
|
||||
};
|
||||
"odie@asgard" = flakeLib.mkHomeConfiguration {
|
||||
inherit inputs outputs nixpkgs flakeLib vars;
|
||||
profile = ./profiles/home-manager/desktop-dev.nix;
|
||||
system = "x86_64-linux";
|
||||
modules = [
|
||||
{
|
||||
desktop = {
|
||||
enable = true;
|
||||
awesome = {
|
||||
enable = false;
|
||||
};
|
||||
};
|
||||
programs = {
|
||||
firefox.enable = false;
|
||||
keepassxc.enable = false;
|
||||
};
|
||||
services.nixGL.enable = true;
|
||||
services.borgmatic.enable = true;
|
||||
theme.cursor.enable = false;
|
||||
theme.gtk.enable = false;
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
// flake-utils.lib.eachDefaultSystem (system: {
|
||||
packages = {
|
||||
neovim-ide = import ./pkgs/nixvim {inherit inputs system flakeLib nixpkgs;};
|
||||
};
|
||||
});
|
||||
|
||||
inputs = {
|
||||
#nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11";
|
||||
#nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
nur.url = "github:nix-community/NUR";
|
||||
nix-colors.url = "github:misterio77/nix-colors";
|
||||
systems.url = "github:nix-systems/default";
|
||||
flake-parts.url = "github:hercules-ci/flake-parts";
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
nixgl = {
|
||||
url = "github:nix-community/nixGL/9b4887dbf16933bdc124296434b3898d810b3608";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
nixvim = {
|
||||
url = "github:nix-community/nixvim";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
neovim-nightly-overlay = {
|
||||
url = "github:nix-community/neovim-nightly-overlay";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
flake-utils = {
|
||||
url = "github:numtide/flake-utils";
|
||||
inputs.systems.follows = "systems";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{outputs, ...}: {
|
||||
imports = [
|
||||
./hardware-configuration.nix
|
||||
outputs.nixosModules.base
|
||||
];
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
{ lib, pkgs, ... }: {
|
||||
boot = {
|
||||
loader.grub.enable = false;
|
||||
loader.generic-extlinux-compatible.enable = true;
|
||||
kernelPackages = pkgs.linuxPackages_rpi4;
|
||||
kernelParams = [ "snd_bcm2835.enable_headphones=1" "snd_bcm2835.enable_hdmi=1" ];
|
||||
initrd.availableKernelModules = lib.mkDefault [
|
||||
"vc4"
|
||||
"bcm2835_dma"
|
||||
"i2c_bcm2835"
|
||||
|
||||
"xhci_pci"
|
||||
"usbhid"
|
||||
"usb_storage"
|
||||
];
|
||||
};
|
||||
|
||||
swapDevices = [{
|
||||
device = "/var/lib/swapfile";
|
||||
size = 4 * 1024;
|
||||
}];
|
||||
|
||||
fileSystems = {
|
||||
"/" = {
|
||||
device = "/dev/disk/by-label/NIXOS_SD";
|
||||
fsType = "ext4";
|
||||
options = [ "noatime" ];
|
||||
};
|
||||
};
|
||||
|
||||
hardware = {
|
||||
raspberry-pi = {
|
||||
enable = true;
|
||||
cec.enable = true;
|
||||
"4" = {
|
||||
apply-overlays-dtmerge.enable = true;
|
||||
fkms-3d.enable = true;
|
||||
};
|
||||
enableRedistributableFirmware = true;
|
||||
};
|
||||
};
|
||||
system.stateVersion = "23.11";
|
||||
|
||||
nixpkgs.hostPlatform.system = "aarch64-linux";
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{ inputs, ... }: {
|
||||
imports = [
|
||||
inputs.home-manager-flake.homeModules.base
|
||||
inputs.home-manager-flake.homeModules.shell
|
||||
];
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
{
|
||||
nixpkgs,
|
||||
vars,
|
||||
outputs,
|
||||
inputs,
|
||||
flakeLib,
|
||||
system,
|
||||
profile,
|
||||
modules ? [],
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
./hardware-configuration.nix
|
||||
inputs.home-manager.nixosModules.default
|
||||
outputs.nixosModules.base
|
||||
outputs.nixosModules.wsl
|
||||
outputs.nixosModules.desktop
|
||||
];
|
||||
|
||||
networking = {
|
||||
inherit (vars) hostName domain;
|
||||
};
|
||||
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
user.${vars.userName} = flakeLib.mkHomeConfiguration {
|
||||
inherit nixpkgs vars outputs inputs flakeLib system profile modules;
|
||||
};
|
||||
};
|
||||
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
|
||||
desktop.enable = true;
|
||||
desktop.awesome.enable = true;
|
||||
|
||||
services = {
|
||||
openssh.enable = true;
|
||||
qemuGuest.enable = true;
|
||||
spice-vdagentd.enable = true;
|
||||
spice-autorandr.enable = true;
|
||||
};
|
||||
|
||||
system.stateVersion = "23.11";
|
||||
}
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
[
|
||||
(modulesPath + "/profiles/qemu-guest.nix")
|
||||
];
|
||||
|
||||
boot = {
|
||||
initrd = {
|
||||
availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "sr_mod" "virtio_blk" ];
|
||||
kernelModules = [ ];
|
||||
};
|
||||
kernelModules = [ "kvm-intel" ];
|
||||
extraModulePackages = [ ];
|
||||
};
|
||||
|
||||
fileSystems."/" =
|
||||
{
|
||||
device = "/dev/disk/by-label/nixos";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" =
|
||||
{
|
||||
device = "/dev/disk/by-label/boot";
|
||||
fsType = "vfat";
|
||||
options = [
|
||||
"uid=0"
|
||||
"gid=0"
|
||||
"fmask=0077"
|
||||
"dmask=0077"
|
||||
"defaults"
|
||||
];
|
||||
};
|
||||
|
||||
swapDevices = [
|
||||
{ device = "/dev/disk/by-label/swap"; }
|
||||
];
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.enp1s0.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
{outputs, vars, ...}: {
|
||||
imports = [
|
||||
outputs.nixosModules.base
|
||||
outputs.nixosModules.wsl
|
||||
];
|
||||
|
||||
wsl.enable = true;
|
||||
|
||||
networking = {
|
||||
inherit (vars) hostName domain;
|
||||
};
|
||||
|
||||
system.stateVersion = "23.11";
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
mkPkgs = import ./mkPkgs.nix;
|
||||
mkNixVim = import ./mkNixVim.nix;
|
||||
mkNixVimLib = import ./mkNixVimLib.nix;
|
||||
mkNixVimModule = import ./mkNixVimModule.nix;
|
||||
mkSystem = import ./mkSystem.nix;
|
||||
mkHomeConfiguration = import ./mkHomeConfiguration.nix;
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
{
|
||||
nixpkgs,
|
||||
inputs,
|
||||
outputs,
|
||||
flakeLib,
|
||||
vars,
|
||||
system,
|
||||
profile,
|
||||
modules ? [],
|
||||
...
|
||||
}: let
|
||||
overlays = [
|
||||
inputs.nixvim.overlays.default
|
||||
inputs.neovim-nightly-overlay.overlays.default
|
||||
inputs.nur.overlay
|
||||
inputs.nixgl.overlay
|
||||
];
|
||||
in
|
||||
import profile {
|
||||
inherit inputs outputs modules;
|
||||
extraSpecialArgs = {
|
||||
inherit inputs outputs vars flakeLib;
|
||||
inherit (inputs) nix-colors;
|
||||
};
|
||||
pkgs = flakeLib.mkPkgs {
|
||||
inherit nixpkgs system overlays;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
system,
|
||||
module,
|
||||
inputs,
|
||||
...
|
||||
}: let
|
||||
nixvim' = inputs.nixvim.legacyPackages.${system};
|
||||
nvim = nixvim'.makeNixvimWithModule module;
|
||||
in
|
||||
nvim
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
let
|
||||
mkNixVimLib = {
|
||||
inputs,
|
||||
system,
|
||||
...
|
||||
}: let
|
||||
nixvimLib = inputs.nixvim.lib.${system};
|
||||
in
|
||||
nixvimLib;
|
||||
in
|
||||
mkNixVimLib
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
pkgs,
|
||||
module,
|
||||
extraSpecialArgs ? {},
|
||||
...
|
||||
}: {
|
||||
inherit pkgs module extraSpecialArgs;
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
nixpkgs,
|
||||
system,
|
||||
overlays ? [],
|
||||
...
|
||||
}:
|
||||
import nixpkgs {
|
||||
inherit system overlays;
|
||||
config.allowUnfree = true;
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
inputs,
|
||||
system,
|
||||
hostName,
|
||||
nixpkgs,
|
||||
vars,
|
||||
...
|
||||
}: {
|
||||
${hostName} = nixpkgs.lib.nixosSystem {
|
||||
inherit system;
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
vars =
|
||||
vars
|
||||
// {
|
||||
inherit hostName;
|
||||
};
|
||||
};
|
||||
modules = [
|
||||
./hosts/${hostName}/configuration.nix
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
{ lib, vars, ... }: with lib; {
|
||||
home = {
|
||||
inherit (vars) username homeDirectory;
|
||||
language.base = vars.locale;
|
||||
stateVersion = "23.05";
|
||||
};
|
||||
|
||||
programs.home-manager.enable = true;
|
||||
|
||||
news = {
|
||||
display = "silent";
|
||||
json = mkForce { };
|
||||
entries = mkForce [ ];
|
||||
};
|
||||
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
{ lib, ... }: with lib; {
|
||||
imports = [
|
||||
./desktop
|
||||
./mpd
|
||||
];
|
||||
|
||||
desktop.enable = mkDefault true;
|
||||
|
||||
news = {
|
||||
display = "silent";
|
||||
json = mkForce { };
|
||||
entries = mkForce [ ];
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,87 @@
|
|||
args @ {
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
lib.mkIf config.desktop.awesome.enable {
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
mate.mate-polkit
|
||||
];
|
||||
sessionVariables = {
|
||||
QT_QPA_PLATFORMTHEME = "qt5ct";
|
||||
};
|
||||
file = {
|
||||
awesomewm-rc = {
|
||||
target = ".config/awesome/rc.lua";
|
||||
text = import ./config/rc.nix args;
|
||||
};
|
||||
awesomewm-theme = {
|
||||
target = ".config/awesome/theme.lua";
|
||||
text = import ./config/theme.nix args;
|
||||
};
|
||||
xinitrc = {
|
||||
target = ".xinitrc";
|
||||
text = ''
|
||||
#!/bin/sh
|
||||
|
||||
userresources=$HOME/.Xresources
|
||||
usermodmap=$HOME/.Xmodmap
|
||||
sysresources=/etc/X11/xinit/.Xresources
|
||||
sysmodmap=/etc/X11/xinit/.Xmodmap
|
||||
|
||||
# merge in defaults and keymaps
|
||||
|
||||
if [ -f $sysresources ]; then
|
||||
xrdb -merge $sysresources
|
||||
|
||||
fi
|
||||
|
||||
if [ -f $sysmodmap ]; then
|
||||
xmodmap $sysmodmap
|
||||
fi
|
||||
|
||||
if [ -f "$userresources" ]; then
|
||||
xrdb -merge "$userresources"
|
||||
|
||||
fi
|
||||
|
||||
if [ -f "$usermodmap" ]; then
|
||||
xmodmap "$usermodmap"
|
||||
fi
|
||||
|
||||
darkman dark
|
||||
${pkgs.mate.mate-polkit}/libexec/polkit-mate-authentication-agent-1 &
|
||||
|
||||
if test -z "$DBUS_SESSION_BUS_ADDRESS"; then
|
||||
eval $(dbus-launch --exit-with-session --sh-syntax)
|
||||
fi
|
||||
systemctl --user import-environment DISPLAY XAUTHORITY
|
||||
|
||||
if command -v dbus-update-activation-environment >/dev/null 2>&1; then
|
||||
dbus-update-activation-environment DISPLAY XAUTHORITY
|
||||
fi
|
||||
|
||||
exec awesome --search ${pkgs.luaPackages.vicious}/lib/lua/5.2
|
||||
'';
|
||||
executable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
xsession = {
|
||||
enable = true;
|
||||
command = "awesome";
|
||||
windowManager.awesome = {
|
||||
package = pkgs.awesome.override {
|
||||
lua = pkgs.luajit;
|
||||
};
|
||||
enable = true;
|
||||
luaModules = with pkgs.luaPackages; [
|
||||
luarocks
|
||||
vicious
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,625 @@
|
|||
{ config, pkgs, ... }:
|
||||
''
|
||||
os.setlocale(os.getenv("LANG"))
|
||||
|
||||
pcall(require, "luarocks.loader")
|
||||
|
||||
local gears = require("gears")
|
||||
local awful = require("awful")
|
||||
require("awful.autofocus")
|
||||
local wibox = require("wibox")
|
||||
local beautiful = require("beautiful")
|
||||
local naughty = require("naughty")
|
||||
local hotkeys_popup = require("awful.hotkeys_popup")
|
||||
require("awful.hotkeys_popup.keys")
|
||||
local vicious = require("vicious")
|
||||
|
||||
-- {{{ Error handling
|
||||
if awesome.startup_errors then
|
||||
naughty.notify({
|
||||
preset = naughty.config.presets.critical,
|
||||
title = "Oops, there were errors during startup!",
|
||||
text = awesome.startup_errors,
|
||||
})
|
||||
end
|
||||
do
|
||||
local in_error = false
|
||||
awesome.connect_signal("debug::error", function(err)
|
||||
if in_error then
|
||||
return
|
||||
end
|
||||
in_error = true
|
||||
|
||||
naughty.notify({
|
||||
preset = naughty.config.presets.critical,
|
||||
title = "Oops, an error happened!",
|
||||
text = tostring(err),
|
||||
})
|
||||
in_error = false
|
||||
end)
|
||||
end
|
||||
-- }}}
|
||||
|
||||
-- {{{ Variable definitions
|
||||
|
||||
local terminal = "${config.desktop.terminal}"
|
||||
local file_manager = "${config.desktop.fileManager}"
|
||||
local browser = "${config.desktop.browser}"
|
||||
local launcher = "${pkgs.rofi}/bin/rofi -show drun"
|
||||
|
||||
local modkey = "Mod4"
|
||||
|
||||
local layouts = {
|
||||
awful.layout.suit.spiral.dwindle,
|
||||
awful.layout.suit.tile,
|
||||
awful.layout.suit.floating,
|
||||
}
|
||||
local clock_format = "%A %d.%m.%Y %H:%M"
|
||||
local wallpaper = os.getenv("HOME") .. "/.wallpaper.jpg"
|
||||
local wifi_interface = ${config.desktop.awesome.wifi_device}
|
||||
local bat_device = ${config.desktop.awesome.battery_device}
|
||||
|
||||
beautiful.init(os.getenv("HOME") .. "/.config/awesome/theme.lua")
|
||||
beautiful.wallpaper = wallpaper
|
||||
|
||||
local tags = { "", "", "", "", "", "", "", "", "" }
|
||||
|
||||
awful.layout.layouts = layouts
|
||||
-- }}}
|
||||
|
||||
-- {{{ Bar
|
||||
-- Create a launcher widget and a main menu
|
||||
local mytextclock = wibox.widget.textclock(" " .. clock_format)
|
||||
|
||||
-- Create a wibox for each screen and add it
|
||||
local taglist_buttons = gears.table.join(
|
||||
awful.button({}, 1, function(t)
|
||||
t:view_only()
|
||||
end),
|
||||
awful.button({ modkey }, 1, function(t)
|
||||
if client.focus then
|
||||
client.focus:move_to_tag(t)
|
||||
end
|
||||
end),
|
||||
awful.button({}, 3, awful.tag.viewtoggle),
|
||||
awful.button({ modkey }, 3, function(t)
|
||||
if client.focus then
|
||||
client.focus:toggle_tag(t)
|
||||
end
|
||||
end),
|
||||
awful.button({}, 4, function(t)
|
||||
awful.tag.viewnext(t.screen)
|
||||
end),
|
||||
awful.button({}, 5, function(t)
|
||||
awful.tag.viewprev(t.screen)
|
||||
end)
|
||||
)
|
||||
|
||||
local tasklist_buttons = gears.table.join(
|
||||
awful.button({}, 1, function(c)
|
||||
if c == client.focus then
|
||||
c.minimized = true
|
||||
else
|
||||
c:emit_signal("request::activate", "tasklist", { raise = true })
|
||||
end
|
||||
end),
|
||||
awful.button({}, 3, function()
|
||||
awful.menu.client_list({ theme = { width = 250 } })
|
||||
end),
|
||||
awful.button({}, 4, function()
|
||||
awful.client.focus.byidx(1)
|
||||
end),
|
||||
awful.button({}, 5, function()
|
||||
awful.client.focus.byidx(-1)
|
||||
end)
|
||||
)
|
||||
|
||||
local function set_wallpaper(s)
|
||||
-- Wallpaper
|
||||
if beautiful.wallpaper then
|
||||
local _wallpaper = beautiful.wallpaper
|
||||
-- If wallpaper is a function, call it with the screen
|
||||
if type(_wallpaper) == "function" then
|
||||
_wallpaper = wallpaper(s)
|
||||
end
|
||||
gears.wallpaper.maximized(_wallpaper, s, true)
|
||||
end
|
||||
end
|
||||
|
||||
-- Re-set wallpaper when a screen's geometry changes (e.g. different resolution)
|
||||
screen.connect_signal("property::geometry", set_wallpaper)
|
||||
|
||||
awful.screen.connect_for_each_screen(function(s)
|
||||
-- Wallpaper
|
||||
set_wallpaper(s)
|
||||
|
||||
-- Each screen has its own tag table.
|
||||
--awful.tag({ " 1 ", " 2 ", " 3 ", " 4 ", " 5 ", " 6 ", " 7 ", " 8 ", " 9 " }, s, awful.layout.layouts[1])
|
||||
awful.tag(tags, s, awful.layout.layouts[1])
|
||||
|
||||
local cpuwidget = wibox.widget.textbox()
|
||||
vicious.cache(vicious.widgets.cpu)
|
||||
vicious.register(cpuwidget, vicious.widgets.cpu, " $1% ", 5)
|
||||
|
||||
local memwidget = wibox.widget.textbox()
|
||||
vicious.cache(vicious.widgets.mem)
|
||||
vicious.register(memwidget, vicious.widgets.mem, " $1% ", 5)
|
||||
|
||||
local volwidget = wibox.widget.textbox()
|
||||
vicious.cache(vicious.widgets.volume)
|
||||
vicious.register(volwidget, vicious.widgets.volume, " $1% ", 1, { "Master", "-D", "pipewire" })
|
||||
|
||||
local wifiwidget = nil
|
||||
if wifi_interface ~= nil then
|
||||
wifiwidget = wibox.widget.textbox()
|
||||
vicious.cache(vicious.widgets.wifiiw)
|
||||
vicious.register(wifiwidget, vicious.widgets.wifiiw, " ''${linp}% ", 30, wifi_interface)
|
||||
end
|
||||
|
||||
local batwidget = nil
|
||||
if bat_device ~= nil then
|
||||
batwidget = wibox.widget.textbox()
|
||||
vicious.cache(vicious.widgets.bat)
|
||||
vicious.register(batwidget, vicious.widgets.bat, " $2% ", 60, bat_device)
|
||||
end
|
||||
|
||||
local mylayoutbox = awful.widget.layoutbox(s)
|
||||
mylayoutbox:buttons(gears.table.join(
|
||||
awful.button({}, 1, function()
|
||||
awful.layout.inc(1)
|
||||
end),
|
||||
awful.button({}, 3, function()
|
||||
awful.layout.inc(-1)
|
||||
end),
|
||||
awful.button({}, 4, function()
|
||||
awful.layout.inc(1)
|
||||
end),
|
||||
awful.button({}, 5, function()
|
||||
awful.layout.inc(-1)
|
||||
end)
|
||||
))
|
||||
-- Create a taglist widget
|
||||
local mytaglist = awful.widget.taglist({
|
||||
screen = s,
|
||||
filter = awful.widget.taglist.filter.noempty,
|
||||
buttons = taglist_buttons,
|
||||
})
|
||||
|
||||
-- Create a tasklist widget
|
||||
local mytasklist = awful.widget.tasklist({
|
||||
screen = s,
|
||||
filter = awful.widget.tasklist.filter.currenttags,
|
||||
buttons = tasklist_buttons,
|
||||
})
|
||||
|
||||
-- Create the wibox
|
||||
local mywibox = awful.wibar({ position = "top", screen = s, height = 20 })
|
||||
|
||||
-- Add widgets to the wibox
|
||||
mywibox:setup({
|
||||
layout = wibox.layout.align.horizontal,
|
||||
{ -- Left widgets
|
||||
layout = wibox.layout.fixed.horizontal,
|
||||
spacing = 6,
|
||||
mytaglist,
|
||||
},
|
||||
mytasklist, -- Middle widget
|
||||
{ -- Right widgets
|
||||
layout = wibox.layout.fixed.horizontal,
|
||||
spacing = 6,
|
||||
batwidget,
|
||||
wifiwidget,
|
||||
volwidget,
|
||||
cpuwidget,
|
||||
memwidget,
|
||||
mytextclock,
|
||||
wibox.widget.systray(),
|
||||
mylayoutbox,
|
||||
},
|
||||
})
|
||||
end)
|
||||
-- }}}
|
||||
|
||||
-- {{{ Mouse bindings
|
||||
root.buttons(gears.table.join(awful.button({}, 4, awful.tag.viewnext), awful.button({}, 5, awful.tag.viewprev)))
|
||||
-- }}}
|
||||
|
||||
-- {{{ Key bindings
|
||||
local globalkeys = gears.table.join(
|
||||
awful.key({ modkey }, "s", hotkeys_popup.show_help, { description = "show help", group = "awesome" }),
|
||||
awful.key({ modkey }, "Left", awful.tag.viewprev, { description = "view previous", group = "tag" }),
|
||||
awful.key({ modkey }, "Right", awful.tag.viewnext, { description = "view next", group = "tag" }),
|
||||
awful.key({ modkey }, "Escape", awful.tag.history.restore, { description = "go back", group = "tag" }),
|
||||
awful.key({ modkey }, "j", function()
|
||||
awful.client.focus.byidx(1)
|
||||
end, { description = "focus next by index", group = "client" }),
|
||||
awful.key({ modkey }, "k", function()
|
||||
awful.client.focus.byidx(-1)
|
||||
end, { description = "focus previous by index", group = "client" }),
|
||||
|
||||
-- Layout manipulation
|
||||
awful.key({ modkey, "Shift" }, "j", function()
|
||||
awful.client.swap.byidx(1)
|
||||
end, { description = "swap with next client by index", group = "client" }),
|
||||
awful.key({ modkey, "Shift" }, "k", function()
|
||||
awful.client.swap.byidx(-1)
|
||||
end, { description = "swap with previous client by index", group = "client" }),
|
||||
awful.key({ modkey, "Control" }, "j", function()
|
||||
awful.screen.focus_relative(1)
|
||||
end, { description = "focus the next screen", group = "screen" }),
|
||||
awful.key({ modkey, "Control" }, "k", function()
|
||||
awful.screen.focus_relative(-1)
|
||||
end, { description = "focus the previous screen", group = "screen" }),
|
||||
awful.key({ modkey }, "u", awful.client.urgent.jumpto, { description = "jump to urgent client", group = "client" }),
|
||||
awful.key({ modkey }, "Tab", function()
|
||||
awful.client.focus.history.previous()
|
||||
if client.focus then
|
||||
client.focus:raise()
|
||||
end
|
||||
end, { description = "go back", group = "client" }),
|
||||
|
||||
-- Standard program
|
||||
awful.key({ modkey }, "Return", function()
|
||||
awful.spawn(terminal)
|
||||
end, { description = "open a terminal", group = "launcher" }),
|
||||
awful.key({ modkey, "Shift" }, "x", function() awful.spawn("rofi -show p -modi p:rofi-power-menu") end, { description = "power menu", group = "launcher" }),
|
||||
awful.key({ modkey, "Control" }, "r", awesome.restart, { description = "reload awesome", group = "awesome" }),
|
||||
awful.key({ modkey, "Control" }, "x", awesome.quit, { description = "quit awesome", group = "awesome" }),
|
||||
awful.key({ modkey }, "l", function()
|
||||
awful.tag.incmwfact(0.05)
|
||||
end, { description = "increase master width factor", group = "layout" }),
|
||||
awful.key({ modkey }, "h", function()
|
||||
awful.tag.incmwfact(-0.05)
|
||||
end, { description = "decrease master width factor", group = "layout" }),
|
||||
awful.key({ modkey, "Shift" }, "h", function()
|
||||
awful.tag.incnmaster(1, nil, true)
|
||||
end, { description = "increase the number of master clients", group = "layout" }),
|
||||
awful.key({ modkey, "Shift" }, "l", function()
|
||||
awful.tag.incnmaster(-1, nil, true)
|
||||
end, { description = "decrease the number of master clients", group = "layout" }),
|
||||
awful.key({ modkey, "Control" }, "h", function()
|
||||
awful.tag.incncol(1, nil, true)
|
||||
end, { description = "increase the number of columns", group = "layout" }),
|
||||
awful.key({ modkey, "Control" }, "l", function()
|
||||
awful.tag.incncol(-1, nil, true)
|
||||
end, { description = "decrease the number of columns", group = "layout" }),
|
||||
awful.key({ modkey }, "space", function()
|
||||
awful.layout.inc(1)
|
||||
end, { description = "select next", group = "layout" }),
|
||||
awful.key({ modkey, "Shift" }, "space", function()
|
||||
awful.layout.inc(-1)
|
||||
end, { description = "select previous", group = "layout" }),
|
||||
|
||||
awful.key({ modkey, "Control" }, "n", function()
|
||||
local c = awful.client.restore()
|
||||
-- Focus restored client
|
||||
if c then
|
||||
c:emit_signal("request::activate", "key.unminimize", { raise = true })
|
||||
end
|
||||
end, { description = "restore minimized", group = "client" }),
|
||||
|
||||
-- Prompt
|
||||
awful.key({ modkey }, "r", function()
|
||||
awful.spawn(launcher)
|
||||
end, { description = "run launcher", group = "launcher" }),
|
||||
awful.key({ modkey }, "w", function()
|
||||
awful.spawn(browser)
|
||||
end, { description = "run firefox", group = "launcher" }),
|
||||
awful.key({ modkey }, "e", function()
|
||||
awful.spawn(file_manager)
|
||||
end, { description = "run file manager", group = "launcher" }),
|
||||
|
||||
-- Volume Keys
|
||||
awful.key({}, "XF86AudioLowerVolume", function()
|
||||
awful.util.spawn("amixer -q -D pipewire sset Master 5%-", false)
|
||||
end),
|
||||
awful.key({}, "XF86AudioRaiseVolume", function()
|
||||
awful.util.spawn("amixer -q -D pipewire sset Master 5%+", false)
|
||||
end),
|
||||
awful.key({}, "XF86AudioMute", function()
|
||||
awful.util.spawn("amixer -D pipewire set Master 1+ toggle", false)
|
||||
end),
|
||||
-- Media Keys
|
||||
awful.key({}, "XF86AudioPlay", function()
|
||||
awful.util.spawn("playerctl play-pause", false)
|
||||
end),
|
||||
awful.key({}, "XF86AudioNext", function()
|
||||
awful.util.spawn("playerctl next", false)
|
||||
end),
|
||||
awful.key({}, "XF86AudioPrev", function()
|
||||
awful.util.spawn("playerctl previous", false)
|
||||
end)
|
||||
)
|
||||
|
||||
local clientkeys = gears.table.join(
|
||||
awful.key({ modkey }, "f", function(c)
|
||||
c.fullscreen = not c.fullscreen
|
||||
c:raise()
|
||||
end, { description = "toggle fullscreen", group = "client" }),
|
||||
awful.key({ modkey, "Shift" }, "q", function(c)
|
||||
c:kill()
|
||||
end, { description = "close", group = "client" }),
|
||||
awful.key({ modkey }, "q", function(c)
|
||||
c:kill()
|
||||
end, { description = "close", group = "client" }),
|
||||
awful.key(
|
||||
{ modkey, "Control" },
|
||||
"space",
|
||||
awful.client.floating.toggle,
|
||||
{ description = "toggle floating", group = "client" }
|
||||
),
|
||||
awful.key({ modkey, "Control" }, "Return", function(c)
|
||||
c:swap(awful.client.getmaster())
|
||||
end, { description = "move to master", group = "client" }),
|
||||
awful.key({ modkey }, "o", function(c)
|
||||
c:move_to_screen()
|
||||
end, { description = "move to screen", group = "client" }),
|
||||
awful.key({ modkey }, "t", function(c)
|
||||
c.ontop = not c.ontop
|
||||
end, { description = "toggle keep on top", group = "client" }),
|
||||
awful.key({ modkey }, "n", function(c)
|
||||
-- The client currently has the input focus, so it cannot be
|
||||
-- minimized, since minimized clients can't have the focus.
|
||||
c.minimized = true
|
||||
end, { description = "minimize", group = "client" }),
|
||||
awful.key({ modkey }, "m", function(c)
|
||||
c.maximized = not c.maximized
|
||||
c:raise()
|
||||
end, { description = "(un)maximize", group = "client" }),
|
||||
awful.key({ modkey, "Control" }, "m", function(c)
|
||||
c.maximized_vertical = not c.maximized_vertical
|
||||
c:raise()
|
||||
end, { description = "(un)maximize vertically", group = "client" }),
|
||||
awful.key({ modkey, "Shift" }, "m", function(c)
|
||||
c.maximized_horizontal = not c.maximized_horizontal
|
||||
c:raise()
|
||||
end, { description = "(un)maximize horizontally", group = "client" })
|
||||
)
|
||||
|
||||
-- Bind all key numbers to tags.
|
||||
-- Be careful: we use keycodes to make it work on any keyboard layout.
|
||||
-- This should map on the top row of your keyboard, usually 1 to 9.
|
||||
for i = 1, 9 do
|
||||
globalkeys = gears.table.join(
|
||||
globalkeys,
|
||||
-- View tag only.
|
||||
awful.key({ modkey }, "#" .. i + 9, function()
|
||||
local screen = awful.screen.focused()
|
||||
local tag = screen.tags[i]
|
||||
if tag then
|
||||
tag:view_only()
|
||||
end
|
||||
end, { description = "view tag #" .. i, group = "tag" }),
|
||||
-- Toggle tag display.
|
||||
awful.key({ modkey, "Control" }, "#" .. i + 9, function()
|
||||
local screen = awful.screen.focused()
|
||||
local tag = screen.tags[i]
|
||||
if tag then
|
||||
awful.tag.viewtoggle(tag)
|
||||
end
|
||||
end, { description = "toggle tag #" .. i, group = "tag" }),
|
||||
-- Move client to tag.
|
||||
awful.key({ modkey, "Shift" }, "#" .. i + 9, function()
|
||||
if client.focus then
|
||||
local tag = client.focus.screen.tags[i]
|
||||
if tag then
|
||||
client.focus:move_to_tag(tag)
|
||||
end
|
||||
end
|
||||
end, { description = "move focused client to tag #" .. i, group = "tag" }),
|
||||
-- Toggle tag on focused client.
|
||||
awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9, function()
|
||||
if client.focus then
|
||||
local tag = client.focus.screen.tags[i]
|
||||
if tag then
|
||||
client.focus:toggle_tag(tag)
|
||||
end
|
||||
end
|
||||
end, { description = "toggle focused client on tag #" .. i, group = "tag" })
|
||||
)
|
||||
end
|
||||
|
||||
local clientbuttons = gears.table.join(
|
||||
awful.button({}, 1, function(c)
|
||||
c:emit_signal("request::activate", "mouse_click", { raise = true })
|
||||
end),
|
||||
awful.button({ modkey }, 1, function(c)
|
||||
c:emit_signal("request::activate", "mouse_click", { raise = true })
|
||||
awful.mouse.client.move(c)
|
||||
end),
|
||||
awful.button({ modkey }, 3, function(c)
|
||||
c:emit_signal("request::activate", "mouse_click", { raise = true })
|
||||
awful.mouse.client.resize(c)
|
||||
end)
|
||||
)
|
||||
|
||||
-- Set keys
|
||||
root.keys(globalkeys)
|
||||
-- }}}
|
||||
|
||||
-- {{{ Rules
|
||||
-- Rules to apply to new clients (through the "manage" signal).
|
||||
--
|
||||
local function is_terminal(c)
|
||||
return (c.class and c.class:match("itty")) and true or false
|
||||
end
|
||||
|
||||
local function copy_size(c, parent_client)
|
||||
if not c or not parent_client then
|
||||
return
|
||||
end
|
||||
if not c.valid or not parent_client.valid then
|
||||
return
|
||||
end
|
||||
c.x = parent_client.x
|
||||
c.y = parent_client.y
|
||||
c.width = parent_client.width
|
||||
c.height = parent_client.height
|
||||
end
|
||||
|
||||
local function check_resize_client(c)
|
||||
if c.child_resize then
|
||||
copy_size(c.child_resize, c)
|
||||
end
|
||||
end
|
||||
|
||||
client.connect_signal("property::size", check_resize_client)
|
||||
client.connect_signal("property::position", check_resize_client)
|
||||
client.connect_signal("manage", function(c)
|
||||
if is_terminal(c) then
|
||||
return
|
||||
end
|
||||
local parent_client = awful.client.focus.history.get(c.screen, 1)
|
||||
if parent_client and is_terminal(parent_client) then
|
||||
parent_client.child_resize = c
|
||||
c.floating = true
|
||||
copy_size(c, parent_client)
|
||||
end
|
||||
end)
|
||||
--
|
||||
awful.rules.rules = {
|
||||
-- All clients will match this rule.
|
||||
{
|
||||
rule = {},
|
||||
properties = {
|
||||
border_width = beautiful.border_width,
|
||||
border_color = beautiful.border_normal,
|
||||
focus = awful.client.focus.filter,
|
||||
raise = true,
|
||||
keys = clientkeys,
|
||||
buttons = clientbuttons,
|
||||
screen = awful.screen.preferred,
|
||||
placement = awful.placement.no_overlap + awful.placement.no_offscreen,
|
||||
},
|
||||
},
|
||||
|
||||
-- Floating clients.
|
||||
{
|
||||
rule_any = {
|
||||
instance = {
|
||||
"DTA", -- Firefox addon DownThemAll.
|
||||
"copyq", -- Includes session name in class.
|
||||
"pinentry",
|
||||
},
|
||||
class = {
|
||||
"Arandr",
|
||||
"Blueman-manager",
|
||||
"Gpick",
|
||||
"Kruler",
|
||||
"MessageWin", -- kalarm.
|
||||
"Sxiv",
|
||||
"Tor Browser", -- Needs a fixed window size to avoid fingerprinting by screen size.
|
||||
"Wpa_gui",
|
||||
"veromix",
|
||||
"xtightvncviewer",
|
||||
},
|
||||
|
||||
-- Note that the name property shown in xprop might be set slightly after creation of the client
|
||||
-- and the name shown there might not match defined rules here.
|
||||
name = {
|
||||
"Event Tester", -- xev.
|
||||
},
|
||||
role = {
|
||||
"AlarmWindow", -- Thunderbird's calendar.
|
||||
"ConfigManager", -- Thunderbird's about:config.
|
||||
"pop-up", -- e.g. Google Chrome's (detached) Developer Tools.
|
||||
},
|
||||
},
|
||||
properties = { floating = true },
|
||||
},
|
||||
|
||||
-- Add titlebars to normal clients and dialogs
|
||||
{ rule_any = { type = { "normal", "dialog" } }, properties = { titlebars_enabled = false } },
|
||||
|
||||
-- Set Firefox to always map on the tag named "2" on screen 1.
|
||||
-- { rule = { class = "Firefox" },
|
||||
-- properties = { screen = 1, tag = "2" } },
|
||||
{
|
||||
rule_any = { class = { "steamwebhelper", "steam" } },
|
||||
properties = { screen = 1, tag = tags[9] },
|
||||
},
|
||||
-- Media
|
||||
{
|
||||
rule = {
|
||||
class = "mpv",
|
||||
},
|
||||
properties = { tag = tags[7], fullscreen = true, floating = false, maximized = false },
|
||||
},
|
||||
-- Games
|
||||
{
|
||||
rule_any = {
|
||||
class = { "steam_app_251730" },
|
||||
},
|
||||
properties = { screen = 1, tag = tags[8], fullscreen = true, floating = false, maximized = false },
|
||||
},
|
||||
}
|
||||
-- }}}
|
||||
|
||||
-- {{{ Signals
|
||||
-- Signal function to execute when a new client appears.
|
||||
client.connect_signal("manage", function(c)
|
||||
-- Set the windows at the slave,
|
||||
-- i.e. put it at the end of others instead of setting it master.
|
||||
if not awesome.startup then
|
||||
awful.client.setslave(c)
|
||||
end
|
||||
|
||||
if awesome.startup and not c.size_hints.user_position and not c.size_hints.program_position then
|
||||
-- Prevent clients from being unreachable after screen count changes.
|
||||
awful.placement.no_offscreen(c)
|
||||
end
|
||||
end)
|
||||
|
||||
-- Add a titlebar if titlebars_enabled is set to true in the rules.
|
||||
client.connect_signal("request::titlebars", function(c)
|
||||
-- buttons for the titlebar
|
||||
local buttons = gears.table.join(
|
||||
awful.button({}, 1, function()
|
||||
c:emit_signal("request::activate", "titlebar", { raise = true })
|
||||
awful.mouse.client.move(c)
|
||||
end),
|
||||
awful.button({}, 3, function()
|
||||
c:emit_signal("request::activate", "titlebar", { raise = true })
|
||||
awful.mouse.client.resize(c)
|
||||
end)
|
||||
)
|
||||
|
||||
awful.titlebar(c):setup({
|
||||
{ -- Left
|
||||
awful.titlebar.widget.iconwidget(c),
|
||||
buttons = buttons,
|
||||
layout = wibox.layout.fixed.horizontal,
|
||||
},
|
||||
{ -- Middle
|
||||
{ -- Title
|
||||
align = "center",
|
||||
widget = awful.titlebar.widget.titlewidget(c),
|
||||
},
|
||||
buttons = buttons,
|
||||
layout = wibox.layout.flex.horizontal,
|
||||
},
|
||||
{ -- Right
|
||||
awful.titlebar.widget.floatingbutton(c),
|
||||
awful.titlebar.widget.maximizedbutton(c),
|
||||
awful.titlebar.widget.stickybutton(c),
|
||||
awful.titlebar.widget.ontopbutton(c),
|
||||
awful.titlebar.widget.closebutton(c),
|
||||
layout = wibox.layout.fixed.horizontal(),
|
||||
},
|
||||
layout = wibox.layout.align.horizontal,
|
||||
})
|
||||
end)
|
||||
|
||||
-- Enable sloppy focus, so that focus follows mouse.
|
||||
client.connect_signal("mouse::enter", function(c)
|
||||
c:emit_signal("request::activate", "mouse_enter", { raise = false })
|
||||
end)
|
||||
|
||||
client.connect_signal("focus", function(c)
|
||||
c.border_color = beautiful.border_focus
|
||||
end)
|
||||
client.connect_signal("unfocus", function(c)
|
||||
c.border_color = beautiful.border_normal
|
||||
end)
|
||||
-- }}}
|
||||
''
|
||||
|
|
@ -0,0 +1,134 @@
|
|||
{ config, ... }:
|
||||
''
|
||||
---------------------------
|
||||
-- Default awesome theme --
|
||||
---------------------------
|
||||
|
||||
local theme_assets = require("beautiful.theme_assets")
|
||||
local xresources = require("beautiful.xresources")
|
||||
local dpi = xresources.apply_dpi
|
||||
|
||||
local gfs = require("gears.filesystem")
|
||||
local themes_path = gfs.get_themes_dir()
|
||||
|
||||
local theme = {}
|
||||
|
||||
theme.font = "monospace 11"
|
||||
theme.useless_gap = dpi(4)
|
||||
|
||||
theme.border_width = dpi(2)
|
||||
|
||||
theme.fg_normal = "#${config.colorScheme.palette.base05}"
|
||||
theme.fg_focus = "#${config.colorScheme.palette.base0D}"
|
||||
theme.fg_urgent = "#${config.colorScheme.palette.base05}"
|
||||
theme.fg_minimize = "#${config.colorScheme.palette.base05}"
|
||||
theme.bg_normal = "#${config.colorScheme.palette.base00}"
|
||||
theme.bg_focus = "#${config.colorScheme.palette.base01}"
|
||||
theme.bg_urgent = "#${config.colorScheme.palette.base08}"
|
||||
theme.bg_minimize = "#${config.colorScheme.palette.base00}"
|
||||
theme.bg_systray = theme.bg_normal
|
||||
|
||||
theme.border_normal = "#${config.colorScheme.palette.base00}"
|
||||
theme.border_focus = "#${config.colorScheme.palette.base0D}"
|
||||
theme.border_marked = "#${config.colorScheme.palette.base0B}"
|
||||
|
||||
theme.tasklist_bg_focus = theme.bg_focus
|
||||
theme.titlebar_bg_focus = theme.bg_focus
|
||||
theme.titlebar_bg_normal = theme.bg_normal
|
||||
theme.titlebar_fg_focus = theme.fg_focus
|
||||
|
||||
-- There are other variable sets
|
||||
-- overriding the default one when
|
||||
-- defined, the sets are:
|
||||
-- taglist_[bg|fg]_[focus|urgent|occupied|empty|volatile]
|
||||
-- tasklist_[bg|fg]_[focus|urgent]
|
||||
-- titlebar_[bg|fg]_[normal|focus]
|
||||
-- tooltip_[font|opacity|fg_color|bg_color|border_width|border_color]
|
||||
-- mouse_finder_[color|timeout|animate_timeout|radius|factor]
|
||||
-- prompt_[fg|bg|fg_cursor|bg_cursor|font]
|
||||
-- hotkeys_[bg|fg|border_width|border_color|shape|opacity|modifiers_fg|label_bg|label_fg|group_margin|font|
|
||||
-- description_font]
|
||||
-- Example:
|
||||
--theme.taglist_bg_focus = "#ff0000"
|
||||
|
||||
-- Generate taglist squares:
|
||||
theme.taglist_spacing = dpi(2)
|
||||
--local taglist_square_size = dpi(4)
|
||||
--theme.taglist_squares_sel = theme_assets.taglist_squares_sel(taglist_square_size, theme.fg_normal)
|
||||
--theme.taglist_squares_unsel = theme_assets.taglist_squares_unsel(taglist_square_size, theme.fg_normal)
|
||||
|
||||
-- Variables set for theming notifications:
|
||||
-- notification_font
|
||||
-- notification_[bg|fg]
|
||||
-- notification_[width|height|margin]
|
||||
-- notification_[border_color|border_width|shape|opacity]
|
||||
|
||||
-- Variables set for theming the menu:
|
||||
-- menu_[bg|fg]_[normal|focus]
|
||||
-- menu_[border_color|border_width]
|
||||
theme.menu_submenu_icon = themes_path .. "default/submenu.png"
|
||||
theme.menu_height = dpi(20)
|
||||
theme.menu_width = dpi(150)
|
||||
|
||||
-- You can add as many variables as
|
||||
-- you wish and access them by using
|
||||
-- beautiful.variable in your rc.lua
|
||||
--theme.bg_widget = "#cc0000"
|
||||
|
||||
-- Define the image to load
|
||||
theme.titlebar_close_button_normal = themes_path .. "default/titlebar/close_normal.png"
|
||||
theme.titlebar_close_button_focus = themes_path .. "default/titlebar/close_focus.png"
|
||||
|
||||
theme.titlebar_minimize_button_normal = themes_path .. "default/titlebar/minimize_normal.png"
|
||||
theme.titlebar_minimize_button_focus = themes_path .. "default/titlebar/minimize_focus.png"
|
||||
|
||||
theme.titlebar_ontop_button_normal_inactive = themes_path .. "default/titlebar/ontop_normal_inactive.png"
|
||||
theme.titlebar_ontop_button_focus_inactive = themes_path .. "default/titlebar/ontop_focus_inactive.png"
|
||||
theme.titlebar_ontop_button_normal_active = themes_path .. "default/titlebar/ontop_normal_active.png"
|
||||
theme.titlebar_ontop_button_focus_active = themes_path .. "default/titlebar/ontop_focus_active.png"
|
||||
|
||||
theme.titlebar_sticky_button_normal_inactive = themes_path .. "default/titlebar/sticky_normal_inactive.png"
|
||||
theme.titlebar_sticky_button_focus_inactive = themes_path .. "default/titlebar/sticky_focus_inactive.png"
|
||||
theme.titlebar_sticky_button_normal_active = themes_path .. "default/titlebar/sticky_normal_active.png"
|
||||
theme.titlebar_sticky_button_focus_active = themes_path .. "default/titlebar/sticky_focus_active.png"
|
||||
|
||||
theme.titlebar_floating_button_normal_inactive = themes_path .. "default/titlebar/floating_normal_inactive.png"
|
||||
theme.titlebar_floating_button_focus_inactive = themes_path .. "default/titlebar/floating_focus_inactive.png"
|
||||
theme.titlebar_floating_button_normal_active = themes_path .. "default/titlebar/floating_normal_active.png"
|
||||
theme.titlebar_floating_button_focus_active = themes_path .. "default/titlebar/floating_focus_active.png"
|
||||
|
||||
theme.titlebar_maximized_button_normal_inactive = themes_path .. "default/titlebar/maximized_normal_inactive.png"
|
||||
theme.titlebar_maximized_button_focus_inactive = themes_path .. "default/titlebar/maximized_focus_inactive.png"
|
||||
theme.titlebar_maximized_button_normal_active = themes_path .. "default/titlebar/maximized_normal_active.png"
|
||||
theme.titlebar_maximized_button_focus_active = themes_path .. "default/titlebar/maximized_focus_active.png"
|
||||
|
||||
theme.wallpaper = themes_path .. "default/background.png"
|
||||
|
||||
-- You can use your own layout icons like this:
|
||||
theme.layout_fairh = themes_path .. "default/layouts/fairhw.png"
|
||||
theme.layout_fairv = themes_path .. "default/layouts/fairvw.png"
|
||||
theme.layout_floating = themes_path .. "default/layouts/floatingw.png"
|
||||
theme.layout_magnifier = themes_path .. "default/layouts/magnifierw.png"
|
||||
theme.layout_max = themes_path .. "default/layouts/maxw.png"
|
||||
theme.layout_fullscreen = themes_path .. "default/layouts/fullscreenw.png"
|
||||
theme.layout_tilebottom = themes_path .. "default/layouts/tilebottomw.png"
|
||||
theme.layout_tileleft = themes_path .. "default/layouts/tileleftw.png"
|
||||
theme.layout_tile = themes_path .. "default/layouts/tilew.png"
|
||||
theme.layout_tiletop = themes_path .. "default/layouts/tiletopw.png"
|
||||
theme.layout_spiral = themes_path .. "default/layouts/spiralw.png"
|
||||
theme.layout_dwindle = themes_path .. "default/layouts/dwindlew.png"
|
||||
theme.layout_cornernw = themes_path .. "default/layouts/cornernww.png"
|
||||
theme.layout_cornerne = themes_path .. "default/layouts/cornernew.png"
|
||||
theme.layout_cornersw = themes_path .. "default/layouts/cornersww.png"
|
||||
theme.layout_cornerse = themes_path .. "default/layouts/cornersew.png"
|
||||
|
||||
-- Generate Awesome icon:
|
||||
theme.awesome_icon = theme_assets.awesome_icon(theme.menu_height, theme.bg_focus, theme.fg_focus)
|
||||
|
||||
-- Define the icon theme for application icons. If not set then the icons
|
||||
-- from /usr/share/icons and /usr/share/icons/hicolor will be used.
|
||||
theme.icon_theme = "Papirus-Dark"
|
||||
|
||||
return theme
|
||||
''
|
||||
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
{ lib, ... }: {
|
||||
options = {
|
||||
desktop = {
|
||||
awesome = {
|
||||
enable = lib.mkEnableOption "AwesomeWM";
|
||||
wifi_device = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
description = "the default launcher to use";
|
||||
default = "nil";
|
||||
example = "'wlp3s0'";
|
||||
};
|
||||
battery_device = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
description = "the default launcher to use";
|
||||
default = "nil";
|
||||
example = "'BAT0'";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
imports = [ ./awesomewm.nix ];
|
||||
}
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
nix-colors,
|
||||
...
|
||||
}: {
|
||||
options = {
|
||||
desktop = {
|
||||
enable = lib.mkEnableOption "gui";
|
||||
terminal = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
description = "the default terminal to use";
|
||||
default = "kitty";
|
||||
};
|
||||
fileManager = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
description = "the default file_manager to use";
|
||||
default = "thunar";
|
||||
};
|
||||
browser = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
description = "the default browser to use";
|
||||
default = "firefox";
|
||||
};
|
||||
launcher = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
description = "the default launcher to use";
|
||||
default = "rofi -show drun";
|
||||
};
|
||||
};
|
||||
};
|
||||
imports = [
|
||||
nix-colors.homeManagerModules.default
|
||||
./firefox
|
||||
./keepassxc
|
||||
./kitty
|
||||
./nextcloud-client
|
||||
./picom
|
||||
./nixGL
|
||||
./theme
|
||||
./awesome
|
||||
./rofi
|
||||
];
|
||||
config = lib.mkIf config.desktop.enable {
|
||||
desktop.awesome.enable = lib.mkDefault true;
|
||||
programs = {
|
||||
keepassxc.enable = lib.mkDefault true;
|
||||
firefox.enable = lib.mkDefault true;
|
||||
kitty.enable = lib.mkDefault true;
|
||||
};
|
||||
services = {
|
||||
nextcloud-client.enable = lib.mkDefault true;
|
||||
udiskie.enable = lib.mkDefault true;
|
||||
picom.enable = lib.mkDefault true;
|
||||
};
|
||||
fonts.fontconfig.enable = true;
|
||||
colorScheme = nix-colors.colorSchemes.catppuccin-mocha;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
{pkgs, config, lib, ...}: lib.mkIf config.programs.firefox.enable {
|
||||
programs.firefox = {
|
||||
package = pkgs.firefox.override {
|
||||
nativeMessagingHosts = with pkgs; [
|
||||
tridactyl-native
|
||||
keepassxc
|
||||
];
|
||||
};
|
||||
profiles.odie = {
|
||||
isDefault = true;
|
||||
id = 0;
|
||||
name = "odie";
|
||||
search = {
|
||||
default = "DuckDuckGo";
|
||||
force = true;
|
||||
};
|
||||
extensions = with pkgs.nur.repos.rycee.firefox-addons; [
|
||||
adnauseam
|
||||
istilldontcareaboutcookies
|
||||
sponsorblock
|
||||
stylus
|
||||
keepassxc-browser
|
||||
tridactyl
|
||||
canvasblocker
|
||||
deutsch-de-language-pack
|
||||
greasemonkey
|
||||
youtube-recommended-videos # unhook
|
||||
return-youtube-dislikes
|
||||
user-agent-string-switcher
|
||||
];
|
||||
settings = {
|
||||
"browser.startup.homepage" = "https://duckduckgo.com";
|
||||
"browser.search.region" = "DE";
|
||||
"browser.search.isUS" = false;
|
||||
"distribution.searchplugins.defaultLocale" = "de-DE";
|
||||
"general.useragent.locale" = "de-DE";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
{ pkgs, lib, config, ... }: {
|
||||
options = {
|
||||
programs.keepassxc.enable = lib.mkEnableOption "keepassxc";
|
||||
};
|
||||
config = lib.mkIf config.programs.keepassxc.enable {
|
||||
home.packages = [
|
||||
pkgs.keepassxc
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
config = lib.mkIf config.programs.kitty.enable {
|
||||
programs.kitty = {
|
||||
font = {
|
||||
name = "JetBrains Mono";
|
||||
size = 10;
|
||||
};
|
||||
shellIntegration.enableZshIntegration = true;
|
||||
settings = {
|
||||
background_opacity = 1;
|
||||
enable_audio_bell = "no";
|
||||
visual_bell_duration = "0.025";
|
||||
window_padding_width = 0;
|
||||
symbol_map = "U+E5FA-U+E62B,U+E700-U+E7C5,U+F000-U+F2E0,U+E200-U+E2A9,U+F500-U+FD46,U+E300-U+E3EB,U+F400-U+F4A8,U+2665,U+26A1,U+F27C,U+E0A3,U+E0B4-U+E0C8,U+E0CA,U+E0CC-U+E0D2,U+E0D4,U+23FB-U+23FE,U+2B58,U+F300-U+F313,U+E000-U+E00D Symbols Nerd Font Mono";
|
||||
};
|
||||
theme = "Catppuccin-Mocha";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
{lib,config,...}: lib.mkIf config.services.nextcloud-client.enable {
|
||||
services.nextcloud-client = {
|
||||
startInBackground = true;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
{ pkgs, lib, config, ... }: {
|
||||
options = {
|
||||
services.nixGL.enable = lib.mkEnableOption "nixGL";
|
||||
};
|
||||
config = lib.mkIf config.services.nixGL.enable {
|
||||
home.packages = with pkgs; [
|
||||
nixgl.auto.nixGLDefault
|
||||
nixgl.auto.nixGLNvidia
|
||||
nixgl.auto.nixVulkanNvidia
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
{ config, lib, ... }: {
|
||||
options = {
|
||||
services = {
|
||||
picom = {
|
||||
glxBackend = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
description = "the default terminal to use";
|
||||
default = "glx";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
config = {
|
||||
services.picom = lib.mkIf config.services.picom.enable {
|
||||
backend = config.services.picom.glxBackend;
|
||||
fade = true;
|
||||
opacityRules = [
|
||||
"95:class_g = 'kitty' && focused"
|
||||
"85:class_g = 'kitty' && !focused"
|
||||
"95:class_g = 'Alacritty' && focused"
|
||||
"85:class_g = 'Alacritty' && !focused"
|
||||
"85:window_type = 'dock'"
|
||||
];
|
||||
settings = {
|
||||
blur = {
|
||||
method = "gaussian";
|
||||
size = 10;
|
||||
deviation = 5.0;
|
||||
};
|
||||
corner-radius = 6;
|
||||
rounded-corners-exclude = [
|
||||
"window_type = 'dock'"
|
||||
"window_type = 'desktop'"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,140 @@
|
|||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: lib.mkIf config.programs.rofi.enable {
|
||||
home.packages = with pkgs; [
|
||||
rofi-power-menu
|
||||
rofimoji
|
||||
];
|
||||
|
||||
programs.rofi = {
|
||||
extraConfig = {
|
||||
modi = "run,drun,window";
|
||||
icon-theme = "Papirus-Dark";
|
||||
show-icons = true;
|
||||
drun-display-format = "{icon} {name}";
|
||||
hide-scrollbar = true;
|
||||
display-drun = " Apps ";
|
||||
display-run = " Run ";
|
||||
display-window = " Window";
|
||||
display-Network = " Network";
|
||||
};
|
||||
theme = let
|
||||
inherit (config.lib.formats.rasi) mkLiteral;
|
||||
in {
|
||||
"*" = {
|
||||
bg-col = mkLiteral "#1e1e2e";
|
||||
bg-col-light = mkLiteral "#1e1e2e";
|
||||
border-col = mkLiteral "#1e1e2e";
|
||||
selected-col = mkLiteral "#1e1e2e";
|
||||
blue = mkLiteral "#89b4fa";
|
||||
fg-col = mkLiteral "#cdd6f4";
|
||||
fg-col2 = mkLiteral "#f38ba8";
|
||||
grey = mkLiteral "#6c7086";
|
||||
|
||||
width = 600;
|
||||
font = "JetBrainsMono 11";
|
||||
};
|
||||
|
||||
"element-text, element-icon, mode-switcher" = {
|
||||
background-color = mkLiteral "inherit";
|
||||
text-color = mkLiteral "inherit";
|
||||
};
|
||||
|
||||
window = {
|
||||
height = mkLiteral "360px";
|
||||
border = mkLiteral "3px";
|
||||
border-color = mkLiteral "@border-col";
|
||||
background-color = mkLiteral "@bg-col";
|
||||
};
|
||||
|
||||
mainbox = {
|
||||
background-color = mkLiteral "@bg-col";
|
||||
};
|
||||
|
||||
inputbar = {
|
||||
children = mkLiteral "[prompt,entry]";
|
||||
background-color = mkLiteral "@bg-col";
|
||||
border-radius = mkLiteral "5px";
|
||||
padding = mkLiteral "2px";
|
||||
};
|
||||
|
||||
prompt = {
|
||||
background-color = mkLiteral "@blue";
|
||||
padding = mkLiteral "6px";
|
||||
text-color = mkLiteral "@bg-col";
|
||||
border-radius = mkLiteral "3px";
|
||||
margin = mkLiteral "20px 0px 0px 20px";
|
||||
};
|
||||
|
||||
textbox-prompt-colon = {
|
||||
expand = false;
|
||||
str = ":";
|
||||
};
|
||||
|
||||
entry = {
|
||||
padding = mkLiteral "6px";
|
||||
margin = mkLiteral "20px 0px 0px 10px";
|
||||
text-color = mkLiteral "@fg-col";
|
||||
background-color = mkLiteral "@bg-col";
|
||||
};
|
||||
|
||||
listview = {
|
||||
border = mkLiteral "0px 0px 0px";
|
||||
padding = mkLiteral "6px 0px 0px";
|
||||
margin = mkLiteral "10px 0px 0px 20px";
|
||||
columns = 2;
|
||||
lines = 5;
|
||||
background-color = mkLiteral "@bg-col";
|
||||
};
|
||||
|
||||
element = {
|
||||
padding = mkLiteral "5px";
|
||||
background-color = mkLiteral "@bg-col";
|
||||
text-color = mkLiteral "@fg-col";
|
||||
};
|
||||
|
||||
element-icon = {
|
||||
size = mkLiteral "25px";
|
||||
};
|
||||
|
||||
"element selected" = {
|
||||
background-color = mkLiteral "@selected-col ";
|
||||
text-color = mkLiteral "@fg-col2";
|
||||
};
|
||||
|
||||
mode-switcher = {
|
||||
spacing = 0;
|
||||
};
|
||||
|
||||
button = {
|
||||
padding = mkLiteral "10px";
|
||||
background-color = mkLiteral "@bg-col-light";
|
||||
text-color = mkLiteral "@grey";
|
||||
vertical-align = mkLiteral "0.5";
|
||||
horizontal-align = mkLiteral "0.5";
|
||||
};
|
||||
|
||||
"button selected" = {
|
||||
background-color = mkLiteral "@bg-col";
|
||||
text-color = mkLiteral "@blue";
|
||||
};
|
||||
|
||||
message = {
|
||||
background-color = mkLiteral "@bg-col-light";
|
||||
margin = mkLiteral "2px";
|
||||
padding = mkLiteral "2px";
|
||||
border-radius = mkLiteral "5px";
|
||||
};
|
||||
|
||||
textbox = {
|
||||
padding = mkLiteral "6px";
|
||||
margin = mkLiteral "20px 0px 0px 20px";
|
||||
text-color = mkLiteral "@blue";
|
||||
background-color = mkLiteral "@bg-col-light";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
options = {
|
||||
theme.cursor.enable = lib.mkEnableOption "Xorg cursor";
|
||||
};
|
||||
config = lib.mkIf config.theme.cursor.enable {
|
||||
home = {
|
||||
pointerCursor = {
|
||||
name = "Colloid-teal-dark";
|
||||
package = pkgs.colloid-icon-theme;
|
||||
size = 24;
|
||||
gtk.enable = true;
|
||||
x11.enable = true;
|
||||
};
|
||||
};
|
||||
nixpkgs.config.packageOverrides = pkgs: {
|
||||
colloid-icon-theme = pkgs.colloid-icon-theme.override {
|
||||
colorVariants = ["teal"];
|
||||
};
|
||||
catppuccin-gtk = pkgs.catppuccin-gtk.override {
|
||||
accents = ["blue"]; # You can specify multiple accents here to output multiple themes
|
||||
size = "standard";
|
||||
variant = "mocha";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
{lib, ...}: {
|
||||
imports = [
|
||||
./cursor.nix
|
||||
./gtk.nix
|
||||
];
|
||||
|
||||
theme.cursor.enable = lib.mkDefault true;
|
||||
theme.gtk.enable = lib.mkDefault true;
|
||||
}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
options = {
|
||||
theme.gtk.enable = lib.mkEnableOption "Xorg cursor";
|
||||
};
|
||||
config = lib.mkIf config.theme.gtk.enable {
|
||||
gtk = {
|
||||
enable = true;
|
||||
cursorTheme = {
|
||||
name = "Colloid-teal-dark";
|
||||
package = pkgs.colloid-icon-theme;
|
||||
};
|
||||
iconTheme = {
|
||||
name = "Papirus-Dark";
|
||||
package = pkgs.papirus-icon-theme;
|
||||
};
|
||||
theme = {
|
||||
name = "Catppuccin-Mocha-Standard-Blue-Dark";
|
||||
package = pkgs.catppuccin-gtk;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
_: {
|
||||
imports = [
|
||||
./development
|
||||
];
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
_: {
|
||||
imports = [
|
||||
./gitea
|
||||
./neovim-ide
|
||||
];
|
||||
|
||||
programs = {
|
||||
lazygit.enable = true;
|
||||
gitea-cli.enable = true;
|
||||
neovim-ide.enable = true;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
{ lib, pkgs, config, ... }: {
|
||||
options = {
|
||||
programs.gitea-cli.enable = lib.mkEnableOption "gitea-cli";
|
||||
};
|
||||
config = lib.mkIf config.programs.gitea-cli.enable {
|
||||
home.packages = with pkgs; [
|
||||
tea
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
outputs,
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
options = {
|
||||
programs.neovim-ide.enable = lib.mkEnableOption "neovim-ide";
|
||||
};
|
||||
config = lib.mkIf config.programs.neovim-ide.enable {
|
||||
home = {
|
||||
packages = [outputs.packages.${pkgs.system}.neovim-ide];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
{ lib, ... }: {
|
||||
imports = [
|
||||
./mpd.nix
|
||||
./ncmpcpp.nix
|
||||
];
|
||||
|
||||
programs = {
|
||||
ncmpcpp.enable = lib.mkDefault true;
|
||||
};
|
||||
services = {
|
||||
mpd.enable = lib.mkDefault true;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
{lib,config,...}: lib.mkIf config.services.mpd.enable {
|
||||
services.mpd = {
|
||||
musicDirectory = "/mnt/media/Audio/Musik";
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
{lib,config,...}: lib.mkIf config.programs.ncmpcpp.enable {
|
||||
programs.ncmpcpp = {
|
||||
bindings = [
|
||||
{
|
||||
key = "j";
|
||||
command = "scroll_down";
|
||||
}
|
||||
{
|
||||
key = "k";
|
||||
command = "scroll_up";
|
||||
}
|
||||
{
|
||||
key = "J";
|
||||
command = ["select_item" "scroll_down"];
|
||||
}
|
||||
{
|
||||
key = "K";
|
||||
command = ["select_item" "scroll_up"];
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
_: {
|
||||
imports = [
|
||||
./shell
|
||||
];
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
{ config, lib, pkgs, ... }: lib.mkIf config.programs.bat.enable {
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
bat
|
||||
];
|
||||
sessionVariables = {
|
||||
MANPAGER = "sh -c 'col -bx | bat -l man -p'";
|
||||
MANROFFOPT = "-c";
|
||||
};
|
||||
shellAliases = {
|
||||
cat = "bat";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
commonExcludes = import ./excludes.nix;
|
||||
in
|
||||
lib.mkIf config.services.borgmatic.enable {
|
||||
programs.borgmatic = {
|
||||
enable = true;
|
||||
backups = {
|
||||
home = {
|
||||
location = {
|
||||
patterns = [
|
||||
"R /home/odie"
|
||||
] ++ commonExcludes;
|
||||
repositories = [
|
||||
{
|
||||
"path" = "ssh://odie@svartalbenheim.odie.intranet/./borg-backup";
|
||||
"label" = "svartalbenheim";
|
||||
}
|
||||
];
|
||||
extraConfig = {
|
||||
remote_path = "/usr/local/bin/borg";
|
||||
};
|
||||
excludeHomeManagerSymlinks = true;
|
||||
};
|
||||
retention = {
|
||||
keepHourly = 24;
|
||||
keepDaily = 60;
|
||||
keepWeekly = 52;
|
||||
keepMonthly = 24;
|
||||
keepYearly = 10;
|
||||
};
|
||||
consistency.checks = [
|
||||
{
|
||||
name = "repository";
|
||||
frequency = "2 weeks";
|
||||
}
|
||||
{
|
||||
name = "archives";
|
||||
frequency = "4 weeks";
|
||||
}
|
||||
{
|
||||
name = "data";
|
||||
frequency = "8 weeks";
|
||||
}
|
||||
{
|
||||
name = "extract";
|
||||
frequency = "8 weeks";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
services.borgmatic = {
|
||||
frequency = "Mon..Sun *:00:30";
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,258 @@
|
|||
[
|
||||
"- /home/*/.android"
|
||||
"- /home/*/.AndroidStudio*/"
|
||||
"- /home/*/Android/Sdk"
|
||||
"- /home/*/.gradle"
|
||||
"- /home/*/.gvm"
|
||||
"- /home/*/.grails/"
|
||||
"- /home/*/.grails_history"
|
||||
"- /home/*/.kde/share/apps/nepomuk"
|
||||
"- /home/*/.local/share/notbit"
|
||||
"- /home/*/.local/libvirt"
|
||||
"- /home/*/.local/share/libvirt"
|
||||
"- /home/*/.vagrant"
|
||||
"- /home/*/.vagrant.d"
|
||||
"- /home/*/.wine"
|
||||
"- /home/*/.wine*"
|
||||
"- /home/*/.twister"
|
||||
"- /home/*/twister"
|
||||
"- /home/*/Applications/eclipse*"
|
||||
"- /home/*/Downloads"
|
||||
"- /home/*/*Popcorntime*"
|
||||
"- /home/*/.aMule"
|
||||
"- /home/*/Scribus"
|
||||
"- /home/*/VirtualBox*"
|
||||
"- /home/*/.local/share/gnome-boxes/images"
|
||||
"- /home/*/Nextcloud"
|
||||
"- /home/*/_build"
|
||||
"- /home/*/.rvm"
|
||||
"- /home/*/.local/share/Steam"
|
||||
"- /home/*/.var/app/com.valvesoftware.Steam/.local/share/Steam"
|
||||
"- /home/*/.steam"
|
||||
"- /home/*/Steam"
|
||||
"- /home/*/.minecraft"
|
||||
"- /home/*/.technic"
|
||||
"- /home/*/.PlayOnLinux"
|
||||
"- /home/*/.local/share/lutris/runners/wine/"
|
||||
"- /home/*/.config/spotify/Users"
|
||||
"- /home/*/.var/app/com.spotify.Client/config/spotify/Users"
|
||||
"- /home/*/.local/lib/python*"
|
||||
"- /home/*/PycharmProjects/**/venv"
|
||||
"- /home/*/.m2"
|
||||
"- /home/*/Vaults"
|
||||
"- /home/*/.docker/machine"
|
||||
"- /home/*/.local/share/containers"
|
||||
"- /home/*/.gvfs"
|
||||
"- /home/*/.local/share/gvfs-metadata"
|
||||
"- /home/*/.Private"
|
||||
"- /home/*/.dbus"
|
||||
"- /home/*/.cache"
|
||||
"- /home/*/.var/app/*/cache"
|
||||
"- /home/*/.var/app/*/.cache"
|
||||
"- /home/*/.Trash"
|
||||
"- /home/*/.Trash-1*"
|
||||
"- /home/*/.local/share/Trash"
|
||||
"- /home/*/Trash"
|
||||
"- /home/*/.cddb"
|
||||
"- /home/*/.aptitude"
|
||||
"- /home/*/.npm"
|
||||
"- /home/*/.nvm"
|
||||
"- /home/*/.lldb"
|
||||
"- /home/*/.biome"
|
||||
"- /home/*/.adobe"
|
||||
"- /home/*/.macromedia"
|
||||
"- /home/*/.xsession-errors"
|
||||
"- /home/*/.xsession-errors.old"
|
||||
"- /home/*/.wayland-errors"
|
||||
"- /home/*/.local/share/RecentDocuments"
|
||||
"- /home/*/.recently-used"
|
||||
"- /home/*/.recently-used.xbel"
|
||||
"- /home/*/recently-used.xbel"
|
||||
"- /home/*/.thumbnails"
|
||||
"- /home/*/.thumb"
|
||||
"- /home/*/Thumbs.db"
|
||||
"- /home/*/.DS_Store"
|
||||
"- /home/*/.localised"
|
||||
"- /home/*/.CFUserTextEncoding"
|
||||
"- /home/*/.zcompdump*"
|
||||
"- /home/*/.wget-hsts"
|
||||
"- /home/*/.cups"
|
||||
"- /home/*/.subversion"
|
||||
"- /home/*/.virtualenvs"
|
||||
"- /home/*/.Xauthority"
|
||||
"- /home/*/.ICEauthority"
|
||||
"- /home/*/.gksu.lock"
|
||||
"- /home/*/.pulse"
|
||||
"- /home/*/.pulse-cookie"
|
||||
"- /home/*/.esd_auth"
|
||||
"- /home/*/.VeraCrypt-lock-*"
|
||||
"- /home/*/.kde/share/apps/RecentDocuments"
|
||||
"- /home/*/.kde4/share/apps/RecentDocuments"
|
||||
"- /home/*/.kde/share/apps/klipper"
|
||||
"- /home/*/.kde4/share/apps/klipper"
|
||||
"- /home/*/.local/share/klipper"
|
||||
"- /home/*/.kde/share/apps/okular/docdata"
|
||||
"- /home/*/.kde/share/apps/gwenview/recentfolders"
|
||||
"- /home/*/.kde4/share/apps/okular/docdata"
|
||||
"- /home/*/.kde4/share/apps/gwenview/recentfolders"
|
||||
"- /home/*/.local/share/okular/docdata"
|
||||
"- /home/*/.local/share/org.kde.gwenview/recentfolders"
|
||||
"- /home/*/.kde/share/apps/kmess/displaypics"
|
||||
"- /home/*/.kde4/share/apps/kmess/displaypics"
|
||||
"- /home/*/.kde/share/apps/kmess/customemoticons"
|
||||
"- /home/*/.kde4/share/apps/kmess/customemoticons"
|
||||
"- /home/*/.local/share/tracker"
|
||||
"- /home/*/.local/share/torbrowser"
|
||||
"- /home/*/.mozilla/firefox/*/Cache"
|
||||
"- /home/*/.mozilla/firefox/*/minidumps"
|
||||
"- /home/*/.mozilla/firefox/*/.parentlock"
|
||||
"- /home/*/.mozilla/firefox/*/urlclassifier3.sqlite"
|
||||
"- /home/*/.mozilla/firefox/*/blocklist.xml"
|
||||
"- /home/*/.mozilla/firefox/*/extensions.sqlite"
|
||||
"- /home/*/.mozilla/firefox/*/extensions.sqlite-journal"
|
||||
"- /home/*/.mozilla/firefox/*/extensions.rdf"
|
||||
"- /home/*/.mozilla/firefox/*/extensions.ini"
|
||||
"- /home/*/.mozilla/firefox/*/extensions.cache"
|
||||
"- /home/*/.mozilla/firefox/*/XUL.mfasl"
|
||||
"- /home/*/.mozilla/firefox/*/XPC.mfasl"
|
||||
"- /home/*/.mozilla/firefox/*/xpti.dat"
|
||||
"- /home/*/.mozilla/firefox/*/compreg.dat"
|
||||
"- /home/*/.mozilla/firefox/*/pluginreg.dat"
|
||||
"- /home/*/.mozilla/seamonkey/*/Cache"
|
||||
"- /home/*/.mozilla/seamonkey/*/minidumps"
|
||||
"- /home/*/.mozilla/seamonkey/*/.parentlock"
|
||||
"- /home/*/.mozilla/seamonkey/*/blocklist.xml"
|
||||
"- /home/*/.mozilla/seamonkey/*/extensions.sqlite"
|
||||
"- /home/*/.mozilla/seamonkey/*/extensions.rdf"
|
||||
"- /home/*/.mozilla/seamonkey/*/extensions.ini"
|
||||
"- /home/*/.mozilla/seamonkey/*/xpti.dat"
|
||||
"- /home/*/.mozilla/seamonkey/*/compreg.dat"
|
||||
"- /home/*/.mozilla/seamonkey/*/pluginreg.dat"
|
||||
"- /home/*/.thunderbird/*/Cache"
|
||||
"- /home/*/.opera/temporary_downloads"
|
||||
"- /home/*/.opera/cache"
|
||||
"- /home/*/.opera/thumbnails"
|
||||
"- /home/*/.opera/opcache"
|
||||
"- /home/*/.opera/icons"
|
||||
"- /home/*/.opera/application_cache"
|
||||
"- /home/*/.opera/widgets/*/cache"
|
||||
"- /home/*/.opera/lock"
|
||||
"- /home/*/.keychain"
|
||||
"- /home/*/.komodoedit/*/codeintel/db"
|
||||
"- /home/*/.komodoedit/*/host-*/*/codeintel"
|
||||
"- /home/*/.komodoedit/*/XRE/Cache"
|
||||
"- /home/*/.komodoedit/*/XRE/.activatestate/komodo edit/Crash Reports"
|
||||
"- /home/*/.komodoedit/*/XRE/.activatestate/komodo edit/*/Cache"
|
||||
"- /home/*/.komodoedit/*/XRE/.activatestate/komodo edit/*/minidump"
|
||||
"- /home/*/.komodoedit/*/XRE/.parentlock"
|
||||
"- /home/*/.komodoedit/*/XRE/extensions.rdf"
|
||||
"- /home/*/.komodoedit/*/XRE/extensions.ini"
|
||||
"- /home/*/.komodoedit/*/XRE/extensions.cache"
|
||||
"- /home/*/.komodoedit/*/XRE/XPC.mfasl"
|
||||
"- /home/*/.komodoedit/*/XRE/XUL.mfasl"
|
||||
"- /home/*/.komodoedit/*/XRE/xpti.dat"
|
||||
"- /home/*/.komodoedit/*/XRE/pluginreg.dat"
|
||||
"- /home/*/.komodoedit/*/XRE/compreg.dat"
|
||||
"- /home/*/.komodoedit/*/XRE/*.sqlite-journal"
|
||||
"- /home/*/.komodoedit/*/pystdout.log"
|
||||
"- /home/*/.komodoedit/*/pystderr.log"
|
||||
"- /home/*/.komodoedit/*/history.sqlite.bak"
|
||||
"- /home/*/.komodoedit/*/running.lock"
|
||||
"- /home/*/.komodoedit/*/mutex.lock"
|
||||
"- /home/*/.komodoedit/*/*.xmlc"
|
||||
"- /home/*/.komodoedit/*/startup-env.tmp"
|
||||
"- /home/*/.komodoedit/*/commandments.fifo"
|
||||
"- /home/*/.komodoedit/*/history.sqlite"
|
||||
"- /home/*/.gnupg/rnd"
|
||||
"- /home/*/.gnupg/random_seed"
|
||||
"- /home/*/.gnupg/.#*"
|
||||
"- /home/*/.gnupg/*.lock"
|
||||
"- /home/*/.gnupg/gpg-agent-info-*"
|
||||
"- /home/*/.googleearth/Temp"
|
||||
"- /home/*/.googleearth/Cache"
|
||||
"- /home/*/.config/google-chrome/ShaderCache"
|
||||
"- /home/*/.config/google-chrome/*/Local Storage"
|
||||
"- /home/*/.config/google-chrome/*/Session Storage"
|
||||
"- /home/*/.config/google-chrome/*/Application Cache"
|
||||
"- /home/*/.config/google-chrome/*/History Index *"
|
||||
"- /home/*/.config/google-chrome/*/Service Worker/CacheStorage"
|
||||
"- /home/*/.config/chromium/*/Local Storage"
|
||||
"- /home/*/.config/chromium/*/Session Storage"
|
||||
"- /home/*/.config/chromium/*/Service Worker/CacheStorage"
|
||||
"- /home/*/.config/chromium/*/Application Cache"
|
||||
"- /home/*/.config/chromium/*/History Index *"
|
||||
"- /home/*/snap/chromium/common/.cache"
|
||||
"- /home/*/snap/chromium/*/.config/chromium/*/Service Worker/CacheStorage"
|
||||
"- /home/*/snap/chromium/*/.local/share/"
|
||||
"- /home/*/snap/riot-web/"
|
||||
"- /home/*/.config/BraveSoftware/Brave-Browser/*/Feature Engagement Tracker/"
|
||||
"- /home/*/.config/BraveSoftware/Brave-Browser/*/Local Storage/"
|
||||
"- /home/*/.config/BraveSoftware/Brave-Browser/*/Service Worker/CacheStorage/"
|
||||
"- /home/*/.config/BraveSoftware/Brave-Browser/*/Session Storage/"
|
||||
"- /home/*/.config/BraveSoftware/Brave-Browser/Safe Browsing/"
|
||||
"- /home/*/.config/BraveSoftware/Brave-Browser/ShaderCache/"
|
||||
"- /home/*/.gradle/caches"
|
||||
"- /home/*/.m2/repository"
|
||||
"- /home/*/.local/share/baloo"
|
||||
"- /home/*/.local/share/zeitgeist"
|
||||
"- /home/*/.local/share/akonadi"
|
||||
"- /home/*/.purple/icons"
|
||||
"- /home/*/.guayadeque/cache.db"
|
||||
"- /home/*/.java/deployment/cache"
|
||||
"- /home/*/.icedteaplugin"
|
||||
"- /home/*/.icedtea"
|
||||
"- /home/*/.gnome2/epiphany/favicon_cache"
|
||||
"- /home/*/nohup.out"
|
||||
"- /home/*/.config/libreoffice/4/cache"
|
||||
"- /home/*/.config/freshwrapper-data/Shockwave Flash/WritableRoot/#SharedObjects"
|
||||
"- /home/*/.config/*/Cache"
|
||||
"- /home/*/.config/Atom/*Cache"
|
||||
"- /home/*/.config/Atom/IndexedDB"
|
||||
"- /home/*/.atom/compile-cache/"
|
||||
"- /home/*/.vim/bundle/*"
|
||||
"- /home/*/.viminfo"
|
||||
"- /home/*/.vscode-oss/extensions/*"
|
||||
"- /home/*/.vscode/extensions/*"
|
||||
"- /home/*/.config/Code - OSS/logs/"
|
||||
"- /home/*/.config/Code/logs/"
|
||||
"- /home/*/.config/Code/CachedData/*"
|
||||
"- /home/*/.config/VSCodium/CachedExtensionVSIXs"
|
||||
"- /home/*/.config/VirtualBox/VBoxSVC.log*"
|
||||
"- /home/*/.config/VirtualBox/VBoxGuestAdditions_*"
|
||||
"- /home/*/.cargo"
|
||||
"- /home/*/.rustup"
|
||||
"- /home/*/.kerl"
|
||||
"- /home/*/go/pkg/mod/cache"
|
||||
"- /home/*/.ccache/?"
|
||||
"- /home/*/.ccache/tmp"
|
||||
"- /home/*/.nv/GLCache"
|
||||
"- /home/*/.ICAClient/logs"
|
||||
"- /home/*/.ICAClient/.tmp"
|
||||
"- /home/*/.ICAClient/cache/zlcache"
|
||||
"- /home/*/.config/geany/geany_socket_*"
|
||||
"- /home/*/.config/lbry"
|
||||
"- /home/*/.local/share/lbry/lbrynet"
|
||||
"- /home/*/.config/**/blob_storage"
|
||||
"- /home/*/.config/**/Application Cache"
|
||||
"- /home/*/.config/**/Cache"
|
||||
"- /home/*/.config/**/CachedData"
|
||||
"- /home/*/.config/**/Code Cache"
|
||||
"- /home/*/.config/**/GPUCache"
|
||||
"- /home/*/.config/**/Service Worker/CacheStorage"
|
||||
"- /home/*/.var/app/**/blob_storage"
|
||||
"- /home/*/.var/app/**/Application Cache"
|
||||
"- /home/*/.var/app/**/Cache"
|
||||
"- /home/*/.var/app/**/CachedData"
|
||||
"- /home/*/.var/app/**/Code Cache"
|
||||
"- /home/*/.var/app/**/GPUCache"
|
||||
"- /home/*/.var/app/**/Service Worker/CacheStorage"
|
||||
"- /home/*/.config/scc/daemon.socket"
|
||||
"- */node_modules"
|
||||
"- */bower_components"
|
||||
"- */target/debug"
|
||||
"- */target/release"
|
||||
"- */_build"
|
||||
"- */.tox"
|
||||
"- */venv"
|
||||
"- */.venv"
|
||||
]
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
{ config, lib, ... }: lib.mkIf config.programs.btop.enable {
|
||||
programs.btop = {
|
||||
settings = {
|
||||
color_theme = "Default";
|
||||
theme_background = false;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
{ lib, pkgs, ... }: with lib; {
|
||||
imports = [
|
||||
./direnv
|
||||
./fzf
|
||||
./git
|
||||
./lf
|
||||
./lsd
|
||||
./starship
|
||||
./tmux
|
||||
./zsh
|
||||
./btop
|
||||
./zoxide
|
||||
./ssh
|
||||
./bat
|
||||
./tldr
|
||||
./borgmatic
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
ripgrep
|
||||
fd
|
||||
gdu
|
||||
];
|
||||
|
||||
programs = {
|
||||
bat.enable = mkDefault true;
|
||||
btop.enable = mkDefault true;
|
||||
direnv.enable = mkDefault true;
|
||||
fzf.enable = mkDefault true;
|
||||
git.enable = mkDefault true;
|
||||
lf.enable = mkDefault true;
|
||||
lsd.enable = mkDefault true;
|
||||
ssh.enable = mkDefault true;
|
||||
starship.enable = mkDefault true;
|
||||
tmux.enable = mkDefault true;
|
||||
zoxide.enable = mkDefault true;
|
||||
zsh.enable = mkDefault true;
|
||||
tldr.enable = mkDefault true;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
{ pkgs, lib, config, ... }: lib.mkIf config.programs.direnv.enable {
|
||||
programs.direnv = {
|
||||
enableZshIntegration = true;
|
||||
config = {
|
||||
global = {
|
||||
disable_stdin = true;
|
||||
strict_env = true;
|
||||
};
|
||||
};
|
||||
nix-direnv.enable = true;
|
||||
stdlib = builtins.readFile ../../../../configs/home-manager/direnv/stdlib.sh;
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
{ config, lib, ... }: lib.mkIf config.programs.fzf.enable {
|
||||
programs = {
|
||||
fzf = {
|
||||
enableZshIntegration = true;
|
||||
defaultCommand = "fd --type f";
|
||||
defaultOptions = [
|
||||
"--height 40%"
|
||||
"--border"
|
||||
];
|
||||
tmux = {
|
||||
enableShellIntegration = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
{ config
|
||||
, pkgs
|
||||
, lib
|
||||
, vars
|
||||
, ...
|
||||
}: lib.mkIf config.programs.git.enable {
|
||||
home = {
|
||||
packages = with pkgs; [ pre-commit ];
|
||||
};
|
||||
programs = {
|
||||
git = {
|
||||
userName = vars.name;
|
||||
userEmail = vars.email;
|
||||
extraConfig = {
|
||||
push = {
|
||||
default = "matching";
|
||||
};
|
||||
core = {
|
||||
autocrlf = "input";
|
||||
#excludesFile = "${config.xdg.configHome}/git/ignore";
|
||||
};
|
||||
pull = {
|
||||
rebase = false;
|
||||
};
|
||||
init = {
|
||||
defaultBranch = "master";
|
||||
};
|
||||
};
|
||||
attributes = [ ];
|
||||
ignores = [
|
||||
"# Created by https://www.toptal.com/developers/gitignore/api/vim,linux"
|
||||
"# Edit at https://www.toptal.com/developers/gitignore?templates=vim,linux"
|
||||
""
|
||||
"### Linux ###"
|
||||
"*~"
|
||||
""
|
||||
"# temporary files which can be created if a process still has a handle open of a deleted file"
|
||||
".fuse_hidden*"
|
||||
""
|
||||
"# KDE directory preferences"
|
||||
".directory"
|
||||
""
|
||||
"# Linux trash folder which might appear on any partition or disk"
|
||||
".Trash-*"
|
||||
""
|
||||
"# .nfs files are created when an open file is removed but is still being accessed"
|
||||
".nfs*"
|
||||
""
|
||||
"### Vim ###"
|
||||
"# Swap"
|
||||
"[._]*.s[a-v][a-z]"
|
||||
"!*.svg # comment out if you don't need vector files"
|
||||
"[._]*.sw[a-p]"
|
||||
"[._]s[a-rt-v][a-z]"
|
||||
"[._]ss[a-gi-z]"
|
||||
"[._]sw[a-p]"
|
||||
""
|
||||
"# Session"
|
||||
"Session.vim"
|
||||
"Sessionx.vim"
|
||||
""
|
||||
"# Temporary"
|
||||
".netrwhist"
|
||||
"# Auto-generated tag files"
|
||||
"tags"
|
||||
"# Persistent undo"
|
||||
"[._]*.un~"
|
||||
""
|
||||
"# End of https://www.toptal.com/developers/gitignore/api/vim,linux"
|
||||
""
|
||||
"# Created by https://www.toptal.com/developers/gitignore/api/nix"
|
||||
"# Edit at https://www.toptal.com/developers/gitignore?templates=nix"
|
||||
""
|
||||
"/result"
|
||||
""
|
||||
"# End of https://www.toptal.com/developers/gitignore/api/nix"
|
||||
""
|
||||
"# Created by https://www.toptal.com/developers/gitignore/api/rust"
|
||||
"# Edit at https://www.toptal.com/developers/gitignore?templates=rust"
|
||||
# Created by https://www.toptal.com/developers/gitignore/api/direnv
|
||||
"# Edit at https://www.toptal.com/developers/gitignore?templates=direnv"
|
||||
""
|
||||
"### direnv ###"
|
||||
".direnv"
|
||||
".envrc"
|
||||
""
|
||||
"# End of https://www.toptal.com/developers/gitignore/api/direnv"
|
||||
"# Created by https://www.toptal.com/developers/gitignore/api/dotenv"
|
||||
" # Edit at https://www.toptal.com/developers/gitignore?templates=dotenv"
|
||||
""
|
||||
"### dotenv ###"
|
||||
"!.env.example"
|
||||
".env"
|
||||
".env.*"
|
||||
""
|
||||
"# End of https://www.toptal.com/developers/gitignore/api/dotenv"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
{ pkgs, config, lib, ... }: lib.mkIf config.programs.lf.enable {
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
chafa
|
||||
ctpv
|
||||
];
|
||||
file = {
|
||||
".config/lf/icons" = {
|
||||
source = ../../../../configs/home-manager/lf/icons;
|
||||
};
|
||||
".config/lf/colors" = {
|
||||
source = ../../../../configs/home-manager/lf/colors;
|
||||
};
|
||||
};
|
||||
};
|
||||
programs.lf = {
|
||||
commands = {
|
||||
get-mime-type = "%xdg-mime query filetype \"$f\"";
|
||||
open = ''
|
||||
''${{
|
||||
case $(file --mime-type $f -b) in
|
||||
text/*|application/json|inode/x-empty|application/octet-stream) $EDITOR "$f" ;;
|
||||
image/svg+xml) display -- "$f" ;;
|
||||
audio/*) mpv --audio-display=no "$f" ;;
|
||||
video/*) setsid -f mpv "$f" -quiet >/dev/null 2>&1 ;;
|
||||
image/vnd.djvu|application/pdf|application/pdf|application/epub*) setsid -f $BROWSER "$f" >/dev/null 2>&1 ;;
|
||||
application/pgp-encrypted) $EDITOR "$f" ;;
|
||||
*) for f in $fx; do setsid -f $OPENER "$f" >/dev/null 2>&1; done ;;
|
||||
esac
|
||||
}}'';
|
||||
on-select = ''
|
||||
&{{
|
||||
lf -remote "send $id set statfmt \"$(lsd -ld --color=always "$f")\""
|
||||
}}
|
||||
'';
|
||||
};
|
||||
settings = {
|
||||
icons = true;
|
||||
period = 1;
|
||||
info = "size";
|
||||
dircounts = true;
|
||||
sixel = true;
|
||||
scrolloff = 5;
|
||||
hidden = true;
|
||||
previewer = "ctpv";
|
||||
cleaner = "ctpvclear";
|
||||
};
|
||||
keybindings = {
|
||||
"<enter>" = "open";
|
||||
};
|
||||
extraConfig = ''
|
||||
&ctpv -s $id
|
||||
&ctpvquit $id
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
{lib, config, ...}: lib.mkIf config.programs.lsd.enable {
|
||||
programs = {
|
||||
lsd = {
|
||||
enableAliases = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
lib.mkIf config.programs.ssh.enable {
|
||||
home.packages = with pkgs; [tea];
|
||||
programs = {
|
||||
ssh = {
|
||||
addKeysToAgent = "yes";
|
||||
forwardAgent = true;
|
||||
matchBlocks = {
|
||||
"svartalbenheim.odie.intranet" = {
|
||||
hostname = "svartalbenheim.odie.intranet";
|
||||
identityFile = "~/.ssh/id_ed25519_local";
|
||||
compression =false;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services = {
|
||||
ssh-agent.enable = true;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,336 @@
|
|||
{ lib, config, ... }:
|
||||
lib.mkIf config.programs.starship.enable {
|
||||
programs = {
|
||||
starship = {
|
||||
enableZshIntegration = true;
|
||||
settings = {
|
||||
add_newline = false;
|
||||
format = lib.concatStrings [
|
||||
"$os"
|
||||
"$username"
|
||||
"$hostname"
|
||||
"$directory"
|
||||
"$jobs"
|
||||
"$character"
|
||||
];
|
||||
right_format = lib.concatStrings [
|
||||
"$aws"
|
||||
"$gcloud"
|
||||
"$openstack"
|
||||
"$azure"
|
||||
"$fossil_branch"
|
||||
"$git_branch"
|
||||
"$git_commit"
|
||||
"$git_state"
|
||||
"$git_metrics"
|
||||
"$git_statu"
|
||||
"$hg_branch"
|
||||
"$package"
|
||||
"$c"
|
||||
"$cmake"
|
||||
"$cobol"
|
||||
"$daml"
|
||||
"$dart"
|
||||
"$deno"
|
||||
"$dotnet"
|
||||
"$elixir"
|
||||
"$elm"
|
||||
"$erlang"
|
||||
"$fennel"
|
||||
"$golang"
|
||||
"$guix_shell"
|
||||
"$haskell"
|
||||
"$haxe"
|
||||
"$helm"
|
||||
"$java"
|
||||
"$julia"
|
||||
"$kotlin"
|
||||
"$gradle"
|
||||
"$lua"
|
||||
"$nim"
|
||||
"$nodejs"
|
||||
"$ocaml"
|
||||
"$opa"
|
||||
"$perl"
|
||||
"$php"
|
||||
"$pulumi"
|
||||
"$purescript"
|
||||
"$python"
|
||||
"$raku"
|
||||
"$rlang"
|
||||
"$red"
|
||||
"$ruby"
|
||||
"$rust"
|
||||
"$scala"
|
||||
"$solidity"
|
||||
"$swift"
|
||||
"$terraform"
|
||||
"$vlang"
|
||||
"$vagrant"
|
||||
"$zig"
|
||||
"$buf"
|
||||
"$nix_shell"
|
||||
"$conda"
|
||||
"$meson"
|
||||
"$spack"
|
||||
"$crystal"
|
||||
];
|
||||
scan_timeout = 10;
|
||||
character = {
|
||||
success_symbol = "[](green)";
|
||||
error_symbol = "[](red)";
|
||||
format = " $symbol ";
|
||||
};
|
||||
|
||||
username = {
|
||||
style_user = "green";
|
||||
style_root = "red";
|
||||
format = "[$user]($style)";
|
||||
disabled = false;
|
||||
show_always = true;
|
||||
};
|
||||
|
||||
|
||||
hostname = {
|
||||
ssh_only = false;
|
||||
format = "@[$hostname](cyan)";
|
||||
disabled = false;
|
||||
ssh_symbol = " ";
|
||||
};
|
||||
|
||||
directory = {
|
||||
format = " [$path]($style)[$read_only]($read_only_style)";
|
||||
style = "yellow";
|
||||
truncation_length = 2;
|
||||
truncation_symbol = "…/";
|
||||
read_only = " ";
|
||||
};
|
||||
|
||||
jobs = {
|
||||
format = " [$symbol$number]($style) ";
|
||||
symbol = "";
|
||||
};
|
||||
|
||||
aws = {
|
||||
symbol = " ";
|
||||
};
|
||||
|
||||
buf = {
|
||||
symbol = " ";
|
||||
format = "[$symbol($version )]($style)";
|
||||
};
|
||||
|
||||
c = {
|
||||
symbol = " ";
|
||||
format = "[$symbol($version )]($style)";
|
||||
};
|
||||
|
||||
conda = {
|
||||
symbol = " ";
|
||||
format = "[$symbol($version )]($style)";
|
||||
};
|
||||
|
||||
crystal = {
|
||||
symbol = " ";
|
||||
};
|
||||
|
||||
dart = {
|
||||
symbol = " ";
|
||||
format = "[$symbol($version )]($style)";
|
||||
};
|
||||
|
||||
docker_context = {
|
||||
symbol = " ";
|
||||
};
|
||||
|
||||
elixir = {
|
||||
symbol = " ";
|
||||
format = "[$symbol($version )]($style)";
|
||||
};
|
||||
|
||||
elm = {
|
||||
symbol = " ";
|
||||
format = "[$symbol($version )]($style)";
|
||||
};
|
||||
|
||||
fossil_branch = {
|
||||
symbol = " ";
|
||||
};
|
||||
|
||||
golang = {
|
||||
symbol = " ";
|
||||
format = "[$symbol($version )]($style)";
|
||||
};
|
||||
|
||||
guix_shell = {
|
||||
symbol = " ";
|
||||
};
|
||||
|
||||
haskell = {
|
||||
symbol = " ";
|
||||
format = "[$symbol($version )]($style)";
|
||||
};
|
||||
|
||||
haxe = {
|
||||
symbol = " ";
|
||||
format = "[$symbol($version )]($style)";
|
||||
};
|
||||
|
||||
hg_branch = {
|
||||
symbol = " ";
|
||||
format = "[$symbol($version )]($style)";
|
||||
};
|
||||
|
||||
git_branch = {
|
||||
symbol = " ";
|
||||
format = "[$symbol$branch(:$remote_branch)]($style) ";
|
||||
};
|
||||
|
||||
java = {
|
||||
symbol = " ";
|
||||
format = "[$symbol($version )]($style)";
|
||||
};
|
||||
|
||||
julia = {
|
||||
symbol = " ";
|
||||
format = "[$symbol($version )]($style)";
|
||||
};
|
||||
|
||||
kotlin = {
|
||||
symbol = " ";
|
||||
};
|
||||
|
||||
lua = {
|
||||
symbol = " ";
|
||||
format = "[$symbol($version )]($style)";
|
||||
};
|
||||
|
||||
memory_usage = {
|
||||
symbol = " ";
|
||||
format = "[$symbol($version )]($style)";
|
||||
};
|
||||
|
||||
meson = {
|
||||
symbol = " ";
|
||||
format = "[$symbol($version )]($style)";
|
||||
};
|
||||
|
||||
nim = {
|
||||
symbol = " ";
|
||||
format = "[$symbol($version )]($style)";
|
||||
};
|
||||
|
||||
nix_shell = {
|
||||
symbol = " ";
|
||||
format = "[$symbol$state( \\($name\\))]($style)";
|
||||
};
|
||||
|
||||
nodejs = {
|
||||
symbol = " ";
|
||||
format = "[$symbol($version )]($style)";
|
||||
};
|
||||
|
||||
ocaml = {
|
||||
symbol = " ";
|
||||
};
|
||||
|
||||
os = {
|
||||
disabled = false;
|
||||
style = "blue";
|
||||
};
|
||||
|
||||
os.symbols = {
|
||||
Alpaquita = " ";
|
||||
Alpine = " ";
|
||||
Amazon = " ";
|
||||
Android = " ";
|
||||
Arch = " ";
|
||||
Artix = " ";
|
||||
CentOS = " ";
|
||||
Debian = " ";
|
||||
DragonFly = " ";
|
||||
Emscripten = " ";
|
||||
EndeavourOS = " ";
|
||||
Fedora = " ";
|
||||
FreeBSD = " ";
|
||||
Garuda = " ";
|
||||
Gentoo = " ";
|
||||
HardenedBSD = " ";
|
||||
Illumos = " ";
|
||||
Linux = " ";
|
||||
Mabox = " ";
|
||||
Macos = " ";
|
||||
Manjaro = " ";
|
||||
Mariner = " ";
|
||||
MidnightBSD = " ";
|
||||
Mint = " ";
|
||||
NetBSD = " ";
|
||||
NixOS = " ";
|
||||
OpenBSD = " ";
|
||||
openSUSE = " ";
|
||||
OracleLinux = " ";
|
||||
Pop = " ";
|
||||
Raspbian = " ";
|
||||
Redhat = " ";
|
||||
RedHatEnterprise = " ";
|
||||
Redox = " ";
|
||||
Solus = " ";
|
||||
SUSE = " ";
|
||||
Ubuntu = " ";
|
||||
Unknown = " ";
|
||||
Windows = " ";
|
||||
};
|
||||
|
||||
package = {
|
||||
symbol = " ";
|
||||
format = "[$symbol($version )]($style)";
|
||||
};
|
||||
|
||||
perl = {
|
||||
symbol = " ";
|
||||
};
|
||||
|
||||
php = {
|
||||
symbol = " ";
|
||||
};
|
||||
|
||||
pijul_channel = {
|
||||
symbol = " ";
|
||||
};
|
||||
|
||||
python = {
|
||||
symbol = " ";
|
||||
format = "[$symbol($version )]($style)";
|
||||
};
|
||||
|
||||
rlang = {
|
||||
symbol = " ";
|
||||
format = "[$symbol($version )]($style)";
|
||||
};
|
||||
|
||||
ruby = {
|
||||
symbol = " ";
|
||||
format = "[$symbol($version )]($style)";
|
||||
};
|
||||
|
||||
rust = {
|
||||
symbol = " ";
|
||||
format = "[$symbol($version )]($style)";
|
||||
};
|
||||
|
||||
scala = {
|
||||
symbol = " ";
|
||||
format = "[$symbol($version )]($style)";
|
||||
};
|
||||
|
||||
swift = {
|
||||
symbol = " ";
|
||||
};
|
||||
|
||||
zig = {
|
||||
symbol = " ";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
{ pkgs, config, lib, ... }: {
|
||||
options = {
|
||||
programs.tldr.enable = lib.mkEnableOption "tldr";
|
||||
};
|
||||
config = lib.mkIf config.programs.tldr.enable {
|
||||
home.packages = with pkgs; [ tldr ];
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,90 @@
|
|||
{ pkgs, lib, config, ... }:
|
||||
let
|
||||
catppuccin = pkgs.callPackage ../../../../pkgs/tmuxPlugins/catppuccin.nix {};
|
||||
in
|
||||
{
|
||||
options = {
|
||||
|
||||
};
|
||||
config = {
|
||||
programs.tmux = lib.mkIf config.programs.tmux.enable {
|
||||
newSession = false;
|
||||
mouse = true;
|
||||
keyMode = "vi";
|
||||
historyLimit = 10240;
|
||||
clock24 = true;
|
||||
baseIndex = 1;
|
||||
aggressiveResize = true;
|
||||
shortcut = "a";
|
||||
sensibleOnTop = true;
|
||||
escapeTime = 0;
|
||||
tmuxp.enable = true;
|
||||
plugins = with pkgs.tmuxPlugins; [
|
||||
sensible
|
||||
yank
|
||||
{
|
||||
plugin = catppuccin;
|
||||
extraConfig = ''
|
||||
set -g @catppuccin_window_default_text "#W" # use "#W" for application instead of directory
|
||||
set -g @catppuccin_window_current_text "#W" # use "#W" for application instead of directory
|
||||
set -g @catppuccin_window_status_enable "yes"
|
||||
set -g @catppuccin_status_modules_right "directory user host date_time session"
|
||||
'';
|
||||
}
|
||||
better-mouse-mode
|
||||
{
|
||||
plugin = tmux-fzf;
|
||||
extraConfig = ''
|
||||
unbind A
|
||||
TMUX_FZF_LAUNCH_KEY="f"
|
||||
TMUX_FZF_PANE_FORMAT="[#{window_name}] #{pane_current_command} [#{pane_width}x#{pane_height}] [history #{history_size}/#{history_limit}, #{history_bytes} bytes] #{?pane_active,[active],[inactive]}"
|
||||
'';
|
||||
}
|
||||
];
|
||||
extraConfig = ''
|
||||
# Quick pane cycling
|
||||
unbind ^A
|
||||
bind ^A last-window
|
||||
|
||||
#unbind 'Space'
|
||||
#bind 'Space' next-window
|
||||
|
||||
bind-key C-s split-window -v
|
||||
bind-key C-v split-window -h
|
||||
|
||||
set -g renumber-windows on
|
||||
|
||||
# Open new panes and windows with the current panes path
|
||||
bind c new-window -c "#{pane_current_path}"
|
||||
bind '"' split-window -c "#{pane_current_path}"
|
||||
bind % split-window -h -c "#{pane_current_path}"
|
||||
|
||||
set-option -sa terminal-features ',xterm-256color:RGB'
|
||||
set-option -sa terminal-features ',st-256color:RGB'
|
||||
set-option -sa terminal-features ',xterm-kitty:RGB'
|
||||
|
||||
is_vim="ps -o state= -o comm= -t '#{pane_tty}' | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?\.?(view|n?vim?x?)(-wrapped)?(diff)?$'"
|
||||
|
||||
bind-key -n 'C-h' if-shell "$is_vim" 'send-keys C-h' 'select-pane -L'
|
||||
bind-key -n 'C-j' if-shell "$is_vim" 'send-keys C-j' 'select-pane -D'
|
||||
bind-key -n 'C-k' if-shell "$is_vim" 'send-keys C-k' 'select-pane -U'
|
||||
bind-key -n 'C-l' if-shell "$is_vim" 'send-keys C-l' 'select-pane -R'
|
||||
|
||||
bind-key -T copy-mode-vi 'C-h' 'select-pane -L'
|
||||
bind-key -T copy-mode-vi 'C-j' 'select-pane -D'
|
||||
bind-key -T copy-mode-vi 'C-k' 'select-pane -U'
|
||||
bind-key -T copy-mode-vi 'C-l' 'select-pane -R'
|
||||
|
||||
bind -n 'M-h' if-shell "$is_vim" 'send-keys M-h' 'resize-pane -L 1'
|
||||
bind -n 'M-j' if-shell "$is_vim" 'send-keys M-j' 'resize-pane -D 1'
|
||||
bind -n 'M-k' if-shell "$is_vim" 'send-keys M-k' 'resize-pane -U 1'
|
||||
bind -n 'M-l' if-shell "$is_vim" 'send-keys M-l' 'resize-pane -R 1'
|
||||
|
||||
bind-key -T copy-mode-vi M-h resize-pane -L 1
|
||||
bind-key -T copy-mode-vi M-j resize-pane -D 1
|
||||
bind-key -T copy-mode-vi M-k resize-pane -U 1
|
||||
bind-key -T copy-mode-vi M-l resize-pane -R 1
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
{ config, lib, ... }: lib.mkIf config.programs.zoxide.enable {
|
||||
programs = {
|
||||
zoxide = {
|
||||
enableZshIntegration = true;
|
||||
options = [
|
||||
"--cmd cd"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
{ config, lib, ... }: lib.mkIf config.programs.zsh.enable {
|
||||
programs = {
|
||||
zsh = {
|
||||
defaultKeymap = "emacs";
|
||||
dotDir = ".config/zsh";
|
||||
shellAliases = {
|
||||
j = "z";
|
||||
ji = "zi";
|
||||
};
|
||||
initExtra = builtins.readFile ../../../../configs/home-manager/zsh/zshrc.zsh;
|
||||
completionInit = ''
|
||||
autoload -U compinit bashcompinit
|
||||
compinit
|
||||
bashcompinit'';
|
||||
history = {
|
||||
path = "${config.xdg.cacheHome}/zsh_history";
|
||||
save = 100000;
|
||||
size = 100000;
|
||||
share = true;
|
||||
extended = true;
|
||||
};
|
||||
historySubstringSearch = {
|
||||
enable = true;
|
||||
searchDownKey = [
|
||||
"^[[B"
|
||||
];
|
||||
searchUpKey = [
|
||||
"^[[A"
|
||||
];
|
||||
};
|
||||
zplug = {
|
||||
enable = true;
|
||||
plugins = [
|
||||
{ name = "zsh-users/zsh-completions"; }
|
||||
{ name = "zdharma-continuum/fast-syntax-highlighting"; }
|
||||
{ name = "zsh-users/zsh-autosuggestions"; }
|
||||
{ name = "nix-community/nix-zsh-completions"; }
|
||||
];
|
||||
};
|
||||
envExtra = ''
|
||||
export DIRENV_LOG_FORMAT=$'\033[2mdirenv: %s\033[0m'
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
_: {
|
||||
imports = [
|
||||
./systemdboot.nix
|
||||
];
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
{config, lib, ...}: lib.mkIf config.boot.loader.systemd-boot.enable {
|
||||
boot.loader = {
|
||||
efi.canTouchEfiVariables = true;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
_: {
|
||||
imports = [
|
||||
./bootloader
|
||||
./user
|
||||
./network
|
||||
./i18n
|
||||
./nixos
|
||||
./programs
|
||||
./ssh
|
||||
./power-management
|
||||
];
|
||||
|
||||
config = {
|
||||
hardware.enableRedistributableFirmware = true;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
{ inputs, vars, ... }: {
|
||||
imports = [
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
];
|
||||
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
extraSpecialArgs = { inherit inputs vars; };
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
{ config, lib, pkgs, vars, ... }:
|
||||
let
|
||||
inherit (vars) locale timeZone;
|
||||
in
|
||||
{
|
||||
i18n.defaultLocale = locale;
|
||||
time.timeZone = timeZone;
|
||||
|
||||
console.keyMap = "de-latin1-nodeadkeys";
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
{ config, lib, pkgs, vars, ... }:
|
||||
let
|
||||
inherit (vars) hostName;
|
||||
in
|
||||
{
|
||||
networking = {
|
||||
inherit hostName;
|
||||
firewall.enable = true;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
_: {
|
||||
nix = {
|
||||
optimise = {
|
||||
automatic = true;
|
||||
};
|
||||
settings = {
|
||||
experimental-features = [ "nix-command" "flakes" ];
|
||||
auto-optimise-store = true;
|
||||
};
|
||||
gc = {
|
||||
automatic = true;
|
||||
dates = "weekly";
|
||||
options = "--delete-older-than 30d";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
{ lib, config, ... }: {
|
||||
options = {
|
||||
services.power-management.enable = lib.mkEnableOption "power-management";
|
||||
};
|
||||
config = lib.mkIf config.services.power-management.enable {
|
||||
services = {
|
||||
power-profiles-daemon.enable = true;
|
||||
upower.enable = true;
|
||||
};
|
||||
|
||||
users.groups.power = { };
|
||||
|
||||
security.polkit = {
|
||||
extraConfig = ''
|
||||
polkit.addRule(function(action, subject) {
|
||||
if (action.id == "org.freedesktop.systemd1.manage-units" ||
|
||||
action.id == "org.freedesktop.systemd1.manage-unit-files") {
|
||||
if (action.lookup("unit") == "poweroff.target") {
|
||||
if (subject.isInGroup("power")) {
|
||||
return polkit.Result.YES;
|
||||
} else {
|
||||
return polkit.Result.AUTH_ADMIN;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
{ config, lib, pkgs, vars, ... }:
|
||||
{
|
||||
environment = {
|
||||
systemPackages = with pkgs; [
|
||||
vim
|
||||
git
|
||||
openssh
|
||||
file
|
||||
w3m
|
||||
btop
|
||||
iftop
|
||||
iotop
|
||||
ncdu
|
||||
];
|
||||
etc = {
|
||||
"ncdu.conf".text = ''
|
||||
--color dark
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
programs = {
|
||||
zsh.enable = true;
|
||||
command-not-found.enable = false;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
{ pkgs, lib, config, ... }: {
|
||||
options = {
|
||||
hardware.raspberry-pi.cec.enable = lib.mkEnableOption "raspberry pi cec software";
|
||||
};
|
||||
config = {
|
||||
services.udev.extraRules = ''
|
||||
# allow access to raspi cec device for video group (and optionally register it as a systemd device, used below)
|
||||
KERNEL=="vchiq", GROUP="video", MODE="0660", TAG+="systemd", ENV{SYSTEMD_ALIAS}="/dev/vchiq"
|
||||
'';
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
libcec
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
{ pkgs, lib, config, ... }: {
|
||||
options = {
|
||||
hardware.raspberry-pi.enable = lib.mkEnableOption "raspberry pi software";
|
||||
};
|
||||
config = lib.mkIf config.hardware.raspberry-pi.enable {
|
||||
environment.systemPackages = with pkgs; [
|
||||
libraspberrypi
|
||||
raspberrypi-eeprom
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
{ lib, config, ... }: lib.mkIf config.services.openssh.enable {
|
||||
services.openssh = {
|
||||
settings = {
|
||||
PermitRootLogin = "prohibit-password";
|
||||
PasswordAuthentication = false;
|
||||
};
|
||||
openFirewall = true;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
{ config, lib, pkgs, vars, ... }:
|
||||
let
|
||||
inherit (vars) username name locale hostname sshKeys;
|
||||
|
||||
baseGroups = [
|
||||
"users"
|
||||
"wheel"
|
||||
];
|
||||
rpiGroups =
|
||||
if config.hardware.raspberry-pi.enable then [
|
||||
"audio"
|
||||
"video"
|
||||
"plugdev"
|
||||
"adm"
|
||||
"disk"
|
||||
"i2c"
|
||||
"spi"
|
||||
"power"
|
||||
] else [ ];
|
||||
extraGroups = baseGroups ++ rpiGroups;
|
||||
|
||||
basePackages = with pkgs; [ home-manager ];
|
||||
wslPackages =
|
||||
if config.wsl.enable then with pkgs; [
|
||||
wslu
|
||||
wsl-open
|
||||
] else [ ];
|
||||
packages = basePackages ++ wslPackages;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
hardware.raspberry-pi.enable = lib.mkEnableOption "raspberry pi features";
|
||||
};
|
||||
config = {
|
||||
users = {
|
||||
groups.${username} = { };
|
||||
users = {
|
||||
${username} = {
|
||||
inherit packages extraGroups;
|
||||
name = username;
|
||||
uid = 1000;
|
||||
isNormalUser = true;
|
||||
home = "/home/${username}";
|
||||
description = name;
|
||||
group = config.users.groups.${username}.name;
|
||||
openssh.authorizedKeys.keys = sshKeys;
|
||||
shell = pkgs.zsh;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
_: {
|
||||
imports = [
|
||||
./base
|
||||
./wsl
|
||||
];
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
{ lib, ... }: {
|
||||
imports = [
|
||||
./fonts
|
||||
./sound
|
||||
./xorg
|
||||
];
|
||||
|
||||
options = {
|
||||
desktop.enable = lib.mkEnableOption "desktop features";
|
||||
};
|
||||
|
||||
config = {
|
||||
programs.dconf.enable = true;
|
||||
hardware.opengl.enable = true;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
{ pkgs, lib, config, ... }: lib.mkIf config.desktop.enable {
|
||||
fonts = {
|
||||
enableDefaultPackages = true;
|
||||
packages = with pkgs; [
|
||||
roboto
|
||||
roboto-slab
|
||||
noto-fonts
|
||||
noto-fonts-emoji
|
||||
sarasa-gothic
|
||||
(nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; })
|
||||
];
|
||||
fontconfig = {
|
||||
antialias = true;
|
||||
allowType1 = false;
|
||||
allowBitmaps = false;
|
||||
hinting = {
|
||||
enable = true;
|
||||
style = "slight";
|
||||
autohint = false;
|
||||
};
|
||||
subpixel = {
|
||||
rgba = "rgb";
|
||||
lcdfilter = "default";
|
||||
};
|
||||
defaultFonts = {
|
||||
emoji = [ "Noto Color Emoji" ];
|
||||
serif = [ "Roboto Slab" "Noto Serif" "Sarasa Gothic CL" "Symbols Nerd Font" ];
|
||||
sansSerif = [ "Roboto" "Noto Sans" "Sarasa Gothic CL" "Symbols Nerd Font" ];
|
||||
monospace = [ "JetBrains Mono" "Sarasa Mono CL" "Symbols Nerd Font Mono" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
networking.networkmanager = {
|
||||
enable = true;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
{ pkgs, lib, config, ... }:
|
||||
lib.mkIf config.desktop.enable {
|
||||
environment.systemPackages = with pkgs; [
|
||||
alsa-utils
|
||||
];
|
||||
|
||||
security.rtkit.enable = true;
|
||||
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
wireplumber.enable = true;
|
||||
};
|
||||
|
||||
sound.enable = true;
|
||||
}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
{ lib, config, vars, ... }: {
|
||||
imports = [
|
||||
./i18n.nix
|
||||
];
|
||||
|
||||
config = {
|
||||
services.xserver = lib.mkIf config.desktop.enable {
|
||||
enable = true;
|
||||
displayManager = {
|
||||
autoLogin = {
|
||||
user = vars.username;
|
||||
enable = true;
|
||||
};
|
||||
lightdm = {
|
||||
enable = true;
|
||||
greeters.gtk.enable = true;
|
||||
};
|
||||
defaultSession = "none+awesome";
|
||||
};
|
||||
libinput = {
|
||||
enable = true;
|
||||
|
||||
# disabling mouse acceleration
|
||||
mouse = {
|
||||
accelProfile = "flat";
|
||||
};
|
||||
|
||||
# disabling touchpad acceleration
|
||||
touchpad = {
|
||||
accelProfile = "flat";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
_: {
|
||||
services.xserver = {
|
||||
xkb = {
|
||||
layout = "de";
|
||||
variant = "nodeadkeys,";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
{ config, lib, pkgs, vars, inputs, ... }:
|
||||
let
|
||||
inherit (vars) username hostName;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
inputs.nixos-wsl.nixosModules.wsl
|
||||
];
|
||||
|
||||
config = lib.mkIf config.wsl.enable {
|
||||
wsl = {
|
||||
defaultUser = username;
|
||||
nativeSystemd = true;
|
||||
useWindowsDriver = true;
|
||||
wslConf = { network.hostname = hostName; };
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
imports = [
|
||||
./yank_highlight.nix
|
||||
#./remember_cursor_position.nix
|
||||
./set_conceal_level.nix
|
||||
./filetype_options.nix
|
||||
];
|
||||
}
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
let
|
||||
group = "FiletypeOptions";
|
||||
mkFileTypeOptions = {
|
||||
pattern,
|
||||
indentSize ? 4,
|
||||
expandTab ? true,
|
||||
}: let
|
||||
expandtab =
|
||||
if expandTab
|
||||
then "true"
|
||||
else "false";
|
||||
in {
|
||||
inherit group pattern;
|
||||
event = ["BufRead" "BufNewFile"];
|
||||
callback = {
|
||||
__raw = ''
|
||||
function()
|
||||
local setlocal = vim.opt_local
|
||||
setlocal.expandtab = ${expandtab}
|
||||
setlocal.shiftwidth = ${builtins.toString indentSize}
|
||||
setlocal.tabstop = ${builtins.toString indentSize}
|
||||
end
|
||||
'';
|
||||
};
|
||||
};
|
||||
in {
|
||||
autoGroups = {
|
||||
${group} = {
|
||||
clear = true;
|
||||
};
|
||||
};
|
||||
autoCmd = [
|
||||
(mkFileTypeOptions {
|
||||
pattern = ["*.nix"];
|
||||
indentSize = 2;
|
||||
})
|
||||
(mkFileTypeOptions {
|
||||
pattern = ["*.go"];
|
||||
expandTab = false;
|
||||
indentSize = 4;
|
||||
})
|
||||
];
|
||||
}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
let
|
||||
group = "RememberCursorPosition";
|
||||
in {
|
||||
autoGroups = {
|
||||
${group} = {
|
||||
clear = true;
|
||||
};
|
||||
};
|
||||
autoCmd = [
|
||||
{
|
||||
inherit group;
|
||||
event = "BufRead";
|
||||
callback = {
|
||||
__raw = ''
|
||||
function(opts)
|
||||
buffer = opts.buf,
|
||||
vim.api.nvim_create_autocmd("BufWinEnter", {
|
||||
callback = function()
|
||||
local ft = vim.bo[opts.buf].filetype
|
||||
local last_known_line = vim.api.nvim_buf_get_mark(opts.buf, '"')[1]
|
||||
if
|
||||
not (ft:match("commit") and ft:match("rebase"))
|
||||
and last_known_line > 1
|
||||
and last_known_line <= vim.api.nvim_buf_line_count(opts.buf)
|
||||
then
|
||||
vim.api.nvim_feedkeys([[g`"]], "nx", false)
|
||||
end
|
||||
end,
|
||||
})
|
||||
end
|
||||
'';
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
let
|
||||
group = "SetConcealLevel";
|
||||
pattern = [
|
||||
"*.md"
|
||||
"*.json"
|
||||
"*.norg"
|
||||
];
|
||||
|
||||
mkConcealFunction = level: {
|
||||
__raw = ''
|
||||
function()
|
||||
vim.opt.conceallevel = ${level}
|
||||
end
|
||||
'';
|
||||
};
|
||||
in {
|
||||
autoGroups = {
|
||||
${group} = {
|
||||
clear = true;
|
||||
};
|
||||
};
|
||||
autoCmd = [
|
||||
{
|
||||
inherit pattern group;
|
||||
event = ["BufEnter" "BufWinEnter"];
|
||||
callback = mkConcealFunction "3";
|
||||
}
|
||||
{
|
||||
inherit pattern group;
|
||||
event = ["BufLeave" "BufWinLeave"];
|
||||
callback = mkConcealFunction "0";
|
||||
}
|
||||
];
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
let
|
||||
group = "YankHightlight";
|
||||
in {
|
||||
autoGroups = {
|
||||
${group} = {
|
||||
clear = true;
|
||||
};
|
||||
};
|
||||
autoCmd = [
|
||||
{
|
||||
inherit group;
|
||||
event = "TextYankPost";
|
||||
pattern = "*";
|
||||
callback = {
|
||||
__raw = ''
|
||||
function()
|
||||
vim.highlight.on_yank()
|
||||
end
|
||||
'';
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
colorschemes.catppuccin = {
|
||||
enable = true;
|
||||
integrations = {
|
||||
cmp = true;
|
||||
gitsigns = true;
|
||||
harpoon = true;
|
||||
neotree = true;
|
||||
noice = true;
|
||||
treesitter = true;
|
||||
rainbow_delimiters = true;
|
||||
indent_blankline = {
|
||||
enabled = true;
|
||||
colored_indent_levels = true;
|
||||
};
|
||||
};
|
||||
customHighlights = ''
|
||||
function(colors)
|
||||
local bg1 = colors.mantle
|
||||
local bg2 = colors.crust
|
||||
local fg0 = colors.text
|
||||
local green = colors.green
|
||||
local red = colors.red
|
||||
return {
|
||||
TelescopePreviewBorder = { fg = bg1, bg = bg1 },
|
||||
TelescopePreviewNormal = { bg = bg1 },
|
||||
TelescopePreviewTitle = { fg = fg0, bg = green },
|
||||
TelescopePromptBorder = { fg = bg2, bg = bg2 },
|
||||
TelescopePromptNormal = { fg = fg0, bg = bg2 },
|
||||
TelescopePromptPrefix = { fg = red, bg = bg2 },
|
||||
TelescopePromptTitle = { fg = fg0, bg = red },
|
||||
TelescopeResultsBorder = { fg = bg1, bg = bg1 },
|
||||
TelescopeResultsNormal = { bg = bg1 },
|
||||
TelescopeResultsTitle = { fg = bg1, bg = bg1 },
|
||||
TelescopeSelection = { bg = bg2, fg = colors.text },
|
||||
TelescopeResultsDiffAdd = { fg = fg0 },
|
||||
TelescopeResultsDiffChange = { fg = fg0 },
|
||||
TelescopeResultsDiffDelete = { fg = fg0 },
|
||||
NotifyBackground = { bg = bg2 },
|
||||
}
|
||||
end
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
{pkgs, ...}: {
|
||||
imports = [
|
||||
./colorscheme.nix
|
||||
./options.nix
|
||||
./keymaps.nix
|
||||
./autocommands
|
||||
./plugins
|
||||
];
|
||||
|
||||
config = {
|
||||
package = pkgs.neovim-nightly;
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,75 @@
|
|||
_: {
|
||||
keymaps = [
|
||||
{
|
||||
key = "<leader>e";
|
||||
action = "<cmd>Neotree toggle<CR>";
|
||||
options = {
|
||||
silent = true;
|
||||
};
|
||||
}
|
||||
{
|
||||
key = "<leader>ff";
|
||||
action = "<cmd>Telescope find_files<CR>";
|
||||
options = {
|
||||
silent = true;
|
||||
};
|
||||
}
|
||||
{
|
||||
key = "<Space>";
|
||||
action = "<Nop>";
|
||||
options = {
|
||||
silent = true;
|
||||
};
|
||||
mode = ["n" "v"];
|
||||
}
|
||||
{
|
||||
key = "<Esc>";
|
||||
action = "<C-\\><C-n>";
|
||||
options = {
|
||||
silent = true;
|
||||
};
|
||||
mode = ["t"];
|
||||
}
|
||||
{
|
||||
key = "q:";
|
||||
action = "<Nop>";
|
||||
options = {
|
||||
noremap = true;
|
||||
};
|
||||
}
|
||||
{
|
||||
key = "k";
|
||||
action = "v:count == 0 ? 'gk' : 'k'";
|
||||
options = {
|
||||
silent = true;
|
||||
expr = true;
|
||||
};
|
||||
}
|
||||
{
|
||||
key = "j";
|
||||
action = "v:count == 0 ? 'gj' : 'j'";
|
||||
options = {
|
||||
silent = true;
|
||||
expr = true;
|
||||
};
|
||||
}
|
||||
{
|
||||
key = "<M-K>";
|
||||
action = ":m -2<CR>";
|
||||
}
|
||||
{
|
||||
key = "<M-J>";
|
||||
action = ":m +1<CR>";
|
||||
}
|
||||
{
|
||||
key = "<M-K>";
|
||||
action = ":m '<-2<CR>gv=gv";
|
||||
mode = ["v"];
|
||||
}
|
||||
{
|
||||
key = "<M-J>";
|
||||
action = ":m '>+1<CR>gv=gv";
|
||||
mode = ["v"];
|
||||
}
|
||||
];
|
||||
}
|
||||
|
|
@ -0,0 +1,198 @@
|
|||
{
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
indentSize = 4;
|
||||
in {
|
||||
options = {
|
||||
programs.nixvim.ai = {
|
||||
enable = lib.mkEnableOption "AI functions";
|
||||
};
|
||||
};
|
||||
config = {
|
||||
clipboard.register = "unnamedplus";
|
||||
globals = {
|
||||
mapleader = " ";
|
||||
maplocalleader = ",";
|
||||
inlay_hints_visible = true;
|
||||
};
|
||||
opts = {
|
||||
termguicolors = true;
|
||||
whichwrap = "b,s,<,>,[,],h,l";
|
||||
backspace = "indent,eol,start";
|
||||
autoindent = true;
|
||||
expandtab = true;
|
||||
smarttab = true;
|
||||
smartindent = true;
|
||||
shiftwidth = indentSize;
|
||||
tabstop = indentSize;
|
||||
softtabstop = indentSize;
|
||||
hlsearch = true;
|
||||
incsearch = true;
|
||||
ignorecase = true;
|
||||
smartcase = true;
|
||||
scrolloff = 8;
|
||||
splitbelow = true;
|
||||
splitright = true;
|
||||
startofline = false;
|
||||
number = true;
|
||||
relativenumber = true;
|
||||
visualbell = true;
|
||||
errorbells = false;
|
||||
#textwidth = 80;
|
||||
colorcolumn = [80];
|
||||
cursorline = true;
|
||||
undofile = true;
|
||||
backup = true;
|
||||
mouse = "a";
|
||||
selectmode = "mouse";
|
||||
mousemoveevent = true;
|
||||
timeoutlen = 300;
|
||||
list = true;
|
||||
spell = true;
|
||||
spelllang = ["de" "en_us"];
|
||||
helplang = "de";
|
||||
laststatus = 3;
|
||||
conceallevel = 0;
|
||||
concealcursor = "nc";
|
||||
signcolumn = "yes";
|
||||
foldlevel = 999;
|
||||
};
|
||||
extraPackages = with pkgs; [
|
||||
fd
|
||||
ripgrep
|
||||
iferr
|
||||
fswatch
|
||||
reftools
|
||||
golines
|
||||
richgo
|
||||
gofumpt
|
||||
govulncheck
|
||||
mockgen
|
||||
ginkgo
|
||||
gotestsum
|
||||
libxcrypt
|
||||
xz
|
||||
icu74
|
||||
alejandra
|
||||
vscode-extensions.ms-vscode.cpptools
|
||||
];
|
||||
extraPlugins = with pkgs.vimPlugins; [
|
||||
{
|
||||
plugin = go-nvim;
|
||||
config = ''lua require("go").setup()'';
|
||||
}
|
||||
{
|
||||
plugin = nvim-dap-go;
|
||||
config = ''lua require("dap-go").setup()'';
|
||||
}
|
||||
{
|
||||
plugin = telescope-dap-nvim;
|
||||
config = ''lua require("telescope").load_extension("dap")'';
|
||||
}
|
||||
];
|
||||
extraConfigLua = ''
|
||||
vim.opt.undodir = vim.fn.stdpath("state") .. "/undo"
|
||||
vim.opt.backupdir = vim.fn.stdpath("state") .. "/backup"
|
||||
vim.opt.listchars:append("eol:↴")
|
||||
vim.opt.listchars:append("space:.")
|
||||
vim.opt.listchars:append("tab:🡢 ")
|
||||
|
||||
vim.filetype.add({extension = { templ = "templ" }})
|
||||
|
||||
vim.diagnostic.config({
|
||||
virtual_text = true,
|
||||
severity_sort = true,
|
||||
})
|
||||
|
||||
vim.fn.sign_define("DiagnosticSignError", { text = " ", texthl = "DiagnosticSignError" })
|
||||
vim.fn.sign_define("DiagnosticSignWarn", { text = "", texthl = "DiagnosticSignWarn" })
|
||||
vim.fn.sign_define("DiagnosticSignInfo", { text = "", texthl = "DiagnosticSignInfo" })
|
||||
vim.fn.sign_define("DiagnosticSignHint", { text = "", texthl = "DiagnosticSignHint" })
|
||||
|
||||
vim.fn.sign_define("DapBreakpoint", { text = "", texthl = "DapBreakpoint", linehl = "", numhl = "DapBreakpoint" })
|
||||
vim.fn.sign_define(
|
||||
"DapBreakpointCondition",
|
||||
{ text = "ﳁ", texthl = "DapBreakpoint", linehl = "", numhl = "DapBreakpoint" }
|
||||
)
|
||||
vim.fn.sign_define(
|
||||
"DapBreakpointRejected",
|
||||
{ text = "", texthl = "DapBreakpoint", linehl = "", numhl = "DapBreakpoint" }
|
||||
)
|
||||
vim.fn.sign_define("DapLogPoint", { text = "", texthl = "DapLogPoint", linehl = "", numhl = "DapLogPoint" })
|
||||
vim.fn.sign_define("DapStopped", { text = "", texthl = "DapStopped", linehl = "", numhl = "DapStopped" })
|
||||
'';
|
||||
|
||||
extraConfigLuaPre = ''
|
||||
local colors = require("catppuccin.palettes").get_palette("mocha")
|
||||
local pickers = require("telescope.pickers")
|
||||
local finders = require("telescope.finders")
|
||||
local conf = require("telescope.config").values
|
||||
local actions = require("telescope.actions")
|
||||
local action_state = require("telescope.actions.state")
|
||||
|
||||
local pickers = require("telescope.pickers")
|
||||
local finders = require("telescope.finders")
|
||||
local conf = require("telescope.config").values
|
||||
local actions = require("telescope.actions")
|
||||
local action_state = require("telescope.actions.state")
|
||||
|
||||
function get_program()
|
||||
return coroutine.create(function(coro)
|
||||
local opts = {}
|
||||
pickers
|
||||
.new(opts, {
|
||||
prompt_title = "Path to executable",
|
||||
finder = finders.new_oneshot_job({ "fd", "--exclude", ".git", "--no-ignore", "--type", "x"}, {}),
|
||||
sorter = conf.generic_sorter(opts),
|
||||
attach_mappings = function(buffer_number)
|
||||
actions.select_default:replace(function()
|
||||
actions.close(buffer_number)
|
||||
coroutine.resume(coro, action_state.get_selected_entry()[1])
|
||||
end)
|
||||
return true
|
||||
end,
|
||||
})
|
||||
:find()
|
||||
end)
|
||||
end
|
||||
'';
|
||||
|
||||
extraConfigLuaPost = ''
|
||||
local hooks = require("ibl.hooks")
|
||||
-- create the highlight groups in the highlight setup hook, so they are reset
|
||||
-- every time the colorscheme changes
|
||||
hooks.register(hooks.type.HIGHLIGHT_SETUP, function()
|
||||
vim.api.nvim_set_hl(0, "RainbowRed", { fg = colors.red })
|
||||
vim.api.nvim_set_hl(0, "RainbowYellow", { fg = colors.yellow })
|
||||
vim.api.nvim_set_hl(0, "RainbowBlue", { fg = colors.blue })
|
||||
vim.api.nvim_set_hl(0, "RainbowOrange", { fg = colors.peach })
|
||||
vim.api.nvim_set_hl(0, "RainbowGreen", { fg = colors.green })
|
||||
vim.api.nvim_set_hl(0, "RainbowViolet", { fg = colors.mauve })
|
||||
vim.api.nvim_set_hl(0, "RainbowCyan", { fg = colors.teal })
|
||||
end)
|
||||
|
||||
hooks.register(hooks.type.SCOPE_HIGHLIGHT, hooks.builtin.scope_highlight_from_extmark)
|
||||
|
||||
|
||||
local dap = require("dap")
|
||||
local dapui = require("dapui")
|
||||
dap.listeners.before.attach.dapui_config = function()
|
||||
dapui.open()
|
||||
end
|
||||
dap.listeners.before.launch.dapui_config = function()
|
||||
dapui.open()
|
||||
end
|
||||
dap.listeners.after.event_initialized.dapui_config = function()
|
||||
dapui.open()
|
||||
end
|
||||
dap.listeners.before.event_terminated.dapui_config = function()
|
||||
dapui.close()
|
||||
end
|
||||
dap.listeners.before.event_exited.dapui_config = function()
|
||||
dapui.close()
|
||||
end
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
cfg = config.programs.nixvim.ai;
|
||||
in
|
||||
lib.mkIf cfg.enable {
|
||||
plugins.codeium-nvim = {
|
||||
enable = true;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,130 @@
|
|||
{pkgs, ...}: {
|
||||
plugins.dap = {
|
||||
enable = true;
|
||||
extensions = {
|
||||
dap-ui.enable = true;
|
||||
dap-go.enable = true;
|
||||
dap-python.enable = true;
|
||||
dap-virtual-text.enable = true;
|
||||
};
|
||||
adapters = {
|
||||
executables = {
|
||||
lldb = {
|
||||
command = "${pkgs.llvmPackages.lldb}/bin/lldb-vscode";
|
||||
};
|
||||
};
|
||||
servers.codelldb = rec {
|
||||
port = 13000;
|
||||
executable = {
|
||||
command = "${pkgs.vscode-extensions.vadimcn.vscode-lldb}/share/vscode/extensions/vadimcn.vscode-lldb/adapter/codelldb";
|
||||
args = ["--port" (builtins.toString port)];
|
||||
};
|
||||
};
|
||||
};
|
||||
configurations = rec {
|
||||
c = cpp;
|
||||
rust = cpp;
|
||||
cpp = [
|
||||
{
|
||||
name = "Launch";
|
||||
request = "launch";
|
||||
type = "codelldb";
|
||||
cwd = "\${workspaceFolder}";
|
||||
stopOnEntry = false;
|
||||
runInTerminal = false;
|
||||
program = {
|
||||
__raw = ''
|
||||
get_program
|
||||
'';
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "Launch with Arguments";
|
||||
request = "launch";
|
||||
type = "codelldb";
|
||||
cwd = "\${workspaceFolder}";
|
||||
stopOnEntry = false;
|
||||
runInTerminal = false;
|
||||
program = {
|
||||
__raw = ''
|
||||
get_program
|
||||
'';
|
||||
};
|
||||
args = {
|
||||
__raw = ''
|
||||
function()
|
||||
local arguments_string = vim.fn.input('Executable arguments: ')
|
||||
return vim.split(arguments_string, " +")
|
||||
end
|
||||
'';
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
keymaps = [
|
||||
{
|
||||
action = ":DapToggleBreakpoint<CR>";
|
||||
key = "<leader>db";
|
||||
options = {
|
||||
silent = true;
|
||||
};
|
||||
}
|
||||
{
|
||||
action = ":DapUiToggle<CR>";
|
||||
key = "<leader>du";
|
||||
options = {
|
||||
silent = true;
|
||||
};
|
||||
}
|
||||
{
|
||||
action = ":DapContinue<CR>";
|
||||
key = "<leader>dc";
|
||||
options = {
|
||||
silent = true;
|
||||
};
|
||||
}
|
||||
{
|
||||
action = ":DapRerun<CR>";
|
||||
key = "<leader>dC";
|
||||
options = {
|
||||
silent = true;
|
||||
};
|
||||
}
|
||||
{
|
||||
action = ":DapStepOver<CR>";
|
||||
key = "<leader>do";
|
||||
options = {
|
||||
silent = true;
|
||||
};
|
||||
}
|
||||
{
|
||||
action = ":DapStepIn<CR>";
|
||||
key = "<leader>di";
|
||||
options = {
|
||||
silent = true;
|
||||
};
|
||||
}
|
||||
{
|
||||
action = ":DapStepOut<CR>";
|
||||
key = "<leader>dO";
|
||||
options = {
|
||||
silent = true;
|
||||
};
|
||||
}
|
||||
{
|
||||
action = ":DapTerminate<CR>";
|
||||
key = "<leader>dT";
|
||||
options = {
|
||||
silent = true;
|
||||
};
|
||||
}
|
||||
{
|
||||
action = ":DapToggleRepl<CR>";
|
||||
key = "<leader>dr";
|
||||
options = {
|
||||
silent = true;
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
imports = [
|
||||
./gitsigns.nix
|
||||
./harpoon.nix
|
||||
./indent-blankline.nix
|
||||
./lualine.nix
|
||||
./neo-tree.nix
|
||||
./noice.nix
|
||||
./none-ls.nix
|
||||
./rainbow-delimiters.nix
|
||||
./telescope.nix
|
||||
./treesitter.nix
|
||||
./trouble.nix
|
||||
./vim-tmux-navigator.nix
|
||||
./which-key.nix
|
||||
./mini.nix
|
||||
./todo-comments.nix
|
||||
./neorg.nix
|
||||
./fugitive.nix
|
||||
./dap.nix
|
||||
./lastplace.nix
|
||||
./codeium.nix
|
||||
./undotree.nix
|
||||
./lsp
|
||||
];
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
plugins.fugitive.enable = true;
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
plugins.gitsigns.enable = true;
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
plugins.harpoon = {
|
||||
enable = true;
|
||||
keymaps = {
|
||||
addFile = "<leader>m";
|
||||
navFile = {
|
||||
"1" = "<leader>1";
|
||||
"2" = "<leader>2";
|
||||
"3" = "<leader>3";
|
||||
"4" = "<leader>4";
|
||||
};
|
||||
toggleQuickMenu = "<leader>M";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
_: let
|
||||
highlight = [
|
||||
"RainbowRed"
|
||||
"RainbowYellow"
|
||||
"RainbowBlue"
|
||||
"RainbowOrange"
|
||||
"RainbowGreen"
|
||||
"RainbowViolet"
|
||||
"RainbowCyan"
|
||||
];
|
||||
in {
|
||||
plugins.indent-blankline = {
|
||||
enable = true;
|
||||
settings = {
|
||||
scope = {
|
||||
inherit highlight;
|
||||
};
|
||||
indent = {
|
||||
inherit highlight;
|
||||
char = "▎";
|
||||
tab_char = "▍";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
plugins.lastplace.enable = true;
|
||||
}
|
||||
|
|
@ -0,0 +1,236 @@
|
|||
{
|
||||
plugins = {
|
||||
friendly-snippets = {
|
||||
enable = true;
|
||||
};
|
||||
luasnip = {
|
||||
enable = true;
|
||||
extraConfig = {
|
||||
enable_autosnippets = true;
|
||||
store_selection_keys = "<Tab>";
|
||||
};
|
||||
fromLua = [
|
||||
{paths = ../../snippets;}
|
||||
];
|
||||
};
|
||||
lspkind = {
|
||||
enable = true;
|
||||
symbolMap = {
|
||||
Namespace = "";
|
||||
Text = "";
|
||||
Method = "";
|
||||
Function = "";
|
||||
Constructor = "";
|
||||
Field = "";
|
||||
Variable = "";
|
||||
Class = "";
|
||||
Interface = "";
|
||||
Module = "";
|
||||
Property = "";
|
||||
Unit = "";
|
||||
Value = "";
|
||||
Enum = "";
|
||||
Keyword = "";
|
||||
Snippet = "";
|
||||
Color = "";
|
||||
File = "";
|
||||
Reference = "";
|
||||
Folder = "";
|
||||
EnumMember = "";
|
||||
Constant = "";
|
||||
Struct = "";
|
||||
Event = "";
|
||||
Operator = "";
|
||||
TypeParameter = "";
|
||||
Table = "";
|
||||
Object = "";
|
||||
Tag = "";
|
||||
Array = "[]";
|
||||
Boolean = "";
|
||||
Number = "";
|
||||
Null = "";
|
||||
String = "";
|
||||
Calendar = "";
|
||||
Watch = "";
|
||||
Package = "";
|
||||
Codeium = "";
|
||||
Copilot = "";
|
||||
TabNine = "";
|
||||
};
|
||||
};
|
||||
cmp = {
|
||||
enable = true;
|
||||
autoEnableSources = true;
|
||||
settings = {
|
||||
snippet.expand = ''
|
||||
function(args)
|
||||
require('luasnip').lsp_expand(args.body)
|
||||
end
|
||||
'';
|
||||
completion.completeopt = "menu,preview";
|
||||
sources = [
|
||||
{name = "nvim_lsp";}
|
||||
{name = "nvim_lsp_signature_help";}
|
||||
{name = "nvim_lsp_document_symbol";}
|
||||
{name = "codeium";}
|
||||
{name = "luasnip";}
|
||||
{name = "path";}
|
||||
{name = "buffer";}
|
||||
{name = "treesitter";}
|
||||
];
|
||||
mapping = {
|
||||
__raw = ''
|
||||
cmp.mapping.preset.insert({
|
||||
['<C-n>'] = cmp.mapping({
|
||||
c = function()
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item({ behavior = cmp.SelectBehavior.Select })
|
||||
else
|
||||
vim.api.nvim_feedkeys(t('<Down>'), 'n', true)
|
||||
end
|
||||
end,
|
||||
i = function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item({ behavior = cmp.SelectBehavior.Select })
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end
|
||||
}),
|
||||
['<C-p>'] = cmp.mapping({
|
||||
c = function()
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item({ behavior = cmp.SelectBehavior.Select })
|
||||
else
|
||||
vim.api.nvim_feedkeys(t('<Up>'), 'n', true)
|
||||
end
|
||||
end,
|
||||
i = function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item({ behavior = cmp.SelectBehavior.Select })
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end
|
||||
}),
|
||||
['<C-b>'] = cmp.mapping(cmp.mapping.scroll_docs(-4), {'i', 'c'}),
|
||||
['<C-f>'] = cmp.mapping(cmp.mapping.scroll_docs(4), {'i', 'c'}),
|
||||
['<C-Space>'] = cmp.mapping(cmp.mapping.complete(), {'i', 'c'}),
|
||||
['<C-e>'] = cmp.mapping({ i = cmp.mapping.close(), c = cmp.mapping.close() }),
|
||||
['<CR>'] = cmp.mapping.confirm({ select = true }),
|
||||
['<Down>'] = cmp.mapping(cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Select }), {'i'}),
|
||||
['<Up>'] = cmp.mapping(cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Select }), {'i'}),
|
||||
["<Tab>"] = cmp.mapping({
|
||||
c = function()
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item({ behavior = cmp.SelectBehavior.Insert })
|
||||
else
|
||||
cmp.complete()
|
||||
end
|
||||
end,
|
||||
i = function(fallback)
|
||||
local has_words_before = function()
|
||||
local unpack = unpack or table.unpack
|
||||
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
|
||||
end
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
elseif require('luasnip').expand_or_jumpable() then
|
||||
require('luasnip').expand_or_jump()
|
||||
elseif has_words_before() then
|
||||
cmp.complete()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end,
|
||||
s = function(fallback)
|
||||
local has_words_before = function()
|
||||
local unpack = unpack or table.unpack
|
||||
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
|
||||
end
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
elseif require('luasnip').expand_or_jumpable() then
|
||||
require('luasnip').expand_or_jump()
|
||||
elseif has_words_before() then
|
||||
cmp.complete()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end
|
||||
}),
|
||||
["<S-Tab>"] = cmp.mapping({
|
||||
c = function()
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item({ behavior = cmp.SelectBehavior.Insert })
|
||||
else
|
||||
cmp.complete()
|
||||
end
|
||||
end,
|
||||
i = function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
elseif require('luasnip').jumpable(-1) then
|
||||
require('luasnip').jump(-1)
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end,
|
||||
s = function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
elseif require('luasnip').jumpable(-1) then
|
||||
require('luasnip').jump(-1)
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end
|
||||
}),
|
||||
})
|
||||
'';
|
||||
};
|
||||
};
|
||||
cmdline = {
|
||||
"/" = {
|
||||
sources = [
|
||||
{
|
||||
name = "buffer";
|
||||
}
|
||||
];
|
||||
};
|
||||
":" = {
|
||||
sources = [
|
||||
{
|
||||
name = "path";
|
||||
}
|
||||
{
|
||||
name = "cmdline";
|
||||
}
|
||||
];
|
||||
};
|
||||
"?" = {
|
||||
mapping = {
|
||||
completion.completeopt = "menuone,noselect";
|
||||
__raw = "cmp.mapping.preset.cmdline({
|
||||
['<C-b>'] = cmp.mapping.scroll_docs(-4),
|
||||
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||
['<C-Space>'] = cmp.mapping.complete(),
|
||||
['<C-e>'] = cmp.mapping.abort(),
|
||||
})";
|
||||
};
|
||||
sources = [
|
||||
{
|
||||
name = "cmdline";
|
||||
ignoreCmds = [
|
||||
"Man"
|
||||
"!"
|
||||
];
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
imports = [
|
||||
./languages
|
||||
./cmp.nix
|
||||
./lsp.nix
|
||||
];
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue