From 15cf8bc5665b4d7e4265cc1973d9f1fed9d76d0e Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Thu, 23 Oct 2025 16:26:04 +0200 Subject: [PATCH 01/28] Set up nix formatter and language server --- .config/nvim/after/plugin/conform.lua | 1 + .config/nvim/after/plugin/lspconfig.lua | 1 + .config/nvim/flake.nix | 2 ++ 3 files changed, 4 insertions(+) diff --git a/.config/nvim/after/plugin/conform.lua b/.config/nvim/after/plugin/conform.lua index 35045ce..e8ba607 100644 --- a/.config/nvim/after/plugin/conform.lua +++ b/.config/nvim/after/plugin/conform.lua @@ -15,6 +15,7 @@ require("conform").setup({ html = { "prettierd", "prettier", stop_after_first = true }, lua = { "stylua" }, -- configured in stylua.toml markdown = { "prettierd", "prettier", stop_after_first = true }, + nix = { "nixfmt" }, javascript = { "prettierd", "prettier", stop_after_first = true }, javascriptreact = { "prettierd", "prettier", stop_after_first = true }, json = { "prettierd", "prettier", stop_after_first = true }, diff --git a/.config/nvim/after/plugin/lspconfig.lua b/.config/nvim/after/plugin/lspconfig.lua index 16e37dd..7624ba6 100644 --- a/.config/nvim/after/plugin/lspconfig.lua +++ b/.config/nvim/after/plugin/lspconfig.lua @@ -36,6 +36,7 @@ local servers = { }, lua_ls = {}, -- marksman = {}, + nixd = {}, pyright = {}, -- tsserver = {}, svelte = { diff --git a/.config/nvim/flake.nix b/.config/nvim/flake.nix index 894fa9a..22a4e6a 100644 --- a/.config/nvim/flake.nix +++ b/.config/nvim/flake.nix @@ -68,6 +68,8 @@ tree-sitter ormolu nodePackages.prettier + nixd + nixfmt prettierd shellcheck-minimal stylua From 608a3bc72507e6ddff057a4316562f4cc4a8eaa8 Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Thu, 23 Oct 2025 16:52:23 +0200 Subject: [PATCH 02/28] Remove taskwarrior related neovim stuff --- .config/nvim/after/plugin/taskwiki.vim.lua | 6 ------ .config/nvim/after/syntax/pandoc.lua | 7 ------- .config/nvim/lua/plug.lua | 1 - .config/nvim/snips/pandoc.lua | 4 ---- 4 files changed, 18 deletions(-) delete mode 100644 .config/nvim/after/plugin/taskwiki.vim.lua diff --git a/.config/nvim/after/plugin/taskwiki.vim.lua b/.config/nvim/after/plugin/taskwiki.vim.lua deleted file mode 100644 index 8f64eff..0000000 --- a/.config/nvim/after/plugin/taskwiki.vim.lua +++ /dev/null @@ -1,6 +0,0 @@ -vim.cmd([[ -let g:taskwiki_taskrc_location='/home/h/.config/task/taskrc' -let g:taskwiki_disable_concealcursor=1 -let g:taskwiki_dont_preserve_folds=1 -let g:taskwiki_dont_fold=1 -]]) diff --git a/.config/nvim/after/syntax/pandoc.lua b/.config/nvim/after/syntax/pandoc.lua index 198286b..d8d9f4b 100644 --- a/.config/nvim/after/syntax/pandoc.lua +++ b/.config/nvim/after/syntax/pandoc.lua @@ -14,13 +14,6 @@ syn match Cloze /\({{c\d\+::\)\@<=\(\_[A-Za-z0-9$\ \\\-\*,_`()]*\)\(}}\)\@=/ con hi! link ClozeDelimiter Special hi! link Cloze Special - -" Fix task UUIDs not being highlighted correctly in pandoc lists -syn match pandocUListItem /^>\=\s*[*+-]\s\+-\@!.*$/ nextgroup=pandocUListItem,pandocLaTeXMathBlock,pandocLaTeXInlineMath,pandocEscapedDollar,pandocDelimitedCodeBlock,pandocListItemContinuation contains=@Spell,pandocEmphasis,pandocStrong,pandocNoFormatted,pandocStrikeout,pandocSubscript,pandocSuperscript,pandocStrongEmphasis,pandocStrongEmphasis,pandocPCite,pandocICite,pandocCiteKey,pandocReferenceLabel,pandocLaTeXCommand,pandocLaTeXMathBlock,pandocLaTeXInlineMath,pandocEscapedDollar,pandocReferenceURL,pandocAutomaticLink,pandocFootnoteDef,pandocFootnoteBlock,pandocFootnoteID,pandocAmpersandEscape,TaskWikiTaskUuid skipempty display -syn match TaskWikiTaskUuid containedin=TaskWikiTask /\v#([A-Z]:)?[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/ -syn match TaskWikiTaskUuid containedin=TaskWikiTask /\v#([A-Z]:)?[0-9a-fA-F]{8}$/ -highlight link TaskWikiTaskUuid Comment - ]]) vim.cmd.runtime("syntax/_comment_keywords.lua") diff --git a/.config/nvim/lua/plug.lua b/.config/nvim/lua/plug.lua index a7df64c..401554a 100644 --- a/.config/nvim/lua/plug.lua +++ b/.config/nvim/lua/plug.lua @@ -12,7 +12,6 @@ Plug 'quarto-dev/quarto-vim' Plug 'lervag/vimtex' " Wiki Plug 'lervag/wiki.vim' -Plug 'hektor/taskwiki' " Markdown Plug 'vim-pandoc/vim-pandoc' Plug 'vim-pandoc/vim-pandoc-syntax' diff --git a/.config/nvim/snips/pandoc.lua b/.config/nvim/snips/pandoc.lua index 4bc29bf..aa21805 100644 --- a/.config/nvim/snips/pandoc.lua +++ b/.config/nvim/snips/pandoc.lua @@ -700,10 +700,6 @@ local fmta = require("luasnip.extras.fmt").fmta -- \`\`\` -- endsnippet -- --- snippet task "Task" i --- * [ ] $1 -- pro:$2 --- endsnippet --- -- snippet "(\b)fn(\d+)" "" ir -- `!p snip.rv = snip.basename + "_" + match.group(2).zfill(2)`$1 -- endsnippet From a737b50284ad908cd08f24c288ba1a054de675b6 Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Fri, 24 Oct 2025 10:11:53 +0200 Subject: [PATCH 03/28] Update 'git-cb' script --- .bin/git-cb | 243 ++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 187 insertions(+), 56 deletions(-) diff --git a/.bin/git-cb b/.bin/git-cb index 2cac05d..ae03b57 100755 --- a/.bin/git-cb +++ b/.bin/git-cb @@ -1,25 +1,110 @@ #!/usr/bin/env bash +set -euo pipefail -types=( - "feature For new features" - "bugfix For bug fixes" +readonly ALLOWED_MAIN_BRANCHES=("main" "master" "develop") +readonly BRANCH_TYPES=( + "feat For new features" "hotfix For urgent fixes" + "fix For fixes" "release For preparing releases" "chore For non-code tasks" ) -selected=$(printf '%s\n' "${types[@]}" | fzf --prompt="Select branch type: ") || exit 1 -type=${selected%% *} +error() { + echo "Error: $1" >&2 + exit 1 +} -echo "Fetching Jira tickets..." -jira_data=$(jira issue list --assignee=hektor.misplon@rightcrowd.com --order-by=priority --plain --no-headers 2>/dev/null) +warn() { + echo "Warning: $1" >&2 +} -if [[ $? -ne 0 || -z "$jira_data" ]]; then - echo "Warning: Could not fetch Jira tickets or no tickets found." - echo "Proceeding without ticket ID..." - ticket_id="" -else - # Create formatted list for fzf: "TICKET-123 - Issue description" +check_dependencies() { + local missing=() + for cmd in git fzf; do + if ! command -v "$cmd" &> /dev/null; then + missing+=("$cmd") + fi + done + + if [[ ${#missing[@]} -gt 0 ]]; then + error "Missing required commands: ${missing[*]}" + fi +} + +check_git_repo() { + if ! git rev-parse --git-dir &> /dev/null; then + error "Not in a git repository" + fi +} + +check_current_branch() { + local current_branch + current_branch=$(git branch --show-current) + + local is_main_branch=false + for branch in "${ALLOWED_MAIN_BRANCHES[@]}"; do + if [[ "$current_branch" == "$branch" ]]; then + is_main_branch=true + break + fi + done + + if [[ "$is_main_branch" == false ]]; then + warn "Not branching from a main branch (current: $current_branch)" + read -rp "Continue anyway? [y/N] " response + if [[ ! "$response" =~ ^[Yy]$ ]]; then + exit 0 + fi + fi +} + +get_user_email() { + local email + email=$(git config --get user.email 2>/dev/null) + + if [[ -z "$email" ]]; then + error "Git user email not configured. Run: git config user.email 'your@email.com'" + fi + + echo "$email" +} + +select_branch_type() { + local selected + selected=$(printf '%s\n' "${BRANCH_TYPES[@]}" | \ + fzf --prompt="Select branch type: " \ + --height=40% \ + --border \ + --info=inline) || error "Branch type selection cancelled" + + echo "${selected%% *}" +} + +select_jira_ticket() { + local email=$1 + + if ! command -v jira &> /dev/null; then + warn "Jira CLI not found. Proceeding without ticket ID." + return 0 + fi + + echo "Fetching Jira tickets for $email..." >&2 + local jira_data + jira_data=$(jira issue list --assignee="$email" --order-by=priority --plain --no-headers 2>/dev/null) || { + warn "Could not fetch Jira tickets. Proceeding without ticket ID." + return 0 + } + + if [[ -z "$jira_data" ]]; then + warn "No Jira tickets found. Proceeding without ticket ID." + return 0 + fi + + echo "$jira_data" >&2 + echo "" >&2 + + local formatted_tickets formatted_tickets=$(echo "$jira_data" | awk '{ ticket_id = $2 $1 = $2 = "" @@ -32,59 +117,105 @@ else }') if [[ -z "$formatted_tickets" ]]; then - echo "No tickets found. Proceeding without ticket ID..." - ticket_id="" - else - # Let user select a ticket or skip - echo "" - selected_ticket=$(echo -e "SKIP - Create branch without ticket ID\n$formatted_tickets" | \ - fzf --prompt="Select Jira ticket (or skip): " --height=40%) || exit 1 - - if [[ "$selected_ticket" == "SKIP"* ]]; then - ticket_id="" - else - ticket_id=${selected_ticket%% -*} - fi + warn "No tickets to display. Proceeding without ticket ID." + return 0 fi -fi -editor="${EDITOR:-vi}" -tmpfile=$(mktemp) + local selected_ticket + selected_ticket=$(echo -e "SKIP - Create branch without ticket ID\n$formatted_tickets" | \ + fzf --prompt="Select Jira ticket (or skip): " \ + --height=40% \ + --border \ + --info=inline) || error "Ticket selection cancelled" -if [[ -n "$ticket_id" ]]; then - cat > "$tmpfile" << EOF + if [[ "$selected_ticket" != "SKIP"* ]]; then + echo "${selected_ticket%% -*}" + fi +} + +get_branch_description() { + local ticket_id=$1 + local editor="${EDITOR:-vi}" + local tmpfile + tmpfile=$(mktemp) + + trap "rm -f '$tmpfile'" EXIT + + if [[ -n "$ticket_id" ]]; then + cat > "$tmpfile" << EOF # Selected ticket: $ticket_id -# Enter your branch description below in kebab case (e.g. \`my-description\`): +# Enter your branch description below in kebab-case (e.g., my-description): # The ticket ID will be automatically included in the branch name. +# Lines starting with # will be ignored. + EOF -else - cat > "$tmpfile" << 'EOF' -# Enter your branch description below in kebab case (e.g. `my-description`): + else + cat > "$tmpfile" << 'EOF' +# Enter your branch description below in kebab-case (e.g., my-description): +# Lines starting with # will be ignored. + EOF -fi + fi + + "$editor" "$tmpfile" < /dev/tty > /dev/tty -"$editor" "$tmpfile" + local desc + desc=$(grep -v '^#' "$tmpfile" | tr -d '\n' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//') -desc=$(grep -v '^#' "$tmpfile" | tr -d '\n' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//') -rm "$tmpfile" + echo "$desc" +} -if [[ -z "$desc" ]]; then - echo "No description provided." - exit 1 -fi +validate_description() { + local desc=$1 -if [[ ! "$desc" =~ ^[a-z0-9]+(-[a-z0-9]+)*$ ]]; then - echo "Invalid branch description format." - echo "Use lowercase letters, numbers, and hyphens only." - echo "No trailing or consecutive hyphens allowed." - exit 1 -fi + if [[ -z "$desc" ]]; then + error "No description provided" + fi -if [[ -n "$ticket_id" ]]; then - branch="$type/$ticket_id-$desc" -else - branch="$type/$desc" -fi + if [[ ! "$desc" =~ ^[a-z0-9]+(-[a-z0-9]+)*$ ]]; then + error "Invalid branch description format.\nUse lowercase letters, numbers, and hyphens only.\nNo trailing or consecutive hyphens allowed.\nExample: my-feature-description" + fi +} -echo "Creating branch: $branch" -git checkout -b "$branch" +create_branch() { + local type=$1 + local ticket_id=$2 + local desc=$3 + + local branch + if [[ -n "$ticket_id" ]]; then + branch="$type/$ticket_id-$desc" + else + branch="$type/$desc" + fi + + if git show-ref --verify --quiet "refs/heads/$branch"; then + error "Branch '$branch' already exists" + fi + + echo "" + echo "Creating branch: $branch" + git checkout -b "$branch" +} + +main() { + check_dependencies + check_git_repo + check_current_branch + + local email + email=$(get_user_email) + + local type + type=$(select_branch_type) + + echo "About to call select_jira_ticket" >&2 + local ticket_id="" + ticket_id=$(select_jira_ticket "$email") + local desc + desc=$(get_branch_description "$ticket_id") + validate_description "$desc" + create_branch "$type" "$ticket_id" "$desc" +} + +main "$@" From 84e0c7f7003b0b2880bdc7245dfdec4c32bb1ef3 Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Sun, 26 Oct 2025 20:18:53 +0100 Subject: [PATCH 04/28] Move firefox (with addons) into Nix home manager flake --- .config/firefox/setup | 5 - .config/firefox/user.js | 15 --- .config/home-manager/flake.lock | 105 ++++++++++++++++++-- .config/home-manager/flake.nix | 8 +- .config/home-manager/hosts/work/default.nix | 73 +++++++++++++- 5 files changed, 175 insertions(+), 31 deletions(-) delete mode 100755 .config/firefox/setup delete mode 100644 .config/firefox/user.js diff --git a/.config/firefox/setup b/.config/firefox/setup deleted file mode 100755 index 9495b09..0000000 --- a/.config/firefox/setup +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -for i in ~/.mozilla/firefox/*.*default* - do ln -s "$XDG_CONFIG_HOME"/firefox/user.js "$i/user.js" -done diff --git a/.config/firefox/user.js b/.config/firefox/user.js deleted file mode 100644 index 52b8b5f..0000000 --- a/.config/firefox/user.js +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Note: has to be symlinked to profile directories for your - * firefox release - * - * E.g. - * - * ```sh - * ln -s user.js ~/.mozilla/firefox/*.default-release/user.js - * ``` - * Or check out the `setup` script - * - */ - -// Set default download directory -user_pref("browser.download.dir", "/home/h/dl"); diff --git a/.config/home-manager/flake.lock b/.config/home-manager/flake.lock index 0772058..f8c2b0a 100644 --- a/.config/home-manager/flake.lock +++ b/.config/home-manager/flake.lock @@ -1,5 +1,45 @@ { "nodes": { + "firefox-addons": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "dir": "pkgs/firefox-addons", + "lastModified": 1761478231, + "narHash": "sha256-a6ROM73M0TSrooI+8/UMj5KWKOdaDFTycVeo8XJ3dk4=", + "owner": "rycee", + "repo": "nur-expressions", + "rev": "ae968708476302f8781fb5e245d53f112ed04111", + "type": "gitlab" + }, + "original": { + "dir": "pkgs/firefox-addons", + "owner": "rycee", + "repo": "nur-expressions", + "type": "gitlab" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -7,11 +47,11 @@ ] }, "locked": { - "lastModified": 1756991914, - "narHash": "sha256-4ve/3ah5H/SpL2m3qmZ9GU+VinQYp2MN1G7GamimTds=", + "lastModified": 1761512215, + "narHash": "sha256-QLL3lqw4eDYP8D6gmjX0rFBfg1tMcosGGvHXckb6aQE=", "owner": "nix-community", "repo": "home-manager", - "rev": "b08f8737776f10920c330657bee8b95834b7a70f", + "rev": "2a9969b39c7f5f1dfbf5c5f1ca97151b40a1d36d", "type": "github" }, "original": { @@ -20,13 +60,47 @@ "type": "github" } }, + "nixgl": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1752054764, + "narHash": "sha256-Ob/HuUhANoDs+nvYqyTKrkcPXf4ZgXoqMTQoCK0RFgQ=", + "owner": "nix-community", + "repo": "nixGL", + "rev": "a8e1ce7d49a149ed70df676785b07f63288f53c5", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixGL", + "type": "github" + } + }, "nixpkgs": { "locked": { - "lastModified": 1756787288, - "narHash": "sha256-rw/PHa1cqiePdBxhF66V7R+WAP8WekQ0mCDG4CFqT8Y=", + "lastModified": 1746378225, + "narHash": "sha256-OeRSuL8PUjIfL3Q0fTbNJD/fmv1R+K2JAOqWJd3Oceg=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d0fc30899600b9b3466ddb260fd83deb486c32f1", + "rev": "93e8cdce7afc64297cfec447c311470788131cd9", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1761373498, + "narHash": "sha256-Q/uhWNvd7V7k1H1ZPMy/vkx3F8C13ZcdrKjO7Jv7v0c=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "6a08e6bb4e46ff7fcbb53d409b253f6bad8a28ce", "type": "github" }, "original": { @@ -38,8 +112,25 @@ }, "root": { "inputs": { + "firefox-addons": "firefox-addons", "home-manager": "home-manager", - "nixpkgs": "nixpkgs" + "nixgl": "nixgl", + "nixpkgs": "nixpkgs_2" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" } } }, diff --git a/.config/home-manager/flake.nix b/.config/home-manager/flake.nix index 22021d2..ad9715a 100644 --- a/.config/home-manager/flake.nix +++ b/.config/home-manager/flake.nix @@ -6,8 +6,12 @@ inputs.nixpkgs.follows = "nixpkgs"; }; nixgl.url = "github:nix-community/nixGL"; + firefox-addons = { + url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; - outputs = { nixpkgs, home-manager, nixgl, ... }: + outputs = { nixpkgs, home-manager, nixgl, ... }@inputs: let lib = nixpkgs.lib; system = "x86_64-linux"; @@ -21,7 +25,7 @@ work = home-manager.lib.homeManagerConfiguration { inherit pkgs; extraSpecialArgs = { - inherit nixgl; + inherit inputs; }; modules = [ ./hosts/work ]; }; diff --git a/.config/home-manager/hosts/work/default.nix b/.config/home-manager/hosts/work/default.nix index d8678db..6e2b236 100644 --- a/.config/home-manager/hosts/work/default.nix +++ b/.config/home-manager/hosts/work/default.nix @@ -1,8 +1,13 @@ -{ pkgs, config, nixgl, ... }: +{ + pkgs, + config, + inputs, + ... +}: { nixGL = { - packages = nixgl.packages; + packages = inputs.nixgl.packages; defaultWrapper = "mesa"; }; @@ -10,6 +15,70 @@ home.homeDirectory = "/home/hektor"; home.stateVersion = "25.05"; + programs.firefox = { + enable = true; + nativeMessagingHosts = with pkgs; [ + tridactyl-native + ]; + policies = { + DefaultDownloadDirectory = "\${home}/dl"; + }; + profiles = { + work = { + settings = { + "signon.rememberSignons" = false; + "findbar.highlightAll" = true; + "extensions.autoDisableScopes" = 0; # Enable extensions by default + }; + extensions = { + packages = with inputs.firefox-addons.packages.${pkgs.system}; [ + duckduckgo-privacy-essentials + istilldontcareaboutcookies + libredirect + keepassxc-browser + react-devtools + sponsorblock + tridactyl + ublock-origin + ]; + }; + }; + }; + policies = { + ExtensionSettings = { + "jid1-ZAdIEUB7XOzOJw@jetpack" = { + default_area = "navbar"; + private_browsing = true; + }; + "idcac-pub@guus.ninja" = { + default_area = "navbar"; + private_browsing = true; + }; + "7esoorv3@alefvanoon.anonaddy.me" = { + default_area = "navbar"; + }; + "keepassxc-browser@keepassxc.org" = { + default_area = "navbar"; + private_browsing = true; + }; + "@react-devtools" = { + default_area = "navbar"; + private_browsing = true; + }; + "sponsorBlocker@ajay.app" = { + default_area = "navbar"; + private_browsing = true; + }; + "tridactyl.vim@cmcaine.co.uk".settings = { + private_browsing = true; + }; + "uBlock0@raymondhill.net".settings = { + default_area = "navbar"; + private_browsing = true; + }; + }; + }; + }; home.packages = import ./packages.nix { inherit pkgs; inherit config; From 5a50aa540f320d1cc5824e14d2976c775ec0fa4b Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Sun, 26 Oct 2025 22:46:15 +0100 Subject: [PATCH 05/28] Improve pomo script --- .bin/pomo | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/.bin/pomo b/.bin/pomo index eb87aa3..393a2e6 100755 --- a/.bin/pomo +++ b/.bin/pomo @@ -14,11 +14,12 @@ from argparse import ArgumentParser from time import sleep from plyer import notification +POMO_PATH = os.path.join(os.getenv("XDG_DATA_HOME", os.path.expanduser("~/.local/share")), "pomo") @atexit.register def clear(): - if os.path.exists('/home/h/.local/share/pomo'): - os.remove('/home/h/.local/share/pomo') + if os.path.exists(POMO_PATH): + os.remove(POMO_PATH) def format_mins_secs(mins, secs): return f"{mins:02d}:{secs:02d}" @@ -30,24 +31,20 @@ def make_countdown(): mins = duration // 60 secs = duration % 60 time_str = format_mins_secs(mins, secs) - os.system(f'echo -n "{time_str}" > /home/h/.local/share/pomo') + os.system(f'echo -n "{time_str}" > {POMO_PATH}') sleep(1) duration -= 1 return countdown def main(args): - prep_duration = args.prep_duration * 60 work_duration = args.work_duration * 60 break_duration = args.break_duration * 60 repeats = args.repeats - prep_countdown = make_countdown() work_countdown = make_countdown() break_countdown = make_countdown() - prep_countdown(prep_duration) - while repeats != 0: notification.notify(title="Get started") work_countdown(work_duration) From 292a2883be914df9826b18db8f017e08e976fe00 Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Mon, 27 Oct 2025 23:56:29 +0100 Subject: [PATCH 06/28] Declare bookmarks in firefox toolbar --- .config/home-manager/hosts/work/default.nix | 27 +++++++++++++++++++++ .config/kitty/kitty.conf | 4 ++- .config/kitty/nvim.conf | 8 ++++++ 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 .config/kitty/nvim.conf diff --git a/.config/home-manager/hosts/work/default.nix b/.config/home-manager/hosts/work/default.nix index 6e2b236..a631002 100644 --- a/.config/home-manager/hosts/work/default.nix +++ b/.config/home-manager/hosts/work/default.nix @@ -42,6 +42,33 @@ ublock-origin ]; }; + bookmarks = { + force = true; + settings = [ + { + toolbar = true; + bookmarks = [ + { + name = "NixOS"; + bookmarks = [ + { + name = "wiki"; + url = "https://wiki.nixos.org/wiki/NixOS_Wiki"; + } + { + name = "packages"; + url = "https://search.nixos.org/packages"; + } + { + name = "options"; + url = "https://search.nixos.org/options"; + } + ]; + } + ]; + } + ]; + }; }; }; policies = { diff --git a/.config/kitty/kitty.conf b/.config/kitty/kitty.conf index e2b912f..6022dd6 100644 --- a/.config/kitty/kitty.conf +++ b/.config/kitty/kitty.conf @@ -21,7 +21,9 @@ enable_audio_bell no # Scrollback -scrollback_lines 16384 +scrollback_lines 8192 scrollback_pager nvimpager +scrollback_pager_history_size 1024 include ./themes/zenwritten_light.conf +include ./nvim.conf diff --git a/.config/kitty/nvim.conf b/.config/kitty/nvim.conf new file mode 100644 index 0000000..a1e4996 --- /dev/null +++ b/.config/kitty/nvim.conf @@ -0,0 +1,8 @@ +allow_remote_control socket-only +listen_on unix:/tmp/kitty +shell_integration enabled + +action_alias kitty_scrollback_nvim kitten /home/hektor/.local/share/nvim/site/pack/paqs/start/kitty-scrollback.nvim/python/kitty_scrollback_nvim.py +map kitty_mod+h kitty_scrollback_nvim +map kitty_mod+g kitty_scrollback_nvim --config ksb_builtin_last_cmd_output +mouse_map ctrl+shift+right press ungrabbed combine : mouse_select_command_output : kitty_scrollback_nvim --config ksb_builtin_last_visited_cmd_output From 01264a395dec61d9f28709afd3063ca161af40d7 Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Tue, 28 Oct 2025 00:18:10 +0100 Subject: [PATCH 07/28] Move git & neovim into Nix home manager flake --- .config/home-manager/hosts/work/default.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.config/home-manager/hosts/work/default.nix b/.config/home-manager/hosts/work/default.nix index a631002..9979a6e 100644 --- a/.config/home-manager/hosts/work/default.nix +++ b/.config/home-manager/hosts/work/default.nix @@ -106,6 +106,14 @@ }; }; }; + programs.git.enable = true; + programs.neovim = { + enable = true; + defaultEditor = true; + viAlias = true; + vimAlias = true; + vimdiffAlias = true; + }; home.packages = import ./packages.nix { inherit pkgs; inherit config; From 966065dd301be6761fc2b0b89332963d716867e5 Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Tue, 28 Oct 2025 00:19:28 +0100 Subject: [PATCH 08/28] Format home manager flake (nixfmt) --- .config/home-manager/flake.nix | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.config/home-manager/flake.nix b/.config/home-manager/flake.nix index ad9715a..1f2482c 100644 --- a/.config/home-manager/flake.nix +++ b/.config/home-manager/flake.nix @@ -11,7 +11,13 @@ inputs.nixpkgs.follows = "nixpkgs"; }; }; - outputs = { nixpkgs, home-manager, nixgl, ... }@inputs: + outputs = + { + nixpkgs, + home-manager, + nixgl, + ... + }@inputs: let lib = nixpkgs.lib; system = "x86_64-linux"; @@ -20,7 +26,8 @@ overlays = [ nixgl.overlay ]; config.allowUnfree = true; }; - in { + in + { homeConfigurations = { work = home-manager.lib.homeManagerConfiguration { inherit pkgs; From 783908c5eb2524cb2a562bbd6360d210d16ae929 Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Tue, 28 Oct 2025 11:46:20 +0100 Subject: [PATCH 09/28] Declare anki package in Nix home manager flake --- .config/home-manager/hosts/work/default.nix | 2 ++ .config/home-manager/modules/anki.nix | 3 +++ 2 files changed, 5 insertions(+) create mode 100644 .config/home-manager/modules/anki.nix diff --git a/.config/home-manager/hosts/work/default.nix b/.config/home-manager/hosts/work/default.nix index 9979a6e..b2b7e88 100644 --- a/.config/home-manager/hosts/work/default.nix +++ b/.config/home-manager/hosts/work/default.nix @@ -15,6 +15,8 @@ home.homeDirectory = "/home/hektor"; home.stateVersion = "25.05"; + programs.anki = import ../../modules/anki.nix; + programs.firefox = { enable = true; nativeMessagingHosts = with pkgs; [ diff --git a/.config/home-manager/modules/anki.nix b/.config/home-manager/modules/anki.nix new file mode 100644 index 0000000..7dc2601 --- /dev/null +++ b/.config/home-manager/modules/anki.nix @@ -0,0 +1,3 @@ +{ + enable = true; +} From c605f614457b942a2b1c51097997ef270792533a Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Tue, 28 Oct 2025 11:52:33 +0100 Subject: [PATCH 10/28] Modularize firefox config in Nix home manager flake --- .config/home-manager/hosts/work/default.nix | 95 +-------------------- .config/home-manager/modules/firefox.nix | 93 ++++++++++++++++++++ 2 files changed, 97 insertions(+), 91 deletions(-) create mode 100644 .config/home-manager/modules/firefox.nix diff --git a/.config/home-manager/hosts/work/default.nix b/.config/home-manager/hosts/work/default.nix index b2b7e88..5e34819 100644 --- a/.config/home-manager/hosts/work/default.nix +++ b/.config/home-manager/hosts/work/default.nix @@ -16,98 +16,11 @@ home.stateVersion = "25.05"; programs.anki = import ../../modules/anki.nix; - - programs.firefox = { - enable = true; - nativeMessagingHosts = with pkgs; [ - tridactyl-native - ]; - policies = { - DefaultDownloadDirectory = "\${home}/dl"; - }; - profiles = { - work = { - settings = { - "signon.rememberSignons" = false; - "findbar.highlightAll" = true; - "extensions.autoDisableScopes" = 0; # Enable extensions by default - }; - extensions = { - packages = with inputs.firefox-addons.packages.${pkgs.system}; [ - duckduckgo-privacy-essentials - istilldontcareaboutcookies - libredirect - keepassxc-browser - react-devtools - sponsorblock - tridactyl - ublock-origin - ]; - }; - bookmarks = { - force = true; - settings = [ - { - toolbar = true; - bookmarks = [ - { - name = "NixOS"; - bookmarks = [ - { - name = "wiki"; - url = "https://wiki.nixos.org/wiki/NixOS_Wiki"; - } - { - name = "packages"; - url = "https://search.nixos.org/packages"; - } - { - name = "options"; - url = "https://search.nixos.org/options"; - } - ]; - } - ]; - } - ]; - }; - }; - }; - policies = { - ExtensionSettings = { - "jid1-ZAdIEUB7XOzOJw@jetpack" = { - default_area = "navbar"; - private_browsing = true; - }; - "idcac-pub@guus.ninja" = { - default_area = "navbar"; - private_browsing = true; - }; - "7esoorv3@alefvanoon.anonaddy.me" = { - default_area = "navbar"; - }; - "keepassxc-browser@keepassxc.org" = { - default_area = "navbar"; - private_browsing = true; - }; - "@react-devtools" = { - default_area = "navbar"; - private_browsing = true; - }; - "sponsorBlocker@ajay.app" = { - default_area = "navbar"; - private_browsing = true; - }; - "tridactyl.vim@cmcaine.co.uk".settings = { - private_browsing = true; - }; - "uBlock0@raymondhill.net".settings = { - default_area = "navbar"; - private_browsing = true; - }; - }; - }; + programs.firefox = import ../../modules/firefox.nix { + inherit inputs; + inherit pkgs; }; + programs.git.enable = true; programs.neovim = { enable = true; diff --git a/.config/home-manager/modules/firefox.nix b/.config/home-manager/modules/firefox.nix new file mode 100644 index 0000000..34c0e52 --- /dev/null +++ b/.config/home-manager/modules/firefox.nix @@ -0,0 +1,93 @@ +{ inputs, pkgs, ... }: + +{ + enable = true; + nativeMessagingHosts = with pkgs; [ + tridactyl-native + ]; + policies = { + DefaultDownloadDirectory = "\${home}/dl"; + }; + profiles = { + work = { + settings = { + "signon.rememberSignons" = false; + "findbar.highlightAll" = true; + "extensions.autoDisableScopes" = 0; # Enable extensions by default + }; + extensions = { + packages = with inputs.firefox-addons.packages.${pkgs.system}; [ + duckduckgo-privacy-essentials + istilldontcareaboutcookies + libredirect + keepassxc-browser + react-devtools + sponsorblock + tridactyl + ublock-origin + ]; + }; + bookmarks = { + force = true; + settings = [ + { + toolbar = true; + bookmarks = [ + { + name = "NixOS"; + bookmarks = [ + { + name = "wiki"; + url = "https://wiki.nixos.org/wiki/NixOS_Wiki"; + } + { + name = "packages"; + url = "https://search.nixos.org/packages"; + } + { + name = "options"; + url = "https://search.nixos.org/options"; + } + ]; + } + ]; + } + ]; + }; + }; + }; + policies = { + ExtensionSettings = { + "jid1-ZAdIEUB7XOzOJw@jetpack" = { + default_area = "navbar"; + private_browsing = true; + }; + "idcac-pub@guus.ninja" = { + default_area = "navbar"; + private_browsing = true; + }; + "7esoorv3@alefvanoon.anonaddy.me" = { + default_area = "navbar"; + }; + "keepassxc-browser@keepassxc.org" = { + default_area = "navbar"; + private_browsing = true; + }; + "@react-devtools" = { + default_area = "navbar"; + private_browsing = true; + }; + "sponsorBlocker@ajay.app" = { + default_area = "navbar"; + private_browsing = true; + }; + "tridactyl.vim@cmcaine.co.uk".settings = { + private_browsing = true; + }; + "uBlock0@raymondhill.net".settings = { + default_area = "navbar"; + private_browsing = true; + }; + }; + }; +} From f42a896d532733823c3033476ff1c8dbfd886fa0 Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Tue, 28 Oct 2025 11:54:40 +0100 Subject: [PATCH 11/28] Modularize neovim & git config in Nix home manager flake --- .config/home-manager/hosts/work/default.nix | 11 ++--------- .config/home-manager/modules/git.nix | 3 +++ .config/home-manager/modules/neovim.nix | 7 +++++++ 3 files changed, 12 insertions(+), 9 deletions(-) create mode 100644 .config/home-manager/modules/git.nix create mode 100644 .config/home-manager/modules/neovim.nix diff --git a/.config/home-manager/hosts/work/default.nix b/.config/home-manager/hosts/work/default.nix index 5e34819..95cb784 100644 --- a/.config/home-manager/hosts/work/default.nix +++ b/.config/home-manager/hosts/work/default.nix @@ -20,15 +20,8 @@ inherit inputs; inherit pkgs; }; - - programs.git.enable = true; - programs.neovim = { - enable = true; - defaultEditor = true; - viAlias = true; - vimAlias = true; - vimdiffAlias = true; - }; + programs.git = import ../../modules/git.nix; + programs.neovim = import ../../modules/neovim.nix; home.packages = import ./packages.nix { inherit pkgs; inherit config; diff --git a/.config/home-manager/modules/git.nix b/.config/home-manager/modules/git.nix new file mode 100644 index 0000000..7dc2601 --- /dev/null +++ b/.config/home-manager/modules/git.nix @@ -0,0 +1,3 @@ +{ + enable = true; +} diff --git a/.config/home-manager/modules/neovim.nix b/.config/home-manager/modules/neovim.nix new file mode 100644 index 0000000..fbd1d69 --- /dev/null +++ b/.config/home-manager/modules/neovim.nix @@ -0,0 +1,7 @@ +{ + enable = true; + defaultEditor = true; + viAlias = true; + vimAlias = true; + vimdiffAlias = true; +} From 165c71a2a4deb916008f4d29e69d384ce4610161 Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Tue, 28 Oct 2025 12:56:59 +0100 Subject: [PATCH 12/28] Declare keepassxc config in Nix home manager flake --- .config/home-manager/hosts/work/default.nix | 1 + .config/home-manager/modules/keepassxc.nix | 4 ++++ 2 files changed, 5 insertions(+) create mode 100644 .config/home-manager/modules/keepassxc.nix diff --git a/.config/home-manager/hosts/work/default.nix b/.config/home-manager/hosts/work/default.nix index 95cb784..29f2e89 100644 --- a/.config/home-manager/hosts/work/default.nix +++ b/.config/home-manager/hosts/work/default.nix @@ -21,6 +21,7 @@ inherit pkgs; }; programs.git = import ../../modules/git.nix; + programs.keepassxc = import ../../modules/keepassxc.nix; programs.neovim = import ../../modules/neovim.nix; home.packages = import ./packages.nix { inherit pkgs; diff --git a/.config/home-manager/modules/keepassxc.nix b/.config/home-manager/modules/keepassxc.nix new file mode 100644 index 0000000..deec1b9 --- /dev/null +++ b/.config/home-manager/modules/keepassxc.nix @@ -0,0 +1,4 @@ +{ + enable = true; + # TODO: https://mynixos.com/home-manager/option/programs.keepassxc.settings +} From 4567ea177b703501e51af51fff78e2b2c58be0c6 Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Tue, 28 Oct 2025 22:13:22 +0100 Subject: [PATCH 13/28] Add 'nixpkgs.follows' to 'nixgl' input in Nix home manager flake --- .config/home-manager/flake.lock | 21 ++++----------------- .config/home-manager/flake.nix | 10 ++++++++-- 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/.config/home-manager/flake.lock b/.config/home-manager/flake.lock index f8c2b0a..b6b1ff3 100644 --- a/.config/home-manager/flake.lock +++ b/.config/home-manager/flake.lock @@ -63,7 +63,9 @@ "nixgl": { "inputs": { "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs" + "nixpkgs": [ + "nixpkgs" + ] }, "locked": { "lastModified": 1752054764, @@ -80,21 +82,6 @@ } }, "nixpkgs": { - "locked": { - "lastModified": 1746378225, - "narHash": "sha256-OeRSuL8PUjIfL3Q0fTbNJD/fmv1R+K2JAOqWJd3Oceg=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "93e8cdce7afc64297cfec447c311470788131cd9", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_2": { "locked": { "lastModified": 1761373498, "narHash": "sha256-Q/uhWNvd7V7k1H1ZPMy/vkx3F8C13ZcdrKjO7Jv7v0c=", @@ -115,7 +102,7 @@ "firefox-addons": "firefox-addons", "home-manager": "home-manager", "nixgl": "nixgl", - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs" } }, "systems": { diff --git a/.config/home-manager/flake.nix b/.config/home-manager/flake.nix index 1f2482c..454cdd7 100644 --- a/.config/home-manager/flake.nix +++ b/.config/home-manager/flake.nix @@ -1,16 +1,22 @@ { inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + nixpkgs = { + url = "github:nixos/nixpkgs/nixos-unstable"; + }; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; - nixgl.url = "github:nix-community/nixGL"; + nixgl = { + url = "github:nix-community/nixGL"; + inputs.nixpkgs.follows = "nixpkgs"; + }; firefox-addons = { url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons"; inputs.nixpkgs.follows = "nixpkgs"; }; }; + outputs = { nixpkgs, From 242d0fe0949125a1a8815c7a75d3f057c3340c8c Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Sat, 1 Nov 2025 23:28:37 +0100 Subject: [PATCH 14/28] Migrate to new Neovim 'lspconfig' version --- .config/nvim/after/plugin/lspconfig.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.config/nvim/after/plugin/lspconfig.lua b/.config/nvim/after/plugin/lspconfig.lua index 7624ba6..6fcded2 100644 --- a/.config/nvim/after/plugin/lspconfig.lua +++ b/.config/nvim/after/plugin/lspconfig.lua @@ -1,7 +1,5 @@ require("neodev").setup() -- should setup before lspconfig -local lspconfig = require("lspconfig") - -- vim.g.coq_settings = { auto_start = 'shut-up' } -- local capabilities = coq.lsp_ensure_capabilities() @@ -104,9 +102,11 @@ local servers = { for server, config in pairs(servers) do config.capabilities = capabilities - lspconfig[server].setup(config) + vim.lsp.config(server, config) end +vim.lsp.enable(vim.tbl_keys(servers)) + vim.api.nvim_create_autocmd("LspAttach", { callback = function(e) local opts = { buffer = e.bufnr } From bb76c9fa3adca3546536866d0d38539ddabdadb5 Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Wed, 29 Oct 2025 12:36:21 +0100 Subject: [PATCH 15/28] Update Nix home manager flake --- .config/home-manager/flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.config/home-manager/flake.lock b/.config/home-manager/flake.lock index b6b1ff3..f60bb84 100644 --- a/.config/home-manager/flake.lock +++ b/.config/home-manager/flake.lock @@ -8,11 +8,11 @@ }, "locked": { "dir": "pkgs/firefox-addons", - "lastModified": 1761478231, - "narHash": "sha256-a6ROM73M0TSrooI+8/UMj5KWKOdaDFTycVeo8XJ3dk4=", + "lastModified": 1761710614, + "narHash": "sha256-uj3jqMdY8fD8d4gE5jzdJKHCXcOrlAedsE+l2C0WaUE=", "owner": "rycee", "repo": "nur-expressions", - "rev": "ae968708476302f8781fb5e245d53f112ed04111", + "rev": "31620aefadf6b2ade64195f7be8554c9a49f6a5b", "type": "gitlab" }, "original": { @@ -47,11 +47,11 @@ ] }, "locked": { - "lastModified": 1761512215, - "narHash": "sha256-QLL3lqw4eDYP8D6gmjX0rFBfg1tMcosGGvHXckb6aQE=", + "lastModified": 1761666354, + "narHash": "sha256-fHr+tIYBJccNF8QWqgowfRmEAtAMSt1deZIRNKL8A7c=", "owner": "nix-community", "repo": "home-manager", - "rev": "2a9969b39c7f5f1dfbf5c5f1ca97151b40a1d36d", + "rev": "ca2ab1d877a24d5a437dad62f56b8b2c02e964e9", "type": "github" }, "original": { From 4d1b84db3c2c31eade284aed0f528566a94079ba Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Mon, 3 Nov 2025 13:19:03 +0100 Subject: [PATCH 16/28] Update gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index c1b7628..a18f3b8 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ log/ # Node npm-debug.log node_modules +.npm-cache # Python *.pyc @@ -68,6 +69,7 @@ Thumbs.db # Kernel Module Compile Results *.mod* +!*.mod*.* *.cmd .tmp_versions/ modules.order From f83d4533207d6cef444b6c0c45b9eea01cfe701e Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Tue, 4 Nov 2025 14:36:28 +0100 Subject: [PATCH 17/28] Use 'dockerfile' filetype for 'containerfiles' --- .config/nvim/lua/ftdetect.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/.config/nvim/lua/ftdetect.lua b/.config/nvim/lua/ftdetect.lua index 3da7b6b..28856c5 100644 --- a/.config/nvim/lua/ftdetect.lua +++ b/.config/nvim/lua/ftdetect.lua @@ -8,5 +8,6 @@ vim.filetype.add({ [".*/%.ssh/config%.d/.*"] = "sshconfig", ["%.env.*"] = "dotenv", ["%.pl$"] = "prolog", + [".*.containerfile.*"] = "dockerfile", }, }) From 38e27e72089fd91efb86f3b549d6b17049ab3cb9 Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Tue, 4 Nov 2025 16:32:05 +0100 Subject: [PATCH 18/28] Set up kitty-scrollback.nvim --- .config/kitty/kitty.conf | 1 - .config/kitty/nvim.conf | 2 +- .config/nvim/after/plugin/auto-session.lua | 4 +++- .config/nvim/after/plugin/kitty-scrollback.nvim.lua | 1 + .config/nvim/lua/paq-setup.lua | 1 + 5 files changed, 6 insertions(+), 3 deletions(-) create mode 100644 .config/nvim/after/plugin/kitty-scrollback.nvim.lua diff --git a/.config/kitty/kitty.conf b/.config/kitty/kitty.conf index 6022dd6..ee37a00 100644 --- a/.config/kitty/kitty.conf +++ b/.config/kitty/kitty.conf @@ -6,7 +6,6 @@ font_size 24.0 # Cursor cursor_shape block cursor_blink_interval 0 -shell_integration no-cursor # Performance tuning diff --git a/.config/kitty/nvim.conf b/.config/kitty/nvim.conf index a1e4996..03f361c 100644 --- a/.config/kitty/nvim.conf +++ b/.config/kitty/nvim.conf @@ -2,7 +2,7 @@ allow_remote_control socket-only listen_on unix:/tmp/kitty shell_integration enabled -action_alias kitty_scrollback_nvim kitten /home/hektor/.local/share/nvim/site/pack/paqs/start/kitty-scrollback.nvim/python/kitty_scrollback_nvim.py +action_alias kitty_scrollback_nvim kitten ~/.local/share/nvim/site/pack/paqs/start/kitty-scrollback.nvim/python/kitty_scrollback_nvim.py map kitty_mod+h kitty_scrollback_nvim map kitty_mod+g kitty_scrollback_nvim --config ksb_builtin_last_cmd_output mouse_map ctrl+shift+right press ungrabbed combine : mouse_select_command_output : kitty_scrollback_nvim --config ksb_builtin_last_visited_cmd_output diff --git a/.config/nvim/after/plugin/auto-session.lua b/.config/nvim/after/plugin/auto-session.lua index c55580d..a61eef6 100644 --- a/.config/nvim/after/plugin/auto-session.lua +++ b/.config/nvim/after/plugin/auto-session.lua @@ -1 +1,3 @@ -require("auto-session").setup({}) +require("auto-session").setup({ + auto_session_enabled = vim.env.KITTY_SCROLLBACK_NVIM ~= "true", -- See kitty-scrollback.nvim +}) diff --git a/.config/nvim/after/plugin/kitty-scrollback.nvim.lua b/.config/nvim/after/plugin/kitty-scrollback.nvim.lua new file mode 100644 index 0000000..b97d0f9 --- /dev/null +++ b/.config/nvim/after/plugin/kitty-scrollback.nvim.lua @@ -0,0 +1 @@ +require("kitty-scrollback").setup() diff --git a/.config/nvim/lua/paq-setup.lua b/.config/nvim/lua/paq-setup.lua index 273f181..708208d 100644 --- a/.config/nvim/lua/paq-setup.lua +++ b/.config/nvim/lua/paq-setup.lua @@ -42,4 +42,5 @@ require("nixCatsUtils.catPacker").setup({ { "zbirenbaum/copilot.lua" }, { "zbirenbaum/copilot-cmp" }, { "qvalentin/helm-ls.nvim", ft = "helm" }, + { "mikesmithgh/kitty-scrollback.nvim" }, }) From 7fd1b351868670fc5604994b1d05b4f66c8de8e5 Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Mon, 3 Nov 2025 23:42:54 +0100 Subject: [PATCH 19/28] Set up lua language server for Neovim --- .config/nvim/after/plugin/lspconfig.lua | 33 ++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/.config/nvim/after/plugin/lspconfig.lua b/.config/nvim/after/plugin/lspconfig.lua index 6fcded2..489feec 100644 --- a/.config/nvim/after/plugin/lspconfig.lua +++ b/.config/nvim/after/plugin/lspconfig.lua @@ -32,7 +32,38 @@ local servers = { }, }, }, - lua_ls = {}, + lua_ls = { + on_init = function(client) + if client.workspace_folders then + local path = client.workspace_folders[1].name + if + path ~= vim.fn.stdpath("config") + and (vim.uv.fs_stat(path .. "/.luarc.json") or vim.uv.fs_stat(path .. "/.luarc.jsonc")) + then + return + end + end + + client.config.settings.Lua = vim.tbl_deep_extend("force", client.config.settings.Lua, { + runtime = { + version = "LuaJIT", + path = { + "lua/?.lua", + "lua/?/init.lua", + }, + }, + workspace = { + checkThirdParty = false, + library = { + vim.env.VIMRUNTIME, + }, + }, + }) + end, + settings = { + Lua = {}, + }, + }, -- marksman = {}, nixd = {}, pyright = {}, From a07473f12517b470a0a27c84e854825530ecea2b Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Tue, 4 Nov 2025 12:45:36 +0100 Subject: [PATCH 20/28] Add lua module snippet --- .config/nvim/snips/lua.lua | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .config/nvim/snips/lua.lua diff --git a/.config/nvim/snips/lua.lua b/.config/nvim/snips/lua.lua new file mode 100644 index 0000000..3ff2f54 --- /dev/null +++ b/.config/nvim/snips/lua.lua @@ -0,0 +1,12 @@ +local ls = require("luasnip") +local s = ls.snippet +local t = ls.text_node +local i = ls.insert_node + +return { + s({ trig = "^M.", regTrig = true, snippetType = "autosnippet" }, { + t("local M = {"), + i(1), + t({ "}", "", "", "return M" }), + }), +} From fa6c4d786b5c3f25929d8b1fce77ef3ce2f45ea8 Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Tue, 4 Nov 2025 13:22:42 +0100 Subject: [PATCH 21/28] Update gitsigns.nvim config --- .config/nvim/after/plugin/gitsigns.nvim.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.config/nvim/after/plugin/gitsigns.nvim.lua b/.config/nvim/after/plugin/gitsigns.nvim.lua index e0839e1..1c3f297 100644 --- a/.config/nvim/after/plugin/gitsigns.nvim.lua +++ b/.config/nvim/after/plugin/gitsigns.nvim.lua @@ -1,8 +1,12 @@ local gitsigns = require("gitsigns") gitsigns.setup({ - current_line_blame_opts = { delay = 0 }, current_line_blame_formatter = ", - ", + linehl = true, + current_line_blame_opts = { + delay = 0, + virt_text_pos = "right_align", + }, }) vim.api.nvim_create_user_command("Blame", gitsigns.toggle_current_line_blame, { nargs = "?" }) From 5d88ea6f1166a2d77f1a611a7000feedbca43953 Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Tue, 4 Nov 2025 23:31:13 +0100 Subject: [PATCH 22/28] Add back zettelkasten markdown file completion --- .config/nvim/after/plugin/nvim-cmp.lua | 1 + .config/nvim/lua/zk/cmp.lua | 49 ++++++++++++++++++++++++ .config/nvim/lua/{zk.lua => zk/init.lua} | 2 + 3 files changed, 52 insertions(+) create mode 100644 .config/nvim/lua/zk/cmp.lua rename .config/nvim/lua/{zk.lua => zk/init.lua} (98%) diff --git a/.config/nvim/after/plugin/nvim-cmp.lua b/.config/nvim/after/plugin/nvim-cmp.lua index ba4ca44..e6b5441 100644 --- a/.config/nvim/after/plugin/nvim-cmp.lua +++ b/.config/nvim/after/plugin/nvim-cmp.lua @@ -63,6 +63,7 @@ cmp.setup({ }), sources = { { name = "copilot", group_index = 2 }, + { name = "zk" }, { name = "nvim_lsp", keyword_length = 8 }, { name = "luasnip", max_item_count = 16 }, { name = "path" }, diff --git a/.config/nvim/lua/zk/cmp.lua b/.config/nvim/lua/zk/cmp.lua new file mode 100644 index 0000000..e3e234d --- /dev/null +++ b/.config/nvim/lua/zk/cmp.lua @@ -0,0 +1,49 @@ +local cmp = require("cmp") + +local source = {} + +local function get_markdown_files(base) + local items = {} + local pattern = base .. "/**/*.md" + local files = vim.fn.glob(pattern, false, true) + for _, file in ipairs(files) do + local label = file:gsub("^%./", ""):gsub("%.md$", "") + table.insert(items, { label = label }) + end + return items +end + +function source:complete(params, callback) + local cursor_before_line = params.context.cursor_before_line + local cursor_after_line = params.context.cursor_after_line or "" + + local trigger = cursor_before_line:match("%[[^%]]*%]%(([^)]*)$") + + if trigger ~= nil then + local items = get_markdown_files(".") + local next_char = cursor_after_line:sub(1, 1) + + for _, item in ipairs(items) do + if next_char == ")" then + item.insertText = item.label + else + item.insertText = item.label .. ")" + end + end + + callback(items) + else + callback({}) + end +end + +function source:get_trigger_characters() + return { "(" } +end + +function source:is_available() + local ft = vim.bo.filetype + return ft == "markdown" or ft == "pandoc" +end + +cmp.register_source("zk", source) diff --git a/.config/nvim/lua/zk.lua b/.config/nvim/lua/zk/init.lua similarity index 98% rename from .config/nvim/lua/zk.lua rename to .config/nvim/lua/zk/init.lua index dcd366d..bc81058 100644 --- a/.config/nvim/lua/zk.lua +++ b/.config/nvim/lua/zk/init.lua @@ -1,3 +1,5 @@ +require("zk.cmp") + vim.cmd([[ let s:zk_preview_enabled = 0 let s:live_server_job = -1 From 411986643a74d3c40d59fdf7bef1ddb1b53499e0 Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Tue, 4 Nov 2025 16:37:28 +0100 Subject: [PATCH 23/28] Update bash aliases --- .bash_aliases/all | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.bash_aliases/all b/.bash_aliases/all index dc796d1..0624611 100644 --- a/.bash_aliases/all +++ b/.bash_aliases/all @@ -37,8 +37,10 @@ alias path='echo -e ${PATH//:/\\n}' # Pretty print path variables alias h="history" alias o="xdg-open" alias v="nvim" +alias vf="fzf --bind 'enter:become(nvim {})'" alias g='git' -alias t=' task' +alias k="kubectl" +alias t='task' alias tsh='tasksh' alias z='zathura --fork' alias f='fzf' From 61ac93b68f7284fd3570dd86b90dc611a64b2c56 Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Thu, 6 Nov 2025 11:14:21 +0100 Subject: [PATCH 24/28] Add git push/pull aliases --- .gitconfig | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitconfig b/.gitconfig index 8118538..feff57a 100644 --- a/.gitconfig +++ b/.gitconfig @@ -21,6 +21,8 @@ sv = status --verbose co = checkout cob = checkout -b + pullr = "pull --rebase --autostash" + pushf = "push --force-with-lease" # Note these follow the naming convention of my `.bash_aliases` al = "!git config -l | grep alias | cut -c 7-" alf = "!git config -l | grep alias | cut -c 7- | fzf" From ffc34d78d758584211661e5227eb1b392eaab22d Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Thu, 6 Nov 2025 12:16:10 +0100 Subject: [PATCH 25/28] Fix conform eslint-prettier conflicting formatters --- .config/nvim/after/plugin/conform.lua | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.config/nvim/after/plugin/conform.lua b/.config/nvim/after/plugin/conform.lua index e8ba607..95af25d 100644 --- a/.config/nvim/after/plugin/conform.lua +++ b/.config/nvim/after/plugin/conform.lua @@ -1,6 +1,6 @@ require("conform").setup({ - format_on_save = { - lsp_fallback = true, + format_after_save = { + lsp_fallback = false, async = false, timeout_ms = 500, }, @@ -16,14 +16,14 @@ require("conform").setup({ lua = { "stylua" }, -- configured in stylua.toml markdown = { "prettierd", "prettier", stop_after_first = true }, nix = { "nixfmt" }, - javascript = { "prettierd", "prettier", stop_after_first = true }, - javascriptreact = { "prettierd", "prettier", stop_after_first = true }, + javascript = { "eslint_d", "eslint", "prettierd", "prettier", stop_after_first = true }, + javascriptreact = { "eslint_d", "eslint", "prettierd", "prettier", stop_after_first = true }, json = { "prettierd", "prettier", stop_after_first = true }, jsonc = { "prettierd", "prettier", stop_after_first = true }, python = { "isort", "black" }, - svelte = { "prettierd", "prettier", stop_after_first = true }, - typescript = { "prettierd", "prettier", stop_after_first = true }, - typescriptreact = { "prettierd", "prettier", stop_after_first = true }, - yaml = { "prettierd", "prettier", stop_after_first = true }, + svelte = { "eslint_d", "prettierd", "prettier", stop_after_first = true }, + typescript = { "eslint_d", "prettierd", "prettier", stop_after_first = true }, + typescriptreact = { "eslint_d", "eslint", "prettierd", "prettier", stop_after_first = true }, + -- yaml = { "prettierd", "prettier", stop_after_first = true }, }, }) From 43f5cc701ec6456a6fbdcb765cbce797bb499d6a Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Thu, 6 Nov 2025 14:31:55 +0100 Subject: [PATCH 26/28] Add neovim skeleton module --- .config/nvim/lua/skeleton/init.lua | 11 +++++++++++ .config/nvim/skeletons/flake.nix | 10 ++++++++++ .config/nvim/skeletons/shell.nix | 6 ++++++ 3 files changed, 27 insertions(+) create mode 100644 .config/nvim/lua/skeleton/init.lua create mode 100644 .config/nvim/skeletons/flake.nix create mode 100644 .config/nvim/skeletons/shell.nix diff --git a/.config/nvim/lua/skeleton/init.lua b/.config/nvim/lua/skeleton/init.lua new file mode 100644 index 0000000..fd1e16b --- /dev/null +++ b/.config/nvim/lua/skeleton/init.lua @@ -0,0 +1,11 @@ +local autocmd = vim.api.nvim_create_autocmd + +autocmd("BufNewFile", { + pattern = "shell.nix", + command = "0r ~/.config/nvim/skeletons/shell.nix", +}) + +autocmd("BufNewFile", { + pattern = "flake.nix", + command = "0r ~/.config/nvim/skeletons/flake.nix", +}) diff --git a/.config/nvim/skeletons/flake.nix b/.config/nvim/skeletons/flake.nix new file mode 100644 index 0000000..7592bc0 --- /dev/null +++ b/.config/nvim/skeletons/flake.nix @@ -0,0 +1,10 @@ +{ + inputs = { + nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; + }; + + outputs = + { self, nixpkgs }: + { + }; +} diff --git a/.config/nvim/skeletons/shell.nix b/.config/nvim/skeletons/shell.nix new file mode 100644 index 0000000..b84b531 --- /dev/null +++ b/.config/nvim/skeletons/shell.nix @@ -0,0 +1,6 @@ +{ + pkgs ? import { }, +}: +pkgs.mkShell { + nativeBuildInputs = with pkgs.buildPackages; [ ]; +} From 3fb3b1e521f383517a33c1a1d67da18e7fc09c17 Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Thu, 6 Nov 2025 21:45:47 +0100 Subject: [PATCH 27/28] Set up sops-nix secrets --- .config/home-manager/flake.lock | 66 +++++++++++++++++---- .config/home-manager/flake.nix | 12 +++- .config/home-manager/hosts/work/default.nix | 12 ++++ 3 files changed, 76 insertions(+), 14 deletions(-) diff --git a/.config/home-manager/flake.lock b/.config/home-manager/flake.lock index f60bb84..2c25682 100644 --- a/.config/home-manager/flake.lock +++ b/.config/home-manager/flake.lock @@ -8,11 +8,11 @@ }, "locked": { "dir": "pkgs/firefox-addons", - "lastModified": 1761710614, - "narHash": "sha256-uj3jqMdY8fD8d4gE5jzdJKHCXcOrlAedsE+l2C0WaUE=", + "lastModified": 1762315418, + "narHash": "sha256-mLJeHkYvojbq/1vot6IXq85l0sN9KlAPbRzYo4Mnc4g=", "owner": "rycee", "repo": "nur-expressions", - "rev": "31620aefadf6b2ade64195f7be8554c9a49f6a5b", + "rev": "ccdfe1d5d7da86941ac363b5bf2b5bc88b15def2", "type": "gitlab" }, "original": { @@ -47,11 +47,11 @@ ] }, "locked": { - "lastModified": 1761666354, - "narHash": "sha256-fHr+tIYBJccNF8QWqgowfRmEAtAMSt1deZIRNKL8A7c=", + "lastModified": 1762351818, + "narHash": "sha256-0ptUDbYwxv1kk/uzEX4+NJjY2e16MaAhtzAOJ6K0TG0=", "owner": "nix-community", "repo": "home-manager", - "rev": "ca2ab1d877a24d5a437dad62f56b8b2c02e964e9", + "rev": "b959c67241cae17fc9e4ee7eaf13dfa8512477ea", "type": "github" }, "original": { @@ -60,6 +60,24 @@ "type": "github" } }, + "nix-secrets": { + "flake": false, + "locked": { + "lastModified": 1762463676, + "narHash": "sha256-PMNLD8PPcei/1SwNph+CVTBw+3SvlN2R/CnTUFJO5O0=", + "ref": "main", + "rev": "183554d159e1d8ea1f1d2d626b6686ebcb37a612", + "shallow": true, + "type": "git", + "url": "ssh://git@github.com/hektor/nix-secrets" + }, + "original": { + "ref": "main", + "shallow": true, + "type": "git", + "url": "ssh://git@github.com/hektor/nix-secrets" + } + }, "nixgl": { "inputs": { "flake-utils": "flake-utils", @@ -68,11 +86,11 @@ ] }, "locked": { - "lastModified": 1752054764, - "narHash": "sha256-Ob/HuUhANoDs+nvYqyTKrkcPXf4ZgXoqMTQoCK0RFgQ=", + "lastModified": 1762090880, + "narHash": "sha256-fbRQzIGPkjZa83MowjbD2ALaJf9y6KMDdJBQMKFeY/8=", "owner": "nix-community", "repo": "nixGL", - "rev": "a8e1ce7d49a149ed70df676785b07f63288f53c5", + "rev": "b6105297e6f0cd041670c3e8628394d4ee247ed5", "type": "github" }, "original": { @@ -83,11 +101,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1761373498, - "narHash": "sha256-Q/uhWNvd7V7k1H1ZPMy/vkx3F8C13ZcdrKjO7Jv7v0c=", + "lastModified": 1762111121, + "narHash": "sha256-4vhDuZ7OZaZmKKrnDpxLZZpGIJvAeMtK6FKLJYUtAdw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "6a08e6bb4e46ff7fcbb53d409b253f6bad8a28ce", + "rev": "b3d51a0365f6695e7dd5cdf3e180604530ed33b4", "type": "github" }, "original": { @@ -101,8 +119,30 @@ "inputs": { "firefox-addons": "firefox-addons", "home-manager": "home-manager", + "nix-secrets": "nix-secrets", "nixgl": "nixgl", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "sops-nix": "sops-nix" + } + }, + "sops-nix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1760998189, + "narHash": "sha256-ee2e1/AeGL5X8oy/HXsZQvZnae6XfEVdstGopKucYLY=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "5a7d18b5c55642df5c432aadb757140edfeb70b3", + "type": "github" + }, + "original": { + "owner": "Mic92", + "repo": "sops-nix", + "type": "github" } }, "systems": { diff --git a/.config/home-manager/flake.nix b/.config/home-manager/flake.nix index 454cdd7..e88f66c 100644 --- a/.config/home-manager/flake.nix +++ b/.config/home-manager/flake.nix @@ -7,6 +7,14 @@ url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; + sops-nix = { + url = "github:Mic92/sops-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + nix-secrets = { + url = "git+ssh://git@github.com/hektor/nix-secrets?shallow=1&ref=main"; + flake = false; + }; nixgl = { url = "github:nix-community/nixGL"; inputs.nixpkgs.follows = "nixpkgs"; @@ -40,7 +48,9 @@ extraSpecialArgs = { inherit inputs; }; - modules = [ ./hosts/work ]; + modules = [ + ./hosts/work + ]; }; }; }; diff --git a/.config/home-manager/hosts/work/default.nix b/.config/home-manager/hosts/work/default.nix index 29f2e89..1a6f2ec 100644 --- a/.config/home-manager/hosts/work/default.nix +++ b/.config/home-manager/hosts/work/default.nix @@ -6,6 +6,17 @@ }: { + + imports = [ inputs.sops-nix.homeManagerModules.sops ]; + + sops = { + defaultSopsFile = "${builtins.toString inputs.nix-secrets}/secrets.yaml"; + defaultSopsFormat = "yaml"; + age.keyFile = "/home/hektor/.config/sops/age/keys.txt"; + + secrets."test" = { }; + }; + nixGL = { packages = inputs.nixgl.packages; defaultWrapper = "mesa"; @@ -19,6 +30,7 @@ programs.firefox = import ../../modules/firefox.nix { inherit inputs; inherit pkgs; + inherit config; }; programs.git = import ../../modules/git.nix; programs.keepassxc = import ../../modules/keepassxc.nix; From 85165468f589dbb395b73f0cb17b758ac6fe33aa Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Mon, 10 Nov 2025 15:29:49 +0100 Subject: [PATCH 28/28] Update 'kitty.conf' --- .../home-manager/modules/bookmarks/jira.nix | 6 + .../home-manager/modules/bookmarks/k8s.nix | 181 ++++++++ .../home-manager/modules/bookmarks/repos.nix | 402 ++++++++++++++++++ .config/kitty/kitty.conf | 171 +++++++- 4 files changed, 744 insertions(+), 16 deletions(-) create mode 100644 .config/home-manager/modules/bookmarks/jira.nix create mode 100644 .config/home-manager/modules/bookmarks/k8s.nix create mode 100644 .config/home-manager/modules/bookmarks/repos.nix diff --git a/.config/home-manager/modules/bookmarks/jira.nix b/.config/home-manager/modules/bookmarks/jira.nix new file mode 100644 index 0000000..7fa0033 --- /dev/null +++ b/.config/home-manager/modules/bookmarks/jira.nix @@ -0,0 +1,6 @@ +[ + { + name = "kanban - tenant manager"; + url = "https://rightcrowd.atlassian.net/jira/software/c/projects/RPD/boards/1131"; + } +] diff --git a/.config/home-manager/modules/bookmarks/k8s.nix b/.config/home-manager/modules/bookmarks/k8s.nix new file mode 100644 index 0000000..0fdf5ce --- /dev/null +++ b/.config/home-manager/modules/bookmarks/k8s.nix @@ -0,0 +1,181 @@ +[ + { + name = "localdev"; + bookmarks = [ + { + name = "api-test.h.rightcrowd.cloud"; + bookmarks = [ + { + name = "rightcrowd-api"; + url = "https://api-test.h.rightcrowd.cloud"; + } + ]; + } + { + name = "argo-applicationset.h.rightcrowd.cloud"; + bookmarks = [ + { + name = "argocd-applicationset-controller"; + url = "https://argo-applicationset.h.rightcrowd.cloud"; + } + ]; + } + { + name = "argo.h.rightcrowd.cloud"; + bookmarks = [ + { + name = "argocd-server"; + url = "https://argo.h.rightcrowd.cloud"; + } + ]; + } + { + name = "grafana.h.rightcrowd.cloud"; + bookmarks = [ + { + name = "grafana"; + url = "https://grafana.h.rightcrowd.cloud"; + } + ]; + } + { + name = "grpc-wf-test.h.rightcrowd.cloud"; + bookmarks = [ + { + name = "workflow"; + url = "https://grpc-wf-test.h.rightcrowd.cloud"; + } + ]; + } + { + name = "home.h.rightcrowd.cloud"; + bookmarks = [ + { + name = "homepage"; + url = "https://home.h.rightcrowd.cloud"; + } + { + name = "oauth2-proxy-homepage-service"; + url = "https://home.h.rightcrowd.cloud"; + } + ]; + } + { + name = "iam.h.rightcrowd.cloud"; + bookmarks = [ + { + name = "keycloak-service"; + url = "https://iam.h.rightcrowd.cloud"; + } + { + name = "keycloak-service"; + url = "https://iam.h.rightcrowd.cloud"; + } + ]; + } + { + name = "minio.h.rightcrowd.cloud"; + bookmarks = [ + { + name = "console"; + url = "https://minio.h.rightcrowd.cloud"; + } + ]; + } + { + name = "piam-test.h.rightcrowd.cloud"; + bookmarks = [ + { + name = "workflow"; + url = "https://piam-test.h.rightcrowd.cloud"; + } + ]; + } + { + name = "registry.h.rightcrowd.cloud"; + bookmarks = [ + { + name = "registry-docker-registry"; + url = "https://registry.h.rightcrowd.cloud"; + } + ]; + } + { + name = "reporting-test.h.rightcrowd.cloud"; + bookmarks = [ + { + name = "reporting"; + url = "https://reporting-test.h.rightcrowd.cloud"; + } + ]; + } + { + name = "side-login-api.h.rightcrowd.cloud"; + bookmarks = [ + { + name = "side-login-backend-service"; + url = "https://side-login-api.h.rightcrowd.cloud"; + } + ]; + } + { + name = "side-login.h.rightcrowd.cloud"; + bookmarks = [ + { + name = "side-login-frontend-service"; + url = "https://side-login.h.rightcrowd.cloud"; + } + ]; + } + { + name = "tenant-manager.h.rightcrowd.cloud"; + bookmarks = [ + { + name = "tenant-manager-frontend"; + url = "https://tenant-manager.h.rightcrowd.cloud"; + } + { + name = "tenant-manager-backend"; + url = "https://tenant-manager.h.rightcrowd.cloud"; + } + ]; + } + { + name = "vault.h.rightcrowd.cloud"; + bookmarks = [ + { + name = "vault"; + url = "https://vault.h.rightcrowd.cloud"; + } + ]; + } + { + name = "web-tracing.h.rightcrowd.cloud"; + bookmarks = [ + { + name = "alloy"; + url = "https://web-tracing.h.rightcrowd.cloud"; + } + ]; + } + { + name = "wf-test.h.rightcrowd.cloud"; + bookmarks = [ + { + name = "workflow"; + url = "https://wf-test.h.rightcrowd.cloud"; + } + ]; + } + ]; + } + { + name = "dev"; + bookmarks = [ + { + name = "tenman"; + url = ""; + } + ]; + } +] diff --git a/.config/home-manager/modules/bookmarks/repos.nix b/.config/home-manager/modules/bookmarks/repos.nix new file mode 100644 index 0000000..5cd2249 --- /dev/null +++ b/.config/home-manager/modules/bookmarks/repos.nix @@ -0,0 +1,402 @@ +[ + { + name = "agent"; + url = "https://gitlab.com/rightcrowd/agent"; + } + { + name = "ai openapi experiment"; + url = "https://gitlab.com/rightcrowd/ai-openapi-experiment"; + } + { + name = "ai project"; + url = "https://gitlab.com/rightcrowd/ai-project"; + } + { + name = "ai-rule-engine"; + url = "https://gitlab.com/rightcrowd/ai-rule-engine"; + } + { + name = "ai_chatbot_helpdesk"; + url = "https://gitlab.com/rightcrowd/ai_chatbot_helpdesk"; + } + { + name = "airflow"; + url = "https://gitlab.com/rightcrowd/airflow"; + } + { + name = "android-device-library"; + url = "https://gitlab.com/rightcrowd/android-device-library"; + } + { + name = "android-tpm"; + url = "https://gitlab.com/rightcrowd/android-tpm"; + } + { + name = "android-tpm-test"; + url = "https://gitlab.com/rightcrowd/android-tpm-test"; + } + { + name = "architecture design decisions"; + url = "https://gitlab.com/rightcrowd/architecture-design-decisions"; + } + { + name = "backend-core"; + url = "https://gitlab.com/rightcrowd/backend-core"; + } + { + name = "backend-identity-access-management"; + url = "https://gitlab.com/rightcrowd/backend-identity-access-management"; + } + { + name = "backend-pin-management"; + url = "https://gitlab.com/rightcrowd/backend-pin-management"; + } + { + name = "backend-test-container"; + url = "https://gitlab.com/rightcrowd/backend-test-container"; + } + { + name = "bu snaplogic"; + url = "https://gitlab.com/rightcrowd/bu-snaplogic"; + } + { + name = "contractor-portal"; + url = "https://gitlab.com/rightcrowd/contractor-portal"; + } + { + name = "credential service"; + url = "https://gitlab.com/rightcrowd/credential-service"; + } + { + name = "employee app"; + url = "https://gitlab.com/rightcrowd/employee-app"; + } + { + name = "events-service-research"; + url = "https://gitlab.com/rightcrowd/events-service-research"; + } + { + name = "facerecognition"; + url = "https://gitlab.com/rightcrowd/facerecognition"; + } + { + name = "function-keycloak-builtin-objects"; + url = "https://gitlab.com/rightcrowd/function-keycloak-builtin-objects"; + } + { + name = "fw_ble_soc_bl"; + url = "https://gitlab.com/rightcrowd/fw_ble_soc_bl"; + } + { + name = "fw_ble_soc_certification"; + url = "https://gitlab.com/rightcrowd/fw_ble_soc_certification"; + } + { + name = "fw_ble_soc_dw_sniffer"; + url = "https://gitlab.com/rightcrowd/fw_ble_soc_dw_sniffer"; + } + { + name = "fw_ble_soc_dw_tag"; + url = "https://gitlab.com/rightcrowd/fw_ble_soc_dw_tag"; + } + { + name = "fw_ble_soc_dw_ths_master"; + url = "https://gitlab.com/rightcrowd/fw_ble_soc_dw_ths_master"; + } + { + name = "fw_ble_soc_dw_ths_slave"; + url = "https://gitlab.com/rightcrowd/fw_ble_soc_dw_ths_slave"; + } + { + name = "fw_ble_soc_hw_3_0"; + url = "https://gitlab.com/rightcrowd/fw_ble_soc_hw_3_0"; + } + { + name = "fw_ble_soc_prod_test_jig"; + url = "https://gitlab.com/rightcrowd/fw_ble_soc_prod_test_jig"; + } + { + name = "fw_cr"; + url = "https://gitlab.com/rightcrowd/fw_cr"; + } + { + name = "fw_cr_upload"; + url = "https://gitlab.com/rightcrowd/fw_cr_upload"; + } + { + name = "fw_legacy_applet"; + url = "https://gitlab.com/rightcrowd/fw_legacy_applet"; + } + { + name = "fw_nfc_soc"; + url = "https://gitlab.com/rightcrowd/fw_nfc_soc"; + } + { + name = "fw_nrf5_sdk"; + url = "https://gitlab.com/rightcrowd/fw_nrf5_sdk"; + } + { + name = "fw_orion"; + url = "https://gitlab.com/rightcrowd/fw_orion"; + } + { + name = "fw_pr"; + url = "https://gitlab.com/rightcrowd/fw_pr"; + } + { + name = "fw_prod"; + url = "https://gitlab.com/rightcrowd/fw_prod"; + } + { + name = "fw_prod_dekimo"; + url = "https://gitlab.com/rightcrowd/fw_prod_dekimo"; + } + { + name = "fw_prod_test"; + url = "https://gitlab.com/rightcrowd/fw_prod_test"; + } + { + name = "fw_scc"; + url = "https://gitlab.com/rightcrowd/fw_scc"; + } + { + name = "fw_tc"; + url = "https://gitlab.com/rightcrowd/fw_tc"; + } + { + name = "fw_tc_prod_test"; + url = "https://gitlab.com/rightcrowd/fw_tc_prod_test"; + } + { + name = "fw_test_app"; + url = "https://gitlab.com/rightcrowd/fw_test_app"; + } + { + name = "gateway api"; + url = "https://gitlab.com/rightcrowd/gateway-api"; + } + { + name = "gitlab-renovate-runner"; + url = "https://gitlab.com/rightcrowd/gitlab-renovate-runner"; + } + { + name = "hashicorp vault"; + url = "https://gitlab.com/rightcrowd/hashicorp-vault"; + } + { + name = "helm charts"; + url = "https://gitlab.com/rightcrowd/helm-charts"; + } + { + name = "hid mobile credentials poc dump"; + url = "https://gitlab.com/rightcrowd/poc-hid-mobile-credentials-dump"; + } + { + name = "in-cluster-development"; + url = "https://gitlab.com/rightcrowd/in-cluster-development"; + } + { + name = "integrations service"; + url = "https://gitlab.com/rightcrowd/integrations-service"; + } + { + name = "interview-questions"; + url = "https://gitlab.com/rightcrowd/interview-questions"; + } + { + name = "ios-firmware-manager"; + url = "https://gitlab.com/rightcrowd/ios-firmware-manager"; + } + { + name = "ios-gw"; + url = "https://gitlab.com/rightcrowd/ios-gw"; + } + { + name = "ios-kiosk"; + url = "https://gitlab.com/rightcrowd/ios-kiosk"; + } + { + name = "json parser"; + url = "https://gitlab.com/rightcrowd/json-parser"; + } + { + name = "jwt-claims-convention"; + url = "https://gitlab.com/rightcrowd/jwt-claims-convention"; + } + { + name = "k8s secret aggregation operator"; + url = "https://gitlab.com/rightcrowd/k8s-secrets-aggregation-operator"; + } + { + name = "keycloak"; + url = "https://gitlab.com/rightcrowd/keycloak"; + } + { + name = "keycloak-realm-kubernetes-operator"; + url = "https://gitlab.com/rightcrowd/keycloak-realm-kubernetes-operator"; + } + { + name = "keycloak-test-impl"; + url = "https://gitlab.com/rightcrowd/keycloak-test-impl"; + } + { + name = "kube diff"; + url = "https://gitlab.com/rightcrowd/kube-diff"; + } + { + name = "link service"; + url = "https://gitlab.com/rightcrowd/link-service"; + } + { + name = "location service"; + url = "https://gitlab.com/rightcrowd/location-service"; + } + { + name = "mongo-encryption-poc"; + url = "https://gitlab.com/rightcrowd/mongo-encryption-poc"; + } + { + name = "next gen reporting"; + url = "https://gitlab.com/rightcrowd/next-gen-reporting"; + } + { + name = "node.js application template"; + url = "https://gitlab.com/rightcrowd/templates/node.js-application-template"; + } + { + name = "nodejs python microservice poc"; + url = "https://gitlab.com/rightcrowd/nodejs-python-microservice-poc"; + } + { + name = "observability dev kit"; + url = "https://gitlab.com/rightcrowd/observability-dev-kit"; + } + { + name = "open adapter security expert"; + url = "https://gitlab.com/rightcrowd/open-adapter-security-expert"; + } + { + name = "pacs remote adapter andover"; + url = "https://gitlab.com/rightcrowd/pacs-ra-andover"; + } + { + name = "platform apps"; + url = "https://gitlab.com/rightcrowd/platform-apps"; + } + { + name = "platform feature flags"; + url = "https://gitlab.com/rightcrowd/feature-flags"; + } + { + name = "platform infra"; + url = "https://gitlab.com/rightcrowd/platform-infra"; + } + { + name = "platform-dev"; + url = "https://gitlab.com/rightcrowd/platform-dev"; + } + { + name = "platform-onprem"; + url = "https://gitlab.com/rightcrowd/platform-onprem"; + } + { + name = "poc-android-ble-test-app"; + url = "https://gitlab.com/rightcrowd/poc-android-ble-test-app"; + } + { + name = "poc-hw-tools"; + url = "https://gitlab.com/rightcrowd/poc-hw-tools"; + } + { + name = "poc_arduino_sketches"; + url = "https://gitlab.com/rightcrowd/poc_arduino_sketches"; + } + { + name = "poc_gw_rssi_visu"; + url = "https://gitlab.com/rightcrowd/poc_gw_rssi_visu"; + } + { + name = "public api javascript client"; + url = "https://gitlab.com/rightcrowd/public-api-js-client"; + } + { + name = "rightcrowd cloud"; + url = "https://gitlab.com/rightcrowd/RightCrowd-cloud"; + } + { + name = "rightcrowd design system web"; + url = "https://gitlab.com/rightcrowd/rightcrowd-design-system-web"; + } + { + name = "rightcrowd gitlab image builder"; + url = "https://gitlab.com/rightcrowd/rightcrowd-gitlab-image-builder"; + } + { + name = "rightcrowd-lib"; + url = "https://gitlab.com/rightcrowd/lib"; + } + { + name = "rightcrowd-ng-api-design"; + url = "https://gitlab.com/rightcrowd/rightcrowd-ng-api-design"; + } + { + name = "rightface"; + url = "https://gitlab.com/rightcrowd/rightface"; + } + { + name = "side login application"; + url = "https://gitlab.com/rightcrowd/side-login-application"; + } + { + name = "single tenant router"; + url = "https://gitlab.com/rightcrowd/single-tenant-redirector"; + } + { + name = "smartaccess api design"; + url = "https://gitlab.com/rightcrowd/smartaccess-api-design"; + } + { + name = "smartaccess interface"; + url = "https://gitlab.com/rightcrowd/admin-application"; + } + { + name = "smartface"; + url = "https://gitlab.com/rightcrowd/smartface"; + } + { + name = "techshare"; + url = "https://gitlab.com/rightcrowd/techshare"; + } + { + name = "tenant manager"; + url = "https://gitlab.com/rightcrowd/tenant-manager"; + } + { + name = "tenman-k8s-operator-experiment"; + url = "https://gitlab.com/rightcrowd/tenman-k8s-operator-experiment"; + } + { + name = "tenman-k8s-operator-experiment-ts"; + url = "https://gitlab.com/rightcrowd/tenman-k8s-operator-experiment-ts"; + } + { + name = "test-setup"; + url = "https://gitlab.com/rightcrowd/test-setup"; + } + { + name = "trpc-oas-experiment"; + url = "https://gitlab.com/rightcrowd/trpc-oas-experiment"; + } + { + name = "uwb-demo"; + url = "https://gitlab.com/rightcrowd/uwb-demo"; + } + { + name = "web ui components"; + url = "https://gitlab.com/rightcrowd/ui-components"; + } + { + name = "web-pin-management"; + url = "https://gitlab.com/rightcrowd/web-pin-management"; + } +] diff --git a/.config/kitty/kitty.conf b/.config/kitty/kitty.conf index ee37a00..1e500dc 100644 --- a/.config/kitty/kitty.conf +++ b/.config/kitty/kitty.conf @@ -1,28 +1,167 @@ -# Fonts +#: Fonts {{{ font_family Iosevka Term SS08 -font_size 24.0 +bold_font auto +italic_font auto +bold_italic_font auto +font_size 12.0 +disable_ligatures never + +# }}} + +#: Cursor {{{ -# Cursor cursor_shape block cursor_blink_interval 0 -# Performance tuning +#: }}} -repaint_delay 8 - -# Transparency - -# dynamic_background_opacity yes -# background_opacity 0.0 - -enable_audio_bell no - -# Scrollback +#: Scrollback {{{ scrollback_lines 8192 -scrollback_pager nvimpager +scrollbar scrolled scrollback_pager_history_size 1024 -include ./themes/zenwritten_light.conf +#: }}} + +#: Mouse {{{ + +mouse_hide_wait 0.0 +paste_actions quote-urls-at-prompt,confirm + +#: }}} + +#: Performance tuning {{{ + +repaint_delay 8 +input_delay 2 + +#: }}} + +#: Terminal bell {{{ + +enable_audio_bell yes +window_alert_on_bell yes + +#: }}} + +#: Window layout {{{ + +remember_window_size no +remember_window_position no +enabled_layouts * +hide_window_decorations yes + +#: }}} + +#: Tab bar {{{ + +tab_bar_edge top +tab_bar_style powerline +tab_bar_min_tabs 1 +tab_powerline_style slanted +tab_activity_symbol ! +tab_title_template "{index}{fmt.fg.red}{bell_symbol}{fmt.fg.tab}{activity_symbol}:{tab.last_focused_progress_percent}{title}" + +#: }}} + +#: Advanced {{{ + +notify_on_cmd_finish unfocused + +#: }}} + +#: OS specific tweaks {{{ + +linux_display_server auto +wayland_enable_ime no + +#: }}} + +#: Keyboard shortcuts {{{ + +kitty_mod ctrl+shift +map kitty_mod+c copy_to_clipboard +map kitty_mod+v paste_from_clipboard +map cmd+v +# map kitty_mod+o pass_selection_to_program +# map kitty_mod+o pass_selection_to_program firefox +# map kitty_mod+y new_window less @selection +map kitty_mod+z scroll_to_prompt -1 +map kitty_mod+x scroll_to_prompt 1 +map kitty_mod+h show_scrollback +# map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R +#:: For more details on piping screen and buffer contents to external +#:: programs, see launch . +# map kitty_mod+g show_last_command_output +# map kitty_mod+enter launch --cwd=current +# map cmd+enter +# map ctrl+n launch --location=neighbor +# map ctrl+f launch --location=first +map kitty_mod+n +map cmd+n +map kitty_mod+w +map shift+cmd+d +map kitty_mod+] +map kitty_mod+[ +map kitty_mod+f +map kitty_mod+b +map kitty_mod+` +map kitty_mod+r +map cmd+r +map kitty_mod+1 +map cmd+1 +map kitty_mod+2 +map cmd+2 +map kitty_mod+3 +map cmd+3 +map kitty_mod+4 +map cmd+4 +map kitty_mod+5 +map cmd+5 +map kitty_mod+6 +map cmd+6 +map kitty_mod+7 +map cmd+7 +map kitty_mod+8 +map cmd+8 +map kitty_mod+9 +map cmd+9 +map kitty_mod+0 +map f1 goto_tab 1 +map f2 goto_tab 2 +map f3 goto_tab 3 +map f4 goto_tab 4 +map f5 goto_tab 5 +map f6 goto_tab 6 +map f7 goto_tab 7 +map f8 goto_tab 8 +map kitty_mod+c new_tab +map cmd+t +map kitty_mod+q +map cmd+w +map kitty_mod+. +map kitty_mod+, +map kitty_mod+alt+t +map shift+cmd+i +map kitty_mod+f1 +map kitty_mod+f11 +map ctrl+cmd+f +map kitty_mod+f10 +map opt+cmd+s +map kitty_mod+u kitten unicode_input +map ctrl+cmd+space +map kitty_mod+/ kitty_shell window +map kitty_mod+f5 +map kitty_mod+r load_config_file + +map shift+cmd+/ +map cmd+h +map opt+cmd+ +map cmd+m +map cmd+q + +#: }}} + +include ./themes/zenwritten_dark.conf include ./nvim.conf