nix

configuration files that power my machines
Log | Files | Refs | README | LICENSE

commit a85d47409d3bc5c9460da3d4b8f292871824d410
parent c24f798796fcc2ac6643f5037c4f9345a1d95a6e
Author: mtmn <miro@haravara.org>
Date:   Fri, 17 Apr 2026 18:36:07 +0200

void: install beam, update feeds, misc

Diffstat:
Mhosts/void/default.nix | 266+++++++++++++++++++++++++++++++++++++++----------------------------------------
Mmodules/mixins/dotfiles/config/bat/themes/magnolia.tmTheme | 26+++++++++++++-------------
Mmodules/mixins/dotfiles/config/foot/foot.ini | 2+-
Mmodules/mixins/dotfiles/config/helix/config.toml | 2+-
Dmodules/mixins/dotfiles/config/helix/themes/doric_dark.toml | 193-------------------------------------------------------------------------------
Dmodules/mixins/dotfiles/config/helix/themes/mine.toml | 2--
Amodules/mixins/dotfiles/config/helix/themes/mtmn.toml | 2++
Mmodules/mixins/dotfiles/config/newsraft/feeds | 1+
Mmodules/mixins/dotfiles/config/shell/rc/aliased-short-names | 12+++++++-----
Mmodules/mixins/dotfiles/config/shell/rc/git | 25++++++++++++++++---------
Mmodules/mixins/dotfiles/default.nix | 16----------------
Mmodules/mixins/dotfiles/home/gitconfig | 3---
12 files changed, 172 insertions(+), 378 deletions(-)

diff --git a/hosts/void/default.nix b/hosts/void/default.nix @@ -2,82 +2,37 @@ pkgs, lib, ... -}: let - parts = { - utils = with pkgs; [ - shellcheck - unzip - zip +}: { + home.packages = lib.concatLists (lib.attrValues (with pkgs; { + core = [ eza bat - zoxide fzf - tree-sitter - shfmt - gron - ncdu - bear - entr - hyperfine - gdb - strace - perf - meson - ninja - cmake - moor - buf - duc - ]; - - media = - (with pkgs; [ - ncmpcpp - sacad - ffmpeg - yt-dlp - imagemagick - exiftool - soundtouch - ]) - ++ (with pkgs.python314Packages; [ - yt-dlp-ejs - ]); - - ops = with pkgs; [ - ansible-lint - ansible - awscli2 - dnscontrol - woodpecker-cli - podman - skopeo - tenv - act + zoxide + neovim ]; - lsp = with pkgs; [ - typescript-language-server - ansible-language-server - clang-tools - gopls - nixd - zls - harper + web = [ + aerc + offpunk + monolith + newsraft + vdirsyncer ]; - data = with pkgs; [ + data = [ duckdb jless jaq jq + gron pandoc datasette difftastic tokyocabinet ]; - vcs = with pkgs; [ + vcs = [ git-bug git-crypt git-absorb @@ -88,102 +43,143 @@ prek ]; - nix = with pkgs; [ - alejandra - comma - deadnix - statix - nh - nvd - ragenix - nix-diff - attic-client + ci = [ + ansible-language-server + ansible-lint + ansible + awscli2 + podman + skopeo + tenv + act + woodpecker-cli ]; - net = with pkgs; [ - bore-cli - inetutils - lftp - mosh - mosquitto - net-tools - nmap - rclone - rsync - sshfs - thrift - trickle - websocat - xh - ]; + net = + [ + dnscontrol + rsync + sshfs + yt-dlp + rclone + xh + trickle + miniserve + lftp + ] + ++ (with python314Packages; [ + yt-dlp-ejs + ]); - web = with pkgs; [ - aerc - offpunk - monolith - newsraft - vdirsyncer + media = + [ + ncmpcpp + sacad + ffmpeg + soundtouch + ] + ++ (with python314Packages; [ + yt-dlp-ejs + ]); + + build = [ + bazelisk + bazel-buildtools + tree-sitter + bear + entr + meson + ninja + cmake ]; - llm = with pkgs; [ - qwen-code - gemini-cli-bin - claude-code-bin + utils = [ + shellcheck + unzip + zip + shfmt + gron + ncdu + hyperfine + gdb + strace + perf + moor + buf + duc + imagemagick + clang-tools ]; - ocaml = with pkgs; [ - ocaml - opam + lsp = [ + harper + gopls + zls ]; - purescript = with pkgs.haskellPackages; [ - purescript - purenix + nix = [ + deadnix + statix + cachix + comma + nh + nvd + ragenix + nix-diff + alejandra + nixd ]; - elm = with pkgs.elmPackages; [ - elm - elm-language-server - elm-analyse - elm-format + javascript = + [ + typescript-language-server + nodejs-slim_24 + purescript + esbuild + ] + ++ (with elmPackages; [ + elm + elm-language-server + elm-analyse + elm-format + ]); + + clojure = [ + babashka + clojure + cljstyle + clj-kondo + clojure-lsp ]; + beam = + (with beamMinimal28Packages; [ + erlang + erlang-language-platform + rebar3 + ]) + ++ [ + gleam + ]; + lua = - (with pkgs.luaPackages; [ + (with luaPackages; [ fennel lua ]) - ++ (with pkgs; [ + ++ [ fnlfmt - ]); + ]; - other = with pkgs; [ - miniserve - babashka + gui = [ feather - esbuild - nodejs picard - rustup - bun ]; - }; -in { - home.packages = lib.concatLists (with parts; [ - utils - media - ops - lsp - data - vcs - nix - net - web - llm - ocaml - purescript - elm - lua - other - ]); + + llm = [ + qwen-code + gemini-cli-bin + claude-code-bin + ]; + })); } diff --git a/modules/mixins/dotfiles/config/bat/themes/magnolia.tmTheme b/modules/mixins/dotfiles/config/bat/themes/magnolia.tmTheme @@ -10,21 +10,21 @@ <key>settings</key> <dict> <key>background</key> - <string>#2a1f2e</string> + <string>#1c1c1c</string> <key>divider</key> - <string>#3d2a42</string> + <string>#2f2f2f</string> <key>foreground</key> - <string>#c8b8bf</string> + <string>#e7e7e7</string> <key>caret</key> - <string>#f0dfe5</string> + <string>#e7e7e7</string> <key>invisibles</key> - <string>#3d2a42</string> + <string>#2f2f2f</string> <key>lineHighlight</key> - <string>#3d2a42</string> + <string>#505050</string> <key>selection</key> - <string>#c084b8</string> + <string>#e9acbf</string> <key>selectionForeground</key> - <string>#f0dfe5</string> + <string>#e7e7e7</string> </dict> </dict> <dict> @@ -35,7 +35,7 @@ <key>settings</key> <dict> <key>foreground</key> - <string>#7a6e7a</string> + <string>#a0c0d0</string> </dict> </dict> <dict> @@ -46,7 +46,7 @@ <key>settings</key> <dict> <key>foreground</key> - <string>#c084b8</string> + <string>#e9acbf</string> </dict> </dict> <dict> @@ -57,7 +57,7 @@ <key>settings</key> <dict> <key>foreground</key> - <string>#e08060</string> + <string>#eca28f</string> </dict> </dict> <dict> @@ -68,7 +68,7 @@ <key>settings</key> <dict> <key>foreground</key> - <string>#7a9fd4</string> + <string>#9fbfe7</string> </dict> </dict> <dict> @@ -79,7 +79,7 @@ <key>settings</key> <dict> <key>foreground</key> - <string>#c4607a</string> + <string>#eca28f</string> </dict> </dict> </array> diff --git a/modules/mixins/dotfiles/config/foot/foot.ini b/modules/mixins/dotfiles/config/foot/foot.ini @@ -15,7 +15,7 @@ style=block blink=no [colors-dark] -alpha = 0.85 +alpha = 0.875 cursor=181818 eeddbb background=181818 diff --git a/modules/mixins/dotfiles/config/helix/config.toml b/modules/mixins/dotfiles/config/helix/config.toml @@ -1,4 +1,4 @@ -theme = "mine" +theme = "mtmn" [editor] line-number = "relative" diff --git a/modules/mixins/dotfiles/config/helix/themes/doric_dark.toml b/modules/mixins/dotfiles/config/helix/themes/doric_dark.toml @@ -1,193 +0,0 @@ -"type" = "fg-neutral" -"constructor" = "fg-neutral" - -"constant" = "fg-neutral" -"constant.builtin" = { fg = "fg-shadow-intense", modifiers = ["bold"] } -"constant.character" = "fg-neutral" -"constant.character.escape" = "fg-accent" -"constant.numeric" = "fg-neutral" - -"string" = "fg-neutral" -"string.regexp" = "fg-cyan" -"string.special" = "fg-accent" -"string.special.path" = "fg-blue" -"string.special.url" = { fg = "fg-blue", modifiers = ["underlined"] } -"string.special.symbol" = "fg-accent" - -"comment" = { fg = "fg-shadow-subtle", modifiers = ["italic"] } - -"variable" = "fg-main" -"variable.builtin" = { fg = "fg-shadow-intense", modifiers = ["bold"] } -"variable.other" = "fg-main" -"variable.other.member" = "fg-neutral" -"variable.parameter" = { fg = "fg-main", modifiers = ["italic"] } - -"label" = { fg = "fg-shadow-subtle", modifiers = ["italic"] } - -"keyword" = { fg = "fg-accent", modifiers = ["bold"] } -"keyword.control" = { fg = "fg-accent", modifiers = ["bold"] } -"keyword.control.conditional" = { fg = "fg-accent", modifiers = ["bold"] } -"keyword.control.repeat" = { fg = "fg-accent", modifiers = ["bold"] } -"keyword.control.import" = { fg = "fg-accent", modifiers = ["bold"] } -"keyword.control.return" = { fg = "fg-accent", modifiers = ["bold"] } -"keyword.control.exception" = { fg = "fg-accent", modifiers = ["bold"] } -"keyword.directive" = { fg = "fg-accent", modifiers = ["bold", "italic"] } -"keyword.function" = { fg = "fg-accent", modifiers = ["bold"] } -"keyword.operator" = { fg = "fg-accent", modifiers = ["bold"] } -"keyword.storage" = { fg = "fg-accent", modifiers = ["bold"] } -"keyword.storage.modifier" = { fg = "fg-accent", modifiers = ["bold"] } -"keyword.storage.type" = { fg = "fg-accent", modifiers = ["bold"] } - -"function" = "fg-neutral" -"function.builtin" = { fg = "fg-shadow-intense", modifiers = ["bold"] } -"function.macro" = { fg = "fg-shadow-intense", modifiers = ["bold"] } -"function.method" = "fg-neutral" -"function.method.private" = "fg-shadow-subtle" -"function.special" = "fg-shadow-intense" - -"operator" = "fg-shadow-intense" - -"punctuation" = "fg-shadow-subtle" -"punctuation.bracket" = "fg-shadow-subtle" -"punctuation.delimiter" = "fg-shadow-subtle" -"punctuation.special" = "fg-accent" - -"attribute" = { fg = "fg-accent", modifiers = ["italic"] } -"namespace" = { fg = "fg-neutral", modifiers = ["italic"] } -"module" = { fg = "fg-neutral", modifiers = ["italic"] } -"special" = "fg-accent" - -"tag" = { fg = "fg-accent", modifiers = ["bold"] } -"tag.attribute" = { fg = "fg-shadow-subtle", modifiers = ["italic"] } -"tag.delimiter" = "fg-shadow-subtle" -"tag.error" = "fg-red" - -"markup.heading.marker" = "fg-shadow-subtle" -"markup.heading.1" = { fg = "fg-shadow-intense", modifiers = ["bold"] } -"markup.heading.2" = { fg = "fg-accent", modifiers = ["bold"] } -"markup.heading.3" = { fg = "fg-blue", modifiers = ["bold"] } -"markup.heading.4" = { fg = "fg-cyan", modifiers = ["bold"] } -"markup.heading.5" = { fg = "fg-green", modifiers = ["bold"] } -"markup.heading.6" = { fg = "fg-yellow", modifiers = ["bold"] } -"markup.list" = "fg-accent" -"markup.list.checked" = { fg = "fg-green" } -"markup.list.unchecked" = { fg = "fg-shadow-subtle" } -"markup.bold" = { modifiers = ["bold"] } -"markup.italic" = { modifiers = ["italic"] } -"markup.strikethrough" = { modifiers = ["crossed_out"] } -"markup.link.url" = { fg = "fg-blue", modifiers = ["underlined"] } -"markup.link.text" = { fg = "fg-accent", modifiers = ["underlined"] } -"markup.quote" = { fg = "fg-shadow-subtle", modifiers = ["italic"] } -"markup.raw.block" = { bg = "bg-shadow-subtle" } -"markup.raw.inline" = { fg = "fg-green" } - -"diff.plus" = { fg = "fg-green", bg = "bg-green" } -"diff.plus.gutter" = "fg-green" -"diff.minus" = { fg = "fg-red", bg = "bg-red" } -"diff.minus.gutter" = "fg-red" -"diff.delta" = { fg = "fg-yellow", bg = "bg-yellow" } -"diff.delta.gutter" = "fg-yellow" - -"ui.background" = { bg = "bg-main" } -"ui.background.separator" = { fg = "border" } - -"ui.linenr" = { fg = "fg-shadow-subtle", bg = "bg-main" } -"ui.linenr.selected" = { fg = "fg-neutral", bg = "bg-shadow-subtle", modifiers = ["bold"] } - -"ui.statusline" = { fg = "fg-neutral", bg = "bg-neutral" } -"ui.statusline.inactive" = { fg = "fg-shadow-subtle", bg = "bg-shadow-subtle" } -"ui.statusline.normal" = { fg = "fg-shadow-intense" } -"ui.statusline.insert" = { fg = "fg-green" } -"ui.statusline.select" = { fg = "fg-accent" } -"ui.statusline.separator" = { fg = "border" } - -"ui.bufferline" = { fg = "fg-shadow-subtle", bg = "bg-shadow-subtle" } -"ui.bufferline.active" = { fg = "fg-neutral", bg = "bg-neutral", modifiers = ["bold"] } -"ui.bufferline.background" = { bg = "bg-main" } - -"ui.popup" = { fg = "fg-neutral", bg = "bg-shadow-subtle" } -"ui.popup.info" = { fg = "fg-neutral", bg = "bg-neutral" } -"ui.window" = { fg = "border" } -"ui.help" = { fg = "fg-neutral", bg = "bg-neutral" } - -"ui.gutter" = { bg = "bg-main" } -"ui.gutter.selected" = { bg = "bg-shadow-subtle" } - -"ui.text" = "fg-main" -"ui.text.directory" = "fg-blue" -"ui.text.focus" = { fg = "fg-shadow-intense", bg = "bg-shadow-intense", modifiers = ["bold"] } -"ui.text.inactive" = { fg = "fg-shadow-subtle" } -"ui.text.info" = { fg = "fg-neutral" } - -"ui.virtual" = "bg-neutral" -"ui.virtual.ruler" = { bg = "bg-shadow-subtle" } -"ui.virtual.whitespace" = { fg = "bg-neutral" } -"ui.virtual.indent-guide" = { fg = "bg-neutral" } -"ui.virtual.inlay-hint" = { fg = "fg-shadow-subtle", modifiers = ["italic"] } -"ui.virtual.inlay-hint.parameter" = { fg = "fg-shadow-subtle", modifiers = ["italic"] } -"ui.virtual.inlay-hint.type" = { fg = "fg-shadow-subtle", modifiers = ["italic"] } -"ui.virtual.wrap" = { fg = "fg-shadow-subtle" } -"ui.virtual.jump-label" = { fg = "fg-accent", modifiers = ["bold"] } - -"ui.selection" = { bg = "bg-shadow-intense" } -"ui.selection.primary" = { bg = "bg-accent" } - -"ui.cursor" = { fg = "bg-main", bg = "fg-main" } -"ui.cursor.normal" = { fg = "bg-main", bg = "fg-main" } -"ui.cursor.insert" = { fg = "bg-main", bg = "fg-neutral" } -"ui.cursor.select" = { fg = "bg-main", bg = "fg-accent" } -"ui.cursor.primary" = { fg = "bg-main", bg = "cursor" } -"ui.cursor.primary.normal" = { fg = "bg-main", bg = "cursor" } -"ui.cursor.primary.insert" = { fg = "bg-main", bg = "cursor" } -"ui.cursor.primary.select" = { fg = "bg-main", bg = "cursor" } -"ui.cursor.match" = { fg = "fg-shadow-intense", bg = "bg-shadow-intense", modifiers = ["bold"] } -"ui.cursorline.primary" = { bg = "bg-shadow-subtle" } - -"ui.highlight" = { bg = "bg-shadow-subtle" } -"ui.highlight.frameline" = { bg = "bg-shadow-intense" } - -"ui.menu" = { fg = "fg-neutral", bg = "bg-shadow-subtle" } -"ui.menu.selected" = { fg = "fg-shadow-intense", bg = "bg-shadow-intense", modifiers = ["bold"] } -"ui.menu.scroll" = { fg = "fg-shadow-subtle", bg = "bg-neutral" } - -"diagnostic.error" = { underline = { color = "fg-red", style = "curl" } } -"diagnostic.warning" = { underline = { color = "fg-yellow", style = "curl" } } -"diagnostic.info" = { underline = { color = "fg-blue", style = "curl" } } -"diagnostic.hint" = { underline = { color = "fg-cyan", style = "dotted" } } -"diagnostic.unnecessary" = { modifiers = ["dim"] } -"diagnostic.deprecated" = { modifiers = ["crossed_out"] } - -error = "fg-red" -warning = "fg-yellow" -info = "fg-blue" -hint = "fg-cyan" - -[palette] -bg-main = "#000000" -bg-shadow-subtle = "#332d38" -bg-neutral = "#43404c" -bg-shadow-intense = "#50447f" -bg-accent = "#521e40" - -fg-main = "#ffffff" -fg-shadow-subtle = "#a2a0b2" -fg-neutral = "#c5c7d4" -fg-shadow-intense = "#cfcff8" -fg-accent = "#cda4df" - -cursor = "#ccaaee" -border = "#707070" - -fg-red = "#eca28f" -fg-green = "#b9d0aa" -fg-yellow = "#c0b080" -fg-blue = "#9fbfe7" -fg-magenta = "#e9acbf" -fg-cyan = "#a0c0d0" - -bg-red = "#4d1f20" -bg-green = "#1f402e" -bg-yellow = "#504432" -bg-blue = "#223567" -bg-magenta = "#603254" -bg-cyan = "#2f4f54" diff --git a/modules/mixins/dotfiles/config/helix/themes/mine.toml b/modules/mixins/dotfiles/config/helix/themes/mine.toml @@ -1,2 +0,0 @@ -inherits = "doric_dark" -"ui.background" = {} diff --git a/modules/mixins/dotfiles/config/helix/themes/mtmn.toml b/modules/mixins/dotfiles/config/helix/themes/mtmn.toml @@ -0,0 +1,2 @@ +inherits = "modus_vivendi_tritanopia" +"ui.background" = {} diff --git a/modules/mixins/dotfiles/config/newsraft/feeds b/modules/mixins/dotfiles/config/newsraft/feeds @@ -434,3 +434,4 @@ https://www.youtube.com/feeds/videos.xml?channel_id=UC3S8vxwRfqLBdIhgRlDRVzw sta https://www.youtube.com/feeds/videos.xml?channel_id=UCd3dNckv1Za2coSaHGHl5aA TJ DeVries https://www.youtube.com/feeds/videos.xml?channel_id=UCaTznQhurW5AaiYPbhEA-KA Molly Rocket https://www.youtube.com/feeds/videos.xml?channel_id=UC3azLjQuz9s5qk76KEXaTvA suckerpinch +https://www.youtube.com/feeds/videos.xml?channel_id=UClIlgY1OC4wSVyqsEWOh9ZQ FuncProgSweden diff --git a/modules/mixins/dotfiles/config/shell/rc/aliased-short-names b/modules/mixins/dotfiles/config/shell/rc/aliased-short-names @@ -25,7 +25,7 @@ alias mrd='magdalena recent-dirs' alias mrf='magdalena recent-files' alias pdm='pkill -f dmenu' -alias pcm='pcmanfm & disown' +alias pcm='pcmanfm &>/dev/null & disown' alias duh='du -hs' alias dfh='df -h' @@ -69,7 +69,7 @@ alias obscpt='obsidian "obsidian://open?vault=counterpoint" & disown' alias kat='khal at' alias khw='khal list now 7d' alias khi='khal interactive' -alias kan='khal new --alarms "1h,30m,15m,5m"' +alias kan='khal new --alarms "30m" && vdirsyncer' alias bpp='backup pass --push' alias bnp='backup nota --push' @@ -79,7 +79,7 @@ alias h='histdb' alias hs='histdb-sync' alias nr='newsraft' -alias nre='$EDITOR ~/src/nix/modules/mixins/dotfiles/config/newsraft/feeds && hms' +alias nre='$EDITOR ~/src/nix/modules/mixins/dotfiles/config/newsraft/feeds' alias age_decrypt='age --decrypt --identity "$HOME"/misc/random/key.txt' @@ -102,6 +102,7 @@ alias datamix='datasette serve $HOME/.mixxx/mixxxdb.sqlite --setting sql_time_li alias nd='nix develop' alias hms='backup nix && nh home switch ~/src/nix' +alias hmdiff='home-manager generations | head -n 2 | cut -d' ' -f 7 | tac | xargs nvd diff' alias amsp='mpva https://radio.stereoscenic.com/asp-s --no-resume-playback' alias nts1='mpva https://stream-relay-geo.ntslive.net/stream --no-resume-playback' @@ -110,12 +111,13 @@ alias nts2='mpva https://stream-relay-geo.ntslive.net/stream2 --no-resume-playba alias op='offpunk' alias mf='monofetch' alias sr='speedread -w 400' + alias jlr='jless --mode line' alias chop='perl -pe chop' alias chomp='perl -pe chomp' -alias scr='source ./hack/creds-from-pass' - alias cej='just check' +alias bdj='just build' alias dpj='just deploy' +alias scr='source ./hack/creds-from-pass' diff --git a/modules/mixins/dotfiles/config/shell/rc/git b/modules/mixins/dotfiles/config/shell/rc/git @@ -70,15 +70,22 @@ gcopr() { } glf() { - git log \ - --color=always \ - --date=short \ - --pretty=format:"%cd %C(auto)%h %d %s %C(green)%cr %C(bold blue)<%an>" "$@" | - fzf \ - --ansi \ - --preview "git show --color=always {2}" | - awk '{print $2}' | wl-copy && - nvim -c ":DiffviewOpen $(wl-paste)" + local commit + commit=$( + git log \ + --color=always \ + --date=short \ + --pretty=format:'%h|%C(auto)%d %s %C(green)%cr %C(bold cyan)<%an>' "$@" | + fzf \ + --ansi \ + --delimiter='|' \ + --preview 'git show --color=always {1}' | + cut -d'|' -f1 | tr -d '[:space:]' + ) + + if [ -n "$commit" ]; then + nvim -c ":DiffviewOpen $commit" + fi } gbf() { diff --git a/modules/mixins/dotfiles/default.nix b/modules/mixins/dotfiles/default.nix @@ -2,8 +2,6 @@ config, lib, inputs, - username, - configData, ... }: let date = inputs.self.lastModifiedDate or "19700101000000"; @@ -27,7 +25,6 @@ tmplArgs = { inherit year month; homeDir = config.home.homeDirectory; - inherit (config.modules.dotfiles) shirtAuthToken shirtDomain; }; mkMapping = path: prefix: let @@ -65,19 +62,6 @@ } )) (scan path "")); in { - options.modules.dotfiles = { - shirtAuthToken = lib.mkOption { - type = lib.types.str; - default = configData.users.${username}.shirt.token or ""; - description = "Auth token for the shirt link shortener"; - }; - shirtDomain = lib.mkOption { - type = lib.types.str; - default = configData.users.${username}.shirt.domain or ""; - description = "Domain for the shirt link shortener"; - }; - }; - config = { home.file = (mkMapping ./home ".") diff --git a/modules/mixins/dotfiles/home/gitconfig b/modules/mixins/dotfiles/home/gitconfig @@ -1,9 +1,6 @@ [includeIf "gitdir:~/src/"] path = ~/misc/git/gitconfig-gpgsign-enabled -[includeIf "gitdir:~/src/misc/"] - path = ~/misc/git/gitconfig-gpgsign-disabled - [init] defaultBranch = master