dotfiles
My PC Dotfiles & Websitegit clone https://github.com/maydayv7/dotfiles
commit 197df7f73806f4ae2c5831c02f03f6d235698641 parent 824953c1b737560352033fb6acbdf2c83008985e Author: maydayv7 <maydayv7@gmail.com> Date: Mon, 12 Oct 2026 21:57:06 +0530 feat: Lotsa stuff - Allow automatic package updates with `srcs` - Add some SKILLS - Add `easyeffects-presets` - Fix Discord theme
Diffstat:
51 files changed, 300 insertions(+), 99 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md @@ -2,6 +2,9 @@ ### October +- Allow automatic package updates with `srcs` +- Add some SKILLS +- Add `easyeffects-presets` - Use [`betterbird`](https://www.betterbird.eu/) - Replace `geany` with `xed-editor` diff --git a/modules/apps/ai/_common.nix b/modules/apps/ai/_common.nix @@ -2,31 +2,47 @@ lib, pkgs, ... -}: { - ## Model Context Protocol Servers - programs.mcp = { - enable = true; - servers = { - # NixOS MCP - nixos.command = lib.getExe pkgs.mcp-nixos; +}: let + grill = pkgs.custom.ai-grilling; +in { + options.ai._skills = lib.mkOption { + description = "Shared agent skills"; + type = lib.types.attrsOf lib.types.path; + default = {}; + }; - # Library documentation - context7.url = "https://mcp.context7.com/mcp"; + config = { + ## Agent Skills + ai._skills = + lib.mapAttrs (name: _: "${grill}/${name}") + (lib.filterAttrs (_: type: type == "directory") (builtins.readDir grill)) + // {humanizer = pkgs.custom.ai-humanizer;}; - # GitHub MCP - github = { - url = "https://api.githubcopilot.com/mcp/"; - bearer_token_env_var = "MCP_GITHUB_PERSONAL_ACCESS_TOKEN"; - }; + ## Model Context Protocol Servers + programs.mcp = { + enable = true; + servers = { + # NixOS MCP + nixos.command = lib.getExe pkgs.mcp-nixos; + + # Library documentation + context7.url = "https://mcp.context7.com/mcp"; + + # GitHub MCP + github = { + url = "https://api.githubcopilot.com/mcp/"; + bearer_token_env_var = "MCP_GITHUB_PERSONAL_ACCESS_TOKEN"; + }; - # Figma MCP - figma.url = "https://mcp.figma.com/mcp"; + # Figma MCP + figma.url = "https://mcp.figma.com/mcp"; + }; }; - }; - ## Utilities - home.packages = with pkgs; [ - poppler-utils # PDF to Text - repomix # Repo to XML - ]; + ## Utilities + home.packages = with pkgs; [ + poppler-utils # PDF to Text + repomix # Repo to XML + ]; + }; } diff --git a/modules/apps/ai/antigravity.nix b/modules/apps/ai/antigravity.nix @@ -35,6 +35,7 @@ in { enable = true; package = pkgs.llm.antigravity-cli; enableMcpIntegration = true; + skills = config.ai._skills; settings.altScreenMode = "always"; permissions = { deny = ["command(rm -rf)"]; diff --git a/modules/apps/ai/claude.nix b/modules/apps/ai/claude.nix @@ -28,6 +28,7 @@ _: { enable = true; package = pkgs.llm.claude-code; enableMcpIntegration = true; + skills = config.ai._skills; settings = { attribution = { diff --git a/modules/apps/ai/codex.nix b/modules/apps/ai/codex.nix @@ -30,6 +30,7 @@ _: { enable = true; package = pkgs.llm.codex; enableMcpIntegration = true; + skills = config.ai._skills; settings = { approval_policy = "on-request"; diff --git a/modules/apps/discord.nix b/modules/apps/discord.nix @@ -1,11 +1,12 @@ ## Discord Configuration ## {inputs, ...}: { flake.modules.homeManager.discord = { - lib, + config, osConfig ? {}, ... }: let isGnome = osConfig.services.desktopManager.gnome.enable or false; + isWM = (osConfig.programs.hyprland.enable or false) || (osConfig.programs.niri.enable or false); in { imports = [inputs.nixcord.homeModules.nixcord]; home.persist.directories = [".config/discord"]; @@ -18,8 +19,11 @@ # Theming quickCss = - lib.mkIf isGnome - ''@import url("https://raw.githubusercontent.com/ricewind012/discord-gnome-theme/master/gnome.theme.css");''; + if isGnome + then ''@import url("https://raw.githubusercontent.com/ricewind012/discord-gnome-theme/master/gnome.theme.css");'' + else if isWM + then ''@import url("https://catppuccin.github.io/discord/dist/catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}.theme.css");'' + else ""; config = { useQuickCss = true; diff --git a/modules/apps/tools.nix b/modules/apps/tools.nix @@ -42,16 +42,23 @@ in { # Audio Effects services.easyeffects.enable = true; - home.persist = { - files = [".config/rncbc.org/qpwgraph"]; - directories = [ - ".appimages" - ".config/easyeffects" - ".config/FreeFileSync" - ".config/obs-studio" - ".config/pitivi" - ".local/share/easyeffects" - ]; + home = { + file.".local/share/easyeffects" = { + source = "${pkgs.custom.easyeffects-presets}/share/easyeffects"; + recursive = true; + }; + + persist = { + files = [".config/rncbc.org/qpwgraph"]; + directories = [ + ".appimages" + ".config/easyeffects" + ".local/share/easyeffects" + ".config/FreeFileSync" + ".config/obs-studio" + ".config/pitivi" + ]; + }; }; }; }; diff --git a/modules/desktop/_wm/shell.nix b/modules/desktop/_wm/shell.nix @@ -20,6 +20,21 @@ ".local/state/noctalia" ]; + # ! # https://github.com/noctalia-dev/noctalia/pull/4707 + systemd.user.services = { + noctalia.Service = { + Type = "dbus"; + BusName = "org.kde.StatusNotifierWatcher"; + }; + + easyeffects = lib.mkIf config.services.easyeffects.enable { + Unit = { + After = ["noctalia.service"]; + Wants = ["noctalia.service"]; + }; + }; + }; + programs.noctalia = { enable = true; systemd.enable = true; diff --git a/modules/gui/theme.nix b/modules/gui/theme.nix @@ -104,6 +104,7 @@ in { firefox.enable = lib.mkDefault false; vscode.enable = lib.mkDefault false; obsidian.enable = lib.mkDefault false; + nixcord.enable = lib.mkDefault false; } (lib.genAttrs (lib.unique config.gui._unmanaged) (_: {enable = false;})) ]; diff --git a/packages/README.md b/packages/README.md @@ -1,6 +1,6 @@ ### Packages -The `packages` directory contains custom-built packages (can be accessed by `github:maydayv7/dotfiles#packages.${system}`). Packages which have a separate `metadata.nix` can be automatically updated by running `./update.sh` from the `packages` directory. +The `packages` directory contains custom-built packages (can be accessed by `github:maydayv7/dotfiles#packages.${system}`). Packages which have a separate `meta.nix` (or multiple `*meta.nix`) can be automatically updated by running `./update.sh` from the `packages` directory. The `overlays` directory contains overrides for pre-built packages (See [this](https://wiki.nixos.org/wiki/Overlays) for more information) diff --git a/packages/adw-catppuccin/default.nix b/packages/adw-catppuccin/default.nix @@ -2,15 +2,14 @@ lib, pkgs, ... -}: -with pkgs; let - metadata = import ./metadata.nix; +}: let + metadata = import ./meta.nix; in - stdenv.mkDerivation { + pkgs.stdenv.mkDerivation { pname = "adw-catppuccin"; version = metadata.rev; - src = fetchFromGitHub { + src = pkgs.fetchFromGitHub { owner = "LuminarLeaf"; repo = "adw-catppuccin"; inherit (metadata) rev sha256; diff --git a/packages/adw-catppuccin/metadata.nix b/packages/adw-catppuccin/meta.nix diff --git a/packages/ai-grilling/default.nix b/packages/ai-grilling/default.nix @@ -0,0 +1,45 @@ +{ + lib, + pkgs, + ... +}: let + metadata = import ./meta.nix; + skills = [ + "skills/productivity/grill-me" + "skills/productivity/grilling" + "skills/engineering/to-spec" + "skills/engineering/setup-matt-pocock-skills" + ]; +in + pkgs.stdenvNoCC.mkDerivation { + pname = "ai-grilling"; + version = metadata.rev; + + src = pkgs.fetchFromGitHub { + owner = "mattpocock"; + repo = "skills"; + inherit (metadata) rev sha256; + }; + + dontBuild = true; + installPhase = '' + runHook preInstall + mkdir -p "$out" + cp LICENSE "$out/" + for skill in ${lib.escapeShellArgs skills} + do + test -f "$skill/SKILL.md" + test ! -e "$out/$(basename "$skill")" + cp -r "$skill" "$out/" + done + runHook postInstall + ''; + + meta = { + description = "Matt Pocock's grilling and specification skills"; + homepage = metadata.repo; + license = lib.licenses.mit; + maintainers = ["maydayv7"]; + platforms = lib.platforms.all; + }; + } diff --git a/packages/ai-grilling/meta.nix b/packages/ai-grilling/meta.nix @@ -0,0 +1,5 @@ +{ + repo = "https://github.com/mattpocock/skills"; + rev = "49dd158d1076134a641b33efb035946536778336"; + sha256 = "sha256-NljCSZNI3sZ+vbCw7pRdrwR7try4BxOFp4gdjuWYtzs="; +} diff --git a/packages/ai-humanizer/default.nix b/packages/ai-humanizer/default.nix @@ -0,0 +1,33 @@ +{ + lib, + pkgs, + ... +}: let + metadata = import ./meta.nix; +in + pkgs.stdenvNoCC.mkDerivation { + pname = "ai-humanizer"; + version = metadata.rev; + + src = pkgs.fetchFromGitHub { + owner = "blader"; + repo = "humanizer"; + inherit (metadata) rev sha256; + }; + + dontBuild = true; + installPhase = '' + runHook preInstall + mkdir -p "$out" + cp -r . "$out/" + runHook postInstall + ''; + + meta = { + description = "Agent skill that removes signs of AI-generated writing"; + homepage = metadata.repo; + license = lib.licenses.mit; + maintainers = ["maydayv7"]; + platforms = lib.platforms.all; + }; + } diff --git a/packages/ai-humanizer/meta.nix b/packages/ai-humanizer/meta.nix @@ -0,0 +1,5 @@ +{ + repo = "https://github.com/blader/humanizer"; + rev = "225a6f39ac85f76ee48dbad772ea4abe4ed6c9d8"; + sha256 = "sha256-n8cbTzhlGf8VnWpPukq7XD2mucIrqyE1XMpAAc5oA8A="; +} diff --git a/packages/betterbird/default.nix b/packages/betterbird/default.nix @@ -3,7 +3,7 @@ pkgs, ... }: let - metadata = import ./metadata.nix; + metadata = import ./meta.nix; version = metadata.rev; unwrapped = pkgs.stdenv.mkDerivation { pname = "betterbird-unwrapped"; diff --git a/packages/betterbird/meta.nix b/packages/betterbird/meta.nix @@ -0,0 +1,7 @@ +{ + repo = "https://github.com/Betterbird/thunderbird-patches"; + rev = "153.4.0esr-bb10"; + release = true; + regex = "^[0-9]+([.][0-9]+)+esr-bb[0-9]+(-build[0-9]+)?$"; + sha256 = "sha256-ON0kiQpmtM+aRbwk4VGS4AwmuSnhu433l0wWpFORKeI="; +} diff --git a/packages/betterbird/metadata.nix b/packages/betterbird/metadata.nix @@ -1,7 +0,0 @@ -{ - repo = "https://github.com/Betterbird/thunderbird-patches"; - rev = "153.4.0esr-bb10"; - release = true; - regex = "^[0-9]+([.][0-9]+)+esr-bb[0-9]+$"; - sha256 = "sha256-ON0kiQpmtM+aRbwk4VGS4AwmuSnhu433l0wWpFORKeI="; -} diff --git a/packages/easyeffects-presets/default.nix b/packages/easyeffects-presets/default.nix @@ -0,0 +1,57 @@ +{ + lib, + pkgs, + ... +}: let + metadata = import ./meta.nix; + laptop = import ./laptop-meta.nix; +in + pkgs.stdenvNoCC.mkDerivation { + pname = "easyeffects-presets"; + version = metadata.rev; + + srcs = [ + (pkgs.fetchFromGitHub { + name = "presets"; + owner = "JackHack96"; + repo = "EasyEffects-Presets"; + inherit (metadata) rev sha256; + }) + (pkgs.fetchFromGitHub { + name = "laptop"; + owner = "Digitalone1"; + repo = "EasyEffects-Presets"; + inherit (laptop) rev sha256; + }) + ]; + sourceRoot = "presets"; + + dontBuild = true; + doCheck = true; + nativeCheckInputs = [pkgs.python3]; + checkPhase = '' + runHook preCheck + python3 scripts/check_refs.py + python3 -m json.tool ../laptop/LoudnessEqualizer.json > /dev/null + runHook postCheck + ''; + + installPhase = '' + runHook preInstall + install -Dm644 *.json -t "$out/share/easyeffects/output/JackHack96" + install -Dm644 ../laptop/LoudnessEqualizer.json "$out/share/easyeffects/output/JackHack96/Laptop.json" + install -Dm644 irs/*.irs -t "$out/share/easyeffects/irs/JackHack96" + install -Dm644 *.metainfo.xml -t "$out/share/metainfo" + install -Dm644 LICENSE "$out/share/licenses/easyeffects-presets/LICENSE" + install -Dm644 ../laptop/LICENSE "$out/share/licenses/easyeffects-presets/Laptop-LICENSE" + runHook postInstall + ''; + + meta = { + description = "JackHack96's EasyEffects presets and impulse responses"; + homepage = metadata.repo; + license = lib.licenses.mit; + maintainers = ["maydayv7"]; + platforms = lib.platforms.all; + }; + } diff --git a/packages/easyeffects-presets/laptop-meta.nix b/packages/easyeffects-presets/laptop-meta.nix @@ -0,0 +1,6 @@ +{ + repo = "https://github.com/Digitalone1/EasyEffects-Presets"; + branch = "master"; + rev = "6fc0630f3d18f5668b11ebe4846179914b0bd24e"; + sha256 = "sha256-MQ72Tg4YAlzsRrQtVOUxaQKNmbxUjaci+FAr2MvjrEQ="; +} diff --git a/packages/easyeffects-presets/meta.nix b/packages/easyeffects-presets/meta.nix @@ -0,0 +1,6 @@ +{ + repo = "https://github.com/JackHack96/EasyEffects-Presets"; + branch = "master"; + rev = "1ac92c9be57bdfccec3fb9820924f9a870a9d56f"; + sha256 = "sha256-Nd4LOgiZyrrkXeWfpBfrEkZwJ+i/xVjg6EPNf/+sGjw="; +} diff --git a/packages/fabric-ca/default.nix b/packages/fabric-ca/default.nix @@ -2,15 +2,14 @@ lib, pkgs, ... -}: -with pkgs; let - metadata = import ./metadata.nix; +}: let + metadata = import ./meta.nix; in - buildGoModule { + pkgs.buildGoModule { pname = "fabric-ca"; version = lib.removePrefix "v" metadata.rev; - src = fetchFromGitHub { + src = pkgs.fetchFromGitHub { owner = "hyperledger"; repo = "fabric-ca"; inherit (metadata) rev sha256; diff --git a/packages/fabric-ca/meta.nix b/packages/fabric-ca/meta.nix @@ -0,0 +1,7 @@ +{ + repo = "https://github.com/hyperledger/fabric-ca"; + rev = "v1.5.22"; + release = true; + regex = "^v[0-9]+[.][0-9]+[.][0-9]+$"; + sha256 = "sha256-igtWjz4iavsxUXFv1gKSRZzM6P3Gnb9g0T9E3ldOPLg="; +} diff --git a/packages/fabric-ca/metadata.nix b/packages/fabric-ca/metadata.nix @@ -1,6 +0,0 @@ -{ - repo = "https://github.com/hyperledger/fabric-ca"; - rev = "v1.5.15"; - release = true; - sha256 = "sha256-kJGeA30hoRk98/io/O5lorw96bpiGpheSaHrHVqqO+s="; -} diff --git a/packages/hypr-overview/default.nix b/packages/hypr-overview/default.nix @@ -2,21 +2,20 @@ lib, pkgs, ... -}: -with pkgs; let - metadata = import ./metadata.nix; +}: let + metadata = import ./meta.nix; in - hyprlandPlugins.mkHyprlandPlugin { + pkgs.hyprlandPlugins.mkHyprlandPlugin { pluginName = "hyprscrolloverview"; version = metadata.rev; - src = fetchFromGitHub { + src = pkgs.fetchFromGitHub { owner = "yayuuu"; repo = "hyprland-scroll-overview"; inherit (metadata) rev sha256; }; - buildInputs = [expat lua5_4]; + buildInputs = [pkgs.expat pkgs.lua5_4]; enableParallelBuilding = true; buildPhase = '' runHook preBuild diff --git a/packages/hypr-overview/metadata.nix b/packages/hypr-overview/meta.nix diff --git a/packages/hypr-split/default.nix b/packages/hypr-split/default.nix @@ -1,5 +1,5 @@ {pkgs, ...}: let - metadata = import ./metadata.nix; + metadata = import ./meta.nix; src = pkgs.fetchFromGitHub { owner = "maydayv7"; diff --git a/packages/hypr-split/metadata.nix b/packages/hypr-split/meta.nix diff --git a/packages/kitty-search/default.nix b/packages/kitty-search/default.nix @@ -2,15 +2,14 @@ lib, pkgs, ... -}: -with pkgs; let - metadata = import ./metadata.nix; +}: let + metadata = import ./meta.nix; in - stdenv.mkDerivation rec { + pkgs.stdenv.mkDerivation rec { pname = "kitty-kitten-search"; version = metadata.rev; - src = fetchFromGitHub { + src = pkgs.fetchFromGitHub { owner = "trygveaa"; repo = pname; inherit (metadata) rev sha256; diff --git a/packages/kitty-search/metadata.nix b/packages/kitty-search/meta.nix diff --git a/packages/kvlibadwaita/default.nix b/packages/kvlibadwaita/default.nix @@ -2,15 +2,14 @@ lib, pkgs, ... -}: -with pkgs; let - metadata = import ./metadata.nix; +}: let + metadata = import ./meta.nix; in - stdenv.mkDerivation rec { + pkgs.stdenv.mkDerivation rec { pname = "KvLibadwaita"; version = metadata.rev; - src = fetchFromGitHub { + src = pkgs.fetchFromGitHub { owner = "GabePoel"; repo = pname; inherit (metadata) rev sha256; diff --git a/packages/kvlibadwaita/metadata.nix b/packages/kvlibadwaita/meta.nix diff --git a/packages/obsidian-adwaita/default.nix b/packages/obsidian-adwaita/default.nix @@ -3,7 +3,7 @@ pkgs, ... }: let - metadata = import ./metadata.nix; + metadata = import ./meta.nix; obsidian = import ../_obsidian.nix { inherit lib; inherit (pkgs) stdenvNoCC fetchFromGitHub fetchurl; diff --git a/packages/obsidian-adwaita/metadata.nix b/packages/obsidian-adwaita/meta.nix diff --git a/packages/obsidian-calendar/default.nix b/packages/obsidian-calendar/default.nix @@ -3,7 +3,7 @@ pkgs, ... }: let - metadata = import ./metadata.nix; + metadata = import ./meta.nix; obsidian = import ../_obsidian.nix { inherit lib; inherit (pkgs) stdenvNoCC fetchFromGitHub fetchurl; diff --git a/packages/obsidian-calendar/metadata.nix b/packages/obsidian-calendar/meta.nix diff --git a/packages/obsidian-catppuccin/default.nix b/packages/obsidian-catppuccin/default.nix @@ -3,7 +3,7 @@ pkgs, ... }: let - metadata = import ./metadata.nix; + metadata = import ./meta.nix; obsidian = import ../_obsidian.nix { inherit lib; inherit (pkgs) stdenvNoCC fetchFromGitHub fetchurl; diff --git a/packages/obsidian-catppuccin/meta.nix b/packages/obsidian-catppuccin/meta.nix @@ -0,0 +1,5 @@ +{ + repo = "https://github.com/catppuccin/obsidian"; + rev = "7ebbd577464d6ef8a18cb02811983bee623f30d6"; + sha256 = "sha256-9IwQsXFf63/R27xazFKzkVhPSgTnlYtNzb9uUY3WRa8="; +} diff --git a/packages/obsidian-catppuccin/metadata.nix b/packages/obsidian-catppuccin/metadata.nix @@ -1,5 +0,0 @@ -{ - repo = "https://github.com/catppuccin/obsidian"; - rev = "1316e03af5c31964116661ab08e7784bfa1d00b3"; - sha256 = "sha256-UM2/5CkG75ABGlMI7r5sMbF0HlfMB161KyRdAHVBDrE="; -} diff --git a/packages/obsidian-git/default.nix b/packages/obsidian-git/default.nix @@ -3,7 +3,7 @@ pkgs, ... }: let - metadata = import ./metadata.nix; + metadata = import ./meta.nix; obsidian = import ../_obsidian.nix { inherit lib; inherit (pkgs) stdenvNoCC fetchFromGitHub fetchurl; diff --git a/packages/obsidian-git/metadata.nix b/packages/obsidian-git/meta.nix diff --git a/packages/obsidian-outliner/default.nix b/packages/obsidian-outliner/default.nix @@ -3,7 +3,7 @@ pkgs, ... }: let - metadata = import ./metadata.nix; + metadata = import ./meta.nix; obsidian = import ../_obsidian.nix { inherit lib; inherit (pkgs) stdenvNoCC fetchFromGitHub fetchurl; diff --git a/packages/obsidian-outliner/metadata.nix b/packages/obsidian-outliner/meta.nix diff --git a/packages/obsidian-style-settings/default.nix b/packages/obsidian-style-settings/default.nix @@ -3,7 +3,7 @@ pkgs, ... }: let - metadata = import ./metadata.nix; + metadata = import ./meta.nix; obsidian = import ../_obsidian.nix { inherit lib; inherit (pkgs) stdenvNoCC fetchFromGitHub fetchurl; diff --git a/packages/obsidian-style-settings/metadata.nix b/packages/obsidian-style-settings/meta.nix diff --git a/packages/thunderbird-tools-ng/default.nix b/packages/thunderbird-tools-ng/default.nix @@ -2,16 +2,15 @@ lib, pkgs, ... -}: -with pkgs; let - metadata = import ./metadata.nix; +}: let + metadata = import ./meta.nix; addonId = "ImportExportToolsNG@cleidigh.kokkini.net"; in - stdenvNoCC.mkDerivation rec { + pkgs.stdenvNoCC.mkDerivation rec { pname = "thunderbird-importexporttools-ng"; version = lib.removePrefix "v" metadata.rev; - src = fetchurl { + src = pkgs.fetchurl { url = "${metadata.repo}/releases/download/v${version}/import-export-tools-ng-${version}-tb.xpi"; inherit (metadata) sha256; }; diff --git a/packages/thunderbird-tools-ng/metadata.nix b/packages/thunderbird-tools-ng/meta.nix diff --git a/packages/xed-extra-plugins/default.nix b/packages/xed-extra-plugins/default.nix @@ -3,7 +3,7 @@ pkgs, ... }: let - metadata = import ./metadata.nix; + metadata = import ./meta.nix; in pkgs.stdenvNoCC.mkDerivation { pname = "xed-extra-plugins"; diff --git a/packages/xed-extra-plugins/metadata.nix b/packages/xed-extra-plugins/meta.nix diff --git a/scripts/packages.sh b/scripts/packages.sh @@ -13,17 +13,17 @@ update() { then t1="$(mktemp)"; trap 'rm ${t1}' EXIT; t2="$(mktemp)"; trap 'rm ${t2}' EXIT; - pkg="${1}" - metadata="${pkg}/metadata.nix" + metadata="${1}" + pkg="$(dirname "${metadata}")" pkgname="$(basename "${pkg}")" - if [[ ! -f "${pkg}/metadata.nix" ]] + if [[ ! -f "${metadata}" ]] then exit 0 fi # Extraction - # Include ${pkg}/metadata.nix according to spec + # Each *meta.nix file tracks one source nix eval -f "${metadata}" --json > "${t1}" 2>/dev/null rev="$(cat "${t1}" | jq -r .rev)" sha256="$(cat "${t1}" | jq -r .sha256)" @@ -136,7 +136,7 @@ main() { while true do (main) - find . -mindepth 1 -maxdepth 1 -type d -exec bash -c 'update "$0"' {} \; + find . -mindepth 2 -maxdepth 2 -type f -name '*meta.nix' -exec bash -c 'update "$0"' {} \; res=$? if (( res != 255 )) then