diff options
| -rw-r--r-- | config/guix/channels.scm | 10 | ||||
| -rwxr-xr-x | config/i3/scripts/keyboard_switch | 14 | ||||
| -rwxr-xr-x | config/i3/scripts/pass | 6 | ||||
| -rw-r--r-- | config/nvim/init.vim | 2 | ||||
| -rw-r--r-- | config/nvim/lua/plugins.lua | 47 | ||||
| -rwxr-xr-x | config/sway/scripts/pass | 6 | ||||
| -rwxr-xr-x | config/waybar/email.sh | 2 | ||||
| -rw-r--r-- | gitconfig | 1 | ||||
| -rw-r--r-- | guile | 4 | ||||
| -rw-r--r-- | infokey | 4 | ||||
| -rwxr-xr-x | install | 13 | ||||
| -rwxr-xr-x | local/bin/allsync | 60 | ||||
| -rwxr-xr-x | local/bin/elektroline-windows | 4 | ||||
| -rwxr-xr-x | local/bin/elektroline00 | 15 | ||||
| -rwxr-xr-x | local/bin/new-flake-dev | 44 | ||||
| -rwxr-xr-x | local/bin/project-test | 30 | ||||
| -rwxr-xr-x | local/share/applications/elektroline-windows.desktop | 6 | ||||
| m--------- | private | 0 | ||||
| -rw-r--r-- | profile | 6 | ||||
| -rw-r--r-- | utils/ask | 24 | ||||
| -rw-r--r-- | utils/guix | 16 | ||||
| -rw-r--r-- | utils/inst | 53 |
22 files changed, 207 insertions, 160 deletions
diff --git a/config/guix/channels.scm b/config/guix/channels.scm new file mode 100644 index 0000000..a56d8b6 --- /dev/null +++ b/config/guix/channels.scm @@ -0,0 +1,10 @@ +(cons* (channel + (name 'nonguix) + (url "https://gitlab.com/nonguix/nonguix") + ;; Enable signature verification: + (introduction + (make-channel-introduction + "897c1a470da759236cc11798f4e0a5f7d4d59fbc" + (openpgp-fingerprint + "2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5")))) + %default-channels) diff --git a/config/i3/scripts/keyboard_switch b/config/i3/scripts/keyboard_switch index 7ba27f8..168d577 100755 --- a/config/i3/scripts/keyboard_switch +++ b/config/i3/scripts/keyboard_switch @@ -1,13 +1,13 @@ #!/bin/bash -active=`~/.config/i3/scripts/keyboard_layout` +active=$(~/.config/i3/scripts/keyboard_layout) case "$active" in - us) - setxkbmap cz_qwerty - ;; - cz_qwerty) - setxkbmap us - ;; +us) + setxkbmap cz_qwerty + ;; +cz_qwerty) + setxkbmap us + ;; esac # Send update to i3blocks diff --git a/config/i3/scripts/pass b/config/i3/scripts/pass index aa2ad96..4777c1c 100755 --- a/config/i3/scripts/pass +++ b/config/i3/scripts/pass @@ -1,6 +1,6 @@ #!/bin/sh -find ~/.password-store -type f -printf '%P\n' | \ - sed 's/\.gpg$//' | dmenu -p 'Pass:' | \ +find ~/.password-store -type f -printf '%P\n' | + sed 's/\.gpg$//' | dmenu -p 'Pass:' | while read -r psw; do pass -c "$psw" -done + done diff --git a/config/nvim/init.vim b/config/nvim/init.vim index b18a009..3165498 100644 --- a/config/nvim/init.vim +++ b/config/nvim/init.vim @@ -138,6 +138,8 @@ let g:UltiSnipsJumpBackwardTrigger='<c-k>' nnoremap <c-c><c-c> :Telescope buffers<cr> nnoremap <c-p> :lua require('mytelescopefiles')()<cr> nnoremap <c-s-p> :Telescope lsp_document_symbols<cr> +nnoremap <c-s-g> :Telescope live_grep<cr> +nnoremap <c-s-8> :Telescope grep_string<cr> nmap <leader>] :Telescope lsp_definitions<cr> nmap <leader><leader>] :Telescope lsp_type_definitions<cr> nmap <leader>[ :Telescope lsp_implementations<cr> diff --git a/config/nvim/lua/plugins.lua b/config/nvim/lua/plugins.lua index f323106..a1c17bf 100644 --- a/config/nvim/lua/plugins.lua +++ b/config/nvim/lua/plugins.lua @@ -4,47 +4,12 @@ if vim.fn.empty(vim.fn.glob(install_path)) > 0 then vim.cmd([[packadd packer.nvim]]) end -local treesitter_formaters = { - "c", - "lua", - "kconfig", - "make", - "markdown", - "markdown_inline", - "meson", - "ninja", - "ini", - "gitcommit", - "git_rebase", - "git_config", - "nix", - "python", - "toml", - "vim", - "vimdoc", - "yaml", - "xml", -} - require("packer").startup(function(use) use("wbthomason/packer.nvim") -- Visual ------------------------------------------------------------------ use("shaunsingh/nord.nvim") use("MunifTanjim/nui.nvim") use({ - "nvim-treesitter/nvim-treesitter", - run = ":TSUpdate", - config = function() - require("nvim-treesitter.configs").setup({ - ensure_installed = treesitter_formaters, - highlight = { - enable = true, - additional_vim_regex_highlighting = false, - }, - }) - end, - }) - use({ "lukas-reineke/indent-blankline.nvim", config = function() local highlight = { "CursorColumn", "Whitespace" } @@ -178,10 +143,10 @@ require("packer").startup(function(use) use("aliou/bats.vim") -- LSP --------------------------------------------------------------------- - local lspconfig = require("lspconfig") - lspconfig.bashls.setup({}) - lspconfig.clangd.setup({}) - lspconfig.nil_ls.setup({}) - lspconfig.pylsp.setup({}) - lspconfig.tinymist.setup({}) + vim.lsp.enable("bashls") + vim.lsp.enable("clangd") + vim.lsp.enable("nil_ls") + vim.lsp.enable("pylsp") + vim.lsp.enable("tinymist") + vim.lsp.enable("guile_ls") end) diff --git a/config/sway/scripts/pass b/config/sway/scripts/pass index 06383b3..11700e6 100755 --- a/config/sway/scripts/pass +++ b/config/sway/scripts/pass @@ -1,6 +1,6 @@ #!/bin/sh -find ~/.password-store -name .git -prune -o -type f -printf '%P\n' | \ - sed 's/\.gpg$//' | wofi -d -p 'Pass:' | \ +find ~/.password-store -name .git -prune -o -type f -printf '%P\n' | + sed 's/\.gpg$//' | wofi -d -p 'Pass:' | while read -r psw; do pass -c "$psw" -done + done diff --git a/config/waybar/email.sh b/config/waybar/email.sh index 437566f..16b0d9f 100755 --- a/config/waybar/email.sh +++ b/config/waybar/email.sh @@ -10,7 +10,7 @@ fi part=() for mail in email gmail elektroline fel; do counts="$(notmuch count -- "${filter[@]}" and "tag:$mail")" - [ "$counts" = "0" ] || \ + [ "$counts" = "0" ] || part+=("$mail:$counts") done @@ -45,6 +45,7 @@ dump = cat-file -p please = push --force-with-lease supdate = submodule update --init --recursive + ffetch = fetch --all --prune fclean = "!git clean -xdff && git submodule foreach git clean -xdff && :" cleanup = "!git branch --merged HEAD --format=\"%(refname:lstrip=2)\" | grep -vx master | xargs git branch -d" [sendemail] @@ -0,0 +1,4 @@ +(use-modules (ice-9 readline) (ice-9 colorized)) + +(activate-readline) +(activate-colorized) @@ -0,0 +1,4 @@ +#var +link-style=blue,bold,underline +active-link-style=yellow,bold +match-style=underline,bold,nocolor @@ -8,7 +8,9 @@ git submodule update --init --recursive || ( ) # Source inst and diff function +. ./utils/ask . ./utils/inst +. ./utils/guix # Load if we force changes (implies no interaction) [ "$1" = "-f" ] && FORCE=true || FORCE=false @@ -37,7 +39,15 @@ if ask "nix" "Install Nix configuration"; then inst private/config/nix/builders ~/.config/nix/builders fi -if ask "clituls" "Install configurations for various CLI utility tools"; then +if hascmd guix && ask "guix" "Install Guix configuration"; then + inst guile ~/.guile + inst config/guix/channels.scm ~/.config/guix/channels.scm + guix_install \ + guile guile-colorized guile-readline guile-lsp-server +fi + +if ask "cliutils" "Install configurations for various CLI utility tools"; then + inst infokey ~/.infokey inst screenrc ~/.screenrc inst local/share/mc/skins/nord16M.ini ~/.local/share/mc/skins/nord16M.ini fi @@ -145,6 +155,7 @@ if ask "elektroline" "Install Elektroline scripts"; then inst shvcli.toml ~/.shvcli.toml inst local/bin/elektroline-git-config ~/.local/bin/elektroline-git-config inst local/bin/elektroline-windows ~/.local/bin/elektroline-windows + inst local/share/applications/elektroline-windows.desktop ~/.local/share/applications/elektroline-windows.desktop inst local/bin/elektroline00 ~/.local/bin/elektroline00 fi diff --git a/local/bin/allsync b/local/bin/allsync index 6e537e2..9539f0d 100755 --- a/local/bin/allsync +++ b/local/bin/allsync @@ -8,17 +8,17 @@ notify_bar() { i3_astroid() { pkill -0 astroid || return 0 - find "/run/user/$(id -u)/i3" "/tmp/i3-$(id -un)".* -name ipc-socket\* 2>/dev/null | \ + find "/run/user/$(id -u)/i3" "/tmp/i3-$(id -un)".* -name ipc-socket\* 2>/dev/null | while read -r socket; do i3-msg -s "$socket" "exec astroid $*" - done + done } cron_enable() { pass mail/cynerd@email.cz >/dev/null # Cache keys if command -v crontab >/dev/null; then { - crontab -l + crontab -l echo "$cronline" } | crontab - else @@ -46,33 +46,33 @@ cron_enabled() { if [ "$#" -gt 0 ]; then case "$1" in - enable) - cron_enable - ;; - disable) + enable) + cron_enable + ;; + disable) + cron_disable + ;; + enabled) + cron_enabled + ;; + state) + if cron_enabled; then + echo "Enabled" + else + echo "Disabled" + fi + ;; + toggle) + if cron_enabled; then cron_disable - ;; - enabled) - cron_enabled - ;; - state) - if cron_enabled; then - echo "Enabled" - else - echo "Disabled" - fi - ;; - toggle) - if cron_enabled; then - cron_disable - else - cron_enable - fi - ;; - *) - echo "${0##*/}: Unknown argument: $1" >&2 - exit 1 - ;; + else + cron_enable + fi + ;; + *) + echo "${0##*/}: Unknown argument: $1" >&2 + exit 1 + ;; esac exit fi @@ -97,7 +97,6 @@ if [ "${ALLSYNC_FLOCK:-n}" != "y" ]; then exit 1 fi - sec() { echo -e '\e[1;34m==========' "$@" '==========\e[0m' } @@ -108,7 +107,6 @@ fail() { ecode=1 } - sec "Passwords" pass git pull || fail "Passwords pull failed" pass git push || fail "Passwords push failed" diff --git a/local/bin/elektroline-windows b/local/bin/elektroline-windows index 5a13732..26e6228 100755 --- a/local/bin/elektroline-windows +++ b/local/bin/elektroline-windows @@ -9,8 +9,8 @@ fi exec xfreerdp \ "${args[@]}" \ - -decorations /w:1700 /h:1000 \ + -decorations /dynamic-resolution \ /d:ELEKTROLINE /u:kkoci \ /bpp:24 /audio-mode:0 /sound:sys:alsa /network:lan /rfx \ +clipboard /port:3389 \ - /v:elvirt00.elektroline.cz /p:"$(pass elektroline.cz/kkoci)" + /v:czellts.elektroline.cz /p:"$(pass elektroline.cz/kkoci)" diff --git a/local/bin/elektroline00 b/local/bin/elektroline00 index 0d6520b..7a21cd6 100755 --- a/local/bin/elektroline00 +++ b/local/bin/elektroline00 @@ -19,10 +19,17 @@ while getopts "u" opt; do done if [ "$umount" = "n" ]; then + mount_cifs() { + sudo --preserve-env=PASSWD mount.cifs -o username=kkoci,uid=1000 "$1" "$path/$2" + echo "Mounted $path/$2" + } + sudo mkdir -p "$path" - sudo mount.cifs -o username=kkoci,uid=1000 "//czelldata.elektroline.cz/Share" "$path" - #sudo mount.cifs -o username=kkoci "//Elektroline00/company" "$path/company" - #sudo mount.cifs -o username=kkoci "//Elektroline00/elektro_doc" "$path/elektro_doc" + export PASSWD + PASSWD="$(pass elektroline.cz/kkoci)" + mount_cifs "//czelldata.elektroline.cz/Share" "share" + mount_cifs "//10.0.0.3/company" "company" + mount_cifs "//10.0.0.3/elektro_doc" "elektro_doc" else - sudo umount "$path" + sudo umount "$path"/{share,company,elektro_doc} fi diff --git a/local/bin/new-flake-dev b/local/bin/new-flake-dev index 2c4a280..360a94e 100755 --- a/local/bin/new-flake-dev +++ b/local/bin/new-flake-dev @@ -6,24 +6,32 @@ if [ -f ./flake.nix ]; then fi cat >./flake.nix <<"EOF" { - outputs = { self, nixpkgs, flake-utils, personal }: - with flake-utils.lib; - eachDefaultSystem (system: let - pkgs = nixpkgs.legacyPackages.${system}; + outputs = { + self, + systems, + nixpkgs, + }: let + inherit (nixpkgs.lib) genAttrs; + forSystems = genAttrs (import systems); + withPkgs = func: forSystems (system: func self.legacyPackages.${system}); in { - devShells = filterPackages system { - default = pkgs.mkShell { - packages = with pkgs; [ - clang-tools - gcc gdb pkg-config - cppcheck flawfinder bear - meson - ]; - inputsFrom = with pkgs; [ - personal.devShells.${system}.default - ]; - }; - }; - }); + devShells = withPkgs (pkgs: { + default = with pkgs; + mkShell { + packages = [ + # TODO development packages + ]; + inputsFrom = [ + # TODO other packages development is done for + ]; + }; + }); + + formatter = withPkgs (pkgs: pkgs.alejandra); + + legacyPackages = + forSystems (system: + nixpkgs.legacyPackages.${system}.extend self.overlays.default); + }; } EOF diff --git a/local/bin/project-test b/local/bin/project-test index e8c6261..feab447 100755 --- a/local/bin/project-test +++ b/local/bin/project-test @@ -15,21 +15,21 @@ print_help() { while [ -n "$1" ]; do case $1 in - -r|--ref) - shift - REF=$1 - ;; - -c|--count) - shift - REF=HEAD~$1 - ;; - --) - shift - break - ;; - *) - break - ;; + -r | --ref) + shift + REF=$1 + ;; + -c | --count) + shift + REF=HEAD~$1 + ;; + --) + shift + break + ;; + *) + break + ;; esac shift done diff --git a/local/share/applications/elektroline-windows.desktop b/local/share/applications/elektroline-windows.desktop new file mode 100755 index 0000000..9b488a9 --- /dev/null +++ b/local/share/applications/elektroline-windows.desktop @@ -0,0 +1,6 @@ +[Desktop Entry] +Version=1.0 +Name=Elektroline Windows +Exec="/home/cynerd/.local/bin/elektroline-windows" %U +Terminal=false +Type=Application diff --git a/private b/private -Subproject 12dce134d62a4651e93a5b68099c3b4e4c5a856 +Subproject f2f279e7aa71f2b72f34ad8ec5100725d24d8b9 @@ -19,6 +19,12 @@ for profile in "$HOME"/.nix-profile/etc/profile.d/*; do source "$profile" done +# Guix +export GUIX_PROFILE="/home/cynerd/.guix-profile" +if [[ -d "$GUIX_PROFILE" ]]; then + source "$GUIX_PROFILE/etc/profile" +fi + # Rest of the profile run only if login is from linux console [[ "$(tty)" != /dev/tty* ]] && return diff --git a/utils/ask b/utils/ask new file mode 100644 index 0000000..4b47c7e --- /dev/null +++ b/utils/ask @@ -0,0 +1,24 @@ +# vim: ft=sh + +# Ask if given section should be installed +# First argument is name (take care not to use special characters for regulard +# expression) and second argument is a question +ask() { + local ignore_file + ignore_file=".ignore-$(hostname)" + [ -f "$ignore_file" ] && grep -q "^$1$" "$ignore_file" && return 1 + if $FORCE; then + echo "\e[1;34m$2\e[0m" + # Fall trough with 0 exit (always yes) + else + echo -e -n "\e[1;34m$2? (Y/n) \e[0m" + local reply + read -r reply + echo "$reply" | grep -qE '^[Yy]?$' + fi +} + +# Check if command is available +hascmd() { + command -v "$1" >/dev/null 2>&1 +} diff --git a/utils/guix b/utils/guix new file mode 100644 index 0000000..bbfb8e5 --- /dev/null +++ b/utils/guix @@ -0,0 +1,16 @@ +# Functions used for interactive installation of new changes to running system +# vim: ft=sh + +guix_install() { + local installed + installed="$(guix package --list-installed)" + local -a toinstall + for pkg in "$@"; do + if awk -v ec=0 -v "PKG=$pkg" '$1 == PKG { ec = 1; } END { exit ec; }' <<<"$installed"; then + toinstall+=("$pkg") + fi + done + if [[ "${#toinstall[@]}" -gt 0 ]]; then + guix install "${toinstall[@]}" + fi +} @@ -1,45 +1,29 @@ # Functions used for interactive installation of new changes to running system # vim: ft=sh -# Ask if given section should be installed -# First argument is name (take care not to use special characters for regulard -# expression) and second argument is a question -ask() { - local ignore_file=".ignore-$(hostname)" - [ -f "$ignore_file" ] && grep -q "^$1$" "$ignore_file" && return 1 - if $FORCE; then - echo "\e[1;34m$2\e[0m" - # Fall trough with 0 exit (always yes) - else - echo -e -n "\e[1;34m$2? (Y/n) \e[0m" - local reply - read -r reply - echo "$reply" | grep -qE '^[Yy]?$' - fi -} - dodiff() { + local out if [ -d "$2" ]; then # If we just copying some file to directory - OUT=$2/$(basename "$1") + out="$2/$(basename "$1")" else - OUT=$2 + out="$2" fi - if ! [ -f "$OUT" ]; then - echo -e "\e[1;33mNot installed:\e[0m $1 => $OUT" + if ! [ -f "$out" ]; then + echo -e "\e[1;33mNot installed:\e[0m $1 => $out" if ask "Install?"; then - doinst "$1" "$OUT" + doinst "$1" "$out" fi return fi - if cmp "$1" "$OUT" >/dev/null 2>&1; then - echo -e "\e[1;32mNo difference detected:\e[0m $OUT" + if cmp "$1" "$out" >/dev/null 2>&1; then + echo -e "\e[1;32mNo difference detected:\e[0m $out" return fi if $FORCE; then - doinst "$1" "$OUT" + doinst "$1" "$out" else - nvim -d "$1" "$OUT" + nvim -d "$1" "$out" fi } @@ -48,11 +32,12 @@ dodiff() { # commands not on deployed tree but on tree in this repository, so we need specify # work tree on command line every time we want target deployed work tree. gitrepo_relink() { - local GITD="gitdir: $PWD/.git$(sed "s/^gitdir: [./]*git//" "$1")" + local gitdir + gitdir="gitdir: $PWD/.git$(sed "s/^gitdir: [./]*git//" "$1")" # We check that we are pointing to correct path just because of making message correct - if ! grep -q "$GITD" "$2"; then + if ! grep -q "$gitdir" "$2"; then echo -e "\e[1;34mPointing git repository $2 to this repository\e[0m" - echo "$GITD" > "$2" + echo "$gitdir" >"$2" fi # else probably not a git repository or who knows. } @@ -69,12 +54,12 @@ checkdiff() { exit 1 fi # Got trough all files ignoring git repositories - for f in `find "$1" \( -type d -exec test -e '{}'/.git \; \) -prune -o -type f -print`; do + for f in $(find "$1" \( -type d -exec test -e '{}'/.git \; \) -prune -o -type f -print); do F="${f#$1}" dodiff "$1/$F" "$2/$F" done # Check if we have all directories ignoring those in git repositories - for d in `find "$1" -type d -print -exec test -e '{}'/.git \; -prune`; do + for d in $(find "$1" -type d -print -exec test -e '{}'/.git \; -prune); do D="${d#$1}" if [ ! -d "$2/$D" ]; then echo -e "\e[1;33mDirectory not installed:\e[0m $1/$D => $2/$D" @@ -84,7 +69,7 @@ checkdiff() { fi done # Now checkout git repositories - for g in `find "$1" -type d -exec test -e '{}'/.git \; -print -prune`; do + for g in $(find "$1" -type d -exec test -e '{}'/.git \; -print -prune); do G="$2/${g#$1}" gitrepo_relink "$g/.git" "$G/.git" # Always reling .git just to be sure PREV="$(pwd)" @@ -111,13 +96,13 @@ doinst() { mkdir -p "$(dirname "$2")" rsync -rlpt $1 $2 # Now edit all .git files in target directory - for g in `find "$1" -name '.git' -type f`; do + for g in $(find "$1" -name '.git' -type f); do gitrepo_relink "$g" "$2/${g#$1}" done } inst() { - if [ ! -e "$1" ]; then + if [ ! -e "$1" ]; then echo "Missing file to be installed: $1" >&2 fi if [ -e "$2" ]; then |
