mirror of
https://github.com/elkowar/dots-of-war.git
synced 2024-12-26 06:02:23 +00:00
asdf
This commit is contained in:
parent
2283b8e7ea
commit
185d017d32
7 changed files with 251 additions and 4 deletions
|
@ -125,7 +125,8 @@ in
|
||||||
enable = true;
|
enable = true;
|
||||||
enableFishIntegration = cfg.enableFish;
|
enableFishIntegration = cfg.enableFish;
|
||||||
enableZshIntegration = cfg.enableZsh;
|
enableZshIntegration = cfg.enableZsh;
|
||||||
enableNixDirenvIntegration = true;
|
# enableNixDirenvIntegration = true;
|
||||||
|
stdlib = (builtins.readFile ./direnvrc);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@ in
|
||||||
#hyper-haskell
|
#hyper-haskell
|
||||||
font-manager
|
font-manager
|
||||||
|
|
||||||
|
haskellPackages.arbtt
|
||||||
sqlite-web
|
sqlite-web
|
||||||
|
|
||||||
#flameshot
|
#flameshot
|
||||||
|
|
151
nixpkgs/.config/nixpkgs/modules/direnvrc
Normal file
151
nixpkgs/.config/nixpkgs/modules/direnvrc
Normal file
|
@ -0,0 +1,151 @@
|
||||||
|
# Usage: use_nix [...]
|
||||||
|
#
|
||||||
|
# Load environment variables from `nix-shell`.
|
||||||
|
# If you have a `default.nix` or `shell.nix` one of these will be used and
|
||||||
|
# the derived environment will be stored at ./.direnv/env-<hash>
|
||||||
|
# and symlink to it will be created at ./.direnv/default.
|
||||||
|
# Dependencies are added to the GC roots, such that the environment remains persistent.
|
||||||
|
#
|
||||||
|
# The resulting environment is cached for better performance.
|
||||||
|
#
|
||||||
|
# To trigger switch to a different environment:
|
||||||
|
# `rm -f .direnv/default`
|
||||||
|
#
|
||||||
|
# To derive a new environment:
|
||||||
|
# `rm -rf .direnv/env-$(md5sum {shell,default}.nix 2> /dev/null | cut -c -32)`
|
||||||
|
#
|
||||||
|
# To remove cache:
|
||||||
|
# `rm -f .direnv/dump-*`
|
||||||
|
#
|
||||||
|
# To remove all environments:
|
||||||
|
# `rm -rf .direnv/env-*`
|
||||||
|
#
|
||||||
|
# To remove only old environments:
|
||||||
|
# `find .direnv -name 'env-*' -and -not -name `readlink .direnv/default` -exec rm -rf {} +`
|
||||||
|
#
|
||||||
|
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
use_nix() {
|
||||||
|
# define all local variables
|
||||||
|
local shell f env_hash dir default wd drv dump path_backup
|
||||||
|
local files_to_watch=()
|
||||||
|
|
||||||
|
declare opt
|
||||||
|
declare OPTARG
|
||||||
|
declare OPTIND
|
||||||
|
|
||||||
|
while getopts ":s:w:" opt; do
|
||||||
|
case "${opt}" in
|
||||||
|
s)
|
||||||
|
shell="${OPTARG}"
|
||||||
|
files_to_watch=("${files_to_watch[@]}" "${shell}")
|
||||||
|
;;
|
||||||
|
w)
|
||||||
|
files_to_watch=("${files_to_watch[@]}" "${OPTARG}")
|
||||||
|
;;
|
||||||
|
:)
|
||||||
|
>&2 echo "Invalid option: $OPTARG requires an argument"
|
||||||
|
;;
|
||||||
|
\?)
|
||||||
|
>&2 echo "Invalid option: $OPTARG"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $((OPTIND -1))
|
||||||
|
|
||||||
|
if [[ -z "${shell}" ]]; then
|
||||||
|
>&2 echo "ERR: no shell was given"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
for f in "${files_to_watch[@]}"; do
|
||||||
|
if ! [[ -f "${f}" ]]; then
|
||||||
|
>&2 echo "cannot watch file ${f} because it does not exist"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# compute the hash of all the files that makes up the development environment
|
||||||
|
env_hash="$(hashContents "${files_to_watch[@]}")"
|
||||||
|
|
||||||
|
dir="$(direnv_layout_dir)"
|
||||||
|
default="${dir}/default"
|
||||||
|
if [[ ! -L "${default}" ]] || [[ ! -d $(readlink "${default}") ]]; then
|
||||||
|
wd="${dir}/env-${env_hash}"
|
||||||
|
mkdir -p "${wd}"
|
||||||
|
|
||||||
|
drv="${wd}/env.drv"
|
||||||
|
if [[ ! -f "${drv}" ]]; then
|
||||||
|
log_status "use nix: deriving new environment"
|
||||||
|
IN_NIX_SHELL=1 nix-instantiate --add-root "${drv}" --indirect "${shell}" > /dev/null
|
||||||
|
nix-store -r $(nix-store --query --references "${drv}") --add-root "${wd}/dep" --indirect > /dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -f "${default}"
|
||||||
|
ln -s $(basename "${wd}") "${default}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
drv=$(readlink "${default}/env.drv")
|
||||||
|
dump="${dir}/dump-$(hashFile ".envrc")-$(hashFile ${drv})"
|
||||||
|
|
||||||
|
if [[ ! -f "${dump}" ]] || [[ "${XDG_CONFIG_DIR}/direnv/direnvrc" -nt "${dump}" ]]; then
|
||||||
|
log_status "use nix: updating cache"
|
||||||
|
|
||||||
|
old=$(find "${dir}" -name 'dump-*')
|
||||||
|
nix-shell --pure "${drv}" --show-trace --run "$(join_args "$direnv" dump bash)" > "${dump}"
|
||||||
|
rm -f ${old}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# evaluate the dump created by nix-shell earlier, but have to merge the PATH
|
||||||
|
# with the current PATH
|
||||||
|
# NOTE: we eval the dump here as opposed to direnv_load it because we don't
|
||||||
|
# want to persist environment variables coming from the shell at the time of
|
||||||
|
# the dump. See https://github.com/direnv/direnv/issues/405 for context.
|
||||||
|
path_backup="${PATH}"
|
||||||
|
eval $(cat "${dump}")
|
||||||
|
export PATH="${PATH}:${path_backup}"
|
||||||
|
|
||||||
|
for f in "${files_to_watch[@]}"; do
|
||||||
|
watch_file "${f}"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
hashContents() {
|
||||||
|
if has md5sum; then
|
||||||
|
cat "${@}" | md5sum | cut -c -32
|
||||||
|
elif has md5; then
|
||||||
|
cat "${@}" | md5 -q
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
hashFile() {
|
||||||
|
if has md5sum; then
|
||||||
|
md5sum "${@}" | cut -c -32
|
||||||
|
elif has md5; then
|
||||||
|
md5 -q "${@}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
fail() {
|
||||||
|
log_error "${@}"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
validateVersion() {
|
||||||
|
local version="$("${direnv}" version)"
|
||||||
|
local major="$(echo "${version}" | cut -d. -f1)"
|
||||||
|
local minor="$(echo "${version}" | cut -d. -f2)"
|
||||||
|
local patch="$(echo "${version}" | cut -d. -f3)"
|
||||||
|
|
||||||
|
if [[ "${major}" -gt 2 ]]; then return 0; fi
|
||||||
|
if [[ "${major}" -eq 2 ]] && [[ "${minor}" -gt 18 ]]; then return 0; fi
|
||||||
|
if [[ "${major}" -eq 2 ]] && [[ "${minor}" -eq 18 ]] && [[ "${patch}" -ge 2 ]]; then return 0; fi
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
if ! validateVersion; then
|
||||||
|
echo "This .envrc requires direnv version 2.18.2 or above."
|
||||||
|
exit 1
|
||||||
|
fi
|
|
@ -5,6 +5,7 @@
|
||||||
"/home/leon/coding/projects/nvim-gehzu" {}
|
"/home/leon/coding/projects/nvim-gehzu" {}
|
||||||
:elkowar/kmonad.vim {}
|
:elkowar/kmonad.vim {}
|
||||||
|
|
||||||
|
|
||||||
:lifepillar/vim-gruvbox8 {:opt false
|
:lifepillar/vim-gruvbox8 {:opt false
|
||||||
:config #(do (set vim.g.gruvbox_italics 0)
|
:config #(do (set vim.g.gruvbox_italics 0)
|
||||||
(set vim.g.gruvbox_italicise_strings 0)
|
(set vim.g.gruvbox_italicise_strings 0)
|
||||||
|
@ -29,6 +30,12 @@
|
||||||
;:romgrk/nvim-treesitter-context {}
|
;:romgrk/nvim-treesitter-context {}
|
||||||
|
|
||||||
|
|
||||||
|
;:code-biscuits/nvim-biscuits {:requires [:nvim-treesitter/nvim-treesitter]
|
||||||
|
;:event ["BufReadPost"]
|
||||||
|
;:config #((. (require "nvim-biscuits") :setup) {})}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
:jiangmiao/auto-pairs {}
|
:jiangmiao/auto-pairs {}
|
||||||
|
|
||||||
:folke/which-key.nvim {}
|
:folke/which-key.nvim {}
|
||||||
|
@ -96,6 +103,7 @@
|
||||||
:glepnir/lspsaga.nvim {:after "vim-gruvbox8"
|
:glepnir/lspsaga.nvim {:after "vim-gruvbox8"
|
||||||
:mod "dots.plugins.lspsaga"}
|
:mod "dots.plugins.lspsaga"}
|
||||||
|
|
||||||
|
;; --------------------
|
||||||
|
|
||||||
:Olical/conjure {}
|
:Olical/conjure {}
|
||||||
:tami5/compe-conjure {:requires [:Olical/conjure]}
|
:tami5/compe-conjure {:requires [:Olical/conjure]}
|
||||||
|
@ -135,13 +143,15 @@
|
||||||
|
|
||||||
:rust-lang/rust.vim {:ft ["rust"]
|
:rust-lang/rust.vim {:ft ["rust"]
|
||||||
:requires ["mattn/webapi-vim"]}
|
:requires ["mattn/webapi-vim"]}
|
||||||
:simrat39/rust-tools.nvim {:ft ["rust"]}
|
:simrat39/rust-tools.nvim {}
|
||||||
:qnighy/lalrpop.vim {}
|
:qnighy/lalrpop.vim {}
|
||||||
|
|
||||||
|
:edwinb/idris2-vim {:ft ["idris2"]}
|
||||||
:vmchale/ats-vim {:ft ["ats" "dats" "sats"]}
|
:vmchale/ats-vim {:ft ["ats" "dats" "sats"]}
|
||||||
|
|
||||||
:bakpakin/fennel.vim {})
|
:bakpakin/fennel.vim {})
|
||||||
|
|
||||||
|
|
||||||
; >>>
|
; >>>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,14 @@
|
||||||
(module dots.plugins.lsp
|
(module dots.plugins.lsp
|
||||||
{autoload {a aniseed.core
|
{autoload {a aniseed.core
|
||||||
lsp lspconfig
|
lsp lspconfig
|
||||||
lsp-configs lspconfig.configs
|
lsp-configs lspconfig/configs
|
||||||
utils dots.utils}
|
utils dots.utils}
|
||||||
|
|
||||||
require-macros [macros]})
|
require-macros [macros]})
|
||||||
|
|
||||||
|
|
||||||
|
; TODO check https://github.com/neovim/nvim-lspconfig/blob/master/ADVANCED_README.md for default config for all of them
|
||||||
|
|
||||||
(fn on_attach [client bufnr]
|
(fn on_attach [client bufnr]
|
||||||
(pkg lsp_signature.nvim [lsp_signature (require "lsp_signature")]
|
(pkg lsp_signature.nvim [lsp_signature (require "lsp_signature")]
|
||||||
(lsp_signature.on_attach {:bind true
|
(lsp_signature.on_attach {:bind true
|
||||||
|
@ -80,7 +83,85 @@
|
||||||
(vim.fn.expand "$VIMRUNTIME/lua/vim/lsp") true}}
|
(vim.fn.expand "$VIMRUNTIME/lua/vim/lsp") true}}
|
||||||
:telemetry false}}}))
|
:telemetry false}}}))
|
||||||
|
|
||||||
|
(when (not lsp.prolog_lsp)
|
||||||
|
(tset lsp-configs :prolog_lsp
|
||||||
|
{:default_config {:cmd ["swipl" "-g" "use_module(library(lsp_server))." "-g" "lsp_server:main" "-t" "halt" "--" "stdio"]
|
||||||
|
:filetypes ["prolog"]
|
||||||
|
:root_dir (fn [fname] (or (lsp.util.find_git_ancestor fname) (vim.loop.os_homedir)))
|
||||||
|
:settings {}}}))
|
||||||
|
|
||||||
|
(lsp.prolog_lsp.setup {})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; Idris2 ----------------------------------------------------------- <<<<<
|
||||||
|
|
||||||
|
(def autostart-semantic-highlighting true)
|
||||||
|
(defn refresh-semantic-highlighting []
|
||||||
|
(when autostart-semantic-highlighting
|
||||||
|
(vim.lsp.buf_request 0
|
||||||
|
:textDocument/semanticTokens/full
|
||||||
|
{:textDocument (vim.lsp.util.make_text_document_params)}
|
||||||
|
nil)))
|
||||||
|
|
||||||
|
(when (not lsp.idris2_lsp)
|
||||||
|
(set lsp-configs.idris2_lsp
|
||||||
|
{:default_config
|
||||||
|
{:cmd [:idris2-lsp]
|
||||||
|
:filetypes [:idris2]
|
||||||
|
:on_new_config (fn [new-config new-root-dir]
|
||||||
|
(set new-config.cmd {1 :idris2-lsp})
|
||||||
|
(set new-config.capabilities.workspace.semanticTokens {:refreshSupport true}))
|
||||||
|
:root_dir (fn [fname]
|
||||||
|
(local scandir (require :plenary.scandir))
|
||||||
|
(fn find-ipkg-ancestor [fname]
|
||||||
|
(lsp.util.search_ancestors
|
||||||
|
fname
|
||||||
|
(fn [path]
|
||||||
|
(local res (scandir.scan_dir path {:depth 1 :search_pattern ".+%.ipkg"}))
|
||||||
|
(when (not (vim.tbl_isempty res)) path))))
|
||||||
|
|
||||||
|
(or (or (find-ipkg-ancestor fname)
|
||||||
|
(lsp.util.find_git_ancestor fname))
|
||||||
|
(vim.loop.os_homedir)))
|
||||||
|
:settings {}}}))
|
||||||
|
(lsp.idris2_lsp.setup
|
||||||
|
{:on_attach refresh-semantic-highlighting
|
||||||
|
:autostart true
|
||||||
|
:handlers {:workspace/semanticTokens/refresh refresh-semantic-highlighting
|
||||||
|
:textDocument/semanticTokens/full
|
||||||
|
(fn [err method result client-id bufnr config]
|
||||||
|
(let [client (vim.lsp.get_client_by_id client-id)
|
||||||
|
legend client.server_capabilities.semanticTokensProvider.legend
|
||||||
|
token-types legend.tokenTypes
|
||||||
|
data result.data
|
||||||
|
ns (vim.api.nvim_create_namespace :nvim-lsp-semantic)]
|
||||||
|
(vim.api.nvim_buf_clear_namespace bufnr ns 0 (- 1))
|
||||||
|
(local tokens {})
|
||||||
|
(var (prev-line prev-start) (values nil 0))
|
||||||
|
(for [i 1 (length data) 5]
|
||||||
|
(local delta-line (. data i))
|
||||||
|
(set prev-line
|
||||||
|
(or (and prev-line (+ prev-line delta-line))
|
||||||
|
delta-line))
|
||||||
|
(local delta-start (. data (+ i 1)))
|
||||||
|
(set prev-start (or (and (= delta-line 0) (+ prev-start delta-start))
|
||||||
|
delta-start))
|
||||||
|
(local token-type (. token-types (+ (. data (+ i 3)) 1)))
|
||||||
|
(vim.api.nvim_buf_add_highlight bufnr
|
||||||
|
ns
|
||||||
|
(.. :LspSemantic_ token-type)
|
||||||
|
prev-line
|
||||||
|
prev-start
|
||||||
|
(+ prev-start (. data (+ i 2)))))))}})
|
||||||
|
|
||||||
|
(vim.cmd "highlight link LspSemantic_type Include")
|
||||||
|
(vim.cmd "highlight link LspSemantic_function Identifier")
|
||||||
|
(vim.cmd "highlight link LspSemantic_struct Number")
|
||||||
|
(vim.cmd "highlight LspSemantic_variable guifg=gray")
|
||||||
|
(vim.cmd "highlight link LspSemantic_keyword Structure")
|
||||||
|
|
||||||
|
; --------------------------------- >>>>>
|
||||||
|
|
||||||
(se signcolumn "yes")
|
(se signcolumn "yes")
|
||||||
|
|
||||||
|
|
|
@ -35,3 +35,4 @@ export LOCALE_ARCHIVE=$(nix-build '<nixpkgs>' --no-out-link -A glibcLocales)/lib
|
||||||
|
|
||||||
export _JAVA_AWT_WM_NONREPARENTING=1
|
export _JAVA_AWT_WM_NONREPARENTING=1
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -265,6 +265,8 @@ myStartupHook = do
|
||||||
spawnOnce "xfce4-clipman &"
|
spawnOnce "xfce4-clipman &"
|
||||||
--spawnOnce "redshift -P -O 5000 &"
|
--spawnOnce "redshift -P -O 5000 &"
|
||||||
spawn "xset r rate 300 50 &" -- make key repeat quicker
|
spawn "xset r rate 300 50 &" -- make key repeat quicker
|
||||||
|
spawn "setxkbmap de nodeadkeys"
|
||||||
|
spawn "arbtt-capture"
|
||||||
--spawn "/home/leon/.screenlayout/dualscreen-stacked.sh"
|
--spawn "/home/leon/.screenlayout/dualscreen-stacked.sh"
|
||||||
spawn "/home/leon/.screenlayout/tripplescreen-fixed.sh"
|
spawn "/home/leon/.screenlayout/tripplescreen-fixed.sh"
|
||||||
spawnOnce "xsetroot -cursor_name left_ptr"
|
spawnOnce "xsetroot -cursor_name left_ptr"
|
||||||
|
|
Loading…
Reference in a new issue