nix

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

commit be236d86b0cdfd75ff6afd58ffe3b283649e1fad
parent 42d6e414f1128aca8ece766d24a0cf788383001a
Author: mtmn <miro@haravara.org>
Date:   Thu, 16 Apr 2026 09:26:11 +0200

Merge branch 'master' of ssh://codeberg.org/mtmn/nix

Diffstat:
Mflake.lock | 29++++++++++++++---------------
Mflake.nix | 8+++++---
Mhome.nix | 5+++++
Mhosts/nixaran/configuration.nix | 0
Mhosts/proton/default.nix | 1+
Mhosts/void/default.nix | 39++++++++++++---------------------------
Mhosts/wsl/default.nix | 341++++++++++++++++++++++++++++++++++++-------------------------------------------
Ahosts/wsl/overlays/config/magdalena/config.json.nix | 78++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mmodules/mixins/dotfiles/config/nvim/fnl/init.fnl | 4+---
Mmodules/mixins/dotfiles/config/shell/rc/aliased-short-names | 2+-
Mmodules/mixins/dotfiles/config/shell/rc/prompt-functions | 10+++++-----
Mmodules/services/attic.nix | 3---
Msecrets.nix | 1+
Asecrets/attic-credentials.age | 0
14 files changed, 278 insertions(+), 243 deletions(-)

diff --git a/flake.lock b/flake.lock @@ -30,17 +30,17 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1776099912, - "narHash": "sha256-KCbdRYnR1Osvx5ZG1EOhX693OCwXBj/7DkWaDmWBBPs=", + "lastModified": 1776279594, + "narHash": "sha256-N8RdA+ExCkSUcnabRXY8v2vaY1Zt9HfMGyEr1ATavkM=", "ref": "refs/heads/master", - "rev": "e1c9d15025b992888b433826346c2c3a37410c32", - "revCount": 59, + "rev": "e83086e5d74a178afbd0da7f2c0a4c4d6b9b883b", + "revCount": 62, "type": "git", - "url": "ssh://git@codeberg.org/mtmn/corpus.git" + "url": "ssh://git@codeberg.org/mtmn/corpus" }, "original": { "type": "git", - "url": "ssh://git@codeberg.org/mtmn/corpus.git" + "url": "ssh://git@codeberg.org/mtmn/corpus" } }, "crane": { @@ -100,7 +100,6 @@ "original": { "owner": "serokell", "repo": "deploy-rs", - "rev": "77c906c0ba56aabdbc72041bf9111b565cdd6171", "type": "github" } }, @@ -183,11 +182,11 @@ ] }, "locked": { - "lastModified": 1776046499, - "narHash": "sha256-Wzc4nn07/0RL21ypPHRzNDQZcjhIC8LaYo7QJQjM5T4=", + "lastModified": 1776184304, + "narHash": "sha256-No6QGBmIv5ChiwKCcbkxjdEQ/RO2ZS1gD7SFy6EZ7rc=", "owner": "nix-community", "repo": "home-manager", - "rev": "287f84846c1eb3b72c986f5f6bebcff0bd67440d", + "rev": "3c7524c68348ef79ce48308e0978611a050089b2", "type": "github" }, "original": { @@ -256,11 +255,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1775888245, - "narHash": "sha256-nwASzrRDD1JBEu/o8ekKYEXm/oJW6EMCzCRdrwcLe90=", + "lastModified": 1776255774, + "narHash": "sha256-psVTpH6PK3q1htMJpmdz1hLF5pQgEshu7gQWgKO6t6Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "13043924aaa7375ce482ebe2494338e058282925", + "rev": "566acc07c54dc807f91625bb286cb9b321b5f42a", "type": "github" }, "original": { @@ -396,11 +395,11 @@ "rev": "8bf35f488b18b0e0b24b13c51920932021bf8029", "revCount": 28, "type": "git", - "url": "ssh://git@codeberg.org/mtmn/tools.git" + "url": "ssh://git@codeberg.org/mtmn/tools" }, "original": { "type": "git", - "url": "ssh://git@codeberg.org/mtmn/tools.git" + "url": "ssh://git@codeberg.org/mtmn/tools" } }, "utils": { diff --git a/flake.nix b/flake.nix @@ -15,7 +15,7 @@ }; deploy-rs = { - url = "github:serokell/deploy-rs/77c906c0ba56aabdbc72041bf9111b565cdd6171"; + url = "github:serokell/deploy-rs"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -30,12 +30,12 @@ }; tools = { - url = "git+ssh://git@codeberg.org/mtmn/tools.git"; + url = "git+ssh://git@codeberg.org/mtmn/tools"; flake = false; }; corpus = { - url = "git+ssh://git@codeberg.org/mtmn/corpus.git"; + url = "git+ssh://git@codeberg.org/mtmn/corpus"; }; }; @@ -73,6 +73,7 @@ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" ]; + netrc-file = "/run/agenix/netrc"; }; } inputs.ragenix.nixosModules.default @@ -169,6 +170,7 @@ "bandeno" "headscale" "searxng" + "attic" "static" "miniflux" "corpus" diff --git a/home.nix b/home.nix @@ -41,13 +41,18 @@ auto-optimise-store = true; warn-dirty = false; experimental-features = ["nix-command" "flakes"]; + access-tokens = [ + "attic.saatana.cat=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE4MDc4MzA0ODgsIm5iZiI6MTc3NjI3Mjg4OCwic3ViIjoiaG9tZS1tYW5hZ2VyIiwiaHR0cHM6Ly9qd3QuYXR0aWMucnMvdjEiOnsiY2FjaGVzIjp7ImNlbnRyYWwiOnsiciI6MX19fX0.TnszDyNrf9Y2ll3sW5HHp8JaCCCUWztHzJdMoWoi_bTFYruk4oKj0MKlSbdFUCPKM5xanRu_wbdcINqaOEmM5o7u91Zdg_4Nr036h42xSMkj48QUt1zKbtNwSs65XyfouYnjSlyfJnfRhlhkyDPYxLoMelg6TbNXMSjEgAIRPLbXgAerckRMUW73fL6TyJeGP8jh9xlJfTedER7BWEwMnz3MTu8oLK7IoXKvQTXsuPALbnt84LgwUbaaXeQ6aJrjmZSsncxvezixShXoBwevYx2JpwgVURH54Qoa11u2L4Ffapfi57VD0LkMpA629kCmRpGUJ4_LrD3lrgY070izIKbI0Ktaxf6G2PyIS6bhiziP6Oy_7rj4KmPGsE2Hzyqra0YyIHO9Z-3L1PZhS-3WrL49AcjEPAC9YknU9E-aaabqirf0rWMQjvbHrszzBWpPlALLN3lJVlyL_nm9xVeV_ny4D_-MjpyFgi0MuD0UO2Q5ek0W3RyAY1pr4EbQrLPmYqEAvGbdc9ZGlKTHoPYdLvvcgvDRSn2P_eg2cVri4wzBBrB5Sw3Fss0B8SCT2A7bNaHFQaL6hH3NzL2F0x1O5JbCOqm7cDYMwzvtVKyRpuKLn90F1uuKsYIBt27Ej_ux9pcrXX-R5o_gE-74-lD4qSLWm7eD266R2fnmICCFM-o" + ]; substituters = [ "https://cache.nixos.org" "https://nix-community.cachix.org" + "https://attic.saatana.cat/central" ]; trusted-public-keys = [ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" + "central:7OgUwblUa9YD6dVxXSApAGyC0/oQ/JJUH2puRZ0sv0M=" ]; }; gc = { diff --git a/hosts/nixaran/configuration.nix b/hosts/nixaran/configuration.nix Binary files differ. diff --git a/hosts/proton/default.nix b/hosts/proton/default.nix @@ -76,6 +76,7 @@ nvd ragenix statix + attic-client ]; net_tools = with pkgs; [ diff --git a/hosts/void/default.nix b/hosts/void/default.nix @@ -4,6 +4,10 @@ parts = { utils = with pkgs; [ shellcheck + eza + zoxide + fzf + tree-sitter shfmt gron bear @@ -61,9 +65,6 @@ jaq jq datasette - hledger - hledger-iadd - rainfrog tokyocabinet ]; @@ -93,6 +94,7 @@ nix-diff nix-output-monitor niv + attic-client ]; net = with pkgs; [ @@ -128,6 +130,12 @@ claude-code-bin ]; + ocaml = with pkgs; [ + ocaml + dune + opam + ]; + lua = (with pkgs.luaPackages; [ fennel @@ -137,35 +145,12 @@ fnlfmt ]); - erlang = - (with pkgs.beam28Packages; [ - erlang - rebar3 - ]) - ++ (with pkgs; [ - gleam - ]); - - haskell = - (with pkgs.haskell.compiler; [ - ghc9124 - ]) - ++ (with pkgs.haskellPackages; [ - Cabal_3_16_1_0 - stack - purescript - purenix - ]) - ++ (with pkgs; [ - cabal2nix - ]); - other = with pkgs; [ miniserve babashka feather - nodejs esbuild + nodejs picard rustup ]; diff --git a/hosts/wsl/default.nix b/hosts/wsl/default.nix @@ -1,199 +1,168 @@ {pkgs, ...}: let - core = with pkgs; [ - bat - eza - fd - fzf - neovim - ripgrep - moor - tmux - ncurses - tree-sitter - unzip - zoxide - pass - passExtensions.pass-otp - ]; + inherit (pkgs) lib; - utils = with pkgs; [ - borgbackup - fdupes - gocryptfs - inotify-tools - ncdu - restic - ansible - ansible-lint - awscli2 - hadolint - woodpecker-cli - tealdeer - libvarlink - bandit - ruff - shellcheck - shfmt - sops - zls - ]; + parts = { + utils = with pkgs; [ + eza + zoxide + fzf + shellcheck + shfmt + gron + bear + ctags + entr + hyperfine + gdb + strace + perf + meson + ninja + cmake + moor + buf + harper + duc + ]; - data = with pkgs; [ - duckdb - gron - jaq - jless - jq - pandoc - slop - taplo - ]; + media = + (with pkgs; [ + ncmpcpp + sacad + ffmpeg + yt-dlp + imagemagick + exiftool + ]) + ++ (with pkgs.python314Packages; [ + yt-dlp-ejs + ]); - vcs = with pkgs; [ - difftastic - git - git-bug - git-crypt - git-absorb - git-filter-repo - gitleaks - jujutsu - jjui - prek - ]; + ops = with pkgs; [ + ansible-lint + ansible + awscli2 + dnscontrol + woodpecker-cli + podman + skopeo + tenv + ]; - nix_tools = with pkgs; [ - alejandra - comma - deadnix - deploy-rs - nh - nil - nix-du - nixd - nixfmt - nixos-anywhere - nvd - ragenix - statix - nix-health - ]; + lsp = with pkgs; [ + typescript-language-server + ansible-language-server + clang-tools + gopls + nixd + zls + ]; - net_tools = with pkgs; [ - bore-cli - caddy - chisel - curl - dnscontrol - dnsmasq - hurl - inetutils - knot-dns - lftp - monolith - mosh - mosquitto - net-tools - newsraft - nmap - offpunk - rclone - rsync - sshfs - thrift - trickle - w3m - websocat - wget - whois - xh - ]; + data = with pkgs; [ + duckdb + jless + jaq + jq + datasette + tokyocabinet + ]; - build_tools = with pkgs; [ - libgcc - bear - bmake - boost - clang - cmake - ctags - entr - just - act - lld - lldb - llvm - meson - mold - ninja - tre - libtermkey - ]; + haskell = + (with pkgs.haskell.compiler; [ + ghc9124 + ]) + ++ (with pkgs.haskellPackages; [ + Cabal_3_16_1_0 + stack + purescript + purenix + ]) + ++ (with pkgs; [ + cabal2nix + ]); - perf_utils = with pkgs; [ - bpftools - bpftrace - bpfmon - bpftop - libbpf - below - hyperfine - iotop - pwru - gdb - strace - perf - valgrind - aflplusplus - ]; - beam28 = with pkgs.beam28Packages; [ - erlang - expert - rebar3 - ]; + vcs = with pkgs; [ + difftastic + git-bug + git-crypt + git-absorb + git-annex + gitleaks + lazygit + jujutsu + jjui + prek + ]; - all = with pkgs; [ - babashka - biome - gleam - luaPackages.fennel - luaPackages.lpeg - fnlfmt - luarocks - bun - clj-kondo - clojure - gemini-cli-bin - qwen-code - deno - dune - go - gopls - leiningen - ocaml - # purescript - ]; -in { - programs.git = { - enable = true; - ignores = [ - ".crush/" - ".gemini/" - ".qwen/" - "AGENTS.md" + nix = with pkgs; [ + alejandra + comma + deadnix + nh + nix-du + nixos-anywhere + nvd + ragenix + statix + nix-diff + nix-output-monitor + niv + attic-client + ]; + + net = with pkgs; [ + bore-cli + curl + inetutils + lftp + mosh + mosquitto + net-tools + nmap + rclone + rsync + sshfs + thrift + trickle + websocat + wget + xh ]; - }; - home.packages = - core - ++ utils - ++ data - ++ vcs - ++ nix_tools - ++ net_tools - ++ build_tools - ++ perf_utils - ++ beam28 - ++ all; + web = with pkgs; [ + aerc + offpunk + monolith + newsraft + vdirsyncer + ]; + + llm = with pkgs; [ + qwen-code + gemini-cli-bin + claude-code-bin + ]; + + lua = + (with pkgs.luaPackages; [ + fennel + lua + ]) + ++ (with pkgs; [ + fnlfmt + ]); + + other = with pkgs; [ + miniserve + babashka + feather + esbuild + nodejs + picard + rustup + ]; + }; +in { + home.packages = lib.concatLists (lib.attrValues parts); } diff --git a/hosts/wsl/overlays/config/magdalena/config.json.nix b/hosts/wsl/overlays/config/magdalena/config.json.nix @@ -0,0 +1,78 @@ +{ + homeDir, + year, + month, + ... +}: '' + { + "editor": "nvim", + "max_depth": 5, + "ignored_patterns": [ + ".git", + ".jj", + ".zig-cache", + "target", + "vendor", + "node_modules", + "composer.lock", + "deps", + "_build", + ".expert", + ".nix-data", + ".crush", + ".gemini", + ".qwen", + "saturn" + ], + "fzf_opts": [ + "--highlight-line", + "--ansi", + "--layout=reverse", + "--border=rounded", + "--color=bg+:#2a1f2e,bg:-1,spinner:#c084b8,hl:#e08060", + "--color=fg:#c8b8bf,header:#c4607a,info:#7a6e7a,pointer:#c084b8", + "--color=marker:#e06fad,fg+:#f0dfe5,prompt:#7a9fd4,hl+:#f0a070", + "--color=border:#3d2a42" + ], + "fav_dirs": [ + "${homeDir}/src", + "${homeDir}/src/nix", + "${homeDir}/src/napkins", + "${homeDir}/src/nix/hosts/wsl", + "${homeDir}/src/nix/modules/mixins/dotfiles", + "${homeDir}/src/tools", + "${homeDir}/misc", + "${homeDir}/misc/llm", + "${homeDir}/misc/random", + "${homeDir}/Downloads", + "${homeDir}/.tmux" + ], + "openers": [ + { + "extensions": ["mp4", "mkv", "avi", "webm"], + "action": "media_player", + "command": "mpv" + }, + { + "extensions": ["flac", "aiff", "aif", "mp3", "wav"], + "action": "audio_player", + "command": "mpv" + }, + { + "extensions": ["jpg", "jpeg", "png", "webp", "svg"], + "action": "image_viewer", + "command": "nsxiv-rifle" + }, + { + "extensions": ["pdf", "epub", "mobi"], + "action": "document_reader", + "command": "sioyek" + }, + { + "extensions": ["html"], + "action": "web_browser", + "command": "offpunk" + } + ] + } +'' diff --git a/modules/mixins/dotfiles/config/nvim/fnl/init.fnl b/modules/mixins/dotfiles/config/nvim/fnl/init.fnl @@ -34,9 +34,7 @@ :priority 1000 :config (fn [] (vim.cmd.colorscheme :doric-dark) - (vim.api.nvim_set_hl 0 :Normal {:bg :NONE}) - (vim.api.nvim_set_hl 0 :NormalFloat {:bg :NONE}) - (vim.api.nvim_set_hl 0 :NormalNC {:bg :NONE}))}) + (vim.api.nvim_set_hl 0 :Normal {:bg :NONE}))}) (use "windwp/nvim-autopairs" {:event :VeryLazy :config true}) (use "ibhagwan/fzf-lua" {:config true}) 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' +alias pcm='pcmanfm & disown' alias duh='du -hs' alias dfh='df -h' diff --git a/modules/mixins/dotfiles/config/shell/rc/prompt-functions b/modules/mixins/dotfiles/config/shell/rc/prompt-functions @@ -1,10 +1,10 @@ # vim: ft=sh _C_RESET=$(tput sgr0) -_C_1=$(tput setaf 141) -_C_2=$(tput setaf 209) -_C_3=$(tput setaf 203) -_C_4=$(tput setaf 174) -_C_6=$(tput setaf 167) +_C_1=$(tput setaf 1) +_C_2=$(tput setaf 3) +_C_3=$(tput setaf 4) +_C_4=$(tput setaf 5) +_C_6=$(tput setaf 6) colour_part() { local colour_val msg delim diff --git a/modules/services/attic.nix b/modules/services/attic.nix @@ -60,9 +60,6 @@ in { endpoint = cfg.s3Endpoint; region = cfg.s3Region; }; - signing = { - signing-key-paths = [cfg.signingKeyFile]; - }; }; environmentFile = cfg.credentialsFile; }; diff --git a/secrets.nix b/secrets.nix @@ -12,6 +12,7 @@ in { "secrets/couchdb-admin-pass.age".publicKeys = allKeys; "secrets/searx-secret-key.age".publicKeys = allKeys; "secrets/headscale-api-key.age".publicKeys = allKeys; + "secrets/attic-credentials.age".publicKeys = allKeys; "secrets/miniflux-secrets.age".publicKeys = allKeys; "secrets/listenbrainz-token.age".publicKeys = allKeys; "secrets/mpd-host.age".publicKeys = allKeys; diff --git a/secrets/attic-credentials.age b/secrets/attic-credentials.age Binary files differ.